summaryrefslogtreecommitdiffstats
path: root/Source/cmInstallGenerator.cxx
diff options
context:
space:
mode:
authorEric NOULARD <eric.noulard@gmail.com>2010-08-23 15:38:33 (GMT)
committerEric NOULARD <eric.noulard@gmail.com>2010-08-23 15:38:33 (GMT)
commit6a521f8604ee4e6a757109e731a36fdc5575f6c8 (patch)
tree2a0ef90109f4c057d3673922448ee24549f9eb0a /Source/cmInstallGenerator.cxx
parent40dc97dc73b67d76442b386b73c57437fa72db34 (diff)
downloadCMake-6a521f8604ee4e6a757109e731a36fdc5575f6c8.zip
CMake-6a521f8604ee4e6a757109e731a36fdc5575f6c8.tar.gz
CMake-6a521f8604ee4e6a757109e731a36fdc5575f6c8.tar.bz2
CPack Enable better handling of absolute installed files
The idea of the patch is to let the install generator define CPACK_ABSOLUTE_INSTALL_FILES then when CMake is installing project he will concatenate the list of files and give it to specific CPack Generator by defining CPACK_ABSOLUTE_INSTALL_FILES to be the list of ALL files that were installed using absolute destination. An example of use has been applied to RPM generator which now tries to automatically build a relocatable package.
Diffstat (limited to 'Source/cmInstallGenerator.cxx')
-rw-r--r--Source/cmInstallGenerator.cxx20
1 files changed, 20 insertions, 0 deletions
diff --git a/Source/cmInstallGenerator.cxx b/Source/cmInstallGenerator.cxx
index 47ca769..9d5e416 100644
--- a/Source/cmInstallGenerator.cxx
+++ b/Source/cmInstallGenerator.cxx
@@ -60,6 +60,26 @@ void cmInstallGenerator
}
os << indent;
std::string dest = this->GetInstallDestination();
+ if (cmSystemTools::FileIsFullPath(dest.c_str()))
+ {
+ os << "list(APPEND CPACK_ABSOLUTE_DESTINATION_FILES\n";
+ os << indent << " \"";
+ for(std::vector<std::string>::const_iterator fi = files.begin();
+ fi != files.end(); ++fi)
+ {
+ if (fi!=files.begin()) os << ";";
+ os << dest << cmSystemTools::ConvertToOutputPath("/");
+ if (rename && *rename)
+ {
+ os << rename;
+ }
+ else
+ {
+ os << cmSystemTools::GetFilenameName(*fi);
+ }
+ }
+ os << "\")\n";
+ }
os << "FILE(INSTALL DESTINATION \"" << dest << "\" TYPE " << stype.c_str();
if(optional)
{