From 6be15eef08759470fedece4b86afaae848a38303 Mon Sep 17 00:00:00 2001 From: Muxi Yan Date: Tue, 20 Feb 2018 14:05:33 -0800 Subject: [PATCH] Patch gRPC-C++.podspec to support framework --- gRPC-C++.podspec | 95 ++++------------------------- templates/gRPC-C++.podspec.template | 23 ++++++- 2 files changed, 32 insertions(+), 86 deletions(-) diff --git a/gRPC-C++.podspec b/gRPC-C++.podspec index 64029fb1f75..20a7253dfc6 100644 --- a/gRPC-C++.podspec +++ b/gRPC-C++.podspec @@ -42,8 +42,14 @@ Pod::Spec.new do |s| s.osx.deployment_target = '10.9' s.requires_arc = false - # Add include prefix `grpc++` (i.e. `#include `). - s.header_dir = 'grpc++' + name = 'grpcpp' + # Use `grpcpp` as framework name so that `#include ` works when built as + # framework. + s.module_name = name + + # Add include prefix `grpcpp` so that `#include ` works when built as static + # library. + s.header_dir = name s.pod_target_xcconfig = { 'HEADER_SEARCH_PATHS' => '"$(inherited)" "$(PODS_TARGET_SRCROOT)/include"', @@ -64,54 +70,9 @@ Pod::Spec.new do |s| s.default_subspecs = 'Interface', 'Implementation' s.subspec 'Interface' do |ss| - ss.header_mappings_dir = 'include/grpc++' + ss.header_mappings_dir = 'include/grpcpp' - ss.source_files = 'include/grpc++/alarm.h', - 'include/grpc++/channel.h', - 'include/grpc++/client_context.h', - 'include/grpc++/completion_queue.h', - 'include/grpc++/create_channel.h', - 'include/grpc++/create_channel_posix.h', - 'include/grpc++/ext/health_check_service_server_builder_option.h', - 'include/grpc++/generic/async_generic_service.h', - 'include/grpc++/generic/generic_stub.h', - 'include/grpc++/grpc++.h', - 'include/grpc++/health_check_service_interface.h', - 'include/grpc++/impl/call.h', - 'include/grpc++/impl/channel_argument_option.h', - 'include/grpc++/impl/client_unary_call.h', - 'include/grpc++/impl/codegen/core_codegen.h', - 'include/grpc++/impl/grpc_library.h', - 'include/grpc++/impl/method_handler_impl.h', - 'include/grpc++/impl/rpc_method.h', - 'include/grpc++/impl/rpc_service_method.h', - 'include/grpc++/impl/serialization_traits.h', - 'include/grpc++/impl/server_builder_option.h', - 'include/grpc++/impl/server_builder_plugin.h', - 'include/grpc++/impl/server_initializer.h', - 'include/grpc++/impl/service_type.h', - 'include/grpc++/resource_quota.h', - 'include/grpc++/security/auth_context.h', - 'include/grpc++/security/auth_metadata_processor.h', - 'include/grpc++/security/credentials.h', - 'include/grpc++/security/server_credentials.h', - 'include/grpc++/server.h', - 'include/grpc++/server_builder.h', - 'include/grpc++/server_context.h', - 'include/grpc++/server_posix.h', - 'include/grpc++/support/async_stream.h', - 'include/grpc++/support/async_unary_call.h', - 'include/grpc++/support/byte_buffer.h', - 'include/grpc++/support/channel_arguments.h', - 'include/grpc++/support/config.h', - 'include/grpc++/support/slice.h', - 'include/grpc++/support/status.h', - 'include/grpc++/support/status_code_enum.h', - 'include/grpc++/support/string_ref.h', - 'include/grpc++/support/stub_options.h', - 'include/grpc++/support/sync_stream.h', - 'include/grpc++/support/time.h', - 'include/grpcpp/alarm.h', + ss.source_files = 'include/grpcpp/alarm.h', 'include/grpcpp/channel.h', 'include/grpcpp/client_context.h', 'include/grpcpp/completion_queue.h', @@ -156,36 +117,6 @@ Pod::Spec.new do |s| 'include/grpcpp/support/stub_options.h', 'include/grpcpp/support/sync_stream.h', 'include/grpcpp/support/time.h', - 'include/grpc++/impl/codegen/async_stream.h', - 'include/grpc++/impl/codegen/async_unary_call.h', - 'include/grpc++/impl/codegen/byte_buffer.h', - 'include/grpc++/impl/codegen/call.h', - 'include/grpc++/impl/codegen/call_hook.h', - 'include/grpc++/impl/codegen/channel_interface.h', - 'include/grpc++/impl/codegen/client_context.h', - 'include/grpc++/impl/codegen/client_unary_call.h', - 'include/grpc++/impl/codegen/completion_queue.h', - 'include/grpc++/impl/codegen/completion_queue_tag.h', - 'include/grpc++/impl/codegen/config.h', - 'include/grpc++/impl/codegen/core_codegen_interface.h', - 'include/grpc++/impl/codegen/create_auth_context.h', - 'include/grpc++/impl/codegen/grpc_library.h', - 'include/grpc++/impl/codegen/metadata_map.h', - 'include/grpc++/impl/codegen/method_handler_impl.h', - 'include/grpc++/impl/codegen/rpc_method.h', - 'include/grpc++/impl/codegen/rpc_service_method.h', - 'include/grpc++/impl/codegen/security/auth_context.h', - 'include/grpc++/impl/codegen/serialization_traits.h', - 'include/grpc++/impl/codegen/server_context.h', - 'include/grpc++/impl/codegen/server_interface.h', - 'include/grpc++/impl/codegen/service_type.h', - 'include/grpc++/impl/codegen/slice.h', - 'include/grpc++/impl/codegen/status.h', - 'include/grpc++/impl/codegen/status_code_enum.h', - 'include/grpc++/impl/codegen/string_ref.h', - 'include/grpc++/impl/codegen/stub_options.h', - 'include/grpc++/impl/codegen/sync_stream.h', - 'include/grpc++/impl/codegen/time.h', 'include/grpcpp/impl/codegen/async_stream.h', 'include/grpcpp/impl/codegen/async_unary_call.h', 'include/grpcpp/impl/codegen/byte_buffer.h', @@ -224,8 +155,7 @@ Pod::Spec.new do |s| ss.dependency 'gRPC-Core', grpc_version ss.dependency 'nanopb', '~> 0.3' - ss.source_files = 'include/grpc++/impl/codegen/core_codegen.h', - 'include/grpcpp/impl/codegen/core_codegen.h', + ss.source_files = 'include/grpcpp/impl/codegen/core_codegen.h', 'src/cpp/client/secure_credentials.h', 'src/cpp/common/secure_auth_context.h', 'src/cpp/server/secure_server_credentials.h', @@ -519,8 +449,7 @@ Pod::Spec.new do |s| 'src/core/ext/filters/workarounds/workaround_cronet_compression_filter.h', 'src/core/ext/filters/workarounds/workaround_utils.h' - ss.private_header_files = 'include/grpc++/impl/codegen/core_codegen.h', - 'include/grpcpp/impl/codegen/core_codegen.h', + ss.private_header_files = 'include/grpcpp/impl/codegen/core_codegen.h', 'src/cpp/client/secure_credentials.h', 'src/cpp/common/secure_auth_context.h', 'src/cpp/server/secure_server_credentials.h', diff --git a/templates/gRPC-C++.podspec.template b/templates/gRPC-C++.podspec.template index 78adb279155..c24afea09c6 100644 --- a/templates/gRPC-C++.podspec.template +++ b/templates/gRPC-C++.podspec.template @@ -30,6 +30,9 @@ out += lib.get(group, []) return out + def filter_grpcpp(files): + return [file for file in files if not file.startswith("include/grpc++")] + def grpc_private_files(libs): out = grpc_lib_files(libs, ("grpc", "gpr"), ("headers", "src")) return out @@ -59,6 +62,9 @@ # Since some C++ source files directly included private headers in C core, we include all the # C core headers in C++ Implementation subspec as well. out += [file for file in grpc_private_headers(libs) if not file.startswith("third_party/nanopb/")] + + out = filter_grpcpp(out) + return out def grpcpp_private_headers(libs, filegroups): @@ -71,6 +77,8 @@ # Since some C++ source files directly included private headers in C core, we intentionally # keep the C core headers in \a out. But we should exclude nanopb headers. out = [file for file in out if not file.startswith("third_party/nanopb/")] + + out = filter_grpcpp(out) return out def grpcpp_public_headers(libs, filegroups): @@ -81,6 +89,9 @@ excl_files += grpcpp_proto_files(filegroups) out = [file for file in out if file not in excl_files] + + out = filter_grpcpp(out) + return out def grpc_test_util_files(libs): @@ -136,8 +147,14 @@ s.osx.deployment_target = '10.9' s.requires_arc = false - # Add include prefix `grpc++` (i.e. `#include `). - s.header_dir = 'grpc++' + name = 'grpcpp' + # Use `grpcpp` as framework name so that `#include ` works when built as + # framework. + s.module_name = name + + # Add include prefix `grpcpp` so that `#include ` works when built as static + # library. + s.header_dir = name s.pod_target_xcconfig = { 'HEADER_SEARCH_PATHS' => '"$(inherited)" "$(PODS_TARGET_SRCROOT)/include"', @@ -158,7 +175,7 @@ s.default_subspecs = 'Interface', 'Implementation' s.subspec 'Interface' do |ss| - ss.header_mappings_dir = 'include/grpc++' + ss.header_mappings_dir = 'include/grpcpp' ss.source_files = ${ruby_multiline_list(grpcpp_public_headers(libs, filegroups), 22)} end