Tests: Simplify RunCMake.CompileFeatures introspection

This commit is contained in:
Raul Tambre
2021-08-12 17:53:29 +03:00
parent fc3a1cbdd8
commit 29e2b85171
4 changed files with 24 additions and 60 deletions

View File

@@ -310,7 +310,7 @@ add_RunCMake_test(TargetProperties)
add_RunCMake_test(ToolchainFile)
add_RunCMake_test(find_dependency)
add_RunCMake_test(CompileDefinitions)
add_RunCMake_test(CompileFeatures)
add_RunCMake_test(CompileFeatures -DCMake_NO_C_STANDARD=${CMake_NO_C_STANDARD} -DCMake_NO_CXX_STANDARD=${CMake_NO_CXX_STANDARD})
add_RunCMake_test(Policy)
add_RunCMake_test(PolicyScope)
add_RunCMake_test(WriteBasicConfigVersionFile)

View File

@@ -9,17 +9,8 @@ run_cmake(NotAFeature_OriginDebugGenex)
run_cmake(NotAFeature_OriginDebugTransitive)
run_cmake(NotAFeature_OriginDebugCommand)
run_cmake(generate_feature_list)
file(READ
"${RunCMake_BINARY_DIR}/generate_feature_list-build/c_features.txt"
C_FEATURES
)
file(READ
"${RunCMake_BINARY_DIR}/generate_feature_list-build/cxx_features.txt"
CXX_FEATURES
)
include("${RunCMake_BINARY_DIR}/generate_feature_list-build/c_standard_default.cmake")
include("${RunCMake_BINARY_DIR}/generate_feature_list-build/cxx_standard_default.cmake")
run_cmake(compiler_introspection)
include("${RunCMake_BINARY_DIR}/compiler_introspection-build/info.cmake")
if (NOT C_FEATURES)
run_cmake(NoSupportedCFeatures)
@@ -47,15 +38,11 @@ if(CXX_STANDARD_DEFAULT)
run_cmake(NotAStandard)
foreach(standard 98 11)
file(READ
"${RunCMake_BINARY_DIR}/generate_feature_list-build/cxx${standard}_flag.txt"
CXX${standard}_FLAG
)
if (CXX${standard}_FLAG STREQUAL NOTFOUND)
run_cmake(RequireCXX${standard})
run_cmake(RequireCXX${standard}Variable)
endif()
if (CXX${standard}EXT_FLAG STREQUAL NOTFOUND)
if (CXX${standard}_EXT_FLAG STREQUAL NOTFOUND)
run_cmake(RequireCXX${standard}Ext)
run_cmake(RequireCXX${standard}ExtVariable)
endif()

View File

@@ -0,0 +1,20 @@
enable_language(C CXX)
macro(info lang)
string(APPEND info "\
set(${lang}_STANDARD_DEFAULT ${CMAKE_${lang}_STANDARD_DEFAULT})
set(${lang}_EXTENSIONS_DEFAULT ${CMAKE_${lang}_EXTENSIONS_DEFAULT})
set(${lang}_FEATURES ${CMAKE_${lang}_COMPILE_FEATURES})
")
foreach(standard ${ARGN})
string(APPEND info "\
set(${lang}${standard}_FLAG ${CMAKE_${lang}${standard}_STANDARD_COMPILE_OPTION})
set(${lang}${standard}_EXT_FLAG ${CMAKE_${lang}${standard}_EXTENSION_COMPILE_OPTION})
")
endforeach()
endmacro()
info(C 90 99 11 17 23)
info(CXX 98 11 14 17 20 23)
file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/info.cmake" "${info}")

View File

@@ -1,43 +0,0 @@
enable_language(C)
file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/c_features.txt"
"${CMAKE_C_COMPILE_FEATURES}"
)
file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/cxx_features.txt"
"${CMAKE_CXX_COMPILE_FEATURES}"
)
if(DEFINED CMAKE_C_STANDARD_DEFAULT)
set(c_standard_default_code "set(C_STANDARD_DEFAULT \"${CMAKE_C_STANDARD_DEFAULT}\")\n")
else()
set(c_standard_default_code "unset(C_STANDARD_DEFAULT)\n")
endif()
file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/c_standard_default.cmake" "${c_standard_default_code}")
if(DEFINED CMAKE_CXX_STANDARD_DEFAULT)
set(cxx_standard_default_code "set(CXX_STANDARD_DEFAULT \"${CMAKE_CXX_STANDARD_DEFAULT}\")\n")
else()
set(cxx_standard_default_code "unset(CXX_STANDARD_DEFAULT)\n")
endif()
file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/cxx_standard_default.cmake" "${cxx_standard_default_code}")
foreach(standard 98 11)
set(CXX${standard}_FLAG NOTFOUND)
if (DEFINED CMAKE_CXX${standard}_STANDARD_COMPILE_OPTION)
set(CXX${standard}_FLAG ${CMAKE_CXX${standard}_STANDARD_COMPILE_OPTION})
endif()
file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/cxx${standard}_flag.txt"
"${CXX${standard}_FLAG}"
)
set(CXX${standard}EXT_FLAG NOTFOUND)
if (DEFINED CMAKE_CXX${standard}_EXTENSION_COMPILE_OPTION)
set(CXX${standard}EXT_FLAG ${CMAKE_CXX${standard}_EXTENSION_COMPILE_OPTION})
endif()
file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/cxx${standard}ext_flag.txt"
"${CXX${standard}EXT_FLAG}"
)
endforeach()