mirror of
https://github.com/reactos/CMake.git
synced 2025-03-02 00:45:48 +00:00
Merge topic 'ninja-1.10'
c81a86ee6d Ninja: Record dyndep support by Ninja 1.10 83368b4dd5 Ninja: Drop unused dyndep version check fd58bb83e6 Ninja: Use in-class initialization of global generator members Acked-by: Kitware Robot <kwrobot@kitware.com> Acked-by: Ben Boeckel <ben.boeckel@kitware.com> Merge-request: !3256
This commit is contained in:
commit
09fe6e6e94
@ -415,14 +415,6 @@ void cmGlobalNinjaGenerator::WriteDefault(std::ostream& os,
|
||||
|
||||
cmGlobalNinjaGenerator::cmGlobalNinjaGenerator(cmake* cm)
|
||||
: cmGlobalCommonGenerator(cm)
|
||||
, UsingGCCOnWindows(false)
|
||||
, ComputingUnknownDependencies(false)
|
||||
, PolicyCMP0058(cmPolicies::WARN)
|
||||
, NinjaSupportsConsolePool(false)
|
||||
, NinjaSupportsImplicitOuts(false)
|
||||
, NinjaSupportsManifestRestat(false)
|
||||
, NinjaSupportsMultilineDepfile(false)
|
||||
, NinjaSupportsDyndeps(0)
|
||||
{
|
||||
#ifdef _WIN32
|
||||
cm->GetState()->SetWindowsShell(true);
|
||||
@ -556,14 +548,22 @@ void cmGlobalNinjaGenerator::CheckNinjaFeatures()
|
||||
this->NinjaSupportsMultilineDepfile = !cmSystemTools::VersionCompare(
|
||||
cmSystemTools::OP_LESS, this->NinjaVersion.c_str(),
|
||||
RequiredNinjaVersionForMultilineDepfile().c_str());
|
||||
{
|
||||
this->NinjaSupportsDyndeps = !cmSystemTools::VersionCompare(
|
||||
cmSystemTools::OP_LESS, this->NinjaVersion.c_str(),
|
||||
RequiredNinjaVersionForDyndeps().c_str());
|
||||
if (!this->NinjaSupportsDyndeps) {
|
||||
// The ninja version number is not new enough to have upstream support.
|
||||
// Our ninja branch adds ".dyndep-#" to its version number,
|
||||
// where '#' is a feature-specific version number. Extract it.
|
||||
static std::string const k_DYNDEP_ = ".dyndep-";
|
||||
std::string::size_type pos = this->NinjaVersion.find(k_DYNDEP_);
|
||||
if (pos != std::string::npos) {
|
||||
const char* fv = &this->NinjaVersion[pos + k_DYNDEP_.size()];
|
||||
cmSystemTools::StringToULong(fv, &this->NinjaSupportsDyndeps);
|
||||
unsigned long dyndep = 0;
|
||||
cmSystemTools::StringToULong(fv, &dyndep);
|
||||
if (dyndep == 1) {
|
||||
this->NinjaSupportsDyndeps = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -580,37 +580,25 @@ bool cmGlobalNinjaGenerator::CheckLanguages(
|
||||
|
||||
bool cmGlobalNinjaGenerator::CheckFortran(cmMakefile* mf) const
|
||||
{
|
||||
if (this->NinjaSupportsDyndeps == 1) {
|
||||
if (this->NinjaSupportsDyndeps) {
|
||||
return true;
|
||||
}
|
||||
|
||||
std::ostringstream e;
|
||||
if (this->NinjaSupportsDyndeps == 0) {
|
||||
/* clang-format off */
|
||||
e <<
|
||||
"The Ninja generator does not support Fortran using Ninja version\n"
|
||||
" " + this->NinjaVersion + "\n"
|
||||
"due to lack of required features. "
|
||||
"Kitware has implemented the required features but as of this version "
|
||||
"of CMake they have not been integrated to upstream ninja. "
|
||||
"Pending integration, Kitware maintains a branch at:\n"
|
||||
" https://github.com/Kitware/ninja/tree/features-for-fortran#readme\n"
|
||||
"with the required features. "
|
||||
"One may build ninja from that branch to get support for Fortran."
|
||||
;
|
||||
/* clang-format on */
|
||||
} else {
|
||||
/* clang-format off */
|
||||
e <<
|
||||
"The Ninja generator in this version of CMake does not support Fortran "
|
||||
"using Ninja version\n"
|
||||
" " + this->NinjaVersion + "\n"
|
||||
"because its 'dyndep' feature version is " <<
|
||||
this->NinjaSupportsDyndeps << ". "
|
||||
"This version of CMake is aware only of 'dyndep' feature version 1."
|
||||
;
|
||||
/* clang-format on */
|
||||
}
|
||||
/* clang-format off */
|
||||
e <<
|
||||
"The Ninja generator does not support Fortran using Ninja version\n"
|
||||
" " + this->NinjaVersion + "\n"
|
||||
"due to lack of required features. "
|
||||
"Kitware has implemented the required features and they have been "
|
||||
"merged to upstream ninja for inclusion in Ninja 1.10 and higher. "
|
||||
"As of this version of CMake, Ninja 1.10 has not been released. "
|
||||
"Meanwhile, Kitware maintains a branch of Ninja at:\n"
|
||||
" https://github.com/Kitware/ninja/tree/features-for-fortran#readme\n"
|
||||
"with the required features. "
|
||||
"One may build ninja from that branch to get support for Fortran."
|
||||
;
|
||||
/* clang-format on */
|
||||
mf->IssueMessage(MessageType::FATAL_ERROR, e.str());
|
||||
cmSystemTools::SetFatalErrorOccured();
|
||||
return false;
|
||||
|
@ -322,6 +322,7 @@ public:
|
||||
{
|
||||
return "1.9";
|
||||
}
|
||||
static std::string RequiredNinjaVersionForDyndeps() { return "1.10"; }
|
||||
bool SupportsConsolePool() const;
|
||||
bool SupportsImplicitOuts() const;
|
||||
bool SupportsManifestRestat() const;
|
||||
@ -402,7 +403,7 @@ private:
|
||||
/// The set of dependencies to add to the "all" target.
|
||||
cmNinjaDeps AllDependencies;
|
||||
|
||||
bool UsingGCCOnWindows;
|
||||
bool UsingGCCOnWindows = false;
|
||||
|
||||
/// The set of custom commands we have seen.
|
||||
std::set<cmCustomCommand const*> CustomCommands;
|
||||
@ -412,8 +413,8 @@ private:
|
||||
|
||||
/// Whether we are collecting known build outputs and needed
|
||||
/// dependencies to determine unknown dependencies.
|
||||
bool ComputingUnknownDependencies;
|
||||
cmPolicies::PolicyStatus PolicyCMP0058;
|
||||
bool ComputingUnknownDependencies = false;
|
||||
cmPolicies::PolicyStatus PolicyCMP0058 = cmPolicies::WARN;
|
||||
|
||||
/// The combined explicit dependencies of custom build commands
|
||||
std::set<std::string> CombinedCustomCommandExplicitDependencies;
|
||||
@ -435,11 +436,11 @@ private:
|
||||
|
||||
std::string NinjaCommand;
|
||||
std::string NinjaVersion;
|
||||
bool NinjaSupportsConsolePool;
|
||||
bool NinjaSupportsImplicitOuts;
|
||||
bool NinjaSupportsManifestRestat;
|
||||
bool NinjaSupportsMultilineDepfile;
|
||||
unsigned long NinjaSupportsDyndeps;
|
||||
bool NinjaSupportsConsolePool = false;
|
||||
bool NinjaSupportsImplicitOuts = false;
|
||||
bool NinjaSupportsManifestRestat = false;
|
||||
bool NinjaSupportsMultilineDepfile = false;
|
||||
bool NinjaSupportsDyndeps = false;
|
||||
|
||||
private:
|
||||
void InitOutputPathPrefix();
|
||||
|
Loading…
x
Reference in New Issue
Block a user