###--------------------------------------------------------------------------
### Maintaining the build system.
-$(srcdir)/configure: $(srcdir)/configure.ac
- $(call v-tag,AUTOCONF)cd $(srcdir) && autoconf
-
-config.status: $(srcdir)/configure
- $(call v-tag,CONFIG)./config.status --recheck
-
-Makefile: config.status $(srcdir)/Makefile.in \
- $(foreach d,$(ALL_SUBDIRS), $d/Makefile)
- $(call v-tag,SUBST)./config.status Makefile
-$(foreach d,$(ALL_SUBDIRS), \
- $(eval $d/Makefile: config.status $$(srcdir)/$d/Makefile.in; \
- $$(call v-tag,SUBST)./config.status $$@))
-
###--------------------------------------------------------------------------
### More machinery.
%.o: %.c
$(COMPILE) $<
+&^/configure: &^/configure.ac
+ cd &^ && autoconf
+
+config.status: &^/configure
+ ./config.status --recheck
+
+subdirs.mk: config.status &^/build-aux/subdirmk-setup
+ ./config.status $@
+
+%/Subdir.mk: &^/%/Subdir.mk.in subdirs.mk
+ ./config.status $@
shift @ARGV;
($srcdir, @subdirs) = @ARGV;
+s{/+$}{} foreach @subdirs;
+
our $root = [ '.', [ ] ];
# each node is [ 'relative subdir name', \@children ]
my $cd = $depth ? join('/', ('..',) x $depth) : '.';
o <<END;
default: all
+.SUFFIXES:
%:
\$(MAKE) -C $cd -f subdirs.mk ${dir_prefix}\$@
END
[m4_map_args_w([$1],[_SUBDIRSMK_SUBDIR(],[/)])])dnl
AC_CONFIG_FILES([subdirs.mk:subdirs.mk.tmp Subdir.mk:Subdir.mk.tmp],[],
-[echo 'running subdirmk-setup'
-'$srcdir'/build-aux/subdirmk-setup --srcdir '$srcdir' $subdirsmk_subdirs])
+[
+subdirsmk_need_prep=false
+AS_IF([\$ac_need_defaults],
+[subdirsmk_need_prep=true],[
+AS_CASE([" \$ac_config_targets "],[*" subdirs.mk "*],
+[subdirsmk_need_prep=true])])
+AS_IF([\$subdirsmk_need_prep],[
+ echo 'running subdirmk-setup'
+ '$srcdir'/build-aux/subdirmk-setup --srcdir '$srcdir' $subdirsmk_subdirs
+])])
m4_define([_SUBDIRSMK_SUBDIR],
[subdirsmk_subdirs="$subdirsmk_subdirs '$1'"