2016-08-10 04:18:13 +08:00
|
|
|
#########################
|
|
|
|
# project configuration #
|
|
|
|
#########################
|
|
|
|
|
|
|
|
# C++ project
|
2013-07-04 16:54:16 +08:00
|
|
|
language: cpp
|
|
|
|
|
2016-08-10 05:05:42 +08:00
|
|
|
dist: trusty
|
|
|
|
sudo: required
|
2017-06-20 03:51:24 +08:00
|
|
|
group: edge
|
2016-08-10 04:18:13 +08:00
|
|
|
|
2015-07-25 03:41:07 +08:00
|
|
|
|
2016-08-10 04:18:13 +08:00
|
|
|
################
|
|
|
|
# build matrix #
|
|
|
|
################
|
2016-05-29 18:07:20 +08:00
|
|
|
|
2015-08-22 01:05:47 +08:00
|
|
|
matrix:
|
|
|
|
include:
|
2016-04-30 01:29:02 +08:00
|
|
|
|
2017-08-11 02:37:23 +08:00
|
|
|
# Valgrind
|
|
|
|
- os: linux
|
|
|
|
compiler: gcc
|
|
|
|
env:
|
|
|
|
- COMPILER=g++-4.9
|
2017-08-26 02:12:21 +08:00
|
|
|
- CMAKE_OPTIONS=-DJSON_Valgrind=ON
|
2017-08-11 02:37:23 +08:00
|
|
|
addons:
|
|
|
|
apt:
|
|
|
|
sources: ['ubuntu-toolchain-r-test']
|
2017-08-26 03:01:07 +08:00
|
|
|
packages: ['g++-4.9', 'valgrind', 'ninja-build']
|
2017-08-11 02:37:23 +08:00
|
|
|
|
2017-08-16 02:30:01 +08:00
|
|
|
# clang sanitizer
|
2017-08-11 02:37:23 +08:00
|
|
|
- os: linux
|
2017-08-16 14:11:02 +08:00
|
|
|
compiler: clang
|
2017-08-11 02:37:23 +08:00
|
|
|
env:
|
.travis/cmake: Rework clang sanitizer invocation
- Switch to clang-7
- Adapt PATH so that llvm-symbolizer can be found for useful stacktraces
- Adapt compile flags
"-O0" ensures much faster compile times
"-fno-sanitize-recover=all
-fsanitize-recover=unsigned-integer-overflow" this fails the build on
all issues except unsigned integer overflows. Not failing in this case
is required in combination with the sanitizer suppression file as only
recoverable errors can be suppressed.
The UBSAN suppression file ignores errors from stl_bvector.h (which
holds std::vector<bool>).
Clang reports that error as
SUMMARY: UndefinedBehaviorSanitizer: undefined-behavior /usr/lib/gcc/x86_64-linux-gnu/6.3.0/../../../../include/c++/6.3.0/bits/stl_bvector.h:158:20 in
Start 34: test-deserialization_all
28/88 Test #71: test-testsuites_default .............***Failed 0.32 sec
/usr/lib/gcc/x86_64-linux-gnu/6.3.0/../../../../include/c++/6.3.0/bits/stl_bvector.h:158:20: runtime error: unsigned integer overflow: 0 - 1 cannot be represented in type 'unsigned int'
#0 0x628f72 in std::_Bit_iterator_base::_M_bump_down() /usr/lib/gcc/x86_64-linux-gnu/6.3.0/../../../../include/c++/6.3.0/bits/stl_bvector.h:158:20
#1 0x628d16 in std::_Bit_iterator::operator--() /usr/lib/gcc/x86_64-linux-gnu/6.3.0/../../../../include/c++/6.3.0/bits/stl_bvector.h:251:7
#2 0x634aac in std::vector<bool, std::allocator<bool> >::pop_back() /usr/lib/gcc/x86_64-linux-gnu/6.3.0/../../../../include/c++/6.3.0/bits/stl_bvector.h:1010:7
#3 0x61eff0 in bool nlohmann::detail::parser<nlohmann::basic_json<std::map, std::vector, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool, long, unsigned long, double, std::allocator, nlohmann::adl_serializer> >::sax_parse_internal<nlohmann::detail::json_sax_dom_parser<nlohmann::basic_json<std::map, std::vector, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool, long, unsigned long, double, std::allocator, nlohmann::adl_serializer> > >(nlohmann::detail::json_sax_dom_parser<nlohmann::basic_json<std::map, std::vector, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool, long, unsigned long, double, std::allocator, nlohmann::adl_serializer> >*) /home/firma/devel/json/include/nlohmann/detail/input/parser.hpp:439:28
#4 0x604864 in nlohmann::detail::parser<nlohmann::basic_json<std::map, std::vector, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool, long, unsigned long, double, std::allocator, nlohmann::adl_serializer> >::parse(bool, nlohmann::basic_json<std::map, std::vector, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool, long, unsigned long, double, std::allocator, nlohmann::adl_serializer>&) /home/firma/devel/json/include/nlohmann/detail/input/parser.hpp:116:13
#5 0x5f8079 in nlohmann::operator>>(std::istream&, nlohmann::basic_json<std::map, std::vector, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool, long, unsigned long, double, std::allocator, nlohmann::adl_serializer>&) /home/firma/devel/json/include/nlohmann/json.hpp:6356:42
#6 0x5e1d92 in _DOCTEST_ANON_FUNC_21() /home/firma/devel/json/test/src/unit-testsuites.cpp:343:9
#7 0x7207fe in doctest::Context::run() /home/firma/devel/json/test/thirdparty/doctest/doctest.h:5938:21
#8 0x72681a in main /home/firma/devel/json/test/thirdparty/doctest/doctest.h:6016:71
#9 0x7f75d22362e0 in __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x202e0)
#10 0x4c28b9 in _start (/home/firma/devel/json/build/test/test-testsuites+0x4c28b9)
The pop_back() in parser.hpp
assert(not states.empty());
-> states.pop_back();
triggers the UBSAN report. But the assertion above ensure that we only
call pop_back() on an non-empty vector, therefore this is a STL library
bug and thus must be ignored for us.
2019-08-27 20:22:19 +08:00
|
|
|
- COMPILER=clang++-7
|
2017-08-26 02:12:21 +08:00
|
|
|
- CMAKE_OPTIONS=-DJSON_Sanitizer=ON
|
.travis/cmake: Rework clang sanitizer invocation
- Switch to clang-7
- Adapt PATH so that llvm-symbolizer can be found for useful stacktraces
- Adapt compile flags
"-O0" ensures much faster compile times
"-fno-sanitize-recover=all
-fsanitize-recover=unsigned-integer-overflow" this fails the build on
all issues except unsigned integer overflows. Not failing in this case
is required in combination with the sanitizer suppression file as only
recoverable errors can be suppressed.
The UBSAN suppression file ignores errors from stl_bvector.h (which
holds std::vector<bool>).
Clang reports that error as
SUMMARY: UndefinedBehaviorSanitizer: undefined-behavior /usr/lib/gcc/x86_64-linux-gnu/6.3.0/../../../../include/c++/6.3.0/bits/stl_bvector.h:158:20 in
Start 34: test-deserialization_all
28/88 Test #71: test-testsuites_default .............***Failed 0.32 sec
/usr/lib/gcc/x86_64-linux-gnu/6.3.0/../../../../include/c++/6.3.0/bits/stl_bvector.h:158:20: runtime error: unsigned integer overflow: 0 - 1 cannot be represented in type 'unsigned int'
#0 0x628f72 in std::_Bit_iterator_base::_M_bump_down() /usr/lib/gcc/x86_64-linux-gnu/6.3.0/../../../../include/c++/6.3.0/bits/stl_bvector.h:158:20
#1 0x628d16 in std::_Bit_iterator::operator--() /usr/lib/gcc/x86_64-linux-gnu/6.3.0/../../../../include/c++/6.3.0/bits/stl_bvector.h:251:7
#2 0x634aac in std::vector<bool, std::allocator<bool> >::pop_back() /usr/lib/gcc/x86_64-linux-gnu/6.3.0/../../../../include/c++/6.3.0/bits/stl_bvector.h:1010:7
#3 0x61eff0 in bool nlohmann::detail::parser<nlohmann::basic_json<std::map, std::vector, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool, long, unsigned long, double, std::allocator, nlohmann::adl_serializer> >::sax_parse_internal<nlohmann::detail::json_sax_dom_parser<nlohmann::basic_json<std::map, std::vector, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool, long, unsigned long, double, std::allocator, nlohmann::adl_serializer> > >(nlohmann::detail::json_sax_dom_parser<nlohmann::basic_json<std::map, std::vector, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool, long, unsigned long, double, std::allocator, nlohmann::adl_serializer> >*) /home/firma/devel/json/include/nlohmann/detail/input/parser.hpp:439:28
#4 0x604864 in nlohmann::detail::parser<nlohmann::basic_json<std::map, std::vector, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool, long, unsigned long, double, std::allocator, nlohmann::adl_serializer> >::parse(bool, nlohmann::basic_json<std::map, std::vector, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool, long, unsigned long, double, std::allocator, nlohmann::adl_serializer>&) /home/firma/devel/json/include/nlohmann/detail/input/parser.hpp:116:13
#5 0x5f8079 in nlohmann::operator>>(std::istream&, nlohmann::basic_json<std::map, std::vector, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool, long, unsigned long, double, std::allocator, nlohmann::adl_serializer>&) /home/firma/devel/json/include/nlohmann/json.hpp:6356:42
#6 0x5e1d92 in _DOCTEST_ANON_FUNC_21() /home/firma/devel/json/test/src/unit-testsuites.cpp:343:9
#7 0x7207fe in doctest::Context::run() /home/firma/devel/json/test/thirdparty/doctest/doctest.h:5938:21
#8 0x72681a in main /home/firma/devel/json/test/thirdparty/doctest/doctest.h:6016:71
#9 0x7f75d22362e0 in __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x202e0)
#10 0x4c28b9 in _start (/home/firma/devel/json/build/test/test-testsuites+0x4c28b9)
The pop_back() in parser.hpp
assert(not states.empty());
-> states.pop_back();
triggers the UBSAN report. But the assertion above ensure that we only
call pop_back() on an non-empty vector, therefore this is a STL library
bug and thus must be ignored for us.
2019-08-27 20:22:19 +08:00
|
|
|
- UBSAN_OPTIONS=print_stacktrace=1,suppressions=$(pwd)/test/src/UBSAN.supp
|
2017-08-11 02:37:23 +08:00
|
|
|
addons:
|
|
|
|
apt:
|
.travis/cmake: Rework clang sanitizer invocation
- Switch to clang-7
- Adapt PATH so that llvm-symbolizer can be found for useful stacktraces
- Adapt compile flags
"-O0" ensures much faster compile times
"-fno-sanitize-recover=all
-fsanitize-recover=unsigned-integer-overflow" this fails the build on
all issues except unsigned integer overflows. Not failing in this case
is required in combination with the sanitizer suppression file as only
recoverable errors can be suppressed.
The UBSAN suppression file ignores errors from stl_bvector.h (which
holds std::vector<bool>).
Clang reports that error as
SUMMARY: UndefinedBehaviorSanitizer: undefined-behavior /usr/lib/gcc/x86_64-linux-gnu/6.3.0/../../../../include/c++/6.3.0/bits/stl_bvector.h:158:20 in
Start 34: test-deserialization_all
28/88 Test #71: test-testsuites_default .............***Failed 0.32 sec
/usr/lib/gcc/x86_64-linux-gnu/6.3.0/../../../../include/c++/6.3.0/bits/stl_bvector.h:158:20: runtime error: unsigned integer overflow: 0 - 1 cannot be represented in type 'unsigned int'
#0 0x628f72 in std::_Bit_iterator_base::_M_bump_down() /usr/lib/gcc/x86_64-linux-gnu/6.3.0/../../../../include/c++/6.3.0/bits/stl_bvector.h:158:20
#1 0x628d16 in std::_Bit_iterator::operator--() /usr/lib/gcc/x86_64-linux-gnu/6.3.0/../../../../include/c++/6.3.0/bits/stl_bvector.h:251:7
#2 0x634aac in std::vector<bool, std::allocator<bool> >::pop_back() /usr/lib/gcc/x86_64-linux-gnu/6.3.0/../../../../include/c++/6.3.0/bits/stl_bvector.h:1010:7
#3 0x61eff0 in bool nlohmann::detail::parser<nlohmann::basic_json<std::map, std::vector, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool, long, unsigned long, double, std::allocator, nlohmann::adl_serializer> >::sax_parse_internal<nlohmann::detail::json_sax_dom_parser<nlohmann::basic_json<std::map, std::vector, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool, long, unsigned long, double, std::allocator, nlohmann::adl_serializer> > >(nlohmann::detail::json_sax_dom_parser<nlohmann::basic_json<std::map, std::vector, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool, long, unsigned long, double, std::allocator, nlohmann::adl_serializer> >*) /home/firma/devel/json/include/nlohmann/detail/input/parser.hpp:439:28
#4 0x604864 in nlohmann::detail::parser<nlohmann::basic_json<std::map, std::vector, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool, long, unsigned long, double, std::allocator, nlohmann::adl_serializer> >::parse(bool, nlohmann::basic_json<std::map, std::vector, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool, long, unsigned long, double, std::allocator, nlohmann::adl_serializer>&) /home/firma/devel/json/include/nlohmann/detail/input/parser.hpp:116:13
#5 0x5f8079 in nlohmann::operator>>(std::istream&, nlohmann::basic_json<std::map, std::vector, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool, long, unsigned long, double, std::allocator, nlohmann::adl_serializer>&) /home/firma/devel/json/include/nlohmann/json.hpp:6356:42
#6 0x5e1d92 in _DOCTEST_ANON_FUNC_21() /home/firma/devel/json/test/src/unit-testsuites.cpp:343:9
#7 0x7207fe in doctest::Context::run() /home/firma/devel/json/test/thirdparty/doctest/doctest.h:5938:21
#8 0x72681a in main /home/firma/devel/json/test/thirdparty/doctest/doctest.h:6016:71
#9 0x7f75d22362e0 in __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x202e0)
#10 0x4c28b9 in _start (/home/firma/devel/json/build/test/test-testsuites+0x4c28b9)
The pop_back() in parser.hpp
assert(not states.empty());
-> states.pop_back();
triggers the UBSAN report. But the assertion above ensure that we only
call pop_back() on an non-empty vector, therefore this is a STL library
bug and thus must be ignored for us.
2019-08-27 20:22:19 +08:00
|
|
|
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
|
2017-08-11 02:37:23 +08:00
|
|
|
|
|
|
|
# cppcheck
|
|
|
|
- os: linux
|
|
|
|
compiler: gcc
|
|
|
|
env:
|
|
|
|
- COMPILER=g++-4.9
|
|
|
|
- SPECIAL=cppcheck
|
|
|
|
addons:
|
|
|
|
apt:
|
|
|
|
sources: ['ubuntu-toolchain-r-test']
|
2017-08-26 03:01:07 +08:00
|
|
|
packages: ['g++-4.9', 'cppcheck', 'ninja-build']
|
2017-08-11 02:37:23 +08:00
|
|
|
after_success:
|
|
|
|
- make cppcheck
|
|
|
|
|
|
|
|
# no exceptions
|
|
|
|
- os: linux
|
|
|
|
compiler: gcc
|
|
|
|
env:
|
|
|
|
- COMPILER=g++-4.9
|
2017-08-26 03:29:27 +08:00
|
|
|
- CMAKE_OPTIONS=-DJSON_NoExceptions=ON
|
2017-08-11 02:37:23 +08:00
|
|
|
addons:
|
|
|
|
apt:
|
|
|
|
sources: ['ubuntu-toolchain-r-test']
|
2017-08-26 03:29:27 +08:00
|
|
|
packages: ['g++-4.9', 'ninja-build']
|
2017-08-11 02:37:23 +08:00
|
|
|
|
2018-01-24 01:00:12 +08:00
|
|
|
# check amalgamation
|
|
|
|
- os: linux
|
|
|
|
compiler: gcc
|
|
|
|
env:
|
|
|
|
- COMPILER=g++-4.9
|
|
|
|
- SPECIAL=amalgamation
|
2018-02-11 04:26:15 +08:00
|
|
|
- MULTIPLE_HEADERS=ON
|
2018-01-24 01:00:12 +08:00
|
|
|
addons:
|
|
|
|
apt:
|
|
|
|
sources: ['ubuntu-toolchain-r-test']
|
|
|
|
packages: ['g++-4.9', 'astyle', 'ninja-build']
|
|
|
|
after_success:
|
|
|
|
- make check-amalgamation
|
|
|
|
|
2017-08-11 02:37:23 +08:00
|
|
|
# Coveralls (http://gronlier.fr/blog/2015/01/adding-code-coverage-to-your-c-project/)
|
|
|
|
|
|
|
|
- os: linux
|
|
|
|
compiler: gcc
|
2020-05-11 19:29:40 +08:00
|
|
|
dist: bionic
|
2017-08-11 02:37:23 +08:00
|
|
|
addons:
|
|
|
|
apt:
|
|
|
|
sources: ['ubuntu-toolchain-r-test']
|
2020-05-11 19:40:43 +08:00
|
|
|
packages: ['g++-7', 'ninja-build']
|
2017-08-11 02:37:23 +08:00
|
|
|
before_script:
|
2020-05-11 19:05:53 +08:00
|
|
|
- pip install --user cpp-coveralls
|
2017-08-11 02:37:23 +08:00
|
|
|
after_success:
|
2020-05-11 19:40:43 +08:00
|
|
|
- coveralls --build-root test --include include/nlohmann --gcov 'gcov-7' --gcov-options '\-lp'
|
2017-08-11 02:37:23 +08:00
|
|
|
env:
|
2020-05-11 20:24:38 +08:00
|
|
|
- COMPILER=g++-7
|
2018-02-10 05:27:08 +08:00
|
|
|
- CMAKE_OPTIONS=-DJSON_Coverage=ON
|
2018-02-11 04:26:15 +08:00
|
|
|
- MULTIPLE_HEADERS=ON
|
2020-12-27 00:14:16 +08:00
|
|
|
- BUILD_TYPE=Debug
|
2017-08-11 02:37:23 +08:00
|
|
|
|
|
|
|
# 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:
|
2017-08-11 02:54:59 +08:00
|
|
|
apt:
|
|
|
|
sources: ['ubuntu-toolchain-r-test', 'llvm-toolchain-precise-3.6']
|
2017-08-26 03:01:07 +08:00
|
|
|
packages: ['g++-6', 'clang-3.6', 'ninja-build']
|
2017-08-11 02:37:23 +08:00
|
|
|
coverity_scan:
|
|
|
|
project:
|
|
|
|
name: "nlohmann/json"
|
|
|
|
description: "Build submitted via Travis CI"
|
|
|
|
notification_email: niels.lohmann@gmail.com
|
2017-10-05 13:13:59 +08:00
|
|
|
build_command_prepend: "mkdir coverity_build ; cd coverity_build ; cmake .. ; cd .."
|
|
|
|
build_command: "make -C coverity_build"
|
2017-08-11 02:37:23 +08:00
|
|
|
branch_pattern: coverity_scan
|
|
|
|
env:
|
|
|
|
- SPECIAL=coverity
|
2017-08-11 02:54:59 +08:00
|
|
|
- COMPILER=clang++-3.6
|
2020-07-12 21:33:16 +08:00
|
|
|
# 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="
|
2017-08-11 02:37:23 +08:00
|
|
|
|
|
|
|
# OSX / Clang
|
|
|
|
|
2019-11-04 03:45:21 +08:00
|
|
|
- os: osx
|
|
|
|
osx_image: xcode10.2
|
|
|
|
|
2019-11-22 05:22:06 +08:00
|
|
|
- os: osx
|
|
|
|
osx_image: xcode11.2
|
|
|
|
|
2020-07-12 21:33:16 +08:00
|
|
|
- os: osx
|
|
|
|
osx_image: xcode12
|
|
|
|
|
2020-07-16 17:22:57 +08:00
|
|
|
- os: osx
|
|
|
|
osx_image: xcode12
|
|
|
|
env:
|
|
|
|
- IMPLICIT_CONVERSIONS=OFF
|
|
|
|
|
2017-08-11 02:37:23 +08:00
|
|
|
# Linux / GCC
|
|
|
|
|
|
|
|
- os: linux
|
|
|
|
compiler: gcc
|
2019-11-04 03:45:21 +08:00
|
|
|
env: COMPILER=g++-4.8
|
2018-09-26 00:15:29 +08:00
|
|
|
addons:
|
|
|
|
apt:
|
|
|
|
sources: ['ubuntu-toolchain-r-test']
|
|
|
|
packages: ['g++-4.8', 'ninja-build']
|
|
|
|
|
|
|
|
- os: linux
|
|
|
|
compiler: gcc
|
2019-11-04 03:45:21 +08:00
|
|
|
env: COMPILER=g++-4.9
|
2017-08-11 02:37:23 +08:00
|
|
|
addons:
|
|
|
|
apt:
|
|
|
|
sources: ['ubuntu-toolchain-r-test']
|
2017-08-26 03:01:07 +08:00
|
|
|
packages: ['g++-4.9', 'ninja-build']
|
2017-08-11 02:37:23 +08:00
|
|
|
|
|
|
|
- os: linux
|
|
|
|
compiler: gcc
|
|
|
|
env: COMPILER=g++-5
|
|
|
|
addons:
|
|
|
|
apt:
|
|
|
|
sources: ['ubuntu-toolchain-r-test']
|
2017-08-26 03:01:07 +08:00
|
|
|
packages: ['g++-5', 'ninja-build']
|
2017-08-11 02:37:23 +08:00
|
|
|
|
|
|
|
- os: linux
|
|
|
|
compiler: gcc
|
|
|
|
env: COMPILER=g++-6
|
|
|
|
addons:
|
|
|
|
apt:
|
|
|
|
sources: ['ubuntu-toolchain-r-test']
|
2017-08-26 03:01:07 +08:00
|
|
|
packages: ['g++-6', 'ninja-build']
|
2017-08-11 02:37:23 +08:00
|
|
|
|
|
|
|
- os: linux
|
|
|
|
compiler: gcc
|
|
|
|
env: COMPILER=g++-7
|
|
|
|
addons:
|
|
|
|
apt:
|
|
|
|
sources: ['ubuntu-toolchain-r-test']
|
2017-08-26 03:01:07 +08:00
|
|
|
packages: ['g++-7', 'ninja-build']
|
2017-08-11 02:37:23 +08:00
|
|
|
|
2018-08-01 03:18:33 +08:00
|
|
|
- os: linux
|
|
|
|
compiler: gcc
|
|
|
|
env: COMPILER=g++-8
|
|
|
|
addons:
|
|
|
|
apt:
|
|
|
|
sources: ['ubuntu-toolchain-r-test']
|
|
|
|
packages: ['g++-8', 'ninja-build']
|
|
|
|
|
2019-08-26 16:40:13 +08:00
|
|
|
- os: linux
|
|
|
|
compiler: gcc
|
|
|
|
env: COMPILER=g++-9
|
|
|
|
addons:
|
|
|
|
apt:
|
|
|
|
sources: ['ubuntu-toolchain-r-test']
|
|
|
|
packages: ['g++-9', 'ninja-build']
|
|
|
|
|
2020-07-16 17:22:57 +08:00
|
|
|
- os: linux
|
|
|
|
compiler: gcc
|
|
|
|
env:
|
|
|
|
- COMPILER=g++-9
|
|
|
|
- IMPLICIT_CONVERSIONS=OFF
|
|
|
|
addons:
|
|
|
|
apt:
|
|
|
|
sources: ['ubuntu-toolchain-r-test']
|
|
|
|
packages: ['g++-9', 'ninja-build']
|
|
|
|
|
2017-08-11 02:37:23 +08:00
|
|
|
- os: linux
|
|
|
|
compiler: gcc
|
|
|
|
env:
|
2019-08-26 16:40:13 +08:00
|
|
|
- COMPILER=g++-9
|
2020-12-20 13:18:41 +08:00
|
|
|
- CXX_STANDARD=17
|
2017-08-11 02:37:23 +08:00
|
|
|
addons:
|
|
|
|
apt:
|
|
|
|
sources: ['ubuntu-toolchain-r-test']
|
2019-08-26 16:40:13 +08:00
|
|
|
packages: ['g++-9', 'ninja-build']
|
2017-08-11 02:37:23 +08:00
|
|
|
|
|
|
|
# Linux / Clang
|
|
|
|
|
|
|
|
- os: linux
|
|
|
|
compiler: clang
|
|
|
|
env: COMPILER=clang++-3.5
|
|
|
|
addons:
|
|
|
|
apt:
|
|
|
|
sources: ['ubuntu-toolchain-r-test', 'llvm-toolchain-precise-3.5']
|
2017-08-26 03:01:07 +08:00
|
|
|
packages: ['g++-6', 'clang-3.5', 'ninja-build']
|
2017-08-11 02:37:23 +08:00
|
|
|
|
2017-07-09 04:59:19 +08:00
|
|
|
- os: linux
|
2017-08-11 01:18:45 +08:00
|
|
|
compiler: clang
|
2017-08-11 02:37:23 +08:00
|
|
|
env: COMPILER=clang++-3.6
|
2017-07-09 04:59:19 +08:00
|
|
|
addons:
|
|
|
|
apt:
|
2017-08-11 02:37:23 +08:00
|
|
|
sources: ['ubuntu-toolchain-r-test', 'llvm-toolchain-precise-3.6']
|
2017-08-26 03:01:07 +08:00
|
|
|
packages: ['g++-6', 'clang-3.6', 'ninja-build']
|
2017-08-11 02:37:23 +08:00
|
|
|
|
|
|
|
- os: linux
|
|
|
|
compiler: clang
|
|
|
|
env: COMPILER=clang++-3.7
|
|
|
|
addons:
|
|
|
|
apt:
|
|
|
|
sources: ['ubuntu-toolchain-r-test', 'llvm-toolchain-precise-3.7']
|
2017-08-26 03:01:07 +08:00
|
|
|
packages: ['g++-6', 'clang-3.7', 'ninja-build']
|
2017-08-11 02:37:23 +08:00
|
|
|
|
|
|
|
- os: linux
|
|
|
|
compiler: clang
|
|
|
|
env: COMPILER=clang++-3.8
|
|
|
|
addons:
|
|
|
|
apt:
|
|
|
|
sources: ['ubuntu-toolchain-r-test']
|
2017-08-26 03:01:07 +08:00
|
|
|
packages: ['g++-6', 'clang-3.8', 'ninja-build']
|
2017-08-11 02:37:23 +08:00
|
|
|
|
|
|
|
- os: linux
|
|
|
|
compiler: clang
|
|
|
|
env: COMPILER=clang++-3.9
|
|
|
|
addons:
|
|
|
|
apt:
|
|
|
|
sources: ['ubuntu-toolchain-r-test']
|
2017-08-26 03:01:07 +08:00
|
|
|
packages: ['g++-6', 'clang-3.9', 'ninja-build']
|
2017-08-11 02:37:23 +08:00
|
|
|
|
|
|
|
- os: linux
|
|
|
|
compiler: clang
|
|
|
|
env: COMPILER=clang++-4.0
|
|
|
|
addons:
|
|
|
|
apt:
|
|
|
|
sources: ['ubuntu-toolchain-r-test', 'llvm-toolchain-trusty-4.0']
|
2017-08-26 03:01:07 +08:00
|
|
|
packages: ['g++-6', 'clang-4.0', 'ninja-build']
|
2016-08-10 04:18:13 +08:00
|
|
|
|
2017-08-11 02:54:59 +08:00
|
|
|
- os: linux
|
|
|
|
compiler: clang
|
2017-08-22 02:03:24 +08:00
|
|
|
env: COMPILER=clang++-5.0
|
2017-08-11 02:54:59 +08:00
|
|
|
addons:
|
|
|
|
apt:
|
2017-08-22 02:03:24 +08:00
|
|
|
sources: ['ubuntu-toolchain-r-test', 'llvm-toolchain-trusty-5.0']
|
2017-08-26 03:01:07 +08:00
|
|
|
packages: ['g++-6', 'clang-5.0', 'ninja-build']
|
2017-08-11 02:54:59 +08:00
|
|
|
|
2018-08-02 02:59:58 +08:00
|
|
|
- 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']
|
|
|
|
|
2019-03-11 05:56:14 +08:00
|
|
|
- os: linux
|
|
|
|
compiler: clang
|
2019-03-11 14:44:40 +08:00
|
|
|
env: COMPILER=clang++-7
|
2019-03-11 05:56:14 +08:00
|
|
|
addons:
|
|
|
|
apt:
|
|
|
|
sources: ['ubuntu-toolchain-r-test', 'llvm-toolchain-trusty-7']
|
2019-03-11 14:44:40 +08:00
|
|
|
packages: ['g++-6', 'clang-7', 'ninja-build']
|
2019-03-11 05:56:14 +08:00
|
|
|
|
2017-08-21 23:27:35 +08:00
|
|
|
- os: linux
|
|
|
|
compiler: clang
|
2017-08-22 02:03:24 +08:00
|
|
|
env:
|
2019-03-11 22:19:50 +08:00
|
|
|
- COMPILER=clang++-7
|
2020-12-20 13:18:41 +08:00
|
|
|
- CXX_STANDARD=17
|
2017-08-21 23:27:35 +08:00
|
|
|
addons:
|
|
|
|
apt:
|
2019-03-11 22:19:50 +08:00
|
|
|
sources: ['ubuntu-toolchain-r-test', 'llvm-toolchain-trusty-7']
|
2020-12-21 02:50:28 +08:00
|
|
|
packages: ['g++-7', 'clang-7', 'ninja-build']
|
2017-08-21 23:27:35 +08:00
|
|
|
|
2016-08-10 04:18:13 +08:00
|
|
|
################
|
|
|
|
# build script #
|
|
|
|
################
|
|
|
|
|
2016-08-23 02:54:32 +08:00
|
|
|
script:
|
2017-10-05 13:13:59 +08:00
|
|
|
# get CMake and Ninja (only for systems with brew - macOS)
|
2017-08-16 02:30:01 +08:00
|
|
|
- |
|
2017-08-26 03:01:07 +08:00
|
|
|
if [[ (-x $(which brew)) ]]; then
|
2017-08-16 02:30:01 +08:00
|
|
|
brew update
|
2017-08-26 03:01:07 +08:00
|
|
|
brew install cmake ninja
|
2018-04-03 20:28:07 +08:00
|
|
|
brew upgrade cmake
|
2017-08-16 02:30:01 +08:00
|
|
|
cmake --version
|
|
|
|
fi
|
|
|
|
|
2017-08-11 01:03:35 +08:00
|
|
|
# make sure CXX is correctly set
|
|
|
|
- if [[ "${COMPILER}" != "" ]]; then export CXX=${COMPILER}; fi
|
2018-02-11 04:26:15 +08:00
|
|
|
# by default, use the single-header version
|
|
|
|
- if [[ "${MULTIPLE_HEADERS}" == "" ]]; then export MULTIPLE_HEADERS=OFF; fi
|
2020-07-16 17:22:57 +08:00
|
|
|
# by default, use implicit conversions
|
|
|
|
- if [[ "${IMPLICIT_CONVERSIONS}" == "" ]]; then export IMPLICIT_CONVERSIONS=ON; fi
|
2017-08-11 01:03:35 +08:00
|
|
|
|
2020-12-20 13:18:41 +08:00
|
|
|
# append CXX_STANDARD to CMAKE_OPTIONS if required
|
|
|
|
- CMAKE_OPTIONS+=${CXX_STANDARD:+ -DCMAKE_CXX_STANDARD=$CXX_STANDARD -DCMAKE_CXX_STANDARD_REQUIRED=ON}
|
|
|
|
|
2020-12-27 00:14:16 +08:00
|
|
|
# build configuration (Release by default)
|
|
|
|
- CMAKE_OPTIONS+=" -DCMAKE_BUILD_TYPE=${BUILD_TYPE:-Release}"
|
2020-12-22 21:03:50 +08:00
|
|
|
|
2016-11-27 23:19:26 +08:00
|
|
|
# compile and execute unit tests
|
2017-02-12 22:10:40 +08:00
|
|
|
- mkdir -p build && cd build
|
2020-12-22 21:03:50 +08:00
|
|
|
- cmake .. ${CMAKE_OPTIONS} -DJSON_MultipleHeaders=${MULTIPLE_HEADERS} -DJSON_ImplicitConversions=${IMPLICIT_CONVERSIONS} -DJSON_BuildTests=On -GNinja && cmake --build .
|
|
|
|
- ctest --timeout 2700 -V -j
|
2017-02-12 22:10:40 +08:00
|
|
|
- cd ..
|
2018-02-02 07:20:04 +08:00
|
|
|
|
|
|
|
# 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
|