[llvm] 3bc9525 - [clangd] Fix remote index build for macOS with Homebrew-installed gRPC and Protobuf

Kirill Bobyrev via llvm-commits llvm-commits at lists.llvm.org
Mon May 11 03:32:55 PDT 2020


Author: Kirill Bobyrev
Date: 2020-05-11T12:28:07+02:00
New Revision: 3bc95257315f1dabe6276d33c5180135b2666d17

URL: https://github.com/llvm/llvm-project/commit/3bc95257315f1dabe6276d33c5180135b2666d17
DIFF: https://github.com/llvm/llvm-project/commit/3bc95257315f1dabe6276d33c5180135b2666d17.diff

LOG: [clangd] Fix remote index build for macOS with Homebrew-installed gRPC and Protobuf

Reviewers: sammccall

Reviewed By: sammccall

Subscribers: mgorny, ilya-biryukov, MaskRay, jkorous, arphaman, kadircet, usaxena95, llvm-commits

Tags: #llvm

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

Added: 
    

Modified: 
    llvm/cmake/modules/FindGRPC.cmake

Removed: 
    


################################################################################
diff  --git a/llvm/cmake/modules/FindGRPC.cmake b/llvm/cmake/modules/FindGRPC.cmake
index a5f4b5b5bb14..8a0ca593b2f4 100644
--- a/llvm/cmake/modules/FindGRPC.cmake
+++ b/llvm/cmake/modules/FindGRPC.cmake
@@ -1,5 +1,7 @@
 # This setup requires gRPC to be built from sources using CMake and installed to
 # ${GRPC_INSTALL_PATH} via -DCMAKE_INSTALL_PREFIX=${GRPC_INSTALL_PATH}.
+# FIXME(kirillbobyrev): Check if gRPC and Protobuf headers can be included at
+# configure time.
 if (GRPC_INSTALL_PATH)
   set(protobuf_MODULE_COMPATIBLE TRUE)
   find_package(Protobuf CONFIG REQUIRED HINTS ${GRPC_INSTALL_PATH})
@@ -21,6 +23,36 @@ if (GRPC_INSTALL_PATH)
 else()
   find_program(GRPC_CPP_PLUGIN grpc_cpp_plugin)
   find_program(PROTOC protoc)
+  if (GRPC_CPP_PLUGIN-NOTFOUND OR PROTOC-NOTFOUND)
+    message(FATAL_ERROR "gRPC C++ Plugin and Protoc must be on $PATH for Clangd remote index build")
+  endif()
+  # On macOS the libraries are typically installed via Homebrew and are not on
+  # the system path.
+  if (${APPLE})
+    find_program(HOMEBREW brew)
+    # If Homebrew is not found, the user might have installed libraries
+    # manually. Fall back to the system path.
+    if (NOT HOMEBREW-NOTFOUND)
+      execute_process(COMMAND ${HOMEBREW} --prefix grpc
+        OUTPUT_VARIABLE GRPC_HOMEBREW_PATH
+        RESULT_VARIABLE GRPC_HOMEBREW_RETURN_CODE
+        OUTPUT_STRIP_TRAILING_WHITESPACE)
+      execute_process(COMMAND ${HOMEBREW} --prefix protobuf
+        OUTPUT_VARIABLE PROTOBUF_HOMEBREW_PATH
+        RESULT_VARIABLE PROTOBUF_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)
+        link_directories(${GRPC_HOMEBREW_PATH}/lib)
+      endif()
+      if (PROTOBUF_HOMEBREW_RETURN_CODE EQUAL "0")
+        include_directories(${PROTOBUF_HOMEBREW_PATH}/include)
+        link_directories(${PROTOBUF_HOMEBREW_PATH}/lib)
+      endif()
+    endif()
+  endif()
 endif()
 
 # Proto headers are generated in ${CMAKE_CURRENT_BINARY_DIR}.


        


More information about the llvm-commits mailing list