summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorOatmealDome <julian@oatmealdome.me>2024-12-04 23:25:26 -0500
committerOatmealDome <julian@oatmealdome.me>2024-12-05 14:56:08 -0500
commite05b033dd2825b23ca4d78c552caea52442dfd17 (patch)
tree2dd9573855061d529ac131fa37e47e256cf4f18d
parent3c27c38e7152078c9505504684d27886f12aab5e (diff)
ScmRevGen: Don't generate Info.plist files directly
Some generators (like Unix Makefiles and Xcode) copy an app's Info.plist at configure time. This causes a problem when we need to generate the Info.plist at build time, like how we currently do it with ScmRevGen. Instead of generating the Info.plist directly in ScmRevGen, provide an Info.plist without any version information to CMake at configure time, have ScmRevGen generate a separate plist file with the version information at build time, and then merge the two together to create the final Info.plist.
-rw-r--r--CMake/DolphinInjectVersionInfo.cmake24
-rw-r--r--CMake/ScmRevGen.cmake3
-rw-r--r--CMakeLists.txt11
-rw-r--r--Source/Core/DolphinQt/CMakeLists.txt5
-rw-r--r--Source/Core/DolphinQt/Info.plist.in6
-rw-r--r--Source/Core/MacUpdater/CMakeLists.txt5
-rw-r--r--Source/Core/MacUpdater/Info.plist.in4
-rw-r--r--Source/Core/VersionInfo.plist.in13
8 files changed, 49 insertions, 22 deletions
diff --git a/CMake/DolphinInjectVersionInfo.cmake b/CMake/DolphinInjectVersionInfo.cmake
new file mode 100644
index 0000000000..94d9b43873
--- /dev/null
+++ b/CMake/DolphinInjectVersionInfo.cmake
@@ -0,0 +1,24 @@
+function(dolphin_inject_version_info target)
+ set(INFO_PLIST_PATH "$<TARGET_BUNDLE_DIR:${target}>/Contents/Info.plist")
+ add_custom_command(TARGET ${target}
+ POST_BUILD
+
+ COMMAND /usr/libexec/PlistBuddy -c
+ "Delete :CFBundleShortVersionString"
+ "${INFO_PLIST_PATH}"
+ || true
+
+ COMMAND /usr/libexec/PlistBuddy -c
+ "Delete :CFBundleLongVersionString"
+ "${INFO_PLIST_PATH}"
+ || true
+
+ COMMAND /usr/libexec/PlistBuddy -c
+ "Delete :CFBundleVersion"
+ "${INFO_PLIST_PATH}"
+ || true
+
+ COMMAND /usr/libexec/PlistBuddy -c
+ "Merge '${CMAKE_BINARY_DIR}/Source/Core/VersionInfo.plist'"
+ "${INFO_PLIST_PATH}")
+endfunction()
diff --git a/CMake/ScmRevGen.cmake b/CMake/ScmRevGen.cmake
index 751e8b78c2..d314d044e3 100644
--- a/CMake/ScmRevGen.cmake
+++ b/CMake/ScmRevGen.cmake
@@ -65,6 +65,5 @@ endfunction()
configure_source_file("Source/Core/Common/scmrev.h")
if(APPLE)
- configure_source_file("Source/Core/DolphinQt/Info.plist")
- configure_source_file("Source/Core/MacUpdater/Info.plist")
+ configure_source_file("Source/Core/VersionInfo.plist")
endif()
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 3495e3b2b3..819ea04409 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -783,14 +783,9 @@ if (NOT EXISTS ${CMAKE_CURRENT_BINARY_DIR}/Source/Core/Common/scmrev.h)
endif()
if(APPLE)
- file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/Source/Core/DolphinQt)
- if (NOT EXISTS ${CMAKE_CURRENT_BINARY_DIR}/Source/Core/DolphinQt/Info.plist)
- file(TOUCH ${CMAKE_CURRENT_BINARY_DIR}/Source/Core/DolphinQt/Info.plist)
- endif()
-
- file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/Source/Core/MacUpdater)
- if (NOT EXISTS ${CMAKE_CURRENT_BINARY_DIR}/Source/Core/MacUpdater/Info.plist)
- file(TOUCH ${CMAKE_CURRENT_BINARY_DIR}/Source/Core/MacUpdater/Info.plist)
+ file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/Source/Core)
+ if (NOT EXISTS ${CMAKE_CURRENT_BINARY_DIR}/Source/Core/VersionInfo.plist)
+ file(TOUCH ${CMAKE_CURRENT_BINARY_DIR}/Source/Core/VersionInfo.plist)
endif()
endif()
diff --git a/Source/Core/DolphinQt/CMakeLists.txt b/Source/Core/DolphinQt/CMakeLists.txt
index 153f9eb4b5..98d4cb0e43 100644
--- a/Source/Core/DolphinQt/CMakeLists.txt
+++ b/Source/Core/DolphinQt/CMakeLists.txt
@@ -576,7 +576,7 @@ if(APPLE)
# Ask for an application bundle.
set_target_properties(dolphin-emu PROPERTIES
MACOSX_BUNDLE true
- MACOSX_BUNDLE_INFO_PLIST "${CMAKE_CURRENT_BINARY_DIR}/Info.plist"
+ MACOSX_BUNDLE_INFO_PLIST "${CMAKE_CURRENT_SOURCE_DIR}/Info.plist.in"
XCODE_ATTRIBUTE_CODE_SIGN_IDENTITY ""
OUTPUT_NAME DolphinQt
)
@@ -613,6 +613,9 @@ if(APPLE)
source_group("Resources" FILES "${CMAKE_SOURCE_DIR}/Data/${res}")
endforeach()
+ include(DolphinInjectVersionInfo)
+ dolphin_inject_version_info(dolphin-emu)
+
# Copy MoltenVK into the bundle
if(ENABLE_VULKAN)
if(USE_BUNDLED_MOLTENVK)
diff --git a/Source/Core/DolphinQt/Info.plist.in b/Source/Core/DolphinQt/Info.plist.in
index 2a3d17291e..ddd2ed4182 100644
--- a/Source/Core/DolphinQt/Info.plist.in
+++ b/Source/Core/DolphinQt/Info.plist.in
@@ -39,12 +39,6 @@
<string>English</string>
<key>CFBundlePackageType</key>
<string>APPL</string>
- <key>CFBundleShortVersionString</key>
- <string>${DOLPHIN_WC_DESCRIBE}</string>
- <key>CFBundleLongVersionString</key>
- <string>${DOLPHIN_WC_REVISION}</string>
- <key>CFBundleVersion</key>
- <string>${DOLPHIN_VERSION_MAJOR}.${DOLPHIN_VERSION_MINOR}</string>
<key>NSHumanReadableCopyright</key>
<string>Licensed under GPL version 2 or later (GPLv2+)</string>
<key>LSApplicationCategoryType</key>
diff --git a/Source/Core/MacUpdater/CMakeLists.txt b/Source/Core/MacUpdater/CMakeLists.txt
index d72dd46cd2..79a9bfe52f 100644
--- a/Source/Core/MacUpdater/CMakeLists.txt
+++ b/Source/Core/MacUpdater/CMakeLists.txt
@@ -16,7 +16,7 @@ add_dependencies(MacUpdater dolphin_scmrev)
set_target_properties(MacUpdater PROPERTIES
MACOSX_BUNDLE true
- MACOSX_BUNDLE_INFO_PLIST "${CMAKE_CURRENT_BINARY_DIR}/Info.plist"
+ MACOSX_BUNDLE_INFO_PLIST "${CMAKE_CURRENT_SOURCE_DIR}/Info.plist.in"
OUTPUT_NAME "Dolphin Updater")
target_compile_options(MacUpdater PRIVATE -x objective-c++)
@@ -53,6 +53,9 @@ foreach(sb ${STORYBOARDS})
COMMENT "Compiling Storyboard ${sb}...")
endforeach()
+include(DolphinInjectVersionInfo)
+dolphin_inject_version_info(MacUpdater)
+
if(NOT SKIP_POSTPROCESS_BUNDLE)
# Update library references to make the bundle portable
include(DolphinPostprocessBundle)
diff --git a/Source/Core/MacUpdater/Info.plist.in b/Source/Core/MacUpdater/Info.plist.in
index 574843c28d..22872c858f 100644
--- a/Source/Core/MacUpdater/Info.plist.in
+++ b/Source/Core/MacUpdater/Info.plist.in
@@ -16,10 +16,6 @@
<string>Dolphin Updater</string>
<key>CFBundlePackageType</key>
<string>APPL</string>
- <key>CFBundleShortVersionString</key>
- <string>${DOLPHIN_WC_DESCRIBE}</string>
- <key>CFBundleVersion</key>
- <string>${DOLPHIN_VERSION_MAJOR}.${DOLPHIN_VERSION_MINOR}</string>
<key>LSMinimumSystemVersion</key>
<string>${CMAKE_OSX_DEPLOYMENT_TARGET}</string>
<key>NSHumanReadableCopyright</key>
diff --git a/Source/Core/VersionInfo.plist.in b/Source/Core/VersionInfo.plist.in
new file mode 100644
index 0000000000..38043ba2de
--- /dev/null
+++ b/Source/Core/VersionInfo.plist.in
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+ <!-- This plist file is merged with the application's Info.plist to set its version info. -->
+ <key>CFBundleShortVersionString</key>
+ <string>${DOLPHIN_WC_DESCRIBE}</string>
+ <key>CFBundleLongVersionString</key>
+ <string>${DOLPHIN_WC_REVISION}</string>
+ <key>CFBundleVersion</key>
+ <string>${DOLPHIN_VERSION_MAJOR}.${DOLPHIN_VERSION_MINOR}</string>
+</dict>
+</plist>