Fetch entire history during CI build #240
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Build hUGETracker | |
on: | |
- push | |
- pull_request | |
jobs: | |
build: | |
strategy: | |
matrix: | |
os: | |
- ubuntu-20.04 | |
# - macos-12 | |
- windows-2019 | |
include: | |
- os: ubuntu-20.04 | |
name: Linux | |
# - os: macos-12 | |
# name: Mac | |
- os: windows-2019 | |
name: Windows | |
fail-fast: false | |
runs-on: ${{ matrix.os }} | |
steps: | |
- 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://tenet.dl.sourceforge.net/project/lazarus/Lazarus%20Linux%20amd64%20DEB/Lazarus%202.2.6/lazarus-project_2.2.6-0_amd64.deb | |
wget https://tenet.dl.sourceforge.net/project/lazarus/Lazarus%20Linux%20amd64%20DEB/Lazarus%202.2.6/fpc-laz_3.2.2-210709_amd64.deb | |
wget https://tenet.dl.sourceforge.net/project/lazarus/Lazarus%20Linux%20amd64%20DEB/Lazarus%202.2.6/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_2.2.6-0_amd64.deb | |
- name: Install macOS dependencies | |
if: matrix.name == 'Mac' | |
run: | | |
brew install --cask lazarus | |
brew install sdl2 rgbds | |
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 | |
curl -Lo 'sdl2.zip' 'https://github.com/libsdl-org/SDL/releases/download/release-2.26.2/SDL2-2.26.2-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 | |
if: matrix.name == 'Windows' | |
shell: msys2 {0} | |
run: | | |
curl -Lo lame.tar.gz 'https://downloads.sourceforge.net/project/lame/lame/3.100/lame-3.100.tar.gz' | |
tar xf lame.tar.gz | |
pushd lame-3.100 | |
./configure --prefix="`realpath ..`/lame-install" --disable-dependency-tracking --disable-shared --enable-nasm --disable-gtktest --disable-decoder --disable-frontend | |
make | |
make install | |
popd | |
curl -Lo ffmpeg.tar.xz 'http://ffmpeg.org/releases/ffmpeg-4.4.tar.xz' | |
tar xf ffmpeg.tar.xz | |
cd ffmpeg-4.4 | |
./configure --extra-ldflags="-static" --disable-debug --enable-lto --disable-programs --enable-ffmpeg --disable-doc --disable-everything --enable-protocol=pipe --enable-protocol=file --enable-filter=aresample --enable-decoder=pcm_f32le --enable-demuxer=pcm_f32le --enable-encoder=flac --enable-muxer=ogg --enable-muxer=flac --enable-encoder=pcm_s16le --enable-muxer=wav --enable-libmp3lame --enable-encoder=libmp3lame --enable-muxer=mp3 --extra-cflags="-I`realpath ../lame-install/include`" --extra-ldflags="-L`realpath ../lame-install/lib`" | |
make | |
- 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: 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: Store build | |
uses: actions/upload-artifact@v2 | |
with: | |
name: ${{ matrix.name }} build | |
path: packaging/ |