[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