Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
G
Grpc
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Container Registry
Model registry
Operate
Environments
Monitor
Incidents
Service Desk
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
tci-gateway-module
Grpc
Commits
438c0b57
Commit
438c0b57
authored
8 years ago
by
Jan Tattermusch
Browse files
Options
Downloads
Patches
Plain Diff
add convenience cmake targets
parent
bd0b0546
No related branches found
No related tags found
No related merge requests found
Changes
2
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
CMakeLists.txt
+3098
-4378
3098 additions, 4378 deletions
CMakeLists.txt
templates/CMakeLists.txt.template
+138
-6
138 additions, 6 deletions
templates/CMakeLists.txt.template
with
3236 additions
and
4384 deletions
CMakeLists.txt
+
3098
−
4378
View file @
438c0b57
This diff is collapsed.
Click to expand it.
templates/CMakeLists.txt.template
+
138
−
6
View file @
438c0b57
...
@@ -59,15 +59,27 @@
...
@@ -59,15 +59,27 @@
deps.append("${_gRPC_PROTOBUF_PROTOC_LIBRARIES}")
deps.append("${_gRPC_PROTOBUF_PROTOC_LIBRARIES}")
if target_dict.get('secure', False):
if target_dict.get('secure', False):
deps.append("${_gRPC_SSL_LIBRARIES}")
deps.append("${_gRPC_SSL_LIBRARIES}")
if target_dict
['name'] in ['grpc++', 'grpc++_unsecure', 'grpc++_codegen_lib']
:
if target_dict
.language == 'c++'
:
deps.append("${_gRPC_PROTOBUF_LIBRARIES}")
deps.append("${_gRPC_PROTOBUF_LIBRARIES}")
el
if target_dict['name'] in ['grpc']:
if target_dict['name'] in ['grpc']:
deps.append("${_gRPC_ZLIB_LIBRARIES}")
deps.append("${_gRPC_ZLIB_LIBRARIES}")
deps.append("${_gRPC_ALLTARGETS_LIBRARIES}")
for d in target_dict.get('deps', []):
for d in target_dict.get('deps', []):
deps.append(d)
deps.append(d)
if target_dict.build == 'test' and target_dict.language == 'c++':
if target_dict.build == 'test' and target_dict.language == 'c++':
deps.append("${_gRPC_GFLAGS_LIBRARIES}")
deps.append("${_gRPC_GFLAGS_LIBRARIES}")
return deps
return deps
def get_platforms_condition_begin(platforms):
if all(platform in platforms for platform in ['linux', 'mac', 'posix', 'windows']):
return ''
cond = ' OR '.join(['_gRPC_PLATFORM_%s' % platform.upper() for platform in platforms])
return 'if(%s)\n' % cond
def get_platforms_condition_end(platforms):
if not get_platforms_condition_begin(platforms):
return ''
return 'endif()\n'
%>
%>
cmake_minimum_required(VERSION 2.8)
cmake_minimum_required(VERSION 2.8)
...
@@ -100,8 +112,24 @@
...
@@ -100,8 +112,24 @@
set(gRPC_GFLAGS_PROVIDER "module" CACHE STRING "Provider of gflags library")
set(gRPC_GFLAGS_PROVIDER "module" CACHE STRING "Provider of gflags library")
set_property(CACHE gRPC_GFLAGS_PROVIDER PROPERTY STRINGS "module" "package")
set_property(CACHE gRPC_GFLAGS_PROVIDER PROPERTY STRINGS "module" "package")
set(gRPC_BENCHMARK_PROVIDER "module" CACHE STRING "Provider of benchmark library")
set_property(CACHE gRPC_BENCHMARK_PROVIDER PROPERTY STRINGS "module" "package")
set(gRPC_USE_PROTO_LITE OFF CACHE BOOL "Use the protobuf-lite library")
set(gRPC_USE_PROTO_LITE OFF CACHE BOOL "Use the protobuf-lite library")
if(UNIX)
if(<%text>${CMAKE_SYSTEM_NAME}</%text> MATCHES "Linux")
set(_gRPC_PLATFORM_LINUX ON)
elseif(<%text>${CMAKE_SYSTEM_NAME}</%text> MATCHES "Darwin")
set(_gRPC_PLATFORM_MAC ON)
else()
set(_gRPC_PLATFORM_POSIX ON)
endif()
endif()
if(WIN32)
set(_gRPC_PLATFORM_WINDOWS ON)
endif()
if (MSVC)
if (MSVC)
add_definitions(-D_WIN32_WINNT=0x600 -D_SCL_SECURE_NO_WARNINGS -D_CRT_SECURE_NO_WARNINGS -D_WINSOCK_DEPRECATED_NO_WARNINGS)
add_definitions(-D_WIN32_WINNT=0x600 -D_SCL_SECURE_NO_WARNINGS -D_CRT_SECURE_NO_WARNINGS -D_WINSOCK_DEPRECATED_NO_WARNINGS)
# needed to compile boringssl
# needed to compile boringssl
...
@@ -189,6 +217,7 @@
...
@@ -189,6 +217,7 @@
set(BORINGSSL_ROOT_DIR <%text>${CMAKE_CURRENT_SOURCE_DIR}</%text>/third_party/boringssl)
set(BORINGSSL_ROOT_DIR <%text>${CMAKE_CURRENT_SOURCE_DIR}</%text>/third_party/boringssl)
endif()
endif()
if(EXISTS "<%text>${BORINGSSL_ROOT_DIR}</%text>/CMakeLists.txt")
if(EXISTS "<%text>${BORINGSSL_ROOT_DIR}</%text>/CMakeLists.txt")
set(OPENSSL_NO_ASM ON) # make boringssl buildable with Visual Studio
add_subdirectory(<%text>${BORINGSSL_ROOT_DIR}</%text> third_party/boringssl)
add_subdirectory(<%text>${BORINGSSL_ROOT_DIR}</%text> third_party/boringssl)
if(TARGET ssl)
if(TARGET ssl)
set(_gRPC_SSL_LIBRARIES ssl)
set(_gRPC_SSL_LIBRARIES ssl)
...
@@ -223,12 +252,36 @@
...
@@ -223,12 +252,36 @@
endif()
endif()
set(_gRPC_FIND_GFLAGS "if(NOT gflags_FOUND)\n find_package(gflags)\nendif()")
set(_gRPC_FIND_GFLAGS "if(NOT gflags_FOUND)\n find_package(gflags)\nendif()")
endif()
endif()
if("<%text>${gRPC_BENCHMARK_PROVIDER}</%text>" STREQUAL "module")
if(NOT BENCHMARK_ROOT_DIR)
set(BENCHMARK_ROOT_DIR <%text>${CMAKE_CURRENT_SOURCE_DIR}</%text>/third_party/benchmark)
endif()
if(EXISTS "<%text>${BENCHMARK_ROOT_DIR}</%text>/CMakeLists.txt")
add_subdirectory(<%text>${BENCHMARK_ROOT_DIR}</%text> third_party/benchmark)
if(TARGET benchmark)
set(_gRPC_BENCHMARK_LIBRARIES benchmark)
endif()
else()
message(WARNING "gRPC_BENCHMARK_PROVIDER is \"module\" but BENCHMARK_ROOT_DIR is wrong")
endif()
elseif("<%text>${gRPC_BENCHMARK_PROVIDER}</%text>" STREQUAL "package")
find_package(benchmark)
if(TARGET benchmark::benchmark)
set(_gRPC_BENCHMARK_LIBRARIES benchmark::benchmark)
endif()
set(_gRPC_FIND_BENCHMARK "if(NOT benchmark_FOUND)\n find_package(benchmark)\nendif()")
endif()
if(NOT MSVC)
if(NOT MSVC)
set(CMAKE_C_FLAGS "<%text>${CMAKE_C_FLAGS}</%text>
-std=c
11
")
set(CMAKE_C_FLAGS "<%text>${CMAKE_C_FLAGS}</%text> -std=c
99
")
set(CMAKE_CXX_FLAGS "<%text>${CMAKE_CXX_FLAGS}</%text> -std=c++11")
set(CMAKE_CXX_FLAGS "<%text>${CMAKE_CXX_FLAGS}</%text> -std=c++11")
endif()
endif()
if(UNIX)
set(_gRPC_ALLTARGETS_LIBRARIES dl rt m pthread)
endif()
if(WIN32 AND MSVC)
if(WIN32 AND MSVC)
set(_gRPC_BASELIB_LIBRARIES wsock32 ws2_32)
set(_gRPC_BASELIB_LIBRARIES wsock32 ws2_32)
endif()
endif()
...
@@ -287,9 +340,63 @@
...
@@ -287,9 +340,63 @@
endforeach()
endforeach()
endfunction()
endfunction()
add_custom_target(plugins
DEPENDS
% for tgt in targets:
% if tgt.build == 'protoc':
${tgt.name}
% endif
% endfor
)
add_custom_target(tools_c
DEPENDS
% for tgt in targets:
% if tgt.build == 'tool' and not tgt.language == 'c++':
${tgt.name}
% endif
% endfor
)
add_custom_target(tools_cxx
DEPENDS
% for tgt in targets:
% if tgt.build == 'tool' and tgt.language == 'c++':
${tgt.name}
% endif
% endfor
)
add_custom_target(tools
DEPENDS tools_c tools_cxx)
if (gRPC_BUILD_TESTS)
add_custom_target(buildtests_c)
% for tgt in targets:
% if tgt.build == 'test' and not tgt.language == 'c++' and not tgt.get('external_deps', None) and not tgt.boringssl:
${get_platforms_condition_begin(tgt.platforms)}\
add_dependencies(buildtests_c ${tgt.name})
${get_platforms_condition_end(tgt.platforms)}\
% endif
% endfor
add_custom_target(buildtests_cxx)
% for tgt in targets:
% if tgt.build == 'test' and tgt.language == 'c++' and not tgt.get('external_deps', None) and not tgt.boringssl:
${get_platforms_condition_begin(tgt.platforms)}\
add_dependencies(buildtests_cxx ${tgt.name})
${get_platforms_condition_end(tgt.platforms)}\
% endif
% endfor
add_custom_target(buildtests
DEPENDS buildtests_c buildtests_cxx)
endif (gRPC_BUILD_TESTS)
% for lib in libs:
% for lib in libs:
% if lib.build in ["all", "protoc", "tool", "test", "private"] and
lib.language in ['c', 'c++']
:
% if lib.build in ["all", "protoc", "tool", "test", "private"] and
not lib.boringssl
:
% if not lib.get('build_system', []) or 'cmake' in lib.get('build_system', []):
% if not lib.get('build_system', []) or 'cmake' in lib.get('build_system', []):
% if not lib.name in ['benchmark', 'z']: # we build these using CMake instead
% if lib.build in ["test", "private"]:
% if lib.build in ["test", "private"]:
if (gRPC_BUILD_TESTS)
if (gRPC_BUILD_TESTS)
${cc_library(lib)}
${cc_library(lib)}
...
@@ -300,17 +407,22 @@
...
@@ -300,17 +407,22 @@
% endif
% endif
% endif
% endif
% endif
% endif
% endif
% endfor
% endfor
% for tgt in targets:
% for tgt in targets:
% if tgt.build in ["all", "protoc", "tool", "test", "private"] and
tgt.language in ['c', 'c++']
:
% if tgt.build in ["all", "protoc", "tool", "test", "private"] and
not tgt.boringssl
:
% if tgt.build in ["test", "private"]:
% if tgt.build in ["test", "private"]:
if (gRPC_BUILD_TESTS)
if (gRPC_BUILD_TESTS)
${get_platforms_condition_begin(tgt.platforms)}\
${cc_binary(tgt)}
${cc_binary(tgt)}
${get_platforms_condition_end(tgt.platforms)}\
endif (gRPC_BUILD_TESTS)
endif (gRPC_BUILD_TESTS)
% else:
% else:
${get_platforms_condition_begin(tgt.platforms)}\
${cc_binary(tgt)}
${cc_binary(tgt)}
${cc_install(tgt)}
${cc_install(tgt)}
${get_platforms_condition_end(tgt.platforms)}\
% endif
% endif
% endif
% endif
% endfor
% endfor
...
@@ -343,13 +455,14 @@
...
@@ -343,13 +455,14 @@
PRIVATE <%text>${BORINGSSL_ROOT_DIR}</%text>/include
PRIVATE <%text>${BORINGSSL_ROOT_DIR}</%text>/include
PRIVATE <%text>${PROTOBUF_ROOT_DIR}</%text>/src
PRIVATE <%text>${PROTOBUF_ROOT_DIR}</%text>/src
PRIVATE <%text>${ZLIB_INCLUDE_DIR}</%text>
PRIVATE <%text>${ZLIB_INCLUDE_DIR}</%text>
PRIVATE <%text>${BENCHMARK}</%text>/include
PRIVATE <%text>${CMAKE_CURRENT_BINARY_DIR}</%text>/third_party/zlib
PRIVATE <%text>${CMAKE_CURRENT_BINARY_DIR}</%text>/third_party/zlib
PRIVATE <%text>${CMAKE_CURRENT_BINARY_DIR}</%text>/third_party/gflags/include
PRIVATE <%text>${CMAKE_CURRENT_BINARY_DIR}</%text>/third_party/gflags/include
% if lib.build in ['test', 'private'] and lib.language == 'c++':
% if lib.build in ['test', 'private'] and lib.language == 'c++':
PRIVATE third_party/googletest/include
PRIVATE third_party/googletest/include
PRIVATE third_party/googletest
PRIVATE third_party/googletest
% endif
% endif
% if
any(proto_re.match(src) for src in lib.src)
:
% if
lib.language == 'c++'
:
PRIVATE <%text>${_gRPC_PROTO_GENS_DIR}</%text>
PRIVATE <%text>${_gRPC_PROTO_GENS_DIR}</%text>
% endif
% endif
)
)
...
@@ -380,18 +493,34 @@
...
@@ -380,18 +493,34 @@
<%def name="cc_binary(tgt)">
<%def name="cc_binary(tgt)">
add_executable(${tgt.name}
add_executable(${tgt.name}
% for src in tgt.src:
% for src in tgt.src:
% if not proto_re.match(src):
${src}
${src}
% else:
${proto_replace_ext(src, '.pb.cc')}
${proto_replace_ext(src, '.grpc.pb.cc')}
${proto_replace_ext(src, '.pb.h')}
${proto_replace_ext(src, '.grpc.pb.h')}
% endif
% endfor
% endfor
% if tgt.build == 'test' and tgt.language == 'c++':
% if tgt.build == 'test' and tgt.language == 'c++':
third_party/googletest/src/gtest-all.cc
third_party/googletest/src/gtest-all.cc
% endif
% endif
)
)
% for src in tgt.src:
% if proto_re.match(src):
protobuf_generate_grpc_cpp(
${src}
)
% endif
% endfor
target_include_directories(${tgt.name}
target_include_directories(${tgt.name}
PRIVATE <%text>${CMAKE_CURRENT_SOURCE_DIR}</%text>
PRIVATE <%text>${CMAKE_CURRENT_SOURCE_DIR}</%text>
PRIVATE <%text>${CMAKE_CURRENT_SOURCE_DIR}</%text>/include
PRIVATE <%text>${CMAKE_CURRENT_SOURCE_DIR}</%text>/include
PRIVATE <%text>${BORINGSSL_ROOT_DIR}</%text>/include
PRIVATE <%text>${BORINGSSL_ROOT_DIR}</%text>/include
PRIVATE <%text>${PROTOBUF_ROOT_DIR}</%text>/src
PRIVATE <%text>${PROTOBUF_ROOT_DIR}</%text>/src
PRIVATE <%text>${BENCHMARK_ROOT_DIR}</%text>/include
PRIVATE <%text>${ZLIB_ROOT_DIR}</%text>
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/zlib
PRIVATE <%text>${CMAKE_CURRENT_BINARY_DIR}</%text>/third_party/gflags/include
PRIVATE <%text>${CMAKE_CURRENT_BINARY_DIR}</%text>/third_party/gflags/include
...
@@ -399,6 +528,9 @@
...
@@ -399,6 +528,9 @@
PRIVATE third_party/googletest/include
PRIVATE third_party/googletest/include
PRIVATE third_party/googletest
PRIVATE third_party/googletest
% endif
% endif
% if tgt.language == 'c++':
PRIVATE <%text>${_gRPC_PROTO_GENS_DIR}</%text>
% endif
)
)
% if len(get_deps(tgt)) > 0:
% if len(get_deps(tgt)) > 0:
...
...
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment