From: Ian Jackson Date: Sun, 10 Nov 2019 20:54:28 +0000 (+0000) Subject: WIP X-Git-Tag: subdirmk/0.1~119 X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ian/git?p=subdirmk.git;a=commitdiff_plain;h=e396ca12f4d9e2620f3ba8d1f4252f0cce08ff55 WIP --- diff --git a/build-aux/subdirmk-setup b/build-aux/subdirmk-setup index 616f653..0c451c8 100755 --- a/build-aux/subdirmk-setup +++ b/build-aux/subdirmk-setup @@ -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 < 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"; } }