GetPrerequisitesTest.cmake.in 5.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159
  1. # Test of the functions in the CMake Modules file:
  2. #
  3. include(GetPrerequisites)
  4. set(CMAKE_BUILD_TYPE "@CMAKE_BUILD_TYPE@")
  5. set(CMAKE_CONFIGURATION_TYPES "@CMAKE_CONFIGURATION_TYPES@")
  6. set(CMAKE_EXECUTABLE_SUFFIX "@CMAKE_EXECUTABLE_SUFFIX@")
  7. message(STATUS "=============================================================================")
  8. message(STATUS "CTEST_FULL_OUTPUT (Avoid ctest truncation of output)")
  9. message(STATUS "")
  10. message(STATUS "CMAKE_BUILD_TYPE='${CMAKE_BUILD_TYPE}'")
  11. message(STATUS "CMAKE_CONFIGURATION_TYPES='${CMAKE_CONFIGURATION_TYPES}'")
  12. message(STATUS "CMAKE_EXECUTABLE_SUFFIX='${CMAKE_EXECUTABLE_SUFFIX}'")
  13. message(STATUS "CTEST_CONFIGURATION_TYPE='${CTEST_CONFIGURATION_TYPE}'")
  14. message(STATUS "")
  15. function(stresstest_list_prerequisites file)
  16. message(STATUS "=============================================================================")
  17. message(STATUS "stresstest_list_prerequisites file='${file}'")
  18. message(STATUS "")
  19. get_filename_component(file_full "${file}" ABSOLUTE)
  20. message(STATUS "list_prerequisites '${file_full}' 0 0 0")
  21. list_prerequisites("${file_full}" 0 0 0)
  22. message(STATUS "")
  23. message(STATUS "list_prerequisites '${file_full}' 0 0 1")
  24. list_prerequisites("${file_full}" 0 0 1)
  25. message(STATUS "")
  26. message(STATUS "list_prerequisites '${file_full}' 0 1 0")
  27. list_prerequisites("${file_full}" 0 1 0)
  28. message(STATUS "")
  29. message(STATUS "list_prerequisites '${file_full}' 0 1 1")
  30. list_prerequisites("${file_full}" 0 1 1)
  31. message(STATUS "")
  32. message(STATUS "list_prerequisites '${file_full}' 1 0 0")
  33. list_prerequisites("${file_full}" 1 0 0)
  34. message(STATUS "")
  35. message(STATUS "list_prerequisites '${file_full}' 1 0 1")
  36. list_prerequisites("${file_full}" 1 0 1)
  37. message(STATUS "")
  38. message(STATUS "list_prerequisites '${file_full}' 1 1 0")
  39. list_prerequisites("${file_full}" 1 1 0)
  40. message(STATUS "")
  41. message(STATUS "list_prerequisites '${file_full}' 1 1 1")
  42. list_prerequisites("${file_full}" 1 1 1)
  43. message(STATUS "")
  44. message(STATUS "=============================================================================")
  45. message(STATUS "")
  46. endfunction()
  47. function(test_cmake_executables)
  48. message(STATUS "=============================================================================")
  49. message(STATUS "Loop over all executable files in the same directory with CMake")
  50. message(STATUS "")
  51. get_filename_component(cmake_bin_dir "${CMAKE_COMMAND}" PATH)
  52. list_prerequisites_by_glob(GLOB "${cmake_bin_dir}/*" 0 0 1)
  53. endfunction()
  54. message(STATUS "=============================================================================")
  55. message(STATUS "Simplest test - list all the direct prerequisites of CMake itself")
  56. message(STATUS "")
  57. list_prerequisites("${CMAKE_COMMAND}" 0 0 1)
  58. message(STATUS "")
  59. message(STATUS "=============================================================================")
  60. string(LENGTH "$ENV{PATH}" PATH_LENGTH_BEGIN)
  61. message(STATUS "Begin PATH length is: ${PATH_LENGTH_BEGIN}")
  62. message(STATUS "")
  63. # Leave the code for these tests in here, but turn them off by default... they
  64. # take longer than they're worth during development...
  65. #
  66. set(do_testdefaults 0)
  67. if(do_testdefaults)
  68. message(STATUS "=============================================================================")
  69. message(STATUS "Test default argument values to list_prerequisites function...")
  70. message(STATUS "")
  71. list_prerequisites("${CMAKE_COMMAND}")
  72. message(STATUS "")
  73. endif()
  74. set(do_stresstest 0)
  75. if(do_stresstest)
  76. message(STATUS "=============================================================================")
  77. message(STATUS "stresstest_list_prerequisites with CMake itself...")
  78. message(STATUS "")
  79. stresstest_list_prerequisites("${CMAKE_COMMAND}")
  80. message(STATUS "")
  81. endif()
  82. test_cmake_executables()
  83. message(STATUS "=============================================================================")
  84. message(STATUS "Test overriding 'gp_tool' with bogus value")
  85. message(STATUS "")
  86. set(gp_tool "bogus")
  87. list_prerequisites("${CMAKE_COMMAND}" 0 0 0)
  88. set(gp_tool)
  89. message(STATUS "")
  90. message(STATUS "=============================================================================")
  91. message(STATUS "Test overriding 'gp_tool' with value unlikely to be found")
  92. message(STATUS "")
  93. if(APPLE)
  94. set(gp_tool "dumpbin")
  95. else()
  96. set(gp_tool "otool")
  97. endif()
  98. set(gp_cmd "gp_cmd-NOTFOUND")
  99. list_prerequisites("${CMAKE_COMMAND}" 0 0 0)
  100. set(gp_cmd)
  101. set(gp_tool)
  102. message(STATUS "")
  103. message(STATUS "=============================================================================")
  104. message(STATUS "All variables: (Make sure functions/macros are not leaving stuff around...")
  105. message(STATUS " Only variables predefined by CMake and defined in this")
  106. message(STATUS " test script file should be listed here...)")
  107. message(STATUS "")
  108. get_cmake_property(vs VARIABLES)
  109. foreach(v ${vs})
  110. message(STATUS "${v}='${${v}}'")
  111. endforeach()
  112. message(STATUS "")
  113. message(STATUS "=============================================================================")
  114. string(LENGTH "$ENV{PATH}" PATH_LENGTH_END)
  115. message(STATUS "Final PATH length is: ${PATH_LENGTH_END}")
  116. if(PATH_LENGTH_END GREATER ${PATH_LENGTH_BEGIN})
  117. message(FATAL_ERROR "list_prerequisties is endlessly appending the path of gp_tool to the PATH.")
  118. endif()
  119. message(STATUS "")
  120. message(STATUS "=============================================================================")
  121. message(STATUS "End of test")
  122. message(STATUS "")