language: cpp install: - sudo apt-get update -qq - sudo apt-get install valgrind matrix: # ----- Linux / GCC ----- include: - os: linux addons: apt: sources: - ubuntu-toolchain-r-test packages: - g++-7 env: - MATRIX_EVAL="CC=gcc-7 && CXX=g++-7" BUILD_TYPE="Debug" DOUBLE_PRECISION="False" - os: linux addons: apt: sources: - ubuntu-toolchain-r-test packages: - g++-7 env: - MATRIX_EVAL="CC=gcc-7 && CXX=g++-7" BUILD_TYPE="Release" DOUBLE_PRECISION="False" - os: linux addons: apt: sources: - ubuntu-toolchain-r-test packages: - g++-7 env: - MATRIX_EVAL="CC=gcc-7 && CXX=g++-7" BUILD_TYPE="Debug" DOUBLE_PRECISION="True" - os: linux addons: apt: sources: - ubuntu-toolchain-r-test packages: - g++-7 env: - MATRIX_EVAL="CC=gcc-7 && CXX=g++-7" BUILD_TYPE="Release" DOUBLE_PRECISION="True" - os: linux addons: apt: sources: - ubuntu-toolchain-r-test packages: - g++-7 env: - MATRIX_EVAL="CC=gcc-7 && CXX=g++-7" BUILD_TYPE="Debug" DOUBLE_PRECISION="False" LOGGER="True" Profiler="True" - os: linux addons: apt: sources: - ubuntu-toolchain-r-test packages: - g++-7 env: - MATRIX_EVAL="CC=gcc-7 && CXX=g++-7" BUILD_TYPE="Release" DOUBLE_PRECISION="False" LOGGER="True" Profiler="True" - os: linux addons: apt: sources: - ubuntu-toolchain-r-test packages: - g++-7 - lcov env: - MATRIX_EVAL="CC=gcc-7 && CXX=g++-7" BUILD_TYPE="Release" DOUBLE_PRECISION="False" CODE_COVERAGE="True" - os: linux addons: apt: sources: - ubuntu-toolchain-r-test packages: - g++-7 - valgrind env: - MATRIX_EVAL="CC=gcc-7 && CXX=g++-7" BUILD_TYPE="Debug" DOUBLE_PRECISION="False" VALGRIND="True" # ----- OS X / GCC ----- - os: osx osx_image: xcode8 env: - MATRIX_EVAL="brew update && brew install gcc && CC=gcc-7 && CXX=g++-7" BUILD_TYPE="Debug" DOUBLE_PRECISION="False" - os: osx osx_image: xcode8 env: - MATRIX_EVAL="brew update && brew install gcc && CC=gcc-7 && CXX=g++-7" BUILD_TYPE="Release" DOUBLE_PRECISION="False" - os: osx osx_image: xcode8 env: - MATRIX_EVAL="brew update && brew install gcc && CC=gcc-7 && CXX=g++-7" BUILD_TYPE="Debug" DOUBLE_PRECISION="True" - os: osx osx_image: xcode8 env: - MATRIX_EVAL="brew update && brew install gcc && CC=gcc-7 && CXX=g++-7" BUILD_TYPE="Release" DOUBLE_PRECISION="True" - os: osx osx_image: xcode8 env: - MATRIX_EVAL="brew update && brew install gcc && CC=gcc-7 && CXX=g++-7" BUILD_TYPE="Debug" DOUBLE_PRECISION="True" LOGGER="True" PROFILER="True" - os: osx osx_image: xcode8 env: - MATRIX_EVAL="brew update && brew install gcc && CC=gcc-7 && CXX=g++-7" BUILD_TYPE="Release" DOUBLE_PRECISION="True" LOGGER="True" PROFILER="True" # ----- Linux / Clang ----- - os: linux addons: apt: sources: - ubuntu-toolchain-r-test - llvm-toolchain-precise-3.8 packages: - clang-3.8 - g++-7 env: - MATRIX_EVAL="CC=clang-3.8 && CXX=clang++-3.8" BUILD_TYPE="Debug" DOUBLE_PRECISION="False" - os: linux addons: apt: sources: - ubuntu-toolchain-r-test - llvm-toolchain-precise-3.8 packages: - clang-3.8 - g++-7 env: - MATRIX_EVAL="CC=clang-3.8 && CXX=clang++-3.8" BUILD_TYPE="Release" DOUBLE_PRECISION="False" - os: linux addons: apt: sources: - ubuntu-toolchain-r-test - llvm-toolchain-precise-3.8 packages: - clang-3.8 - g++-7 env: - MATRIX_EVAL="CC=clang-3.8 && CXX=clang++-3.8" BUILD_TYPE="Debug" DOUBLE_PRECISION="True" - os: linux addons: apt: sources: - ubuntu-toolchain-r-test - llvm-toolchain-precise-3.8 packages: - clang-3.8 - g++-7 env: - MATRIX_EVAL="CC=clang-3.8 && CXX=clang++-3.8" BUILD_TYPE="Release" DOUBLE_PRECISION="True" - os: linux addons: apt: sources: - ubuntu-toolchain-r-test - llvm-toolchain-precise-3.8 packages: - clang-3.8 - g++-7 env: - MATRIX_EVAL="CC=clang-3.8 && CXX=clang++-3.8" BUILD_TYPE="Debug" DOUBLE_PRECISION="True" LOGGER="True" PROFILER="True" - os: linux addons: apt: sources: - ubuntu-toolchain-r-test - llvm-toolchain-precise-3.8 packages: - clang-3.8 - g++-7 env: - MATRIX_EVAL="CC=clang-3.8 && CXX=clang++-3.8" BUILD_TYPE="Release" DOUBLE_PRECISION="True" LOGGER="True" PROFILER="True" # ----- OS X / Clang ----- - os: osx osx_image: xcode8 env: - BUILD_TYPE="Debug" DOUBLE_PRECISION="False" - os: osx osx_image: xcode8 env: - BUILD_TYPE="Release" DOUBLE_PRECISION="False" - os: osx osx_image: xcode8 env: - BUILD_TYPE="Debug" DOUBLE_PRECISION="True" - os: osx osx_image: xcode8 env: - BUILD_TYPE="Release" DOUBLE_PRECISION="True" - os: osx osx_image: xcode8 env: - BUILD_TYPE="Debug" DOUBLE_PRECISION="True" LOGGER="True" PROFILER="True" - os: osx osx_image: xcode8 env: - BUILD_TYPE="Release" DOUBLE_PRECISION="True" LOGGER="True" PROFILER="True" before_install: - eval "${MATRIX_EVAL}" branches: only: - master - develop script: - mkdir build_directory - cd build_directory - cmake -DCMAKE_BUILD_TYPE=${BUILD_TYPE} —DDOUBLE_PRECISION_ENABLED=${DOUBLE_PRECISION} -DCOMPILE_TESTS=True -DLOGS_ENABLE=${LOGGER} -DPROFILING_ENABLED=${PROFILER} -DCODE_COVERAGE_ENABLED=${CODE_COVERAGE} ../ - make && make test ARGS="-V" - if [ "${VALGRIND}" == "True" ]; then valgrind --leak-check=full --show-leak-kinds=all --track-origins=yes --verbose --error-exitcode test/tests; fi after_success: # Generate code coverage report - if [ "${CODE_COVERAGE}" == "True" ]; then cd build_directory lcov --directory . --capture --output-file coverage.info lcov --remove coverage.info '/usr/*' --output-file coverage.info lcov --remove coverage.info '/test/*' --output-file coverage.info lcov --list coverage.info bash <(curl -s https://codecov.io/bash) || echo "Codecov did not collect coverage reports" fi