name: Continuous Integration

on: [push, pull_request]

jobs:
  build-appimage:
    name: Linux Clang 12 | AppImage
    runs-on: ubuntu-latest

    steps:
      - uses: actions/checkout@v3
      - name: Install GZDoom dependencies
        run: |
          sudo apt-get update
          sudo apt-get install clang-12 libsdl2-dev libvpx-dev libwebp-dev cmake -y
      - name: Install appimage-builder dependencies
        run: |
          sudo apt-get install binutils coreutils desktop-file-utils fakeroot fuse libgdk-pixbuf2.0-dev patchelf -y 
          sudo apt-get install python3-pip python3-setuptools squashfs-tools strace util-linux zsync -y 
          sudo apt-get install imagemagick-6.q16hdri -y
      - name: Install appimage-builder
        run: |
          python3 -m pip install --upgrade pip
          pip install appimage-builder
      - name: Build zmusic dependency
        run: |
          git clone -b 1.1.12 https://github.com/ZDoom/ZMusic.git zmusic_build
          mkdir ./zmusic_build/build
          cd ./zmusic_build/build
          cmake -DCMAKE_BUILD_TYPE=Release ..
          cmake --build .
          cd ../../
          mkdir -p ./AppDir/zmusic/lib
          mkdir ./AppDir/zmusic/include
          mv ./zmusic_build/build/source/libzmusic* ./AppDir/zmusic/lib/
          mv ./zmusic_build/include/zmusic.h ./AppDir/zmusic/include/
      - name: Configure
        run: cmake -B AppDir -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_PREFIX_PATH=`pwd`/AppDir/zmusic -DPK3_QUIET_ZIPDIR=ON -DCMAKE_C_COMPILER=clang-12 -DCMAKE_CXX_COMPILER=clang++-12 .
      - name: Build
        shell: bash
        run: |
          export MAKEFLAGS=--keep-going
          cmake --build AppDir --config Release --parallel `nproc`
          cp ./AppDir/zmusic/lib/* ./AppDir/
          mkdir -p ./AppDir/usr/share/icons
          convert ./src/win32/icon1.ico[0] -flatten ./AppDir/usr/share/icons/game_icon.png
      - name: Build AppImage
        run: |
          appimage-builder --skip-tests
      - uses: actions/upload-artifact@v2
        with:
          name: AppImage
          path: './*.AppImage*'
