Browse Source

cmTargetPropertyComputer: Move whitelist check from cmTarget

Stephen Kelly 9 years ago
parent
commit
05251e6d80
3 changed files with 37 additions and 35 deletions
  1. 3 31
      Source/cmTarget.cxx
  2. 30 1
      Source/cmTargetPropertyComputer.cxx
  3. 4 3
      Source/cmTargetPropertyComputer.h

+ 3 - 31
Source/cmTarget.cxx

@@ -707,38 +707,10 @@ cmBacktraceRange cmTarget::GetLinkImplementationBacktraces() const
   return cmMakeRange(this->Internal->LinkImplementationPropertyBacktraces);
 }
 
-static bool whiteListedInterfaceProperty(const std::string& prop)
-{
-  if (cmHasLiteralPrefix(prop, "INTERFACE_")) {
-    return true;
-  }
-  static UNORDERED_SET<std::string> builtIns;
-  if (builtIns.empty()) {
-    builtIns.insert("COMPATIBLE_INTERFACE_BOOL");
-    builtIns.insert("COMPATIBLE_INTERFACE_NUMBER_MAX");
-    builtIns.insert("COMPATIBLE_INTERFACE_NUMBER_MIN");
-    builtIns.insert("COMPATIBLE_INTERFACE_STRING");
-    builtIns.insert("EXPORT_NAME");
-    builtIns.insert("IMPORTED");
-    builtIns.insert("NAME");
-    builtIns.insert("TYPE");
-  }
-
-  if (builtIns.count(prop)) {
-    return true;
-  }
-
-  if (cmHasLiteralPrefix(prop, "MAP_IMPORTED_CONFIG_")) {
-    return true;
-  }
-
-  return false;
-}
-
 void cmTarget::SetProperty(const std::string& prop, const char* value)
 {
   if (this->GetType() == cmState::INTERFACE_LIBRARY &&
-      !whiteListedInterfaceProperty(prop)) {
+      !cmTargetPropertyComputer::WhiteListedInterfaceProperty(prop)) {
     std::ostringstream e;
     e << "INTERFACE_LIBRARY targets may only have whitelisted properties.  "
          "The property \""
@@ -822,7 +794,7 @@ void cmTarget::AppendProperty(const std::string& prop, const char* value,
                               bool asString)
 {
   if (this->GetType() == cmState::INTERFACE_LIBRARY &&
-      !whiteListedInterfaceProperty(prop)) {
+      !cmTargetPropertyComputer::WhiteListedInterfaceProperty(prop)) {
     std::ostringstream e;
     e << "INTERFACE_LIBRARY targets may only have whitelisted properties.  "
          "The property \""
@@ -1041,7 +1013,7 @@ const char* cmTarget::GetProperty(const std::string& prop,
                                   cmMakefile* context) const
 {
   if (this->GetType() == cmState::INTERFACE_LIBRARY &&
-      !whiteListedInterfaceProperty(prop)) {
+      !cmTargetPropertyComputer::WhiteListedInterfaceProperty(prop)) {
     std::ostringstream e;
     e << "INTERFACE_LIBRARY targets may only have whitelisted properties.  "
          "The property \""

+ 30 - 1
Source/cmTargetPropertyComputer.cxx

@@ -154,7 +154,7 @@ const char* cmTargetPropertyComputer::GetLocation(
 }
 
 const char* cmTargetPropertyComputer::GetSources(
-  cmTarget const* tgt,cmMessenger* messenger,
+  cmTarget const* tgt, cmMessenger* messenger,
   cmListFileBacktrace const& context)
 {
   cmStringRange entries = tgt->GetSourceEntries();
@@ -241,3 +241,32 @@ const char* cmTargetPropertyComputer::GetSources(
   srcs = ss.str();
   return srcs.c_str();
 }
+
+bool cmTargetPropertyComputer::WhiteListedInterfaceProperty(
+  const std::string& prop)
+{
+  if (cmHasLiteralPrefix(prop, "INTERFACE_")) {
+    return true;
+  }
+  static UNORDERED_SET<std::string> builtIns;
+  if (builtIns.empty()) {
+    builtIns.insert("COMPATIBLE_INTERFACE_BOOL");
+    builtIns.insert("COMPATIBLE_INTERFACE_NUMBER_MAX");
+    builtIns.insert("COMPATIBLE_INTERFACE_NUMBER_MIN");
+    builtIns.insert("COMPATIBLE_INTERFACE_STRING");
+    builtIns.insert("EXPORT_NAME");
+    builtIns.insert("IMPORTED");
+    builtIns.insert("NAME");
+    builtIns.insert("TYPE");
+  }
+
+  if (builtIns.count(prop)) {
+    return true;
+  }
+
+  if (cmHasLiteralPrefix(prop, "MAP_IMPORTED_CONFIG_")) {
+    return true;
+  }
+
+  return false;
+}

+ 4 - 3
Source/cmTargetPropertyComputer.h

@@ -23,6 +23,8 @@ public:
   static std::map<std::string, std::string> ComputeFileLocations(
     cmTarget const* tgt);
 
+  static bool WhiteListedInterfaceProperty(const std::string& prop);
+
 private:
   static bool HandleLocationPropertyPolicy(std::string const& tgtName,
                                            cmMessenger* messenger,
@@ -35,9 +37,8 @@ private:
                                  cmMessenger* messenger,
                                  cmListFileBacktrace const& context);
 
-  static const char* GetSources(cmTarget const* tgt,
-    cmMessenger* messenger,
-    cmListFileBacktrace const& context);
+  static const char* GetSources(cmTarget const* tgt, cmMessenger* messenger,
+                                cmListFileBacktrace const& context);
 };
 
 #endif