From 7c94edb02cae578515c345d699b378f67c2ad610 Mon Sep 17 00:00:00 2001 From: OatmealDome Date: Thu, 1 Aug 2024 12:31:11 -0400 Subject: [PATCH] CMakeLists: Embed macOS Updater app inside DolphinQt I accomplish this by adding a new step where a copy of the DolphinQt bundle is created, and then the Updater is inserted into it. --- Source/Core/CMakeLists.txt | 56 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 56 insertions(+) diff --git a/Source/Core/CMakeLists.txt b/Source/Core/CMakeLists.txt index 576e3eec62..b1c5a3ab17 100644 --- a/Source/Core/CMakeLists.txt +++ b/Source/Core/CMakeLists.txt @@ -30,3 +30,59 @@ endif() if (WIN32 AND ENABLE_AUTOUPDATE) add_subdirectory(WinUpdater) endif() + +if (APPLE AND ENABLE_QT) + set(DOLPHIN_MAC_BUNDLE "${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/Dolphin.app") + + add_custom_target(build_final_bundle ALL + COMMAND ${CMAKE_COMMAND} -E remove_directory + ${DOLPHIN_MAC_BUNDLE} + + COMMAND cp -R + ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/DolphinQt.app + ${DOLPHIN_MAC_BUNDLE} + + # HACK: The Updater does not support setting the executable bit on new files, + # so don't use the new executable name, and instead continue to use "Dolphin". + COMMAND ${CMAKE_COMMAND} -E rename + ${DOLPHIN_MAC_BUNDLE}/Contents/MacOS/DolphinQt + ${DOLPHIN_MAC_BUNDLE}/Contents/MacOS/Dolphin + + COMMAND plutil + -replace CFBundleExecutable -string Dolphin + ${DOLPHIN_MAC_BUNDLE}/Contents/Info.plist + + DEPENDS dolphin-emu) + + if (ENABLE_AUTOUPDATE) + add_dependencies(build_final_bundle MacUpdater) + + add_custom_command(TARGET build_final_bundle + POST_BUILD + COMMAND ${CMAKE_COMMAND} -E make_directory + "${DOLPHIN_MAC_BUNDLE}/Contents/Helpers" + + COMMAND cp -R + "$" + "${DOLPHIN_MAC_BUNDLE}/Contents/Helpers/Dolphin Updater.app") + + if (MACOS_CODE_SIGNING) + add_custom_command(TARGET build_final_bundle + POST_BUILD + COMMAND "${CMAKE_SOURCE_DIR}/Tools/mac-codesign.sh" + "-t" + "${MACOS_CODE_SIGNING_IDENTITY}" + "${DOLPHIN_MAC_BUNDLE}/Contents/Helpers/Dolphin Updater.app") + endif() + endif() + + if (MACOS_CODE_SIGNING) + add_custom_command(TARGET build_final_bundle + POST_BUILD + COMMAND "${CMAKE_SOURCE_DIR}/Tools/mac-codesign.sh" + "-t" + "-e" "${CMAKE_SOURCE_DIR}/Source/Core/DolphinQt/DolphinEmu$<$:Debug>.entitlements" + "${MACOS_CODE_SIGNING_IDENTITY}" + "${DOLPHIN_MAC_BUNDLE}") + endif() +endif()