Skip to content

Adding features

Adding features #39

Workflow file for this run

name: build
on:
push:
branches: [ "master", "develop" ]
tags:
- 'v*'
pull_request:
branches: [ "master", "develop" ]
env:
BUILD_TYPE: Release
PROGNAME: p2000t-fat-flasher
EXEC: p2000t-fat-flasher.exe
jobs:
# (optional) Create release
create-release:
runs-on: ubuntu-latest
permissions: write-all
if: startsWith(github.ref, 'refs/tags/v')
steps:
- name: Create Release
id: create_release
uses: actions/create-release@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
tag_name: ${{ github.ref }}
release_name: Release ${{ github.ref }}
draft: false
prerelease: false
outputs:
upload_url: ${{ steps.create_release.outputs.upload_url }}
################################################################################
# Firmware of the SLOT2 cartridge
build-launcher-firmware:
runs-on: ubuntu-latest
container:
image: z88dk/z88dk
steps:
- uses: actions/checkout@v3
- name: Build launcher application
run: |
cd launch-os
sed -i 's/node2000/node2000000/' Makefile
make
- name: Upload launcher
uses: actions/upload-artifact@v3
with:
name: LAUNCHERFIRMWARE.BIN
path: ./launch-os/main.rom
deploy-launcher-firmware:
runs-on: ubuntu-latest
needs: [build-launcher-firmware, create-release]
permissions: write-all
if: startsWith(github.ref, 'refs/tags/v')
steps:
- name: Download artifact
uses: actions/download-artifact@v3
with:
name: LAUNCHERFIRMWARE.BIN
path: ./
- name: Upload Release Asset
id: upload-release-asset
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ needs.create-release.outputs.upload_url }}
asset_path: LAUNCHERFIRMWARE.BIN
asset_name: LAUNCHERFIRMWARE.BIN
asset_content_type: application/octet-stream
################################################################################
# Firmware flasher for the SLOT2 cartridge firmware
build-firmware-flasher:
runs-on: ubuntu-latest
container:
image: z88dk/z88dk
steps:
- uses: actions/checkout@v3
- name: Build launcher application
run: |
cd firmwareflasher
sed -i 's/node2000/node2000000/' Makefile
make
mv main.rom firmware-flasher.bin
- name: Upload launcher
uses: actions/upload-artifact@v3
with:
name: FIRMWAREFLASHER.BIN
path: firmwareflasher/firmware-flasher.bin
deploy-firmware-flasher-rom:
runs-on: ubuntu-latest
needs: [build-firmware-flasher, create-release]
permissions: write-all
if: startsWith(github.ref, 'refs/tags/v')
steps:
- name: Download artifact
uses: actions/download-artifact@v3
with:
name: FIRMWAREFLASHER.BIN
path: ./
- name: Upload Release Asset
id: upload-release-asset
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ needs.create-release.outputs.upload_url }}
asset_path: FIRMWAREFLASHER.BIN
asset_name: FIRMWAREFLASHER.BIN
asset_content_type: application/octet-stream
################################################################################
# Modified BASIC cartridge
build-basic:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Install dependencies
run: sudo apt install -y python3 python3-numpy z80asm make
- name: Build modified basic cartridge
run: |
cd basicmod
z80asm bootstrap.asm -o bootstrap.bin
z80asm launcher.asm -o launcher.bin
python hackrom.py
- name: Upload
uses: actions/upload-artifact@v1
with:
name: BASICBOOTSTRAP.BIN
path: basicmod/BASICBOOTSTRAP.BIN
deploy-basic-cartridge:
runs-on: ubuntu-latest
needs: [build-basic, create-release]
permissions: write-all
if: startsWith(github.ref, 'refs/tags/v')
steps:
- name: Download artifact
uses: actions/download-artifact@v3
with:
name: BASICBOOTSTRAP.BIN
path: ./
- name: Upload Release Asset
id: upload-release-asset
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ needs.create-release.outputs.upload_url }}
asset_path: BASICBOOTSTRAP.BIN
asset_name: BASICBOOTSTRAP.BIN
asset_content_type: application/octet-stream
################################################################################
# GUI to interface with a P2000TFAT-chip
build-gui-windows:
runs-on: windows-latest
steps:
- uses: actions/checkout@v3
- name: Install Qt
uses: jurplel/install-qt-action@v3
with:
version: '5.15.2'
target: 'desktop'
arch: 'win64_msvc2019_64'
cache: true
- name: Configure CMake
run: cmake -B ${{github.workspace}}/build -S ${{github.workspace}}/gui -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}}
- name: Build
run: cmake --build ${{github.workspace}}/build --config ${{env.BUILD_TYPE}}
- name: Upload executable
uses: actions/upload-artifact@v3
with:
name: ${{env.EXEC}}
path: ${{github.workspace}}/build/Release/${{env.EXEC}}
create-installer-windows:
runs-on: windows-latest
needs: build-gui-windows
permissions: write-all
steps:
- uses: actions/checkout@v3
- name: Install Qt
uses: jurplel/install-qt-action@v3
with:
version: '5.15.2'
target: 'desktop'
arch: 'win64_msvc2019_64'
tools: 'tools_ifw'
cache: true
- name: Download artifact
uses: actions/download-artifact@v3
with:
name: ${{env.EXEC}}
path: gui/packaging/packages/com.vendor.product/data/
- name: Get dependencies
run: windeployqt.exe gui\packaging\packages\com.vendor.product\data\${{env.EXEC}} --release --force
- name: Copy assets
run: copy gui\assets\icon\icon.ico gui\packaging\packages\com.vendor.product\data\icon.ico
- name: Create installer
run: ${{github.workspace}}\..\Qt\Tools\QtInstallerFramework\4.6\bin\binarycreator.exe -c config\config.xml -p packages ${{env.PROGNAME}}-installer-win64.exe
working-directory: gui/packaging
- name: Upload installer
uses: actions/upload-artifact@v3
with:
name: ${{env.PROGNAME}}-installer-win64.exe
path: gui/packaging/${{env.PROGNAME}}-installer-win64.exe
deploy-installer-windows:
runs-on: ubuntu-latest
needs: [create-installer-windows, create-release]
permissions: write-all
if: startsWith(github.ref, 'refs/tags/v')
steps:
- name: Download artifact
uses: actions/download-artifact@v3
with:
name: ${{env.PROGNAME}}-installer-win64.exe
path: ./
- name: Upload Release Asset
id: upload-release-asset
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ needs.create-release.outputs.upload_url }}
asset_path: ${{env.PROGNAME}}-installer-win64.exe
asset_name: ${{env.PROGNAME}}-installer-win64.exe
asset_content_type: application/vnd.microsoft.portable-executable
################################################################################
#
# Ubuntu
#
build-gui-ubuntu:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Install packages
run: sudo apt update && sudo apt install -y qtbase5-dev qt5-qmake libqt5serialport5-dev cmake
- name: Configure CMake
run: mkdir ${{github.workspace}}/build && cd ${{github.workspace}}/build && qmake ../gui
- name: Build
run: cd ${{github.workspace}}/build && make -j