diff --git a/ports/grpc/00015-target-definitions.patch b/ports/grpc/00015-target-definitions.patch new file mode 100644 index 00000000..a6bcb04e --- /dev/null +++ b/ports/grpc/00015-target-definitions.patch @@ -0,0 +1,102 @@ +diff --git a/CMakeLists.txt b/CMakeLists.txt +index 0097a1c..194d338 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -65,6 +65,8 @@ else() + set(_gRPC_INSTALL_SUPPORTED_FROM_MODULE ON) + endif() + ++add_library(grpc_definitions INTERFACE) ++ + # Providers for third-party dependencies (gRPC_*_PROVIDER properties): + # "module": build the dependency using sources from git submodule (under third_party) + # "package": use cmake's find_package functionality to locate a pre-installed dependency +@@ -222,7 +224,7 @@ 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) ++ target_compile_definitions(grpc_definitions INTERFACE -D_WIN32_WINNT=0x600 -D_SCL_SECURE_NO_WARNINGS -D_CRT_SECURE_NO_WARNINGS -D_WINSOCK_DEPRECATED_NO_WARNINGS) + # needed to compile protobuf + set(_gRPC_C_CXX_FLAGS "${_gRPC_C_CXX_FLAGS} /wd4065 /wd4506") + # TODO(jtattermusch): revisit warnings that were silenced as part of upgrade to protobuf3.6.0 +@@ -232,24 +234,24 @@ if(MSVC) + # 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) ++ target_compile_definitions(grpc_definitions INTERFACE -DGRPC_ARES=0) + endif() + endif() + if (MINGW) +- add_definitions(-D_WIN32_WINNT=0x600) ++ target_compile_definitions(grpc_definitions INTERFACE -D_WIN32_WINNT=0x600) + endif() + set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${_gRPC_C_CXX_FLAGS}") + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${_gRPC_C_CXX_FLAGS}") + + if(gRPC_USE_PROTO_LITE) + set(_gRPC_PROTOBUF_LIBRARY_NAME "libprotobuf-lite") +- add_definitions("-DGRPC_USE_PROTO_LITE") ++ target_compile_definitions(grpc_definitions INTERFACE -DGRPC_USE_PROTO_LITE) + else() + set(_gRPC_PROTOBUF_LIBRARY_NAME "libprotobuf") + endif() + + if(gRPC_BACKWARDS_COMPATIBILITY_MODE) +- add_definitions(-DGPR_BACKWARDS_COMPATIBILITY_MODE) ++ target_compile_definitions(grpc_definitions INTERFACE -DGPR_BACKWARDS_COMPATIBILITY_MODE) + if(_gRPC_PLATFORM_MAC) + # some C++11 constructs not supported before OS X 10.10 + set(CMAKE_OSX_DEPLOYMENT_TARGET 10.10) +@@ -265,7 +267,7 @@ endif() + if (gRPC_XDS_USER_AGENT_IS_CSHARP) + # The value of the defines needs to contain quotes. + # See https://github.com/grpc/grpc/blob/fbf32836a418cc84f58786700273b65cb9174e1d/src/core/ext/xds/xds_api.cc#L854 +- add_definitions("-DGRPC_XDS_USER_AGENT_NAME_SUFFIX=\"csharp\"" "-DGRPC_XDS_USER_AGENT_VERSION_SUFFIX=\"2.41.0\"") ++ target_compile_definitions(grpc_definitions INTERFACE "-DGRPC_XDS_USER_AGENT_NAME_SUFFIX=\"csharp\"" "-DGRPC_XDS_USER_AGENT_VERSION_SUFFIX=\"2.41.0\"") + endif() + + include(cmake/abseil-cpp.cmake) +@@ -285,15 +287,15 @@ if(ABSL_USE_CXX17) + endif() + + if(_gRPC_PLATFORM_MAC OR _gRPC_PLATFORM_IOS) +- set(_gRPC_ALLTARGETS_LIBRARIES ${CMAKE_DL_LIBS} m pthread) ++ set(_gRPC_ALLTARGETS_LIBRARIES ${CMAKE_DL_LIBS} m pthread grpc_definitions) + elseif(_gRPC_PLATFORM_ANDROID) +- set(_gRPC_ALLTARGETS_LIBRARIES ${CMAKE_DL_LIBS} m) ++ set(_gRPC_ALLTARGETS_LIBRARIES ${CMAKE_DL_LIBS} m grpc_definitions) + elseif(UNIX) +- set(_gRPC_ALLTARGETS_LIBRARIES ${CMAKE_DL_LIBS} rt m pthread) ++ set(_gRPC_ALLTARGETS_LIBRARIES ${CMAKE_DL_LIBS} rt m pthread grpc_definitions) + endif() + + if(WIN32) +- set(_gRPC_BASELIB_LIBRARIES wsock32 ws2_32 crypt32 gdi32) ++ set(_gRPC_BASELIB_LIBRARIES wsock32 ws2_32 crypt32 gdi32 grpc_definitions) + endif() + + # Create directory for generated .proto files +@@ -1115,7 +1117,7 @@ target_link_libraries(address_sorting + + + if(gRPC_INSTALL) +- install(TARGETS address_sorting EXPORT gRPCTargets ++ install(TARGETS address_sorting grpc_definitions EXPORT gRPCTargets + RUNTIME DESTINATION ${gRPC_INSTALL_BINDIR} + LIBRARY DESTINATION ${gRPC_INSTALL_LIBDIR} + ARCHIVE DESTINATION ${gRPC_INSTALL_LIBDIR} +diff --git a/cmake/abseil-cpp.cmake b/cmake/abseil-cpp.cmake +index c625bad..2f216c8 100644 +--- a/cmake/abseil-cpp.cmake ++++ b/cmake/abseil-cpp.cmake +@@ -34,7 +34,7 @@ elseif(gRPC_ABSL_PROVIDER STREQUAL "package") + # Use "CONFIG" as there is no built-in cmake module for absl. + find_package(absl REQUIRED CONFIG) + if (gRPC_ABSL_SYNC_ENABLE) +- add_definitions(-DGPR_ABSEIL_SYNC=1) ++ target_compile_definitions(grpc_definitions INTERFACE -DGPR_ABSEIL_SYNC=1) + endif() + endif() + set(_gRPC_FIND_ABSL "if(NOT TARGET absl::strings)\n find_package(absl CONFIG)\nendif()") diff --git a/ports/grpc/portfile.cmake b/ports/grpc/portfile.cmake index b12c088e..fc22abd1 100644 --- a/ports/grpc/portfile.cmake +++ b/ports/grpc/portfile.cmake @@ -21,6 +21,7 @@ vcpkg_from_github( 00012-fix-use-cxx17.patch 00013-build-upbdefs.patch 00014-pkgconfig-upbdefs.patch + 00015-target-definitions.patch ) if(NOT TARGET_TRIPLET STREQUAL HOST_TRIPLET)