forked from AttorneyOnline/AO2-Client
-
Notifications
You must be signed in to change notification settings - Fork 0
304 lines (264 loc) · 11.6 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
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
name: CI build
on: [push, pull_request]
env:
ACTIONS_ALLOW_UNSECURE_COMMANDS: 'true'
jobs:
build:
strategy:
fail-fast: false
matrix:
version:
- 5.15.2
platform:
- gcc_64
- android
- msvc2019
- mingw81_32
- clang_64
include:
- platform: gcc_64
os: ubuntu-latest
target: desktop
make: make
- platform: android
os: ubuntu-20.04
target: android
make: make
- platform: msvc2019
os: windows-2019
target: desktop
make: nmake
- platform: mingw81_32
os: windows-latest
target: desktop
arch: win32_mingw81
tools: 'tools_mingw,qt.tools.win32_mingw810'
make: mingw32-make
- platform: clang_64
os: macos-latest
target: desktop
make: make
runs-on: ${{matrix.os}}
steps:
- uses: actions/checkout@master
with:
submodules: recursive
- uses: actions/setup-python@master
with:
python-version: '3.10'
- name: Add msbuild to PATH
if: matrix.platform == 'msvc2019'
uses: microsoft/setup-msbuild@main
- name: Downgrade Android NDK
if: matrix.platform == 'android'
run: |
ANDROID_ROOT=/usr/local/lib/android
ANDROID_SDK_ROOT=${ANDROID_ROOT}/sdk
ANDROID_NDK_ROOT=${ANDROID_SDK_ROOT}/ndk-bundle
SDKMANAGER=${ANDROID_SDK_ROOT}/cmdline-tools/latest/bin/sdkmanager
echo "y" | $SDKMANAGER "ndk;21.4.7075529"
echo "y" | $SDKMANAGER "platforms;android-24"
# this is so stupid but i can't find anything else that works
rm -rf $ANDROID_HOME/ndk/25.2.9519653
ln -sf $ANDROID_HOME/ndk/21.4.7075529 $ANDROID_HOME/ndk/25.2.9519653
- uses: jurplel/install-qt-action@v3
id: qt
with:
version: ${{matrix.version}}
target: ${{matrix.target}}
arch: ${{matrix.arch}}
tools: ${{matrix.tools}}
cache: true
cache-key-prefix: qt
- name: Add tools to PATH (MinGW)
if: matrix.platform == 'mingw81_32'
shell: bash
run: echo "$RUNNER_WORKSPACE/Qt/Tools/mingw810_32/bin" >> $GITHUB_PATH
- name: Configure MSVC (Windows)
if: contains(matrix.platform, 'msvc')
uses: ilammy/msvc-dev-cmd@v1
- name: Install QtApng
run: |
git clone https://github.com/Skycoder42/QtApng.git
cd QtApng
cd src/3rdparty
chmod +x get_libs.sh
./get_libs.sh 1.3.1 1.6.40
cd ../..
qmake CONFIG+=install_ok QMAKE_CXXFLAGS+="-fno-sized-deallocation" QT_PLATFORM=${{matrix.platform}}
${{matrix.make}}
${{matrix.make}} INSTALL_ROOT="${Qt5_DIR}" install
- name: Install Windows Discord RPC
if: contains(matrix.os, 'windows')
env:
ARCH: ${{ matrix.platform == 'msvc2019' && '64' || '32'}}
shell: bash
run: |
curl -L https://github.com/discordapp/discord-rpc/releases/download/v3.4.0/discord-rpc-win.zip -o discord_rpc.zip
unzip discord_rpc.zip
cp ./discord-rpc/win${ARCH}-dynamic/lib/discord-rpc.lib ./lib/
cp ./discord-rpc/win${ARCH}-dynamic/bin/discord-rpc.dll ./bin/
cp ./discord-rpc/win${ARCH}-dynamic/include/discord*.h ./include/
- name: Install Linux Discord RPC
if: matrix.platform == 'gcc_64'
run: |
curl -L https://github.com/discordapp/discord-rpc/releases/download/v3.4.0/discord-rpc-linux.zip -o discord_rpc.zip
unzip discord_rpc.zip
cp ./discord-rpc/linux-dynamic/lib/libdiscord-rpc.so ./lib/
cp ./discord-rpc/linux-dynamic/lib/libdiscord-rpc.so ./bin/
cp ./discord-rpc/linux-dynamic/include/discord*.h ./include/
- name: Install Mac Discord RPC
if: matrix.os == 'macos-latest'
run: |
curl -L https://github.com/discordapp/discord-rpc/releases/download/v3.4.0/discord-rpc-osx.zip -o discord_rpc.zip
unzip discord_rpc.zip
cp ./discord-rpc/osx-dynamic/lib/libdiscord-rpc.dylib ./lib/
cp ./discord-rpc/osx-dynamic/lib/libdiscord-rpc.dylib ./bin/
cp ./discord-rpc/osx-dynamic/include/discord*.h ./include/
- name: Install Windows BASS
if: contains(matrix.os, 'windows')
env:
ARCH: ${{ matrix.platform == 'msvc2019' && '/x64/' || ''}}
shell: bash
run: |
curl http://www.un4seen.com/files/bass24.zip -o bass.zip
unzip -d bass -o bass.zip
cp ./bass/c/${ARCH}bass.lib ./lib/
cp ./bass/${ARCH}bass.dll ./bin/
curl http://www.un4seen.com/files/bassmidi24.zip -o bassmidi.zip
unzip -d bass -o bassmidi.zip
cp ./bass/c/${ARCH}bassmidi.lib ./lib/
cp ./bass/${ARCH}bassmidi.dll ./bin/
curl http://www.un4seen.com/files/bassopus24.zip -o bassopus.zip
unzip -d bass -o bassopus.zip
cp ./bass/c/${ARCH}bassopus.lib ./lib/
cp ./bass/${ARCH}bassopus.dll ./bin/
- name: Install Linux BASS
if: matrix.platform == 'gcc_64'
run: |
curl http://www.un4seen.com/files/bass24-linux.zip -o bass.zip
unzip -d bass -o bass.zip
cp ./bass/libs/x86_64/libbass.so ./lib/
cp ./bass/libs/x86_64/libbass.so ./bin/
curl http://www.un4seen.com/files/bassmidi24-linux.zip -o bassmidi.zip
unzip -d bass -o bassmidi.zip
cp ./bass/libs/x86_64/libbassmidi.so ./lib/
cp ./bass/libs/x86_64/libbassmidi.so ./bin/
curl http://www.un4seen.com/files/bassopus24-linux.zip -o bassopus.zip
unzip -d bass -o bassopus.zip
cp ./bass/libs/x86_64/libbassopus.so ./lib/
cp ./bass/libs/x86_64/libbassopus.so ./bin/
- name: Install Mac BASS
if: matrix.os == 'macos-latest'
run: |
curl http://www.un4seen.com/files/bass24-osx.zip -o bass.zip
unzip -d bass -o bass.zip
cp ./bass/libbass.dylib ./lib/
cp ./bass/libbass.dylib ./bin/
curl http://www.un4seen.com/files/bassmidi24-osx.zip -o bassmidi.zip
unzip -d bass -o bassmidi.zip
cp ./bass/libbassmidi.dylib ./lib/
cp ./bass/libbassmidi.dylib ./bin/
curl http://www.un4seen.com/files/bassopus24-osx.zip -o bassopus.zip
unzip -d bass -o bassopus.zip
cp ./bass/libbassopus.dylib ./lib/
cp ./bass/libbassopus.dylib ./bin/
- name: Install Android BASS
if: matrix.platform == 'android'
run: |
mkdir -p ./android/libs/armeabi-v7a/
curl http://www.un4seen.com/files/bass24-android.zip -o bass.zip
unzip -o bass.zip -d bass
cp ./bass/libs/armeabi-v7a/libbass.so ./lib/
unzip -o bass.zip "libs/*" -d "./android/libs/"
cp ./bass/libs/armeabi-v7a/libbass.so ./android/libs/armeabi-v7a/
curl http://www.un4seen.com/files/bassmidi24-android.zip -o bassmidi.zip
unzip -d bass -o bassmidi.zip
cp ./bass/libs/armeabi-v7a/libbassmidi.so ./lib/
unzip -o bassmidi.zip "libs/*" -d "./android/libs/"
cp ./bass/libs/armeabi-v7a/libbassmidi.so ./android/libs/armeabi-v7a/
curl http://www.un4seen.com/files/bassopus24-android.zip -o bassopus.zip
unzip -d bass -o bassopus.zip
cp ./bass/libs/armeabi-v7a/libbassopus.so ./lib/
unzip -o bassopus.zip "libs/*" -d "./android/libs/"
cp ./bass/libs/armeabi-v7a/libbassopus.so ./android/libs/armeabi-v7a/
- name: qmake
if: matrix.platform != 'android'
run: |
qmake QMAKE_CXXFLAGS+="-fno-sized-deallocation" DEFINES+=DISCORD CONFIG+=install_ok QT_PLATFORM=${{matrix.platform}}
- name: qmake android
if: matrix.platform == 'android'
run: |
qmake CONFIG+=install_ok QT_PLATFORM=${{matrix.platform}} ANDROID_ABIS="armeabi-v7a"
- name: build
run: |
${{matrix.make}}
- name: Deploy Windows
if: contains(matrix.os, 'windows')
working-directory: ${{github.workspace}}/bin/
shell: bash
run: |
windeployqt --no-quick-import --no-translations --no-virtualkeyboard --no-compiler-runtime --no-webkit2 --no-opengl-sw .
cp ../QtApng/plugins/imageformats/qapng.dll ./imageformats/
rm ./imageformats/qtiff.dll
rm ./imageformats/qicns.dll
rm ./imageformats/qico.dll
rm ./imageformats/qsvg.dll
rm ./imageformats/qtga.dll
rm ./imageformats/qwbmp.dll
rm ./Qt5Svg.dll
rm -r iconengines
rm -r bearer
rm -r styles
- name: Copy MingW DLL
if: matrix.platform == 'mingw81_32'
working-directory: ${{github.workspace}}/bin/
shell: bash
run: |
cp $RUNNER_WORKSPACE/Qt/Tools/mingw810_32/bin/libgcc_s_dw2-1.dll .
cp $RUNNER_WORKSPACE/Qt/Tools/mingw810_32/bin/libstdc++-6.dll .
cp $RUNNER_WORKSPACE/Qt/Tools/mingw810_32/bin/libwinpthread-1.dll .
- name: Deploy Linux
if: matrix.platform == 'gcc_64'
working-directory: ${{github.workspace}}/bin/
shell: bash
run: |
cp ../scripts/launch.sh .
mkdir -p imageformats
cp ../QtApng/plugins/imageformats/libqapng.so ./imageformats/libqapng.so
chmod +x launch.sh
chmod +x Attorney_Online
tar -cf Attorney_Online.tar ./*
rm -rf imageformats
rm *.so
rm *.sh
rm Attorney_Online
- name: Deploy Mac
if: matrix.os == 'macos-latest'
working-directory: ${{github.workspace}}/bin/
shell: bash
run: |
macdeployqt Attorney_Online.app
cp ../QtApng/plugins/imageformats/libqapng.dylib ./Attorney_Online.app/Contents/PlugIns/imageformats/
mv *.dylib ./Attorney_Online.app/Contents/Frameworks
install_name_tool -change @loader_path/libbass.dylib @rpath/libbass.dylib ./Attorney_Online.app/Contents/MacOS/Attorney_Online
install_name_tool -change @loader_path/libbassopus.dylib @rpath/libbassopus.dylib ./Attorney_Online.app/Contents/MacOS/Attorney_Online
install_name_tool -change @loader_path/libbassmidi.dylib @rpath/libbassmidi.dylib ./Attorney_Online.app/Contents/MacOS/Attorney_Online
install_name_tool -change @loader_path/libdiscord-rpc.dylib @rpath/libdiscord-rpc.dylib ./Attorney_Online.app/Contents/MacOS/Attorney_Online
install_name_tool -change @loader_path/libqapng.dylib @rpath/libqapng.dylib ./Attorney_Online.app/Contents/MacOS/Attorney_Online
hdiutil create -volname "Attorney_Online" -srcfolder "./Attorney_Online.app" -ov -format UDZO "Attorney_Online.dmg"
rm -r ./Attorney_Online.app/
- name: Deploy Android
if: matrix.platform == 'android'
working-directory: ${{github.workspace}}/
shell: bash
run: |
mkdir -p ./build/libs/armeabi-v7a/
mv ./bin/*.so ./build/libs/armeabi-v7a/
cp ./QtApng/plugins/imageformats/libplugins_imageformats_qapng_armeabi-v7a.so ./build/libs/armeabi-v7a/
androiddeployqt --android-platform android-24 --input android-Attorney_Online-deployment-settings.json --output ./build/ --apk ./bin/AttorneyOnline.apk
- name: Upload Artifact
uses: actions/upload-artifact@master
with:
name: Attorney_Online-${{matrix.os}}-${{matrix.platform}}
path: ${{github.workspace}}/bin/