X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ian/git?a=blobdiff_plain;f=build-aux%2Fsubdirmk-setup;h=e08de6eeebdfd78a78037b171ca52fd1948ce2e0;hb=6bdebd83b99b5078fa224236bec2babd9b6a5f54;hp=257479d32c97d8bba4683a140500ce1b86b6c692;hpb=00f1b5cef62e4eddd176d5de98ae01ccae5bed9c;p=subdirmk.git diff --git a/build-aux/subdirmk-setup b/build-aux/subdirmk-setup index 257479d..e08de6e 100755 --- a/build-aux/subdirmk-setup +++ b/build-aux/subdirmk-setup @@ -72,13 +72,13 @@ sub install_output_files () { sub write_makefile ($$) { my ($dir_prefix,$depth) = @_; - print STDERR "write_makefile @_\n"; + #print STDERR "write_makefile @_\n"; start_output_file("${dir_prefix}Makefile"); my $cd = $depth ? join('/', ('..',) x $depth) : '.'; o <) { + for my $f ($in, "Perdir.mk.in") { + open I, '<', $f or die "open $f: $!\n"; + while () { for (;;) { unless (s{^(.*?)(\\)?(?=$esc)}{}) { o $_; last; } o $1; if ($2) { o $esclit; next; } s{^$esc}{} or die "$_ ?"; if (s{^$esc}{}) { o "$esclit$esclit" } - elsif (s{^TARGETS(?:_[0-9a-zA-Z_]+)?(?=\W)}{}) { - my $t = $2 // 'all'; + elsif (s{^TARGETS(?:_([0-9a-zA-Z_]+))?(?=\W)}{}) { + my $t = $1 // 'all'; o target_varname($var_prefix, $t); $targets->{$t}=1; } - elsif (m{^(?=$caps_re)}) { o "${var_prefix}_" } + elsif (m{^(?=$caps_re)}) { o $var_prefix } elsif (m{^(?=$lc_re)}) { o $dir_prefix } - elsif (s{^_}{}) { o "${var_prefix}_" } + elsif (s{^_}{}) { o $var_prefix } elsif (s{^/}{}) { o $dir_prefix } elsif (s{^=_}{}) { o $var_prefix } elsif (s{^=/}{}) { o $dir_name } elsif (s{^\^}{}) { o "\$(top_srcdir)${dir_suffix}" } elsif (s{^\}}{}) { o "\$(abs_top_srcdir)${dir_suffix}" } - elsif (s{^(?:[ \t]+([~^]))?(?=[ \t]){}}{}) { + elsif (s{^(?:[ \t]+([~^]))?(?=[ \t])}{}) { my $prefix = !$1 ? $dir_prefix : $1 eq '~' ? '$(abs_top_srcdir)'.$dir_suffix : @@ -138,6 +139,8 @@ sub filter_subdir_mk ($$$$$) { die "bad escape $esclit$_ "; } } + } + I->error and die "read $f: $!\n"; } } @@ -147,8 +150,8 @@ sub process_subtree ($$) { # recursive, children first my ($node, $path) = @_; - use Data::Dumper; - print STDERR Dumper(\@_); + #use Data::Dumper; + #print STDERR Dumper(\@_); my $dir_prefix = join '', map { "$_/" } @$path; my $dir_suffix = join '', map { "/$_" } @$path; @@ -170,19 +173,16 @@ sub process_subtree ($$) { filter_subdir_mk($dir_prefix, $dir_suffix, $dir_name, $var_prefix, \%targets); + o "\n"; + my @targets = sort keys %targets; foreach my $target (@targets) { my $target_varname = target_varname($var_prefix, $target); - print O <