mirror of
https://github.com/reactos/CMake.git
synced 2024-11-25 04:29:52 +00:00
0baf5659c6
But only if it exists at the default location: C:/MinGW/bin/libgmp-10.dll This is so that the pop-up dialog about not being able to load that dll does not hang the test when there's nobody watching.
118 lines
3.5 KiB
CMake
118 lines
3.5 KiB
CMake
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}'")
|