-
Notifications
You must be signed in to change notification settings - Fork 15
135 lines (119 loc) · 5.57 KB
/
build.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
name: Build hUGETracker
on:
- push
- pull_request
jobs:
build:
strategy:
matrix:
os:
- ubuntu-20.04
- macos-10.15
- windows-2019
include:
- os: ubuntu-20.04
name: Linux
- os: macos-10.15
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@v2
with:
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/