Cockatrice/cmake/SignMacApplications.cmake
2025-01-09 17:13:19 -05:00

49 lines
No EOL
1.8 KiB
CMake

# This script re-signs all apps after CPack packages them. This is necessary because CPack modifies
# the library references used by Cockatrice to App relative paths, invalidating the code signature.
if(APPLE)
set(APPLICATIONS "cockatrice" "servatrice" "oracle" "dbconverter")
foreach(app_name IN LISTS APPLICATIONS)
set(FULL_APP_PATH "${CPACK_TEMPORARY_INSTALL_DIRECTORY}/${app_name}.app")
message(STATUS "Signing Interior Dynamically Loaded Libraries for ${app_name}.app")
execute_process(COMMAND
"find"
"${FULL_APP_PATH}"
"-name"
"*.dylib"
OUTPUT_VARIABLE
INTERIOR_DLLS)
string(REPLACE "\n" ";" INTERIOR_DLLS_LIST ${INTERIOR_DLLS})
foreach(INTERIOR_DLL IN LISTS INTERIOR_DLLS_LIST)
execute_process(COMMAND
"codesign"
"--sign"
"$ENV{MACOS_CERTIFICATE}"
"--entitlements"
"../.ci/macos.entitlements"
"--options"
"runtime"
"--force"
"--deep"
"--timestamp"
"--verbose"
"${INTERIOR_DLL}")
endforeach()
message(STATUS "Signing Exterior Applications ${app_name}.app")
execute_process(COMMAND
"codesign"
"--sign"
"$ENV{MACOS_CERTIFICATE}"
"--entitlements"
"../.ci/macos.entitlements"
"--options"
"runtime"
"--force"
"--deep"
"--timestamp"
"--verbose"
"${FULL_APP_PATH}")
endforeach()
endif()