Hello automakers.

This is basically just a reproposal of PR/547 from the old gnats database;
I'm resubmitting it here because I'd really like to see it fixed, and
having it reported in the new, more visible debbugs-based bug database
might help in this respect.

-*-*-*-

With automake >= 1.10, foreign *after* -Wall in AM_INIT_AUTOMAKE turns
off portability warnings.

  $ cat >> configure.ac <<'END'
  AC_INIT([foo], [1.0])
  AM_INIT_AUTOMAKE([foreign -Wall])
  AC_CONFIG_FILES([Makefile])
  AC_PROG_CC
  END
  $ aclocal
  $ cat > Makefile.am <<'END'
  CFLAGS := $(wildcard *)
  bin_PROGRAMS = foo
  END
  $ automake -a # will warn as expected
  Makefile.am:1: `:='-style assignments are not portable
  Makefile.am:1: wildcard *: non-POSIX variable name
  Makefile.am:1: (probably a GNU make extension)
  Makefile.am:1: `CFLAGS' is a user variable, you should not override it;
  Makefile.am:1: use `AM_CFLAGS' instead.
  $ # now put `foreign' after `-Wall'
  $ sed -i 's/foreign -Wall/-Wall foreign/' configure.ac
  $ automake -a # gives no warnings!
  $ automake -a -Wall # but this does, luckily
  Makefile.am:1: `:='-style assignments are not portable
  Makefile.am:1: wildcard *: non-POSIX variable name
  Makefile.am:1: (probably a GNU make extension)
  Makefile.am:1: `CFLAGS' is a user variable, you should not override it;
  Makefile.am:1: use `AM_CFLAGS' instead.

While the current behaviour is due to various historical and implementation
reasons, IMHO it is counter-intuitive and somewhat "dangerous", since
programmers enabling the `foreign' option might unwittingly be prevented
from seeing portability warnings -- when they think to have enabled those
warnings!

Regards,
   Stefano



Reply via email to