mirror of
https://github.com/google/benchmark.git
synced 2024-12-28 21:40:15 +08:00
a9beffda0b
* Add myself to CONTRIBUTORS under the corp CLA for Stripe, Inc. * Add support for building with Bazel. Limitations compared to existing CMake rules: * Defaults to using C++11 `<regex>`, with an override via Bazel flag `--define` of `google_benchmark.have_regex`. The TravisCI config sets the regex implementation to `posix` because it uses ancient compilers. * Debug vs Opt mode can't be set per test. TravisCI runs all the tests in debug mode to satisfy `diagnostics_test`, which depends on `CHECK` being live. * Set Bazel workspace name so other repos can refer to it by stable name. This is recommended by the Bazel style guide to avoid each dependent workspace defining its own name for the dependency.
183 lines
5.9 KiB
YAML
183 lines
5.9 KiB
YAML
sudo: required
|
|
dist: trusty
|
|
language: cpp
|
|
|
|
env:
|
|
global:
|
|
- /usr/local/bin:$PATH
|
|
|
|
matrix:
|
|
include:
|
|
- compiler: gcc
|
|
addons:
|
|
apt:
|
|
packages:
|
|
- lcov
|
|
env: COMPILER=g++ C_COMPILER=gcc BUILD_TYPE=Coverage
|
|
- compiler: gcc
|
|
env: COMPILER=g++ C_COMPILER=gcc BUILD_TYPE=Debug
|
|
- compiler: gcc
|
|
env: COMPILER=g++ C_COMPILER=gcc BUILD_TYPE=Release
|
|
- compiler: gcc
|
|
addons:
|
|
apt:
|
|
packages:
|
|
- g++-multilib
|
|
env: COMPILER=g++ C_COMPILER=gcc BUILD_TYPE=Debug BUILD_32_BITS=ON
|
|
- compiler: gcc
|
|
addons:
|
|
apt:
|
|
packages:
|
|
- g++-multilib
|
|
env: COMPILER=g++ C_COMPILER=gcc BUILD_TYPE=Release BUILD_32_BITS=ON
|
|
- compiler: gcc
|
|
env:
|
|
- INSTALL_GCC6_FROM_PPA=1
|
|
- COMPILER=g++-6 C_COMPILER=gcc-6 BUILD_TYPE=Debug
|
|
- EXTRA_FLAGS="-fno-omit-frame-pointer -g -O2 -fsanitize=undefined,address -fuse-ld=gold"
|
|
- compiler: clang
|
|
env: COMPILER=clang++ C_COMPILER=clang BUILD_TYPE=Debug
|
|
- compiler: clang
|
|
env: COMPILER=clang++ C_COMPILER=clang BUILD_TYPE=Release
|
|
# Clang w/ libc++
|
|
- compiler: clang
|
|
addons:
|
|
apt:
|
|
packages:
|
|
clang-3.8
|
|
env:
|
|
- COMPILER=clang++-3.8 C_COMPILER=clang-3.8 BUILD_TYPE=Debug
|
|
- LIBCXX_BUILD=1
|
|
- EXTRA_FLAGS="-stdlib=libc++"
|
|
- compiler: clang
|
|
addons:
|
|
apt:
|
|
packages:
|
|
clang-3.8
|
|
env:
|
|
- COMPILER=clang++-3.8 C_COMPILER=clang-3.8 BUILD_TYPE=Release
|
|
- LIBCXX_BUILD=1
|
|
- EXTRA_FLAGS="-stdlib=libc++"
|
|
# Clang w/ 32bit libc++
|
|
- compiler: clang
|
|
addons:
|
|
apt:
|
|
packages:
|
|
- clang-3.8
|
|
- g++-multilib
|
|
env:
|
|
- COMPILER=clang++-3.8 C_COMPILER=clang-3.8 BUILD_TYPE=Debug
|
|
- LIBCXX_BUILD=1
|
|
- BUILD_32_BITS=ON
|
|
- EXTRA_FLAGS="-stdlib=libc++ -m32"
|
|
# Clang w/ 32bit libc++
|
|
- compiler: clang
|
|
addons:
|
|
apt:
|
|
packages:
|
|
- clang-3.8
|
|
- g++-multilib
|
|
env:
|
|
- COMPILER=clang++-3.8 C_COMPILER=clang-3.8 BUILD_TYPE=Release
|
|
- LIBCXX_BUILD=1
|
|
- BUILD_32_BITS=ON
|
|
- EXTRA_FLAGS="-stdlib=libc++ -m32"
|
|
# Clang w/ libc++, ASAN, UBSAN
|
|
- compiler: clang
|
|
addons:
|
|
apt:
|
|
packages:
|
|
clang-3.8
|
|
env:
|
|
- COMPILER=clang++-3.8 C_COMPILER=clang-3.8 BUILD_TYPE=Debug
|
|
- LIBCXX_BUILD=1 LIBCXX_SANITIZER="Undefined;Address"
|
|
- EXTRA_FLAGS="-stdlib=libc++ -g -O2 -fno-omit-frame-pointer -fsanitize=undefined,address -fno-sanitize-recover=all"
|
|
- UBSAN_OPTIONS=print_stacktrace=1
|
|
# Clang w/ libc++ and MSAN
|
|
- compiler: clang
|
|
addons:
|
|
apt:
|
|
packages:
|
|
clang-3.8
|
|
env:
|
|
- COMPILER=clang++-3.8 C_COMPILER=clang-3.8 BUILD_TYPE=Debug
|
|
- LIBCXX_BUILD=1 LIBCXX_SANITIZER=MemoryWithOrigins
|
|
- EXTRA_FLAGS="-stdlib=libc++ -g -O2 -fno-omit-frame-pointer -fsanitize=memory -fsanitize-memory-track-origins"
|
|
# Clang w/ libc++ and MSAN
|
|
- compiler: clang
|
|
addons:
|
|
apt:
|
|
packages:
|
|
clang-3.8
|
|
env:
|
|
- COMPILER=clang++-3.8 C_COMPILER=clang-3.8 BUILD_TYPE=RelWithDebInfo
|
|
- LIBCXX_BUILD=1 LIBCXX_SANITIZER=Thread
|
|
- EXTRA_FLAGS="-stdlib=libc++ -g -O2 -fno-omit-frame-pointer -fsanitize=thread -fno-sanitize-recover=all"
|
|
|
|
- os: osx
|
|
osx_image: xcode8.3
|
|
compiler: clang
|
|
env:
|
|
- COMPILER=clang++ BUILD_TYPE=Debug
|
|
- os: osx
|
|
osx_image: xcode8.3
|
|
compiler: clang
|
|
env:
|
|
- COMPILER=clang++ BUILD_TYPE=Release
|
|
- os: osx
|
|
osx_image: xcode8.3
|
|
compiler: gcc
|
|
env:
|
|
- COMPILER=g++-7 C_COMPILER=gcc-7 BUILD_TYPE=Debug
|
|
|
|
before_script:
|
|
- if [ -z "$BUILD_32_BITS" ]; then
|
|
export BUILD_32_BITS=OFF && echo disabling 32 bit build;
|
|
fi
|
|
- if [ -n "${LIBCXX_BUILD}" ]; then
|
|
source .travis-libcxx-setup.sh;
|
|
fi
|
|
- mkdir -p build && cd build
|
|
|
|
before_install:
|
|
- if [ -n "${INSTALL_GCC6_FROM_PPA}" ]; then
|
|
sudo add-apt-repository -y "ppa:ubuntu-toolchain-r/test";
|
|
sudo apt-get update --option Acquire::Retries=100 --option Acquire::http::Timeout="60";
|
|
fi
|
|
|
|
install:
|
|
- if [ -n "${INSTALL_GCC6_FROM_PPA}" ]; then
|
|
sudo -E apt-get -yq --no-install-suggests --no-install-recommends --force-yes install g++-6;
|
|
fi
|
|
- if [ "${BUILD_TYPE}" == "Coverage" -a "${TRAVIS_OS_NAME}" == "linux" ]; then
|
|
PATH=~/.local/bin:${PATH};
|
|
pip install --user --upgrade pip;
|
|
pip install --user cpp-coveralls;
|
|
fi
|
|
- if [ "${C_COMPILER}" == "gcc-7" -a "${TRAVIS_OS_NAME}" == "osx" ]; then
|
|
rm -f /usr/local/include/c++;
|
|
brew update;
|
|
brew install gcc@7;
|
|
fi
|
|
- if [ "${TRAVIS_OS_NAME}" == "linux" ]; then
|
|
sudo apt-get update -qq;
|
|
sudo apt-get install -qq unzip;
|
|
wget https://github.com/bazelbuild/bazel/releases/download/0.10.1/bazel-0.10.1-installer-linux-x86_64.sh --output-document bazel-installer.sh;
|
|
sudo bash bazel-installer.sh;
|
|
fi
|
|
- if [ "${TRAVIS_OS_NAME}" == "osx" ]; then
|
|
curl -L -o bazel-installer.sh https://github.com/bazelbuild/bazel/releases/download/0.10.1/bazel-0.10.1-installer-darwin-x86_64.sh;
|
|
sudo bash bazel-installer.sh;
|
|
fi
|
|
|
|
script:
|
|
- cmake -DCMAKE_C_COMPILER=${C_COMPILER} -DCMAKE_CXX_COMPILER=${COMPILER} -DCMAKE_BUILD_TYPE=${BUILD_TYPE} -DCMAKE_CXX_FLAGS="${EXTRA_FLAGS}" -DBENCHMARK_DOWNLOAD_DEPENDENCIES=ON -DBENCHMARK_BUILD_32_BITS=${BUILD_32_BITS} ..
|
|
- make
|
|
- ctest -C ${BUILD_TYPE} --output-on-failure
|
|
- bazel test -c dbg --define google_benchmark.have_regex=posix --announce_rc --verbose_failures --test_output=errors --keep_going //test/...
|
|
|
|
after_success:
|
|
- if [ "${BUILD_TYPE}" == "Coverage" -a "${TRAVIS_OS_NAME}" == "linux" ]; then
|
|
coveralls --include src --include include --gcov-options '\-lp' --root .. --build-root .;
|
|
fi
|