diff --git a/.circleci/config.yml b/.circleci/config.yml new file mode 100644 index 00000000..3319b667 --- /dev/null +++ b/.circleci/config.yml @@ -0,0 +1,78 @@ +version: 2.1 + +jobs: + build: + docker: + - image: lycantropos/cmake:3.9.5 + parameters: + benchmarks: + default: "OFF" + type: string + build-type: + default: Release + type: string + coverage: + default: "OFF" + type: string + cxx-ver: + default: "11" + type: string + samples: + default: "OFF" + type: string + static: + default: "ON" + type: string + steps: + - checkout + - run: cmake -D XLNT_CXX_LANG=<< parameters.cxx-ver >> -D STATIC=<< parameters.static >> -D BENCHMARKS=<< parameters.benchmarks >> -D SAMPLES=<< parameters.samples >> -D COVERAGE=<< parameters.coverage >> -D CMAKE_BUILD_TYPE=<< parameters.build-type >> . + - run: cmake --build . -- -j2 + - run: ./tests/xlnt.test + - when: + condition: + equal: [ "ON", << parameters.samples >> ] + steps: + - run: ./samples/sample-decrypt + - run: ./samples/sample-img2xlsx ./samples/data/penguin.jpg img.xlsx + - run: ./samples/sample-documentation + - when: + condition: + equal: [ "ON", << parameters.benchmarks >> ] + steps: + - run: ./benchmarks/benchmark-styles + - run: ./benchmarks/benchmark-writer + - when: + condition: + equal: [ "ON", << parameters.coverage >> ] + steps: + - run: lcov --directory source/CMakeFiles/xlnt.dir --capture --output-file coverage.info --base-directory ../source --no-external --gcov-tool /usr/bin/gcov-6 + - run: lcov --output-file coverage.info --remove coverage.info source/detail/serialization/miniz.cpp + - run: i=$(dirname $(pwd)) + - run: sed -i "s|$i/||" coverage.info + - run: cd .. + - run: coveralls-lcov build/coverage.info + +workflows: + build: + jobs: + - build: + name: tests + matrix: + parameters: + cxx-ver: + - "11" + - "17" + build-type: + - Release + - Debug + static: + - "ON" + - "OFF" + - build: + name: samples-benchmarks-coverage + cxx-ver: "11" + build-type: Debug + static: "ON" + samples: "ON" + benchmarks: "ON" + coverage: "OFF" diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index 46619412..00000000 --- a/.travis.yml +++ /dev/null @@ -1,231 +0,0 @@ -# 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: "EJKEQkbmNFyXAJYOro7/wSlxSns4O4RAmht5PCBYuOgEqIbB1+QbQjNZd18KyCkqaHQEvww4hVGMdcFsTFnsznjGo6NnDtiYTdhiREtdUd6ohUD0eHTZ15ZL7mW1XR8HWqvv33piDX40UI/dFn1XYLnWunaLZvF5WPa9bzTsloaYHbjxoRw5S4fd0VyqZ2w2zuezCCRUezDcNGOxbVTbB3moSh+hpjrNkw7YxoPNm48CwGRVeRj28XuhDjobfRtPSZMb6Y+EDUnrIZI1mKvB1bkL8QR2ndBtqlG0BWvmEcdDuiQnraJk3iRIAU5T/ycyRqR2UKcW2Fv0iVp5SL9VuqhcvIUxTsYXzuNOZ3hKiWRTj6ndG+gDBsD1K5YwScZksAImwvj/VGEla9Q044W3PbYV2GUE++8mtiZUaxbkaP+uDFUBR5eXqAkte9mainwJ3eaMJ7Tx1KCqkzKO011nUasWfmBWxRUA8vm44SfzwzVfjXToLQZGe4KYzF2cHaXo2YIC48vE/DYs3VnVvnrCjNDO8Cr3m+lfdulhjIZlg+WymQcxuJs7LVzCW7mBPNnrUNOOrGCGP4f/hFxBLk8/eJDznIAzbW27Z1zAHn+MlbADRBzC0Y7cmme4Zu2W7Wy9NTvzNsKabOH/Fe1TfGetEEf6mZ5g7Q3+oZPJ2raLFD8=" - file_glob: true - file: build/*.tar.gz - skip_cleanup: true - overwite: true - on: - repo: tfussell/xlnt - tags: true diff --git a/samples/data/penguin.jpg b/samples/data/penguin.jpg new file mode 100644 index 00000000..7bbaac24 Binary files /dev/null and b/samples/data/penguin.jpg differ