Port some of the cmExportFileGenerator API to cmGeneratorTarget.
Enough to make it more possible to move GetLinkInterface to cmGeneratorTarget.
This commit is contained in:
parent
57ab0f70b5
commit
57f03e59ba
@ -148,11 +148,11 @@ cmExportBuildFileGenerator
|
||||
if (target->GetType() != cmTarget::INTERFACE_LIBRARY)
|
||||
{
|
||||
this->SetImportDetailProperties(config, suffix,
|
||||
target->Target,
|
||||
target,
|
||||
properties, missingTargets);
|
||||
this->SetImportLinkInterface(config, suffix,
|
||||
cmGeneratorExpression::BuildInterface,
|
||||
target->Target,
|
||||
target,
|
||||
properties, missingTargets);
|
||||
}
|
||||
|
||||
|
@ -791,12 +791,13 @@ void
|
||||
cmExportFileGenerator
|
||||
::SetImportLinkInterface(const std::string& config, std::string const& suffix,
|
||||
cmGeneratorExpression::PreprocessContext preprocessRule,
|
||||
cmTarget* target, ImportPropertyMap& properties,
|
||||
cmGeneratorTarget* target, ImportPropertyMap& properties,
|
||||
std::vector<std::string>& missingTargets)
|
||||
{
|
||||
// Add the transitive link dependencies for this configuration.
|
||||
cmTarget::LinkInterface const* iface = target->GetLinkInterface(config,
|
||||
target);
|
||||
cmTarget::LinkInterface const* iface = target->Target->GetLinkInterface(
|
||||
config,
|
||||
target->Target);
|
||||
if (!iface)
|
||||
{
|
||||
return;
|
||||
@ -829,12 +830,14 @@ cmExportFileGenerator
|
||||
}
|
||||
|
||||
const bool newCMP0022Behavior =
|
||||
target->GetPolicyStatusCMP0022() != cmPolicies::WARN
|
||||
&& target->GetPolicyStatusCMP0022() != cmPolicies::OLD;
|
||||
target->Target
|
||||
->GetPolicyStatusCMP0022() != cmPolicies::WARN
|
||||
&& target->Target
|
||||
->GetPolicyStatusCMP0022() != cmPolicies::OLD;
|
||||
|
||||
if(newCMP0022Behavior && !this->ExportOld)
|
||||
{
|
||||
cmMakefile *mf = target->GetMakefile();
|
||||
cmMakefile *mf = target->Target->GetMakefile();
|
||||
std::ostringstream e;
|
||||
e << "Target \"" << target->GetName() << "\" has policy CMP0022 enabled, "
|
||||
"but also has old-style LINK_INTERFACE_LIBRARIES properties "
|
||||
@ -854,7 +857,7 @@ cmExportFileGenerator
|
||||
preprocessRule);
|
||||
if (!prepro.empty())
|
||||
{
|
||||
this->ResolveTargetsInGeneratorExpressions(prepro, target,
|
||||
this->ResolveTargetsInGeneratorExpressions(prepro, target->Target,
|
||||
missingTargets,
|
||||
ReplaceFreeTargets);
|
||||
properties["IMPORTED_LINK_INTERFACE_LIBRARIES" + suffix] = prepro;
|
||||
@ -866,12 +869,13 @@ void
|
||||
cmExportFileGenerator
|
||||
::SetImportDetailProperties(const std::string& config,
|
||||
std::string const& suffix,
|
||||
cmTarget* target, ImportPropertyMap& properties,
|
||||
cmGeneratorTarget* target,
|
||||
ImportPropertyMap& properties,
|
||||
std::vector<std::string>& missingTargets
|
||||
)
|
||||
{
|
||||
// Get the makefile in which to lookup target information.
|
||||
cmMakefile* mf = target->GetMakefile();
|
||||
cmMakefile* mf = target->Makefile;
|
||||
|
||||
// Add the soname for unix shared libraries.
|
||||
if(target->GetType() == cmTarget::SHARED_LIBRARY ||
|
||||
@ -884,14 +888,14 @@ cmExportFileGenerator
|
||||
{
|
||||
std::string prop;
|
||||
std::string value;
|
||||
if(target->HasSOName(config))
|
||||
if(target->Target->HasSOName(config))
|
||||
{
|
||||
if(mf->IsOn("CMAKE_PLATFORM_HAS_INSTALLNAME"))
|
||||
{
|
||||
value = this->InstallNameDir(target, config);
|
||||
value = this->InstallNameDir(target->Target, config);
|
||||
}
|
||||
prop = "IMPORTED_SONAME";
|
||||
value += target->GetSOName(config);
|
||||
value += target->Target->GetSOName(config);
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -904,8 +908,9 @@ cmExportFileGenerator
|
||||
}
|
||||
|
||||
// Add the transitive link dependencies for this configuration.
|
||||
if(cmTarget::LinkInterface const* iface = target->GetLinkInterface(config,
|
||||
target))
|
||||
if(cmTarget::LinkInterface const* iface =
|
||||
target->Target
|
||||
->GetLinkInterface(config, target->Target))
|
||||
{
|
||||
this->SetImportLinkProperty(suffix, target,
|
||||
"IMPORTED_LINK_INTERFACE_LANGUAGES",
|
||||
@ -931,7 +936,7 @@ template <typename T>
|
||||
void
|
||||
cmExportFileGenerator
|
||||
::SetImportLinkProperty(std::string const& suffix,
|
||||
cmTarget* target,
|
||||
cmGeneratorTarget* target,
|
||||
const std::string& propName,
|
||||
std::vector<T> const& entries,
|
||||
ImportPropertyMap& properties,
|
||||
@ -955,7 +960,7 @@ cmExportFileGenerator
|
||||
sep = ";";
|
||||
|
||||
std::string temp = *li;
|
||||
this->AddTargetNamespace(temp, target, missingTargets);
|
||||
this->AddTargetNamespace(temp, target->Target, missingTargets);
|
||||
link_entries += temp;
|
||||
}
|
||||
|
||||
|
@ -92,13 +92,15 @@ protected:
|
||||
// Collect properties with detailed information about targets beyond
|
||||
// their location on disk.
|
||||
void SetImportDetailProperties(const std::string& config,
|
||||
std::string const& suffix, cmTarget* target,
|
||||
std::string const& suffix,
|
||||
cmGeneratorTarget* target,
|
||||
ImportPropertyMap& properties,
|
||||
std::vector<std::string>& missingTargets);
|
||||
|
||||
template <typename T>
|
||||
void SetImportLinkProperty(std::string const& suffix,
|
||||
cmTarget* target, const std::string& propName,
|
||||
cmGeneratorTarget* target,
|
||||
const std::string& propName,
|
||||
std::vector<T> const& entries,
|
||||
ImportPropertyMap& properties,
|
||||
std::vector<std::string>& missingTargets);
|
||||
@ -148,7 +150,7 @@ protected:
|
||||
void SetImportLinkInterface(const std::string& config,
|
||||
std::string const& suffix,
|
||||
cmGeneratorExpression::PreprocessContext preprocessRule,
|
||||
cmTarget* target, ImportPropertyMap& properties,
|
||||
cmGeneratorTarget* target, ImportPropertyMap& properties,
|
||||
std::vector<std::string>& missingTargets);
|
||||
|
||||
enum FreeTargetsReplace {
|
||||
|
@ -358,12 +358,14 @@ cmExportInstallFileGenerator
|
||||
if(!properties.empty())
|
||||
{
|
||||
// Get the rest of the target details.
|
||||
cmGeneratorTarget *gtgt = te->Target->GetMakefile()->GetLocalGenerator()
|
||||
->GetGlobalGenerator()->GetGeneratorTarget(te->Target);
|
||||
this->SetImportDetailProperties(config, suffix,
|
||||
te->Target, properties, missingTargets);
|
||||
gtgt, properties, missingTargets);
|
||||
|
||||
this->SetImportLinkInterface(config, suffix,
|
||||
cmGeneratorExpression::InstallInterface,
|
||||
te->Target, properties, missingTargets);
|
||||
gtgt, properties, missingTargets);
|
||||
|
||||
// TOOD: PUBLIC_HEADER_LOCATION
|
||||
// This should wait until the build feature propagation stuff
|
||||
|
Loading…
x
Reference in New Issue
Block a user