Sfoglia il codice sorgente

Merge pull request #1081 from kambala-decapitator/macos-bundle-ID

[macOS] improve Info.plist
Andrii Danylchenko 3 anni fa
parent
commit
3a9493130c
5 ha cambiato i file con 32 aggiunte e 20 eliminazioni
  1. 3 0
      CMakeLists.txt
  2. 1 1
      cmake_modules/VCMIUtils.cmake
  3. 1 0
      conanfile.py
  4. 27 15
      osx/CMakeLists.txt
  5. 0 4
      osx/Info.plist.in

+ 3 - 0
CMakeLists.txt

@@ -603,9 +603,12 @@ elseif(APPLE_MACOS AND NOT ENABLE_MONOLITHIC_INSTALL)
 
 	include(GetGitRevisionDescription)
 	get_git_head_revision(GIT_REFSPEC GIT_SHA1)
+	string(TIMESTAMP CURRENT_YEAR "%Y")
 
 	set(MACOSX_BUNDLE_NAME "${CMAKE_PROJECT_NAME}")
 	set(MACOSX_BUNDLE_BUNDLE_NAME "${CMAKE_PROJECT_NAME}")
+	set(MACOSX_BUNDLE_COPYRIGHT "Copyright © 2007-${CURRENT_YEAR} VCMI team")
+	set(MACOSX_BUNDLE_GUI_IDENTIFIER "eu.vcmi.vcmi")
 	set(MACOSX_BUNDLE_BUNDLE_VERSION ${GIT_SHA1})
 	set(MACOSX_BUNDLE_SHORT_VERSION_STRING ${APP_SHORT_VERSION})
 	if(ENABLE_LAUNCHER)

+ 1 - 1
cmake_modules/VCMIUtils.cmake

@@ -142,7 +142,7 @@ function(vcmi_install_conan_deps install_dir)
 	endif()
 	install(CODE "
 		execute_process(COMMAND
-			conan imports \"${CMAKE_SOURCE_DIR}\" --install-folder \"${CMAKE_SOURCE_DIR}/conan-generated\" --import-folder \"${install_dir}\"
+			conan imports \"${CMAKE_SOURCE_DIR}\" --install-folder \"${CONAN_INSTALL_FOLDER}\" --import-folder \"${install_dir}\"
 		)
 		file(REMOVE \"${install_dir}/conan_imports_manifest.txt\")
 	")

+ 1 - 0
conanfile.py

@@ -192,6 +192,7 @@ class VCMI(ConanFile):
     def generate(self):
         tc = CMakeToolchain(self)
         tc.variables["USING_CONAN"] = True
+        tc.variables["CONAN_INSTALL_FOLDER"] = self.install_folder
         tc.generate()
 
         deps = CMakeDeps(self)

+ 27 - 15
osx/CMakeLists.txt

@@ -4,19 +4,8 @@ if(APPLE_MACOS)
 	set(bundleDir "\${CMAKE_INSTALL_PREFIX}/${APP_BUNDLE_DIR}")
 	set(bundleContentsDir "${bundleDir}/Contents")
 
-	if(ENABLE_LAUNCHER)
-		# cross-compiled Qt 5 builds macdeployqt for target platform instead of host
-		if(CMAKE_HOST_SYSTEM_PROCESSOR STREQUAL CMAKE_SYSTEM_PROCESSOR)
-			# deploy Qt dylibs with macdeployqt
-			find_program(TOOL_MACDEPLOYQT NAMES macdeployqt PATHS ${qt_base_dir}/bin)
-		endif()
-		if(TOOL_MACDEPLOYQT)
-			install(CODE "
-				execute_process(COMMAND
-					\"${TOOL_MACDEPLOYQT}\" \"${bundleDir}\" -verbose=2
-				)
-			")
-		else()
+	if(ENABLE_LAUNCHER OR ENABLE_EDITOR)
+		if(USING_CONAN)
 			# simulate macdeployqt behavior, main Qt libs are copied by conan
 			get_target_property(qmakePath Qt5::qmake IMPORTED_LOCATION)
 			execute_process(COMMAND
@@ -33,6 +22,19 @@ if(APPLE_MACOS)
 					\"[Paths]\nPlugins = PlugIns\"
 				)
 			")
+		else()
+			# note: cross-compiled Qt 5 builds macdeployqt for target platform instead of host
+			# deploy Qt dylibs with macdeployqt
+			find_program(TOOL_MACDEPLOYQT NAMES macdeployqt PATHS ${qt_base_dir}/bin)
+			if(TOOL_MACDEPLOYQT)
+				install(CODE "
+					execute_process(COMMAND
+						\"${TOOL_MACDEPLOYQT}\" \"${bundleDir}\" -verbose=2
+					)
+				")
+			else()
+				message(WARNING "macdeployqt not found, running cpack would result in broken package")
+			endif()
 		endif()
 	endif()
 
@@ -40,15 +42,25 @@ if(APPLE_MACOS)
 	vcmi_install_conan_deps("${bundleContentsDir}")
 
 	# perform ad-hoc codesigning
+	set(executablesToSign vcmiserver)
+	if(ENABLE_EDITOR)
+		list(APPEND executablesToSign vcmieditor)
+	endif()
+	# main executable must be last
+	list(APPEND executablesToSign vcmiclient)
+	if(ENABLE_LAUNCHER)
+		list(APPEND executablesToSign vcmilauncher)
+	endif()
+
 	set(codesignCommand "codesign --verbose=4 --force --options=runtime --timestamp=none --sign -")
 	set(codesignCommandWithEntitlements "${codesignCommand} --entitlements \"${CMAKE_SOURCE_DIR}/osx/entitlements.plist\"")
 	install(CODE "
 		execute_process(COMMAND
 			${codesignCommand} \"${bundleContentsDir}/MacOS/vcmibuilder\"
 		)
-		foreach(executable vcmiclient vcmiserver vcmilauncher)
+		foreach(executable ${executablesToSign})
 			execute_process(COMMAND
-				${codesignCommandWithEntitlements} \"${bundleContentsDir}/MacOS/\${executable}\"
+				${codesignCommandWithEntitlements} --identifier eu.vcmi.\${executable} \"${bundleContentsDir}/MacOS/\${executable}\"
 			)
 		endforeach()
 	")

+ 0 - 4
osx/Info.plist.in

@@ -6,14 +6,10 @@
 	<string>English</string>
 	<key>CFBundleExecutable</key>
 	<string>${MACOSX_BUNDLE_EXECUTABLE_NAME}</string>
-	<key>CFBundleGetInfoString</key>
-	<string>${MACOSX_BUNDLE_INFO_STRING}</string>
 	<key>CFBundleIconFile</key>
 	<string>${MACOSX_BUNDLE_ICON_FILE}</string>
 	<key>CFBundleIdentifier</key>
 	<string>${MACOSX_BUNDLE_GUI_IDENTIFIER}</string>
-	<key>CFBundleLongVersionString</key>
-	<string>${MACOSX_BUNDLE_LONG_VERSION_STRING}</string>
 	<key>CFBundleName</key>
 	<string>${MACOSX_BUNDLE_BUNDLE_NAME}</string>
 	<key>CFBundlePackageType</key>