# $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 }}