If AM_SILENT_RULES is used, Automake generates Makefile.in
files with lines like this:
AM_V_CC = $(am__v_CC_$(V))
am__v_CC_ = $(am__v_CC_$(AM_DEFAULT_VERBOSITY))
and these are copied into Makefile unchanged. Unfortunately, as
the Automake documentation notes, these lines do not conform to
the POSIX rules for 'make', and as a result packages like
Coreutils that use AM_SILENT_RULES won't build on machines whose
'make' implementations conform to POSIX but disagree with GNU make
in this area. This is a problem with the current release of
Coreutils, which doesn't build on HP's NonStop OS (see Bug#10234).
The simplest fix for Coreutils is to not use AM_SILENT_RULES but
that defeats the purpose of the Automake feature. How about the
following idea instead? Automake could put something like the
following into Makefile.in:
AM_V_CC = $(am__v_CC_@AM_V@)
am__v_CC_ = $(am__v_CC_@AM_DEFAULT_VERBOSITY@)
and then Automake can do something like this:
if make supports $(...$(...)); then
AM_V='$(V)'
AM_DEFAULT_VERBOSITY='$(AM_DEFAULT_VERBOSITY)'
else
AM_V=1
AM_DEFAULT_VERBOSITY=1
fi
AC_SUBST([AM_V])
AC_SUBST([AM_DEFAULT_VERBOSITY])
That way, Coreutils could continue to use AM_SILENT_RULES, and
these rules would work as usual on most hosts that use GNU
make-ish syntax in this area, but the rules wouldn't break on
hosts that support POSIX but not GNU make.
This idea should also fix Bug#9928 (in a different way from
what's proposed there), so I'll CC: its reporter.