|
@@ -0,0 +1,522 @@
|
|
|
+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
|
|
|
+ RUN_UNITTEST: 1
|
|
|
+
|
|
|
+ - 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
|
|
|
+ RUN_UNITTEST: 1
|
|
|
+
|
|
|
+ - 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
|
|
|
+ RUN_UNITTEST: 1
|
|
|
+
|
|
|
+ - 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
|
|
|
+ RUN_UNITTEST: 1
|
|
|
+
|
|
|
+ - 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
|
|
|
+ RUN_UNITTEST: 1
|
|
|
+
|
|
|
+ - 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
|
|
|
+ RUN_UNITTEST: 1
|
|
|
+
|
|
|
+ - 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
|
|
|
+ RUN_UNITTEST: 1
|
|
|
+
|
|
|
+ - 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
|
|
|
+
|
|
|
+ # Disable Lua build, until someone knows how to fix the CMake files
|
|
|
+ # see https://github.com/civetweb/civetweb/issues/543
|
|
|
+ # - os: ubuntu-lastest
|
|
|
+ # 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
|
|
|
+ # RUN_UNITTEST: 1
|
|
|
+
|
|
|
+ - os: macos-latest
|
|
|
+ compiler: clang
|
|
|
+ env:
|
|
|
+ idx: 8
|
|
|
+ N: Clang-OSX-Complete-NoLua-Release-OpenSSL_1_1_NoDynLoad
|
|
|
+ BUILD_TYPE: Release
|
|
|
+ ENABLE_SSL_DYNAMIC_LOADING: NO
|
|
|
+ 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: YES
|
|
|
+ ENABLE_WEBSOCKETS: YES
|
|
|
+ ENABLE_SERVER_STATS: YES
|
|
|
+ ENABLE_LUA: NO
|
|
|
+ ENABLE_DUKTAPE: NO
|
|
|
+ NO_CACHING: YES
|
|
|
+ ALLOW_WARNINGS: YES
|
|
|
+ RUN_UNITTEST: 1
|
|
|
+
|
|
|
+ # mac-os 13 is the last version of MacOS runner using x86_64 architecture
|
|
|
+ # mac-os 14 and later are using arm64 architecture
|
|
|
+ # but OpenSSL 1.0 can't compile on arm64, so we set it fixed to mac-os 13
|
|
|
+ - os: macos-13
|
|
|
+ compiler: clang
|
|
|
+ env:
|
|
|
+ idx: 11
|
|
|
+ N: OSX-Package
|
|
|
+ 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: NO
|
|
|
+ ENABLE_LUA: NO
|
|
|
+ ENABLE_DUKTAPE: NO
|
|
|
+ NO_CACHING: NO
|
|
|
+ ALLOW_WARNINGS: YES
|
|
|
+ MACOSX_PACKAGE: 1
|
|
|
+ RUN_UNITTEST: 1
|
|
|
+
|
|
|
+
|
|
|
+ steps:
|
|
|
+ - name: Checkout code
|
|
|
+ uses: actions/checkout@v4.1.7
|
|
|
+
|
|
|
+ - name: Install clang on Linux
|
|
|
+ if: matrix.compiler == 'clang' && startsWith(matrix.os,'ubuntu')
|
|
|
+ run: |
|
|
|
+ sudo apt-get install --no-install-recommends -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: Install OpenSSL 1.0 on modern MacOS
|
|
|
+ # Needed for recent versions of MacOS as they ship with OpenSSL 1.1 by default
|
|
|
+ if: startsWith(matrix.os,'macos') && matrix.env.OPENSSL_1_0 == 'YES'
|
|
|
+ run: |
|
|
|
+ curl -O -L https://openssl.org/source/old/1.0.2/openssl-1.0.2u.tar.gz
|
|
|
+ tar -xzf openssl-1.0.2u.tar.gz
|
|
|
+ cd openssl-1.0.2u
|
|
|
+ ./Configure --prefix=/usr/local/ssl1.0 --openssldir=/usr/local/ssl1.0 shared shared darwin64-x86_64-cc
|
|
|
+ make depend
|
|
|
+ make -j $(nproc)
|
|
|
+ sudo make install_sw -j $(nproc)
|
|
|
+
|
|
|
+ OPENSSL_ROOT_DIR=/usr/local/ssl1.0
|
|
|
+ LDFLAGS=-L${OPENSSL_ROOT_DIR}/lib
|
|
|
+ CFLAGS=-I${OPENSSL_ROOT_DIR}/include
|
|
|
+ ADDITIONAL_CMAKE_ARGS="-DCMAKE_SHARED_LINKER_FLAGS=${LDFLAGS} -DMAKE_C_FLAGS=${CFLAGS}"
|
|
|
+ PKG_CONFIG_PATH=${OPENSSL_ROOT_DIR}/lib/pkgconfig
|
|
|
+
|
|
|
+ echo "LDFLAGS=${LDFLAGS}" >> $GITHUB_ENV
|
|
|
+ echo "CFLAGS=${CFLAGS}" >> $GITHUB_ENV
|
|
|
+ echo "${OPENSSL_ROOT_DIR}/bin" >> $GITHUB_PATH
|
|
|
+ echo "ADDITIONAL_CMAKE_ARGS=${ADDITIONAL_CMAKE_ARGS}" >> $GITHUB_ENV
|
|
|
+ echo "PKG_CONFIG_PATH=${PKG_CONFIG_PATH}" >> $GITHUB_ENV
|
|
|
+ echo "DYLD_LIBRARY_PATH=${OPENSSL_ROOT_DIR}/lib" >> $GITHUB_ENV
|
|
|
+
|
|
|
+ - name: Set up OpenSSL 1.1 on modern MacOS
|
|
|
+ # OpenSSL 1.1 is installed by default, so we just need to set the paths
|
|
|
+ if: startsWith(matrix.os,'macos') && matrix.env.OPENSSL_1_1 == 'YES'
|
|
|
+ run: |
|
|
|
+ OPENSSL_ROOT_DIR=$(brew --prefix openssl@1.1)
|
|
|
+ LDFLAGS=-L${OPENSSL_ROOT_DIR}/lib
|
|
|
+ CFLAGS=-I${OPENSSL_ROOT_DIR}/include
|
|
|
+ ADDITIONAL_CMAKE_ARGS="-DCMAKE_SHARED_LINKER_FLAGS=${LDFLAGS} -DMAKE_C_FLAGS=${CFLAGS}"
|
|
|
+ PKG_CONFIG_PATH=${OPENSSL_ROOT_DIR}/lib/pkgconfig
|
|
|
+
|
|
|
+ echo "LDFLAGS=${LDFLAGS}" >> $GITHUB_ENV
|
|
|
+ echo "CFLAGS=${CFLAGS}" >> $GITHUB_ENV
|
|
|
+ echo "${OPENSSL_ROOT_DIR}/bin" >> $GITHUB_PATH
|
|
|
+ echo "ADDITIONAL_CMAKE_ARGS=${ADDITIONAL_CMAKE_ARGS}" >> $GITHUB_ENV
|
|
|
+ echo "PKG_CONFIG_PATH=${PKG_CONFIG_PATH}" >> $GITHUB_ENV
|
|
|
+
|
|
|
+ - name: Install OpenSSL 1.0 on modern Linux
|
|
|
+ # Needed for recent versions of Linux as they ship with OpenSSL 3.0 by default
|
|
|
+ if: startsWith(matrix.os,'ubuntu') && matrix.env.OPENSSL_1_0 == 'YES'
|
|
|
+ run: |
|
|
|
+ curl -O -L https://openssl.org/source/old/1.0.2/openssl-1.0.2u.tar.gz
|
|
|
+ tar -xzf openssl-1.0.2u.tar.gz
|
|
|
+ cd openssl-1.0.2u
|
|
|
+ ./config --prefix=/usr/local/ssl1.0 --openssldir=/usr/local/ssl1.0 shared
|
|
|
+ make depend
|
|
|
+ make -j $(nproc)
|
|
|
+ sudo make install_sw -j $(nproc)
|
|
|
+ sudo ldconfig
|
|
|
+
|
|
|
+ OPENSSL_ROOT_DIR=/usr/local/ssl1.0
|
|
|
+ LDFLAGS=-L${OPENSSL_ROOT_DIR}/lib
|
|
|
+ CFLAGS=-I${OPENSSL_ROOT_DIR}/include
|
|
|
+ ADDITIONAL_CMAKE_ARGS="-DCMAKE_SHARED_LINKER_FLAGS=${LDFLAGS} -DMAKE_C_FLAGS=${CFLAGS}"
|
|
|
+ PKG_CONFIG_PATH=${OPENSSL_ROOT_DIR}/lib/pkgconfig
|
|
|
+
|
|
|
+ echo "LDFLAGS=${LDFLAGS}" >> $GITHUB_ENV
|
|
|
+ echo "CFLAGS=${CFLAGS}" >> $GITHUB_ENV
|
|
|
+ echo "${OPENSSL_ROOT_DIR}/bin" >> $GITHUB_PATH
|
|
|
+ echo "ADDITIONAL_CMAKE_ARGS=${ADDITIONAL_CMAKE_ARGS}" >> $GITHUB_ENV
|
|
|
+ echo "PKG_CONFIG_PATH=${PKG_CONFIG_PATH}" >> $GITHUB_ENV
|
|
|
+ echo "LD_LIBRARY_PATH=${OPENSSL_ROOT_DIR}/lib" >> $GITHUB_ENV
|
|
|
+
|
|
|
+ - name: Install OpenSSL 1.1 on modern Linux
|
|
|
+ # Needed for recent versions of Linux as they ship with OpenSSL 3.0 by default
|
|
|
+ if: startsWith(matrix.os,'ubuntu') && matrix.env.OPENSSL_1_1 == 'YES'
|
|
|
+ run: |
|
|
|
+ curl -O -L https://github.com/openssl/openssl/releases/download/OpenSSL_1_1_1w/openssl-1.1.1w.tar.gz
|
|
|
+ tar -xzf openssl-1.1.1w.tar.gz
|
|
|
+ cd openssl-1.1.1w
|
|
|
+ ./config --prefix=/usr/local/ssl1.1 --openssldir=/usr/local/ssl1.1 shared
|
|
|
+ make depend
|
|
|
+ make -j $(nproc)
|
|
|
+ sudo make install_sw -j $(nproc)
|
|
|
+ sudo ldconfig
|
|
|
+
|
|
|
+ OPENSSL_ROOT_DIR=/usr/local/ssl1.1
|
|
|
+ LDFLAGS=-L${OPENSSL_ROOT_DIR}/lib
|
|
|
+ CFLAGS=-I${OPENSSL_ROOT_DIR}/include
|
|
|
+ ADDITIONAL_CMAKE_ARGS="-DCMAKE_SHARED_LINKER_FLAGS=${LDFLAGS} -DMAKE_C_FLAGS=${CFLAGS}"
|
|
|
+ PKG_CONFIG_PATH=${OPENSSL_ROOT_DIR}/lib/pkgconfig
|
|
|
+
|
|
|
+ echo "LDFLAGS=${LDFLAGS}" >> $GITHUB_ENV
|
|
|
+ echo "CFLAGS=${CFLAGS}" >> $GITHUB_ENV
|
|
|
+ echo "${OPENSSL_ROOT_DIR}/bin" >> $GITHUB_PATH
|
|
|
+ echo "ADDITIONAL_CMAKE_ARGS=${ADDITIONAL_CMAKE_ARGS}" >> $GITHUB_ENV
|
|
|
+ echo "PKG_CONFIG_PATH=${PKG_CONFIG_PATH}" >> $GITHUB_ENV
|
|
|
+ echo "LD_LIBRARY_PATH=${OPENSSL_ROOT_DIR}/lib" >> $GITHUB_ENV
|
|
|
+
|
|
|
+ - name: Print tool version information
|
|
|
+ run: |
|
|
|
+ openssl version
|
|
|
+ cc --version
|
|
|
+ cmake --version
|
|
|
+ clang --version
|
|
|
+
|
|
|
+ - name: Run CMake
|
|
|
+ run: |
|
|
|
+ cmake -S . -B output\
|
|
|
+ -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 }}
|
|
|
+
|
|
|
+ - name: Build MacOS Package
|
|
|
+ if: matrix.env.MACOSX_PACKAGE == 1
|
|
|
+ run: |
|
|
|
+ make -f Makefile.osx package -j $(nproc)
|
|
|
+
|
|
|
+ - name: Build executable
|
|
|
+ run: |
|
|
|
+ cmake --build output -- -j $(nproc)
|
|
|
+
|
|
|
+ - name: Check executable
|
|
|
+ run: |
|
|
|
+ ./output/src/civetweb -I
|
|
|
+
|
|
|
+ - name: Run unit tests
|
|
|
+ if: matrix.env.RUN_UNITTEST == 1
|
|
|
+ run: |
|
|
|
+ # kill processes that are using port 8084, which is used in the unit tests
|
|
|
+ # Currently, this affects linux only, where 'mono' is using this port
|
|
|
+ pid_8084=$(sudo lsof -t -i:8084 || true;)
|
|
|
+
|
|
|
+ if [[ -n ${pid_8084} ]]; then
|
|
|
+ echo "Killing process using port 8084: ${pid_8084}"
|
|
|
+ sudo kill -9 ${pid_8084}
|
|
|
+ fi
|
|
|
+
|
|
|
+ # Run unit tests
|
|
|
+ gcc unittest/cgi_test.c -o output/cgi_test.cgi
|
|
|
+ cd output
|
|
|
+ CTEST_OUTPUT_ON_FAILURE=1 CK_FORK=yes make all test -j $(nproc)
|