From 5dc92cd72b737dddc52ec7f4e0d665fd0d7cf37d Mon Sep 17 00:00:00 2001 From: Steveice10 <1269164+Steveice10@users.noreply.github.com> Date: Sat, 5 Nov 2022 22:17:47 -0700 Subject: [PATCH] ci: Bundle MoltenVK with macOS builds. --- .ci/macos/deps.sh | 2 +- .ci/macos/upload.sh | 33 +++++++++++++++++++++++++-------- 2 files changed, 26 insertions(+), 9 deletions(-) diff --git a/.ci/macos/deps.sh b/.ci/macos/deps.sh index e000f84ba..fb8ccd5c6 100755 --- a/.ci/macos/deps.sh +++ b/.ci/macos/deps.sh @@ -3,7 +3,7 @@ brew update brew unlink python@2 || true rm '/usr/local/bin/2to3' || true -brew install qt5 p7zip ccache ninja || true +brew install qt5 molten-vk vulkan-loader p7zip ccache ninja || true pip3 install macpack export SDL_VER=2.0.16 diff --git a/.ci/macos/upload.sh b/.ci/macos/upload.sh index ece8d7794..408560c42 100755 --- a/.ci/macos/upload.sh +++ b/.ci/macos/upload.sh @@ -12,20 +12,37 @@ cp build/bin/Release/citra "$REV_NAME" cp -r build/bin/Release/citra-qt.app "$REV_NAME" cp build/bin/Release/citra-room "$REV_NAME" -# move libs into folder for deployment -python3 -m macpack.patcher "${REV_NAME}/citra-qt.app/Contents/MacOS/citra-qt" -d "../Frameworks" -# move qt frameworks into app bundle for deployment -$(brew --prefix)/opt/qt5/bin/macdeployqt "${REV_NAME}/citra-qt.app" -executable="${REV_NAME}/citra-qt.app/Contents/MacOS/citra-qt" +BUNDLE_PATH="$REV_NAME/citra-qt.app" +BUNDLE_CONTENTS_PATH="$BUNDLE_PATH/Contents" +BUNDLE_EXECUTABLE_PATH="$BUNDLE_CONTENTS_PATH/MacOS/citra-qt" +BUNDLE_LIB_PATH="$BUNDLE_CONTENTS_PATH/lib" +BUNDLE_RESOURCES_PATH="$BUNDLE_CONTENTS_PATH/Resources" + +CITRA_STANDALONE_PATH="$REV_NAME/citra" # move libs into folder for deployment -python3 -m macpack.patcher "${REV_NAME}/citra" -d "libs" +python3 -m macpack.patcher $BUNDLE_EXECUTABLE_PATH -d "../Frameworks" +# move qt frameworks into app bundle for deployment +$(brew --prefix)/opt/qt5/bin/macdeployqt $BUNDLE_PATH -executable=$BUNDLE_EXECUTABLE_PATH + +# move libs into folder for deployment +python3 -m macpack.patcher $CITRA_STANDALONE_PATH -d "libs" + +# bundle MoltenVK +VULKAN_LOADER_PATH=$(brew --prefix vulkan-loader) +MOLTENVK_PATH=$(brew --prefix molten-vk) +mkdir $BUNDLE_LIB_PATH +cp $VULKAN_LOADER_PATH/lib/libvulkan.dylib $BUNDLE_LIB_PATH +cp $MOLTENVK_PATH/lib/libMoltenVK.dylib $BUNDLE_LIB_PATH +cp -r $MOLTENVK_PATH/share/vulkan $BUNDLE_RESOURCES_PATH +install_name_tool -add_rpath "@loader_path/../lib/" $BUNDLE_EXECUTABLE_PATH # workaround for libc++ -install_name_tool -change @loader_path/../Frameworks/libc++.1.0.dylib /usr/lib/libc++.1.dylib "${REV_NAME}/citra-qt.app/Contents/MacOS/citra-qt" -install_name_tool -change @loader_path/libs/libc++.1.0.dylib /usr/lib/libc++.1.dylib "${REV_NAME}/citra" +install_name_tool -change @loader_path/../Frameworks/libc++.1.0.dylib /usr/lib/libc++.1.dylib $BUNDLE_EXECUTABLE_PATH +install_name_tool -change @loader_path/libs/libc++.1.0.dylib /usr/lib/libc++.1.dylib $CITRA_STANDALONE_PATH # Make the launching script executable -chmod +x ${REV_NAME}/citra-qt.app/Contents/MacOS/citra-qt +chmod +x $BUNDLE_EXECUTABLE_PATH # Verify loader instructions find "$REV_NAME" -type f -exec otool -L {} \;