diff options
author | Pascal Bach <pascal.bach@siemens.com> | 2014-09-15 13:46:43 (GMT) |
---|---|---|
committer | Brad King <brad.king@kitware.com> | 2014-09-15 14:37:40 (GMT) |
commit | a3298f7790316322c60b7f2e618fb2ae01819a17 (patch) | |
tree | 82ea9e81af4de89e089d34e88f8a2ce23dec94d4 /Source/cmGlobalVisualStudio10Generator.cxx | |
parent | 0f2defba7d89aced3b667c6afe031abdfd152540 (diff) | |
download | CMake-a3298f7790316322c60b7f2e618fb2ae01819a17.zip CMake-a3298f7790316322c60b7f2e618fb2ae01819a17.tar.gz CMake-a3298f7790316322c60b7f2e618fb2ae01819a17.tar.bz2 |
VS: Teach VS >= 10 generator about Windows CE
When CMAKE_SYSTEM_NAME is 'WindowsCE':
* Set the Subsystem and EntryPointSymbol accordingly.
* When CMAKE_SYSTEM_VERSION is 8.0 (Windows CE 2013),
select the CE800 toolset by default.
Diffstat (limited to 'Source/cmGlobalVisualStudio10Generator.cxx')
-rw-r--r-- | Source/cmGlobalVisualStudio10Generator.cxx | 48 |
1 files changed, 47 insertions, 1 deletions
diff --git a/Source/cmGlobalVisualStudio10Generator.cxx b/Source/cmGlobalVisualStudio10Generator.cxx index e2d4645..e947c54 100644 --- a/Source/cmGlobalVisualStudio10Generator.cxx +++ b/Source/cmGlobalVisualStudio10Generator.cxx @@ -97,6 +97,7 @@ cmGlobalVisualStudio10Generator::cmGlobalVisualStudio10Generator( this->ExpressEdition = cmSystemTools::ReadRegistryValue( "HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\VCExpress\\10.0\\Setup\\VC;" "ProductDir", vc10Express, cmSystemTools::KeyWOW64_32); + this->SystemIsWindowsCE = false; this->SystemIsWindowsPhone = false; this->SystemIsWindowsStore = false; this->MSBuildCommandInitialized = false; @@ -152,6 +153,16 @@ bool cmGlobalVisualStudio10Generator::SetGeneratorToolset(std::string const& ts, cmMakefile* mf) { + if (this->SystemIsWindowsCE && ts.empty() && + this->DefaultPlatformToolset.empty()) + { + cmOStringStream e; + e << this->GetName() << " Windows CE version '" << this->SystemVersion + << "' requires CMAKE_GENERATOR_TOOLSET to be set."; + mf->IssueMessage(cmake::FATAL_ERROR, e.str()); + return false; + } + this->GeneratorToolset = ts; if(const char* toolset = this->GetPlatformToolset()) { @@ -163,7 +174,15 @@ cmGlobalVisualStudio10Generator::SetGeneratorToolset(std::string const& ts, //---------------------------------------------------------------------------- bool cmGlobalVisualStudio10Generator::InitializeSystem(cmMakefile* mf) { - if(this->SystemName == "WindowsPhone") + if (this->SystemName == "WindowsCE") + { + this->SystemIsWindowsCE = true; + if (!this->InitializeWindowsCE(mf)) + { + return false; + } + } + else if(this->SystemName == "WindowsPhone") { this->SystemIsWindowsPhone = true; if(!this->InitializeWindowsPhone(mf)) @@ -183,6 +202,23 @@ bool cmGlobalVisualStudio10Generator::InitializeSystem(cmMakefile* mf) } //---------------------------------------------------------------------------- +bool cmGlobalVisualStudio10Generator::InitializeWindowsCE(cmMakefile* mf) +{ + if (this->DefaultPlatformName != "Win32") + { + cmOStringStream e; + e << "CMAKE_SYSTEM_NAME is 'WindowsCE' but CMAKE_GENERATOR " + << "specifies a platform too: '" << this->GetName() << "'"; + mf->IssueMessage(cmake::FATAL_ERROR, e.str()); + return false; + } + + this->DefaultPlatformToolset = this->SelectWindowsCEToolset(); + + return true; +} + +//---------------------------------------------------------------------------- bool cmGlobalVisualStudio10Generator::InitializeWindowsPhone(cmMakefile* mf) { cmOStringStream e; @@ -201,6 +237,16 @@ bool cmGlobalVisualStudio10Generator::InitializeWindowsStore(cmMakefile* mf) } //---------------------------------------------------------------------------- +std::string cmGlobalVisualStudio10Generator::SelectWindowsCEToolset() const +{ + if (this->SystemVersion == "8.0") + { + return "CE800"; + } + return ""; +} + +//---------------------------------------------------------------------------- void cmGlobalVisualStudio10Generator::WriteSLNHeader(std::ostream& fout) { fout << "Microsoft Visual Studio Solution File, Format Version 11.00\n"; |