Files
conan-packages/grpc/conanfile.py
T
2018-04-04 12:28:46 +02:00

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