diff options
author | Orkun Tokdemir <ilhanorkuntokdemir@gmail.com> | 2024-06-27 10:08:50 (GMT) |
---|---|---|
committer | Orkun Tokdemir <ilhanorkuntokdemir@gmail.com> | 2024-06-27 13:43:05 (GMT) |
commit | 91b2ce4a6985bcbfa4f757c213a0d9ad89250de8 (patch) | |
tree | 912dd97d12ab61ceec29484d60eea30b10e130fe | |
parent | 38884c190821c42cd0a3ee29a2caa914ac1ee306 (diff) | |
download | CMake-91b2ce4a6985bcbfa4f757c213a0d9ad89250de8.zip CMake-91b2ce4a6985bcbfa4f757c213a0d9ad89250de8.tar.gz CMake-91b2ce4a6985bcbfa4f757c213a0d9ad89250de8.tar.bz2 |
Autogen: Remove <target_name>_autogen_timestamp_deps target
Since 2bfaaf6f6ed7481438bec08771992ea5152b5453 reorganized the dependency order for the `timestamp` target,
`<target_name>_autogen_timestamp_deps` is genetared as `phony edge with no inputs`. So this commit removes
`<target_name>_autogen_timestamp_deps`.
The dependency graph before
original dependencies of '_autogen' target <- _autogen_timestamp_deps <-'/timestamp' file <- '_autogen' target
The dependency graph after
original dependencies of '_autogen' target <-'/timestamp' file <- '_autogen' target
Fixes: #26080
-rw-r--r-- | Source/cmQtAutoGenInitializer.cxx | 46 |
1 files changed, 11 insertions, 35 deletions
diff --git a/Source/cmQtAutoGenInitializer.cxx b/Source/cmQtAutoGenInitializer.cxx index ee53a8e..8e880fd 100644 --- a/Source/cmQtAutoGenInitializer.cxx +++ b/Source/cmQtAutoGenInitializer.cxx @@ -1480,6 +1480,16 @@ bool cmQtAutoGenInitializer::InitAutogenTarget() } } + // For the Ninja, Makefile and Qt >= 5.15, add custom commands that create + // XXX_autogen/timestamp files. Those custom commands have a depfile + // assigned that is generated from the depfiles that were created by moc. + // + // The XXX_autogen targets merely wrap the XXX_autogen/timestamp custom + // commands. + // The dependency tree would then look like + // the original dependencies of '_autogen' target <-'/timestamp' file + // <- '_autogen' target + cmTarget* timestampTarget = nullptr; std::vector<std::string> dependencies( this->AutogenTarget.DependFiles.begin(), @@ -1487,40 +1497,6 @@ bool cmQtAutoGenInitializer::InitAutogenTarget() if (useDepfile) { // Create a custom command that generates a timestamp file and // has a depfile assigned. The depfile is created by JobDepFilesMergeT. - // - // Also create an additional '_autogen_timestamp_deps' that the custom - // command will depend on. It will have no sources or commands to - // execute, but it will have dependencies that would originally be - // assigned to the pre-Qt 5.15 'autogen' target. These dependencies will - // serve as a list of order-only dependencies for the custom command, - // without forcing the custom command to re-execute. - // - // The dependency tree would then look like - // '_autogen_timestamp_deps (order-only)' <- '/timestamp' file <- - // '_autogen' target. - const auto timestampTargetName = - cmStrCat(this->GenTarget->GetName(), "_autogen_timestamp_deps"); - - auto cc = cm::make_unique<cmCustomCommand>(); - cc->SetWorkingDirectory(this->Dir.Work.c_str()); - cc->SetDepends(dependencies); - cc->SetEscapeOldStyle(false); - timestampTarget = this->LocalGen->AddUtilityCommand(timestampTargetName, - true, std::move(cc)); - - this->LocalGen->AddGeneratorTarget( - cm::make_unique<cmGeneratorTarget>(timestampTarget, this->LocalGen)); - - // Set FOLDER property on the timestamp target, so it appears in the - // appropriate folder in an IDE or in the file api. - if (!this->TargetsFolder.empty()) { - timestampTarget->SetProperty("FOLDER", this->TargetsFolder); - } - - // Make '/timestamp' file depend on '_autogen_timestamp_deps' and on the - // moc and uic executables (whichever are enabled). - dependencies.clear(); - dependencies.push_back(timestampTargetName); AddAutogenExecutableToDependencies(this->Moc, dependencies); AddAutogenExecutableToDependencies(this->Uic, dependencies); @@ -1565,7 +1541,7 @@ bool cmQtAutoGenInitializer::InitAutogenTarget() { cmSystemTools::GetCMakeCommand(), "-E", "touch", outputFile })); this->AddGeneratedSource(outputFile, this->Moc); } - cc = cm::make_unique<cmCustomCommand>(); + auto cc = cm::make_unique<cmCustomCommand>(); cc->SetOutputs(outputFile); cc->SetByproducts(timestampByproducts); cc->SetDepends(dependencies); |