diff options
| author | Ethan Morgan <ethan@gweithio.com> | 2026-02-14 16:44:06 +0000 |
|---|---|---|
| committer | Ethan Morgan <ethan@gweithio.com> | 2026-02-14 16:44:06 +0000 |
| commit | 54409423f767d8b1cf30cb7d0efca6b4ca138823 (patch) | |
| tree | d915ac7828703ce4b963efdd9728a1777ba18c1e /vcpkg/ports/grpc | |
Diffstat (limited to 'vcpkg/ports/grpc')
| -rw-r--r-- | vcpkg/ports/grpc/00001-fix-uwp.patch | 73 | ||||
| -rw-r--r-- | vcpkg/ports/grpc/00002-static-linking-in-linux.patch | 16 | ||||
| -rw-r--r-- | vcpkg/ports/grpc/00004-link-gdi32-on-windows.patch | 13 | ||||
| -rw-r--r-- | vcpkg/ports/grpc/00005-fix-uwp-error.patch | 47 | ||||
| -rw-r--r-- | vcpkg/ports/grpc/00006-utf8-range.patch | 110 | ||||
| -rw-r--r-- | vcpkg/ports/grpc/00015-disable-download-archive.patch | 12 | ||||
| -rw-r--r-- | vcpkg/ports/grpc/00016-fix-plugin-targets.patch | 12 | ||||
| -rw-r--r-- | vcpkg/ports/grpc/00017-add-src-upb.patch | 36 | ||||
| -rw-r--r-- | vcpkg/ports/grpc/gRPCTargets-vcpkg-tools.cmake | 10 | ||||
| -rw-r--r-- | vcpkg/ports/grpc/portfile.cmake | 104 | ||||
| -rw-r--r-- | vcpkg/ports/grpc/vcpkg-cmake-wrapper.cmake | 2 | ||||
| -rw-r--r-- | vcpkg/ports/grpc/vcpkg.json | 51 |
12 files changed, 486 insertions, 0 deletions
diff --git a/vcpkg/ports/grpc/00001-fix-uwp.patch b/vcpkg/ports/grpc/00001-fix-uwp.patch new file mode 100644 index 0000000..2fff405 --- /dev/null +++ b/vcpkg/ports/grpc/00001-fix-uwp.patch @@ -0,0 +1,73 @@ +diff --git a/CMakeLists.txt b/CMakeLists.txt +index fa5b2a0..45d6b78 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -284,6 +284,9 @@ if(UNIX) + endif() + if(WIN32) + set(_gRPC_PLATFORM_WINDOWS ON) ++ if(CMAKE_SYSTEM_NAME STREQUAL "WindowsStore") ++ set(_gRPC_PLATFORM_UWP ON) ++ endif() + endif() + + if (APPLE AND NOT DEFINED CMAKE_CXX_STANDARD) +@@ -314,6 +317,9 @@ if(MSVC) + set(_gRPC_C_CXX_FLAGS "${_gRPC_C_CXX_FLAGS} /wd4267") + # TODO(jtattermusch): needed to build boringssl with VS2017, revisit later + set(_gRPC_C_CXX_FLAGS "${_gRPC_C_CXX_FLAGS} /wd4987 /wd4774 /wd4819 /wd4996 /wd4619") ++ if(_gRPC_PLATFORM_UWP) ++ add_definitions(-DGRPC_ARES=0) ++ endif() + # Silences thousands of trucation warnings + set(_gRPC_C_CXX_FLAGS "${_gRPC_C_CXX_FLAGS} /wd4503") + # Tell MSVC to build grpc using utf-8 +@@ -546,6 +552,10 @@ file(MAKE_DIRECTORY ${_gRPC_PROTO_GENS_DIR}) + # ``.proto`` files + # + function(protobuf_generate_grpc_cpp) ++ if(_gRPC_PLATFORM_UWP) ++ return() ++ endif() ++ + if(NOT ARGN) + message(SEND_ERROR "Error: PROTOBUF_GENERATE_GRPC_CPP() called without any proto files") + return() +@@ -668,6 +678,7 @@ if (gRPC_BUILD_GRPC_RUBY_PLUGIN) + list(APPEND _gRPC_PLUGIN_LIST grpc_ruby_plugin) + endif () + ++if(NOT _gRPC_PLATFORM_UWP) + add_custom_target(plugins + DEPENDS ${_gRPC_PLUGIN_LIST} + ) +@@ -683,6 +694,7 @@ add_custom_target(tools_cxx + add_custom_target(tools + DEPENDS tools_c tools_cxx) + ++endif() + protobuf_generate_grpc_cpp_with_import_path_correction( + src/core/ext/transport/chaotic_good/chaotic_good_frame.proto src/core/ext/transport/chaotic_good/chaotic_good_frame.proto + ) +diff --git a/src/core/lib/security/credentials/alts/check_gcp_environment_windows.cc b/src/core/lib/security/credentials/alts/check_gcp_environment_windows.cc +index 462ba6b..06e1a0c 100644 +--- a/src/core/lib/security/credentials/alts/check_gcp_environment_windows.cc ++++ b/src/core/lib/security/credentials/alts/check_gcp_environment_windows.cc +@@ -38,6 +38,7 @@ bool check_bios_data(const char*) { return false; } + bool check_windows_registry_product_name(HKEY root_key, + const char* reg_key_path, + const char* reg_key_name) { ++ #if !defined(WINAPI_FAMILY) || WINAPI_FAMILY == WINAPI_FAMILY_DESKTOP_APP + const size_t kProductNameBufferSize = 256; + char const expected_substr[] = "Google"; + +@@ -70,6 +71,9 @@ bool check_windows_registry_product_name(HKEY root_key, + } + + return strstr(buffer, expected_substr) != nullptr; ++#else ++ return false; ++#endif + } + + } // namespace internal diff --git a/vcpkg/ports/grpc/00002-static-linking-in-linux.patch b/vcpkg/ports/grpc/00002-static-linking-in-linux.patch new file mode 100644 index 0000000..8999a24 --- /dev/null +++ b/vcpkg/ports/grpc/00002-static-linking-in-linux.patch @@ -0,0 +1,16 @@ +diff --git a/CMakeLists.txt b/CMakeLists.txt +index 8f78306f77..e09f8fcc1e 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -211,6 +211,11 @@ if (NOT DEFINED CMAKE_POSITION_INDEPENDENT_CODE) + endif() + list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake/modules") + ++if (gRPC_STATIC_LINKING AND NOT _gRPC_PLATFORM_WINDOWS) ++ # Force to static link ++ set(CMAKE_EXE_LINKER_FLAGS "-Bstatic") ++endif() ++ + if(MSVC) + include(cmake/msvc_static_runtime.cmake) + add_definitions(-D_WIN32_WINNT=0x600 -D_SCL_SECURE_NO_WARNINGS -D_CRT_SECURE_NO_WARNINGS -D_WINSOCK_DEPRECATED_NO_WARNINGS) diff --git a/vcpkg/ports/grpc/00004-link-gdi32-on-windows.patch b/vcpkg/ports/grpc/00004-link-gdi32-on-windows.patch new file mode 100644 index 0000000..cb4ebad --- /dev/null +++ b/vcpkg/ports/grpc/00004-link-gdi32-on-windows.patch @@ -0,0 +1,13 @@ +diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 2f633092ae..43fa8f6d97 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -481,7 +481,7 @@ if (NOT EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/third_party/xds AND gRPC_DOWNLOAD_ARC
+ endif()
+
+ if(WIN32)
+- set(_gRPC_ALLTARGETS_LIBRARIES ${_gRPC_ALLTARGETS_LIBRARIES} ws2_32 crypt32)
++ set(_gRPC_ALLTARGETS_LIBRARIES ${_gRPC_ALLTARGETS_LIBRARIES} wsock32 ws2_32 crypt32 gdi32)
+ set(_gRPC_STATIC_WIN32 STATIC)
+ endif()
+
diff --git a/vcpkg/ports/grpc/00005-fix-uwp-error.patch b/vcpkg/ports/grpc/00005-fix-uwp-error.patch new file mode 100644 index 0000000..2070760 --- /dev/null +++ b/vcpkg/ports/grpc/00005-fix-uwp-error.patch @@ -0,0 +1,47 @@ +diff --git a/src/core/ext/transport/chttp2/transport/hpack_parser.cc b/src/core/ext/transport/chttp2/transport/hpack_parser.cc
+index 84b4e86279..4921002887 100644
+--- a/src/core/ext/transport/chttp2/transport/hpack_parser.cc
++++ b/src/core/ext/transport/chttp2/transport/hpack_parser.cc
+@@ -688,7 +688,7 @@ class HPackParser::Parser {
+ }
+
+ void GPR_ATTRIBUTE_NOINLINE LogHeader(const HPackTable::Memento& memento) {
+- const char* type;
++ const char* type = nullptr;
+ switch (log_info_.type) {
+ case LogInfo::kHeaders:
+ type = "HDR";
+diff --git a/src/core/lib/slice/slice.cc b/src/core/lib/slice/slice.cc
+index f2d49e0bf4..c86a75f1a3 100644
+--- a/src/core/lib/slice/slice.cc
++++ b/src/core/lib/slice/slice.cc
+@@ -189,6 +189,7 @@ grpc_slice grpc_slice_from_moved_buffer(grpc_core::UniquePtr<char> p,
+ size_t len) {
+ uint8_t* ptr = reinterpret_cast<uint8_t*>(p.get());
+ grpc_slice slice;
++ memset(&slice, 0, sizeof(grpc_slice));
+ if (len <= sizeof(slice.data.inlined.bytes)) {
+ slice.refcount = nullptr;
+ slice.data.inlined.length = len;
+@@ -207,7 +208,7 @@ grpc_slice grpc_slice_from_moved_string(grpc_core::UniquePtr<char> p) {
+ }
+
+ grpc_slice grpc_slice_from_cpp_string(std::string str) {
+- grpc_slice slice;
++ grpc_slice slice = { 0 };
+ if (str.size() <= sizeof(slice.data.inlined.bytes)) {
+ slice.refcount = nullptr;
+ slice.data.inlined.length = str.size();
+diff --git a/src/core/server/server.cc b/src/core/server/server.cc
+index c4796d6ae9..6a0289d180 100644
+--- a/src/core/server/server.cc
++++ b/src/core/server/server.cc
+@@ -1284,7 +1284,7 @@ grpc_call_error Server::QueueRequestedCall(size_t cq_idx, RequestedCall* rc) {
+ FailCall(cq_idx, rc, GRPC_ERROR_CREATE("Server Shutdown"));
+ return GRPC_CALL_OK;
+ }
+- RequestMatcherInterface* rm;
++ RequestMatcherInterface* rm = nullptr;
+ switch (rc->type) {
+ case RequestedCall::Type::BATCH_CALL:
+ rm = unregistered_request_matcher_.get();
diff --git a/vcpkg/ports/grpc/00006-utf8-range.patch b/vcpkg/ports/grpc/00006-utf8-range.patch new file mode 100644 index 0000000..e2677a4 --- /dev/null +++ b/vcpkg/ports/grpc/00006-utf8-range.patch @@ -0,0 +1,110 @@ +diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 2d1af5ce7d..791b933345 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -4348,7 +4348,7 @@ if(gRPC_INSTALL)
+ )
+ endif()
+
+-
++if(0)
+ add_library(utf8_range_lib
+ third_party/utf8_range/utf8_range.c
+ )
+@@ -4398,6 +4398,7 @@ if(gRPC_INSTALL)
+ ARCHIVE DESTINATION ${gRPC_INSTALL_LIBDIR}
+ )
+ endif()
++endif()
+
+ if(gRPC_BUILD_TESTS)
+
+@@ -51142,9 +51143,9 @@ generate_pkgconfig(
+ "high performance general RPC framework"
+ "${gRPC_CORE_VERSION}"
+ "absl_algorithm_container absl_any_invocable absl_base absl_bind_front absl_bits absl_check absl_cleanup absl_config absl_cord absl_core_headers absl_flags absl_flags_marshalling absl_flat_hash_map absl_flat_hash_set absl_function_ref absl_hash absl_inlined_vector absl_log absl_log_globals absl_log_severity absl_memory absl_no_destructor absl_optional absl_random_bit_gen_ref absl_random_distributions absl_random_random absl_span absl_status absl_statusor absl_str_format absl_strings absl_synchronization absl_time absl_type_traits absl_utility gpr"
+- "libcares openssl re2 zlib"
++ "libcares openssl re2 zlib utf8_range"
+ "-lgrpc"
+- "-laddress_sorting -lupb_textformat_lib -lupb_json_lib -lupb_wire_lib -lupb_message_lib -lutf8_range_lib -lupb_mini_descriptor_lib -lupb_mem_lib -lupb_base_lib"
++ "-laddress_sorting -lupb_textformat_lib -lupb_json_lib -lupb_wire_lib -lupb_message_lib -lupb_mini_descriptor_lib -lupb_mem_lib -lupb_base_lib"
+ "grpc.pc")
+
+ # grpc_unsecure .pc file
+@@ -51153,9 +51154,9 @@ generate_pkgconfig(
+ "high performance general RPC framework without SSL"
+ "${gRPC_CORE_VERSION}"
+ "absl_algorithm_container absl_any_invocable absl_base absl_bind_front absl_bits absl_check absl_cleanup absl_config absl_cord absl_core_headers absl_flags absl_flags_marshalling absl_flat_hash_map absl_flat_hash_set absl_function_ref absl_hash absl_inlined_vector absl_log absl_log_globals absl_log_severity absl_memory absl_no_destructor absl_optional absl_random_bit_gen_ref absl_random_distributions absl_random_random absl_span absl_status absl_statusor absl_str_format absl_strings absl_synchronization absl_time absl_type_traits absl_utility gpr"
+- "libcares zlib"
++ "libcares zlib utf8_range"
+ "-lgrpc_unsecure"
+- "-laddress_sorting -lupb_wire_lib -lupb_message_lib -lutf8_range_lib -lupb_mini_descriptor_lib -lupb_mem_lib -lupb_base_lib"
++ "-laddress_sorting -lupb_wire_lib -lupb_message_lib -lupb_mini_descriptor_lib -lupb_mem_lib -lupb_base_lib"
+ "grpc_unsecure.pc")
+
+ # grpc++ .pc file
+@@ -51164,9 +51165,9 @@ generate_pkgconfig(
+ "C++ wrapper for gRPC"
+ "${gRPC_CPP_VERSION}"
+ "absl_absl_check absl_absl_log absl_algorithm_container absl_any_invocable absl_base absl_bind_front absl_bits absl_check absl_cleanup absl_config absl_cord absl_core_headers absl_flags absl_flags_marshalling absl_flat_hash_map absl_flat_hash_set absl_function_ref absl_hash absl_inlined_vector absl_log absl_log_globals absl_log_severity absl_memory absl_no_destructor absl_optional absl_random_bit_gen_ref absl_random_distributions absl_random_random absl_span absl_status absl_statusor absl_str_format absl_strings absl_synchronization absl_time absl_type_traits absl_utility gpr grpc"
+- "libcares openssl re2 zlib"
++ "libcares openssl re2 zlib utf8_range"
+ "-lgrpc++"
+- "-laddress_sorting -lupb_textformat_lib -lupb_json_lib -lupb_wire_lib -lupb_message_lib -lutf8_range_lib -lupb_mini_descriptor_lib -lupb_mem_lib -lupb_base_lib"
++ "-laddress_sorting -lupb_textformat_lib -lupb_json_lib -lupb_wire_lib -lupb_message_lib -lupb_mini_descriptor_lib -lupb_mem_lib -lupb_base_lib"
+ "grpc++.pc")
+
+ # grpc++_unsecure .pc file
+@@ -51175,18 +51176,20 @@ generate_pkgconfig(
+ "C++ wrapper for gRPC without SSL"
+ "${gRPC_CPP_VERSION}"
+ "absl_absl_check absl_absl_log absl_algorithm_container absl_any_invocable absl_base absl_bind_front absl_bits absl_check absl_cleanup absl_config absl_cord absl_core_headers absl_flags absl_flags_marshalling absl_flat_hash_map absl_flat_hash_set absl_function_ref absl_hash absl_inlined_vector absl_log absl_log_globals absl_log_severity absl_memory absl_no_destructor absl_optional absl_random_bit_gen_ref absl_random_distributions absl_random_random absl_span absl_status absl_statusor absl_str_format absl_strings absl_synchronization absl_time absl_type_traits absl_utility gpr grpc_unsecure"
+- "libcares zlib"
++ "libcares zlib utf8_range"
+ "-lgrpc++_unsecure"
+- "-laddress_sorting -lupb_wire_lib -lupb_message_lib -lutf8_range_lib -lupb_mini_descriptor_lib -lupb_mem_lib -lupb_base_lib"
++ "-laddress_sorting -lupb_wire_lib -lupb_message_lib -lupb_mini_descriptor_lib -lupb_mem_lib -lupb_base_lib"
+ "grpc++_unsecure.pc")
+
++if(gRPC_BUILD_GRPCPP_OTEL_PLUGIN)
+ # grpcpp_otel_plugin .pc file
+ generate_pkgconfig(
+ "gRPC++ OpenTelemetry Plugin"
+ "OpenTelemetry Plugin for gRPC C++"
+ "${gRPC_CPP_VERSION}"
+ "absl_absl_check absl_absl_log absl_algorithm_container absl_any_invocable absl_base absl_bind_front absl_bits absl_check absl_cleanup absl_config absl_cord absl_core_headers absl_flags absl_flags_marshalling absl_flat_hash_map absl_flat_hash_set absl_function_ref absl_hash absl_inlined_vector absl_log absl_log_globals absl_log_severity absl_memory absl_no_destructor absl_optional absl_random_bit_gen_ref absl_random_distributions absl_random_random absl_span absl_status absl_statusor absl_str_format absl_strings absl_synchronization absl_time absl_type_traits absl_utility gpr grpc grpc++ opentelemetry_api"
+- "libcares openssl re2 zlib"
++ "libcares openssl re2 zlib utf8_range"
+ "-lgrpcpp_otel_plugin"
+- "-laddress_sorting -lupb_textformat_lib -lupb_json_lib -lupb_wire_lib -lupb_message_lib -lutf8_range_lib -lupb_mini_descriptor_lib -lupb_mem_lib -lupb_base_lib"
++ "-laddress_sorting -lupb_textformat_lib -lupb_json_lib -lupb_wire_lib -lupb_message_lib -lupb_mini_descriptor_lib -lupb_mem_lib -lupb_base_lib"
+ "grpcpp_otel_plugin.pc")
++endif()
+diff --git a/cmake/gRPCConfig.cmake.in b/cmake/gRPCConfig.cmake.in
+index d552e0bb4e..5751f503ba 100644
+--- a/cmake/gRPCConfig.cmake.in
++++ b/cmake/gRPCConfig.cmake.in
+@@ -9,6 +9,7 @@ list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_LIST_DIR}/modules)
+ @_gRPC_FIND_ABSL@
+ @_gRPC_FIND_RE2@
+ @_gRPC_FIND_OPENTELEMETRY@
++@_gRPC_FIND_UTF8_RANGE@
+
+ # Targets
+ include(${CMAKE_CURRENT_LIST_DIR}/gRPCTargets.cmake)
+diff --git a/cmake/upb.cmake b/cmake/upb.cmake
+index 9156e5f48f..5323b5f10d 100644
+--- a/cmake/upb.cmake
++++ b/cmake/upb.cmake
+@@ -14,7 +14,9 @@
+
+ set(UPB_ROOT_DIR ${CMAKE_CURRENT_SOURCE_DIR}/third_party/upb)
+
+-set(_gRPC_UPB_INCLUDE_DIR "${UPB_ROOT_DIR}" "${CMAKE_CURRENT_SOURCE_DIR}/third_party/utf8_range")
++set(_gRPC_UPB_INCLUDE_DIR "${UPB_ROOT_DIR}")
+ set(_gRPC_UPB_GRPC_GENERATED_DIR "${CMAKE_CURRENT_SOURCE_DIR}/src/core/ext/upb-gen" "${CMAKE_CURRENT_SOURCE_DIR}/src/core/ext/upbdefs-gen")
+
+ set(_gRPC_UPB_LIBRARIES upb)
++set(_gRPC_FIND_UTF8_RANGE "find_dependency(utf8_range CONFIG)")
++add_library(utf8_range_lib ALIAS utf8_range::utf8_range)
+\ No newline at end of file
diff --git a/vcpkg/ports/grpc/00015-disable-download-archive.patch b/vcpkg/ports/grpc/00015-disable-download-archive.patch new file mode 100644 index 0000000..675c251 --- /dev/null +++ b/vcpkg/ports/grpc/00015-disable-download-archive.patch @@ -0,0 +1,12 @@ +diff --git a/cmake/download_archive.cmake b/cmake/download_archive.cmake +index 820aafa..a59b785 100644 +--- a/cmake/download_archive.cmake ++++ b/cmake/download_archive.cmake +@@ -19,6 +19,7 @@ file(MAKE_DIRECTORY ${_download_archive_TEMPORARY_DIR}) + # Note that strip_prefix strips the directory path prefix of the extracted + # archive content, and it may strip multiple directories. + function(download_archive destination url hash strip_prefix) ++ return() + # Fetch and validate + set(_TEMPORARY_FILE ${_download_archive_TEMPORARY_DIR}/${strip_prefix}.tar.gz) + message(STATUS "Downloading from ${url}, if failed, please try configuring again") diff --git a/vcpkg/ports/grpc/00016-fix-plugin-targets.patch b/vcpkg/ports/grpc/00016-fix-plugin-targets.patch new file mode 100644 index 0000000..ce7924c --- /dev/null +++ b/vcpkg/ports/grpc/00016-fix-plugin-targets.patch @@ -0,0 +1,12 @@ +diff --git a/cmake/gRPCConfig.cmake.in b/cmake/gRPCConfig.cmake.in
+index 7cad2abca1..c287f3b413 100644
+--- a/cmake/gRPCConfig.cmake.in
++++ b/cmake/gRPCConfig.cmake.in
+@@ -12,6 +12,6 @@ list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_LIST_DIR}/modules)
+
+ # Targets
+ include(${CMAKE_CURRENT_LIST_DIR}/gRPCTargets.cmake)
+-if(NOT CMAKE_CROSSCOMPILING)
++if(@gRPC_BUILD_CODEGEN@)
+ include(${CMAKE_CURRENT_LIST_DIR}/gRPCPluginTargets.cmake)
+ endif()
diff --git a/vcpkg/ports/grpc/00017-add-src-upb.patch b/vcpkg/ports/grpc/00017-add-src-upb.patch new file mode 100644 index 0000000..8cb101b --- /dev/null +++ b/vcpkg/ports/grpc/00017-add-src-upb.patch @@ -0,0 +1,36 @@ +diff --git a/CMakeLists.txt b/CMakeLists.txt +index 391d113..3774159 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -3969,6 +3969,7 @@ add_library(upb_json_lib ${_gRPC_STATIC_WIN32} + third_party/upb/upb/reflection/method_def.c + third_party/upb/upb/reflection/oneof_def.c + third_party/upb/upb/reflection/service_def.c ++ third_party/upb/upb/reflection/cmake/google/protobuf/descriptor.upb_minitable.c + ) + + target_compile_features(upb_json_lib PUBLIC cxx_std_17) +@@ -3992,7 +3993,6 @@ endif() + target_include_directories(upb_json_lib + PUBLIC $<INSTALL_INTERFACE:${gRPC_INSTALL_INCLUDEDIR}> $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include> + PRIVATE +- ${CMAKE_CURRENT_SOURCE_DIR} + ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR} + ${_gRPC_RE2_INCLUDE_DIR} + ${_gRPC_SSL_INCLUDE_DIR} +@@ -4226,6 +4226,7 @@ add_library(upb_textformat_lib ${_gRPC_STATIC_WIN32} + third_party/upb/upb/reflection/service_def.c + third_party/upb/upb/text/encode.c + third_party/upb/upb/text/internal/encode.c ++ third_party/upb/upb/reflection/cmake/google/protobuf/descriptor.upb_minitable.c + ) + + target_compile_features(upb_textformat_lib PUBLIC cxx_std_17) +@@ -4249,7 +4250,6 @@ endif() + target_include_directories(upb_textformat_lib + PUBLIC $<INSTALL_INTERFACE:${gRPC_INSTALL_INCLUDEDIR}> $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include> + PRIVATE +- ${CMAKE_CURRENT_SOURCE_DIR} + ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR} + ${_gRPC_RE2_INCLUDE_DIR} + ${_gRPC_SSL_INCLUDE_DIR} diff --git a/vcpkg/ports/grpc/gRPCTargets-vcpkg-tools.cmake b/vcpkg/ports/grpc/gRPCTargets-vcpkg-tools.cmake new file mode 100644 index 0000000..1ed3509 --- /dev/null +++ b/vcpkg/ports/grpc/gRPCTargets-vcpkg-tools.cmake @@ -0,0 +1,10 @@ +file(GLOB GRPC_PLUGINS "${_IMPORT_PREFIX}/../@HOST_TRIPLET@/tools/grpc/grpc_*_plugin*") + +foreach(PLUGIN ${GRPC_PLUGINS}) + get_filename_component(PLUGIN_NAME "${PLUGIN}" NAME_WE) + add_executable(gRPC::${PLUGIN_NAME} IMPORTED) + set_property(TARGET gRPC::${PLUGIN_NAME} APPEND PROPERTY IMPORTED_CONFIGURATIONS RELEASE) + set_target_properties(gRPC::${PLUGIN_NAME} PROPERTIES + IMPORTED_LOCATION_RELEASE "${PLUGIN}" + ) +endforeach() diff --git a/vcpkg/ports/grpc/portfile.cmake b/vcpkg/ports/grpc/portfile.cmake new file mode 100644 index 0000000..0c14253 --- /dev/null +++ b/vcpkg/ports/grpc/portfile.cmake @@ -0,0 +1,104 @@ +if(VCPKG_TARGET_IS_WINDOWS) + vcpkg_check_linkage(ONLY_STATIC_LIBRARY) +endif() + +vcpkg_from_github( + OUT_SOURCE_PATH SOURCE_PATH + REPO grpc/grpc + REF "v${VERSION}" + SHA512 25783f75295919d0a077e3d0ff70ea2e651eaf107da2ebe8af40a584540f2f56aae0e04c7b809f3b1eb7d5adc3892f84464662d80b1234a111836f454ba84a18 + HEAD_REF master + PATCHES + 00001-fix-uwp.patch + 00002-static-linking-in-linux.patch + 00004-link-gdi32-on-windows.patch + 00005-fix-uwp-error.patch + 00006-utf8-range.patch + 00015-disable-download-archive.patch + 00016-fix-plugin-targets.patch + 00017-add-src-upb.patch +) +file(REMOVE_RECURSE + "${SOURCE_PATH}/third_party/abseil-cpp" + "${SOURCE_PATH}/third_party/cares" + "${SOURCE_PATH}/third_party/protobuf" + "${SOURCE_PATH}/third_party/re2" + "${SOURCE_PATH}/third_party/utf8_range" + "${SOURCE_PATH}/third_party/zlib" +) + +if(VCPKG_CROSSCOMPILING) + vcpkg_add_to_path(PREPEND "${CURRENT_HOST_INSTALLED_DIR}/tools/grpc") +endif() + +string(COMPARE EQUAL "${VCPKG_CRT_LINKAGE}" "static" gRPC_MSVC_STATIC_RUNTIME) +string(COMPARE EQUAL "${VCPKG_LIBRARY_LINKAGE}" "static" gRPC_STATIC_LINKING) + +set(cares_CARES_PROVIDER "package") +if(VCPKG_TARGET_IS_UWP) + set(cares_CARES_PROVIDER "OFF") +endif() + +vcpkg_check_features( + OUT_FEATURE_OPTIONS FEATURE_OPTIONS + FEATURES + codegen gRPC_BUILD_CODEGEN + systemd gRPC_USE_SYSTEMD +) + +vcpkg_cmake_configure( + SOURCE_PATH "${SOURCE_PATH}" + OPTIONS ${FEATURE_OPTIONS} + -DgRPC_INSTALL=ON + -DgRPC_BUILD_TESTS=OFF + -DgRPC_STATIC_LINKING=${gRPC_STATIC_LINKING} + -DgRPC_MSVC_STATIC_RUNTIME=${gRPC_MSVC_STATIC_RUNTIME} + -DgRPC_ZLIB_PROVIDER=package + -DgRPC_SSL_PROVIDER=package + -DgRPC_PROTOBUF_PROVIDER=package + -DgRPC_ABSL_PROVIDER=package + -DgRPC_RE2_PROVIDER=package + -DgRPC_CARES_PROVIDER=${cares_CARES_PROVIDER} + -DgRPC_BENCHMARK_PROVIDER=none + -DgRPC_INSTALL_BINDIR:STRING=bin + -DgRPC_INSTALL_LIBDIR:STRING=lib + -DgRPC_INSTALL_INCLUDEDIR:STRING=include + -DgRPC_INSTALL_CMAKEDIR:STRING=share/grpc + "-D_gRPC_PROTOBUF_PROTOC_EXECUTABLE=${CURRENT_HOST_INSTALLED_DIR}/tools/protobuf/protoc${VCPKG_HOST_EXECUTABLE_SUFFIX}" + "-DProtobuf_PROTOC_EXECUTABLE=${CURRENT_HOST_INSTALLED_DIR}/tools/protobuf/protoc${VCPKG_HOST_EXECUTABLE_SUFFIX}" + -DgRPC_BUILD_GRPCPP_OTEL_PLUGIN=OFF + -DgRPC_DOWNLOAD_ARCHIVES=OFF + MAYBE_UNUSED_VARIABLES + gRPC_MSVC_STATIC_RUNTIME + gRPC_USE_SYSTEMD +) + +vcpkg_cmake_install(ADD_BIN_TO_PATH) +vcpkg_copy_pdbs() +vcpkg_cmake_config_fixup() + +if (VCPKG_TARGET_IS_WINDOWS) + file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/lib/pkgconfig" "${CURRENT_PACKAGES_DIR}/debug/lib/pkgconfig") +else() + vcpkg_fixup_pkgconfig() +endif() + +if (gRPC_BUILD_CODEGEN) + vcpkg_copy_tools( + AUTO_CLEAN + TOOL_NAMES + grpc_php_plugin + grpc_python_plugin + grpc_node_plugin + grpc_objective_c_plugin + grpc_csharp_plugin + grpc_cpp_plugin + grpc_ruby_plugin + ) +else() + configure_file("${CMAKE_CURRENT_LIST_DIR}/gRPCTargets-vcpkg-tools.cmake" "${CURRENT_PACKAGES_DIR}/share/grpc/gRPCTargets-vcpkg-tools.cmake" @ONLY) +endif() + +file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/debug/share" "${CURRENT_PACKAGES_DIR}/debug/include") + +vcpkg_install_copyright(FILE_LIST "${SOURCE_PATH}/LICENSE") diff --git a/vcpkg/ports/grpc/vcpkg-cmake-wrapper.cmake b/vcpkg/ports/grpc/vcpkg-cmake-wrapper.cmake new file mode 100644 index 0000000..9adf028 --- /dev/null +++ b/vcpkg/ports/grpc/vcpkg-cmake-wrapper.cmake @@ -0,0 +1,2 @@ +list(REMOVE_AT ARGS 0)
+_find_package(gRPC ${ARGS}) # Shouldn't this be fixed downstream instead of using a Wrapper?
\ No newline at end of file diff --git a/vcpkg/ports/grpc/vcpkg.json b/vcpkg/ports/grpc/vcpkg.json new file mode 100644 index 0000000..49b5da5 --- /dev/null +++ b/vcpkg/ports/grpc/vcpkg.json @@ -0,0 +1,51 @@ +{ + "name": "grpc", + "version-semver": "1.71.0", + "port-version": 3, + "description": "gRPC is a modern, open source, high-performance remote procedure call (RPC) framework that can run anywhere. gRPC enables client and server applications to communicate transparently, and simplifies the building of connected systems.", + "homepage": "https://github.com/grpc/grpc", + "license": "Apache-2.0", + "dependencies": [ + "abseil", + { + "name": "c-ares", + "platform": "!uwp" + }, + { + "name": "grpc", + "host": true, + "features": [ + "codegen" + ] + }, + "openssl", + "protobuf", + { + "name": "protobuf", + "host": true + }, + "re2", + "utf8-range", + { + "name": "vcpkg-cmake", + "host": true + }, + { + "name": "vcpkg-cmake-config", + "host": true + }, + "zlib" + ], + "features": { + "codegen": { + "description": "Build code generator machinery", + "supports": "!uwp" + }, + "systemd": { + "description": "Build with libsystemd support", + "dependencies": [ + "libsystemd" + ] + } + } +} |