.travis.yml 8.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336
  1. #########################
  2. # project configuration #
  3. #########################
  4. # C++ project
  5. language: cpp
  6. dist: trusty
  7. sudo: required
  8. group: edge
  9. ###################
  10. # global settings #
  11. ###################
  12. env:
  13. global:
  14. # The next declaration is the encrypted COVERITY_SCAN_TOKEN, created
  15. # via the "travis encrypt" command using the project repo's public key
  16. - secure: "m89SSgE+ASLO38rSKx7MTXK3n5NkP9bIx95jwY71YEiuFzib30PDJ/DifKnXxBjvy/AkCGztErQRk/8ZCvq+4HXozU2knEGnL/RUitvlwbhzfh2D4lmS3BvWBGS3N3NewoPBrRmdcvnT0xjOGXxtZaJ3P74TkB9GBnlz/HmKORA="
  17. ################
  18. # build matrix #
  19. ################
  20. matrix:
  21. include:
  22. # Valgrind
  23. - os: linux
  24. compiler: gcc
  25. env:
  26. - COMPILER=g++-4.9
  27. - CMAKE_OPTIONS=-DJSON_Valgrind=ON
  28. addons:
  29. apt:
  30. sources: ['ubuntu-toolchain-r-test']
  31. packages: ['g++-4.9', 'valgrind', 'ninja-build']
  32. # clang sanitizer
  33. - os: linux
  34. compiler: clang
  35. env:
  36. - COMPILER=clang++-7
  37. - CMAKE_OPTIONS=-DJSON_Sanitizer=ON
  38. - UBSAN_OPTIONS=print_stacktrace=1,suppressions=$(pwd)/test/src/UBSAN.supp
  39. addons:
  40. apt:
  41. sources: ['ubuntu-toolchain-r-test', 'llvm-toolchain-trusty-7']
  42. packages: ['g++-6', 'clang-7', 'ninja-build']
  43. before_script:
  44. - export PATH=$PATH:/usr/lib/llvm-7/bin
  45. # cppcheck
  46. - os: linux
  47. compiler: gcc
  48. env:
  49. - COMPILER=g++-4.9
  50. - SPECIAL=cppcheck
  51. addons:
  52. apt:
  53. sources: ['ubuntu-toolchain-r-test']
  54. packages: ['g++-4.9', 'cppcheck', 'ninja-build']
  55. after_success:
  56. - make cppcheck
  57. # no exceptions
  58. - os: linux
  59. compiler: gcc
  60. env:
  61. - COMPILER=g++-4.9
  62. - CMAKE_OPTIONS=-DJSON_NoExceptions=ON
  63. addons:
  64. apt:
  65. sources: ['ubuntu-toolchain-r-test']
  66. packages: ['g++-4.9', 'ninja-build']
  67. # check amalgamation
  68. - os: linux
  69. compiler: gcc
  70. env:
  71. - COMPILER=g++-4.9
  72. - SPECIAL=amalgamation
  73. - MULTIPLE_HEADERS=ON
  74. addons:
  75. apt:
  76. sources: ['ubuntu-toolchain-r-test']
  77. packages: ['g++-4.9', 'astyle', 'ninja-build']
  78. after_success:
  79. - make check-amalgamation
  80. # Coveralls (http://gronlier.fr/blog/2015/01/adding-code-coverage-to-your-c-project/)
  81. - os: linux
  82. compiler: gcc
  83. dist: bionic
  84. addons:
  85. apt:
  86. sources: ['ubuntu-toolchain-r-test']
  87. packages: ['g++-7', 'ninja-build']
  88. before_script:
  89. - pip install --user cpp-coveralls
  90. after_success:
  91. - coveralls --build-root test --include include/nlohmann --gcov 'gcov-7' --gcov-options '\-lp'
  92. env:
  93. - COMPILER=g++-7
  94. - CMAKE_OPTIONS=-DJSON_Coverage=ON
  95. - MULTIPLE_HEADERS=ON
  96. # Coverity (only for branch coverity_scan)
  97. - os: linux
  98. compiler: clang
  99. 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
  100. addons:
  101. apt:
  102. sources: ['ubuntu-toolchain-r-test', 'llvm-toolchain-precise-3.6']
  103. packages: ['g++-6', 'clang-3.6', 'ninja-build']
  104. coverity_scan:
  105. project:
  106. name: "nlohmann/json"
  107. description: "Build submitted via Travis CI"
  108. notification_email: niels.lohmann@gmail.com
  109. build_command_prepend: "mkdir coverity_build ; cd coverity_build ; cmake .. ; cd .."
  110. build_command: "make -C coverity_build"
  111. branch_pattern: coverity_scan
  112. env:
  113. - SPECIAL=coverity
  114. - COMPILER=clang++-3.6
  115. # OSX / Clang
  116. - os: osx
  117. osx_image: xcode9.3
  118. - os: osx
  119. osx_image: xcode9.4
  120. - os: osx
  121. osx_image: xcode10
  122. - os: osx
  123. osx_image: xcode10.1
  124. - os: osx
  125. osx_image: xcode10.2
  126. - os: osx
  127. osx_image: xcode11.2
  128. # Linux / GCC
  129. - os: linux
  130. compiler: gcc
  131. env: COMPILER=g++-4.8
  132. addons:
  133. apt:
  134. sources: ['ubuntu-toolchain-r-test']
  135. packages: ['g++-4.8', 'ninja-build']
  136. - os: linux
  137. compiler: gcc
  138. env: COMPILER=g++-4.9
  139. addons:
  140. apt:
  141. sources: ['ubuntu-toolchain-r-test']
  142. packages: ['g++-4.9', 'ninja-build']
  143. - os: linux
  144. compiler: gcc
  145. env: COMPILER=g++-5
  146. addons:
  147. apt:
  148. sources: ['ubuntu-toolchain-r-test']
  149. packages: ['g++-5', 'ninja-build']
  150. - os: linux
  151. compiler: gcc
  152. env: COMPILER=g++-6
  153. addons:
  154. apt:
  155. sources: ['ubuntu-toolchain-r-test']
  156. packages: ['g++-6', 'ninja-build']
  157. - os: linux
  158. compiler: gcc
  159. env: COMPILER=g++-7
  160. addons:
  161. apt:
  162. sources: ['ubuntu-toolchain-r-test']
  163. packages: ['g++-7', 'ninja-build']
  164. - os: linux
  165. compiler: gcc
  166. env: COMPILER=g++-8
  167. addons:
  168. apt:
  169. sources: ['ubuntu-toolchain-r-test']
  170. packages: ['g++-8', 'ninja-build']
  171. - os: linux
  172. compiler: gcc
  173. env: COMPILER=g++-9
  174. addons:
  175. apt:
  176. sources: ['ubuntu-toolchain-r-test']
  177. packages: ['g++-9', 'ninja-build']
  178. - os: linux
  179. compiler: gcc
  180. env:
  181. - COMPILER=g++-9
  182. - CXXFLAGS=-std=c++2a
  183. addons:
  184. apt:
  185. sources: ['ubuntu-toolchain-r-test']
  186. packages: ['g++-9', 'ninja-build']
  187. # Linux / Clang
  188. - os: linux
  189. compiler: clang
  190. env: COMPILER=clang++-3.5
  191. addons:
  192. apt:
  193. sources: ['ubuntu-toolchain-r-test', 'llvm-toolchain-precise-3.5']
  194. packages: ['g++-6', 'clang-3.5', 'ninja-build']
  195. - os: linux
  196. compiler: clang
  197. env: COMPILER=clang++-3.6
  198. addons:
  199. apt:
  200. sources: ['ubuntu-toolchain-r-test', 'llvm-toolchain-precise-3.6']
  201. packages: ['g++-6', 'clang-3.6', 'ninja-build']
  202. - os: linux
  203. compiler: clang
  204. env: COMPILER=clang++-3.7
  205. addons:
  206. apt:
  207. sources: ['ubuntu-toolchain-r-test', 'llvm-toolchain-precise-3.7']
  208. packages: ['g++-6', 'clang-3.7', 'ninja-build']
  209. - os: linux
  210. compiler: clang
  211. env: COMPILER=clang++-3.8
  212. addons:
  213. apt:
  214. sources: ['ubuntu-toolchain-r-test']
  215. packages: ['g++-6', 'clang-3.8', 'ninja-build']
  216. - os: linux
  217. compiler: clang
  218. env: COMPILER=clang++-3.9
  219. addons:
  220. apt:
  221. sources: ['ubuntu-toolchain-r-test']
  222. packages: ['g++-6', 'clang-3.9', 'ninja-build']
  223. - os: linux
  224. compiler: clang
  225. env: COMPILER=clang++-4.0
  226. addons:
  227. apt:
  228. sources: ['ubuntu-toolchain-r-test', 'llvm-toolchain-trusty-4.0']
  229. packages: ['g++-6', 'clang-4.0', 'ninja-build']
  230. - os: linux
  231. compiler: clang
  232. env: COMPILER=clang++-5.0
  233. addons:
  234. apt:
  235. sources: ['ubuntu-toolchain-r-test', 'llvm-toolchain-trusty-5.0']
  236. packages: ['g++-6', 'clang-5.0', 'ninja-build']
  237. - os: linux
  238. compiler: clang
  239. env: COMPILER=clang++-6.0
  240. addons:
  241. apt:
  242. sources: ['ubuntu-toolchain-r-test', 'llvm-toolchain-trusty-6.0']
  243. packages: ['g++-6', 'clang-6.0', 'ninja-build']
  244. - os: linux
  245. compiler: clang
  246. env: COMPILER=clang++-7
  247. addons:
  248. apt:
  249. sources: ['ubuntu-toolchain-r-test', 'llvm-toolchain-trusty-7']
  250. packages: ['g++-6', 'clang-7', 'ninja-build']
  251. - os: linux
  252. compiler: clang
  253. env:
  254. - COMPILER=clang++-7
  255. - CXXFLAGS=-std=c++1z
  256. addons:
  257. apt:
  258. sources: ['ubuntu-toolchain-r-test', 'llvm-toolchain-trusty-7']
  259. packages: ['g++-6', 'clang-7', 'ninja-build']
  260. ################
  261. # build script #
  262. ################
  263. script:
  264. # get CMake and Ninja (only for systems with brew - macOS)
  265. - |
  266. if [[ (-x $(which brew)) ]]; then
  267. brew update
  268. brew install cmake ninja
  269. brew upgrade cmake
  270. cmake --version
  271. fi
  272. # make sure CXX is correctly set
  273. - if [[ "${COMPILER}" != "" ]]; then export CXX=${COMPILER}; fi
  274. # by default, use the single-header version
  275. - if [[ "${MULTIPLE_HEADERS}" == "" ]]; then export MULTIPLE_HEADERS=OFF; fi
  276. # compile and execute unit tests
  277. - mkdir -p build && cd build
  278. - cmake .. ${CMAKE_OPTIONS} -DJSON_MultipleHeaders=${MULTIPLE_HEADERS} -DJSON_BuildTests=On -GNinja && cmake --build . --config Release
  279. - ctest -C Release --timeout 2700 -V -j
  280. - cd ..
  281. # check if homebrew works (only checks develop branch)
  282. - if [ `which brew` ]; then
  283. brew update ;
  284. brew tap nlohmann/json ;
  285. brew install nlohmann_json --HEAD ;
  286. brew test nlohmann_json ;
  287. fi