mirror of
https://github.com/logicog/RTLPlayground.git
synced 2026-10-29 17:54:14 +08:00
The workflow and the Dockerfile install what building SDCC needs instead of the distribution's sdcc, and the workflow caches toolchain/ keyed on the contents of sdcc/.
59 lines
2.1 KiB
YAML
59 lines
2.1 KiB
YAML
name: Build firmware
|
|
|
|
on:
|
|
push:
|
|
branches: ['**']
|
|
pull_request:
|
|
|
|
permissions:
|
|
contents: read
|
|
pull-requests: write
|
|
issues: write
|
|
|
|
jobs:
|
|
build:
|
|
runs-on: ubuntu-latest
|
|
container:
|
|
image: debian:trixie
|
|
|
|
steps:
|
|
- uses: actions/checkout@v6
|
|
with:
|
|
path: branch
|
|
|
|
- uses: actions/checkout@v6
|
|
with:
|
|
path: main
|
|
ref: main
|
|
|
|
- name: Install dependencies
|
|
run: |
|
|
apt update
|
|
apt install make gcc g++ bison flex libboost-dev patch bzip2 curl ca-certificates xxd python-is-python3 libjson-c-dev zlib1g-dev -y
|
|
- name: Cache the patched SDCC
|
|
uses: actions/cache@v4
|
|
with:
|
|
path: branch/toolchain
|
|
key: sdcc-${{ hashFiles('branch/sdcc/*') }}
|
|
- name: Run the host-side unit tests
|
|
run: cd branch && make -C test
|
|
- name: Check that every machine definition can be compiled
|
|
run: cd branch && make machine_check
|
|
- name: Make project (4x2/RTL8372)
|
|
run: cd branch && make CI=1 MACHINE="KP_9000_6XHML_X2" && cp output/KP_9000_6XHML_X2/rtlplayground.map /tmp/branch.map
|
|
- name: Make project (8x1/RTL8373)
|
|
run: cd branch && make CI=1 MACHINE="KP_9000_9XHML_X_V3_1"
|
|
- name: Make project with the health instrumentation
|
|
run: cd branch && make clean && make CI=1 MACHINE="KP_9000_6XHML_X2" HEALTH=1
|
|
- name: Make main
|
|
run: |
|
|
ln -s ../branch/toolchain main/toolchain
|
|
PATH="$(echo "$PWD"/branch/toolchain/sdcc-*/bin):$PATH"
|
|
cd main && make CI=1 MACHINE="KP_9000_6XHML_X2" && cp output/KP_9000_6XHML_X2/rtlplayground.map /tmp/main.map
|
|
- name: Calculate bank growth
|
|
run: |
|
|
sed -rn 's/^([XCD]SEG|(BANK[0-9])).*=\s+([0-9]+)\. bytes.*$/MAIN_\1=\3/p' /tmp/main.map | sort -u >> "$GITHUB_ENV"
|
|
sed -rn 's/^([XCD]SEG|(BANK[0-9])).*=\s+([0-9]+)\. bytes.*$/BRANCH_\1=\3/p' /tmp/branch.map | sort -u >> "$GITHUB_ENV"
|
|
du -sb main/output/KP_9000_6XHML_X2/html_min | awk '{print "MAIN_WEB="$1}' >> "$GITHUB_ENV"
|
|
du -sb branch/output/KP_9000_6XHML_X2/html_min | awk '{print "BRANCH_WEB="$1}' >>"$GITHUB_ENV"
|