1image: $CI_SERVER_HOST:5050/libretro-infrastructure/libretro-build-amd64-ubuntu:latest
2
3stages:
4  - build-prepare
5  - build
6  - prepare-for-static-cores
7  - trigger-static-cores
8
9build-retroarch-windows-x64:
10  image: $CI_SERVER_HOST:5050/libretro-infrastructure/libretro-build-mxe-win64-cross:gcc10
11  stage: build
12  variables:
13    MEDIA_PATH: .media
14    STRIP_BIN:  1
15  before_script:
16    - export NUMPROC=$(($(nproc)/3))
17  artifacts:
18    paths:
19    - retroarch.exe
20    - ${MEDIA_PATH}
21    expire_in: 10 min
22  dependencies: []
23  script:
24    - "MOC=/usr/lib/mxe/usr/x86_64-w64-mingw32.shared/qt5/bin/moc ./configure --host=x86_64-w64-mingw32.shared"
25    - "make -j$NUMPROC"
26    - if [ $STRIP_BIN -eq 1 ]; then strip --strip-unneeded retroarch.exe; fi
27    - "mkdir -p ${MEDIA_PATH}/${CI_PROJECT_NAME}/filters/audio"
28    - "mkdir -p ${MEDIA_PATH}/${CI_PROJECT_NAME}/filters/video"
29    - "mkdir -p ${MEDIA_PATH}/${CI_PROJECT_NAME}/pkg"
30    - "mkdir -p ${MEDIA_PATH}/${CI_PROJECT_NAME}/redist"
31    - "cd libretro-common/audio/dsp_filters && make -j$NUMPROC platform=win compiler=x86_64-w64-mingw32.static-gcc build=release && make -j$NUMPROC platform=win compiler=x86_64-w64-mingw32.static-gcc build=release strip && cd -"
32    - "cp -f libretro-common/audio/dsp_filters/*.dll ${MEDIA_PATH}/${CI_PROJECT_NAME}/filters/audio"
33    - "cp -f libretro-common/audio/dsp_filters/*.dsp ${MEDIA_PATH}/${CI_PROJECT_NAME}/filters/audio"
34    - "cd gfx/video_filters && make -j$NUMPROC platform=win compiler=x86_64-w64-mingw32.static-gcc build=release && make -j$NUMPROC platform=win compiler=x86_64-w64-mingw32.static-gcc build=release strip && cd -"
35    - "cp -f gfx/video_filters/*.dll ${MEDIA_PATH}/${CI_PROJECT_NAME}/filters/video"
36    - "cp -f gfx/video_filters/*.filt ${MEDIA_PATH}/${CI_PROJECT_NAME}/filters/video"
37    - "cp -f retroarch.cfg ${MEDIA_PATH}/${CI_PROJECT_NAME}/pkg/retroarch.default.cfg"
38    - "echo -e '[Paths]\nPlugins = ./' > ${MEDIA_PATH}/${CI_PROJECT_NAME}/pkg/qt.conf"
39    - "/bin/bash /usr/lib/mxe/tools/copydlldeps.sh
40        --infile retroarch.exe
41        --destdir ${MEDIA_PATH}/${CI_PROJECT_NAME}/redist/
42        --recursivesrcdir /usr/lib/mxe/usr/x86_64-w64-mingw32.shared/
43        --enforcedir /usr/lib/mxe/usr/x86_64-w64-mingw32.shared/qt5/plugins/bearer/
44        --enforcedir /usr/lib/mxe/usr/x86_64-w64-mingw32.shared/qt5/plugins/iconengines/
45        --enforcedir /usr/lib/mxe/usr/x86_64-w64-mingw32.shared/qt5/plugins/imageformats/
46        --enforcedir /usr/lib/mxe/usr/x86_64-w64-mingw32.shared/qt5/plugins/platforms/
47        --enforcedir /usr/lib/mxe/usr/x86_64-w64-mingw32.shared/qt5/plugins/styles/
48        --copy
49        --objdump x86_64-w64-mingw32.shared-objdump"
50    - "rm -f ${MEDIA_PATH}/${CI_PROJECT_NAME}/redist/opengl32.dll"
51
52build-retroarch-windows-i686:
53  image: $CI_SERVER_HOST:5050/libretro-infrastructure/libretro-build-mxe-win32-cross:gcc10
54  stage: build
55  variables:
56    MEDIA_PATH: .media
57    STRIP_BIN:  1
58  before_script:
59    - export NUMPROC=$(($(nproc)/3))
60  artifacts:
61    paths:
62    - retroarch.exe
63    - ${MEDIA_PATH}
64    expire_in: 10 min
65  dependencies: []
66  script:
67    - "MOC=/usr/lib/mxe/usr/i686-w64-mingw32.shared/qt5/bin/moc ./configure --host=i686-w64-mingw32.shared"
68    - "make -j$NUMPROC"
69    - if [ $STRIP_BIN -eq 1 ]; then strip --strip-unneeded retroarch.exe; fi
70    - "mkdir -p ${MEDIA_PATH}/${CI_PROJECT_NAME}/filters/audio"
71    - "mkdir -p ${MEDIA_PATH}/${CI_PROJECT_NAME}/filters/video"
72    - "mkdir -p ${MEDIA_PATH}/${CI_PROJECT_NAME}/pkg"
73    - "mkdir -p ${MEDIA_PATH}/${CI_PROJECT_NAME}/redist"
74    - "cd libretro-common/audio/dsp_filters && make -j$NUMPROC platform=win compiler=i686-w64-mingw32.static-gcc build=release && make -j$NUMPROC platform=win compiler=i686-w64-mingw32.static-gcc build=release strip && cd -"
75    - "cp -f libretro-common/audio/dsp_filters/*.dll ${MEDIA_PATH}/${CI_PROJECT_NAME}/filters/audio"
76    - "cp -f libretro-common/audio/dsp_filters/*.dsp ${MEDIA_PATH}/${CI_PROJECT_NAME}/filters/audio"
77    - "cd gfx/video_filters && make -j$NUMPROC platform=win compiler=i686-w64-mingw32.static-gcc build=release && make -j$NUMPROC platform=win compiler=i686-w64-mingw32.static-gcc build=release strip && cd -"
78    - "cp -f gfx/video_filters/*.dll ${MEDIA_PATH}/${CI_PROJECT_NAME}/filters/video"
79    - "cp -f gfx/video_filters/*.filt ${MEDIA_PATH}/${CI_PROJECT_NAME}/filters/video"
80    - "cp -f retroarch.cfg ${MEDIA_PATH}/${CI_PROJECT_NAME}/pkg/retroarch.default.cfg"
81    - "echo -e '[Paths]\nPlugins = ./' > ${MEDIA_PATH}/${CI_PROJECT_NAME}/pkg/qt.conf"
82    - "/bin/bash /usr/lib/mxe/tools/copydlldeps.sh
83        --infile retroarch.exe
84        --destdir ${MEDIA_PATH}/${CI_PROJECT_NAME}/redist/
85        --recursivesrcdir /usr/lib/mxe/usr/i686-w64-mingw32.shared/
86        --enforcedir /usr/lib/mxe/usr/i686-w64-mingw32.shared/qt5/plugins/bearer/
87        --enforcedir /usr/lib/mxe/usr/i686-w64-mingw32.shared/qt5/plugins/iconengines/
88        --enforcedir /usr/lib/mxe/usr/i686-w64-mingw32.shared/qt5/plugins/imageformats/
89        --enforcedir /usr/lib/mxe/usr/i686-w64-mingw32.shared/qt5/plugins/platforms/
90        --enforcedir /usr/lib/mxe/usr/i686-w64-mingw32.shared/qt5/plugins/styles/
91        --copy
92        --objdump i686-w64-mingw32.shared-objdump"
93    - "rm -f ${MEDIA_PATH}/${CI_PROJECT_NAME}/redist/opengl32.dll"
94
95build-retroarch-windows-msvc10-x64:
96  tags:
97    - msvc2010
98  stage: build
99  variables:
100    MEDIA_PATH:     .media
101    MSYSTEM:        MINGW64
102    ARCH:           x86_64
103    MSYS_BIN_DIR:   C:\msys64\usr\bin
104    SDK_BIN_DIR:    C:\Program Files\Microsoft SDKs\Windows\v7.1\Bin
105    RCEDIT_BIN_DIR: C:\Program Files\rcedit
106    PEDEPS_BIN_DIR: C:\Program Files\pedeps-0.1.9-win64\bin
107  before_script:
108    - $Env:HOME = "."
109    - $Env:Path += -join(";", "$Env:SDK_BIN_DIR", ";", "$Env:RCEDIT_BIN_DIR", ";", "$Env:PEDEPS_BIN_DIR")
110  artifacts:
111    paths:
112    - retroarch.exe
113    - ${MEDIA_PATH}
114    expire_in: 10 min
115  dependencies: []
116  script:
117    # Build RetroArch
118    - $Script:MakeCmd = "$Env:MSYS_BIN_DIR\env.exe $Env:MSYS_BIN_DIR\bash.exe -l -c 'make -f Makefile.griffin platform=windows_msvc2010_x64'"
119    - Invoke-Expression $Script:MakeCmd
120    - mt.exe -nologo -manifest "retroarch.exe.manifest" -outputresource:"retroarch.exe;#1"
121    - rcedit-x64.exe "retroarch.exe" --set-icon "media\retroarch.ico"
122    # Create .media subdirectories
123    - New-Item -Path "$Env:MEDIA_PATH/$Env:CI_PROJECT_NAME/filters/audio" -ItemType Directory
124    - New-Item -Path "$Env:MEDIA_PATH/$Env:CI_PROJECT_NAME/filters/video" -ItemType Directory
125    - New-Item -Path "$Env:MEDIA_PATH/$Env:CI_PROJECT_NAME/pkg" -ItemType Directory
126    - New-Item -Path "$Env:MEDIA_PATH/$Env:CI_PROJECT_NAME/redist" -ItemType Directory
127    # Copy audio/video filters
128    - Get-ChildItem -Path "libretro-common/audio/dsp_filters/*" -Include *.dsp | Copy-Item -Destination "$Env:MEDIA_PATH/$Env:CI_PROJECT_NAME/filters/audio"
129    - Get-ChildItem -Path "gfx/video_filters/*" -Include *.filt | Copy-Item -Destination "$Env:MEDIA_PATH/$Env:CI_PROJECT_NAME/filters/video"
130    # Copy default config file
131    - Copy-Item -Path "retroarch.cfg" -Destination "$Env:MEDIA_PATH/$Env:CI_PROJECT_NAME/pkg/retroarch.default.cfg"
132    # Copy dll dependencies
133    # (note that msvc10 build should not have any, but this
134    # may change in the future)
135    - copypedeps.exe -r retroarch.exe "$Env:MEDIA_PATH/$Env:CI_PROJECT_NAME/redist"
136    - Remove-Item "$Env:MEDIA_PATH/$Env:CI_PROJECT_NAME/redist/retroarch.exe" -ErrorAction Ignore
137
138build-retroarch-windows-msvc10-i686:
139  tags:
140    - msvc2010
141  stage: build
142  variables:
143    MEDIA_PATH:     .media
144    MSYSTEM:        MINGW32
145    ARCH:           x86
146    MSYS_BIN_DIR:   C:\msys64\usr\bin
147    SDK_BIN_DIR:    C:\Program Files\Microsoft SDKs\Windows\v7.1\Bin
148    RCEDIT_BIN_DIR: C:\Program Files\rcedit
149    PEDEPS_BIN_DIR: C:\Program Files\pedeps-0.1.9-win64\bin
150  before_script:
151    - $Env:HOME = "."
152    - $Env:Path += -join(";", "$Env:SDK_BIN_DIR", ";", "$Env:RCEDIT_BIN_DIR", ";", "$Env:PEDEPS_BIN_DIR")
153  artifacts:
154    paths:
155    - retroarch.exe
156    - ${MEDIA_PATH}
157    expire_in: 10 min
158  dependencies: []
159  script:
160    # Build RetroArch
161    - $Script:MakeCmd = "$Env:MSYS_BIN_DIR\env.exe $Env:MSYS_BIN_DIR\bash.exe -l -c 'make -f Makefile.griffin platform=windows_msvc2010_x86'"
162    - Invoke-Expression $Script:MakeCmd
163    - mt.exe -nologo -manifest "retroarch.exe.manifest" -outputresource:"retroarch.exe;#1"
164    - rcedit-x64.exe "retroarch.exe" --set-icon "media\retroarch.ico"
165    # Create .media subdirectories
166    - New-Item -Path "$Env:MEDIA_PATH/$Env:CI_PROJECT_NAME/filters/audio" -ItemType Directory
167    - New-Item -Path "$Env:MEDIA_PATH/$Env:CI_PROJECT_NAME/filters/video" -ItemType Directory
168    - New-Item -Path "$Env:MEDIA_PATH/$Env:CI_PROJECT_NAME/pkg" -ItemType Directory
169    - New-Item -Path "$Env:MEDIA_PATH/$Env:CI_PROJECT_NAME/redist" -ItemType Directory
170    # Copy audio/video filters
171    - Get-ChildItem -Path "libretro-common/audio/dsp_filters/*" -Include *.dsp | Copy-Item -Destination "$Env:MEDIA_PATH/$Env:CI_PROJECT_NAME/filters/audio"
172    - Get-ChildItem -Path "gfx/video_filters/*" -Include *.filt | Copy-Item -Destination "$Env:MEDIA_PATH/$Env:CI_PROJECT_NAME/filters/video"
173    # Copy default config file
174    - Copy-Item -Path "retroarch.cfg" -Destination "$Env:MEDIA_PATH/$Env:CI_PROJECT_NAME/pkg/retroarch.default.cfg"
175    # Copy dll dependencies
176    # (note that msvc10 build should not have any, but this
177    # may change in the future)
178    - copypedeps.exe -r retroarch.exe "$Env:MEDIA_PATH/$Env:CI_PROJECT_NAME/redist"
179    - Remove-Item "$Env:MEDIA_PATH/$Env:CI_PROJECT_NAME/redist/retroarch.exe" -ErrorAction Ignore
180
181build-retroarch-windows-msvc05-i686:
182  tags:
183    - win10
184  stage: build
185  variables:
186    MEDIA_PATH:     .media
187    MSYSTEM:        MINGW32
188    ARCH:           x86
189    MSYS_BIN_DIR:   C:\msys64\usr\bin
190    SDK_BIN_DIR:    C:\Program Files\Microsoft SDKs\Windows\v7.1\Bin
191    RCEDIT_BIN_DIR: C:\Program Files\rcedit
192    PEDEPS_BIN_DIR: C:\Program Files\pedeps-0.1.9-win64\bin
193    VS80COMNTOOLS:  C:\Program Files (x86)\Microsoft Visual Studio 8\Common7\Tools\
194  before_script:
195    - $Env:HOME = "."
196    - $Env:Path += -join(";", "$Env:SDK_BIN_DIR", ";", "$Env:RCEDIT_BIN_DIR", ";", "$Env:PEDEPS_BIN_DIR")
197  artifacts:
198    paths:
199    - retroarch.exe
200    - ${MEDIA_PATH}
201    expire_in: 10 min
202  dependencies: []
203  script:
204    # Build RetroArch
205    - $Script:MakeCmd = "$Env:MSYS_BIN_DIR\env.exe $Env:MSYS_BIN_DIR\bash.exe -l -c 'make -f Makefile.griffin platform=windows_msvc2005_x86'"
206    - Invoke-Expression $Script:MakeCmd
207    - mt.exe -nologo -manifest "retroarch.exe.manifest" -outputresource:"retroarch.exe;#1"
208    - rcedit-x64.exe "retroarch.exe" --set-icon "media\retroarch.ico"
209    # Create .media subdirectories
210    - New-Item -Path "$Env:MEDIA_PATH/$Env:CI_PROJECT_NAME/filters/audio" -ItemType Directory
211    - New-Item -Path "$Env:MEDIA_PATH/$Env:CI_PROJECT_NAME/filters/video" -ItemType Directory
212    - New-Item -Path "$Env:MEDIA_PATH/$Env:CI_PROJECT_NAME/pkg" -ItemType Directory
213    - New-Item -Path "$Env:MEDIA_PATH/$Env:CI_PROJECT_NAME/redist" -ItemType Directory
214    # Copy audio/video filters
215    - Get-ChildItem -Path "libretro-common/audio/dsp_filters/*" -Include *.dsp | Copy-Item -Destination "$Env:MEDIA_PATH/$Env:CI_PROJECT_NAME/filters/audio"
216    - Get-ChildItem -Path "gfx/video_filters/*" -Include *.filt | Copy-Item -Destination "$Env:MEDIA_PATH/$Env:CI_PROJECT_NAME/filters/video"
217    # Copy default config file
218    - Copy-Item -Path "retroarch.cfg" -Destination "$Env:MEDIA_PATH/$Env:CI_PROJECT_NAME/pkg/retroarch.default.cfg"
219    # Copy dll dependencies
220    # (note that msvc05 build should not have any, but this
221    # may change in the future)
222    - copypedeps.exe -r retroarch.exe "$Env:MEDIA_PATH/$Env:CI_PROJECT_NAME/redist"
223    - Remove-Item "$Env:MEDIA_PATH/$Env:CI_PROJECT_NAME/redist/retroarch.exe" -ErrorAction Ignore
224
225build-retroarch-linux-x64:
226  image: $CI_SERVER_HOST:5050/libretro-infrastructure/libretro-build-amd64-ubuntu:xenial-gcc9
227  stage: build
228  variables:
229    MEDIA_PATH: .media
230    STRIP_BIN:  1
231  before_script:
232    - export NUMPROC=$(($(nproc)/3))
233  artifacts:
234    paths:
235    - retroarch
236    - retroarch_qt
237    - ${MEDIA_PATH}
238    expire_in: 10 min
239  dependencies: []
240  script:
241    # Qt build
242    - "mkdir -p ${MEDIA_PATH}/${CI_PROJECT_NAME}/AppDirQt"
243    - "./configure --prefix=/usr"
244    - "make -j$NUMPROC"
245    - if [ $STRIP_BIN -eq 1 ]; then strip --strip-unneeded retroarch; fi
246    - "make install DESTDIR=${MEDIA_PATH}/${CI_PROJECT_NAME}/AppDirQt prefix=/usr"
247    - "rm -rf ${MEDIA_PATH}/${CI_PROJECT_NAME}/AppDirQt/etc"
248    - "cd ${MEDIA_PATH}/${CI_PROJECT_NAME}/ && tar -czf AppDirQt.tar.gz AppDirQt && rm -rf AppDirQt && cd -"
249    - "mv -f retroarch retroarch_qt"
250    # Non-Qt build
251    - "mkdir -p ${MEDIA_PATH}/${CI_PROJECT_NAME}/AppDir"
252    - "make clean"
253    - "./configure --disable-qt --prefix=/usr"
254    - "make -j$NUMPROC"
255    - if [ $STRIP_BIN -eq 1 ]; then strip --strip-unneeded retroarch; fi
256    - "make install DESTDIR=${MEDIA_PATH}/${CI_PROJECT_NAME}/AppDir prefix=/usr"
257    - "rm -rf ${MEDIA_PATH}/${CI_PROJECT_NAME}/AppDir/etc"
258    - "cd ${MEDIA_PATH}/${CI_PROJECT_NAME}/ && tar -czf AppDir.tar.gz AppDir && rm -rf AppDir && cd -"
259    # Filters
260    - "mkdir -p ${MEDIA_PATH}/${CI_PROJECT_NAME}/filters/audio"
261    - "mkdir -p ${MEDIA_PATH}/${CI_PROJECT_NAME}/filters/video"
262    - "cd libretro-common/audio/dsp_filters && make -j$NUMPROC build=release && make -j$NUMPROC build=release strip && cd -"
263    - "cp -f libretro-common/audio/dsp_filters/*.so ${MEDIA_PATH}/${CI_PROJECT_NAME}/filters/audio"
264    - "cp -f libretro-common/audio/dsp_filters/*.dsp ${MEDIA_PATH}/${CI_PROJECT_NAME}/filters/audio"
265    - "cd gfx/video_filters && make -j$NUMPROC build=release && make -j$NUMPROC build=release strip && cd -"
266    - "cp -f gfx/video_filters/*.so ${MEDIA_PATH}/${CI_PROJECT_NAME}/filters/video"
267    - "cp -f gfx/video_filters/*.filt ${MEDIA_PATH}/${CI_PROJECT_NAME}/filters/video"
268
269build-retroarch-linux-i686:
270  image: $CI_SERVER_HOST:5050/libretro-infrastructure/libretro-build-i386-ubuntu:xenial-gcc9
271  stage: build
272  variables:
273    MEDIA_PATH: .media
274    STRIP_BIN:  1
275  before_script:
276    - export NUMPROC=$(($(nproc)/3))
277  artifacts:
278    paths:
279    - retroarch
280    - ${MEDIA_PATH}
281    expire_in: 10 min
282  dependencies: []
283  script:
284    # Qt build
285    - "mkdir -p ${MEDIA_PATH}/${CI_PROJECT_NAME}/AppDirQt"
286    - "./configure --prefix=/usr"
287    - "make -j$NUMPROC"
288    - if [ $STRIP_BIN -eq 1 ]; then strip --strip-unneeded retroarch; fi
289    - "make install DESTDIR=${MEDIA_PATH}/${CI_PROJECT_NAME}/AppDirQt prefix=/usr"
290    - "rm -rf ${MEDIA_PATH}/${CI_PROJECT_NAME}/AppDirQt/etc"
291    - "cd ${MEDIA_PATH}/${CI_PROJECT_NAME}/ && tar -czf AppDirQt.tar.gz AppDirQt && rm -rf AppDirQt && cd -"
292    - "mv -f retroarch retroarch_qt"
293    # Non-Qt build
294    - "mkdir -p ${MEDIA_PATH}/${CI_PROJECT_NAME}/AppDir"
295    - "make clean"
296    - "./configure --disable-qt --prefix=/usr"
297    - "make -j$NUMPROC"
298    - if [ $STRIP_BIN -eq 1 ]; then strip --strip-unneeded retroarch; fi
299    - "make install DESTDIR=${MEDIA_PATH}/${CI_PROJECT_NAME}/AppDir prefix=/usr"
300    - "rm -rf ${MEDIA_PATH}/${CI_PROJECT_NAME}/AppDir/etc"
301    - "cd ${MEDIA_PATH}/${CI_PROJECT_NAME}/ && tar -czf AppDir.tar.gz AppDir && rm -rf AppDir && cd -"
302    # Filters
303    - "mkdir -p ${MEDIA_PATH}/${CI_PROJECT_NAME}/filters/audio"
304    - "mkdir -p ${MEDIA_PATH}/${CI_PROJECT_NAME}/filters/video"
305    - "cd libretro-common/audio/dsp_filters && make -j$NUMPROC build=release && make -j$NUMPROC build=release strip && cd -"
306    - "cp -f libretro-common/audio/dsp_filters/*.so ${MEDIA_PATH}/${CI_PROJECT_NAME}/filters/audio"
307    - "cp -f libretro-common/audio/dsp_filters/*.dsp ${MEDIA_PATH}/${CI_PROJECT_NAME}/filters/audio"
308    - "cd gfx/video_filters && make -j$NUMPROC build=release && make -j$NUMPROC build=release strip && cd -"
309    - "cp -f gfx/video_filters/*.so ${MEDIA_PATH}/${CI_PROJECT_NAME}/filters/video"
310    - "cp -f gfx/video_filters/*.filt ${MEDIA_PATH}/${CI_PROJECT_NAME}/filters/video"
311
312.build-retroarch-macos-xcode:
313  # Metal/Universal x86_64 arm64 is default
314  tags:
315    - macosx-packaging
316  stage: build
317  variables:
318    XCARCHIVE_PATH: pkg/apple/build/RetroArchUniversal
319    XCPROJECT_NAME: RetroArch_Metal
320    XCCONFIG: GitLabCI.xcconfig
321  artifacts:
322    paths:
323    - ${XCPROJECT_NAME}.zip
324    - retroarch-repo/
325    expire_in: 10 min
326  dependencies: []
327  script:
328    - xcodebuild -project pkg/apple/${XCPROJECT_NAME}.xcodeproj -config Release -scheme RetroArch -archivePath ${XCARCHIVE_PATH} -xcconfig pkg/apple/${XCCONFIG} archive
329    - pushd ${XCARCHIVE_PATH}.xcarchive/Products/Users/gitlab/Applications/
330    - ditto -c -k --sequesterRsrc --keepParent RetroArch.app RetroArch.zip
331    - popd
332    - mv ${XCARCHIVE_PATH}.xcarchive/Products/Users/gitlab/Applications/RetroArch.zip ${XCPROJECT_NAME}.zip
333    - mkdir .retroarch-repo
334    - "cp -r ./* .retroarch-repo"
335    - "mv .retroarch-repo/ retroarch-repo/"
336
337# Mac OS Universal, Metal
338build-retroarch-osx-universal-metal:
339  extends: .build-retroarch-macos-xcode
340
341build-retroarch-osx-opengl-x64:
342  extends: .build-retroarch-macos-xcode
343  variables:
344    XCARCHIVE_PATH: pkg/apple/build/RetroArchOpenGL
345    XCPROJECT_NAME: RetroArch
346    XCCONFIG: OpenGL_GitLabCI.xcconfig
347
348build-retroarch-ios-arm64:
349  extends: .build-retroarch-macos-xcode
350  variables:
351    XCPROJECT_NAME: RetroArch_iOS11_Metal
352    XCCONFIG: GitLabCI.xcconfig
353    XCSCHEME: "RetroArch iOS Release"
354  artifacts:
355    paths:
356    - retroarch-repo/
357    expire_in: 10 min
358  script:
359    - xcodebuild -project pkg/apple/${XCPROJECT_NAME}.xcodeproj -config Release -scheme "${XCSCHEME}" -xcconfig pkg/apple/iOS/GitLabCI.xcconfig build
360    - mkdir .retroarch-repo
361    - "cp -r ./* .retroarch-repo"
362    - "mv .retroarch-repo/ retroarch-repo/"
363
364build-retroarch-ios9:
365  extends: .build-retroarch-macos-xcode
366  variables:
367    XCPROJECT_NAME: RetroArch_iOS9
368    XCCONFIG: GitLabCI.xcconfig
369    XCSCHEME: "RetroArchiOS9"
370  artifacts:
371    paths:
372    - retroarch-repo/
373    expire_in: 10 min
374  script:
375    - xcodebuild -project pkg/apple/${XCPROJECT_NAME}.xcodeproj -config Release -scheme "${XCSCHEME}" -xcconfig pkg/apple/iOS/GitLabCI.xcconfig build
376    - mkdir .retroarch-repo
377    - "cp -r ./* .retroarch-repo"
378    - "mv .retroarch-repo/ retroarch-repo/"
379
380build-retroarch-tvos-arm64:
381  extends: build-retroarch-ios-arm64
382  variables:
383    XCSCHEME: "RetroArch tvOS Release"
384
385build-retroarch-dingux-mips32:
386  image: $CI_SERVER_HOST:5050/libretro-infrastructure/libretro-build-dingux:latest
387  stage: build
388  variables:
389    MEDIA_PATH: .media
390    STRIP_BIN:  1
391  before_script:
392    - export NUMPROC=$(($(nproc)/3))
393  artifacts:
394    paths:
395    - retroarch
396    - retroarch_rg350.opk
397    - ${MEDIA_PATH}
398    expire_in: 10 min
399  dependencies: []
400  script:
401    - "make -j$NUMPROC -f Makefile.rg350"
402    - "mkdir -p ${MEDIA_PATH}/${CI_PROJECT_NAME}/filters/audio"
403    - "mkdir -p ${MEDIA_PATH}/${CI_PROJECT_NAME}/filters/video"
404    - "cp -f libretro-common/audio/dsp_filters/*.dsp ${MEDIA_PATH}/${CI_PROJECT_NAME}/filters/audio"
405    - "cp -f gfx/video_filters/*.filt ${MEDIA_PATH}/${CI_PROJECT_NAME}/filters/video"
406
407build-retroarch-dingux-odbeta-mips32:
408  image: $CI_SERVER_HOST:5050/libretro-infrastructure/libretro-build-dingux:odbeta
409  stage: build
410  variables:
411    MEDIA_PATH: .media
412    STRIP_BIN:  1
413  before_script:
414    - export NUMPROC=$(($(nproc)/3))
415  artifacts:
416    paths:
417    - retroarch
418    - retroarch_rg350_odbeta.opk
419    - ${MEDIA_PATH}
420    expire_in: 10 min
421  dependencies: []
422  script:
423    - "make -j$NUMPROC -f Makefile.rg350_odbeta"
424    - "mkdir -p ${MEDIA_PATH}/${CI_PROJECT_NAME}/filters/audio"
425    - "mkdir -p ${MEDIA_PATH}/${CI_PROJECT_NAME}/filters/video"
426    - "cp -f libretro-common/audio/dsp_filters/*.dsp ${MEDIA_PATH}/${CI_PROJECT_NAME}/filters/audio"
427    - "cp -f gfx/video_filters/*.filt ${MEDIA_PATH}/${CI_PROJECT_NAME}/filters/video"
428
429build-retroarch-rs90-odbeta-mips32:
430  image: $CI_SERVER_HOST:5050/libretro-infrastructure/libretro-build-dingux:odbeta
431  stage: build
432  variables:
433    MEDIA_PATH: .media
434    STRIP_BIN:  1
435  before_script:
436    - export NUMPROC=$(($(nproc)/3))
437  artifacts:
438    paths:
439    - retroarch
440    - retroarch_rs90_odbeta.opk
441    - ${MEDIA_PATH}
442    expire_in: 10 min
443  dependencies: []
444  script:
445    - "make -j$NUMPROC -f Makefile.rs90"
446    - "mkdir -p ${MEDIA_PATH}/${CI_PROJECT_NAME}/filters/audio"
447    - "mkdir -p ${MEDIA_PATH}/${CI_PROJECT_NAME}/filters/video"
448    - "cp -f libretro-common/audio/dsp_filters/*.dsp ${MEDIA_PATH}/${CI_PROJECT_NAME}/filters/audio"
449    - "cp -f gfx/video_filters/*.filt ${MEDIA_PATH}/${CI_PROJECT_NAME}/filters/video"
450
451build-retroarch-android-normal:
452  image: $CI_SERVER_HOST:5050/libretro-infrastructure/libretro-build-android:latest
453  stage: build
454  artifacts:
455    paths:
456    - retroarch-precompiled/
457    expire_in: 10 min
458  script:
459    - "cd pkg/android/phoenix && ./gradlew assembleNormalRelease && cd -"
460    - "mkdir .retroarch-precompiled"
461    - "cp -r ./* .retroarch-precompiled/"
462    - "mv .retroarch-precompiled/ retroarch-precompiled/"
463
464build-retroarch-android-aarch64:
465  image: $CI_SERVER_HOST:5050/libretro-infrastructure/libretro-build-android:latest
466  stage: build
467  artifacts:
468    paths:
469    - retroarch-precompiled/
470    expire_in: 10 min
471  script:
472    - "cd pkg/android/phoenix && ./gradlew assembleAarch64Release && cd -"
473    - "mkdir .retroarch-precompiled"
474    - "cp -r ./* .retroarch-precompiled/"
475    - "mv .retroarch-precompiled/ retroarch-precompiled/"
476
477build-retroarch-android-ra32:
478  image: $CI_SERVER_HOST:5050/libretro-infrastructure/libretro-build-android:latest
479  stage: build
480  artifacts:
481    paths:
482    - retroarch-precompiled/
483    expire_in: 10 min
484  script:
485    - "cd pkg/android/phoenix && ./gradlew assembleRa32Release && cd -"
486    - "mkdir .retroarch-precompiled"
487    - "cp -r ./* .retroarch-precompiled/"
488    - "mv .retroarch-precompiled/ retroarch-precompiled/"
489
490build-retroarch-android-playstore-normal:
491  image: $CI_SERVER_HOST:5050/libretro-infrastructure/libretro-build-android:latest
492  stage: build
493  artifacts:
494    paths:
495    - retroarch-precompiled/
496    expire_in: 10 min
497  script:
498    - "cd pkg/android/phoenix && ./gradlew bundlePlayStoreNormalRelease && cd -"
499    - "mkdir .retroarch-precompiled"
500    - "cp -r ./* .retroarch-precompiled/"
501    - "mv .retroarch-precompiled/ retroarch-precompiled/"
502
503build-retroarch-android-playstore-plus:
504  image: $CI_SERVER_HOST:5050/libretro-infrastructure/libretro-build-android:latest
505  stage: build
506  artifacts:
507    paths:
508    - retroarch-precompiled/
509    expire_in: 10 min
510  script:
511    - "cd pkg/android/phoenix && ./gradlew bundlePlayStorePlusRelease && cd -"
512    - "mkdir .retroarch-precompiled"
513    - "cp -r ./* .retroarch-precompiled/"
514    - "mv .retroarch-precompiled/ retroarch-precompiled/"
515
516build-static-retroarch-libnx-aarch64:
517  image: $CI_SERVER_HOST:5050/libretro-infrastructure/libretro-build-libnx-devkitpro:latest
518  stage: prepare-for-static-cores
519  before_script:
520    - export NUMPROC=$(($(nproc)/3))
521  artifacts:
522    paths:
523    -  retroarch-precompiled/
524    expire_in: 10 min
525  dependencies: []
526  needs:
527    # Static dummy builds without a core so its a good check if it properly builds
528    - build-static-retroarch-dummy-libnx-aarch64
529  script:
530    # Allow failure since we don't have a core
531    - "make -f Makefile.libnx -j$NUMPROC ||:"
532    - "mkdir .retroarch-precompiled"
533    - "cp -r ./* .retroarch-precompiled/"
534    - "mv .retroarch-precompiled/ retroarch-precompiled/"
535
536build-static-retroarch-dummy-libnx-aarch64:
537  image: $CI_SERVER_HOST:5050/libretro-infrastructure/libretro-build-libnx-devkitpro:latest
538  stage: build
539  variables:
540    MEDIA_PATH: .media
541  before_script:
542    - export NUMPROC=$(($(nproc)/3))
543  artifacts:
544    paths:
545    - retroarch_switch.nro
546    - retroarch_switch.elf
547    - ${MEDIA_PATH}
548    expire_in: 10 min
549  dependencies: []
550  script:
551    - "make -f Makefile.libnx -j$NUMPROC HAVE_STATIC_DUMMY=1"
552    - "mkdir -p ${MEDIA_PATH}/${CI_PROJECT_NAME}/filters/video"
553    - "mkdir -p ${MEDIA_PATH}/${CI_PROJECT_NAME}/pkg"
554    - "cp -f gfx/video_filters/*.filt ${MEDIA_PATH}/${CI_PROJECT_NAME}/filters/video"
555    - "cp -f pkg/libnx/retroarch.jpg ${MEDIA_PATH}/${CI_PROJECT_NAME}/pkg"
556
557build-static-retroarch-vita:
558  image: $CI_SERVER_HOST:5050/libretro-infrastructure/libretro-build-vita:latest
559  stage: prepare-for-static-cores
560  before_script:
561    - export NUMPROC=$(($(nproc)/3))
562  artifacts:
563    paths:
564    -  retroarch-precompiled/
565    -  retroarch-precompiled-gl/
566    expire_in: 10 min
567  dependencies: []
568  needs:
569    # Dummy build requires no core
570    - build-static-retroarch-dummy-vita
571  script:
572    # Allow failure since we don't have a core
573    - "make -f Makefile.vita -j$NUMPROC ||:"
574    - "mkdir .retroarch-precompiled"
575    - "cp -r ./* .retroarch-precompiled/"
576    - "make -f Makefile.vita clean"
577    - "HAVE_VITAGLES=1 make -f Makefile.vita -j$NUMPROC ||:"
578    - "mkdir .retroarch-precompiled-gl"
579    - "cp -r ./* .retroarch-precompiled-gl/"
580    - "mv .retroarch-precompiled/ retroarch-precompiled/"
581    - "mv .retroarch-precompiled-gl/ retroarch-precompiled-gl/"
582
583build-static-retroarch-dummy-vita:
584  image: $CI_SERVER_HOST:5050/libretro-infrastructure/libretro-build-vita:latest
585  stage: build
586  variables:
587    MEDIA_PATH: .media
588  before_script:
589    - export NUMPROC=$(($(nproc)/3))
590  artifacts:
591    paths:
592    -  eboot.bin
593    -  param.sfo
594    - ${MEDIA_PATH}
595    expire_in: 10 min
596  dependencies: []
597  script:
598    - "make -f Makefile.vita.salamander -j$NUMPROC"
599    - "mkdir -p ${MEDIA_PATH}/${CI_PROJECT_NAME}/filters/video"
600    - "mkdir -p ${MEDIA_PATH}/${CI_PROJECT_NAME}/pkg"
601    - "cp -f gfx/video_filters/*.filt ${MEDIA_PATH}/${CI_PROJECT_NAME}/filters/video"
602    - "cp -fr pkg/vita/* ${MEDIA_PATH}/${CI_PROJECT_NAME}/pkg"
603
604build-static-retroarch-ps2:
605  image: $CI_SERVER_HOST:5050/libretro-infrastructure/libretro-build-ps2:latest
606  stage: prepare-for-static-cores
607  artifacts:
608    paths:
609    -  retroarch-precompiled/
610    expire_in: 10 min
611  dependencies: []
612  needs:
613    # Dummy build requires no core
614    - build-static-retroarch-dummy-ps2
615  script:
616    # Allow failure since we don't have a core
617    # PS2 makefile for now doesn't allow -jX so this is why is hardcoded to -j1
618    - "make -f Makefile.ps2 -j1 ||:"
619    - "mkdir .retroarch-precompiled"
620    - "cp -r ./* .retroarch-precompiled/"
621    - "mv .retroarch-precompiled/ retroarch-precompiled/"
622
623build-static-retroarch-dummy-ps2:
624  image: $CI_SERVER_HOST:5050/libretro-infrastructure/libretro-build-ps2:latest
625  stage: build
626  before_script:
627    # PS2 doesn't allow to use -jX for now
628    - export NUMPROC=1
629  artifacts:
630    paths:
631    -  raboot.elf
632    expire_in: 10 min
633  dependencies: []
634  script:
635    - "make -f Makefile.ps2.salamander -j$NUMPROC release"
636
637build-static-retroarch-psp:
638  image: $CI_SERVER_HOST:5050/libretro-infrastructure/libretro-build-psp:latest
639  stage: prepare-for-static-cores
640  before_script:
641    - export NUMPROC=$(($(nproc)/3))
642  artifacts:
643    paths:
644    -  retroarch-precompiled/
645    expire_in: 10 min
646  dependencies: []
647  needs:
648    # Dummy build requires no core
649    - build-static-retroarch-dummy-psp
650  script:
651    # We need to boostrap before compile
652    - "(cd bootstrap/psp1/kernel_functions_prx/ && make && cd -)"
653    # Allow failure since we don't have a core
654    - "make -f Makefile.psp1 -j$NUMPROC ||:"
655    - "mkdir .retroarch-precompiled"
656    - "cp -r ./* .retroarch-precompiled/"
657    - "mv .retroarch-precompiled/ retroarch-precompiled/"
658
659build-static-retroarch-dummy-psp:
660  image: $CI_SERVER_HOST:5050/libretro-infrastructure/libretro-build-psp:latest
661  stage: build
662  variables:
663    MEDIA_PATH: .media
664  before_script:
665    - export NUMPROC=$(($(nproc)/3))
666  artifacts:
667    paths:
668    - EBOOT.PBP
669    - kernel_functions.prx
670    - ${MEDIA_PATH}
671    expire_in: 10 min
672  dependencies: []
673  script:
674    - "(cd bootstrap/psp1/kernel_functions_prx/ && make && cd -)"
675    - "make -f Makefile.psp1.salamander -j$NUMPROC"
676    - "make -C bootstrap/psp1/kernel_functions_prx/"
677    - "mkdir -p ${MEDIA_PATH}/${CI_PROJECT_NAME}/pkg"
678    - "cp -f pkg/psp1/ICON0.PNG ${MEDIA_PATH}/${CI_PROJECT_NAME}/pkg"
679    - "cp -f pkg/psp1/PIC1.PNG ${MEDIA_PATH}/${CI_PROJECT_NAME}/pkg"
680
681build-static-retroarch-ctr:
682  image: $CI_SERVER_HOST:5050/libretro-infrastructure/libretro-build-devkitpro:latest
683  stage: prepare-for-static-cores
684  before_script:
685    - export NUMPROC=$(($(nproc)/3))
686  artifacts:
687    paths:
688    -  retroarch-precompiled/
689    expire_in: 10 min
690  dependencies: []
691  needs:
692    # Dummy build requires no core
693    - build-static-retroarch-dummy-ctr
694  script:
695    # Allow failure since we don't have a core
696    - "make -f Makefile.ctr -j$NUMPROC USE_CTRULIB_2=1 ||:"
697    - "mkdir .retroarch-precompiled"
698    - "cp -r ./* .retroarch-precompiled/"
699    - "mv .retroarch-precompiled/ retroarch-precompiled/"
700
701build-static-retroarch-ctr-legacy:
702  image: $CI_SERVER_HOST:5050/libretro-infrastructure/libretro-build-devkitpro:ctr-legacy
703  stage: prepare-for-static-cores
704  before_script:
705    - export NUMPROC=$(($(nproc)/3))
706  artifacts:
707    paths:
708    -  retroarch-precompiled/
709    expire_in: 10 min
710  dependencies: []
711  script:
712    # Allow failure since we don't have a core
713    - "make -f Makefile.ctr -j$NUMPROC ||:"
714    - "mkdir .retroarch-precompiled"
715    - "cp -r ./* .retroarch-precompiled/"
716    - "mv .retroarch-precompiled/ retroarch-precompiled/"
717
718build-static-retroarch-dummy-ctr:
719  image: $CI_SERVER_HOST:5050/libretro-infrastructure/libretro-build-devkitpro:latest
720  stage: build
721  variables:
722    MEDIA_PATH: .media
723  before_script:
724    - export NUMPROC=$(($(nproc)/3))
725  artifacts:
726    paths:
727    - retroarch_3ds.cia
728    - RetroArch.3dsx
729    - RetroArch.smdh
730    - ${MEDIA_PATH}
731    expire_in: 10 min
732  dependencies: []
733  script:
734    - "make -f Makefile.ctr.salamander -j$NUMPROC USE_CTRULIB_2=1"
735    - "mv -f retroarch_3ds_salamander.cia retroarch_3ds.cia"
736    - "mv -f retroarch_3ds_salamander.3dsx RetroArch.3dsx"
737    - "mv -f retroarch_3ds_salamander.smdh RetroArch.smdh"
738    - "mkdir -p ${MEDIA_PATH}/${CI_PROJECT_NAME}/filters/audio"
739    - "mkdir -p ${MEDIA_PATH}/${CI_PROJECT_NAME}/filters/video"
740    - "cp -f libretro-common/audio/dsp_filters/*.dsp ${MEDIA_PATH}/${CI_PROJECT_NAME}/filters/audio"
741    - "cp -f gfx/video_filters/*.filt ${MEDIA_PATH}/${CI_PROJECT_NAME}/filters/video"
742
743build-static-retroarch-wiiu:
744  image: $CI_SERVER_HOST:5050/libretro-infrastructure/libretro-build-wiiu:latest
745  stage: prepare-for-static-cores
746  before_script:
747    - export NUMPROC=$(($(nproc)/3))
748  artifacts:
749    paths:
750    -  retroarch-precompiled/
751    expire_in: 10 min
752  dependencies: []
753  needs:
754    # Dummy build requires no core
755    - build-static-retroarch-dummy-wiiu
756  script:
757    # Allow failure since we don't have a core
758    - "make -f Makefile.wiiu -j$NUMPROC ||:"
759    - "mkdir .retroarch-precompiled"
760    - "cp -r ./* .retroarch-precompiled/"
761    - "mv .retroarch-precompiled/ retroarch-precompiled/"
762
763build-static-retroarch-dummy-wiiu:
764  image: $CI_SERVER_HOST:5050/libretro-infrastructure/libretro-build-devkitpro:latest
765  stage: build
766  variables:
767    MEDIA_PATH: .media
768  before_script:
769    - export NUMPROC=$(($(nproc)/3))
770  artifacts:
771    paths:
772    - retroarch.rpx
773    - ${MEDIA_PATH}
774    expire_in: 10 min
775  dependencies: []
776  script:
777    - "make -f Makefile.wiiu -j$NUMPROC SALAMANDER_BUILD=1"
778    - "mv -f retroarch_wiiu_salamander.rpx retroarch.rpx"
779    - "mkdir -p ${MEDIA_PATH}/${CI_PROJECT_NAME}/filters/video"
780    - "mkdir -p ${MEDIA_PATH}/${CI_PROJECT_NAME}/pkg"
781    - "cp -f gfx/video_filters/*.filt ${MEDIA_PATH}/${CI_PROJECT_NAME}/filters/video"
782    - "cp -f pkg/wiiu/icon.png ${MEDIA_PATH}/${CI_PROJECT_NAME}/pkg"
783    - "cp -f pkg/wiiu/meta.xml ${MEDIA_PATH}/${CI_PROJECT_NAME}/pkg"
784
785build-static-retroarch-wii:
786  image: $CI_SERVER_HOST:5050/libretro-infrastructure/libretro-build-devkitpro:latest
787  stage: prepare-for-static-cores
788  before_script:
789    - export NUMPROC=$(($(nproc)/3))
790  artifacts:
791    paths:
792    -  retroarch-precompiled/
793    expire_in: 10 min
794  dependencies: []
795  needs:
796    # Dummy build requires no core
797    - build-static-retroarch-dummy-wii
798  script:
799    # Allow failure since we don't have a core
800    - "make -f Makefile.wii -j$NUMPROC EXTERNAL_LIBOGC=1 GX_PTHREAD_LEGACY=0 ||:"
801    - "mkdir .retroarch-precompiled"
802    - "cp -r ./* .retroarch-precompiled/"
803    - "mv .retroarch-precompiled/ retroarch-precompiled/"
804
805build-static-retroarch-dummy-wii:
806  image: $CI_SERVER_HOST:5050/libretro-infrastructure/libretro-build-devkitpro:latest
807  stage: build
808  variables:
809    MEDIA_PATH: .media
810  before_script:
811    - export NUMPROC=$(($(nproc)/3))
812  artifacts:
813    paths:
814    - boot.dol
815    - ${MEDIA_PATH}
816    expire_in: 10 min
817  dependencies: []
818  script:
819    - "make -f Makefile.wii.salamander -j$NUMPROC EXTERNAL_LIBOGC=1 GX_PTHREAD_LEGACY=0"
820    - "mv -f retroarch-salamander_wii.dol boot.dol"
821    - "mkdir -p ${MEDIA_PATH}/${CI_PROJECT_NAME}/filters/audio"
822    - "mkdir -p ${MEDIA_PATH}/${CI_PROJECT_NAME}/filters/video"
823    - "mkdir -p ${MEDIA_PATH}/${CI_PROJECT_NAME}/pkg"
824    - "cp -f libretro-common/audio/dsp_filters/*.dsp ${MEDIA_PATH}/${CI_PROJECT_NAME}/filters/audio"
825    - "cp -f gfx/video_filters/*.filt ${MEDIA_PATH}/${CI_PROJECT_NAME}/filters/video"
826    - "cp -f pkg/wii/icon.png ${MEDIA_PATH}/${CI_PROJECT_NAME}/pkg"
827    - "cp -f pkg/wii/meta.xml ${MEDIA_PATH}/${CI_PROJECT_NAME}/pkg"
828
829build-static-retroarch-ngc:
830  image: $CI_SERVER_HOST:5050/libretro-infrastructure/libretro-build-devkitpro:latest
831  stage: prepare-for-static-cores
832  before_script:
833    - export NUMPROC=$(($(nproc)/3))
834  artifacts:
835    paths:
836    -  retroarch-precompiled/
837    expire_in: 10 min
838  dependencies: []
839  needs:
840    # Dummy build requires no core
841    - build-static-retroarch-dummy-ngc
842  script:
843    # Allow failure since we don't have a core
844    - "make -f Makefile.ngc -j$NUMPROC EXTERNAL_LIBOGC=1 GX_PTHREAD_LEGACY=0 ||:"
845    - "mkdir .retroarch-precompiled"
846    - "cp -r ./* .retroarch-precompiled/"
847    - "mv .retroarch-precompiled/ retroarch-precompiled/"
848
849build-static-retroarch-dummy-ngc:
850  image: $CI_SERVER_HOST:5050/libretro-infrastructure/libretro-build-devkitpro:latest
851  stage: build
852  variables:
853    MEDIA_PATH: .media
854  before_script:
855    - export NUMPROC=$(($(nproc)/3))
856  artifacts:
857    paths:
858    - ${MEDIA_PATH}
859    expire_in: 10 min
860  dependencies: []
861  script:
862    - "mkdir -p ${MEDIA_PATH}/${CI_PROJECT_NAME}/filters/audio"
863    - "mkdir -p ${MEDIA_PATH}/${CI_PROJECT_NAME}/filters/video"
864    - "cp -f libretro-common/audio/dsp_filters/*.dsp ${MEDIA_PATH}/${CI_PROJECT_NAME}/filters/audio"
865    - "cp -f gfx/video_filters/*.filt ${MEDIA_PATH}/${CI_PROJECT_NAME}/filters/video"
866
867build-static-retroarch-emscripten:
868  image: $CI_SERVER_HOST:5050/libretro-infrastructure/libretro-build-emscripten:latest
869  stage: prepare-for-static-cores
870  before_script:
871    - export NUMPROC=$(($(nproc)/3))
872  artifacts:
873    paths:
874    - retroarch-precompiled/
875    expire_in: 10 min
876  dependencies: []
877  needs:
878    # Dummy build requires no core
879    - build-static-retroarch-dummy-emscripten
880  script:
881    # Allow failure since we don't have a core
882    - "emmake make -f Makefile.emscripten -j$NUMPROC ||:"
883    - "mkdir .retroarch-precompiled"
884    - "cp -r ./* .retroarch-precompiled/"
885    - "mv .retroarch-precompiled/ retroarch-precompiled/"
886
887build-static-retroarch-dummy-emscripten:
888  image: $CI_SERVER_HOST:5050/libretro-infrastructure/libretro-build-amd64-ubuntu:latest
889  stage: build
890  variables:
891    MEDIA_PATH: .media
892  before_script:
893    - export NUMPROC=$(($(nproc)/3))
894  artifacts:
895    paths:
896    - ${MEDIA_PATH}
897    expire_in: 10 min
898  dependencies: []
899  script:
900    - "mkdir -p ${MEDIA_PATH}/${CI_PROJECT_NAME}/filters/audio"
901    - "mkdir -p ${MEDIA_PATH}/${CI_PROJECT_NAME}/filters/video"
902    - "mkdir -p ${MEDIA_PATH}/${CI_PROJECT_NAME}/pkg/media"
903    - "cp -f libretro-common/audio/dsp_filters/*.dsp ${MEDIA_PATH}/${CI_PROJECT_NAME}/filters/audio"
904    - "cp -f gfx/video_filters/*.filt ${MEDIA_PATH}/${CI_PROJECT_NAME}/filters/video"
905    - "cp -rf pkg/emscripten/libretro ${MEDIA_PATH}/${CI_PROJECT_NAME}/pkg"
906    - "cp -f media/canvas.png ${MEDIA_PATH}/${CI_PROJECT_NAME}/pkg/media"
907    - "cp -f media/icon_dark.ico ${MEDIA_PATH}/${CI_PROJECT_NAME}/pkg/media"
908    - "cp -f media/icon_light.ico ${MEDIA_PATH}/${CI_PROJECT_NAME}/pkg/media"
909    - "cp -f media/invader_dark.png ${MEDIA_PATH}/${CI_PROJECT_NAME}/pkg/media"
910    - "cp -f media/invader_light.png ${MEDIA_PATH}/${CI_PROJECT_NAME}/pkg/media"
911    - "cp -f media/libretro-logo.png ${MEDIA_PATH}/${CI_PROJECT_NAME}/pkg/media"
912    - "cp -f media/retroarch-16x16.ico ${MEDIA_PATH}/${CI_PROJECT_NAME}/pkg/media"
913    - "cp -f media/retroarch-16x16.png ${MEDIA_PATH}/${CI_PROJECT_NAME}/pkg/media"
914    - "cp -f media/retroarch-96x96.png ${MEDIA_PATH}/${CI_PROJECT_NAME}/pkg/media"
915    - "cp -f media/retroarch.ico ${MEDIA_PATH}/${CI_PROJECT_NAME}/pkg/media"
916
917trigger_static-cores:
918  stage: trigger-static-cores
919  needs:
920  - build-static-retroarch-libnx-aarch64
921  - build-static-retroarch-vita
922  - build-static-retroarch-ps2
923  - build-static-retroarch-psp
924  - build-static-retroarch-ctr
925  - build-static-retroarch-ctr-legacy
926  - build-static-retroarch-wiiu
927  - build-static-retroarch-wii
928  - build-static-retroarch-ngc
929  - build-static-retroarch-emscripten
930  dependencies: []
931  script:
932    # Dummy for now
933    - /bin/true
934