CPack: Add support to overwrite or pass additional parameter to codesign

This commit is contained in:
André Klitzing 2015-03-11 13:04:15 +01:00 committed by Brad King
parent 380db3de00
commit fb3e4de8e8
2 changed files with 16 additions and 3 deletions

View File

@ -52,6 +52,11 @@
# list the main application folder, or the main executable. You should # list the main application folder, or the main executable. You should
# list any frameworks and plugins that are included in your app bundle. # list any frameworks and plugins that are included in your app bundle.
# #
# .. variable:: CPACK_BUNDLE_APPLE_CODESIGN_PARAMETER
#
# Additional parameter that will passed to codesign.
# Default value: "--deep -f"
#
# .. variable:: CPACK_COMMAND_CODESIGN # .. variable:: CPACK_COMMAND_CODESIGN
# #
# Path to the codesign(1) command used to sign applications with an # Path to the codesign(1) command used to sign applications with an

View File

@ -221,6 +221,11 @@ int cmCPackBundleGenerator::SignBundle(const std::string& src_dir)
bundle_path += ".app"; bundle_path += ".app";
// A list of additional files to sign, ie. frameworks and plugins. // A list of additional files to sign, ie. frameworks and plugins.
const std::string sign_parameter =
this->GetOption("CPACK_BUNDLE_APPLE_CODESIGN_PARAMETER")
? this->GetOption("CPACK_BUNDLE_APPLE_CODESIGN_PARAMETER")
: "--deep -f";
const std::string sign_files = const std::string sign_files =
this->GetOption("CPACK_BUNDLE_APPLE_CODESIGN_FILES") this->GetOption("CPACK_BUNDLE_APPLE_CODESIGN_FILES")
? this->GetOption("CPACK_BUNDLE_APPLE_CODESIGN_FILES") : ""; ? this->GetOption("CPACK_BUNDLE_APPLE_CODESIGN_FILES") : "";
@ -234,7 +239,8 @@ int cmCPackBundleGenerator::SignBundle(const std::string& src_dir)
{ {
std::ostringstream temp_sign_file_cmd; std::ostringstream temp_sign_file_cmd;
temp_sign_file_cmd << this->GetOption("CPACK_COMMAND_CODESIGN"); temp_sign_file_cmd << this->GetOption("CPACK_COMMAND_CODESIGN");
temp_sign_file_cmd << " --deep -f -s \"" << cpack_apple_cert_app; temp_sign_file_cmd << " " << sign_parameter << " -s \""
<< cpack_apple_cert_app;
temp_sign_file_cmd << "\" -i "; temp_sign_file_cmd << "\" -i ";
temp_sign_file_cmd << this->GetOption("CPACK_APPLE_BUNDLE_ID"); temp_sign_file_cmd << this->GetOption("CPACK_APPLE_BUNDLE_ID");
temp_sign_file_cmd << " \""; temp_sign_file_cmd << " \"";
@ -254,7 +260,8 @@ int cmCPackBundleGenerator::SignBundle(const std::string& src_dir)
// sign main binary // sign main binary
std::ostringstream temp_sign_binary_cmd; std::ostringstream temp_sign_binary_cmd;
temp_sign_binary_cmd << this->GetOption("CPACK_COMMAND_CODESIGN"); temp_sign_binary_cmd << this->GetOption("CPACK_COMMAND_CODESIGN");
temp_sign_binary_cmd << " --deep -f -s \"" << cpack_apple_cert_app; temp_sign_binary_cmd << " " << sign_parameter << " -s \""
<< cpack_apple_cert_app;
temp_sign_binary_cmd << "\" \"" << bundle_path << "\""; temp_sign_binary_cmd << "\" \"" << bundle_path << "\"";
if(!this->RunCommand(temp_sign_binary_cmd, &output)) if(!this->RunCommand(temp_sign_binary_cmd, &output))
@ -269,7 +276,8 @@ int cmCPackBundleGenerator::SignBundle(const std::string& src_dir)
// sign app bundle // sign app bundle
std::ostringstream temp_codesign_cmd; std::ostringstream temp_codesign_cmd;
temp_codesign_cmd << this->GetOption("CPACK_COMMAND_CODESIGN"); temp_codesign_cmd << this->GetOption("CPACK_COMMAND_CODESIGN");
temp_codesign_cmd << " --deep -f -s \"" << cpack_apple_cert_app << "\""; temp_codesign_cmd << " " << sign_parameter << " -s \""
<< cpack_apple_cert_app << "\"";
if(this->GetOption("CPACK_BUNDLE_APPLE_ENTITLEMENTS")) if(this->GetOption("CPACK_BUNDLE_APPLE_ENTITLEMENTS"))
{ {
temp_codesign_cmd << " --entitlements "; temp_codesign_cmd << " --entitlements ";