diff options
author | Brad King <brad.king@kitware.com> | 2015-10-16 13:35:37 (GMT) |
---|---|---|
committer | CMake Topic Stage <kwrobot@kitware.com> | 2015-10-16 13:35:37 (GMT) |
commit | dfd371dc013f14fb8e52c4f16e4a0f03a1ead9ce (patch) | |
tree | 9d0b76947725b4d88fcb6e97b988180685e30747 | |
parent | f13521317a43af4ebb2996c9916d1d1da695c5fc (diff) | |
parent | c4ae157865291d73113f81d4c9a9c2dd86598efc (diff) | |
download | CMake-dfd371dc013f14fb8e52c4f16e4a0f03a1ead9ce.zip CMake-dfd371dc013f14fb8e52c4f16e4a0f03a1ead9ce.tar.gz CMake-dfd371dc013f14fb8e52c4f16e4a0f03a1ead9ce.tar.bz2 |
Merge topic 'genex-consumers-generator-targets'
c4ae1578 Genex: Port some access API to cmGeneratorTarget.
6d27a3db Genex: Port implementation to cmGeneratorTarget.
-rw-r--r-- | Source/cmExportTryCompileFileGenerator.cxx | 11 | ||||
-rw-r--r-- | Source/cmGeneratorExpression.cxx | 8 | ||||
-rw-r--r-- | Source/cmGeneratorExpression.h | 19 | ||||
-rw-r--r-- | Source/cmGeneratorExpressionContext.cxx | 4 | ||||
-rw-r--r-- | Source/cmGeneratorExpressionContext.h | 17 | ||||
-rw-r--r-- | Source/cmGeneratorExpressionNode.cxx | 80 | ||||
-rw-r--r-- | Source/cmGeneratorTarget.cxx | 12 | ||||
-rw-r--r-- | Source/cmGlobalGenerator.cxx | 4 | ||||
-rw-r--r-- | Source/cmGlobalGenerator.h | 6 |
9 files changed, 78 insertions, 83 deletions
diff --git a/Source/cmExportTryCompileFileGenerator.cxx b/Source/cmExportTryCompileFileGenerator.cxx index 70fca2e..d0e65e1 100644 --- a/Source/cmExportTryCompileFileGenerator.cxx +++ b/Source/cmExportTryCompileFileGenerator.cxx @@ -84,13 +84,14 @@ std::string cmExportTryCompileFileGenerator::FindTargets( false, &gDummyHead, gtgt, &dagChecker); - const std::set<cmTarget const*> &allTargets = cge->GetAllTargetsSeen(); - for(std::set<cmTarget const*>::const_iterator li = allTargets.begin(); - li != allTargets.end(); ++li) + const std::set<cmGeneratorTarget const*> &allTargets = + cge->GetAllTargetsSeen(); + for(std::set<cmGeneratorTarget const*>::const_iterator li = + allTargets.begin(); li != allTargets.end(); ++li) { - if(emitted.insert(*li).second) + if(emitted.insert((*li)->Target).second) { - this->Exports.push_back(*li); + this->Exports.push_back((*li)->Target); } } return result; diff --git a/Source/cmGeneratorExpression.cxx b/Source/cmGeneratorExpression.cxx index d9f67f2..6796a01 100644 --- a/Source/cmGeneratorExpression.cxx +++ b/Source/cmGeneratorExpression.cxx @@ -11,10 +11,9 @@ ============================================================================*/ #include "cmGeneratorExpression.h" -#include "cmMakefile.h" -#include "cmTarget.h" #include "assert.h" #include "cmAlgorithms.h" +#include "cmSystemTools.h" #include "cmGeneratorExpressionEvaluator.h" #include "cmGeneratorExpressionLexer.h" @@ -463,10 +462,11 @@ bool cmGeneratorExpression::IsValidTargetName(const std::string &input) //---------------------------------------------------------------------------- void -cmCompiledGeneratorExpression::GetMaxLanguageStandard(cmTarget const* tgt, +cmCompiledGeneratorExpression::GetMaxLanguageStandard( + const cmGeneratorTarget* tgt, std::map<std::string, std::string>& mapping) { - typedef std::map<cmTarget const*, + typedef std::map<cmGeneratorTarget const*, std::map<std::string, std::string> > MapType; MapType::const_iterator it = this->MaxLanguageStandard.find(tgt); if (it != this->MaxLanguageStandard.end()) diff --git a/Source/cmGeneratorExpression.h b/Source/cmGeneratorExpression.h index d64d6ba..efd381b 100644 --- a/Source/cmGeneratorExpression.h +++ b/Source/cmGeneratorExpression.h @@ -19,7 +19,6 @@ #include <cmsys/RegularExpression.hxx> #include <cmsys/auto_ptr.hxx> -class cmTarget; class cmGeneratorTarget; class cmLocalGenerator; class cmListFileBacktrace; @@ -92,13 +91,13 @@ public: std::string const& language = std::string()) const; /** Get set of targets found during evaluations. */ - std::set<cmTarget*> const& GetTargets() const + std::set<cmGeneratorTarget*> const& GetTargets() const { return this->DependTargets; } std::set<std::string> const& GetSeenTargetProperties() const { return this->SeenTargetProperties; } - std::set<cmTarget const*> const& GetAllTargetsSeen() const + std::set<cmGeneratorTarget const*> const& GetAllTargetsSeen() const { return this->AllTargetsSeen; } ~cmCompiledGeneratorExpression(); @@ -120,7 +119,7 @@ public: { return this->HadHeadSensitiveCondition; } - std::set<cmTarget const*> GetSourceSensitiveTargets() const + std::set<cmGeneratorTarget const*> GetSourceSensitiveTargets() const { return this->SourceSensitiveTargets; } @@ -130,7 +129,7 @@ public: this->EvaluateForBuildsystem = eval; } - void GetMaxLanguageStandard(cmTarget const* tgt, + void GetMaxLanguageStandard(cmGeneratorTarget const* tgt, std::map<std::string, std::string>& mapping); private: @@ -150,15 +149,15 @@ private: const std::string Input; bool NeedsEvaluation; - mutable std::set<cmTarget*> DependTargets; - mutable std::set<cmTarget const*> AllTargetsSeen; + mutable std::set<cmGeneratorTarget*> DependTargets; + mutable std::set<cmGeneratorTarget const*> AllTargetsSeen; mutable std::set<std::string> SeenTargetProperties; - mutable std::map<cmTarget const*, std::map<std::string, std::string> > - MaxLanguageStandard; + mutable std::map<cmGeneratorTarget const*, + std::map<std::string, std::string> > MaxLanguageStandard; mutable std::string Output; mutable bool HadContextSensitiveCondition; mutable bool HadHeadSensitiveCondition; - mutable std::set<cmTarget const*> SourceSensitiveTargets; + mutable std::set<cmGeneratorTarget const*> SourceSensitiveTargets; bool EvaluateForBuildsystem; }; diff --git a/Source/cmGeneratorExpressionContext.cxx b/Source/cmGeneratorExpressionContext.cxx index 4daf4e9..5c9462f 100644 --- a/Source/cmGeneratorExpressionContext.cxx +++ b/Source/cmGeneratorExpressionContext.cxx @@ -24,8 +24,8 @@ cmGeneratorExpressionContext::cmGeneratorExpressionContext( LG(lg), Config(config), Language(language), - HeadTarget(headTarget ? headTarget->Target : 0), - CurrentTarget(currentTarget ? currentTarget->Target : 0), + HeadTarget(headTarget), + CurrentTarget(currentTarget), Quiet(quiet), HadError(false), HadContextSensitiveCondition(false), diff --git a/Source/cmGeneratorExpressionContext.h b/Source/cmGeneratorExpressionContext.h index bbf0fcf..e802138 100644 --- a/Source/cmGeneratorExpressionContext.h +++ b/Source/cmGeneratorExpressionContext.h @@ -18,7 +18,6 @@ #include <map> #include <string> -class cmTarget; class cmGeneratorTarget; class cmLocalGenerator; @@ -34,18 +33,20 @@ struct cmGeneratorExpressionContext cmListFileBacktrace Backtrace; - std::set<cmTarget*> DependTargets; - std::set<cmTarget const*> AllTargets; + std::set<cmGeneratorTarget*> DependTargets; + std::set<cmGeneratorTarget const*> AllTargets; std::set<std::string> SeenTargetProperties; - std::set<cmTarget const*> SourceSensitiveTargets; - std::map<cmTarget const*, std::map<std::string, std::string> > + std::set<cmGeneratorTarget const*> SourceSensitiveTargets; + std::map<cmGeneratorTarget const*, std::map<std::string, std::string> > MaxLanguageStandard; cmLocalGenerator *LG; std::string Config; std::string Language; - cmTarget const* HeadTarget; // The target whose property is being evaluated. - cmTarget const* CurrentTarget; // The dependent of HeadTarget which appears - // directly or indirectly in the property. + // The target whose property is being evaluated. + cmGeneratorTarget const* HeadTarget; + // The dependent of HeadTarget which appears + // directly or indirectly in the property. + cmGeneratorTarget const* CurrentTarget; bool Quiet; bool HadError; bool HadContextSensitiveCondition; diff --git a/Source/cmGeneratorExpressionNode.cxx b/Source/cmGeneratorExpressionNode.cxx index e3253da..945c284 100644 --- a/Source/cmGeneratorExpressionNode.cxx +++ b/Source/cmGeneratorExpressionNode.cxx @@ -705,7 +705,7 @@ static const struct ConfigurationTestNode : public cmGeneratorExpressionNode const char* loc = 0; const char* imp = 0; std::string suffix; - if (context->CurrentTarget->GetMappedConfig(context->Config, + if (context->CurrentTarget->Target->GetMappedConfig(context->Config, &loc, &imp, suffix)) @@ -893,7 +893,7 @@ static const struct TargetPropertyNode : public cmGeneratorExpressionNode } static cmsys::RegularExpression propertyNameValidator("^[A-Za-z0-9_]+$"); - cmTarget const* target = context->HeadTarget; + cmGeneratorTarget const* target = context->HeadTarget; std::string propertyName = *parameters.begin(); if (parameters.size() == 1) @@ -945,15 +945,15 @@ static const struct TargetPropertyNode : public cmGeneratorExpressionNode { if(context->LG->GetMakefile()->IsAlias(targetName)) { - if(cmTarget* tgt = - context->LG->GetMakefile()->FindTargetToUse(targetName)) + if(cmGeneratorTarget* tgt = + context->LG->FindGeneratorTargetToUse(targetName)) { return tgt->GetName(); } } return ""; } - target = context->LG->GetMakefile()->FindTargetToUse(targetName); + target = context->LG->FindGeneratorTargetToUse(targetName); if (!target) { @@ -997,12 +997,9 @@ static const struct TargetPropertyNode : public cmGeneratorExpressionNode assert(target); - cmGeneratorTarget* gtgt = - context->LG->GetGlobalGenerator()->GetGeneratorTarget(target); - if (propertyName == "LINKER_LANGUAGE") { - if (target->LinkLanguagePropagatesToDependents() && + if (target->Target->LinkLanguagePropagatesToDependents() && dagCheckerParent && (dagCheckerParent->EvaluatingLinkLibraries() || dagCheckerParent->EvaluatingSources())) { @@ -1011,7 +1008,7 @@ static const struct TargetPropertyNode : public cmGeneratorExpressionNode "link libraries for a static library"); return std::string(); } - return gtgt->GetLinkerLanguage(context->Config); + return target->GetLinkerLanguage(context->Config); } cmGeneratorExpressionDAGChecker dagChecker(context->Backtrace, @@ -1110,20 +1107,18 @@ static const struct TargetPropertyNode : public cmGeneratorExpressionNode } } #undef POPULATE_INTERFACE_PROPERTY_NAME - cmTarget const* headTarget = context->HeadTarget && isInterfaceProperty + cmGeneratorTarget const* headTarget = + context->HeadTarget && isInterfaceProperty ? context->HeadTarget : target; if(isInterfaceProperty) { - cmGeneratorTarget* gHeadTarget = - context->LG->GetGlobalGenerator() - ->GetGeneratorTarget(headTarget); if(cmLinkInterfaceLibraries const* iface = - gtgt->GetLinkInterfaceLibraries(context->Config, gHeadTarget, true)) + target->GetLinkInterfaceLibraries(context->Config, headTarget, true)) { linkedTargetsContent = - getLinkedTargetsContent(iface->Libraries, gtgt, - gHeadTarget, + getLinkedTargetsContent(iface->Libraries, target, + headTarget, context, &dagChecker, interfacePropertyName); } @@ -1131,11 +1126,11 @@ static const struct TargetPropertyNode : public cmGeneratorExpressionNode else if(!interfacePropertyName.empty()) { if(cmLinkImplementationLibraries const* impl = - gtgt->GetLinkImplementationLibraries(context->Config)) + target->GetLinkImplementationLibraries(context->Config)) { linkedTargetsContent = - getLinkedTargetsContent(impl->Libraries, gtgt, - gtgt, + getLinkedTargetsContent(impl->Libraries, target, + target, context, &dagChecker, interfacePropertyName); } @@ -1148,40 +1143,40 @@ static const struct TargetPropertyNode : public cmGeneratorExpressionNode { return linkedTargetsContent; } - if (gtgt->IsLinkInterfaceDependentBoolProperty(propertyName, + if (target->IsLinkInterfaceDependentBoolProperty(propertyName, context->Config)) { context->HadContextSensitiveCondition = true; - return gtgt->GetLinkInterfaceDependentBoolProperty( + return target->GetLinkInterfaceDependentBoolProperty( propertyName, context->Config) ? "1" : "0"; } - if (gtgt->IsLinkInterfaceDependentStringProperty(propertyName, + if (target->IsLinkInterfaceDependentStringProperty(propertyName, context->Config)) { context->HadContextSensitiveCondition = true; const char *propContent = - gtgt->GetLinkInterfaceDependentStringProperty( + target->GetLinkInterfaceDependentStringProperty( propertyName, context->Config); return propContent ? propContent : ""; } - if (gtgt->IsLinkInterfaceDependentNumberMinProperty(propertyName, + if (target->IsLinkInterfaceDependentNumberMinProperty(propertyName, context->Config)) { context->HadContextSensitiveCondition = true; const char *propContent = - gtgt->GetLinkInterfaceDependentNumberMinProperty( + target->GetLinkInterfaceDependentNumberMinProperty( propertyName, context->Config); return propContent ? propContent : ""; } - if (gtgt->IsLinkInterfaceDependentNumberMaxProperty(propertyName, + if (target->IsLinkInterfaceDependentNumberMaxProperty(propertyName, context->Config)) { context->HadContextSensitiveCondition = true; const char *propContent = - gtgt->GetLinkInterfaceDependentNumberMaxProperty( + target->GetLinkInterfaceDependentNumberMaxProperty( propertyName, context->Config); return propContent ? propContent : ""; @@ -1193,22 +1188,22 @@ static const struct TargetPropertyNode : public cmGeneratorExpressionNode if (!target->IsImported() && dagCheckerParent && !dagCheckerParent->EvaluatingLinkLibraries()) { - if (gtgt->IsLinkInterfaceDependentNumberMinProperty(propertyName, + if (target->IsLinkInterfaceDependentNumberMinProperty(propertyName, context->Config)) { context->HadContextSensitiveCondition = true; const char *propContent = - gtgt->GetLinkInterfaceDependentNumberMinProperty( + target->GetLinkInterfaceDependentNumberMinProperty( propertyName, context->Config); return propContent ? propContent : ""; } - if (gtgt->IsLinkInterfaceDependentNumberMaxProperty(propertyName, + if (target->IsLinkInterfaceDependentNumberMaxProperty(propertyName, context->Config)) { context->HadContextSensitiveCondition = true; const char *propContent = - gtgt->GetLinkInterfaceDependentNumberMaxProperty( + target->GetLinkInterfaceDependentNumberMaxProperty( propertyName, context->Config); return propContent ? propContent : ""; @@ -1216,11 +1211,9 @@ static const struct TargetPropertyNode : public cmGeneratorExpressionNode } if(!interfacePropertyName.empty()) { - cmGeneratorTarget* gHeadTarget = - context->LG->GetGlobalGenerator()->GetGeneratorTarget(headTarget); std::string result = this->EvaluateDependentExpression(prop, context->LG, context, - gHeadTarget, gtgt, &dagChecker); + headTarget, target, &dagChecker); if (!linkedTargetsContent.empty()) { result += (result.empty() ? "" : ";") + linkedTargetsContent; @@ -1341,7 +1334,7 @@ static const struct CompileFeaturesNode : public cmGeneratorExpressionNode const GeneratorExpressionContent *content, cmGeneratorExpressionDAGChecker *dagChecker) const { - cmTarget const* target = context->HeadTarget; + cmGeneratorTarget const* target = context->HeadTarget; if (!target) { reportError(context, content->GetOriginalExpression(), @@ -1361,7 +1354,8 @@ static const struct CompileFeaturesNode : public cmGeneratorExpressionNode { std::string error; std::string lang; - if (!context->LG->GetMakefile()->CompileFeatureKnown(context->HeadTarget, + if (!context->LG->GetMakefile()->CompileFeatureKnown( + context->HeadTarget->Target, *it, lang, &error)) { reportError(context, content->GetOriginalExpression(), error); @@ -1407,7 +1401,7 @@ static const struct CompileFeaturesNode : public cmGeneratorExpressionNode // All features known for the language are always available. continue; } - if (!context->LG->GetMakefile()->HaveStandardAvailable(target, + if (!context->LG->GetMakefile()->HaveStandardAvailable(target->Target, lit->first, *it)) { if (evalLL) @@ -1442,13 +1436,13 @@ static const char* targetPolicyWhitelist[] = { #undef TARGET_POLICY_STRING }; -cmPolicies::PolicyStatus statusForTarget(cmTarget const* tgt, +cmPolicies::PolicyStatus statusForTarget(cmGeneratorTarget const* tgt, const char *policy) { #define RETURN_POLICY(POLICY) \ if (strcmp(policy, #POLICY) == 0) \ { \ - return tgt->GetPolicyStatus ## POLICY (); \ + return tgt->Target->GetPolicyStatus ## POLICY (); \ } \ CM_FOR_EACH_TARGET_POLICY(RETURN_POLICY) @@ -1503,7 +1497,7 @@ static const struct TargetPolicyNode : public cmGeneratorExpressionNode const char *policy = targetPolicyWhitelist[i]; if (parameters.front() == policy) { - cmMakefile *mf = context->HeadTarget->GetMakefile(); + cmMakefile *mf = context->HeadTarget->Target->GetMakefile(); switch(statusForTarget(context->HeadTarget, policy)) { case cmPolicies::WARN: @@ -1762,8 +1756,8 @@ struct TargetFilesystemArtifact : public cmGeneratorExpressionNode "be used while evaluating link libraries"); return std::string(); } - context->DependTargets.insert(target->Target); - context->AllTargets.insert(target->Target); + context->DependTargets.insert(target); + context->AllTargets.insert(target); std::string result = TargetFilesystemArtifactResultCreator<ArtifactT>::Create( diff --git a/Source/cmGeneratorTarget.cxx b/Source/cmGeneratorTarget.cxx index ba42591..4fd9cec 100644 --- a/Source/cmGeneratorTarget.cxx +++ b/Source/cmGeneratorTarget.cxx @@ -2173,9 +2173,9 @@ cmTargetTraceDependencies si != sources.end(); ++si) { cmSourceFile* sf = *si; - const std::set<cmTarget const*> tgts = + const std::set<cmGeneratorTarget const*> tgts = this->GlobalGenerator->GetFilenameTargetDepends(sf); - if (tgts.find(this->Target) != tgts.end()) + if (tgts.find(this->GeneratorTarget) != tgts.end()) { std::ostringstream e; e << "Evaluation output file\n \"" << sf->GetFullPath() @@ -2353,7 +2353,7 @@ cmTargetTraceDependencies cmGeneratorExpression ge(cc.GetBacktrace()); // Add target-level dependencies referenced by generator expressions. - std::set<cmTarget*> targets; + std::set<cmGeneratorTarget*> targets; for(cmCustomCommandLines::const_iterator cit = cc.GetCommandLines().begin(); cit != cc.GetCommandLines().end(); ++cit) @@ -2379,12 +2379,12 @@ cmTargetTraceDependencies const cmsys::auto_ptr<cmCompiledGeneratorExpression> cge = ge.Parse(*cli); cge->Evaluate(this->GeneratorTarget->GetLocalGenerator(), "", true); - std::set<cmTarget*> geTargets = cge->GetTargets(); + std::set<cmGeneratorTarget*> geTargets = cge->GetTargets(); targets.insert(geTargets.begin(), geTargets.end()); } } - for(std::set<cmTarget*>::iterator ti = targets.begin(); + for(std::set<cmGeneratorTarget*>::iterator ti = targets.begin(); ti != targets.end(); ++ti) { this->Target->AddUtility((*ti)->GetName()); @@ -5412,7 +5412,7 @@ void cmGeneratorTarget::ComputeLinkImplementationLibraries( this->LinkImplicitNullProperties.insert(*it); } } - cge->GetMaxLanguageStandard(this->Target, + cge->GetMaxLanguageStandard(this, this->MaxLanguageStandards); } diff --git a/Source/cmGlobalGenerator.cxx b/Source/cmGlobalGenerator.cxx index 338f496..a42ea22 100644 --- a/Source/cmGlobalGenerator.cxx +++ b/Source/cmGlobalGenerator.cxx @@ -3029,13 +3029,13 @@ std::string cmGlobalGenerator::EscapeJSON(const std::string& s) { //---------------------------------------------------------------------------- void cmGlobalGenerator::SetFilenameTargetDepends(cmSourceFile* sf, - std::set<cmTarget const*> tgts) + std::set<cmGeneratorTarget const*> tgts) { this->FilenameTargetDepends[sf] = tgts; } //---------------------------------------------------------------------------- -std::set<cmTarget const*> const& +std::set<cmGeneratorTarget const*> const& cmGlobalGenerator::GetFilenameTargetDepends(cmSourceFile* sf) const { return this->FilenameTargetDepends[sf]; } diff --git a/Source/cmGlobalGenerator.h b/Source/cmGlobalGenerator.h index fc81708..6887409 100644 --- a/Source/cmGlobalGenerator.h +++ b/Source/cmGlobalGenerator.h @@ -354,8 +354,8 @@ public: void CreateEvaluationSourceFiles(std::string const& config) const; void SetFilenameTargetDepends(cmSourceFile* sf, - std::set<cmTarget const*> tgts); - std::set<cmTarget const*> const& + std::set<const cmGeneratorTarget*> tgts); + const std::set<const cmGeneratorTarget*>& GetFilenameTargetDepends(cmSourceFile* sf) const; #if defined(CMAKE_BUILD_WITH_CMAKE) @@ -508,7 +508,7 @@ private: // track targets to issue CMP0042 warning for. std::set<std::string> CMP0042WarnTargets; - mutable std::map<cmSourceFile*, std::set<cmTarget const*> > + mutable std::map<cmSourceFile*, std::set<cmGeneratorTarget const*> > FilenameTargetDepends; #if defined(CMAKE_BUILD_WITH_CMAKE) |