Test: Parameterize the language in the CompileFeature test.

This commit is contained in:
Stephen Kelly 2014-05-09 17:27:55 +02:00
parent f5bf9d4311
commit 6a9fdbeb48

View File

@ -34,25 +34,29 @@ if (CMAKE_CXX_COMPILER_ID STREQUAL GNU
) )
endif() endif()
if (CMAKE_CXX_COMPILE_FEATURES) set(CXX_ext cpp)
foreach(feature ${CXX_non_features}) set(CXX_standard_flag 11)
message("Testing feature : ${feature}") foreach(lang CXX)
try_compile(${feature}_works if (CMAKE_${lang}_COMPILE_FEATURES)
"${CMAKE_CURRENT_BINARY_DIR}/${feature}_test" foreach(feature ${${lang}_non_features})
"${CMAKE_CURRENT_SOURCE_DIR}/feature_test.cpp" message("Testing feature : ${feature}")
COMPILE_DEFINITIONS "-DTEST=${CMAKE_CURRENT_SOURCE_DIR}/${feature}.cpp" try_compile(${feature}_works
CMAKE_FLAGS "-DCMAKE_CXX_STANDARD=11" "${CMAKE_CURRENT_BINARY_DIR}/${feature}_test"
OUTPUT_VARIABLE OUTPUT "${CMAKE_CURRENT_SOURCE_DIR}/feature_test.${${lang}_ext}"
) COMPILE_DEFINITIONS "-DTEST=${CMAKE_CURRENT_SOURCE_DIR}/${feature}.${${lang}_ext}"
if (${feature}_works) CMAKE_FLAGS "-DCMAKE_${lang}_STANDARD=${${lang}_standard_flag}"
message(SEND_ERROR OUTPUT_VARIABLE OUTPUT
"Feature ${feature} expected not to work for ${CMAKE_CXX_COMPILER_ID}-${CMAKE_CXX_COMPILER_VERSION}. )
Update the supported features or blacklist it.\n${OUTPUT}") if (${feature}_works)
else() message(SEND_ERROR
message("Testing feature : ${feature} -- Fails, as expected.") "Feature ${feature} expected not to work for ${lang} ${CMAKE_${lang}_COMPILER_ID}-${CMAKE_${lang}_COMPILER_VERSION}.
endif() Update the supported features or blacklist it.\n${OUTPUT}")
endforeach() else()
endif() message("Testing feature : ${feature} -- Fails, as expected.")
endif()
endforeach()
endif()
endforeach()
add_executable(CompileFeatures main.cpp) add_executable(CompileFeatures main.cpp)
set_property(TARGET CompileFeatures set_property(TARGET CompileFeatures