diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 8aa85b9468..e7b81373b5 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -293,7 +293,7 @@ build-retroarch-linux-i686: - "cp -f gfx/video_filters/*.so ${MEDIA_PATH}/${CI_PROJECT_NAME}/filters/video" - "cp -f gfx/video_filters/*.filt ${MEDIA_PATH}/${CI_PROJECT_NAME}/filters/video" -# Mac OS x86: RetroArch Unsigned DMG +# Mac OS x86 x64 (OpenGL, 10.7): RetroArch Unsigned DMG build-retroarch-osx-x64: tags: - macosx @@ -326,6 +326,7 @@ build-retroarch-osx-x64: - cp retroarch RetroArch.app/Contents/MacOS - cp media/retroarch.icns RetroArch.app/Contents/Resources/ - rm -rvf RetroArch.app/Contents/Info_Metal.plist + - rm -rvf RetroArch.app/Contents/modules_ppc - rm -rvf RetroArch.app/Contents/Resources/default.metallib - rm -rvf RetroArch.app/Contents/Resources/en.lproj/MainMenu_Metal.nib @@ -360,6 +361,73 @@ build-retroarch-osx-x64: - umount "wc$SHELL_ID" || echo "Not mounted, so not caring right now." - rm -rvf "wc$SHELL_ID" empty.dmg +# Mac OS x86 x64 (Metal, 10.13): RetroArch Metal Unsigned DMG +build-retroarch-metal-osx-x64: + tags: + - macosx + stage: build + before_script: + - export NUMPROC=$((1 + $(sysctl -n hw.ncpu)/3)) + - export SHELL_ID=$$ + after_script: + # We really do not want any garbage left over + - umount "wc$SHELL_ID" || echo "Not mounted, so not caring right now." + - rm -rvf "wc$SHELL_ID" empty.dmg + artifacts: + paths: + - RetroArch_Metal.dmg + expire_in: 10 min + dependencies: [] + script: + # Normal RetroArch Metal Build + - ./configure --enable-metal --disable-al + - make -j$NUMPROC + + # Cleanup for DMG creation + - rm -rvf "RetroArch_Metal.app/" + + # Initialize for DMG Creation + - mkdir -vp "RetroArch_Metal.app/Contents/MacOS" + + # Copy resources and compiled program over + - cp -Rv "pkg/apple/OSX/"* "RetroArch_Metal.app/Contents" + - cp retroarch RetroArch_Metal.app/Contents/MacOS + - cp media/retroarch.icns RetroArch_Metal.app/Contents/Resources/ + - mv RetroArch_Metal.app/Contents/Info_Metal.plist RetroArch_Metal.app/Contents/Info.plist + - rm -rvf RetroArch.app/Contents/modules_ppc + - rm -rvf RetroArch.app/Contents/Resources/en.lproj/MainMenu.nib + + # Update properties within the application properties + - sed -i '' 's/\${EXECUTABLE_NAME}/RetroArch/' RetroArch_Metal.app/Contents/Info.plist + - sed -i '' 's/\$(PRODUCT_BUNDLE_IDENTIFIER)/com.libretro.RetroArch/' RetroArch_Metal.app/Contents/Info.plist + - sed -i '' 's/\${PRODUCT_NAME}/RetroArch/' RetroArch_Metal.app/Contents/Info.plist + - sed -i '' 's/\${MACOSX_DEPLOYMENT_TARGET}/10.13/' RetroArch_Metal.app/Contents/Info.plist + + # TODO: It seems this messes with code signing, so delete it?? + - rm -rvf RetroArch_Metal.app/Contents/en.lproj + + # Undo the state from a previous failure, if so + - umount "wc$SHELL_ID" || echo "Not mounted, so not caring right now." + - rm -rvf RetroArch_Metal.dmg "wc$SHELL_ID" empty.dmg + + # Create template DMG + - mkdir -p template + - hdiutil create -fs HFSX -layout SPUD -size 200m empty.dmg -srcfolder template -format UDRW -volname RetroArch -quiet + - rmdir template + + # Package the DMG together + - mkdir -p "wc$SHELL_ID" + - hdiutil attach empty.dmg -noautoopen -quiet -mountpoint "wc$SHELL_ID" + - rm -rf "wc$SHELL_ID"/RetroArch_Metal.app + - ditto -rsrc RetroArch_Metal.app "wc$SHELL_ID"/RetroArch_Metal.app + - ln -s /Applications "wc$SHELL_ID"/Applications + - WC_DEV=`hdiutil info | grep "wc$SHELL_ID" | grep "Apple_HFS" | awk '{print $1}'` && hdiutil detach "$WC_DEV" -quiet -force + - hdiutil convert empty.dmg -quiet -format UDZO -imagekey zlib-level=9 -o RetroArch_Metal.dmg + + # Cleanup afterwards + - umount "wc$SHELL_ID" || echo "Not mounted, so not caring right now." + - rm -rvf "wc$SHELL_ID" empty.dmg + build-retroarch-dingux-mips32: image: $CI_SERVER_HOST:5050/libretro-infrastructure/libretro-build-dingux:latest stage: build