.travis.yml 8.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339
  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. addons:
  84. apt:
  85. sources: ['ubuntu-toolchain-r-test']
  86. packages: ['g++-4.9', 'ninja-build']
  87. before_script:
  88. - pip install --user cpp-coveralls
  89. after_success:
  90. - coveralls --build-root test --include include/nlohmann --gcov 'gcov-4.9' --gcov-options '\-lp'
  91. env:
  92. - COMPILER=g++-4.9
  93. - CMAKE_OPTIONS=-DJSON_Coverage=ON
  94. - MULTIPLE_HEADERS=ON
  95. # Coverity (only for branch coverity_scan)
  96. - os: linux
  97. compiler: clang
  98. 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
  99. addons:
  100. apt:
  101. sources: ['ubuntu-toolchain-r-test', 'llvm-toolchain-precise-3.6']
  102. packages: ['g++-6', 'clang-3.6', 'ninja-build']
  103. coverity_scan:
  104. project:
  105. name: "nlohmann/json"
  106. description: "Build submitted via Travis CI"
  107. notification_email: niels.lohmann@gmail.com
  108. build_command_prepend: "mkdir coverity_build ; cd coverity_build ; cmake .. ; cd .."
  109. build_command: "make -C coverity_build"
  110. branch_pattern: coverity_scan
  111. env:
  112. - SPECIAL=coverity
  113. - COMPILER=clang++-3.6
  114. # OSX / Clang
  115. - os: osx
  116. osx_image: xcode9.3
  117. - os: osx
  118. osx_image: xcode9.4
  119. - os: osx
  120. osx_image: xcode10
  121. - os: osx
  122. osx_image: xcode10.1
  123. - os: osx
  124. osx_image: xcode10.2
  125. - os: osx
  126. osx_image: xcode11.2
  127. # Linux / GCC
  128. - os: linux
  129. compiler: gcc
  130. env: COMPILER=g++-4.8
  131. addons:
  132. apt:
  133. sources: ['ubuntu-toolchain-r-test']
  134. packages: ['g++-4.8', 'ninja-build']
  135. - os: linux
  136. compiler: gcc
  137. env: COMPILER=g++-4.9
  138. addons:
  139. apt:
  140. sources: ['ubuntu-toolchain-r-test']
  141. packages: ['g++-4.9', 'ninja-build']
  142. - os: linux
  143. compiler: gcc
  144. env: COMPILER=g++-5
  145. addons:
  146. apt:
  147. sources: ['ubuntu-toolchain-r-test']
  148. packages: ['g++-5', 'ninja-build']
  149. - os: linux
  150. compiler: gcc
  151. env: COMPILER=g++-6
  152. addons:
  153. apt:
  154. sources: ['ubuntu-toolchain-r-test']
  155. packages: ['g++-6', 'ninja-build']
  156. - os: linux
  157. compiler: gcc
  158. env: COMPILER=g++-7
  159. addons:
  160. apt:
  161. sources: ['ubuntu-toolchain-r-test']
  162. packages: ['g++-7', 'ninja-build']
  163. - os: linux
  164. compiler: gcc
  165. env: COMPILER=g++-8
  166. addons:
  167. apt:
  168. sources: ['ubuntu-toolchain-r-test']
  169. packages: ['g++-8', 'ninja-build']
  170. - os: linux
  171. compiler: gcc
  172. env: COMPILER=g++-9
  173. addons:
  174. apt:
  175. sources: ['ubuntu-toolchain-r-test']
  176. packages: ['g++-9', 'ninja-build']
  177. - os: linux
  178. compiler: gcc
  179. env:
  180. - COMPILER=g++-9
  181. - CXXFLAGS=-std=c++2a
  182. addons:
  183. apt:
  184. sources: ['ubuntu-toolchain-r-test']
  185. packages: ['g++-9', 'ninja-build']
  186. # Linux / Clang
  187. - os: linux
  188. compiler: clang
  189. env: COMPILER=clang++-3.5
  190. addons:
  191. apt:
  192. sources: ['ubuntu-toolchain-r-test', 'llvm-toolchain-precise-3.5']
  193. packages: ['g++-6', 'clang-3.5', 'ninja-build']
  194. - os: linux
  195. compiler: clang
  196. env: COMPILER=clang++-3.6
  197. addons:
  198. apt:
  199. sources: ['ubuntu-toolchain-r-test', 'llvm-toolchain-precise-3.6']
  200. packages: ['g++-6', 'clang-3.6', 'ninja-build']
  201. - os: linux
  202. compiler: clang
  203. env: COMPILER=clang++-3.7
  204. addons:
  205. apt:
  206. sources: ['ubuntu-toolchain-r-test', 'llvm-toolchain-precise-3.7']
  207. packages: ['g++-6', 'clang-3.7', 'ninja-build']
  208. - os: linux
  209. compiler: clang
  210. env: COMPILER=clang++-3.8
  211. addons:
  212. apt:
  213. sources: ['ubuntu-toolchain-r-test']
  214. packages: ['g++-6', 'clang-3.8', 'ninja-build']
  215. - os: linux
  216. compiler: clang
  217. env: COMPILER=clang++-3.9
  218. addons:
  219. apt:
  220. sources: ['ubuntu-toolchain-r-test']
  221. packages: ['g++-6', 'clang-3.9', 'ninja-build']
  222. - os: linux
  223. compiler: clang
  224. env: COMPILER=clang++-4.0
  225. addons:
  226. apt:
  227. sources: ['ubuntu-toolchain-r-test', 'llvm-toolchain-trusty-4.0']
  228. packages: ['g++-6', 'clang-4.0', 'ninja-build']
  229. - os: linux
  230. compiler: clang
  231. env: COMPILER=clang++-5.0
  232. addons:
  233. apt:
  234. sources: ['ubuntu-toolchain-r-test', 'llvm-toolchain-trusty-5.0']
  235. packages: ['g++-6', 'clang-5.0', 'ninja-build']
  236. - os: linux
  237. compiler: clang
  238. env: COMPILER=clang++-6.0
  239. addons:
  240. apt:
  241. sources: ['ubuntu-toolchain-r-test', 'llvm-toolchain-trusty-6.0']
  242. packages: ['g++-6', 'clang-6.0', 'ninja-build']
  243. - os: linux
  244. compiler: clang
  245. env: COMPILER=clang++-7
  246. addons:
  247. apt:
  248. sources: ['ubuntu-toolchain-r-test', 'llvm-toolchain-trusty-7']
  249. packages: ['g++-6', 'clang-7', 'ninja-build']
  250. - os: linux
  251. compiler: clang
  252. env:
  253. - COMPILER=clang++-7
  254. - CXXFLAGS=-std=c++1z
  255. addons:
  256. apt:
  257. sources: ['ubuntu-toolchain-r-test', 'llvm-toolchain-trusty-7']
  258. packages: ['g++-6', 'clang-7', 'ninja-build']
  259. ################
  260. # build script #
  261. ################
  262. script:
  263. # get CMake and Ninja (only for systems with brew - macOS)
  264. - |
  265. if [[ (-x $(which brew)) ]]; then
  266. brew update
  267. brew install cmake ninja
  268. brew upgrade cmake
  269. cmake --version
  270. fi
  271. # make sure CXX is correctly set
  272. - if [[ "${COMPILER}" != "" ]]; then export CXX=${COMPILER}; fi
  273. # by default, use the single-header version
  274. - if [[ "${MULTIPLE_HEADERS}" == "" ]]; then export MULTIPLE_HEADERS=OFF; fi
  275. # show OS/compiler version
  276. - uname -a
  277. - $CXX --version
  278. # compile and execute unit tests
  279. - mkdir -p build && cd build
  280. - cmake .. ${CMAKE_OPTIONS} -DJSON_MultipleHeaders=${MULTIPLE_HEADERS} -GNinja && cmake --build . --config Release
  281. - ctest -C Release --timeout 2700 -V -j
  282. - cd ..
  283. # check if homebrew works (only checks develop branch)
  284. - if [ `which brew` ]; then
  285. brew update ;
  286. brew tap nlohmann/json ;
  287. brew install nlohmann_json --HEAD ;
  288. brew test nlohmann_json ;
  289. fi