Travis add mingw
authormayeut <mayeut@users.noreply.github.com>
Sat, 12 Sep 2015 15:56:29 +0000 (17:56 +0200)
committermayeut <mayeut@users.noreply.github.com>
Sat, 12 Sep 2015 15:56:29 +0000 (17:56 +0200)
.travis.yml
tools/ctest_scripts/toolchain-mingw64.cmake [new file with mode: 0644]
tools/ctest_scripts/travis-ci.cmake
tools/travis-ci/run.sh

index b1fe283d3da3aa102a0162365c5808c643f8bfe5..ff334917d11090e1e1e8961a0ba54ff195e77875 100644 (file)
@@ -5,6 +5,7 @@ os:
 compiler:
   - gcc
   - clang
+  - x86_64-w64-mingw32-gcc
 env:
   - OPJ_CI_ARCH=x86_64 OPJ_CI_BUILD_CONFIGURATION=Release
   - OPJ_CI_ARCH=i386 OPJ_CI_BUILD_CONFIGURATION=Release
@@ -14,10 +15,14 @@ matrix:
   exclude:
     - os: osx
       compiler: gcc
+    - os: osx
+      compiler: x86_64-w64-mingw32-gcc
     - compiler: clang
       env: OPJ_CI_ARCH=i386 OPJ_CI_BUILD_CONFIGURATION=Release
     - compiler: gcc
       env: OPJ_CI_ARCH=x86_64 OPJ_CI_BUILD_CONFIGURATION=Debug OPJ_CI_ASAN=1
+    - compiler: x86_64-w64-mingw32-gcc
+      env: OPJ_CI_ARCH=x86_64 OPJ_CI_BUILD_CONFIGURATION=Debug OPJ_CI_ASAN=1
     - os: osx
       env: OPJ_CI_ARCH=x86_64 OPJ_CI_BUILD_CONFIGURATION=Debug OPJ_CI_ASAN=1
   
@@ -25,6 +30,7 @@ addons:
   apt:
     packages:
       - gcc-multilib
+      - mingw-w64
 
 install:
   - ./tools/travis-ci/install.sh
diff --git a/tools/ctest_scripts/toolchain-mingw64.cmake b/tools/ctest_scripts/toolchain-mingw64.cmake
new file mode 100644 (file)
index 0000000..5fe1507
--- /dev/null
@@ -0,0 +1,26 @@
+# http://www.cmake.org/Wiki/CmakeMingw
+#
+#  Copyright (c) 2006-2014 Mathieu Malaterre <mathieu.malaterre@voxxl.com>
+#
+#  Redistribution and use is allowed according to the terms of the New
+#  BSD license.
+#  For details see the accompanying COPYING-CMAKE-SCRIPTS file.
+#
+
+# the name of the target operating system
+set(CMAKE_SYSTEM_NAME Windows)
+
+# which compilers to use for C and C++
+set(CMAKE_C_COMPILER x86_64-w64-mingw32-gcc)
+set(CMAKE_CXX_COMPILER x86_64-w64-mingw32-g++)
+set(CMAKE_RC_COMPILER x86_64-w64-mingw32-windres)
+
+# here is the target environment located
+set(CMAKE_FIND_ROOT_PATH  /usr/x86_64-w64-mingw32)
+
+# adjust the default behaviour of the FIND_XXX() commands:
+# search headers and libraries in the target environment, search
+# programs in the host environment
+set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
+set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
+set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
index 36596a09c45b318cc2ac7b64d706c3d2457f533e..371235a41b224d106a65fe667fbd942e5ea73695 100644 (file)
@@ -44,7 +44,11 @@ if ("$ENV{OPJ_CI_ASAN}" STREQUAL "1")
        set(OPJ_HAS_MEMCHECK TRUE)
        set(CTEST_MEMORYCHECK_TYPE "AddressSanitizer")
        set(CCFLAGS_ARCH "${CCFLAGS_ARCH} -g -fsanitize=address -fno-omit-frame-pointer")
-       
+endif()
+
+if("$ENV{CC}" MATCHES ".*mingw.*")
+       # We are trying to use mingw
+       set(CTEST_CONFIGURE_OPTIONS "-DCMAKE_TOOLCHAIN_FILE=${CTEST_SCRIPT_DIRECTORY}/toolchain-mingw64.cmake")
 endif()
 
 if(NOT "$ENV{OPJ_CI_SKIP_TESTS}" STREQUAL "1")
@@ -110,7 +114,7 @@ file(WRITE "${CTEST_BINARY_DIRECTORY}/CMakeCache.txt" "${CACHE_CONTENTS}")
 # Perform a Experimental build
 ctest_start(Experimental)
 #ctest_update(SOURCE "${CTEST_SOURCE_DIRECTORY}")
-ctest_configure(BUILD "${CTEST_BINARY_DIRECTORY}")
+ctest_configure(BUILD "${CTEST_BINARY_DIRECTORY}" OPTIONS "${CTEST_CONFIGURE_OPTIONS}")
 ctest_read_custom_files(${CTEST_BINARY_DIRECTORY})
 ctest_build(BUILD "${CTEST_BINARY_DIRECTORY}")
 if(NOT "$ENV{OPJ_CI_SKIP_TESTS}" STREQUAL "1")
@@ -122,4 +126,4 @@ endif()
 if ("$ENV{OPJ_DO_SUBMIT}" STREQUAL "1")
        ctest_submit()
 endif()
-ctest_empty_binary_directory( "${CTEST_BINARY_DIRECTORY}" )
+#ctest_empty_binary_directory( "${CTEST_BINARY_DIRECTORY}" )
index 67bf9af15411d339f11d25abba2f42ed92910bbd..7d056100a436a63f06a9d2c45b8d06b3d9707210 100755 (executable)
@@ -52,9 +52,16 @@ elif [ "${TRAVIS_OS_NAME}" == "linux" ]; then
        if which lsb_release > /dev/null; then
                OPJ_OS_NAME=$(lsb_release -si)$(lsb_release -sr | sed 's/\([^0-9]*\.[0-9]*\).*/\1/')
        fi
-       if [ "${CC}" == "gcc" ]; then
-               OPJ_CC_VERSION=gcc$(${CC} --version | head -1 | sed 's/.*\ \([0-9.]*[0-9]\)/\1/')
-       elif [ "${CC}" == "clang" ]; then
+       if [ -z "${CC##*gcc*}" ]; then
+               OPJ_CC_VERSION=$(${CC} --version | head -1 | sed 's/.*\ \([0-9.]*[0-9]\)/\1/')
+               if [ -z "${CC##*mingw*}" ]; then
+                       OPJ_CC_VERSION=mingw${OPJ_CC_VERSION}
+                       # disable testing for now
+                       export OPJ_CI_SKIP_TESTS=1
+               else
+                       OPJ_CC_VERSION=gcc${OPJ_CC_VERSION}
+               fi
+       elif [ -z "${CC##*clang*}" ]; then
                OPJ_CC_VERSION=clang$(${CC} --version | grep version | sed 's/.*version \([^0-9.]*[0-9.]*\).*/\1/')
        else
                echo "Compiler not supported: ${CC}"; exit 1