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:
Brad King 2008-05-27 10:22:03 -04:00
parent 852242e56b
commit 757875df91
3 changed files with 29 additions and 5 deletions

View File

@ -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,9 +1423,21 @@ cmFileCommand::HandleRPathChangeCommand(std::vector<std::string> const& args)
this->SetError(e.str().c_str());
success = false;
}
if(success && have_ft)
if(success)
{
cmSystemTools::FileTimeSet(file, ft);
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;

View File

@ -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
}

View File

@ -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);