[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: VPATH / English / etc updates for Autoconf manual
From: |
Paul Eggert |
Subject: |
Re: VPATH / English / etc updates for Autoconf manual |
Date: |
Wed, 14 Jun 2006 12:50:37 -0700 |
User-agent: |
Gnus/5.1008 (Gnus v5.10.8) Emacs/21.4 (gnu/linux) |
address@hidden (Eric Blake) writes:
> * doc/autoconf.texi (The Make Macro MAKEFLAGS): New node.
Thanks. I tweaked that in minor ways, and also updated the page about
funny chars in macro names, and installed this:
2006-06-14 Paul Eggert <address@hidden>
* doc/autoconf.texi (Special Chars in Names):
Renamed from Leading _ in Macro Names.
Mention other special chars, too.
2006-06-14 Eric Blake <address@hidden>
* doc/autoconf.texi (The Make Macro MAKEFLAGS): New node.
--- doc/autoconf.texi 14 Jun 2006 19:11:43 -0000 1.1045
+++ doc/autoconf.texi 14 Jun 2006 19:46:54 -0000
@@ -484,11 +484,12 @@ Portable Make Programming
* $< in Ordinary Make Rules:: $< in ordinary rules
* Failure in Make Rules:: Failing portably in rules
-* Leading _ in Macro Names:: $(_FOO) on ancient hosts
+* Special Chars in Names:: $(.FOO), $(_FOO), $(007), etc.
* Backslash-Newline-Newline:: Empty last lines in macro definitions
* Backslash-Newline Comments:: Spanning comments across line boundaries
* Long Lines in Makefiles:: Line length limitations
* Macros and Submakes:: @code{make macro=value} and submakes
+* The Make Macro MAKEFLAGS:: @code{$(MAKEFLAGS)} portability issues
* The Make Macro SHELL:: @code{$(SHELL)} portability issues
* Comments in Make Rules:: Other problems with Make comments
* obj/ and Make:: Don't name a subdirectory @file{obj}
@@ -13616,11 +13617,12 @@ itself.
@menu
* $< in Ordinary Make Rules:: $< in ordinary rules
* Failure in Make Rules:: Failing portably in rules
-* Leading _ in Macro Names:: $(_FOO) on ancient hosts
+* Special Chars in Names:: $(.FOO), $(_FOO), $(007), etc.
* Backslash-Newline-Newline:: Empty last lines in macro definitions
* Backslash-Newline Comments:: Spanning comments across line boundaries
* Long Lines in Makefiles:: Line length limitations
* Macros and Submakes:: @code{make macro=value} and submakes
+* The Make Macro MAKEFLAGS:: @code{$(MAKEFLAGS)} portability issues
* The Make Macro SHELL:: @code{$(SHELL)} portability issues
* Comments in Make Rules:: Other problems with Make comments
* obj/ and Make:: Don't name a subdirectory @file{obj}
@@ -13659,8 +13661,13 @@ implementations of the @option{-e} optio
about porting to buggy BSD shells it may be simpler to migrate
complicated @command{make} actions into separate scripts.
address@hidden Leading _ in Macro Names
address@hidden Leading @samp{_} in Make Macro Names
address@hidden Special Chars in Names
address@hidden Special Characters in Make Macro Names
+
+Posix limits macro names to nonempty strings containing only
address@hidden letters and digits, @samp{.}, and @samp{_}. Many
address@hidden implementations allow a wider variety of characters, but
+portable makefiles should avoid them.
Some ancient @command{make} implementations don't support leading
underscores in macro names. An example is @acronym{NEWS-OS} 4.2R.
@@ -13825,6 +13832,31 @@ two:
You need to foresee all macros that a user might want to override if
you do that.
address@hidden The Make Macro MAKEFLAGS
address@hidden The Make Macro MAKEFLAGS
address@hidden @code{MAKEFLAGS} and @command{make}
address@hidden @command{make} and @code{MAKEFLAGS}
+
+Posix requires @command{make} to use @code{MAKEFLAGS} to affect the
+current and recursive invocations of make, but allows implementations
+several formats for the variable. It is tricky to parse
address@hidden to determine whether @option{-s} for silent execution
+or @option{-k} for continued execution are in effect. For example, you
+cannot assume that the first space-separated word in @code{$MAKEFLAGS}
+contains single-letter options, since in the Cygwin version of
address@hidden @command{make} it is either @option{--unix} or
address@hidden with the second word containing single-letter options.
+
address@hidden
+$ @kbd{cat Makefile}
+all:
+ @@echo MAKEFLAGS = $(MAKEFLAGS)
+$ @kbd{make}
+MAKEFLAGS = --unix
+$ @kbd{make -k}
+MAKEFLAGS = --unix -k
address@hidden example
+
@node The Make Macro SHELL
@section The Make Macro @code{SHELL}
@cindex @code{SHELL} and @command{make}