summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBrad King <brad.king@kitware.com>2022-01-26 07:24:02 -0500
committerBrad King <brad.king@kitware.com>2022-01-26 07:57:43 -0500
commitd5ee6d50ee71f78dc619001e86e69f23444acfa9 (patch)
tree1f63ada9b70bd6403c1f26123c861596702c5daa
parentcab631c2e242ff74a1bddd973b5aafe9b6f4ebd5 (diff)
downloadcmake-d5ee6d50ee71f78dc619001e86e69f23444acfa9.tar.gz
NMake: Use UTF-8 BOM in response files only with MSVC tooling
Since commit f3f57cc4ed (NMake: Use UTF-8 with BOM if supported by nmake, 2021-04-22, v3.21.0-rc1~217^2), we add a BOM to response files to tell MSVC tooling that they are encoded as UTF-8. However, the "NMake Makefiles" generator may also be used with non-MSVC toolchains that do not understand the BOM. Update the response file encoding selection heuristic to add the BOM only with MSVC tooling. Fixes: #23143
-rw-r--r--Source/cmMakefileTargetGenerator.cxx5
1 files changed, 5 insertions, 0 deletions
diff --git a/Source/cmMakefileTargetGenerator.cxx b/Source/cmMakefileTargetGenerator.cxx
index add9c0147f..945827701b 100644
--- a/Source/cmMakefileTargetGenerator.cxx
+++ b/Source/cmMakefileTargetGenerator.cxx
@@ -2053,6 +2053,11 @@ std::string cmMakefileTargetGenerator::CreateResponseFile(
// For now, use the makefile encoding as a heuristic.
codecvt::Encoding responseEncoding =
this->GlobalGenerator->GetMakefileEncoding();
+ // Non-MSVC tooling may not understand a BOM.
+ if (responseEncoding == codecvt::UTF8_WITH_BOM &&
+ !this->Makefile->IsOn("MSVC")) {
+ responseEncoding = codecvt::UTF8;
+ }
// Create the response file.
std::string responseFileNameFull =