X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ian/git?p=subdirmk.git;a=blobdiff_plain;f=generate;h=747bb0cb002d70ee3c7e3635db0504bdc15ea389;hp=dd6df29451ba1327f63055f57945c007a73aa566;hb=39ef3a6488f5e1a6db1dc6531768af2ad0cc2deb;hpb=ad2d261d58a7718898ef7146d37b9c4b8e9083ca diff --git a/generate b/generate index dd6df29..747bb0c 100755 --- a/generate +++ b/generate @@ -147,21 +147,28 @@ sub process_input_mk ($$$$$$$$$) { $pfxmap{$_} = $srcdirmap{$_}.'/' foreach keys %srcdirmap; while (<$input>) { - if (s#^\s*$esc\:##) { + if (s#^\s*$esc\:changequote\s+(\S+)\s+$##) { + $$esclitr = $1; + $set_esc->(); + next; + } elsif (s#^\s*$esc\:(?=(-?)include)##) { $buffering_output=''; + } elsif (m#^\s*$esc\:([a-z][-0-9a-z_]*)#) { + die "unknown directive $1"; + } elsif (s{^\s*${esc}TARGETS(?:_([0-9a-zA-Z_]+))?(?=\W)}{}) { + my $t = $1 // 'all'; + o target_varname($var_prefix, $t); + $targets->{$t} //= [ ]; } for (;;) { unless (s{^(.*?)$esc}{}) { o $_; last; } o $1; if (s{^\\$esc}{}) { o "$$esclitr" } elsif (s{^\\\$}{}) { o '$' } + elsif (s{^\\\s+$}{}) { } elsif (s{^$esc}{}) { o "$$esclitr$$esclitr" } - elsif (s{^TARGETS(?:_([0-9a-zA-Z_]+))?(?=\W)}{}) { - my $t = $1 // 'all'; - o target_varname($var_prefix, $t); - $targets->{$t} //= [ ]; - } elsif (m{^(?=$caps_re)}) { o $var_prefix } + elsif (s{^\$([A-Za-z]\w+)}{}) { o "\$(${var_prefix}$1)" } elsif (s{^([~^]?)(?=$lc_re)}{}) { o $pfxmap{$1} } elsif (s{^_}{}) { o $var_prefix } elsif (s{^=}{}) { o $var_prefix_name } @@ -193,11 +200,8 @@ sub process_input_mk ($$$$$$$$$) { $var_prefix, $var_prefix_name, $targets, $subf, $esclitr, $1); o "\n"; - } elsif (m#^changequote\s+(\S+)\s+$#) { - $$esclitr = $1; - $set_esc->(); } else { - die "unknown directive $_ "; + die "internal error buffering directive $_ "; } } }