diff options
author | Konstantin Podsvirov <konstantin@podsvirov.pro> | 2014-08-12 18:44:02 (GMT) |
---|---|---|
committer | Brad King <brad.king@kitware.com> | 2014-08-12 19:20:59 (GMT) |
commit | e6496b6023a8f3c471e81b1938580d50b52d3222 (patch) | |
tree | dc8d3a9f32a93f6d883cfa5efe463f3479e5c2c2 /Source/CPack/IFW/cmCPackIFWPackage.cxx | |
parent | 1f8cfc3b5f4bd87216e48c6bf909b59f10b9065e (diff) | |
download | CMake-e6496b6023a8f3c471e81b1938580d50b52d3222.zip CMake-e6496b6023a8f3c471e81b1938580d50b52d3222.tar.gz CMake-e6496b6023a8f3c471e81b1938580d50b52d3222.tar.bz2 |
CPackIFW: Revise this generator
CPack IFW generator updates:
- Group now can have script;
- Root package (for monolithic or one package installers) can be
configured from group.
CMake updates:
- Native installation (no Unspecified component).
Diffstat (limited to 'Source/CPack/IFW/cmCPackIFWPackage.cxx')
-rw-r--r-- | Source/CPack/IFW/cmCPackIFWPackage.cxx | 60 |
1 files changed, 57 insertions, 3 deletions
diff --git a/Source/CPack/IFW/cmCPackIFWPackage.cxx b/Source/CPack/IFW/cmCPackIFWPackage.cxx index 5e7a7c7..3c45639 100644 --- a/Source/CPack/IFW/cmCPackIFWPackage.cxx +++ b/Source/CPack/IFW/cmCPackIFWPackage.cxx @@ -121,7 +121,14 @@ cmCPackIFWPackage::cmCPackIFWPackage() : //---------------------------------------------------------------------------- const char *cmCPackIFWPackage::GetOption(const std::string &op) const { - return Generator ? Generator->GetOption(op) : 0; + const char *option = Generator ? Generator->GetOption(op) : 0; + return option && *option ? option : 0; +} + +//---------------------------------------------------------------------------- +bool cmCPackIFWPackage::IsOn(const std::string &op) const +{ + return Generator ? Generator->IsOn(op) : false; } //---------------------------------------------------------------------------- @@ -232,7 +239,6 @@ int cmCPackIFWPackage::ConfigureFromComponent(cmCPackComponent *component) // Script if (const char* option = GetOption(prefix + "SCRIPT")) { - // TODO: add check file exist Script = option; } @@ -306,7 +312,7 @@ int cmCPackIFWPackage::ConfigureFromComponent(cmCPackComponent *component) //---------------------------------------------------------------------------- int -cmCPackIFWPackage::ConfigureFromComponentGroup(cmCPackComponentGroup *group) +cmCPackIFWPackage::ConfigureFromGroup(cmCPackComponentGroup *group) { if(!group) return 0; @@ -335,6 +341,12 @@ cmCPackIFWPackage::ConfigureFromComponentGroup(cmCPackComponentGroup *group) Version = "1.0.0"; } + // Script + if (const char* option = GetOption(prefix + "SCRIPT")) + { + Script = option; + } + // Licenses if (const char* option = this->GetOption(prefix + "LICENSES")) { @@ -359,6 +371,48 @@ cmCPackIFWPackage::ConfigureFromComponentGroup(cmCPackComponentGroup *group) } //---------------------------------------------------------------------------- +int cmCPackIFWPackage::ConfigureFromGroup(const std::string &groupName) +{ + // Group configuration + + cmCPackComponentGroup group; + std::string prefix = "CPACK_COMPONENT_GROUP_" + + cmsys::SystemTools::UpperCase(groupName) + + "_"; + + if (const char *option = GetOption(prefix + "DISPLAY_NAME")) + { + group.DisplayName = option; + } + else + { + group.DisplayName = group.Name; + } + + if (const char* option = GetOption(prefix + "DESCRIPTION")) + { + group.Description = option; + } + group.IsBold = IsOn(prefix + "BOLD_TITLE"); + group.IsExpandedByDefault = IsOn(prefix + "EXPANDED"); + + // Package configuration + + group.Name = groupName; + + if(Generator) + { + Name = Generator->GetGroupPackageName(&group); + } + else + { + Name = group.Name; + } + + return ConfigureFromGroup(&group); +} + +//---------------------------------------------------------------------------- void cmCPackIFWPackage::GeneratePackageFile() { // Lazy directory initialization |