name: CMake CI on: push: branches: [ main ] pull_request: branches: [ main ] schedule: - cron: '20 4 * * 1' jobs: build: strategy: fail-fast: false matrix: os: [ubuntu-latest, macos-latest, windows-latest] crypto: [internal, openssl, openssl3, wolfssl, nss, mbedtls] exclude: - os: windows-latest crypto: openssl - os: windows-latest crypto: wolfssl - os: windows-latest crypto: openssl3 - os: windows-latest crypto: nss - os: windows-latest crypto: mbedtls - os: ubuntu-latest crypto: openssl3 include: - crypto: internal cmake-crypto-enable: "" - crypto: openssl cmake-crypto-enable: "-DCRYPTO_LIBRARY=openssl" - crypto: openssl3 cmake-crypto-enable: "-DCRYPTO_LIBRARY=openssl" - crypto: wolfssl cmake-crypto-enable: "-DCRYPTO_LIBRARY=wolfssl" - crypto: nss cmake-crypto-enable: "-DCRYPTO_LIBRARY=nss" - crypto: mbedtls cmake-crypto-enable: "-DCRYPTO_LIBRARY=mbedtls" runs-on: ${{ matrix.os }} env: CTEST_OUTPUT_ON_FAILURE: 1 steps: - name: Setup Ubuntu wolfSSL if: matrix.os == 'ubuntu-latest' && matrix.crypto == 'wolfssl' run: | git clone https://github.com/wolfSSL/wolfssl cd wolfssl git checkout v5.7.0-stable ./autogen.sh ./configure '--enable-srtp-kdf' '--enable-aesctr' '--enable-intelasm' '--enable-aesgcm-stream' make sudo make install cd .. - name: Setup Ubuntu NSS if: matrix.os == 'ubuntu-latest' && matrix.crypto == 'nss' run: | sudo apt-get update sudo apt-get install libnss3-dev - name: Setup Ubuntu MbedTLS if: matrix.os == 'ubuntu-latest' && matrix.crypto == 'mbedtls' run: sudo apt-get install libmbedtls-dev - name: Setup macOS OpenSSL if: matrix.os == 'macos-latest' && matrix.crypto == 'openssl' run: echo "cmake-crypto-dir=-DOPENSSL_ROOT_DIR=$(brew --prefix openssl@1.1)" >> $GITHUB_ENV - name: Setup macOS OpenSSL3 if: matrix.os == 'macos-latest' && matrix.crypto == 'openssl3' run: | brew install openssl@3 echo "cmake-crypto-dir=-DOPENSSL_ROOT_DIR=$(brew --prefix openssl@3)" >> $GITHUB_ENV - name: Setup macOS wolfSSL if: matrix.os == 'macos-latest' && matrix.crypto == 'wolfssl' run: | brew install autoconf automake libtool git clone https://github.com/wolfSSL/wolfssl cd wolfssl git checkout v5.7.0-stable ./autogen.sh CPU=`sysctl -n machdep.cpu.brand_string` if [[ "$CPU" =~ Intel ]]; then ./configure '--enable-srtp-kdf' '--enable-aesctr' '--enable-intelasm' '--enable-aesgcm-stream' else ./configure '--enable-srtp-kdf' '--enable-aesctr' '--enable-armasm' '--enable-aesgcm-stream' fi make sudo make install cd .. - name: Setup macOS NSS if: matrix.os == 'macos-latest' && matrix.crypto == 'nss' run: brew install nss - name: Setup macOS MbedTLS if: matrix.os == 'macos-latest' && matrix.crypto == 'mbedtls' run: brew install mbedtls - uses: actions/checkout@v2 - name: Create Build Environment run: cmake -E make_directory ${{github.workspace}}/build - name: Configure CMake working-directory: ${{github.workspace}}/build shell: bash run: cmake $GITHUB_WORKSPACE -DLIBSRTP_TEST_APPS=ON ${{ matrix.cmake-crypto-enable}} ${{env.cmake-crypto-dir}} - name: Build working-directory: ${{github.workspace}}/build shell: bash run: cmake --build . - name: Test working-directory: ${{github.workspace}}/build shell: bash run: ctest