diff options
author | Brad King <brad.king@kitware.com> | 2008-05-27 14:22:03 (GMT) |
---|---|---|
committer | Brad King <brad.king@kitware.com> | 2008-05-27 14:22:03 (GMT) |
commit | 757875df9151eb02e252caa4e4f5ee6522f5a99f (patch) | |
tree | 38d67faa987944e17f25708e896300bd1aace132 /Source | |
parent | 852242e56b74520b3c4486f4d5aca54b42c42a77 (diff) | |
download | CMake-757875df9151eb02e252caa4e4f5ee6522f5a99f.zip CMake-757875df9151eb02e252caa4e4f5ee6522f5a99f.tar.gz CMake-757875df9151eb02e252caa4e4f5ee6522f5a99f.tar.bz2 |
ENH: Inform user when RPATH is set during installation.
- Original patch from Alex.
- Modified to print only when RPATH is actually set.
Diffstat (limited to 'Source')
-rw-r--r-- | Source/cmFileCommand.cxx | 19 | ||||
-rw-r--r-- | Source/cmSystemTools.cxx | 12 | ||||
-rw-r--r-- | Source/cmSystemTools.h | 3 |
3 files changed, 29 insertions, 5 deletions
diff --git a/Source/cmFileCommand.cxx b/Source/cmFileCommand.cxx index be2bf65..6ac6bcca 100644 --- a/Source/cmFileCommand.cxx +++ b/Source/cmFileCommand.cxx @@ -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; diff --git a/Source/cmSystemTools.cxx b/Source/cmSystemTools.cxx index 4d25944..6da20fb 100644 --- a/Source/cmSystemTools.cxx +++ b/Source/cmSystemTools.cxx @@ -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 } diff --git a/Source/cmSystemTools.h b/Source/cmSystemTools.h index 89cf407..77b7983 100644 --- a/Source/cmSystemTools.h +++ b/Source/cmSystemTools.h @@ -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); |