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,
|
" The script is not called by e.g.: make install.", false,
|
||||||
"Variables common to all CPack generators");
|
"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
|
cm->DefineProperty
|
||||||
("CPACK_WARN_ON_ABSOLUTE_INSTALL_DESTINATION", cmProperty::VARIABLE,
|
("CPACK_WARN_ON_ABSOLUTE_INSTALL_DESTINATION", cmProperty::VARIABLE,
|
||||||
"Ask CPack to warn each time a file with absolute INSTALL"
|
"Ask CPack to warn each time a file with absolute INSTALL"
|
||||||
" DESTINATION is encountered.",
|
" 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");
|
"Variables common to all CPack generators");
|
||||||
|
|
||||||
cm->DefineProperty
|
cm->DefineProperty
|
||||||
("CPACK_ERROR_ON_ABSOLUTE_INSTALL_DESTINATION", cmProperty::VARIABLE,
|
("CPACK_ERROR_ON_ABSOLUTE_INSTALL_DESTINATION", cmProperty::VARIABLE,
|
||||||
"Ask CPack to error out as soon as a file with absolute INSTALL"
|
"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 fatal error is emitted before the installation of "
|
||||||
"the offending file takes place. Some CPack generators, like NSIS,"
|
"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");
|
"Variables common to all CPack generators");
|
||||||
}
|
}
|
||||||
|
|
|
@ -854,7 +854,7 @@ int cmCPackGenerator::InstallProjectViaInstallCMakeProjects(
|
||||||
// then forward request to cmake_install.cmake script
|
// then forward request to cmake_install.cmake script
|
||||||
if (this->GetOption("CPACK_WARN_ON_ABSOLUTE_INSTALL_DESTINATION"))
|
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");
|
"1");
|
||||||
}
|
}
|
||||||
// If current CPack generator does support
|
// If current CPack generator does support
|
||||||
|
@ -864,11 +864,19 @@ int cmCPackGenerator::InstallProjectViaInstallCMakeProjects(
|
||||||
if (!SupportsAbsoluteDestination() ||
|
if (!SupportsAbsoluteDestination() ||
|
||||||
this->GetOption("CPACK_ERROR_ON_ABSOLUTE_INSTALL_DESTINATION"))
|
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");
|
"1");
|
||||||
}
|
}
|
||||||
// do installation
|
// do installation
|
||||||
int res = mf->ReadListFile(0, installFile.c_str());
|
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
|
// Now rebuild the list of files after installation
|
||||||
// of the current component (if we are in component install)
|
// of the current component (if we are in component install)
|
||||||
|
|
|
@ -833,6 +833,36 @@ void cmDocumentVariables::DefineVariables(cmake* cm)
|
||||||
"Default is ON.",false,
|
"Default is ON.",false,
|
||||||
"Variables That Change Behavior");
|
"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
|
// Variables defined by CMake that describe the system
|
||||||
|
|
||||||
|
|
|
@ -60,7 +60,7 @@ void cmInstallGenerator
|
||||||
std::string dest = this->GetInstallDestination();
|
std::string dest = this->GetInstallDestination();
|
||||||
if (cmSystemTools::FileIsFullPath(dest.c_str()))
|
if (cmSystemTools::FileIsFullPath(dest.c_str()))
|
||||||
{
|
{
|
||||||
os << "list(APPEND CPACK_ABSOLUTE_DESTINATION_FILES\n";
|
os << "list(APPEND CMAKE_ABSOLUTE_DESTINATION_FILES\n";
|
||||||
os << indent << " \"";
|
os << indent << " \"";
|
||||||
for(std::vector<std::string>::const_iterator fi = files.begin();
|
for(std::vector<std::string>::const_iterator fi = files.begin();
|
||||||
fi != files.end(); ++fi)
|
fi != files.end(); ++fi)
|
||||||
|
@ -80,16 +80,16 @@ void cmInstallGenerator
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
os << "\")\n";
|
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 "
|
os << indent << indent << "message(WARNING \"ABSOLUTE path INSTALL "
|
||||||
<< "DESTINATION : ${CPACK_ABSOLUTE_DESTINATION_FILES}\")\n";
|
<< "DESTINATION : ${CMAKE_ABSOLUTE_DESTINATION_FILES}\")\n";
|
||||||
os << indent << "ENDIF (CPACK_WARN_ON_ABSOLUTE_INSTALL_DESTINATION)\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 "
|
os << indent << indent << "message(FATAL_ERROR \"ABSOLUTE path INSTALL "
|
||||||
<< "DESTINATION forbidden (by CPack): "
|
<< "DESTINATION forbidden (by caller): "
|
||||||
<< "${CPACK_ABSOLUTE_DESTINATION_FILES}\")\n";
|
<< "${CMAKE_ABSOLUTE_DESTINATION_FILES}\")\n";
|
||||||
os << indent << "ENDIF (CPACK_ERROR_ON_ABSOLUTE_INSTALL_DESTINATION)\n";
|
os << indent << "ENDIF (CMAKE_ERROR_ON_ABSOLUTE_INSTALL_DESTINATION)\n";
|
||||||
}
|
}
|
||||||
os << "FILE(INSTALL DESTINATION \"" << dest << "\" TYPE " << stype.c_str();
|
os << "FILE(INSTALL DESTINATION \"" << dest << "\" TYPE " << stype.c_str();
|
||||||
if(optional)
|
if(optional)
|
||||||
|
|
Loading…
Reference in New Issue