xlnt/.travis.yml
2020-03-21 14:25:39 -04:00

232 lines
6.3 KiB
YAML

# 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
- RELEASE=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
- RELEASE=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
- RELEASE=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
- RELEASE=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
- RELEASE=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
- RELEASE=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
- RELEASE=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 -DRELEASE=$RELEASE
- 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
deploy:
provider: releases
api_key:
secure: dDHREnPCSxrxbnYcJlHZ95nyCu2NYmkEW3uW3J9eNar4R5kfYm6JpR0AoQZOCfskL+BJLa+8MMDxzTIdpohc8NTAVPR51cDoeTW9GoAsxpvL8LaTRKb8IY3RaSybqAaZxWUxepNOAHRUibFOrGpkUkunp00uHoWPVrLI15eLEHejNhCSi3se2sEiN4i9zEwVwFtjta8gF59Af7Mm8jYMGMaIAqL7XAZSnyqzZwLl8giMWw05KMQhtapZRI8DiG7XYWebPT4W0qfVf4MmTHpAsNetAq0eQW19nu4qUM7FT4igCzQNEu21nZ5XFTfvsH96Dn2urT/tt6KAHE2I0Px8IXjhsJhTeZzhRDhbVmRHQxS8za5DTXNgoT8cln/jYKhQvDVf/DMHIPqm09QO2B7kOOSeYwW5lHYwPAvSZ4vIZOzL3OOI90k1VMsbBdDrQt3GM6BWrYrbzyQlkKG9hpjSTVDbVZ5cx5f7ZOBd5srFVM9+TYIEWF0Rx35GX+kfk/48o4fDk80Vpd7o/e+eZpfmeZTg9Boz8DpRHDQn5hVsXCsoNify8AN+fEUqNqio9eAhxK1zdU2oGaE6tZTcWNjjIeWN/1jkSzffN5sjGtqarNhkERlMd0oewouBeHQ2IPwKi7MvlAgPLZaon7MVMmT1sIcyPpU9uN5pYyo02qi2v5k=
file_glob: true
file: build/*.tar.gz
skip_cleanup: true
overwite: true
on:
repo: tfussell/xlnt
tags: true