mirror of
https://github.com/reactos/CMake.git
synced 2025-02-19 11:00:58 +00:00
Autogen: Fix for AUTOMOC on macOS frameworks in CMake 3.10
Revert the library target dependency forwarding to the `_autogen` target to the 3.9.6 way, only now using `GetLinkImplementationLibraries`. Fixes: #17278
This commit is contained in:
parent
7746fdb2fe
commit
fcbd02fd6e
@ -1046,40 +1046,39 @@ void cmQtAutoGeneratorInitializer::InitializeAutogenTarget(
|
||||
target->Target->AddPreBuildCommand(cc);
|
||||
} else {
|
||||
|
||||
// Convert file dependencies std::set to std::vector
|
||||
std::vector<std::string> autogenDepends(autogenDependFiles.begin(),
|
||||
autogenDependFiles.end());
|
||||
|
||||
// Add link library target dependencies to the autogen target dependencies
|
||||
for (std::string const& config : configsList) {
|
||||
cmLinkImplementationLibraries const* libs =
|
||||
target->GetLinkImplementationLibraries(config);
|
||||
if (libs != nullptr) {
|
||||
for (cmLinkItem const& item : libs->Libraries) {
|
||||
cmGeneratorTarget const* libTarget = item.Target;
|
||||
if ((libTarget != nullptr) &&
|
||||
!StaticLibraryCycle(target, libTarget, config)) {
|
||||
std::string util;
|
||||
if (configsList.size() > 1) {
|
||||
util += "$<$<CONFIG:";
|
||||
util += config;
|
||||
util += ">:";
|
||||
{
|
||||
// add_dependencies/addUtility do not support generator expressions.
|
||||
// We depend only on the libraries found in all configs therefore.
|
||||
std::map<cmGeneratorTarget const*, std::size_t> commonTargets;
|
||||
for (std::string const& config : configsList) {
|
||||
cmLinkImplementationLibraries const* libs =
|
||||
target->GetLinkImplementationLibraries(config);
|
||||
if (libs != nullptr) {
|
||||
for (cmLinkItem const& item : libs->Libraries) {
|
||||
cmGeneratorTarget const* libTarget = item.Target;
|
||||
if ((libTarget != nullptr) &&
|
||||
!StaticLibraryCycle(target, libTarget, config)) {
|
||||
// Increment target config count
|
||||
commonTargets[libTarget]++;
|
||||
}
|
||||
util += libTarget->GetName();
|
||||
if (configsList.size() > 1) {
|
||||
util += ">";
|
||||
}
|
||||
autogenDepends.push_back(util);
|
||||
}
|
||||
}
|
||||
}
|
||||
for (auto const& item : commonTargets) {
|
||||
if (item.second == configsList.size()) {
|
||||
autogenDependTargets.insert(item.first->Target);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Create autogen target
|
||||
cmTarget* autogenTarget = makefile->AddUtilityCommand(
|
||||
autogenTargetName, true, workingDirectory.c_str(),
|
||||
/*byproducts=*/autogenProvides, autogenDepends, commandLines, false,
|
||||
autogenComment.c_str());
|
||||
/*byproducts=*/autogenProvides,
|
||||
std::vector<std::string>(autogenDependFiles.begin(),
|
||||
autogenDependFiles.end()),
|
||||
commandLines, false, autogenComment.c_str());
|
||||
// Create autogen generator target
|
||||
localGen->AddGeneratorTarget(
|
||||
new cmGeneratorTarget(autogenTarget, localGen));
|
||||
|
Loading…
x
Reference in New Issue
Block a user