cmVisualStudio10ToolsetOptions.cxx 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159
  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 "cmVS141CLFlagTable.h"
  28. #include "cmVS141CSharpFlagTable.h"
  29. #include "cmVS14LibFlagTable.h"
  30. #include "cmVS14LinkFlagTable.h"
  31. #include "cmVS14MASMFlagTable.h"
  32. #include "cmVS14RCFlagTable.h"
  33. cmIDEFlagTable const* cmVisualStudio10ToolsetOptions::GetClFlagTable(
  34. std::string const& name, std::string const& toolset) const
  35. {
  36. std::string const useToolset = this->GetToolsetName(name, toolset);
  37. if (toolset == "v141") {
  38. return cmVS141CLFlagTable;
  39. } else if (useToolset == "v140") {
  40. return cmVS140CLFlagTable;
  41. } else if (useToolset == "v120") {
  42. return cmVS12CLFlagTable;
  43. } else if (useToolset == "v110") {
  44. return cmVS11CLFlagTable;
  45. } else if (useToolset == "v100") {
  46. return cmVS10CLFlagTable;
  47. } else {
  48. return 0;
  49. }
  50. }
  51. cmIDEFlagTable const* cmVisualStudio10ToolsetOptions::GetCSharpFlagTable(
  52. std::string const& name, std::string const& toolset) const
  53. {
  54. std::string const useToolset = this->GetToolsetName(name, toolset);
  55. if ((useToolset == "v141")) {
  56. return cmVS141CSharpFlagTable;
  57. } else if (useToolset == "v140") {
  58. return cmVS140CSharpFlagTable;
  59. } else if (useToolset == "v120") {
  60. return cmVS12CSharpFlagTable;
  61. } else if (useToolset == "v110") {
  62. return cmVS11CSharpFlagTable;
  63. } else if (useToolset == "v100") {
  64. return cmVS10CSharpFlagTable;
  65. } else {
  66. return 0;
  67. }
  68. }
  69. cmIDEFlagTable const* cmVisualStudio10ToolsetOptions::GetRcFlagTable(
  70. std::string const& name, std::string const& toolset) const
  71. {
  72. std::string const useToolset = this->GetToolsetName(name, toolset);
  73. if ((useToolset == "v140") || (useToolset == "v141")) {
  74. return cmVS14RCFlagTable;
  75. } else if (useToolset == "v120") {
  76. return cmVS12RCFlagTable;
  77. } else if (useToolset == "v110") {
  78. return cmVS11RCFlagTable;
  79. } else if (useToolset == "v100") {
  80. return cmVS10RCFlagTable;
  81. } else {
  82. return 0;
  83. }
  84. }
  85. cmIDEFlagTable const* cmVisualStudio10ToolsetOptions::GetLibFlagTable(
  86. std::string const& name, std::string const& toolset) const
  87. {
  88. std::string const useToolset = this->GetToolsetName(name, toolset);
  89. if ((useToolset == "v140") || (useToolset == "v141")) {
  90. return cmVS14LibFlagTable;
  91. } else if (useToolset == "v120") {
  92. return cmVS12LibFlagTable;
  93. } else if (useToolset == "v110") {
  94. return cmVS11LibFlagTable;
  95. } else if (useToolset == "v100") {
  96. return cmVS10LibFlagTable;
  97. } else {
  98. return 0;
  99. }
  100. }
  101. cmIDEFlagTable const* cmVisualStudio10ToolsetOptions::GetLinkFlagTable(
  102. std::string const& name, std::string const& toolset) const
  103. {
  104. std::string const useToolset = this->GetToolsetName(name, toolset);
  105. if ((useToolset == "v140") || (useToolset == "v141")) {
  106. return cmVS14LinkFlagTable;
  107. } else if (useToolset == "v120") {
  108. return cmVS12LinkFlagTable;
  109. } else if (useToolset == "v110") {
  110. return cmVS11LinkFlagTable;
  111. } else if (useToolset == "v100") {
  112. return cmVS10LinkFlagTable;
  113. } else {
  114. return 0;
  115. }
  116. }
  117. cmIDEFlagTable const* cmVisualStudio10ToolsetOptions::GetMasmFlagTable(
  118. std::string const& name, std::string const& toolset) const
  119. {
  120. std::string const useToolset = this->GetToolsetName(name, toolset);
  121. if ((useToolset == "v140") || (useToolset == "v141")) {
  122. return cmVS14MASMFlagTable;
  123. } else if (useToolset == "v120") {
  124. return cmVS12MASMFlagTable;
  125. } else if (useToolset == "v110") {
  126. return cmVS11MASMFlagTable;
  127. } else if (useToolset == "v100") {
  128. return cmVS10MASMFlagTable;
  129. } else {
  130. return 0;
  131. }
  132. }
  133. std::string cmVisualStudio10ToolsetOptions::GetToolsetName(
  134. std::string const& name, std::string const& toolset) const
  135. {
  136. static_cast<void>(name);
  137. std::size_t length = toolset.length();
  138. if (cmHasLiteralSuffix(toolset, "_xp")) {
  139. length -= 3;
  140. }
  141. return toolset.substr(0, length);
  142. }