Xcode: Restore support for standalone IMPORTED_LOCATION_<CONFIG>

In commit 878ae03832 (macOS: IMPORTED framework: Honor SYSTEM target
property in all cases, 2023-08-27, v3.28.0-rc1~162^2) we broke support
for `IMPORTED_LOCATION_<CONFIG>` without `IMPORTED_CONFIGURATIONS`.
Previously it worked if the importing project's configurations match the
set of `IMPORTED_LOCATION_<CONFIG>` properties set.  Fix that case.

Fixes: #25506
Issue: #25515
This commit is contained in:
Marc Chevrier
2023-12-16 12:07:21 +01:00
committed by Brad King
parent e42eaa4342
commit defbfd6f55
3 changed files with 45 additions and 5 deletions
+17 -5
View File
@@ -8762,11 +8762,23 @@ bool cmGeneratorTarget::IsFrameworkOnApple() const
bool cmGeneratorTarget::IsImportedFrameworkFolderOnApple(
const std::string& config) const
{
return this->IsApple() && this->IsImported() &&
(this->GetType() == cmStateEnums::STATIC_LIBRARY ||
this->GetType() == cmStateEnums::SHARED_LIBRARY ||
this->GetType() == cmStateEnums::UNKNOWN_LIBRARY) &&
cmSystemTools::IsPathToFramework(this->GetLocation(config));
if (this->IsApple() && this->IsImported() &&
(this->GetType() == cmStateEnums::STATIC_LIBRARY ||
this->GetType() == cmStateEnums::SHARED_LIBRARY ||
this->GetType() == cmStateEnums::UNKNOWN_LIBRARY)) {
std::string cfg = config;
if (cfg.empty() && this->GetGlobalGenerator()->IsXcode()) {
// FIXME(#25515): Remove the need for this workaround.
// The Xcode generator queries include directories without any
// specific configuration. Pick one in case this target does
// not set either IMPORTED_LOCATION or IMPORTED_CONFIGURATIONS.
cfg =
this->Makefile->GetGeneratorConfigs(cmMakefile::IncludeEmptyConfig)[0];
}
return cmSystemTools::IsPathToFramework(this->GetLocation(cfg));
}
return false;
}
bool cmGeneratorTarget::IsAppBundleOnApple() const