name: CI

on:
  # Run on pushes to tags, the "master" branch, and PR's
  push:
    branches:
      - master
  pull_request:

jobs:
  sdl-release:
    runs-on: ubuntu-latest
    container:
      image: debian:latest
    steps:
      # Must install git before checking out the repo otherwise github doesn't fetch the .git directory.
      - name: Install dependencies
        run: |
          apt update
          apt install --yes build-essential git libjpeg-dev libsdl2-dev libcurl4-openssl-dev libpng-dev libfreetype-dev libvorbis-dev

      - name: Fetch repository
        uses: actions/checkout@v4.1.1
        with:
          # make `git describe` show the correct commit hash
          fetch-depth: '0'

      - name: Compile
        run: |
          # prevent git complaining about dubious ownership of the repo
          chown -R root:root .
          # fail if `git describe` doesn't work (required for the buildstring)
          git describe --always
          # fail if there's any warnings
          export CC="cc -Werror"
          make sdl-release

      - name: Upload Linux artifacts
        uses: actions/upload-artifact@v4
        with:
          name: Linux
          path: |
            darkplaces-sdl

  wasm-release:
    runs-on: ubuntu-latest
    container:
      image: debian:latest
    steps:
      - name: Install dependencies
        run: |
          apt update
          apt install --yes build-essential python3-certifi

      - name: Fetch repository
        uses: actions/checkout@v4.1.1
        with:
          # make `git describe` show the correct commit hash
          fetch-depth: '0'

      - name: Install emsdk
        uses: actions/checkout@v4.1.1
        with:
          repository: emscripten-core/emsdk
          path: emsdk

      - name: Compile
        shell: bash
        run: |
          cd emsdk

          # Download and install the latest SDK tools.
          ./emsdk install latest

          # Make the "latest" SDK "active" for the current user. (writes .emscripten file)
          ./emsdk activate latest

          # Activate PATH and other environment variables in the current terminal
          source ./emsdk_env.sh

          cd ..

          # fail if there's any warnings
          #export CC="cc"

          make emscripten-release

      - name: Upload WASM artifacts
        uses: actions/upload-artifact@v4
        with:
          name: Wasm
          path: |
            darkplaces-wasm.js
