name: FreeBSD

on: [push, pull_request]

permissions:
  contents: read

jobs:
  build_and_test:
    runs-on: ubuntu-latest
    strategy:
      fail-fast: false
      matrix:
        include:
          - ssl: openssl # currently 3.0
            openssl_root_dir: /usr/local
          - ssl: openssl36
            openssl_root_dir: /usr/local
          - ssl: # base openssl
            openssl_root_dir:
    name: FreeBSD with ${{ matrix.ssl || 'base openssl' }}
    env:
      SSL: ${{ matrix.ssl }}
      OPENSSL_ROOT_DIR: ${{ matrix.openssl_root_dir }}
    steps:
    - uses: actions/checkout@v6
      with:
        submodules: true
    - uses: vmactions/freebsd-vm@v1
      with:
        envs: 'OPENSSL_ROOT_DIR SSL'
        prepare: |
          pkg install -y $SSL pkgconf cmake git libsodium cpu_features
        run: |
          CMAKE_FLAGS="-DUSE_SYSTEM_CPU_FEATURES=1" CFLAGS="-I/usr/local/include/cpu_features" ./configure
          make -j $(nproc || echo 4) -C build
          ldd build/vpnserver
          .ci/memory-leak-test.sh
          .ci/vpntools-check.sh
