Skip to content

mUpgrade macos rgbds to 0.8.0, use backwards compatible include flag #325

mUpgrade macos rgbds to 0.8.0, use backwards compatible include flag

mUpgrade macos rgbds to 0.8.0, use backwards compatible include flag #325

Workflow file for this run

name: Build hUGETracker
on:
- push
- pull_request
jobs:
build:
strategy:
matrix:
os:
- ubuntu-20.04
- macos-13
- windows-2019
include:
- os: ubuntu-20.04
name: Linux
- os: macos-13
name: Mac
- os: windows-2019
name: Windows
fail-fast: false
runs-on: ${{ matrix.os }}
steps:
- name: Check out hUGETracker
uses: actions/checkout@v4
with:
fetch-depth: 0
path: hUGETracker
submodules: true # This is intentionally not "recursive", change if needed
- name: Install Ubuntu dependencies
if: matrix.name == 'Linux'
run: |
sudo apt -qq update
sudo apt install -yq libsdl2-dev bison
curl -Lo rgbds.tar.gz 'https://github.com/gbdev/rgbds/releases/download/v0.6.1/rgbds-0.6.1.tar.gz'
tar xvf rgbds.tar.gz rgbds/{include,src,Makefile}
cd rgbds
make -j4 rgbasm rgblink rgbfix Q=
wget https://netactuate.dl.sourceforge.net/project/lazarus/Lazarus%20Linux%20amd64%20DEB/Lazarus%203.0/lazarus-project_3.0.0-0_amd64.deb
wget https://cytranet.dl.sourceforge.net/project/lazarus/Lazarus%20Linux%20amd64%20DEB/Lazarus%203.0/fpc-laz_3.2.2-210709_amd64.deb
wget https://versaweb.dl.sourceforge.net/project/lazarus/Lazarus%20Linux%20amd64%20DEB/Lazarus%203.0/fpc-src_3.2.2-210709_amd64.deb
sudo apt install -yq ./fpc-laz_3.2.2-210709_amd64.deb ./fpc-src_3.2.2-210709_amd64.deb ./lazarus-project_3.0.0-0_amd64.deb
# FFmpeg dependencies
sudo apt-get -y install autoconf automake cmake libtool meson ninja-build pkg-config yasm zlib1g-dev
- name: Install macOS dependencies
if: matrix.name == 'Mac'
run: |
brew install --cask lazarus
brew install ./hUGETracker/.github/brew/rgbds.rb
brew install automake libtool shtool wget yasm
curl -Lo 'sdl2.tgz' https://github.com/libsdl-org/SDL/archive/refs/tags/release-2.28.5.tar.gz
tar xzf sdl2.tgz
pushd SDL-release-2.28.5
./configure --disable-video --disable-render --disable-haptic --disable-joystick \
--disable-power --disable-hidapi --disable-sensor --disable-filesystem \
--disable-timers --disable-atomic --disable-file --disable-misc \
--disable-locale --disable-loadso --disable-cpuinfo
make
cp build/.libs/libSDL2.a /usr/local/lib
popd
mkdir rgbds
for f in asm link fix; do ln -s `which rgb$f` rgbds/rgb$f; done
- name: Install Windows dependencies
if: matrix.name == 'Windows'
shell: bash
run: |
choco install lazarus zip
curl -Lo 'sdl2.zip' 'https://github.com/libsdl-org/SDL/releases/download/release-2.28.5/SDL2-2.28.5-win32-x64.zip'
curl -Lo 'rgbds.zip' 'https://github.com/gbdev/rgbds/releases/download/v0.6.1/rgbds-0.6.1-win64.zip'
unzip -d rgbds rgbds.zip rgb{asm,link,fix}.exe
- name: Set up MSYS2
if: matrix.name == 'Windows'
uses: msys2/setup-msys2@v2
with:
msystem: MINGW64
path-type: strict
release: false
update: false
install: >-
base-devel
mingw-w64-x86_64-toolchain
yasm
- name: Compile FFmpeg (Windows)
if: matrix.name == 'Windows'
shell: msys2 {0}
run: ./hUGETracker/.github/scripts/build-ffmpeg.sh
- name: Compile FFmpeg (Mac and Linux)
if: matrix.name == 'Mac' || matrix.name == 'Linux'
shell: bash
run: ./hUGETracker/.github/scripts/build-ffmpeg.sh
- name: Build release
shell: bash
working-directory: hUGETracker
run: | # The PATH manipulation is because the macOS and Windows installs do NOT put it in the PATH >_<
export PATH="$PATH":/Applications/Lazarus:/c/lazarus
export VERSION_STRING=`git describe --tags --dirty --always`
lazbuild --add-package-link src/rackctls/RackCtlsPkg.lpk
lazbuild --add-package-link src/bgrabitmap/bgrabitmap/bgrabitmappack.lpk
lazbuild src/hUGETracker.lpi --build-mode="Production ${{ matrix.name }}"
lazbuild src/uge2source/uge2source.lpi --build-mode=Release
- name: Package build
shell: bash
run: | # macOS does NOT have `realpath` :)
mkdir packaging
for f in hUGETracker/{sample-songs,src/hUGEDriver,fonts/PixeliteTTF.ttf,keymaps}; do ln -sv "$PWD/$f" packaging; done
OBJ=`mktemp`
HDOBJ=`mktemp`
rgbds/rgbasm -E -i hUGETracker/src/hUGEDriver -o "$HDOBJ" hUGETracker/src/hUGEDriver/hUGEDriver.asm
rgbds/rgbasm -i hUGETracker/src/hUGEDriver/include -o "$OBJ" hUGETracker/src/halt.asm
rgbds/rgblink -o packaging/halt.gb -n packaging/halt.sym "$OBJ" "$HDOBJ"
rgbds/rgbfix -vp0xFF packaging/halt.gb
rm "$OBJ" "$HDOBJ"
cp -v hUGETracker/src/Release/hUGETracker hUGETracker/src/uge2source/Release/uge2source packaging
mv packaging/sample-songs "packaging/Sample Songs"
mv packaging/keymaps "packaging/Keymaps"
- name: Extra Windows packaging
if: matrix.name == 'Windows'
shell: bash
run: |
unzip -d packaging sdl2.zip SDL2.dll
cp -v ffmpeg-4.4/ffmpeg.exe rgbds/* packaging
- name: Extra Mac packaging
if: matrix.name == 'Mac'
shell: bash
run: |
cp -Rpv hUGETracker/src/Release/hUGETracker.app packaging
cp -v hUGETracker/graphics/hUGETracker.icns packaging/hUGETracker.app/Contents/Resources
mv packaging/{halt.gb,halt.sym,hUGEDriver,PixeliteTTF.ttf} packaging/hUGETracker.app/Contents/Resources
for f in asm link fix; do ln -s `which rgb$f` packaging/hUGETracker.app/Contents/MacOS/rgb$f; done
cp -v ffmpeg-4.4/ffmpeg packaging/hUGETracker.app/Contents/MacOS
# Hacky, but unlikely to break any time soon.
ed packaging/hUGETracker.app/Contents/Info.plist << END
5i
<key>CFBundleIconFile</key>
<string>hUGETracker.icns</string>
.
w
q
END
- name: Extra Linux packaging
if: matrix.name == 'Linux'
shell: bash
run: |
for f in asm link fix; do cp -v rgbds/rgb$f packaging/rgb$f; done
cp -v ffmpeg-4.4/ffmpeg packaging
- name: Zip files (preserving permissions)
shell: bash
run: |
shopt -s extglob
pushd packaging
if [ "${{ matrix.name }}" == "Mac" ]; then
zip -r ../build.zip !(hUGETracker)
else
zip -r ../build.zip *
fi
popd
- name: Store build
uses: actions/upload-artifact@v2
with:
name: ${{ matrix.name }} build
path: build.zip