123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336 |
- #########################
- # project configuration #
- #########################
- # C++ project
- language: cpp
- dist: trusty
- sudo: required
- group: edge
- ###################
- # global settings #
- ###################
- env:
- global:
- # The next declaration is the encrypted COVERITY_SCAN_TOKEN, created
- # via the "travis encrypt" command using the project repo's public key
- - secure: "m89SSgE+ASLO38rSKx7MTXK3n5NkP9bIx95jwY71YEiuFzib30PDJ/DifKnXxBjvy/AkCGztErQRk/8ZCvq+4HXozU2knEGnL/RUitvlwbhzfh2D4lmS3BvWBGS3N3NewoPBrRmdcvnT0xjOGXxtZaJ3P74TkB9GBnlz/HmKORA="
- ################
- # build matrix #
- ################
- matrix:
- include:
- # Valgrind
- - os: linux
- compiler: gcc
- env:
- - COMPILER=g++-4.9
- - CMAKE_OPTIONS=-DJSON_Valgrind=ON
- addons:
- apt:
- sources: ['ubuntu-toolchain-r-test']
- packages: ['g++-4.9', 'valgrind', 'ninja-build']
- # clang sanitizer
- - os: linux
- compiler: clang
- env:
- - COMPILER=clang++-7
- - CMAKE_OPTIONS=-DJSON_Sanitizer=ON
- - UBSAN_OPTIONS=print_stacktrace=1,suppressions=$(pwd)/test/src/UBSAN.supp
- addons:
- apt:
- sources: ['ubuntu-toolchain-r-test', 'llvm-toolchain-trusty-7']
- packages: ['g++-6', 'clang-7', 'ninja-build']
- before_script:
- - export PATH=$PATH:/usr/lib/llvm-7/bin
- # cppcheck
- - os: linux
- compiler: gcc
- env:
- - COMPILER=g++-4.9
- - SPECIAL=cppcheck
- addons:
- apt:
- sources: ['ubuntu-toolchain-r-test']
- packages: ['g++-4.9', 'cppcheck', 'ninja-build']
- after_success:
- - make cppcheck
- # no exceptions
- - os: linux
- compiler: gcc
- env:
- - COMPILER=g++-4.9
- - CMAKE_OPTIONS=-DJSON_NoExceptions=ON
- addons:
- apt:
- sources: ['ubuntu-toolchain-r-test']
- packages: ['g++-4.9', 'ninja-build']
- # check amalgamation
- - os: linux
- compiler: gcc
- env:
- - COMPILER=g++-4.9
- - SPECIAL=amalgamation
- - MULTIPLE_HEADERS=ON
- addons:
- apt:
- sources: ['ubuntu-toolchain-r-test']
- packages: ['g++-4.9', 'astyle', 'ninja-build']
- after_success:
- - make check-amalgamation
- # Coveralls (http://gronlier.fr/blog/2015/01/adding-code-coverage-to-your-c-project/)
- - os: linux
- compiler: gcc
- dist: bionic
- addons:
- apt:
- sources: ['ubuntu-toolchain-r-test']
- packages: ['g++-7', 'ninja-build']
- before_script:
- - pip install --user cpp-coveralls
- after_success:
- - coveralls --build-root test --include include/nlohmann --gcov 'gcov-7' --gcov-options '\-lp'
- env:
- - COMPILER=g++-7
- - CMAKE_OPTIONS=-DJSON_Coverage=ON
- - MULTIPLE_HEADERS=ON
- # Coverity (only for branch coverity_scan)
- - os: linux
- compiler: clang
- before_install: echo -n | openssl s_client -connect scan.coverity.com:443 | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' | sudo tee -a /etc/ssl/certs/ca-certificates.crt
- addons:
- apt:
- sources: ['ubuntu-toolchain-r-test', 'llvm-toolchain-precise-3.6']
- packages: ['g++-6', 'clang-3.6', 'ninja-build']
- coverity_scan:
- project:
- name: "nlohmann/json"
- description: "Build submitted via Travis CI"
- notification_email: niels.lohmann@gmail.com
- build_command_prepend: "mkdir coverity_build ; cd coverity_build ; cmake .. ; cd .."
- build_command: "make -C coverity_build"
- branch_pattern: coverity_scan
- env:
- - SPECIAL=coverity
- - COMPILER=clang++-3.6
- # OSX / Clang
- - os: osx
- osx_image: xcode9.3
- - os: osx
- osx_image: xcode9.4
- - os: osx
- osx_image: xcode10
- - os: osx
- osx_image: xcode10.1
- - os: osx
- osx_image: xcode10.2
- - os: osx
- osx_image: xcode11.2
- # Linux / GCC
- - os: linux
- compiler: gcc
- env: COMPILER=g++-4.8
- addons:
- apt:
- sources: ['ubuntu-toolchain-r-test']
- packages: ['g++-4.8', 'ninja-build']
- - os: linux
- compiler: gcc
- env: COMPILER=g++-4.9
- addons:
- apt:
- sources: ['ubuntu-toolchain-r-test']
- packages: ['g++-4.9', 'ninja-build']
- - os: linux
- compiler: gcc
- env: COMPILER=g++-5
- addons:
- apt:
- sources: ['ubuntu-toolchain-r-test']
- packages: ['g++-5', 'ninja-build']
- - os: linux
- compiler: gcc
- env: COMPILER=g++-6
- addons:
- apt:
- sources: ['ubuntu-toolchain-r-test']
- packages: ['g++-6', 'ninja-build']
- - os: linux
- compiler: gcc
- env: COMPILER=g++-7
- addons:
- apt:
- sources: ['ubuntu-toolchain-r-test']
- packages: ['g++-7', 'ninja-build']
- - os: linux
- compiler: gcc
- env: COMPILER=g++-8
- addons:
- apt:
- sources: ['ubuntu-toolchain-r-test']
- packages: ['g++-8', 'ninja-build']
- - os: linux
- compiler: gcc
- env: COMPILER=g++-9
- addons:
- apt:
- sources: ['ubuntu-toolchain-r-test']
- packages: ['g++-9', 'ninja-build']
- - os: linux
- compiler: gcc
- env:
- - COMPILER=g++-9
- - CXXFLAGS=-std=c++2a
- addons:
- apt:
- sources: ['ubuntu-toolchain-r-test']
- packages: ['g++-9', 'ninja-build']
- # Linux / Clang
- - os: linux
- compiler: clang
- env: COMPILER=clang++-3.5
- addons:
- apt:
- sources: ['ubuntu-toolchain-r-test', 'llvm-toolchain-precise-3.5']
- packages: ['g++-6', 'clang-3.5', 'ninja-build']
- - os: linux
- compiler: clang
- env: COMPILER=clang++-3.6
- addons:
- apt:
- sources: ['ubuntu-toolchain-r-test', 'llvm-toolchain-precise-3.6']
- packages: ['g++-6', 'clang-3.6', 'ninja-build']
- - os: linux
- compiler: clang
- env: COMPILER=clang++-3.7
- addons:
- apt:
- sources: ['ubuntu-toolchain-r-test', 'llvm-toolchain-precise-3.7']
- packages: ['g++-6', 'clang-3.7', 'ninja-build']
- - os: linux
- compiler: clang
- env: COMPILER=clang++-3.8
- addons:
- apt:
- sources: ['ubuntu-toolchain-r-test']
- packages: ['g++-6', 'clang-3.8', 'ninja-build']
- - os: linux
- compiler: clang
- env: COMPILER=clang++-3.9
- addons:
- apt:
- sources: ['ubuntu-toolchain-r-test']
- packages: ['g++-6', 'clang-3.9', 'ninja-build']
- - os: linux
- compiler: clang
- env: COMPILER=clang++-4.0
- addons:
- apt:
- sources: ['ubuntu-toolchain-r-test', 'llvm-toolchain-trusty-4.0']
- packages: ['g++-6', 'clang-4.0', 'ninja-build']
- - os: linux
- compiler: clang
- env: COMPILER=clang++-5.0
- addons:
- apt:
- sources: ['ubuntu-toolchain-r-test', 'llvm-toolchain-trusty-5.0']
- packages: ['g++-6', 'clang-5.0', 'ninja-build']
- - os: linux
- compiler: clang
- env: COMPILER=clang++-6.0
- addons:
- apt:
- sources: ['ubuntu-toolchain-r-test', 'llvm-toolchain-trusty-6.0']
- packages: ['g++-6', 'clang-6.0', 'ninja-build']
- - os: linux
- compiler: clang
- env: COMPILER=clang++-7
- addons:
- apt:
- sources: ['ubuntu-toolchain-r-test', 'llvm-toolchain-trusty-7']
- packages: ['g++-6', 'clang-7', 'ninja-build']
- - os: linux
- compiler: clang
- env:
- - COMPILER=clang++-7
- - CXXFLAGS=-std=c++1z
- addons:
- apt:
- sources: ['ubuntu-toolchain-r-test', 'llvm-toolchain-trusty-7']
- packages: ['g++-6', 'clang-7', 'ninja-build']
- ################
- # build script #
- ################
- script:
- # get CMake and Ninja (only for systems with brew - macOS)
- - |
- if [[ (-x $(which brew)) ]]; then
- brew update
- brew install cmake ninja
- brew upgrade cmake
- cmake --version
- fi
- # make sure CXX is correctly set
- - if [[ "${COMPILER}" != "" ]]; then export CXX=${COMPILER}; fi
- # by default, use the single-header version
- - if [[ "${MULTIPLE_HEADERS}" == "" ]]; then export MULTIPLE_HEADERS=OFF; fi
- # compile and execute unit tests
- - mkdir -p build && cd build
- - cmake .. ${CMAKE_OPTIONS} -DJSON_MultipleHeaders=${MULTIPLE_HEADERS} -DJSON_BuildTests=On -GNinja && cmake --build . --config Release
- - ctest -C Release --timeout 2700 -V -j
- - cd ..
- # check if homebrew works (only checks develop branch)
- - if [ `which brew` ]; then
- brew update ;
- brew tap nlohmann/json ;
- brew install nlohmann_json --HEAD ;
- brew test nlohmann_json ;
- fi
|