| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117 |
- if(NOT DEFINED CMake_SOURCE_DIR)
- message(FATAL_ERROR "CMake_SOURCE_DIR not defined")
- endif()
- if(NOT DEFINED dir)
- message(FATAL_ERROR "dir not defined")
- endif()
- # Analyze 'cmake --help' output for list of available generators:
- #
- execute_process(COMMAND ${CMAKE_COMMAND} -E make_directory ${dir})
- execute_process(COMMAND ${CMAKE_COMMAND} --help
- RESULT_VARIABLE result
- OUTPUT_VARIABLE stdout
- ERROR_VARIABLE stderr
- WORKING_DIRECTORY ${dir})
- string(REPLACE ";" "\\;" stdout "${stdout}")
- string(REPLACE "\n" "E;" stdout "${stdout}")
- set(collecting 0)
- set(generators)
- foreach(eline ${stdout})
- string(REGEX REPLACE "^(.*)E$" "\\1" line "${eline}")
- if(collecting AND NOT line STREQUAL "")
- if(line MATCHES "=")
- string(REGEX REPLACE "^ (.+)= (.*)$" "\\1" gen "${line}")
- if(gen MATCHES "[A-Za-z]")
- string(REGEX REPLACE "^(.*[^ ]) +$" "\\1" gen "${gen}")
- if(gen)
- set(generators ${generators} ${gen})
- endif()
- endif()
- else()
- if(line MATCHES "^ [A-Za-z0-9]")
- string(REGEX REPLACE "^ (.+)$" "\\1" gen "${line}")
- string(REGEX REPLACE "^(.*[^ ]) +$" "\\1" gen "${gen}")
- if(gen)
- set(generators ${generators} ${gen})
- endif()
- endif()
- endif()
- endif()
- if(line STREQUAL "The following generators are available on this platform:")
- set(collecting 1)
- endif()
- endforeach()
- # Also call with one non-existent generator:
- #
- set(generators ${generators} "BOGUS_CMAKE_GENERATOR")
- # Call cmake with -G on each available generator. We do not care if this
- # succeeds or not. We expect it *not* to succeed if the underlying packaging
- # tools are not installed on the system... This test is here simply to add
- # coverage for the various cmake generators, even/especially to test ones
- # where the tools are not installed.
- #
- message(STATUS "CTEST_FULL_OUTPUT (Avoid ctest truncation of output)")
- message(STATUS "CMake generators='${generators}'")
- # If we'll be testing any of the MinGW Makefiles generators, adjust the
- # ENV{PATH} to make sure libgmp-10.dll can be loaded as needed. But only if
- # the testing machine has a default MinGW install... (If you have a
- # non-default install, append to the PATH before running the test...)
- #
- if(generators MATCHES "MinGW Makefiles")
- if(EXISTS "C:/MinGW/bin/libgmp-10.dll")
- string(TOLOWER "$ENV{PATH}" path)
- if(NOT path MATCHES "/mingw/bin")
- if(UNIX)
- set(sep ":")
- set(mingw_bin "/mingw/bin")
- else()
- set(sep ";")
- set(mingw_bin "C:/MinGW/bin")
- endif()
- set(ENV{PATH} "$ENV{PATH}${sep}${mingw_bin}")
- message(STATUS "info: appending '${sep}${mingw_bin}' to the PATH")
- endif()
- endif()
- endif()
- # First setup a source tree to run CMake on.
- #
- execute_process(COMMAND ${CMAKE_COMMAND} -E copy_directory
- ${CMake_SOURCE_DIR}/Tests/CTestTest/SmallAndFast
- ${dir}/Source
- )
- foreach(g ${generators})
- message(STATUS "cmake -G \"${g}\" ..")
- # Create a binary directory for each generator:
- #
- execute_process(COMMAND ${CMAKE_COMMAND} -E make_directory
- ${dir}/Source/${g}
- )
- # Run cmake:
- #
- execute_process(COMMAND ${CMAKE_COMMAND} -G ${g} ..
- RESULT_VARIABLE result
- OUTPUT_VARIABLE stdout
- ERROR_VARIABLE stderr
- WORKING_DIRECTORY ${dir}/Source/${g}
- )
- message(STATUS "result='${result}'")
- message(STATUS "stdout='${stdout}'")
- message(STATUS "stderr='${stderr}'")
- message(STATUS "")
- endforeach()
- message(STATUS "CMake generators='${generators}'")
- message(STATUS "CMAKE_COMMAND='${CMAKE_COMMAND}'")
|