Merge branch 'bazel-take-2' of github.com:nicolasnoble/grpc into bazel
diff --git a/BUILD b/BUILD
index eeca064..b1bbbff 100644
--- a/BUILD
+++ b/BUILD
@@ -1,4 +1,4 @@
-# GRPC Bazel BUILD file.
+# gRPC Bazel BUILD file.
 #
 # Copyright 2016, Google Inc.
 # All rights reserved.
@@ -42,20 +42,223 @@
 
 grpc_cc_library(
   name = "gpr",
+  deps = [
+    "gpr_base",
+  ],
+  language = "c",
+  standalone = True,
+)
+
+grpc_cc_library(
+  name = "grpc",
   srcs = [
-    "src/core/lib/profiling/timers.h",
-    "src/core/lib/support/backoff.h",
-    "src/core/lib/support/block_annotate.h",
-    "src/core/lib/support/env.h",
-    "src/core/lib/support/mpscq.h",
-    "src/core/lib/support/murmur_hash.h",
-    "src/core/lib/support/percent_encoding.h",
-    "src/core/lib/support/stack_lockfree.h",
-    "src/core/lib/support/string.h",
-    "src/core/lib/support/string_windows.h",
-    "src/core/lib/support/thd_internal.h",
-    "src/core/lib/support/time_precise.h",
-    "src/core/lib/support/tmpfile.h",
+    "src/core/lib/surface/init.c",
+    "src/core/plugin_registry/grpc_plugin_registry.c",
+  ],
+  deps = [
+    "grpc_base",
+    "grpc_transport_chttp2_server_secure",
+    "grpc_transport_chttp2_client_secure",
+    "grpc_transport_chttp2_server_insecure",
+    "grpc_transport_chttp2_client_insecure",
+    "grpc_lb_policy_grpclb",
+    "grpc_lb_policy_pick_first",
+    "grpc_lb_policy_round_robin",
+    "grpc_resolver_dns_native",
+    "grpc_resolver_sockaddr",
+    "grpc_load_reporting",
+    "grpc_secure",
+    "census",
+  ],
+  language = "c",
+  standalone = True,
+)
+
+grpc_cc_library(
+  name = "grpc_cronet",
+  srcs = [
+    "src/core/lib/surface/init.c",
+    "src/core/plugin_registry/grpc_cronet_plugin_registry.c",
+  ],
+  deps = [
+    "grpc_base",
+    "grpc_transport_cronet_client_secure",
+    "grpc_transport_chttp2_client_secure",
+  ],
+  language = "c",
+)
+
+grpc_cc_library(
+  name = "grpc_unsecure",
+  srcs = [
+    "src/core/lib/surface/init.c",
+    "src/core/lib/surface/init_unsecure.c",
+    "src/core/plugin_registry/grpc_unsecure_plugin_registry.c",
+  ],
+  deps = [
+    "grpc_base",
+    "grpc_transport_chttp2_server_insecure",
+    "grpc_transport_chttp2_client_insecure",
+    "grpc_resolver_dns_native",
+    "grpc_resolver_sockaddr",
+    "grpc_load_reporting",
+    "grpc_lb_policy_grpclb",
+    "grpc_lb_policy_pick_first",
+    "grpc_lb_policy_round_robin",
+    "census",
+  ],
+  language = "c",
+  standalone = True,
+)
+
+grpc_cc_library(
+  name = "grpc++",
+  srcs = [
+    "src/cpp/client/insecure_credentials.cc",
+    "src/cpp/client/secure_credentials.cc",
+    "src/cpp/common/auth_property_iterator.cc",
+    "src/cpp/common/secure_auth_context.cc",
+    "src/cpp/common/secure_channel_arguments.cc",
+    "src/cpp/common/secure_create_auth_context.cc",
+    "src/cpp/server/insecure_server_credentials.cc",
+    "src/cpp/server/secure_server_credentials.cc",
+  ],
+  hdrs = [
+    "include/grpc++/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",
+  ],
+  deps = [
+    "gpr",
+    "grpc",
+    "grpc++_base",
+    "grpc++_codegen_base",
+    "grpc++_codegen_base_src",
+  ],
+  language = "c++",
+  standalone = True,
+)
+
+grpc_cc_library(
+  name = "grpc++_unsecure",
+  srcs = [
+    "src/cpp/client/insecure_credentials.cc",
+    "src/cpp/common/insecure_create_auth_context.cc",
+    "src/cpp/server/insecure_server_credentials.cc",
+  ],
+  hdrs = [
+  ],
+  public_hdrs = [
+  ],
+  deps = [
+    "gpr",
+    "grpc_unsecure",
+    "grpc++_base",
+    "grpc++_codegen_base",
+    "grpc++_codegen_base_src",
+  ],
+  language = "c++",
+  standalone = True,
+)
+
+grpc_cc_library(
+  name = "grpc_plugin_support",
+  srcs = [
+    "src/compiler/cpp_generator.cc",
+    "src/compiler/csharp_generator.cc",
+    "src/compiler/node_generator.cc",
+    "src/compiler/objective_c_generator.cc",
+    "src/compiler/php_generator.cc",
+    "src/compiler/python_generator.cc",
+    "src/compiler/ruby_generator.cc",
+  ],
+  hdrs = [
+    "src/compiler/config.h",
+    "src/compiler/cpp_generator.h",
+    "src/compiler/cpp_generator_helpers.h",
+    "src/compiler/csharp_generator.h",
+    "src/compiler/csharp_generator_helpers.h",
+    "src/compiler/generator_helpers.h",
+    "src/compiler/node_generator.h",
+    "src/compiler/node_generator_helpers.h",
+    "src/compiler/objective_c_generator.h",
+    "src/compiler/objective_c_generator_helpers.h",
+    "src/compiler/php_generator.h",
+    "src/compiler/php_generator_helpers.h",
+    "src/compiler/python_generator.h",
+    "src/compiler/ruby_generator.h",
+    "src/compiler/ruby_generator_helpers-inl.h",
+    "src/compiler/ruby_generator_map-inl.h",
+    "src/compiler/ruby_generator_string-inl.h",
+  ],
+  external_deps = [
+    "protobuf_compiler",
+  ],
+  deps = [
+    "grpc++_config_proto",
+  ],
+  language = "c++",
+)
+
+grpc_cc_library(
+  name = "grpc_csharp_ext",
+  srcs = [
+    "src/csharp/ext/grpc_csharp_ext.c",
+  ],
+  deps = [
+    "grpc",
+    "gpr",
+  ],
+  language = "csharp",
+)
+
+grpc_cc_library(
+  name = "census",
+  srcs = [
+    "src/core/ext/census/base_resources.c",
+    "src/core/ext/census/context.c",
+    "src/core/ext/census/gen/census.pb.c",
+    "src/core/ext/census/gen/trace_context.pb.c",
+    "src/core/ext/census/grpc_context.c",
+    "src/core/ext/census/grpc_filter.c",
+    "src/core/ext/census/grpc_plugin.c",
+    "src/core/ext/census/initialize.c",
+    "src/core/ext/census/mlog.c",
+    "src/core/ext/census/operation.c",
+    "src/core/ext/census/placeholders.c",
+    "src/core/ext/census/resource.c",
+    "src/core/ext/census/trace_context.c",
+    "src/core/ext/census/tracing.c",
+  ],
+  hdrs = [
+    "src/core/ext/census/aggregation.h",
+    "src/core/ext/census/base_resources.h",
+    "src/core/ext/census/census_interface.h",
+    "src/core/ext/census/census_rpc_stats.h",
+    "src/core/ext/census/gen/census.pb.h",
+    "src/core/ext/census/gen/trace_context.pb.h",
+    "src/core/ext/census/grpc_filter.h",
+    "src/core/ext/census/mlog.h",
+    "src/core/ext/census/resource.h",
+    "src/core/ext/census/rpc_metric_id.h",
+    "src/core/ext/census/trace_context.h",
+  ],
+  public_hdrs = [
+    "include/grpc/census.h",
+  ],
+  external_deps = [
+    "nanopb",
+  ],
+  deps = [
+    "grpc_base",
+  ],
+  language = "c",
+)
+
+grpc_cc_library(
+  name = "gpr_base",
+  srcs = [
     "src/core/lib/profiling/basic_timers.c",
     "src/core/lib/profiling/stap_timers.c",
     "src/core/lib/support/alloc.c",
@@ -105,6 +308,21 @@
     "src/core/lib/support/wrap_memcpy.c",
   ],
   hdrs = [
+    "src/core/lib/profiling/timers.h",
+    "src/core/lib/support/backoff.h",
+    "src/core/lib/support/block_annotate.h",
+    "src/core/lib/support/env.h",
+    "src/core/lib/support/mpscq.h",
+    "src/core/lib/support/murmur_hash.h",
+    "src/core/lib/support/percent_encoding.h",
+    "src/core/lib/support/stack_lockfree.h",
+    "src/core/lib/support/string.h",
+    "src/core/lib/support/string_windows.h",
+    "src/core/lib/support/thd_internal.h",
+    "src/core/lib/support/time_precise.h",
+    "src/core/lib/support/tmpfile.h",
+  ],
+  public_hdrs = [
     "include/grpc/support/alloc.h",
     "include/grpc/support/atm.h",
     "include/grpc/support/atm_gcc_atomic.h",
@@ -133,6 +351,16 @@
     "include/grpc/support/tls_msvc.h",
     "include/grpc/support/tls_pthread.h",
     "include/grpc/support/useful.h",
+  ],
+  deps = [
+    "gpr_codegen",
+  ],
+  language = "c",
+)
+
+grpc_cc_library(
+  name = "gpr_codegen",
+  public_hdrs = [
     "include/grpc/impl/codegen/atm.h",
     "include/grpc/impl/codegen/atm_gcc_atomic.h",
     "include/grpc/impl/codegen/atm_gcc_sync.h",
@@ -145,176 +373,12 @@
     "include/grpc/impl/codegen/sync_posix.h",
     "include/grpc/impl/codegen/sync_windows.h",
   ],
+  language = "c",
 )
 
-
-
 grpc_cc_library(
-  name = "grpc",
+  name = "grpc_base",
   srcs = [
-    "src/core/lib/channel/channel_args.h",
-    "src/core/lib/channel/channel_stack.h",
-    "src/core/lib/channel/channel_stack_builder.h",
-    "src/core/lib/channel/compress_filter.h",
-    "src/core/lib/channel/connected_channel.h",
-    "src/core/lib/channel/context.h",
-    "src/core/lib/channel/deadline_filter.h",
-    "src/core/lib/channel/handshaker.h",
-    "src/core/lib/channel/http_client_filter.h",
-    "src/core/lib/channel/http_server_filter.h",
-    "src/core/lib/channel/message_size_filter.h",
-    "src/core/lib/compression/algorithm_metadata.h",
-    "src/core/lib/compression/message_compress.h",
-    "src/core/lib/debug/trace.h",
-    "src/core/lib/http/format_request.h",
-    "src/core/lib/http/httpcli.h",
-    "src/core/lib/http/parser.h",
-    "src/core/lib/iomgr/closure.h",
-    "src/core/lib/iomgr/combiner.h",
-    "src/core/lib/iomgr/endpoint.h",
-    "src/core/lib/iomgr/endpoint_pair.h",
-    "src/core/lib/iomgr/error.h",
-    "src/core/lib/iomgr/ev_epoll_linux.h",
-    "src/core/lib/iomgr/ev_poll_and_epoll_posix.h",
-    "src/core/lib/iomgr/ev_poll_posix.h",
-    "src/core/lib/iomgr/ev_posix.h",
-    "src/core/lib/iomgr/exec_ctx.h",
-    "src/core/lib/iomgr/executor.h",
-    "src/core/lib/iomgr/iocp_windows.h",
-    "src/core/lib/iomgr/iomgr.h",
-    "src/core/lib/iomgr/iomgr_internal.h",
-    "src/core/lib/iomgr/iomgr_posix.h",
-    "src/core/lib/iomgr/load_file.h",
-    "src/core/lib/iomgr/network_status_tracker.h",
-    "src/core/lib/iomgr/polling_entity.h",
-    "src/core/lib/iomgr/pollset.h",
-    "src/core/lib/iomgr/pollset_set.h",
-    "src/core/lib/iomgr/pollset_set_windows.h",
-    "src/core/lib/iomgr/pollset_windows.h",
-    "src/core/lib/iomgr/resolve_address.h",
-    "src/core/lib/iomgr/sockaddr.h",
-    "src/core/lib/iomgr/sockaddr_posix.h",
-    "src/core/lib/iomgr/sockaddr_utils.h",
-    "src/core/lib/iomgr/sockaddr_windows.h",
-    "src/core/lib/iomgr/socket_utils_posix.h",
-    "src/core/lib/iomgr/socket_windows.h",
-    "src/core/lib/iomgr/tcp_client.h",
-    "src/core/lib/iomgr/tcp_posix.h",
-    "src/core/lib/iomgr/tcp_server.h",
-    "src/core/lib/iomgr/tcp_windows.h",
-    "src/core/lib/iomgr/time_averaged_stats.h",
-    "src/core/lib/iomgr/timer.h",
-    "src/core/lib/iomgr/timer_heap.h",
-    "src/core/lib/iomgr/udp_server.h",
-    "src/core/lib/iomgr/unix_sockets_posix.h",
-    "src/core/lib/iomgr/wakeup_fd_cv.h",
-    "src/core/lib/iomgr/wakeup_fd_pipe.h",
-    "src/core/lib/iomgr/wakeup_fd_posix.h",
-    "src/core/lib/iomgr/workqueue.h",
-    "src/core/lib/iomgr/workqueue_windows.h",
-    "src/core/lib/json/json.h",
-    "src/core/lib/json/json_common.h",
-    "src/core/lib/json/json_reader.h",
-    "src/core/lib/json/json_writer.h",
-    "src/core/lib/surface/api_trace.h",
-    "src/core/lib/surface/call.h",
-    "src/core/lib/surface/call_test_only.h",
-    "src/core/lib/surface/channel.h",
-    "src/core/lib/surface/channel_init.h",
-    "src/core/lib/surface/channel_stack_type.h",
-    "src/core/lib/surface/completion_queue.h",
-    "src/core/lib/surface/event_string.h",
-    "src/core/lib/surface/init.h",
-    "src/core/lib/surface/lame_client.h",
-    "src/core/lib/surface/server.h",
-    "src/core/lib/transport/byte_stream.h",
-    "src/core/lib/transport/connectivity_state.h",
-    "src/core/lib/transport/mdstr_hash_table.h",
-    "src/core/lib/transport/metadata.h",
-    "src/core/lib/transport/metadata_batch.h",
-    "src/core/lib/transport/static_metadata.h",
-    "src/core/lib/transport/timeout_encoding.h",
-    "src/core/lib/transport/transport.h",
-    "src/core/lib/transport/transport_impl.h",
-    "src/core/ext/transport/chttp2/transport/bin_decoder.h",
-    "src/core/ext/transport/chttp2/transport/bin_encoder.h",
-    "src/core/ext/transport/chttp2/transport/chttp2_transport.h",
-    "src/core/ext/transport/chttp2/transport/frame.h",
-    "src/core/ext/transport/chttp2/transport/frame_data.h",
-    "src/core/ext/transport/chttp2/transport/frame_goaway.h",
-    "src/core/ext/transport/chttp2/transport/frame_ping.h",
-    "src/core/ext/transport/chttp2/transport/frame_rst_stream.h",
-    "src/core/ext/transport/chttp2/transport/frame_settings.h",
-    "src/core/ext/transport/chttp2/transport/frame_window_update.h",
-    "src/core/ext/transport/chttp2/transport/hpack_encoder.h",
-    "src/core/ext/transport/chttp2/transport/hpack_parser.h",
-    "src/core/ext/transport/chttp2/transport/hpack_table.h",
-    "src/core/ext/transport/chttp2/transport/http2_errors.h",
-    "src/core/ext/transport/chttp2/transport/huffsyms.h",
-    "src/core/ext/transport/chttp2/transport/incoming_metadata.h",
-    "src/core/ext/transport/chttp2/transport/internal.h",
-    "src/core/ext/transport/chttp2/transport/status_conversion.h",
-    "src/core/ext/transport/chttp2/transport/stream_map.h",
-    "src/core/ext/transport/chttp2/transport/varint.h",
-    "src/core/ext/transport/chttp2/alpn/alpn.h",
-    "src/core/lib/security/context/security_context.h",
-    "src/core/lib/security/credentials/composite/composite_credentials.h",
-    "src/core/lib/security/credentials/credentials.h",
-    "src/core/lib/security/credentials/fake/fake_credentials.h",
-    "src/core/lib/security/credentials/google_default/google_default_credentials.h",
-    "src/core/lib/security/credentials/iam/iam_credentials.h",
-    "src/core/lib/security/credentials/jwt/json_token.h",
-    "src/core/lib/security/credentials/jwt/jwt_credentials.h",
-    "src/core/lib/security/credentials/jwt/jwt_verifier.h",
-    "src/core/lib/security/credentials/oauth2/oauth2_credentials.h",
-    "src/core/lib/security/credentials/plugin/plugin_credentials.h",
-    "src/core/lib/security/credentials/ssl/ssl_credentials.h",
-    "src/core/lib/security/transport/auth_filters.h",
-    "src/core/lib/security/transport/handshake.h",
-    "src/core/lib/security/transport/secure_endpoint.h",
-    "src/core/lib/security/transport/security_connector.h",
-    "src/core/lib/security/transport/tsi_error.h",
-    "src/core/lib/security/util/b64.h",
-    "src/core/lib/security/util/json_util.h",
-    "src/core/lib/tsi/fake_transport_security.h",
-    "src/core/lib/tsi/ssl_transport_security.h",
-    "src/core/lib/tsi/ssl_types.h",
-    "src/core/lib/tsi/transport_security.h",
-    "src/core/lib/tsi/transport_security_interface.h",
-    "src/core/ext/client_config/client_channel.h",
-    "src/core/ext/client_config/client_channel_factory.h",
-    "src/core/ext/client_config/connector.h",
-    "src/core/ext/client_config/http_connect_handshaker.h",
-    "src/core/ext/client_config/initial_connect_string.h",
-    "src/core/ext/client_config/lb_policy.h",
-    "src/core/ext/client_config/lb_policy_factory.h",
-    "src/core/ext/client_config/lb_policy_registry.h",
-    "src/core/ext/client_config/method_config.h",
-    "src/core/ext/client_config/parse_address.h",
-    "src/core/ext/client_config/resolver.h",
-    "src/core/ext/client_config/resolver_factory.h",
-    "src/core/ext/client_config/resolver_registry.h",
-    "src/core/ext/client_config/resolver_result.h",
-    "src/core/ext/client_config/subchannel.h",
-    "src/core/ext/client_config/subchannel_index.h",
-    "src/core/ext/client_config/uri_parser.h",
-    "src/core/ext/lb_policy/grpclb/grpclb.h",
-    "src/core/ext/lb_policy/grpclb/load_balancer_api.h",
-    "src/core/ext/lb_policy/grpclb/proto/grpc/lb/v1/load_balancer.pb.h",
-    "src/core/ext/load_reporting/load_reporting.h",
-    "src/core/ext/load_reporting/load_reporting_filter.h",
-    "src/core/ext/census/aggregation.h",
-    "src/core/ext/census/base_resources.h",
-    "src/core/ext/census/census_interface.h",
-    "src/core/ext/census/census_rpc_stats.h",
-    "src/core/ext/census/gen/census.pb.h",
-    "src/core/ext/census/gen/trace_context.pb.h",
-    "src/core/ext/census/grpc_filter.h",
-    "src/core/ext/census/mlog.h",
-    "src/core/ext/census/resource.h",
-    "src/core/ext/census/rpc_metric_id.h",
-    "src/core/ext/census/trace_context.h",
-    "src/core/lib/surface/init.c",
     "src/core/lib/channel/channel_args.c",
     "src/core/lib/channel/channel_stack.c",
     "src/core/lib/channel/channel_stack_builder.c",
@@ -324,7 +388,6 @@
     "src/core/lib/channel/handshaker.c",
     "src/core/lib/channel/http_client_filter.c",
     "src/core/lib/channel/http_server_filter.c",
-    "src/core/lib/channel/message_size_filter.c",
     "src/core/lib/compression/compression.c",
     "src/core/lib/compression/message_compress.c",
     "src/core/lib/debug/trace.c",
@@ -408,29 +471,267 @@
     "src/core/lib/transport/timeout_encoding.c",
     "src/core/lib/transport/transport.c",
     "src/core/lib/transport/transport_op_string.c",
-    "src/core/ext/transport/chttp2/server/secure/server_secure_chttp2.c",
-    "src/core/ext/transport/chttp2/transport/bin_decoder.c",
-    "src/core/ext/transport/chttp2/transport/bin_encoder.c",
-    "src/core/ext/transport/chttp2/transport/chttp2_plugin.c",
-    "src/core/ext/transport/chttp2/transport/chttp2_transport.c",
-    "src/core/ext/transport/chttp2/transport/frame_data.c",
-    "src/core/ext/transport/chttp2/transport/frame_goaway.c",
-    "src/core/ext/transport/chttp2/transport/frame_ping.c",
-    "src/core/ext/transport/chttp2/transport/frame_rst_stream.c",
-    "src/core/ext/transport/chttp2/transport/frame_settings.c",
-    "src/core/ext/transport/chttp2/transport/frame_window_update.c",
-    "src/core/ext/transport/chttp2/transport/hpack_encoder.c",
-    "src/core/ext/transport/chttp2/transport/hpack_parser.c",
-    "src/core/ext/transport/chttp2/transport/hpack_table.c",
-    "src/core/ext/transport/chttp2/transport/huffsyms.c",
-    "src/core/ext/transport/chttp2/transport/incoming_metadata.c",
-    "src/core/ext/transport/chttp2/transport/parsing.c",
-    "src/core/ext/transport/chttp2/transport/status_conversion.c",
-    "src/core/ext/transport/chttp2/transport/stream_lists.c",
-    "src/core/ext/transport/chttp2/transport/stream_map.c",
-    "src/core/ext/transport/chttp2/transport/varint.c",
-    "src/core/ext/transport/chttp2/transport/writing.c",
-    "src/core/ext/transport/chttp2/alpn/alpn.c",
+  ],
+  hdrs = [
+    "src/core/lib/channel/channel_args.h",
+    "src/core/lib/channel/channel_stack.h",
+    "src/core/lib/channel/channel_stack_builder.h",
+    "src/core/lib/channel/compress_filter.h",
+    "src/core/lib/channel/connected_channel.h",
+    "src/core/lib/channel/context.h",
+    "src/core/lib/channel/deadline_filter.h",
+    "src/core/lib/channel/handshaker.h",
+    "src/core/lib/channel/http_client_filter.h",
+    "src/core/lib/channel/http_server_filter.h",
+    "src/core/lib/compression/algorithm_metadata.h",
+    "src/core/lib/compression/message_compress.h",
+    "src/core/lib/debug/trace.h",
+    "src/core/lib/http/format_request.h",
+    "src/core/lib/http/httpcli.h",
+    "src/core/lib/http/parser.h",
+    "src/core/lib/iomgr/closure.h",
+    "src/core/lib/iomgr/combiner.h",
+    "src/core/lib/iomgr/endpoint.h",
+    "src/core/lib/iomgr/endpoint_pair.h",
+    "src/core/lib/iomgr/error.h",
+    "src/core/lib/iomgr/ev_epoll_linux.h",
+    "src/core/lib/iomgr/ev_poll_and_epoll_posix.h",
+    "src/core/lib/iomgr/ev_poll_posix.h",
+    "src/core/lib/iomgr/ev_posix.h",
+    "src/core/lib/iomgr/exec_ctx.h",
+    "src/core/lib/iomgr/executor.h",
+    "src/core/lib/iomgr/iocp_windows.h",
+    "src/core/lib/iomgr/iomgr.h",
+    "src/core/lib/iomgr/iomgr_internal.h",
+    "src/core/lib/iomgr/iomgr_posix.h",
+    "src/core/lib/iomgr/load_file.h",
+    "src/core/lib/iomgr/network_status_tracker.h",
+    "src/core/lib/iomgr/polling_entity.h",
+    "src/core/lib/iomgr/pollset.h",
+    "src/core/lib/iomgr/pollset_set.h",
+    "src/core/lib/iomgr/pollset_set_windows.h",
+    "src/core/lib/iomgr/pollset_windows.h",
+    "src/core/lib/iomgr/resolve_address.h",
+    "src/core/lib/iomgr/sockaddr.h",
+    "src/core/lib/iomgr/sockaddr_posix.h",
+    "src/core/lib/iomgr/sockaddr_utils.h",
+    "src/core/lib/iomgr/sockaddr_windows.h",
+    "src/core/lib/iomgr/socket_utils_posix.h",
+    "src/core/lib/iomgr/socket_windows.h",
+    "src/core/lib/iomgr/tcp_client.h",
+    "src/core/lib/iomgr/tcp_posix.h",
+    "src/core/lib/iomgr/tcp_server.h",
+    "src/core/lib/iomgr/tcp_windows.h",
+    "src/core/lib/iomgr/time_averaged_stats.h",
+    "src/core/lib/iomgr/timer.h",
+    "src/core/lib/iomgr/timer_heap.h",
+    "src/core/lib/iomgr/udp_server.h",
+    "src/core/lib/iomgr/unix_sockets_posix.h",
+    "src/core/lib/iomgr/wakeup_fd_cv.h",
+    "src/core/lib/iomgr/wakeup_fd_pipe.h",
+    "src/core/lib/iomgr/wakeup_fd_posix.h",
+    "src/core/lib/iomgr/workqueue.h",
+    "src/core/lib/iomgr/workqueue_windows.h",
+    "src/core/lib/json/json.h",
+    "src/core/lib/json/json_common.h",
+    "src/core/lib/json/json_reader.h",
+    "src/core/lib/json/json_writer.h",
+    "src/core/lib/surface/api_trace.h",
+    "src/core/lib/surface/call.h",
+    "src/core/lib/surface/call_test_only.h",
+    "src/core/lib/surface/channel.h",
+    "src/core/lib/surface/channel_init.h",
+    "src/core/lib/surface/channel_stack_type.h",
+    "src/core/lib/surface/completion_queue.h",
+    "src/core/lib/surface/event_string.h",
+    "src/core/lib/surface/init.h",
+    "src/core/lib/surface/lame_client.h",
+    "src/core/lib/surface/server.h",
+    "src/core/lib/transport/byte_stream.h",
+    "src/core/lib/transport/connectivity_state.h",
+    "src/core/lib/transport/mdstr_hash_table.h",
+    "src/core/lib/transport/metadata.h",
+    "src/core/lib/transport/metadata_batch.h",
+    "src/core/lib/transport/static_metadata.h",
+    "src/core/lib/transport/timeout_encoding.h",
+    "src/core/lib/transport/transport.h",
+    "src/core/lib/transport/transport_impl.h",
+  ],
+  public_hdrs = [
+    "include/grpc/byte_buffer.h",
+    "include/grpc/byte_buffer_reader.h",
+    "include/grpc/compression.h",
+    "include/grpc/grpc.h",
+    "include/grpc/grpc_posix.h",
+    "include/grpc/grpc_security_constants.h",
+    "include/grpc/status.h",
+  ],
+  external_deps = [
+    "zlib",
+  ],
+  deps = [
+    "grpc_codegen",
+    "gpr_base",
+  ],
+  language = "c",
+)
+
+grpc_cc_library(
+  name = "grpc_client_config",
+  srcs = [
+    "src/core/ext/client_config/channel_connectivity.c",
+    "src/core/ext/client_config/client_channel.c",
+    "src/core/ext/client_config/client_channel_factory.c",
+    "src/core/ext/client_config/client_config_plugin.c",
+    "src/core/ext/client_config/connector.c",
+    "src/core/ext/client_config/default_initial_connect_string.c",
+    "src/core/ext/client_config/http_connect_handshaker.c",
+    "src/core/ext/client_config/initial_connect_string.c",
+    "src/core/ext/client_config/lb_policy.c",
+    "src/core/ext/client_config/lb_policy_factory.c",
+    "src/core/ext/client_config/lb_policy_registry.c",
+    "src/core/ext/client_config/message_size_filter.c",
+    "src/core/ext/client_config/method_config.c",
+    "src/core/ext/client_config/parse_address.c",
+    "src/core/ext/client_config/resolver.c",
+    "src/core/ext/client_config/resolver_factory.c",
+    "src/core/ext/client_config/resolver_registry.c",
+    "src/core/ext/client_config/resolver_result.c",
+    "src/core/ext/client_config/subchannel.c",
+    "src/core/ext/client_config/subchannel_index.c",
+    "src/core/ext/client_config/uri_parser.c",
+  ],
+  hdrs = [
+    "src/core/ext/client_config/client_channel.h",
+    "src/core/ext/client_config/client_channel_factory.h",
+    "src/core/ext/client_config/connector.h",
+    "src/core/ext/client_config/http_connect_handshaker.h",
+    "src/core/ext/client_config/initial_connect_string.h",
+    "src/core/ext/client_config/lb_policy.h",
+    "src/core/ext/client_config/lb_policy_factory.h",
+    "src/core/ext/client_config/lb_policy_registry.h",
+    "src/core/ext/client_config/message_size_filter.h",
+    "src/core/ext/client_config/method_config.h",
+    "src/core/ext/client_config/parse_address.h",
+    "src/core/ext/client_config/resolver.h",
+    "src/core/ext/client_config/resolver_factory.h",
+    "src/core/ext/client_config/resolver_registry.h",
+    "src/core/ext/client_config/resolver_result.h",
+    "src/core/ext/client_config/subchannel.h",
+    "src/core/ext/client_config/subchannel_index.h",
+    "src/core/ext/client_config/uri_parser.h",
+  ],
+  deps = [
+    "grpc_base",
+  ],
+  language = "c",
+)
+
+grpc_cc_library(
+  name = "grpc_codegen",
+  public_hdrs = [
+    "include/grpc/impl/codegen/byte_buffer_reader.h",
+    "include/grpc/impl/codegen/compression_types.h",
+    "include/grpc/impl/codegen/connectivity_state.h",
+    "include/grpc/impl/codegen/grpc_types.h",
+    "include/grpc/impl/codegen/propagation_bits.h",
+    "include/grpc/impl/codegen/status.h",
+  ],
+  deps = [
+    "gpr_codegen",
+  ],
+  language = "c",
+)
+
+grpc_cc_library(
+  name = "grpc_lb_policy_grpclb",
+  srcs = [
+    "src/core/ext/lb_policy/grpclb/grpclb.c",
+    "src/core/ext/lb_policy/grpclb/load_balancer_api.c",
+    "src/core/ext/lb_policy/grpclb/proto/grpc/lb/v1/load_balancer.pb.c",
+  ],
+  hdrs = [
+    "src/core/ext/lb_policy/grpclb/grpclb.h",
+    "src/core/ext/lb_policy/grpclb/load_balancer_api.h",
+    "src/core/ext/lb_policy/grpclb/proto/grpc/lb/v1/load_balancer.pb.h",
+  ],
+  external_deps = [
+    "nanopb",
+  ],
+  deps = [
+    "grpc_base",
+    "grpc_client_config",
+  ],
+  language = "c",
+)
+
+grpc_cc_library(
+  name = "grpc_lb_policy_pick_first",
+  srcs = [
+    "src/core/ext/lb_policy/pick_first/pick_first.c",
+  ],
+  deps = [
+    "grpc_base",
+    "grpc_client_config",
+  ],
+  language = "c",
+)
+
+grpc_cc_library(
+  name = "grpc_lb_policy_round_robin",
+  srcs = [
+    "src/core/ext/lb_policy/round_robin/round_robin.c",
+  ],
+  deps = [
+    "grpc_base",
+    "grpc_client_config",
+  ],
+  language = "c",
+)
+
+grpc_cc_library(
+  name = "grpc_load_reporting",
+  srcs = [
+    "src/core/ext/load_reporting/load_reporting.c",
+    "src/core/ext/load_reporting/load_reporting_filter.c",
+  ],
+  hdrs = [
+    "src/core/ext/load_reporting/load_reporting.h",
+    "src/core/ext/load_reporting/load_reporting_filter.h",
+  ],
+  deps = [
+    "grpc_base",
+  ],
+  language = "c",
+)
+
+grpc_cc_library(
+  name = "grpc_resolver_dns_native",
+  srcs = [
+    "src/core/ext/resolver/dns/native/dns_resolver.c",
+  ],
+  deps = [
+    "grpc_base",
+    "grpc_client_config",
+  ],
+  language = "c",
+)
+
+grpc_cc_library(
+  name = "grpc_resolver_sockaddr",
+  srcs = [
+    "src/core/ext/resolver/sockaddr/sockaddr_resolver.c",
+  ],
+  deps = [
+    "grpc_base",
+    "grpc_client_config",
+  ],
+  language = "c",
+)
+
+grpc_cc_library(
+  name = "grpc_secure",
+  srcs = [
     "src/core/lib/http/httpcli_security_connector.c",
     "src/core/lib/security/context/security_context.c",
     "src/core/lib/security/credentials/composite/composite_credentials.c",
@@ -456,118 +757,209 @@
     "src/core/lib/security/util/b64.c",
     "src/core/lib/security/util/json_util.c",
     "src/core/lib/surface/init_secure.c",
+  ],
+  hdrs = [
+    "src/core/lib/security/context/security_context.h",
+    "src/core/lib/security/credentials/composite/composite_credentials.h",
+    "src/core/lib/security/credentials/credentials.h",
+    "src/core/lib/security/credentials/fake/fake_credentials.h",
+    "src/core/lib/security/credentials/google_default/google_default_credentials.h",
+    "src/core/lib/security/credentials/iam/iam_credentials.h",
+    "src/core/lib/security/credentials/jwt/json_token.h",
+    "src/core/lib/security/credentials/jwt/jwt_credentials.h",
+    "src/core/lib/security/credentials/jwt/jwt_verifier.h",
+    "src/core/lib/security/credentials/oauth2/oauth2_credentials.h",
+    "src/core/lib/security/credentials/plugin/plugin_credentials.h",
+    "src/core/lib/security/credentials/ssl/ssl_credentials.h",
+    "src/core/lib/security/transport/auth_filters.h",
+    "src/core/lib/security/transport/handshake.h",
+    "src/core/lib/security/transport/secure_endpoint.h",
+    "src/core/lib/security/transport/security_connector.h",
+    "src/core/lib/security/transport/tsi_error.h",
+    "src/core/lib/security/util/b64.h",
+    "src/core/lib/security/util/json_util.h",
+  ],
+  public_hdrs = [
+    "include/grpc/grpc_security.h",
+  ],
+  deps = [
+    "grpc_base",
+    "grpc_transport_chttp2_alpn",
+    "tsi",
+  ],
+  language = "c",
+)
+
+grpc_cc_library(
+  name = "grpc_transport_chttp2",
+  srcs = [
+    "src/core/ext/transport/chttp2/transport/bin_decoder.c",
+    "src/core/ext/transport/chttp2/transport/bin_encoder.c",
+    "src/core/ext/transport/chttp2/transport/chttp2_plugin.c",
+    "src/core/ext/transport/chttp2/transport/chttp2_transport.c",
+    "src/core/ext/transport/chttp2/transport/frame_data.c",
+    "src/core/ext/transport/chttp2/transport/frame_goaway.c",
+    "src/core/ext/transport/chttp2/transport/frame_ping.c",
+    "src/core/ext/transport/chttp2/transport/frame_rst_stream.c",
+    "src/core/ext/transport/chttp2/transport/frame_settings.c",
+    "src/core/ext/transport/chttp2/transport/frame_window_update.c",
+    "src/core/ext/transport/chttp2/transport/hpack_encoder.c",
+    "src/core/ext/transport/chttp2/transport/hpack_parser.c",
+    "src/core/ext/transport/chttp2/transport/hpack_table.c",
+    "src/core/ext/transport/chttp2/transport/huffsyms.c",
+    "src/core/ext/transport/chttp2/transport/incoming_metadata.c",
+    "src/core/ext/transport/chttp2/transport/parsing.c",
+    "src/core/ext/transport/chttp2/transport/status_conversion.c",
+    "src/core/ext/transport/chttp2/transport/stream_lists.c",
+    "src/core/ext/transport/chttp2/transport/stream_map.c",
+    "src/core/ext/transport/chttp2/transport/varint.c",
+    "src/core/ext/transport/chttp2/transport/writing.c",
+  ],
+  hdrs = [
+    "src/core/ext/transport/chttp2/transport/bin_decoder.h",
+    "src/core/ext/transport/chttp2/transport/bin_encoder.h",
+    "src/core/ext/transport/chttp2/transport/chttp2_transport.h",
+    "src/core/ext/transport/chttp2/transport/frame.h",
+    "src/core/ext/transport/chttp2/transport/frame_data.h",
+    "src/core/ext/transport/chttp2/transport/frame_goaway.h",
+    "src/core/ext/transport/chttp2/transport/frame_ping.h",
+    "src/core/ext/transport/chttp2/transport/frame_rst_stream.h",
+    "src/core/ext/transport/chttp2/transport/frame_settings.h",
+    "src/core/ext/transport/chttp2/transport/frame_window_update.h",
+    "src/core/ext/transport/chttp2/transport/hpack_encoder.h",
+    "src/core/ext/transport/chttp2/transport/hpack_parser.h",
+    "src/core/ext/transport/chttp2/transport/hpack_table.h",
+    "src/core/ext/transport/chttp2/transport/http2_errors.h",
+    "src/core/ext/transport/chttp2/transport/huffsyms.h",
+    "src/core/ext/transport/chttp2/transport/incoming_metadata.h",
+    "src/core/ext/transport/chttp2/transport/internal.h",
+    "src/core/ext/transport/chttp2/transport/status_conversion.h",
+    "src/core/ext/transport/chttp2/transport/stream_map.h",
+    "src/core/ext/transport/chttp2/transport/varint.h",
+  ],
+  deps = [
+    "grpc_base",
+    "grpc_transport_chttp2_alpn",
+  ],
+  language = "c",
+)
+
+grpc_cc_library(
+  name = "grpc_transport_chttp2_alpn",
+  srcs = [
+    "src/core/ext/transport/chttp2/alpn/alpn.c",
+  ],
+  hdrs = [
+    "src/core/ext/transport/chttp2/alpn/alpn.h",
+  ],
+  deps = [
+    "gpr",
+  ],
+  language = "c",
+)
+
+grpc_cc_library(
+  name = "grpc_transport_chttp2_client_insecure",
+  srcs = [
+    "src/core/ext/transport/chttp2/client/insecure/channel_create.c",
+    "src/core/ext/transport/chttp2/client/insecure/channel_create_posix.c",
+  ],
+  deps = [
+    "grpc_transport_chttp2",
+    "grpc_base",
+    "grpc_client_config",
+  ],
+  language = "c",
+)
+
+grpc_cc_library(
+  name = "grpc_transport_chttp2_client_secure",
+  srcs = [
+    "src/core/ext/transport/chttp2/client/secure/secure_channel_create.c",
+  ],
+  deps = [
+    "grpc_transport_chttp2",
+    "grpc_base",
+    "grpc_client_config",
+    "grpc_secure",
+  ],
+  language = "c",
+)
+
+grpc_cc_library(
+  name = "grpc_transport_chttp2_server_insecure",
+  srcs = [
+    "src/core/ext/transport/chttp2/server/insecure/server_chttp2.c",
+    "src/core/ext/transport/chttp2/server/insecure/server_chttp2_posix.c",
+  ],
+  deps = [
+    "grpc_transport_chttp2",
+    "grpc_base",
+  ],
+  language = "c",
+)
+
+grpc_cc_library(
+  name = "grpc_transport_chttp2_server_secure",
+  srcs = [
+    "src/core/ext/transport/chttp2/server/secure/server_secure_chttp2.c",
+  ],
+  deps = [
+    "grpc_transport_chttp2",
+    "grpc_base",
+    "grpc_secure",
+  ],
+  language = "c",
+)
+
+grpc_cc_library(
+  name = "grpc_transport_cronet_client_secure",
+  srcs = [
+    "src/core/ext/transport/cronet/client/secure/cronet_channel_create.c",
+    "src/core/ext/transport/cronet/transport/cronet_api_dummy.c",
+    "src/core/ext/transport/cronet/transport/cronet_transport.c",
+  ],
+  hdrs = [
+    "third_party/objective_c/Cronet/cronet_c_for_grpc.h",
+  ],
+  public_hdrs = [
+    "include/grpc/grpc_cronet.h",
+    "include/grpc/grpc_security.h",
+    "include/grpc/grpc_security_constants.h",
+  ],
+  deps = [
+    "grpc_base",
+    "grpc_transport_chttp2",
+  ],
+  language = "c",
+)
+
+grpc_cc_library(
+  name = "tsi",
+  srcs = [
     "src/core/lib/tsi/fake_transport_security.c",
     "src/core/lib/tsi/ssl_transport_security.c",
     "src/core/lib/tsi/transport_security.c",
-    "src/core/ext/transport/chttp2/client/secure/secure_channel_create.c",
-    "src/core/ext/client_config/channel_connectivity.c",
-    "src/core/ext/client_config/client_channel.c",
-    "src/core/ext/client_config/client_channel_factory.c",
-    "src/core/ext/client_config/client_config_plugin.c",
-    "src/core/ext/client_config/connector.c",
-    "src/core/ext/client_config/default_initial_connect_string.c",
-    "src/core/ext/client_config/http_connect_handshaker.c",
-    "src/core/ext/client_config/initial_connect_string.c",
-    "src/core/ext/client_config/lb_policy.c",
-    "src/core/ext/client_config/lb_policy_factory.c",
-    "src/core/ext/client_config/lb_policy_registry.c",
-    "src/core/ext/client_config/method_config.c",
-    "src/core/ext/client_config/parse_address.c",
-    "src/core/ext/client_config/resolver.c",
-    "src/core/ext/client_config/resolver_factory.c",
-    "src/core/ext/client_config/resolver_registry.c",
-    "src/core/ext/client_config/resolver_result.c",
-    "src/core/ext/client_config/subchannel.c",
-    "src/core/ext/client_config/subchannel_index.c",
-    "src/core/ext/client_config/uri_parser.c",
-    "src/core/ext/transport/chttp2/server/insecure/server_chttp2.c",
-    "src/core/ext/transport/chttp2/server/insecure/server_chttp2_posix.c",
-    "src/core/ext/transport/chttp2/client/insecure/channel_create.c",
-    "src/core/ext/transport/chttp2/client/insecure/channel_create_posix.c",
-    "src/core/ext/lb_policy/grpclb/grpclb.c",
-    "src/core/ext/lb_policy/grpclb/load_balancer_api.c",
-    "src/core/ext/lb_policy/grpclb/proto/grpc/lb/v1/load_balancer.pb.c",
-    "src/core/ext/lb_policy/pick_first/pick_first.c",
-    "src/core/ext/lb_policy/round_robin/round_robin.c",
-    "src/core/ext/resolver/dns/native/dns_resolver.c",
-    "src/core/ext/resolver/sockaddr/sockaddr_resolver.c",
-    "src/core/ext/load_reporting/load_reporting.c",
-    "src/core/ext/load_reporting/load_reporting_filter.c",
-    "src/core/ext/census/base_resources.c",
-    "src/core/ext/census/context.c",
-    "src/core/ext/census/gen/census.pb.c",
-    "src/core/ext/census/gen/trace_context.pb.c",
-    "src/core/ext/census/grpc_context.c",
-    "src/core/ext/census/grpc_filter.c",
-    "src/core/ext/census/grpc_plugin.c",
-    "src/core/ext/census/initialize.c",
-    "src/core/ext/census/mlog.c",
-    "src/core/ext/census/operation.c",
-    "src/core/ext/census/placeholders.c",
-    "src/core/ext/census/resource.c",
-    "src/core/ext/census/trace_context.c",
-    "src/core/ext/census/tracing.c",
-    "src/core/plugin_registry/grpc_plugin_registry.c",
   ],
   hdrs = [
-    "include/grpc/byte_buffer.h",
-    "include/grpc/byte_buffer_reader.h",
-    "include/grpc/compression.h",
-    "include/grpc/grpc.h",
-    "include/grpc/grpc_posix.h",
-    "include/grpc/grpc_security_constants.h",
-    "include/grpc/status.h",
-    "include/grpc/impl/codegen/byte_buffer_reader.h",
-    "include/grpc/impl/codegen/compression_types.h",
-    "include/grpc/impl/codegen/connectivity_state.h",
-    "include/grpc/impl/codegen/grpc_types.h",
-    "include/grpc/impl/codegen/propagation_bits.h",
-    "include/grpc/impl/codegen/status.h",
-    "include/grpc/impl/codegen/atm.h",
-    "include/grpc/impl/codegen/atm_gcc_atomic.h",
-    "include/grpc/impl/codegen/atm_gcc_sync.h",
-    "include/grpc/impl/codegen/atm_windows.h",
-    "include/grpc/impl/codegen/gpr_types.h",
-    "include/grpc/impl/codegen/port_platform.h",
-    "include/grpc/impl/codegen/slice.h",
-    "include/grpc/impl/codegen/sync.h",
-    "include/grpc/impl/codegen/sync_generic.h",
-    "include/grpc/impl/codegen/sync_posix.h",
-    "include/grpc/impl/codegen/sync_windows.h",
-    "include/grpc/grpc_security.h",
-    "include/grpc/census.h",
+    "src/core/lib/tsi/fake_transport_security.h",
+    "src/core/lib/tsi/ssl_transport_security.h",
+    "src/core/lib/tsi/ssl_types.h",
+    "src/core/lib/tsi/transport_security.h",
+    "src/core/lib/tsi/transport_security_interface.h",
   ],
   external_deps = [
     "libssl",
-    "zlib",
-    "nanopb",
   ],
   deps = [
-    ":gpr",
+    "gpr",
   ],
-  language = "C",
+  language = "c",
 )
 
-
 grpc_cc_library(
-  name = "grpc++",
+  name = "grpc++_base",
   srcs = [
-    "include/grpc++/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",
-    "src/cpp/client/create_channel_internal.h",
-    "src/cpp/common/channel_filter.h",
-    "src/cpp/server/dynamic_thread_pool.h",
-    "src/cpp/server/thread_pool_interface.h",
-    "src/cpp/client/insecure_credentials.cc",
-    "src/cpp/client/secure_credentials.cc",
-    "src/cpp/common/auth_property_iterator.cc",
-    "src/cpp/common/secure_auth_context.cc",
-    "src/cpp/common/secure_channel_arguments.cc",
-    "src/cpp/common/secure_create_auth_context.cc",
-    "src/cpp/server/insecure_server_credentials.cc",
-    "src/cpp/server/secure_server_credentials.cc",
     "src/cpp/client/channel_cc.cc",
     "src/cpp/client/client_context.cc",
     "src/cpp/client/create_channel.cc",
@@ -593,9 +985,14 @@
     "src/cpp/util/status.cc",
     "src/cpp/util/string_ref.cc",
     "src/cpp/util/time_cc.cc",
-    "src/cpp/codegen/codegen_init.cc",
   ],
   hdrs = [
+    "src/cpp/client/create_channel_internal.h",
+    "src/cpp/common/channel_filter.h",
+    "src/cpp/server/dynamic_thread_pool.h",
+    "src/cpp/server/thread_pool_interface.h",
+  ],
+  public_hdrs = [
     "include/grpc++/alarm.h",
     "include/grpc++/channel.h",
     "include/grpc++/client_context.h",
@@ -643,6 +1040,17 @@
     "include/grpc++/support/stub_options.h",
     "include/grpc++/support/sync_stream.h",
     "include/grpc++/support/time.h",
+  ],
+  deps = [
+    "grpc",
+    "grpc++_codegen_base",
+  ],
+  language = "c++",
+)
+
+grpc_cc_library(
+  name = "grpc++_codegen_base",
+  public_hdrs = [
     "include/grpc++/impl/codegen/async_stream.h",
     "include/grpc++/impl/codegen/async_unary_call.h",
     "include/grpc++/impl/codegen/call.h",
@@ -674,29 +1082,53 @@
     "include/grpc++/impl/codegen/sync_no_cxx11.h",
     "include/grpc++/impl/codegen/sync_stream.h",
     "include/grpc++/impl/codegen/time.h",
-    "include/grpc/impl/codegen/byte_buffer_reader.h",
-    "include/grpc/impl/codegen/compression_types.h",
-    "include/grpc/impl/codegen/connectivity_state.h",
-    "include/grpc/impl/codegen/grpc_types.h",
-    "include/grpc/impl/codegen/propagation_bits.h",
-    "include/grpc/impl/codegen/status.h",
-    "include/grpc/impl/codegen/atm.h",
-    "include/grpc/impl/codegen/atm_gcc_atomic.h",
-    "include/grpc/impl/codegen/atm_gcc_sync.h",
-    "include/grpc/impl/codegen/atm_windows.h",
-    "include/grpc/impl/codegen/gpr_types.h",
-    "include/grpc/impl/codegen/port_platform.h",
-    "include/grpc/impl/codegen/slice.h",
-    "include/grpc/impl/codegen/sync.h",
-    "include/grpc/impl/codegen/sync_generic.h",
-    "include/grpc/impl/codegen/sync_posix.h",
-    "include/grpc/impl/codegen/sync_windows.h",
-  ],
-  external_deps = [
-    "libssl",
-    "protobuf_clib",
   ],
   deps = [
-    ":grpc",
+    "grpc_codegen",
   ],
+  language = "c++",
 )
+
+grpc_cc_library(
+  name = "grpc++_codegen_base_src",
+  srcs = [
+    "src/cpp/codegen/codegen_init.cc",
+  ],
+  deps = [
+    "grpc++_codegen_base",
+  ],
+  language = "c++",
+)
+
+grpc_cc_library(
+  name = "grpc++_codegen_proto",
+  public_hdrs = [
+    "include/grpc++/impl/codegen/proto_utils.h",
+  ],
+  deps = [
+    "grpc++_codegen_base",
+    "grpc++_config_proto",
+  ],
+  language = "c++",
+)
+
+grpc_cc_library(
+  name = "grpc++_config_proto",
+  public_hdrs = [
+    "include/grpc++/impl/codegen/config_protobuf.h",
+  ],
+  language = "c++",
+)
+
+grpc_cc_library(
+  name = "thrift_util",
+  public_hdrs = [
+    "include/grpc++/impl/codegen/thrift_serializer.h",
+    "include/grpc++/impl/codegen/thrift_utils.h",
+  ],
+  deps = [
+    "grpc++_codegen_base",
+  ],
+  language = "c++",
+)
+
diff --git a/src/core/lib/channel/message_size_filter.c b/src/core/ext/client_config/message_size_filter.c
similarity index 100%
rename from src/core/lib/channel/message_size_filter.c
rename to src/core/ext/client_config/message_size_filter.c
diff --git a/src/core/lib/channel/message_size_filter.h b/src/core/ext/client_config/message_size_filter.h
similarity index 100%
rename from src/core/lib/channel/message_size_filter.h
rename to src/core/ext/client_config/message_size_filter.h
diff --git a/test/core/end2end/BUILD b/test/core/end2end/BUILD
index f32bd22..fd425c3 100644
--- a/test/core/end2end/BUILD
+++ b/test/core/end2end/BUILD
@@ -40,6 +40,12 @@
 cc_library(
   name = 'ssl_test_data',
   hdrs = ['data/ssl_test_data.h'],
+  srcs = [
+    "data/client_certs.c",
+    "data/server1_cert.c",
+    "data/server1_key.c",
+    "data/test_root_cert.c",
+  ]
 )
 
 cc_library(