cibuild.yml 19 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539
  1. name: CI build
  2. on:
  3. push:
  4. pull_request:
  5. release:
  6. types: [published]
  7. workflow_dispatch:
  8. jobs:
  9. build-and-test:
  10. runs-on: ${{ matrix.os }}
  11. name: ${{ matrix.env.NAME }}
  12. strategy:
  13. fail-fast: true
  14. matrix:
  15. include:
  16. - os: ubuntu-latest
  17. compiler: clang
  18. env:
  19. NAME: Clang-Linux-Minimal-Debug
  20. BUILD_TYPE: Debug
  21. ENABLE_SSL_DYNAMIC_LOADING: YES
  22. OPENSSL_1_0: NO
  23. OPENSSL_1_1: NO
  24. ENABLE_CXX: NO
  25. ENABLE_LUA_SHARED: NO
  26. C_STANDARD: auto
  27. CXX_STANDARD: auto
  28. BUILD_SHARED: NO
  29. NO_FILES: YES
  30. ENABLE_SSL: NO
  31. NO_CGI: YES
  32. ENABLE_IPV6: NO
  33. ENABLE_WEBSOCKETS: NO
  34. ENABLE_SERVER_STATS: NO
  35. ENABLE_LUA: NO
  36. ENABLE_DUKTAPE: NO
  37. NO_CACHING: NO
  38. ALLOW_WARNINGS: YES
  39. RUN_UNITTEST: 1
  40. - os: ubuntu-latest
  41. compiler: clang
  42. env:
  43. NAME: Clang-Linux-Default-Release
  44. BUILD_TYPE: Release
  45. ENABLE_SSL_DYNAMIC_LOADING: YES
  46. OPENSSL_1_0: NO
  47. OPENSSL_1_1: YES
  48. ENABLE_CXX: NO
  49. ENABLE_LUA_SHARED: NO
  50. C_STANDARD: auto
  51. CXX_STANDARD: auto
  52. BUILD_SHARED: NO
  53. NO_FILES: NO
  54. ENABLE_SSL: YES
  55. NO_CGI: NO
  56. ENABLE_IPV6: NO
  57. ENABLE_WEBSOCKETS: NO
  58. ENABLE_SERVER_STATS: NO
  59. ENABLE_LUA: NO
  60. ENABLE_DUKTAPE: NO
  61. NO_CACHING: NO
  62. ALLOW_WARNINGS: YES
  63. RUN_UNITTEST: 1
  64. - os: ubuntu-latest
  65. compiler: gcc
  66. env:
  67. NAME: GCC-Linux-Complete-NoLua-Release
  68. BUILD_TYPE: Release
  69. ENABLE_SSL_DYNAMIC_LOADING: YES
  70. OPENSSL_1_0: NO
  71. OPENSSL_1_1: YES
  72. ENABLE_CXX: NO
  73. ENABLE_LUA_SHARED: NO
  74. C_STANDARD: auto
  75. CXX_STANDARD: auto
  76. BUILD_SHARED: NO
  77. NO_FILES: NO
  78. ENABLE_SSL: YES
  79. NO_CGI: NO
  80. ENABLE_IPV6: YES
  81. ENABLE_WEBSOCKETS: YES
  82. ENABLE_SERVER_STATS: YES
  83. ENABLE_LUA: NO
  84. ENABLE_DUKTAPE: NO
  85. NO_CACHING: YES
  86. ALLOW_WARNINGS: YES
  87. RUN_UNITTEST: 1
  88. - os: ubuntu-latest
  89. compiler: clang
  90. env:
  91. NAME: CLANG-AnyVersion-Linux-Coverage
  92. BUILD_TYPE: Coverage
  93. ENABLE_SSL_DYNAMIC_LOADING: YES
  94. OPENSSL_1_0: NO
  95. OPENSSL_1_1: YES
  96. ENABLE_CXX: NO
  97. ENABLE_LUA_SHARED: NO
  98. C_STANDARD: auto
  99. CXX_STANDARD: auto
  100. BUILD_SHARED: NO
  101. NO_FILES: NO
  102. ENABLE_SSL: YES
  103. NO_CGI: NO
  104. ENABLE_IPV6: YES
  105. ENABLE_WEBSOCKETS: YES
  106. ENABLE_SERVER_STATS: YES
  107. ENABLE_LUA: NO
  108. ENABLE_DUKTAPE: NO
  109. NO_CACHING: NO
  110. ALLOW_WARNINGS: YES
  111. RUN_UNITTEST: 1
  112. - os: ubuntu-latest
  113. compiler: clang
  114. env:
  115. NAME: Clang-Linux-Default-Shared
  116. BUILD_TYPE: Debug
  117. ENABLE_SSL_DYNAMIC_LOADING: YES
  118. OPENSSL_1_0: NO
  119. OPENSSL_1_1: YES
  120. ENABLE_CXX: NO
  121. ENABLE_LUA_SHARED: NO
  122. C_STANDARD: auto
  123. CXX_STANDARD: auto
  124. BUILD_SHARED: YES
  125. NO_FILES: NO
  126. ENABLE_SSL: YES
  127. NO_CGI: NO
  128. ENABLE_IPV6: NO
  129. ENABLE_WEBSOCKETS: NO
  130. ENABLE_SERVER_STATS: NO
  131. ENABLE_LUA: NO
  132. ENABLE_DUKTAPE: NO
  133. NO_CACHING: NO
  134. ALLOW_WARNINGS: YES
  135. RUN_UNITTEST: 1
  136. - os: ubuntu-latest
  137. compiler: gcc
  138. env:
  139. NAME: GCCLinuxDefault_RelWithDebInfo
  140. BUILD_TYPE: RelWithDebInfo
  141. ENABLE_SSL_DYNAMIC_LOADING: YES
  142. OPENSSL_1_0: NO
  143. OPENSSL_1_1: YES
  144. ENABLE_CXX: NO
  145. ENABLE_LUA_SHARED: NO
  146. C_STANDARD: auto
  147. CXX_STANDARD: auto
  148. BUILD_SHARED: NO
  149. NO_FILES: NO
  150. ENABLE_SSL: YES
  151. NO_CGI: NO
  152. ENABLE_IPV6: NO
  153. ENABLE_WEBSOCKETS: NO
  154. ENABLE_LUA: NO
  155. ENABLE_DUKTAPE: NO
  156. NO_CACHING: NO
  157. ALLOW_WARNINGS: YES
  158. RUN_UNITTEST: 1
  159. - os: ubuntu-latest
  160. compiler: gcc
  161. env:
  162. NAME: GCCLinuxDefault_MinSizeRel
  163. BUILD_TYPE: MinSizeRel
  164. ENABLE_SSL_DYNAMIC_LOADING: YES
  165. OPENSSL_1_0: NO
  166. OPENSSL_1_1: YES
  167. ENABLE_CXX: NO
  168. ENABLE_LUA_SHARED: NO
  169. C_STANDARD: auto
  170. CXX_STANDARD: auto
  171. BUILD_SHARED: NO
  172. NO_FILES: NO
  173. ENABLE_SSL: YES
  174. NO_CGI: NO
  175. ENABLE_IPV6: NO
  176. ENABLE_WEBSOCKETS: NO
  177. ENABLE_LUA: NO
  178. ENABLE_DUKTAPE: NO
  179. NO_CACHING: NO
  180. ALLOW_WARNINGS: YES
  181. RUN_UNITTEST: 1
  182. - os: ubuntu-latest
  183. compiler: gcc
  184. env:
  185. NAME: GCCLinuxDefault_None
  186. BUILD_TYPE: None
  187. ENABLE_SSL_DYNAMIC_LOADING: YES
  188. OPENSSL_1_0: NO
  189. OPENSSL_1_1: YES
  190. ENABLE_CXX: NO
  191. ENABLE_LUA_SHARED: NO
  192. C_STANDARD: auto
  193. CXX_STANDARD: auto
  194. BUILD_SHARED: NO
  195. NO_FILES: NO
  196. ENABLE_SSL: YES
  197. NO_CGI: NO
  198. ENABLE_IPV6: NO
  199. ENABLE_WEBSOCKETS: NO
  200. ENABLE_LUA: NO
  201. ENABLE_DUKTAPE: NO
  202. NO_CACHING: NO
  203. ALLOW_WARNINGS: YES
  204. RUN_UNITTEST: 1
  205. - os: ubuntu-latest
  206. compiler: gcc
  207. env:
  208. NAME: GCCLinuxDefault_xenial
  209. BUILD_TYPE: Release
  210. ENABLE_SSL_DYNAMIC_LOADING: YES
  211. OPENSSL_1_0: NO
  212. OPENSSL_1_1: YES
  213. ENABLE_CXX: NO
  214. ENABLE_LUA_SHARED: NO
  215. C_STANDARD: auto
  216. CXX_STANDARD: auto
  217. BUILD_SHARED: NO
  218. NO_FILES: NO
  219. ENABLE_SSL: YES
  220. NO_CGI: NO
  221. ENABLE_IPV6: NO
  222. ENABLE_WEBSOCKETS: NO
  223. ENABLE_LUA: NO
  224. ENABLE_DUKTAPE: NO
  225. NO_CACHING: NO
  226. ALLOW_WARNINGS: YES
  227. RUN_UNITTEST: 1
  228. - os: ubuntu-latest
  229. compiler: gcc
  230. env:
  231. NAME: GCCLinuxDefault
  232. BUILD_TYPE: Release
  233. ENABLE_SSL_DYNAMIC_LOADING: YES
  234. OPENSSL_1_0: NO
  235. OPENSSL_1_1: YES
  236. ENABLE_CXX: NO
  237. ENABLE_LUA_SHARED: NO
  238. C_STANDARD: auto
  239. CXX_STANDARD: auto
  240. BUILD_SHARED: NO
  241. NO_FILES: NO
  242. ENABLE_SSL: YES
  243. NO_CGI: NO
  244. ENABLE_IPV6: NO
  245. ENABLE_WEBSOCKETS: NO
  246. ENABLE_LUA: NO
  247. ENABLE_DUKTAPE: NO
  248. NO_CACHING: NO
  249. ALLOW_WARNINGS: YES
  250. RUN_UNITTEST: 1
  251. - os: ubuntu-latest
  252. compiler: gcc
  253. env:
  254. NAME: GCCLinuxDefault_OpenSSL_3_0
  255. BUILD_TYPE: Release
  256. ENABLE_SSL_DYNAMIC_LOADING: YES
  257. OPENSSL_1_0: NO
  258. OPENSSL_1_1: NO
  259. OpenSSL_3_0: YES
  260. ENABLE_CXX: NO
  261. ENABLE_LUA_SHARED: NO
  262. C_STANDARD: auto
  263. CXX_STANDARD: auto
  264. BUILD_SHARED: NO
  265. NO_FILES: NO
  266. ENABLE_SSL: YES
  267. NO_CGI: NO
  268. ENABLE_IPV6: NO
  269. ENABLE_WEBSOCKETS: NO
  270. ENABLE_LUA: NO
  271. ENABLE_DUKTAPE: NO
  272. NO_CACHING: NO
  273. ALLOW_WARNINGS: YES
  274. RUN_UNITTEST: 1
  275. # Disable Lua build, until someone knows how to fix the CMake files
  276. # see https://github.com/civetweb/civetweb/issues/543
  277. # - os: ubuntu-lastest
  278. # compiler: clang
  279. # env:
  280. # NAME: Clang-Linux-Complete-WithLua-Debug
  281. # BUILD_TYPE: Debug
  282. # ENABLE_SSL_DYNAMIC_LOADING: YES
  283. # OPENSSL_1_0: NO
  284. # OPENSSL_1_1: YES
  285. # ENABLE_CXX: NO
  286. # C_STANDARD: auto
  287. # CXX_STANDARD: auto
  288. # BUILD_SHARED: NO
  289. # NO_FILES: NO
  290. # ENABLE_SSL: YES
  291. # NO_CGI: NO
  292. # ENABLE_IPV6: YES
  293. # ENABLE_WEBSOCKETS: YES
  294. # ENABLE_SERVER_STATS: YES
  295. # ENABLE_LUA: YES
  296. # ENABLE_LUA_SHARED: YES
  297. # ENABLE_DUKTAPE: NO
  298. # NO_CACHING: YES
  299. # ALLOW_WARNINGS: YES
  300. # RUN_UNITTEST: 1
  301. - os: macos-latest
  302. compiler: clang
  303. env:
  304. NAME: Clang-OSX-Complete-NoLua-Release-OpenSSL_1_1_NoDynLoad
  305. BUILD_TYPE: Release
  306. ENABLE_SSL_DYNAMIC_LOADING: NO
  307. OPENSSL_1_0: NO
  308. OPENSSL_1_1: YES
  309. ENABLE_CXX: NO
  310. ENABLE_LUA_SHARED: NO
  311. C_STANDARD: auto
  312. CXX_STANDARD: auto
  313. BUILD_SHARED: NO
  314. NO_FILES: NO
  315. ENABLE_SSL: YES
  316. NO_CGI: NO
  317. ENABLE_IPV6: YES
  318. ENABLE_WEBSOCKETS: YES
  319. ENABLE_SERVER_STATS: YES
  320. ENABLE_LUA: NO
  321. ENABLE_DUKTAPE: NO
  322. NO_CACHING: YES
  323. ALLOW_WARNINGS: YES
  324. RUN_UNITTEST: 1
  325. - os: macos-latest
  326. compiler: clang
  327. env:
  328. NAME: OSX-Package_OpenSSL_1_1
  329. BUILD_TYPE: Release
  330. ENABLE_SSL_DYNAMIC_LOADING: YES
  331. OPENSSL_1_0: NO
  332. OPENSSL_1_1: YES
  333. ENABLE_CXX: NO
  334. ENABLE_LUA_SHARED: NO
  335. C_STANDARD: auto
  336. CXX_STANDARD: auto
  337. BUILD_SHARED: NO
  338. NO_FILES: NO
  339. ENABLE_SSL: YES
  340. NO_CGI: NO
  341. ENABLE_IPV6: YES
  342. ENABLE_WEBSOCKETS: YES
  343. ENABLE_SERVER_STATS: NO
  344. ENABLE_LUA: NO
  345. ENABLE_DUKTAPE: NO
  346. NO_CACHING: NO
  347. ALLOW_WARNINGS: YES
  348. MACOSX_PACKAGE: 1
  349. RUN_UNITTEST: 1
  350. - os: macos-latest
  351. compiler: clang
  352. env:
  353. NAME: OSX-Package_OpenSSL_3_0
  354. BUILD_TYPE: Release
  355. ENABLE_SSL_DYNAMIC_LOADING: YES
  356. OPENSSL_1_0: NO
  357. OPENSSL_1_1: NO
  358. OPENSSL_3_0: YES
  359. ENABLE_CXX: NO
  360. ENABLE_LUA_SHARED: NO
  361. C_STANDARD: auto
  362. CXX_STANDARD: auto
  363. BUILD_SHARED: NO
  364. NO_FILES: NO
  365. ENABLE_SSL: YES
  366. NO_CGI: NO
  367. ENABLE_IPV6: YES
  368. ENABLE_WEBSOCKETS: YES
  369. ENABLE_SERVER_STATS: NO
  370. ENABLE_LUA: NO
  371. ENABLE_DUKTAPE: NO
  372. NO_CACHING: NO
  373. ALLOW_WARNINGS: YES
  374. MACOSX_PACKAGE: 1
  375. RUN_UNITTEST: 1
  376. steps:
  377. - name: Checkout code
  378. uses: actions/checkout@v4.1.7
  379. - name: Export number of CPUs
  380. run: |
  381. if [ "$RUNNER_OS" == "Linux" ]; then
  382. echo "cores=$(nproc)" >> $GITHUB_ENV
  383. fi
  384. if [ "$RUNNER_OS" == "macOS" ]; then
  385. echo "cores=$(sysctl -n hw.logicalcpu)" >> $GITHUB_ENV
  386. fi
  387. - name: Install clang on Linux
  388. if: matrix.compiler == 'clang' && startsWith(matrix.os,'ubuntu')
  389. run: |
  390. sudo apt-get install --no-install-recommends -y clang
  391. sudo update-alternatives --install /usr/bin/cc cc /usr/bin/clang 100
  392. sudo update-alternatives --install /usr/bin/c++ c++ /usr/bin/clang++ 100
  393. - name: Set up OpenSSL 1.1 on modern MacOS
  394. # OpenSSL 1.1 is installed by default, so we just need to set the paths
  395. if: startsWith(matrix.os,'macos') && matrix.env.OPENSSL_1_1 == 'YES'
  396. run: |
  397. OPENSSL_ROOT_DIR=$(brew --prefix openssl@1.1)
  398. LDFLAGS=-L${OPENSSL_ROOT_DIR}/lib
  399. CFLAGS=-I${OPENSSL_ROOT_DIR}/include
  400. ADDITIONAL_CMAKE_ARGS="-DCMAKE_SHARED_LINKER_FLAGS=${LDFLAGS} -DMAKE_C_FLAGS=${CFLAGS}"
  401. PKG_CONFIG_PATH=${OPENSSL_ROOT_DIR}/lib/pkgconfig
  402. DYLD_LIBRARY_PATH=${OPENSSL_ROOT_DIR}/lib
  403. echo "LDFLAGS=${LDFLAGS}" >> $GITHUB_ENV
  404. echo "CFLAGS=${CFLAGS}" >> $GITHUB_ENV
  405. echo "${OPENSSL_ROOT_DIR}/bin" >> $GITHUB_PATH
  406. echo "ADDITIONAL_CMAKE_ARGS=${ADDITIONAL_CMAKE_ARGS}" >> $GITHUB_ENV
  407. echo "PKG_CONFIG_PATH=${PKG_CONFIG_PATH}" >> $GITHUB_ENV
  408. echo "DYLD_LIBRARY_PATH=${DYLD_LIBRARY_PATH}" >> $GITHUB_ENV
  409. - name: Install OpenSSL 3.0 on modern MacOS
  410. # OpenSSL 1.1 is installed by default, so we need to install 3.0 manually
  411. if: startsWith(matrix.os,'macos') && matrix.env.OPENSSL_3_0 == 'YES'
  412. run: |
  413. brew install openssl@3.0
  414. OPENSSL_ROOT_DIR=$(brew --prefix openssl@3.0)
  415. LDFLAGS=-L${OPENSSL_ROOT_DIR}/lib
  416. CFLAGS=-I${OPENSSL_ROOT_DIR}/include
  417. ADDITIONAL_CMAKE_ARGS="-DCMAKE_SHARED_LINKER_FLAGS=${LDFLAGS} -DMAKE_C_FLAGS=${CFLAGS}"
  418. PKG_CONFIG_PATH=${OPENSSL_ROOT_DIR}/lib/pkgconfig
  419. DYLD_LIBRARY_PATH=${OPENSSL_ROOT_DIR}/lib
  420. echo "LDFLAGS=${LDFLAGS}" >> $GITHUB_ENV
  421. echo "CFLAGS=${CFLAGS}" >> $GITHUB_ENV
  422. echo "${OPENSSL_ROOT_DIR}/bin" >> $GITHUB_PATH
  423. echo "ADDITIONAL_CMAKE_ARGS=${ADDITIONAL_CMAKE_ARGS}" >> $GITHUB_ENV
  424. echo "PKG_CONFIG_PATH=${PKG_CONFIG_PATH}" >> $GITHUB_ENV
  425. echo "DYLD_LIBRARY_PATH=${DYLD_LIBRARY_PATH}" >> $GITHUB_ENV
  426. - name: Install OpenSSL 1.1 on modern Linux
  427. # Needed for recent versions of Linux as they ship with OpenSSL 3.0 by default
  428. if: startsWith(matrix.os,'ubuntu') && matrix.env.OPENSSL_1_1 == 'YES'
  429. run: |
  430. curl -O -L https://github.com/openssl/openssl/releases/download/OpenSSL_1_1_1w/openssl-1.1.1w.tar.gz
  431. tar -xzf openssl-1.1.1w.tar.gz
  432. cd openssl-1.1.1w
  433. ./config --prefix=/usr/local/ssl1.1 --openssldir=/usr/local/ssl1.1 shared
  434. make depend
  435. make -j ${{ env.cores }}
  436. sudo make install_sw -j ${{ env.cores }}
  437. sudo ldconfig
  438. OPENSSL_ROOT_DIR=/usr/local/ssl1.1
  439. LDFLAGS=-L${OPENSSL_ROOT_DIR}/lib
  440. CFLAGS=-I${OPENSSL_ROOT_DIR}/include
  441. ADDITIONAL_CMAKE_ARGS="-DCMAKE_SHARED_LINKER_FLAGS=${LDFLAGS} -DMAKE_C_FLAGS=${CFLAGS}"
  442. PKG_CONFIG_PATH=${OPENSSL_ROOT_DIR}/lib/pkgconfig
  443. echo "LDFLAGS=${LDFLAGS}" >> $GITHUB_ENV
  444. echo "CFLAGS=${CFLAGS}" >> $GITHUB_ENV
  445. echo "${OPENSSL_ROOT_DIR}/bin" >> $GITHUB_PATH
  446. echo "ADDITIONAL_CMAKE_ARGS=${ADDITIONAL_CMAKE_ARGS}" >> $GITHUB_ENV
  447. echo "PKG_CONFIG_PATH=${PKG_CONFIG_PATH}" >> $GITHUB_ENV
  448. echo "LD_LIBRARY_PATH=${OPENSSL_ROOT_DIR}/lib" >> $GITHUB_ENV
  449. - name: Print tool version information
  450. run: |
  451. openssl version
  452. cc --version
  453. cmake --version
  454. clang --version
  455. - name: Run CMake
  456. run: |
  457. cmake -S . -B output\
  458. -DCMAKE_BUILD_TYPE=${{ matrix.env.BUILD_TYPE }}\
  459. -DBUILD_SHARED_LIBS=${{ matrix.env.BUILD_SHARED }}\
  460. -DCIVETWEB_THIRD_PARTY_DIR=../src/third-party\
  461. -DCIVETWEB_ENABLE_THIRD_PARTY_OUTPUT=YES\
  462. -DCIVETWEB_ENABLE_SSL=${{ matrix.env.ENABLE_SSL }}\
  463. -DCIVETWEB_DISABLE_CGI=${{ matrix.env.NO_CGI }}\
  464. -DCIVETWEB_SERVE_NO_FILES=${{ matrix.env.NO_FILES }}\
  465. -DCIVETWEB_ENABLE_SSL_DYNAMIC_LOADING=${{ matrix.env.ENABLE_SSL_DYNAMIC_LOADING }}\
  466. -DCIVETWEB_SSL_OPENSSL_API_1_0=${{ matrix.env.OPENSSL_1_0 }}\
  467. -DCIVETWEB_SSL_OPENSSL_API_1_1=${{ matrix.env.OPENSSL_1_1 }}\
  468. -DCIVETWEB_SSL_OPENSSL_API_3_0=${{ matrix.env.OPENSSL_3_0 }}\
  469. -DCIVETWEB_ENABLE_WEBSOCKETS=${{ matrix.env.ENABLE_WEBSOCKETS }}\
  470. -DCIVETWEB_ENABLE_CXX=${{ matrix.env.ENABLE_CXX }}\
  471. -DCIVETWEB_ENABLE_SERVER_STATS=${{ matrix.env.ENABLE_SERVER_STATS }}\
  472. -DCIVETWEB_ENABLE_LUA=${{ matrix.env.ENABLE_LUA }}\
  473. -DCIVETWEB_ENABLE_LUA_SHARED=${{ matrix.env.ENABLE_LUA_SHARED }}\
  474. -DCIVETWEB_ENABLE_DUKTAPE=${{ matrix.env.ENABLE_DUKTAPE }}\
  475. -DCIVETWEB_DISABLE_CACHING=${{ matrix.env.NO_CACHING }}\
  476. -DCIVETWEB_C_STANDARD=${{ matrix.env.C_STANDARD }}\
  477. -DCIVETWEB_CXX_STANDARD=${{ matrix.env.CXX_STANDARD }}\
  478. -DCIVETWEB_ALLOW_WARNINGS=${{ matrix.env.ALLOW_WARNINGS }}\
  479. -DCIVETWEB_ENABLE_IPV6=${{ matrix.env.ENABLE_IPV6 }}\
  480. ${{ env.ADDITIONAL_CMAKE_ARGS }}
  481. - name: Build MacOS Package
  482. if: matrix.env.MACOSX_PACKAGE == 1
  483. run: |
  484. make -f Makefile.osx package -j ${{ env.cores }}
  485. - name: Build executable
  486. run: |
  487. cmake --build output -- -j ${{ env.cores }}
  488. - name: Check executable
  489. run: |
  490. ./output/src/civetweb -I
  491. - name: Run unit tests
  492. if: matrix.env.RUN_UNITTEST == 1
  493. run: |
  494. # kill processes that are using port 8084, which is used in the unit tests
  495. # Currently, this affects linux only, where 'mono' is using this port
  496. pid_8084=$(sudo lsof -t -i:8084 || true;)
  497. if [[ -n ${pid_8084} ]]; then
  498. echo "Killing process using port 8084: ${pid_8084}"
  499. sudo kill -9 ${pid_8084}
  500. fi
  501. # Run unit tests
  502. gcc unittest/cgi_test.c -o output/cgi_test.cgi
  503. cd output
  504. CTEST_OUTPUT_ON_FAILURE=1 CK_FORK=yes make all test -j ${{ env.cores }}