Use CPACK_xxx and CMAKE_xxx in a consistent way.
CMAKE_xxx vars are now used in the CMake-generated cmake_install.cmake script while CPACK_xxx equivalent vars are used from within CPack. CPack is responsible for getting/forwarding definitions of CPACK_xxxx var corresponding to CMAKE_xxxx when invoking CMake-generated install scripts. As a consequence: CMAKE_ABSOLUTE_DESTINATION_FILES CMAKE_WARN_ON_ABSOLUTE_INSTALL_DESTINATION CMAKE_ERROR_ON_ABSOLUTE_INSTALL_DESTINATION may be used from outside CPack as well. e.g. cmake -DCMAKE_ERROR_ON_ABSOLUTE_INSTALL_DESTINATION=1 -P cmake_install.cmake works as expected.
This commit is contained in:
parent
f90223cafc
commit
4986d525af
|
@ -78,19 +78,34 @@ void cmCPackDocumentVariables::DefineVariables(cmake* cm)
|
|||
" The script is not called by e.g.: make install.", false,
|
||||
"Variables common to all CPack generators");
|
||||
|
||||
cm->DefineProperty
|
||||
("CPACK_ABSOLUTE_DESTINATION_FILES", cmProperty::VARIABLE,
|
||||
"List of files which have been installed using "
|
||||
" an ABSOLUTE DESTINATION path.",
|
||||
"This variable is a Read-Only variable which is set internally"
|
||||
" by CPack during installation and before packaging using"
|
||||
" CMAKE_ABSOLUTE_DESTINATION_FILES defined in cmake_install.cmake "
|
||||
"scripts. The value can be used within CPack project configuration"
|
||||
" file and/or CPack<GEN>.cmake file of <GEN> generator.", false,
|
||||
"Variables common to all CPack generators");
|
||||
|
||||
cm->DefineProperty
|
||||
("CPACK_WARN_ON_ABSOLUTE_INSTALL_DESTINATION", cmProperty::VARIABLE,
|
||||
"Ask CPack to warn each time a file with absolute INSTALL"
|
||||
" DESTINATION is encountered.",
|
||||
"", false,
|
||||
"This variable triggers the definition of "
|
||||
"CMAKE_WARN_ON_ABSOLUTE_INSTALL_DESTINATION when CPack runs"
|
||||
" cmake_install.cmake scripts.", false,
|
||||
"Variables common to all CPack generators");
|
||||
|
||||
cm->DefineProperty
|
||||
("CPACK_ERROR_ON_ABSOLUTE_INSTALL_DESTINATION", cmProperty::VARIABLE,
|
||||
"Ask CPack to error out as soon as a file with absolute INSTALL"
|
||||
" DESTINATION is encountered",
|
||||
" DESTINATION is encountered.",
|
||||
"The fatal error is emitted before the installation of "
|
||||
"the offending file takes place. Some CPack generators, like NSIS,"
|
||||
"enforce this internally.", false,
|
||||
"enforce this internally. "
|
||||
"This variable triggers the definition of"
|
||||
"CMAKE_ERROR_ON_ABSOLUTE_INSTALL_DESTINATION when CPack runs"
|
||||
"Variables common to all CPack generators");
|
||||
}
|
||||
|
|
|
@ -854,7 +854,7 @@ int cmCPackGenerator::InstallProjectViaInstallCMakeProjects(
|
|||
// then forward request to cmake_install.cmake script
|
||||
if (this->GetOption("CPACK_WARN_ON_ABSOLUTE_INSTALL_DESTINATION"))
|
||||
{
|
||||
mf->AddDefinition("CPACK_WARN_ON_ABSOLUTE_INSTALL_DESTINATION",
|
||||
mf->AddDefinition("CMAKE_WARN_ON_ABSOLUTE_INSTALL_DESTINATION",
|
||||
"1");
|
||||
}
|
||||
// If current CPack generator does support
|
||||
|
@ -864,11 +864,19 @@ int cmCPackGenerator::InstallProjectViaInstallCMakeProjects(
|
|||
if (!SupportsAbsoluteDestination() ||
|
||||
this->GetOption("CPACK_ERROR_ON_ABSOLUTE_INSTALL_DESTINATION"))
|
||||
{
|
||||
mf->AddDefinition("CPACK_ERROR_ON_ABSOLUTE_INSTALL_DESTINATION",
|
||||
mf->AddDefinition("CMAKE_ERROR_ON_ABSOLUTE_INSTALL_DESTINATION",
|
||||
"1");
|
||||
}
|
||||
// do installation
|
||||
int res = mf->ReadListFile(0, installFile.c_str());
|
||||
// forward definition of CMAKE_ABSOLUTE_DESTINATION_FILES
|
||||
// to CPack (may be used by generators like CPack RPM or DEB)
|
||||
// in order to transparently handle ABSOLUTE PATH
|
||||
if (mf->GetDefinition("CMAKE_ABSOLUTE_DESTINATION_FILES"))
|
||||
{
|
||||
mf->AddDefinition("CPACK_ABSOLUTE_DESTINATION_FILES",
|
||||
mf->GetDefinition("CMAKE_ABSOLUTE_DESTINATION_FILES"));
|
||||
}
|
||||
|
||||
// Now rebuild the list of files after installation
|
||||
// of the current component (if we are in component install)
|
||||
|
|
|
@ -833,6 +833,36 @@ void cmDocumentVariables::DefineVariables(cmake* cm)
|
|||
"Default is ON.",false,
|
||||
"Variables That Change Behavior");
|
||||
|
||||
cm->DefineProperty
|
||||
("CMAKE_ABSOLUTE_DESTINATION_FILES", cmProperty::VARIABLE,
|
||||
"List of files which have been installed using "
|
||||
" an ABSOLUTE DESTINATION path.",
|
||||
"This variable is defined by CMake-generated cmake_install.cmake "
|
||||
"scripts."
|
||||
" It can be used (read-only) by program or script that source those"
|
||||
" install scripts. This is used by some CPack generators (e.g. RPM).",
|
||||
false,
|
||||
"Variables That Change Behavior");
|
||||
|
||||
cm->DefineProperty
|
||||
("CMAKE_WARN_ON_ABSOLUTE_INSTALL_DESTINATION", cmProperty::VARIABLE,
|
||||
"Ask cmake_install.cmake script to warn each time a file with "
|
||||
"absolute INSTALL DESTINATION is encountered.",
|
||||
"This variable is used by CMake-generated cmake_install.cmake"
|
||||
" scripts. If ones set this variable to ON while running the"
|
||||
" script, it may get warning messages from the script.", false,
|
||||
"Variables That Change Behavior");
|
||||
|
||||
cm->DefineProperty
|
||||
("CMAKE_ERROR_ON_ABSOLUTE_INSTALL_DESTINATION", cmProperty::VARIABLE,
|
||||
"Ask cmake_install.cmake script to error out as soon as "
|
||||
"a file with absolute INSTALL DESTINATION is encountered.",
|
||||
"The fatal error is emitted before the installation of "
|
||||
"the offending file takes place."
|
||||
" This variable is used by CMake-generated cmake_install.cmake"
|
||||
" scripts. If ones set this variable to ON while running the"
|
||||
" script, it may get fatal error messages from the script.",false,
|
||||
"Variables That Change Behavior");
|
||||
|
||||
// Variables defined by CMake that describe the system
|
||||
|
||||
|
|
|
@ -60,7 +60,7 @@ void cmInstallGenerator
|
|||
std::string dest = this->GetInstallDestination();
|
||||
if (cmSystemTools::FileIsFullPath(dest.c_str()))
|
||||
{
|
||||
os << "list(APPEND CPACK_ABSOLUTE_DESTINATION_FILES\n";
|
||||
os << "list(APPEND CMAKE_ABSOLUTE_DESTINATION_FILES\n";
|
||||
os << indent << " \"";
|
||||
for(std::vector<std::string>::const_iterator fi = files.begin();
|
||||
fi != files.end(); ++fi)
|
||||
|
@ -80,16 +80,16 @@ void cmInstallGenerator
|
|||
}
|
||||
}
|
||||
os << "\")\n";
|
||||
os << indent << "IF (CPACK_WARN_ON_ABSOLUTE_INSTALL_DESTINATION)\n";
|
||||
os << indent << "IF (CMAKE_WARN_ON_ABSOLUTE_INSTALL_DESTINATION)\n";
|
||||
os << indent << indent << "message(WARNING \"ABSOLUTE path INSTALL "
|
||||
<< "DESTINATION : ${CPACK_ABSOLUTE_DESTINATION_FILES}\")\n";
|
||||
os << indent << "ENDIF (CPACK_WARN_ON_ABSOLUTE_INSTALL_DESTINATION)\n";
|
||||
<< "DESTINATION : ${CMAKE_ABSOLUTE_DESTINATION_FILES}\")\n";
|
||||
os << indent << "ENDIF (CMAKE_WARN_ON_ABSOLUTE_INSTALL_DESTINATION)\n";
|
||||
|
||||
os << indent << "IF (CPACK_ERROR_ON_ABSOLUTE_INSTALL_DESTINATION)\n";
|
||||
os << indent << "IF (CMAKE_ERROR_ON_ABSOLUTE_INSTALL_DESTINATION)\n";
|
||||
os << indent << indent << "message(FATAL_ERROR \"ABSOLUTE path INSTALL "
|
||||
<< "DESTINATION forbidden (by CPack): "
|
||||
<< "${CPACK_ABSOLUTE_DESTINATION_FILES}\")\n";
|
||||
os << indent << "ENDIF (CPACK_ERROR_ON_ABSOLUTE_INSTALL_DESTINATION)\n";
|
||||
<< "DESTINATION forbidden (by caller): "
|
||||
<< "${CMAKE_ABSOLUTE_DESTINATION_FILES}\")\n";
|
||||
os << indent << "ENDIF (CMAKE_ERROR_ON_ABSOLUTE_INSTALL_DESTINATION)\n";
|
||||
}
|
||||
os << "FILE(INSTALL DESTINATION \"" << dest << "\" TYPE " << stype.c_str();
|
||||
if(optional)
|
||||
|
|
Loading…
Reference in New Issue