|  | @@ -423,6 +423,7 @@ PROTOC_CHECK_CMD = which protoc > /dev/null
 | 
	
		
			
				|  |  |  PROTOC_CHECK_VERSION_CMD = protoc --version | grep -q libprotoc.3
 | 
	
		
			
				|  |  |  DTRACE_CHECK_CMD = which dtrace > /dev/null
 | 
	
		
			
				|  |  |  SYSTEMTAP_HEADERS_CHECK_CMD = $(CC) $(CFLAGS) $(CPPFLAGS) -o $(TMPOUT) test/build/systemtap.c $(LDFLAGS)
 | 
	
		
			
				|  |  | +ZOOKEEPER_CHECK_CMD = $(CC) $(CFLAGS) $(CPPFLAGS) -o $(TMPOUT) test/build/zookeeper.c $(LDFLAGS) -lzookeeper_mt
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  ifndef REQUIRE_CUSTOM_LIBRARIES_$(CONFIG)
 | 
	
		
			
				|  |  |  HAS_SYSTEM_PERFTOOLS = $(shell $(PERFTOOLS_CHECK_CMD) 2> /dev/null && echo true || echo false)
 | 
	
	
		
			
				|  | @@ -463,6 +464,8 @@ HAS_SYSTEMTAP = true
 | 
	
		
			
				|  |  |  endif
 | 
	
		
			
				|  |  |  endif
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +HAS_ZOOKEEPER = $(shell $(ZOOKEEPER_CHECK_CMD) 2> /dev/null && echo true || echo false)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |  ifeq ($(wildcard third_party/openssl/ssl/ssl.h),)
 | 
	
		
			
				|  |  |  HAS_EMBEDDED_OPENSSL_ALPN = false
 | 
	
		
			
				|  |  |  else
 | 
	
	
		
			
				|  | @@ -566,6 +569,14 @@ PC_REQUIRES_PRIVATE = $(PC_REQUIRES_GRPC)
 | 
	
		
			
				|  |  |  PC_LIBS_PRIVATE = $(PC_LIBS_GRPC)
 | 
	
		
			
				|  |  |  GRPC_UNSECURE_PC_FILE := $(PC_TEMPLATE)
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +# gprc_zookeeper .pc file
 | 
	
		
			
				|  |  | +PC_NAME = gRPC zookeeper
 | 
	
		
			
				|  |  | +PC_DESCRIPTION = gRPC's zookeeper plugin
 | 
	
		
			
				|  |  | +PC_CFLAGS =
 | 
	
		
			
				|  |  | +PC_REQUIRES_PRIVATE =
 | 
	
		
			
				|  |  | +PC_LIBS_PRIVATE = -lzookeeper_mt
 | 
	
		
			
				|  |  | +GRPC_ZOOKEEPER_PC_FILE := $(PC_TEMPLATE)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |  PROTOBUF_PKG_CONFIG = false
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  PC_REQUIRES_GRPCXX =
 | 
	
	
		
			
				|  | @@ -755,6 +766,7 @@ run_dep_checks:
 | 
	
		
			
				|  |  |  	$(PERFTOOLS_CHECK_CMD) || true
 | 
	
		
			
				|  |  |  	$(PROTOBUF_CHECK_CMD) || true
 | 
	
		
			
				|  |  |  	$(PROTOC_CHECK_VERSION_CMD) || true
 | 
	
		
			
				|  |  | +	$(ZOOKEEPER_CHECK_CMD) || true
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  $(LIBDIR)/$(CONFIG)/zlib/libz.a:
 | 
	
		
			
				|  |  |  	$(E) "[MAKE]    Building zlib"
 | 
	
	
		
			
				|  | @@ -815,10 +827,11 @@ static: static_c static_cxx
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  static_c: pc_c pc_c_unsecure \
 | 
	
		
			
				|  |  |  % for lib in libs:
 | 
	
		
			
				|  |  | -% if lib.build == 'all' and lib.language == 'c':
 | 
	
		
			
				|  |  | +% if lib.build == 'all' and lib.language == 'c' and not lib.get('external_deps', None):
 | 
	
		
			
				|  |  |   $(LIBDIR)/$(CONFIG)/lib${lib.name}.a\
 | 
	
		
			
				|  |  |  % endif
 | 
	
		
			
				|  |  |  % endfor
 | 
	
		
			
				|  |  | + static_zookeeper_libs
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  static_cxx: pc_cxx pc_cxx_unsecure pc_gpr\
 | 
	
	
		
			
				|  | @@ -833,11 +846,11 @@ shared: shared_c shared_cxx
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  shared_c: pc_c pc_c_unsecure pc_gpr\
 | 
	
		
			
				|  |  |  % for lib in libs:
 | 
	
		
			
				|  |  | -% if lib.build == 'all' and lib.language == 'c':
 | 
	
		
			
				|  |  | +% if lib.build == 'all' and lib.language == 'c' and not lib.get('external_deps', None):
 | 
	
		
			
				|  |  |   $(LIBDIR)/$(CONFIG)/lib${lib.name}.$(SHARED_EXT)\
 | 
	
		
			
				|  |  |  % endif
 | 
	
		
			
				|  |  |  % endfor
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | + shared_zookeeper_libs
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  shared_cxx: pc_cxx pc_cxx_unsecure \
 | 
	
		
			
				|  |  |  % for lib in libs:
 | 
	
	
		
			
				|  | @@ -854,6 +867,29 @@ shared_csharp: shared_c \
 | 
	
		
			
				|  |  |  % endif
 | 
	
		
			
				|  |  |  % endfor
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +ifeq ($(HAS_ZOOKEEPER),true)
 | 
	
		
			
				|  |  | +static_zookeeper_libs:\
 | 
	
		
			
				|  |  | +% for lib in libs:
 | 
	
		
			
				|  |  | +% if lib.build == 'all' and lib.language == 'c' and 'zookeeper' in lib.get('external_deps', []):
 | 
	
		
			
				|  |  | + $(LIBDIR)/$(CONFIG)/lib${lib.name}.a\
 | 
	
		
			
				|  |  | +% endif
 | 
	
		
			
				|  |  | +% endfor
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +shared_zookeeper_libs:\
 | 
	
		
			
				|  |  | +% for lib in libs:
 | 
	
		
			
				|  |  | +% if lib.build == 'all' and lib.language == 'c' and 'zookeeper' in lib.get('external_deps', []):
 | 
	
		
			
				|  |  | + $(LIBDIR)/$(CONFIG)/lib${lib.name}.$(SHARED_EXT)\
 | 
	
		
			
				|  |  | +% endif
 | 
	
		
			
				|  |  | +% endfor
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +else
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +static_zookeeper_libs:
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +shared_zookeeper_libs:
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +endif
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |  grpc_csharp_ext: shared_csharp
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  plugins: $(PROTOC_PLUGINS)
 | 
	
	
		
			
				|  | @@ -1005,24 +1041,53 @@ ifeq ($(CONFIG),opt)
 | 
	
		
			
				|  |  |  % for lib in libs:
 | 
	
		
			
				|  |  |  % if lib.language == "c++":
 | 
	
		
			
				|  |  |  % if lib.build == "all":
 | 
	
		
			
				|  |  | +% if not lib.get('external_deps', None):
 | 
	
		
			
				|  |  |  	$(E) "[STRIP]   Stripping lib${lib.name}.a"
 | 
	
		
			
				|  |  |  	$(Q) $(STRIP) $(LIBDIR)/$(CONFIG)/lib${lib.name}.a
 | 
	
		
			
				|  |  |  % endif
 | 
	
		
			
				|  |  |  % endif
 | 
	
		
			
				|  |  | +% endif
 | 
	
		
			
				|  |  | +% endfor
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +ifeq ($(HAS_ZOOKEEPER),true)
 | 
	
		
			
				|  |  | +% for lib in libs:
 | 
	
		
			
				|  |  | +% if lib.language == "c++":
 | 
	
		
			
				|  |  | +% if lib.build == "all":
 | 
	
		
			
				|  |  | +% if 'zookeeper' in lib.get('external_deps', []):
 | 
	
		
			
				|  |  | +  $(E) "[STRIP]   Stripping lib${lib.name}.a"
 | 
	
		
			
				|  |  | +  $(Q) $(STRIP) $(LIBDIR)/$(CONFIG)/lib${lib.name}.a
 | 
	
		
			
				|  |  | +% endif
 | 
	
		
			
				|  |  | +% endif
 | 
	
		
			
				|  |  | +% endif
 | 
	
		
			
				|  |  |  % endfor
 | 
	
		
			
				|  |  |  endif
 | 
	
		
			
				|  |  | +endif
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  strip-shared_c: shared_c
 | 
	
		
			
				|  |  |  ifeq ($(CONFIG),opt)
 | 
	
		
			
				|  |  |  % for lib in libs:
 | 
	
		
			
				|  |  |  % if lib.language == "c":
 | 
	
		
			
				|  |  |  % if lib.build == "all":
 | 
	
		
			
				|  |  | +% if not lib.get('external_deps', None):
 | 
	
		
			
				|  |  |  	$(E) "[STRIP]   Stripping lib${lib.name}.so"
 | 
	
		
			
				|  |  |  	$(Q) $(STRIP) $(LIBDIR)/$(CONFIG)/lib${lib.name}.$(SHARED_EXT)
 | 
	
		
			
				|  |  |  % endif
 | 
	
		
			
				|  |  |  % endif
 | 
	
		
			
				|  |  | +% endif
 | 
	
		
			
				|  |  | +% endfor
 | 
	
		
			
				|  |  | +ifeq ($(HAS_ZOOKEEPER),true)
 | 
	
		
			
				|  |  | +% for lib in libs:
 | 
	
		
			
				|  |  | +% if lib.language == "c":
 | 
	
		
			
				|  |  | +% if lib.build == "all":
 | 
	
		
			
				|  |  | +% if 'zookeeper' in lib.get('external_deps', []):
 | 
	
		
			
				|  |  | +	$(E) "[STRIP]   Stripping lib${lib.name}.so"
 | 
	
		
			
				|  |  | +	$(Q) $(STRIP) $(LIBDIR)/$(CONFIG)/lib${lib.name}.$(SHARED_EXT)
 | 
	
		
			
				|  |  | +% endif
 | 
	
		
			
				|  |  | +% endif
 | 
	
		
			
				|  |  | +% endif
 | 
	
		
			
				|  |  |  % endfor
 | 
	
		
			
				|  |  |  endif
 | 
	
		
			
				|  |  | +endif
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  strip-shared_cxx: shared_cxx
 | 
	
		
			
				|  |  |  ifeq ($(CONFIG),opt)
 | 
	
	
		
			
				|  | @@ -1063,6 +1128,11 @@ $(LIBDIR)/$(CONFIG)/pkgconfig/grpc_unsecure.pc:
 | 
	
		
			
				|  |  |  	$(Q) mkdir -p $(@D)
 | 
	
		
			
				|  |  |  	$(Q) echo -e "$(GRPC_UNSECURE_PC_FILE)" >$@
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +$(LIBDIR)/$(CONFIG)/pkgconfig/grpc_zookeeper.pc:
 | 
	
		
			
				|  |  | +	$(E) "[MAKE]    Generating $@"
 | 
	
		
			
				|  |  | +	$(Q) mkdir -p $(@D)
 | 
	
		
			
				|  |  | +	$(Q) echo -e "$(GRPC_ZOOKEEPER_PC_FILE)" >$@
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |  $(LIBDIR)/$(CONFIG)/pkgconfig/grpc++.pc:
 | 
	
		
			
				|  |  |  	$(E) "[MAKE]    Generating $@"
 | 
	
		
			
				|  |  |  	$(Q) mkdir -p $(@D)
 | 
	
	
		
			
				|  | @@ -1151,12 +1221,27 @@ install-static_c: static_c strip-static_c install-pkg-config_c
 | 
	
		
			
				|  |  |  % for lib in libs:
 | 
	
		
			
				|  |  |  % if lib.language == "c":
 | 
	
		
			
				|  |  |  % if lib.build == "all":
 | 
	
		
			
				|  |  | +% if not lib.get('external_deps', None):
 | 
	
		
			
				|  |  | +	$(E) "[INSTALL] Installing lib${lib.name}.a"
 | 
	
		
			
				|  |  | +	$(Q) $(INSTALL) -d $(prefix)/lib
 | 
	
		
			
				|  |  | +	$(Q) $(INSTALL) $(LIBDIR)/$(CONFIG)/lib${lib.name}.a $(prefix)/lib/lib${lib.name}.a
 | 
	
		
			
				|  |  | +% endif
 | 
	
		
			
				|  |  | +% endif
 | 
	
		
			
				|  |  | +% endif
 | 
	
		
			
				|  |  | +% endfor
 | 
	
		
			
				|  |  | +ifeq ($(HAS_ZOOKEEPER),true)
 | 
	
		
			
				|  |  | +% for lib in libs:
 | 
	
		
			
				|  |  | +% if lib.language == "c":
 | 
	
		
			
				|  |  | +% if lib.build == "all":
 | 
	
		
			
				|  |  | +% if 'zookeeper' in lib.get('external_deps', []):
 | 
	
		
			
				|  |  |  	$(E) "[INSTALL] Installing lib${lib.name}.a"
 | 
	
		
			
				|  |  |  	$(Q) $(INSTALL) -d $(prefix)/lib
 | 
	
		
			
				|  |  |  	$(Q) $(INSTALL) $(LIBDIR)/$(CONFIG)/lib${lib.name}.a $(prefix)/lib/lib${lib.name}.a
 | 
	
		
			
				|  |  |  % endif
 | 
	
		
			
				|  |  |  % endif
 | 
	
		
			
				|  |  | +% endif
 | 
	
		
			
				|  |  |  % endfor
 | 
	
		
			
				|  |  | +endif
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  install-static_cxx: static_cxx strip-static_cxx install-pkg-config_cxx
 | 
	
		
			
				|  |  |  % for lib in libs:
 | 
	
	
		
			
				|  | @@ -1173,6 +1258,30 @@ install-static_cxx: static_cxx strip-static_cxx install-pkg-config_cxx
 | 
	
		
			
				|  |  |  % for lib in libs:
 | 
	
		
			
				|  |  |  % if lib.language == lang_filter:
 | 
	
		
			
				|  |  |  % if lib.build == "all":
 | 
	
		
			
				|  |  | +% if not lib.get('external_deps', None):
 | 
	
		
			
				|  |  | +ifeq ($(SYSTEM),MINGW32)
 | 
	
		
			
				|  |  | +	$(E) "[INSTALL] Installing ${lib.name}.$(SHARED_EXT)"
 | 
	
		
			
				|  |  | +	$(Q) $(INSTALL) -d $(prefix)/lib
 | 
	
		
			
				|  |  | +	$(Q) $(INSTALL) $(LIBDIR)/$(CONFIG)/${lib.name}.$(SHARED_EXT) $(prefix)/lib/${lib.name}.$(SHARED_EXT)
 | 
	
		
			
				|  |  | +	$(Q) $(INSTALL) $(LIBDIR)/$(CONFIG)/lib${lib.name}-imp.a $(prefix)/lib/lib${lib.name}-imp.a
 | 
	
		
			
				|  |  | +else
 | 
	
		
			
				|  |  | +	$(E) "[INSTALL] Installing lib${lib.name}.$(SHARED_EXT)"
 | 
	
		
			
				|  |  | +	$(Q) $(INSTALL) -d $(prefix)/lib
 | 
	
		
			
				|  |  | +	$(Q) $(INSTALL) $(LIBDIR)/$(CONFIG)/lib${lib.name}.$(SHARED_EXT) $(prefix)/lib/lib${lib.name}.$(SHARED_EXT)
 | 
	
		
			
				|  |  | +ifneq ($(SYSTEM),Darwin)
 | 
	
		
			
				|  |  | +	$(Q) ln -sf lib${lib.name}.$(SHARED_EXT) $(prefix)/lib/lib${lib.name}.so.${settings.version.major}
 | 
	
		
			
				|  |  | +	$(Q) ln -sf lib${lib.name}.$(SHARED_EXT) $(prefix)/lib/lib${lib.name}.so
 | 
	
		
			
				|  |  | +endif
 | 
	
		
			
				|  |  | +endif
 | 
	
		
			
				|  |  | +% endif
 | 
	
		
			
				|  |  | +% endif
 | 
	
		
			
				|  |  | +% endif
 | 
	
		
			
				|  |  | +% endfor
 | 
	
		
			
				|  |  | +ifeq ($(HAS_ZOOKEEPER),true)
 | 
	
		
			
				|  |  | +% for lib in libs:
 | 
	
		
			
				|  |  | +% if lib.language == lang_filter:
 | 
	
		
			
				|  |  | +% if lib.build == "all":
 | 
	
		
			
				|  |  | +% if 'zookeeper' in lib.get('external_deps', []):
 | 
	
		
			
				|  |  |  ifeq ($(SYSTEM),MINGW32)
 | 
	
		
			
				|  |  |  	$(E) "[INSTALL] Installing ${lib.name}.$(SHARED_EXT)"
 | 
	
		
			
				|  |  |  	$(Q) $(INSTALL) -d $(prefix)/lib
 | 
	
	
		
			
				|  | @@ -1189,7 +1298,9 @@ endif
 | 
	
		
			
				|  |  |  endif
 | 
	
		
			
				|  |  |  % endif
 | 
	
		
			
				|  |  |  % endif
 | 
	
		
			
				|  |  | +% endif
 | 
	
		
			
				|  |  |  % endfor
 | 
	
		
			
				|  |  | +endif
 | 
	
		
			
				|  |  |  ifneq ($(SYSTEM),MINGW32)
 | 
	
		
			
				|  |  |  ifneq ($(SYSTEM),Darwin)
 | 
	
		
			
				|  |  |  	$(Q) ldconfig || true
 | 
	
	
		
			
				|  | @@ -1225,6 +1336,7 @@ install-pkg-config_c: pc_gpr pc_c pc_c_unsecure
 | 
	
		
			
				|  |  |  	$(Q) $(INSTALL) $(LIBDIR)/$(CONFIG)/pkgconfig/gpr.pc $(prefix)/lib/pkgconfig/gpr.pc
 | 
	
		
			
				|  |  |  	$(Q) $(INSTALL) $(LIBDIR)/$(CONFIG)/pkgconfig/grpc.pc $(prefix)/lib/pkgconfig/grpc.pc
 | 
	
		
			
				|  |  |  	$(Q) $(INSTALL) $(LIBDIR)/$(CONFIG)/pkgconfig/grpc_unsecure.pc $(prefix)/lib/pkgconfig/grpc_unsecure.pc
 | 
	
		
			
				|  |  | +	$(Q) $(INSTALL) $(LIBDIR)/$(CONFIG)/pkgconfig/grpc_zookeeper.pc $(prefix)/lib/pkgconfig/grpc_zookeeper.pc
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  install-pkg-config_cxx: pc_cxx pc_cxx_unsecure
 | 
	
		
			
				|  |  |  	$(E) "[INSTALL] Installing C++ pkg-config files"
 | 
	
	
		
			
				|  | @@ -1414,6 +1526,9 @@ endif
 | 
	
		
			
				|  |  |      for src in lib.src:
 | 
	
		
			
				|  |  |        sources_that_don_t_need_openssl.add(src)
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +  if 'zookeeper' in lib.get('external_deps', []):
 | 
	
		
			
				|  |  | +    libs = libs + ' -lzookeeper_mt'
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |    if lib.get('secure', 'check') == 'yes' or lib.get('secure', 'check') == 'check':
 | 
	
		
			
				|  |  |      lib_deps = lib_deps + ' $(OPENSSL_DEP)'
 | 
	
		
			
				|  |  |      mingw_lib_deps = mingw_lib_deps + ' $(OPENSSL_DEP)'
 |