diff options
author | Brad King <brad.king@kitware.com> | 2015-01-16 16:07:12 (GMT) |
---|---|---|
committer | CMake Topic Stage <kwrobot@kitware.com> | 2015-01-16 16:07:12 (GMT) |
commit | ba7227a0affed01c67f7a8994bd9373b212314ea (patch) | |
tree | a875ccee684f66edafd3ac2e54c1c56e481e5a92 | |
parent | 287070ceb8eda82cf58595c9ea2dde57b0d6d45e (diff) | |
parent | 06ff525492b32cd3182c185c908c526379766912 (diff) | |
download | CMake-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.txt | 51 | ||||
-rw-r--r-- | Tests/CompileFeatures/genex_test.cpp | 30 |
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; |