diff options
author | Brad King <brad.king@kitware.com> | 2015-04-30 19:25:16 (GMT) |
---|---|---|
committer | Brad King <brad.king@kitware.com> | 2015-05-01 12:23:22 (GMT) |
commit | bb6663ca0a73872b063477e92272418b7d49e39b (patch) | |
tree | bde75f8d42f253cefc683e1fe1fdc27622cb6f1c /Source/cmMakefileTargetGenerator.cxx | |
parent | 91d5261b58e97107fca610a868fbc283cbb8c856 (diff) | |
download | CMake-bb6663ca0a73872b063477e92272418b7d49e39b.zip CMake-bb6663ca0a73872b063477e92272418b7d49e39b.tar.gz CMake-bb6663ca0a73872b063477e92272418b7d49e39b.tar.bz2 |
Makefile: Workaround mingw32-make trailing backslash trouble (#15546)
When given the command line
tool a\ b c
mingw32-make incorrectly passes "a b" and "c" to the tool. When given
the command line
tool a\ b "c"
mingw32-make correctly passes "a\", "b", and "c" to the tool.
Since commit v3.1.0-rc1~861^2 (MSVC: Add properties to configure
compiler PDB files, 2014-02-24) we pass the compiler pdb option to
MS-style compiler tools as "/Fd<dir>\" but mingw32-make may consume
the backslash as escaping a following space as described above.
Workaround this problem by changing the backslash to a forward
slash as had been used prior to the above commit.
Diffstat (limited to 'Source/cmMakefileTargetGenerator.cxx')
-rw-r--r-- | Source/cmMakefileTargetGenerator.cxx | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/Source/cmMakefileTargetGenerator.cxx b/Source/cmMakefileTargetGenerator.cxx index ea11c79..b7e4e37 100644 --- a/Source/cmMakefileTargetGenerator.cxx +++ b/Source/cmMakefileTargetGenerator.cxx @@ -23,6 +23,7 @@ #include "cmComputeLinkInformation.h" #include "cmCustomCommandGenerator.h" #include "cmGeneratorExpression.h" +#include "cmAlgorithms.h" #include "cmMakefileExecutableTargetGenerator.h" #include "cmMakefileLibraryTargetGenerator.h" @@ -668,6 +669,15 @@ cmMakefileTargetGenerator this->Convert(targetFullPathCompilePDB, cmLocalGenerator::START_OUTPUT, cmLocalGenerator::SHELL); + + if (this->LocalGenerator->IsMinGWMake() && + cmHasLiteralSuffix(targetOutPathCompilePDB, "\\")) + { + // mingw32-make incorrectly interprets 'a\ b c' as 'a b' and 'c' + // (but 'a\ b "c"' as 'a\', 'b', and 'c'!). Workaround this by + // avoiding a trailing backslash in the argument. + targetOutPathCompilePDB[targetOutPathCompilePDB.size()-1] = '/'; + } } cmLocalGenerator::RuleVariables vars; vars.RuleLauncher = "RULE_LAUNCH_COMPILE"; |