chiark / gitweb /
WIP
[subdirmk.git] / build-aux / subdirmk-setup
index e08de6eeebdfd78a78037b171ca52fd1948ce2e0..e6e30e039912fd36f5703982199d3d7cc7cad736 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,8 +79,12 @@ sub write_makefile ($$) {
     my $cd = $depth ? join('/', ('..',) x $depth) : '.';
     o <<END;
 default: all
-%:
+       \@: \$@
+%:     FORCE-ALWAYS-RUN
        \$(MAKE) -C $cd -f subdirs.mk ${dir_prefix}\$@
+Makefile FORCE-ALWAYS-RUN:
+       \@: \$@
+.SUFFIXES:
 END
 }
 
@@ -194,10 +200,11 @@ sub process_tree() {
     foreach my $v (qw(top_srcdir abs_top_srcdir)) {
        o "$v=\@$v@\n";
     }
-    o "include Subdir.mk\n";
+    o "MAKEFILES += Subdir.mk\n";
     foreach my $subdir (@subdirs) {
-       o "include $subdir/Subdir.mk\n";
+       o "MAKEFILES += $subdir/Subdir.mk\n";
     }
+    o "include \$(MAKEFILES)";
 }
 
 build_tree();