+2004-04-21 Alexandre Duret-Lutz <adl@gnu.org>
+
+ * doc/autoconf.texi (Limitations of Make): Update documentation
+ for `$<'. New entry `Long lines', based on a report from Simon
+ Josefsson. Augment the documentation for SHELL = @SHELL@ with a
+ paragraph about DJGPP, based on a mail from Richard Dawe.
+
2004-04-20 Paul Eggert <eggert@twinsun.com>
* tests/c.at (C keywords): Don't assume that GCC supports
@table @asis
@item @code{$<}
-@acronym{POSIX} says that the @samp{$<} construct in makefiles can be used
-only in inference rules and in the @samp{.DEFAULT} rule; its meaning in
-ordinary rules is unspecified. Solaris 8's @command{make} for instance
-will replace it with the argument.
+@acronym{POSIX} says that the @samp{$<} construct in makefiles can be
+used only in inference rules and in the @samp{.DEFAULT} rule; its
+meaning in ordinary rules is unspecified. Solaris 8's @command{make}
+for instance will replace it with the empty string. OpenBSD (3.0 and
+later) @command{make} will diagnose these uses and error out.
@item Leading underscore in macro names
Some @command{make}s don't support leading underscores in macro names,
# baz
@end example
+@item Long lines.
+
+OSF/1 4.0d's @command{make} cannot process @file{Makefile}s with lines
+longer than 38912 bytes. It exits with a @code{Line too long}
+diagnostic. A later version, Tru64 5.1's @command{make} has been
+reported to crash with lines around 20KB.
+
@item @code{make macro=value} and sub-@command{make}s.
A command-line variable definition such as @code{foo=bar} overrides any
SHELL = @@SHELL@@
@end example
+Do not force @code{SHELL = /bin/sh} because that is not correct
+everywhere. For instance there is no @code{/bin/sh} in DJGPP, and when
+its GNU @code{make} port sees such a setting it enters a special
+emulation mode where features like pipes and redirections are emulated
+on top of DOS's @command{command.com}. Unfortunately this emulation is
+incomplete; for instance it does not handle command substitutions.
+On DJGPP @code{SHELL} should point the port of Bash.
+
@acronym{POSIX}-compliant @command{make}s should never acquire the value of
$(SHELL) from the environment, even when @code{make -e} is used
(otherwise, think about what would happen to your rules if