enable building of tests with cmake

pull/9382/head
Jan Tattermusch 8 years ago
parent 352c993f71
commit 0a1701f17b
  1. 61
      templates/CMakeLists.txt.template

@ -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:

Loading…
Cancel
Save