summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBrad King <brad.king@kitware.com>2015-01-16 16:07:12 (GMT)
committerCMake Topic Stage <kwrobot@kitware.com>2015-01-16 16:07:12 (GMT)
commitba7227a0affed01c67f7a8994bd9373b212314ea (patch)
treea875ccee684f66edafd3ac2e54c1c56e481e5a92
parent287070ceb8eda82cf58595c9ea2dde57b0d6d45e (diff)
parent06ff525492b32cd3182c185c908c526379766912 (diff)
downloadCMake-ba7227a0affed01c67f7a8994bd9373b212314ea.zip
CMake-ba7227a0affed01c67f7a8994bd9373b212314ea.tar.gz
CMake-ba7227a0affed01c67f7a8994bd9373b212314ea.tar.bz2
Merge topic 'extend-COMPILE_FEATURES-test'
06ff5254 Features: Extend the tests for the COMPILE_FEATURES genex.
-rw-r--r--Tests/CompileFeatures/CMakeLists.txt51
-rw-r--r--Tests/CompileFeatures/genex_test.cpp30
2 files changed, 81 insertions, 0 deletions
diff --git a/Tests/CompileFeatures/CMakeLists.txt b/Tests/CompileFeatures/CMakeLists.txt
index 4308508..5ca1eb7 100644
--- a/Tests/CompileFeatures/CMakeLists.txt
+++ b/Tests/CompileFeatures/CMakeLists.txt
@@ -144,11 +144,56 @@ if (CMAKE_CXX_COMPILE_FEATURES)
add_definitions(-DEXPECT_OVERRIDE_CONTROL=1)
+ if (CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
+ if (NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 4.8)
+ add_definitions(
+ -DEXPECT_INHERITING_CONSTRUCTORS=1
+ -DEXPECT_FINAL=1
+ -DEXPECT_INHERITING_CONSTRUCTORS_AND_FINAL=1
+ )
+ elseif (NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 4.7)
+ add_definitions(
+ -DEXPECT_INHERITING_CONSTRUCTORS=0
+ -DEXPECT_FINAL=1
+ -DEXPECT_INHERITING_CONSTRUCTORS_AND_FINAL=0
+ )
+ else()
+ add_definitions(
+ -DEXPECT_INHERITING_CONSTRUCTORS=0
+ -DEXPECT_FINAL=0
+ -DEXPECT_INHERITING_CONSTRUCTORS_AND_FINAL=0
+ )
+ endif()
+ elseif(CMAKE_CXX_COMPILER_ID STREQUAL "Clang")
+ add_definitions(
+ -DEXPECT_INHERITING_CONSTRUCTORS=1
+ -DEXPECT_FINAL=1
+ -DEXPECT_INHERITING_CONSTRUCTORS_AND_FINAL=1
+ )
+ elseif(CMAKE_CXX_COMPILER_ID STREQUAL "AppleClang")
+ if (NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 5.0)
+ add_definitions(
+ -DEXPECT_INHERITING_CONSTRUCTORS=1
+ -DEXPECT_FINAL=1
+ -DEXPECT_INHERITING_CONSTRUCTORS_AND_FINAL=1
+ )
+ else()
+ add_definitions(
+ -DEXPECT_INHERITING_CONSTRUCTORS=0
+ -DEXPECT_FINAL=1
+ -DEXPECT_INHERITING_CONSTRUCTORS_AND_FINAL=0
+ )
+ endif()
+ endif()
+
add_executable(CompileFeaturesGenex genex_test.cpp)
set_property(TARGET CompileFeaturesGenex PROPERTY CXX_STANDARD 11)
target_compile_definitions(CompileFeaturesGenex PRIVATE
HAVE_OVERRIDE_CONTROL=$<COMPILE_FEATURES:cxx_final,cxx_override>
HAVE_NULLPTR=$<COMPILE_FEATURES:cxx_nullptr>
+ HAVE_INHERITING_CONSTRUCTORS=$<COMPILE_FEATURES:cxx_inheriting_constructors>
+ HAVE_FINAL=$<COMPILE_FEATURES:cxx_final>
+ HAVE_INHERITING_CONSTRUCTORS_AND_FINAL=$<COMPILE_FEATURES:cxx_inheriting_constructors,cxx_final>
)
add_executable(CompileFeaturesGenex2 genex_test.cpp)
@@ -156,6 +201,9 @@ if (CMAKE_CXX_COMPILE_FEATURES)
target_compile_definitions(CompileFeaturesGenex2 PRIVATE
HAVE_OVERRIDE_CONTROL=$<COMPILE_FEATURES:cxx_final,cxx_override>
HAVE_NULLPTR=$<COMPILE_FEATURES:cxx_nullptr>
+ HAVE_INHERITING_CONSTRUCTORS=$<COMPILE_FEATURES:cxx_inheriting_constructors>
+ HAVE_FINAL=$<COMPILE_FEATURES:cxx_final>
+ HAVE_INHERITING_CONSTRUCTORS_AND_FINAL=$<COMPILE_FEATURES:cxx_inheriting_constructors,cxx_final>
)
add_library(static_assert_iface INTERFACE)
@@ -165,5 +213,8 @@ if (CMAKE_CXX_COMPILE_FEATURES)
target_compile_definitions(CompileFeaturesGenex3 PRIVATE
HAVE_OVERRIDE_CONTROL=$<COMPILE_FEATURES:cxx_final,cxx_override>
HAVE_NULLPTR=$<COMPILE_FEATURES:cxx_nullptr>
+ HAVE_INHERITING_CONSTRUCTORS=$<COMPILE_FEATURES:cxx_inheriting_constructors>
+ HAVE_FINAL=$<COMPILE_FEATURES:cxx_final>
+ HAVE_INHERITING_CONSTRUCTORS_AND_FINAL=$<COMPILE_FEATURES:cxx_inheriting_constructors,cxx_final>
)
endif()
diff --git a/Tests/CompileFeatures/genex_test.cpp b/Tests/CompileFeatures/genex_test.cpp
index f667cc4..0389dbd 100644
--- a/Tests/CompileFeatures/genex_test.cpp
+++ b/Tests/CompileFeatures/genex_test.cpp
@@ -21,6 +21,36 @@ struct B final : A
#error "Expect nullptr feature"
#else
+#if !HAVE_INHERITING_CONSTRUCTORS
+# if EXPECT_INHERITING_CONSTRUCTORS
+# error Expect cxx_inheriting_constructors support
+# endif
+#else
+# if !EXPECT_INHERITING_CONSTRUCTORS
+# error Expect no cxx_inheriting_constructors support
+# endif
+#endif
+
+#if !HAVE_FINAL
+# if EXPECT_FINAL
+# error Expect cxx_final support
+# endif
+#else
+# if !EXPECT_FINAL
+# error Expect no cxx_final support
+# endif
+#endif
+
+#if !HAVE_INHERITING_CONSTRUCTORS_AND_FINAL
+# if EXPECT_INHERITING_CONSTRUCTORS_AND_FINAL
+# error Expect cxx_inheriting_constructors and cxx_final support
+# endif
+#else
+# if !EXPECT_INHERITING_CONSTRUCTORS_AND_FINAL
+# error Expect no combined cxx_inheriting_constructors and cxx_final support
+# endif
+#endif
+
const char* getString()
{
return nullptr;