You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
77 lines
2.2 KiB
77 lines
2.2 KiB
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} -E capabilities
|
|
RESULT_VARIABLE result
|
|
OUTPUT_VARIABLE stdout
|
|
ERROR_VARIABLE stderr
|
|
WORKING_DIRECTORY ${dir})
|
|
|
|
set(generators)
|
|
string(REGEX MATCHALL [["name":"[^"]+","platformSupport"]] generators_json "${stdout}")
|
|
foreach(gen_json IN LISTS generators_json)
|
|
if("${gen_json}" MATCHES [["name":"([^"]+)"]])
|
|
set(gen "${CMAKE_MATCH_1}")
|
|
if(NOT gen MATCHES " (Win64|IA64|ARM)$")
|
|
list(APPEND generators "${gen}")
|
|
endif()
|
|
endif()
|
|
endforeach()
|
|
list(REMOVE_DUPLICATES generators)
|
|
|
|
# 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}'")
|