X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ian/git?a=blobdiff_plain;f=subdirmk%2Fregen.mk.in;h=bc05e722be1a836c525b3cc40c8ae0afb8bb512d;hb=f319c240efe81120440881b0fc53adc006eec535;hp=0e8bb6a3245ddc82e8508a7119848c813da4e6da;hpb=8d746a1d7b875ae2118247d08e944f2fd7700e8a;p=subdirmk.git diff --git a/subdirmk/regen.mk.in b/subdirmk/regen.mk.in index 0e8bb6a..bc05e72 100644 --- a/subdirmk/regen.mk.in +++ b/subdirmk/regen.mk.in @@ -2,16 +2,45 @@ CONFIGURE ?= configure CONFIGURE_AC ?= $(CONFIGURE).ac CONFIG_STATUS ?= config.status -SUBDIRMK ?= subdirmk -&^/$(CONFIGURE): &^/$(CONFIGURE_AC) - cd &^ && autoconf +CONFIGURE_ACS += $(CONFIGURE_AC) +CONFIGURE_ACS += subdirmk/subdirmk.ac -$(CONFIG_STATUS): &^/$(CONFIGURE) +$(top_srcdir)/$(CONFIGURE): $(addprefix $(top_srcdir)/,$(CONFIGURE_ACS)) + cd $(top_srcdir) && autoconf + +$(CONFIG_STATUS): $(top_srcdir)/$(CONFIGURE) ./$(CONFIG_STATUS) --recheck -all-subdirs.mk $(MAKFILES): makefiles.phantom -.INTERMEDIATE: makefiles.phantom -makefiles.phantom: $(addprefix &^/,$(addsuffix .in,$(MAKEFILES))) \ - $(CONFIG_STATUS) &^/$(SUBDIRMK)/generate - ./$(CONFIG_STATUS) +MAKEFILES += subdirmk/regen.mk + +MAKEFILE_TEMPLATES += $(top_srcdir)/Perdir.mk.in + +main.mk $(MAKEFILES): .makefiles.stamp ; +.makefiles.stamp: \ + $(top_srcdir)/subdirmk/generate \ + $(CONFIG_STATUS) \ + $(MAKEFILE_TEMPLATES) \ + $(foreach m,$(MAKEFILES),$(top_srcdir)/$(m).in) +# 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 +# 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 +# directory part from $?. + ./$(CONFIG_STATUS) $(if \ + $(filter-out Subdir.mk.in %/Subdir.mk.in \ + subdirmk/regen.mk.in \ + $(top_srcdir)/subdirmk/regen.mk.in \ + , $?),, \ + $(patsubst %.mk.in,%.mk,$(filter %.mk.in,$?))) + touch $@ + +realclean:: clean + $(RM) config.status config.log + $(RM) main.mk subdirmk/regen.mk $(MAKEFILES) + $(RM) $(addsuffix Makefile,$(dir $(MAKEFILES))) + +-include $(ALL_DEPFILES)