ENH: Fixed recursive make call target escaping for Borland to support SubDirSpaces test.
This commit is contained in:
parent
7157743d69
commit
fd3688fa72
|
@ -1012,7 +1012,7 @@ IF(BUILD_TESTING)
|
||||||
# some old versions of make simply cannot handle spaces in paths
|
# some old versions of make simply cannot handle spaces in paths
|
||||||
IF (MAKE_IS_GNU OR
|
IF (MAKE_IS_GNU OR
|
||||||
"${CMAKE_TEST_MAKEPROGRAM}" MATCHES "nmake|gmake|wmake" 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}
|
ADD_TEST(SubDirSpaces ${CMAKE_CTEST_COMMAND}
|
||||||
--build-and-test
|
--build-and-test
|
||||||
"${CMake_SOURCE_DIR}/Tests/SubDirSpaces"
|
"${CMake_SOURCE_DIR}/Tests/SubDirSpaces"
|
||||||
|
@ -1028,7 +1028,7 @@ IF(BUILD_TESTING)
|
||||||
)
|
)
|
||||||
ENDIF (MAKE_IS_GNU OR
|
ENDIF (MAKE_IS_GNU OR
|
||||||
"${CMAKE_TEST_MAKEPROGRAM}" MATCHES "nmake|gmake|wmake" 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)
|
IF (WIN32)
|
||||||
ADD_TEST(SubDir ${CMAKE_CTEST_COMMAND}
|
ADD_TEST(SubDir ${CMAKE_CTEST_COMMAND}
|
||||||
|
|
|
@ -50,6 +50,7 @@ cmLocalGenerator *cmGlobalBorlandMakefileGenerator::CreateLocalGenerator()
|
||||||
lg->SetPassMakeflags(true);
|
lg->SetPassMakeflags(true);
|
||||||
lg->SetGlobalGenerator(this);
|
lg->SetGlobalGenerator(this);
|
||||||
lg->SetUnixCD(false);
|
lg->SetUnixCD(false);
|
||||||
|
lg->SetMakeCommandEscapeTargetTwice(true);
|
||||||
return lg;
|
return lg;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -53,6 +53,7 @@ cmLocalUnixMakefileGenerator3::cmLocalUnixMakefileGenerator3()
|
||||||
this->SkipAssemblySourceRules = false;
|
this->SkipAssemblySourceRules = false;
|
||||||
this->NativeEchoCommand = "@echo ";
|
this->NativeEchoCommand = "@echo ";
|
||||||
this->NativeEchoWindows = true;
|
this->NativeEchoWindows = true;
|
||||||
|
this->MakeCommandEscapeTargetTwice = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
//----------------------------------------------------------------------------
|
//----------------------------------------------------------------------------
|
||||||
|
@ -1751,6 +1752,12 @@ cmLocalUnixMakefileGenerator3
|
||||||
// The target may have been written with windows paths.
|
// The target may have been written with windows paths.
|
||||||
cmSystemTools::ConvertToOutputSlashes(tgt2);
|
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
|
// The target name is now a string that should be passed verbatim
|
||||||
// on the command line.
|
// on the command line.
|
||||||
cmd += this->EscapeForShell(tgt2.c_str(), true, false);
|
cmd += this->EscapeForShell(tgt2.c_str(), true, false);
|
||||||
|
|
|
@ -158,6 +158,13 @@ public:
|
||||||
*/
|
*/
|
||||||
void SetIgnoreLibPrefix(bool s) { this->IgnoreLibPrefix = s; }
|
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
|
// used in writing out Cmake files such as WriteDirectoryInformation
|
||||||
static void WriteCMakeArgument(std::ostream& os, const char* s);
|
static void WriteCMakeArgument(std::ostream& os, const char* s);
|
||||||
|
|
||||||
|
@ -334,6 +341,7 @@ private:
|
||||||
bool UnixCD;
|
bool UnixCD;
|
||||||
bool PassMakeflags;
|
bool PassMakeflags;
|
||||||
bool SilentNoColon;
|
bool SilentNoColon;
|
||||||
|
bool MakeCommandEscapeTargetTwice;
|
||||||
//==========================================================================
|
//==========================================================================
|
||||||
|
|
||||||
std::string HomeRelativeOutputPath;
|
std::string HomeRelativeOutputPath;
|
||||||
|
|
Loading…
Reference in New Issue