diff --git a/CMakeLists.txt b/CMakeLists.txt index 3fd47aba1..af7427528 100644 --- a/CMakeLists.txt +++ b/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) diff --git a/cmake_modules/VCMIUtils.cmake b/cmake_modules/VCMIUtils.cmake index 50ace693d..55516601f 100644 --- a/cmake_modules/VCMIUtils.cmake +++ b/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\") ") diff --git a/conanfile.py b/conanfile.py index c733ab611..fd6108234 100644 --- a/conanfile.py +++ b/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) diff --git a/osx/CMakeLists.txt b/osx/CMakeLists.txt index cc5d83ea1..5ce47c1c4 100644 --- a/osx/CMakeLists.txt +++ b/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() ") diff --git a/osx/Info.plist.in b/osx/Info.plist.in index 23e9cd06a..b96130fa5 100644 --- a/osx/Info.plist.in +++ b/osx/Info.plist.in @@ -6,14 +6,10 @@ English CFBundleExecutable ${MACOSX_BUNDLE_EXECUTABLE_NAME} - CFBundleGetInfoString - ${MACOSX_BUNDLE_INFO_STRING} CFBundleIconFile ${MACOSX_BUNDLE_ICON_FILE} CFBundleIdentifier ${MACOSX_BUNDLE_GUI_IDENTIFIER} - CFBundleLongVersionString - ${MACOSX_BUNDLE_LONG_VERSION_STRING} CFBundleName ${MACOSX_BUNDLE_BUNDLE_NAME} CFBundlePackageType