diff --git a/CMakeLists.txt b/CMakeLists.txt index bdadbc9867..f2b1dd774a 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -81,6 +81,9 @@ set_property(CACHE gRPC_SSL_PROVIDER PROPERTY STRINGS "module" "package") set(gRPC_PROTOBUF_PROVIDER "module" CACHE STRING "Provider of protobuf library") set_property(CACHE gRPC_PROTOBUF_PROVIDER PROPERTY STRINGS "module" "package") +set(gRPC_UPB_PROVIDER "module" CACHE STRING "Provider of upb library") +set_property(CACHE gRPC_UPB_PROVIDER PROPERTY STRINGS "module" "package") + set(gRPC_PROTOBUF_PACKAGE_TYPE "" CACHE STRING "Algorithm for searching protobuf package") set_property(CACHE gRPC_PROTOBUF_PACKAGE_TYPE PROPERTY STRINGS "CONFIG" "MODULE") @@ -1791,7 +1794,6 @@ target_link_libraries(grpc ${_gRPC_ALLTARGETS_LIBRARIES} gpr address_sorting - upb absl::optional absl::strings absl::inlined_vector @@ -1870,7 +1872,6 @@ target_link_libraries(grpc_csharp_ext grpc gpr address_sorting - upb ) @@ -2386,7 +2387,6 @@ target_link_libraries(grpc_unsecure ${_gRPC_ALLTARGETS_LIBRARIES} gpr address_sorting - upb absl::optional absl::strings absl::inlined_vector @@ -2580,7 +2580,6 @@ target_link_libraries(grpc++ grpc gpr address_sorting - upb ) foreach(_hdr @@ -2856,7 +2855,6 @@ target_link_libraries(grpc++_alts grpc gpr address_sorting - upb ) foreach(_hdr @@ -2924,7 +2922,6 @@ target_link_libraries(grpc++_error_details grpc gpr address_sorting - upb ) foreach(_hdr @@ -2997,7 +2994,6 @@ target_link_libraries(grpc++_reflection grpc gpr address_sorting - upb ) foreach(_hdr @@ -3274,7 +3270,6 @@ target_link_libraries(grpc++_unsecure grpc_unsecure gpr address_sorting - upb ) foreach(_hdr @@ -3621,7 +3616,6 @@ target_link_libraries(grpcpp_channelz grpc gpr address_sorting - upb ) foreach(_hdr @@ -3648,6 +3642,7 @@ endif() endif() +if (gRPC_UPB_PROVIDER STREQUAL "module") add_library(upb third_party/upb/upb/decode.c third_party/upb/upb/encode.c @@ -3697,7 +3692,7 @@ if(gRPC_INSTALL) ARCHIVE DESTINATION ${gRPC_INSTALL_LIBDIR} ) endif() - +endif() add_executable(check_epollexclusive diff --git a/cmake/gRPCConfig.cmake.in b/cmake/gRPCConfig.cmake.in index 5bfa73c291..db0865ee57 100644 --- a/cmake/gRPCConfig.cmake.in +++ b/cmake/gRPCConfig.cmake.in @@ -7,6 +7,7 @@ list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_LIST_DIR}/modules) @_gRPC_FIND_SSL@ @_gRPC_FIND_CARES@ @_gRPC_FIND_ABSL@ +@_gRPC_FIND_UPB@ # Targets include(${CMAKE_CURRENT_LIST_DIR}/gRPCTargets.cmake) diff --git a/cmake/upb.cmake b/cmake/upb.cmake index 2c0ab84e67..07dd613a78 100644 --- a/cmake/upb.cmake +++ b/cmake/upb.cmake @@ -12,9 +12,18 @@ # See the License for the specific language governing permissions and # limitations under the License. +set(_gRPC_UPB_GRPC_GENERATED_DIR "${CMAKE_CURRENT_SOURCE_DIR}/src/core/ext/upb-generated") +if (gRPC_UPB_PROVIDER STREQUAL "module") set(UPB_ROOT_DIR ${CMAKE_CURRENT_SOURCE_DIR}/third_party/upb) set(_gRPC_UPB_INCLUDE_DIR "${UPB_ROOT_DIR}") -set(_gRPC_UPB_GRPC_GENERATED_DIR "${CMAKE_CURRENT_SOURCE_DIR}/src/core/ext/upb-generated") set(_gRPC_UPB_LIBRARIES upb) + +elseif(gRPC_UPB_PROVIDER STREQUAL "package") + find_package(upb CONFIG REQUIRED) + set(_gRPC_UPB_LIBRARIES upb::upb) + set(_gRPC_UPB_INCLUDE_DIR) + set(upb ${_gRPC_UPB_LIBRARIES}) + set(_gRPC_FIND_UPB "if(NOT upb_FOUND)\n find_package(upb CONFIG REQUIRED)\nendif()") +endif()