build-database-check.cmake 2.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. include("${CMAKE_CURRENT_LIST_DIR}/../check-json.cmake")
  2. function (check_build_database expect_basename fname component)
  3. if (component STREQUAL "NO_EXIST")
  4. if (EXISTS "${RunCMake_TEST_BINARY_DIR}/${fname}")
  5. list(APPEND RunCMake_TEST_FAILED
  6. "Build database detected before it is expected (${fname}).")
  7. set(RunCMake_TEST_FAILED "${RunCMake_TEST_FAILED}" PARENT_SCOPE)
  8. endif ()
  9. return ()
  10. endif ()
  11. if (NOT EXISTS "${RunCMake_TEST_BINARY_DIR}/${fname}")
  12. list(APPEND RunCMake_TEST_FAILED
  13. "No build database detected (${fname}).")
  14. set(RunCMake_TEST_FAILED "${RunCMake_TEST_FAILED}" PARENT_SCOPE)
  15. return ()
  16. endif ()
  17. if (component STREQUAL "ALL")
  18. set(CXXModules_config "Debug")
  19. set(suffix "all")
  20. elseif (component STREQUAL "ALL_MULTI")
  21. set(CXXModules_config "Debug")
  22. set(CXXModules_config_other "Release")
  23. set(suffix "all-multi")
  24. elseif (component STREQUAL "JUST_CXX")
  25. set(CXXModules_config "Debug")
  26. set(suffix "cxx")
  27. elseif (component STREQUAL "JUST_CXX_MULTI")
  28. set(CXXModules_config "Debug")
  29. set(CXXModules_config_other "Release")
  30. set(suffix "cxx-multi")
  31. elseif (component STREQUAL "CXX_AND_DEBUG")
  32. set(CXXModules_config "Debug")
  33. set(suffix "cxx-config")
  34. elseif (component STREQUAL "CXX_AND_RELEASE")
  35. set(CXXModules_config "Release")
  36. set(suffix "cxx-config")
  37. elseif (component STREQUAL "JUST_DEBUG")
  38. set(CXXModules_config "Debug")
  39. set(suffix "config")
  40. elseif (component STREQUAL "JUST_RELEASE")
  41. set(CXXModules_config "Release")
  42. set(suffix "config")
  43. elseif (component STREQUAL "JUST_TARGET_DEBUG")
  44. set(CXXModules_config "Debug")
  45. set(suffix "target")
  46. elseif (component STREQUAL "JUST_TARGET_RELEASE")
  47. set(CXXModules_config "Release")
  48. set(suffix "target")
  49. elseif (component STREQUAL "JUST_TARGET")
  50. set(CXXModules_config "Debug")
  51. set(suffix "target")
  52. else ()
  53. list(APPEND RunCMake_TEST_FAILED
  54. "Unrecognized test component for ${fname}: ${component}")
  55. set(RunCMake_TEST_FAILED "${RunCMake_TEST_FAILED}" PARENT_SCOPE)
  56. return ()
  57. endif ()
  58. set(expected_file "${CMAKE_CURRENT_FUNCTION_LIST_DIR}/expect/${expect_basename}-${suffix}.json")
  59. if (NOT EXISTS "${expected_file}")
  60. list(APPEND RunCMake_TEST_FAILED
  61. "No expected output JSON file found: ${expected_file}")
  62. set(RunCMake_TEST_FAILED "${RunCMake_TEST_FAILED}" PARENT_SCOPE)
  63. return ()
  64. endif ()
  65. file(READ "${RunCMake_TEST_BINARY_DIR}/${fname}" actual)
  66. file(READ "${expected_file}" expect)
  67. check_json("${actual}" "${expect}")
  68. set(RunCMake_TEST_FAILED "${RunCMake_TEST_FAILED}" PARENT_SCOPE)
  69. endfunction ()