mirror of
https://github.com/wassname/conan-packages.git
synced 2026-06-27 17:48:06 +08:00
56 lines
2.7 KiB
Python
56 lines
2.7 KiB
Python
from conans import ConanFile, CMake, tools
|
|
import os
|
|
|
|
|
|
class GrpcConan(ConanFile):
|
|
name = "grpc"
|
|
version = "1.10.0"
|
|
license = "Apache License 2.0"
|
|
description = "Remote Procedure Calls (RPCs) provide a useful abstraction for building distributed applications and services. \
|
|
The libraries in this repository provide a concrete implementation of the gRPC protocol, layered over HTTP/2. \
|
|
These libraries enable communication between clients and servers using any combination of the supported languages."
|
|
url = ""
|
|
settings = "os", "compiler", "build_type", "arch"
|
|
options = {"shared": [True, False]}
|
|
default_options = "shared=False"
|
|
generators = "cmake"
|
|
|
|
def requirements(self):
|
|
self.requires('zlib/1.2.11@conan/stable')
|
|
self.requires('OpenSSL/1.1.0g@conan/stable')
|
|
self.requires('Protobuf/3.5.1.1@intence/testing')
|
|
self.requires('cares/1.14.0@intence/stable')
|
|
def source(self):
|
|
self.run("git clone --branch v%s --single-branch https://github.com/grpc/grpc.git" % ( self.version) )
|
|
self.run('git submodule update --init',cwd='grpc')
|
|
|
|
# This small hack might be useful to guarantee proper /MT /MD linkage in MSVC
|
|
# if the packaged project doesn't have variables to set it properly
|
|
tools.replace_in_file("grpc/CMakeLists.txt", 'project(${PACKAGE_NAME} C CXX)',
|
|
'''project(${PACKAGE_NAME} C CXX)
|
|
include(${CMAKE_BINARY_DIR}/conanbuildinfo.cmake)
|
|
conan_basic_setup()''')
|
|
|
|
tools.replace_in_file("grpc/cmake/ssl.cmake", 'set(_gRPC_SSL_LIBRARIES OpenSSL::SSL OpenSSL::Crypto)',
|
|
'set(_gRPC_SSL_LIBRARIES OpenSSL::SSL OpenSSL::Crypto ${CONAN_LIBS_OPENSSL})' )
|
|
tools.replace_in_file("grpc/cmake/ssl.cmake", 'set(_gRPC_SSL_LIBRARIES ${OPENSSL_LIBRARIES})',
|
|
'set(_gRPC_SSL_LIBRARIES ${OPENSSL_LIBRARIES} ${CONAN_LIBS_OPENSSL})' )
|
|
def build(self):
|
|
cmake = CMake(self)
|
|
cmake.definitions["CMAKE_INSTALL_PREFIX"] = os.path.join(self.build_folder,"install")
|
|
cmake.definitions["gRPC_ZLIB_PROVIDER"] = "package"
|
|
cmake.definitions["gRPC_SSL_PROVIDER"] = "package"
|
|
cmake.definitions["gRPC_PROTOBUF_PROVIDER"] = "package"
|
|
cmake.definitions["gRPC_CARES_PROVIDER"] = "package"
|
|
cmake.definitions["gRPC_BUILD_TESTS"] = "OFF"
|
|
cmake.definitions["gRPC_INSTALL"] = "ON"
|
|
cmake.configure(source_folder="grpc",build_folder=".")
|
|
cmake.build()
|
|
cmake.install()
|
|
|
|
def package(self):
|
|
self.copy("*", src=os.path.join(self.build_folder,"install"), dst=".")
|
|
|
|
def package_info(self):
|
|
pass
|