209 lines · yaml
1sudo: required2dist: trusty3language: cpp4 5matrix:6 include:7 - compiler: gcc8 addons:9 apt:10 packages:11 - lcov12 env: COMPILER=g++ C_COMPILER=gcc BUILD_TYPE=Coverage13 - compiler: gcc14 addons:15 apt:16 packages:17 - g++-multilib18 - libc6:i38619 env:20 - COMPILER=g++21 - C_COMPILER=gcc22 - BUILD_TYPE=Debug23 - BUILD_32_BITS=ON24 - EXTRA_FLAGS="-m32"25 - compiler: gcc26 addons:27 apt:28 packages:29 - g++-multilib30 - libc6:i38631 env:32 - COMPILER=g++33 - C_COMPILER=gcc34 - BUILD_TYPE=Release35 - BUILD_32_BITS=ON36 - EXTRA_FLAGS="-m32"37 - compiler: gcc38 env:39 - INSTALL_GCC6_FROM_PPA=140 - COMPILER=g++-6 C_COMPILER=gcc-6 BUILD_TYPE=Debug41 - ENABLE_SANITIZER=142 - EXTRA_FLAGS="-fno-omit-frame-pointer -g -O2 -fsanitize=undefined,address -fuse-ld=gold"43 # Clang w/ libc++44 - compiler: clang45 dist: xenial46 addons:47 apt:48 packages:49 clang-3.850 env:51 - INSTALL_GCC6_FROM_PPA=152 - COMPILER=clang++-3.8 C_COMPILER=clang-3.8 BUILD_TYPE=Debug53 - LIBCXX_BUILD=154 - EXTRA_CXX_FLAGS="-stdlib=libc++"55 - compiler: clang56 dist: xenial57 addons:58 apt:59 packages:60 clang-3.861 env:62 - INSTALL_GCC6_FROM_PPA=163 - COMPILER=clang++-3.8 C_COMPILER=clang-3.8 BUILD_TYPE=Release64 - LIBCXX_BUILD=165 - EXTRA_CXX_FLAGS="-stdlib=libc++"66 # Clang w/ 32bit libc++67 - compiler: clang68 dist: xenial69 addons:70 apt:71 packages:72 - clang-3.873 - g++-multilib74 - libc6:i38675 env:76 - INSTALL_GCC6_FROM_PPA=177 - COMPILER=clang++-3.8 C_COMPILER=clang-3.8 BUILD_TYPE=Debug78 - LIBCXX_BUILD=179 - BUILD_32_BITS=ON80 - EXTRA_FLAGS="-m32"81 - EXTRA_CXX_FLAGS="-stdlib=libc++"82 # Clang w/ 32bit libc++83 - compiler: clang84 dist: xenial85 addons:86 apt:87 packages:88 - clang-3.889 - g++-multilib90 - libc6:i38691 env:92 - INSTALL_GCC6_FROM_PPA=193 - COMPILER=clang++-3.8 C_COMPILER=clang-3.8 BUILD_TYPE=Release94 - LIBCXX_BUILD=195 - BUILD_32_BITS=ON96 - EXTRA_FLAGS="-m32"97 - EXTRA_CXX_FLAGS="-stdlib=libc++"98 # Clang w/ libc++, ASAN, UBSAN99 - compiler: clang100 dist: xenial101 addons:102 apt:103 packages:104 clang-3.8105 env:106 - INSTALL_GCC6_FROM_PPA=1107 - COMPILER=clang++-3.8 C_COMPILER=clang-3.8 BUILD_TYPE=Debug108 - LIBCXX_BUILD=1 LIBCXX_SANITIZER="Undefined;Address"109 - ENABLE_SANITIZER=1110 - EXTRA_FLAGS="-g -O2 -fno-omit-frame-pointer -fsanitize=undefined,address -fno-sanitize-recover=all"111 - EXTRA_CXX_FLAGS="-stdlib=libc++"112 - UBSAN_OPTIONS=print_stacktrace=1113 # Clang w/ libc++ and MSAN114 - compiler: clang115 dist: xenial116 addons:117 apt:118 packages:119 clang-3.8120 env:121 - INSTALL_GCC6_FROM_PPA=1122 - COMPILER=clang++-3.8 C_COMPILER=clang-3.8 BUILD_TYPE=Debug123 - LIBCXX_BUILD=1 LIBCXX_SANITIZER=MemoryWithOrigins124 - ENABLE_SANITIZER=1125 - EXTRA_FLAGS="-g -O2 -fno-omit-frame-pointer -fsanitize=memory -fsanitize-memory-track-origins"126 - EXTRA_CXX_FLAGS="-stdlib=libc++"127 # Clang w/ libc++ and MSAN128 - compiler: clang129 dist: xenial130 addons:131 apt:132 packages:133 clang-3.8134 env:135 - INSTALL_GCC6_FROM_PPA=1136 - COMPILER=clang++-3.8 C_COMPILER=clang-3.8 BUILD_TYPE=RelWithDebInfo137 - LIBCXX_BUILD=1 LIBCXX_SANITIZER=Thread138 - ENABLE_SANITIZER=1139 - EXTRA_FLAGS="-g -O2 -fno-omit-frame-pointer -fsanitize=thread -fno-sanitize-recover=all"140 - EXTRA_CXX_FLAGS="-stdlib=libc++"141 - os: osx142 osx_image: xcode8.3143 compiler: clang144 env:145 - COMPILER=clang++146 - BUILD_TYPE=Release147 - BUILD_32_BITS=ON148 - EXTRA_FLAGS="-m32"149 150before_script:151 - if [ -n "${LIBCXX_BUILD}" ]; then152 source .libcxx-setup.sh;153 fi154 - if [ -n "${ENABLE_SANITIZER}" ]; then155 export EXTRA_OPTIONS="-DBENCHMARK_ENABLE_ASSEMBLY_TESTS=OFF";156 else157 export EXTRA_OPTIONS="";158 fi159 - mkdir -p build && cd build160 161before_install:162 - if [ -z "$BUILD_32_BITS" ]; then163 export BUILD_32_BITS=OFF && echo disabling 32 bit build;164 fi165 - if [ -n "${INSTALL_GCC6_FROM_PPA}" ]; then166 sudo add-apt-repository -y "ppa:ubuntu-toolchain-r/test";167 sudo apt-get update --option Acquire::Retries=100 --option Acquire::http::Timeout="60";168 fi169 170install:171 - if [ -n "${INSTALL_GCC6_FROM_PPA}" ]; then172 travis_wait sudo -E apt-get -yq --no-install-suggests --no-install-recommends install g++-6;173 fi174 - if [ "${TRAVIS_OS_NAME}" == "linux" -a "${BUILD_32_BITS}" == "OFF" ]; then175 travis_wait sudo -E apt-get -y --no-install-suggests --no-install-recommends install llvm-3.9-tools;176 sudo cp /usr/lib/llvm-3.9/bin/FileCheck /usr/local/bin/;177 fi178 - if [ "${BUILD_TYPE}" == "Coverage" -a "${TRAVIS_OS_NAME}" == "linux" ]; then179 PATH=~/.local/bin:${PATH};180 pip install --user --upgrade pip;181 travis_wait pip install --user cpp-coveralls;182 fi183 - if [ "${C_COMPILER}" == "gcc-7" -a "${TRAVIS_OS_NAME}" == "osx" ]; then184 rm -f /usr/local/include/c++;185 brew update;186 travis_wait brew install gcc@7;187 fi188 - if [ "${TRAVIS_OS_NAME}" == "linux" ]; then189 sudo apt-get update -qq;190 sudo apt-get install -qq unzip cmake3;191 wget https://github.com/bazelbuild/bazel/releases/download/3.2.0/bazel-3.2.0-installer-linux-x86_64.sh --output-document bazel-installer.sh;192 travis_wait sudo bash bazel-installer.sh;193 fi194 - if [ "${TRAVIS_OS_NAME}" == "osx" ]; then195 curl -L -o bazel-installer.sh https://github.com/bazelbuild/bazel/releases/download/3.2.0/bazel-3.2.0-installer-darwin-x86_64.sh;196 travis_wait sudo bash bazel-installer.sh;197 fi198 199script:200 - cmake -DCMAKE_C_COMPILER=${C_COMPILER} -DCMAKE_CXX_COMPILER=${COMPILER} -DCMAKE_BUILD_TYPE=${BUILD_TYPE} -DCMAKE_C_FLAGS="${EXTRA_FLAGS}" -DCMAKE_CXX_FLAGS="${EXTRA_FLAGS} ${EXTRA_CXX_FLAGS}" -DBENCHMARK_DOWNLOAD_DEPENDENCIES=ON -DBENCHMARK_BUILD_32_BITS=${BUILD_32_BITS} ${EXTRA_OPTIONS} ..201 - make202 - ctest -C ${BUILD_TYPE} --output-on-failure203 - bazel test -c dbg --define google_benchmark.have_regex=posix --announce_rc --verbose_failures --test_output=errors --keep_going //test/...204 205after_success:206 - if [ "${BUILD_TYPE}" == "Coverage" -a "${TRAVIS_OS_NAME}" == "linux" ]; then207 coveralls --include src --include include --gcov-options '\-lp' --root .. --build-root .;208 fi209