Prechádzať zdrojové kódy

ENH: Inform user when RPATH is set during installation.

  - Original patch from Alex.
  - Modified to print only when RPATH is actually set.
Brad King 17 rokov pred
rodič
commit
757875df91

+ 16 - 3
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;

+ 11 - 1
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
 }

+ 2 - 1
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);