cmVisualStudio10ToolsetOptions.cxx 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134
  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 "cmVS10LibFlagTable.h"
  9. #include "cmVS10LinkFlagTable.h"
  10. #include "cmVS10MASMFlagTable.h"
  11. #include "cmVS10RCFlagTable.h"
  12. #include "cmVS11CLFlagTable.h"
  13. #include "cmVS11LibFlagTable.h"
  14. #include "cmVS11LinkFlagTable.h"
  15. #include "cmVS11MASMFlagTable.h"
  16. #include "cmVS11RCFlagTable.h"
  17. #include "cmVS12CLFlagTable.h"
  18. #include "cmVS12LibFlagTable.h"
  19. #include "cmVS12LinkFlagTable.h"
  20. #include "cmVS12MASMFlagTable.h"
  21. #include "cmVS12RCFlagTable.h"
  22. #include "cmVS140CLFlagTable.h"
  23. #include "cmVS141CLFlagTable.h"
  24. #include "cmVS14LibFlagTable.h"
  25. #include "cmVS14LinkFlagTable.h"
  26. #include "cmVS14MASMFlagTable.h"
  27. #include "cmVS14RCFlagTable.h"
  28. cmIDEFlagTable const* cmVisualStudio10ToolsetOptions::GetClFlagTable(
  29. std::string const& name, std::string const& toolset) const
  30. {
  31. std::string const useToolset = this->GetToolsetName(name, toolset);
  32. if (toolset == "v141") {
  33. return cmVS141CLFlagTable;
  34. } else if (useToolset == "v140") {
  35. return cmVS140CLFlagTable;
  36. } else if (useToolset == "v120") {
  37. return cmVS12CLFlagTable;
  38. } else if (useToolset == "v110") {
  39. return cmVS11CLFlagTable;
  40. } else if (useToolset == "v100") {
  41. return cmVS10CLFlagTable;
  42. } else {
  43. return 0;
  44. }
  45. }
  46. cmIDEFlagTable const* cmVisualStudio10ToolsetOptions::GetRcFlagTable(
  47. std::string const& name, std::string const& toolset) const
  48. {
  49. std::string const useToolset = this->GetToolsetName(name, toolset);
  50. if ((useToolset == "v140") || (useToolset == "v141")) {
  51. return cmVS14RCFlagTable;
  52. } else if (useToolset == "v120") {
  53. return cmVS12RCFlagTable;
  54. } else if (useToolset == "v110") {
  55. return cmVS11RCFlagTable;
  56. } else if (useToolset == "v100") {
  57. return cmVS10RCFlagTable;
  58. } else {
  59. return 0;
  60. }
  61. }
  62. cmIDEFlagTable const* cmVisualStudio10ToolsetOptions::GetLibFlagTable(
  63. std::string const& name, std::string const& toolset) const
  64. {
  65. std::string const useToolset = this->GetToolsetName(name, toolset);
  66. if ((useToolset == "v140") || (useToolset == "v141")) {
  67. return cmVS14LibFlagTable;
  68. } else if (useToolset == "v120") {
  69. return cmVS12LibFlagTable;
  70. } else if (useToolset == "v110") {
  71. return cmVS11LibFlagTable;
  72. } else if (useToolset == "v100") {
  73. return cmVS10LibFlagTable;
  74. } else {
  75. return 0;
  76. }
  77. }
  78. cmIDEFlagTable const* cmVisualStudio10ToolsetOptions::GetLinkFlagTable(
  79. std::string const& name, std::string const& toolset) const
  80. {
  81. std::string const useToolset = this->GetToolsetName(name, toolset);
  82. if ((useToolset == "v140") || (useToolset == "v141")) {
  83. return cmVS14LinkFlagTable;
  84. } else if (useToolset == "v120") {
  85. return cmVS12LinkFlagTable;
  86. } else if (useToolset == "v110") {
  87. return cmVS11LinkFlagTable;
  88. } else if (useToolset == "v100") {
  89. return cmVS10LinkFlagTable;
  90. } else {
  91. return 0;
  92. }
  93. }
  94. cmIDEFlagTable const* cmVisualStudio10ToolsetOptions::GetMasmFlagTable(
  95. std::string const& name, std::string const& toolset) const
  96. {
  97. std::string const useToolset = this->GetToolsetName(name, toolset);
  98. if ((useToolset == "v140") || (useToolset == "v141")) {
  99. return cmVS14MASMFlagTable;
  100. } else if (useToolset == "v120") {
  101. return cmVS12MASMFlagTable;
  102. } else if (useToolset == "v110") {
  103. return cmVS11MASMFlagTable;
  104. } else if (useToolset == "v100") {
  105. return cmVS10MASMFlagTable;
  106. } else {
  107. return 0;
  108. }
  109. }
  110. std::string cmVisualStudio10ToolsetOptions::GetToolsetName(
  111. std::string const& name, std::string const& toolset) const
  112. {
  113. static_cast<void>(name);
  114. std::size_t length = toolset.length();
  115. if (cmHasLiteralSuffix(toolset, "_xp")) {
  116. length -= 3;
  117. }
  118. return toolset.substr(0, length);
  119. }