Merge topic 'GNU-4.6-compile-features'
770ba876
Help: Add notes for topic 'GNU-4.6-compile-features'b15c008f
Features: Record for GNU 4.6.f13a2eb1
Features: Adjust the RunCMake test to use more-common features.1f19ac4d
Features: Adjust cxx_variadic_templates unit test for GNU < 4.7.0798d1e5
Features: Extend the generalized_initializers test for GNU < 4.7.938bd94e
Features: Test __GXX_EXPERIMENTAL_CXX0X__ macro for GNU < 4.7 compatibility.462c630b
Features: Don't test __cplusplus value for CXX98 on GNU.222ec86f
Features: Test an old value of __STDC_VERSION__ for GNU < 4.7 compatibility.6e909035
Features: Record C/CXX dialect flags for GNU 4.6.bfc995cc
Features: Remove wrong content from else() condition.1532b921
Features: Make cxx_noexcept available from GNU 4.6.1f4649e6
Features: Update the default_dialect test for old GNU-like compilers.a60027a6
Features: Ensure appropriate return value from feature test macros.
This commit is contained in:
commit
8b7db43bc6
|
@ -0,0 +1,5 @@
|
|||
GNU-4.6-compile-features
|
||||
------------------------
|
||||
|
||||
* The :manual:`Compile Features <cmake-compile-features(7)>` functionality
|
||||
is now aware of features supported by GNU 4.6 compilers.
|
|
@ -19,6 +19,7 @@ macro(cmake_record_c_compile_features)
|
|||
record_compiler_features(C "${std_version}" ${list})
|
||||
endmacro()
|
||||
|
||||
set(_result 0)
|
||||
if (UNIX AND NOT CMAKE_C_COMPILER_VERSION VERSION_LESS 4.0)
|
||||
_get_appleclang_features(${CMAKE_C11_STANDARD_COMPILE_OPTION} CMAKE_C11_COMPILE_FEATURES)
|
||||
if (_result EQUAL 0)
|
||||
|
@ -27,7 +28,5 @@ macro(cmake_record_c_compile_features)
|
|||
if (_result EQUAL 0)
|
||||
_get_appleclang_features(${CMAKE_C90_STANDARD_COMPILE_OPTION} CMAKE_C90_COMPILE_FEATURES)
|
||||
endif()
|
||||
else()
|
||||
set(_result 0)
|
||||
endif()
|
||||
endmacro()
|
||||
|
|
|
@ -26,6 +26,7 @@ macro(cmake_record_cxx_compile_features)
|
|||
record_compiler_features(CXX "${std_version}" ${list})
|
||||
endmacro()
|
||||
|
||||
set(_result 0)
|
||||
if (UNIX AND NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 4.0)
|
||||
set(_result 0)
|
||||
if(CMAKE_CXX14_STANDARD_COMPILE_OPTION)
|
||||
|
@ -37,7 +38,5 @@ macro(cmake_record_cxx_compile_features)
|
|||
if (_result EQUAL 0)
|
||||
_get_appleclang_features(${CMAKE_CXX98_STANDARD_COMPILE_OPTION} CMAKE_CXX98_COMPILE_FEATURES)
|
||||
endif()
|
||||
else()
|
||||
set(_result 0)
|
||||
endif()
|
||||
endmacro()
|
||||
|
|
|
@ -28,6 +28,7 @@ macro(cmake_record_c_compile_features)
|
|||
record_compiler_features(C "${std_version}" ${list})
|
||||
endmacro()
|
||||
|
||||
set(_result 0)
|
||||
if (UNIX AND NOT CMAKE_C_COMPILER_VERSION VERSION_LESS 3.4)
|
||||
_get_clang_features(${CMAKE_C11_STANDARD_COMPILE_OPTION} CMAKE_C11_COMPILE_FEATURES)
|
||||
if (_result EQUAL 0)
|
||||
|
@ -36,7 +37,5 @@ macro(cmake_record_c_compile_features)
|
|||
if (_result EQUAL 0)
|
||||
_get_clang_features(${CMAKE_C90_STANDARD_COMPILE_OPTION} CMAKE_C90_COMPILE_FEATURES)
|
||||
endif()
|
||||
else()
|
||||
set(_result 0)
|
||||
endif()
|
||||
endmacro()
|
||||
|
|
|
@ -38,6 +38,7 @@ macro(cmake_record_cxx_compile_features)
|
|||
record_compiler_features(CXX "${std_version}" ${list})
|
||||
endmacro()
|
||||
|
||||
set(_result 0)
|
||||
if (UNIX AND NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 3.4)
|
||||
_get_clang_features(${CMAKE_CXX14_STANDARD_COMPILE_OPTION} CMAKE_CXX14_COMPILE_FEATURES)
|
||||
if (_result EQUAL 0)
|
||||
|
@ -46,7 +47,5 @@ macro(cmake_record_cxx_compile_features)
|
|||
if (_result EQUAL 0)
|
||||
_get_clang_features(${CMAKE_CXX98_STANDARD_COMPILE_OPTION} CMAKE_CXX98_COMPILE_FEATURES)
|
||||
endif()
|
||||
else()
|
||||
set(_result 0)
|
||||
endif()
|
||||
endmacro()
|
||||
|
|
|
@ -1,7 +1,12 @@
|
|||
|
||||
set(_cmake_oldestSupported "(__GNUC__ * 100 + __GNUC_MINOR__) >= 407")
|
||||
set(_cmake_oldestSupported "(__GNUC__ * 100 + __GNUC_MINOR__) >= 406")
|
||||
|
||||
set(GNU46_C11 "${_cmake_oldestSupported} && defined(__STDC_VERSION__) && __STDC_VERSION__ >= 201112L")
|
||||
# GNU 4.7 correctly sets __STDC_VERSION__ to 201112L, but GNU 4.6 sets it
|
||||
# to 201000L. As the former is strictly greater than the latter, test only
|
||||
# for the latter. If in the future CMake learns about a C feature which was
|
||||
# introduced with GNU 4.7, that should test for the correct version, similar
|
||||
# to the distinction between __cplusplus and __GXX_EXPERIMENTAL_CXX0X__ tests.
|
||||
set(GNU46_C11 "(__GNUC__ * 100 + __GNUC_MINOR__) >= 406 && defined(__STDC_VERSION__) && __STDC_VERSION__ >= 201000L")
|
||||
set(_cmake_feature_test_c_static_assert "${GNU46_C11}")
|
||||
# Since 4.4 at least:
|
||||
set(GNU44_C99 "${_cmake_oldestSupported} && defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L")
|
||||
|
|
|
@ -1,20 +1,25 @@
|
|||
include(Compiler/GNU)
|
||||
__compiler_gnu(C)
|
||||
|
||||
if (NOT CMAKE_C_COMPILER_VERSION VERSION_LESS 4.7)
|
||||
if (NOT CMAKE_C_COMPILER_VERSION VERSION_LESS 4.6)
|
||||
set(CMAKE_C90_STANDARD_COMPILE_OPTION "-std=c90")
|
||||
set(CMAKE_C90_EXTENSION_COMPILE_OPTION "-std=gnu90")
|
||||
|
||||
set(CMAKE_C99_STANDARD_COMPILE_OPTION "-std=c99")
|
||||
set(CMAKE_C99_EXTENSION_COMPILE_OPTION "-std=gnu99")
|
||||
endif()
|
||||
|
||||
if (NOT CMAKE_C_COMPILER_VERSION VERSION_LESS 4.7)
|
||||
set(CMAKE_C11_STANDARD_COMPILE_OPTION "-std=c11")
|
||||
set(CMAKE_C11_EXTENSION_COMPILE_OPTION "-std=gnu11")
|
||||
elseif (NOT CMAKE_C_COMPILER_VERSION VERSION_LESS 4.6)
|
||||
set(CMAKE_C11_STANDARD_COMPILE_OPTION "-std=c1x")
|
||||
set(CMAKE_C11_EXTENSION_COMPILE_OPTION "-std=gnu1x")
|
||||
endif()
|
||||
|
||||
if (NOT CMAKE_C_COMPILER_VERSION VERSION_LESS 5.0)
|
||||
set(CMAKE_C_STANDARD_DEFAULT 11)
|
||||
else(NOT CMAKE_C_COMPILER_VERSION VERSION_LESS 4.7)
|
||||
else()
|
||||
set(CMAKE_C_STANDARD_DEFAULT 90)
|
||||
endif()
|
||||
|
||||
|
@ -23,7 +28,8 @@ macro(cmake_record_c_compile_features)
|
|||
record_compiler_features(C "${std_version}" ${list})
|
||||
endmacro()
|
||||
|
||||
if (UNIX AND NOT CMAKE_C_COMPILER_VERSION VERSION_LESS 4.7)
|
||||
set(_result 0)
|
||||
if (UNIX AND NOT CMAKE_C_COMPILER_VERSION VERSION_LESS 4.6)
|
||||
_get_gcc_features(${CMAKE_C11_STANDARD_COMPILE_OPTION} CMAKE_C11_COMPILE_FEATURES)
|
||||
if (_result EQUAL 0)
|
||||
_get_gcc_features(${CMAKE_C99_STANDARD_COMPILE_OPTION} CMAKE_C99_COMPILE_FEATURES)
|
||||
|
@ -31,7 +37,5 @@ macro(cmake_record_c_compile_features)
|
|||
if (_result EQUAL 0)
|
||||
_get_gcc_features(${CMAKE_C90_STANDARD_COMPILE_OPTION} CMAKE_C90_COMPILE_FEATURES)
|
||||
endif()
|
||||
else()
|
||||
set(_result 0)
|
||||
endif()
|
||||
endmacro()
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
# Reference: http://gcc.gnu.org/projects/cxx0x.html
|
||||
# http://gcc.gnu.org/projects/cxx1y.html
|
||||
|
||||
set(_cmake_oldestSupported "(__GNUC__ * 100 + __GNUC_MINOR__) >= 407")
|
||||
set(_cmake_oldestSupported "(__GNUC__ * 100 + __GNUC_MINOR__) >= 406")
|
||||
|
||||
set(GNU50_CXX14 "(__GNUC__ * 100 + __GNUC_MINOR__) >= 500 && __cplusplus >= 201402L")
|
||||
set(_cmake_feature_test_cxx_variable_templates "${GNU50_CXX14}")
|
||||
|
@ -46,7 +46,6 @@ set(_cmake_feature_test_cxx_alias_templates "${GNU47_CXX11}")
|
|||
set(_cmake_feature_test_cxx_delegating_constructors "${GNU47_CXX11}")
|
||||
set(_cmake_feature_test_cxx_extended_friend_declarations "${GNU47_CXX11}")
|
||||
set(_cmake_feature_test_cxx_final "${GNU47_CXX11}")
|
||||
set(_cmake_feature_test_cxx_noexcept "${GNU47_CXX11}")
|
||||
set(_cmake_feature_test_cxx_nonstatic_member_init "${GNU47_CXX11}")
|
||||
set(_cmake_feature_test_cxx_override "${GNU47_CXX11}")
|
||||
set(_cmake_feature_test_cxx_user_literals "${GNU47_CXX11}")
|
||||
|
@ -55,22 +54,28 @@ set(_cmake_feature_test_cxx_user_literals "${GNU47_CXX11}")
|
|||
# support -std=c++11. Prior to that, support for C++11 features is technically
|
||||
# experiemental and possibly incomplete (see for example the note below about
|
||||
# cxx_variadic_template_template_parameters)
|
||||
# GNU does not define __cplusplus correctly before version 4.7.
|
||||
# https://gcc.gnu.org/bugzilla/show_bug.cgi?id=1773
|
||||
# __GXX_EXPERIMENTAL_CXX0X__ is defined in prior versions, but may not be
|
||||
# defined in the future.
|
||||
set(GNU_CXX0X_DEFINED "(__cplusplus >= 201103L || (defined(__GXX_EXPERIMENTAL_CXX0X__) && __GXX_EXPERIMENTAL_CXX0X__))")
|
||||
# TODO: Should be supported by GNU 4.6
|
||||
set(GNU46_CXX11 "${_cmake_oldestSupported} && __cplusplus >= 201103L")
|
||||
set(GNU46_CXX11 "(__GNUC__ * 100 + __GNUC_MINOR__) >= 406 && ${GNU_CXX0X_DEFINED}")
|
||||
set(_cmake_feature_test_cxx_constexpr "${GNU46_CXX11}")
|
||||
set(_cmake_feature_test_cxx_defaulted_move_initializers "${GNU46_CXX11}")
|
||||
set(_cmake_feature_test_cxx_enum_forward_declarations "${GNU46_CXX11}")
|
||||
set(_cmake_feature_test_cxx_noexcept "${GNU46_CXX11}")
|
||||
set(_cmake_feature_test_cxx_nullptr "${GNU46_CXX11}")
|
||||
set(_cmake_feature_test_cxx_range_for "${GNU46_CXX11}")
|
||||
set(_cmake_feature_test_cxx_unrestricted_unions "${GNU46_CXX11}")
|
||||
# TODO: Should be supported by GNU 4.5
|
||||
set(GNU45_CXX11 "${_cmake_oldestSupported} && __cplusplus >= 201103L")
|
||||
set(GNU45_CXX11 "${_cmake_oldestSupported} && ${GNU_CXX0X_DEFINED}")
|
||||
set(_cmake_feature_test_cxx_explicit_conversions "${GNU45_CXX11}")
|
||||
set(_cmake_feature_test_cxx_lambdas "${GNU45_CXX11}")
|
||||
set(_cmake_feature_test_cxx_local_type_template_args "${GNU45_CXX11}")
|
||||
set(_cmake_feature_test_cxx_raw_string_literals "${GNU45_CXX11}")
|
||||
# TODO: Should be supported by GNU 4.4
|
||||
set(GNU44_CXX11 "${_cmake_oldestSupported} && __cplusplus >= 201103L")
|
||||
set(GNU44_CXX11 "${_cmake_oldestSupported} && ${GNU_CXX0X_DEFINED}")
|
||||
set(_cmake_feature_test_cxx_auto_type "${GNU44_CXX11}")
|
||||
set(_cmake_feature_test_cxx_defaulted_functions "${GNU44_CXX11}")
|
||||
set(_cmake_feature_test_cxx_deleted_functions "${GNU44_CXX11}")
|
||||
|
@ -90,7 +95,7 @@ set(_cmake_feature_test_cxx_variadic_templates "${GNU44_CXX11}")
|
|||
# templates capability in CMake. See
|
||||
# http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2555.pdf
|
||||
# TODO: Should be supported by GNU 4.3
|
||||
set(GNU43_CXX11 "${_cmake_oldestSupported} && __cplusplus >= 201103L")
|
||||
set(GNU43_CXX11 "${_cmake_oldestSupported} && ${GNU_CXX0X_DEFINED}")
|
||||
set(_cmake_feature_test_cxx_decltype "${GNU43_CXX11}")
|
||||
set(_cmake_feature_test_cxx_default_function_template_args "${GNU43_CXX11}")
|
||||
set(_cmake_feature_test_cxx_long_long_type "${GNU43_CXX11}")
|
||||
|
@ -98,8 +103,8 @@ set(_cmake_feature_test_cxx_right_angle_brackets "${GNU43_CXX11}")
|
|||
set(_cmake_feature_test_cxx_rvalue_references "${GNU43_CXX11}")
|
||||
set(_cmake_feature_test_cxx_static_assert "${GNU43_CXX11}")
|
||||
# TODO: Should be supported since GNU 3.4?
|
||||
set(_cmake_feature_test_cxx_extern_templates "${_cmake_oldestSupported} && __cplusplus >= 201103L")
|
||||
set(_cmake_feature_test_cxx_extern_templates "${_cmake_oldestSupported} && ${GNU_CXX0X_DEFINED}")
|
||||
# TODO: Should be supported forever?
|
||||
set(_cmake_feature_test_cxx_func_identifier "${_cmake_oldestSupported} && __cplusplus >= 201103L")
|
||||
set(_cmake_feature_test_cxx_variadic_macros "${_cmake_oldestSupported} && __cplusplus >= 201103L")
|
||||
set(_cmake_feature_test_cxx_template_template_parameters "${_cmake_oldestSupported} && __cplusplus >= 199711L")
|
||||
set(_cmake_feature_test_cxx_func_identifier "${_cmake_oldestSupported} && ${GNU_CXX0X_DEFINED}")
|
||||
set(_cmake_feature_test_cxx_variadic_macros "${_cmake_oldestSupported} && ${GNU_CXX0X_DEFINED}")
|
||||
set(_cmake_feature_test_cxx_template_template_parameters "${_cmake_oldestSupported} && __cplusplus")
|
||||
|
|
|
@ -11,7 +11,7 @@ else()
|
|||
endif()
|
||||
endif()
|
||||
|
||||
if(NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 4.7)
|
||||
if(NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 4.6)
|
||||
# Supported since 4.3
|
||||
set(CMAKE_CXX98_STANDARD_COMPILE_OPTION "-std=c++98")
|
||||
set(CMAKE_CXX98_EXTENSION_COMPILE_OPTION "-std=gnu++98")
|
||||
|
@ -20,7 +20,10 @@ endif()
|
|||
if (NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 4.7)
|
||||
set(CMAKE_CXX11_STANDARD_COMPILE_OPTION "-std=c++11")
|
||||
set(CMAKE_CXX11_EXTENSION_COMPILE_OPTION "-std=gnu++11")
|
||||
elseif (NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 4.6)
|
||||
# 4.3 supports 0x variants
|
||||
set(CMAKE_CXX11_STANDARD_COMPILE_OPTION "-std=c++0x")
|
||||
set(CMAKE_CXX11_EXTENSION_COMPILE_OPTION "-std=gnu++0x")
|
||||
endif()
|
||||
|
||||
if (NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 4.9)
|
||||
|
@ -42,14 +45,12 @@ macro(cmake_record_cxx_compile_features)
|
|||
if (UNIX AND NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 4.8)
|
||||
_get_gcc_features(${CMAKE_CXX14_STANDARD_COMPILE_OPTION} CMAKE_CXX14_COMPILE_FEATURES)
|
||||
endif()
|
||||
if (UNIX AND NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 4.7)
|
||||
if (UNIX AND NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 4.6)
|
||||
if (_result EQUAL 0)
|
||||
_get_gcc_features(${CMAKE_CXX11_STANDARD_COMPILE_OPTION} CMAKE_CXX11_COMPILE_FEATURES)
|
||||
endif()
|
||||
if (_result EQUAL 0)
|
||||
_get_gcc_features(${CMAKE_CXX98_STANDARD_COMPILE_OPTION} CMAKE_CXX98_COMPILE_FEATURES)
|
||||
endif()
|
||||
else()
|
||||
set(_result 0)
|
||||
endif()
|
||||
endmacro()
|
||||
|
|
|
@ -142,23 +142,24 @@ if (CMAKE_CXX_COMPILE_FEATURES)
|
|||
add_executable(IfaceCompileFeatures main.cpp)
|
||||
target_link_libraries(IfaceCompileFeatures iface)
|
||||
|
||||
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_OVERRIDE_CONTROL=1
|
||||
-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_OVERRIDE_CONTROL=1
|
||||
-DEXPECT_INHERITING_CONSTRUCTORS=0
|
||||
-DEXPECT_FINAL=1
|
||||
-DEXPECT_INHERITING_CONSTRUCTORS_AND_FINAL=0
|
||||
)
|
||||
else()
|
||||
add_definitions(
|
||||
-DEXPECT_OVERRIDE_CONTROL=0
|
||||
-DEXPECT_INHERITING_CONSTRUCTORS=0
|
||||
-DEXPECT_FINAL=0
|
||||
-DEXPECT_INHERITING_CONSTRUCTORS_AND_FINAL=0
|
||||
|
@ -166,6 +167,7 @@ if (CMAKE_CXX_COMPILE_FEATURES)
|
|||
endif()
|
||||
elseif(CMAKE_CXX_COMPILER_ID STREQUAL "Clang")
|
||||
add_definitions(
|
||||
-DEXPECT_OVERRIDE_CONTROL=1
|
||||
-DEXPECT_INHERITING_CONSTRUCTORS=1
|
||||
-DEXPECT_FINAL=1
|
||||
-DEXPECT_INHERITING_CONSTRUCTORS_AND_FINAL=1
|
||||
|
@ -173,12 +175,14 @@ if (CMAKE_CXX_COMPILE_FEATURES)
|
|||
elseif(CMAKE_CXX_COMPILER_ID STREQUAL "AppleClang")
|
||||
if (NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 5.0)
|
||||
add_definitions(
|
||||
-DEXPECT_OVERRIDE_CONTROL=1
|
||||
-DEXPECT_INHERITING_CONSTRUCTORS=1
|
||||
-DEXPECT_FINAL=1
|
||||
-DEXPECT_INHERITING_CONSTRUCTORS_AND_FINAL=1
|
||||
)
|
||||
else()
|
||||
add_definitions(
|
||||
-DEXPECT_OVERRIDE_CONTROL=1
|
||||
-DEXPECT_INHERITING_CONSTRUCTORS=0
|
||||
-DEXPECT_FINAL=1
|
||||
-DEXPECT_INHERITING_CONSTRUCTORS_AND_FINAL=0
|
||||
|
|
|
@ -8,6 +8,7 @@ namespace std {
|
|||
const _E* __begin_;
|
||||
size_t __size_;
|
||||
|
||||
initializer_list(const int*, long unsigned int) {}
|
||||
};
|
||||
}
|
||||
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
template<int I, int... Is>
|
||||
template<int... Is>
|
||||
struct Interface;
|
||||
|
||||
template<int I>
|
||||
|
@ -11,7 +11,7 @@ struct Interface<I>
|
|||
};
|
||||
|
||||
template<int I, int... Is>
|
||||
struct Interface
|
||||
struct Interface<I, Is...>
|
||||
{
|
||||
static int accumulate()
|
||||
{
|
||||
|
|
|
@ -14,7 +14,7 @@ Outputter<__cplusplus> o;
|
|||
# if !DEFAULT_CXX98
|
||||
# error Buildsystem error
|
||||
# endif
|
||||
# if __cplusplus != 199711L
|
||||
# if __cplusplus != 199711L && __cplusplus != 1 && !defined(__GXX_EXPERIMENTAL_CXX0X__)
|
||||
Outputter<__cplusplus> o;
|
||||
# endif
|
||||
#endif
|
||||
|
|
|
@ -3,12 +3,12 @@ add_library(empty1 empty.cpp)
|
|||
|
||||
add_library(empty2 INTERFACE)
|
||||
add_library(empty3 INTERFACE)
|
||||
target_compile_features(empty3 INTERFACE cxx_constexpr)
|
||||
target_compile_features(empty3 INTERFACE cxx_static_assert)
|
||||
|
||||
target_link_libraries(empty1
|
||||
# When starting, $<COMPILE_FEATURES:cxx_final> is '0', so 'freeze' the
|
||||
# When starting, $<COMPILE_FEATURES:cxx_nullptr> is '0', so 'freeze' the
|
||||
# CXX_STANDARD at 98 during computation.
|
||||
$<$<COMPILE_FEATURES:cxx_final>:empty2>
|
||||
$<$<COMPILE_FEATURES:cxx_nullptr>:empty2>
|
||||
# This would add cxx_constexpr, but that would require CXX_STANDARD = 11,
|
||||
# which is not allowed after freeze. Report an error.
|
||||
empty3
|
||||
|
|
|
@ -3,12 +3,12 @@ add_library(empty1 empty.cpp)
|
|||
|
||||
add_library(empty2 INTERFACE)
|
||||
add_library(empty3 INTERFACE)
|
||||
target_compile_features(empty3 INTERFACE cxx_constexpr)
|
||||
target_compile_features(empty3 INTERFACE cxx_static_assert)
|
||||
|
||||
target_link_libraries(empty1
|
||||
$<$<COMPILE_FEATURES:cxx_final>:empty2>
|
||||
$<$<COMPILE_FEATURES:cxx_nullptr>:empty2>
|
||||
empty3
|
||||
)
|
||||
# This, or populating the COMPILE_FEATURES property with a feature in the
|
||||
# same standard as cxx_final, solves the cycle above.
|
||||
# same standard as cxx_nullptr, solves the cycle above.
|
||||
set_property(TARGET empty1 PROPERTY CXX_STANDARD 11)
|
||||
|
|
Loading…
Reference in New Issue