diff options
author | Brad King <brad.king@kitware.com> | 2007-03-08 18:05:02 (GMT) |
---|---|---|
committer | Brad King <brad.king@kitware.com> | 2007-03-08 18:05:02 (GMT) |
commit | fd3688fa7260e06c9bd8e23bb6f08e430bff4301 (patch) | |
tree | 77a6792f01de19a593d7125f2999aa45f655efe1 | |
parent | 7157743d69761c433af5ecbca37dede63c0603af (diff) | |
download | CMake-fd3688fa7260e06c9bd8e23bb6f08e430bff4301.zip CMake-fd3688fa7260e06c9bd8e23bb6f08e430bff4301.tar.gz CMake-fd3688fa7260e06c9bd8e23bb6f08e430bff4301.tar.bz2 |
ENH: Fixed recursive make call target escaping for Borland to support SubDirSpaces test.
-rw-r--r-- | Source/CMakeLists.txt | 4 | ||||
-rw-r--r-- | Source/cmGlobalBorlandMakefileGenerator.cxx | 1 | ||||
-rw-r--r-- | Source/cmLocalUnixMakefileGenerator3.cxx | 7 | ||||
-rw-r--r-- | Source/cmLocalUnixMakefileGenerator3.h | 8 |
4 files changed, 18 insertions, 2 deletions
diff --git a/Source/CMakeLists.txt b/Source/CMakeLists.txt index faf8112..c96e360 100644 --- a/Source/CMakeLists.txt +++ b/Source/CMakeLists.txt @@ -1012,7 +1012,7 @@ IF(BUILD_TESTING) # some old versions of make simply cannot handle spaces in paths IF (MAKE_IS_GNU OR "${CMAKE_TEST_MAKEPROGRAM}" MATCHES "nmake|gmake|wmake" OR - "${CMAKE_TEST_GENERATOR}" MATCHES "Visual Studio|XCode") + "${CMAKE_TEST_GENERATOR}" MATCHES "Visual Studio|XCode|Borland") ADD_TEST(SubDirSpaces ${CMAKE_CTEST_COMMAND} --build-and-test "${CMake_SOURCE_DIR}/Tests/SubDirSpaces" @@ -1028,7 +1028,7 @@ IF(BUILD_TESTING) ) ENDIF (MAKE_IS_GNU OR "${CMAKE_TEST_MAKEPROGRAM}" MATCHES "nmake|gmake|wmake" OR - "${CMAKE_TEST_GENERATOR}" MATCHES "Visual Studio|XCode") + "${CMAKE_TEST_GENERATOR}" MATCHES "Visual Studio|XCode|Borland") IF (WIN32) ADD_TEST(SubDir ${CMAKE_CTEST_COMMAND} diff --git a/Source/cmGlobalBorlandMakefileGenerator.cxx b/Source/cmGlobalBorlandMakefileGenerator.cxx index bba00ae..1f44c73 100644 --- a/Source/cmGlobalBorlandMakefileGenerator.cxx +++ b/Source/cmGlobalBorlandMakefileGenerator.cxx @@ -50,6 +50,7 @@ cmLocalGenerator *cmGlobalBorlandMakefileGenerator::CreateLocalGenerator() lg->SetPassMakeflags(true); lg->SetGlobalGenerator(this); lg->SetUnixCD(false); + lg->SetMakeCommandEscapeTargetTwice(true); return lg; } diff --git a/Source/cmLocalUnixMakefileGenerator3.cxx b/Source/cmLocalUnixMakefileGenerator3.cxx index a9c9c68..2d45ee9 100644 --- a/Source/cmLocalUnixMakefileGenerator3.cxx +++ b/Source/cmLocalUnixMakefileGenerator3.cxx @@ -53,6 +53,7 @@ cmLocalUnixMakefileGenerator3::cmLocalUnixMakefileGenerator3() this->SkipAssemblySourceRules = false; this->NativeEchoCommand = "@echo "; this->NativeEchoWindows = true; + this->MakeCommandEscapeTargetTwice = false; } //---------------------------------------------------------------------------- @@ -1751,6 +1752,12 @@ cmLocalUnixMakefileGenerator3 // The target may have been written with windows paths. cmSystemTools::ConvertToOutputSlashes(tgt2); + // Escape one extra time if the make tool requires it. + if(this->MakeCommandEscapeTargetTwice) + { + tgt2 = this->EscapeForShell(tgt2.c_str(), true, false); + } + // The target name is now a string that should be passed verbatim // on the command line. cmd += this->EscapeForShell(tgt2.c_str(), true, false); diff --git a/Source/cmLocalUnixMakefileGenerator3.h b/Source/cmLocalUnixMakefileGenerator3.h index bf90605..0d0a37f 100644 --- a/Source/cmLocalUnixMakefileGenerator3.h +++ b/Source/cmLocalUnixMakefileGenerator3.h @@ -158,6 +158,13 @@ public: */ void SetIgnoreLibPrefix(bool s) { this->IgnoreLibPrefix = s; } + /** + * Set whether passing a make target on a command line requires an + * extra level of escapes. + */ + void SetMakeCommandEscapeTargetTwice(bool b) + { this->MakeCommandEscapeTargetTwice = b; } + // used in writing out Cmake files such as WriteDirectoryInformation static void WriteCMakeArgument(std::ostream& os, const char* s); @@ -334,6 +341,7 @@ private: bool UnixCD; bool PassMakeflags; bool SilentNoColon; + bool MakeCommandEscapeTargetTwice; //========================================================================== std::string HomeRelativeOutputPath; |