|  | @@ -237,16 +237,19 @@ endif
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  LDLIBS_SECURE += $(addprefix -l, $(LIBS_SECURE))
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -ifneq ($(DEP_MISSING),)
 | 
	
		
			
				|  |  | -NO_DEPS = true
 | 
	
		
			
				|  |  | -endif
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -ifneq ($(MAKECMDGOALS),clean)
 | 
	
		
			
				|  |  | +ifeq ($(MAKECMDGOALS),clean)
 | 
	
		
			
				|  |  |  NO_DEPS = true
 | 
	
		
			
				|  |  |  endif
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  .SECONDARY = %.pb.h %.pb.cc
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +PROTOC_PLUGINS=\
 | 
	
		
			
				|  |  | +% for tgt in targets:
 | 
	
		
			
				|  |  | +% if tgt.build == 'protoc':
 | 
	
		
			
				|  |  | + bins/$(CONFIG)/${tgt.name}\
 | 
	
		
			
				|  |  | +% endif
 | 
	
		
			
				|  |  | +% endfor
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |  ifeq ($(DEP_MISSING),)
 | 
	
		
			
				|  |  |  all: static shared\
 | 
	
		
			
				|  |  |  % for tgt in targets:
 | 
	
	
		
			
				|  | @@ -330,7 +333,7 @@ libs/$(CONFIG)/openssl/libssl.a:
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  static: static_c static_cxx
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -static_c: dep_c\
 | 
	
		
			
				|  |  | +static_c: \
 | 
	
		
			
				|  |  |  % for lib in libs:
 | 
	
		
			
				|  |  |  % if lib.build == 'all' and not lib.get('c++', False):
 | 
	
		
			
				|  |  |   libs/$(CONFIG)/lib${lib.name}.a\
 | 
	
	
		
			
				|  | @@ -338,7 +341,7 @@ static_c: dep_c\
 | 
	
		
			
				|  |  |  % endfor
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -static_cxx: dep_cxx\
 | 
	
		
			
				|  |  | +static_cxx: \
 | 
	
		
			
				|  |  |  % for lib in libs:
 | 
	
		
			
				|  |  |  % if lib.build == 'all' and lib.get('c++', False):
 | 
	
		
			
				|  |  |   libs/$(CONFIG)/lib${lib.name}.a\
 | 
	
	
		
			
				|  | @@ -348,7 +351,7 @@ static_cxx: dep_cxx\
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  shared: shared_c shared_cxx
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -shared_c: dep_c\
 | 
	
		
			
				|  |  | +shared_c: \
 | 
	
		
			
				|  |  |  % for lib in libs:
 | 
	
		
			
				|  |  |  % if lib.build == 'all' and not lib.get('c++', False):
 | 
	
		
			
				|  |  |   libs/$(CONFIG)/lib${lib.name}.$(SHARED_EXT)\
 | 
	
	
		
			
				|  | @@ -356,7 +359,7 @@ shared_c: dep_c\
 | 
	
		
			
				|  |  |  % endfor
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -shared_cxx: dep_cxx\
 | 
	
		
			
				|  |  | +shared_cxx: \
 | 
	
		
			
				|  |  |  % for lib in libs:
 | 
	
		
			
				|  |  |  % if lib.build == 'all' and lib.get('c++', False):
 | 
	
		
			
				|  |  |   libs/$(CONFIG)/lib${lib.name}.$(SHARED_EXT)\
 | 
	
	
		
			
				|  | @@ -366,7 +369,7 @@ shared_cxx: dep_cxx\
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  privatelibs: privatelibs_c privatelibs_cxx
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -privatelibs_c: dep_c\
 | 
	
		
			
				|  |  | +privatelibs_c: \
 | 
	
		
			
				|  |  |  % for lib in libs:
 | 
	
		
			
				|  |  |  % if lib.build == 'private' and not lib.get('c++', False):
 | 
	
		
			
				|  |  |   libs/$(CONFIG)/lib${lib.name}.a\
 | 
	
	
		
			
				|  | @@ -374,7 +377,7 @@ privatelibs_c: dep_c\
 | 
	
		
			
				|  |  |  % endfor
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -privatelibs_cxx: dep_cxx\
 | 
	
		
			
				|  |  | +privatelibs_cxx: \
 | 
	
		
			
				|  |  |  % for lib in libs:
 | 
	
		
			
				|  |  |  % if lib.build == 'private' and lib.get('c++', False):
 | 
	
		
			
				|  |  |   libs/$(CONFIG)/lib${lib.name}.a\
 | 
	
	
		
			
				|  | @@ -384,7 +387,7 @@ privatelibs_cxx: dep_cxx\
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  buildtests: buildtests_c buildtests_cxx
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -buildtests_c: bins_dep_c privatelibs_c\
 | 
	
		
			
				|  |  | +buildtests_c: privatelibs_c\
 | 
	
		
			
				|  |  |  % for tgt in targets:
 | 
	
		
			
				|  |  |  % if tgt.build == 'test' and not tgt.get('c++', False):
 | 
	
		
			
				|  |  |   bins/$(CONFIG)/${tgt.name}\
 | 
	
	
		
			
				|  | @@ -392,7 +395,7 @@ buildtests_c: bins_dep_c privatelibs_c\
 | 
	
		
			
				|  |  |  % endfor
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -buildtests_cxx: bins_dep_cxx privatelibs_cxx\
 | 
	
		
			
				|  |  | +buildtests_cxx: privatelibs_cxx\
 | 
	
		
			
				|  |  |  % for tgt in targets:
 | 
	
		
			
				|  |  |  % if tgt.build == 'test' and tgt.get('c++', False):
 | 
	
		
			
				|  |  |   bins/$(CONFIG)/${tgt.name}\
 | 
	
	
		
			
				|  | @@ -428,14 +431,6 @@ tools: privatelibs\
 | 
	
		
			
				|  |  |  % endfor
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -protoc_plugins:\
 | 
	
		
			
				|  |  | -% for tgt in targets:
 | 
	
		
			
				|  |  | -% if tgt.build == 'protoc':
 | 
	
		
			
				|  |  | - bins/$(CONFIG)/${tgt.name}\
 | 
	
		
			
				|  |  | -% endif
 | 
	
		
			
				|  |  | -% endfor
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  |  buildbenchmarks: privatelibs\
 | 
	
		
			
				|  |  |  % for tgt in targets:
 | 
	
		
			
				|  |  |  % if tgt.build == 'benchmark':
 | 
	
	
		
			
				|  | @@ -493,79 +488,32 @@ strip-shared_cxx: shared_cxx
 | 
	
		
			
				|  |  |  % endfor
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  % for p in protos:
 | 
	
		
			
				|  |  | -deps/$(CONFIG)/gens/${p}.pb.dep:
 | 
	
		
			
				|  |  | -	$(Q) mkdir -p `dirname $@`
 | 
	
		
			
				|  |  | -	$(Q) touch $@
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -gens/${p}.pb.cc: ${p}.proto protoc_plugins
 | 
	
		
			
				|  |  | +gens/${p}.pb.cc: ${p}.proto $(PROTOC_PLUGINS)
 | 
	
		
			
				|  |  |  	$(E) "[PROTOC]  Generating protobuf CC file from $<"
 | 
	
		
			
				|  |  |  	$(Q) mkdir -p `dirname $@`
 | 
	
		
			
				|  |  |  	$(Q) $(PROTOC) --cpp_out=gens --grpc_out=gens --plugin=protoc-gen-grpc=bins/$(CONFIG)/cpp_plugin $<
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  % endfor
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -deps/$(CONFIG)/%.dep : %.c
 | 
	
		
			
				|  |  | -	$(E) "[DEP]     Generating dependencies for $<"
 | 
	
		
			
				|  |  | -	$(Q) mkdir -p `dirname $@`
 | 
	
		
			
				|  |  | -	$(Q) $(CC) $(CFLAGS) $(CPPFLAGS_NO_ARCH) -MG -M $< > $@
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -deps/$(CONFIG)/%.dep : %.cc
 | 
	
		
			
				|  |  | -	$(E) "[DEP]     Generating dependencies for $<"
 | 
	
		
			
				|  |  | -	$(Q) mkdir -p `dirname $@`
 | 
	
		
			
				|  |  | -	$(Q) $(CXX) $(CXXFLAGS) $(CPPFLAGS_NO_ARCH) -MG -M $< > $@
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  |  objs/$(CONFIG)/%.o : %.c
 | 
	
		
			
				|  |  |  	$(E) "[C]       Compiling $<"
 | 
	
		
			
				|  |  |  	$(Q) mkdir -p `dirname $@`
 | 
	
		
			
				|  |  | -	$(Q) $(CC) $(CFLAGS) $(CPPFLAGS) -c -o $@ $<
 | 
	
		
			
				|  |  | +	$(Q) $(CC) $(CFLAGS) $(CPPFLAGS) -MMD -MF $(addsuffix .dep, $(basename $@)) -c -o $@ $<
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  objs/$(CONFIG)/%.o : gens/%.pb.cc
 | 
	
		
			
				|  |  |  	$(E) "[CXX]     Compiling $<"
 | 
	
		
			
				|  |  |  	$(Q) mkdir -p `dirname $@`
 | 
	
		
			
				|  |  | -	$(Q) $(CXX) $(CXXFLAGS) $(CPPFLAGS) -c -o $@ $<
 | 
	
		
			
				|  |  | +	$(Q) $(CXX) $(CXXFLAGS) $(CPPFLAGS) -MMD -MF $(addsuffix .dep, $(basename $@)) -c -o $@ $<
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  objs/$(CONFIG)/src/compiler/%.o : src/compiler/%.cc
 | 
	
		
			
				|  |  |  	$(E) "[HOSTCXX] Compiling $<"
 | 
	
		
			
				|  |  |  	$(Q) mkdir -p `dirname $@`
 | 
	
		
			
				|  |  | -	$(Q) $(HOST_CXX) $(HOST_CXXFLAGS) $(HOST_CPPFLAGS) -c -o $@ $<
 | 
	
		
			
				|  |  | +	$(Q) $(HOST_CXX) $(HOST_CXXFLAGS) $(HOST_CPPFLAGS) -MMD -MF $(addsuffix .dep, $(basename $@)) -c -o $@ $<
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  objs/$(CONFIG)/%.o : %.cc
 | 
	
		
			
				|  |  |  	$(E) "[CXX]     Compiling $<"
 | 
	
		
			
				|  |  |  	$(Q) mkdir -p `dirname $@`
 | 
	
		
			
				|  |  | -	$(Q) $(CXX) $(CXXFLAGS) $(CPPFLAGS) -c -o $@ $<
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -dep: dep_c dep_cxx
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -dep_c:\
 | 
	
		
			
				|  |  | -% for lib in libs:
 | 
	
		
			
				|  |  | -% if not lib.get('c++', False):
 | 
	
		
			
				|  |  | - deps_lib${lib.name}\
 | 
	
		
			
				|  |  | -% endif
 | 
	
		
			
				|  |  | -% endfor
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -bins_dep_c:\
 | 
	
		
			
				|  |  | -% for tgt in targets:
 | 
	
		
			
				|  |  | -% if not tgt.get('c++', False):
 | 
	
		
			
				|  |  | - deps_${tgt.name}\
 | 
	
		
			
				|  |  | -% endif
 | 
	
		
			
				|  |  | -% endfor
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -dep_cxx:\
 | 
	
		
			
				|  |  | -% for lib in libs:
 | 
	
		
			
				|  |  | -% if lib.get('c++', False):
 | 
	
		
			
				|  |  | - deps_lib${lib.name}\
 | 
	
		
			
				|  |  | -% endif
 | 
	
		
			
				|  |  | -% endfor
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -bins_dep_cxx:\
 | 
	
		
			
				|  |  | -% for tgt in targets:
 | 
	
		
			
				|  |  | -% if tgt.get('c++', False):
 | 
	
		
			
				|  |  | - deps_${tgt.name}\
 | 
	
		
			
				|  |  | -% endif
 | 
	
		
			
				|  |  | -% endfor
 | 
	
		
			
				|  |  | +	$(Q) $(CXX) $(CXXFLAGS) $(CPPFLAGS) -MMD -MF $(addsuffix .dep, $(basename $@)) -c -o $@ $<
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  install: install_c install_cxx
 | 
	
	
		
			
				|  | @@ -654,15 +602,8 @@ ifneq ($(SYSTEM),Darwin)
 | 
	
		
			
				|  |  |  endif
 | 
	
		
			
				|  |  |  endif
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -clean:\
 | 
	
		
			
				|  |  | -% for lib in libs:
 | 
	
		
			
				|  |  | - clean_lib${lib.name}\
 | 
	
		
			
				|  |  | -% endfor
 | 
	
		
			
				|  |  | -% for tgt in targets:
 | 
	
		
			
				|  |  | - clean_${tgt.name}\
 | 
	
		
			
				|  |  | -% endfor
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -	$(Q) $(RM) -r deps objs libs bins gens
 | 
	
		
			
				|  |  | +clean:
 | 
	
		
			
				|  |  | +	$(Q) $(RM) -rf objs libs bins gens
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  # The various libraries
 | 
	
	
		
			
				|  | @@ -701,7 +642,6 @@ PUBLIC_HEADERS_C += \\
 | 
	
		
			
				|  |  |  % endif
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  LIB${lib.name.upper()}_OBJS = $(addprefix objs/$(CONFIG)/, $(addsuffix .o, $(basename $(LIB${lib.name.upper()}_SRC))))
 | 
	
		
			
				|  |  | -LIB${lib.name.upper()}_DEPS = $(addprefix deps/$(CONFIG)/, $(addsuffix .dep, $(basename $(LIB${lib.name.upper()}_SRC))))
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  % if lib.get('secure', True):
 | 
	
		
			
				|  |  |  ifeq ($(NO_SECURE),true)
 | 
	
	
		
			
				|  | @@ -788,13 +728,11 @@ endif
 | 
	
		
			
				|  |  |  endif
 | 
	
		
			
				|  |  |  % endif
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -deps_lib${lib.name}: $(LIB${lib.name.upper()}_DEPS)
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  |  % if lib.get('secure', True):
 | 
	
		
			
				|  |  |  ifneq ($(NO_SECURE),true)
 | 
	
		
			
				|  |  |  % endif
 | 
	
		
			
				|  |  |  ifneq ($(NO_DEPS),true)
 | 
	
		
			
				|  |  | --include $(LIB${lib.name.upper()}_DEPS)
 | 
	
		
			
				|  |  | +-include $(LIB${lib.name.upper()}_OBJS:.o=.dep)
 | 
	
		
			
				|  |  |  endif
 | 
	
		
			
				|  |  |  % if lib.get('secure', True):
 | 
	
		
			
				|  |  |  endif
 | 
	
	
		
			
				|  | @@ -811,13 +749,6 @@ objs/$(CONFIG)/${os.path.splitext(src)[0]}.o: \
 | 
	
		
			
				|  |  |  % endif
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  % endfor
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -clean_lib${lib.name}:
 | 
	
		
			
				|  |  | -	$(E) "[CLEAN]   Cleaning lib${lib.name} files"
 | 
	
		
			
				|  |  | -	$(Q) $(RM) $(LIB${lib.name.upper()}_OBJS)
 | 
	
		
			
				|  |  | -	$(Q) $(RM) $(LIB${lib.name.upper()}_DEPS)
 | 
	
		
			
				|  |  | -	$(Q) $(RM) libs/$(CONFIG)/lib${lib.name}.a
 | 
	
		
			
				|  |  | -	$(Q) $(RM) libs/$(CONFIG)/lib${lib.name}.$(SHARED_EXT)
 | 
	
		
			
				|  |  |  </%def>
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  <%def name="maketarget(tgt)">
 | 
	
	
		
			
				|  | @@ -829,7 +760,6 @@ ${tgt.name.upper()}_SRC = \\
 | 
	
		
			
				|  |  |  % endfor
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  ${tgt.name.upper()}_OBJS = $(addprefix objs/$(CONFIG)/, $(addsuffix .o, $(basename $(${tgt.name.upper()}_SRC))))
 | 
	
		
			
				|  |  | -${tgt.name.upper()}_DEPS = $(addprefix deps/$(CONFIG)/, $(addsuffix .dep, $(basename $(${tgt.name.upper()}_SRC))))
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  % if tgt.get('secure', True):
 | 
	
		
			
				|  |  |  ifeq ($(NO_SECURE),true)
 | 
	
	
		
			
				|  | @@ -896,23 +826,17 @@ objs/$(CONFIG)/${os.path.splitext(src)[0]}.o: \
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  % endfor
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -deps_${tgt.name}: $(${tgt.name.upper()}_DEPS)
 | 
	
		
			
				|  |  | +deps_${tgt.name}: $(${tgt.name.upper()}_OBJS:.o=.dep)
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  % if tgt.get('secure', True):
 | 
	
		
			
				|  |  |  ifneq ($(NO_SECURE),true)
 | 
	
		
			
				|  |  |  % endif
 | 
	
		
			
				|  |  |  ifneq ($(NO_DEPS),true)
 | 
	
		
			
				|  |  | --include $(${tgt.name.upper()}_DEPS)
 | 
	
		
			
				|  |  | +-include $(${tgt.name.upper()}_OBJS:.o=.dep)
 | 
	
		
			
				|  |  |  endif
 | 
	
		
			
				|  |  |  % if tgt.get('secure', True):
 | 
	
		
			
				|  |  |  endif
 | 
	
		
			
				|  |  |  % endif
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -clean_${tgt.name}:
 | 
	
		
			
				|  |  | -	$(E) "[CLEAN]   Cleaning ${tgt.name} files"
 | 
	
		
			
				|  |  | -	$(Q) $(RM) $(${tgt.name.upper()}_OBJS)
 | 
	
		
			
				|  |  | -	$(Q) $(RM) $(${tgt.name.upper()}_DEPS)
 | 
	
		
			
				|  |  | -	$(Q) $(RM) bins/$(CONFIG)/${tgt.name}
 | 
	
		
			
				|  |  |  </%def>
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  .PHONY: all strip tools \
 | 
	
	
		
			
				|  | @@ -926,12 +850,6 @@ install-static install-static_c install-static_cxx \
 | 
	
		
			
				|  |  |  strip strip-shared strip-static \
 | 
	
		
			
				|  |  |  strip_c strip-shared_c strip-static_c \
 | 
	
		
			
				|  |  |  strip_cxx strip-shared_cxx strip-static_cxx \
 | 
	
		
			
				|  |  | -clean \
 | 
	
		
			
				|  |  | -dep_c dep_cxx bins_dep_c bins_dep_cxx\
 | 
	
		
			
				|  |  | -% for lib in libs:
 | 
	
		
			
				|  |  | - deps_lib${lib.name} clean_lib${lib.name}\
 | 
	
		
			
				|  |  | -% endfor
 | 
	
		
			
				|  |  | -% for tgt in targets:
 | 
	
		
			
				|  |  | - deps_${tgt.name} clean_${tgt.name}\
 | 
	
		
			
				|  |  | -% endfor
 | 
	
		
			
				|  |  | +dep_c dep_cxx bins_dep_c bins_dep_cxx \
 | 
	
		
			
				|  |  | +clean
 | 
	
		
			
				|  |  |  
 |