# cpp takes longer language: minimal sudo: false dist: trusty git: depth: false notifications: email: false # set up build matrix matrix: include: # ============= GCC ================== # gcc-5, c++11, release build, dynamic linking - os: linux compiler: gcc addons: apt: sources: - ubuntu-toolchain-r-test packages: - g++-5 env: - CXX_COMPILER=g++-5 - C_COMPILER=gcc-5 - CXX_VER=11 - BUILD_TYPE=Release - COVERAGE=OFF - STATIC=OFF - SAMPLES=OFF - BENCHMARKS=OFF # ============= GCC ================== # gcc-6, c++11, release build, dynamic linking - os: linux compiler: gcc addons: apt: sources: - ubuntu-toolchain-r-test packages: - g++-6 env: - CXX_COMPILER=g++-6 - C_COMPILER=gcc-6 - CXX_VER=11 - BUILD_TYPE=Release - COVERAGE=OFF - STATIC=OFF - SAMPLES=OFF - BENCHMARKS=OFF # gcc-7, c++14, release build, static linking - os: linux compiler: gcc addons: apt: sources: - ubuntu-toolchain-r-test packages: - g++-7 env: - CXX_COMPILER=g++-7 - C_COMPILER=gcc-7 - CXX_VER=14 - BUILD_TYPE=Release - COVERAGE=OFF - STATIC=ON - SAMPLES=OFF - BENCHMARKS=OFF # gcc-8, c++17, release build, static linking, samples + benchmarks compiled and run - os: linux compiler: gcc addons: apt: sources: - ubuntu-toolchain-r-test packages: - g++-8 env: - CXX_COMPILER=g++-8 - C_COMPILER=gcc-8 - CXX_VER=17 - BUILD_TYPE=Release - COVERAGE=OFF - STATIC=ON - SAMPLES=ON - BENCHMARKS=ON # =========== CLANG ============= # clang 4, c++11, release build, dynamic linking - os: linux compiler: clang addons: apt: sources: - ubuntu-toolchain-r-test - llvm-toolchain-trusty-4.0 packages: - clang-4.0 env: - CXX_COMPILER=clang++-4.0 - C_COMPILER=clang-4.0 - CXX_VER=11 - BUILD_TYPE=Release - COVERAGE=OFF - STATIC=OFF - SAMPLES=OFF - BENCHMARKS=OFF # clang 5, c++14, release build, dynamic linking - os: linux compiler: clang addons: apt: sources: - ubuntu-toolchain-r-test - llvm-toolchain-trusty-5.0 packages: - clang-5.0 env: - CXX_COMPILER=clang++-5.0 - C_COMPILER=clang-5.0 - CXX_VER=14 - BUILD_TYPE=Release - COVERAGE=OFF - STATIC=ON - SAMPLES=OFF - BENCHMARKS=OFF # clang 6, c++17, release build, static linking, samples + benchmarks compiled and run - os: linux compiler: clang addons: apt: sources: - ubuntu-toolchain-r-test - llvm-toolchain-trusty-6.0 packages: - clang-6.0 env: - CXX_COMPILER=clang++-6.0 - C_COMPILER=clang-6.0 - CXX_VER=17 - BUILD_TYPE=Release - COVERAGE=OFF - STATIC=ON - SAMPLES=ON - BENCHMARKS=ON # ============= CODE COVERAGE =============== # gcc-6, c++11, debug build, static linking, code coverage enabled - os: linux compiler: gcc addons: apt: sources: - ubuntu-toolchain-r-test packages: - g++-6 - lcov env: - CXX_COMPILER=g++-6 - C_COMPILER=gcc-6 - CXX_VER=11 - BUILD_TYPE=Debug - COVERAGE=ON - STATIC=ON - SAMPLES=OFF before_install: - export CC=${C_COMPILER} - export CXX=${CXX_COMPILER} install: - | if [[ "${COVERAGE}" == "ON" ]]; then gem install coveralls-lcov; fi - ${CXX} --version - cmake --version script: - mkdir build - cd build - cmake .. -DXLNT_CXX_LANG=${CXX_VER} -DSTATIC=$STATIC -DBENCHMARKS=$BENCHMARKS -DSAMPLES=$SAMPLES -DCOVERAGE=$COVERAGE -DCMAKE_BUILD_TYPE=$BUILD_TYPE - cmake --build . -- -j2 - ./tests/xlnt.test - echo "samples" && echo 'travis_fold:start:samples' - if [[ "${SAMPLES}" == "ON" ]]; then ./samples/sample-decrypt; fi - if [[ "${SAMPLES}" == "ON" ]]; then ./samples/sample-img2xlsx "../samples/data/cafe.jpg" "img.xlsx"; fi - if [[ "${SAMPLES}" == "ON" ]]; then ./samples/sample-documentation; fi - echo 'travis_fold:end:samples' - echo "benchmarks" && echo 'travis_fold:start:benchmarks' - if [[ "${BENCHMARKS}" == "ON" ]]; then ./benchmarks/benchmark-styles; fi - if [[ "${BENCHMARKS}" == "ON" ]]; then ./benchmarks/benchmark-writer; fi - echo 'travis_fold:end:benchmarks' after_success: - | if [[ "${COVERAGE}" == "ON" ]]; then lcov --directory source/CMakeFiles/xlnt.dir --capture --output-file coverage.info --base-directory ../source --no-external --gcov-tool /usr/bin/gcov-6 lcov --output-file coverage.info --remove coverage.info source/detail/serialization/miniz.cpp i=$(dirname $(pwd)) sed -i "s|$i/||" coverage.info cd .. coveralls-lcov build/coverage.info fi