ENH: Inform user when RPATH is set during installation.
- Original patch from Alex. - Modified to print only when RPATH is actually set.
This commit is contained in:
parent
852242e56b
commit
757875df91
|
@ -1411,7 +1411,8 @@ cmFileCommand::HandleRPathChangeCommand(std::vector<std::string> const& args)
|
|||
cmSystemToolsFileTime* ft = cmSystemTools::FileTimeNew();
|
||||
bool have_ft = cmSystemTools::FileTimeGet(file, ft);
|
||||
std::string emsg;
|
||||
if(!cmSystemTools::ChangeRPath(file, oldRPath, newRPath, &emsg))
|
||||
bool changed;
|
||||
if(!cmSystemTools::ChangeRPath(file, oldRPath, newRPath, &emsg, &changed))
|
||||
{
|
||||
cmOStringStream e;
|
||||
e << "RPATH_CHANGE could not write new RPATH:\n"
|
||||
|
@ -1422,10 +1423,22 @@ cmFileCommand::HandleRPathChangeCommand(std::vector<std::string> const& args)
|
|||
this->SetError(e.str().c_str());
|
||||
success = false;
|
||||
}
|
||||
if(success && have_ft)
|
||||
if(success)
|
||||
{
|
||||
if(changed)
|
||||
{
|
||||
std::string message = "Set runtime path of \"";
|
||||
message += file;
|
||||
message += "\" to \"";
|
||||
message += newRPath;
|
||||
message += "\"";
|
||||
this->Makefile->DisplayStatus(message.c_str(), -1);
|
||||
}
|
||||
if(have_ft)
|
||||
{
|
||||
cmSystemTools::FileTimeSet(file, ft);
|
||||
}
|
||||
}
|
||||
cmSystemTools::FileTimeDelete(ft);
|
||||
return success;
|
||||
}
|
||||
|
|
|
@ -2332,9 +2332,14 @@ std::string::size_type cmSystemToolsFindRPath(std::string const& have,
|
|||
bool cmSystemTools::ChangeRPath(std::string const& file,
|
||||
std::string const& oldRPath,
|
||||
std::string const& newRPath,
|
||||
std::string* emsg)
|
||||
std::string* emsg,
|
||||
bool* changed)
|
||||
{
|
||||
#if defined(CMAKE_USE_ELF_PARSER)
|
||||
if(changed)
|
||||
{
|
||||
*changed = false;
|
||||
}
|
||||
unsigned long rpathPosition = 0;
|
||||
unsigned long rpathSize = 0;
|
||||
std::string rpathPrefix;
|
||||
|
@ -2445,6 +2450,10 @@ bool cmSystemTools::ChangeRPath(std::string const& file,
|
|||
// Make sure everything was okay.
|
||||
if(f)
|
||||
{
|
||||
if(changed)
|
||||
{
|
||||
*changed = true;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
else
|
||||
|
@ -2460,6 +2469,7 @@ bool cmSystemTools::ChangeRPath(std::string const& file,
|
|||
(void)oldRPath;
|
||||
(void)newRPath;
|
||||
(void)emsg;
|
||||
(void)changed;
|
||||
return false;
|
||||
#endif
|
||||
}
|
||||
|
|
|
@ -391,7 +391,8 @@ public:
|
|||
static bool ChangeRPath(std::string const& file,
|
||||
std::string const& oldRPath,
|
||||
std::string const& newRPath,
|
||||
std::string* emsg = 0);
|
||||
std::string* emsg = 0,
|
||||
bool* changed = 0);
|
||||
|
||||
/** Try to remove the RPATH from an ELF binary. */
|
||||
static bool RemoveRPath(std::string const& file, std::string* emsg = 0);
|
||||
|
|
Loading…
Reference in New Issue