mirror of
https://github.com/Kitware/CMake.git
synced 2026-04-23 22:58:37 -05:00
Autogen: Forward dependencies when both Makefile and DEPFILE are used
Since commit ebc9e448b3 (Autogen: Add depfile support for Makefiles,
2023-09-07, v3.28.0-rc1~101^2~1) CMake does not generate the correct
dependency graph when both `Makefile` and `DEPFILE` are used.
The build of `<target_name>_autogen_timestamp_deps` fails due to
missing dependencies. To tackle that problem, forward target
dependencies to both `<target_name>_autogen_timestamp_deps` and
`<target_name>_autogen` instead of just `<target_name>_autogen`.
Fixes: #25600
This commit is contained in:
committed by
Brad King
parent
4deb9c41b8
commit
d0bedb2170
@@ -1369,7 +1369,6 @@ bool cmQtAutoGenInitializer::InitAutogenTarget()
|
||||
std::vector<std::string> dependencies(
|
||||
this->AutogenTarget.DependFiles.begin(),
|
||||
this->AutogenTarget.DependFiles.end());
|
||||
|
||||
if (useDepfile) {
|
||||
// Create a custom command that generates a timestamp file and
|
||||
// has a depfile assigned. The depfile is created by JobDepFilesMergeT.
|
||||
@@ -1408,6 +1407,16 @@ bool cmQtAutoGenInitializer::InitAutogenTarget()
|
||||
cc->SetEscapeOldStyle(false);
|
||||
cmTarget* timestampTarget = this->LocalGen->AddUtilityCommand(
|
||||
timestampTargetName, true, std::move(cc));
|
||||
auto const isMake =
|
||||
this->GlobalGen->GetName().find("Make") != std::string::npos;
|
||||
if (this->AutogenTarget.DependOrigin && isMake) {
|
||||
for (BT<std::pair<std::string, bool>> const& depName :
|
||||
this->GenTarget->GetUtilities()) {
|
||||
timestampTarget->AddUtility(depName.Value.first, false,
|
||||
this->Makefile);
|
||||
}
|
||||
}
|
||||
|
||||
this->LocalGen->AddGeneratorTarget(
|
||||
cm::make_unique<cmGeneratorTarget>(timestampTarget, this->LocalGen));
|
||||
|
||||
|
||||
Reference in New Issue
Block a user