From 4dda2db5a1b7fab7ab819427ec6edc984dae8a61 Mon Sep 17 00:00:00 2001 From: Tao He Date: Thu, 27 May 2021 23:13:04 +0800 Subject: [PATCH] Compatible with older version of gRPC. Signed-off-by: Tao He --- CMakeLists.txt | 23 +++++++++++++++++++++-- etcd/Client.hpp | 10 ++++++++++ 2 files changed, 31 insertions(+), 2 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index ae5f1ac..f631527 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -10,6 +10,7 @@ set(etcd-cpp-api_VERSION ${etcd-cpp-api_VERSION_MAJOR}.${etcd-cpp-api_VERSION_MI set(CMAKE_PROJECT_HOMEPAGE_URL https://github.com/etcd-cpp-apiv3/etcd-cpp-apiv3) include(CheckCXXCompilerFlag) +include(CheckCXXSourceCompiles) include(CheckLibraryExists) include(GNUInstallDirs) set(CMAKE_EXPORT_COMPILE_COMMANDS ON) @@ -86,6 +87,19 @@ if(NOT CMAKE_CXX_COMPILER_ID MATCHES "MSVC") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wpedantic -Werror -Wno-string-compare -std=c++11") endif() +message("GRPC_INCLUDE_DIR = ${gRPC_FOUND}") +set(CMAKE_REQUIRED_INCLUDES "${CMAKE_REQUIRED_INCLUDES} ${GRPC_INCLUDE_DIR}") +set(CMAKE_REQUIRED_LIBRARIES "${CMAKE_REQUIRED_LIBRARIES} ${GRPC_LIBRARIES}") +set(CMAKE_REQUIRED_DEFINITIONS "${CMAKE_REQUIRED_DEFINITIONS}") +check_cxx_source_compiles(" +#include +namespace grpc { class Channel; } +int main() {} +" GRPC_CHANNEL_CLASS_FOUND) +if(GRPC_CHANNEL_CLASS_FOUND) + add_definitions(-DWITH_GRPC_CHANNEL_CLASS) +endif() + set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/bin) enable_testing() @@ -185,5 +199,10 @@ set(CPACK_DEBIAN_PACKAGE_DISTRIBUTION "focal") set(DPUT_HOST "ppa:graphscope/etcd-cpp-api") set(DPUT_SNAPSHOT_HOST "ppa:graphscope/etcd-cpp-api") -list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake") -include(UploadPPA) +find_program(DEBUILD_EXECUTABLE debuild) +find_program(DPUT_EXECUTABLE dput) + +if(DEBUILD_EXECUTABLE AND DPUT_EXECUTABLE) + list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake") + include(UploadPPA) +endif() diff --git a/etcd/Client.hpp b/etcd/Client.hpp index 8222bff..219cd2f 100644 --- a/etcd/Client.hpp +++ b/etcd/Client.hpp @@ -17,9 +17,15 @@ namespace etcdv3 { } } +#if defined(WITH_GRPC_CHANNEL_CLASS) namespace grpc { class Channel; } +#else +namespace grpc_impl { + class Channel; +} +#endif namespace etcd { @@ -383,7 +389,11 @@ namespace etcd pplx::task txn(etcdv3::Transaction const &txn); private: +#if defined(WITH_GRPC_CHANNEL_CLASS) std::shared_ptr channel; +#else + std::shared_ptr channel; +#endif std::string auth_token; struct EtcdServerStubs;