name: main

on: [ push, pull_request, workflow_dispatch ]

jobs:
  cmake:
    strategy:
      matrix:
        os: [ ubuntu-latest ]
        profile: [ "Debug", "Release" ]

    runs-on: ${{ matrix.os }}

    steps:
      - name: Get number of CPU cores
        uses: SimenB/github-actions-cpu-cores@v1
        id: cpu-cores

      - uses: actions/checkout@v4

      - name: "Install Dependencies"
        run: |
          sudo apt-get -qq update
          sudo apt-get -qq install --no-install-recommends              \
            gettext                                                     \
            libasound2-dev                                              \
            libbullet-dev                                               \
            libgnutls28-dev                                             \
            libopenxr-dev                                               \
            libqscintilla2-qt5-dev                                      \
            libsdl2-dev                                                 \
            libvorbis-dev                                               \
            libvulkan-dev                                               \
            libwayland-dev                                              \
            libxcursor-dev                                              \
            libxkbcommon-dev                                            \
            libxrandr-dev                                               \
            qtbase5-dev

            # Disabled due to warnings that break the debug build with -Werror
            # libode-dev
            # libavcodec-dev libavformat-dev libavutil-dev libswscale-dev

      - name: "Configure: ${{ matrix.profile }}"
        run: |
          cmake -B build_${{ matrix.profile }} -DCMAKE_BUILD_TYPE=${{ matrix.profile }}

      - name: "Build: ${{ matrix.profile }}"
        run: |
          cmake --build build_${{ matrix.profile }} --parallel ${{ steps.cpu-cores.outputs.count }}

  wasm:
    strategy:
      # Concurrent builds currently broken:
      #  https://github.com/mymindstorm/setup-emsdk/issues/20
      matrix:
        emsdk: [ "2.0.12" ] #, "3.1.8", "3.1.51" ]
        profile: [ "rel" ] #, "dbg" ]

    runs-on: ubuntu-latest

    steps:
      - name: Get number of CPU cores
        uses: SimenB/github-actions-cpu-cores@v1
        id: cpu-cores

      - uses: actions/checkout@v4

      - uses: mymindstorm/setup-emsdk@v13
        with:
          version: ${{ matrix.emsdk }}
          actions-cache-folder: "emsdk-cache-${{ matrix.emsdk }}"

      - name: Verify emscripten
        run: emcc -v

      - name: Build dependencies
        working-directory: engine
        run: |
          make -j ${{ steps.cpu-cores.outputs.count }} makelibs FTE_TARGET=web

      - name: Build wasm
        working-directory: engine
        run: |
          # Currently fails to build
          sed -r -i '/define Q3(CLIENT|SERVER)/d' common/config_fteqw.h

          make -j ${{ steps.cpu-cores.outputs.count }} FTE_TARGET=web web-${{ matrix.profile }}

      - name: Upload artifacts
        uses: actions/upload-artifact@v4
        with:
          name: fteqw-web-${{ matrix.profile }}-em${{ matrix.emsdk }}
          path: |
            engine/*/ftewebgl.js
            engine/*/ftewebgl.html
            engine/*/ftewebgl.wasm
          compression-level: 9
