chiark / gitweb /
WIP
authorIan Jackson <ijackson@chiark.greenend.org.uk>
Sun, 10 Nov 2019 20:54:28 +0000 (20:54 +0000)
committerIan Jackson <ijackson@chiark.greenend.org.uk>
Sun, 10 Nov 2019 20:54:28 +0000 (20:54 +0000)
build-aux/subdirmk-setup

index 616f653..0c451c8 100755 (executable)
@@ -49,12 +49,18 @@ sub close_any_output_file() {
     $writing_output = undef;
 }
 
+sub o {
+    die unless defined $writing_output;
+    print O @_ or die "error writing $writing_output.tmp: $!\n";
+}
+
 sub start_output_file ($) {
     close_any_output_file();
     ($writing_output) = @_;
-    die if $output_files{$writing_output}++;
+    die "$writing_output ?" if $output_files{$writing_output}++;
     my $tmp = "$writing_output.tmp";
     open O, ">", $tmp or die "create $tmp: $!\n";
+    o "# autogenerated - do not edit\n";
 }
 
 sub install_output_files () {
@@ -64,13 +70,9 @@ sub install_output_files () {
     }
 }
 
-sub o {
-    die unless defined $writing_output;
-    print O @_ or die "error writing $writing_output.tmp: $!\n";
-}
-
 sub write_makefile ($$) {
     my ($dir_prefix,$depth) = @_;
+    print STDERR "write_makefile @_\n";
     start_output_file("${dir_prefix}Makefile");
     my $cd = $depth ? join('/', ('..',) x $depth) : '.';
     o <<END;
@@ -84,6 +86,9 @@ sub filter_subdir_mk ($$$$$) {
     my ($dir_prefix, $dir_suffix, $dir_name,
        $var_prefix, $targets) = @_;
 
+    use Data::Dumper;
+    print STDERR "filter @_\n";
+
     my $in = "${srcdir}/${dir_prefix}Subdir.mk.in";
     open I, '<', $in or die "open $in: $!\n";
     my $caps_re = qr{[A-Z][0-9_A-Z]*(?=\W)};
@@ -140,7 +145,10 @@ sub process_subtree ($$);
 sub process_subtree ($$) {
     # => list of descendants (in form SUBDIR/)
     # recursive, children first
-    my ($node, $path);
+    my ($node, $path) = @_;
+
+    use Data::Dumper;
+    print STDERR Dumper(\@_);
 
     my $dir_prefix = join '', map { "$_/" } @$path;
     my $dir_suffix = join '', map { "/$_" } @$path;
@@ -155,7 +163,7 @@ sub process_subtree ($$) {
        my @childpath = (@$path, $child->[0]);
        push @child_subdirs, join '/', @childpath;
        $targets{$_}++ foreach
-           process_subtree($child, [  ]);
+           process_subtree($child, \@childpath);
     }
     start_output_file("${dir_prefix}Subdir.mk.tmp");
 
@@ -185,7 +193,7 @@ sub process_tree() {
     start_output_file("subdirs.mk");
     o "include Subdir.mk\n";
     foreach my $subdir (@subdirs) {
-       o "include $subdir/Subdir.mk";
+       o "include $subdir/Subdir.mk\n";
     }
 }