summaryrefslogtreecommitdiff
path: root/Source
diff options
context:
space:
mode:
Diffstat (limited to 'Source')
-rw-r--r--Source/cmGeneratorTarget.cxx2
-rw-r--r--Source/cmGeneratorTarget.h9
-rw-r--r--Source/cmPolicies.h17
-rw-r--r--Source/cmTarget.h17
4 files changed, 28 insertions, 17 deletions
diff --git a/Source/cmGeneratorTarget.cxx b/Source/cmGeneratorTarget.cxx
index 2a35259d4d..fc5c049528 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 eaec83b9ef..2dc3a6fbfd 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<OutputNameKey, std::string> OutputNameMapType;
mutable OutputNameMapType OutputNameMap;
mutable std::set<cmLinkItem> UtilityItems;
+ cmPolicies::PolicyMap PolicyMap;
mutable bool PolicyWarnedCMP0022;
mutable bool DebugIncludesDone;
mutable bool DebugCompileOptionsDone;
diff --git a/Source/cmPolicies.h b/Source/cmPolicies.h
index a549d1838d..5023055177 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 8a99472e8d..e8c05da908 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;