name: rspamd_build

on:
  workflow_call:
    inputs:
      image:
        required: true
        type: string
      name:
        required: true
        type: string

jobs:
  test:
    runs-on: [ "ubuntu-latest" ]
    container:
      image: ${{ inputs.image }}
      options: --user root
    steps:
      - name: Create directories
        run: |
          sudo mkdir -p ${GITHUB_WORKSPACE}

      - name: Check out source code
        uses: actions/checkout@v4
        with:
          path: src

      - name: Set variables on ARM64
        if: runner.arch == 'ARM64'
        run: echo "HYPERSCAN_ALTROOT=-DHYPERSCAN_ROOT_DIR=/vectorscan" >> "$GITHUB_ENV"

      - name: Run cmake
        run: |
          mkdir ${GITHUB_WORKSPACE}/build
          cd ${GITHUB_WORKSPACE}/build
          if [[ -f /opt/rh/gcc-toolset-10/enable ]] ; then source /opt/rh/gcc-toolset-10/enable ; fi 
          cmake -DCMAKE_INSTALL_PREFIX=${GITHUB_WORKSPACE}/install -DCMAKE_RULE_MESSAGES=OFF -DCMAKE_VERBOSE_MAKEFILE=ON -DENABLE_COVERAGE=ON -DENABLE_LIBUNWIND=ON  -DENABLE_LUAJIT=ON -DLUA_ROOT=/luajit-build -DENABLE_HYPERSCAN=ON ${{ env.HYPERSCAN_ALTROOT }} ${GITHUB_WORKSPACE}/src

      - name: Build rspamd
        run: |
          if [[ -f /opt/rh/gcc-toolset-10/enable ]] ; then source /opt/rh/gcc-toolset-10/enable ; fi 
          cd ${GITHUB_WORKSPACE}/build
          ncpu=$(getconf _NPROCESSORS_ONLN)
          make -j $ncpu install
          make -j $ncpu rspamd-test
          make -j $ncpu rspamd-test-cxx

      - name: Run unit tests
        if: "!(inputs.name == 'ubuntu-ci' && runner.arch == 'ARM64')"
        run: |
          cd ${GITHUB_WORKSPACE}/build
          make test
