diff options
Diffstat (limited to 'templates')
-rw-r--r-- | templates/CMakeLists.txt.template | 183 | ||||
-rw-r--r-- | templates/Makefile.template | 8 | ||||
-rw-r--r-- | templates/gRPC-Core.podspec.template | 71 | ||||
-rw-r--r-- | templates/tools/dockerfile/test/sanity/Dockerfile.template | 3 |
4 files changed, 54 insertions, 211 deletions
diff --git a/templates/CMakeLists.txt.template b/templates/CMakeLists.txt.template index 5ef34e47ad..8de0ccde82 100644 --- a/templates/CMakeLists.txt.template +++ b/templates/CMakeLists.txt.template @@ -147,183 +147,12 @@ set(_gRPC_PROTOBUF_LIBRARY_NAME "libprotobuf") endif() - if("<%text>${gRPC_ZLIB_PROVIDER}</%text>" STREQUAL "module") - if(NOT ZLIB_ROOT_DIR) - set(ZLIB_ROOT_DIR <%text>${CMAKE_CURRENT_SOURCE_DIR}</%text>/third_party/zlib) - endif() - set(ZLIB_INCLUDE_DIR "<%text>${ZLIB_ROOT_DIR}</%text>") - if(EXISTS "<%text>${ZLIB_ROOT_DIR}</%text>/CMakeLists.txt") - # TODO(jtattermusch): workaround for https://github.com/madler/zlib/issues/218 - include_directories(<%text>${ZLIB_INCLUDE_DIR}</%text>) - - add_subdirectory(<%text>${ZLIB_ROOT_DIR}</%text> third_party/zlib) - if(TARGET zlibstatic) - set(_gRPC_ZLIB_LIBRARIES zlibstatic) - endif() - else() - message(WARNING "gRPC_ZLIB_PROVIDER is \"module\" but ZLIB_ROOT_DIR is wrong") - endif() - if(gRPC_INSTALL) - message(WARNING "gRPC_INSTALL will be forced to FALSE because gRPC_ZLIB_PROVIDER is \"module\"") - set(gRPC_INSTALL FALSE) - endif() - elseif("<%text>${gRPC_ZLIB_PROVIDER}</%text>" STREQUAL "package") - find_package(ZLIB REQUIRED) - set(_gRPC_ZLIB_LIBRARIES <%text>${ZLIB_LIBRARIES}</%text>) - set(_gRPC_FIND_ZLIB "if(NOT ZLIB_FOUND)\n find_package(ZLIB)\nendif()") - endif() - - if("<%text>${gRPC_CARES_PROVIDER}</%text>" STREQUAL "module") - if(NOT CARES_ROOT_DIR) - set(CARES_ROOT_DIR <%text>${CMAKE_CURRENT_SOURCE_DIR}</%text>/third_party/cares/cares) - endif() - set(CARES_SHARED OFF CACHE BOOL "disable shared library") - set(CARES_STATIC ON CACHE BOOL "link cares statically") - set(CARES_INCLUDE_DIR "<%text>${CMAKE_CURRENT_SOURCE_DIR}</%text>/third_party/cares/cares") - add_subdirectory(third_party/cares/cares) - if(TARGET c-ares) - set(_gRPC_CARES_LIBRARIES c-ares) - endif() - if(gRPC_INSTALL) - message(WARNING "gRPC_INSTALL will be forced to FALSE because gRPC_CARES_PROVIDER is \"module\"") - set(gRPC_INSTALL FALSE) - endif() - elseif("<%text>${gRPC_CARES_PROVIDER}</%text>" STREQUAL "package") - find_package(c-ares REQUIRED CONFIG) - if(TARGET c-ares::cares) - set(_gRPC_CARES_LIBRARIES c-ares::cares) - endif() - set(_gRPC_FIND_CARES "if(NOT c-ares_FOUND)\n find_package(c-ares CONFIG)\nendif()") - endif() - - if("<%text>${gRPC_PROTOBUF_PROVIDER}</%text>" STREQUAL "module") - # Building the protobuf tests require gmock what is not part of a standard protobuf checkout. - # Disable them unless they are explicitly requested from the cmake command line (when we assume - # gmock is downloaded to the right location inside protobuf). - if(NOT protobuf_BUILD_TESTS) - set(protobuf_BUILD_TESTS OFF CACHE BOOL "Build protobuf tests") - endif() - # Disable building protobuf with zlib. Building protobuf with zlib breaks - # the build if zlib is not installed on the system. - if(NOT protobuf_WITH_ZLIB) - set(protobuf_WITH_ZLIB OFF CACHE BOOL "Build protobuf with zlib.") - endif() - if(NOT PROTOBUF_ROOT_DIR) - set(PROTOBUF_ROOT_DIR <%text>${CMAKE_CURRENT_SOURCE_DIR}</%text>/third_party/protobuf) - endif() - set(PROTOBUF_WELLKNOWN_IMPORT_DIR <%text>${PROTOBUF_ROOT_DIR}</%text>/src) - if(EXISTS "<%text>${PROTOBUF_ROOT_DIR}</%text>/cmake/CMakeLists.txt") - set(protobuf_MSVC_STATIC_RUNTIME OFF CACHE BOOL "Link static runtime libraries") - add_subdirectory(<%text>${PROTOBUF_ROOT_DIR}</%text>/cmake third_party/protobuf) - if(TARGET <%text>${_gRPC_PROTOBUF_LIBRARY_NAME}</%text>) - set(_gRPC_PROTOBUF_LIBRARIES <%text>${_gRPC_PROTOBUF_LIBRARY_NAME}</%text>) - endif() - if(TARGET libprotoc) - set(_gRPC_PROTOBUF_PROTOC_LIBRARIES libprotoc) - endif() - if(TARGET protoc) - set(_gRPC_PROTOBUF_PROTOC protoc) - set(_gRPC_PROTOBUF_PROTOC_EXECUTABLE $<TARGET_FILE:protoc>) - endif() - else() - message(WARNING "gRPC_PROTOBUF_PROVIDER is \"module\" but PROTOBUF_ROOT_DIR is wrong") - endif() - if(gRPC_INSTALL) - message(WARNING "gRPC_INSTALL will be forced to FALSE because gRPC_PROTOBUF_PROVIDER is \"module\"") - set(gRPC_INSTALL FALSE) - endif() - elseif("<%text>${gRPC_PROTOBUF_PROVIDER}</%text>" STREQUAL "package") - find_package(Protobuf REQUIRED <%text>${gRPC_PROTOBUF_PACKAGE_TYPE}</%text>) - if(Protobuf_FOUND OR PROTOBUF_FOUND) - if(TARGET protobuf::<%text>${_gRPC_PROTOBUF_LIBRARY_NAME}</%text>) - set(_gRPC_PROTOBUF_LIBRARIES protobuf::<%text>${_gRPC_PROTOBUF_LIBRARY_NAME}</%text>) - else() - set(_gRPC_PROTOBUF_LIBRARIES <%text>${PROTOBUF_LIBRARIES}</%text>) - endif() - if(TARGET protobuf::libprotoc) - set(_gRPC_PROTOBUF_PROTOC_LIBRARIES protobuf::libprotoc) - else() - set(_gRPC_PROTOBUF_PROTOC_LIBRARIES <%text>${PROTOBUF_PROTOC_LIBRARIES}</%text>) - endif() - if(TARGET protobuf::protoc) - set(_gRPC_PROTOBUF_PROTOC protobuf::protoc) - set(_gRPC_PROTOBUF_PROTOC_EXECUTABLE $<TARGET_FILE:protobuf::protoc>) - else() - set(_gRPC_PROTOBUF_PROTOC <%text>${PROTOBUF_PROTOC_EXECUTABLE}</%text>) - set(_gRPC_PROTOBUF_PROTOC_EXECUTABLE <%text>${PROTOBUF_PROTOC_EXECUTABLE}</%text>) - endif() - set(_gRPC_FIND_PROTOBUF "if(NOT Protobuf_FOUND AND NOT PROTOBUF_FOUND)\n find_package(Protobuf <%text>${gRPC_PROTOBUF_PACKAGE_TYPE}</%text>)\nendif()") - endif() - if(PROTOBUF_FOUND) - include_directories(<%text>${PROTOBUF_INCLUDE_DIRS}</%text>) - endif() - set(PROTOBUF_WELLKNOWN_IMPORT_DIR /usr/local/include) - endif() - - if("<%text>${gRPC_SSL_PROVIDER}</%text>" STREQUAL "module") - if(NOT BORINGSSL_ROOT_DIR) - set(BORINGSSL_ROOT_DIR <%text>${CMAKE_CURRENT_SOURCE_DIR}</%text>/third_party/boringssl) - endif() - 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) - if(TARGET ssl) - set(_gRPC_SSL_LIBRARIES ssl) - set(_gRPC_SSL_INCLUDE_DIR <%text>${BORINGSSL_ROOT_DIR}</%text>/include) - endif() - else() - message(WARNING "gRPC_SSL_PROVIDER is \"module\" but BORINGSSL_ROOT_DIR is wrong") - endif() - if(gRPC_INSTALL) - message(WARNING "gRPC_INSTALL will be forced to FALSE because gRPC_SSL_PROVIDER is \"module\"") - set(gRPC_INSTALL FALSE) - endif() - elseif("<%text>${gRPC_SSL_PROVIDER}</%text>" STREQUAL "package") - find_package(OpenSSL REQUIRED) - set(_gRPC_SSL_LIBRARIES <%text>${OPENSSL_LIBRARIES}</%text>) - set(_gRPC_SSL_INCLUDE_DIR <%text>${OPENSSL_INCLUDE_DIR}</%text>) - 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("<%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() + include(cmake/zlib.cmake) + include(cmake/cares.cmake) + include(cmake/protobuf.cmake) + include(cmake/ssl.cmake) + include(cmake/gflags.cmake) + include(cmake/benchmark.cmake) if(NOT MSVC) set(CMAKE_C_FLAGS "<%text>${CMAKE_C_FLAGS}</%text> -std=c99") diff --git a/templates/Makefile.template b/templates/Makefile.template index 3eb838857a..954bea7e17 100644 --- a/templates/Makefile.template +++ b/templates/Makefile.template @@ -1383,14 +1383,14 @@ install-pkg-config_c: pc_c pc_c_unsecure $(E) "[INSTALL] Installing C pkg-config files" $(Q) $(INSTALL) -d $(prefix)/lib/pkgconfig - $(Q) $(INSTALL) $(LIBDIR)/$(CONFIG)/pkgconfig/grpc.pc $(prefix)/lib/pkgconfig/grpc.pc - $(Q) $(INSTALL) $(LIBDIR)/$(CONFIG)/pkgconfig/grpc_unsecure.pc $(prefix)/lib/pkgconfig/grpc_unsecure.pc + $(Q) $(INSTALL) -m 0644 $(LIBDIR)/$(CONFIG)/pkgconfig/grpc.pc $(prefix)/lib/pkgconfig/grpc.pc + $(Q) $(INSTALL) -m 0644 $(LIBDIR)/$(CONFIG)/pkgconfig/grpc_unsecure.pc $(prefix)/lib/pkgconfig/grpc_unsecure.pc install-pkg-config_cxx: pc_cxx pc_cxx_unsecure $(E) "[INSTALL] Installing C++ pkg-config files" $(Q) $(INSTALL) -d $(prefix)/lib/pkgconfig - $(Q) $(INSTALL) $(LIBDIR)/$(CONFIG)/pkgconfig/grpc++.pc $(prefix)/lib/pkgconfig/grpc++.pc - $(Q) $(INSTALL) $(LIBDIR)/$(CONFIG)/pkgconfig/grpc++_unsecure.pc $(prefix)/lib/pkgconfig/grpc++_unsecure.pc + $(Q) $(INSTALL) -m 0644 $(LIBDIR)/$(CONFIG)/pkgconfig/grpc++.pc $(prefix)/lib/pkgconfig/grpc++.pc + $(Q) $(INSTALL) -m 0644 $(LIBDIR)/$(CONFIG)/pkgconfig/grpc++_unsecure.pc $(prefix)/lib/pkgconfig/grpc++_unsecure.pc install-certs: etc/roots.pem $(E) "[INSTALL] Installing root certificates" diff --git a/templates/gRPC-Core.podspec.template b/templates/gRPC-Core.podspec.template index cb4d556acf..9785d150e4 100644 --- a/templates/gRPC-Core.podspec.template +++ b/templates/gRPC-Core.podspec.template @@ -22,27 +22,51 @@ # limitations under the License. <%! - def grpc_private_files(libs): + def grpc_lib_files(libs, expect_libs, groups): out = [] for lib in libs: - if lib.name in ("grpc", "gpr"): - out += lib.get('headers', []) - out += lib.get('src', []) - return [f for f in out if not f.startswith("third_party/nanopb/")] + if lib.name in expect_libs: + for group in groups: + out += lib.get(group, []) + return out + + def grpc_private_files(libs): + out = grpc_lib_files(libs, ("grpc", "gpr"), ("headers", "src")) + return [file for file in out if not file.startswith("third_party/nanopb/")] def grpc_public_headers(libs): - out = [] - for lib in libs: - if lib.name in ("grpc", "gpr"): - out += lib.get('public_headers', []) + out = grpc_lib_files(libs, ("grpc", "gpr"), ("public_headers",)) return out def grpc_private_headers(libs): - out = [] - for lib in libs: - if lib.name in ("grpc", "gpr"): - out += lib.get('headers', []) - return [f for f in out if not f.startswith("third_party/nanopb/")] + out = grpc_lib_files(libs, ("grpc", "gpr"), ("headers",)) + return [file for file in out if not file.startswith("third_party/nanopb/")] + + def grpc_cronet_files(libs): + out = grpc_lib_files(libs, ("grpc_cronet",), ("src", "headers")) + excl = grpc_private_files(libs) + excl += [ + # We do not need cronet dedicated plugin registry + "src/core/plugin_registry/grpc_cronet_plugin_registry.cc", + # We do not need dummy cronet API for ObjC + "src/core/ext/transport/cronet/transport/cronet_api_dummy.cc", + ] + return [file for file in out if not file in excl] + + def grpc_cronet_public_headers(libs): + out = grpc_lib_files(libs, ("grpc_cronet",), ("public_headers",)) + excl = grpc_public_headers(libs) + return [file for file in out if not file in excl] + + def grpc_test_util_files(libs): + out = grpc_lib_files(libs, ("grpc_test_util", "gpr_test_util"), ("src", "headers")) + excl = grpc_private_files(libs) + return [file for file in out if not file in excl] + + def end2end_tests_files(libs): + out = grpc_lib_files(libs, ("end2end_tests",), ("src", "headers")) + excl = grpc_private_files(libs) + return [file for file in out if not file in excl] def ruby_multiline_list(files, indent): return (',\n' + indent*' ').join('\'%s\'' % f for f in files) @@ -153,7 +177,7 @@ s.subspec 'Cronet-Interface' do |ss| ss.header_mappings_dir = 'include/grpc' - ss.source_files = 'include/grpc/grpc_cronet.h' + ss.source_files = ${ruby_multiline_list(grpc_cronet_public_headers(libs), 22)} end s.subspec 'Cronet-Implementation' do |ss| @@ -163,9 +187,7 @@ ss.dependency "#{s.name}/Implementation", version ss.dependency "#{s.name}/Cronet-Interface", version - ss.source_files = 'src/core/ext/transport/cronet/client/secure/cronet_channel_create.cc', - 'src/core/ext/transport/cronet/transport/cronet_transport.{cc,h}', - 'third_party/objective_c/Cronet/bidirectional_stream_c.h' + ss.source_files = ${ruby_multiline_list(grpc_cronet_files(libs), 22)} end s.subspec 'Tests' do |ss| @@ -174,17 +196,8 @@ ss.dependency "#{s.name}/Interface", version ss.dependency "#{s.name}/Implementation", version - ss.source_files = 'test/core/end2end/cq_verifier.{cc,h}', - 'test/core/end2end/end2end_tests.{cc,h}', - 'test/core/end2end/end2end_test_utils.cc', - 'test/core/end2end/tests/*.{cc,h}', - 'test/core/end2end/fixtures/*.h', - 'test/core/end2end/data/*.{cc,h}', - 'test/core/util/debugger_macros.{cc,h}', - 'test/core/util/test_config.{cc,h}', - 'test/core/util/port.h', - 'test/core/util/port.cc', - 'test/core/util/port_server_client.{cc,h}' + ss.source_files = ${ruby_multiline_list(grpc_test_util_files(libs), 22)}, + ${ruby_multiline_list(end2end_tests_files(libs), 22)} end # TODO (mxyan): Instead of this hack, add include path "third_party" to C core's include path? diff --git a/templates/tools/dockerfile/test/sanity/Dockerfile.template b/templates/tools/dockerfile/test/sanity/Dockerfile.template index fef569477e..c98f7d4176 100644 --- a/templates/tools/dockerfile/test/sanity/Dockerfile.template +++ b/templates/tools/dockerfile/test/sanity/Dockerfile.template @@ -29,7 +29,8 @@ libtool ${"\\"} curl ${"\\"} python-virtualenv ${"\\"} - python-lxml + python-lxml ${"\\"} + shellcheck RUN pip install simplejson mako #====================================== |