[Cmake-commits] CMake branch, next, updated. v2.8.11.2-3756-g72d4c12

Brad King brad.king at kitware.com
Wed Aug 7 10:29:40 EDT 2013


This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "CMake".

The branch, next has been updated
       via  72d4c12a701a25d5ffc4ae31b349feb23b264c22 (commit)
       via  0416a0e6d80900b952f083ec31f8663ecab738b9 (commit)
      from  dbc88e320e0bb9b5566ea79cf3d6031a368aa3bd (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=72d4c12a701a25d5ffc4ae31b349feb23b264c22
commit 72d4c12a701a25d5ffc4ae31b349feb23b264c22
Merge: dbc88e3 0416a0e
Author:     Brad King <brad.king at kitware.com>
AuthorDate: Wed Aug 7 10:29:36 2013 -0400
Commit:     CMake Topic Stage <kwrobot at kitware.com>
CommitDate: Wed Aug 7 10:29:36 2013 -0400

    Merge topic 'wince800' into next
    
    0416a0e VS11: Add support for Windows CE SDKs


http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=0416a0e6d80900b952f083ec31f8663ecab738b9
commit 0416a0e6d80900b952f083ec31f8663ecab738b9
Author:     Patrick Gansterer <paroga at paroga.com>
AuthorDate: Sun Aug 4 20:15:35 2013 +0200
Commit:     Brad King <brad.king at kitware.com>
CommitDate: Wed Aug 7 10:28:30 2013 -0400

    VS11: Add support for Windows CE SDKs
    
    Allow additional generator platforms for the installed WinCE SDKs.

diff --git a/Source/cmGlobalVisualStudio11Generator.cxx b/Source/cmGlobalVisualStudio11Generator.cxx
index a014654..8ae7331 100644
--- a/Source/cmGlobalVisualStudio11Generator.cxx
+++ b/Source/cmGlobalVisualStudio11Generator.cxx
@@ -13,31 +13,56 @@
 #include "cmLocalVisualStudio10Generator.h"
 #include "cmMakefile.h"
 
-static const char vs11Win32generatorName[] = "Visual Studio 11";
-static const char vs11Win64generatorName[] = "Visual Studio 11 Win64";
-static const char vs11ARMgeneratorName[] = "Visual Studio 11 ARM";
+static const char vs11generatorName[] = "Visual Studio 11";
 
 class cmGlobalVisualStudio11Generator::Factory
   : public cmGlobalGeneratorFactory
 {
 public:
   virtual cmGlobalGenerator* CreateGlobalGenerator(const char* name) const {
-    if(!strcmp(name, vs11Win32generatorName))
+    if(strstr(name, vs11generatorName) != name)
+      {
+      return 0;
+      }
+
+    const char* p = name + sizeof(vs11generatorName) - 1;
+    if(p[0] == '\0')
       {
       return new cmGlobalVisualStudio11Generator(
         name, NULL, NULL);
       }
-    if(!strcmp(name, vs11Win64generatorName))
+
+    if(p[0] != ' ')
       {
-      return new cmGlobalVisualStudio11Generator(
-        name, "x64", "CMAKE_FORCE_WIN64");
+      return 0;
       }
-    if(!strcmp(name, vs11ARMgeneratorName))
+
+    ++p;
+
+    if(!strcmp(p, "ARM"))
       {
       return new cmGlobalVisualStudio11Generator(
         name, "ARM", NULL);
       }
-    return 0;
+
+    if(!strcmp(p, "Win64"))
+      {
+      return new cmGlobalVisualStudio11Generator(
+        name, "x64", "CMAKE_FORCE_WIN64");
+      }
+
+    std::set<std::string> installedSDKs =
+      cmGlobalVisualStudio11Generator::GetInstalledWindowsCESDKs();
+
+    if(installedSDKs.find(p) == installedSDKs.end())
+      {
+      return 0;
+      }
+
+    cmGlobalVisualStudio11Generator* ret =
+      new cmGlobalVisualStudio11Generator(name, p, NULL);
+    ret->WindowsCEVersion = "8.00";
+    return ret;
   }
 
   virtual void GetDocumentation(cmDocumentationEntry& entry) const {
@@ -51,9 +76,18 @@ public:
   }
 
   virtual void GetGenerators(std::vector<std::string>& names) const {
-    names.push_back(vs11Win32generatorName);
-    names.push_back(vs11Win64generatorName);
-    names.push_back(vs11ARMgeneratorName); }
+    names.push_back(vs11generatorName);
+    names.push_back(vs11generatorName + std::string(" ARM"));
+    names.push_back(vs11generatorName + std::string(" Win64"));
+
+    std::set<std::string> installedSDKs =
+      cmGlobalVisualStudio11Generator::GetInstalledWindowsCESDKs();
+    for(std::set<std::string>::const_iterator i =
+        installedSDKs.begin(); i != installedSDKs.end(); ++i)
+      {
+      names.push_back("Visual Studio 11 " + *i);
+      }
+  }
 };
 
 //----------------------------------------------------------------------------
@@ -109,3 +143,36 @@ bool cmGlobalVisualStudio11Generator::UseFolderProperty()
   // Express editions in VS10 and earlier, but they are in VS11 Express.
   return cmGlobalVisualStudio8Generator::UseFolderProperty();
 }
+
+//----------------------------------------------------------------------------
+std::set<std::string>
+cmGlobalVisualStudio11Generator::GetInstalledWindowsCESDKs()
+{
+  const char sdksKey[] = "HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\"
+                         "Windows CE Tools\\SDKs";
+
+  std::vector<std::string> subkeys;
+  cmSystemTools::GetRegistrySubKeys(sdksKey, subkeys,
+                                    cmSystemTools::KeyWOW64_32);
+
+  std::set<std::string> ret;
+  for(std::vector<std::string>::const_iterator i =
+      subkeys.begin(); i != subkeys.end(); ++i)
+    {
+    std::string key = sdksKey;
+    key += '\\';
+    key += *i;
+    key += ';';
+
+    std::string path;
+    if(cmSystemTools::ReadRegistryValue(key.c_str(),
+                                        path,
+                                        cmSystemTools::KeyWOW64_32) &&
+        !path.empty())
+      {
+      ret.insert(*i);
+      }
+    }
+
+  return ret;
+}
diff --git a/Source/cmGlobalVisualStudio11Generator.h b/Source/cmGlobalVisualStudio11Generator.h
index b61366a..7cc7e69 100644
--- a/Source/cmGlobalVisualStudio11Generator.h
+++ b/Source/cmGlobalVisualStudio11Generator.h
@@ -34,7 +34,9 @@ public:
 protected:
   virtual const char* GetIDEVersion() { return "11.0"; }
   bool UseFolderProperty();
+  static std::set<std::string> GetInstalledWindowsCESDKs();
 private:
   class Factory;
+  friend class Factory;
 };
 #endif

-----------------------------------------------------------------------

Summary of changes:


hooks/post-receive
-- 
CMake


More information about the Cmake-commits mailing list