-include $(ggo_dir)/makefile
+# When in doubt, use brute force (Ken Thompson)
+TOUPPER = \
+$(subst a,A,$(subst b,B,$(subst c,C,$(subst d,D,$(subst e,E,\
+$(subst f,F,$(subst g,G,$(subst h,H,$(subst i,I,$(subst j,J,\
+$(subst k,K,$(subst l,L,$(subst m,M,$(subst n,N,$(subst o,O,\
+$(subst p,P,$(subst q,Q,$(subst r,R,$(subst s,S,$(subst t,T,\
+$(subst u,U,$(subst v,V,$(subst w,W,$(subst x,X,$(subst y,Y,\
+$(subst z,Z,$1))))))))))))))))))))))))))
+
%_command_list.c: %.cmd
@[ -z "$(Q)" ] || echo 'GEN $@'
$(Q) ./command_util.sh c < $< >$@
%_command_list.man: %.cmd
@[ -z "$(Q)" ] || echo 'GEN $@'
$(Q) ./command_util.sh man < $< > $@
+%_completion.h: %.cmd
+ @[ -z "$(Q)" ] || echo 'GEN $@'
+ $(Q) ./command_util.sh compl $(strip $(call TOUPPER,$(*F)))_COMPLETERS \
+ $(strip $(call TOUPPER,$(*F)))_COMMANDS < $< > $@
server_command_lists_man = server_command_list.man afs_command_list.man
man/man1/para_server.1: para_server $(server_command_lists_man) | $(man_dir)
clean2: clean
@[ -z "$(Q)" ] || echo 'CLEAN2'
$(Q) rm -rf man $(object_dir) $(cmdline_dir)
- $(Q) rm -f *_command_list.* $(ggo_generated)
-
+ $(Q) rm -f *_command_list.* *_completion.h $(ggo_generated)
distclean: clean2 test-clean
@[ -z "$(Q)" ] || echo 'DISTCLEAN'
$(Q) rm -f Makefile autoscan.log config.status config.log