name: DeSmuME

on:
  - push
  - pull_request

jobs:
  build:
    name: Build DeSmuME (Linux)
    runs-on: ubuntu-20.04

    steps:
      - name: checkout
        uses: actions/checkout@v3

      - name: install dependencies
        run: sudo apt update && sudo apt install meson libsdl2-dev libpcap-dev libgtk-3-dev

      - name: meson
        run: |
          cd desmume/src/frontend/posix/
          meson build

      - name: ninja
        run: ninja -C desmume/src/frontend/posix/build

  build_gtk2:
    name: Build DeSmuME (Linux/GTK+2)
    runs-on: ubuntu-22.04

    steps:
      - name: checkout
        uses: actions/checkout@v3

      - name: install dependencies
        run: sudo apt update && sudo apt install autoconf libglu1-mesa-dev libsdl2-dev libpcap-dev libgtk2.0-dev

      - name: buildit
        run: |
          cd desmume/src/frontend/posix/
          autoreconf -i
          ./configure --prefix=/usr --enable-gdb-stub --enable-wifi
          make -j8
          make DESTDIR=/tmp/DeSmuME install

      - name: Pack artifact
        run: |
          cd /tmp
          tar cJf DeSmuME.tar.xz DeSmuME/

      - name: Upload artifact
        uses: actions/upload-artifact@v3
        with:
          name: desmume-linux-gtk2-cli-x86_64
          path: /tmp/DeSmuME.tar.xz

  build_macos:
    name: Build DeSmuME (macOS)
    runs-on: macOS-11

    steps:
      - name: checkout
        uses: actions/checkout@v3
      
      - name: xcodebuild
        run: |
          cd desmume/src/frontend/cocoa/
          xcodebuild archive -project "DeSmuME (Latest).xcodeproj" -scheme "DeSmuME (macOS App; Intel64 -- Latest Xcode)" -arch x86_64 -archivePath "$(pwd)/desmume.xcarchive" | xcpretty -c
      
      - name: make zip
        run: |
          cd desmume/src/frontend/cocoa/desmume.xcarchive/Products/Applications/
          7z a DeSmuME.app.zip DeSmuME.app

      - name: Upload artifict
        uses: actions/upload-artifact@v3
        with:
          name: macos
          path: desmume/src/frontend/cocoa/desmume.xcarchive/Products/Applications/DeSmuME.app.zip
          if-no-files-found: error