RunCMakeTest.cmake 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. include(RunCMake)
  2. set(RunCMake_GENERATOR_PLATFORM "")
  3. run_cmake(NoPlatform)
  4. if("${RunCMake_GENERATOR}" MATCHES "^Visual Studio ([89]|1[0124567])( 20[0-9][0-9])?$")
  5. set(RunCMake_GENERATOR_PLATFORM "x64")
  6. run_cmake(x64Platform)
  7. else()
  8. set(RunCMake_GENERATOR_PLATFORM "Bad Platform")
  9. run_cmake(BadPlatform)
  10. endif()
  11. set(RunCMake_GENERATOR_PLATFORM "")
  12. set(RunCMake_TEST_OPTIONS -A "Test Platform" -A "Extra Platform")
  13. run_cmake(TwoPlatforms)
  14. unset(RunCMake_TEST_OPTIONS)
  15. if("${RunCMake_GENERATOR}" MATCHES "^Visual Studio ([89]|1[0124567])( 20[0-9][0-9])?$")
  16. set(RunCMake_TEST_OPTIONS -DCMAKE_TOOLCHAIN_FILE=${RunCMake_SOURCE_DIR}/TestPlatform-toolchain.cmake)
  17. run_cmake(TestPlatformToolchain)
  18. unset(RunCMake_TEST_OPTIONS)
  19. else()
  20. set(RunCMake_TEST_OPTIONS -DCMAKE_TOOLCHAIN_FILE=${RunCMake_SOURCE_DIR}/BadPlatform-toolchain.cmake)
  21. run_cmake(BadPlatformToolchain)
  22. unset(RunCMake_TEST_OPTIONS)
  23. endif()
  24. if("${RunCMake_GENERATOR}" MATCHES "^Visual Studio (1[4567])( 20[0-9][0-9])?$")
  25. set(RunCMake_GENERATOR_PLATFORM "Test Platform,nocomma")
  26. run_cmake(BadFieldNoComma)
  27. set(RunCMake_GENERATOR_PLATFORM "Test Platform,unknown=")
  28. run_cmake(BadFieldUnknown)
  29. set(RunCMake_GENERATOR_PLATFORM "version=")
  30. run_cmake(BadVersionEmpty)
  31. set(RunCMake_GENERATOR_PLATFORM "version=1.2.3.4")
  32. run_cmake(BadVersionMissing)
  33. set(RunCMake_GENERATOR_PLATFORM "version=8.1")
  34. run_cmake_with_options(BadVersionPlatform -DCMAKE_SYSTEM_VERSION=8.1)
  35. set(kits "")
  36. cmake_host_system_information(RESULT kitsRoot10
  37. QUERY WINDOWS_REGISTRY "HKLM/SOFTWARE/Microsoft/Windows Kits/Installed Roots"
  38. VALUE "KitsRoot10"
  39. VIEW 64_32
  40. ERROR_VARIABLE kitsRoot10Error
  41. )
  42. if(NOT kitsRoot10Error AND IS_DIRECTORY "${kitsRoot10}/include")
  43. cmake_path(SET kitsInclude "${kitsRoot10}/include")
  44. file(GLOB kits RELATIVE "${kitsInclude}" "${kitsInclude}/*/um/windows.h")
  45. list(TRANSFORM kits REPLACE "/.*" "")
  46. endif()
  47. if(kits)
  48. message(STATUS "Available Kits: ${kits}")
  49. if(RunCMake_GENERATOR MATCHES "^Visual Studio 14 ")
  50. set(kitMax 10.0.14393.0)
  51. else()
  52. set(kitMax "")
  53. endif()
  54. if(kitMax)
  55. set(kitsIn "${kits}")
  56. set(kits "")
  57. foreach(kit IN LISTS kitsIn)
  58. if(kit VERSION_LESS_EQUAL "${kitMax}")
  59. list(APPEND kits "${kit}")
  60. else()
  61. message(STATUS "Excluding Kit ${kit} > ${kitMax}")
  62. endif()
  63. endforeach()
  64. endif()
  65. elseif(NOT RunCMake_GENERATOR MATCHES "^Visual Studio 14 ")
  66. message(FATAL_ERROR "Could not find any Windows SDKs to drive test cases.")
  67. endif()
  68. if(kits)
  69. foreach(expect_version IN LISTS kits)
  70. set(RunCMake_GENERATOR_PLATFORM "version=${expect_version}")
  71. set(RunCMake_TEST_VARIANT_DESCRIPTION "-${expect_version}")
  72. run_cmake_with_options(VersionExists -DCMAKE_SYSTEM_VERSION=10.0)
  73. unset(RunCMake_GENERATOR_PLATFORM)
  74. endforeach()
  75. endif()
  76. endif()