87 lines
3.8 KiB
CMake
87 lines
3.8 KiB
CMake
|
|
if(XCODE)
|
|
option(SMTG_DISABLE_CODE_SIGNING "Disable All Code Signing" OFF)
|
|
set(SMTG_XCODE_OTHER_CODE_SIGNING_FLAGS "--timestamp" CACHE STRING "Other code signing flags [Xcode]")
|
|
option(SMTG_XCODE_MANUAL_CODE_SIGN_STYLE "Manual Xcode sign style" OFF)
|
|
endif()
|
|
|
|
#------------------------------------------------------------------------
|
|
function(smtg_target_codesign target)
|
|
if(XCODE AND (NOT SMTG_DISABLE_CODE_SIGNING))
|
|
if(ARGC GREATER 2)
|
|
set(team "${ARGV1}")
|
|
set(identity "${ARGV2}")
|
|
message(STATUS "[SMTG] Codesign ${target} with team '${team}' and identity '${identity}'")
|
|
set(SMTG_CODESIGN_ATTRIBUTES
|
|
XCODE_ATTRIBUTE_DEVELOPMENT_TEAM "${team}"
|
|
XCODE_ATTRIBUTE_CODE_SIGN_IDENTITY "${identity}"
|
|
)
|
|
else()
|
|
message(STATUS "[SMTG] Codesign ${target} for local machine only")
|
|
set(SMTG_CODESIGN_ATTRIBUTES
|
|
XCODE_ATTRIBUTE_CODE_SIGN_IDENTITY "-"
|
|
)
|
|
endif(ARGC GREATER 2)
|
|
if(SMTG_XCODE_OTHER_CODE_SIGNING_FLAGS)
|
|
set(SMTG_CODESIGN_ATTRIBUTES
|
|
${SMTG_CODESIGN_ATTRIBUTES}
|
|
XCODE_ATTRIBUTE_OTHER_CODE_SIGN_FLAGS "${SMTG_XCODE_OTHER_CODE_SIGNING_FLAGS}"
|
|
)
|
|
endif()
|
|
message(DEBUG "[SMTG] Code Sign Attributes: ${SMTG_CODESIGN_ATTRIBUTES}")
|
|
set_target_properties(${target}
|
|
PROPERTIES
|
|
${SMTG_CODESIGN_ATTRIBUTES}
|
|
)
|
|
if(SMTG_XCODE_MANUAL_CODE_SIGN_STYLE)
|
|
set_target_properties(${target}
|
|
PROPERTIES
|
|
XCODE_ATTRIBUTE_CODE_SIGN_STYLE "Manual"
|
|
)
|
|
endif(SMTG_XCODE_MANUAL_CODE_SIGN_STYLE)
|
|
if(SMTG_MAC AND (XCODE_VERSION VERSION_GREATER_EQUAL 12))
|
|
# make sure that the executable is signed before cmake post build commands are run as the
|
|
# Xcode code-sign step is run after the post build commands are run which would prevent
|
|
# using the target output on system where everything needs to be code-signed.
|
|
target_link_options(${target}
|
|
PRIVATE
|
|
LINKER:-adhoc_codesign
|
|
)
|
|
endif()
|
|
endif(XCODE AND (NOT SMTG_DISABLE_CODE_SIGNING))
|
|
endfunction(smtg_target_codesign)
|
|
|
|
#------------------------------------------------------------------------
|
|
function(smtg_target_add_custom_codesign_post_build_step)
|
|
if(XCODE AND (NOT SMTG_DISABLE_CODE_SIGNING))
|
|
set(mono_args PATH TARGET IDENTITY)
|
|
cmake_parse_arguments(PARSE_ARGV 0
|
|
PARSED_ARGS # Prefix of output variables e.g. PARSED_ARGS_RESOURCES
|
|
"" # List of names for boolean arguments
|
|
"${mono_args}" # List of names for mono-valued arguments
|
|
"FLAGS" # List of names for multi-valued arguments resp. lists
|
|
)
|
|
if(NOT PARSED_ARGS_TARGET)
|
|
message(FATAL_ERROR "Need TARGET argument")
|
|
endif()
|
|
if(NOT PARSED_ARGS_PATH)
|
|
message(FATAL_ERROR "Need PATH argument")
|
|
endif()
|
|
if(PARSED_ARGS_IDENTITY)
|
|
set(identity "${PARSED_ARGS_IDENTITY}")
|
|
else()
|
|
set(identity "-")
|
|
endif()
|
|
add_custom_command(TARGET ${PARSED_ARGS_TARGET} POST_BUILD
|
|
COMMAND /usr/bin/codesign -v -s "${identity}" --force ${PARSED_ARGS_FLAGS} "${PARSED_ARGS_PATH}"
|
|
)
|
|
endif()
|
|
endfunction(smtg_target_add_custom_codesign_post_build_step)
|
|
|
|
#------------------------------------------------------------------------
|
|
# Deprecated since 3.7.4 -----------------------------
|
|
function(smtg_codesign_target target)
|
|
message(DEPRECATION "[SMTG] Use smtg_target_codesign instead of smtg_codesign_target")
|
|
smtg_target_codesign (${target})
|
|
endfunction(smtg_codesign_target)
|