mirror of
https://github.com/Kitware/CMake.git
synced 2026-01-14 02:09:51 -06:00
Ninja: Use ANSI encoding for Ninja build files on Windows
Pass ANSI encoding to cmGeneratedFileStream for use with Ninja generator.
This commit is contained in:
@@ -496,6 +496,18 @@ cmLocalGenerator* cmGlobalNinjaGenerator::CreateLocalGenerator(cmMakefile* mf)
|
|||||||
return new cmLocalNinjaGenerator(this, 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)
|
void cmGlobalNinjaGenerator::GetDocumentation(cmDocumentationEntry& entry)
|
||||||
{
|
{
|
||||||
entry.Name = cmGlobalNinjaGenerator::GetActualName();
|
entry.Name = cmGlobalNinjaGenerator::GetActualName();
|
||||||
@@ -754,7 +766,8 @@ void cmGlobalNinjaGenerator::OpenBuildFileStream()
|
|||||||
|
|
||||||
// Get a stream where to generate things.
|
// Get a stream where to generate things.
|
||||||
if (!this->BuildFileStream) {
|
if (!this->BuildFileStream) {
|
||||||
this->BuildFileStream = new cmGeneratedFileStream(buildFilePath.c_str());
|
this->BuildFileStream = new cmGeneratedFileStream(
|
||||||
|
buildFilePath.c_str(), false, this->GetMakefileEncoding());
|
||||||
if (!this->BuildFileStream) {
|
if (!this->BuildFileStream) {
|
||||||
// An error message is generated by the constructor if it cannot
|
// An error message is generated by the constructor if it cannot
|
||||||
// open the file.
|
// open the file.
|
||||||
@@ -791,7 +804,8 @@ void cmGlobalNinjaGenerator::OpenRulesFileStream()
|
|||||||
|
|
||||||
// Get a stream where to generate things.
|
// Get a stream where to generate things.
|
||||||
if (!this->RulesFileStream) {
|
if (!this->RulesFileStream) {
|
||||||
this->RulesFileStream = new cmGeneratedFileStream(rulesFilePath.c_str());
|
this->RulesFileStream = new cmGeneratedFileStream(
|
||||||
|
rulesFilePath.c_str(), false, this->GetMakefileEncoding());
|
||||||
if (!this->RulesFileStream) {
|
if (!this->RulesFileStream) {
|
||||||
// An error message is generated by the constructor if it cannot
|
// An error message is generated by the constructor if it cannot
|
||||||
// open the file.
|
// open the file.
|
||||||
|
|||||||
@@ -186,6 +186,9 @@ public:
|
|||||||
|
|
||||||
static std::string GetActualName() { return "Ninja"; }
|
static std::string GetActualName() { return "Ninja"; }
|
||||||
|
|
||||||
|
/** Get encoding used by generator for ninja files */
|
||||||
|
codecvt::Encoding GetMakefileEncoding() const CM_OVERRIDE;
|
||||||
|
|
||||||
static void GetDocumentation(cmDocumentationEntry& entry);
|
static void GetDocumentation(cmDocumentationEntry& entry);
|
||||||
|
|
||||||
void EnableLanguage(std::vector<std::string> const& languages,
|
void EnableLanguage(std::vector<std::string> const& languages,
|
||||||
|
|||||||
Reference in New Issue
Block a user