mirror of
https://github.com/microsoft/vcpkg.git
synced 2024-12-22 12:07:49 +08:00
2fda34be1f
This PR includes the following changes that are required to get gRPC to build for ARM/ARM64 on Windows 1) Updated to v1.20.1 2) Disables Codegen Build for ARM/ARM64 builds 3) Rebased the "Fix UWP" patch so that it will apply properly 4) Fixed the "Static Linking in Linux" patch because it specified an invalid option on Windows builds 5) Added patch to "#undef" a macro name collision 6) Added GDI32.lib to the list of standard libraries linked to Windows
95 lines
2.9 KiB
CMake
95 lines
2.9 KiB
CMake
include(vcpkg_common_functions)
|
|
|
|
vcpkg_check_linkage(ONLY_STATIC_LIBRARY)
|
|
|
|
# This snippet is a workaround for users who are upgrading from an extremely old version of this
|
|
# port, which cloned directly into `src\`
|
|
if(EXISTS "${CURRENT_BUILDTREES_DIR}/src/.git")
|
|
file(REMOVE_RECURSE ${CURRENT_BUILDTREES_DIR}/src)
|
|
endif()
|
|
|
|
vcpkg_from_github(
|
|
OUT_SOURCE_PATH SOURCE_PATH
|
|
REPO grpc/grpc
|
|
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" OR VCPKG_TARGET_ARCHITECTURE STREQUAL "arm" OR VCPKG_TARGET_ARCHITECTURE STREQUAL "arm64")
|
|
set(gRPC_BUILD_CODEGEN OFF)
|
|
else()
|
|
set(gRPC_BUILD_CODEGEN ON)
|
|
endif()
|
|
|
|
if(VCPKG_CRT_LINKAGE STREQUAL "static")
|
|
set(gRPC_MSVC_STATIC_RUNTIME ON)
|
|
else()
|
|
set(gRPC_MSVC_STATIC_RUNTIME OFF)
|
|
endif()
|
|
|
|
if(VCPKG_LIBRARY_LINKAGE STREQUAL "static")
|
|
set(gRPC_STATIC_LINKING ON)
|
|
else()
|
|
set(gRPC_STATIC_LINKING OFF)
|
|
endif()
|
|
|
|
if(VCPKG_CMAKE_SYSTEM_NAME STREQUAL "WindowsStore")
|
|
set(cares_CARES_PROVIDER OFF)
|
|
else()
|
|
set(cares_CARES_PROVIDER "package")
|
|
endif()
|
|
|
|
vcpkg_configure_cmake(
|
|
SOURCE_PATH ${SOURCE_PATH}
|
|
PREFER_NINJA
|
|
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_PROTOBUF_PACKAGE_TYPE=CONFIG
|
|
-DgRPC_CARES_PROVIDER=${cares_CARES_PROVIDER}
|
|
-DgRPC_GFLAGS_PROVIDER=none
|
|
-DgRPC_BENCHMARK_PROVIDER=none
|
|
-DgRPC_INSTALL_CSHARP_EXT=OFF
|
|
-DgRPC_INSTALL_BINDIR:STRING=bin
|
|
-DgRPC_INSTALL_LIBDIR:STRING=lib
|
|
-DgRPC_INSTALL_INCLUDEDIR:STRING=include
|
|
-DgRPC_INSTALL_CMAKEDIR:STRING=share/grpc
|
|
-DgRPC_BUILD_CODEGEN=${gRPC_BUILD_CODEGEN}
|
|
)
|
|
|
|
vcpkg_install_cmake(ADD_BIN_TO_PATH)
|
|
|
|
vcpkg_fixup_cmake_targets(CONFIG_PATH "share/grpc")
|
|
|
|
file(INSTALL ${SOURCE_PATH}/LICENSE DESTINATION ${CURRENT_PACKAGES_DIR}/share/grpc RENAME copyright)
|
|
|
|
# Install tools
|
|
file(GLOB TOOLS "${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-rel/*.exe")
|
|
if(TOOLS)
|
|
file(MAKE_DIRECTORY ${CURRENT_PACKAGES_DIR}/tools/grpc)
|
|
file(COPY ${TOOLS} DESTINATION ${CURRENT_PACKAGES_DIR}/tools/grpc)
|
|
vcpkg_copy_tool_dependencies(${CURRENT_PACKAGES_DIR}/tools/grpc)
|
|
endif()
|
|
|
|
file(GLOB EXES "${CURRENT_PACKAGES_DIR}/bin/*.exe" "${CURRENT_PACKAGES_DIR}/debug/bin/*.exe")
|
|
if(EXES)
|
|
file(REMOVE ${EXES})
|
|
endif()
|
|
|
|
# Ignore the C# extension DLL in bin/
|
|
SET(VCPKG_POLICY_EMPTY_PACKAGE enabled)
|
|
file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/debug/include)
|
|
|
|
vcpkg_copy_pdbs()
|
|
## |