--- /dev/null
+name: CI build
+
+on:
+ push:
+ pull_request:
+ release:
+ types: [published]
+ workflow_dispatch:
+jobs:
+ build:
+ runs-on: ${{ matrix.os }}
+ strategy:
+ fail-fast: true
+ matrix:
+ include:
+ - os: ubuntu-latest
+ compiler: clang
+ env:
+ idx: 1
+ N: Clang-Linux-Minimal-Debug
+ BUILD_TYPE: Debug
+ ENABLE_SSL_DYNAMIC_LOADING: YES
+ OPENSSL_1_0: NO
+ OPENSSL_1_1: NO
+ ENABLE_CXX: NO
+ ENABLE_LUA_SHARED: NO
+ C_STANDARD: auto
+ CXX_STANDARD: auto
+ BUILD_SHARED: NO
+ NO_FILES: YES
+ ENABLE_SSL: NO
+ NO_CGI: YES
+ ENABLE_IPV6: NO
+ ENABLE_WEBSOCKETS: NO
+ ENABLE_SERVER_STATS: NO
+ ENABLE_LUA: NO
+ ENABLE_DUKTAPE: NO
+ NO_CACHING: NO
+ ALLOW_WARNINGS: YES
+
+ - os: ubuntu-latest
+ compiler: clang
+ env:
+ idx: 3
+ N: Clang-Linux-Default-Release
+ BUILD_TYPE: Release
+ ENABLE_SSL_DYNAMIC_LOADING: YES
+ OPENSSL_1_0: YES
+ OPENSSL_1_1: NO
+ ENABLE_CXX: NO
+ ENABLE_LUA_SHARED: NO
+ C_STANDARD: auto
+ CXX_STANDARD: auto
+ BUILD_SHARED: NO
+ NO_FILES: NO
+ ENABLE_SSL: YES
+ NO_CGI: NO
+ ENABLE_IPV6: NO
+ ENABLE_WEBSOCKETS: NO
+ ENABLE_SERVER_STATS: NO
+ ENABLE_LUA: NO
+ ENABLE_DUKTAPE: NO
+ NO_CACHING: NO
+ ALLOW_WARNINGS: YES
+
+ - os: ubuntu-latest
+ compiler: gcc
+ env:
+ idx: 5
+ N: GCC-Linux-Complete-NoLua-Release
+ BUILD_TYPE: Release
+ ENABLE_SSL_DYNAMIC_LOADING: YES
+ OPENSSL_1_0: YES
+ OPENSSL_1_1: NO
+ ENABLE_CXX: NO
+ ENABLE_LUA_SHARED: NO
+ C_STANDARD: auto
+ CXX_STANDARD: auto
+ BUILD_SHARED: NO
+ NO_FILES: NO
+ ENABLE_SSL: YES
+ NO_CGI: NO
+ ENABLE_IPV6: YES
+ ENABLE_WEBSOCKETS: YES
+ ENABLE_SERVER_STATS: YES
+ ENABLE_LUA: NO
+ ENABLE_DUKTAPE: NO
+ NO_CACHING: YES
+ ALLOW_WARNINGS: YES
+ RUN_UNITTEST: 1
+
+ - os: ubuntu-latest
+ compiler: clang
+ env:
+ idx: 6
+ N: CLANG-AnyVersion-Linux-Coverage
+ BUILD_TYPE: Coverage
+ ENABLE_SSL_DYNAMIC_LOADING: YES
+ OPENSSL_1_0: YES
+ OPENSSL_1_1: NO
+ ENABLE_CXX: NO
+ ENABLE_LUA_SHARED: NO
+ C_STANDARD: auto
+ CXX_STANDARD: auto
+ BUILD_SHARED: NO
+ NO_FILES: NO
+ ENABLE_SSL: YES
+ NO_CGI: NO
+ ENABLE_IPV6: YES
+ ENABLE_WEBSOCKETS: YES
+ ENABLE_SERVER_STATS: YES
+ ENABLE_LUA: NO
+ ENABLE_DUKTAPE: NO
+ NO_CACHING: NO
+ ALLOW_WARNINGS: YES
+ RUN_UNITTEST: 1
+
+ - os: ubuntu-latest
+ compiler: clang
+ env:
+ idx: 9
+ N: Clang-Linux-Default-Shared
+ BUILD_TYPE: Debug
+ ENABLE_SSL_DYNAMIC_LOADING: YES
+ OPENSSL_1_0: NO
+ OPENSSL_1_1: YES
+ ENABLE_CXX: NO
+ ENABLE_LUA_SHARED: NO
+ C_STANDARD: auto
+ CXX_STANDARD: auto
+ BUILD_SHARED: YES
+ NO_FILES: NO
+ ENABLE_SSL: YES
+ NO_CGI: NO
+ ENABLE_IPV6: NO
+ ENABLE_WEBSOCKETS: NO
+ ENABLE_SERVER_STATS: NO
+ ENABLE_LUA: NO
+ ENABLE_DUKTAPE: NO
+ NO_CACHING: NO
+ ALLOW_WARNINGS: YES
+
+ - os: ubuntu-latest
+ compiler: gcc
+ env:
+ idx: 15
+ N: GCCLinuxDefault_RelWithDebInfo
+ BUILD_TYPE: RelWithDebInfo
+ ENABLE_SSL_DYNAMIC_LOADING: YES
+ OPENSSL_1_0: YES
+ OPENSSL_1_1: NO
+ ENABLE_CXX: NO
+ ENABLE_LUA_SHARED: NO
+ C_STANDARD: auto
+ CXX_STANDARD: auto
+ BUILD_SHARED: NO
+ NO_FILES: NO
+ ENABLE_SSL: YES
+ NO_CGI: NO
+ ENABLE_IPV6: NO
+ ENABLE_WEBSOCKETS: NO
+ ENABLE_LUA: NO
+ ENABLE_DUKTAPE: NO
+ NO_CACHING: NO
+ ALLOW_WARNINGS: YES
+
+ - os: ubuntu-latest
+ compiler: gcc
+ env:
+ idx: 16
+ N: GCCLinuxDefault_MinSizeRel
+ BUILD_TYPE: MinSizeRel
+ ENABLE_SSL_DYNAMIC_LOADING: YES
+ OPENSSL_1_0: YES
+ OPENSSL_1_1: NO
+ ENABLE_CXX: NO
+ ENABLE_LUA_SHARED: NO
+ C_STANDARD: auto
+ CXX_STANDARD: auto
+ BUILD_SHARED: NO
+ NO_FILES: NO
+ ENABLE_SSL: YES
+ NO_CGI: NO
+ ENABLE_IPV6: NO
+ ENABLE_WEBSOCKETS: NO
+ ENABLE_LUA: NO
+ ENABLE_DUKTAPE: NO
+ NO_CACHING: NO
+ ALLOW_WARNINGS: YES
+
+ - os: ubuntu-latest
+ compiler: gcc
+ env:
+ idx: 17
+ N: GCCLinuxDefault_None
+ BUILD_TYPE: None
+ ENABLE_SSL_DYNAMIC_LOADING: YES
+ OPENSSL_1_0: YES
+ OPENSSL_1_1: NO
+ ENABLE_CXX: NO
+ ENABLE_LUA_SHARED: NO
+ C_STANDARD: auto
+ CXX_STANDARD: auto
+ BUILD_SHARED: NO
+ NO_FILES: NO
+ ENABLE_SSL: YES
+ NO_CGI: NO
+ ENABLE_IPV6: NO
+ ENABLE_WEBSOCKETS: NO
+ ENABLE_LUA: NO
+ ENABLE_DUKTAPE: NO
+ NO_CACHING: NO
+ ALLOW_WARNINGS: YES
+
+ - os: ubuntu-latest
+ compiler: gcc
+ env:
+ idx: 20
+ N: GCCLinuxDefault_xenial
+ BUILD_TYPE: Release
+ ENABLE_SSL_DYNAMIC_LOADING: YES
+ OPENSSL_1_0: YES
+ OPENSSL_1_1: NO
+ ENABLE_CXX: NO
+ ENABLE_LUA_SHARED: NO
+ C_STANDARD: auto
+ CXX_STANDARD: auto
+ BUILD_SHARED: NO
+ NO_FILES: NO
+ ENABLE_SSL: YES
+ NO_CGI: NO
+ ENABLE_IPV6: NO
+ ENABLE_WEBSOCKETS: NO
+ ENABLE_LUA: NO
+ ENABLE_DUKTAPE: NO
+ NO_CACHING: NO
+ ALLOW_WARNINGS: YES
+
+ - os: ubuntu-latest
+ compiler: gcc
+ env:
+ idx: 23
+ N: GCCLinuxDefault_focal
+ BUILD_TYPE: Release
+ ENABLE_SSL_DYNAMIC_LOADING: YES
+ OPENSSL_1_0: NO
+ OPENSSL_1_1: YES
+ ENABLE_CXX: NO
+ ENABLE_LUA_SHARED: NO
+ C_STANDARD: auto
+ CXX_STANDARD: auto
+ BUILD_SHARED: NO
+ NO_FILES: NO
+ ENABLE_SSL: YES
+ NO_CGI: NO
+ ENABLE_IPV6: NO
+ ENABLE_WEBSOCKETS: NO
+ ENABLE_LUA: NO
+ ENABLE_DUKTAPE: NO
+ NO_CACHING: NO
+ ALLOW_WARNINGS: YES
+ RUN_UNITTEST: 1
+
+# Remove Lua build, until someone knows how to fix the CMake files
+ # - os: ubuntu-latest
+ # compiler: clang
+ # env:
+ # idx: 99
+ # N: Clang-Linux-Complete-WithLua-Debug
+ # BUILD_TYPE: Debug
+ # ENABLE_SSL_DYNAMIC_LOADING: YES
+ # OPENSSL_1_0: NO
+ # OPENSSL_1_1: YES
+ # ENABLE_CXX: NO
+ # C_STANDARD: auto
+ # CXX_STANDARD: auto
+ # BUILD_SHARED: NO
+ # NO_FILES: NO
+ # ENABLE_SSL: YES
+ # NO_CGI: NO
+ # ENABLE_IPV6: YES
+ # ENABLE_WEBSOCKETS: YES
+ # ENABLE_SERVER_STATS: YES
+ # ENABLE_LUA: YES
+ # ENABLE_LUA_SHARED: YES
+ # ENABLE_DUKTAPE: NO
+ # NO_CACHING: YES
+ # ALLOW_WARNINGS: YES
+
+
+ steps:
+ - name: Checkout code
+ uses: actions/checkout@v4.1.7
+
+ - name: Install clang on Linux
+ if: matrix.compiler == 'clang' && matrix.os == 'ubuntu-latest'
+ run: |
+ sudo apt-get install -y clang
+ sudo update-alternatives --install /usr/bin/cc cc /usr/bin/clang 100
+ sudo update-alternatives --install /usr/bin/c++ c++ /usr/bin/clang++ 100
+
+ - name: Build
+ run: |
+ cmake -S . -B CMakeFiles\
+ -DCMAKE_BUILD_TYPE=${{ matrix.env.BUILD_TYPE }}\
+ -DBUILD_SHARED_LIBS=${{ matrix.env.BUILD_SHARED }}\
+ -DCIVETWEB_THIRD_PARTY_DIR=../src/third-party\
+ -DCIVETWEB_ENABLE_THIRD_PARTY_OUTPUT=YES\
+ -DCIVETWEB_ENABLE_SSL=${{ matrix.env.ENABLE_SSL }}\
+ -DCIVETWEB_DISABLE_CGI=${{ matrix.env.NO_CGI }}\
+ -DCIVETWEB_SERVE_NO_FILES=${{ matrix.env.NO_FILES }}\
+ -DCIVETWEB_ENABLE_SSL_DYNAMIC_LOADING=${{ matrix.env.ENABLE_SSL_DYNAMIC_LOADING }}\
+ -DCIVETWEB_SSL_OPENSSL_API_1_0=${{ matrix.env.OPENSSL_1_0 }}\
+ -DCIVETWEB_SSL_OPENSSL_API_1_1=${{ matrix.env.OPENSSL_1_1 }}\
+ -DCIVETWEB_SSL_OPENSSL_API_3_0=${{ matrix.env.OPENSSL_3_0 }}\
+ -DCIVETWEB_ENABLE_WEBSOCKETS=${{ matrix.env.ENABLE_WEBSOCKETS }}\
+ -DCIVETWEB_ENABLE_CXX=${{ matrix.env.ENABLE_CXX }}\
+ -DCIVETWEB_ENABLE_SERVER_STATS=${{ matrix.env.ENABLE_SERVER_STATS }}\
+ -DCIVETWEB_ENABLE_LUA=${{ matrix.env.ENABLE_LUA }}\
+ -DCIVETWEB_ENABLE_LUA_SHARED=${{ matrix.env.ENABLE_LUA_SHARED }}\
+ -DCIVETWEB_ENABLE_DUKTAPE=${{ matrix.env.ENABLE_DUKTAPE }}\
+ -DCIVETWEB_DISABLE_CACHING=${{ matrix.env.NO_CACHING }}\
+ -DCIVETWEB_C_STANDARD=${{ matrix.env.C_STANDARD }}\
+ -DCIVETWEB_CXX_STANDARD=${{ matrix.env.CXX_STANDARD }}\
+ -DCIVETWEB_ALLOW_WARNINGS=${{ matrix.env.ALLOW_WARNINGS }}\
+ -DCIVETWEB_ENABLE_IPV6=${{ matrix.env.ENABLE_IPV6 }}\
+ ${{ env.ADDITIONAL_CMAKE_ARGS }}
+ cmake --build CMakeFiles -- -j $(nproc)
+
+ - name: Verify
+ run: |
+ ./CMakeFiles/src/civetweb -I
\ No newline at end of file