Subversion Repositories Krakow BASIC

Rev

Rev 31 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed

# $Id$

name: "Build Krakow BASIC"

on:
  workflow_dispatch:
  push:

concurrency:
  group: "build"
  cancel-in-progress: true

jobs:
  build-c64:
    name: "Build for Commodore 64"
    runs-on: ubuntu-latest

    permissions:
      contents: write

    steps:
    - name: Checkout
      uses: actions/checkout@v4
    - name: Install packages
      run: sudo apt-get install cc65
    - name: Make sure it is clean
      run: make clean PLATFORM=c64
    - name: Make
      run: make PLATFORM=c64
    - name: Rename
      run: cp BASIC/krakow.80 krakow-c64.80
    - name: Upload artifact
      uses: actions/upload-artifact@v4
      with:
        name: build-c64
        path: krakow-c64.80

  build-a800xl:
    name: "Build for Atari 800 XL"
    runs-on: ubuntu-latest

    permissions:
      contents: write

    steps:
    - name: Checkout
      uses: actions/checkout@v4
    - name: Install packages
      run: sudo apt-get install cc65
    - name: Make sure it is clean
      run: make clean PLATFORM=a800xl
    - name: Make
      run: make PLATFORM=a800xl
    - name: Rename
      run: cp BASIC/krakow krakow-a800xl
    - name: Upload artifact
      uses: actions/upload-artifact@v4
      with:
        name: build-a800xl
        path: krakow-a800xl

  build-pet:
    name: "Build for Commodore PET"
    runs-on: ubuntu-latest

    permissions:
      contents: write

    steps:
    - name: Checkout
      uses: actions/checkout@v4
    - name: Install packages
      run: sudo apt-get install cc65
    - name: Make sure it is clean
      run: make clean PLATFORM=pet
    - name: Make
      run: make PLATFORM=pet
    - name: Rename
      run: cp BASIC/krakow.prg krakow-pet.prg
    - name: Upload artifact
      uses: actions/upload-artifact@v4
      with:
        name: build-pet
        path: krakow-pet.prg

  build-apple2:
    name: "Build for Apple 2"
    runs-on: ubuntu-latest

    permissions:
      contents: write

    steps:
    - name: Checkout
      uses: actions/checkout@v4
    - name: Install packages
      run: sudo apt-get install cc65 default-jre
    - name: Make sure it is clean
      run: make clean PLATFORM=apple2
    - name: Get AppleCommander
      run: wget https://github.com/AppleCommander/AppleCommander/releases/download/1.9.0/AppleCommander-ac-1.9.0.jar -O ac.jar
    - name: Get master.dsk
      run: wget http://f.nishi.boats/f/g/master.dsk -O master.dsk
    - name: Make
      run: make PLATFORM=apple2
    - name: Rename
      run: cp BASIC/krakow.dsk krakow-apple2.dsk
    - name: Upload artifact
      uses: actions/upload-artifact@v4
      with:
        name: build-apple2
        path: krakow-apple2.dsk

  build-win32:
    name: "Build for Windows (32)"
    runs-on: ubuntu-latest

    permissions:
      contents: write

    steps:
    - name: Checkout
      uses: actions/checkout@v4
    - name: Install packages
      run: sudo apt-get install mingw-w64
    - name: Make sure it is clean
      run: make clean PLATFORM=win32
    - name: Make
      run: make PLATFORM=win32
    - name: Rename
      run: cp BASIC/krakow.exe krakow-win32.exe
    - name: Upload artifact
      uses: actions/upload-artifact@v4
      with:
        name: build-win32
        path: krakow-win32.exe

  build-win64:
    name: "Build for Windows (64)"
    runs-on: ubuntu-latest

    permissions:
      contents: write

    steps:
    - name: Checkout
      uses: actions/checkout@v4
    - name: Install packages
      run: sudo apt-get install mingw-w64
    - name: Make sure it is clean
      run: make clean PLATFORM=win64
    - name: Make
      run: make PLATFORM=win64
    - name: Rename
      run: cp BASIC/krakow.exe krakow-win64.exe
    - name: Upload artifact
      uses: actions/upload-artifact@v4
      with:
        name: build-win64
        path: krakow-win64.exe

  build-arduino:
    name: "Build for Arduino"
    runs-on: ubuntu-latest

    permissions:
      contents: write

    steps:
    - name: Checkout
      uses: actions/checkout@v4
    - name: Install packages
      run: sudo apt-get install gcc-avr avr-libc
    - name: Make sure it is clean
      run: make clean PLATFORM=arduino
    - name: Make
      run: make PLATFORM=arduino
    - name: Rename
      run: cp BASIC/krakow.hex krakow-arduino.hex
    - name: Upload artifact
      uses: actions/upload-artifact@v4
      with:
        name: build-arduino
        path: krakow-arduino.hex

  build-msx:
    name: "Build for MSX"
    runs-on: ubuntu-latest

    permissions:
      contents: write

    steps:
    - name: Checkout
      uses: actions/checkout@v4
    - name: Install packages
      run: sudo apt-get install sdcc
    - name: Add SDCC path to env
      run: echo "SDCC=/usr/share/sdcc" >> $GITHUB_ENV
    - name: Clone hex2bin
      run: git clone https://github.com/nishiowo/hex2bin
    - name: Build hex2bin
      run: rm -f hex2bin/hex2bin && make -C hex2bin
    - name: Add to PATH
      run: echo "$(pwd)/hex2bin" >> $GITHUB_PATH
    - name: Make sure it is clean
      run: make clean PLATFORM=msx
    - name: Make
      run: make PLATFORM=msx
    - name: Rename
      run: cp BASIC/krakow.msx.rom krakow-msx.rom
    - name: Upload artifact
      uses: actions/upload-artifact@v4
      with:
        name: build-msx
        path: krakow-msx.rom

  release:
    name: "Release"
    runs-on: ubuntu-latest

    permissions:
      contents: write

    needs: [build-c64, build-arduino, build-a800xl, build-pet, build-apple2, build-win32, build-win64, build-msx]

    steps:
    - name: Checkout
      uses: actions/checkout@v4
    - name: Download from build-c64
      uses: actions/download-artifact@v4
      with:
        name: build-c64
    - name: Download from build-a800xl
      uses: actions/download-artifact@v4
      with:
        name: build-a800xl
    - name: Download from build-pet
      uses: actions/download-artifact@v4
      with:
        name: build-pet
    - name: Download from build-apple2
      uses: actions/download-artifact@v4
      with:
        name: build-apple2
    - name: Download from build-win32
      uses: actions/download-artifact@v4
      with:
        name: build-win32
    - name: Download from build-win64
      uses: actions/download-artifact@v4
      with:
        name: build-win64
    - name: Download from build-msx
      uses: actions/download-artifact@v4
      with:
        name: build-msx
    - name: Download from build-arduino
      uses: actions/download-artifact@v4
      with:
        name: build-arduino
    - name: Delete old release
      run: gh release delete "$(make get-version)" --cleanup-tag -y || true
      env:
        GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
    - name: Release
      run: gh release create -t "v$(make get-version)" "$(make get-version)" krakow-c64.80 krakow-arduino.hex krakow-a800xl krakow-pet.prg krakow-apple2.dsk krakow-win32.exe krakow-win64.exe krakow-msx.rom -n "Version \`$(make get-version)\` was build in this release"
      env:
        GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}