summaryrefslogtreecommitdiffstats
path: root/Tests/CompileFeatures/CMakeLists.txt
diff options
context:
space:
mode:
authorBrad King <brad.king@kitware.com>2014-05-08 15:28:03 (GMT)
committerCMake Topic Stage <kwrobot@kitware.com>2014-05-08 15:28:03 (GMT)
commitf1d504d6cd1812812520326171c4819febb76325 (patch)
tree03a37ef4e49bbc5b024df2aa111ae88808bf5e53 /Tests/CompileFeatures/CMakeLists.txt
parenta07b979c1c1b6e89209889f4b1fe70d0e9ca6d45 (diff)
parent9cbc63e40caa1c3afd771d1e20c4c4c188953c00 (diff)
downloadCMake-f1d504d6cd1812812520326171c4819febb76325.zip
CMake-f1d504d6cd1812812520326171c4819febb76325.tar.gz
CMake-f1d504d6cd1812812520326171c4819febb76325.tar.bz2
Merge topic 'GNU-4.7-features'
9cbc63e4 Features: Record for GNU 4.7.
Diffstat (limited to 'Tests/CompileFeatures/CMakeLists.txt')
-rw-r--r--Tests/CompileFeatures/CMakeLists.txt25
1 files changed, 18 insertions, 7 deletions
diff --git a/Tests/CompileFeatures/CMakeLists.txt b/Tests/CompileFeatures/CMakeLists.txt
index a991e77..274c5ba 100644
--- a/Tests/CompileFeatures/CMakeLists.txt
+++ b/Tests/CompileFeatures/CMakeLists.txt
@@ -11,22 +11,33 @@ if (NOT CMAKE_CXX_COMPILE_FEATURES)
return()
endif()
-macro(run_test feature)
- if (";${CMAKE_CXX_COMPILE_FEATURES};" MATCHES ${feature})
- add_library(test_${feature} OBJECT ${feature}.cpp)
+macro(run_test feature lang)
+ if (";${CMAKE_${lang}_COMPILE_FEATURES};" MATCHES ${feature})
+ add_library(test_${feature} OBJECT ${feature})
set_property(TARGET test_${feature}
PROPERTY COMPILE_FEATURES "${feature}"
)
else()
- message("Not supported: ${feature}")
+ list(APPEND ${lang}_non_features ${feature})
endif()
endmacro()
-get_property(features GLOBAL PROPERTY CMAKE_CXX_KNOWN_FEATURES)
-foreach(feature ${features})
- run_test(${feature})
+get_property(cxx_features GLOBAL PROPERTY CMAKE_CXX_KNOWN_FEATURES)
+foreach(feature ${cxx_features})
+ run_test(${feature} CXX)
endforeach()
+if (CMAKE_CXX_COMPILE_FEATURES)
+ include(CheckCXXSourceCompiles)
+ foreach(feature ${CXX_non_features})
+ check_cxx_source_compiles("#include \"${CMAKE_CURRENT_SOURCE_DIR}/${feature}.cpp\"\nint main() { return 0; }\n" ${feature}_works)
+ if (${feature}_works)
+ message(SEND_ERROR
+ "Feature ${feature} expected not to work for ${CMAKE_CXX_COMPILER_ID}-${CMAKE_CXX_COMPILER_VERSION}. Update the supported features or blacklist it.")
+ endif()
+ endforeach()
+endif()
+
add_executable(CompileFeatures main.cpp)
set_property(TARGET CompileFeatures
PROPERTY COMPILE_FEATURES "cxx_auto_type"