forked from jackaudio/jack2
-
Notifications
You must be signed in to change notification settings - Fork 3
169 lines (166 loc) · 6.33 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
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
name: build
on:
push:
branches:
- '*'
pull_request:
branches:
- '*'
env:
CACHE_VERSION: 20230704
PAWPAW_VERSION: 6a3c6a65a89abe221858c3f7635140074506bfc3
PAWPAW_SKIP_LTO: 1
PAWPAW_SKIP_GLIB: 1
PAWPAW_SKIP_LV2: 1
jobs:
macos:
strategy:
matrix:
target: [intel, universal]
runs-on: macos-11
steps:
- uses: actions/checkout@v3
with:
submodules: recursive
- name: Set up cache
uses: actions/cache@v3
with:
path: |
~/PawPawBuilds
key: macos-${{ matrix.target }}-v${{ env.CACHE_VERSION }}
- name: Set up dependencies
run: |
brew install cmake jq meson
- name: Bootstrap dependencies
shell: bash
run: |
if [ ! -d PawPaw ]; then
git clone https://github.com/DISTRHO/PawPaw.git
git -C PawPaw checkout ${PAWPAW_VERSION}
fi
./PawPaw/bootstrap-jack2.sh macos-${{ matrix.target }} && ./PawPaw/.cleanup.sh macos-${{ matrix.target }}
- name: Build jack2
shell: bash
run: |
pushd PawPaw && source local.env macos-${{ matrix.target }} && popd
python ./waf configure --platform=darwin --prefix=/usr/local
python ./waf build -j $(sysctl -n hw.logicalcpu)
python ./waf install --destdir=$(pwd)/destdir
- name: Set sha8 (non-release)
if: startsWith(github.ref, 'refs/tags/') != true
run: echo "SHA8=$(echo ${{ github.sha }} | cut -c1-8)" >> $GITHUB_ENV
- name: Set sha8 (release)
if: startsWith(github.ref, 'refs/tags/')
run: echo "SHA8=$(echo ${{ github.ref_name }})" >> $GITHUB_ENV
- name: Generate macOS package
shell: bash
run: |
./macosx/generate-pkg.sh $(pwd)/destdir/usr/local ${{ github.event.pull_request.number || env.SHA8 }}
- uses: actions/upload-artifact@v3
with:
name: jack2-macOS-${{ matrix.target }}-${{ github.event.pull_request.number || env.SHA8 }}
path: macosx/jack2-osx-*.pkg
windows:
strategy:
matrix:
target: [win32, win64]
runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@v3
with:
submodules: recursive
- name: Set up cache
uses: actions/cache@v3
with:
path: |
~/PawPawBuilds
key: ${{ matrix.target }}-v${{ env.CACHE_VERSION }}
- name: Restore debian packages cache
run: |
if [ -d ~/PawPawBuilds/debs ] && [ "$(ls ~/PawPawBuilds/debs | wc -l)" -ne 0 ]; then \
sudo cp ~/PawPawBuilds/debs/*.deb /var/cache/apt/archives/; \
fi
- name: Fix GitHub's mess
run: |
sudo rm -f /etc/apt/sources.list.d/microsoft-prod.list
sudo dpkg --add-architecture i386
sudo apt-get update -qq
sudo apt-get install -yqq --allow-downgrades libc6:i386 libgcc-s1:i386 libstdc++6:i386
- name: Set up dependencies
if: ${{ matrix.target == 'win32' }}
run: |
sudo apt-get install -y autopoint build-essential curl cmake jq llvm mingw-w64 xvfb \
binutils-mingw-w64-i686 g++-mingw-w64-i686 mingw-w64 wine-stable:i386
- name: Set up dependencies
if: ${{ matrix.target == 'win64' }}
run: |
sudo apt-get install -y autopoint build-essential curl cmake jq llvm mingw-w64 xvfb \
binutils-mingw-w64-x86-64 g++-mingw-w64-x86-64 mingw-w64 wine-stable
- name: Cache debian packages
run: |
mkdir -p ~/PawPawBuilds/debs && \
sudo mv /var/cache/apt/archives/*.deb ~/PawPawBuilds/debs/
- name: Bootstrap dependencies
shell: bash
run: |
if [ ! -d PawPaw ]; then
git clone https://github.com/DISTRHO/PawPaw.git
git -C PawPaw checkout ${PAWPAW_VERSION}
fi
./PawPaw/bootstrap-jack2.sh ${{ matrix.target }} && ./PawPaw/.cleanup.sh ${{ matrix.target }}
- name: Build jack2
shell: bash
run: |
pushd PawPaw && source local.env ${{ matrix.target }} && popd
export PATH+=":/usr/i686-w64-mingw32/bin"
export LDFLAGS+="-L~/PawPawBuilds/targets/win64/lib32"
./waf configure --platform=win32 --prefix=$(pwd)/destdir --static ${{ matrix.target == 'win64' && '--mixed' || '' }}
./waf build -j $(nproc)
./waf install
- name: Generate MSVC lib files
if: ${{ matrix.target == 'win32' }}
run: |
pushd $(pwd)/destdir/lib
llvm-dlltool -m i386 -D libjack.dll -d libjack.def -l libjack.lib
llvm-dlltool -m i386 -D libjacknet.dll -d libjacknet.def -l libjacknet.lib
llvm-dlltool -m i386 -D libjackserver.dll -d libjackserver.def -l libjackserver.lib
popd
- name: Generate MSVC lib files
if: ${{ matrix.target == 'win64' }}
run: |
# 32bit
pushd $(pwd)/destdir/lib32
llvm-dlltool -m i386 -D libjack.dll -d libjack.def -l libjack.lib
popd
# 64bit
pushd $(pwd)/destdir/lib
llvm-dlltool -m i386:x86-64 -D libjack64.dll -d libjack64.def -l libjack64.lib
llvm-dlltool -m i386:x86-64 -D libjacknet64.dll -d libjacknet64.def -l libjacknet64.lib
llvm-dlltool -m i386:x86-64 -D libjackserver64.dll -d libjackserver64.def -l libjackserver64.lib
popd
- name: Set sha8 (non-release)
if: startsWith(github.ref, 'refs/tags/') != true
run: echo "SHA8=$(echo ${{ github.sha }} | cut -c1-8)" >> $GITHUB_ENV
- name: Set sha8 (release)
if: startsWith(github.ref, 'refs/tags/')
run: echo "SHA8=$(echo ${{ github.ref_name }})" >> $GITHUB_ENV
- name: Generate Windows installer
shell: bash
run: |
# Setup wine
export WINEDLLOVERRIDES="mscoree,mshtml="
export WINEPREFIX=$(pwd)/innosetup
xvfb-run wineboot -u
# Download and install innosetup
curl -L https://jrsoftware.org/download.php/is.exe?site=2 -o is.exe
xvfb-run wine is.exe /allusers /dir=C:\\InnoSeup /nocancel /norestart /verysilent
# create installer
ln -sf $(pwd)/destdir windows/inno/${{ matrix.target }}
pushd windows/inno
echo "#define VERSION \"${{ github.event.pull_request.number || env.SHA8 }}\"" > version.iss
xvfb-run wine ${WINEPREFIX}/drive_c/InnoSeup/ISCC.exe ${{ matrix.target }}-mini.iss
popd
- uses: actions/upload-artifact@v3
with:
name: jack2-${{ matrix.target }}-${{ github.event.pull_request.number || env.SHA8 }}
path: windows/inno/jack2-*.exe