I don't know if this has been fixed or not, but in my automake-1.4-5
which came with RedHat 6.1, there are bugs in the main executable,
i.e. "automake".

The bugs I found are in the maintainer-clean target.

1. For both yacc & lex, it forgets the "." between the basename and
the extension.

2. For lex, it illegaly tries to convert *.y --> *.c when deciding
what file can be removed by maintainer-clean. This would cause the
original *.l file to be removed instead of the *.c, but because of the
first bug, this luckily doesn't happen (well it happened to me after I
fixed the first bug.. ;-).

The bugs are not very serious as they only fail to remove the files
generated by yacc & lex. But still they are bugs.

The workaround I currently use is simply a "maintainer-clean-generic"
target which overrides the buggy default.

To save you all time, I included a patch I made to my version of
automake. It should fix the problems without nasty side-effects.

And then a question: Is there any way to "nicely" extend automake,
i.e. add support for special executables, new "languages", and stuff ?
I have currently built yet another layer over automake (i.e. one that
reads Makefile.xxx:s and creates Makefile.am:s) that allows me to
build special executables that I then dynamically load as modules from
my main executable. There could for example be some automake.xxx files
in the same directory as the configure.in, which would contain some
kind of rules telling how and what to do...

*** automake    Fri Jun 16 11:00:49 2000
--- automake-fixed      Fri Jun 16 11:00:49 2000
***************
*** 4672,4678 ****
        # statically, and the GNU rules say that yacc/lex output files
        # should be removed by maintainer-clean.  So that's what we
        # do.
!       push (@maintainer_clean_files, $base . $hname, $base . $cname);
      }
      $output_rules .= "\n";
  
--- 4672,4678 ----
        # statically, and the GNU rules say that yacc/lex output files
        # should be removed by maintainer-clean.  So that's what we
        # do.
!       push (@maintainer_clean_files, $base . "." . $hname, $base . "." . $cname);
      }
      $output_rules .= "\n";
  
***************
*** 4719,4726 ****
        # should be removed by maintainer-clean.  So that's what we
        # do.
        $file =~ /^(.*)\.(l|ll|l\+\+|lxx)$/;
!       ($cname = $2) =~ tr/y/c/;
!       push (@maintainer_clean_files, $1 . $cname);
      }
  
      if (! defined $configure_vars{'LEX'})
--- 4719,4726 ----
        # should be removed by maintainer-clean.  So that's what we
        # do.
        $file =~ /^(.*)\.(l|ll|l\+\+|lxx)$/;
!       ($cname = $2) =~ tr/l/c/;
!       push (@maintainer_clean_files, $1 . "." . $cname);
      }
  
      if (! defined $configure_vars{'LEX'})

Reply via email to