name: CI

on:
  pull_request:
  push:
    branches: [master, main]

jobs:
  test:
    name: Engine tests
    runs-on: ubuntu-latest
    timeout-minutes: 30

    steps:
      - name: Checkout
        uses: actions/checkout@v4

      # Ubuntu 24.04 does not ship libsdl3-dev; build/install SDL3 from source (cached).
      - name: Setup SDL3
        id: sdl
        uses: libsdl-org/setup-sdl@main
        with:
          version: 3-latest
          install-linux-dependencies: true
          add-to-environment: true
          token: ${{ secrets.GITHUB_TOKEN }}

      - name: Export SDL3 paths for the linker
        run: |
          PREFIX="${{ steps.sdl.outputs.prefix }}"
          echo "PKG_CONFIG_PATH=${PREFIX}/lib/pkgconfig:${PKG_CONFIG_PATH:-}" >> "$GITHUB_ENV"
          echo "LIBRARY_PATH=${PREFIX}/lib:${LIBRARY_PATH:-}" >> "$GITHUB_ENV"
          echo "LD_LIBRARY_PATH=${PREFIX}/lib:${LD_LIBRARY_PATH:-}" >> "$GITHUB_ENV"
          echo "C_INCLUDE_PATH=${PREFIX}/include:${C_INCLUDE_PATH:-}" >> "$GITHUB_ENV"
          # Help some linkers find the shared lib without rpath surprises
          if [ -d "${PREFIX}/lib" ]; then
            echo "${PREFIX}/lib" | sudo tee /etc/ld.so.conf.d/sdl3-ci.conf >/dev/null
            sudo ldconfig
          fi

      - name: Setup Odin
        uses: laytan/setup-odin@v2
        with:
          token: ${{ secrets.GITHUB_TOKEN }}
          # Match local toolchain: odin version dev-2026-05
          release: dev-2026-05

      - name: Odin version
        run: odin version

      # assetbake tests need vendor:stb native libs
      - name: Build Odin STB libraries
        run: make -C "$(odin root)/vendor/stb/src"

      - name: Unit tests
        run: make test

      - name: Typecheck toad example
        run: make check
