1
0
mirror of https://gitlab.com/OpenMW/openmw.git synced 2024-12-28 00:15:06 +00:00
OpenMW/cmake/SignMacApplications.cmake
Andrew Dunn 52501b7b65 Re-sign Mac Applications before creating install package
On Apple Silicon, the changes to linking paths done to "relativise"
paths in App bundles invalidates the code signature, so we need to
recalculate the signatures *after* the path changes have been performed
but before the install package is created. This depends on a new CMake
feature introduced in 3.19.
2022-09-17 18:24:06 +10:00

20 lines
1.2 KiB
CMake

# This script re-signs OpenMW.app and OpenMW-CS.app after CPack packages them. This is necessary because CPack modifies
# the library references used by OpenMW to App relative paths, invalidating the code signature.
# Obviously, we only need to run this on Apple targets.
if (APPLE)
set(OPENMW_APP "OpenMW")
set(OPENMW_CS_APP "OpenMW-CS")
set(APPLICATIONS "${OPENMW_APP}" "${OPENMW_CS_APP}")
foreach(app_name IN LISTS APPLICATIONS)
set(FULL_APP_PATH "${CPACK_TEMPORARY_INSTALL_DIRECTORY}/ALL_IN_ONE/${app_name}.app")
message(STATUS "Re-signing ${app_name}.app")
# Apple's codesign utility does not like directories with periods (.) in their names, so we'll remove it and
# create a symlink using the original name, which codesign is fine with.
file(GLOB OSG_PLUGINS_DIR "${FULL_APP_PATH}/Contents/PlugIns/osgPlugins*")
file(RENAME "${OSG_PLUGINS_DIR}" "${FULL_APP_PATH}/Contents/PlugIns/osgPlugins")
execute_process(COMMAND "ln" "-s" "${FULL_APP_PATH}/Contents/PlugIns/osgPlugins" "${OSG_PLUGINS_DIR}")
execute_process(COMMAND "codesign" "--force" "--deep" "-s" "-" "${FULL_APP_PATH}")
endforeach(app_name)
endif (APPLE)