diff --git a/.travis.yml b/.travis.yml index 78c638d8..6747fe30 100644 --- a/.travis.yml +++ b/.travis.yml @@ -2,9 +2,12 @@ language: cpp matrix: include: +# OSX - os: osx compiler: clang env: OPJ_CI_ARCH=x86_64 OPJ_CI_BUILD_CONFIGURATION=Release OPJ_CI_INCLUDE_IF_DEPLOY=1 + +# Test code style - os: linux compiler: clang-3.8 env: OPJ_CI_CC=clang-3.8 OPJ_CI_CXX=clang-3.8 OPJ_CI_CHECK_STYLE=1 OPJ_CI_SKIP_TESTS=1 @@ -16,12 +19,31 @@ matrix: packages: - clang-3.8 - flip + +# Performance test with GCC - os: linux compiler: g++ env: OPJ_CI_ARCH=x86_64 OPJ_CI_BUILD_CONFIGURATION=Release OPJ_CI_INCLUDE_IF_DEPLOY=1 OPJ_CI_PERF_TESTS=1 + +# Test compilation with AVX2 + - os: linux + compiler: clang-3.8 + # skip tests since Travis doesn't have AVX2 compatible machines + env: OPJ_CI_CC=clang-3.8 OPJ_CI_CXX=clang-3.8 OPJ_CI_INSTRUCTION_SETS="-mavx2" OPJ_CI_BUILD_CONFIGURATION=Release OPJ_CI_SKIP_TESTS=1 + addons: + apt: + sources: + - llvm-toolchain-precise-3.8 + - ubuntu-toolchain-r-test + packages: + - clang-3.8 + +# Test multi-threading - os: linux compiler: g++ env: OPJ_CI_ARCH=x86_64 OPJ_CI_BUILD_CONFIGURATION=Release OPJ_NUM_THREADS=2 + +# Test 32-bit compilation - os: linux compiler: g++ env: OPJ_CI_ARCH=i386 OPJ_CI_BUILD_CONFIGURATION=Release @@ -30,6 +52,8 @@ matrix: packages: - gcc-multilib - g++-multilib + +# Profile code (gcc -pg) - os: linux compiler: g++ env: OPJ_CI_ARCH=x86_64 OPJ_CI_BUILD_CONFIGURATION=Debug OPJ_CI_PROFILE=1 @@ -37,9 +61,13 @@ matrix: apt: packages: - valgrind + +# Test under ASAN - os: linux compiler: clang env: OPJ_CI_ARCH=x86_64 OPJ_CI_BUILD_CONFIGURATION=Debug OPJ_CI_ASAN=1 + +# Test with CLang 3.8 - os: linux compiler: clang-3.8 env: OPJ_CI_CC=clang-3.8 OPJ_CI_CXX=clang-3.8 OPJ_CI_ARCH=x86_64 OPJ_CI_BUILD_CONFIGURATION=Release OPJ_CI_PERF_TESTS=1 @@ -50,6 +78,8 @@ matrix: - ubuntu-toolchain-r-test packages: - clang-3.8 + +# Test with mingw 32 bit - os: linux compiler: x86_64-w64-mingw32-g++ env: OPJ_CI_CC=x86_64-w64-mingw32-gcc OPJ_CI_CXX=x86_64-w64-mingw32-g++ OPJ_CI_ARCH=i386 OPJ_CI_BUILD_CONFIGURATION=Release @@ -63,6 +93,8 @@ matrix: - g++-mingw-w64-i686 - gcc-multilib - g++-multilib + +# Test with mingw 64 bit - os: linux compiler: x86_64-w64-mingw32-g++ env: OPJ_CI_CC=x86_64-w64-mingw32-gcc OPJ_CI_CXX=x86_64-w64-mingw32-g++ OPJ_CI_ARCH=x86_64 OPJ_CI_BUILD_CONFIGURATION=Release @@ -74,6 +106,8 @@ matrix: - gcc-mingw-w64-x86-64 - gcc-mingw-w64 - g++-mingw-w64-x86-64 + +# Test with gcc 4.8 - os: linux compiler: g++-4.8 env: OPJ_CI_CC=gcc-4.8 OPJ_CI_CXX=g++-4.8 OPJ_CI_ABI_CHECK=1 diff --git a/tools/ctest_scripts/travis-ci.cmake b/tools/ctest_scripts/travis-ci.cmake index 828b5af4..75ed6f6b 100644 --- a/tools/ctest_scripts/travis-ci.cmake +++ b/tools/ctest_scripts/travis-ci.cmake @@ -53,6 +53,11 @@ if (NOT "$ENV{OPJ_CI_ARCH}" STREQUAL "") endif() endif() +if (NOT "$ENV{OPJ_CI_INSTRUCTION_SETS}" STREQUAL "") + set(CCFLAGS_ARCH "${CCFLAGS_ARCH} $ENV{OPJ_CI_INSTRUCTION_SETS}") +endif() + + if ("$ENV{OPJ_CI_ASAN}" STREQUAL "1") set(OPJ_HAS_MEMCHECK TRUE) set(CTEST_MEMORYCHECK_TYPE "AddressSanitizer")