Commit a5dd1599 authored by Brad King's avatar Brad King
Browse files

Tests: Fix RunCMake.try_compile CxxStandard case on MSVC

In post-3.9 development we've taught CMake to understand C++ language
standards for MSVC.  The RunCMake.try_compile test needs to know whether
to expect support or not.  Previously we depended on the host CMake
version to know this, but CMake 3.9 and below do not.  Add special logic
to the test to account for this.
parent 46f7a670
......@@ -227,20 +227,38 @@ add_RunCMake_test(separate_arguments)
add_RunCMake_test(set_property)
add_RunCMake_test(string)
add_RunCMake_test(test_include_dirs)
foreach(var
CMAKE_C_COMPILER_ID
CMAKE_C_COMPILER_VERSION
CMAKE_C_STANDARD_DEFAULT
CMAKE_CXX_COMPILER_ID
CMAKE_CXX_COMPILER_VERSION
CMAKE_CXX_STANDARD_DEFAULT
CMake_TEST_CUDA
)
if(DEFINED ${var})
list(APPEND try_compile_ARGS -D${var}=${${var}})
function(add_RunCMake_test_try_compile)
if(CMAKE_VERSION VERSION_LESS 3.9.20170907 AND "x${CMAKE_CXX_COMPILER_ID}" STREQUAL "xMSVC")
# Older CMake versions do not know about MSVC language standards.
# Approximate our logic from MSVC-CXX.cmake.
if ((CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 19.0.24215.1 AND
CMAKE_CXX_COMPILER_VERSION VERSION_LESS 19.10) OR
CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 19.10.25017)
set(CMAKE_CXX_STANDARD_DEFAULT 14)
elseif (CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 16.0)
set(CMAKE_CXX_STANDARD_DEFAULT "")
else()
unset(CMAKE_CXX_STANDARD_DEFAULT)
endif()
endif()
endforeach()
add_RunCMake_test(try_compile)
foreach(var
CMAKE_C_COMPILER_ID
CMAKE_C_COMPILER_VERSION
CMAKE_C_STANDARD_DEFAULT
CMAKE_CXX_COMPILER_ID
CMAKE_CXX_COMPILER_VERSION
CMAKE_CXX_STANDARD_DEFAULT
CMake_TEST_CUDA
)
if(DEFINED ${var})
list(APPEND try_compile_ARGS -D${var}=${${var}})
endif()
endforeach()
add_RunCMake_test(try_compile)
endfunction()
add_RunCMake_test_try_compile()
add_RunCMake_test(try_run)
add_RunCMake_test(set)
add_RunCMake_test(variable_watch)
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment