[Cmake-commits] CMake branch, master, updated. v3.10.1-690-g0d22a23

Kitware Robot kwrobot at kitware.com
Sat Dec 23 08:25:06 EST 2017


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, master has been updated
       via  0d22a23fd2382320907d8d3b97d8784281c40681 (commit)
       via  31d59ff3b104f012d5eca9e15c1558e2c67ef495 (commit)
       via  31c6b9adbff0fd7113ce4b97bc4ad9514615deb8 (commit)
       via  05af537ecc6b89af5f0bb8051b63d08fb105e36b (commit)
      from  89ed729af150b7850976843475bc1f3058eea86d (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 -----------------------------------------------------------------
https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=0d22a23fd2382320907d8d3b97d8784281c40681
commit 0d22a23fd2382320907d8d3b97d8784281c40681
Merge: 89ed729 31d59ff
Author:     Brad King <brad.king at kitware.com>
AuthorDate: Sat Dec 23 13:18:52 2017 +0000
Commit:     Kitware Robot <kwrobot at kitware.com>
CommitDate: Sat Dec 23 08:19:47 2017 -0500

    Merge topic 'self-c++17'
    
    31d59ff3 Compile CMake as C++17 if supported by the compiler
    31c6b9ad Generalize check for C++14 constructs
    05af537e cmGlobalNinjaGenerator: Avoid using deprecated std::ptr_fun
    
    Acked-by: Kitware Robot <kwrobot at kitware.com>
    Acked-by: Pavel Solodovnikov <hellyeahdominate at gmail.com>
    Merge-request: !1614


https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=31d59ff3b104f012d5eca9e15c1558e2c67ef495
commit 31d59ff3b104f012d5eca9e15c1558e2c67ef495
Author:     Brad King <brad.king at kitware.com>
AuthorDate: Wed Dec 6 11:06:12 2017 -0500
Commit:     Brad King <brad.king at kitware.com>
CommitDate: Fri Dec 22 09:05:54 2017 -0500

    Compile CMake as C++17 if supported by the compiler
    
    Add a check that a simple source file can compile as C++17 that uses
    some of the features we need.  Do this only when hosted by CMake 3.8
    or above because those versions are aware of C++17.
    
    Check for unordered_map as we do in bootstrap since commit 375eca7881
    (bootstrap: Check support for unordered_map from compiler mode,
    2017-11-30).  Also maintain the existing C++14 cstdio check.

diff --git a/CMakeLists.txt b/CMakeLists.txt
index 945ae8d..e4d2a9a 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -64,11 +64,20 @@ if(NOT DEFINED CMAKE_CXX_STANDARD AND NOT CMake_NO_CXX_STANDARD)
   if (CMAKE_CXX_COMPILER_ID STREQUAL SunPro AND CMAKE_CXX_COMPILER_VERSION VERSION_LESS 5.14)
     set(CMAKE_CXX_STANDARD 98)
   else()
-    include(${CMake_SOURCE_DIR}/Source/Checks/cm_cxx14_check.cmake)
-    if(NOT CMake_CXX14_BROKEN)
-      set(CMAKE_CXX_STANDARD 14)
+    if(NOT CMAKE_VERSION VERSION_LESS 3.8)
+      include(${CMake_SOURCE_DIR}/Source/Checks/cm_cxx17_check.cmake)
     else()
-      set(CMAKE_CXX_STANDARD 11)
+      set(CMake_CXX17_BROKEN 1)
+    endif()
+    if(NOT CMake_CXX17_BROKEN)
+      set(CMAKE_CXX_STANDARD 17)
+    else()
+      include(${CMake_SOURCE_DIR}/Source/Checks/cm_cxx14_check.cmake)
+      if(NOT CMake_CXX14_BROKEN)
+        set(CMAKE_CXX_STANDARD 14)
+      else()
+        set(CMAKE_CXX_STANDARD 11)
+      endif()
     endif()
   endif()
 endif()
diff --git a/Source/Checks/cm_cxx17_check.cmake b/Source/Checks/cm_cxx17_check.cmake
new file mode 100644
index 0000000..83d3971
--- /dev/null
+++ b/Source/Checks/cm_cxx17_check.cmake
@@ -0,0 +1,36 @@
+set(CMake_CXX17_BROKEN 0)
+if(CMAKE_CXX_COMPILER_ID MATCHES "GNU|Clang")
+  if(NOT CMAKE_CXX17_STANDARD_COMPILE_OPTION)
+    set(CMake_CXX17_WORKS 0)
+  endif()
+  if(NOT DEFINED CMake_CXX17_WORKS)
+    message(STATUS "Checking if compiler supports needed C++17 constructs")
+    try_compile(CMake_CXX17_WORKS
+      ${CMAKE_CURRENT_BINARY_DIR}
+      ${CMAKE_CURRENT_LIST_DIR}/cm_cxx17_check.cpp
+      CMAKE_FLAGS -DCMAKE_CXX_STANDARD=17
+      OUTPUT_VARIABLE OUTPUT
+      )
+    if(CMake_CXX17_WORKS AND "${OUTPUT}" MATCHES "error: no member named.*gets.*in the global namespace")
+      set_property(CACHE CMake_CXX17_WORKS PROPERTY VALUE 0)
+    endif()
+    if(CMake_CXX17_WORKS)
+      message(STATUS "Checking if compiler supports needed C++17 constructs - yes")
+      file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeOutput.log
+        "Determining if compiler supports needed C++17 constructs passed with the following output:\n"
+        "${OUTPUT}\n"
+        "\n"
+        )
+    else()
+      message(STATUS "Checking if compiler supports needed C++17 constructs - no")
+      file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeError.log
+        "Determining if compiler supports needed C++17 constructs failed with the following output:\n"
+        "${OUTPUT}\n"
+        "\n"
+        )
+    endif()
+  endif()
+  if(NOT CMake_CXX17_WORKS)
+    set(CMake_CXX17_BROKEN 1)
+  endif()
+endif()
diff --git a/Source/Checks/cm_cxx17_check.cpp b/Source/Checks/cm_cxx17_check.cpp
new file mode 100644
index 0000000..2cbf1d5
--- /dev/null
+++ b/Source/Checks/cm_cxx17_check.cpp
@@ -0,0 +1,7 @@
+#include <cstdio>
+#include <unordered_map>
+
+int main()
+{
+  return 0;
+}

https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=31c6b9adbff0fd7113ce4b97bc4ad9514615deb8
commit 31c6b9adbff0fd7113ce4b97bc4ad9514615deb8
Author:     Brad King <brad.king at kitware.com>
AuthorDate: Wed Dec 6 10:53:10 2017 -0500
Commit:     Brad King <brad.king at kitware.com>
CommitDate: Fri Dec 22 09:05:54 2017 -0500

    Generalize check for C++14 constructs
    
    The check for C++14 and cstdio is a special case of the more general
    problem of checking that the compiler's C++14 mode supports everything
    we need.  Rename the checks accordingly.

diff --git a/CMakeLists.txt b/CMakeLists.txt
index ebeca22..945ae8d 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -64,8 +64,8 @@ if(NOT DEFINED CMAKE_CXX_STANDARD AND NOT CMake_NO_CXX_STANDARD)
   if (CMAKE_CXX_COMPILER_ID STREQUAL SunPro AND CMAKE_CXX_COMPILER_VERSION VERSION_LESS 5.14)
     set(CMAKE_CXX_STANDARD 98)
   else()
-    include(${CMake_SOURCE_DIR}/Source/Checks/cm_cxx14_cstdio.cmake)
-    if(NOT CMake_CXX14_CSTDIO_BROKEN)
+    include(${CMake_SOURCE_DIR}/Source/Checks/cm_cxx14_check.cmake)
+    if(NOT CMake_CXX14_BROKEN)
       set(CMAKE_CXX_STANDARD 14)
     else()
       set(CMAKE_CXX_STANDARD 11)
diff --git a/Source/Checks/cm_cxx14_check.cmake b/Source/Checks/cm_cxx14_check.cmake
new file mode 100644
index 0000000..a78ba35
--- /dev/null
+++ b/Source/Checks/cm_cxx14_check.cmake
@@ -0,0 +1,36 @@
+set(CMake_CXX14_BROKEN 0)
+if(CMAKE_CXX_COMPILER_ID MATCHES "GNU|Clang")
+  if(NOT CMAKE_CXX14_STANDARD_COMPILE_OPTION)
+    set(CMake_CXX14_WORKS 0)
+  endif()
+  if(NOT DEFINED CMake_CXX14_WORKS)
+    message(STATUS "Checking if compiler supports needed C++14 constructs")
+    try_compile(CMake_CXX14_WORKS
+      ${CMAKE_CURRENT_BINARY_DIR}
+      ${CMAKE_CURRENT_LIST_DIR}/cm_cxx14_check.cpp
+      CMAKE_FLAGS -DCMAKE_CXX_STANDARD=14
+      OUTPUT_VARIABLE OUTPUT
+      )
+    if(CMake_CXX14_WORKS AND "${OUTPUT}" MATCHES "error: no member named.*gets.*in the global namespace")
+      set_property(CACHE CMake_CXX14_WORKS PROPERTY VALUE 0)
+    endif()
+    if(CMake_CXX14_WORKS)
+      message(STATUS "Checking if compiler supports needed C++14 constructs - yes")
+      file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeOutput.log
+        "Determining if compiler supports needed C++14 constructs passed with the following output:\n"
+        "${OUTPUT}\n"
+        "\n"
+        )
+    else()
+      message(STATUS "Checking if compiler supports needed C++14 constructs - no")
+      file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeError.log
+        "Determining if compiler supports needed C++14 constructs failed with the following output:\n"
+        "${OUTPUT}\n"
+        "\n"
+        )
+    endif()
+  endif()
+  if(NOT CMake_CXX14_WORKS)
+    set(CMake_CXX14_BROKEN 1)
+  endif()
+endif()
diff --git a/Source/Checks/cm_cxx14_cstdio.cpp b/Source/Checks/cm_cxx14_check.cpp
similarity index 100%
rename from Source/Checks/cm_cxx14_cstdio.cpp
rename to Source/Checks/cm_cxx14_check.cpp
diff --git a/Source/Checks/cm_cxx14_cstdio.cmake b/Source/Checks/cm_cxx14_cstdio.cmake
deleted file mode 100644
index 73f7e2e..0000000
--- a/Source/Checks/cm_cxx14_cstdio.cmake
+++ /dev/null
@@ -1,33 +0,0 @@
-set(CMake_CXX14_CSTDIO_BROKEN 0)
-if(CMAKE_CXX_COMPILER_ID MATCHES "GNU|Clang" AND CMAKE_CXX14_STANDARD_COMPILE_OPTION)
-  if(NOT DEFINED CMake_CXX14_CSTDIO_WORKS)
-    message(STATUS "Checking if compiler supports C++14 cstdio")
-    try_compile(CMake_CXX14_CSTDIO_WORKS
-      ${CMAKE_CURRENT_BINARY_DIR}
-      ${CMAKE_CURRENT_LIST_DIR}/cm_cxx14_cstdio.cpp
-      CMAKE_FLAGS -DCMAKE_CXX_STANDARD=14
-      OUTPUT_VARIABLE OUTPUT
-      )
-    if(CMake_CXX14_CSTDIO_WORKS AND "${OUTPUT}" MATCHES "error: no member named.*gets.*in the global namespace")
-      set_property(CACHE CMake_CXX14_CSTDIO_WORKS PROPERTY VALUE 0)
-    endif()
-    if(CMake_CXX14_CSTDIO_WORKS)
-      message(STATUS "Checking if compiler supports C++14 cstdio - yes")
-      file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeOutput.log
-        "Determining if compiler supports C++14 cstdio passed with the following output:\n"
-        "${OUTPUT}\n"
-        "\n"
-        )
-    else()
-      message(STATUS "Checking if compiler supports C++14 cstdio - no")
-      file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeError.log
-        "Determining if compiler supports C++14 cstdio failed with the following output:\n"
-        "${OUTPUT}\n"
-        "\n"
-        )
-    endif()
-  endif()
-  if(NOT CMake_CXX14_CSTDIO_WORKS)
-    set(CMake_CXX14_CSTDIO_BROKEN 1)
-  endif()
-endif()

https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=05af537ecc6b89af5f0bb8051b63d08fb105e36b
commit 05af537ecc6b89af5f0bb8051b63d08fb105e36b
Author:     Brad King <brad.king at kitware.com>
AuthorDate: Thu Dec 7 09:33:43 2017 -0500
Commit:     Brad King <brad.king at kitware.com>
CommitDate: Thu Dec 21 08:05:23 2017 -0500

    cmGlobalNinjaGenerator: Avoid using deprecated std::ptr_fun
    
    It was deprecated by C++11 and removed by C++17.  Use a C++11 lambda.

diff --git a/Source/cmGlobalNinjaGenerator.cxx b/Source/cmGlobalNinjaGenerator.cxx
index d5531cb..4f546bb 100644
--- a/Source/cmGlobalNinjaGenerator.cxx
+++ b/Source/cmGlobalNinjaGenerator.cxx
@@ -8,7 +8,6 @@
 #include "cmsys/FStream.hxx"
 #include <algorithm>
 #include <ctype.h>
-#include <functional>
 #include <iterator>
 #include <memory> // IWYU pragma: keep
 #include <sstream>
@@ -114,7 +113,7 @@ std::string cmGlobalNinjaGenerator::EncodeIdent(const std::string& ident,
                                                 std::ostream& vars)
 {
   if (std::find_if(ident.begin(), ident.end(),
-                   std::not1(std::ptr_fun(IsIdentChar))) != ident.end()) {
+                   [](char c) { return !IsIdentChar(c); }) != ident.end()) {
     static unsigned VarNum = 0;
     std::ostringstream names;
     names << "ident" << VarNum++;

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

Summary of changes:
 CMakeLists.txt                                     |   17 ++++++---
 Source/Checks/cm_cxx14_check.cmake                 |   36 ++++++++++++++++++++
 .../{cm_cxx14_cstdio.cpp => cm_cxx14_check.cpp}    |    0
 Source/Checks/cm_cxx14_cstdio.cmake                |   33 ------------------
 Source/Checks/cm_cxx17_check.cmake                 |   36 ++++++++++++++++++++
 .../{cm_cxx14_cstdio.cpp => cm_cxx17_check.cpp}    |    2 ++
 Source/cmGlobalNinjaGenerator.cxx                  |    3 +-
 7 files changed, 88 insertions(+), 39 deletions(-)
 create mode 100644 Source/Checks/cm_cxx14_check.cmake
 copy Source/Checks/{cm_cxx14_cstdio.cpp => cm_cxx14_check.cpp} (100%)
 delete mode 100644 Source/Checks/cm_cxx14_cstdio.cmake
 create mode 100644 Source/Checks/cm_cxx17_check.cmake
 rename Source/Checks/{cm_cxx14_cstdio.cpp => cm_cxx17_check.cpp} (63%)


hooks/post-receive
-- 
CMake


More information about the Cmake-commits mailing list