|  | @@ -92,6 +92,7 @@ CC_opt = $(DEFAULT_CC)
 | 
	
		
			
				|  |  |  CXX_opt = $(DEFAULT_CXX)
 | 
	
		
			
				|  |  |  LD_opt = $(DEFAULT_CC)
 | 
	
		
			
				|  |  |  LDXX_opt = $(DEFAULT_CXX)
 | 
	
		
			
				|  |  | +CXXFLAGS_opt = -fno-exceptions
 | 
	
		
			
				|  |  |  CPPFLAGS_opt = -O2
 | 
	
		
			
				|  |  |  DEFINES_opt = NDEBUG
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -99,7 +100,7 @@ VALID_CONFIG_asan-trace-cmp = 1
 | 
	
		
			
				|  |  |  REQUIRE_CUSTOM_LIBRARIES_asan-trace-cmp = 1
 | 
	
		
			
				|  |  |  CC_asan-trace-cmp = clang
 | 
	
		
			
				|  |  |  CXX_asan-trace-cmp = clang++
 | 
	
		
			
				|  |  | -LD_asan-trace-cmp = clang
 | 
	
		
			
				|  |  | +LD_asan-trace-cmp = clang++
 | 
	
		
			
				|  |  |  LDXX_asan-trace-cmp = clang++
 | 
	
		
			
				|  |  |  CPPFLAGS_asan-trace-cmp = -O0 -fsanitize-coverage=edge -fsanitize-coverage=trace-cmp -fsanitize=address -fno-omit-frame-pointer -Wno-unused-command-line-argument -DGPR_NO_DIRECT_SYSCALLS
 | 
	
		
			
				|  |  |  LDFLAGS_asan-trace-cmp = -fsanitize=address
 | 
	
	
		
			
				|  | @@ -109,6 +110,7 @@ CC_dbg = $(DEFAULT_CC)
 | 
	
		
			
				|  |  |  CXX_dbg = $(DEFAULT_CXX)
 | 
	
		
			
				|  |  |  LD_dbg = $(DEFAULT_CC)
 | 
	
		
			
				|  |  |  LDXX_dbg = $(DEFAULT_CXX)
 | 
	
		
			
				|  |  | +CXXFLAGS_dbg = -fno-exceptions
 | 
	
		
			
				|  |  |  CPPFLAGS_dbg = -O0
 | 
	
		
			
				|  |  |  DEFINES_dbg = _DEBUG DEBUG
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -116,7 +118,7 @@ VALID_CONFIG_asan = 1
 | 
	
		
			
				|  |  |  REQUIRE_CUSTOM_LIBRARIES_asan = 1
 | 
	
		
			
				|  |  |  CC_asan = clang
 | 
	
		
			
				|  |  |  CXX_asan = clang++
 | 
	
		
			
				|  |  | -LD_asan = clang
 | 
	
		
			
				|  |  | +LD_asan = clang++
 | 
	
		
			
				|  |  |  LDXX_asan = clang++
 | 
	
		
			
				|  |  |  CPPFLAGS_asan = -O0 -fsanitize-coverage=edge -fsanitize=address -fno-omit-frame-pointer -Wno-unused-command-line-argument -DGPR_NO_DIRECT_SYSCALLS
 | 
	
		
			
				|  |  |  LDFLAGS_asan = -fsanitize=address
 | 
	
	
		
			
				|  | @@ -125,7 +127,7 @@ VALID_CONFIG_msan = 1
 | 
	
		
			
				|  |  |  REQUIRE_CUSTOM_LIBRARIES_msan = 1
 | 
	
		
			
				|  |  |  CC_msan = clang
 | 
	
		
			
				|  |  |  CXX_msan = clang++
 | 
	
		
			
				|  |  | -LD_msan = clang
 | 
	
		
			
				|  |  | +LD_msan = clang++
 | 
	
		
			
				|  |  |  LDXX_msan = clang++
 | 
	
		
			
				|  |  |  CPPFLAGS_msan = -O0 -fsanitize-coverage=edge -fsanitize=memory -fsanitize-memory-track-origins -fno-omit-frame-pointer -DGTEST_HAS_TR1_TUPLE=0 -DGTEST_USE_OWN_TR1_TUPLE=1 -Wno-unused-command-line-argument -fPIE -pie -DGPR_NO_DIRECT_SYSCALLS
 | 
	
		
			
				|  |  |  LDFLAGS_msan = -fsanitize=memory -DGTEST_HAS_TR1_TUPLE=0 -DGTEST_USE_OWN_TR1_TUPLE=1 -fPIE -pie $(if $(JENKINS_BUILD),-Wl$(comma)-Ttext-segment=0x7e0000000000,)
 | 
	
	
		
			
				|  | @@ -152,26 +154,35 @@ VALID_CONFIG_asan-noleaks = 1
 | 
	
		
			
				|  |  |  REQUIRE_CUSTOM_LIBRARIES_asan-noleaks = 1
 | 
	
		
			
				|  |  |  CC_asan-noleaks = clang
 | 
	
		
			
				|  |  |  CXX_asan-noleaks = clang++
 | 
	
		
			
				|  |  | -LD_asan-noleaks = clang
 | 
	
		
			
				|  |  | +LD_asan-noleaks = clang++
 | 
	
		
			
				|  |  |  LDXX_asan-noleaks = clang++
 | 
	
		
			
				|  |  |  CPPFLAGS_asan-noleaks = -O0 -fsanitize-coverage=edge -fsanitize=address -fno-omit-frame-pointer -Wno-unused-command-line-argument -DGPR_NO_DIRECT_SYSCALLS
 | 
	
		
			
				|  |  |  LDFLAGS_asan-noleaks = -fsanitize=address
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +VALID_CONFIG_c++-compat = 1
 | 
	
		
			
				|  |  | +CC_c++-compat = $(DEFAULT_CC)
 | 
	
		
			
				|  |  | +CXX_c++-compat = $(DEFAULT_CXX)
 | 
	
		
			
				|  |  | +LD_c++-compat = $(DEFAULT_CC)
 | 
	
		
			
				|  |  | +LDXX_c++-compat = $(DEFAULT_CXX)
 | 
	
		
			
				|  |  | +CFLAGS_c++-compat = -Wc++-compat
 | 
	
		
			
				|  |  | +CPPFLAGS_c++-compat = -O0
 | 
	
		
			
				|  |  | +DEFINES_c++-compat = _DEBUG DEBUG
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |  VALID_CONFIG_ubsan = 1
 | 
	
		
			
				|  |  |  REQUIRE_CUSTOM_LIBRARIES_ubsan = 1
 | 
	
		
			
				|  |  |  CC_ubsan = clang
 | 
	
		
			
				|  |  |  CXX_ubsan = clang++
 | 
	
		
			
				|  |  | -LD_ubsan = clang
 | 
	
		
			
				|  |  | +LD_ubsan = clang++
 | 
	
		
			
				|  |  |  LDXX_ubsan = clang++
 | 
	
		
			
				|  |  |  CPPFLAGS_ubsan = -O0 -fsanitize-coverage=edge -fsanitize=undefined -fno-omit-frame-pointer -Wno-unused-command-line-argument -Wvarargs
 | 
	
		
			
				|  |  |  LDFLAGS_ubsan = -fsanitize=undefined,unsigned-integer-overflow
 | 
	
		
			
				|  |  | -DEFINES_ubsan = NDEBUG
 | 
	
		
			
				|  |  | +DEFINES_ubsan = NDEBUG GRPC_UBSAN
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  VALID_CONFIG_tsan = 1
 | 
	
		
			
				|  |  |  REQUIRE_CUSTOM_LIBRARIES_tsan = 1
 | 
	
		
			
				|  |  |  CC_tsan = clang
 | 
	
		
			
				|  |  |  CXX_tsan = clang++
 | 
	
		
			
				|  |  | -LD_tsan = clang
 | 
	
		
			
				|  |  | +LD_tsan = clang++
 | 
	
		
			
				|  |  |  LDXX_tsan = clang++
 | 
	
		
			
				|  |  |  CPPFLAGS_tsan = -O0 -fsanitize=thread -fno-omit-frame-pointer -Wno-unused-command-line-argument -DGPR_NO_DIRECT_SYSCALLS
 | 
	
		
			
				|  |  |  LDFLAGS_tsan = -fsanitize=thread
 | 
	
	
		
			
				|  | @@ -409,7 +420,7 @@ AROPTS = $(GRPC_CROSS_AROPTS) # e.g., rc --target=elf32-little
 | 
	
		
			
				|  |  |  USE_BUILT_PROTOC = false
 | 
	
		
			
				|  |  |  endif
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -GTEST_LIB = -Ithird_party/googletest/googletest/include -Ithird_party/googletest/googletest third_party/googletest/googletest/src/gtest-all.cc
 | 
	
		
			
				|  |  | +GTEST_LIB = -Ithird_party/googletest/googletest/include -Ithird_party/googletest/googletest third_party/googletest/googletest/src/gtest-all.cc -Ithird_party/googletest/googlemock/include -Ithird_party/googletest/googlemock third_party/googletest/googlemock/src/gmock-all.cc
 | 
	
		
			
				|  |  |  GTEST_LIB += -lgflags
 | 
	
		
			
				|  |  |  ifeq ($(V),1)
 | 
	
		
			
				|  |  |  E = @:
 | 
	
	
		
			
				|  | @@ -784,7 +795,7 @@ PROTOBUF_PKG_CONFIG = false
 | 
	
		
			
				|  |  |  PC_REQUIRES_GRPCXX =
 | 
	
		
			
				|  |  |  PC_LIBS_GRPCXX =
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -CPPFLAGS := -Ithird_party/googletest/googletest/include $(CPPFLAGS)
 | 
	
		
			
				|  |  | +CPPFLAGS := -Ithird_party/googletest/googletest/include -Ithird_party/googletest/googlemock/include $(CPPFLAGS)
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  PROTOC_PLUGINS_ALL = $(BINDIR)/$(CONFIG)/grpc_cpp_plugin $(BINDIR)/$(CONFIG)/grpc_csharp_plugin $(BINDIR)/$(CONFIG)/grpc_node_plugin $(BINDIR)/$(CONFIG)/grpc_objective_c_plugin $(BINDIR)/$(CONFIG)/grpc_php_plugin $(BINDIR)/$(CONFIG)/grpc_python_plugin $(BINDIR)/$(CONFIG)/grpc_ruby_plugin
 | 
	
		
			
				|  |  |  PROTOC_PLUGINS_DIR = $(BINDIR)/$(CONFIG)
 | 
	
	
		
			
				|  | @@ -1073,6 +1084,7 @@ server_chttp2_test: $(BINDIR)/$(CONFIG)/server_chttp2_test
 | 
	
		
			
				|  |  |  server_fuzzer: $(BINDIR)/$(CONFIG)/server_fuzzer
 | 
	
		
			
				|  |  |  server_test: $(BINDIR)/$(CONFIG)/server_test
 | 
	
		
			
				|  |  |  slice_buffer_test: $(BINDIR)/$(CONFIG)/slice_buffer_test
 | 
	
		
			
				|  |  | +slice_hash_table_test: $(BINDIR)/$(CONFIG)/slice_hash_table_test
 | 
	
		
			
				|  |  |  slice_string_helpers_test: $(BINDIR)/$(CONFIG)/slice_string_helpers_test
 | 
	
		
			
				|  |  |  slice_test: $(BINDIR)/$(CONFIG)/slice_test
 | 
	
		
			
				|  |  |  sockaddr_resolver_test: $(BINDIR)/$(CONFIG)/sockaddr_resolver_test
 | 
	
	
		
			
				|  | @@ -1150,6 +1162,7 @@ interop_client: $(BINDIR)/$(CONFIG)/interop_client
 | 
	
		
			
				|  |  |  interop_server: $(BINDIR)/$(CONFIG)/interop_server
 | 
	
		
			
				|  |  |  interop_test: $(BINDIR)/$(CONFIG)/interop_test
 | 
	
		
			
				|  |  |  json_run_localhost: $(BINDIR)/$(CONFIG)/json_run_localhost
 | 
	
		
			
				|  |  | +memory_test: $(BINDIR)/$(CONFIG)/memory_test
 | 
	
		
			
				|  |  |  metrics_client: $(BINDIR)/$(CONFIG)/metrics_client
 | 
	
		
			
				|  |  |  mock_test: $(BINDIR)/$(CONFIG)/mock_test
 | 
	
		
			
				|  |  |  noop-benchmark: $(BINDIR)/$(CONFIG)/noop-benchmark
 | 
	
	
		
			
				|  | @@ -1443,6 +1456,7 @@ buildtests_c: privatelibs_c \
 | 
	
		
			
				|  |  |    $(BINDIR)/$(CONFIG)/server_chttp2_test \
 | 
	
		
			
				|  |  |    $(BINDIR)/$(CONFIG)/server_test \
 | 
	
		
			
				|  |  |    $(BINDIR)/$(CONFIG)/slice_buffer_test \
 | 
	
		
			
				|  |  | +  $(BINDIR)/$(CONFIG)/slice_hash_table_test \
 | 
	
		
			
				|  |  |    $(BINDIR)/$(CONFIG)/slice_string_helpers_test \
 | 
	
		
			
				|  |  |    $(BINDIR)/$(CONFIG)/slice_test \
 | 
	
		
			
				|  |  |    $(BINDIR)/$(CONFIG)/sockaddr_resolver_test \
 | 
	
	
		
			
				|  | @@ -1572,6 +1586,7 @@ buildtests_cxx: privatelibs_cxx \
 | 
	
		
			
				|  |  |    $(BINDIR)/$(CONFIG)/interop_server \
 | 
	
		
			
				|  |  |    $(BINDIR)/$(CONFIG)/interop_test \
 | 
	
		
			
				|  |  |    $(BINDIR)/$(CONFIG)/json_run_localhost \
 | 
	
		
			
				|  |  | +  $(BINDIR)/$(CONFIG)/memory_test \
 | 
	
		
			
				|  |  |    $(BINDIR)/$(CONFIG)/metrics_client \
 | 
	
		
			
				|  |  |    $(BINDIR)/$(CONFIG)/mock_test \
 | 
	
		
			
				|  |  |    $(BINDIR)/$(CONFIG)/noop-benchmark \
 | 
	
	
		
			
				|  | @@ -1692,6 +1707,7 @@ buildtests_cxx: privatelibs_cxx \
 | 
	
		
			
				|  |  |    $(BINDIR)/$(CONFIG)/interop_server \
 | 
	
		
			
				|  |  |    $(BINDIR)/$(CONFIG)/interop_test \
 | 
	
		
			
				|  |  |    $(BINDIR)/$(CONFIG)/json_run_localhost \
 | 
	
		
			
				|  |  | +  $(BINDIR)/$(CONFIG)/memory_test \
 | 
	
		
			
				|  |  |    $(BINDIR)/$(CONFIG)/metrics_client \
 | 
	
		
			
				|  |  |    $(BINDIR)/$(CONFIG)/mock_test \
 | 
	
		
			
				|  |  |    $(BINDIR)/$(CONFIG)/noop-benchmark \
 | 
	
	
		
			
				|  | @@ -1915,6 +1931,8 @@ test_c: buildtests_c
 | 
	
		
			
				|  |  |  	$(Q) $(BINDIR)/$(CONFIG)/server_test || ( echo test server_test failed ; exit 1 )
 | 
	
		
			
				|  |  |  	$(E) "[RUN]     Testing slice_buffer_test"
 | 
	
		
			
				|  |  |  	$(Q) $(BINDIR)/$(CONFIG)/slice_buffer_test || ( echo test slice_buffer_test failed ; exit 1 )
 | 
	
		
			
				|  |  | +	$(E) "[RUN]     Testing slice_hash_table_test"
 | 
	
		
			
				|  |  | +	$(Q) $(BINDIR)/$(CONFIG)/slice_hash_table_test || ( echo test slice_hash_table_test failed ; exit 1 )
 | 
	
		
			
				|  |  |  	$(E) "[RUN]     Testing slice_string_helpers_test"
 | 
	
		
			
				|  |  |  	$(Q) $(BINDIR)/$(CONFIG)/slice_string_helpers_test || ( echo test slice_string_helpers_test failed ; exit 1 )
 | 
	
		
			
				|  |  |  	$(E) "[RUN]     Testing slice_test"
 | 
	
	
		
			
				|  | @@ -2069,6 +2087,8 @@ test_cxx: buildtests_cxx
 | 
	
		
			
				|  |  |  	$(Q) $(BINDIR)/$(CONFIG)/health_service_end2end_test || ( echo test health_service_end2end_test failed ; exit 1 )
 | 
	
		
			
				|  |  |  	$(E) "[RUN]     Testing interop_test"
 | 
	
		
			
				|  |  |  	$(Q) $(BINDIR)/$(CONFIG)/interop_test || ( echo test interop_test failed ; exit 1 )
 | 
	
		
			
				|  |  | +	$(E) "[RUN]     Testing memory_test"
 | 
	
		
			
				|  |  | +	$(Q) $(BINDIR)/$(CONFIG)/memory_test || ( echo test memory_test failed ; exit 1 )
 | 
	
		
			
				|  |  |  	$(E) "[RUN]     Testing mock_test"
 | 
	
		
			
				|  |  |  	$(Q) $(BINDIR)/$(CONFIG)/mock_test || ( echo test mock_test failed ; exit 1 )
 | 
	
		
			
				|  |  |  	$(E) "[RUN]     Testing noop-benchmark"
 | 
	
	
		
			
				|  | @@ -2225,6 +2245,7 @@ ifeq ($(NO_PROTOC),true)
 | 
	
		
			
				|  |  |  $(GENDIR)/src/proto/grpc/health/v1/health.pb.cc: protoc_dep_error
 | 
	
		
			
				|  |  |  $(GENDIR)/src/proto/grpc/health/v1/health.grpc.pb.cc: protoc_dep_error
 | 
	
		
			
				|  |  |  else
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |  $(GENDIR)/src/proto/grpc/health/v1/health.pb.cc: src/proto/grpc/health/v1/health.proto $(PROTOBUF_DEP) $(PROTOC_PLUGINS) 
 | 
	
		
			
				|  |  |  	$(E) "[PROTOC]  Generating protobuf CC file from $<"
 | 
	
		
			
				|  |  |  	$(Q) mkdir -p `dirname $@`
 | 
	
	
		
			
				|  | @@ -2240,6 +2261,7 @@ ifeq ($(NO_PROTOC),true)
 | 
	
		
			
				|  |  |  $(GENDIR)/src/proto/grpc/lb/v1/load_balancer.pb.cc: protoc_dep_error
 | 
	
		
			
				|  |  |  $(GENDIR)/src/proto/grpc/lb/v1/load_balancer.grpc.pb.cc: protoc_dep_error
 | 
	
		
			
				|  |  |  else
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |  $(GENDIR)/src/proto/grpc/lb/v1/load_balancer.pb.cc: src/proto/grpc/lb/v1/load_balancer.proto $(PROTOBUF_DEP) $(PROTOC_PLUGINS) 
 | 
	
		
			
				|  |  |  	$(E) "[PROTOC]  Generating protobuf CC file from $<"
 | 
	
		
			
				|  |  |  	$(Q) mkdir -p `dirname $@`
 | 
	
	
		
			
				|  | @@ -2255,6 +2277,7 @@ ifeq ($(NO_PROTOC),true)
 | 
	
		
			
				|  |  |  $(GENDIR)/src/proto/grpc/reflection/v1alpha/reflection.pb.cc: protoc_dep_error
 | 
	
		
			
				|  |  |  $(GENDIR)/src/proto/grpc/reflection/v1alpha/reflection.grpc.pb.cc: protoc_dep_error
 | 
	
		
			
				|  |  |  else
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |  $(GENDIR)/src/proto/grpc/reflection/v1alpha/reflection.pb.cc: src/proto/grpc/reflection/v1alpha/reflection.proto $(PROTOBUF_DEP) $(PROTOC_PLUGINS) 
 | 
	
		
			
				|  |  |  	$(E) "[PROTOC]  Generating protobuf CC file from $<"
 | 
	
		
			
				|  |  |  	$(Q) mkdir -p `dirname $@`
 | 
	
	
		
			
				|  | @@ -2270,6 +2293,7 @@ ifeq ($(NO_PROTOC),true)
 | 
	
		
			
				|  |  |  $(GENDIR)/src/proto/grpc/status/status.pb.cc: protoc_dep_error
 | 
	
		
			
				|  |  |  $(GENDIR)/src/proto/grpc/status/status.grpc.pb.cc: protoc_dep_error
 | 
	
		
			
				|  |  |  else
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |  $(GENDIR)/src/proto/grpc/status/status.pb.cc: src/proto/grpc/status/status.proto $(PROTOBUF_DEP) $(PROTOC_PLUGINS) 
 | 
	
		
			
				|  |  |  	$(E) "[PROTOC]  Generating protobuf CC file from $<"
 | 
	
		
			
				|  |  |  	$(Q) mkdir -p `dirname $@`
 | 
	
	
		
			
				|  | @@ -2285,6 +2309,8 @@ ifeq ($(NO_PROTOC),true)
 | 
	
		
			
				|  |  |  $(GENDIR)/src/proto/grpc/testing/compiler_test.pb.cc: protoc_dep_error
 | 
	
		
			
				|  |  |  $(GENDIR)/src/proto/grpc/testing/compiler_test.grpc.pb.cc: protoc_dep_error
 | 
	
		
			
				|  |  |  else
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |  $(GENDIR)/src/proto/grpc/testing/compiler_test.pb.cc: src/proto/grpc/testing/compiler_test.proto $(PROTOBUF_DEP) $(PROTOC_PLUGINS) 
 | 
	
		
			
				|  |  |  	$(E) "[PROTOC]  Generating protobuf CC file from $<"
 | 
	
		
			
				|  |  |  	$(Q) mkdir -p `dirname $@`
 | 
	
	
		
			
				|  | @@ -2293,13 +2319,14 @@ $(GENDIR)/src/proto/grpc/testing/compiler_test.pb.cc: src/proto/grpc/testing/com
 | 
	
		
			
				|  |  |  $(GENDIR)/src/proto/grpc/testing/compiler_test.grpc.pb.cc: src/proto/grpc/testing/compiler_test.proto $(PROTOBUF_DEP) $(PROTOC_PLUGINS) 
 | 
	
		
			
				|  |  |  	$(E) "[GRPC]    Generating gRPC's protobuf service CC file from $<"
 | 
	
		
			
				|  |  |  	$(Q) mkdir -p `dirname $@`
 | 
	
		
			
				|  |  | -	$(Q) $(PROTOC) -Ithird_party/protobuf/src -I. --grpc_out=$(GENDIR) --plugin=protoc-gen-grpc=$(PROTOC_PLUGINS_DIR)/grpc_cpp_plugin$(EXECUTABLE_SUFFIX) $<
 | 
	
		
			
				|  |  | +	$(Q) $(PROTOC) -Ithird_party/protobuf/src -I. --grpc_out=generate_mock_code=true:$(GENDIR) --plugin=protoc-gen-grpc=$(PROTOC_PLUGINS_DIR)/grpc_cpp_plugin$(EXECUTABLE_SUFFIX) $<
 | 
	
		
			
				|  |  |  endif
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  ifeq ($(NO_PROTOC),true)
 | 
	
		
			
				|  |  |  $(GENDIR)/src/proto/grpc/testing/control.pb.cc: protoc_dep_error
 | 
	
		
			
				|  |  |  $(GENDIR)/src/proto/grpc/testing/control.grpc.pb.cc: protoc_dep_error
 | 
	
		
			
				|  |  |  else
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |  $(GENDIR)/src/proto/grpc/testing/control.pb.cc: src/proto/grpc/testing/control.proto $(PROTOBUF_DEP) $(PROTOC_PLUGINS) $(GENDIR)/src/proto/grpc/testing/payloads.pb.cc $(GENDIR)/src/proto/grpc/testing/stats.pb.cc
 | 
	
		
			
				|  |  |  	$(E) "[PROTOC]  Generating protobuf CC file from $<"
 | 
	
		
			
				|  |  |  	$(Q) mkdir -p `dirname $@`
 | 
	
	
		
			
				|  | @@ -2315,6 +2342,7 @@ ifeq ($(NO_PROTOC),true)
 | 
	
		
			
				|  |  |  $(GENDIR)/src/proto/grpc/testing/duplicate/echo_duplicate.pb.cc: protoc_dep_error
 | 
	
		
			
				|  |  |  $(GENDIR)/src/proto/grpc/testing/duplicate/echo_duplicate.grpc.pb.cc: protoc_dep_error
 | 
	
		
			
				|  |  |  else
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |  $(GENDIR)/src/proto/grpc/testing/duplicate/echo_duplicate.pb.cc: src/proto/grpc/testing/duplicate/echo_duplicate.proto $(PROTOBUF_DEP) $(PROTOC_PLUGINS) $(GENDIR)/src/proto/grpc/testing/echo_messages.pb.cc
 | 
	
		
			
				|  |  |  	$(E) "[PROTOC]  Generating protobuf CC file from $<"
 | 
	
		
			
				|  |  |  	$(Q) mkdir -p `dirname $@`
 | 
	
	
		
			
				|  | @@ -2330,6 +2358,8 @@ ifeq ($(NO_PROTOC),true)
 | 
	
		
			
				|  |  |  $(GENDIR)/src/proto/grpc/testing/echo.pb.cc: protoc_dep_error
 | 
	
		
			
				|  |  |  $(GENDIR)/src/proto/grpc/testing/echo.grpc.pb.cc: protoc_dep_error
 | 
	
		
			
				|  |  |  else
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |  $(GENDIR)/src/proto/grpc/testing/echo.pb.cc: src/proto/grpc/testing/echo.proto $(PROTOBUF_DEP) $(PROTOC_PLUGINS) $(GENDIR)/src/proto/grpc/testing/echo_messages.pb.cc
 | 
	
		
			
				|  |  |  	$(E) "[PROTOC]  Generating protobuf CC file from $<"
 | 
	
		
			
				|  |  |  	$(Q) mkdir -p `dirname $@`
 | 
	
	
		
			
				|  | @@ -2338,13 +2368,14 @@ $(GENDIR)/src/proto/grpc/testing/echo.pb.cc: src/proto/grpc/testing/echo.proto $
 | 
	
		
			
				|  |  |  $(GENDIR)/src/proto/grpc/testing/echo.grpc.pb.cc: src/proto/grpc/testing/echo.proto $(PROTOBUF_DEP) $(PROTOC_PLUGINS) $(GENDIR)/src/proto/grpc/testing/echo_messages.pb.cc $(GENDIR)/src/proto/grpc/testing/echo_messages.grpc.pb.cc
 | 
	
		
			
				|  |  |  	$(E) "[GRPC]    Generating gRPC's protobuf service CC file from $<"
 | 
	
		
			
				|  |  |  	$(Q) mkdir -p `dirname $@`
 | 
	
		
			
				|  |  | -	$(Q) $(PROTOC) -Ithird_party/protobuf/src -I. --grpc_out=$(GENDIR) --plugin=protoc-gen-grpc=$(PROTOC_PLUGINS_DIR)/grpc_cpp_plugin$(EXECUTABLE_SUFFIX) $<
 | 
	
		
			
				|  |  | +	$(Q) $(PROTOC) -Ithird_party/protobuf/src -I. --grpc_out=generate_mock_code=true:$(GENDIR) --plugin=protoc-gen-grpc=$(PROTOC_PLUGINS_DIR)/grpc_cpp_plugin$(EXECUTABLE_SUFFIX) $<
 | 
	
		
			
				|  |  |  endif
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  ifeq ($(NO_PROTOC),true)
 | 
	
		
			
				|  |  |  $(GENDIR)/src/proto/grpc/testing/echo_messages.pb.cc: protoc_dep_error
 | 
	
		
			
				|  |  |  $(GENDIR)/src/proto/grpc/testing/echo_messages.grpc.pb.cc: protoc_dep_error
 | 
	
		
			
				|  |  |  else
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |  $(GENDIR)/src/proto/grpc/testing/echo_messages.pb.cc: src/proto/grpc/testing/echo_messages.proto $(PROTOBUF_DEP) $(PROTOC_PLUGINS) 
 | 
	
		
			
				|  |  |  	$(E) "[PROTOC]  Generating protobuf CC file from $<"
 | 
	
		
			
				|  |  |  	$(Q) mkdir -p `dirname $@`
 | 
	
	
		
			
				|  | @@ -2360,6 +2391,7 @@ ifeq ($(NO_PROTOC),true)
 | 
	
		
			
				|  |  |  $(GENDIR)/src/proto/grpc/testing/empty.pb.cc: protoc_dep_error
 | 
	
		
			
				|  |  |  $(GENDIR)/src/proto/grpc/testing/empty.grpc.pb.cc: protoc_dep_error
 | 
	
		
			
				|  |  |  else
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |  $(GENDIR)/src/proto/grpc/testing/empty.pb.cc: src/proto/grpc/testing/empty.proto $(PROTOBUF_DEP) $(PROTOC_PLUGINS) 
 | 
	
		
			
				|  |  |  	$(E) "[PROTOC]  Generating protobuf CC file from $<"
 | 
	
		
			
				|  |  |  	$(Q) mkdir -p `dirname $@`
 | 
	
	
		
			
				|  | @@ -2375,6 +2407,7 @@ ifeq ($(NO_PROTOC),true)
 | 
	
		
			
				|  |  |  $(GENDIR)/src/proto/grpc/testing/messages.pb.cc: protoc_dep_error
 | 
	
		
			
				|  |  |  $(GENDIR)/src/proto/grpc/testing/messages.grpc.pb.cc: protoc_dep_error
 | 
	
		
			
				|  |  |  else
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |  $(GENDIR)/src/proto/grpc/testing/messages.pb.cc: src/proto/grpc/testing/messages.proto $(PROTOBUF_DEP) $(PROTOC_PLUGINS) 
 | 
	
		
			
				|  |  |  	$(E) "[PROTOC]  Generating protobuf CC file from $<"
 | 
	
		
			
				|  |  |  	$(Q) mkdir -p `dirname $@`
 | 
	
	
		
			
				|  | @@ -2390,6 +2423,7 @@ ifeq ($(NO_PROTOC),true)
 | 
	
		
			
				|  |  |  $(GENDIR)/src/proto/grpc/testing/metrics.pb.cc: protoc_dep_error
 | 
	
		
			
				|  |  |  $(GENDIR)/src/proto/grpc/testing/metrics.grpc.pb.cc: protoc_dep_error
 | 
	
		
			
				|  |  |  else
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |  $(GENDIR)/src/proto/grpc/testing/metrics.pb.cc: src/proto/grpc/testing/metrics.proto $(PROTOBUF_DEP) $(PROTOC_PLUGINS) 
 | 
	
		
			
				|  |  |  	$(E) "[PROTOC]  Generating protobuf CC file from $<"
 | 
	
		
			
				|  |  |  	$(Q) mkdir -p `dirname $@`
 | 
	
	
		
			
				|  | @@ -2405,6 +2439,7 @@ ifeq ($(NO_PROTOC),true)
 | 
	
		
			
				|  |  |  $(GENDIR)/src/proto/grpc/testing/payloads.pb.cc: protoc_dep_error
 | 
	
		
			
				|  |  |  $(GENDIR)/src/proto/grpc/testing/payloads.grpc.pb.cc: protoc_dep_error
 | 
	
		
			
				|  |  |  else
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |  $(GENDIR)/src/proto/grpc/testing/payloads.pb.cc: src/proto/grpc/testing/payloads.proto $(PROTOBUF_DEP) $(PROTOC_PLUGINS) 
 | 
	
		
			
				|  |  |  	$(E) "[PROTOC]  Generating protobuf CC file from $<"
 | 
	
		
			
				|  |  |  	$(Q) mkdir -p `dirname $@`
 | 
	
	
		
			
				|  | @@ -2420,6 +2455,7 @@ ifeq ($(NO_PROTOC),true)
 | 
	
		
			
				|  |  |  $(GENDIR)/src/proto/grpc/testing/services.pb.cc: protoc_dep_error
 | 
	
		
			
				|  |  |  $(GENDIR)/src/proto/grpc/testing/services.grpc.pb.cc: protoc_dep_error
 | 
	
		
			
				|  |  |  else
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |  $(GENDIR)/src/proto/grpc/testing/services.pb.cc: src/proto/grpc/testing/services.proto $(PROTOBUF_DEP) $(PROTOC_PLUGINS) $(GENDIR)/src/proto/grpc/testing/messages.pb.cc $(GENDIR)/src/proto/grpc/testing/control.pb.cc $(GENDIR)/src/proto/grpc/testing/stats.pb.cc
 | 
	
		
			
				|  |  |  	$(E) "[PROTOC]  Generating protobuf CC file from $<"
 | 
	
		
			
				|  |  |  	$(Q) mkdir -p `dirname $@`
 | 
	
	
		
			
				|  | @@ -2435,6 +2471,7 @@ ifeq ($(NO_PROTOC),true)
 | 
	
		
			
				|  |  |  $(GENDIR)/src/proto/grpc/testing/stats.pb.cc: protoc_dep_error
 | 
	
		
			
				|  |  |  $(GENDIR)/src/proto/grpc/testing/stats.grpc.pb.cc: protoc_dep_error
 | 
	
		
			
				|  |  |  else
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |  $(GENDIR)/src/proto/grpc/testing/stats.pb.cc: src/proto/grpc/testing/stats.proto $(PROTOBUF_DEP) $(PROTOC_PLUGINS) 
 | 
	
		
			
				|  |  |  	$(E) "[PROTOC]  Generating protobuf CC file from $<"
 | 
	
		
			
				|  |  |  	$(Q) mkdir -p `dirname $@`
 | 
	
	
		
			
				|  | @@ -2450,6 +2487,7 @@ ifeq ($(NO_PROTOC),true)
 | 
	
		
			
				|  |  |  $(GENDIR)/src/proto/grpc/testing/test.pb.cc: protoc_dep_error
 | 
	
		
			
				|  |  |  $(GENDIR)/src/proto/grpc/testing/test.grpc.pb.cc: protoc_dep_error
 | 
	
		
			
				|  |  |  else
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |  $(GENDIR)/src/proto/grpc/testing/test.pb.cc: src/proto/grpc/testing/test.proto $(PROTOBUF_DEP) $(PROTOC_PLUGINS) $(GENDIR)/src/proto/grpc/testing/empty.pb.cc $(GENDIR)/src/proto/grpc/testing/messages.pb.cc
 | 
	
		
			
				|  |  |  	$(E) "[PROTOC]  Generating protobuf CC file from $<"
 | 
	
		
			
				|  |  |  	$(Q) mkdir -p `dirname $@`
 | 
	
	
		
			
				|  | @@ -2960,7 +2998,7 @@ LIBGRPC_SRC = \
 | 
	
		
			
				|  |  |      src/core/lib/surface/completion_queue.c \
 | 
	
		
			
				|  |  |      src/core/lib/surface/completion_queue_factory.c \
 | 
	
		
			
				|  |  |      src/core/lib/surface/event_string.c \
 | 
	
		
			
				|  |  | -    src/core/lib/surface/lame_client.c \
 | 
	
		
			
				|  |  | +    src/core/lib/surface/lame_client.cc \
 | 
	
		
			
				|  |  |      src/core/lib/surface/metadata_array.c \
 | 
	
		
			
				|  |  |      src/core/lib/surface/server.c \
 | 
	
		
			
				|  |  |      src/core/lib/surface/validate_metadata.c \
 | 
	
	
		
			
				|  | @@ -3032,6 +3070,7 @@ LIBGRPC_SRC = \
 | 
	
		
			
				|  |  |      src/core/tsi/fake_transport_security.c \
 | 
	
		
			
				|  |  |      src/core/tsi/ssl_transport_security.c \
 | 
	
		
			
				|  |  |      src/core/tsi/transport_security.c \
 | 
	
		
			
				|  |  | +    src/core/tsi/transport_security_adapter.c \
 | 
	
		
			
				|  |  |      src/core/ext/transport/chttp2/server/chttp2_server.c \
 | 
	
		
			
				|  |  |      src/core/ext/transport/chttp2/client/secure/secure_channel_create.c \
 | 
	
		
			
				|  |  |      src/core/ext/filters/client_channel/channel_connectivity.c \
 | 
	
	
		
			
				|  | @@ -3283,7 +3322,7 @@ LIBGRPC_CRONET_SRC = \
 | 
	
		
			
				|  |  |      src/core/lib/surface/completion_queue.c \
 | 
	
		
			
				|  |  |      src/core/lib/surface/completion_queue_factory.c \
 | 
	
		
			
				|  |  |      src/core/lib/surface/event_string.c \
 | 
	
		
			
				|  |  | -    src/core/lib/surface/lame_client.c \
 | 
	
		
			
				|  |  | +    src/core/lib/surface/lame_client.cc \
 | 
	
		
			
				|  |  |      src/core/lib/surface/metadata_array.c \
 | 
	
		
			
				|  |  |      src/core/lib/surface/server.c \
 | 
	
		
			
				|  |  |      src/core/lib/surface/validate_metadata.c \
 | 
	
	
		
			
				|  | @@ -3379,6 +3418,7 @@ LIBGRPC_CRONET_SRC = \
 | 
	
		
			
				|  |  |      src/core/tsi/fake_transport_security.c \
 | 
	
		
			
				|  |  |      src/core/tsi/ssl_transport_security.c \
 | 
	
		
			
				|  |  |      src/core/tsi/transport_security.c \
 | 
	
		
			
				|  |  | +    src/core/tsi/transport_security_adapter.c \
 | 
	
		
			
				|  |  |      src/core/ext/transport/chttp2/client/chttp2_connector.c \
 | 
	
		
			
				|  |  |      src/core/ext/filters/load_reporting/load_reporting.c \
 | 
	
		
			
				|  |  |      src/core/ext/filters/load_reporting/load_reporting_filter.c \
 | 
	
	
		
			
				|  | @@ -3592,7 +3632,7 @@ LIBGRPC_TEST_UTIL_SRC = \
 | 
	
		
			
				|  |  |      src/core/lib/surface/completion_queue.c \
 | 
	
		
			
				|  |  |      src/core/lib/surface/completion_queue_factory.c \
 | 
	
		
			
				|  |  |      src/core/lib/surface/event_string.c \
 | 
	
		
			
				|  |  | -    src/core/lib/surface/lame_client.c \
 | 
	
		
			
				|  |  | +    src/core/lib/surface/lame_client.cc \
 | 
	
		
			
				|  |  |      src/core/lib/surface/metadata_array.c \
 | 
	
		
			
				|  |  |      src/core/lib/surface/server.c \
 | 
	
		
			
				|  |  |      src/core/lib/surface/validate_metadata.c \
 | 
	
	
		
			
				|  | @@ -3820,7 +3860,7 @@ LIBGRPC_UNSECURE_SRC = \
 | 
	
		
			
				|  |  |      src/core/lib/surface/completion_queue.c \
 | 
	
		
			
				|  |  |      src/core/lib/surface/completion_queue_factory.c \
 | 
	
		
			
				|  |  |      src/core/lib/surface/event_string.c \
 | 
	
		
			
				|  |  | -    src/core/lib/surface/lame_client.c \
 | 
	
		
			
				|  |  | +    src/core/lib/surface/lame_client.cc \
 | 
	
		
			
				|  |  |      src/core/lib/surface/metadata_array.c \
 | 
	
		
			
				|  |  |      src/core/lib/surface/server.c \
 | 
	
		
			
				|  |  |      src/core/lib/surface/validate_metadata.c \
 | 
	
	
		
			
				|  | @@ -4216,7 +4256,7 @@ LIBGRPC++_SRC = \
 | 
	
		
			
				|  |  |      src/core/lib/surface/completion_queue.c \
 | 
	
		
			
				|  |  |      src/core/lib/surface/completion_queue_factory.c \
 | 
	
		
			
				|  |  |      src/core/lib/surface/event_string.c \
 | 
	
		
			
				|  |  | -    src/core/lib/surface/lame_client.c \
 | 
	
		
			
				|  |  | +    src/core/lib/surface/lame_client.cc \
 | 
	
		
			
				|  |  |      src/core/lib/surface/metadata_array.c \
 | 
	
		
			
				|  |  |      src/core/lib/surface/server.c \
 | 
	
		
			
				|  |  |      src/core/lib/surface/validate_metadata.c \
 | 
	
	
		
			
				|  | @@ -4549,7 +4589,7 @@ LIBGRPC++_CRONET_SRC = \
 | 
	
		
			
				|  |  |      src/core/lib/surface/completion_queue.c \
 | 
	
		
			
				|  |  |      src/core/lib/surface/completion_queue_factory.c \
 | 
	
		
			
				|  |  |      src/core/lib/surface/event_string.c \
 | 
	
		
			
				|  |  | -    src/core/lib/surface/lame_client.c \
 | 
	
		
			
				|  |  | +    src/core/lib/surface/lame_client.cc \
 | 
	
		
			
				|  |  |      src/core/lib/surface/metadata_array.c \
 | 
	
		
			
				|  |  |      src/core/lib/surface/server.c \
 | 
	
		
			
				|  |  |      src/core/lib/surface/validate_metadata.c \
 | 
	
	
		
			
				|  | @@ -5117,8 +5157,6 @@ PUBLIC_HEADERS_CXX += \
 | 
	
		
			
				|  |  |      include/grpc/impl/codegen/sync_windows.h \
 | 
	
		
			
				|  |  |      include/grpc++/impl/codegen/proto_utils.h \
 | 
	
		
			
				|  |  |      include/grpc++/impl/codegen/config_protobuf.h \
 | 
	
		
			
				|  |  | -    include/grpc++/impl/codegen/thrift_serializer.h \
 | 
	
		
			
				|  |  | -    include/grpc++/impl/codegen/thrift_utils.h \
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  LIBGRPC++_TEST_UTIL_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(LIBGRPC++_TEST_UTIL_SRC))))
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -5310,7 +5348,7 @@ LIBGRPC++_UNSECURE_SRC = \
 | 
	
		
			
				|  |  |      src/core/lib/surface/completion_queue.c \
 | 
	
		
			
				|  |  |      src/core/lib/surface/completion_queue_factory.c \
 | 
	
		
			
				|  |  |      src/core/lib/surface/event_string.c \
 | 
	
		
			
				|  |  | -    src/core/lib/surface/lame_client.c \
 | 
	
		
			
				|  |  | +    src/core/lib/surface/lame_client.cc \
 | 
	
		
			
				|  |  |      src/core/lib/surface/metadata_array.c \
 | 
	
		
			
				|  |  |      src/core/lib/surface/server.c \
 | 
	
		
			
				|  |  |      src/core/lib/surface/validate_metadata.c \
 | 
	
	
		
			
				|  | @@ -12345,6 +12383,38 @@ endif
 | 
	
		
			
				|  |  |  endif
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +SLICE_HASH_TABLE_TEST_SRC = \
 | 
	
		
			
				|  |  | +    test/core/slice/slice_hash_table_test.c \
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +SLICE_HASH_TABLE_TEST_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(SLICE_HASH_TABLE_TEST_SRC))))
 | 
	
		
			
				|  |  | +ifeq ($(NO_SECURE),true)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# You can't build secure targets if you don't have OpenSSL.
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +$(BINDIR)/$(CONFIG)/slice_hash_table_test: openssl_dep_error
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +else
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +$(BINDIR)/$(CONFIG)/slice_hash_table_test: $(SLICE_HASH_TABLE_TEST_OBJS) $(LIBDIR)/$(CONFIG)/libgrpc_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc.a $(LIBDIR)/$(CONFIG)/libgpr_test_util.a $(LIBDIR)/$(CONFIG)/libgpr.a
 | 
	
		
			
				|  |  | +	$(E) "[LD]      Linking $@"
 | 
	
		
			
				|  |  | +	$(Q) mkdir -p `dirname $@`
 | 
	
		
			
				|  |  | +	$(Q) $(LD) $(LDFLAGS) $(SLICE_HASH_TABLE_TEST_OBJS) $(LIBDIR)/$(CONFIG)/libgrpc_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc.a $(LIBDIR)/$(CONFIG)/libgpr_test_util.a $(LIBDIR)/$(CONFIG)/libgpr.a $(LDLIBS) $(LDLIBS_SECURE) -o $(BINDIR)/$(CONFIG)/slice_hash_table_test
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +endif
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +$(OBJDIR)/$(CONFIG)/test/core/slice/slice_hash_table_test.o:  $(LIBDIR)/$(CONFIG)/libgrpc_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc.a $(LIBDIR)/$(CONFIG)/libgpr_test_util.a $(LIBDIR)/$(CONFIG)/libgpr.a
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +deps_slice_hash_table_test: $(SLICE_HASH_TABLE_TEST_OBJS:.o=.dep)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +ifneq ($(NO_SECURE),true)
 | 
	
		
			
				|  |  | +ifneq ($(NO_DEPS),true)
 | 
	
		
			
				|  |  | +-include $(SLICE_HASH_TABLE_TEST_OBJS:.o=.dep)
 | 
	
		
			
				|  |  | +endif
 | 
	
		
			
				|  |  | +endif
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |  SLICE_STRING_HELPERS_TEST_SRC = \
 | 
	
		
			
				|  |  |      test/core/slice/slice_string_helpers_test.c \
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -14193,28 +14263,28 @@ $(BINDIR)/$(CONFIG)/codegen_test_minimal: protobuf_dep_error
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  else
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -$(BINDIR)/$(CONFIG)/codegen_test_minimal: $(PROTOBUF_DEP) $(CODEGEN_TEST_MINIMAL_OBJS)
 | 
	
		
			
				|  |  | +$(BINDIR)/$(CONFIG)/codegen_test_minimal: $(PROTOBUF_DEP) $(CODEGEN_TEST_MINIMAL_OBJS) $(LIBDIR)/$(CONFIG)/libgrpc.a $(LIBDIR)/$(CONFIG)/libgpr.a
 | 
	
		
			
				|  |  |  	$(E) "[LD]      Linking $@"
 | 
	
		
			
				|  |  |  	$(Q) mkdir -p `dirname $@`
 | 
	
		
			
				|  |  | -	$(Q) $(LDXX) $(LDFLAGS) $(CODEGEN_TEST_MINIMAL_OBJS) $(LDLIBSXX) $(LDLIBS_PROTOBUF) $(LDLIBS) $(LDLIBS_SECURE) $(GTEST_LIB) -o $(BINDIR)/$(CONFIG)/codegen_test_minimal
 | 
	
		
			
				|  |  | +	$(Q) $(LDXX) $(LDFLAGS) $(CODEGEN_TEST_MINIMAL_OBJS) $(LIBDIR)/$(CONFIG)/libgrpc.a $(LIBDIR)/$(CONFIG)/libgpr.a $(LDLIBSXX) $(LDLIBS_PROTOBUF) $(LDLIBS) $(LDLIBS_SECURE) $(GTEST_LIB) -o $(BINDIR)/$(CONFIG)/codegen_test_minimal
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  endif
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  endif
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -$(OBJDIR)/$(CONFIG)/src/proto/grpc/testing/control.o: 
 | 
	
		
			
				|  |  | +$(OBJDIR)/$(CONFIG)/src/proto/grpc/testing/control.o:  $(LIBDIR)/$(CONFIG)/libgrpc.a $(LIBDIR)/$(CONFIG)/libgpr.a
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -$(OBJDIR)/$(CONFIG)/src/proto/grpc/testing/messages.o: 
 | 
	
		
			
				|  |  | +$(OBJDIR)/$(CONFIG)/src/proto/grpc/testing/messages.o:  $(LIBDIR)/$(CONFIG)/libgrpc.a $(LIBDIR)/$(CONFIG)/libgpr.a
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -$(OBJDIR)/$(CONFIG)/src/proto/grpc/testing/payloads.o: 
 | 
	
		
			
				|  |  | +$(OBJDIR)/$(CONFIG)/src/proto/grpc/testing/payloads.o:  $(LIBDIR)/$(CONFIG)/libgrpc.a $(LIBDIR)/$(CONFIG)/libgpr.a
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -$(OBJDIR)/$(CONFIG)/src/proto/grpc/testing/services.o: 
 | 
	
		
			
				|  |  | +$(OBJDIR)/$(CONFIG)/src/proto/grpc/testing/services.o:  $(LIBDIR)/$(CONFIG)/libgrpc.a $(LIBDIR)/$(CONFIG)/libgpr.a
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -$(OBJDIR)/$(CONFIG)/src/proto/grpc/testing/stats.o: 
 | 
	
		
			
				|  |  | +$(OBJDIR)/$(CONFIG)/src/proto/grpc/testing/stats.o:  $(LIBDIR)/$(CONFIG)/libgrpc.a $(LIBDIR)/$(CONFIG)/libgpr.a
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -$(OBJDIR)/$(CONFIG)/test/cpp/codegen/codegen_test_minimal.o: 
 | 
	
		
			
				|  |  | +$(OBJDIR)/$(CONFIG)/test/cpp/codegen/codegen_test_minimal.o:  $(LIBDIR)/$(CONFIG)/libgrpc.a $(LIBDIR)/$(CONFIG)/libgpr.a
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -$(OBJDIR)/$(CONFIG)/src/cpp/codegen/codegen_init.o: 
 | 
	
		
			
				|  |  | +$(OBJDIR)/$(CONFIG)/src/cpp/codegen/codegen_init.o:  $(LIBDIR)/$(CONFIG)/libgrpc.a $(LIBDIR)/$(CONFIG)/libgpr.a
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  deps_codegen_test_minimal: $(CODEGEN_TEST_MINIMAL_OBJS:.o=.dep)
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -15334,6 +15404,49 @@ endif
 | 
	
		
			
				|  |  |  endif
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +MEMORY_TEST_SRC = \
 | 
	
		
			
				|  |  | +    test/core/support/memory_test.cc \
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +MEMORY_TEST_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(MEMORY_TEST_SRC))))
 | 
	
		
			
				|  |  | +ifeq ($(NO_SECURE),true)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# You can't build secure targets if you don't have OpenSSL.
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +$(BINDIR)/$(CONFIG)/memory_test: openssl_dep_error
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +else
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +ifeq ($(NO_PROTOBUF),true)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.0.0+.
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +$(BINDIR)/$(CONFIG)/memory_test: protobuf_dep_error
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +else
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +$(BINDIR)/$(CONFIG)/memory_test: $(PROTOBUF_DEP) $(MEMORY_TEST_OBJS) $(LIBDIR)/$(CONFIG)/libgrpc_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc++.a $(LIBDIR)/$(CONFIG)/libgrpc.a $(LIBDIR)/$(CONFIG)/libgpr_test_util.a $(LIBDIR)/$(CONFIG)/libgpr.a
 | 
	
		
			
				|  |  | +	$(E) "[LD]      Linking $@"
 | 
	
		
			
				|  |  | +	$(Q) mkdir -p `dirname $@`
 | 
	
		
			
				|  |  | +	$(Q) $(LDXX) $(LDFLAGS) $(MEMORY_TEST_OBJS) $(LIBDIR)/$(CONFIG)/libgrpc_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc++.a $(LIBDIR)/$(CONFIG)/libgrpc.a $(LIBDIR)/$(CONFIG)/libgpr_test_util.a $(LIBDIR)/$(CONFIG)/libgpr.a $(LDLIBSXX) $(LDLIBS_PROTOBUF) $(LDLIBS) $(LDLIBS_SECURE) $(GTEST_LIB) -o $(BINDIR)/$(CONFIG)/memory_test
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +endif
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +endif
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +$(OBJDIR)/$(CONFIG)/test/core/support/memory_test.o:  $(LIBDIR)/$(CONFIG)/libgrpc_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc++.a $(LIBDIR)/$(CONFIG)/libgrpc.a $(LIBDIR)/$(CONFIG)/libgpr_test_util.a $(LIBDIR)/$(CONFIG)/libgpr.a
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +deps_memory_test: $(MEMORY_TEST_OBJS:.o=.dep)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +ifneq ($(NO_SECURE),true)
 | 
	
		
			
				|  |  | +ifneq ($(NO_DEPS),true)
 | 
	
		
			
				|  |  | +-include $(MEMORY_TEST_OBJS:.o=.dep)
 | 
	
		
			
				|  |  | +endif
 | 
	
		
			
				|  |  | +endif
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |  METRICS_CLIENT_SRC = \
 | 
	
		
			
				|  |  |      $(GENDIR)/src/proto/grpc/testing/metrics.pb.cc $(GENDIR)/src/proto/grpc/testing/metrics.grpc.pb.cc \
 | 
	
		
			
				|  |  |      test/cpp/interop/metrics_client.cc \
 | 
	
	
		
			
				|  | @@ -19477,6 +19590,7 @@ src/core/plugin_registry/grpc_plugin_registry.c: $(OPENSSL_DEP)
 | 
	
		
			
				|  |  |  src/core/tsi/fake_transport_security.c: $(OPENSSL_DEP)
 | 
	
		
			
				|  |  |  src/core/tsi/ssl_transport_security.c: $(OPENSSL_DEP)
 | 
	
		
			
				|  |  |  src/core/tsi/transport_security.c: $(OPENSSL_DEP)
 | 
	
		
			
				|  |  | +src/core/tsi/transport_security_adapter.c: $(OPENSSL_DEP)
 | 
	
		
			
				|  |  |  src/cpp/client/cronet_credentials.cc: $(OPENSSL_DEP)
 | 
	
		
			
				|  |  |  src/cpp/client/secure_credentials.cc: $(OPENSSL_DEP)
 | 
	
		
			
				|  |  |  src/cpp/common/auth_property_iterator.cc: $(OPENSSL_DEP)
 |