Tests: Fix logic to enable RunCMake.try_compile OBJC/OBJCXX cases

CMake itself does not enable the OBJC/OBJCXX languages, so the
`CMAKE_OBJ{C,CXX}_STANDARD_DEFAULT` variables are never defined.
Detect them inside the test instead.
This commit is contained in:
Brad King
2022-10-31 12:48:40 -04:00
parent b641a80d55
commit 1abcb094a7
3 changed files with 27 additions and 11 deletions

View File

@@ -557,9 +557,8 @@ function(add_RunCMake_test_try_compile)
CMake_TEST_CUDA
CMake_TEST_ISPC
CMake_TEST_HIP
CMake_TEST_OBJC
CMake_TEST_FILESYSTEM_1S
CMAKE_OBJC_STANDARD_DEFAULT
CMAKE_OBJCXX_STANDARD_DEFAULT
)
if(DEFINED ${var})
list(APPEND try_compile_ARGS -D${var}=${${var}})

View File

@@ -1,4 +1,18 @@
enable_language(CXX)
file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/info.cmake" "
set(CMAKE_CXX_EXTENSIONS_DEFAULT \"${CMAKE_CXX_EXTENSIONS_DEFAULT}\")
")
if(CMake_TEST_OBJC)
enable_language(OBJC)
enable_language(OBJCXX)
endif()
set(info "")
foreach(var
CMAKE_CXX_EXTENSIONS_DEFAULT
CMAKE_OBJC_STANDARD_DEFAULT
CMAKE_OBJCXX_STANDARD_DEFAULT
)
if(DEFINED ${var})
string(APPEND info "set(${var} \"${${var}}\")\n")
endif()
endforeach()
file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/info.cmake" "${info}")

View File

@@ -1,5 +1,14 @@
include(RunCMake)
# Detect information from the toolchain:
# - CMAKE_CXX_EXTENSIONS_DEFAULT
# - CMAKE_OBJC_STANDARD_DEFAULT
# - CMAKE_OBJCXX_STANDARD_DEFAULT
run_cmake_with_options(Inspect
-DCMake_TEST_OBJC=${CMake_TEST_OBJC}
)
include("${RunCMake_BINARY_DIR}/Inspect-build/info.cmake")
run_cmake(NoArgs)
run_cmake(OneArg)
run_cmake(TwoArgs)
@@ -88,12 +97,6 @@ if(RunCMake_GENERATOR MATCHES "Make|Ninja")
unset(RunCMake_TEST_NO_CLEAN)
endif()
# Lookup CMAKE_CXX_EXTENSIONS_DEFAULT.
# FIXME: Someday we could move this to the top of the file and use it in
# place of some of the values passed by 'Tests/RunCMake/CMakeLists.txt'.
run_cmake(Inspect)
include("${RunCMake_BINARY_DIR}/Inspect-build/info.cmake")
# FIXME: Support more compilers and default standard levels.
if (DEFINED CMAKE_CXX_STANDARD_DEFAULT AND
DEFINED CMAKE_CXX_EXTENSIONS_DEFAULT AND (