• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1sudo: required
2dist: trusty
3language: cpp
4
5env:
6  global:
7    - /usr/local/bin:$PATH
8
9matrix:
10  include:
11    - compiler: gcc
12      addons:
13        apt:
14          packages:
15            - lcov
16      env: COMPILER=g++ C_COMPILER=gcc BUILD_TYPE=Coverage
17    - compiler: gcc
18      env: COMPILER=g++ C_COMPILER=gcc BUILD_TYPE=Debug
19    - compiler: gcc
20      env: COMPILER=g++ C_COMPILER=gcc BUILD_TYPE=Release
21    - compiler: gcc
22      addons:
23        apt:
24          packages:
25            - g++-multilib
26      env: COMPILER=g++ C_COMPILER=gcc BUILD_TYPE=Debug BUILD_32_BITS=ON
27    - compiler: gcc
28      addons:
29        apt:
30          packages:
31            - g++-multilib
32      env: COMPILER=g++ C_COMPILER=gcc BUILD_TYPE=Release BUILD_32_BITS=ON
33    - compiler: gcc
34      addons:
35        apt:
36          sources:
37            - ubuntu-toolchain-r-test
38          packages:
39            - g++-6
40      env:
41        - COMPILER=g++-6 C_COMPILER=gcc-6  BUILD_TYPE=Debug
42        - EXTRA_FLAGS="-fno-omit-frame-pointer -g -O2 -fsanitize=undefined,address -fuse-ld=gold"
43    - compiler: clang
44      env: COMPILER=clang++ C_COMPILER=clang BUILD_TYPE=Debug
45    - compiler: clang
46      env: COMPILER=clang++ C_COMPILER=clang BUILD_TYPE=Release
47    # Clang w/ libc++
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
56        - EXTRA_FLAGS="-stdlib=libc++"
57    - compiler: clang
58      addons:
59        apt:
60          packages:
61            clang-3.8
62      env:
63        - COMPILER=clang++-3.8 C_COMPILER=clang-3.8 BUILD_TYPE=Release
64        - LIBCXX_BUILD=1
65        - EXTRA_FLAGS="-stdlib=libc++"
66    # Clang w/ 32bit libc++
67    - compiler: clang
68      addons:
69        apt:
70          packages:
71            - clang-3.8
72            - g++-multilib
73      env:
74        - COMPILER=clang++-3.8 C_COMPILER=clang-3.8 BUILD_TYPE=Debug
75        - LIBCXX_BUILD=1
76        - BUILD_32_BITS=ON
77        - EXTRA_FLAGS="-stdlib=libc++ -m32"
78    # Clang w/ 32bit libc++
79    - compiler: clang
80      addons:
81        apt:
82          packages:
83            - clang-3.8
84            - g++-multilib
85      env:
86        - COMPILER=clang++-3.8 C_COMPILER=clang-3.8 BUILD_TYPE=Release
87        - LIBCXX_BUILD=1
88        - BUILD_32_BITS=ON
89        - EXTRA_FLAGS="-stdlib=libc++ -m32"
90    # Clang w/ libc++, ASAN, UBSAN
91    - compiler: clang
92      addons:
93        apt:
94          packages:
95            clang-3.8
96      env:
97        - COMPILER=clang++-3.8 C_COMPILER=clang-3.8 BUILD_TYPE=Debug
98        - LIBCXX_BUILD=1 LIBCXX_SANITIZER="Undefined;Address"
99        - EXTRA_FLAGS="-stdlib=libc++ -g -O2 -fno-omit-frame-pointer -fsanitize=undefined,address -fno-sanitize-recover=all"
100        - UBSAN_OPTIONS=print_stacktrace=1
101    # Clang w/ libc++ and MSAN
102    - compiler: clang
103      addons:
104        apt:
105          packages:
106            clang-3.8
107      env:
108        - COMPILER=clang++-3.8 C_COMPILER=clang-3.8 BUILD_TYPE=Debug
109        - LIBCXX_BUILD=1 LIBCXX_SANITIZER=MemoryWithOrigins
110        - EXTRA_FLAGS="-stdlib=libc++ -g -O2 -fno-omit-frame-pointer -fsanitize=memory -fsanitize-memory-track-origins"
111    # Clang w/ libc++ and MSAN
112    - compiler: clang
113      addons:
114        apt:
115          packages:
116            clang-3.8
117      env:
118        - COMPILER=clang++-3.8 C_COMPILER=clang-3.8 BUILD_TYPE=RelWithDebInfo
119        - LIBCXX_BUILD=1 LIBCXX_SANITIZER=Thread
120        - EXTRA_FLAGS="-stdlib=libc++ -g -O2 -fno-omit-frame-pointer -fsanitize=thread -fno-sanitize-recover=all"
121
122    - os: osx
123      osx_image: xcode8.3
124      compiler: clang
125      env:
126        - COMPILER=clang++ BUILD_TYPE=Debug
127    - os: osx
128      osx_image: xcode8.3
129      compiler: clang
130      env:
131        - COMPILER=clang++ BUILD_TYPE=Release
132
133before_script:
134  - if [ -z "$BUILD_32_BITS" ]; then
135      export BUILD_32_BITS=OFF && echo disabling 32 bit build;
136    fi
137  - if [ -n "${LIBCXX_BUILD}" ]; then
138      source .travis-libcxx-setup.sh;
139    fi
140  - mkdir build && cd build
141
142install:
143  - if [ "${BUILD_TYPE}" == "Coverage" -a "${TRAVIS_OS_NAME}" == "linux" ]; then
144      PATH=~/.local/bin:${PATH};
145      pip install --user --upgrade pip;
146      pip install --user cpp-coveralls;
147    fi
148
149script:
150  - cmake -DCMAKE_C_COMPILER=${C_COMPILER} -DCMAKE_CXX_COMPILER=${COMPILER} -DCMAKE_BUILD_TYPE=${BUILD_TYPE} -DCMAKE_CXX_FLAGS="${EXTRA_FLAGS}" -DBENCHMARK_BUILD_32_BITS=${BUILD_32_BITS} ..
151  - make
152  - ctest -C ${BUILD_TYPE} --output-on-failure
153
154after_success:
155  - if [ "${BUILD_TYPE}" == "Coverage" -a "${TRAVIS_OS_NAME}" == "linux" ]; then
156      coveralls --include src --include include --gcov-options '\-lp' --root .. --build-root .;
157    fi
158