X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=subdirmk%2Fregen.mk.in;h=5f24b08fd4e504cc50019a276df7850abb9b9dbf;hb=24eb6b672f1095d5b362b6615f22c17f1136274a;hp=948ef4e0791eccde5ab19c84215d20e5cc19a6a9;hpb=9bad147b1a52bbef3021fb3f9100b4fa52d0dce6;p=secnet.git diff --git a/subdirmk/regen.mk.in b/subdirmk/regen.mk.in index 948ef4e..5f24b08 100644 --- a/subdirmk/regen.mk.in +++ b/subdirmk/regen.mk.in @@ -3,12 +3,26 @@ # Copyright 2019 Ian Jackson # SPDX-License-Identifier: LGPL-2.0-or-later +# Usage: +# include subdirmk/regen.mk +# (probably in toplevel Subdir.sd.mk) +# +# Arranges that config.status is automatically rerun to update +# makefiles from templates, whenever a template *.sd.mk or *.mk.in is +# edited; and that autoconf is rerun if configure's inputs are edited. +# +# If you add includes to configure.ac, add them to CONFIGURE_ACS. +# +# Also provides a `realclean::' target at the toplevel which deletes +# the autoconf output. This may be made into a recursive target +# by mentioning &TARGETS_realclean in appropriate .sd.mk. + CONFIGURE ?= configure -CONFIGURE_AC ?= $(CONFIGURE).ac -CONFIG_STATUS ?= config.status +CONFIGURE_AC ?= $(CONFIGURE).ac +CONFIG_STATUS ?= config.status -CONFIGURE_ACS += $(CONFIGURE_AC) -CONFIGURE_ACS += subdirmk/subdirmk.ac +CONFIGURE_ACS += $(CONFIGURE_AC) +CONFIGURE_ACS += subdirmk/subdirmk.ac $(top_srcdir)/$(CONFIGURE): $(addprefix $(top_srcdir)/,$(CONFIGURE_ACS)) cd $(top_srcdir) && autoconf @@ -16,23 +30,24 @@ $(top_srcdir)/$(CONFIGURE): $(addprefix $(top_srcdir)/,$(CONFIGURE_ACS)) $(CONFIG_STATUS): $(top_srcdir)/$(CONFIGURE) ./$(CONFIG_STATUS) --recheck -MAKEFILE_TEMPLATES += $(top_srcdir)/Perdir.sd.mk +# Normally, generate will add all the inputs to MAKEFILE_TEMPLATES. MAKEFILE_TEMPLATES += $(addprefix $(top_srcdir)/, $(addsuffix .in, \ @_SUBDIRMK_MAKEFILES@ \ )) -main.mk $(MAKEFILES): .makefiles.stamp ; -.makefiles.stamp: \ +main.mk $(SUBDIRMK_MAKEFILES) $(CONFIG_STATUS_OUTPUTS): .makefiles.stamp + @: +.makefiles.stamp: \ $(top_srcdir)/subdirmk/generate \ $(CONFIG_STATUS) \ $(MAKEFILE_TEMPLATES) # This filtering arranges that we can often run config.status to # generate only particular output files. We look for *inputs* that # have changed. If the only inputs that have changed are ones that we -# know affect only one output (Subdir.mk.in and regen.mk.in), we pass +# know affect only one output (Subdir.sd.mk and *.mk.in), we pass # config.status the corresponding output file names. Otherwise we # pass nothing and config.status does them all. We need to mention -# regen.mk.in twice because if $(top_srcdir) is `.', make elides the +# Subdir.sd.mk twice because if $(top_srcdir) is `.', make elides the # directory part from $?. ./$(CONFIG_STATUS) $(if \ $(filter-out Subdir.sd.mk %/Subdir.sd.mk \ @@ -45,7 +60,7 @@ main.mk $(MAKEFILES): .makefiles.stamp ; realclean:: clean $(RM) config.status config.log - $(RM) main.mk subdirmk/regen.mk $(MAKEFILES) - $(RM) $(addsuffix Makefile,$(dir $(MAKEFILES))) + $(RM) main.mk $(SUBDIRMK_MAKEFILES) @_SUBDIRMK_MAKEFILES@ + $(RM) $(addsuffix Makefile,$(dir $(SUBDIRMK_MAKEFILES))) -include $(ALL_DEPFILES)