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  eb7dd113fdad7fe38a516f2c325718d320a8d3e2 (commit)
       via  3a1006e41fd7be22c415d1de45364f0c8ff4b697 (commit)
       via  40c36c9f7bd101185b06ddf2aee079ccbe7634d3 (commit)
       via  038df9e49e6fcb54d6f6a1bcfb09f6a0e5ec0c2e (commit)
       via  6fe4fcba787e4e27a4863faa28aa41ae11026d6b (commit)
      from  1026cf2f724b1ad7cc712de53e14ab636318b07d (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=eb7dd113fdad7fe38a516f2c325718d320a8d3e2
commit eb7dd113fdad7fe38a516f2c325718d320a8d3e2
Merge: 1026cf2 3a1006e
Author:     Brad King <brad.k...@kitware.com>
AuthorDate: Tue Nov 27 08:31:45 2012 -0500
Commit:     CMake Topic Stage <kwro...@kitware.com>
CommitDate: Tue Nov 27 08:31:45 2012 -0500

    Merge topic 'windows-ce' into next
    
    3a1006e VS: Added "Deploy" at project configuration for WindowsCE targets
    40c36c9 VS: Make DetermineCompilerId working with WinCE too
    038df9e VS: Allow setting the name of the target platform
    6fe4fcb VS: Add parser for WCE.VCPlatform.config to read WinCE platforms


http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=3a1006e41fd7be22c415d1de45364f0c8ff4b697
commit 3a1006e41fd7be22c415d1de45364f0c8ff4b697
Author:     Patrick Gansterer <par...@paroga.com>
AuthorDate: Fri Sep 14 12:06:57 2012 +0200
Commit:     Brad King <brad.k...@kitware.com>
CommitDate: Tue Nov 27 08:31:20 2012 -0500

    VS: Added "Deploy" at project configuration for WindowsCE targets

diff --git a/Source/cmGlobalVisualStudio71Generator.cxx 
b/Source/cmGlobalVisualStudio71Generator.cxx
index db584b8..2494f55 100644
--- a/Source/cmGlobalVisualStudio71Generator.cxx
+++ b/Source/cmGlobalVisualStudio71Generator.cxx
@@ -277,7 +277,7 @@ void cmGlobalVisualStudio71Generator
 // executables to the libraries it uses are also done here
 void cmGlobalVisualStudio71Generator
 ::WriteProjectConfigurations(
-  std::ostream& fout, const char* name,
+  std::ostream& fout, const char* name, cmTarget::TargetType,
   const std::set<std::string>& configsPartOfDefaultBuild,
   const char* platformMapping)
 {
diff --git a/Source/cmGlobalVisualStudio71Generator.h 
b/Source/cmGlobalVisualStudio71Generator.h
index e9cab06..6d91f97 100644
--- a/Source/cmGlobalVisualStudio71Generator.h
+++ b/Source/cmGlobalVisualStudio71Generator.h
@@ -63,7 +63,7 @@ protected:
   virtual void WriteProjectDepends(std::ostream& fout,
                            const char* name, const char* path, cmTarget &t);
   virtual void WriteProjectConfigurations(
-    std::ostream& fout, const char* name,
+    std::ostream& fout, const char* name, cmTarget::TargetType type,
     const std::set<std::string>& configsPartOfDefaultBuild,
     const char* platformMapping = NULL);
   virtual void WriteExternalProject(std::ostream& fout,
diff --git a/Source/cmGlobalVisualStudio7Generator.cxx 
b/Source/cmGlobalVisualStudio7Generator.cxx
index b82a4f4..71d79a1 100644
--- a/Source/cmGlobalVisualStudio7Generator.cxx
+++ b/Source/cmGlobalVisualStudio7Generator.cxx
@@ -247,7 +247,7 @@ void 
cmGlobalVisualStudio7Generator::WriteTargetConfigurations(
       std::set<std::string> allConfigurations(this->Configurations.begin(),
                                               this->Configurations.end());
       this->WriteProjectConfigurations(
-        fout, target->GetName(),
+        fout, target->GetName(), target->GetType(),
         allConfigurations, target->GetProperty("VS_PLATFORM_MAPPING"));
       }
     else
@@ -259,7 +259,7 @@ void 
cmGlobalVisualStudio7Generator::WriteTargetConfigurations(
         target->GetProperty("GENERATOR_FILE_NAME");
       if (vcprojName)
         {
-        this->WriteProjectConfigurations(fout, vcprojName,
+        this->WriteProjectConfigurations(fout, vcprojName, target->GetType(),
                                          configsPartOfDefaultBuild);
         }
       }
@@ -587,7 +587,7 @@ cmGlobalVisualStudio7Generator
 // executables to the libraries it uses are also done here
 void cmGlobalVisualStudio7Generator
 ::WriteProjectConfigurations(
-  std::ostream& fout, const char* name,
+  std::ostream& fout, const char* name, cmTarget::TargetType,
   const std::set<std::string>& configsPartOfDefaultBuild,
   const char* platformMapping)
 {
diff --git a/Source/cmGlobalVisualStudio7Generator.h 
b/Source/cmGlobalVisualStudio7Generator.h
index 9eb9687..6e78620 100644
--- a/Source/cmGlobalVisualStudio7Generator.h
+++ b/Source/cmGlobalVisualStudio7Generator.h
@@ -108,7 +108,7 @@ protected:
   virtual void WriteProjectDepends(std::ostream& fout,
                            const char* name, const char* path, cmTarget &t);
   virtual void WriteProjectConfigurations(
-    std::ostream& fout, const char* name,
+    std::ostream& fout, const char* name, cmTarget::TargetType type,
     const std::set<std::string>& configsPartOfDefaultBuild,
     const char* platformMapping = NULL);
   virtual void WriteSLNGlobalSections(std::ostream& fout,
diff --git a/Source/cmGlobalVisualStudio8Generator.cxx 
b/Source/cmGlobalVisualStudio8Generator.cxx
index 21c82b7..864e8db 100644
--- a/Source/cmGlobalVisualStudio8Generator.cxx
+++ b/Source/cmGlobalVisualStudio8Generator.cxx
@@ -374,7 +374,7 @@ cmGlobalVisualStudio8Generator
 void
 cmGlobalVisualStudio8Generator
 ::WriteProjectConfigurations(
-  std::ostream& fout, const char* name,
+  std::ostream& fout, const char* name, cmTarget::TargetType type,
   const std::set<std::string>& configsPartOfDefaultBuild,
   const char* platformMapping)
 {
@@ -395,6 +395,15 @@ cmGlobalVisualStudio8Generator
            << (platformMapping ? platformMapping : this->GetPlatformName())
            << "\n";
       }
+    bool needsDeploy = (type == cmTarget::EXECUTABLE ||
+                        type == cmTarget::SHARED_LIBRARY);
+    if(this->TargetsWindowsCE() && needsDeploy)
+      {
+      fout << "\t\t{" << guid << "}." << *i
+           << "|" << this->GetPlatformName() << ".Deploy.0 = " << *i << "|"
+           << (platformMapping ? platformMapping : this->GetPlatformName())
+           << "\n";
+      }
     }
 }
 
diff --git a/Source/cmGlobalVisualStudio8Generator.h 
b/Source/cmGlobalVisualStudio8Generator.h
index 4dd2b4b..bcbd7a0 100644
--- a/Source/cmGlobalVisualStudio8Generator.h
+++ b/Source/cmGlobalVisualStudio8Generator.h
@@ -79,7 +79,7 @@ protected:
   virtual void WriteSLNHeader(std::ostream& fout);
   virtual void WriteSolutionConfigurations(std::ostream& fout);
   virtual void WriteProjectConfigurations(
-    std::ostream& fout, const char* name,
+    std::ostream& fout, const char* name, cmTarget::TargetType type,
     const std::set<std::string>& configsPartOfDefaultBuild,
     const char* platformMapping = NULL);
   virtual bool ComputeTargetDepends();

http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=40c36c9f7bd101185b06ddf2aee079ccbe7634d3
commit 40c36c9f7bd101185b06ddf2aee079ccbe7634d3
Author:     Patrick Gansterer <par...@paroga.com>
AuthorDate: Tue Nov 20 13:37:50 2012 +0100
Commit:     Brad King <brad.k...@kitware.com>
CommitDate: Tue Nov 27 08:31:19 2012 -0500

    VS: Make DetermineCompilerId working with WinCE too
    
    Add a dummy mainCRTStartup() function, since the linker searches for
    it instead of main() and set the CMAKE_SYSTEM_* variables depending
    on the MSVC_C_ARCHITECTURE_ID and CMAKE_VS_WINCE_VERSION variables.

diff --git a/Modules/CMakeCCompilerId.c.in b/Modules/CMakeCCompilerId.c.in
index 2d76c7a..3d1380c 100644
--- a/Modules/CMakeCCompilerId.c.in
+++ b/Modules/CMakeCCompilerId.c.in
@@ -228,3 +228,7 @@ int main(int argc, char* argv[])
   return require;
 }
 #endif
+
+#ifdef ADD_MAINCRTSTARTUP
+void mainCRTStartup() {}
+#endif
diff --git a/Modules/CMakeCXXCompilerId.cpp.in 
b/Modules/CMakeCXXCompilerId.cpp.in
index 5e70a41..142a5c5 100644
--- a/Modules/CMakeCXXCompilerId.cpp.in
+++ b/Modules/CMakeCXXCompilerId.cpp.in
@@ -210,3 +210,7 @@ int main(int argc, char* argv[])
   (void)argv;
   return require;
 }
+
+#ifdef ADD_MAINCRTSTARTUP
+extern "C" void mainCRTStartup() {}
+#endif
diff --git a/Modules/CMakeDetermineCompilerId.cmake 
b/Modules/CMakeDetermineCompilerId.cmake
index 05430a6..43469ea 100644
--- a/Modules/CMakeDetermineCompilerId.cmake
+++ b/Modules/CMakeDetermineCompilerId.cmake
@@ -140,6 +140,9 @@ Id flags: ${testflags}
     else()
       set(id_toolset "")
     endif()
+    if(CMAKE_VS_WINCE_VERSION)
+      set(id_definitions "ADD_MAINCRTSTARTUP")
+    endif()
     if("${CMAKE_MAKE_PROGRAM}" MATCHES "[Mm][Ss][Bb][Uu][Ii][Ll][Dd]")
       set(build /p:Configuration=Debug /p:Platform=@id_arch@ 
/p:VisualStudioVersion=${vs_version}.0)
     elseif("${CMAKE_MAKE_PROGRAM}" MATCHES "[Mm][Ss][Dd][Ee][Vv]")
diff --git a/Modules/CMakeDetermineSystem.cmake 
b/Modules/CMakeDetermineSystem.cmake
index cd33447..c7f9c32 100644
--- a/Modules/CMakeDetermineSystem.cmake
+++ b/Modules/CMakeDetermineSystem.cmake
@@ -106,6 +106,12 @@ if(CMAKE_SYSTEM_NAME)
     set(CMAKE_CROSSCOMPILING TRUE)
   endif()
   set(PRESET_CMAKE_SYSTEM_NAME TRUE)
+elseif(CMAKE_VS_WINCE_VERSION)
+  set(CMAKE_SYSTEM_NAME      "WindowsCE")
+  set(CMAKE_SYSTEM_VERSION   "${CMAKE_VS_WINCE_VERSION}")
+  set(CMAKE_SYSTEM_PROCESSOR "${MSVC_C_ARCHITECTURE_ID}")
+  set(CMAKE_CROSSCOMPILING TRUE)
+  set(PRESET_CMAKE_SYSTEM_NAME TRUE)
 else()
   set(CMAKE_SYSTEM_NAME      "${CMAKE_HOST_SYSTEM_NAME}")
   set(CMAKE_SYSTEM_VERSION   "${CMAKE_HOST_SYSTEM_VERSION}")
diff --git a/Modules/CompilerId/VS-7.vcproj.in 
b/Modules/CompilerId/VS-7.vcproj.in
index bcb18a5..b1449e4 100644
--- a/Modules/CompilerId/VS-7.vcproj.in
+++ b/Modules/CompilerId/VS-7.vcproj.in
@@ -24,7 +24,7 @@
                        <Tool
                                Name="VCCLCompilerTool"
                                Optimization="0"
-                               PreprocessorDefinitions=""
+                               PreprocessorDefinitions="@id_definitions@"
                                MinimalRebuild="false"
                                BasicRuntimeChecks="3"
                                RuntimeLibrary="3"
diff --git a/Source/cmGlobalVisualStudio8Generator.cxx 
b/Source/cmGlobalVisualStudio8Generator.cxx
index a482d46..21c82b7 100644
--- a/Source/cmGlobalVisualStudio8Generator.cxx
+++ b/Source/cmGlobalVisualStudio8Generator.cxx
@@ -143,6 +143,12 @@ void 
cmGlobalVisualStudio8Generator::AddPlatformDefinitions(cmMakefile* mf)
 {
   cmGlobalVisualStudio71Generator::AddPlatformDefinitions(mf);
   mf->AddDefinition("CMAKE_VS_PLATFORM_NAME", this->GetPlatformName());
+
+  if(this->TargetsWindowsCE())
+  {
+    mf->AddDefinition("CMAKE_VS_WINCE_VERSION",
+      this->WindowsCEVersion.c_str());
+  }
 }
 
 //----------------------------------------------------------------------------

http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=038df9e49e6fcb54d6f6a1bcfb09f6a0e5ec0c2e
commit 038df9e49e6fcb54d6f6a1bcfb09f6a0e5ec0c2e
Author:     Patrick Gansterer <par...@paroga.com>
AuthorDate: Tue Nov 20 13:16:36 2012 +0100
Commit:     Brad King <brad.k...@kitware.com>
CommitDate: Tue Nov 27 08:31:18 2012 -0500

    VS: Allow setting the name of the target platform
    
    Since the name for a target platform is independent of its cpu
    architecture an additional option is required to set it correctly.

diff --git a/Source/cmGlobalVisualStudio8Generator.cxx 
b/Source/cmGlobalVisualStudio8Generator.cxx
index 39b31a0..a482d46 100644
--- a/Source/cmGlobalVisualStudio8Generator.cxx
+++ b/Source/cmGlobalVisualStudio8Generator.cxx
@@ -58,6 +58,7 @@ public:
 
     cmGlobalVisualStudio8Generator* ret = new cmGlobalVisualStudio8Generator(
       name, parser.GetArchitectureFamily(), NULL);
+    ret->PlatformName = p;
     ret->WindowsCEVersion = parser.GetOSVersion();
     return ret;
   }
@@ -114,6 +115,10 @@ 
cmGlobalVisualStudio8Generator::cmGlobalVisualStudio8Generator(
 //----------------------------------------------------------------------------
 const char* cmGlobalVisualStudio8Generator::GetPlatformName() const
 {
+  if (!this->PlatformName.empty())
+    {
+    return this->PlatformName.c_str();
+    }
   if (this->ArchitectureId == "X86")
     {
     return "Win32";
diff --git a/Source/cmGlobalVisualStudio8Generator.h 
b/Source/cmGlobalVisualStudio8Generator.h
index 08674cd..4dd2b4b 100644
--- a/Source/cmGlobalVisualStudio8Generator.h
+++ b/Source/cmGlobalVisualStudio8Generator.h
@@ -87,6 +87,7 @@ protected:
                                    const char* path, cmTarget &t);
 
   std::string Name;
+  std::string PlatformName;
   std::string WindowsCEVersion;
 
 private:
diff --git a/Source/cmGlobalVisualStudio9Generator.cxx 
b/Source/cmGlobalVisualStudio9Generator.cxx
index dbe093e..2082384 100644
--- a/Source/cmGlobalVisualStudio9Generator.cxx
+++ b/Source/cmGlobalVisualStudio9Generator.cxx
@@ -63,6 +63,7 @@ public:
 
     cmGlobalVisualStudio9Generator* ret = new cmGlobalVisualStudio9Generator(
       name, parser.GetArchitectureFamily(), NULL);
+    ret->PlatformName = p;
     ret->WindowsCEVersion = parser.GetOSVersion();
     return ret;
   }

http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=6fe4fcba787e4e27a4863faa28aa41ae11026d6b
commit 6fe4fcba787e4e27a4863faa28aa41ae11026d6b
Author:     Patrick Gansterer <par...@paroga.com>
AuthorDate: Tue Nov 20 13:12:27 2012 +0100
Commit:     Brad King <brad.k...@kitware.com>
CommitDate: Tue Nov 27 08:31:17 2012 -0500

    VS: Add parser for WCE.VCPlatform.config to read WinCE platforms
    
    Parse the WCE.VCPlatform.config file, which contains the installed
    WindowsCE SDKs in XML format, and add possibility to generate
    Visual Studio generators for them.

diff --git a/Source/CMakeLists.txt b/Source/CMakeLists.txt
index fa174bc..4de20c9 100644
--- a/Source/CMakeLists.txt
+++ b/Source/CMakeLists.txt
@@ -353,6 +353,8 @@ if (WIN32)
       cmLocalVisualStudio7Generator.h
       cmLocalVisualStudioGenerator.cxx
       cmLocalVisualStudioGenerator.h
+      cmVisualStudioWCEPlatformParser.h
+      cmVisualStudioWCEPlatformParser.cxx
       cmWin32ProcessExecution.cxx
       cmWin32ProcessExecution.h
       )
diff --git a/Source/cmGlobalVisualStudio8Generator.cxx 
b/Source/cmGlobalVisualStudio8Generator.cxx
index be1bedc..39b31a0 100644
--- a/Source/cmGlobalVisualStudio8Generator.cxx
+++ b/Source/cmGlobalVisualStudio8Generator.cxx
@@ -13,32 +13,57 @@
 #include "cmGlobalVisualStudio8Generator.h"
 #include "cmLocalVisualStudio7Generator.h"
 #include "cmMakefile.h"
+#include "cmVisualStudioWCEPlatformParser.h"
 #include "cmake.h"
 #include "cmGeneratedFileStream.h"
 
-static const char vs8Win32generatorName[] = "Visual Studio 8 2005";
-static const char vs8Win64generatorName[] = "Visual Studio 8 2005 Win64";
+static const char vs8generatorName[] = "Visual Studio 8 2005";
 
 class cmGlobalVisualStudio8Generator::Factory
   : public cmGlobalGeneratorFactory
 {
 public:
   virtual cmGlobalGenerator* CreateGlobalGenerator(const char* name) const {
-    if(!strcmp(name, vs8Win32generatorName))
+    if(strstr(name, vs8generatorName) != name)
+      {
+      return 0;
+      }
+
+    const char* p = name + sizeof(vs8generatorName) - 1;
+    if(p[0] == '\0')
       {
       return new cmGlobalVisualStudio8Generator(
-        vs8Win32generatorName, NULL, NULL);
+        name, NULL, NULL);
+      }
+
+    if(p[0] != ' ')
+      {
+      return 0;
       }
-    if(!strcmp(name, vs8Win64generatorName))
+
+    ++p;
+
+    if(!strcmp(p, "Win64"))
       {
       return new cmGlobalVisualStudio8Generator(
-        vs8Win64generatorName, "x64", "CMAKE_FORCE_WIN64");
+        name, "x64", "CMAKE_FORCE_WIN64");
       }
-    return 0;
+
+    cmVisualStudioWCEPlatformParser parser(p);
+    parser.ParseVersion("8.0");
+    if (!parser.Found())
+      {
+      return 0;
+      }
+
+    cmGlobalVisualStudio8Generator* ret = new cmGlobalVisualStudio8Generator(
+      name, parser.GetArchitectureFamily(), NULL);
+    ret->WindowsCEVersion = parser.GetOSVersion();
+    return ret;
   }
 
   virtual void GetDocumentation(cmDocumentationEntry& entry) const {
-    entry.Name = "Visual Studio 8 2005";
+    entry.Name = vs8generatorName;
     entry.Brief = "Generates Visual Studio 8 2005 project files.";
     entry.Full =
       "It is possible to append a space followed by the platform name "
@@ -48,8 +73,18 @@ public:
   }
 
   virtual void GetGenerators(std::vector<std::string>& names) const {
-    names.push_back(vs8Win32generatorName);
-    names.push_back(vs8Win64generatorName); }
+    names.push_back(vs8generatorName);
+    names.push_back(vs8generatorName + std::string(" Win64"));
+    cmVisualStudioWCEPlatformParser parser;
+    parser.ParseVersion("8.0");
+    const std::vector<std::string>& availablePlatforms =
+      parser.GetAvailablePlatforms();
+    for(std::vector<std::string>::const_iterator i =
+        availablePlatforms.begin(); i != availablePlatforms.end(); ++i)
+      {
+      names.push_back("Visual Studio 8 2005 " + *i);
+      }
+  }
 };
 
 //----------------------------------------------------------------------------
diff --git a/Source/cmGlobalVisualStudio8Generator.h 
b/Source/cmGlobalVisualStudio8Generator.h
index 8163d6a..08674cd 100644
--- a/Source/cmGlobalVisualStudio8Generator.h
+++ b/Source/cmGlobalVisualStudio8Generator.h
@@ -64,6 +64,10 @@ public:
       LinkLibraryDependencies and link to .sln dependencies. */
   virtual bool NeedLinkLibraryDependencies(cmTarget& target);
 
+  /** Return true if building for Windows CE */
+  virtual bool TargetsWindowsCE() const {
+    return !this->WindowsCEVersion.empty(); }
+
 protected:
   virtual const char* GetIDEVersion() { return "8.0"; }
 
@@ -83,8 +87,10 @@ protected:
                                    const char* path, cmTarget &t);
 
   std::string Name;
+  std::string WindowsCEVersion;
 
 private:
   class Factory;
+  friend class Factory;
 };
 #endif
diff --git a/Source/cmGlobalVisualStudio9Generator.cxx 
b/Source/cmGlobalVisualStudio9Generator.cxx
index 87599ef..dbe093e 100644
--- a/Source/cmGlobalVisualStudio9Generator.cxx
+++ b/Source/cmGlobalVisualStudio9Generator.cxx
@@ -13,37 +13,62 @@
 #include "cmGlobalVisualStudio9Generator.h"
 #include "cmLocalVisualStudio7Generator.h"
 #include "cmMakefile.h"
+#include "cmVisualStudioWCEPlatformParser.h"
 #include "cmake.h"
 
-static const char vs9Win32generatorName[] = "Visual Studio 9 2008";
-static const char vs9Win64generatorName[] = "Visual Studio 8 2005 Win64";
-static const char vs9IA64generatorName[] = "Visual Studio 9 2008 IA64";
+static const char vs9generatorName[] = "Visual Studio 9 2008";
 
 class cmGlobalVisualStudio9Generator::Factory
   : public cmGlobalGeneratorFactory
 {
 public:
   virtual cmGlobalGenerator* CreateGlobalGenerator(const char* name) const {
-    if(!strcmp(name, vs9Win32generatorName))
+    if(strstr(name, vs9generatorName) != name)
+      {
+      return 0;
+      }
+
+    const char* p = name + sizeof(vs9generatorName) - 1;
+    if(p[0] == '\0')
       {
       return new cmGlobalVisualStudio9Generator(
-        vs9Win32generatorName, NULL, NULL);
+        name, NULL, NULL);
+      }
+
+    if(p[0] != ' ')
+      {
+      return 0;
       }
-    if(!strcmp(name, vs9Win64generatorName))
+
+    ++p;
+
+    if(!strcmp(p, "IA64"))
       {
       return new cmGlobalVisualStudio9Generator(
-        vs9Win64generatorName, "x64", "CMAKE_FORCE_WIN64");
+        name, "Itanium", "CMAKE_FORCE_IA64");
       }
-    if(!strcmp(name, vs9IA64generatorName))
+
+    if(!strcmp(p, "Win64"))
       {
       return new cmGlobalVisualStudio9Generator(
-        vs9IA64generatorName, "Itanium", "CMAKE_FORCE_IA64");
+        name, "x64", "CMAKE_FORCE_WIN64");
+      }
+
+    cmVisualStudioWCEPlatformParser parser(p);
+    parser.ParseVersion("9.0");
+    if (!parser.Found())
+      {
+      return 0;
       }
-    return 0;
+
+    cmGlobalVisualStudio9Generator* ret = new cmGlobalVisualStudio9Generator(
+      name, parser.GetArchitectureFamily(), NULL);
+    ret->WindowsCEVersion = parser.GetOSVersion();
+    return ret;
   }
 
   virtual void GetDocumentation(cmDocumentationEntry& entry) const {
-    entry.Name = "Visual Studio 9 2008";
+    entry.Name = vs9generatorName;
     entry.Brief = "Generates Visual Studio 9 2008 project files.";
     entry.Full =
       "It is possible to append a space followed by the platform name "
@@ -53,9 +78,19 @@ public:
   }
 
   virtual void GetGenerators(std::vector<std::string>& names) const {
-    names.push_back(vs9Win32generatorName);
-    names.push_back(vs9Win64generatorName);
-    names.push_back(vs9IA64generatorName); }
+    names.push_back(vs9generatorName);
+    names.push_back(vs9generatorName + std::string(" Win64"));
+    names.push_back(vs9generatorName + std::string(" IA64"));
+    cmVisualStudioWCEPlatformParser parser;
+    parser.ParseVersion("9.0");
+    const std::vector<std::string>& availablePlatforms =
+      parser.GetAvailablePlatforms();
+    for(std::vector<std::string>::const_iterator i =
+        availablePlatforms.begin(); i != availablePlatforms.end(); ++i)
+      {
+      names.push_back("Visual Studio 9 2008 " + *i);
+      }
+  }
 };
 
 //----------------------------------------------------------------------------
diff --git a/Source/cmGlobalVisualStudio9Generator.h 
b/Source/cmGlobalVisualStudio9Generator.h
index f05d377..1310a93 100644
--- a/Source/cmGlobalVisualStudio9Generator.h
+++ b/Source/cmGlobalVisualStudio9Generator.h
@@ -55,5 +55,6 @@ protected:
   virtual const char* GetIDEVersion() { return "9.0"; }
 private:
   class Factory;
+  friend class Factory;
 };
 #endif
diff --git a/Source/cmVisualStudioWCEPlatformParser.cxx 
b/Source/cmVisualStudioWCEPlatformParser.cxx
new file mode 100644
index 0000000..0afcf67
--- /dev/null
+++ b/Source/cmVisualStudioWCEPlatformParser.cxx
@@ -0,0 +1,139 @@
+/*============================================================================
+  CMake - Cross Platform Makefile Generator
+  Copyright 2000-2012 Kitware, Inc., Insight Software Consortium
+
+  Distributed under the OSI-approved BSD License (the "License");
+  see accompanying file Copyright.txt for details.
+
+  This software is distributed WITHOUT ANY WARRANTY; without even the
+  implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+  See the License for more information.
+============================================================================*/
+#include "cmVisualStudioWCEPlatformParser.h"
+#include "cmGlobalVisualStudioGenerator.h"
+#include "cmXMLParser.h"
+
+int cmVisualStudioWCEPlatformParser::ParseVersion(const char* version)
+{
+  std::string vskey = cmGlobalVisualStudioGenerator::GetRegistryBase(version);
+  vskey += "\\Setup\\VS;ProductDir";
+
+  std::string vsInstallPath;
+  if(!cmSystemTools::ReadRegistryValue(vskey.c_str(), vsInstallPath))
+    {
+    return 0;
+    }
+  cmSystemTools::ConvertToUnixSlashes(vsInstallPath);
+
+  const std::string configFilename =
+    vsInstallPath + "/VC/vcpackages/WCE.VCPlatform.config";
+
+  return this->ParseFile(configFilename.c_str());
+}
+
+std::string cmVisualStudioWCEPlatformParser::GetOSVersion() const
+{
+  if (this->OSMinorVersion.empty())
+    {
+    return OSMajorVersion;
+    }
+
+  return OSMajorVersion + "." + OSMinorVersion;
+}
+
+const char* cmVisualStudioWCEPlatformParser::GetArchitectureFamily() const
+{
+  std::map<std::string, std::string>::const_iterator it =
+    this->Macros.find("ARCHFAM");
+  if (it != this->Macros.end())
+    {
+    return it->second.c_str();
+    }
+
+  return 0;
+}
+
+void cmVisualStudioWCEPlatformParser::StartElement(const char* name,
+                                                   const char** attributes)
+{
+  if(this->FoundRequiredName)
+    {
+    return;
+    }
+
+  this->CharacterData = "";
+
+  if(strcmp(name, "PlatformData") == 0)
+    {
+    this->PlatformName = "";
+    this->OSMajorVersion = "";
+    this->OSMinorVersion = "";
+    this->Macros.clear();
+    }
+
+  if(strcmp(name, "Macro") == 0)
+    {
+    std::string macroName;
+    std::string macroValue;
+
+    for(const char** attr = attributes; *attr; attr += 2)
+      {
+      if(strcmp(attr[0], "Name") == 0)
+        {
+        macroName = attr[1];
+        }
+      else if(strcmp(attr[0], "Value") == 0)
+        {
+        macroValue = attr[1];
+        }
+      }
+
+    if(!macroName.empty())
+      {
+      this->Macros[macroName] = macroValue;
+      }
+    }
+}
+
+void cmVisualStudioWCEPlatformParser::EndElement(const char* name)
+{
+  if(!this->RequiredName)
+    {
+    if(strcmp(name, "PlatformName") == 0)
+      {
+      this->AvailablePlatforms.push_back(this->CharacterData);
+      }
+    return;
+    }
+
+  if(this->FoundRequiredName)
+    {
+    return;
+    }
+
+  if(strcmp(name, "PlatformName") == 0)
+    {
+    this->PlatformName = this->CharacterData;
+    }
+  else if(strcmp(name, "OSMajorVersion") == 0)
+    {
+    this->OSMajorVersion = this->CharacterData;
+    }
+  else if(strcmp(name, "OSMinorVersion") == 0)
+   {
+   this->OSMinorVersion = this->CharacterData;
+   }
+  else if(strcmp(name, "Platform") == 0)
+    {
+    if(this->PlatformName == this->RequiredName)
+      {
+      this->FoundRequiredName = true;
+      }
+    }
+}
+
+void cmVisualStudioWCEPlatformParser::CharacterDataHandler(const char* data,
+                                                           int length)
+{
+  this->CharacterData.append(data, length);
+}
diff --git a/Source/cmVisualStudioWCEPlatformParser.h 
b/Source/cmVisualStudioWCEPlatformParser.h
new file mode 100644
index 0000000..28061fd
--- /dev/null
+++ b/Source/cmVisualStudioWCEPlatformParser.h
@@ -0,0 +1,55 @@
+/*============================================================================
+  CMake - Cross Platform Makefile Generator
+  Copyright 2000-2012 Kitware, Inc., Insight Software Consortium
+
+  Distributed under the OSI-approved BSD License (the "License");
+  see accompanying file Copyright.txt for details.
+
+  This software is distributed WITHOUT ANY WARRANTY; without even the
+  implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+  See the License for more information.
+============================================================================*/
+#ifndef cmVisualStudioWCEPlatformParser_h
+#define cmVisualStudioWCEPlatformParser_h
+#include "cmStandardIncludes.h"
+
+#include "cmXMLParser.h"
+
+// This class is used to parse XML with configuration
+// of installed SDKs in system
+class cmVisualStudioWCEPlatformParser : public cmXMLParser
+{
+public:
+  cmVisualStudioWCEPlatformParser(const char* name = NULL)
+      : RequiredName(name)
+      , FoundRequiredName(false)
+    {
+    }
+
+  int ParseVersion(const char* version);
+
+  bool Found() const {return this->FoundRequiredName;}
+  const char* GetArchitectureFamily() const;
+  std::string GetOSVersion() const;
+  const std::vector<std::string>& GetAvailablePlatforms() const {
+    return this->AvailablePlatforms; }
+
+protected:
+  virtual void StartElement(const char* name, const char** attributes);
+  void EndElement(const char* name);
+  void CharacterDataHandler(const char* data, int length);
+
+private:
+  std::string CharacterData;
+
+  std::string PlatformName;
+  std::string OSMajorVersion;
+  std::string OSMinorVersion;
+  std::map<std::string, std::string> Macros;
+  std::vector<std::string> AvailablePlatforms;
+
+  const char* RequiredName;
+  bool FoundRequiredName;
+};
+
+#endif

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

Summary of changes:


hooks/post-receive
-- 
CMake
_______________________________________________
Cmake-commits mailing list
Cmake-commits@cmake.org
http://public.kitware.com/cgi-bin/mailman/listinfo/cmake-commits

Reply via email to