GetPrerequisitesTest.cmake 5.1 KB

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