name: Build mcume

on:
  push:
  pull_request:
  release:
    types: [published]
  check_suite:
    types: [rerequested]


jobs:
  bins:
    runs-on: ubuntu-latest
    steps:

    - uses: actions/checkout@v4
      with:
        persist-credentials: false

    - name: Install ARM GCC
      uses: carlosperate/arm-none-eabi-gcc-action@v1
      with:
        release: '13.2.Rel1'

    - name: get submodules
      run: git submodule update --init

    - name: set up tinyusb
      run: (cd MCUME_pico2/pico-sdk/lib/tinyusb && git submodule update --init . && python tools/get_deps.py rp2040)

    # https://github.com/sekigon-gonnoc/Pico-PIO-USB/pull/164
    - name: fix pico-pio-usb ref
      run: (cd MCUME_pico2/pico-sdk/lib/tinyusb/hw/mcu/raspberry_pi/Pico-PIO-USB && git pull https://github.com/tannewt/Pico-PIO-USB/ better_timeouts)

    - name: build targets
      run: for target in pico64 pico20 pico800 picospeccy picomsx pico8086 picocolem picogb picopce picosms picogen; do cmake -S MCUME_pico2 -B build -DPICO_SDK_PATH=MCUME_pico2/pico-sdk -DTARGET=$target && make -C build -j$(nproc); done

    - name: Upload artifact
      uses: actions/upload-artifact@v4
      with:
        name: uf2 files
        path: build/*.uf2

    - name: Upload artifact
      uses: actions/upload-artifact@v4
      with:
        name: elf files
        path: build/*.elf

    - name: Create release
      if: startsWith(github.ref, 'refs/tags/')
      uses: softprops/action-gh-release@v1
      with:
        files: build/*.uf2
        fail_on_unmatched_files: true
        body: "Select a uf2 from the list below."
