From d74bca5a8fee1d45c60b60a70a2a1a90abb74180 Mon Sep 17 00:00:00 2001 From: Stephen Kelly Date: Tue, 20 Oct 2015 01:05:42 +0200 Subject: cmGeneratorTarget: Copy the policy map from the cmTarget. --- Source/cmGeneratorTarget.cxx | 2 ++ Source/cmGeneratorTarget.h | 9 +++++++++ Source/cmPolicies.h | 17 +++++++++++++++++ Source/cmTarget.h | 17 ----------------- 4 files changed, 28 insertions(+), 17 deletions(-) diff --git a/Source/cmGeneratorTarget.cxx b/Source/cmGeneratorTarget.cxx index 2a35259..fc5c049 100644 --- a/Source/cmGeneratorTarget.cxx +++ b/Source/cmGeneratorTarget.cxx @@ -308,6 +308,8 @@ cmGeneratorTarget::cmGeneratorTarget(cmTarget* t, cmLocalGenerator* lg) this->DLLPlatform = (this->Makefile->IsOn("WIN32") || this->Makefile->IsOn("CYGWIN") || this->Makefile->IsOn("MINGW")); + + this->PolicyMap = t->PolicyMap; } cmGeneratorTarget::~cmGeneratorTarget() diff --git a/Source/cmGeneratorTarget.h b/Source/cmGeneratorTarget.h index eaec83b..2dc3a6f 100644 --- a/Source/cmGeneratorTarget.h +++ b/Source/cmGeneratorTarget.h @@ -33,6 +33,14 @@ public: bool IsImported() const; const char *GetLocation(const std::string& config) const; +#define DECLARE_TARGET_POLICY(POLICY) \ + cmPolicies::PolicyStatus GetPolicyStatus ## POLICY () const \ + { return this->PolicyMap.Get(cmPolicies::POLICY); } + + CM_FOR_EACH_TARGET_POLICY(DECLARE_TARGET_POLICY) + +#undef DECLARE_TARGET_POLICY + /** Get the location of the target in the build tree with a placeholder referencing the configuration in the native build system. This location is suitable for use as the LOCATION target property. */ @@ -641,6 +649,7 @@ private: typedef std::map OutputNameMapType; mutable OutputNameMapType OutputNameMap; mutable std::set UtilityItems; + cmPolicies::PolicyMap PolicyMap; mutable bool PolicyWarnedCMP0022; mutable bool DebugIncludesDone; mutable bool DebugCompileOptionsDone; diff --git a/Source/cmPolicies.h b/Source/cmPolicies.h index a549d18..5023055 100644 --- a/Source/cmPolicies.h +++ b/Source/cmPolicies.h @@ -230,6 +230,23 @@ class cmPolicy; #define CM_FOR_EACH_POLICY_ID(POLICY) \ CM_FOR_EACH_POLICY_TABLE(POLICY, CM_SELECT_ID) +#define CM_FOR_EACH_TARGET_POLICY(F) \ + F(CMP0003) \ + F(CMP0004) \ + F(CMP0008) \ + F(CMP0020) \ + F(CMP0021) \ + F(CMP0022) \ + F(CMP0027) \ + F(CMP0038) \ + F(CMP0041) \ + F(CMP0042) \ + F(CMP0046) \ + F(CMP0052) \ + F(CMP0060) \ + F(CMP0063) \ + F(CMP0065) + /** \class cmPolicies * \brief Handles changes in CMake behavior and policies diff --git a/Source/cmTarget.h b/Source/cmTarget.h index 8a99472..e8c05da 100644 --- a/Source/cmTarget.h +++ b/Source/cmTarget.h @@ -26,23 +26,6 @@ # endif #endif -#define CM_FOR_EACH_TARGET_POLICY(F) \ - F(CMP0003) \ - F(CMP0004) \ - F(CMP0008) \ - F(CMP0020) \ - F(CMP0021) \ - F(CMP0022) \ - F(CMP0027) \ - F(CMP0038) \ - F(CMP0041) \ - F(CMP0042) \ - F(CMP0046) \ - F(CMP0052) \ - F(CMP0060) \ - F(CMP0063) \ - F(CMP0065) - class cmake; class cmMakefile; class cmSourceFile; -- cgit v0.12