BUG: use realpath instead of cd/pwd

This commit is contained in:
Bill Hoffman 2001-09-27 16:50:59 -04:00
parent d55f530012
commit 1c8f096517
2 changed files with 20 additions and 4 deletions

View File

@ -46,6 +46,13 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#include <ctype.h> #include <ctype.h>
#include "cmDirectory.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__) #if defined(_MSC_VER) || defined(__BORLANDC__)
#include <windows.h> #include <windows.h>
#include <direct.h> #include <direct.h>
@ -1174,6 +1181,7 @@ void cmSystemTools::SplitProgramPath(const char* in_name,
*/ */
std::string cmSystemTools::CollapseFullPath(const char* in_name) std::string cmSystemTools::CollapseFullPath(const char* in_name)
{ {
#ifdef _WIN32
std::string dir, file; std::string dir, file;
cmSystemTools::SplitProgramPath(in_name, dir, file); cmSystemTools::SplitProgramPath(in_name, dir, file);
// Ultra-hack warning: // Ultra-hack warning:
@ -1186,8 +1194,16 @@ std::string cmSystemTools::CollapseFullPath(const char* in_name)
cmSystemTools::ConvertToUnixSlashes(newDir); cmSystemTools::ConvertToUnixSlashes(newDir);
std::string newPath = newDir+"/"+file; std::string newPath = newDir+"/"+file;
return newPath; 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
} }
/** /**

View File

@ -450,8 +450,8 @@ void cmUnixMakefileGenerator::OutputLinkLibraries(std::ostream& fout,
runtimeDirs.push_back( libpath ); runtimeDirs.push_back( libpath );
} }
} }
cmRegularExpression libname("lib(.*)\\.(.*)"); cmRegularExpression libname("lib([^.]*)\\.(.*)");
cmRegularExpression libname_noprefix("(.*)\\.(.*)"); cmRegularExpression libname_noprefix("([^.]*)\\.(.*)");
if(libname.find(file)) if(libname.find(file))
{ {
librariesLinked += "-l"; librariesLinked += "-l";