summaryrefslogtreecommitdiffstats
path: root/Source/CPack
diff options
context:
space:
mode:
authorTim Hutt <tim.hutt@ultrahaptics.com>2017-02-14 13:18:42 (GMT)
committerBrad King <brad.king@kitware.com>2017-02-17 16:40:45 (GMT)
commitd32f9debc80e1fc90efb07392f829d998cbbc2c5 (patch)
tree8b4eb5a95ca78cfc7a7fa0aea2bae9f28c6ac4f5 /Source/CPack
parent11e9605179e340833d95115fb0178d2ee84b3e24 (diff)
downloadCMake-d32f9debc80e1fc90efb07392f829d998cbbc2c5.zip
CMake-d32f9debc80e1fc90efb07392f829d998cbbc2c5.tar.gz
CMake-d32f9debc80e1fc90efb07392f829d998cbbc2c5.tar.bz2
CPack: Add option to specify --component-plist for productbuild
When using the productbuild generator this lets you specify the value of the `--component-plist` parameter when it runs pkgbuild for a component. Fixes: #16638
Diffstat (limited to 'Source/CPack')
-rw-r--r--Source/CPack/cmCPackComponentGroup.h4
-rw-r--r--Source/CPack/cmCPackGenerator.cxx5
-rw-r--r--Source/CPack/cmCPackProductBuildGenerator.cxx4
3 files changed, 13 insertions, 0 deletions
diff --git a/Source/CPack/cmCPackComponentGroup.h b/Source/CPack/cmCPackComponentGroup.h
index f955daf..510adc2 100644
--- a/Source/CPack/cmCPackComponentGroup.h
+++ b/Source/CPack/cmCPackComponentGroup.h
@@ -78,6 +78,10 @@ public:
/// contains the files that are part of this component.
std::string ArchiveFile;
+ /// The file to pass to --component-plist when using the
+ /// productbuild generator.
+ std::string Plist;
+
/// The components that this component depends on.
std::vector<cmCPackComponent*> Dependencies;
diff --git a/Source/CPack/cmCPackGenerator.cxx b/Source/CPack/cmCPackGenerator.cxx
index 21eda79..e1a4a2a 100644
--- a/Source/CPack/cmCPackGenerator.cxx
+++ b/Source/CPack/cmCPackGenerator.cxx
@@ -1396,6 +1396,11 @@ cmCPackComponent* cmCPackGenerator::GetComponent(
component->ArchiveFile = archiveFile;
}
+ const char* plist = this->GetOption(macroPrefix + "_PLIST");
+ if (plist && *plist) {
+ component->Plist = plist;
+ }
+
const char* groupName = this->GetOption(macroPrefix + "_GROUP");
if (groupName && *groupName) {
component->Group = GetComponentGroup(projectName, groupName);
diff --git a/Source/CPack/cmCPackProductBuildGenerator.cxx b/Source/CPack/cmCPackProductBuildGenerator.cxx
index a5a18dc..076cc25 100644
--- a/Source/CPack/cmCPackProductBuildGenerator.cxx
+++ b/Source/CPack/cmCPackProductBuildGenerator.cxx
@@ -223,6 +223,10 @@ bool cmCPackProductBuildGenerator::GenerateComponentPackage(
: " --keychain \"" + keychainPath + "\"")
<< " \"" << packageFile << "\"";
+ if (component && !component->Plist.empty()) {
+ pkgCmd << " --component-plist \"" << component->Plist << "\"";
+ }
+
// Run ProductBuild
return RunProductBuild(pkgCmd.str());
}