From 57f03e59ba92989aaf3600399f11ffb308cc663e Mon Sep 17 00:00:00 2001 From: Stephen Kelly Date: Sat, 6 Oct 2012 17:51:07 +0200 Subject: Port some of the cmExportFileGenerator API to cmGeneratorTarget. Enough to make it more possible to move GetLinkInterface to cmGeneratorTarget. --- Source/cmExportBuildFileGenerator.cxx | 4 ++-- Source/cmExportFileGenerator.cxx | 37 +++++++++++++++++++-------------- Source/cmExportFileGenerator.h | 8 ++++--- Source/cmExportInstallFileGenerator.cxx | 6 ++++-- 4 files changed, 32 insertions(+), 23 deletions(-) diff --git a/Source/cmExportBuildFileGenerator.cxx b/Source/cmExportBuildFileGenerator.cxx index d02a39b..355fc00 100644 --- a/Source/cmExportBuildFileGenerator.cxx +++ b/Source/cmExportBuildFileGenerator.cxx @@ -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); } diff --git a/Source/cmExportFileGenerator.cxx b/Source/cmExportFileGenerator.cxx index 094ad4f..a33cd59 100644 --- a/Source/cmExportFileGenerator.cxx +++ b/Source/cmExportFileGenerator.cxx @@ -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& 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& 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 void cmExportFileGenerator ::SetImportLinkProperty(std::string const& suffix, - cmTarget* target, + cmGeneratorTarget* target, const std::string& propName, std::vector 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; } diff --git a/Source/cmExportFileGenerator.h b/Source/cmExportFileGenerator.h index b6f4166..2f33200 100644 --- a/Source/cmExportFileGenerator.h +++ b/Source/cmExportFileGenerator.h @@ -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& missingTargets); template void SetImportLinkProperty(std::string const& suffix, - cmTarget* target, const std::string& propName, + cmGeneratorTarget* target, + const std::string& propName, std::vector const& entries, ImportPropertyMap& properties, std::vector& 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& missingTargets); enum FreeTargetsReplace { diff --git a/Source/cmExportInstallFileGenerator.cxx b/Source/cmExportInstallFileGenerator.cxx index 89c6ca2..6c7d97e 100644 --- a/Source/cmExportInstallFileGenerator.cxx +++ b/Source/cmExportInstallFileGenerator.cxx @@ -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 -- cgit v0.12