mirror of
https://github.com/reactos/CMake.git
synced 2025-02-19 19:11:01 +00:00
parent
b67c53dddf
commit
fb18215904
5
Help/release/dev/ninja-postgen-commands.rst
Normal file
5
Help/release/dev/ninja-postgen-commands.rst
Normal file
@ -0,0 +1,5 @@
|
||||
ninja-postgen-commands
|
||||
----------------------
|
||||
|
||||
* The :generator:`Ninja` generator learned to perform some post-processing on
|
||||
the generated files for more consistent builds.
|
@ -530,6 +530,35 @@ void cmGlobalNinjaGenerator::Generate()
|
||||
if (!this->WriteDefaultBuildFile()) {
|
||||
return;
|
||||
}
|
||||
|
||||
auto run_ninja_tool = [this](char const* tool) {
|
||||
std::vector<std::string> command;
|
||||
command.push_back(this->NinjaCommand);
|
||||
command.emplace_back("-t");
|
||||
command.emplace_back(tool);
|
||||
std::string error;
|
||||
if (!cmSystemTools::RunSingleCommand(command, nullptr, &error, nullptr,
|
||||
nullptr,
|
||||
cmSystemTools::OUTPUT_NONE)) {
|
||||
this->GetCMakeInstance()->IssueMessage(MessageType::FATAL_ERROR,
|
||||
"Running\n '" +
|
||||
cmJoin(command, "' '") +
|
||||
"'\n"
|
||||
"failed with:\n " +
|
||||
error);
|
||||
cmSystemTools::SetFatalErrorOccured();
|
||||
}
|
||||
};
|
||||
|
||||
if (this->NinjaSupportsCleanDeadTool) {
|
||||
run_ninja_tool("cleandead");
|
||||
}
|
||||
if (this->NinjaSupportsUnconditionalRecompactTool) {
|
||||
run_ninja_tool("recompact");
|
||||
}
|
||||
if (this->NinjaSupportsRestatTool) {
|
||||
run_ninja_tool("restat");
|
||||
}
|
||||
}
|
||||
|
||||
bool cmGlobalNinjaGenerator::FindMakeProgram(cmMakefile* mf)
|
||||
@ -593,6 +622,16 @@ void cmGlobalNinjaGenerator::CheckNinjaFeatures()
|
||||
}
|
||||
}
|
||||
}
|
||||
this->NinjaSupportsCleanDeadTool = !cmSystemTools::VersionCompare(
|
||||
cmSystemTools::OP_LESS, this->NinjaVersion.c_str(),
|
||||
RequiredNinjaVersionForCleanDeadTool().c_str());
|
||||
this->NinjaSupportsUnconditionalRecompactTool =
|
||||
!cmSystemTools::VersionCompare(
|
||||
cmSystemTools::OP_LESS, this->NinjaVersion.c_str(),
|
||||
RequiredNinjaVersionForUnconditionalRecompactTool().c_str());
|
||||
this->NinjaSupportsRestatTool = !cmSystemTools::VersionCompare(
|
||||
cmSystemTools::OP_LESS, this->NinjaVersion.c_str(),
|
||||
RequiredNinjaVersionForRestatTool().c_str());
|
||||
}
|
||||
|
||||
bool cmGlobalNinjaGenerator::CheckLanguages(
|
||||
|
@ -348,6 +348,12 @@ public:
|
||||
return "1.9";
|
||||
}
|
||||
static std::string RequiredNinjaVersionForDyndeps() { return "1.10"; }
|
||||
static std::string RequiredNinjaVersionForRestatTool() { return "1.10"; }
|
||||
static std::string RequiredNinjaVersionForUnconditionalRecompactTool()
|
||||
{
|
||||
return "1.10";
|
||||
}
|
||||
static std::string RequiredNinjaVersionForCleanDeadTool() { return "1.10"; }
|
||||
bool SupportsConsolePool() const;
|
||||
bool SupportsImplicitOuts() const;
|
||||
bool SupportsManifestRestat() const;
|
||||
@ -488,6 +494,9 @@ private:
|
||||
bool NinjaSupportsManifestRestat = false;
|
||||
bool NinjaSupportsMultilineDepfile = false;
|
||||
bool NinjaSupportsDyndeps = false;
|
||||
bool NinjaSupportsRestatTool = false;
|
||||
bool NinjaSupportsUnconditionalRecompactTool = false;
|
||||
bool NinjaSupportsCleanDeadTool = false;
|
||||
|
||||
private:
|
||||
void InitOutputPathPrefix();
|
||||
|
Loading…
x
Reference in New Issue
Block a user