######################### # project configuration # ######################### # C++ project language: cpp dist: trusty sudo: required group: edge ################ # 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 - BUILD_TYPE=Debug # 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 # 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=" # OSX / Clang - os: osx osx_image: xcode10.2 - os: osx osx_image: xcode11.2 - os: osx osx_image: xcode12 - os: osx osx_image: xcode12 env: - IMPLICIT_CONVERSIONS=OFF # 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 - IMPLICIT_CONVERSIONS=OFF addons: apt: sources: ['ubuntu-toolchain-r-test'] packages: ['g++-9', 'ninja-build'] - os: linux compiler: gcc env: - COMPILER=g++-9 - CXX_STANDARD=17 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 - CXX_STANDARD=17 addons: apt: sources: ['ubuntu-toolchain-r-test', 'llvm-toolchain-trusty-7'] packages: ['g++-7', '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 # by default, use implicit conversions - if [[ "${IMPLICIT_CONVERSIONS}" == "" ]]; then export IMPLICIT_CONVERSIONS=ON; fi # append CXX_STANDARD to CMAKE_OPTIONS if required - CMAKE_OPTIONS+=${CXX_STANDARD:+ -DCMAKE_CXX_STANDARD=$CXX_STANDARD -DCMAKE_CXX_STANDARD_REQUIRED=ON} # build configuration (Release by default) - CMAKE_OPTIONS+=" -DCMAKE_BUILD_TYPE=${BUILD_TYPE:-Release}" # compile and execute unit tests - mkdir -p build && cd build - cmake .. ${CMAKE_OPTIONS} -DJSON_MultipleHeaders=${MULTIPLE_HEADERS} -DJSON_ImplicitConversions=${IMPLICIT_CONVERSIONS} -DJSON_BuildTests=On -GNinja && cmake --build . - ctest --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