Skip to content

Commit b0f5493

Browse files
authored
Merge pull request #222 from mathworks/grpc
Build gRPC from source
2 parents fd8bb72 + 9c48cb7 commit b0f5493

File tree

4 files changed

+259
-40
lines changed

4 files changed

+259
-40
lines changed

CMakeLists.txt

Lines changed: 129 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -111,7 +111,78 @@ if(NOT DEFINED OTEL_MATLAB_VERSION)
111111
set(OTEL_MATLAB_VERSION 0.0.0) # set to an invalid default if not defined
112112
endif()
113113

114-
project(${CLIENT_PROJECT_NAME} VERSION ${OTEL_MATLAB_VERSION} LANGUAGES CXX)
114+
project(${CLIENT_PROJECT_NAME} VERSION ${OTEL_MATLAB_VERSION} LANGUAGES CXX C)
115+
116+
if(APPLE)
117+
set(CMAKE_INSTALL_RPATH @loader_path)
118+
elseif(UNIX)
119+
set(CMAKE_INSTALL_RPATH "$ORIGIN")
120+
endif()
121+
122+
# ###########################
123+
# gRPC
124+
# ###########################
125+
if(WITH_OTLP_GRPC)
126+
set(GRPC_PACKAGE_NAME gRPC)
127+
set(GRPC_GIT_REPOSITORY "https://github.com/grpc/grpc.git")
128+
set(GRPC_GIT_TAG "4795c5e")
129+
set(GRPC_PREFIX ${CMAKE_BINARY_DIR}/gRPC)
130+
set(GRPC_INSTALL_DIR ${GRPC_PREFIX}/install)
131+
set(GRPC_INSTALL_LIB_DIR ${GRPC_INSTALL_DIR}/lib)
132+
133+
set(PATCHES_DIR ${CMAKE_SOURCE_DIR}/patches)
134+
if(WIN32)
135+
set(GRPC_PATCH_CMD "")
136+
set(GRPC_SHARED "-DBUILD_SHARED_LIBS=OFF")
137+
elseif(APPLE)
138+
set(GRPC_PATCH_CMD git apply ${PATCHES_DIR}/grpc-mac.patch)
139+
set(GRPC_SHARED "-DBUILD_SHARED_LIBS=ON")
140+
else() # Linux
141+
set(GRPC_PATCH_CMD "")
142+
set(GRPC_SHARED "-DBUILD_SHARED_LIBS=ON")
143+
endif()
144+
145+
include(ExternalProject)
146+
ExternalProject_Add(
147+
${GRPC_PACKAGE_NAME}
148+
GIT_REPOSITORY ${GRPC_GIT_REPOSITORY}
149+
GIT_TAG ${GRPC_GIT_TAG}
150+
PREFIX ${GRPC_PREFIX}
151+
UPDATE_DISCONNECTED 1
152+
PATCH_COMMAND ${GRPC_PATCH_CMD}
153+
CMAKE_ARGS -DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER} -DCMAKE_C_COMPILER=${CMAKE_C_COMPILER} -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE} -DCMAKE_INSTALL_RPATH=${CMAKE_INSTALL_RPATH} ${GRPC_SHARED} -DgRPC_INSTALL=ON -DgRPC_BUILD_TESTS=OFF -DCMAKE_CROSSCOMPILING=OFF -DgRPC_ZLIB_PROVIDER=package -DgRPC_ABSL_PROVIDER=package -DgRPC_PROTOBUF_PROVIDER=package -DgRPC_RE2_PROVIDER=package -DgRPC_SSL_PROVIDER=package -DgRPC_CARES_PROVIDER=package -DgRPC_BUILD_GRPC_CSHARP_PLUGIN=OFF -DgRPC_BUILD_GRPC_NODE_PLUGIN=OFF -DgRPC_BUILD_GRPC_OBJECTIVE_C_PLUGIN=OFF -DgRPC_BUILD_GRPC_PHP_PLUGIN=OFF -DgRPC_BUILD_GRPC_PYTHON_PLUGIN=OFF -DgRPC_BUILD_GRPC_RUBY_PLUGIN=OFF -DCMAKE_TOOLCHAIN_FILE=${CMAKE_TOOLCHAIN_FILE} -DVCPKG_INSTALLED_DIR=${VCPKG_INSTALLED_DIR} ${TRIPLET_DEFINITIONS}
154+
INSTALL_DIR ${GRPC_INSTALL_DIR}
155+
INSTALL_COMMAND ${CMAKE_COMMAND} --install . --prefix ${GRPC_INSTALL_DIR} --config $<CONFIG>
156+
)
157+
158+
if(UNIX AND NOT APPLE AND NOT CYGWIN)
159+
# needed for running protoc as part of the opentelemetry-cpp build
160+
set(GRPC_LD_LIBRARY_PATH_ENV "LD_LIBRARY_PATH=${GRPC_INSTALL_LIB_DIR}")
161+
endif()
162+
163+
if(WIN32)
164+
set(GRPC_LINK_LIBRARIES ${GRPC_INSTALL_LIB_DIR}/address_sorting.lib
165+
${GRPC_INSTALL_LIB_DIR}/gpr.lib
166+
${GRPC_INSTALL_LIB_DIR}/grpc++.lib
167+
${GRPC_INSTALL_LIB_DIR}/grpc++_alts.lib
168+
${GRPC_INSTALL_LIB_DIR}/grpc++_error_details.lib
169+
${GRPC_INSTALL_LIB_DIR}/grpc++_reflection.lib
170+
${GRPC_INSTALL_LIB_DIR}/grpc++_unsecure.lib
171+
${GRPC_INSTALL_LIB_DIR}/grpc.lib
172+
${GRPC_INSTALL_LIB_DIR}/grpc_authorization_provider.lib
173+
${GRPC_INSTALL_LIB_DIR}/grpc_plugin_support.lib
174+
${GRPC_INSTALL_LIB_DIR}/grpc_unsecure.lib
175+
${GRPC_INSTALL_LIB_DIR}/grpcpp_channelz.lib
176+
${GRPC_INSTALL_LIB_DIR}/upb_base_lib.lib
177+
${GRPC_INSTALL_LIB_DIR}/upb_json_lib.lib
178+
${GRPC_INSTALL_LIB_DIR}/upb_mem_lib.lib
179+
${GRPC_INSTALL_LIB_DIR}/upb_message_lib.lib
180+
${GRPC_INSTALL_LIB_DIR}/upb_textformat_lib.lib
181+
${GRPC_INSTALL_LIB_DIR}/utf8_range_lib.lib)
182+
else()
183+
set(GRPC_LINK_LIBRARIES ${GRPC_INSTALL_LIB_DIR}/libgrpc++${CMAKE_SHARED_LIBRARY_SUFFIX})
184+
endif()
185+
endif()
115186

116187
# ######################################
117188
# libmexclass
@@ -204,34 +275,56 @@ if(NOT DEFINED OTEL_CPP_INSTALLED_DIR)
204275

205276
set(PATCHES_DIR ${CMAKE_SOURCE_DIR}/patches)
206277
if(SKIP_OTEL_CPP_PATCH)
207-
set(patch_comand "")
278+
set(OTEL_CPP_PATCH_CMD "")
208279
elseif(WIN32)
209280
# Windows patch to add a preprocessor definition _DISABLE_CONSTEXPR_MUTEX_CONSTRUCTOR
210281
# See https://github.com/mathworks/OpenTelemetry-Matlab/issues/130
211-
set(patch_command git apply ${PATCHES_DIR}/otel-cpp-windows.patch)
282+
set(OTEL_CPP_PATCH_CMD git apply ${PATCHES_DIR}/otel-cpp-windows.patch)
212283
elseif(APPLE)
213284
# Mac patch to fix a linker issue when including gRPC exporter
214-
set(patch_command git apply ${PATCHES_DIR}/otel-cpp-mac.patch)
285+
set(OTEL_CPP_PATCH_CMD git apply ${PATCHES_DIR}/otel-cpp-mac.patch)
215286
else()
216-
set(patch_command "")
287+
set(OTEL_CPP_PATCH_CMD "")
288+
endif()
289+
290+
if(WIN32 OR APPLE)
291+
# Windows and Mac use the default build command
292+
# Note: examples are temporarily turned off (-DWITH_EXAMPLES=OFF) due to a build issue that is now fixed in #3284
293+
# Renable examples after pulling in the fix
294+
ExternalProject_Add(
295+
${OTEL_CPP_PROJECT_NAME}
296+
GIT_REPOSITORY ${OTEL_CPP_GIT_REPOSITORY}
297+
GIT_TAG ${OTEL_CPP_GIT_TAG}
298+
PREFIX ${OTEL_CPP_PREFIX}
299+
UPDATE_DISCONNECTED 1
300+
PATCH_COMMAND ${OTEL_CPP_PATCH_CMD}
301+
CMAKE_ARGS -DCMAKE_POSITION_INDEPENDENT_CODE=ON -DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER} -DCMAKE_C_COMPILER=${CMAKE_C_COMPILER} -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE} -DCMAKE_INSTALL_RPATH=${CMAKE_INSTALL_RPATH} -DgRPC_DIR=${GRPC_INSTALL_LIB_DIR}/cmake/grpc -DWITH_ABI_VERSION_1=OFF -DWITH_ABI_VERSION_2=ON -DWITH_OTLP_HTTP=${WITH_OTLP_HTTP} -DWITH_OTLP_GRPC=${WITH_OTLP_GRPC} -DWITH_OTLP_FILE=${WITH_OTLP_FILE} -DWITH_EXAMPLES=OFF -DBUILD_TESTING=OFF -DWITH_BENCHMARK=OFF -DOPENTELEMETRY_INSTALL=ON -DCMAKE_TOOLCHAIN_FILE=${CMAKE_TOOLCHAIN_FILE} -DCMAKE_CXX_STANDARD=${OTEL_CPP_CXX_STANDARD} -DVCPKG_INSTALLED_DIR=${VCPKG_INSTALLED_DIR} ${TRIPLET_DEFINITIONS}
302+
BUILD_BYPRODUCTS ${OTEL_CPP_LIBRARIES}
303+
INSTALL_DIR ${OTEL_CPP_PREFIX}
304+
INSTALL_COMMAND ${CMAKE_COMMAND} --install . --prefix ${OTEL_CPP_PREFIX} --config $<CONFIG>
305+
)
306+
else()
307+
# Linux use a custom build command
308+
# Note: examples are temporarily turned off (-DWITH_EXAMPLES=OFF) due to a build issue that is now fixed in #3284
309+
# Renable examples after pulling in the fix
310+
ExternalProject_Add(
311+
${OTEL_CPP_PROJECT_NAME}
312+
GIT_REPOSITORY ${OTEL_CPP_GIT_REPOSITORY}
313+
GIT_TAG ${OTEL_CPP_GIT_TAG}
314+
PREFIX ${OTEL_CPP_PREFIX}
315+
UPDATE_DISCONNECTED 1
316+
PATCH_COMMAND ${OTEL_CPP_PATCH_CMD}
317+
CMAKE_ARGS -DCMAKE_POSITION_INDEPENDENT_CODE=ON -DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER} -DCMAKE_C_COMPILER=${CMAKE_C_COMPILER} -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE} -DCMAKE_INSTALL_RPATH=${CMAKE_INSTALL_RPATH} -DgRPC_DIR=${GRPC_INSTALL_LIB_DIR}/cmake/grpc -DWITH_ABI_VERSION_1=OFF -DWITH_ABI_VERSION_2=ON -DWITH_OTLP_HTTP=${WITH_OTLP_HTTP} -DWITH_OTLP_GRPC=${WITH_OTLP_GRPC} -DWITH_OTLP_FILE=${WITH_OTLP_FILE} -DWITH_EXAMPLES=OFF -DBUILD_TESTING=OFF -DWITH_BENCHMARK=OFF -DOPENTELEMETRY_INSTALL=ON -DCMAKE_TOOLCHAIN_FILE=${CMAKE_TOOLCHAIN_FILE} -DCMAKE_CXX_STANDARD=${OTEL_CPP_CXX_STANDARD} -DVCPKG_INSTALLED_DIR=${VCPKG_INSTALLED_DIR} ${TRIPLET_DEFINITIONS}
318+
BUILD_COMMAND ${CMAKE_COMMAND} -E env ${GRPC_LD_LIBRARY_PATH_ENV} ${CMAKE_MAKE_PROGRAM}
319+
BUILD_BYPRODUCTS ${OTEL_CPP_LIBRARIES}
320+
INSTALL_DIR ${OTEL_CPP_PREFIX}
321+
INSTALL_COMMAND ${CMAKE_COMMAND} --install . --prefix ${OTEL_CPP_PREFIX} --config $<CONFIG>
322+
)
217323
endif()
218324

219-
# Note: examples are temporarily turned off (-DWITH_EXAMPLES=OFF) due to a build issue that is now fixed in #3284
220-
# Renable examples after pulling in the fix
221-
ExternalProject_Add(
222-
${OTEL_CPP_PROJECT_NAME}
223-
GIT_REPOSITORY ${OTEL_CPP_GIT_REPOSITORY}
224-
GIT_TAG ${OTEL_CPP_GIT_TAG}
225-
PREFIX ${OTEL_CPP_PREFIX}
226-
UPDATE_DISCONNECTED 1
227-
PATCH_COMMAND ${patch_command}
228-
CMAKE_ARGS -DCMAKE_POSITION_INDEPENDENT_CODE=ON -DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER} -DCMAKE_C_COMPILER=${CMAKE_C_COMPILER} -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE} -DWITH_ABI_VERSION_1=OFF -DWITH_ABI_VERSION_2=ON -DWITH_OTLP_HTTP=${WITH_OTLP_HTTP} -DWITH_OTLP_GRPC=${WITH_OTLP_GRPC} -DWITH_OTLP_FILE=${WITH_OTLP_FILE} -DWITH_EXAMPLES=OFF -DBUILD_TESTING=OFF -DWITH_BENCHMARK=OFF -DOPENTELEMETRY_INSTALL=ON -DCMAKE_TOOLCHAIN_FILE=${CMAKE_TOOLCHAIN_FILE} -DCMAKE_CXX_STANDARD=${OTEL_CPP_CXX_STANDARD} -DVCPKG_INSTALLED_DIR=${VCPKG_INSTALLED_DIR} ${TRIPLET_DEFINITIONS}
229-
BUILD_BYPRODUCTS ${OTEL_CPP_LIBRARIES}
230-
INSTALL_DIR ${OTEL_CPP_PREFIX}
231-
INSTALL_COMMAND ${CMAKE_COMMAND} --install . --prefix ${OTEL_CPP_PREFIX} --config $<CONFIG>
232-
)
233325
endif()
234326

327+
235328
# ###########################
236329
# OpenTelemetry Proxy Library
237330
# ###########################
@@ -251,15 +344,10 @@ if(WITH_OTLP_HTTP)
251344
endif()
252345

253346
if(WITH_OTLP_GRPC)
254-
find_package(gRPC REQUIRED)
255347
find_package(absl REQUIRED)
256348
find_package(c-ares REQUIRED)
257349
find_package(re2 REQUIRED)
258-
if(WIN32)
259-
find_package(openssl REQUIRED)
260-
elseif(UNIX AND NOT APPLE AND NOT CYGWIN)
261-
find_package(upb REQUIRED)
262-
endif()
350+
find_package(OpenSSL REQUIRED COMPONENTS SSL Crypto)
263351
endif()
264352

265353
set(TRACE_API_INCLUDE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/api/trace/include)
@@ -385,12 +473,13 @@ if(WIN32)
385473
endif()
386474

387475
# link against OpenTelemetry-cpp libraries and their dependencies
388-
set(OPENTELEMETRY_PROXY_LINK_LIBRARIES ${OTEL_CPP_LIBRARIES} ${Protobuf_LIBRARIES} ${Matlab_MEX_LIBRARY})
476+
set(OPENTELEMETRY_PROXY_LINK_LIBRARIES ${OTEL_CPP_LIBRARIES} protobuf::libprotobuf ${Matlab_MEX_LIBRARY})
389477
if(WITH_OTLP_HTTP)
390478
set(OPENTELEMETRY_PROXY_LINK_LIBRARIES ${OPENTELEMETRY_PROXY_LINK_LIBRARIES} ${CURL_LIBRARIES})
391479
endif()
392480
if(WITH_OTLP_GRPC)
393-
set(OPENTELEMETRY_PROXY_LINK_LIBRARIES ${OPENTELEMETRY_PROXY_LINK_LIBRARIES} gRPC::grpc++ absl::synchronization)
481+
set(OPENTELEMETRY_PROXY_LINK_LIBRARIES ${OPENTELEMETRY_PROXY_LINK_LIBRARIES} ${GRPC_LINK_LIBRARIES} absl::synchronization
482+
absl::random_random ZLIB::ZLIB re2::re2 c-ares::cares OpenSSL::SSL OpenSSL::Crypto)
394483
endif()
395484

396485
target_link_libraries(${OPENTELEMETRY_PROXY_LIBRARY_NAME} PRIVATE ${OPENTELEMETRY_PROXY_LINK_LIBRARIES})
@@ -402,8 +491,7 @@ if(UNIX AND NOT APPLE AND NOT CYGWIN)
402491
"${OTEL_CPP_PREFIX}/lib/libopentelemetry_logs.a"
403492
"${OTEL_CPP_PREFIX}/lib/libopentelemetry_common.a"
404493
"${OTEL_CPP_PREFIX}/lib/libopentelemetry_otlp_recordable.a"
405-
${ABSL_LIBRARIES}
406-
${UPB_LIBRARIES} -Wl,--no-whole-archive)
494+
${ABSL_LIBRARIES} -Wl,--no-whole-archive)
407495
target_link_options(${OPENTELEMETRY_PROXY_LIBRARY_NAME} PRIVATE ${OPENTELEMETRY_PROXY_LINK_OPTIONS})
408496
elseif(APPLE)
409497
set_target_properties(${OPENTELEMETRY_PROXY_LIBRARY_NAME} PROPERTIES INSTALL_RPATH "@executable_path")
@@ -412,14 +500,13 @@ endif()
412500
# Use C++17
413501
target_compile_features(${OPENTELEMETRY_PROXY_LIBRARY_NAME} PRIVATE cxx_std_17)
414502

503+
# runtime dependent libraries
504+
# gRPC runtime libraries for non-Windows are listed further below in the installation section
415505
if(WIN32)
416-
# runtime dependent libraries
417-
# The TARGET_FILE generator command is somehow returning the .lib file instead of .dll for Protobuf and Zlib.
506+
# The TARGET_FILE generator command is somehow returning the .lib file instead of .dll for Zlib.
418507
# As a result, we have to hardcode those library names instead.
419-
set(PROTOBUF_DLL $<$<CONFIG:Debug>:libprotobufd.dll>$<$<CONFIG:Release>:libprotobuf.dll>)
420508
set(ZLIB_DLL $<$<CONFIG:Debug>:zlibd1.dll>$<$<CONFIG:Release>:zlib1.dll>)
421-
set(OPENTELEMETRY_PROXY_RUNTIME_LIBRARIES $<TARGET_FILE_DIR:protobuf::libprotobuf>/../bin/${PROTOBUF_DLL}
422-
$<TARGET_FILE_DIR:ZLIB::ZLIB>/../bin/${ZLIB_DLL})
509+
set(OPENTELEMETRY_PROXY_RUNTIME_LIBRARIES $<TARGET_FILE_DIR:ZLIB::ZLIB>/../bin/${ZLIB_DLL})
423510

424511
if(WITH_OTLP_HTTP)
425512
set(OPENTELEMETRY_PROXY_RUNTIME_LIBRARIES ${OPENTELEMETRY_PROXY_RUNTIME_LIBRARIES}
@@ -438,7 +525,7 @@ if(WIN32)
438525
else()
439526
set(OTEL_CPP_RUNTIME ${OTEL_CPP_PREFIX}/lib/libopentelemetry_proto${CMAKE_SHARED_LIBRARY_SUFFIX})
440527
if(WITH_OTLP_GRPC)
441-
set(OTEL_CPP_RUNTIME ${OTEL_CPP_RUNTIME}
528+
set(OTEL_CPP_RUNTIME ${OTEL_CPP_RUNTIME}
442529
${OTEL_CPP_PREFIX}/lib/libopentelemetry_proto_grpc${CMAKE_SHARED_LIBRARY_SUFFIX})
443530
endif()
444531
if(APPLE)
@@ -539,6 +626,13 @@ install(FILES ${OTLP_MISC_FILES} DESTINATION .)
539626
# Install dependent runtime libraries
540627
set(LIBMEXCLASS_PROXY_INSTALLED_DIR +libmexclass/+proxy)
541628
install(FILES ${OPENTELEMETRY_PROXY_RUNTIME_LIBRARIES} DESTINATION ${LIBMEXCLASS_PROXY_INSTALLED_DIR})
629+
if(UNIX AND WITH_OTLP_GRPC)
630+
install(DIRECTORY ${GRPC_INSTALL_LIB_DIR}/ DESTINATION ${LIBMEXCLASS_PROXY_INSTALLED_DIR}
631+
FILES_MATCHING
632+
PATTERN "*.*"
633+
PATTERN "cmake" EXCLUDE
634+
PATTERN "pkgconfig" EXCLUDE)
635+
endif()
542636

543637
# ##############################
544638
# Subdirectories

cmake/vcpkg_triplets/x64-windows-otel-matlab.cmake

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ set(VCPKG_TARGET_ARCHITECTURE x64)
22
set(VCPKG_CRT_LINKAGE dynamic)
33
# Conflict with abseil_dll.dll used by Simulink. cares.dll and re2.dll are also shipped with MATLAB.
44
# Use static libraries to avoid conflict.
5-
if(${PORT} MATCHES "(abseil|c-ares|re2)")
5+
if(${PORT} MATCHES "(protobuf|abseil|c-ares|re2)")
66
set(VCPKG_LIBRARY_LINKAGE static)
77
else()
88
set(VCPKG_LIBRARY_LINKAGE dynamic)

patches/grpc-mac.patch

Lines changed: 119 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,119 @@
1+
diff --git a/CMakeLists.txt b/CMakeLists.txt
2+
index 0627429f49..60a86853ba 100644
3+
--- a/CMakeLists.txt
4+
+++ b/CMakeLists.txt
5+
@@ -3588,13 +3588,13 @@ target_include_directories(upb_base_lib
6+
PRIVATE
7+
${CMAKE_CURRENT_SOURCE_DIR}
8+
${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
9+
- ${_gRPC_RE2_INCLUDE_DIR}
10+
- ${_gRPC_SSL_INCLUDE_DIR}
11+
${_gRPC_UPB_GENERATED_DIR}
12+
${_gRPC_UPB_GRPC_GENERATED_DIR}
13+
${_gRPC_UPB_INCLUDE_DIR}
14+
${_gRPC_XXHASH_INCLUDE_DIR}
15+
${_gRPC_ZLIB_INCLUDE_DIR}
16+
+ ${_gRPC_RE2_INCLUDE_DIR} # RE2 and SSL bring in all header files in vcpkg and can shadow other header files. Move them to the end
17+
+ ${_gRPC_SSL_INCLUDE_DIR}
18+
)
19+
target_link_libraries(upb_base_lib
20+
${_gRPC_ALLTARGETS_LIBRARIES}
21+
@@ -3651,6 +3651,11 @@ add_library(upb_json_lib ${_gRPC_STATIC_WIN32}
22+
23+
target_compile_features(upb_json_lib PUBLIC cxx_std_14)
24+
25+
+# allow undefined symbols in link step, as these symbols can be resolved later
26+
+if(APPLE)
27+
+ target_link_options(upb_json_lib PRIVATE -Wl,-undefined,dynamic_lookup)
28+
+endif()
29+
+
30+
set_target_properties(upb_json_lib PROPERTIES
31+
VERSION ${gRPC_CORE_VERSION}
32+
SOVERSION ${gRPC_CORE_SOVERSION}
33+
@@ -3672,13 +3677,13 @@ target_include_directories(upb_json_lib
34+
PRIVATE
35+
${CMAKE_CURRENT_SOURCE_DIR}
36+
${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
37+
- ${_gRPC_RE2_INCLUDE_DIR}
38+
- ${_gRPC_SSL_INCLUDE_DIR}
39+
${_gRPC_UPB_GENERATED_DIR}
40+
${_gRPC_UPB_GRPC_GENERATED_DIR}
41+
${_gRPC_UPB_INCLUDE_DIR}
42+
${_gRPC_XXHASH_INCLUDE_DIR}
43+
${_gRPC_ZLIB_INCLUDE_DIR}
44+
+ ${_gRPC_RE2_INCLUDE_DIR} # RE2 and SSL bring in all header files in vcpkg and can shadow other header files. Move them to the end
45+
+ ${_gRPC_SSL_INCLUDE_DIR}
46+
)
47+
target_link_libraries(upb_json_lib
48+
${_gRPC_ALLTARGETS_LIBRARIES}
49+
@@ -3726,13 +3731,13 @@ target_include_directories(upb_mem_lib
50+
PRIVATE
51+
${CMAKE_CURRENT_SOURCE_DIR}
52+
${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
53+
- ${_gRPC_RE2_INCLUDE_DIR}
54+
- ${_gRPC_SSL_INCLUDE_DIR}
55+
${_gRPC_UPB_GENERATED_DIR}
56+
${_gRPC_UPB_GRPC_GENERATED_DIR}
57+
${_gRPC_UPB_INCLUDE_DIR}
58+
${_gRPC_XXHASH_INCLUDE_DIR}
59+
${_gRPC_ZLIB_INCLUDE_DIR}
60+
+ ${_gRPC_RE2_INCLUDE_DIR} # RE2 and SSL bring in all header files in vcpkg and can shadow other header files. Move them to the end
61+
+ ${_gRPC_SSL_INCLUDE_DIR}
62+
)
63+
target_link_libraries(upb_mem_lib
64+
${_gRPC_ALLTARGETS_LIBRARIES}
65+
@@ -3788,13 +3793,13 @@ target_include_directories(upb_message_lib
66+
PRIVATE
67+
${CMAKE_CURRENT_SOURCE_DIR}
68+
${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
69+
- ${_gRPC_RE2_INCLUDE_DIR}
70+
- ${_gRPC_SSL_INCLUDE_DIR}
71+
${_gRPC_UPB_GENERATED_DIR}
72+
${_gRPC_UPB_GRPC_GENERATED_DIR}
73+
${_gRPC_UPB_INCLUDE_DIR}
74+
${_gRPC_XXHASH_INCLUDE_DIR}
75+
${_gRPC_ZLIB_INCLUDE_DIR}
76+
+ ${_gRPC_RE2_INCLUDE_DIR} # RE2 and SSL bring in all header files in vcpkg and can shadow other header files. Move them to the end
77+
+ ${_gRPC_SSL_INCLUDE_DIR}
78+
)
79+
target_link_libraries(upb_message_lib
80+
${_gRPC_ALLTARGETS_LIBRARIES}
81+
@@ -3852,6 +3857,11 @@ add_library(upb_textformat_lib ${_gRPC_STATIC_WIN32}
82+
83+
target_compile_features(upb_textformat_lib PUBLIC cxx_std_14)
84+
85+
+# allow undefined symbols in link step, as these symbols can be resolved later
86+
+if(APPLE)
87+
+ target_link_options(upb_textformat_lib PRIVATE -Wl,-undefined,dynamic_lookup)
88+
+endif()
89+
+
90+
set_target_properties(upb_textformat_lib PROPERTIES
91+
VERSION ${gRPC_CORE_VERSION}
92+
SOVERSION ${gRPC_CORE_SOVERSION}
93+
@@ -3873,13 +3883,13 @@ target_include_directories(upb_textformat_lib
94+
PRIVATE
95+
${CMAKE_CURRENT_SOURCE_DIR}
96+
${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
97+
- ${_gRPC_RE2_INCLUDE_DIR}
98+
- ${_gRPC_SSL_INCLUDE_DIR}
99+
${_gRPC_UPB_GENERATED_DIR}
100+
${_gRPC_UPB_GRPC_GENERATED_DIR}
101+
${_gRPC_UPB_INCLUDE_DIR}
102+
${_gRPC_XXHASH_INCLUDE_DIR}
103+
${_gRPC_ZLIB_INCLUDE_DIR}
104+
+ ${_gRPC_RE2_INCLUDE_DIR} # RE2 and SSL bring in all header files in vcpkg and can shadow other header files. Move them to the end
105+
+ ${_gRPC_SSL_INCLUDE_DIR}
106+
)
107+
target_link_libraries(upb_textformat_lib
108+
${_gRPC_ALLTARGETS_LIBRARIES}
109+
@@ -15420,6 +15430,10 @@ target_link_libraries(grpc_cpp_plugin
110+
grpc_plugin_support
111+
)
112+
113+
+# enable protoc to find plugin on Mac
114+
+set_target_properties(grpc_cpp_plugin PROPERTIES
115+
+ INSTALL_RPATH "@loader_path/../lib"
116+
+)
117+
118+
119+
if(gRPC_INSTALL)

0 commit comments

Comments
 (0)