[llvm] 20d5a86 - [CMake] Fix `FindGRPC.cmake` for setting up gRPC related libraries for macOS+homebrew context

Argyrios Kyrtzidis via llvm-commits llvm-commits at lists.llvm.org
Wed Jun 15 16:11:47 PDT 2022


Author: Argyrios Kyrtzidis
Date: 2022-06-15T16:11:37-07:00
New Revision: 20d5a8613423ffe7e773c100169384ef38a68e7b

URL: https://github.com/llvm/llvm-project/commit/20d5a8613423ffe7e773c100169384ef38a68e7b
DIFF: https://github.com/llvm/llvm-project/commit/20d5a8613423ffe7e773c100169384ef38a68e7b.diff

LOG: [CMake] Fix `FindGRPC.cmake` for setting up gRPC related libraries for macOS+homebrew context

* Switch `$GRPC_OPTS` references to `${GRPC_OPTS}`
* Use `target_include_directories()` to add include search paths only for the targets the depend on `gRPC`
* Also find and include the search path for `abseil` headers (`gRPC` headers include them)
* Only setup the gRPC related targets once, so that `include(FindGRPC)` can be called from multiple tools

Differential Revision: https://reviews.llvm.org/D127893

Added: 
    

Modified: 
    llvm/cmake/modules/FindGRPC.cmake

Removed: 
    


################################################################################
diff  --git a/llvm/cmake/modules/FindGRPC.cmake b/llvm/cmake/modules/FindGRPC.cmake
index e058f544cb29..faaa96808850 100644
--- a/llvm/cmake/modules/FindGRPC.cmake
+++ b/llvm/cmake/modules/FindGRPC.cmake
@@ -48,6 +48,7 @@ else()
   # the system path.
   set(GRPC_OPTS "")
   set(PROTOBUF_OPTS "")
+  set(GRPC_INCLUDE_PATHS "")
   if (${APPLE})
     find_program(HOMEBREW brew)
     # If Homebrew is not found, the user might have installed libraries
@@ -61,31 +62,41 @@ else()
         OUTPUT_VARIABLE PROTOBUF_HOMEBREW_PATH
         RESULT_VARIABLE PROTOBUF_HOMEBREW_RETURN_CODE
         OUTPUT_STRIP_TRAILING_WHITESPACE)
+      execute_process(COMMAND ${HOMEBREW} --prefix abseil
+        OUTPUT_VARIABLE ABSL_HOMEBREW_PATH
+        RESULT_VARIABLE ABSL_HOMEBREW_RETURN_CODE
+        OUTPUT_STRIP_TRAILING_WHITESPACE)
       # If either library is not installed via Homebrew, fall back to the
       # system path.
       if (GRPC_HOMEBREW_RETURN_CODE EQUAL "0")
-        include_directories(${GRPC_HOMEBREW_PATH}/include)
+        list(APPEND GRPC_INCLUDE_PATHS ${GRPC_HOMEBREW_PATH}/include)
         list(APPEND GRPC_OPTS PATHS ${GRPC_HOMEBREW_PATH}/lib NO_DEFAULT_PATH)
       endif()
       if (PROTOBUF_HOMEBREW_RETURN_CODE EQUAL "0")
-        include_directories(${PROTOBUF_HOMEBREW_PATH}/include)
+        list(APPEND GRPC_INCLUDE_PATHS ${PROTOBUF_HOMEBREW_PATH}/include)
         list(APPEND PROTOBUF_OPTS PATHS ${PROTOBUF_HOMEBREW_PATH}/lib NO_DEFAULT_PATH)
       endif()
+      if (ABSL_HOMEBREW_RETURN_CODE EQUAL "0")
+        list(APPEND GRPC_INCLUDE_PATHS ${ABSL_HOMEBREW_PATH}/include)
+      endif()
     endif()
   endif()
-  find_library(GRPC_LIBRARY grpc++ $GRPC_OPTS REQUIRED)
-  add_library(grpc++ UNKNOWN IMPORTED GLOBAL)
-  message(STATUS "Using grpc++: " ${GRPC_LIBRARY})
-  set_target_properties(grpc++ PROPERTIES IMPORTED_LOCATION ${GRPC_LIBRARY})
-  if (ENABLE_GRPC_REFLECTION)
-    find_library(GRPC_REFLECTION_LIBRARY grpc++_reflection $GRPC_OPTS REQUIRED)
-    add_library(grpc++_reflection UNKNOWN IMPORTED GLOBAL)
-    set_target_properties(grpc++_reflection PROPERTIES IMPORTED_LOCATION ${GRPC_REFLECTION_LIBRARY})
+  if(NOT TARGET grpc++)
+    find_library(GRPC_LIBRARY grpc++ ${GRPC_OPTS} REQUIRED)
+    add_library(grpc++ UNKNOWN IMPORTED GLOBAL)
+    message(STATUS "Using grpc++: " ${GRPC_LIBRARY})
+    set_target_properties(grpc++ PROPERTIES IMPORTED_LOCATION ${GRPC_LIBRARY})
+    target_include_directories(grpc++ INTERFACE ${GRPC_INCLUDE_PATHS})
+    if (ENABLE_GRPC_REFLECTION)
+      find_library(GRPC_REFLECTION_LIBRARY grpc++_reflection ${GRPC_OPTS} REQUIRED)
+      add_library(grpc++_reflection UNKNOWN IMPORTED GLOBAL)
+      set_target_properties(grpc++_reflection PROPERTIES IMPORTED_LOCATION ${GRPC_REFLECTION_LIBRARY})
+    endif()
+    find_library(PROTOBUF_LIBRARY protobuf ${PROTOBUF_OPTS} REQUIRED)
+    message(STATUS "Using protobuf: " ${PROTOBUF_LIBRARY})
+    add_library(protobuf UNKNOWN IMPORTED GLOBAL)
+    set_target_properties(protobuf PROPERTIES IMPORTED_LOCATION ${PROTOBUF_LIBRARY})
   endif()
-  find_library(PROTOBUF_LIBRARY protobuf $PROTOBUF_OPTS REQUIRED)
-  message(STATUS "Using protobuf: " ${PROTOBUF_LIBRARY})
-  add_library(protobuf UNKNOWN IMPORTED GLOBAL)
-  set_target_properties(protobuf PROPERTIES IMPORTED_LOCATION ${PROTOBUF_LIBRARY})
 endif()
 
 if (ENABLE_GRPC_REFLECTION)


        


More information about the llvm-commits mailing list