chiark / gitweb /
WIP
authorIan Jackson <ijackson@chiark.greenend.org.uk>
Mon, 11 Nov 2019 01:46:10 +0000 (01:46 +0000)
committerIan Jackson <ijackson@chiark.greenend.org.uk>
Mon, 11 Nov 2019 01:46:10 +0000 (01:46 +0000)
Makefile.in
Subdir.mk.in
build-aux/subdirmk-setup
configure.ac

index f7c845b..dcf875d 100644 (file)
@@ -92,19 +92,6 @@ $(call descend-subdirs, $(SUBDIRS))
 ###--------------------------------------------------------------------------
 ### 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.
 
index e29c332..804880f 100644 (file)
@@ -23,3 +23,14 @@ COMPILE              ?= $(CC) -c -o$@ -MD $(DEFS) $(INCLUDES) $(CFLAGS)
 %.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 $@
index 000417f..f781325 100755 (executable)
@@ -16,6 +16,8 @@ die unless @ARGV>=2;
 shift @ARGV;
 ($srcdir, @subdirs) = @ARGV;
 
+s{/+$}{} foreach @subdirs;
+
 our $root = [ '.', [ ] ];
 # each node is [ 'relative subdir name', \@children ]
 
@@ -77,6 +79,7 @@ sub write_makefile ($$) {
     my $cd = $depth ? join('/', ('..',) x $depth) : '.';
     o <<END;
 default: all
+.SUFFIXES:
 %:
        \$(MAKE) -C $cd -f subdirs.mk ${dir_prefix}\$@
 END
index 4557f95..e56fee9 100644 (file)
@@ -36,8 +36,16 @@ m4_define([SUBDIRSMK_SUBDIRS],
 [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'"