| 12345678910111213141516171819202122232425262728293031323334353637383940414243 |
- # We need to keep this code into separate directory so CMake will execute it after all other subdirectories install code
- # Otherwise we can't fix Mac bundle dependencies since binaries wouldn't be there when this code executed
- if(MACOS)
- set(bundleDir "\${CMAKE_INSTALL_PREFIX}/${APP_BUNDLE_DIR}")
- set(bundleContentsDir "${bundleDir}/Contents")
- set(executablesDir "${bundleContentsDir}/MacOS")
- set(macdeployqtParams "\"${bundleDir}\"")
- if(ENABLE_EDITOR)
- string(APPEND macdeployqtParams " \"-executable=${executablesDir}/vcmieditor\"")
- endif()
- # note: cross-compiled Qt 5 builds macdeployqt for target platform instead of host
- vcmi_deploy_qt(macdeployqt "${macdeployqtParams}")
- # perform ad-hoc codesigning
- # Intel Macs don't need it
- if(CMAKE_SYSTEM_PROCESSOR STREQUAL "x86_64")
- return()
- endif()
- 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} \"${executablesDir}/vcmibuilder\"
- )
- foreach(executable ${executablesToSign})
- execute_process(COMMAND
- ${codesignCommandWithEntitlements} --identifier eu.vcmi.\${executable} \"${executablesDir}/\${executable}\"
- )
- endforeach()
- ")
- endif()
|