cmVisualStudio10ToolsetOptions.cxx 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162
  1. /* Distributed under the OSI-approved BSD 3-Clause License. See accompanying
  2. file Copyright.txt or https://cmake.org/licensing for details. */
  3. #include "cmVisualStudio10ToolsetOptions.h"
  4. #include "cmAlgorithms.h"
  5. #include "cmIDEFlagTable.h"
  6. #include "cmVisualStudioGeneratorOptions.h"
  7. #include "cmVS10CLFlagTable.h"
  8. #include "cmVS10CSharpFlagTable.h"
  9. #include "cmVS10LibFlagTable.h"
  10. #include "cmVS10LinkFlagTable.h"
  11. #include "cmVS10MASMFlagTable.h"
  12. #include "cmVS10RCFlagTable.h"
  13. #include "cmVS11CLFlagTable.h"
  14. #include "cmVS11CSharpFlagTable.h"
  15. #include "cmVS11LibFlagTable.h"
  16. #include "cmVS11LinkFlagTable.h"
  17. #include "cmVS11MASMFlagTable.h"
  18. #include "cmVS11RCFlagTable.h"
  19. #include "cmVS12CLFlagTable.h"
  20. #include "cmVS12CSharpFlagTable.h"
  21. #include "cmVS12LibFlagTable.h"
  22. #include "cmVS12LinkFlagTable.h"
  23. #include "cmVS12MASMFlagTable.h"
  24. #include "cmVS12RCFlagTable.h"
  25. #include "cmVS140CLFlagTable.h"
  26. #include "cmVS140CSharpFlagTable.h"
  27. #include "cmVS140LinkFlagTable.h"
  28. #include "cmVS141CLFlagTable.h"
  29. #include "cmVS141CSharpFlagTable.h"
  30. #include "cmVS141LinkFlagTable.h"
  31. #include "cmVS14LibFlagTable.h"
  32. #include "cmVS14MASMFlagTable.h"
  33. #include "cmVS14RCFlagTable.h"
  34. cmIDEFlagTable const* cmVisualStudio10ToolsetOptions::GetClFlagTable(
  35. std::string const& name, std::string const& toolset) const
  36. {
  37. std::string const useToolset = this->GetToolsetName(name, toolset);
  38. if (toolset == "v141") {
  39. return cmVS141CLFlagTable;
  40. } else if (useToolset == "v140") {
  41. return cmVS140CLFlagTable;
  42. } else if (useToolset == "v120") {
  43. return cmVS12CLFlagTable;
  44. } else if (useToolset == "v110") {
  45. return cmVS11CLFlagTable;
  46. } else if (useToolset == "v100") {
  47. return cmVS10CLFlagTable;
  48. } else {
  49. return 0;
  50. }
  51. }
  52. cmIDEFlagTable const* cmVisualStudio10ToolsetOptions::GetCSharpFlagTable(
  53. std::string const& name, std::string const& toolset) const
  54. {
  55. std::string const useToolset = this->GetToolsetName(name, toolset);
  56. if ((useToolset == "v141")) {
  57. return cmVS141CSharpFlagTable;
  58. } else if (useToolset == "v140") {
  59. return cmVS140CSharpFlagTable;
  60. } else if (useToolset == "v120") {
  61. return cmVS12CSharpFlagTable;
  62. } else if (useToolset == "v110") {
  63. return cmVS11CSharpFlagTable;
  64. } else if (useToolset == "v100") {
  65. return cmVS10CSharpFlagTable;
  66. } else {
  67. return 0;
  68. }
  69. }
  70. cmIDEFlagTable const* cmVisualStudio10ToolsetOptions::GetRcFlagTable(
  71. std::string const& name, std::string const& toolset) const
  72. {
  73. std::string const useToolset = this->GetToolsetName(name, toolset);
  74. if ((useToolset == "v140") || (useToolset == "v141")) {
  75. return cmVS14RCFlagTable;
  76. } else if (useToolset == "v120") {
  77. return cmVS12RCFlagTable;
  78. } else if (useToolset == "v110") {
  79. return cmVS11RCFlagTable;
  80. } else if (useToolset == "v100") {
  81. return cmVS10RCFlagTable;
  82. } else {
  83. return 0;
  84. }
  85. }
  86. cmIDEFlagTable const* cmVisualStudio10ToolsetOptions::GetLibFlagTable(
  87. std::string const& name, std::string const& toolset) const
  88. {
  89. std::string const useToolset = this->GetToolsetName(name, toolset);
  90. if ((useToolset == "v140") || (useToolset == "v141")) {
  91. return cmVS14LibFlagTable;
  92. } else if (useToolset == "v120") {
  93. return cmVS12LibFlagTable;
  94. } else if (useToolset == "v110") {
  95. return cmVS11LibFlagTable;
  96. } else if (useToolset == "v100") {
  97. return cmVS10LibFlagTable;
  98. } else {
  99. return 0;
  100. }
  101. }
  102. cmIDEFlagTable const* cmVisualStudio10ToolsetOptions::GetLinkFlagTable(
  103. std::string const& name, std::string const& toolset) const
  104. {
  105. std::string const useToolset = this->GetToolsetName(name, toolset);
  106. if (useToolset == "v141") {
  107. return cmVS141LinkFlagTable;
  108. } else if (useToolset == "v140") {
  109. return cmVS140LinkFlagTable;
  110. } else if (useToolset == "v120") {
  111. return cmVS12LinkFlagTable;
  112. } else if (useToolset == "v110") {
  113. return cmVS11LinkFlagTable;
  114. } else if (useToolset == "v100") {
  115. return cmVS10LinkFlagTable;
  116. } else {
  117. return 0;
  118. }
  119. }
  120. cmIDEFlagTable const* cmVisualStudio10ToolsetOptions::GetMasmFlagTable(
  121. std::string const& name, std::string const& toolset) const
  122. {
  123. std::string const useToolset = this->GetToolsetName(name, toolset);
  124. if ((useToolset == "v140") || (useToolset == "v141")) {
  125. return cmVS14MASMFlagTable;
  126. } else if (useToolset == "v120") {
  127. return cmVS12MASMFlagTable;
  128. } else if (useToolset == "v110") {
  129. return cmVS11MASMFlagTable;
  130. } else if (useToolset == "v100") {
  131. return cmVS10MASMFlagTable;
  132. } else {
  133. return 0;
  134. }
  135. }
  136. std::string cmVisualStudio10ToolsetOptions::GetToolsetName(
  137. std::string const& name, std::string const& toolset) const
  138. {
  139. static_cast<void>(name);
  140. std::size_t length = toolset.length();
  141. if (cmHasLiteralSuffix(toolset, "_xp")) {
  142. length -= 3;
  143. }
  144. return toolset.substr(0, length);
  145. }