diff options
author | Brad King <brad.king@kitware.com> | 2012-02-06 14:40:42 (GMT) |
---|---|---|
committer | Brad King <brad.king@kitware.com> | 2012-02-06 14:40:42 (GMT) |
commit | c8ef6430e09c063b74708ef0cd28f533c15fd8bd (patch) | |
tree | d37c630801b3ba3abbc687b12c55315ee89fda11 /Source | |
parent | 8704525f201452929a2bec96fb04387c97ad8a79 (diff) | |
download | CMake-c8ef6430e09c063b74708ef0cd28f533c15fd8bd.zip CMake-c8ef6430e09c063b74708ef0cd28f533c15fd8bd.tar.gz CMake-c8ef6430e09c063b74708ef0cd28f533c15fd8bd.tar.bz2 |
Allow directory names containing '=' and warn if necessary (#12934)
The approach taken by commit 8704525f (Reject directory names containing
'=', 2011-01-14) was perhaps too heavy-handed for avoiding the obscure
cases when '=' in the path fails due to limitations of Make syntax.
Only two CMake tests:
LinkDirectory
OutOfSource
fail when the path contains '=' and they cover obscure cases. Instead
of rejecting such paths outright just warn when the problem may occur.
Diffstat (limited to 'Source')
-rw-r--r-- | Source/cmLocalUnixMakefileGenerator3.cxx | 15 | ||||
-rw-r--r-- | Source/cmake.cxx | 24 | ||||
-rw-r--r-- | Source/cmake.h | 2 |
3 files changed, 15 insertions, 26 deletions
diff --git a/Source/cmLocalUnixMakefileGenerator3.cxx b/Source/cmLocalUnixMakefileGenerator3.cxx index ff48009..b10e959 100644 --- a/Source/cmLocalUnixMakefileGenerator3.cxx +++ b/Source/cmLocalUnixMakefileGenerator3.cxx @@ -561,6 +561,21 @@ cmLocalUnixMakefileGenerator3 space = " "; } + // Warn about paths not supported by Make tools. + std::string::size_type pos = tgt.find_first_of("="); + if(pos != std::string::npos) + { + cmOStringStream m; + m << + "Make rule for\n" + " " << tgt << "\n" + "has '=' on left hand side. " + "The make tool may not support this."; + cmListFileBacktrace bt; + this->GlobalGenerator->GetCMakeInstance() + ->IssueMessage(cmake::WARNING, m.str(), bt); + } + // Mark the rule as symbolic if requested. if(symbolic) { diff --git a/Source/cmake.cxx b/Source/cmake.cxx index bc3245e..1b49837 100644 --- a/Source/cmake.cxx +++ b/Source/cmake.cxx @@ -1946,32 +1946,8 @@ int cmake::Configure() } -bool cmake::RejectUnsupportedPaths(const char* desc, std::string const& path) -{ - // Some characters are not well-supported by native build systems. - std::string::size_type pos = path.find_first_of("="); - if(pos == std::string::npos) - { - return false; - } - cmOStringStream e; - e << "The path to the " << desc << " directory:\n" - << " " << path << "\n" - << "contains unsupported character '" << path[pos] << "'.\n" - << "Please use a different " << desc << " directory name."; - cmListFileBacktrace bt; - this->IssueMessage(cmake::FATAL_ERROR, e.str(), bt); - return true; -} - int cmake::ActualConfigure() { - if(this->RejectUnsupportedPaths("source", this->cmHomeDirectory) || - this->RejectUnsupportedPaths("binary", this->HomeOutputDirectory)) - { - return 1; - } - // Construct right now our path conversion table before it's too late: this->UpdateConversionPathTable(); this->CleanupCommandsAndMacros(); diff --git a/Source/cmake.h b/Source/cmake.h index 6744ca1..435d38b 100644 --- a/Source/cmake.h +++ b/Source/cmake.h @@ -435,8 +435,6 @@ protected: ///! Find the full path to one of the cmake programs like ctest, cpack, etc. std::string FindCMakeProgram(const char* name) const; - - bool RejectUnsupportedPaths(const char* desc, std::string const& path); private: cmake(const cmake&); // Not implemented. void operator=(const cmake&); // Not implemented. |