cibuild.yml 18 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530
  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: Install clang on Linux
  380. if: matrix.compiler == 'clang' && startsWith(matrix.os,'ubuntu')
  381. run: |
  382. sudo apt-get install --no-install-recommends -y clang
  383. sudo update-alternatives --install /usr/bin/cc cc /usr/bin/clang 100
  384. sudo update-alternatives --install /usr/bin/c++ c++ /usr/bin/clang++ 100
  385. - name: Set up OpenSSL 1.1 on modern MacOS
  386. # OpenSSL 1.1 is installed by default, so we just need to set the paths
  387. if: startsWith(matrix.os,'macos') && matrix.env.OPENSSL_1_1 == 'YES'
  388. run: |
  389. OPENSSL_ROOT_DIR=$(brew --prefix openssl@1.1)
  390. LDFLAGS=-L${OPENSSL_ROOT_DIR}/lib
  391. CFLAGS=-I${OPENSSL_ROOT_DIR}/include
  392. ADDITIONAL_CMAKE_ARGS="-DCMAKE_SHARED_LINKER_FLAGS=${LDFLAGS} -DMAKE_C_FLAGS=${CFLAGS}"
  393. PKG_CONFIG_PATH=${OPENSSL_ROOT_DIR}/lib/pkgconfig
  394. DYLD_LIBRARY_PATH=${OPENSSL_ROOT_DIR}/lib
  395. echo "LDFLAGS=${LDFLAGS}" >> $GITHUB_ENV
  396. echo "CFLAGS=${CFLAGS}" >> $GITHUB_ENV
  397. echo "${OPENSSL_ROOT_DIR}/bin" >> $GITHUB_PATH
  398. echo "ADDITIONAL_CMAKE_ARGS=${ADDITIONAL_CMAKE_ARGS}" >> $GITHUB_ENV
  399. echo "PKG_CONFIG_PATH=${PKG_CONFIG_PATH}" >> $GITHUB_ENV
  400. echo "DYLD_LIBRARY_PATH=${DYLD_LIBRARY_PATH}" >> $GITHUB_ENV
  401. - name: Install OpenSSL 3.0 on modern MacOS
  402. # OpenSSL 1.1 is installed by default, so we need to install 3.0 manually
  403. if: startsWith(matrix.os,'macos') && matrix.env.OPENSSL_3_0 == 'YES'
  404. run: |
  405. brew install openssl@3.0
  406. OPENSSL_ROOT_DIR=$(brew --prefix openssl@3.0)
  407. LDFLAGS=-L${OPENSSL_ROOT_DIR}/lib
  408. CFLAGS=-I${OPENSSL_ROOT_DIR}/include
  409. ADDITIONAL_CMAKE_ARGS="-DCMAKE_SHARED_LINKER_FLAGS=${LDFLAGS} -DMAKE_C_FLAGS=${CFLAGS}"
  410. PKG_CONFIG_PATH=${OPENSSL_ROOT_DIR}/lib/pkgconfig
  411. DYLD_LIBRARY_PATH=${OPENSSL_ROOT_DIR}/lib
  412. echo "LDFLAGS=${LDFLAGS}" >> $GITHUB_ENV
  413. echo "CFLAGS=${CFLAGS}" >> $GITHUB_ENV
  414. echo "${OPENSSL_ROOT_DIR}/bin" >> $GITHUB_PATH
  415. echo "ADDITIONAL_CMAKE_ARGS=${ADDITIONAL_CMAKE_ARGS}" >> $GITHUB_ENV
  416. echo "PKG_CONFIG_PATH=${PKG_CONFIG_PATH}" >> $GITHUB_ENV
  417. echo "DYLD_LIBRARY_PATH=${DYLD_LIBRARY_PATH}" >> $GITHUB_ENV
  418. - name: Install OpenSSL 1.1 on modern Linux
  419. # Needed for recent versions of Linux as they ship with OpenSSL 3.0 by default
  420. if: startsWith(matrix.os,'ubuntu') && matrix.env.OPENSSL_1_1 == 'YES'
  421. run: |
  422. curl -O -L https://github.com/openssl/openssl/releases/download/OpenSSL_1_1_1w/openssl-1.1.1w.tar.gz
  423. tar -xzf openssl-1.1.1w.tar.gz
  424. cd openssl-1.1.1w
  425. ./config --prefix=/usr/local/ssl1.1 --openssldir=/usr/local/ssl1.1 shared
  426. make depend
  427. make -j $(nproc)
  428. sudo make install_sw -j $(nproc)
  429. sudo ldconfig
  430. OPENSSL_ROOT_DIR=/usr/local/ssl1.1
  431. LDFLAGS=-L${OPENSSL_ROOT_DIR}/lib
  432. CFLAGS=-I${OPENSSL_ROOT_DIR}/include
  433. ADDITIONAL_CMAKE_ARGS="-DCMAKE_SHARED_LINKER_FLAGS=${LDFLAGS} -DMAKE_C_FLAGS=${CFLAGS}"
  434. PKG_CONFIG_PATH=${OPENSSL_ROOT_DIR}/lib/pkgconfig
  435. echo "LDFLAGS=${LDFLAGS}" >> $GITHUB_ENV
  436. echo "CFLAGS=${CFLAGS}" >> $GITHUB_ENV
  437. echo "${OPENSSL_ROOT_DIR}/bin" >> $GITHUB_PATH
  438. echo "ADDITIONAL_CMAKE_ARGS=${ADDITIONAL_CMAKE_ARGS}" >> $GITHUB_ENV
  439. echo "PKG_CONFIG_PATH=${PKG_CONFIG_PATH}" >> $GITHUB_ENV
  440. echo "LD_LIBRARY_PATH=${OPENSSL_ROOT_DIR}/lib" >> $GITHUB_ENV
  441. - name: Print tool version information
  442. run: |
  443. openssl version
  444. cc --version
  445. cmake --version
  446. clang --version
  447. - name: Run CMake
  448. run: |
  449. cmake -S . -B output\
  450. -DCMAKE_BUILD_TYPE=${{ matrix.env.BUILD_TYPE }}\
  451. -DBUILD_SHARED_LIBS=${{ matrix.env.BUILD_SHARED }}\
  452. -DCIVETWEB_THIRD_PARTY_DIR=../src/third-party\
  453. -DCIVETWEB_ENABLE_THIRD_PARTY_OUTPUT=YES\
  454. -DCIVETWEB_ENABLE_SSL=${{ matrix.env.ENABLE_SSL }}\
  455. -DCIVETWEB_DISABLE_CGI=${{ matrix.env.NO_CGI }}\
  456. -DCIVETWEB_SERVE_NO_FILES=${{ matrix.env.NO_FILES }}\
  457. -DCIVETWEB_ENABLE_SSL_DYNAMIC_LOADING=${{ matrix.env.ENABLE_SSL_DYNAMIC_LOADING }}\
  458. -DCIVETWEB_SSL_OPENSSL_API_1_0=${{ matrix.env.OPENSSL_1_0 }}\
  459. -DCIVETWEB_SSL_OPENSSL_API_1_1=${{ matrix.env.OPENSSL_1_1 }}\
  460. -DCIVETWEB_SSL_OPENSSL_API_3_0=${{ matrix.env.OPENSSL_3_0 }}\
  461. -DCIVETWEB_ENABLE_WEBSOCKETS=${{ matrix.env.ENABLE_WEBSOCKETS }}\
  462. -DCIVETWEB_ENABLE_CXX=${{ matrix.env.ENABLE_CXX }}\
  463. -DCIVETWEB_ENABLE_SERVER_STATS=${{ matrix.env.ENABLE_SERVER_STATS }}\
  464. -DCIVETWEB_ENABLE_LUA=${{ matrix.env.ENABLE_LUA }}\
  465. -DCIVETWEB_ENABLE_LUA_SHARED=${{ matrix.env.ENABLE_LUA_SHARED }}\
  466. -DCIVETWEB_ENABLE_DUKTAPE=${{ matrix.env.ENABLE_DUKTAPE }}\
  467. -DCIVETWEB_DISABLE_CACHING=${{ matrix.env.NO_CACHING }}\
  468. -DCIVETWEB_C_STANDARD=${{ matrix.env.C_STANDARD }}\
  469. -DCIVETWEB_CXX_STANDARD=${{ matrix.env.CXX_STANDARD }}\
  470. -DCIVETWEB_ALLOW_WARNINGS=${{ matrix.env.ALLOW_WARNINGS }}\
  471. -DCIVETWEB_ENABLE_IPV6=${{ matrix.env.ENABLE_IPV6 }}\
  472. ${{ env.ADDITIONAL_CMAKE_ARGS }}
  473. - name: Build MacOS Package
  474. if: matrix.env.MACOSX_PACKAGE == 1
  475. run: |
  476. make -f Makefile.osx package -j $(nproc)
  477. - name: Build executable
  478. run: |
  479. cmake --build output -- -j $(nproc)
  480. - name: Check executable
  481. run: |
  482. ./output/src/civetweb -I
  483. - name: Run unit tests
  484. if: matrix.env.RUN_UNITTEST == 1
  485. run: |
  486. # kill processes that are using port 8084, which is used in the unit tests
  487. # Currently, this affects linux only, where 'mono' is using this port
  488. pid_8084=$(sudo lsof -t -i:8084 || true;)
  489. if [[ -n ${pid_8084} ]]; then
  490. echo "Killing process using port 8084: ${pid_8084}"
  491. sudo kill -9 ${pid_8084}
  492. fi
  493. # Run unit tests
  494. gcc unittest/cgi_test.c -o output/cgi_test.cgi
  495. cd output
  496. CTEST_OUTPUT_ON_FAILURE=1 CK_FORK=yes make all test -j $(nproc)