[Cmake-commits] CMake branch, next, updated. v3.1.0-rc2-727-g4226efe

Stephen Kelly steveire at gmail.com
Tue Nov 18 17:02:31 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  4226efedb00ae3efe5cdc235f782639133bd5320 (commit)
       via  d51468737169c6c4b8b988d76692a0f8fc390b26 (commit)
      from  5ef3702cef49d16c0309bfa6d875970211ed0752 (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=4226efedb00ae3efe5cdc235f782639133bd5320
commit 4226efedb00ae3efe5cdc235f782639133bd5320
Merge: 5ef3702 d514687
Author:     Stephen Kelly <steveire at gmail.com>
AuthorDate: Tue Nov 18 17:02:30 2014 -0500
Commit:     CMake Topic Stage <kwrobot at kitware.com>
CommitDate: Tue Nov 18 17:02:30 2014 -0500

    Merge topic 'default-lang-dialect' into next
    
    d5146873 Features: Fix the default C dialect for Clang and GNU.


http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=d51468737169c6c4b8b988d76692a0f8fc390b26
commit d51468737169c6c4b8b988d76692a0f8fc390b26
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 23:02:27 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..10d2170
--- /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;
-}

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

Summary of changes:


hooks/post-receive
-- 
CMake


More information about the Cmake-commits mailing list