summaryrefslogtreecommitdiffstats
path: root/Source
diff options
context:
space:
mode:
authorBill Hoffman <bill.hoffman@kitware.com>2001-09-27 20:50:59 (GMT)
committerBill Hoffman <bill.hoffman@kitware.com>2001-09-27 20:50:59 (GMT)
commit1c8f0965176e6763e29d531c8804333458ad674b (patch)
tree772d13c0e77129ac6143b95666de1d1b6bb05aa4 /Source
parentd55f530012487694f2a9924d8de6d50181fb2aad (diff)
downloadCMake-1c8f0965176e6763e29d531c8804333458ad674b.zip
CMake-1c8f0965176e6763e29d531c8804333458ad674b.tar.gz
CMake-1c8f0965176e6763e29d531c8804333458ad674b.tar.bz2
BUG: use realpath instead of cd/pwd
Diffstat (limited to 'Source')
-rw-r--r--Source/cmSystemTools.cxx20
-rw-r--r--Source/cmUnixMakefileGenerator.cxx4
2 files changed, 20 insertions, 4 deletions
diff --git a/Source/cmSystemTools.cxx b/Source/cmSystemTools.cxx
index c00f9d6..d9a20a9 100644
--- a/Source/cmSystemTools.cxx
+++ b/Source/cmSystemTools.cxx
@@ -38,7 +38,7 @@ OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
=========================================================================*/
-#include "cmSystemTools.h"
+#include "cmSystemTools.h"
#include "errno.h"
#include "stdio.h"
#include <sys/stat.h>
@@ -46,6 +46,13 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#include <ctype.h>
#include "cmDirectory.h"
+// support for realpath call
+#ifndef _WIN32
+#include <limits.h>
+#include <stdlib.h>
+#include <sys/param.h>
+#endif
+
#if defined(_MSC_VER) || defined(__BORLANDC__)
#include <windows.h>
#include <direct.h>
@@ -1174,6 +1181,7 @@ void cmSystemTools::SplitProgramPath(const char* in_name,
*/
std::string cmSystemTools::CollapseFullPath(const char* in_name)
{
+#ifdef _WIN32
std::string dir, file;
cmSystemTools::SplitProgramPath(in_name, dir, file);
// Ultra-hack warning:
@@ -1186,8 +1194,16 @@ std::string cmSystemTools::CollapseFullPath(const char* in_name)
cmSystemTools::ConvertToUnixSlashes(newDir);
std::string newPath = newDir+"/"+file;
-
return newPath;
+#else
+# ifdef MAXPATHLEN
+ char resolved_name[MAXPATHLEN];
+# else
+ char resolved_name[PATH_MAX];
+# endif
+ realpath(in_name, resolved_name);
+ return resolved_name;
+#endif
}
/**
diff --git a/Source/cmUnixMakefileGenerator.cxx b/Source/cmUnixMakefileGenerator.cxx
index b51f52f..b1bd7db 100644
--- a/Source/cmUnixMakefileGenerator.cxx
+++ b/Source/cmUnixMakefileGenerator.cxx
@@ -450,8 +450,8 @@ void cmUnixMakefileGenerator::OutputLinkLibraries(std::ostream& fout,
runtimeDirs.push_back( libpath );
}
}
- cmRegularExpression libname("lib(.*)\\.(.*)");
- cmRegularExpression libname_noprefix("(.*)\\.(.*)");
+ cmRegularExpression libname("lib([^.]*)\\.(.*)");
+ cmRegularExpression libname_noprefix("([^.]*)\\.(.*)");
if(libname.find(file))
{
librariesLinked += "-l";