-module_ggo_opts := --set-version="($(PACKAGE_STRING), $(codename))"
-
-$(cmdline_dir)/%_recv.cmdline.h $(cmdline_dir)/%_recv.cmdline.c: $(ggo_dir)/%_recv.ggo | $(cmdline_dir)
- @[ -z "$(Q)" ] || echo 'GGO $<'
- $(Q) $(GENGETOPT) $(module_ggo_opts) \
- --output-dir=$(cmdline_dir) \
- --set-package=$(subst .ggo,,$(<F)) \
- --arg-struct-name=$(subst .ggo,,$(<F))_args_info \
- --file-name=$(subst .ggo,,$(<F)).cmdline \
- --func-name $(subst .ggo,,$(<F))_cmdline_parser < $<
-
-$(cmdline_dir)/%_filter.cmdline.h $(cmdline_dir)/%_filter.cmdline.c: $(ggo_dir)/%_filter.ggo | $(cmdline_dir)
- @[ -z "$(Q)" ] || echo 'GGO $<'
- $(Q) $(GENGETOPT) $(module_ggo_opts) \
- --output-dir=$(cmdline_dir) \
- --set-package=$(subst .ggo,,$(<F)) \
- --arg-struct-name=$(subst .ggo,,$(<F))_args_info \
- --file-name=$(subst .ggo,,$(<F)).cmdline \
- --func-name=$(subst _filter.ggo,,$(<F))_cmdline_parser < $<
-$(cmdline_dir)/%_write.cmdline.h $(cmdline_dir)/%_write.cmdline.c: $(ggo_dir)/%_write.ggo | $(cmdline_dir)
- @[ -z "$(Q)" ] || echo 'GGO $<'
- $(Q) $(GENGETOPT) -S $(module_ggo_opts) \
- --output-dir=$(cmdline_dir) \
- --set-package=$(subst .ggo,,$(<F)) \
- --arg-struct-name=$(subst .ggo,,$(<F))_args_info \
- --file-name=$(subst .ggo,,$(<F)).cmdline \
- --func-name $(subst _write.ggo,,$(<F))_cmdline_parser < $<
-
-define ggo-opts
-$(if $(filter recv filter write audiod,$(*F)), --no-handle-help) \
-$(if $(filter afh,$(*F)), --unamed-opts=audio_file) \
-$(if $(filter client audioc,$(*F)), --unamed-opts=command) \
---conf-parser \
---output-dir=$(cmdline_dir) \
---no-handle-version \
---file-name=$(*F).cmdline \
---func-name=$(*F)_cmdline_parser \
---arg-struct-name=$(*F)_args_info \
---set-package="para_$(*F)" \
---set-version="$(PACKAGE_VERSION)"
+define ggo_opts
+ --output-dir=$(cmdline_dir) \
+ --set-version="$(GIT_VERSION)" \
+ --arg-struct-name=$(*F)_args_info \
+ --file-name=$(*F).cmdline \
+ --func-name=$(*F)_cmdline_parser \
+ --set-package="para_$(*F)"
endef
+.PRECIOUS: $(cmdline_dir)/%.cmdline.c $(cmdline_dir)/%.cmdline.h $(ggo_dir)/%.ggo
+
$(cmdline_dir)/%.cmdline.h $(cmdline_dir)/%.cmdline.c: $(ggo_dir)/%.ggo | $(cmdline_dir)
@[ -z "$(Q)" ] || echo 'GGO $<'
- $(Q) $(GENGETOPT) $(ggo-opts) < $<
-
-$(ggo_dir)/server.ggo $(ggo_dir)/audiod.ggo: \
- $(m4_ggo_dir)/loglevel.m4 $(m4_ggo_dir)/color.m4 \
- $(m4_ggo_dir)/config_file.m4 $(m4_ggo_dir)/logfile.m4 \
- $(m4_ggo_dir)/daemon.m4 $(m4_ggo_dir)/user.m4 \
- $(m4_ggo_dir)/group.m4 $(m4_ggo_dir)/log_timing.m4 \
- $(m4_ggo_dir)/config_file.m4
+ $(Q) $(GENGETOPT) $(ggo_opts) < $<
+ifeq ($(ggo_descriptions_declared),no)
+ @echo 'extern const char *$(*F)_args_info_description;' >> $(cmdline_dir)/$(*F).cmdline.h
+endif
-$(ggo_dir)/afh.ggo: $(m4_ggo_dir)/loglevel.m4
-$(ggo_dir)/audioc.ggo: \
- $(m4_ggo_dir)/loglevel.m4 \
- $(m4_ggo_dir)/history_file.m4 \
- $(m4_ggo_dir)/complete.m4
-$(ggo_dir)/filter.ggo: $(m4_ggo_dir)/loglevel.m4
-$(ggo_dir)/fsck.ggo: $(m4_ggo_dir)/loglevel.m4
-$(ggo_dir)/gui.ggo: $(m4_ggo_dir)/loglevel.m4 $(m4_ggo_dir)/config_file.m4
-$(ggo_dir)/recv.ggo: $(m4_ggo_dir)/loglevel.m4
-$(ggo_dir)/write.ggo: $(m4_ggo_dir)/loglevel.m4
-$(ggo_dir)/client.ggo: \
- $(m4_ggo_dir)/loglevel.m4 \
- $(m4_ggo_dir)/config_file.m4 \
- $(m4_ggo_dir)/history_file.m4 \
- $(m4_ggo_dir)/complete.m4
+$(m4depdir)/%.m4d: $(m4_ggo_dir)/%.m4 | $(m4depdir)
+ @[ -z "$(Q)" ] || echo 'M4D $<'
+ $(Q) $(M4) -I $(m4_ggo_dir) -s $< \
+ | awk '{if ($$1 ~ /#line/) {gsub(/"/, "", $$3); if ($$3 != "$<") \
+ print "$(ggo_dir)/$(*F).ggo: " $$3}}' | sort | uniq > $@
$(ggo_dir)/%.ggo: $(m4_ggo_dir)/%.m4 $(m4_ggo_dir)/header.m4 | $(ggo_dir)
@[ -z "$(Q)" ] || echo 'M4 $<'
- $(Q) m4 -I $(m4_ggo_dir) $< > $@
+ $(Q) $(M4) -I $(m4_ggo_dir) $< > $@