diff options
author | Brad King <brad.king@kitware.com> | 2022-01-26 08:45:11 -0500 |
---|---|---|
committer | Brad King <brad.king@kitware.com> | 2022-01-26 08:45:11 -0500 |
commit | ece5378536a0329a4d6e7e8fcd40904b7364ac34 (patch) | |
tree | 1f63ada9b70bd6403c1f26123c861596702c5daa | |
parent | 74f14997c6b74ef596ee7be2a622056ae7cfe062 (diff) | |
parent | d5ee6d50ee71f78dc619001e86e69f23444acfa9 (diff) | |
download | cmake-ece5378536a0329a4d6e7e8fcd40904b7364ac34.tar.gz |
Merge branch 'nmake-rsp-encoding' into release-3.21
Merge-request: !6905
-rw-r--r-- | Source/cmMakefileTargetGenerator.cxx | 17 |
1 files changed, 15 insertions, 2 deletions
diff --git a/Source/cmMakefileTargetGenerator.cxx b/Source/cmMakefileTargetGenerator.cxx index a3e5553d74..945827701b 100644 --- a/Source/cmMakefileTargetGenerator.cxx +++ b/Source/cmMakefileTargetGenerator.cxx @@ -16,6 +16,8 @@ #include <cmext/algorithm> #include <cmext/string_view> +#include "cm_codecvt.hxx" + #include "cmComputeLinkInformation.h" #include "cmCustomCommand.h" #include "cmCustomCommandGenerator.h" @@ -2046,11 +2048,22 @@ std::string cmMakefileTargetGenerator::CreateResponseFile( const char* name, std::string const& options, std::vector<std::string>& makefile_depends) { + // FIXME: Find a better way to determine the response file encoding, + // perhaps using tool-specific platform information variables. + // 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 = cmStrCat(this->TargetBuildDirectoryFull, '/', name); - cmGeneratedFileStream responseStream( - responseFileNameFull, false, this->GlobalGenerator->GetMakefileEncoding()); + cmGeneratedFileStream responseStream(responseFileNameFull, false, + responseEncoding); responseStream.SetCopyIfDifferent(true); responseStream << options << "\n"; |