RunCMakeTest.cmake 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. include(RunCMake)
  2. # Function called in *-check.cmake scripts to check api files.
  3. function(check_api expect)
  4. file(GLOB_RECURSE actual
  5. LIST_DIRECTORIES TRUE
  6. RELATIVE ${RunCMake_TEST_BINARY_DIR}/.cmake/api/v1
  7. ${RunCMake_TEST_BINARY_DIR}/.cmake/api/v1/*
  8. )
  9. if(NOT "${actual}" MATCHES "${expect}")
  10. set(RunCMake_TEST_FAILED "API files:
  11. ${actual}
  12. do not match what we expected:
  13. ${expect}
  14. in directory:
  15. ${RunCMake_TEST_BINARY_DIR}/.cmake/api/v1" PARENT_SCOPE)
  16. endif()
  17. endfunction()
  18. function(check_python case)
  19. if(RunCMake_TEST_FAILED OR NOT Python_EXECUTABLE)
  20. return()
  21. endif()
  22. file(GLOB index ${RunCMake_TEST_BINARY_DIR}/.cmake/api/v1/reply/index-*.json)
  23. execute_process(
  24. COMMAND ${Python_EXECUTABLE} "${RunCMake_SOURCE_DIR}/${case}-check.py" "${index}" "${CMAKE_CXX_COMPILER_ID}"
  25. "${RunCMake_TEST_BINARY_DIR}"
  26. RESULT_VARIABLE result
  27. OUTPUT_VARIABLE output
  28. ERROR_VARIABLE output
  29. )
  30. if(NOT result EQUAL 0)
  31. string(REPLACE "\n" "\n " output " ${output}")
  32. set(RunCMake_TEST_FAILED "Unexpected index:\n${output}" PARENT_SCOPE)
  33. endif()
  34. endfunction()
  35. if(RunCMake_GENERATOR_IS_MULTI_CONFIG)
  36. set(RunCMake_TEST_OPTIONS "-DCMAKE_CONFIGURATION_TYPES=Debug\\;Release\\;MinSizeRel\\;RelWithDebInfo")
  37. endif()
  38. if(JsonCpp_VERSION_STRING AND JsonCpp_VERSION_STRING VERSION_LESS 1.7.5)
  39. set(ENV{CMake_JSONCPP_PRE_1_7_5} 1)
  40. endif()
  41. run_cmake(Nothing)
  42. run_cmake(Empty)
  43. run_cmake(EmptyClient)
  44. run_cmake(Stale)
  45. run_cmake(SharedStateless)
  46. run_cmake(ClientStateless)
  47. run_cmake(MixedStateless)
  48. run_cmake(DuplicateStateless)
  49. run_cmake(ClientStateful)
  50. function(run_object object)
  51. set(RunCMake_TEST_BINARY_DIR ${RunCMake_BINARY_DIR}/${object}-build)
  52. list(APPEND RunCMake_TEST_OPTIONS -DCMAKE_POLICY_DEFAULT_CMP0118=NEW)
  53. run_cmake(${object})
  54. list(POP_BACK RunCMake_TEST_OPTIONS)
  55. set(RunCMake_TEST_NO_CLEAN 1)
  56. run_cmake_command(${object}-SharedStateless ${CMAKE_COMMAND} .)
  57. run_cmake_command(${object}-ClientStateless ${CMAKE_COMMAND} .)
  58. run_cmake_command(${object}-ClientStateful ${CMAKE_COMMAND} .)
  59. endfunction()
  60. run_object(codemodel-v2)
  61. run_object(configureLog-v1)
  62. run_object(cache-v2)
  63. run_object(cmakeFiles-v1)
  64. run_object(toolchains-v1)