blob: c1d74d0af56f8ede96721b514329964e01dc4527 [file] [log] [blame]
include(RunCMake)
cmake_policy(SET CMP0054 NEW)
macro(run_cmake_target test subtest target)
set(RunCMake_TEST_BINARY_DIR ${RunCMake_BINARY_DIR}/${test}-build)
set(RunCMake_TEST_NO_CLEAN 1)
run_cmake_command(${test}-${subtest} ${CMAKE_COMMAND} --build . --target ${target} --config Release --verbose ${ARGN})
unset(RunCMake_TEST_BINARY_DIR)
unset(RunCMake_TEST_NO_CLEAN)
endmacro()
# Some environments are excluded because they are not able to honor verbose mode
if ((RunCMake_GENERATOR MATCHES "Makefiles|Ninja|Xcode"
OR (RunCMake_GENERATOR MATCHES "Visual Studio" AND MSVC_VERSION GREATER_EQUAL "1600"))
AND NOT CMAKE_C_COMPILER_ID STREQUAL "Intel")
set(RunCMake_TEST_OUTPUT_MERGE TRUE)
if (NOT RunCMake_GENERATOR_IS_MULTI_CONFIG)
set(RunCMake_TEST_OPTIONS -DCMAKE_BUILD_TYPE=Release)
endif()
if (CMAKE_SYSTEM_NAME STREQUAL "Windows"
OR CMAKE_SYSTEM_NAME STREQUAL "CYGWIN"
OR CMAKE_SYSTEM_NAME STREQUAL "MSYS")
set(LINK_SHARED_LIBRARY_PREFIX ${CMAKE_IMPORT_LIBRARY_PREFIX})
set(LINK_SHARED_LIBRARY_SUFFIX ${CMAKE_IMPORT_LIBRARY_SUFFIX})
else()
set(LINK_SHARED_LIBRARY_PREFIX ${CMAKE_SHARED_LIBRARY_PREFIX})
set(LINK_SHARED_LIBRARY_SUFFIX ${CMAKE_SHARED_LIBRARY_SUFFIX})
endif()
if (MINGW OR MSYS OR CYGWIN)
set(LINK_EXTERN_LIBRARY_SUFFIX "")
else()
set(LINK_EXTERN_LIBRARY_SUFFIX "${CMAKE_IMPORT_LIBRARY_SUFFIX}")
endif()
run_cmake(LINK_GROUP)
run_cmake_target(LINK_GROUP simple1 LinkGroup_simple1)
run_cmake_target(LINK_GROUP simple2 LinkGroup_simple2)
run_cmake_target(LINK_GROUP multiple-definitions LinkGroup_multiple-definitions)
run_cmake_target(LINK_GROUP multiple-groups LinkGroup_multiple-groups)
run_cmake_target(LINK_GROUP group-and-single LinkGroup_group-and-single)
run_cmake_target(LINK_GROUP with-LINK_LIBRARY LinkGroup_with-LINK_LIBRARY)
run_cmake_target(LINK_GROUP with-LINK_LIBRARY_OVERRIDE LinkGroup_with-LINK_LIBRARY_OVERRIDE)
run_cmake(imported-target)
# tests using features as described in the documentation
if((CMAKE_C_COMPILER_ID STREQUAL "GNU" AND CMAKE_SYSTEM_NAME STREQUAL "Linux")
OR (CMAKE_C_COMPILER_ID STREQUAL "SunPro" AND CMAKE_C_COMPILER_VERSION VERSION_GREATER "5.9"
AND CMAKE_SYSTEM_NAME STREQUAL "SunOS"))
run_cmake(cross_refs)
run_cmake_target(cross_refs link main)
endif()
unset(RunCMake_TEST_OPTIONS)
unset(RunCMake_TEST_OUTPUT_MERGE)
endif()
# Feature RESCAN
if (CMAKE_SYSTEM_NAME MATCHES "Linux|BSD"
OR (CMAKE_SYSTEM_NAME STREQUAL "SunOS" AND (NOT CMAKE_C_COMPILER_ID STREQUAL "SunPro" OR CMAKE_C_COMPILER_VERSION VERSION_GREATER "5.9"))
OR (WIN32 AND CMAKE_C_COMPILER_ID STREQUAL "GNU"))
run_cmake(rescan)
run_cmake_target(rescan link main)
endif()