[Cmake-commits] CMake branch, next, updated. v3.1.0-rc2-723-g632289f

Stephen Kelly steveire at gmail.com
Tue Nov 18 16:18:52 EST 2014


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  632289f509672ef9ecc620eeab03a800a0bdba63 (commit)
       via  462862131af1d46c8c98e321c45352f3e64985da (commit)
       via  9332aae15258ababc3e796d5d48951d6d2962eb6 (commit)
       via  808f65de9838ccd778ef4e5dc38f4acc52cc682c (commit)
      from  1c8cbcfad84ae237c0c149d1b5e0a4db5d7547c8 (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=632289f509672ef9ecc620eeab03a800a0bdba63
commit 632289f509672ef9ecc620eeab03a800a0bdba63
Merge: 1c8cbcf 4628621
Author:     Stephen Kelly <steveire at gmail.com>
AuthorDate: Tue Nov 18 16:18:50 2014 -0500
Commit:     CMake Topic Stage <kwrobot at kitware.com>
CommitDate: Tue Nov 18 16:18:50 2014 -0500

    Merge topic 'default-lang-dialect' into next
    
    46286213 Features: Fix the default C dialect for Clang and GNU.
    9332aae1 Features: Fix references to CXX compiler version in Clang-C.cmake.
    808f65de Features: Test the CXX compiler only if it has features.


http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=462862131af1d46c8c98e321c45352f3e64985da
commit 462862131af1d46c8c98e321c45352f3e64985da
Author:     Stephen Kelly <steveire at gmail.com>
AuthorDate: Mon Nov 17 23:24:31 2014 +0100
Commit:     Stephen Kelly <steveire at gmail.com>
CommitDate: Tue Nov 18 22:17:10 2014 +0100

    Features: Fix the default C dialect for Clang and GNU.
    
    Clang 3.4 uses C99 by default, and Clang 3.6 uses C11 by default:
    
     http://thread.gmane.org/gmane.comp.compilers.clang.devel/39379
    
    GNU 4.9 uses C90 by default, and GNU 5.0 uses C11 by default:
    
     https://gcc.gnu.org/gcc-5/changes.html
    
    Test that the default compiler settings result in the expected dialect
    macros being defined for both C and CXX.  Remove the unused main.c
    file from the CompileFeatures unit test.

diff --git a/Modules/Compiler/Clang-C.cmake b/Modules/Compiler/Clang-C.cmake
index 411e589..ebd5c43 100644
--- a/Modules/Compiler/Clang-C.cmake
+++ b/Modules/Compiler/Clang-C.cmake
@@ -17,7 +17,11 @@ if(NOT CMAKE_C_COMPILER_VERSION VERSION_LESS 3.4)
   set(CMAKE_C11_EXTENSION_COMPILE_OPTION "-std=gnu11")
 endif()
 
-set(CMAKE_C_STANDARD_DEFAULT 90)
+if(NOT CMAKE_C_COMPILER_VERSION VERSION_LESS 3.6)
+  set(CMAKE_C_STANDARD_DEFAULT 11)
+elseif(NOT CMAKE_C_COMPILER_VERSION VERSION_LESS 3.4)
+  set(CMAKE_C_STANDARD_DEFAULT 99)
+endif()
 
 macro(cmake_record_c_compile_features)
   macro(_get_clang_features std_version list)
diff --git a/Modules/Compiler/GNU-C.cmake b/Modules/Compiler/GNU-C.cmake
index c4a2ed6..9018450 100644
--- a/Modules/Compiler/GNU-C.cmake
+++ b/Modules/Compiler/GNU-C.cmake
@@ -12,8 +12,11 @@ if (NOT CMAKE_C_COMPILER_VERSION VERSION_LESS 4.7)
   set(CMAKE_C11_EXTENSION_COMPILE_OPTION "-std=gnu11")
 endif()
 
-# This may change in a future GNU version.
-set(CMAKE_C_STANDARD_DEFAULT 90)
+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)
+  set(CMAKE_C_STANDARD_DEFAULT 90)
+endif()
 
 macro(cmake_record_c_compile_features)
   macro(_get_gcc_features std_version list)
diff --git a/Tests/CompileFeatures/CMakeLists.txt b/Tests/CompileFeatures/CMakeLists.txt
index 5ce188a..cf86072 100644
--- a/Tests/CompileFeatures/CMakeLists.txt
+++ b/Tests/CompileFeatures/CMakeLists.txt
@@ -77,7 +77,23 @@ foreach(lang CXX C)
   endif()
 endforeach()
 
+if (CMAKE_C_COMPILE_FEATURES)
+  add_executable(default_dialect_C default_dialect.c)
+  target_compile_definitions(default_dialect_C PRIVATE
+    DEFAULT_C11=$<EQUAL:${CMAKE_C_STANDARD_DEFAULT},11>
+    DEFAULT_C99=$<EQUAL:${CMAKE_C_STANDARD_DEFAULT},99>
+    DEFAULT_C90=$<EQUAL:${CMAKE_C_STANDARD_DEFAULT},90>
+  )
+endif()
+
 if (CMAKE_CXX_COMPILE_FEATURES)
+  add_executable(default_dialect default_dialect.cpp)
+  target_compile_definitions(default_dialect PRIVATE
+    DEFAULT_CXX14=$<EQUAL:${CMAKE_CXX_STANDARD_DEFAULT},14>
+    DEFAULT_CXX11=$<EQUAL:${CMAKE_CXX_STANDARD_DEFAULT},11>
+    DEFAULT_CXX98=$<EQUAL:${CMAKE_CXX_STANDARD_DEFAULT},98>
+  )
+
   add_executable(CompileFeatures main.cpp)
   set_property(TARGET CompileFeatures
     PROPERTY COMPILE_FEATURES "cxx_auto_type"
diff --git a/Tests/CompileFeatures/default_dialect.c b/Tests/CompileFeatures/default_dialect.c
new file mode 100644
index 0000000..1b39dec
--- /dev/null
+++ b/Tests/CompileFeatures/default_dialect.c
@@ -0,0 +1,22 @@
+
+#if DEFAULT_C11
+#  if __STDC_VERSION__ != 201112L
+#    error Unexpected value for __STDC_VERSION__.
+#  endif
+#elif DEFAULT_C99
+#  if __STDC_VERSION__ != 199901L
+#    error Unexpected value for __STDC_VERSION__.
+#  endif
+#else
+#  if !DEFAULT_C90
+#    error Buildsystem error
+#  endif
+#  if defined(__STDC_VERSION__)
+#    error Unexpected __STDC_VERSION__ definition
+#  endif
+#endif
+
+int main()
+{
+  return 0;
+}
diff --git a/Tests/CompileFeatures/default_dialect.cpp b/Tests/CompileFeatures/default_dialect.cpp
new file mode 100644
index 0000000..c1b311d
--- /dev/null
+++ b/Tests/CompileFeatures/default_dialect.cpp
@@ -0,0 +1,22 @@
+
+#if DEFAULT_CXX14
+#  if __cplusplus <= 201402L
+#    error Unexpected value for __cplusplus.
+#  endif
+#elif DEFAULT_CXX11
+#  if __cplusplus != 201103L
+#    error Unexpected value for __cplusplus.
+#  endif
+#else
+#  if !DEFAULT_CXX98
+#    error Buildsystem error
+#  endif
+#  if __cplusplus != 199711L
+#    error Unexpected __cplusplus value
+#  endif
+#endif
+
+int main()
+{
+  return 0;
+}
diff --git a/Tests/CompileFeatures/main.c b/Tests/CompileFeatures/main.c
deleted file mode 100644
index 831c5eb2..0000000
--- a/Tests/CompileFeatures/main.c
+++ /dev/null
@@ -1,12 +0,0 @@
-
-int foo(int * restrict a, int * restrict b)
-{
-  (void)a;
-  (void)b;
-  return 0;
-}
-
-int main()
-{
-  return 0;
-}

http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=9332aae15258ababc3e796d5d48951d6d2962eb6
commit 9332aae15258ababc3e796d5d48951d6d2962eb6
Author:     Stephen Kelly <steveire at gmail.com>
AuthorDate: Tue Nov 18 22:02:17 2014 +0100
Commit:     Stephen Kelly <steveire at gmail.com>
CommitDate: Tue Nov 18 22:17:08 2014 +0100

    Features: Fix references to CXX compiler version in Clang-C.cmake.

diff --git a/Modules/Compiler/Clang-C.cmake b/Modules/Compiler/Clang-C.cmake
index 92119ba..411e589 100644
--- a/Modules/Compiler/Clang-C.cmake
+++ b/Modules/Compiler/Clang-C.cmake
@@ -6,7 +6,7 @@ if(WIN32 OR (APPLE AND NOT appleClangPolicy STREQUAL NEW))
   return()
 endif()
 
-if(NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 3.4)
+if(NOT CMAKE_C_COMPILER_VERSION VERSION_LESS 3.4)
   set(CMAKE_C90_STANDARD_COMPILE_OPTION "-std=c90")
   set(CMAKE_C90_EXTENSION_COMPILE_OPTION "-std=gnu90")
 
@@ -24,7 +24,7 @@ macro(cmake_record_c_compile_features)
     record_compiler_features(C "${std_version}" ${list})
   endmacro()
 
-  if (UNIX AND NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 3.4)
+  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)
       _get_clang_features(${CMAKE_C99_STANDARD_COMPILE_OPTION} CMAKE_C99_COMPILE_FEATURES)

http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=808f65de9838ccd778ef4e5dc38f4acc52cc682c
commit 808f65de9838ccd778ef4e5dc38f4acc52cc682c
Author:     Stephen Kelly <steveire at gmail.com>
AuthorDate: Tue Nov 18 21:33:08 2014 +0100
Commit:     Stephen Kelly <steveire at gmail.com>
CommitDate: Tue Nov 18 21:34:01 2014 +0100

    Features: Test the CXX compiler only if it has features.
    
    If using different C and CXX compilers, we might not have a
    feature-full CXX compiler at this point.

diff --git a/Tests/CompileFeatures/CMakeLists.txt b/Tests/CompileFeatures/CMakeLists.txt
index d02ddaf..5ce188a 100644
--- a/Tests/CompileFeatures/CMakeLists.txt
+++ b/Tests/CompileFeatures/CMakeLists.txt
@@ -77,36 +77,38 @@ foreach(lang CXX C)
   endif()
 endforeach()
 
-add_executable(CompileFeatures main.cpp)
-set_property(TARGET CompileFeatures
-  PROPERTY COMPILE_FEATURES "cxx_auto_type"
-)
-set_property(TARGET CompileFeatures
-  PROPERTY CXX_STANDARD_REQUIRED TRUE
-)
+if (CMAKE_CXX_COMPILE_FEATURES)
+  add_executable(CompileFeatures main.cpp)
+  set_property(TARGET CompileFeatures
+    PROPERTY COMPILE_FEATURES "cxx_auto_type"
+  )
+  set_property(TARGET CompileFeatures
+    PROPERTY CXX_STANDARD_REQUIRED TRUE
+  )
 
-add_executable(GenexCompileFeatures main.cpp)
-set_property(TARGET GenexCompileFeatures
-  PROPERTY COMPILE_FEATURES "$<1:cxx_auto_type>;$<0:not_a_feature>"
-)
+  add_executable(GenexCompileFeatures main.cpp)
+  set_property(TARGET GenexCompileFeatures
+    PROPERTY COMPILE_FEATURES "$<1:cxx_auto_type>;$<0:not_a_feature>"
+  )
 
-add_library(iface INTERFACE)
-set_property(TARGET iface
-  PROPERTY INTERFACE_COMPILE_FEATURES "cxx_auto_type"
-)
-add_executable(IfaceCompileFeatures main.cpp)
-target_link_libraries(IfaceCompileFeatures iface)
+  add_library(iface INTERFACE)
+  set_property(TARGET iface
+    PROPERTY INTERFACE_COMPILE_FEATURES "cxx_auto_type"
+  )
+  add_executable(IfaceCompileFeatures main.cpp)
+  target_link_libraries(IfaceCompileFeatures iface)
 
-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>)
+  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>)
 
-add_executable(CompileFeaturesGenex2 genex_test.cpp)
-target_compile_features(CompileFeaturesGenex2 PRIVATE cxx_constexpr)
-target_compile_definitions(CompileFeaturesGenex2 PRIVATE HAVE_OVERRIDE_CONTROL=$<COMPILE_FEATURES:cxx_final,cxx_override>)
+  add_executable(CompileFeaturesGenex2 genex_test.cpp)
+  target_compile_features(CompileFeaturesGenex2 PRIVATE cxx_constexpr)
+  target_compile_definitions(CompileFeaturesGenex2 PRIVATE HAVE_OVERRIDE_CONTROL=$<COMPILE_FEATURES:cxx_final,cxx_override>)
 
-add_library(noexcept_iface INTERFACE)
-target_compile_features(noexcept_iface INTERFACE cxx_noexcept)
-add_executable(CompileFeaturesGenex3 genex_test.cpp)
-target_link_libraries(CompileFeaturesGenex3 PRIVATE noexcept_iface)
-target_compile_definitions(CompileFeaturesGenex3 PRIVATE HAVE_OVERRIDE_CONTROL=$<COMPILE_FEATURES:cxx_final,cxx_override>)
+  add_library(noexcept_iface INTERFACE)
+  target_compile_features(noexcept_iface INTERFACE cxx_noexcept)
+  add_executable(CompileFeaturesGenex3 genex_test.cpp)
+  target_link_libraries(CompileFeaturesGenex3 PRIVATE noexcept_iface)
+  target_compile_definitions(CompileFeaturesGenex3 PRIVATE HAVE_OVERRIDE_CONTROL=$<COMPILE_FEATURES:cxx_final,cxx_override>)
+endif()

-----------------------------------------------------------------------

Summary of changes:
 Modules/Compiler/Clang-C.cmake            |   10 ++--
 Modules/Compiler/GNU-C.cmake              |    7 ++-
 Tests/CompileFeatures/CMakeLists.txt      |   74 ++++++++++++++++++-----------
 Tests/CompileFeatures/default_dialect.c   |   22 +++++++++
 Tests/CompileFeatures/default_dialect.cpp |   22 +++++++++
 Tests/CompileFeatures/main.c              |   12 -----
 6 files changed, 102 insertions(+), 45 deletions(-)
 create mode 100644 Tests/CompileFeatures/default_dialect.c
 create mode 100644 Tests/CompileFeatures/default_dialect.cpp
 delete mode 100644 Tests/CompileFeatures/main.c


hooks/post-receive
-- 
CMake


More information about the Cmake-commits mailing list