| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495 |
- 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}'")
- # 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}'")
|