summaryrefslogtreecommitdiffstats
path: root/Source
diff options
context:
space:
mode:
authorBill Hoffman <bill.hoffman@kitware.com>2006-07-24 15:27:07 (GMT)
committerBill Hoffman <bill.hoffman@kitware.com>2006-07-24 15:27:07 (GMT)
commit3b743880503248235f319bd3e59e534ea26383f6 (patch)
treeb42684228178a0c8716b032e24b3906a2f17e065 /Source
parent53549a6426368f0ff482e7d00ff904bfa0e36ea1 (diff)
downloadCMake-3b743880503248235f319bd3e59e534ea26383f6.zip
CMake-3b743880503248235f319bd3e59e534ea26383f6.tar.gz
CMake-3b743880503248235f319bd3e59e534ea26383f6.tar.bz2
ENH: allow for source tree to be in root directory
Diffstat (limited to 'Source')
-rw-r--r--Source/cmLocalVisualStudio7Generator.cxx1
-rw-r--r--Source/kwsys/SystemTools.cxx24
2 files changed, 19 insertions, 6 deletions
diff --git a/Source/cmLocalVisualStudio7Generator.cxx b/Source/cmLocalVisualStudio7Generator.cxx
index 4466e8d..8e5c598 100644
--- a/Source/cmLocalVisualStudio7Generator.cxx
+++ b/Source/cmLocalVisualStudio7Generator.cxx
@@ -176,6 +176,7 @@ void cmLocalVisualStudio7Generator::AddVCProjBuildRule(cmTarget& tgt)
std::string makefileIn = this->Makefile->GetStartDirectory();
makefileIn += "/";
makefileIn += "CMakeLists.txt";
+ makefileIn = cmSystemTools::CollapseFullPath(makefileIn.c_str());
std::string comment = "Building Custom Rule ";
comment += makefileIn;
std::string args;
diff --git a/Source/kwsys/SystemTools.cxx b/Source/kwsys/SystemTools.cxx
index e4efe39..172ce49 100644
--- a/Source/kwsys/SystemTools.cxx
+++ b/Source/kwsys/SystemTools.cxx
@@ -1339,13 +1339,17 @@ void SystemTools::ConvertToUnixSlashes(kwsys_stl::string& path)
path.replace(0,1,homeEnv);
}
}
-
+ // remove trailing slash if the path is more than
+ // a single /
pathCString = path.c_str();
- if (*(pathCString+(path.size()-1)) == '/')
+ if(path.size() > 1 && *(pathCString+(path.size()-1)) == '/')
{
- path = path.substr(0, path.size()-1);
+ // if it is c:/ then do not remove the trailing slash
+ if(!((path.size() == 3 && pathCString[1] == ':')))
+ {
+ path = path.substr(0, path.size()-1);
+ }
}
-
}
}
@@ -2503,7 +2507,6 @@ kwsys_stl::string SystemTools::CollapseFullPath(const char* in_path,
// Split the input path components.
kwsys_stl::vector<kwsys_stl::string> path_components;
SystemTools::SplitPath(in_path, path_components);
-
// If the input path is relative, start with a base path.
if(path_components[0].length() == 0)
{
@@ -2891,7 +2894,16 @@ kwsys_stl::string SystemTools::GetFilenamePath(const kwsys_stl::string& filename
kwsys_stl::string::size_type slash_pos = fn.rfind("/");
if(slash_pos != kwsys_stl::string::npos)
{
- return fn.substr(0, slash_pos);
+ kwsys_stl::string ret = fn.substr(0, slash_pos);
+ if(ret.size() == 2 && ret[1] == ':')
+ {
+ return ret + '/';
+ }
+ if(ret.size() == 0)
+ {
+ return "/";
+ }
+ return ret;
}
else
{