Kaynağa Gözat

Merge branch 'FindProtobuf-threads' into release-3.13

Merge-request: !2551
Brad King 7 yıl önce
ebeveyn
işleme
8f043068d5
1 değiştirilmiş dosya ile 22 ekleme ve 14 silme
  1. 22 14
      Modules/FindProtobuf.cmake

+ 22 - 14
Modules/FindProtobuf.cmake

@@ -381,21 +381,16 @@ function(_protobuf_find_libraries name filename)
     mark_as_advanced(${name}_LIBRARY_DEBUG)
 
     select_library_configurations(${name})
+
+    if(UNIX AND Threads_FOUND)
+      list(APPEND ${name}_LIBRARIES ${CMAKE_THREAD_LIBS_INIT})
+    endif()
+
     set(${name}_LIBRARY "${${name}_LIBRARY}" PARENT_SCOPE)
     set(${name}_LIBRARIES "${${name}_LIBRARIES}" PARENT_SCOPE)
   endif()
 endfunction()
 
-# Internal function: find threads library
-function(_protobuf_find_threads)
-    set(CMAKE_THREAD_PREFER_PTHREAD TRUE)
-    find_package(Threads)
-    if(Threads_FOUND)
-        list(APPEND Protobuf_LIBRARIES ${CMAKE_THREAD_LIBS_INIT})
-        set(Protobuf_LIBRARIES "${Protobuf_LIBRARIES}" PARENT_SCOPE)
-    endif()
-endfunction()
-
 #
 # Main.
 #
@@ -416,6 +411,11 @@ if(MSVC)
     find_path(Protobuf_SRC_ROOT_FOLDER protobuf.pc.in)
 endif()
 
+if(UNIX)
+  # Protobuf headers may depend on threading.
+  find_package(Threads QUIET)
+endif()
+
 # The Protobuf library
 _protobuf_find_libraries(Protobuf protobuf)
 #DOC "The Google Protocol Buffers RELEASE Library"
@@ -430,10 +430,6 @@ if(MSVC)
     set(CMAKE_FIND_LIBRARY_PREFIXES "${Protobuf_ORIG_FIND_LIBRARY_PREFIXES}")
 endif()
 
-if(UNIX)
-    _protobuf_find_threads()
-endif()
-
 # Find the include directory
 find_path(Protobuf_INCLUDE_DIR
     google/protobuf/service.h
@@ -521,6 +517,10 @@ if(Protobuf_INCLUDE_DIR)
             set_target_properties(protobuf::libprotobuf PROPERTIES
               IMPORTED_LOCATION_DEBUG "${Protobuf_LIBRARY_DEBUG}")
           endif()
+          if(UNIX AND TARGET Threads::Threads)
+            set_property(TARGET protobuf::libprotobuf APPEND PROPERTY
+                INTERFACE_LINK_LIBRARIES Threads::Threads)
+          endif()
       endif()
   endif()
 
@@ -545,6 +545,10 @@ if(Protobuf_INCLUDE_DIR)
             set_target_properties(protobuf::libprotobuf-lite PROPERTIES
               IMPORTED_LOCATION_DEBUG "${Protobuf_LITE_LIBRARY_DEBUG}")
           endif()
+          if(UNIX AND TARGET Threads::Threads)
+            set_property(TARGET protobuf::libprotobuf-lite APPEND PROPERTY
+                INTERFACE_LINK_LIBRARIES Threads::Threads)
+          endif()
       endif()
   endif()
 
@@ -569,6 +573,10 @@ if(Protobuf_INCLUDE_DIR)
             set_target_properties(protobuf::libprotoc PROPERTIES
               IMPORTED_LOCATION_DEBUG "${Protobuf_PROTOC_LIBRARY_DEBUG}")
           endif()
+          if(UNIX AND TARGET Threads::Threads)
+            set_property(TARGET protobuf::libprotoc APPEND PROPERTY
+                INTERFACE_LINK_LIBRARIES Threads::Threads)
+          endif()
       endif()
   endif()