name: CI FreeBSD

on:
  workflow_dispatch:
  push:
    paths-ignore:
      - '**.md'
      - '**.yml'
      - 'cmd/tools/**'
      - '!**/freebsd_ci.yml'
      - '!ci/freebsd_ci.vsh'
      - '!cmd/tools/builders/**.v'
  pull_request:
    paths-ignore:
      - '**.md'
      - '**.yml'
      - 'cmd/tools/**'
      - '!**/freebsd_ci.yml'
      - '!ci/freebsd_ci.vsh'
      - '!cmd/tools/builders/**.v'

### See https://github.com/cross-platform-actions/action
### for a description of the used fields here

jobs:
  tcc-freebsd:
    runs-on: ubuntu-latest
    timeout-minutes: 20
    steps:
      - uses: actions/checkout@v4
      - name: Tests on FreeBSD with tcc
        id: tests-freebsd-tcc
        uses: cross-platform-actions/action@v0.28.0
        with:
          operating_system: freebsd
          version: '14.2'
          memory: 4G
          shell: sh
          sync_files: runner-to-vm
          run: |
            sudo pkg install -y git sqlite3 gmake boehm-gc-threaded libiconv
            # Mandatory: hostname not set in VM => some tests fail
            sudo hostname -s freebsd-ci
            echo "### OS infos"
            uname -a
            git config --global --add safe.directory .
            gmake
            sudo ./v symlink
            export VFLAGS='-cc tcc -no-retry-compilation'
            ./v run ci/freebsd_ci.vsh all

  clang-freebsd:
    runs-on: ubuntu-latest
    timeout-minutes: 20
    steps:
      - uses: actions/checkout@v4
      - name: Tests on FreeBSD with clang
        id: tests-freebsd-clang
        uses: cross-platform-actions/action@v0.28.0
        with:
          operating_system: freebsd
          version: '14.2'
          memory: 4G
          shell: sh
          sync_files: runner-to-vm
          run: |
            sudo pkg install -y git sqlite3 gmake boehm-gc-threaded libiconv
            # Mandatory: hostname not set in VM => some tests fail
            sudo hostname -s freebsd-ci
            echo "### OS infos"
            uname -a
            git config --global --add safe.directory .
            gmake
            sudo ./v symlink
            export VFLAGS='-cc clang'
            ./v run ci/freebsd_ci.vsh all

  gcc-freebsd:
    runs-on: ubuntu-latest
    timeout-minutes: 20
    steps:
      - uses: actions/checkout@v4
      - name: Tests on FreeBSD with gcc
        id: tests-freebsd-gcc
        uses: cross-platform-actions/action@v0.28.0
        with:
          operating_system: freebsd
          version: '14.2'
          memory: 4G
          shell: sh
          sync_files: runner-to-vm
          run: |
            sudo pkg install -y git sqlite3 gmake boehm-gc-threaded libiconv gcc
            # Mandatory: hostname not set in VM => some tests fail
            sudo hostname -s freebsd-ci
            echo "### OS infos"
            uname -a
            git config --global --add safe.directory .
            gmake
            sudo ./v symlink
            export VFLAGS='-cc gcc'
            ./v run ci/freebsd_ci.vsh all
