1 sudo: required 2 dist: trusty 3 language: cpp 4 5 env: 6 global: 7 - /usr/local/bin:$PATH 8 9 # NOTE: The COMPILER variable is unused. It simply makes the display on 10 # travis-ci.org more readable. 11 matrix: 12 include: 13 - compiler: gcc 14 addons: 15 apt: 16 packages: 17 - lcov 18 env: COMPILER=g++ C_COMPILER=gcc BUILD_TYPE=Coverage 19 - compiler: gcc 20 env: COMPILER=g++ C_COMPILER=gcc BUILD_TYPE=Debug 21 - compiler: gcc 22 env: COMPILER=g++ C_COMPILER=gcc BUILD_TYPE=Release 23 - compiler: gcc 24 addons: 25 apt: 26 sources: 27 - ubuntu-toolchain-r-test 28 packages: 29 - g++-6 30 env: 31 - COMPILER=g++-6 C_COMPILER=gcc-6 BUILD_TYPE=Debug 32 - EXTRA_FLAGS="-fno-omit-frame-pointer -g -O2 -fsanitize=undefined,address -fuse-ld=gold" 33 - compiler: clang 34 env: COMPILER=clang++ C_COMPILER=clang BUILD_TYPE=Debug 35 - compiler: clang 36 env: COMPILER=clang++ C_COMPILER=clang BUILD_TYPE=Release 37 # Clang w/ libc++ 38 - compiler: clang 39 addons: 40 apt: 41 packages: 42 clang-3.8 43 env: 44 - COMPILER=clang++-3.8 C_COMPILER=clang-3.8 BUILD_TYPE=Debug 45 - LIBCXX_BUILD=1 46 - EXTRA_FLAGS="-stdlib=libc++" 47 # Clang w/ libc++, ASAN, UBSAN 48 - compiler: clang 49 addons: 50 apt: 51 packages: 52 clang-3.8 53 env: 54 - COMPILER=clang++-3.8 C_COMPILER=clang-3.8 BUILD_TYPE=Debug 55 - LIBCXX_BUILD=1 LIBCXX_SANITIZER="Undefined;Address" 56 - EXTRA_FLAGS="-stdlib=libc++ -fno-omit-frame-pointer -g -O2 -fsanitize=undefined,address -fno-sanitize-recover=all" 57 - UBSAN_OPTIONS=print_stacktrace=1 58 # Clang w/ libc++ and MSAN 59 - compiler: clang 60 addons: 61 apt: 62 packages: 63 clang-3.8 64 env: 65 - COMPILER=clang++-3.8 C_COMPILER=clang-3.8 BUILD_TYPE=Debug 66 - LIBCXX_BUILD=1 LIBCXX_SANITIZER=MemoryWithOrigins 67 - EXTRA_FLAGS="-stdlib=libc++ -g -O2 -fno-omit-frame-pointer -fsanitize=memory -fsanitize-memory-track-origins" 68 # Clang w/ libc++ and MSAN 69 - compiler: clang 70 addons: 71 apt: 72 packages: 73 clang-3.8 74 env: 75 - COMPILER=clang++-3.8 C_COMPILER=clang-3.8 BUILD_TYPE=RelWithDebInfo 76 - LIBCXX_BUILD=1 LIBCXX_SANITIZER=Thread 77 - EXTRA_FLAGS="-stdlib=libc++ -g -O2 -fno-omit-frame-pointer -fsanitize=thread -fno-sanitize-recover=all" 78 79 before_script: 80 - if [ -n "${LIBCXX_BUILD}" ]; then 81 source .travis-libcxx-setup.sh; 82 fi 83 - mkdir build && cd build 84 85 install: 86 - if [ "${BUILD_TYPE}" == "Coverage" -a "${TRAVIS_OS_NAME}" == "linux" ]; then 87 PATH=~/.local/bin:${PATH}; 88 pip install --user --upgrade pip; 89 pip install --user cpp-coveralls; 90 fi 91 92 script: 93 - cmake -DCMAKE_C_COMPILER=${C_COMPILER} -DCMAKE_CXX_COMPILER=${COMPILER} -DCMAKE_BUILD_TYPE=${BUILD_TYPE} -DCMAKE_CXX_FLAGS="${EXTRA_FLAGS}" .. 94 - make 95 - make CTEST_OUTPUT_ON_FAILURE=1 test 96 97 after_success: 98 - if [ "${BUILD_TYPE}" == "Coverage" -a "${TRAVIS_OS_NAME}" == "linux" ]; then 99 coveralls --include src --include include --gcov-options '\-lp' --root .. --build-root .; 100 fi 101 102 sudo: required 103