[Cmake-commits] CMake branch, next, updated. v3.0.2-5624-gb838deb

Rolf Eike Beer eike at sf-mail.de
Mon Oct 6 15:50:01 EDT 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  b838deb2e9627bf2d607de300f4a9ca287baec38 (commit)
       via  89a51d50425d49841b0430819019e15319129de3 (commit)
       via  d7c209ed58c556411a0692d216b284e6c5f220ca (commit)
       via  46368eddfdca1ee83a0126e4b3dfde575125f3e1 (commit)
      from  d33aceb1e1351f51f793376b0bb4be13b23cce2e (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=b838deb2e9627bf2d607de300f4a9ca287baec38
commit b838deb2e9627bf2d607de300f4a9ca287baec38
Merge: d33aceb 89a51d5
Author:     Rolf Eike Beer <eike at sf-mail.de>
AuthorDate: Mon Oct 6 15:50:00 2014 -0400
Commit:     CMake Topic Stage <kwrobot at kitware.com>
CommitDate: Mon Oct 6 15:50:00 2014 -0400

    Merge topic 'FindThreads_overhaul' into next
    
    89a51d50 FindThreads: introduce THREADS_PREFER_PTHREAD_FLAG (#14767)
    d7c209ed FindThreads: introduce an imported target to link to
    46368edd FindThreads: move checking of the -pthread compiler flag into a macro


http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=89a51d50425d49841b0430819019e15319129de3
commit 89a51d50425d49841b0430819019e15319129de3
Author:     Rolf Eike Beer <eike at sf-mail.de>
AuthorDate: Mon Oct 6 21:43:45 2014 +0200
Commit:     Rolf Eike Beer <eike at sf-mail.de>
CommitDate: Mon Oct 6 21:43:45 2014 +0200

    FindThreads: introduce THREADS_PREFER_PTHREAD_FLAG (#14767)

diff --git a/Modules/FindThreads.cmake b/Modules/FindThreads.cmake
index c900789..ee3d44c 100644
--- a/Modules/FindThreads.cmake
+++ b/Modules/FindThreads.cmake
@@ -25,6 +25,17 @@
 # ::
 #
 #   CMAKE_THREAD_PREFER_PTHREAD
+#
+# If the use of the -pthread compiler and linker flag is prefered then the
+# caller can set
+#
+# ::
+#
+#   THREADS_PREFER_PTHREAD_FLAG
+#
+# Please note that the compiler flag can only be used with the imported
+# target. Use of both the imported target as well as this switch is highly
+# recommended for new code.
 
 #=============================================================================
 # Copyright 2002-2009 Kitware, Inc.
@@ -126,6 +137,13 @@ else()
         set(Threads_FOUND TRUE)
       else()
 
+        # Check for -pthread first if enabled. This is the recommended
+        # way, but not backwards compatible as one must also pass -pthread
+        # as compiler flag then.
+        if (THREADS_PREFER_PTHREAD_FLAG)
+           _check_pthreads_flag()
+        endif ()
+
         _check_threads_lib(pthreads pthread_create CMAKE_HAVE_PTHREADS_CREATE)
         _check_threads_lib(pthread  pthread_create CMAKE_HAVE_PTHREAD_CREATE)
         if(CMAKE_SYSTEM_NAME MATCHES "SunOS")

http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=d7c209ed58c556411a0692d216b284e6c5f220ca
commit d7c209ed58c556411a0692d216b284e6c5f220ca
Author:     Timo Rothenpieler <btbn at btbn.de>
AuthorDate: Mon Oct 6 21:36:13 2014 +0200
Commit:     Rolf Eike Beer <eike at sf-mail.de>
CommitDate: Mon Oct 6 21:36:13 2014 +0200

    FindThreads: introduce an imported target to link to
    
    This not only holds the library, but can also hold compiler flags needed, e.g.
    the -pthread flag preferred by gcc on some platforms. There was no clean way
    to get that compiler flag from the module until now.

diff --git a/Modules/FindThreads.cmake b/Modules/FindThreads.cmake
index aac9c0e..c900789 100644
--- a/Modules/FindThreads.cmake
+++ b/Modules/FindThreads.cmake
@@ -14,6 +14,12 @@
 #   CMAKE_USE_PTHREADS_INIT    - are we using pthreads
 #   CMAKE_HP_PTHREADS_INIT     - are we using hp pthreads
 #
+# The following import target is created
+#
+# ::
+#
+#   CMake::Threads
+#
 # For systems with multiple thread libraries, caller can set
 #
 # ::
@@ -178,3 +184,17 @@ endif()
 set(CMAKE_REQUIRED_QUIET ${CMAKE_REQUIRED_QUIET_SAVE})
 include(${CMAKE_CURRENT_LIST_DIR}/FindPackageHandleStandardArgs.cmake)
 FIND_PACKAGE_HANDLE_STANDARD_ARGS(Threads DEFAULT_MSG Threads_FOUND)
+
+if(THREADS_FOUND AND NOT HAVE_CMAKE_THREADS_TARGET)
+  add_library(CMake::Threads INTERFACE IMPORTED GLOBAL)
+
+  if(THREADS_HAVE_PTHREAD_ARG)
+    set_property(TARGET CMake::Threads PROPERTY INTERFACE_COMPILE_OPTIONS "-pthread")
+  endif()
+
+  if(CMAKE_THREAD_LIBS_INIT)
+    set_property(TARGET CMake::Threads PROPERTY INTERFACE_LINK_LIBRARIES "${CMAKE_THREAD_LIBS_INIT}")
+  endif()
+
+  set(HAVE_CMAKE_THREADS_TARGET TRUE)
+endif()

http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=46368eddfdca1ee83a0126e4b3dfde575125f3e1
commit 46368eddfdca1ee83a0126e4b3dfde575125f3e1
Author:     Rolf Eike Beer <eike at sf-mail.de>
AuthorDate: Mon Oct 6 21:26:49 2014 +0200
Commit:     Rolf Eike Beer <eike at sf-mail.de>
CommitDate: Mon Oct 6 21:30:09 2014 +0200

    FindThreads: move checking of the -pthread compiler flag into a macro
    
    This allows a following commit to introduce a switch to prefer that check over
    searching for the explicit library names without breaking backward
    compatibility.

diff --git a/Modules/FindThreads.cmake b/Modules/FindThreads.cmake
index 8be6613..aac9c0e 100644
--- a/Modules/FindThreads.cmake
+++ b/Modules/FindThreads.cmake
@@ -22,6 +22,7 @@
 
 #=============================================================================
 # Copyright 2002-2009 Kitware, Inc.
+# Copyright 2011-2014 Rolf Eike Beer <eike at sf-mail.de>
 #
 # Distributed under the OSI-approved BSD License (the "License");
 # see accompanying file Copyright.txt for details.
@@ -48,7 +49,7 @@ endif()
 # Internal helper macro.
 # Do NOT even think about using it outside of this file!
 macro(_check_threads_lib LIBNAME FUNCNAME VARNAME)
-  if(NOT CMAKE_HAVE_THREADS_LIBRARY)
+  if(NOT Threads_FOUND)
      CHECK_LIBRARY_EXISTS(${LIBNAME} ${FUNCNAME} "" ${VARNAME})
      if(${VARNAME})
        set(CMAKE_THREAD_LIBS_INIT "-l${LIBNAME}")
@@ -58,6 +59,45 @@ macro(_check_threads_lib LIBNAME FUNCNAME VARNAME)
   endif ()
 endmacro()
 
+# Internal helper macro.
+# Do NOT even think about using it outside of this file!
+macro(_check_pthreads_flag)
+  if(NOT Threads_FOUND)
+    # If we did not found -lpthread, -lpthread, or -lthread, look for -pthread
+    if(NOT DEFINED THREADS_HAVE_PTHREAD_ARG)
+      message(STATUS "Check if compiler accepts -pthread")
+      try_run(THREADS_PTHREAD_ARG THREADS_HAVE_PTHREAD_ARG
+        ${CMAKE_BINARY_DIR}
+        ${CMAKE_CURRENT_LIST_DIR}/CheckForPthreads.c
+        CMAKE_FLAGS -DLINK_LIBRARIES:STRING=-pthread
+        COMPILE_OUTPUT_VARIABLE OUTPUT)
+
+      if(THREADS_HAVE_PTHREAD_ARG)
+        if(THREADS_PTHREAD_ARG STREQUAL "2")
+          set(Threads_FOUND TRUE)
+          message(STATUS "Check if compiler accepts -pthread - yes")
+        else()
+          message(STATUS "Check if compiler accepts -pthread - no")
+          file(APPEND
+            ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeError.log
+            "Determining if compiler accepts -pthread returned ${THREADS_PTHREAD_ARG} instead of 2. The compiler had the following output:\n${OUTPUT}\n\n")
+        endif()
+      else()
+        message(STATUS "Check if compiler accepts -pthread - no")
+        file(APPEND
+          ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeError.log
+          "Determining if compiler accepts -pthread failed with the following output:\n${OUTPUT}\n\n")
+      endif()
+
+    endif()
+
+    if(THREADS_HAVE_PTHREAD_ARG)
+      set(Threads_FOUND TRUE)
+      set(CMAKE_THREAD_LIBS_INIT "-pthread")
+    endif()
+  endif()
+endmacro()
+
 if(CMAKE_HAVE_SPROC_H AND NOT CMAKE_THREAD_PREFER_PTHREAD)
   # We have sproc
   set(CMAKE_USE_SPROC_INIT 1)
@@ -89,41 +129,7 @@ else()
       endif()
     endif()
 
-    if(NOT CMAKE_HAVE_THREADS_LIBRARY)
-      # If we did not found -lpthread, -lpthread, or -lthread, look for -pthread
-      if("x${THREADS_HAVE_PTHREAD_ARG}" STREQUAL "x")
-        message(STATUS "Check if compiler accepts -pthread")
-        try_run(THREADS_PTHREAD_ARG THREADS_HAVE_PTHREAD_ARG
-          ${CMAKE_BINARY_DIR}
-          ${CMAKE_CURRENT_LIST_DIR}/CheckForPthreads.c
-          CMAKE_FLAGS -DLINK_LIBRARIES:STRING=-pthread
-          COMPILE_OUTPUT_VARIABLE OUTPUT)
-
-        if(THREADS_HAVE_PTHREAD_ARG)
-          if(THREADS_PTHREAD_ARG STREQUAL "2")
-            set(Threads_FOUND TRUE)
-            message(STATUS "Check if compiler accepts -pthread - yes")
-          else()
-            message(STATUS "Check if compiler accepts -pthread - no")
-            file(APPEND
-              ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeError.log
-              "Determining if compiler accepts -pthread returned ${THREADS_PTHREAD_ARG} instead of 2. The compiler had the following output:\n${OUTPUT}\n\n")
-          endif()
-        else()
-          message(STATUS "Check if compiler accepts -pthread - no")
-          file(APPEND
-            ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeError.log
-            "Determining if compiler accepts -pthread failed with the following output:\n${OUTPUT}\n\n")
-        endif()
-
-      endif()
-
-      if(THREADS_HAVE_PTHREAD_ARG)
-        set(Threads_FOUND TRUE)
-        set(CMAKE_THREAD_LIBS_INIT "-pthread")
-      endif()
-
-    endif()
+    _check_pthreads_flag()
   endif()
 endif()
 

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

Summary of changes:
 Modules/FindThreads.cmake |  116 +++++++++++++++++++++++++++++++--------------
 1 file changed, 80 insertions(+), 36 deletions(-)


hooks/post-receive
-- 
CMake


More information about the Cmake-commits mailing list