This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "CMake".
The branch, next has been updated via ea660cfeb3d1f9f0fc85e226563d93162b043f83 (commit) via 135fd90a2a3e1f6a700ed59494ee2b54b9d3662c (commit) via 1f19ac4da5af812891be305721f3e3b7eed62cc3 (commit) via 0798d1e5b0a09564b127ae7d26d8c1ea1bc9adad (commit) via 938bd94eb0b34e1b5be12dcceaab641efc8a7e43 (commit) via 462c630b8a6d832dd37562fcd7b00a75e1ec6e82 (commit) via 222ec86f7d9ae838d2e460b89985c797c7c90373 (commit) via 6e909035af73d3ee0ca3e5adef39b4541f0c8be9 (commit) via bfc995cc3b8834281ee86ea2ed248b041d5ad1be (commit) via 1532b9214f79517fe74dc674939601c75f4af300 (commit) via 1f4649e62f6394a6e9af67486e4c41f3e286de47 (commit) via a60027a642f887179513496ef61552db44829652 (commit) from 57eb391335197a75d92530bfcd67ea4087d98066 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=ea660cfeb3d1f9f0fc85e226563d93162b043f83 commit ea660cfeb3d1f9f0fc85e226563d93162b043f83 Merge: 57eb391 135fd90 Author: Stephen Kelly <steve...@gmail.com> AuthorDate: Thu Jan 15 16:31:27 2015 -0500 Commit: CMake Topic Stage <kwro...@kitware.com> CommitDate: Thu Jan 15 16:31:27 2015 -0500 Merge topic 'GNU-4.6-compile-features' into next 135fd90a Features: Record for GNU 4.6. 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. http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=135fd90a2a3e1f6a700ed59494ee2b54b9d3662c commit 135fd90a2a3e1f6a700ed59494ee2b54b9d3662c Author: Stephen Kelly <steve...@gmail.com> AuthorDate: Sat Jan 10 20:05:54 2015 +0100 Commit: Stephen Kelly <steve...@gmail.com> CommitDate: Thu Jan 15 22:16:20 2015 +0100 Features: Record for GNU 4.6. Adjust the CompileFeatures genex_test for the expectation of the OVERRIDE_CONTROL feature group. diff --git a/Modules/Compiler/GNU-C-FeatureTests.cmake b/Modules/Compiler/GNU-C-FeatureTests.cmake index ddac0e8..7e840aa 100644 --- a/Modules/Compiler/GNU-C-FeatureTests.cmake +++ b/Modules/Compiler/GNU-C-FeatureTests.cmake @@ -1,12 +1,12 @@ -set(_cmake_oldestSupported "(__GNUC__ * 100 + __GNUC_MINOR__) >= 407") +set(_cmake_oldestSupported "(__GNUC__ * 100 + __GNUC_MINOR__) >= 406") # 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 "${_cmake_oldestSupported} && defined(__STDC_VERSION__) && __STDC_VERSION__ >= 201000L") +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") diff --git a/Modules/Compiler/GNU-C.cmake b/Modules/Compiler/GNU-C.cmake index 8faf4e4..d5e747d 100644 --- a/Modules/Compiler/GNU-C.cmake +++ b/Modules/Compiler/GNU-C.cmake @@ -29,7 +29,7 @@ macro(cmake_record_c_compile_features) endmacro() set(_result 0) - if (UNIX AND NOT CMAKE_C_COMPILER_VERSION VERSION_LESS 4.7) + 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) diff --git a/Modules/Compiler/GNU-CXX-FeatureTests.cmake b/Modules/Compiler/GNU-CXX-FeatureTests.cmake index 3c6c663..267d658 100644 --- a/Modules/Compiler/GNU-CXX-FeatureTests.cmake +++ b/Modules/Compiler/GNU-CXX-FeatureTests.cmake @@ -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}") @@ -60,7 +60,7 @@ set(_cmake_feature_test_cxx_user_literals "${GNU47_CXX11}") # 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} && ${GNU_CXX0X_DEFINED}") +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}") diff --git a/Modules/Compiler/GNU-CXX.cmake b/Modules/Compiler/GNU-CXX.cmake index c03cc4b..eeada86 100644 --- a/Modules/Compiler/GNU-CXX.cmake +++ b/Modules/Compiler/GNU-CXX.cmake @@ -45,7 +45,7 @@ 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() diff --git a/Tests/CompileFeatures/CMakeLists.txt b/Tests/CompileFeatures/CMakeLists.txt index 5ca1eb7..106f29c 100644 --- a/Tests/CompileFeatures/CMakeLists.txt +++ b/Tests/CompileFeatures/CMakeLists.txt @@ -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 http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=1f19ac4da5af812891be305721f3e3b7eed62cc3 commit 1f19ac4da5af812891be305721f3e3b7eed62cc3 Author: Stephen Kelly <steve...@gmail.com> AuthorDate: Sun Jan 11 18:44:49 2015 +0100 Commit: Stephen Kelly <steve...@gmail.com> CommitDate: Thu Jan 15 22:13:22 2015 +0100 Features: Adjust cxx_variadic_templates unit test for GNU < 4.7. The unit test for this fails with GNU 4.6: Building CXX object CMakeFiles/test_cxx_variadic_templates.dir/cxx_variadic_templates.cpp.o CompileFeatures/cxx_variadic_templates.cpp: In static member function ‘static int Interface<I, Is>::accumulate()’: CompileFeatures/cxx_variadic_templates.cpp:18:31: sorry, unimplemented: cannot expand ‘Is ...’ into a fixed-length argument list CMakeFiles/test_cxx_variadic_templates.dir/build.make:54: recipe for target 'CMakeFiles/test_cxx_variadic_templates.dir/cxx_variadic_templates.cpp.o' failed The workaround is to use a specialization: http://stackoverflow.com/questions/1989552 http://stackoverflow.com/questions/11297376 diff --git a/Tests/CompileFeatures/cxx_variadic_templates.cpp b/Tests/CompileFeatures/cxx_variadic_templates.cpp index 1d5a706..a80e157 100644 --- a/Tests/CompileFeatures/cxx_variadic_templates.cpp +++ b/Tests/CompileFeatures/cxx_variadic_templates.cpp @@ -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() { http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=0798d1e5b0a09564b127ae7d26d8c1ea1bc9adad commit 0798d1e5b0a09564b127ae7d26d8c1ea1bc9adad Author: Stephen Kelly <steve...@gmail.com> AuthorDate: Sun Jan 11 18:43:31 2015 +0100 Commit: Stephen Kelly <steve...@gmail.com> CommitDate: Thu Jan 15 22:13:22 2015 +0100 Features: Extend the generalized_initializers test for GNU < 4.7. That compiler requires a different initializer_list constructor, so update the test to match. diff --git a/Tests/CompileFeatures/cxx_generalized_initializers.cpp b/Tests/CompileFeatures/cxx_generalized_initializers.cpp index 8013ef5..7bf356b 100644 --- a/Tests/CompileFeatures/cxx_generalized_initializers.cpp +++ b/Tests/CompileFeatures/cxx_generalized_initializers.cpp @@ -8,6 +8,7 @@ namespace std { const _E* __begin_; size_t __size_; + initializer_list(const int*, long unsigned int) {} }; } http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=938bd94eb0b34e1b5be12dcceaab641efc8a7e43 commit 938bd94eb0b34e1b5be12dcceaab641efc8a7e43 Author: Stephen Kelly <steve...@gmail.com> AuthorDate: Sun Jan 11 16:22:24 2015 +0100 Commit: Stephen Kelly <steve...@gmail.com> CommitDate: Thu Jan 15 22:13:22 2015 +0100 Features: Test __GXX_EXPERIMENTAL_CXX0X__ macro for GNU < 4.7 compatibility. diff --git a/Modules/Compiler/GNU-CXX-FeatureTests.cmake b/Modules/Compiler/GNU-CXX-FeatureTests.cmake index 8f812da..3c6c663 100644 --- a/Modules/Compiler/GNU-CXX-FeatureTests.cmake +++ b/Modules/Compiler/GNU-CXX-FeatureTests.cmake @@ -54,8 +54,13 @@ 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 "${_cmake_oldestSupported} && ${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}") @@ -64,13 +69,13 @@ 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_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") http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=462c630b8a6d832dd37562fcd7b00a75e1ec6e82 commit 462c630b8a6d832dd37562fcd7b00a75e1ec6e82 Author: Stephen Kelly <steve...@gmail.com> AuthorDate: Sun Jan 11 16:23:34 2015 +0100 Commit: Stephen Kelly <steve...@gmail.com> CommitDate: Thu Jan 15 22:13:22 2015 +0100 Features: Don't test __cplusplus value for CXX98 on GNU. The macro is defined to 1 for GNU 4.6, and such a test is only useful for features in language dialects newer than the default (CXX98 for GNU currently). Test only that it has a truthy value. diff --git a/Modules/Compiler/GNU-CXX-FeatureTests.cmake b/Modules/Compiler/GNU-CXX-FeatureTests.cmake index 03b53e1..8f812da 100644 --- a/Modules/Compiler/GNU-CXX-FeatureTests.cmake +++ b/Modules/Compiler/GNU-CXX-FeatureTests.cmake @@ -102,4 +102,4 @@ set(_cmake_feature_test_cxx_extern_templates "${_cmake_oldestSupported} && __cpl # 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_template_template_parameters "${_cmake_oldestSupported} && __cplusplus") http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=222ec86f7d9ae838d2e460b89985c797c7c90373 commit 222ec86f7d9ae838d2e460b89985c797c7c90373 Author: Stephen Kelly <steve...@gmail.com> AuthorDate: Sun Jan 11 16:20:03 2015 +0100 Commit: Stephen Kelly <steve...@gmail.com> CommitDate: Thu Jan 15 22:13:22 2015 +0100 Features: Test an old value of __STDC_VERSION__ for GNU < 4.7 compatibility. diff --git a/Modules/Compiler/GNU-C-FeatureTests.cmake b/Modules/Compiler/GNU-C-FeatureTests.cmake index dfaeebf..ddac0e8 100644 --- a/Modules/Compiler/GNU-C-FeatureTests.cmake +++ b/Modules/Compiler/GNU-C-FeatureTests.cmake @@ -1,7 +1,12 @@ set(_cmake_oldestSupported "(__GNUC__ * 100 + __GNUC_MINOR__) >= 407") -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 "${_cmake_oldestSupported} && 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") http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=6e909035af73d3ee0ca3e5adef39b4541f0c8be9 commit 6e909035af73d3ee0ca3e5adef39b4541f0c8be9 Author: Stephen Kelly <steve...@gmail.com> AuthorDate: Sun Jan 11 16:09:50 2015 +0100 Commit: Stephen Kelly <steve...@gmail.com> CommitDate: Thu Jan 15 22:13:22 2015 +0100 Features: Record C/CXX dialect flags for GNU 4.6. This release was prior to standardization of C11/CXX11. diff --git a/Modules/Compiler/GNU-C.cmake b/Modules/Compiler/GNU-C.cmake index 8b47880..8faf4e4 100644 --- a/Modules/Compiler/GNU-C.cmake +++ b/Modules/Compiler/GNU-C.cmake @@ -1,15 +1,20 @@ 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) diff --git a/Modules/Compiler/GNU-CXX.cmake b/Modules/Compiler/GNU-CXX.cmake index 6ade85a..c03cc4b 100644 --- a/Modules/Compiler/GNU-CXX.cmake +++ b/Modules/Compiler/GNU-CXX.cmake @@ -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) http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=bfc995cc3b8834281ee86ea2ed248b041d5ad1be commit bfc995cc3b8834281ee86ea2ed248b041d5ad1be Author: Stephen Kelly <steve...@gmail.com> AuthorDate: Sun Jan 11 16:14:26 2015 +0100 Commit: Stephen Kelly <steve...@gmail.com> CommitDate: Thu Jan 15 22:13:22 2015 +0100 Features: Remove wrong content from else() condition. As this is not elseif(), the content has no effect. Rather than changing it to an elseif(), remove the conditional content. All versions of GNU prior to 5.0 default to C90/89. Clang-C.cmake has a similar code block which correctly uses elseif() for setting the default C dialect to C99. That may have been updated from a C90 default at some point, so leave the version condition there in place for now. diff --git a/Modules/Compiler/GNU-C.cmake b/Modules/Compiler/GNU-C.cmake index 3404d22..8b47880 100644 --- a/Modules/Compiler/GNU-C.cmake +++ b/Modules/Compiler/GNU-C.cmake @@ -14,7 +14,7 @@ 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() http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=1532b9214f79517fe74dc674939601c75f4af300 commit 1532b9214f79517fe74dc674939601c75f4af300 Author: Stephen Kelly <steve...@gmail.com> AuthorDate: Sun Jan 11 15:55:09 2015 +0100 Commit: Stephen Kelly <steve...@gmail.com> CommitDate: Thu Jan 15 22:13:22 2015 +0100 Features: Make cxx_noexcept available from GNU 4.6. As listed in the reference document. diff --git a/Modules/Compiler/GNU-CXX-FeatureTests.cmake b/Modules/Compiler/GNU-CXX-FeatureTests.cmake index 6de06dd..03b53e1 100644 --- a/Modules/Compiler/GNU-CXX-FeatureTests.cmake +++ b/Modules/Compiler/GNU-CXX-FeatureTests.cmake @@ -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}") @@ -60,6 +59,7 @@ set(GNU46_CXX11 "${_cmake_oldestSupported} && __cplusplus >= 201103L") 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}") http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=1f4649e62f6394a6e9af67486e4c41f3e286de47 commit 1f4649e62f6394a6e9af67486e4c41f3e286de47 Author: Stephen Kelly <steve...@gmail.com> AuthorDate: Fri Jan 9 20:18:24 2015 +0100 Commit: Stephen Kelly <steve...@gmail.com> CommitDate: Thu Jan 15 22:13:22 2015 +0100 Features: Update the default_dialect test for old GNU-like compilers. Prior to GNU 4.7, GNU defined __cplusplus incorrectly, and defined __GXX_EXPERIMENTAL_CXX0X__ in C++11 mode. diff --git a/Tests/CompileFeatures/default_dialect.cpp b/Tests/CompileFeatures/default_dialect.cpp index 8d97926..a2ca268 100644 --- a/Tests/CompileFeatures/default_dialect.cpp +++ b/Tests/CompileFeatures/default_dialect.cpp @@ -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 http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=a60027a642f887179513496ef61552db44829652 commit a60027a642f887179513496ef61552db44829652 Author: Stephen Kelly <steve...@gmail.com> AuthorDate: Mon Jan 12 21:43:48 2015 +0100 Commit: Stephen Kelly <steve...@gmail.com> CommitDate: Thu Jan 15 22:13:21 2015 +0100 Features: Ensure appropriate return value from feature test macros. GNU-CXX already has complex logic and sets the _result to 0 before tests which may set it to something else. Change the other modules to be consistent with that. diff --git a/Modules/Compiler/AppleClang-C.cmake b/Modules/Compiler/AppleClang-C.cmake index 0665745..16f420f 100644 --- a/Modules/Compiler/AppleClang-C.cmake +++ b/Modules/Compiler/AppleClang-C.cmake @@ -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() diff --git a/Modules/Compiler/AppleClang-CXX.cmake b/Modules/Compiler/AppleClang-CXX.cmake index a508623..978c382 100644 --- a/Modules/Compiler/AppleClang-CXX.cmake +++ b/Modules/Compiler/AppleClang-CXX.cmake @@ -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() diff --git a/Modules/Compiler/Clang-C.cmake b/Modules/Compiler/Clang-C.cmake index ebd5c43..548d0a5 100644 --- a/Modules/Compiler/Clang-C.cmake +++ b/Modules/Compiler/Clang-C.cmake @@ -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() diff --git a/Modules/Compiler/Clang-CXX.cmake b/Modules/Compiler/Clang-CXX.cmake index 6fe0b56..e07eace 100644 --- a/Modules/Compiler/Clang-CXX.cmake +++ b/Modules/Compiler/Clang-CXX.cmake @@ -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() diff --git a/Modules/Compiler/GNU-C.cmake b/Modules/Compiler/GNU-C.cmake index db9089d..3404d22 100644 --- a/Modules/Compiler/GNU-C.cmake +++ b/Modules/Compiler/GNU-C.cmake @@ -23,6 +23,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.7) _get_gcc_features(${CMAKE_C11_STANDARD_COMPILE_OPTION} CMAKE_C11_COMPILE_FEATURES) if (_result EQUAL 0) @@ -31,7 +32,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() diff --git a/Modules/Compiler/GNU-CXX.cmake b/Modules/Compiler/GNU-CXX.cmake index 4a26963..6ade85a 100644 --- a/Modules/Compiler/GNU-CXX.cmake +++ b/Modules/Compiler/GNU-CXX.cmake @@ -49,7 +49,5 @@ macro(cmake_record_cxx_compile_features) if (_result EQUAL 0) _get_gcc_features(${CMAKE_CXX98_STANDARD_COMPILE_OPTION} CMAKE_CXX98_COMPILE_FEATURES) endif() - else() - set(_result 0) endif() endmacro() ----------------------------------------------------------------------- Summary of changes: Modules/Compiler/AppleClang-C.cmake | 3 +-- Modules/Compiler/AppleClang-CXX.cmake | 3 +-- Modules/Compiler/Clang-C.cmake | 3 +-- Modules/Compiler/Clang-CXX.cmake | 3 +-- Modules/Compiler/GNU-C-FeatureTests.cmake | 9 +++++-- Modules/Compiler/GNU-C.cmake | 14 +++++++---- Modules/Compiler/GNU-CXX-FeatureTests.cmake | 25 ++++++++++++-------- Modules/Compiler/GNU-CXX.cmake | 9 +++---- Tests/CompileFeatures/CMakeLists.txt | 8 +++++-- .../cxx_generalized_initializers.cpp | 1 + Tests/CompileFeatures/cxx_variadic_templates.cpp | 4 ++-- Tests/CompileFeatures/default_dialect.cpp | 2 +- 12 files changed, 50 insertions(+), 34 deletions(-) hooks/post-receive -- CMake _______________________________________________ Cmake-commits mailing list Cmake-commits@cmake.org http://public.kitware.com/mailman/listinfo/cmake-commits