Преглед на файлове

BUG: fix install problem on make and allow symlinks to cmake bin directory

Bill Hoffman преди 17 години
родител
ревизия
7dcfdf5005
променени са 3 файла, в които са добавени 14 реда и са изтрити 0 реда
  1. 2 0
      Source/cmake.cxx
  2. 7 0
      Source/kwsys/SystemTools.cxx
  3. 5 0
      Source/kwsys/SystemTools.hxx.in

+ 2 - 0
Source/cmake.cxx

@@ -783,6 +783,7 @@ int cmake::AddCMakePaths()
 {
   // Find the cmake executable
   std::string cMakeSelf = cmSystemTools::GetExecutableDirectory();
+  cMakeSelf = cmSystemTools::GetRealPath(cMakeSelf.c_str());
   cMakeSelf += "/cmake";
   cMakeSelf += cmSystemTools::GetExecutableExtension();
   if(!cmSystemTools::FileExists(cMakeSelf.c_str()))
@@ -858,6 +859,7 @@ int cmake::AddCMakePaths()
     {
     // next try exe/..
     cMakeRoot  = cmSystemTools::GetProgramPath(cMakeSelf.c_str());
+    cMakeRoot = cmSystemTools::GetRealPath(cMakeRoot.c_str());
     std::string::size_type slashPos = cMakeRoot.rfind("/");
     if(slashPos != std::string::npos)
       {

+ 7 - 0
Source/kwsys/SystemTools.cxx

@@ -2434,6 +2434,13 @@ kwsys_stl::string SystemTools
   return "";
 }
 
+kwsys_stl::string SystemTools::GetRealPath(const char* path)
+{
+  kwsys_stl::string ret;
+  Realpath(path, ret);
+  return ret;
+}
+
 bool SystemTools::FileIsDirectory(const char* name)
 {
   // Remove any trailing slash from the name.

+ 5 - 0
Source/kwsys/SystemTools.hxx.in

@@ -350,6 +350,11 @@ public:
   static kwsys_stl::string CollapseFullPath(const char* in_relative,
                                             const char* in_base);
 
+  /** 
+   * Get the real path for a given path, removing all symlinks.
+   */
+  static kwsys_stl::string GetRealPath(const char* path);
+
   /**
    * Split a path name into its root component and the rest of the
    * path.  The root component is one of the following: