* Stefano Lattarini wrote on Fri, Jan 07, 2011 at 11:50:51PM CET:
> Subject: [PATCH 2/2] yacc: support variable expansions in *YFLAGS definition.
> 
> This commit fixes automake bug#7800.

OK with nits addressed.

Thanks!
Ralf

> * automake.in (lang_yacc_target_hook): Use 'value_as_list_recursive'
> instead of 'variable_value' to get the value of *YFLAGS variables.
> Related changes.
> ($DASH_D_PATTERN): Removed as obsolete.

Just "Removed." is sufficient.  There is nothing obsolete about this,
this is not public API, and it is merely unneeded now.

> * tests/Makefile.am (XFAIL_TESTS): Remove yflags-var-expand.test.
> * tests/yacc-clean.test: Remove a now-useless workaround.

Strictly speaking, "useless" is not the correct description here.
It is simply not needed any more.  I'd just write "Remove workaround."
but I am aware that I'm far off into picky picky land here already ...

> * NEWS: Update.

> --- a/NEWS
> +++ b/NEWS
> @@ -56,6 +56,12 @@ Bugs fixed in 1.11.0a:
>    - The code for automatic dependency tracking works around a Solaris
>      make bug triggered by sources containing repeated slashes when the
>      `subdir-objects' option was used.
> +
> +  - Automake is now smart enough to detect the presence of the `-d' flag

Let's not brag: s/is now smart enough to detect/now detects/

> +    in the various `*YFLAGS' variables even when their definitions involve
> +    indirections through other variables, such as in:
> +      foo_opts = -d
> +      AM_YFLAGS = $(foo_opts)
>  
>  New in 1.11:
>  

> --- a/automake.in
> +++ b/automake.in
> @@ -208,8 +208,6 @@ my $INCLUDE_PATTERN = ('^include\s+'
>                      . '|(\$\(srcdir\)/' . $PATH_PATTERN . ')'
>                      . '|([^/\$]' . $PATH_PATTERN . '))\s*(#.*)?' . "\$");
>  
> -# Match `-d' as a command-line argument in a string.
> -my $DASH_D_PATTERN = "(^|\\s)-d(\\s|\$)";
>  # Directories installed during 'install-exec' phase.
>  my $EXEC_DIR_PATTERN =
>    '^(?:bin|sbin|libexec|sysconf|localstate|lib|pkglib|.*exec.*)' . "\$";
> @@ -6063,11 +6061,14 @@ sub lang_yacc_target_hook
>  {
>      my ($self, $aggregate, $output, $input, %transform) = @_;
>  
> -    my $flag = $aggregate . "_YFLAGS";
> -    my $flagvar = var $flag;
> -    my $YFLAGSvar = var 'YFLAGS';
> -    if (($flagvar && $flagvar->variable_value =~ /$DASH_D_PATTERN/o)
> -     || ($YFLAGSvar && $YFLAGSvar->variable_value =~ /$DASH_D_PATTERN/o))
> +    my $flagvar = var ($aggregate . "_YFLAGS");
> +    my $YFLAGSvar = var ('YFLAGS');
> +    # We cannot work reliably with conditionally-defined YFLAGS.
> +    $flagvar->check_defined_unconditionally if $flagvar;
> +    $YFLAGSvar->check_defined_unconditionally if $YFLAGSvar;
> +    my @flags = $flagvar ? $flagvar->value_as_list_recursive : ();
> +    my @YFLAGS = $YFLAGSvar ? $YFLAGSvar->value_as_list_recursive : ();
> +    if (grep (/^-d$/, @flags) || grep (/^-d$/, @YFLAGS))
>      {
>       (my $output_base = $output) =~ s/$KNOWN_EXTENSIONS_PATTERN$//;
>       my $header = $output_base . '.h';

Reply via email to