Skip to content

Commit 775e5fb

Browse files
committed
[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
1 parent 110d422 commit 775e5fb

File tree

1 file changed

+25
-14
lines changed

1 file changed

+25
-14
lines changed

llvm/cmake/modules/FindGRPC.cmake

Lines changed: 25 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,7 @@ else()
4848
# the system path.
4949
set(GRPC_OPTS "")
5050
set(PROTOBUF_OPTS "")
51+
set(GRPC_INCLUDE_PATHS "")
5152
if (${APPLE})
5253
find_program(HOMEBREW brew)
5354
# If Homebrew is not found, the user might have installed libraries
@@ -61,31 +62,41 @@ else()
6162
OUTPUT_VARIABLE PROTOBUF_HOMEBREW_PATH
6263
RESULT_VARIABLE PROTOBUF_HOMEBREW_RETURN_CODE
6364
OUTPUT_STRIP_TRAILING_WHITESPACE)
65+
execute_process(COMMAND ${HOMEBREW} --prefix abseil
66+
OUTPUT_VARIABLE ABSL_HOMEBREW_PATH
67+
RESULT_VARIABLE ABSL_HOMEBREW_RETURN_CODE
68+
OUTPUT_STRIP_TRAILING_WHITESPACE)
6469
# If either library is not installed via Homebrew, fall back to the
6570
# system path.
6671
if (GRPC_HOMEBREW_RETURN_CODE EQUAL "0")
67-
include_directories(${GRPC_HOMEBREW_PATH}/include)
72+
list(APPEND GRPC_INCLUDE_PATHS ${GRPC_HOMEBREW_PATH}/include)
6873
list(APPEND GRPC_OPTS PATHS ${GRPC_HOMEBREW_PATH}/lib NO_DEFAULT_PATH)
6974
endif()
7075
if (PROTOBUF_HOMEBREW_RETURN_CODE EQUAL "0")
71-
include_directories(${PROTOBUF_HOMEBREW_PATH}/include)
76+
list(APPEND GRPC_INCLUDE_PATHS ${PROTOBUF_HOMEBREW_PATH}/include)
7277
list(APPEND PROTOBUF_OPTS PATHS ${PROTOBUF_HOMEBREW_PATH}/lib NO_DEFAULT_PATH)
7378
endif()
79+
if (ABSL_HOMEBREW_RETURN_CODE EQUAL "0")
80+
list(APPEND GRPC_INCLUDE_PATHS ${ABSL_HOMEBREW_PATH}/include)
81+
endif()
7482
endif()
7583
endif()
76-
find_library(GRPC_LIBRARY grpc++ $GRPC_OPTS REQUIRED)
77-
add_library(grpc++ UNKNOWN IMPORTED GLOBAL)
78-
message(STATUS "Using grpc++: " ${GRPC_LIBRARY})
79-
set_target_properties(grpc++ PROPERTIES IMPORTED_LOCATION ${GRPC_LIBRARY})
80-
if (ENABLE_GRPC_REFLECTION)
81-
find_library(GRPC_REFLECTION_LIBRARY grpc++_reflection $GRPC_OPTS REQUIRED)
82-
add_library(grpc++_reflection UNKNOWN IMPORTED GLOBAL)
83-
set_target_properties(grpc++_reflection PROPERTIES IMPORTED_LOCATION ${GRPC_REFLECTION_LIBRARY})
84+
if(NOT TARGET grpc++)
85+
find_library(GRPC_LIBRARY grpc++ ${GRPC_OPTS} REQUIRED)
86+
add_library(grpc++ UNKNOWN IMPORTED GLOBAL)
87+
message(STATUS "Using grpc++: " ${GRPC_LIBRARY})
88+
set_target_properties(grpc++ PROPERTIES IMPORTED_LOCATION ${GRPC_LIBRARY})
89+
target_include_directories(grpc++ INTERFACE ${GRPC_INCLUDE_PATHS})
90+
if (ENABLE_GRPC_REFLECTION)
91+
find_library(GRPC_REFLECTION_LIBRARY grpc++_reflection ${GRPC_OPTS} REQUIRED)
92+
add_library(grpc++_reflection UNKNOWN IMPORTED GLOBAL)
93+
set_target_properties(grpc++_reflection PROPERTIES IMPORTED_LOCATION ${GRPC_REFLECTION_LIBRARY})
94+
endif()
95+
find_library(PROTOBUF_LIBRARY protobuf ${PROTOBUF_OPTS} REQUIRED)
96+
message(STATUS "Using protobuf: " ${PROTOBUF_LIBRARY})
97+
add_library(protobuf UNKNOWN IMPORTED GLOBAL)
98+
set_target_properties(protobuf PROPERTIES IMPORTED_LOCATION ${PROTOBUF_LIBRARY})
8499
endif()
85-
find_library(PROTOBUF_LIBRARY protobuf $PROTOBUF_OPTS REQUIRED)
86-
message(STATUS "Using protobuf: " ${PROTOBUF_LIBRARY})
87-
add_library(protobuf UNKNOWN IMPORTED GLOBAL)
88-
set_target_properties(protobuf PROPERTIES IMPORTED_LOCATION ${PROTOBUF_LIBRARY})
89100
endif()
90101

91102
if (ENABLE_GRPC_REFLECTION)

0 commit comments

Comments
 (0)