RunCMakeTest.cmake 5.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130
  1. include(RunCMake)
  2. if("${RunCMake_GENERATOR}" MATCHES "Visual Studio")
  3. run_cmake(VsNormal)
  4. include("${RunCMake_BINARY_DIR}/VsNormal-build/defaults.cmake" OPTIONAL)
  5. message(STATUS "VsNormal: platform='${VsNormal_Platform}' toolset='${VsNormal_Toolset}'")
  6. endif()
  7. set(RunCMake_GENERATOR_TOOLSET "")
  8. run_cmake(NoToolset)
  9. if("${RunCMake_GENERATOR}" MATCHES "Visual Studio")
  10. set(RunCMake_GENERATOR_TOOLSET "Test Toolset")
  11. run_cmake(TestToolset)
  12. set(RunCMake_GENERATOR_TOOLSET "Test Toolset,cuda=0.0")
  13. run_cmake(TestToolsetCudaBoth)
  14. set(RunCMake_GENERATOR_TOOLSET ",cuda=0.0")
  15. run_cmake(TestToolsetCudaVersionOnly)
  16. set(RunCMake_GENERATOR_TOOLSET "cuda=0.0")
  17. run_cmake(TestToolsetCudaVersionOnly)
  18. set(RunCMake_GENERATOR_TOOLSET "cuda=${CMAKE_CURRENT_BINARY_DIR}/CudaStandaloneToolset")
  19. run_cmake(TestToolsetCudaPathOnly)
  20. set(RunCMake_GENERATOR_TOOLSET "cuda=${CMAKE_CURRENT_BINARY_DIR}/CudaStandaloneToolset")
  21. file(MAKE_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/CudaStandaloneToolset/CUDAVisualStudioIntegration")
  22. run_cmake(TestToolsetCudaPathOnlyOldLayout)
  23. file(REMOVE_RECURSE "${CMAKE_CURRENT_BINARY_DIR}/CudaStandaloneToolset")
  24. if (VsNormal_Platform MATCHES "^(x64|Win32)$" AND
  25. EXISTS "${CMAKE_ROOT}/Templates/MSBuild/FlagTables/${VsNormal_Toolset}_CL.json")
  26. set(flagTableDir "${RunCMake_BINARY_DIR}/FlagTables")
  27. file(READ "${CMAKE_ROOT}/Templates/MSBuild/FlagTables/${VsNormal_Toolset}_CL.json" flagTableContent)
  28. string(REPLACE [["WX-"]] [["TESTWX-"]] flagTableContent "${flagTableContent}")
  29. file(REMOVE_RECURSE "${flagTableDir}")
  30. file(WRITE "${flagTableDir}/${VsNormal_Platform}_${VsNormal_Toolset}_CL.json" "${flagTableContent}")
  31. set(RunCMake_GENERATOR_TOOLSET "${VsNormal_Toolset},customFlagTableDir=${flagTableDir}")
  32. set(RunCMake_TEST_VARIANT_DESCRIPTION ":${VsNormal_Platform}_${VsNormal_Toolset}_CL.json")
  33. run_cmake(TestToolsetCustomFlagTableDir)
  34. file(REMOVE_RECURSE "${flagTableDir}")
  35. file(WRITE "${flagTableDir}/${VsNormal_Platform}_CL.json" "${flagTableContent}")
  36. set(RunCMake_GENERATOR_TOOLSET "${VsNormal_Toolset},customFlagTableDir=${flagTableDir}")
  37. set(RunCMake_TEST_VARIANT_DESCRIPTION ":${VsNormal_Platform}_CL.json")
  38. run_cmake(TestToolsetCustomFlagTableDir)
  39. unset(RunCMake_TEST_VARIANT_DESCRIPTION)
  40. set(RunCMake_GENERATOR_TOOLSET "${VsNormal_Toolset},customFlagTableDir=does_not_exist")
  41. run_cmake(BadToolsetCustomFlagTableDir)
  42. endif()
  43. set(RunCMake_GENERATOR_TOOLSET "fortran=ifort")
  44. run_cmake(TestToolsetFortranIFORT)
  45. set(RunCMake_GENERATOR_TOOLSET "fortran=ifx")
  46. run_cmake(TestToolsetFortranIFX)
  47. set(RunCMake_GENERATOR_TOOLSET "fortran=bad")
  48. run_cmake(BadToolsetFortran)
  49. if("${RunCMake_GENERATOR}" MATCHES "Visual Studio")
  50. set(RunCMake_GENERATOR_TOOLSET "Test Toolset,host=x64")
  51. run_cmake(TestToolsetHostArchBoth)
  52. set(RunCMake_GENERATOR_TOOLSET ",host=x64")
  53. run_cmake(TestToolsetHostArchOnly_x64)
  54. set(RunCMake_GENERATOR_TOOLSET "host=x64")
  55. run_cmake(TestToolsetHostArchOnly_x64)
  56. set(RunCMake_GENERATOR_TOOLSET "host=x86")
  57. run_cmake(TestToolsetHostArchOnly_x86)
  58. set(RunCMake_GENERATOR_TOOLSET "Test Toolset")
  59. run_cmake(TestToolsetHostArchNone)
  60. set(RunCMake_GENERATOR_TOOLSET "Test Toolset,host=x65")
  61. run_cmake(BadToolsetHostArch)
  62. set(RunCMake_GENERATOR_TOOLSET "Test Toolset,host=x64,host=x86")
  63. run_cmake(BadToolsetHostArchTwice)
  64. if("${RunCMake_GENERATOR}" MATCHES "Visual Studio 1[5678]")
  65. set(RunCMake_GENERATOR_TOOLSET "VCTargetsPath=Test Path")
  66. run_cmake(TestToolsetVCTargetsPathOnly)
  67. set(RunCMake_GENERATOR_TOOLSET "Test Toolset,version=Test Toolset Version")
  68. run_cmake(TestToolsetVersionBoth)
  69. set(RunCMake_GENERATOR_TOOLSET ",version=Test Toolset Version")
  70. run_cmake(TestToolsetVersionOnly)
  71. set(RunCMake_GENERATOR_TOOLSET "version=Test Toolset Version")
  72. run_cmake(TestToolsetVersionOnly)
  73. set(RunCMake_GENERATOR_TOOLSET "Test Toolset,version=Bad Toolset Version")
  74. run_cmake(BadToolsetVersion)
  75. set(RunCMake_GENERATOR_TOOLSET "Test Toolset,version=Test Toolset Version,version=Test Toolset Version")
  76. run_cmake(BadToolsetVersionTwice)
  77. endif()
  78. else()
  79. set(RunCMake_GENERATOR_TOOLSET "Test Toolset,host=x64")
  80. run_cmake(BadToolsetHostArch)
  81. endif()
  82. set(RunCMake_GENERATOR_TOOLSET "Test Toolset,not_a_key")
  83. run_cmake(BadToolsetFormat)
  84. elseif("${RunCMake_GENERATOR}" STREQUAL "Xcode")
  85. set(RunCMake_GENERATOR_TOOLSET "Test Toolset")
  86. run_cmake(TestToolset)
  87. set(RunCMake_GENERATOR_TOOLSET "Test Toolset,host=x64")
  88. run_cmake(BadToolsetHostArchXcode)
  89. set(RunCMake_GENERATOR_TOOLSET "buildsystem=bad")
  90. run_cmake(BadToolsetXcodeBuildSystem)
  91. if(XCODE_VERSION VERSION_GREATER_EQUAL 12)
  92. set(RunCMake_GENERATOR_TOOLSET "Test Toolset")
  93. run_cmake(TestToolsetXcodeBuildSystemDefault12)
  94. set(RunCMake_GENERATOR_TOOLSET "Test Toolset,buildsystem=1")
  95. if(XCODE_VERSION VERSION_GREATER_EQUAL 14)
  96. run_cmake(BadToolsetXcodeBuildSystem1)
  97. else()
  98. run_cmake(TestToolsetXcodeBuildSystem1)
  99. endif()
  100. set(RunCMake_GENERATOR_TOOLSET "Test Toolset,buildsystem=12")
  101. run_cmake(TestToolsetXcodeBuildSystem12)
  102. else()
  103. set(RunCMake_GENERATOR_TOOLSET "Test Toolset")
  104. run_cmake(TestToolsetXcodeBuildSystemDefault1)
  105. set(RunCMake_GENERATOR_TOOLSET "buildsystem=12")
  106. run_cmake(BadToolsetXcodeBuildSystem12)
  107. endif()
  108. else()
  109. set(RunCMake_GENERATOR_TOOLSET "Bad Toolset")
  110. run_cmake(BadToolset)
  111. endif()
  112. set(RunCMake_GENERATOR_TOOLSET "")
  113. set(RunCMake_TEST_OPTIONS -T "Test Toolset" -T "Extra Toolset")
  114. run_cmake(TwoToolsets)
  115. unset(RunCMake_TEST_OPTIONS)
  116. if("${RunCMake_GENERATOR}" MATCHES "Visual Studio|Xcode")
  117. set(RunCMake_TEST_OPTIONS -DCMAKE_TOOLCHAIN_FILE=${RunCMake_SOURCE_DIR}/TestToolset-toolchain.cmake)
  118. run_cmake(TestToolsetToolchain)
  119. unset(RunCMake_TEST_OPTIONS)
  120. else()
  121. set(RunCMake_TEST_OPTIONS -DCMAKE_TOOLCHAIN_FILE=${RunCMake_SOURCE_DIR}/BadToolset-toolchain.cmake)
  122. run_cmake(BadToolsetToolchain)
  123. unset(RunCMake_TEST_OPTIONS)
  124. endif()