From eb155b23a0e1b34cfb60e918811e50bc6268a507 Mon Sep 17 00:00:00 2001 From: Daniel Svensson Date: Mon, 21 Oct 2024 21:31:24 +0200 Subject: [PATCH 1/2] BUILD: Simplify macOS Info.plist generation. Also moves macOS related assets to dist/macOS similar to where the AppImage dist files for Linux are kept. --- .github/workflows/build-targets.yml | 2 +- CMakeLists.txt | 41 ++---------------- dist/macOS/MacOSXBundleInfo.plist.in | 38 ++++++++++++++++ .../macOS}/ezquake.entitlements.plist | 0 {misc/install => dist/macOS}/ezquake.icns | Bin 5 files changed, 42 insertions(+), 39 deletions(-) create mode 100644 dist/macOS/MacOSXBundleInfo.plist.in rename {misc/install => dist/macOS}/ezquake.entitlements.plist (100%) rename {misc/install => dist/macOS}/ezquake.icns (100%) diff --git a/.github/workflows/build-targets.yml b/.github/workflows/build-targets.yml index 19025e93b..ac4283254 100644 --- a/.github/workflows/build-targets.yml +++ b/.github/workflows/build-targets.yml @@ -100,7 +100,7 @@ jobs: lipo -create -output ezQuake.app/Contents/MacOS/ezQuake \ artifacts/x64/ezQuake.app/Contents/MacOS/ezQuake \ artifacts/arm64/ezQuake.app/Contents/MacOS/ezQuake - codesign --force --sign - --entitlements misc/install/ezquake.entitlements.plist --options runtime --timestamp ezQuake.app + codesign --force --sign - --entitlements dist/macOS/ezquake.entitlements.plist --options runtime --timestamp ezQuake.app zip -r ezQuake.zip ezQuake.app - name: Delete macOS arch specific builds diff --git a/CMakeLists.txt b/CMakeLists.txt index 32d25bea1..110daac20 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -770,7 +770,7 @@ get_target_property(version_build git_version REVISION) get_target_property(version_commit git_version COMMIT) # macOS icon -set(macos_icon "${PROJECT_SOURCE_DIR}/misc/install/ezquake.icns") +set(macos_icon "${PROJECT_SOURCE_DIR}/dist/macOS/ezquake.icns") set_source_files_properties(${macos_icon} PROPERTIES MACOSX_PACKAGE_LOCATION Resources) # Windows icon, and exe metadata @@ -906,7 +906,7 @@ if(CMAKE_SYSTEM_NAME STREQUAL "Darwin") XCODE_ATTRIBUTE_INFOPLIST_KEY_CFBundleDisplayName "ezQuake" XCODE_ATTRIBUTE_INFOPLIST_KEY_LSApplicationCategoryType "public.app-category.action-games" XCODE_ATTRIBUTE_INFOPLIST_KEY_NSHumanReadableCopyright "GNU General Public License, version 2" - MACOSX_BUNDLE_ICON_FILE "ezquake" + XCODE_ATTRIBUTE_INFOPLIST_FILE "${PROJECT_SOURCE_DIR}/dist/macOS/MacOSXBundleInfo.plist.in" ) if(ENABLE_SANDBOX) @@ -914,42 +914,7 @@ if(CMAKE_SYSTEM_NAME STREQUAL "Darwin") XCODE_ATTRIBUTE_ENABLE_APP_SANDBOX YES XCODE_ATTRIBUTE_ENABLE_HARDENED_RUNTIME YES XCODE_ATTRIBUTE_CODE_SIGN_INJECT_BASE_ENTITLEMENTS YES - XCODE_ATTRIBUTE_CODE_SIGN_ENTITLEMENTS "misc/install/ezquake.entitlements.plist" + XCODE_ATTRIBUTE_CODE_SIGN_ENTITLEMENTS "dist/macOS/ezquake.entitlements.plist" ) endif() - - add_custom_command( - TARGET ezquake POST_BUILD - COMMAND /usr/libexec/PlistBuddy - -c "Add :NSHighResolutionCapable bool YES" - "$/../Info.plist" - ) - - # qw:// protocol support - add_custom_command( - TARGET ezquake POST_BUILD - COMMAND /usr/libexec/PlistBuddy - -c "Add :CFBundleURLTypes array" - -c "Add :CFBundleURLTypes:0 dict" - -c "Add :CFBundleURLTypes:0:CFBundleURLName string QW" - -c "Add :CFBundleURLTypes:0:CFBundleURLSchemes array" - -c "Add :CFBundleURLTypes:0:CFBundleURLSchemes:0 string qw" - "$/../Info.plist" - ) - - # .mvd/.qwd/.dem file type support - add_custom_command( - TARGET ezquake POST_BUILD - COMMAND /usr/libexec/PlistBuddy - -c "Add :CFBundleDocumentTypes array" - -c "Add :CFBundleDocumentTypes:0 dict" - -c "Add :CFBundleDocumentTypes:0:CFBundleTypeName string \"Quake demo\"" - -c "Add :CFBundleDocumentTypes:0:CFBundleTypeRole string Viewer" - -c "Add :CFBundleDocumentTypes:0:CFBundleTypeIconFile string ezquake.icns" - -c "Add :CFBundleDocumentTypes:0:CFBundleTypeExtensions array" - -c "Add :CFBundleDocumentTypes:0:CFBundleTypeExtensions: string mvd" - -c "Add :CFBundleDocumentTypes:0:CFBundleTypeExtensions: string qwd" - -c "Add :CFBundleDocumentTypes:0:CFBundleTypeExtensions: string dem" - "$/../Info.plist" - ) endif() diff --git a/dist/macOS/MacOSXBundleInfo.plist.in b/dist/macOS/MacOSXBundleInfo.plist.in new file mode 100644 index 000000000..e3ad0e58f --- /dev/null +++ b/dist/macOS/MacOSXBundleInfo.plist.in @@ -0,0 +1,38 @@ + + + + + CFBundleIconFile + ezquake.icns + CFBundleDocumentTypes + + + CFBundleTypeExtensions + + mvd + qwd + dem + + CFBundleTypeIconFile + ezquake.icns + CFBundleTypeName + Quake demo + CFBundleTypeRole + Viewer + + + CFBundleURLTypes + + + CFBundleURLName + QW + CFBundleURLSchemes + + qw + + + + NSHighResolutionCapable + + + diff --git a/misc/install/ezquake.entitlements.plist b/dist/macOS/ezquake.entitlements.plist similarity index 100% rename from misc/install/ezquake.entitlements.plist rename to dist/macOS/ezquake.entitlements.plist diff --git a/misc/install/ezquake.icns b/dist/macOS/ezquake.icns similarity index 100% rename from misc/install/ezquake.icns rename to dist/macOS/ezquake.icns From c8c3b63ee70e719fc06ae85ccd6687b690639a61 Mon Sep 17 00:00:00 2001 From: Daniel Svensson Date: Mon, 21 Oct 2024 21:34:55 +0200 Subject: [PATCH 2/2] BUILD: Skip base entitlement for release builds on macOS. For debug builds this injects the com.apple.security.get-task-allow entitlement which allows the debugger to connect. Disabling this for release builds is recommended. --- CMakeLists.txt | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 110daac20..90d4f2bdc 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -911,10 +911,12 @@ if(CMAKE_SYSTEM_NAME STREQUAL "Darwin") if(ENABLE_SANDBOX) set_target_properties(ezquake PROPERTIES - XCODE_ATTRIBUTE_ENABLE_APP_SANDBOX YES - XCODE_ATTRIBUTE_ENABLE_HARDENED_RUNTIME YES - XCODE_ATTRIBUTE_CODE_SIGN_INJECT_BASE_ENTITLEMENTS YES - XCODE_ATTRIBUTE_CODE_SIGN_ENTITLEMENTS "dist/macOS/ezquake.entitlements.plist" + XCODE_ATTRIBUTE_ENABLE_APP_SANDBOX YES + XCODE_ATTRIBUTE_ENABLE_HARDENED_RUNTIME YES + XCODE_ATTRIBUTE_CODE_SIGN_INJECT_BASE_ENTITLEMENTS[variant=Debug] YES + XCODE_ATTRIBUTE_CODE_SIGN_INJECT_BASE_ENTITLEMENTS[variant=RelWithDebInfo] YES + XCODE_ATTRIBUTE_CODE_SIGN_INJECT_BASE_ENTITLEMENTS[variant=Release] NO + XCODE_ATTRIBUTE_CODE_SIGN_ENTITLEMENTS "dist/macOS/ezquake.entitlements.plist" ) endif() endif()