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

@ -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. OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
=========================================================================*/ =========================================================================*/
#include "cmSystemTools.h" #include "cmSystemTools.h"
#include "errno.h" #include "errno.h"
#include "stdio.h" #include "stdio.h"
#include <sys/stat.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 <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";