|  | @@ -1126,6 +1126,7 @@ cxx_slice_test: $(BINDIR)/$(CONFIG)/cxx_slice_test
 | 
	
		
			
				|  |  |  cxx_string_ref_test: $(BINDIR)/$(CONFIG)/cxx_string_ref_test
 | 
	
		
			
				|  |  |  cxx_time_test: $(BINDIR)/$(CONFIG)/cxx_time_test
 | 
	
		
			
				|  |  |  end2end_test: $(BINDIR)/$(CONFIG)/end2end_test
 | 
	
		
			
				|  |  | +error_details_test: $(BINDIR)/$(CONFIG)/error_details_test
 | 
	
		
			
				|  |  |  filter_end2end_test: $(BINDIR)/$(CONFIG)/filter_end2end_test
 | 
	
		
			
				|  |  |  generic_end2end_test: $(BINDIR)/$(CONFIG)/generic_end2end_test
 | 
	
		
			
				|  |  |  golden_file_test: $(BINDIR)/$(CONFIG)/golden_file_test
 | 
	
	
		
			
				|  | @@ -1305,12 +1306,12 @@ static: static_c static_cxx
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  static_c: pc_c pc_c_unsecure cache.mk  $(LIBDIR)/$(CONFIG)/libgpr.a $(LIBDIR)/$(CONFIG)/libgrpc.a $(LIBDIR)/$(CONFIG)/libgrpc_cronet.a $(LIBDIR)/$(CONFIG)/libgrpc_unsecure.a
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -static_cxx: pc_cxx pc_cxx_unsecure cache.mk  $(LIBDIR)/$(CONFIG)/libgrpc++.a $(LIBDIR)/$(CONFIG)/libgrpc++_cronet.a $(LIBDIR)/$(CONFIG)/libgrpc++_reflection.a $(LIBDIR)/$(CONFIG)/libgrpc++_unsecure.a
 | 
	
		
			
				|  |  | +static_cxx: pc_cxx pc_cxx_unsecure cache.mk  $(LIBDIR)/$(CONFIG)/libgrpc++.a $(LIBDIR)/$(CONFIG)/libgrpc++_cronet.a $(LIBDIR)/$(CONFIG)/libgrpc++_error_details.a $(LIBDIR)/$(CONFIG)/libgrpc++_reflection.a $(LIBDIR)/$(CONFIG)/libgrpc++_unsecure.a
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  shared: shared_c shared_cxx
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  shared_c: pc_c pc_c_unsecure cache.mk $(LIBDIR)/$(CONFIG)/$(SHARED_PREFIX)gpr$(SHARED_VERSION_CORE).$(SHARED_EXT_CORE) $(LIBDIR)/$(CONFIG)/$(SHARED_PREFIX)grpc$(SHARED_VERSION_CORE).$(SHARED_EXT_CORE) $(LIBDIR)/$(CONFIG)/$(SHARED_PREFIX)grpc_cronet$(SHARED_VERSION_CORE).$(SHARED_EXT_CORE) $(LIBDIR)/$(CONFIG)/$(SHARED_PREFIX)grpc_unsecure$(SHARED_VERSION_CORE).$(SHARED_EXT_CORE)
 | 
	
		
			
				|  |  | -shared_cxx: pc_cxx pc_cxx_unsecure cache.mk $(LIBDIR)/$(CONFIG)/$(SHARED_PREFIX)grpc++$(SHARED_VERSION_CPP).$(SHARED_EXT_CPP) $(LIBDIR)/$(CONFIG)/$(SHARED_PREFIX)grpc++_cronet$(SHARED_VERSION_CPP).$(SHARED_EXT_CPP) $(LIBDIR)/$(CONFIG)/$(SHARED_PREFIX)grpc++_reflection$(SHARED_VERSION_CPP).$(SHARED_EXT_CPP) $(LIBDIR)/$(CONFIG)/$(SHARED_PREFIX)grpc++_unsecure$(SHARED_VERSION_CPP).$(SHARED_EXT_CPP)
 | 
	
		
			
				|  |  | +shared_cxx: pc_cxx pc_cxx_unsecure cache.mk $(LIBDIR)/$(CONFIG)/$(SHARED_PREFIX)grpc++$(SHARED_VERSION_CPP).$(SHARED_EXT_CPP) $(LIBDIR)/$(CONFIG)/$(SHARED_PREFIX)grpc++_cronet$(SHARED_VERSION_CPP).$(SHARED_EXT_CPP) $(LIBDIR)/$(CONFIG)/$(SHARED_PREFIX)grpc++_error_details$(SHARED_VERSION_CPP).$(SHARED_EXT_CPP) $(LIBDIR)/$(CONFIG)/$(SHARED_PREFIX)grpc++_reflection$(SHARED_VERSION_CPP).$(SHARED_EXT_CPP) $(LIBDIR)/$(CONFIG)/$(SHARED_PREFIX)grpc++_unsecure$(SHARED_VERSION_CPP).$(SHARED_EXT_CPP)
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  shared_csharp: shared_c  $(LIBDIR)/$(CONFIG)/$(SHARED_PREFIX)grpc_csharp_ext$(SHARED_VERSION_CSHARP).$(SHARED_EXT_CSHARP)
 | 
	
		
			
				|  |  |  grpc_csharp_ext: shared_csharp
 | 
	
	
		
			
				|  | @@ -1552,6 +1553,7 @@ buildtests_cxx: privatelibs_cxx \
 | 
	
		
			
				|  |  |    $(BINDIR)/$(CONFIG)/cxx_string_ref_test \
 | 
	
		
			
				|  |  |    $(BINDIR)/$(CONFIG)/cxx_time_test \
 | 
	
		
			
				|  |  |    $(BINDIR)/$(CONFIG)/end2end_test \
 | 
	
		
			
				|  |  | +  $(BINDIR)/$(CONFIG)/error_details_test \
 | 
	
		
			
				|  |  |    $(BINDIR)/$(CONFIG)/filter_end2end_test \
 | 
	
		
			
				|  |  |    $(BINDIR)/$(CONFIG)/generic_end2end_test \
 | 
	
		
			
				|  |  |    $(BINDIR)/$(CONFIG)/golden_file_test \
 | 
	
	
		
			
				|  | @@ -1671,6 +1673,7 @@ buildtests_cxx: privatelibs_cxx \
 | 
	
		
			
				|  |  |    $(BINDIR)/$(CONFIG)/cxx_string_ref_test \
 | 
	
		
			
				|  |  |    $(BINDIR)/$(CONFIG)/cxx_time_test \
 | 
	
		
			
				|  |  |    $(BINDIR)/$(CONFIG)/end2end_test \
 | 
	
		
			
				|  |  | +  $(BINDIR)/$(CONFIG)/error_details_test \
 | 
	
		
			
				|  |  |    $(BINDIR)/$(CONFIG)/filter_end2end_test \
 | 
	
		
			
				|  |  |    $(BINDIR)/$(CONFIG)/generic_end2end_test \
 | 
	
		
			
				|  |  |    $(BINDIR)/$(CONFIG)/golden_file_test \
 | 
	
	
		
			
				|  | @@ -2040,6 +2043,8 @@ test_cxx: buildtests_cxx
 | 
	
		
			
				|  |  |  	$(Q) $(BINDIR)/$(CONFIG)/cxx_time_test || ( echo test cxx_time_test failed ; exit 1 )
 | 
	
		
			
				|  |  |  	$(E) "[RUN]     Testing end2end_test"
 | 
	
		
			
				|  |  |  	$(Q) $(BINDIR)/$(CONFIG)/end2end_test || ( echo test end2end_test failed ; exit 1 )
 | 
	
		
			
				|  |  | +	$(E) "[RUN]     Testing error_details_test"
 | 
	
		
			
				|  |  | +	$(Q) $(BINDIR)/$(CONFIG)/error_details_test || ( echo test error_details_test failed ; exit 1 )
 | 
	
		
			
				|  |  |  	$(E) "[RUN]     Testing filter_end2end_test"
 | 
	
		
			
				|  |  |  	$(Q) $(BINDIR)/$(CONFIG)/filter_end2end_test || ( echo test filter_end2end_test failed ; exit 1 )
 | 
	
		
			
				|  |  |  	$(E) "[RUN]     Testing generic_end2end_test"
 | 
	
	
		
			
				|  | @@ -2144,6 +2149,8 @@ ifeq ($(CONFIG),opt)
 | 
	
		
			
				|  |  |  	$(Q) $(STRIP) $(LIBDIR)/$(CONFIG)/libgrpc++.a
 | 
	
		
			
				|  |  |  	$(E) "[STRIP]   Stripping libgrpc++_cronet.a"
 | 
	
		
			
				|  |  |  	$(Q) $(STRIP) $(LIBDIR)/$(CONFIG)/libgrpc++_cronet.a
 | 
	
		
			
				|  |  | +	$(E) "[STRIP]   Stripping libgrpc++_error_details.a"
 | 
	
		
			
				|  |  | +	$(Q) $(STRIP) $(LIBDIR)/$(CONFIG)/libgrpc++_error_details.a
 | 
	
		
			
				|  |  |  	$(E) "[STRIP]   Stripping libgrpc++_reflection.a"
 | 
	
		
			
				|  |  |  	$(Q) $(STRIP) $(LIBDIR)/$(CONFIG)/libgrpc++_reflection.a
 | 
	
		
			
				|  |  |  	$(E) "[STRIP]   Stripping libgrpc++_unsecure.a"
 | 
	
	
		
			
				|  | @@ -2168,6 +2175,8 @@ ifeq ($(CONFIG),opt)
 | 
	
		
			
				|  |  |  	$(Q) $(STRIP) $(LIBDIR)/$(CONFIG)/$(SHARED_PREFIX)grpc++$(SHARED_VERSION_CPP).$(SHARED_EXT_CPP)
 | 
	
		
			
				|  |  |  	$(E) "[STRIP]   Stripping $(SHARED_PREFIX)grpc++_cronet$(SHARED_VERSION_CPP).$(SHARED_EXT_CPP)"
 | 
	
		
			
				|  |  |  	$(Q) $(STRIP) $(LIBDIR)/$(CONFIG)/$(SHARED_PREFIX)grpc++_cronet$(SHARED_VERSION_CPP).$(SHARED_EXT_CPP)
 | 
	
		
			
				|  |  | +	$(E) "[STRIP]   Stripping $(SHARED_PREFIX)grpc++_error_details$(SHARED_VERSION_CPP).$(SHARED_EXT_CPP)"
 | 
	
		
			
				|  |  | +	$(Q) $(STRIP) $(LIBDIR)/$(CONFIG)/$(SHARED_PREFIX)grpc++_error_details$(SHARED_VERSION_CPP).$(SHARED_EXT_CPP)
 | 
	
		
			
				|  |  |  	$(E) "[STRIP]   Stripping $(SHARED_PREFIX)grpc++_reflection$(SHARED_VERSION_CPP).$(SHARED_EXT_CPP)"
 | 
	
		
			
				|  |  |  	$(Q) $(STRIP) $(LIBDIR)/$(CONFIG)/$(SHARED_PREFIX)grpc++_reflection$(SHARED_VERSION_CPP).$(SHARED_EXT_CPP)
 | 
	
		
			
				|  |  |  	$(E) "[STRIP]   Stripping $(SHARED_PREFIX)grpc++_unsecure$(SHARED_VERSION_CPP).$(SHARED_EXT_CPP)"
 | 
	
	
		
			
				|  | @@ -2249,6 +2258,21 @@ $(GENDIR)/src/proto/grpc/reflection/v1alpha/reflection.grpc.pb.cc: src/proto/grp
 | 
	
		
			
				|  |  |  	$(Q) $(PROTOC) -Ithird_party/protobuf/src -I. --grpc_out=$(GENDIR) --plugin=protoc-gen-grpc=$(PROTOC_PLUGINS_DIR)/grpc_cpp_plugin$(EXECUTABLE_SUFFIX) $<
 | 
	
		
			
				|  |  |  endif
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +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 $@`
 | 
	
		
			
				|  |  | +	$(Q) $(PROTOC) -Ithird_party/protobuf/src -I. --cpp_out=$(GENDIR) $<
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +$(GENDIR)/src/proto/grpc/status/status.grpc.pb.cc: src/proto/grpc/status/status.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) $<
 | 
	
		
			
				|  |  | +endif
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |  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
 | 
	
	
		
			
				|  | @@ -2507,6 +2531,9 @@ install-static_cxx: static_cxx strip-static_cxx install-pkg-config_cxx
 | 
	
		
			
				|  |  |  	$(E) "[INSTALL] Installing libgrpc++_cronet.a"
 | 
	
		
			
				|  |  |  	$(Q) $(INSTALL) -d $(prefix)/lib
 | 
	
		
			
				|  |  |  	$(Q) $(INSTALL) $(LIBDIR)/$(CONFIG)/libgrpc++_cronet.a $(prefix)/lib/libgrpc++_cronet.a
 | 
	
		
			
				|  |  | +	$(E) "[INSTALL] Installing libgrpc++_error_details.a"
 | 
	
		
			
				|  |  | +	$(Q) $(INSTALL) -d $(prefix)/lib
 | 
	
		
			
				|  |  | +	$(Q) $(INSTALL) $(LIBDIR)/$(CONFIG)/libgrpc++_error_details.a $(prefix)/lib/libgrpc++_error_details.a
 | 
	
		
			
				|  |  |  	$(E) "[INSTALL] Installing libgrpc++_reflection.a"
 | 
	
		
			
				|  |  |  	$(Q) $(INSTALL) -d $(prefix)/lib
 | 
	
		
			
				|  |  |  	$(Q) $(INSTALL) $(LIBDIR)/$(CONFIG)/libgrpc++_reflection.a $(prefix)/lib/libgrpc++_reflection.a
 | 
	
	
		
			
				|  | @@ -2578,6 +2605,15 @@ ifeq ($(SYSTEM),MINGW32)
 | 
	
		
			
				|  |  |  else ifneq ($(SYSTEM),Darwin)
 | 
	
		
			
				|  |  |  	$(Q) ln -sf $(SHARED_PREFIX)grpc++_cronet$(SHARED_VERSION_CPP).$(SHARED_EXT_CPP) $(prefix)/lib/libgrpc++_cronet.so.3
 | 
	
		
			
				|  |  |  	$(Q) ln -sf $(SHARED_PREFIX)grpc++_cronet$(SHARED_VERSION_CPP).$(SHARED_EXT_CPP) $(prefix)/lib/libgrpc++_cronet.so
 | 
	
		
			
				|  |  | +endif
 | 
	
		
			
				|  |  | +	$(E) "[INSTALL] Installing $(SHARED_PREFIX)grpc++_error_details$(SHARED_VERSION_CPP).$(SHARED_EXT_CPP)"
 | 
	
		
			
				|  |  | +	$(Q) $(INSTALL) -d $(prefix)/lib
 | 
	
		
			
				|  |  | +	$(Q) $(INSTALL) $(LIBDIR)/$(CONFIG)/$(SHARED_PREFIX)grpc++_error_details$(SHARED_VERSION_CPP).$(SHARED_EXT_CPP) $(prefix)/lib/$(SHARED_PREFIX)grpc++_error_details$(SHARED_VERSION_CPP).$(SHARED_EXT_CPP)
 | 
	
		
			
				|  |  | +ifeq ($(SYSTEM),MINGW32)
 | 
	
		
			
				|  |  | +	$(Q) $(INSTALL) $(LIBDIR)/$(CONFIG)/libgrpc++_error_details$(SHARED_VERSION_CPP)-dll.a $(prefix)/lib/libgrpc++_error_details.a
 | 
	
		
			
				|  |  | +else ifneq ($(SYSTEM),Darwin)
 | 
	
		
			
				|  |  | +	$(Q) ln -sf $(SHARED_PREFIX)grpc++_error_details$(SHARED_VERSION_CPP).$(SHARED_EXT_CPP) $(prefix)/lib/libgrpc++_error_details.so.3
 | 
	
		
			
				|  |  | +	$(Q) ln -sf $(SHARED_PREFIX)grpc++_error_details$(SHARED_VERSION_CPP).$(SHARED_EXT_CPP) $(prefix)/lib/libgrpc++_error_details.so
 | 
	
		
			
				|  |  |  endif
 | 
	
		
			
				|  |  |  	$(E) "[INSTALL] Installing $(SHARED_PREFIX)grpc++_reflection$(SHARED_VERSION_CPP).$(SHARED_EXT_CPP)"
 | 
	
		
			
				|  |  |  	$(Q) $(INSTALL) -d $(prefix)/lib
 | 
	
	
		
			
				|  | @@ -4774,6 +4810,77 @@ endif
 | 
	
		
			
				|  |  |  endif
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +LIBGRPC++_ERROR_DETAILS_SRC = \
 | 
	
		
			
				|  |  | +    $(GENDIR)/src/proto/grpc/status/status.pb.cc $(GENDIR)/src/proto/grpc/status/status.grpc.pb.cc \
 | 
	
		
			
				|  |  | +    src/cpp/util/error_details.cc \
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +PUBLIC_HEADERS_CXX += \
 | 
	
		
			
				|  |  | +    include/grpc++/support/error_details.h \
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +LIBGRPC++_ERROR_DETAILS_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(LIBGRPC++_ERROR_DETAILS_SRC))))
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +ifeq ($(NO_SECURE),true)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# You can't build secure libraries if you don't have OpenSSL.
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +$(LIBDIR)/$(CONFIG)/libgrpc++_error_details.a: openssl_dep_error
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +$(LIBDIR)/$(CONFIG)/$(SHARED_PREFIX)grpc++_error_details$(SHARED_VERSION_CPP).$(SHARED_EXT_CPP): openssl_dep_error
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +else
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +ifeq ($(NO_PROTOBUF),true)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# You can't build a C++ library if you don't have protobuf - a bit overreached, but still okay.
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +$(LIBDIR)/$(CONFIG)/libgrpc++_error_details.a: protobuf_dep_error
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +$(LIBDIR)/$(CONFIG)/$(SHARED_PREFIX)grpc++_error_details$(SHARED_VERSION_CPP).$(SHARED_EXT_CPP): protobuf_dep_error
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +else
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +$(LIBDIR)/$(CONFIG)/libgrpc++_error_details.a: $(ZLIB_DEP) $(OPENSSL_DEP) $(CARES_DEP) $(PROTOBUF_DEP) $(LIBGRPC++_ERROR_DETAILS_OBJS)  $(LIBGPR_OBJS)  $(ZLIB_MERGE_OBJS)  $(CARES_MERGE_OBJS) 
 | 
	
		
			
				|  |  | +	$(E) "[AR]      Creating $@"
 | 
	
		
			
				|  |  | +	$(Q) mkdir -p `dirname $@`
 | 
	
		
			
				|  |  | +	$(Q) rm -f $(LIBDIR)/$(CONFIG)/libgrpc++_error_details.a
 | 
	
		
			
				|  |  | +	$(Q) $(AR) $(AROPTS) $(LIBDIR)/$(CONFIG)/libgrpc++_error_details.a $(LIBGRPC++_ERROR_DETAILS_OBJS)  $(LIBGPR_OBJS)  $(ZLIB_MERGE_OBJS)  $(CARES_MERGE_OBJS) 
 | 
	
		
			
				|  |  | +ifeq ($(SYSTEM),Darwin)
 | 
	
		
			
				|  |  | +	$(Q) ranlib -no_warning_for_no_symbols $(LIBDIR)/$(CONFIG)/libgrpc++_error_details.a
 | 
	
		
			
				|  |  | +endif
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +ifeq ($(SYSTEM),MINGW32)
 | 
	
		
			
				|  |  | +$(LIBDIR)/$(CONFIG)/grpc++_error_details$(SHARED_VERSION_CPP).$(SHARED_EXT_CPP): $(LIBGRPC++_ERROR_DETAILS_OBJS)  $(ZLIB_DEP) $(CARES_DEP) $(PROTOBUF_DEP) $(LIBDIR)/$(CONFIG)/grpc++$(SHARED_VERSION_CPP).$(SHARED_EXT_CPP) $(OPENSSL_DEP)
 | 
	
		
			
				|  |  | +	$(E) "[LD]      Linking $@"
 | 
	
		
			
				|  |  | +	$(Q) mkdir -p `dirname $@`
 | 
	
		
			
				|  |  | +	$(Q) $(LDXX) $(LDFLAGS) -L$(LIBDIR)/$(CONFIG) -shared -Wl,--output-def=$(LIBDIR)/$(CONFIG)/grpc++_error_details$(SHARED_VERSION_CPP).def -Wl,--out-implib=$(LIBDIR)/$(CONFIG)/libgrpc++_error_details$(SHARED_VERSION_CPP)-dll.a -o $(LIBDIR)/$(CONFIG)/grpc++_error_details$(SHARED_VERSION_CPP).$(SHARED_EXT_CPP) $(LIBGRPC++_ERROR_DETAILS_OBJS) $(ZLIB_MERGE_LIBS) $(CARES_MERGE_LIBS) $(LDLIBSXX) $(LDLIBS_PROTOBUF) $(LDLIBS) -lgrpc++$(SHARED_VERSION_CPP)-dll
 | 
	
		
			
				|  |  | +else
 | 
	
		
			
				|  |  | +$(LIBDIR)/$(CONFIG)/libgrpc++_error_details$(SHARED_VERSION_CPP).$(SHARED_EXT_CPP): $(LIBGRPC++_ERROR_DETAILS_OBJS)  $(ZLIB_DEP) $(CARES_DEP) $(PROTOBUF_DEP) $(LIBDIR)/$(CONFIG)/libgrpc++.$(SHARED_EXT_CPP) $(OPENSSL_DEP)
 | 
	
		
			
				|  |  | +	$(E) "[LD]      Linking $@"
 | 
	
		
			
				|  |  | +	$(Q) mkdir -p `dirname $@`
 | 
	
		
			
				|  |  | +ifeq ($(SYSTEM),Darwin)
 | 
	
		
			
				|  |  | +	$(Q) $(LDXX) $(LDFLAGS) -L$(LIBDIR)/$(CONFIG) -install_name $(SHARED_PREFIX)grpc++_error_details$(SHARED_VERSION_CPP).$(SHARED_EXT_CPP) -dynamiclib -o $(LIBDIR)/$(CONFIG)/libgrpc++_error_details$(SHARED_VERSION_CPP).$(SHARED_EXT_CPP) $(LIBGRPC++_ERROR_DETAILS_OBJS) $(ZLIB_MERGE_LIBS) $(CARES_MERGE_LIBS) $(LDLIBSXX) $(LDLIBS_PROTOBUF) $(LDLIBS) -lgrpc++
 | 
	
		
			
				|  |  | +else
 | 
	
		
			
				|  |  | +	$(Q) $(LDXX) $(LDFLAGS) -L$(LIBDIR)/$(CONFIG) -shared -Wl,-soname,libgrpc++_error_details.so.3 -o $(LIBDIR)/$(CONFIG)/libgrpc++_error_details$(SHARED_VERSION_CPP).$(SHARED_EXT_CPP) $(LIBGRPC++_ERROR_DETAILS_OBJS) $(ZLIB_MERGE_LIBS) $(CARES_MERGE_LIBS) $(LDLIBSXX) $(LDLIBS_PROTOBUF) $(LDLIBS) -lgrpc++
 | 
	
		
			
				|  |  | +	$(Q) ln -sf $(SHARED_PREFIX)grpc++_error_details$(SHARED_VERSION_CPP).$(SHARED_EXT_CPP) $(LIBDIR)/$(CONFIG)/libgrpc++_error_details$(SHARED_VERSION_CPP).so.1
 | 
	
		
			
				|  |  | +	$(Q) ln -sf $(SHARED_PREFIX)grpc++_error_details$(SHARED_VERSION_CPP).$(SHARED_EXT_CPP) $(LIBDIR)/$(CONFIG)/libgrpc++_error_details$(SHARED_VERSION_CPP).so
 | 
	
		
			
				|  |  | +endif
 | 
	
		
			
				|  |  | +endif
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +endif
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +endif
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +ifneq ($(NO_SECURE),true)
 | 
	
		
			
				|  |  | +ifneq ($(NO_DEPS),true)
 | 
	
		
			
				|  |  | +-include $(LIBGRPC++_ERROR_DETAILS_OBJS:.o=.dep)
 | 
	
		
			
				|  |  | +endif
 | 
	
		
			
				|  |  | +endif
 | 
	
		
			
				|  |  | +$(OBJDIR)/$(CONFIG)/src/cpp/util/error_details.o: $(GENDIR)/src/proto/grpc/status/status.pb.cc $(GENDIR)/src/proto/grpc/status/status.grpc.pb.cc
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |  LIBGRPC++_PROTO_REFLECTION_DESC_DB_SRC = \
 | 
	
		
			
				|  |  |      test/cpp/util/proto_reflection_descriptor_database.cc \
 | 
	
		
			
				|  |  |      $(GENDIR)/src/proto/grpc/reflection/v1alpha/reflection.pb.cc $(GENDIR)/src/proto/grpc/reflection/v1alpha/reflection.grpc.pb.cc \
 | 
	
	
		
			
				|  | @@ -14323,6 +14430,53 @@ endif
 | 
	
		
			
				|  |  |  endif
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +ERROR_DETAILS_TEST_SRC = \
 | 
	
		
			
				|  |  | +    $(GENDIR)/src/proto/grpc/testing/echo_messages.pb.cc $(GENDIR)/src/proto/grpc/testing/echo_messages.grpc.pb.cc \
 | 
	
		
			
				|  |  | +    test/cpp/util/error_details_test.cc \
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +ERROR_DETAILS_TEST_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(ERROR_DETAILS_TEST_SRC))))
 | 
	
		
			
				|  |  | +ifeq ($(NO_SECURE),true)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# You can't build secure targets if you don't have OpenSSL.
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +$(BINDIR)/$(CONFIG)/error_details_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)/error_details_test: protobuf_dep_error
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +else
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +$(BINDIR)/$(CONFIG)/error_details_test: $(PROTOBUF_DEP) $(ERROR_DETAILS_TEST_OBJS) $(LIBDIR)/$(CONFIG)/libgrpc++_error_details.a $(LIBDIR)/$(CONFIG)/libgrpc++.a
 | 
	
		
			
				|  |  | +	$(E) "[LD]      Linking $@"
 | 
	
		
			
				|  |  | +	$(Q) mkdir -p `dirname $@`
 | 
	
		
			
				|  |  | +	$(Q) $(LDXX) $(LDFLAGS) $(ERROR_DETAILS_TEST_OBJS) $(LIBDIR)/$(CONFIG)/libgrpc++_error_details.a $(LIBDIR)/$(CONFIG)/libgrpc++.a $(LDLIBSXX) $(LDLIBS_PROTOBUF) $(LDLIBS) $(LDLIBS_SECURE) $(GTEST_LIB) -o $(BINDIR)/$(CONFIG)/error_details_test
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +endif
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +endif
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +$(OBJDIR)/$(CONFIG)/src/proto/grpc/testing/echo_messages.o:  $(LIBDIR)/$(CONFIG)/libgrpc++_error_details.a $(LIBDIR)/$(CONFIG)/libgrpc++.a
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +$(OBJDIR)/$(CONFIG)/test/cpp/util/error_details_test.o:  $(LIBDIR)/$(CONFIG)/libgrpc++_error_details.a $(LIBDIR)/$(CONFIG)/libgrpc++.a
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +deps_error_details_test: $(ERROR_DETAILS_TEST_OBJS:.o=.dep)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +ifneq ($(NO_SECURE),true)
 | 
	
		
			
				|  |  | +ifneq ($(NO_DEPS),true)
 | 
	
		
			
				|  |  | +-include $(ERROR_DETAILS_TEST_OBJS:.o=.dep)
 | 
	
		
			
				|  |  | +endif
 | 
	
		
			
				|  |  | +endif
 | 
	
		
			
				|  |  | +$(OBJDIR)/$(CONFIG)/test/cpp/util/error_details_test.o: $(GENDIR)/src/proto/grpc/testing/echo_messages.pb.cc $(GENDIR)/src/proto/grpc/testing/echo_messages.grpc.pb.cc
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |  FILTER_END2END_TEST_SRC = \
 | 
	
		
			
				|  |  |      test/cpp/end2end/filter_end2end_test.cc \
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -19277,6 +19431,7 @@ src/cpp/common/secure_create_auth_context.cc: $(OPENSSL_DEP)
 | 
	
		
			
				|  |  |  src/cpp/ext/proto_server_reflection.cc: $(OPENSSL_DEP)
 | 
	
		
			
				|  |  |  src/cpp/ext/proto_server_reflection_plugin.cc: $(OPENSSL_DEP)
 | 
	
		
			
				|  |  |  src/cpp/server/secure_server_credentials.cc: $(OPENSSL_DEP)
 | 
	
		
			
				|  |  | +src/cpp/util/error_details.cc: $(OPENSSL_DEP)
 | 
	
		
			
				|  |  |  src/csharp/ext/grpc_csharp_ext.c: $(OPENSSL_DEP)
 | 
	
		
			
				|  |  |  test/core/bad_client/bad_client.c: $(OPENSSL_DEP)
 | 
	
		
			
				|  |  |  test/core/bad_ssl/server_common.c: $(OPENSSL_DEP)
 |