1997-04-07 07:21:16 +00:00
|
|
|
|
GNU make NEWS -*-indented-text-*-
|
|
|
|
|
History of user-visible changes.
|
1999-07-21 16:06:18 +00:00
|
|
|
|
21 Jul 1999
|
1995-03-07 23:44:43 +00:00
|
|
|
|
|
1999-02-22 07:23:30 +00:00
|
|
|
|
Copyright (C) 1992,93,94,95,96,97,98,1999 Free Software Foundation, Inc.
|
1995-03-07 23:44:43 +00:00
|
|
|
|
See the end for copying conditions.
|
|
|
|
|
|
1999-02-22 07:23:30 +00:00
|
|
|
|
All changes mentioned here are more fully described in the GNU make
|
|
|
|
|
manual, which is contained in this distribution as the file make.texinfo.
|
|
|
|
|
|
1998-07-30 20:54:47 +00:00
|
|
|
|
Please send GNU make bug reports to bug-make@gnu.org.
|
|
|
|
|
|
1999-02-22 07:23:30 +00:00
|
|
|
|
Version 3.78
|
|
|
|
|
|
1999-08-13 07:36:26 +00:00
|
|
|
|
* Two new functions, $(error ...) and $(warning ...) are available. The
|
1999-03-26 04:04:42 +00:00
|
|
|
|
former will cause make to fail and exit immediately upon expansion of
|
|
|
|
|
the function, with the text provided as the error message. The latter
|
|
|
|
|
causes the text provided to be printed as a warning message, but make
|
|
|
|
|
proceeds normally.
|
|
|
|
|
|
1999-08-13 07:36:26 +00:00
|
|
|
|
* A new function $(call ...) is available. This allows users to create
|
1999-07-21 16:06:18 +00:00
|
|
|
|
their own parameterized macros and invoke them later. Original
|
1999-08-13 07:36:26 +00:00
|
|
|
|
implementation of this function was provided by Han-Wen Nienhuys
|
1999-07-15 07:36:44 +00:00
|
|
|
|
<hanwen@cs.uu.nl>.
|
|
|
|
|
|
1999-08-13 07:36:26 +00:00
|
|
|
|
* A new function $(if ...) is available. It provides if-then-else
|
|
|
|
|
capabilities in a builtin function. Original implementation of this
|
|
|
|
|
function was provided by Han-Wen Nienhuys <hanwen@cs.uu.nl>.
|
|
|
|
|
|
1999-02-22 07:23:30 +00:00
|
|
|
|
* Make defines a new variable, .LIBPATTERNS. This variable controls how
|
1999-04-02 06:19:33 +00:00
|
|
|
|
library dependency expansion (dependencies like ``-lfoo'') is performed.
|
1999-03-31 23:25:13 +00:00
|
|
|
|
|
1999-07-21 16:06:18 +00:00
|
|
|
|
* Make accepts CRLF sequences as well as traditional LF, for
|
1999-04-02 06:19:33 +00:00
|
|
|
|
compatibility with makefiles created on other operating systems.
|
1999-04-25 04:30:55 +00:00
|
|
|
|
|
1999-07-08 06:49:52 +00:00
|
|
|
|
* Make accepts a new option: -R, or --no-builtin-variables. This option
|
|
|
|
|
disables the definition of the rule-specific builtin variables (CC,
|
|
|
|
|
LD, AR, etc.). Specifying this option forces -r (--no-builtin-rules)
|
|
|
|
|
as well.
|
|
|
|
|
|
1999-07-15 07:36:44 +00:00
|
|
|
|
* A "job server" feature, suggested by Howard Chu <hyc@highlandsun.com>.
|
1999-04-25 04:30:55 +00:00
|
|
|
|
|
|
|
|
|
On systems that support POSIX pipe(2) semantics, GNU make can now pass
|
|
|
|
|
-jN options to submakes rather than forcing them all to use -j1. The
|
|
|
|
|
top make and all its sub-make processes use a pipe to communicate with
|
|
|
|
|
each other to ensure that no more than N jobs are started across all
|
|
|
|
|
makes. To get the old behavior of -j back, you can configure make
|
|
|
|
|
with the --disable-job-server option.
|
1999-08-24 04:49:39 +00:00
|
|
|
|
|
|
|
|
|
* The confusing term "dependency" has been replaced by the more accurate
|
|
|
|
|
and standard term "prerequisite", both in the manual and in all GNU make
|
|
|
|
|
output.
|
1999-09-01 03:58:04 +00:00
|
|
|
|
|
|
|
|
|
* GNU make supports the "big archive" library format introduced in AIX 4.3.
|
|
|
|
|
|
|
|
|
|
* GNU make supports large files on AIX, HP-UX, and IRIX. These changes
|
|
|
|
|
were provided by Paul Eggert <eggert@twinsun.com>. (Large file
|
|
|
|
|
support for Solaris and Linux was introduced in 3.77, but the
|
|
|
|
|
configuration had issues: these have also been resolved).
|
|
|
|
|
|
|
|
|
|
* The Windows 95/98/NT (W32) version of GNU make now has native support
|
|
|
|
|
for the Cygnus Cygwin release B20.1 shell (bash).
|
1999-02-22 07:23:30 +00:00
|
|
|
|
|
1998-07-30 20:54:47 +00:00
|
|
|
|
Version 3.77
|
|
|
|
|
|
|
|
|
|
* Implement BSD make's "?=" variable assignment operator. The variable
|
|
|
|
|
is assigned the specified value only if that variable is not already
|
|
|
|
|
defined.
|
|
|
|
|
|
|
|
|
|
* Make defines a new variable, "CURDIR", to contain the current working
|
|
|
|
|
directory (after the -C option, if any, has been processed).
|
|
|
|
|
Modifying this variable has no effect on the operation of make.
|
|
|
|
|
|
|
|
|
|
* Make defines a new default RCS rule, for new-style master file
|
|
|
|
|
storage: ``% :: RCS/%'' (note no ``,v'' suffix).
|
|
|
|
|
|
|
|
|
|
Make defines new default rules for DOS-style C++ file naming
|
|
|
|
|
conventions, with ``.cpp'' suffixes. All the same rules as for
|
|
|
|
|
``.cc'' and ``.C'' suffixes are provided, along with LINK.cpp and
|
|
|
|
|
COMPILE.cpp macros (which default to the same value as LINK.cc and
|
|
|
|
|
COMPILE.cc). Note CPPFLAGS is still C preprocessor flags! You should
|
|
|
|
|
use CXXFLAGS to change C++ compiler flags.
|
|
|
|
|
|
|
|
|
|
* A new feature, "target-specific variable values", has been added.
|
|
|
|
|
This is a large change so please see the appropriate sections of the
|
|
|
|
|
manual for full details. Briefly, syntax like this:
|
|
|
|
|
|
|
|
|
|
TARGET: VARIABLE = VALUE
|
|
|
|
|
|
|
|
|
|
defines VARIABLE as VALUE within the context of TARGET. This is
|
|
|
|
|
similar to SunOS make's "TARGET := VARIABLE = VALUE" feature. Note
|
|
|
|
|
that the assignment may be of any type, not just recursive, and that
|
|
|
|
|
the override keyword is available.
|
|
|
|
|
|
|
|
|
|
COMPATIBILITY: This new syntax means that if you have any rules where
|
|
|
|
|
the first or second dependency has an equal sign (=) in its name,
|
|
|
|
|
you'll have to escape them with a backslash: "foo : bar\=baz".
|
|
|
|
|
Further, if you have any dependencies which already contain "\=",
|
|
|
|
|
you'll have to escape both of them: "foo : bar\\\=baz".
|
|
|
|
|
|
|
|
|
|
* A new appendix listing the most common error and warning messages
|
|
|
|
|
generated by GNU make, with some explanation, has been added to the
|
|
|
|
|
GNU make User's Manual.
|
|
|
|
|
|
|
|
|
|
* Updates to the GNU make Customs library support (see README.customs).
|
|
|
|
|
|
|
|
|
|
* Updates to the Windows 95/NT port from Rob Tulloh (see README.W32),
|
|
|
|
|
and to the DOS port from Eli Zaretski (see README.DOS).
|
1995-03-07 23:44:43 +00:00
|
|
|
|
|
1997-09-19 19:47:55 +00:00
|
|
|
|
Version 3.76.1
|
|
|
|
|
|
|
|
|
|
* Small (but serious) bug fix. Quick rollout to get into the GNU source CD.
|
|
|
|
|
|
1997-04-07 07:21:16 +00:00
|
|
|
|
Version 3.76
|
|
|
|
|
|
1997-08-18 20:14:30 +00:00
|
|
|
|
* GNU make now uses automake to control Makefile.in generation. This
|
|
|
|
|
should make it more consistent with the GNU standards.
|
|
|
|
|
|
1997-04-07 07:21:16 +00:00
|
|
|
|
* VPATH functionality has been changed to incorporate the VPATH+ patch,
|
|
|
|
|
previously maintained by Paul Smith <psmith@baynetworks.com>. See the
|
|
|
|
|
manual.
|
|
|
|
|
|
|
|
|
|
* Make defines a new variable, `MAKECMDGOALS', to contain the goals that
|
|
|
|
|
were specified on the command line, if any. Modifying this variable
|
|
|
|
|
has no effect on the operation of make.
|
|
|
|
|
|
|
|
|
|
* A new function, `$(wordlist S,E,TEXT)', is available: it returns a
|
|
|
|
|
list of words from number S to number E (inclusive) of TEXT.
|
|
|
|
|
|
|
|
|
|
* Instead of an error, detection of future modification times gives a
|
1997-08-18 18:11:04 +00:00
|
|
|
|
warning and continues. The warning is repeated just before GNU make
|
|
|
|
|
exits, so it is less likely to be lost.
|
1997-04-07 07:21:16 +00:00
|
|
|
|
|
|
|
|
|
* Fix the $(basename) and $(suffix) functions so they only operate on
|
|
|
|
|
the last filename, not the entire string:
|
|
|
|
|
|
|
|
|
|
Command Old Result New Result
|
|
|
|
|
------- ---------- ----------
|
|
|
|
|
$(basename a.b) a a
|
|
|
|
|
$(basename a.b/c) a a.b/c
|
|
|
|
|
$(suffix a.b) b b
|
|
|
|
|
$(suffix a.b/c) b/c <empty>
|
|
|
|
|
|
1997-08-18 18:11:04 +00:00
|
|
|
|
* The $(strip) function now removes newlines as well as TABs and spaces.
|
|
|
|
|
|
1997-09-16 14:17:23 +00:00
|
|
|
|
* The $(shell) function now changes CRLF (\r\n) pairs to a space as well
|
|
|
|
|
as newlines (\n).
|
|
|
|
|
|
1997-04-07 07:21:16 +00:00
|
|
|
|
* Updates to the Windows 95/NT port from Rob Tulloh (see README.W32).
|
|
|
|
|
|
|
|
|
|
* Eli Zaretskii has updated the port to 32-bit protected mode on MSDOS
|
|
|
|
|
and MS-Windows, building with the DJGPP v2 port of GNU C/C++ compiler
|
|
|
|
|
and utilities. See README.DOS for details, and direct all questions
|
|
|
|
|
concerning this port to Eli Zaretskii <eliz@is.elta.co.il> or DJ
|
|
|
|
|
Delorie <dj@delorie.com>.
|
1997-09-16 14:17:23 +00:00
|
|
|
|
|
|
|
|
|
* John W. Eaton has updated the VMS port to support libraries and VPATH.
|
1997-04-07 07:21:16 +00:00
|
|
|
|
|
1995-12-12 04:54:41 +00:00
|
|
|
|
Version 3.75
|
|
|
|
|
|
|
|
|
|
* The directory messages printed by `-w' and implicitly in sub-makes,
|
|
|
|
|
are now omitted if Make runs no commands and has no other messages to print.
|
1996-03-01 17:00:57 +00:00
|
|
|
|
|
|
|
|
|
* Make now detects files that for whatever reason have modification times
|
|
|
|
|
in the future and gives an error. Files with such impossible timestamps
|
|
|
|
|
can result from unsynchronized clocks, or archived distributions
|
|
|
|
|
containing bogus timestamps; they confuse Make's dependency engine
|
|
|
|
|
thoroughly.
|
1996-05-09 17:24:04 +00:00
|
|
|
|
|
|
|
|
|
* The new directive `sinclude' is now recognized as another name for
|
|
|
|
|
`-include', for compatibility with some other Makes.
|
1996-05-09 18:40:55 +00:00
|
|
|
|
|
|
|
|
|
* Aaron Digulla has contributed a port to AmigaDOS. See README.Amiga for
|
|
|
|
|
details, and direct all Amiga-related questions to <digulla@fh-konstanz.de>.
|
1996-05-27 00:58:20 +00:00
|
|
|
|
|
|
|
|
|
* Rob Tulloh of Tivoli Systems has contributed a port to Windows NT or 95.
|
1997-04-07 07:21:16 +00:00
|
|
|
|
See README.W32 for details, and direct all Windows-related questions to
|
1996-05-27 00:58:20 +00:00
|
|
|
|
<rob_tulloh@tivoli.com>.
|
1995-12-12 04:54:41 +00:00
|
|
|
|
|
1995-03-07 23:44:43 +00:00
|
|
|
|
Version 3.73
|
|
|
|
|
|
|
|
|
|
* Converted to use Autoconf version 2, so `configure' has some new options.
|
|
|
|
|
See INSTALL for details.
|
|
|
|
|
|
|
|
|
|
* You can now send a SIGUSR1 signal to Make to toggle printing of debugging
|
1995-12-12 04:55:06 +00:00
|
|
|
|
output enabled by -d, at any time during the run.
|
1995-03-07 23:44:43 +00:00
|
|
|
|
|
|
|
|
|
Version 3.72
|
|
|
|
|
|
|
|
|
|
* DJ Delorie has ported Make to MS-DOS using the GO32 extender.
|
|
|
|
|
He is maintaining the DOS port, not the GNU Make maintainer;
|
|
|
|
|
please direct bugs and questions for DOS to <djgpp@sun.soe.clarkson.edu>.
|
1996-07-19 21:43:36 +00:00
|
|
|
|
MS-DOS binaries are available for FTP from ftp.simtel.net in
|
|
|
|
|
/pub/simtelnet/gnu/djgpp/.
|
1995-03-07 23:44:43 +00:00
|
|
|
|
|
|
|
|
|
* The `MAKEFLAGS' variable (in the environment or in a makefile) can now
|
|
|
|
|
contain variable definitions itself; these are treated just like
|
|
|
|
|
command-line variable definitions. Make will automatically insert any
|
|
|
|
|
variable definitions from the environment value of `MAKEFLAGS' or from
|
|
|
|
|
the command line, into the `MAKEFLAGS' value exported to children. The
|
|
|
|
|
`MAKEOVERRIDES' variable previously included in the value of `$(MAKE)'
|
|
|
|
|
for sub-makes is now included in `MAKEFLAGS' instead. As before, you can
|
|
|
|
|
reset `MAKEOVERRIDES' in your makefile to avoid putting all the variables
|
|
|
|
|
in the environment when its size is limited.
|
|
|
|
|
|
|
|
|
|
* If `.DELETE_ON_ERROR' appears as a target, Make will delete the target of
|
|
|
|
|
a rule if it has changed when its commands exit with a nonzero status,
|
|
|
|
|
just as when the commands get a signal.
|
|
|
|
|
|
|
|
|
|
* The automatic variable `$+' is new. It lists all the dependencies like
|
|
|
|
|
`$^', but preserves duplicates listed in the makefile. This is useful
|
|
|
|
|
for linking rules, where library files sometimes need to be listed twice
|
|
|
|
|
in the link order.
|
|
|
|
|
|
|
|
|
|
* You can now specify the `.IGNORE' and `.SILENT' special targets with
|
|
|
|
|
dependencies to limit their effects to those files. If a file appears as
|
|
|
|
|
a dependency of `.IGNORE', then errors will be ignored while running the
|
|
|
|
|
commands to update that file. Likewise if a file appears as a dependency
|
|
|
|
|
of `.SILENT', then the commands to update that file will not be printed
|
|
|
|
|
before they are run. (This change was made to conform to POSIX.2.)
|
|
|
|
|
|
|
|
|
|
Version 3.71
|
|
|
|
|
|
|
|
|
|
* The automatic variables `$(@D)', `$(%D)', `$(*D)', `$(<D)', `$(?D)', and
|
|
|
|
|
`$(^D)' now omit the trailing slash from the directory name. (This change
|
|
|
|
|
was made to comply with POSIX.2.)
|
|
|
|
|
|
|
|
|
|
* The source distribution now includes the Info files for the Make manual.
|
|
|
|
|
There is no longer a separate distribution containing Info and DVI files.
|
|
|
|
|
|
|
|
|
|
* You can now set the variables `binprefix' and/or `manprefix' in
|
|
|
|
|
Makefile.in (or on the command line when installing) to install GNU make
|
|
|
|
|
under a name other than `make' (i.e., ``make binprefix=g install''
|
|
|
|
|
installs GNU make as `gmake').
|
|
|
|
|
|
|
|
|
|
* The built-in Texinfo rules use the new variables `TEXI2DVI_FLAGS' for
|
|
|
|
|
flags to the `texi2dvi' script, and `MAKEINFO_FLAGS' for flags to the
|
|
|
|
|
Makeinfo program.
|
|
|
|
|
|
|
|
|
|
* The exit status of Make when it runs into errors is now 2 instead of 1.
|
|
|
|
|
The exit status is 1 only when using -q and some target is not up to date.
|
|
|
|
|
(This change was made to comply with POSIX.2.)
|
|
|
|
|
|
|
|
|
|
Version 3.70
|
|
|
|
|
|
|
|
|
|
* It is no longer a fatal error to have a NUL character in a makefile.
|
|
|
|
|
You should never put a NUL in a makefile because it can have strange
|
|
|
|
|
results, but otherwise empty lines full of NULs (such as produced by
|
|
|
|
|
the `xmkmf' program) will always work fine.
|
|
|
|
|
|
|
|
|
|
* The error messages for nonexistent included makefiles now refer to the
|
|
|
|
|
makefile name and line number where the `include' appeared, so Emacs's
|
|
|
|
|
C-x ` command takes you there (in case it's a typo you need to fix).
|
|
|
|
|
|
|
|
|
|
Version 3.69
|
|
|
|
|
|
|
|
|
|
* Implicit rule search for archive member references is now done in the
|
|
|
|
|
opposite order from previous versions: the whole target name `LIB(MEM)'
|
|
|
|
|
first, and just the member name and parentheses `(MEM)' second.
|
|
|
|
|
|
|
|
|
|
* Make now gives an error for an unterminated variable or function reference.
|
|
|
|
|
For example, `$(foo' with no matching `)' or `${bar' with no matching `}'.
|
|
|
|
|
|
|
|
|
|
* The new default variable `MAKE_VERSION' gives the version number of
|
|
|
|
|
Make, and a string describing the remote job support compiled in (if any).
|
|
|
|
|
Thus the value (in this release) is something like `3.69' or `3.69-Customs'.
|
|
|
|
|
|
|
|
|
|
* Commands in an invocation of the `shell' function are no longer run with
|
|
|
|
|
a modified environment like target commands are. As in versions before
|
|
|
|
|
3.68, they now run with the environment that `make' started with. We
|
|
|
|
|
have reversed the change made in version 3.68 because it turned out to
|
|
|
|
|
cause a paradoxical situation in cases like:
|
|
|
|
|
|
|
|
|
|
export variable = $(shell echo value)
|
|
|
|
|
|
|
|
|
|
When Make attempted to put this variable in the environment for a target
|
|
|
|
|
command, it would try expand the value by running the shell command
|
|
|
|
|
`echo value'. In version 3.68, because it constructed an environment
|
|
|
|
|
for that shell command in the same way, Make would begin to go into an
|
|
|
|
|
infinite loop and then get a fatal error when it detected the loop.
|
|
|
|
|
|
|
|
|
|
* The commands given for `.DEFAULT' are now used for phony targets with no
|
|
|
|
|
commands.
|
|
|
|
|
|
|
|
|
|
Version 3.68
|
|
|
|
|
|
|
|
|
|
* You can list several archive member names inside parenthesis:
|
|
|
|
|
`lib(mem1 mem2 mem3)' is equivalent to `lib(mem1) lib(mem2) lib(mem3)'.
|
|
|
|
|
|
|
|
|
|
* You can use wildcards inside archive member references. For example,
|
|
|
|
|
`lib(*.o)' expands to all existing members of `lib' whose names end in
|
|
|
|
|
`.o' (e.g. `lib(a.o) lib(b.o)'); `*.a(*.o)' expands to all such members
|
|
|
|
|
of all existing files whose names end in `.a' (e.g. `foo.a(a.o)
|
|
|
|
|
foo.a(b.o) bar.a(c.o) bar.a(d.o)'.
|
|
|
|
|
|
|
|
|
|
* A suffix rule `.X.a' now produces two pattern rules:
|
|
|
|
|
(%.o): %.X # Previous versions produced only this.
|
|
|
|
|
%.a: %.X # Now produces this as well, just like other suffixes.
|
|
|
|
|
|
|
|
|
|
* The new flag `--warn-undefined-variables' says to issue a warning message
|
|
|
|
|
whenever Make expands a reference to an undefined variable.
|
|
|
|
|
|
|
|
|
|
* The new `-include' directive is just like `include' except that there is
|
|
|
|
|
no error (not even a warning) for a nonexistent makefile.
|
|
|
|
|
|
|
|
|
|
* Commands in an invocation of the `shell' function are now run with a
|
|
|
|
|
modified environment like target commands are, so you can use `export' et
|
|
|
|
|
al to set up variables for them. They used to run with the environment
|
|
|
|
|
that `make' started with.
|
|
|
|
|
|
|
|
|
|
Version 3.66
|
|
|
|
|
|
|
|
|
|
* `make --version' (or `make -v') now exits immediately after printing
|
|
|
|
|
the version number.
|
|
|
|
|
|
|
|
|
|
Version 3.65
|
|
|
|
|
|
|
|
|
|
* Make now supports long-named members in `ar' archive files.
|
|
|
|
|
|
|
|
|
|
Version 3.64
|
|
|
|
|
|
|
|
|
|
* Make now supports the `+=' syntax for a variable definition which appends
|
|
|
|
|
to the variable's previous value. See the section `Appending More Text
|
|
|
|
|
to Variables' in the manual for full details.
|
|
|
|
|
|
|
|
|
|
* The new option `--no-print-directory' inhibits the `-w' or
|
|
|
|
|
`--print-directory' feature. Make turns on `--print-directory'
|
|
|
|
|
automatically if you use `-C' or `--directory', and in sub-makes; some
|
|
|
|
|
users have found this behavior undesirable.
|
|
|
|
|
|
|
|
|
|
* The built-in implicit rules now support the alternative extension
|
|
|
|
|
`.txinfo' for Texinfo files, just like `.texinfo' and `.texi'.
|
|
|
|
|
|
|
|
|
|
Version 3.63
|
|
|
|
|
|
|
|
|
|
* Make now uses a standard GNU `configure' script. See the new file
|
|
|
|
|
INSTALL for the new (and much simpler) installation procedure.
|
|
|
|
|
|
|
|
|
|
* There is now a shell script to build Make the first time, if you have no
|
|
|
|
|
other `make' program. `build.sh' is created by `configure'; see README.
|
|
|
|
|
|
|
|
|
|
* GNU Make now completely conforms to the POSIX.2 specification for `make'.
|
|
|
|
|
|
|
|
|
|
* Elements of the `$^' and `$?' automatic variables that are archive
|
|
|
|
|
member references now list only the member name, as in Unix and POSIX.2.
|
|
|
|
|
|
|
|
|
|
* You should no longer ever need to specify the `-w' switch, which prints
|
|
|
|
|
the current directory before and after Make runs. The `-C' switch to
|
|
|
|
|
change directory, and recursive use of Make, now set `-w' automatically.
|
|
|
|
|
|
|
|
|
|
* Multiple double-colon rules for the same target will no longer have their
|
|
|
|
|
commands run simultaneously under -j, as this could result in the two
|
|
|
|
|
commands trying to change the file at the same time and interfering with
|
|
|
|
|
one another.
|
|
|
|
|
|
|
|
|
|
* The `SHELL' variable is now never taken from the environment.
|
|
|
|
|
Each makefile that wants a shell other than the default (/bin/sh) must
|
|
|
|
|
set SHELL itself. SHELL is always exported to child processes.
|
|
|
|
|
This change was made for compatibility with POSIX.2.
|
|
|
|
|
|
|
|
|
|
* Make now accepts long options. There is now an informative usage message
|
|
|
|
|
that tells you what all the options are and what they do. Try `make --help'.
|
|
|
|
|
|
|
|
|
|
* There are two new directives: `export' and `unexport'. All variables are
|
|
|
|
|
no longer automatically put into the environments of the commands that
|
|
|
|
|
Make runs. Instead, only variables specified on the command line or in
|
|
|
|
|
the environment are exported by default. To export others, use:
|
|
|
|
|
export VARIABLE
|
|
|
|
|
or you can define variables with:
|
|
|
|
|
export VARIABLE = VALUE
|
|
|
|
|
or:
|
|
|
|
|
export VARIABLE := VALUE
|
|
|
|
|
You can use just:
|
|
|
|
|
export
|
|
|
|
|
or:
|
|
|
|
|
.EXPORT_ALL_VARIABLES:
|
|
|
|
|
to get the old behavior. See the node `Variables/Recursion' in the manual
|
|
|
|
|
for a full description.
|
|
|
|
|
|
|
|
|
|
* The commands from the `.DEFAULT' special target are only applied to
|
|
|
|
|
targets which have no rules at all, not all targets with no commands.
|
|
|
|
|
This change was made for compatibility with Unix make.
|
|
|
|
|
|
|
|
|
|
* All fatal error messages now contain `***', so they are easy to find in
|
|
|
|
|
compilation logs.
|
|
|
|
|
|
|
|
|
|
* Dependency file names like `-lNAME' are now replaced with the actual file
|
|
|
|
|
name found, as with files found by normal directory search (VPATH).
|
|
|
|
|
The library file `libNAME.a' may now be found in the current directory,
|
|
|
|
|
which is checked before VPATH; the standard set of directories (/lib,
|
|
|
|
|
/usr/lib, /usr/local/lib) is now checked last.
|
|
|
|
|
See the node `Libraries/Search' in the manual for full details.
|
|
|
|
|
|
|
|
|
|
* A single `include' directive can now specify more than one makefile to
|
|
|
|
|
include, like this:
|
|
|
|
|
include file1 file2
|
|
|
|
|
You can also use shell file name patterns in an `include' directive:
|
1995-12-12 04:54:41 +00:00
|
|
|
|
include *.mk
|
1995-03-07 23:44:43 +00:00
|
|
|
|
|
|
|
|
|
* The default directories to search for included makefiles, and for
|
|
|
|
|
libraries specified with `-lNAME', are now set by configuration.
|
|
|
|
|
|
|
|
|
|
* You can now use blanks as well as colons to separate the directories in a
|
|
|
|
|
search path for the `vpath' directive or the `VPATH' variable.
|
|
|
|
|
|
|
|
|
|
* You can now use variables and functions in the left hand side of a
|
|
|
|
|
variable assignment, as in "$(foo)bar = value".
|
|
|
|
|
|
|
|
|
|
* The `MAKE' variable is always defined as `$(MAKE_COMMAND) $(MAKEOVERRIDES)'.
|
|
|
|
|
The `MAKE_COMMAND' variable is now defined to the name with which make
|
|
|
|
|
was invoked.
|
|
|
|
|
|
|
|
|
|
* The built-in rules for C++ compilation now use the variables `$(CXX)' and
|
|
|
|
|
`$(CXXFLAGS)' instead of `$(C++)' and `$(C++FLAGS)'. The old names had
|
|
|
|
|
problems with shells that cannot have `+' in environment variable names.
|
|
|
|
|
|
|
|
|
|
* The value of a recursively expanded variable is now expanded when putting
|
|
|
|
|
it into the environment for child processes. This change was made for
|
|
|
|
|
compatibility with Unix make.
|
|
|
|
|
|
|
|
|
|
* A rule with no targets before the `:' is now accepted and ignored.
|
|
|
|
|
This change was made for compatibility with SunOS 4 make.
|
|
|
|
|
We do not recommend that you write your makefiles to take advantage of this.
|
|
|
|
|
|
|
|
|
|
* The `-I' switch can now be used in MAKEFLAGS, and are put there
|
|
|
|
|
automatically just like other switches.
|
|
|
|
|
|
|
|
|
|
Version 3.61
|
|
|
|
|
|
|
|
|
|
* Built-in rules for C++ source files with the `.C' suffix.
|
|
|
|
|
We still recommend that you use `.cc' instead.
|
|
|
|
|
|
|
|
|
|
* If commands are given too many times for a single target,
|
|
|
|
|
the last set given is used, and a warning message is printed.
|
|
|
|
|
|
|
|
|
|
* Error messages about makefiles are in standard GNU error format,
|
|
|
|
|
so C-x ` in Emacs works on them.
|
|
|
|
|
|
|
|
|
|
* Dependencies of pattern rules which contain no % need not actually exist
|
|
|
|
|
if they can be created (just like dependencies which do have a %).
|
|
|
|
|
|
|
|
|
|
Version 3.60
|
|
|
|
|
|
|
|
|
|
* A message is always printed when Make decides there is nothing to be done.
|
|
|
|
|
It used to be that no message was printed for top-level phony targets
|
|
|
|
|
(because "`phony' is up to date" isn't quite right). Now a different
|
|
|
|
|
message "Nothing to be done for `phony'" is printed in that case.
|
|
|
|
|
|
|
|
|
|
* Archives on AIX now supposedly work.
|
|
|
|
|
|
|
|
|
|
* When the commands specified for .DEFAULT are used to update a target,
|
|
|
|
|
the $< automatic variable is given the same value as $@ for that target.
|
|
|
|
|
This is how Unix make behaves, and this behavior is mandated by POSIX.2.
|
|
|
|
|
|
|
|
|
|
Version 3.59
|
|
|
|
|
|
|
|
|
|
* The -n, -q, and -t options are not put in the `MAKEFLAGS' and `MFLAG'
|
|
|
|
|
variables while remaking makefiles, so recursive makes done while remaking
|
|
|
|
|
makefiles will behave properly.
|
|
|
|
|
|
|
|
|
|
* If the special target `.NOEXPORT' is specified in a makefile,
|
|
|
|
|
only variables that came from the environment and variables
|
|
|
|
|
defined on the command line are exported.
|
|
|
|
|
|
|
|
|
|
Version 3.58
|
|
|
|
|
|
|
|
|
|
* Suffix rules may have dependencies (which are ignored).
|
|
|
|
|
|
|
|
|
|
Version 3.57
|
|
|
|
|
|
|
|
|
|
* Dependencies of the form `-lLIB' are searched for as /usr/local/lib/libLIB.a
|
|
|
|
|
as well as libLIB.a in /usr/lib, /lib, the current directory, and VPATH.
|
|
|
|
|
|
|
|
|
|
Version 3.55
|
|
|
|
|
|
|
|
|
|
* There is now a Unix man page for GNU Make. It is certainly not a replacement
|
|
|
|
|
for the Texinfo manual, but it documents the basic functionality and the
|
|
|
|
|
switches. For full documentation, you should still read the Texinfo manual.
|
|
|
|
|
Thanks to Dennis Morse of Stanford University for contributing the initial
|
|
|
|
|
version of this.
|
|
|
|
|
|
|
|
|
|
* Variables which are defined by default (e.g., `CC') will no longer be put
|
|
|
|
|
into the environment for child processes. (If these variables are reset by the
|
|
|
|
|
environment, makefiles, or the command line, they will still go into the
|
|
|
|
|
environment.)
|
|
|
|
|
|
|
|
|
|
* Makefiles which have commands but no dependencies (and thus are always
|
|
|
|
|
considered out of date and in need of remaking), will not be remade (if they
|
|
|
|
|
were being remade only because they were makefiles). This means that GNU
|
|
|
|
|
Make will no longer go into an infinite loop when fed the makefiles that
|
|
|
|
|
`imake' (necessary to build X Windows) produces.
|
|
|
|
|
|
|
|
|
|
* There is no longer a warning for using the `vpath' directive with an explicit
|
|
|
|
|
pathname (instead of a `%' pattern).
|
|
|
|
|
|
|
|
|
|
Version 3.51
|
|
|
|
|
|
|
|
|
|
* When removing intermediate files, only one `rm' command line is printed,
|
|
|
|
|
listing all file names.
|
|
|
|
|
|
|
|
|
|
* There are now automatic variables `$(^D)', `$(^F)', `$(?D)', and `$(?F)'.
|
|
|
|
|
These are the directory-only and file-only versions of `$^' and `$?'.
|
|
|
|
|
|
|
|
|
|
* Library dependencies given as `-lNAME' will use "libNAME.a" in the current
|
|
|
|
|
directory if it exists.
|
|
|
|
|
|
|
|
|
|
* The automatic variable `$($/)' is no longer defined.
|
|
|
|
|
|
|
|
|
|
* Leading `+' characters on a command line make that line be executed even
|
|
|
|
|
under -n, -t, or -q (as if the line contained `$(MAKE)').
|
|
|
|
|
|
|
|
|
|
* For command lines containing `$(MAKE)', `${MAKE}', or leading `+' characters,
|
|
|
|
|
only those lines are executed, not their entire rules.
|
|
|
|
|
(This is how Unix make behaves for lines containing `$(MAKE)' or `${MAKE}'.)
|
|
|
|
|
|
|
|
|
|
Version 3.50
|
|
|
|
|
|
|
|
|
|
* Filenames in rules will now have ~ and ~USER expanded.
|
|
|
|
|
|
|
|
|
|
* The `-p' output has been changed so it can be used as a makefile.
|
|
|
|
|
(All information that isn't specified by makefiles is prefaced with comment
|
|
|
|
|
characters.)
|
|
|
|
|
|
|
|
|
|
Version 3.49
|
|
|
|
|
|
|
|
|
|
* The % character can be quoted with backslash in implicit pattern rules,
|
|
|
|
|
static pattern rules, `vpath' directives, and `patsubst', `filter', and
|
|
|
|
|
`filter-out' functions. A warning is issued if a `vpath' directive's
|
|
|
|
|
pattern contains no %.
|
|
|
|
|
|
|
|
|
|
* The `wildcard' variable expansion function now expands ~ and ~USER.
|
|
|
|
|
|
|
|
|
|
* Messages indicating failed commands now contain the target name:
|
|
|
|
|
make: *** [target] Error 1
|
|
|
|
|
|
|
|
|
|
* The `-p' output format has been changed somewhat to look more like
|
|
|
|
|
makefile rules and to give all information that Make has about files.
|
|
|
|
|
|
|
|
|
|
Version 3.48
|
|
|
|
|
|
|
|
|
|
Version 3.47
|
|
|
|
|
|
|
|
|
|
* The `-l' switch with no argument removes any previous load-average limit.
|
|
|
|
|
|
|
|
|
|
* When the `-w' switch is in effect, and Make has updated makefiles,
|
|
|
|
|
it will write a `Leaving directory' messagfe before re-executing itself.
|
|
|
|
|
This makes the `directory change tracking' changes to Emacs's compilation
|
|
|
|
|
commands work properly.
|
|
|
|
|
|
|
|
|
|
Version 3.46
|
|
|
|
|
|
|
|
|
|
* The automatic variable `$*' is now defined for explicit rules,
|
|
|
|
|
as it is in Unix make.
|
|
|
|
|
|
|
|
|
|
Version 3.45
|
|
|
|
|
|
|
|
|
|
* The `-j' switch is now put in the MAKEFLAGS and MFLAGS variables when
|
|
|
|
|
specified without an argument (indicating infinite jobs).
|
|
|
|
|
The `-l' switch is not always put in the MAKEFLAGS and MFLAGS variables.
|
|
|
|
|
|
|
|
|
|
* Make no longer checks hashed directories after running commands.
|
|
|
|
|
The behavior implemented in 3.41 caused too much slowdown.
|
|
|
|
|
|
|
|
|
|
Version 3.44
|
|
|
|
|
|
|
|
|
|
* A dependency is NOT considered newer than its dependent if
|
|
|
|
|
they have the same modification time. The behavior implemented
|
|
|
|
|
in 3.43 conflicts with RCS.
|
|
|
|
|
|
|
|
|
|
Version 3.43
|
|
|
|
|
|
|
|
|
|
* Dependency loops are no longer fatal errors.
|
|
|
|
|
|
|
|
|
|
* A dependency is considered newer than its dependent if
|
|
|
|
|
they have the same modification time.
|
|
|
|
|
|
|
|
|
|
Version 3.42
|
|
|
|
|
|
|
|
|
|
* The variables F77 and F77FLAGS are now set by default to $(FC) and
|
|
|
|
|
$(FFLAGS). Makefiles designed for System V make may use these variables in
|
|
|
|
|
explicit rules and expect them to be set. Unfortunately, there is no way to
|
|
|
|
|
make setting these affect the Fortran implicit rules unless FC and FFLAGS
|
|
|
|
|
are not used (and these are used by BSD make).
|
|
|
|
|
|
|
|
|
|
Version 3.41
|
|
|
|
|
|
|
|
|
|
* Make now checks to see if its hashed directories are changed by commands.
|
|
|
|
|
Other makes that hash directories (Sun, 4.3 BSD) don't do this.
|
|
|
|
|
|
|
|
|
|
Version 3.39
|
|
|
|
|
|
|
|
|
|
* The `shell' function no longer captures standard error output.
|
|
|
|
|
|
|
|
|
|
Version 3.32
|
|
|
|
|
|
|
|
|
|
* A file beginning with a dot can be the default target if it also contains
|
|
|
|
|
a slash (e.g., `../bin/foo'). (Unix make allows this as well.)
|
|
|
|
|
|
|
|
|
|
Version 3.31
|
|
|
|
|
|
|
|
|
|
* Archive member names are truncated to 15 characters.
|
|
|
|
|
|
|
|
|
|
* Yet more USG stuff.
|
|
|
|
|
|
|
|
|
|
* Minimal support for Microport System V (a 16-bit machine and a
|
|
|
|
|
brain-damaged compiler). This has even lower priority than other USG
|
|
|
|
|
support, so if it gets beyond trivial, I will take it out completely.
|
|
|
|
|
|
|
|
|
|
* Revamped default implicit rules (not much visible change).
|
|
|
|
|
|
|
|
|
|
* The -d and -p options can come from the environment.
|
|
|
|
|
|
|
|
|
|
Version 3.30
|
|
|
|
|
|
|
|
|
|
* Improved support for USG and HPUX (hopefully).
|
|
|
|
|
|
|
|
|
|
* A variable reference like `$(foo:a=b)', if `a' contains a `%', is
|
|
|
|
|
equivalent to `$(patsubst a,b,$(foo))'.
|
|
|
|
|
|
|
|
|
|
* Defining .DEFAULT with no deps or commands clears its commands.
|
|
|
|
|
|
|
|
|
|
* New default implicit rules for .S (cpp, then as), and .sh (copy and make
|
|
|
|
|
executable). All default implicit rules that use cpp (even indirectly), use
|
|
|
|
|
$(CPPFLAGS).
|
|
|
|
|
|
|
|
|
|
Version 3.29
|
|
|
|
|
|
|
|
|
|
* Giving the -j option with no arguments gives you infinite jobs.
|
|
|
|
|
|
|
|
|
|
Version 3.28
|
|
|
|
|
|
|
|
|
|
* New option: "-l LOAD" says not to start any new jobs while others are
|
|
|
|
|
running if the load average is not below LOAD (a floating-point number).
|
|
|
|
|
|
|
|
|
|
* There is support in place for implementations of remote command execution
|
|
|
|
|
in Make. See the file remote.c.
|
|
|
|
|
|
|
|
|
|
Version 3.26
|
|
|
|
|
|
|
|
|
|
* No more than 10 directories will be kept open at once.
|
|
|
|
|
(This number can be changed by redefining MAX_OPEN_DIRECTORIES in dir.c.)
|
|
|
|
|
|
|
|
|
|
Version 3.25
|
|
|
|
|
|
|
|
|
|
* Archive files will have their modification times recorded before doing
|
|
|
|
|
anything that might change their modification times by updating an archive
|
|
|
|
|
member.
|
|
|
|
|
|
|
|
|
|
Version 3.20
|
|
|
|
|
|
|
|
|
|
* The `MAKELEVEL' variable is defined for use by makefiles.
|
|
|
|
|
|
|
|
|
|
Version 3.19
|
|
|
|
|
|
|
|
|
|
* The recursion level indications in error messages are much shorter than
|
|
|
|
|
they were in version 3.14.
|
|
|
|
|
|
|
|
|
|
Version 3.18
|
|
|
|
|
|
|
|
|
|
* Leading spaces before directives are ignored (as documented).
|
|
|
|
|
|
|
|
|
|
* Included makefiles can determine the default goal target.
|
|
|
|
|
(System V Make does it this way, so we are being compatible).
|
|
|
|
|
|
|
|
|
|
Version 3.14.
|
|
|
|
|
|
|
|
|
|
* Variables that are defaults built into Make will not be put in the
|
|
|
|
|
environment for children. This just saves some environment space and,
|
|
|
|
|
except under -e, will be transparent to sub-makes.
|
|
|
|
|
|
|
|
|
|
* Error messages from sub-makes will indicate the level of recursion.
|
|
|
|
|
|
|
|
|
|
* Hopefully some speed-up for large directories due to a change in the
|
|
|
|
|
directory hashing scheme.
|
|
|
|
|
|
|
|
|
|
* One child will always get a standard input that is usable.
|
|
|
|
|
|
|
|
|
|
* Default makefiles that don't exist will be remade and read in.
|
|
|
|
|
|
|
|
|
|
Version 3.13.
|
|
|
|
|
|
|
|
|
|
* Count parentheses inside expansion function calls so you can
|
|
|
|
|
have nested calls: `$(sort $(foreach x,a b,$(x)))'.
|
|
|
|
|
|
|
|
|
|
Version 3.12.
|
|
|
|
|
|
|
|
|
|
* Several bug fixes, including USG and Sun386i support.
|
|
|
|
|
|
|
|
|
|
* `shell' function to expand shell commands a la `
|
|
|
|
|
|
|
|
|
|
* If the `-d' flag is given, version information will be printed.
|
|
|
|
|
|
|
|
|
|
* The `-c' option has been renamed to `-C' for compatibility with tar.
|
|
|
|
|
|
|
|
|
|
* The `-p' option no longer inhibits other normal operation.
|
|
|
|
|
|
|
|
|
|
* Makefiles will be updated and re-read if necessary.
|
|
|
|
|
|
|
|
|
|
* Can now run several commands at once (parallelism), -j option.
|
|
|
|
|
|
|
|
|
|
* Error messages will contain the level of Make recursion, if any.
|
|
|
|
|
|
|
|
|
|
* The `MAKEFLAGS' and `MFLAGS' variables will be scanned for options after
|
|
|
|
|
makefiles are read.
|
|
|
|
|
|
|
|
|
|
* A double-colon rule with no dependencies will always have its commands run.
|
|
|
|
|
(This is how both the BSD and System V versions of Make do it.)
|
|
|
|
|
|
|
|
|
|
Version 3.05
|
|
|
|
|
|
|
|
|
|
(Changes from versions 1 through 3.05 were never recorded. Sorry.)
|
|
|
|
|
|
|
|
|
|
----------------------------------------------------------------------
|
|
|
|
|
Copyright information:
|
|
|
|
|
|
|
|
|
|
Permission is granted to anyone to make or distribute verbatim copies
|
|
|
|
|
of this document as received, in any medium, provided that the
|
1999-02-22 07:23:30 +00:00
|
|
|
|
copyright notice and this permission notice are preserved, thus
|
|
|
|
|
giving the recipient permission to redistribute in turn.
|
1995-03-07 23:44:43 +00:00
|
|
|
|
|
1999-02-22 07:23:30 +00:00
|
|
|
|
Permission is granted to distribute modified versions of this
|
|
|
|
|
document, or of portions of it, under the above conditions, provided
|
|
|
|
|
also that they carry prominent notices stating who last changed them.
|