From 34c04d6d02acab067353e28155b546ad32617b55 Mon Sep 17 00:00:00 2001
From: Brad King <brad.king@kitware.com>
Date: Tue, 15 Jan 2008 10:49:59 -0500
Subject: ENH: Added partial implementation of recognizing per-configration
 properties.

---
 Source/cmake.cxx | 24 +++++++++++++++++++++++-
 1 file changed, 23 insertions(+), 1 deletion(-)

diff --git a/Source/cmake.cxx b/Source/cmake.cxx
index 31b80c7..c5466a6 100644
--- a/Source/cmake.cxx
+++ b/Source/cmake.cxx
@@ -3324,6 +3324,15 @@ void cmake::ReportUndefinedPropertyAccesses(const char *filename)
   std::vector<std::string> enLangs;
   this->GlobalGenerator->GetEnabledLanguages(enLangs);
 
+  // Common configuration names.
+  // TODO: Compute current configuration(s).
+  std::vector<std::string> enConfigs;
+  enConfigs.push_back("");
+  enConfigs.push_back("DEBUG");
+  enConfigs.push_back("RELEASE");
+  enConfigs.push_back("MINSIZEREL");
+  enConfigs.push_back("RELWITHDEBINFO");
+
   // take all the defined properties and add definitions for all the enabled
   // languages
   std::set<std::pair<cmStdString,cmProperty::ScopeType> > aliasedProperties;
@@ -3334,7 +3343,20 @@ void cmake::ReportUndefinedPropertyAccesses(const char *filename)
     cmPropertyDefinitionMap::iterator j;
     for (j = i->second.begin(); j != i->second.end(); ++j)
       {
-      if (j->first.find("<LANG>"))
+      // TODO: What if both <LANG> and <CONFIG> appear?
+      if (j->first.find("<CONFIG>") != std::string::npos)
+        {
+        std::vector<std::string>::const_iterator k;
+        for (k = enConfigs.begin(); k != enConfigs.end(); ++k)
+          {
+          std::string tmp = j->first;
+          cmSystemTools::ReplaceString(tmp, "<CONFIG>", k->c_str());
+          // add alias
+          aliasedProperties.insert
+            (std::pair<cmStdString,cmProperty::ScopeType>(tmp,i->first));
+          }
+        }
+      if (j->first.find("<LANG>") != std::string::npos)
         {
         std::vector<std::string>::const_iterator k;
         for (k = enLangs.begin(); k != enLangs.end(); ++k)
-- 
cgit v0.12