diff --git a/.travis.yml b/.travis.yml index b1fe283d..ff334917 100644 --- a/.travis.yml +++ b/.travis.yml @@ -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 index 00000000..5fe1507f --- /dev/null +++ b/tools/ctest_scripts/toolchain-mingw64.cmake @@ -0,0 +1,26 @@ +# http://www.cmake.org/Wiki/CmakeMingw +# +# Copyright (c) 2006-2014 Mathieu Malaterre +# +# 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) diff --git a/tools/ctest_scripts/travis-ci.cmake b/tools/ctest_scripts/travis-ci.cmake index 36596a09..371235a4 100644 --- a/tools/ctest_scripts/travis-ci.cmake +++ b/tools/ctest_scripts/travis-ci.cmake @@ -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}" ) diff --git a/tools/travis-ci/run.sh b/tools/travis-ci/run.sh index 67bf9af1..7d056100 100755 --- a/tools/travis-ci/run.sh +++ b/tools/travis-ci/run.sh @@ -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