RunCMakeTest.cmake 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. cmake_minimum_required(VERSION 3.16)
  2. include(RunCMake)
  3. # Function to build and install a project.
  4. function(run_install_test case)
  5. set(RunCMake_TEST_BINARY_DIR ${RunCMake_BINARY_DIR}/${case}-build)
  6. run_cmake(${case})
  7. set(RunCMake_TEST_NO_CLEAN 1)
  8. run_cmake_command(${case}-build ${CMAKE_COMMAND} --build . --config Debug)
  9. # Check "all" components.
  10. set(CMAKE_INSTALL_PREFIX ${RunCMake_TEST_BINARY_DIR}/root-all)
  11. set(maybe_stderr "${case}-all-stderr-${CMAKE_C_COMPILER_ID}.txt")
  12. if(EXISTS "${RunCMake_SOURCE_DIR}/${maybe_stderr}")
  13. set(RunCMake-stderr-file "${maybe_stderr}")
  14. endif()
  15. run_cmake_command(${case}-all ${CMAKE_COMMAND} --install . --prefix ${CMAKE_INSTALL_PREFIX} --config Debug)
  16. endfunction()
  17. # Function to check the contents of the output files.
  18. function(check_contents filename contents_regex)
  19. if(EXISTS "${CMAKE_INSTALL_PREFIX}/${filename}")
  20. file(READ "${CMAKE_INSTALL_PREFIX}/${filename}" contents)
  21. if(NOT contents MATCHES "${contents_regex}")
  22. string(APPEND RunCMake_TEST_FAILED "File contents:
  23. ${contents}
  24. do not match what we expected:
  25. ${contents_regex}
  26. in file:
  27. ${CMAKE_INSTALL_PREFIX}/${filename}\n")
  28. set(RunCMake_TEST_FAILED "${RunCMake_TEST_FAILED}" PARENT_SCOPE)
  29. endif()
  30. else()
  31. string(APPEND RunCMake_TEST_FAILED "File ${CMAKE_INSTALL_PREFIX}/${filename} does not exist")
  32. set(RunCMake_TEST_FAILED "${RunCMake_TEST_FAILED}" PARENT_SCOPE)
  33. endif()
  34. endfunction()
  35. if(CMAKE_HOST_SYSTEM_NAME STREQUAL "Darwin")
  36. if(NOT CMake_INSTALL_NAME_TOOL_BUG)
  37. run_install_test(macos)
  38. run_install_test(macos-rpath)
  39. run_install_test(macos-unresolved)
  40. run_install_test(macos-conflict)
  41. run_install_test(macos-notfile)
  42. run_install_test(file-filter)
  43. endif()
  44. run_cmake(project)
  45. run_cmake(badargs1)
  46. run_cmake(badargs2)
  47. elseif(CMAKE_HOST_SYSTEM_NAME STREQUAL "Windows")
  48. run_install_test(windows)
  49. run_install_test(windows-unresolved)
  50. run_install_test(windows-conflict)
  51. run_install_test(windows-notfile)
  52. run_install_test(file-filter)
  53. run_cmake(project)
  54. run_cmake(badargs1)
  55. run_cmake(badargs2)
  56. elseif(CMAKE_HOST_SYSTEM_NAME STREQUAL "Linux")
  57. if(DEFINED ENV{LDFLAGS})
  58. # Some setups prebake disable-new-dtags into LDFLAGS
  59. string(REPLACE "-Wl,--disable-new-dtags" "" new_ldflags "$ENV{LDFLAGS}")
  60. set(ENV{LDFLAGS} "${new_ldflags}")
  61. endif()
  62. if(NOT CMake_COMPILER_FORCES_NEW_DTAGS)
  63. run_install_test(linux)
  64. run_install_test(linux-parent-rpath-propagation)
  65. run_install_test(file-filter)
  66. endif()
  67. run_install_test(linux-unresolved)
  68. run_install_test(linux-conflict)
  69. run_install_test(linux-notfile)
  70. run_cmake(project)
  71. run_cmake(badargs1)
  72. run_cmake(badargs2)
  73. else()
  74. run_cmake(unsupported)
  75. endif()
  76. run_install_test(variable-propagation)