diff --git a/ports/grpc/00001-fix-uwp.patch b/ports/grpc/00001-fix-uwp.patch index 1811fdf92d948a..6f7f2d90fff808 100644 --- a/ports/grpc/00001-fix-uwp.patch +++ b/ports/grpc/00001-fix-uwp.patch @@ -1,148 +1,148 @@ -diff --git a/CMakeLists.txt b/CMakeLists.txt -index e1013dc561..b02d07ccba 100644 ---- a/CMakeLists.txt -+++ b/CMakeLists.txt -@@ -90,6 +90,9 @@ if(UNIX) - endif() - if(WIN32) - set(_gRPC_PLATFORM_WINDOWS ON) -+ if(CMAKE_SYSTEM_NAME STREQUAL "WindowsStore") -+ set(_gRPC_PLATFORM_UWP ON) -+ endif() - endif() - - set(CMAKE_POSITION_INDEPENDENT_CODE TRUE) -@@ -107,6 +110,9 @@ if (MSVC) - add_definitions(/wd4267) - # TODO(jtattermusch): needed to build boringssl with VS2017, revisit later - add_definitions(/wd4987 /wd4774 /wd4819 /wd4996 /wd4619) -+ if(_gRPC_PLATFORM_UWP) -+ add_definitions(-DGRPC_ARES=0) -+ endif() - endif() - - if (gRPC_USE_PROTO_LITE) -@@ -177,6 +183,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() -@@ -211,6 +221,7 @@ function(protobuf_generate_grpc_cpp) - endforeach() - endfunction() - -+if(NOT _gRPC_PLATFORM_UWP) - add_custom_target(plugins - DEPENDS - grpc_cpp_plugin -@@ -240,6 +251,8 @@ add_custom_target(tools_cxx - add_custom_target(tools - DEPENDS tools_c tools_cxx) - -+endif() -+ - if (gRPC_BUILD_TESTS) - add_custom_target(buildtests_c) - add_dependencies(buildtests_c algorithm_test) -@@ -3795,7 +3808,6 @@ foreach(_hdr - DESTINATION "${gRPC_INSTALL_INCLUDEDIR}/${_path}" - ) - endforeach() --endif (gRPC_BUILD_CODEGEN) - - - if (gRPC_INSTALL) -@@ -3805,6 +3817,7 @@ if (gRPC_INSTALL) - ARCHIVE DESTINATION ${gRPC_INSTALL_LIBDIR} - ) - endif() -+endif (gRPC_BUILD_CODEGEN) - - if (gRPC_BUILD_TESTS) - -@@ -3925,7 +3938,7 @@ foreach(_hdr - DESTINATION "${gRPC_INSTALL_INCLUDEDIR}/${_path}" - ) - endforeach() --endif (gRPC_BUILD_CODEGEN) -+ - - - if (gRPC_INSTALL) -@@ -3935,6 +3948,7 @@ if (gRPC_INSTALL) - ARCHIVE DESTINATION ${gRPC_INSTALL_LIBDIR} - ) - endif() -+endif (gRPC_BUILD_CODEGEN) - - if (gRPC_BUILD_TESTS) - -@@ -4926,7 +4940,6 @@ foreach(_hdr - DESTINATION "${gRPC_INSTALL_INCLUDEDIR}/${_path}" - ) - endforeach() --endif (gRPC_BUILD_CODEGEN) - - - if (gRPC_INSTALL) -@@ -4936,6 +4949,7 @@ if (gRPC_INSTALL) - ARCHIVE DESTINATION ${gRPC_INSTALL_LIBDIR} - ) - endif() -+endif (gRPC_BUILD_CODEGEN) - - if (gRPC_BUILD_TESTS) - -diff --git a/src/core/lib/iomgr/resource_quota.cc b/src/core/lib/iomgr/resource_quota.cc -index 61c366098e..aac2ce0a9f 100644 ---- a/src/core/lib/iomgr/resource_quota.cc -+++ b/src/core/lib/iomgr/resource_quota.cc -@@ -937,7 +937,7 @@ void grpc_resource_user_alloc(grpc_resource_user* resource_user, size_t size, - void grpc_resource_user_free(grpc_resource_user* resource_user, size_t size) { - gpr_mu_lock(&resource_user->mu); - grpc_resource_quota* resource_quota = resource_user->resource_quota; -- gpr_atm prior = gpr_atm_no_barrier_fetch_add(&resource_quota->used, -size); -+ gpr_atm prior = gpr_atm_no_barrier_fetch_add(&resource_quota->used, -static_cast(size)); - GPR_ASSERT(prior >= static_cast(size)); - bool was_zero_or_negative = resource_user->free_pool <= 0; - resource_user->free_pool += static_cast(size); -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 55efe0e..f538f26 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 -@@ -60,6 +60,8 @@ bool check_bios_data(const char* bios_data_file) { - - static void init_mu(void) { gpr_mu_init(&g_mu); } - -+#if !defined(WINAPI_FAMILY) || WINAPI_FAMILY == WINAPI_FAMILY_DESKTOP_APP -+ - static bool run_powershell() { - SECURITY_ATTRIBUTES sa; - sa.nLength = sizeof(sa); -@@ -97,8 +99,12 @@ static bool run_powershell() { - CloseHandle(h); - return true; - } -+#endif - - bool grpc_alts_is_running_on_gcp() { -+#if defined(WINAPI_FAMILY) && (WINAPI_FAMILY != WINAPI_FAMILY_DESKTOP_APP) -+ g_is_on_compute_engine = false; -+#else - gpr_once_init(&g_once, init_mu); - gpr_mu_lock(&g_mu); - if (!g_compute_engine_detection_done) { -@@ -108,6 +114,7 @@ bool grpc_alts_is_running_on_gcp() { - g_compute_engine_detection_done = true; - } - gpr_mu_unlock(&g_mu); -+#endif - return g_is_on_compute_engine; - } - +diff --git a/CMakeLists.txt b/CMakeLists.txt +index 8ba68c4a13..258a1609f6 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -90,6 +90,9 @@ if(UNIX) + endif() + if(WIN32) + set(_gRPC_PLATFORM_WINDOWS ON) ++ if(CMAKE_SYSTEM_NAME STREQUAL "WindowsStore") ++ set(_gRPC_PLATFORM_UWP ON) ++ endif() + endif() + + set(CMAKE_POSITION_INDEPENDENT_CODE TRUE) +@@ -107,6 +110,9 @@ if (MSVC) + add_definitions(/wd4267) + # TODO(jtattermusch): needed to build boringssl with VS2017, revisit later + add_definitions(/wd4987 /wd4774 /wd4819 /wd4996 /wd4619) ++ if(_gRPC_PLATFORM_UWP) ++ add_definitions(-DGRPC_ARES=0) ++ endif() + endif() + + if (gRPC_USE_PROTO_LITE) +@@ -177,6 +183,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() +@@ -218,6 +228,7 @@ function(protobuf_generate_grpc_cpp) + endforeach() + endfunction() + ++if(NOT _gRPC_PLATFORM_UWP) + add_custom_target(plugins + DEPENDS + grpc_cpp_plugin +@@ -247,6 +258,8 @@ add_custom_target(tools_cxx + add_custom_target(tools + DEPENDS tools_c tools_cxx) + ++endif() ++ + if (gRPC_BUILD_TESTS) + add_custom_target(buildtests_c) + add_dependencies(buildtests_c algorithm_test) +@@ -4029,7 +4042,6 @@ foreach(_hdr + DESTINATION "${gRPC_INSTALL_INCLUDEDIR}/${_path}" + ) + endforeach() +-endif (gRPC_BUILD_CODEGEN) + + if (gRPC_BUILD_CODEGEN) + +@@ -4040,6 +4052,7 @@ if (gRPC_INSTALL) + ARCHIVE DESTINATION ${gRPC_INSTALL_LIBDIR} + ) + endif() ++endif (gRPC_BUILD_CODEGEN) + + endif (gRPC_BUILD_CODEGEN) + if (gRPC_BUILD_TESTS) +@@ -4163,7 +4176,7 @@ foreach(_hdr + DESTINATION "${gRPC_INSTALL_INCLUDEDIR}/${_path}" + ) + endforeach() +-endif (gRPC_BUILD_CODEGEN) ++ + + if (gRPC_BUILD_CODEGEN) + +@@ -4174,6 +4187,7 @@ if (gRPC_INSTALL) + ARCHIVE DESTINATION ${gRPC_INSTALL_LIBDIR} + ) + endif() ++endif (gRPC_BUILD_CODEGEN) + + endif (gRPC_BUILD_CODEGEN) + if (gRPC_BUILD_TESTS) +@@ -5196,7 +5210,6 @@ foreach(_hdr + DESTINATION "${gRPC_INSTALL_INCLUDEDIR}/${_path}" + ) + endforeach() +-endif (gRPC_BUILD_CODEGEN) + + if (gRPC_BUILD_CODEGEN) + +@@ -5207,6 +5220,7 @@ if (gRPC_INSTALL) + ARCHIVE DESTINATION ${gRPC_INSTALL_LIBDIR} + ) + endif() ++endif (gRPC_BUILD_CODEGEN) + + endif (gRPC_BUILD_CODEGEN) + if (gRPC_BUILD_TESTS) +diff --git a/src/core/lib/iomgr/resource_quota.cc b/src/core/lib/iomgr/resource_quota.cc +index dffac348c5..a59becb046 100644 +--- a/src/core/lib/iomgr/resource_quota.cc ++++ b/src/core/lib/iomgr/resource_quota.cc +@@ -940,7 +940,7 @@ void grpc_resource_user_alloc(grpc_resource_user* resource_user, size_t size, + void grpc_resource_user_free(grpc_resource_user* resource_user, size_t size) { + gpr_mu_lock(&resource_user->mu); + grpc_resource_quota* resource_quota = resource_user->resource_quota; +- gpr_atm prior = gpr_atm_no_barrier_fetch_add(&resource_quota->used, -size); ++ gpr_atm prior = gpr_atm_no_barrier_fetch_add(&resource_quota->used, -static_cast(size)); + GPR_ASSERT(prior >= static_cast(size)); + bool was_zero_or_negative = resource_user->free_pool <= 0; + resource_user->free_pool += static_cast(size); +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 55efe0e9dd..f538f26edf 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 +@@ -60,6 +60,8 @@ bool check_bios_data(const char* bios_data_file) { + + static void init_mu(void) { gpr_mu_init(&g_mu); } + ++#if !defined(WINAPI_FAMILY) || WINAPI_FAMILY == WINAPI_FAMILY_DESKTOP_APP ++ + static bool run_powershell() { + SECURITY_ATTRIBUTES sa; + sa.nLength = sizeof(sa); +@@ -97,8 +99,12 @@ static bool run_powershell() { + CloseHandle(h); + return true; + } ++#endif + + bool grpc_alts_is_running_on_gcp() { ++#if defined(WINAPI_FAMILY) && (WINAPI_FAMILY != WINAPI_FAMILY_DESKTOP_APP) ++ g_is_on_compute_engine = false; ++#else + gpr_once_init(&g_once, init_mu); + gpr_mu_lock(&g_mu); + if (!g_compute_engine_detection_done) { +@@ -108,6 +114,7 @@ bool grpc_alts_is_running_on_gcp() { + g_compute_engine_detection_done = true; + } + gpr_mu_unlock(&g_mu); ++#endif + return g_is_on_compute_engine; + } + diff --git a/ports/grpc/00002-static-linking-in-linux.patch b/ports/grpc/00002-static-linking-in-linux.patch index 4c004d16bd1374..e8005edaa815cf 100644 --- a/ports/grpc/00002-static-linking-in-linux.patch +++ b/ports/grpc/00002-static-linking-in-linux.patch @@ -6,7 +6,7 @@ index 3839e22..91720a9 100644 add_definitions(-DPB_FIELD_32BIT) -+if (gRPC_STATIC_LINKING) ++if (gRPC_STATIC_LINKING AND NOT _gRPC_PLATFORM_WINDOWS) + # Force to static link + set(CMAKE_EXE_LINKER_FLAGS "-Bstatic") +endif() diff --git a/ports/grpc/00003-undef-base64-macro.patch b/ports/grpc/00003-undef-base64-macro.patch new file mode 100644 index 00000000000000..8417e3eea30678 --- /dev/null +++ b/ports/grpc/00003-undef-base64-macro.patch @@ -0,0 +1,13 @@ +diff --git a/src/core/lib/transport/transport.cc b/src/core/lib/transport/transport.cc +index 09306110c6..eb0ad96a7a 100644 +--- a/src/core/lib/transport/transport.cc ++++ b/src/core/lib/transport/transport.cc +@@ -134,6 +134,8 @@ void grpc_stream_ref_init(grpc_stream_refcount* refcount, int initial_refs, + refcount->slice_refcount.sub_refcount = &refcount->slice_refcount; + } + ++#undef move64 ++ + static void move64(uint64_t* from, uint64_t* to) { + *to += *from; + *from = 0; diff --git a/ports/grpc/00004-link-gdi32-on-windows.patch b/ports/grpc/00004-link-gdi32-on-windows.patch new file mode 100644 index 00000000000000..8aede465634143 --- /dev/null +++ b/ports/grpc/00004-link-gdi32-on-windows.patch @@ -0,0 +1,13 @@ +diff --git a/CMakeLists.txt b/CMakeLists.txt +index e820737201..3eb4795660 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -158,7 +158,7 @@ elseif(UNIX) + endif() + + if(WIN32 AND MSVC) +- set(_gRPC_BASELIB_LIBRARIES wsock32 ws2_32) ++ set(_gRPC_BASELIB_LIBRARIES wsock32 ws2_32 gdi32) + endif() + + # Create directory for generated .proto files diff --git a/ports/grpc/CONTROL b/ports/grpc/CONTROL index 025227d09fc475..1854600e312ec5 100644 --- a/ports/grpc/CONTROL +++ b/ports/grpc/CONTROL @@ -1,4 +1,4 @@ Source: grpc -Version: 1.19.1-1 +Version: 1.20.1 Build-Depends: zlib, openssl, protobuf, c-ares (!uwp) Description: An RPC library and framework diff --git a/ports/grpc/portfile.cmake b/ports/grpc/portfile.cmake index 0547d88eb69a3b..fc0299b8d5f95a 100644 --- a/ports/grpc/portfile.cmake +++ b/ports/grpc/portfile.cmake @@ -11,15 +11,17 @@ endif() vcpkg_from_github( OUT_SOURCE_PATH SOURCE_PATH REPO grpc/grpc - REF v1.19.1 - SHA512 4bb127d946fc16887fd4cf75215f0bc9f6d17dbd36fc4f1b191a64914f96c49dddb41f1b6c72fd24ea0a40f242b4398248f32fcb1fe9a764367be1c2edda9142 + REF v1.20.1 + SHA512 e0dd0318d2b4ec07e0eafffa218938d91b1440c5053a557460ea7fceaab3d76f0cccc1d595abe7de9fa79f068b71cfbc5a28a3b688bc9c1e2737086928149583 HEAD_REF master PATCHES 00001-fix-uwp.patch 00002-static-linking-in-linux.patch + 00003-undef-base64-macro.patch + 00004-link-gdi32-on-windows.patch ) -if(VCPKG_CMAKE_SYSTEM_NAME STREQUAL "WindowsStore") +if(VCPKG_CMAKE_SYSTEM_NAME STREQUAL "WindowsStore" OR VCPKG_TARGET_ARCHITECTURE STREQUAL "arm" OR VCPKG_TARGET_ARCHITECTURE STREQUAL "arm64") set(gRPC_BUILD_CODEGEN OFF) else() set(gRPC_BUILD_CODEGEN ON)