name: Ubuntu

on:
  push:
    branches:
      - master
  pull_request:
    branches:
      - master

jobs:
  build-x86_64:
    name: x86_64
    runs-on: ubuntu-22.04

    steps:
    - uses: actions/checkout@v4
      name: Check out sources
    - name: Install dependencies
      run: |
        sudo rm -f /etc/apt/sources.list.d/dotnetdev.list /etc/apt/sources.list.d/microsoft-prod.list
        sudo apt update
        sudo apt install --allow-downgrades cmake ninja-build extra-cmake-modules libpcap0.8-dev libsdl2-dev libenet-dev \
          qt6-{base,base-private,multimedia}-dev libqt6svg6-dev libarchive-dev libzstd-dev libfuse2
    - name: Configure
      run: cmake -B build -G Ninja -DUSE_QT6=ON -DCMAKE_INSTALL_PREFIX=/usr
    - name: Build
      run: |
        cmake --build build
        DESTDIR=AppDir cmake --install build
    - uses: actions/upload-artifact@v4
      with:
        name: melonDS-ubuntu-x86_64
        path: AppDir/usr/bin/melonDS
    - name: Fetch AppImage tools
      run: |
        wget https://github.com/linuxdeploy/linuxdeploy/releases/download/continuous/linuxdeploy-x86_64.AppImage
        wget https://github.com/linuxdeploy/linuxdeploy-plugin-qt/releases/download/continuous/linuxdeploy-plugin-qt-x86_64.AppImage
        chmod a+x linuxdeploy-*.AppImage
    - name: Build the AppImage
      env:
        QMAKE: /usr/lib/qt6/bin/qmake
      run: |
        ./linuxdeploy-x86_64.AppImage --appdir AppDir --plugin qt --output appimage
    - uses: actions/upload-artifact@v4
      with:
        name: melonDS-appimage-x86_64
        path: melonDS*.AppImage

  build-aarch64:
    name: aarch64
    runs-on: ubuntu-latest
    container: ubuntu:22.04

    steps:
      - name: Prepare system
        shell: bash
        run: |
          dpkg --add-architecture arm64
          sh -c "sed \"s|^deb \([a-z\.:/]*\) \([a-z\-]*\) \(.*\)$|deb [arch=amd64] \1 \2 \3\ndeb [arch=arm64] http://ports.ubuntu.com/ubuntu-ports \2 \3|\" /etc/apt/sources.list > /etc/apt/sources.list.new"
          rm /etc/apt/sources.list
          mv /etc/apt/sources.list{.new,}
          apt update
          apt -y full-upgrade
          apt -y install git {gcc-12,g++-12}-aarch64-linux-gnu cmake ninja-build extra-cmake-modules \
            {libsdl2,qt6-{base,base-private,multimedia},libqt6svg6,libarchive,libzstd,libenet}-dev:arm64 \
            pkg-config dpkg-dev
      - name: Check out source
        uses: actions/checkout@v4
      - name: Configure
        shell: bash
        run: |
          cmake -B build -G Ninja \
            -DPKG_CONFIG_EXECUTABLE=/usr/bin/aarch64-linux-gnu-pkg-config \
            -DCMAKE_C_COMPILER=aarch64-linux-gnu-gcc-12 \
            -DCMAKE_CXX_COMPILER=aarch64-linux-gnu-g++-12 \
            -DUSE_QT6=ON
      - name: Build
        shell: bash
        run: |
          cmake --build build
      - uses: actions/upload-artifact@v4
        with:
          name: melonDS-ubuntu-aarch64
          path: build/melonDS
