|
|
@@ -11,7 +11,7 @@ get_property(c_known_features GLOBAL PROPERTY CMAKE_C_KNOWN_FEATURES)
|
|
|
write_compiler_detection_header(
|
|
|
FILE "${CMAKE_CURRENT_BINARY_DIR}/test_compiler_detection.h"
|
|
|
PREFIX TEST
|
|
|
- COMPILERS GNU Clang AppleClang
|
|
|
+ COMPILERS GNU Clang AppleClang MSVC
|
|
|
VERSION 3.1
|
|
|
PROLOG "// something"
|
|
|
EPILOG "// more"
|
|
|
@@ -64,6 +64,18 @@ if (CMAKE_CXX_COMPILER_ID STREQUAL "GNU"
|
|
|
list(APPEND false_defs EXPECTED_COMPILER_CXX_VARIADIC_TEMPLATES)
|
|
|
endif()
|
|
|
|
|
|
+# for msvc the compiler version determines which c++11 features are available.
|
|
|
+# Both variadic templates and delegating constructors support exist in
|
|
|
+# all versions that we write compile headers for.
|
|
|
+if (CMAKE_CXX_COMPILER_ID STREQUAL "MSVC" AND
|
|
|
+ ";${CMAKE_CXX_COMPILE_FEATURES};" MATCHES ";cxx_delegating_constructors;")
|
|
|
+ list(APPEND true_defs EXPECTED_COMPILER_CXX_DELEGATING_CONSTRUCTORS)
|
|
|
+ list(APPEND true_defs EXPECTED_COMPILER_CXX_VARIADIC_TEMPLATES)
|
|
|
+else(CMAKE_CXX_COMPILER_ID STREQUAL "MSVC")
|
|
|
+ list(APPEND false_defs EXPECTED_COMPILER_CXX_DELEGATING_CONSTRUCTORS)
|
|
|
+ list(APPEND false_defs EXPECTED_COMPILER_CXX_VARIADIC_TEMPLATES)
|
|
|
+endif()
|
|
|
+
|
|
|
if (CMAKE_C_COMPILER_ID STREQUAL "GNU"
|
|
|
OR CMAKE_C_COMPILER_ID STREQUAL "Clang"
|
|
|
OR CMAKE_C_COMPILER_ID STREQUAL "AppleClang")
|
|
|
@@ -81,7 +93,7 @@ write_compiler_detection_header(
|
|
|
PREFIX MULTI
|
|
|
OUTPUT_FILES_VAR multi_files
|
|
|
OUTPUT_DIR "${CMAKE_CURRENT_BINARY_DIR}/compiler_multi_files/compiler_support"
|
|
|
- COMPILERS GNU Clang AppleClang
|
|
|
+ COMPILERS GNU Clang AppleClang MSVC
|
|
|
VERSION 3.1
|
|
|
FEATURES
|
|
|
${cxx_known_features} ${c_known_features}
|