X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ian/git?a=blobdiff_plain;f=subdirmk%2Fgenerate;h=55323d2770aec5d0ecfa2a96a132acaeaa1eb7cf;hb=76a1199b6ed4f24d77bbe729868f259f38365ada;hp=7b8727b1988c254968889387fb5c402a8f7965b6;hpb=6e55ff3751f385c20194a313a2e939f2a1af2677;p=subdirmk.git diff --git a/subdirmk/generate b/subdirmk/generate index 7b8727b..55323d2 100755 --- a/subdirmk/generate +++ b/subdirmk/generate @@ -125,6 +125,9 @@ sub process_input_mk ($$$$$$$$) { return; } while (<$input>) { + if (s#^\s*$esc\:##) { + $buffering_output=''; + } for (;;) { unless (s{^(.*?)(\\)?(?=$esc)}{}) { o $_; last; } o $1; @@ -165,6 +168,20 @@ sub process_input_mk ($$$$$$$$) { die "bad escape $$esclitr$_ "; } } + if (defined $buffering_output) { + $_=$buffering_output; + $buffering_output=undef; + if (m#^(-?)include\s+(\S+)\s+$#) { + my $subf = "$srcdir/$2"; + o "MAKEFILE_TEMPLATES += $subf\n"; + process_input_mk($dir_prefix, $dir_suffix, $dir_name, + $var_prefix, $targets, + $subf, $esclitr, $subf); + o "\n"; + } else { + die "unknown directive $_ "; + } + } } $input->error and die "read $f: $!\n"; close $input or die "close $f: $!\n"; @@ -178,12 +195,15 @@ sub filter_subdir_mk ($$$$$) { #print STDERR "filter @_\n"; my $esclit = '&'; - for my $f ("${srcdir}/${dir_prefix}Subdir.mk.in", - "${srcdir}/Perdir.mk.in") { + + my $pi = sub { + my ($f, $enoentok) = @_; process_input_mk($dir_prefix, $dir_suffix, $dir_name, $var_prefix, $targets, - $f, \$esclit, 0); - } + "${srcdir}/$f", \$esclit, $enoentok); + }; + $pi->("${dir_prefix}Subdir.mk.in", 0); + $pi->("Perdir.mk.in", 1); } sub process_subtree ($$);