|
@@ -496,6 +496,18 @@ cmLocalGenerator* cmGlobalNinjaGenerator::CreateLocalGenerator(cmMakefile* mf)
|
|
|
return new cmLocalNinjaGenerator(this, mf);
|
|
|
}
|
|
|
|
|
|
+codecvt::Encoding cmGlobalNinjaGenerator::GetMakefileEncoding() const
|
|
|
+{
|
|
|
+#ifdef _WIN32
|
|
|
+ // Ninja on Windows does not support non-ANSI characters.
|
|
|
+ // https://github.com/ninja-build/ninja/issues/1195
|
|
|
+ return codecvt::ANSI;
|
|
|
+#else
|
|
|
+ // No encoding conversion needed on other platforms.
|
|
|
+ return codecvt::None;
|
|
|
+#endif
|
|
|
+}
|
|
|
+
|
|
|
void cmGlobalNinjaGenerator::GetDocumentation(cmDocumentationEntry& entry)
|
|
|
{
|
|
|
entry.Name = cmGlobalNinjaGenerator::GetActualName();
|
|
@@ -766,7 +778,8 @@ void cmGlobalNinjaGenerator::OpenBuildFileStream()
|
|
|
|
|
|
// Get a stream where to generate things.
|
|
|
if (!this->BuildFileStream) {
|
|
|
- this->BuildFileStream = new cmGeneratedFileStream(buildFilePath.c_str());
|
|
|
+ this->BuildFileStream = new cmGeneratedFileStream(
|
|
|
+ buildFilePath.c_str(), false, this->GetMakefileEncoding());
|
|
|
if (!this->BuildFileStream) {
|
|
|
// An error message is generated by the constructor if it cannot
|
|
|
// open the file.
|
|
@@ -803,7 +816,8 @@ void cmGlobalNinjaGenerator::OpenRulesFileStream()
|
|
|
|
|
|
// Get a stream where to generate things.
|
|
|
if (!this->RulesFileStream) {
|
|
|
- this->RulesFileStream = new cmGeneratedFileStream(rulesFilePath.c_str());
|
|
|
+ this->RulesFileStream = new cmGeneratedFileStream(
|
|
|
+ rulesFilePath.c_str(), false, this->GetMakefileEncoding());
|
|
|
if (!this->RulesFileStream) {
|
|
|
// An error message is generated by the constructor if it cannot
|
|
|
// open the file.
|