diff options
author | Don Olmstead <don.j.olmstead@gmail.com> | 2016-10-18 00:50:34 (GMT) |
---|---|---|
committer | Brad King <brad.king@kitware.com> | 2016-10-25 13:19:49 (GMT) |
commit | e2ed9a70929092ab7b32e036886859e53fbff897 (patch) | |
tree | 8da37a4d6ab2242391b943421a2080f8db02f8e9 /Source/cmVisualStudio10TargetGenerator.cxx | |
parent | 584ab5285b51945e0dd523caf77342985ac97ce4 (diff) | |
download | CMake-e2ed9a70929092ab7b32e036886859e53fbff897.zip CMake-e2ed9a70929092ab7b32e036886859e53fbff897.tar.gz CMake-e2ed9a70929092ab7b32e036886859e53fbff897.tar.bz2 |
VS: Move toolset flag table lookup to global generator
Move `Get*FlagTable` methods to the global generator and have each VS
generator version pre-populate its default flag table.
Diffstat (limited to 'Source/cmVisualStudio10TargetGenerator.cxx')
-rw-r--r-- | Source/cmVisualStudio10TargetGenerator.cxx | 141 |
1 files changed, 18 insertions, 123 deletions
diff --git a/Source/cmVisualStudio10TargetGenerator.cxx b/Source/cmVisualStudio10TargetGenerator.cxx index 9c857f2..22167ca 100644 --- a/Source/cmVisualStudio10TargetGenerator.cxx +++ b/Source/cmVisualStudio10TargetGenerator.cxx @@ -10,27 +10,6 @@ #include "cmLocalVisualStudio7Generator.h" #include "cmMakefile.h" #include "cmSourceFile.h" -#include "cmVS10CLFlagTable.h" -#include "cmVS10LibFlagTable.h" -#include "cmVS10LinkFlagTable.h" -#include "cmVS10MASMFlagTable.h" -#include "cmVS10RCFlagTable.h" -#include "cmVS11CLFlagTable.h" -#include "cmVS11LibFlagTable.h" -#include "cmVS11LinkFlagTable.h" -#include "cmVS11MASMFlagTable.h" -#include "cmVS11RCFlagTable.h" -#include "cmVS12CLFlagTable.h" -#include "cmVS12LibFlagTable.h" -#include "cmVS12LinkFlagTable.h" -#include "cmVS12MASMFlagTable.h" -#include "cmVS12RCFlagTable.h" -#include "cmVS140CLFlagTable.h" -#include "cmVS141CLFlagTable.h" -#include "cmVS14LibFlagTable.h" -#include "cmVS14LinkFlagTable.h" -#include "cmVS14MASMFlagTable.h" -#include "cmVS14RCFlagTable.h" #include "cmVisualStudioGeneratorOptions.h" #include "windows.h" @@ -38,102 +17,6 @@ static std::string const kWINDOWS_7_1_SDK = "Windows7.1SDK"; -cmIDEFlagTable const* cmVisualStudio10TargetGenerator::GetClFlagTable() const -{ - if (this->MSTools) { - cmGlobalVisualStudioGenerator::VSVersion v = - this->LocalGenerator->GetVersion(); - if (v >= cmGlobalVisualStudioGenerator::VS14) { - // FIXME: All flag table selection should be based on the toolset name. - // See issue #16153. For now, treat VS 15's toolset as a special case. - const char* toolset = this->GlobalGenerator->GetPlatformToolset(); - if (toolset && cmHasLiteralPrefix(toolset, "v141")) { - return cmVS141CLFlagTable; - } - return cmVS140CLFlagTable; - } else if (v >= cmGlobalVisualStudioGenerator::VS12) { - return cmVS12CLFlagTable; - } else if (v == cmGlobalVisualStudioGenerator::VS11) { - return cmVS11CLFlagTable; - } else { - return cmVS10CLFlagTable; - } - } - return 0; -} - -cmIDEFlagTable const* cmVisualStudio10TargetGenerator::GetRcFlagTable() const -{ - if (this->MSTools) { - cmGlobalVisualStudioGenerator::VSVersion v = - this->LocalGenerator->GetVersion(); - if (v >= cmGlobalVisualStudioGenerator::VS14) { - return cmVS14RCFlagTable; - } else if (v >= cmGlobalVisualStudioGenerator::VS12) { - return cmVS12RCFlagTable; - } else if (v == cmGlobalVisualStudioGenerator::VS11) { - return cmVS11RCFlagTable; - } else { - return cmVS10RCFlagTable; - } - } - return 0; -} - -cmIDEFlagTable const* cmVisualStudio10TargetGenerator::GetLibFlagTable() const -{ - if (this->MSTools) { - cmGlobalVisualStudioGenerator::VSVersion v = - this->LocalGenerator->GetVersion(); - if (v >= cmGlobalVisualStudioGenerator::VS14) { - return cmVS14LibFlagTable; - } else if (v >= cmGlobalVisualStudioGenerator::VS12) { - return cmVS12LibFlagTable; - } else if (v == cmGlobalVisualStudioGenerator::VS11) { - return cmVS11LibFlagTable; - } else { - return cmVS10LibFlagTable; - } - } - return 0; -} - -cmIDEFlagTable const* cmVisualStudio10TargetGenerator::GetLinkFlagTable() const -{ - if (this->MSTools) { - cmGlobalVisualStudioGenerator::VSVersion v = - this->LocalGenerator->GetVersion(); - if (v >= cmGlobalVisualStudioGenerator::VS14) { - return cmVS14LinkFlagTable; - } else if (v >= cmGlobalVisualStudioGenerator::VS12) { - return cmVS12LinkFlagTable; - } else if (v == cmGlobalVisualStudioGenerator::VS11) { - return cmVS11LinkFlagTable; - } else { - return cmVS10LinkFlagTable; - } - } - return 0; -} - -cmIDEFlagTable const* cmVisualStudio10TargetGenerator::GetMasmFlagTable() const -{ - if (this->MSTools) { - cmGlobalVisualStudioGenerator::VSVersion v = - this->LocalGenerator->GetVersion(); - if (v >= cmGlobalVisualStudioGenerator::VS14) { - return cmVS14MASMFlagTable; - } else if (v >= cmGlobalVisualStudioGenerator::VS12) { - return cmVS12MASMFlagTable; - } else if (v == cmGlobalVisualStudioGenerator::VS11) { - return cmVS11MASMFlagTable; - } else { - return cmVS10MASMFlagTable; - } - } - return 0; -} - static std::string cmVS10EscapeXML(std::string arg) { cmSystemTools::ReplaceString(arg, "&", "&"); @@ -1533,9 +1416,11 @@ bool cmVisualStudio10TargetGenerator::OutputSourceSpecificFlags( (*this->BuildFileStream) << firstString; firstString = ""; // only do firstString once hasFlags = true; + cmGlobalVisualStudio10Generator* gg = + static_cast<cmGlobalVisualStudio10Generator*>(this->GlobalGenerator); cmVisualStudioGeneratorOptions clOptions( this->LocalGenerator, cmVisualStudioGeneratorOptions::Compiler, - this->GetClFlagTable(), 0, this); + gg->GetClFlagTable(), 0, this); if (compileAs) { clOptions.AddFlag("CompileAs", compileAs); } @@ -1696,8 +1581,10 @@ bool cmVisualStudio10TargetGenerator::ComputeClOptions( // copied from cmLocalVisualStudio7Generator.cxx 805 // TODO: Integrate code below with cmLocalVisualStudio7Generator. + cmGlobalVisualStudio10Generator* gg = + static_cast<cmGlobalVisualStudio10Generator*>(this->GlobalGenerator); CM_AUTO_PTR<Options> pOptions(new Options( - this->LocalGenerator, Options::Compiler, this->GetClFlagTable())); + this->LocalGenerator, Options::Compiler, gg->GetClFlagTable())); Options& clOptions = *pOptions; std::string flags; @@ -1861,8 +1748,10 @@ bool cmVisualStudio10TargetGenerator::ComputeRcOptions() bool cmVisualStudio10TargetGenerator::ComputeRcOptions( std::string const& configName) { + cmGlobalVisualStudio10Generator* gg = + static_cast<cmGlobalVisualStudio10Generator*>(this->GlobalGenerator); CM_AUTO_PTR<Options> pOptions(new Options( - this->LocalGenerator, Options::ResourceCompiler, this->GetRcFlagTable())); + this->LocalGenerator, Options::ResourceCompiler, gg->GetRcFlagTable())); Options& rcOptions = *pOptions; std::string CONFIG = cmSystemTools::UpperCase(configName); @@ -1918,8 +1807,10 @@ bool cmVisualStudio10TargetGenerator::ComputeMasmOptions() bool cmVisualStudio10TargetGenerator::ComputeMasmOptions( std::string const& configName) { + cmGlobalVisualStudio10Generator* gg = + static_cast<cmGlobalVisualStudio10Generator*>(this->GlobalGenerator); CM_AUTO_PTR<Options> pOptions(new Options( - this->LocalGenerator, Options::MasmCompiler, this->GetMasmFlagTable())); + this->LocalGenerator, Options::MasmCompiler, gg->GetMasmFlagTable())); Options& masmOptions = *pOptions; std::string CONFIG = cmSystemTools::UpperCase(configName); @@ -1968,9 +1859,11 @@ void cmVisualStudio10TargetGenerator::WriteLibOptions( libflags, cmSystemTools::UpperCase(config), this->GeneratorTarget); if (!libflags.empty()) { this->WriteString("<Lib>\n", 2); + cmGlobalVisualStudio10Generator* gg = + static_cast<cmGlobalVisualStudio10Generator*>(this->GlobalGenerator); cmVisualStudioGeneratorOptions libOptions( this->LocalGenerator, cmVisualStudioGeneratorOptions::Linker, - this->GetLibFlagTable(), 0, this); + gg->GetLibFlagTable(), 0, this); libOptions.Parse(libflags.c_str()); libOptions.OutputAdditionalOptions(*this->BuildFileStream, " ", ""); libOptions.OutputFlagMap(*this->BuildFileStream, " "); @@ -2163,8 +2056,10 @@ bool cmVisualStudio10TargetGenerator::ComputeLinkOptions() bool cmVisualStudio10TargetGenerator::ComputeLinkOptions( std::string const& config) { + cmGlobalVisualStudio10Generator* gg = + static_cast<cmGlobalVisualStudio10Generator*>(this->GlobalGenerator); CM_AUTO_PTR<Options> pOptions(new Options( - this->LocalGenerator, Options::Linker, this->GetLinkFlagTable(), 0, this)); + this->LocalGenerator, Options::Linker, gg->GetLinkFlagTable(), 0, this)); Options& linkOptions = *pOptions; const std::string& linkLanguage = |