summaryrefslogtreecommitdiffstats
path: root/Source/cmGeneratorTarget.h
diff options
context:
space:
mode:
Diffstat (limited to 'Source/cmGeneratorTarget.h')
-rw-r--r--Source/cmGeneratorTarget.h38
1 files changed, 37 insertions, 1 deletions
diff --git a/Source/cmGeneratorTarget.h b/Source/cmGeneratorTarget.h
index 3090a5b..8f27a91 100644
--- a/Source/cmGeneratorTarget.h
+++ b/Source/cmGeneratorTarget.h
@@ -907,7 +907,8 @@ public:
BuiltinTransitiveProperties;
cm::optional<TransitiveProperty> IsTransitiveProperty(
- cm::string_view prop, cmLocalGenerator const* lg) const;
+ cm::string_view prop, cmLocalGenerator const* lg,
+ std::string const& config, bool evaluatingLinkLibraries) const;
bool HaveInstallTreeRPATH(const std::string& config) const;
@@ -989,6 +990,30 @@ public:
bool DiscoverSyntheticTargets(cmSyntheticTargetCache& cache,
std::string const& config);
+ class CustomTransitiveProperty : public TransitiveProperty
+ {
+ std::unique_ptr<std::string> InterfaceNameBuf;
+ CustomTransitiveProperty(std::unique_ptr<std::string> interfaceNameBuf,
+ UseTo usage);
+
+ public:
+ CustomTransitiveProperty(std::string interfaceName, UseTo usage);
+ };
+ struct CustomTransitiveProperties
+ : public std::map<std::string, CustomTransitiveProperty>
+ {
+ void Add(cmValue props, UseTo usage);
+ };
+
+ enum class PropertyFor
+ {
+ Build,
+ Interface,
+ };
+
+ CustomTransitiveProperties const& GetCustomTransitiveProperties(
+ std::string const& config, PropertyFor propertyFor) const;
+
private:
void AddSourceCommon(const std::string& src, bool before = false);
@@ -1056,6 +1081,11 @@ private:
std::string const& base, std::string const& suffix,
std::string const& name, cmValue version) const;
+ mutable std::map<std::string, CustomTransitiveProperties>
+ CustomTransitiveBuildPropertiesMap;
+ mutable std::map<std::string, CustomTransitiveProperties>
+ CustomTransitiveInterfacePropertiesMap;
+
struct CompatibleInterfacesBase
{
std::set<std::string> PropsBool;
@@ -1306,6 +1336,12 @@ private:
void ComputeLinkInterfaceRuntimeLibraries(
const std::string& config, cmOptionalLinkInterface& iface) const;
+ // If this method is made public, or call sites are added outside of
+ // methods computing cached members, add dedicated caching members.
+ std::vector<cmGeneratorTarget const*> GetLinkInterfaceClosure(
+ std::string const& config, cmGeneratorTarget const* headTarget,
+ UseTo usage) const;
+
public:
const std::vector<const cmGeneratorTarget*>& GetLinkImplementationClosure(
const std::string& config, UseTo usage) const;