|
|
|
@ -65,6 +65,8 @@ |
|
|
|
|
deps.append("${_gRPC_ZLIB_LIBRARIES}") |
|
|
|
|
for d in target_dict.get('deps', []): |
|
|
|
|
deps.append(d) |
|
|
|
|
if target_dict.build == 'test' and target_dict.language == 'c++': |
|
|
|
|
deps.append("${_gRPC_GFLAGS_LIBRARIES}") |
|
|
|
|
return deps |
|
|
|
|
%> |
|
|
|
|
|
|
|
|
@ -76,6 +78,9 @@ |
|
|
|
|
set(PACKAGE_TARNAME "<%text>${PACKAGE_NAME}-${PACKAGE_VERSION}</%text>") |
|
|
|
|
set(PACKAGE_BUGREPORT "https://github.com/grpc/grpc/issues/") |
|
|
|
|
project(<%text>${PACKAGE_NAME}</%text> C CXX) |
|
|
|
|
|
|
|
|
|
# Options |
|
|
|
|
option(gRPC_BUILD_TESTS "Build tests" OFF) |
|
|
|
|
|
|
|
|
|
if (NOT MSVC) |
|
|
|
|
set(gRPC_INSTALL ON CACHE BOOL "Generate installation target") |
|
|
|
@ -91,7 +96,10 @@ |
|
|
|
|
|
|
|
|
|
set(gRPC_PROTOBUF_PROVIDER "module" CACHE STRING "Provider of protobuf library") |
|
|
|
|
set_property(CACHE gRPC_PROTOBUF_PROVIDER PROPERTY STRINGS "module" "package") |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
set(gRPC_GFLAGS_PROVIDER "module" CACHE STRING "Provider of gflags library") |
|
|
|
|
set_property(CACHE gRPC_GFLAGS_PROVIDER PROPERTY STRINGS "module" "package") |
|
|
|
|
|
|
|
|
|
set(gRPC_USE_PROTO_LITE OFF CACHE BOOL "Use the protobuf-lite library") |
|
|
|
|
|
|
|
|
|
if (MSVC) |
|
|
|
@ -195,6 +203,26 @@ |
|
|
|
|
endif() |
|
|
|
|
set(_gRPC_FIND_SSL "if(NOT OpenSSL_FOUND)\n find_package(OpenSSL)\nendif()") |
|
|
|
|
endif() |
|
|
|
|
|
|
|
|
|
if("<%text>${gRPC_GFLAGS_PROVIDER}</%text>" STREQUAL "module") |
|
|
|
|
if(NOT GFLAGS_ROOT_DIR) |
|
|
|
|
set(GFLAGS_ROOT_DIR <%text>${CMAKE_CURRENT_SOURCE_DIR}</%text>/third_party/gflags) |
|
|
|
|
endif() |
|
|
|
|
if(EXISTS "<%text>${GFLAGS_ROOT_DIR}</%text>/CMakeLists.txt") |
|
|
|
|
add_subdirectory(<%text>${GFLAGS_ROOT_DIR}</%text> third_party/gflags) |
|
|
|
|
if(TARGET gflags_static) |
|
|
|
|
set(_gRPC_GFLAGS_LIBRARIES gflags_static) |
|
|
|
|
endif() |
|
|
|
|
else() |
|
|
|
|
message(WARNING "gRPC_GFLAGS_PROVIDER is \"module\" but GFLAGS_ROOT_DIR is wrong") |
|
|
|
|
endif() |
|
|
|
|
elseif("<%text>${gRPC_GFLAGS_PROVIDER}</%text>" STREQUAL "package") |
|
|
|
|
find_package(gflags) |
|
|
|
|
if(TARGET gflags::gflags) |
|
|
|
|
set(_gRPC_GFLAGS_LIBRARIES gflags::gflags) |
|
|
|
|
endif() |
|
|
|
|
set(_gRPC_FIND_GFLAGS "if(NOT gflags_FOUND)\n find_package(gflags)\nendif()") |
|
|
|
|
endif() |
|
|
|
|
|
|
|
|
|
if(NOT MSVC) |
|
|
|
|
set(CMAKE_C_FLAGS "<%text>${CMAKE_C_FLAGS}</%text> -std=c11") |
|
|
|
@ -260,17 +288,31 @@ |
|
|
|
|
endfunction() |
|
|
|
|
|
|
|
|
|
% for lib in libs: |
|
|
|
|
% if lib.build in ["all", "protoc", "tool"] and lib.language in ['c', 'c++']: |
|
|
|
|
% if lib.build in ["all", "protoc", "tool", "test", "private"] and lib.language in ['c', 'c++']: |
|
|
|
|
% if not lib.get('build_system', []) or 'cmake' in lib.get('build_system', []): |
|
|
|
|
% if lib.build in ["test", "private"]: |
|
|
|
|
if (gRPC_BUILD_TESTS) |
|
|
|
|
${cc_library(lib)} |
|
|
|
|
endif (gRPC_BUILD_TESTS) |
|
|
|
|
% else: |
|
|
|
|
${cc_library(lib)} |
|
|
|
|
${cc_install(lib)} |
|
|
|
|
% endif |
|
|
|
|
% endif |
|
|
|
|
% endif |
|
|
|
|
% endfor |
|
|
|
|
|
|
|
|
|
% for tgt in targets: |
|
|
|
|
% if tgt.build in ["all", "protoc", "tool"] and tgt.language in ['c', 'c++']: |
|
|
|
|
% if tgt.build in ["all", "protoc", "tool", "test", "private"] and tgt.language in ['c', 'c++']: |
|
|
|
|
% if tgt.build in ["test", "private"]: |
|
|
|
|
if (gRPC_BUILD_TESTS) |
|
|
|
|
${cc_binary(tgt)} |
|
|
|
|
endif (gRPC_BUILD_TESTS) |
|
|
|
|
% else: |
|
|
|
|
${cc_binary(tgt)} |
|
|
|
|
${cc_install(tgt)} |
|
|
|
|
% endif |
|
|
|
|
% endif |
|
|
|
|
% endfor |
|
|
|
|
|
|
|
|
|
<%def name="cc_library(lib)"> |
|
|
|
@ -302,6 +344,11 @@ |
|
|
|
|
PRIVATE <%text>${PROTOBUF_ROOT_DIR}</%text>/src |
|
|
|
|
PRIVATE <%text>${ZLIB_INCLUDE_DIR}</%text> |
|
|
|
|
PRIVATE <%text>${CMAKE_CURRENT_BINARY_DIR}</%text>/third_party/zlib |
|
|
|
|
PRIVATE <%text>${CMAKE_CURRENT_BINARY_DIR}</%text>/third_party/gflags/include |
|
|
|
|
% if lib.build in ['test', 'private'] and lib.language == 'c++': |
|
|
|
|
PRIVATE third_party/googletest/include |
|
|
|
|
PRIVATE third_party/googletest |
|
|
|
|
% endif |
|
|
|
|
% if any(proto_re.match(src) for src in lib.src): |
|
|
|
|
PRIVATE <%text>${_gRPC_PROTO_GENS_DIR}</%text> |
|
|
|
|
% endif |
|
|
|
@ -335,6 +382,9 @@ |
|
|
|
|
% for src in tgt.src: |
|
|
|
|
${src} |
|
|
|
|
% endfor |
|
|
|
|
% if tgt.build == 'test' and tgt.language == 'c++': |
|
|
|
|
third_party/googletest/src/gtest-all.cc |
|
|
|
|
% endif |
|
|
|
|
) |
|
|
|
|
|
|
|
|
|
target_include_directories(${tgt.name} |
|
|
|
@ -344,6 +394,11 @@ |
|
|
|
|
PRIVATE <%text>${PROTOBUF_ROOT_DIR}</%text>/src |
|
|
|
|
PRIVATE <%text>${ZLIB_ROOT_DIR}</%text> |
|
|
|
|
PRIVATE <%text>${CMAKE_CURRENT_BINARY_DIR}</%text>/third_party/zlib |
|
|
|
|
PRIVATE <%text>${CMAKE_CURRENT_BINARY_DIR}</%text>/third_party/gflags/include |
|
|
|
|
% if tgt.build in ['test', 'private'] and tgt.language == 'c++': |
|
|
|
|
PRIVATE third_party/googletest/include |
|
|
|
|
PRIVATE third_party/googletest |
|
|
|
|
% endif |
|
|
|
|
) |
|
|
|
|
|
|
|
|
|
% if len(get_deps(tgt)) > 0: |
|
|
|
|