diff options
author | Bill Hoffman <bill.hoffman@kitware.com> | 2008-03-27 21:05:11 (GMT) |
---|---|---|
committer | Bill Hoffman <bill.hoffman@kitware.com> | 2008-03-27 21:05:11 (GMT) |
commit | 7dcfdf5005adf43a13c48a917066d8bc115d0d96 (patch) | |
tree | 628ce1ba15674f596b63b7dbf1477cc9c9bc2902 | |
parent | 4f88f7e4deca19e5b3955c32c6d3f9f960a8ea01 (diff) | |
download | CMake-7dcfdf5005adf43a13c48a917066d8bc115d0d96.zip CMake-7dcfdf5005adf43a13c48a917066d8bc115d0d96.tar.gz CMake-7dcfdf5005adf43a13c48a917066d8bc115d0d96.tar.bz2 |
BUG: fix install problem on make and allow symlinks to cmake bin directory
-rw-r--r-- | Source/cmake.cxx | 2 | ||||
-rw-r--r-- | Source/kwsys/SystemTools.cxx | 7 | ||||
-rw-r--r-- | Source/kwsys/SystemTools.hxx.in | 5 |
3 files changed, 14 insertions, 0 deletions
diff --git a/Source/cmake.cxx b/Source/cmake.cxx index 3b99a82..02e1770 100644 --- a/Source/cmake.cxx +++ b/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) { diff --git a/Source/kwsys/SystemTools.cxx b/Source/kwsys/SystemTools.cxx index f6047a2..4815ffd 100644 --- a/Source/kwsys/SystemTools.cxx +++ b/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. diff --git a/Source/kwsys/SystemTools.hxx.in b/Source/kwsys/SystemTools.hxx.in index d7f11ca..29f451c 100644 --- a/Source/kwsys/SystemTools.hxx.in +++ b/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: |