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