summaryrefslogtreecommitdiffstats
path: root/Source/cmMakefile.cxx
diff options
context:
space:
mode:
authorBrad King <brad.king@kitware.com>2003-02-07 19:04:16 (GMT)
committerBrad King <brad.king@kitware.com>2003-02-07 19:04:16 (GMT)
commitcde384411d1907d93369c144ec7b2f28da2628d5 (patch)
tree2b5aeb18901a5c20d408b3eff32e27e82c252be8 /Source/cmMakefile.cxx
parentf2b47501694f6951c97335676b2c577cbb4fd76f (diff)
downloadCMake-cde384411d1907d93369c144ec7b2f28da2628d5.zip
CMake-cde384411d1907d93369c144ec7b2f28da2628d5.tar.gz
CMake-cde384411d1907d93369c144ec7b2f28da2628d5.tar.bz2
Several fixes/improvements:
- Fixed CollapseFullPath to work on relative paths with base paths not in the current working directory. - INCLUDE command now supports relative paths (using above fix). - Added ABSOLUTE option to GET_FILENAME_COMPONENT command to unwind symlinks and relative paths. - Fixed libName_EXPORTS macro definition to be valid C identifier. - Added DEFINE_SYMBOL target propterty for customizing the export symbol. - Implemented LINK_FLAGS target propterty for libraries in VC6 and VC7. Several of these fixes were contributed by Gareth Jones.
Diffstat (limited to 'Source/cmMakefile.cxx')
-rw-r--r--Source/cmMakefile.cxx24
1 files changed, 23 insertions, 1 deletions
diff --git a/Source/cmMakefile.cxx b/Source/cmMakefile.cxx
index a567f83..7143f59 100644
--- a/Source/cmMakefile.cxx
+++ b/Source/cmMakefile.cxx
@@ -231,12 +231,34 @@ bool cmMakefile::ExecuteCommand(const cmListFileFunction& lff)
// #include has been called). We DO NOT look at the parents of this
// list-file, and for all other purposes, the name of this list-file
// is "filename" and not "external".
-bool cmMakefile::ReadListFile(const char* filename, const char* external)
+bool cmMakefile::ReadListFile(const char* filename_in, const char* external_in)
{
// used to watch for blockers going out of scope
// e.g. mismatched IF statement
std::set<cmFunctionBlocker *> originalBlockers;
+
+ const char* external = 0;
+ std::string external_abs;
+
+ const char* filename = filename_in;
+ std::string filename_abs;
+
+ if (external_in)
+ {
+ external_abs =
+ cmSystemTools::CollapseFullPath(external_in,
+ m_cmCurrentDirectory.c_str());
+ external = external_abs.c_str();
+ if (filename_in)
+ {
+ filename_abs =
+ cmSystemTools::CollapseFullPath(filename_in,
+ m_cmCurrentDirectory.c_str());
+ filename = filename_abs.c_str();
+ }
+ }
+
// keep track of the current file being read
if (filename)
{