1 | GNU make NEWS -*-indented-text-*- |
---|
2 | History of user-visible changes. |
---|
3 | 23 Jun 2000 |
---|
4 | |
---|
5 | Copyright (C) 1992,93,94,95,96,97,98,99,2000 Free Software Foundation, Inc. |
---|
6 | See the end for copying conditions. |
---|
7 | |
---|
8 | All changes mentioned here are more fully described in the GNU make |
---|
9 | manual, which is contained in this distribution as the file make.texinfo. |
---|
10 | |
---|
11 | Please send GNU make bug reports to <bug-make@gnu.org>. |
---|
12 | See the README file and the GNU make manual for details on sending bug |
---|
13 | reports. |
---|
14 | |
---|
15 | Version 3.79.1 |
---|
16 | |
---|
17 | * .SECONDARY with no prerequisites now prevents any target from being |
---|
18 | removed because make thinks it's an intermediate file, not just those |
---|
19 | listed in the makefile. |
---|
20 | |
---|
21 | * New configure option --disable-nsec-timestamps will keep make from |
---|
22 | using sub-second timestamps on systems which support it. If your |
---|
23 | build process depends on proper timestamp-preserving behavior of tools |
---|
24 | like "cp -p" you might need this option, since "cp -p" (right now) |
---|
25 | doesn't preserve the sub-second portion of the timestamp. |
---|
26 | |
---|
27 | Version 3.79 |
---|
28 | |
---|
29 | * GNU make optionally supports internationalization and locales via the |
---|
30 | GNU gettext (or local gettext if suitable) package. See the ABOUT-NLS |
---|
31 | file for more information on configuring GNU make for NLS. |
---|
32 | |
---|
33 | * Previously, GNU make quoted variables such as MAKEFLAGS and |
---|
34 | MAKEOVERRIDES for proper parsing by the shell. This allowed them to |
---|
35 | be used within make build scripts. However, using them there is not |
---|
36 | proper behavior: they are meant to be passed to subshells via the |
---|
37 | environment. Unfortunately the values were not quoted properly to be |
---|
38 | passed through the environment. This meant that make didn't properly |
---|
39 | pass some types of command line values to submakes. |
---|
40 | |
---|
41 | With this version we change that behavior: now these variables are |
---|
42 | quoted properly for passing through the environment, which is the |
---|
43 | correct way to do it. If you previously used these variables |
---|
44 | explicitly within a make rule you may need to re-examine your use for |
---|
45 | correctness given this change. |
---|
46 | |
---|
47 | * A new psuedo-target .NOTPARALLEL is available. If defined, the |
---|
48 | current makefile is run serially regardless of the value of -j. |
---|
49 | However, submakes are still eligible for parallel execution. |
---|
50 | |
---|
51 | * The --debug option has changed: it now allows optional flags |
---|
52 | controlling the amount and type of debugging output. By default only |
---|
53 | a minimal amount information is generated, displaying the names of |
---|
54 | "normal" targets (not makefiles) that were deemed out of date and in |
---|
55 | need of being rebuilt. |
---|
56 | |
---|
57 | Note that the -d option behaves as before: it takes no arguments and |
---|
58 | all debugging information is generated. |
---|
59 | |
---|
60 | * The `-p' (print database) output now includes filename and linenumber |
---|
61 | information for variable definitions, to aid debugging. |
---|
62 | |
---|
63 | * The wordlist function no longer reverses its arguments if the "start" |
---|
64 | value is greater than the "end" value. If that's true, nothing is |
---|
65 | returned. |
---|
66 | |
---|
67 | * Hartmut Becker provided many updates for the VMS port of GNU make. |
---|
68 | See the readme.vms file for more details. |
---|
69 | |
---|
70 | Version 3.78 |
---|
71 | |
---|
72 | * Two new functions, $(error ...) and $(warning ...) are available. The |
---|
73 | former will cause make to fail and exit immediately upon expansion of |
---|
74 | the function, with the text provided as the error message. The latter |
---|
75 | causes the text provided to be printed as a warning message, but make |
---|
76 | proceeds normally. |
---|
77 | |
---|
78 | * A new function $(call ...) is available. This allows users to create |
---|
79 | their own parameterized macros and invoke them later. Original |
---|
80 | implementation of this function was provided by Han-Wen Nienhuys |
---|
81 | <hanwen@cs.uu.nl>. |
---|
82 | |
---|
83 | * A new function $(if ...) is available. It provides if-then-else |
---|
84 | capabilities in a builtin function. Original implementation of this |
---|
85 | function was provided by Han-Wen Nienhuys <hanwen@cs.uu.nl>. |
---|
86 | |
---|
87 | * Make defines a new variable, .LIBPATTERNS. This variable controls how |
---|
88 | library dependency expansion (dependencies like ``-lfoo'') is performed. |
---|
89 | |
---|
90 | * Make accepts CRLF sequences as well as traditional LF, for |
---|
91 | compatibility with makefiles created on other operating systems. |
---|
92 | |
---|
93 | * Make accepts a new option: -R, or --no-builtin-variables. This option |
---|
94 | disables the definition of the rule-specific builtin variables (CC, |
---|
95 | LD, AR, etc.). Specifying this option forces -r (--no-builtin-rules) |
---|
96 | as well. |
---|
97 | |
---|
98 | * A "job server" feature, suggested by Howard Chu <hyc@highlandsun.com>. |
---|
99 | |
---|
100 | On systems that support POSIX pipe(2) semantics, GNU make can now pass |
---|
101 | -jN options to submakes rather than forcing them all to use -j1. The |
---|
102 | top make and all its sub-make processes use a pipe to communicate with |
---|
103 | each other to ensure that no more than N jobs are started across all |
---|
104 | makes. To get the old behavior of -j back, you can configure make |
---|
105 | with the --disable-job-server option. |
---|
106 | |
---|
107 | * The confusing term "dependency" has been replaced by the more accurate |
---|
108 | and standard term "prerequisite", both in the manual and in all GNU make |
---|
109 | output. |
---|
110 | |
---|
111 | * GNU make supports the "big archive" library format introduced in AIX 4.3. |
---|
112 | |
---|
113 | * GNU make supports large files on AIX, HP-UX, and IRIX. These changes |
---|
114 | were provided by Paul Eggert <eggert@twinsun.com>. (Large file |
---|
115 | support for Solaris and Linux was introduced in 3.77, but the |
---|
116 | configuration had issues: these have also been resolved). |
---|
117 | |
---|
118 | * The Windows 95/98/NT (W32) version of GNU make now has native support |
---|
119 | for the Cygnus Cygwin release B20.1 shell (bash). |
---|
120 | |
---|
121 | * The GNU make regression test suite, long available separately "under |
---|
122 | the table", has been integrated into the release. You can invoke it |
---|
123 | by running "make check" in the distribution. Note that it requires |
---|
124 | Perl (either Perl 4 or Perl 5) to run. |
---|
125 | |
---|
126 | Version 3.77 |
---|
127 | |
---|
128 | * Implement BSD make's "?=" variable assignment operator. The variable |
---|
129 | is assigned the specified value only if that variable is not already |
---|
130 | defined. |
---|
131 | |
---|
132 | * Make defines a new variable, "CURDIR", to contain the current working |
---|
133 | directory (after the -C option, if any, has been processed). |
---|
134 | Modifying this variable has no effect on the operation of make. |
---|
135 | |
---|
136 | * Make defines a new default RCS rule, for new-style master file |
---|
137 | storage: ``% :: RCS/%'' (note no ``,v'' suffix). |
---|
138 | |
---|
139 | Make defines new default rules for DOS-style C++ file naming |
---|
140 | conventions, with ``.cpp'' suffixes. All the same rules as for |
---|
141 | ``.cc'' and ``.C'' suffixes are provided, along with LINK.cpp and |
---|
142 | COMPILE.cpp macros (which default to the same value as LINK.cc and |
---|
143 | COMPILE.cc). Note CPPFLAGS is still C preprocessor flags! You should |
---|
144 | use CXXFLAGS to change C++ compiler flags. |
---|
145 | |
---|
146 | * A new feature, "target-specific variable values", has been added. |
---|
147 | This is a large change so please see the appropriate sections of the |
---|
148 | manual for full details. Briefly, syntax like this: |
---|
149 | |
---|
150 | TARGET: VARIABLE = VALUE |
---|
151 | |
---|
152 | defines VARIABLE as VALUE within the context of TARGET. This is |
---|
153 | similar to SunOS make's "TARGET := VARIABLE = VALUE" feature. Note |
---|
154 | that the assignment may be of any type, not just recursive, and that |
---|
155 | the override keyword is available. |
---|
156 | |
---|
157 | COMPATIBILITY: This new syntax means that if you have any rules where |
---|
158 | the first or second dependency has an equal sign (=) in its name, |
---|
159 | you'll have to escape them with a backslash: "foo : bar\=baz". |
---|
160 | Further, if you have any dependencies which already contain "\=", |
---|
161 | you'll have to escape both of them: "foo : bar\\\=baz". |
---|
162 | |
---|
163 | * A new appendix listing the most common error and warning messages |
---|
164 | generated by GNU make, with some explanation, has been added to the |
---|
165 | GNU make User's Manual. |
---|
166 | |
---|
167 | * Updates to the GNU make Customs library support (see README.customs). |
---|
168 | |
---|
169 | * Updates to the Windows 95/NT port from Rob Tulloh (see README.W32), |
---|
170 | and to the DOS port from Eli Zaretski (see README.DOS). |
---|
171 | |
---|
172 | Version 3.76.1 |
---|
173 | |
---|
174 | * Small (but serious) bug fix. Quick rollout to get into the GNU source CD. |
---|
175 | |
---|
176 | Version 3.76 |
---|
177 | |
---|
178 | * GNU make now uses automake to control Makefile.in generation. This |
---|
179 | should make it more consistent with the GNU standards. |
---|
180 | |
---|
181 | * VPATH functionality has been changed to incorporate the VPATH+ patch, |
---|
182 | previously maintained by Paul Smith <psmith@baynetworks.com>. See the |
---|
183 | manual. |
---|
184 | |
---|
185 | * Make defines a new variable, `MAKECMDGOALS', to contain the goals that |
---|
186 | were specified on the command line, if any. Modifying this variable |
---|
187 | has no effect on the operation of make. |
---|
188 | |
---|
189 | * A new function, `$(wordlist S,E,TEXT)', is available: it returns a |
---|
190 | list of words from number S to number E (inclusive) of TEXT. |
---|
191 | |
---|
192 | * Instead of an error, detection of future modification times gives a |
---|
193 | warning and continues. The warning is repeated just before GNU make |
---|
194 | exits, so it is less likely to be lost. |
---|
195 | |
---|
196 | * Fix the $(basename) and $(suffix) functions so they only operate on |
---|
197 | the last filename, not the entire string: |
---|
198 | |
---|
199 | Command Old Result New Result |
---|
200 | ------- ---------- ---------- |
---|
201 | $(basename a.b) a a |
---|
202 | $(basename a.b/c) a a.b/c |
---|
203 | $(suffix a.b) b b |
---|
204 | $(suffix a.b/c) b/c <empty> |
---|
205 | |
---|
206 | * The $(strip) function now removes newlines as well as TABs and spaces. |
---|
207 | |
---|
208 | * The $(shell) function now changes CRLF (\r\n) pairs to a space as well |
---|
209 | as newlines (\n). |
---|
210 | |
---|
211 | * Updates to the Windows 95/NT port from Rob Tulloh (see README.W32). |
---|
212 | |
---|
213 | * Eli Zaretskii has updated the port to 32-bit protected mode on MSDOS |
---|
214 | and MS-Windows, building with the DJGPP v2 port of GNU C/C++ compiler |
---|
215 | and utilities. See README.DOS for details, and direct all questions |
---|
216 | concerning this port to Eli Zaretskii <eliz@is.elta.co.il> or DJ |
---|
217 | Delorie <dj@delorie.com>. |
---|
218 | |
---|
219 | * John W. Eaton has updated the VMS port to support libraries and VPATH. |
---|
220 | |
---|
221 | Version 3.75 |
---|
222 | |
---|
223 | * The directory messages printed by `-w' and implicitly in sub-makes, |
---|
224 | are now omitted if Make runs no commands and has no other messages to print. |
---|
225 | |
---|
226 | * Make now detects files that for whatever reason have modification times |
---|
227 | in the future and gives an error. Files with such impossible timestamps |
---|
228 | can result from unsynchronized clocks, or archived distributions |
---|
229 | containing bogus timestamps; they confuse Make's dependency engine |
---|
230 | thoroughly. |
---|
231 | |
---|
232 | * The new directive `sinclude' is now recognized as another name for |
---|
233 | `-include', for compatibility with some other Makes. |
---|
234 | |
---|
235 | * Aaron Digulla has contributed a port to AmigaDOS. See README.Amiga for |
---|
236 | details, and direct all Amiga-related questions to <digulla@fh-konstanz.de>. |
---|
237 | |
---|
238 | * Rob Tulloh of Tivoli Systems has contributed a port to Windows NT or 95. |
---|
239 | See README.W32 for details, and direct all Windows-related questions to |
---|
240 | <rob_tulloh@tivoli.com>. |
---|
241 | |
---|
242 | Version 3.73 |
---|
243 | |
---|
244 | * Converted to use Autoconf version 2, so `configure' has some new options. |
---|
245 | See INSTALL for details. |
---|
246 | |
---|
247 | * You can now send a SIGUSR1 signal to Make to toggle printing of debugging |
---|
248 | output enabled by -d, at any time during the run. |
---|
249 | |
---|
250 | Version 3.72 |
---|
251 | |
---|
252 | * DJ Delorie has ported Make to MS-DOS using the GO32 extender. |
---|
253 | He is maintaining the DOS port, not the GNU Make maintainer; |
---|
254 | please direct bugs and questions for DOS to <djgpp@sun.soe.clarkson.edu>. |
---|
255 | MS-DOS binaries are available for FTP from ftp.simtel.net in |
---|
256 | /pub/simtelnet/gnu/djgpp/. |
---|
257 | |
---|
258 | * The `MAKEFLAGS' variable (in the environment or in a makefile) can now |
---|
259 | contain variable definitions itself; these are treated just like |
---|
260 | command-line variable definitions. Make will automatically insert any |
---|
261 | variable definitions from the environment value of `MAKEFLAGS' or from |
---|
262 | the command line, into the `MAKEFLAGS' value exported to children. The |
---|
263 | `MAKEOVERRIDES' variable previously included in the value of `$(MAKE)' |
---|
264 | for sub-makes is now included in `MAKEFLAGS' instead. As before, you can |
---|
265 | reset `MAKEOVERRIDES' in your makefile to avoid putting all the variables |
---|
266 | in the environment when its size is limited. |
---|
267 | |
---|
268 | * If `.DELETE_ON_ERROR' appears as a target, Make will delete the target of |
---|
269 | a rule if it has changed when its commands exit with a nonzero status, |
---|
270 | just as when the commands get a signal. |
---|
271 | |
---|
272 | * The automatic variable `$+' is new. It lists all the dependencies like |
---|
273 | `$^', but preserves duplicates listed in the makefile. This is useful |
---|
274 | for linking rules, where library files sometimes need to be listed twice |
---|
275 | in the link order. |
---|
276 | |
---|
277 | * You can now specify the `.IGNORE' and `.SILENT' special targets with |
---|
278 | dependencies to limit their effects to those files. If a file appears as |
---|
279 | a dependency of `.IGNORE', then errors will be ignored while running the |
---|
280 | commands to update that file. Likewise if a file appears as a dependency |
---|
281 | of `.SILENT', then the commands to update that file will not be printed |
---|
282 | before they are run. (This change was made to conform to POSIX.2.) |
---|
283 | |
---|
284 | Version 3.71 |
---|
285 | |
---|
286 | * The automatic variables `$(@D)', `$(%D)', `$(*D)', `$(<D)', `$(?D)', and |
---|
287 | `$(^D)' now omit the trailing slash from the directory name. (This change |
---|
288 | was made to comply with POSIX.2.) |
---|
289 | |
---|
290 | * The source distribution now includes the Info files for the Make manual. |
---|
291 | There is no longer a separate distribution containing Info and DVI files. |
---|
292 | |
---|
293 | * You can now set the variables `binprefix' and/or `manprefix' in |
---|
294 | Makefile.in (or on the command line when installing) to install GNU make |
---|
295 | under a name other than `make' (i.e., ``make binprefix=g install'' |
---|
296 | installs GNU make as `gmake'). |
---|
297 | |
---|
298 | * The built-in Texinfo rules use the new variables `TEXI2DVI_FLAGS' for |
---|
299 | flags to the `texi2dvi' script, and `MAKEINFO_FLAGS' for flags to the |
---|
300 | Makeinfo program. |
---|
301 | |
---|
302 | * The exit status of Make when it runs into errors is now 2 instead of 1. |
---|
303 | The exit status is 1 only when using -q and some target is not up to date. |
---|
304 | (This change was made to comply with POSIX.2.) |
---|
305 | |
---|
306 | Version 3.70 |
---|
307 | |
---|
308 | * It is no longer a fatal error to have a NUL character in a makefile. |
---|
309 | You should never put a NUL in a makefile because it can have strange |
---|
310 | results, but otherwise empty lines full of NULs (such as produced by |
---|
311 | the `xmkmf' program) will always work fine. |
---|
312 | |
---|
313 | * The error messages for nonexistent included makefiles now refer to the |
---|
314 | makefile name and line number where the `include' appeared, so Emacs's |
---|
315 | C-x ` command takes you there (in case it's a typo you need to fix). |
---|
316 | |
---|
317 | Version 3.69 |
---|
318 | |
---|
319 | * Implicit rule search for archive member references is now done in the |
---|
320 | opposite order from previous versions: the whole target name `LIB(MEM)' |
---|
321 | first, and just the member name and parentheses `(MEM)' second. |
---|
322 | |
---|
323 | * Make now gives an error for an unterminated variable or function reference. |
---|
324 | For example, `$(foo' with no matching `)' or `${bar' with no matching `}'. |
---|
325 | |
---|
326 | * The new default variable `MAKE_VERSION' gives the version number of |
---|
327 | Make, and a string describing the remote job support compiled in (if any). |
---|
328 | Thus the value (in this release) is something like `3.69' or `3.69-Customs'. |
---|
329 | |
---|
330 | * Commands in an invocation of the `shell' function are no longer run with |
---|
331 | a modified environment like target commands are. As in versions before |
---|
332 | 3.68, they now run with the environment that `make' started with. We |
---|
333 | have reversed the change made in version 3.68 because it turned out to |
---|
334 | cause a paradoxical situation in cases like: |
---|
335 | |
---|
336 | export variable = $(shell echo value) |
---|
337 | |
---|
338 | When Make attempted to put this variable in the environment for a target |
---|
339 | command, it would try expand the value by running the shell command |
---|
340 | `echo value'. In version 3.68, because it constructed an environment |
---|
341 | for that shell command in the same way, Make would begin to go into an |
---|
342 | infinite loop and then get a fatal error when it detected the loop. |
---|
343 | |
---|
344 | * The commands given for `.DEFAULT' are now used for phony targets with no |
---|
345 | commands. |
---|
346 | |
---|
347 | Version 3.68 |
---|
348 | |
---|
349 | * You can list several archive member names inside parenthesis: |
---|
350 | `lib(mem1 mem2 mem3)' is equivalent to `lib(mem1) lib(mem2) lib(mem3)'. |
---|
351 | |
---|
352 | * You can use wildcards inside archive member references. For example, |
---|
353 | `lib(*.o)' expands to all existing members of `lib' whose names end in |
---|
354 | `.o' (e.g. `lib(a.o) lib(b.o)'); `*.a(*.o)' expands to all such members |
---|
355 | of all existing files whose names end in `.a' (e.g. `foo.a(a.o) |
---|
356 | foo.a(b.o) bar.a(c.o) bar.a(d.o)'. |
---|
357 | |
---|
358 | * A suffix rule `.X.a' now produces two pattern rules: |
---|
359 | (%.o): %.X # Previous versions produced only this. |
---|
360 | %.a: %.X # Now produces this as well, just like other suffixes. |
---|
361 | |
---|
362 | * The new flag `--warn-undefined-variables' says to issue a warning message |
---|
363 | whenever Make expands a reference to an undefined variable. |
---|
364 | |
---|
365 | * The new `-include' directive is just like `include' except that there is |
---|
366 | no error (not even a warning) for a nonexistent makefile. |
---|
367 | |
---|
368 | * Commands in an invocation of the `shell' function are now run with a |
---|
369 | modified environment like target commands are, so you can use `export' et |
---|
370 | al to set up variables for them. They used to run with the environment |
---|
371 | that `make' started with. |
---|
372 | |
---|
373 | Version 3.66 |
---|
374 | |
---|
375 | * `make --version' (or `make -v') now exits immediately after printing |
---|
376 | the version number. |
---|
377 | |
---|
378 | Version 3.65 |
---|
379 | |
---|
380 | * Make now supports long-named members in `ar' archive files. |
---|
381 | |
---|
382 | Version 3.64 |
---|
383 | |
---|
384 | * Make now supports the `+=' syntax for a variable definition which appends |
---|
385 | to the variable's previous value. See the section `Appending More Text |
---|
386 | to Variables' in the manual for full details. |
---|
387 | |
---|
388 | * The new option `--no-print-directory' inhibits the `-w' or |
---|
389 | `--print-directory' feature. Make turns on `--print-directory' |
---|
390 | automatically if you use `-C' or `--directory', and in sub-makes; some |
---|
391 | users have found this behavior undesirable. |
---|
392 | |
---|
393 | * The built-in implicit rules now support the alternative extension |
---|
394 | `.txinfo' for Texinfo files, just like `.texinfo' and `.texi'. |
---|
395 | |
---|
396 | Version 3.63 |
---|
397 | |
---|
398 | * Make now uses a standard GNU `configure' script. See the new file |
---|
399 | INSTALL for the new (and much simpler) installation procedure. |
---|
400 | |
---|
401 | * There is now a shell script to build Make the first time, if you have no |
---|
402 | other `make' program. `build.sh' is created by `configure'; see README. |
---|
403 | |
---|
404 | * GNU Make now completely conforms to the POSIX.2 specification for `make'. |
---|
405 | |
---|
406 | * Elements of the `$^' and `$?' automatic variables that are archive |
---|
407 | member references now list only the member name, as in Unix and POSIX.2. |
---|
408 | |
---|
409 | * You should no longer ever need to specify the `-w' switch, which prints |
---|
410 | the current directory before and after Make runs. The `-C' switch to |
---|
411 | change directory, and recursive use of Make, now set `-w' automatically. |
---|
412 | |
---|
413 | * Multiple double-colon rules for the same target will no longer have their |
---|
414 | commands run simultaneously under -j, as this could result in the two |
---|
415 | commands trying to change the file at the same time and interfering with |
---|
416 | one another. |
---|
417 | |
---|
418 | * The `SHELL' variable is now never taken from the environment. |
---|
419 | Each makefile that wants a shell other than the default (/bin/sh) must |
---|
420 | set SHELL itself. SHELL is always exported to child processes. |
---|
421 | This change was made for compatibility with POSIX.2. |
---|
422 | |
---|
423 | * Make now accepts long options. There is now an informative usage message |
---|
424 | that tells you what all the options are and what they do. Try `make --help'. |
---|
425 | |
---|
426 | * There are two new directives: `export' and `unexport'. All variables are |
---|
427 | no longer automatically put into the environments of the commands that |
---|
428 | Make runs. Instead, only variables specified on the command line or in |
---|
429 | the environment are exported by default. To export others, use: |
---|
430 | export VARIABLE |
---|
431 | or you can define variables with: |
---|
432 | export VARIABLE = VALUE |
---|
433 | or: |
---|
434 | export VARIABLE := VALUE |
---|
435 | You can use just: |
---|
436 | export |
---|
437 | or: |
---|
438 | .EXPORT_ALL_VARIABLES: |
---|
439 | to get the old behavior. See the node `Variables/Recursion' in the manual |
---|
440 | for a full description. |
---|
441 | |
---|
442 | * The commands from the `.DEFAULT' special target are only applied to |
---|
443 | targets which have no rules at all, not all targets with no commands. |
---|
444 | This change was made for compatibility with Unix make. |
---|
445 | |
---|
446 | * All fatal error messages now contain `***', so they are easy to find in |
---|
447 | compilation logs. |
---|
448 | |
---|
449 | * Dependency file names like `-lNAME' are now replaced with the actual file |
---|
450 | name found, as with files found by normal directory search (VPATH). |
---|
451 | The library file `libNAME.a' may now be found in the current directory, |
---|
452 | which is checked before VPATH; the standard set of directories (/lib, |
---|
453 | /usr/lib, /usr/local/lib) is now checked last. |
---|
454 | See the node `Libraries/Search' in the manual for full details. |
---|
455 | |
---|
456 | * A single `include' directive can now specify more than one makefile to |
---|
457 | include, like this: |
---|
458 | include file1 file2 |
---|
459 | You can also use shell file name patterns in an `include' directive: |
---|
460 | include *.mk |
---|
461 | |
---|
462 | * The default directories to search for included makefiles, and for |
---|
463 | libraries specified with `-lNAME', are now set by configuration. |
---|
464 | |
---|
465 | * You can now use blanks as well as colons to separate the directories in a |
---|
466 | search path for the `vpath' directive or the `VPATH' variable. |
---|
467 | |
---|
468 | * You can now use variables and functions in the left hand side of a |
---|
469 | variable assignment, as in "$(foo)bar = value". |
---|
470 | |
---|
471 | * The `MAKE' variable is always defined as `$(MAKE_COMMAND) $(MAKEOVERRIDES)'. |
---|
472 | The `MAKE_COMMAND' variable is now defined to the name with which make |
---|
473 | was invoked. |
---|
474 | |
---|
475 | * The built-in rules for C++ compilation now use the variables `$(CXX)' and |
---|
476 | `$(CXXFLAGS)' instead of `$(C++)' and `$(C++FLAGS)'. The old names had |
---|
477 | problems with shells that cannot have `+' in environment variable names. |
---|
478 | |
---|
479 | * The value of a recursively expanded variable is now expanded when putting |
---|
480 | it into the environment for child processes. This change was made for |
---|
481 | compatibility with Unix make. |
---|
482 | |
---|
483 | * A rule with no targets before the `:' is now accepted and ignored. |
---|
484 | This change was made for compatibility with SunOS 4 make. |
---|
485 | We do not recommend that you write your makefiles to take advantage of this. |
---|
486 | |
---|
487 | * The `-I' switch can now be used in MAKEFLAGS, and are put there |
---|
488 | automatically just like other switches. |
---|
489 | |
---|
490 | Version 3.61 |
---|
491 | |
---|
492 | * Built-in rules for C++ source files with the `.C' suffix. |
---|
493 | We still recommend that you use `.cc' instead. |
---|
494 | |
---|
495 | * If commands are given too many times for a single target, |
---|
496 | the last set given is used, and a warning message is printed. |
---|
497 | |
---|
498 | * Error messages about makefiles are in standard GNU error format, |
---|
499 | so C-x ` in Emacs works on them. |
---|
500 | |
---|
501 | * Dependencies of pattern rules which contain no % need not actually exist |
---|
502 | if they can be created (just like dependencies which do have a %). |
---|
503 | |
---|
504 | Version 3.60 |
---|
505 | |
---|
506 | * A message is always printed when Make decides there is nothing to be done. |
---|
507 | It used to be that no message was printed for top-level phony targets |
---|
508 | (because "`phony' is up to date" isn't quite right). Now a different |
---|
509 | message "Nothing to be done for `phony'" is printed in that case. |
---|
510 | |
---|
511 | * Archives on AIX now supposedly work. |
---|
512 | |
---|
513 | * When the commands specified for .DEFAULT are used to update a target, |
---|
514 | the $< automatic variable is given the same value as $@ for that target. |
---|
515 | This is how Unix make behaves, and this behavior is mandated by POSIX.2. |
---|
516 | |
---|
517 | Version 3.59 |
---|
518 | |
---|
519 | * The -n, -q, and -t options are not put in the `MAKEFLAGS' and `MFLAG' |
---|
520 | variables while remaking makefiles, so recursive makes done while remaking |
---|
521 | makefiles will behave properly. |
---|
522 | |
---|
523 | * If the special target `.NOEXPORT' is specified in a makefile, |
---|
524 | only variables that came from the environment and variables |
---|
525 | defined on the command line are exported. |
---|
526 | |
---|
527 | Version 3.58 |
---|
528 | |
---|
529 | * Suffix rules may have dependencies (which are ignored). |
---|
530 | |
---|
531 | Version 3.57 |
---|
532 | |
---|
533 | * Dependencies of the form `-lLIB' are searched for as /usr/local/lib/libLIB.a |
---|
534 | as well as libLIB.a in /usr/lib, /lib, the current directory, and VPATH. |
---|
535 | |
---|
536 | Version 3.55 |
---|
537 | |
---|
538 | * There is now a Unix man page for GNU Make. It is certainly not a replacement |
---|
539 | for the Texinfo manual, but it documents the basic functionality and the |
---|
540 | switches. For full documentation, you should still read the Texinfo manual. |
---|
541 | Thanks to Dennis Morse of Stanford University for contributing the initial |
---|
542 | version of this. |
---|
543 | |
---|
544 | * Variables which are defined by default (e.g., `CC') will no longer be put |
---|
545 | into the environment for child processes. (If these variables are reset by the |
---|
546 | environment, makefiles, or the command line, they will still go into the |
---|
547 | environment.) |
---|
548 | |
---|
549 | * Makefiles which have commands but no dependencies (and thus are always |
---|
550 | considered out of date and in need of remaking), will not be remade (if they |
---|
551 | were being remade only because they were makefiles). This means that GNU |
---|
552 | Make will no longer go into an infinite loop when fed the makefiles that |
---|
553 | `imake' (necessary to build X Windows) produces. |
---|
554 | |
---|
555 | * There is no longer a warning for using the `vpath' directive with an explicit |
---|
556 | pathname (instead of a `%' pattern). |
---|
557 | |
---|
558 | Version 3.51 |
---|
559 | |
---|
560 | * When removing intermediate files, only one `rm' command line is printed, |
---|
561 | listing all file names. |
---|
562 | |
---|
563 | * There are now automatic variables `$(^D)', `$(^F)', `$(?D)', and `$(?F)'. |
---|
564 | These are the directory-only and file-only versions of `$^' and `$?'. |
---|
565 | |
---|
566 | * Library dependencies given as `-lNAME' will use "libNAME.a" in the current |
---|
567 | directory if it exists. |
---|
568 | |
---|
569 | * The automatic variable `$($/)' is no longer defined. |
---|
570 | |
---|
571 | * Leading `+' characters on a command line make that line be executed even |
---|
572 | under -n, -t, or -q (as if the line contained `$(MAKE)'). |
---|
573 | |
---|
574 | * For command lines containing `$(MAKE)', `${MAKE}', or leading `+' characters, |
---|
575 | only those lines are executed, not their entire rules. |
---|
576 | (This is how Unix make behaves for lines containing `$(MAKE)' or `${MAKE}'.) |
---|
577 | |
---|
578 | Version 3.50 |
---|
579 | |
---|
580 | * Filenames in rules will now have ~ and ~USER expanded. |
---|
581 | |
---|
582 | * The `-p' output has been changed so it can be used as a makefile. |
---|
583 | (All information that isn't specified by makefiles is prefaced with comment |
---|
584 | characters.) |
---|
585 | |
---|
586 | Version 3.49 |
---|
587 | |
---|
588 | * The % character can be quoted with backslash in implicit pattern rules, |
---|
589 | static pattern rules, `vpath' directives, and `patsubst', `filter', and |
---|
590 | `filter-out' functions. A warning is issued if a `vpath' directive's |
---|
591 | pattern contains no %. |
---|
592 | |
---|
593 | * The `wildcard' variable expansion function now expands ~ and ~USER. |
---|
594 | |
---|
595 | * Messages indicating failed commands now contain the target name: |
---|
596 | make: *** [target] Error 1 |
---|
597 | |
---|
598 | * The `-p' output format has been changed somewhat to look more like |
---|
599 | makefile rules and to give all information that Make has about files. |
---|
600 | |
---|
601 | Version 3.48 |
---|
602 | |
---|
603 | Version 3.47 |
---|
604 | |
---|
605 | * The `-l' switch with no argument removes any previous load-average limit. |
---|
606 | |
---|
607 | * When the `-w' switch is in effect, and Make has updated makefiles, |
---|
608 | it will write a `Leaving directory' messagfe before re-executing itself. |
---|
609 | This makes the `directory change tracking' changes to Emacs's compilation |
---|
610 | commands work properly. |
---|
611 | |
---|
612 | Version 3.46 |
---|
613 | |
---|
614 | * The automatic variable `$*' is now defined for explicit rules, |
---|
615 | as it is in Unix make. |
---|
616 | |
---|
617 | Version 3.45 |
---|
618 | |
---|
619 | * The `-j' switch is now put in the MAKEFLAGS and MFLAGS variables when |
---|
620 | specified without an argument (indicating infinite jobs). |
---|
621 | The `-l' switch is not always put in the MAKEFLAGS and MFLAGS variables. |
---|
622 | |
---|
623 | * Make no longer checks hashed directories after running commands. |
---|
624 | The behavior implemented in 3.41 caused too much slowdown. |
---|
625 | |
---|
626 | Version 3.44 |
---|
627 | |
---|
628 | * A dependency is NOT considered newer than its dependent if |
---|
629 | they have the same modification time. The behavior implemented |
---|
630 | in 3.43 conflicts with RCS. |
---|
631 | |
---|
632 | Version 3.43 |
---|
633 | |
---|
634 | * Dependency loops are no longer fatal errors. |
---|
635 | |
---|
636 | * A dependency is considered newer than its dependent if |
---|
637 | they have the same modification time. |
---|
638 | |
---|
639 | Version 3.42 |
---|
640 | |
---|
641 | * The variables F77 and F77FLAGS are now set by default to $(FC) and |
---|
642 | $(FFLAGS). Makefiles designed for System V make may use these variables in |
---|
643 | explicit rules and expect them to be set. Unfortunately, there is no way to |
---|
644 | make setting these affect the Fortran implicit rules unless FC and FFLAGS |
---|
645 | are not used (and these are used by BSD make). |
---|
646 | |
---|
647 | Version 3.41 |
---|
648 | |
---|
649 | * Make now checks to see if its hashed directories are changed by commands. |
---|
650 | Other makes that hash directories (Sun, 4.3 BSD) don't do this. |
---|
651 | |
---|
652 | Version 3.39 |
---|
653 | |
---|
654 | * The `shell' function no longer captures standard error output. |
---|
655 | |
---|
656 | Version 3.32 |
---|
657 | |
---|
658 | * A file beginning with a dot can be the default target if it also contains |
---|
659 | a slash (e.g., `../bin/foo'). (Unix make allows this as well.) |
---|
660 | |
---|
661 | Version 3.31 |
---|
662 | |
---|
663 | * Archive member names are truncated to 15 characters. |
---|
664 | |
---|
665 | * Yet more USG stuff. |
---|
666 | |
---|
667 | * Minimal support for Microport System V (a 16-bit machine and a |
---|
668 | brain-damaged compiler). This has even lower priority than other USG |
---|
669 | support, so if it gets beyond trivial, I will take it out completely. |
---|
670 | |
---|
671 | * Revamped default implicit rules (not much visible change). |
---|
672 | |
---|
673 | * The -d and -p options can come from the environment. |
---|
674 | |
---|
675 | Version 3.30 |
---|
676 | |
---|
677 | * Improved support for USG and HPUX (hopefully). |
---|
678 | |
---|
679 | * A variable reference like `$(foo:a=b)', if `a' contains a `%', is |
---|
680 | equivalent to `$(patsubst a,b,$(foo))'. |
---|
681 | |
---|
682 | * Defining .DEFAULT with no deps or commands clears its commands. |
---|
683 | |
---|
684 | * New default implicit rules for .S (cpp, then as), and .sh (copy and make |
---|
685 | executable). All default implicit rules that use cpp (even indirectly), use |
---|
686 | $(CPPFLAGS). |
---|
687 | |
---|
688 | Version 3.29 |
---|
689 | |
---|
690 | * Giving the -j option with no arguments gives you infinite jobs. |
---|
691 | |
---|
692 | Version 3.28 |
---|
693 | |
---|
694 | * New option: "-l LOAD" says not to start any new jobs while others are |
---|
695 | running if the load average is not below LOAD (a floating-point number). |
---|
696 | |
---|
697 | * There is support in place for implementations of remote command execution |
---|
698 | in Make. See the file remote.c. |
---|
699 | |
---|
700 | Version 3.26 |
---|
701 | |
---|
702 | * No more than 10 directories will be kept open at once. |
---|
703 | (This number can be changed by redefining MAX_OPEN_DIRECTORIES in dir.c.) |
---|
704 | |
---|
705 | Version 3.25 |
---|
706 | |
---|
707 | * Archive files will have their modification times recorded before doing |
---|
708 | anything that might change their modification times by updating an archive |
---|
709 | member. |
---|
710 | |
---|
711 | Version 3.20 |
---|
712 | |
---|
713 | * The `MAKELEVEL' variable is defined for use by makefiles. |
---|
714 | |
---|
715 | Version 3.19 |
---|
716 | |
---|
717 | * The recursion level indications in error messages are much shorter than |
---|
718 | they were in version 3.14. |
---|
719 | |
---|
720 | Version 3.18 |
---|
721 | |
---|
722 | * Leading spaces before directives are ignored (as documented). |
---|
723 | |
---|
724 | * Included makefiles can determine the default goal target. |
---|
725 | (System V Make does it this way, so we are being compatible). |
---|
726 | |
---|
727 | Version 3.14. |
---|
728 | |
---|
729 | * Variables that are defaults built into Make will not be put in the |
---|
730 | environment for children. This just saves some environment space and, |
---|
731 | except under -e, will be transparent to sub-makes. |
---|
732 | |
---|
733 | * Error messages from sub-makes will indicate the level of recursion. |
---|
734 | |
---|
735 | * Hopefully some speed-up for large directories due to a change in the |
---|
736 | directory hashing scheme. |
---|
737 | |
---|
738 | * One child will always get a standard input that is usable. |
---|
739 | |
---|
740 | * Default makefiles that don't exist will be remade and read in. |
---|
741 | |
---|
742 | Version 3.13. |
---|
743 | |
---|
744 | * Count parentheses inside expansion function calls so you can |
---|
745 | have nested calls: `$(sort $(foreach x,a b,$(x)))'. |
---|
746 | |
---|
747 | Version 3.12. |
---|
748 | |
---|
749 | * Several bug fixes, including USG and Sun386i support. |
---|
750 | |
---|
751 | * `shell' function to expand shell commands a la ` |
---|
752 | |
---|
753 | * If the `-d' flag is given, version information will be printed. |
---|
754 | |
---|
755 | * The `-c' option has been renamed to `-C' for compatibility with tar. |
---|
756 | |
---|
757 | * The `-p' option no longer inhibits other normal operation. |
---|
758 | |
---|
759 | * Makefiles will be updated and re-read if necessary. |
---|
760 | |
---|
761 | * Can now run several commands at once (parallelism), -j option. |
---|
762 | |
---|
763 | * Error messages will contain the level of Make recursion, if any. |
---|
764 | |
---|
765 | * The `MAKEFLAGS' and `MFLAGS' variables will be scanned for options after |
---|
766 | makefiles are read. |
---|
767 | |
---|
768 | * A double-colon rule with no dependencies will always have its commands run. |
---|
769 | (This is how both the BSD and System V versions of Make do it.) |
---|
770 | |
---|
771 | Version 3.05 |
---|
772 | |
---|
773 | (Changes from versions 1 through 3.05 were never recorded. Sorry.) |
---|
774 | |
---|
775 | ---------------------------------------------------------------------- |
---|
776 | Copyright information: |
---|
777 | |
---|
778 | Permission is granted to anyone to make or distribute verbatim copies |
---|
779 | of this document as received, in any medium, provided that the |
---|
780 | copyright notice and this permission notice are preserved, thus |
---|
781 | giving the recipient permission to redistribute in turn. |
---|
782 | |
---|
783 | Permission is granted to distribute modified versions of this |
---|
784 | document, or of portions of it, under the above conditions, provided |
---|
785 | also that they carry prominent notices stating who last changed them. |
---|