VirtualBox

source: kBuild/trunk/src/kmk/NEWS@ 2060

Last change on this file since 2060 was 1993, checked in by bird, 16 years ago

Merged in current GNU Make code (CVS from 2008-10-28). Ref #55.

  • Property svn:eol-style set to native
File size: 42.3 KB
Line 
1GNU make NEWS -*-indented-text-*-
2 History of user-visible changes.
3 1 April 2006
4
5See the end of this file for copyrights and conditions.
6
7All changes mentioned here are more fully described in the GNU make
8manual, which is contained in this distribution as the file doc/make.texi.
9See the README file and the GNU make manual for instructions for
10reporting bugs.
11
12
13Version 3.81.90
14
15* Compiling GNU make now requires a conforming ISO C 1989 compiler and
16 standard runtime library.
17
18* New special variable: .RECIPEPREFIX allows you to reset the recipe
19 introduction character from the default (TAB) to something else. The
20 first character of this variable value is the new recipe introduction
21 character. If the variable is set to the empty string, TAB is used
22 again. It can be set and reset at will; rules will be parsed
23 according to the current value.
24
25
26
27Version 3.81
28
29* GNU make is ported to OS/2.
30
31* GNU make is ported to MinGW. The MinGW build is only supported by
32 the build_w32.bat batch file; see the file README.W32 for more
33 details.
34
35* WARNING: Future backward-incompatibility!
36 Up to and including this release, the '$?' variable does not contain
37 any prerequisite that does not exist, even though that prerequisite
38 might have caused the target to rebuild. Starting with the _next_
39 release of GNU make, '$?' will contain all prerequisites that caused
40 the target to be considered out of date. See this Savannah bug:
41 http://savannah.gnu.org/bugs/index.php?func=detailitem&item_id=16051
42
43* WARNING: Backward-incompatibility!
44 GNU make now implements a generic "second expansion" feature on the
45 prerequisites of both explicit and implicit (pattern) rules. In order
46 to enable this feature, the special target '.SECONDEXPANSION' must be
47 defined before the first target which takes advantage of it. If this
48 feature is enabled then after all rules have been parsed the
49 prerequisites are expanded again, this time with all the automatic
50 variables in scope. This means that in addition to using standard
51 SysV $$@ in prerequisites lists, you can also use complex functions
52 such as $$(notdir $$@) etc. This behavior applies to implicit rules,
53 as well, where the second expansion occurs when the rule is matched.
54 However, this means that when '.SECONDEXPANSION' is enabled you must
55 double-quote any "$" in your filenames; instead of "foo: boo$$bar" you
56 now must write "foo: foo$$$$bar". Note that the SysV $$@ etc. feature,
57 which used to be available by default, is now ONLY available when the
58 .SECONDEXPANSION target is defined. If your makefiles take advantage
59 of this SysV feature you will need to update them.
60
61* WARNING: Backward-incompatibility!
62
63 In order to comply with POSIX, the way in which GNU make processes
64 backslash-newline sequences in recipes has changed. If your makefiles
65 use backslash-newline sequences inside of single-quoted strings in
66 recipes you will be impacted by this change. See the GNU make manual
67 subsection "Splitting Recipe Lines" (node "Splitting Lines"), in
68 section "Recipe Syntax", chapter "Writing Recipe in Rules", for
69 details.
70
71* WARNING: Backward-incompatibility!
72 Some previous versions of GNU make had a bug where "#" in a function
73 invocation such as $(shell ...) was treated as a make comment. A
74 workaround was to escape these with backslashes. This bug has been
75 fixed: if your makefile uses "\#" in a function invocation the
76 backslash is now preserved, so you'll need to remove it.
77
78* New command line option: -L (--check-symlink-times). On systems that
79 support symbolic links, if this option is given then GNU make will
80 use the most recent modification time of any symbolic links that are
81 used to resolve target files. The default behavior remains as it
82 always has: use the modification time of the actual target file only.
83
84* The "else" conditional line can now be followed by any other valid
85 conditional on the same line: this does not increase the depth of the
86 conditional nesting, so only one "endif" is required to close the
87 conditional.
88
89* All pattern-specific variables that match a given target are now used
90 (previously only the first match was used).
91
92* Target-specific variables can be marked as exportable using the
93 "export" keyword.
94
95* In a recursive $(call ...) context, any extra arguments from the outer
96 call are now masked in the context of the inner call.
97
98* Implemented a solution for the "thundering herd" problem with "-j -l".
99 This version of GNU make uses an algorithm suggested by Thomas Riedl
100 <[email protected]> to track the number of jobs started in the
101 last second and artificially adjust GNU make's view of the system's
102 load average accordingly.
103
104* New special variables available in this release:
105 - .INCLUDE_DIRS: Expands to a list of directories that make searches
106 for included makefiles.
107 - .FEATURES: Contains a list of special features available in this
108 version of GNU make.
109 - .DEFAULT_GOAL: Set the name of the default goal make will
110 use if no goals are provided on the command line.
111 - MAKE_RESTARTS: If set, then this is the number of times this
112 instance of make has been restarted (see "How Makefiles Are Remade"
113 in the manual).
114 - New automatic variable: $| (added in 3.80, actually): contains all
115 the order-only prerequisites defined for the target.
116
117* New functions available in this release:
118 - $(lastword ...) returns the last word in the list. This gives
119 identical results as $(word $(words ...) ...), but is much faster.
120 - $(abspath ...) returns the absolute path (all "." and ".."
121 directories resolved, and any duplicate "/" characters removed) for
122 each path provided.
123 - $(realpath ...) returns the canonical pathname for each path
124 provided. The canonical pathname is the absolute pathname, with
125 all symbolic links resolved as well.
126 - $(info ...) prints its arguments to stdout. No makefile name or
127 line number info, etc. is printed.
128 - $(flavor ...) returns the flavor of a variable.
129 - $(or ...) provides a short-circuiting OR conditional: each argument
130 is expanded. The first true (non-empty) argument is returned; no
131 further arguments are expanded. Expands to empty if there are no
132 true arguments.
133 - $(and ...) provides a short-circuiting AND conditional: each
134 argument is expanded. The first false (empty) argument is
135 returned; no further arguments are expanded. Expands to the last
136 argument if all arguments are true.
137
138* Changes made for POSIX compatibility:
139 - Only touch targets (under -t) if they have a recipe.
140 - Setting the SHELL make variable does NOT change the value of the
141 SHELL environment variable given to programs invoked by make. As
142 an enhancement to POSIX, if you export the make variable SHELL then
143 it will be set in the environment, just as before.
144
145* On MS Windows systems, explicitly setting SHELL to a pathname ending
146 in "cmd" or "cmd.exe" (case-insensitive) will force GNU make to use
147 the DOS command interpreter in batch mode even if a UNIX-like shell
148 could be found on the system.
149
150* On VMS there is now support for case-sensitive filesystems such as ODS5.
151 See the readme.vms file for information.
152
153* Parallel builds (-jN) no longer require a working Bourne shell on
154 Windows platforms. They work even with the stock Windows shells, such
155 as cmd.exe and command.com.
156
157* Updated to autoconf 2.59, automake 1.9.5, and gettext 0.14.1. Users
158 should not be impacted.
159
160* New translations for Swedish, Chinese (simplified), Ukrainian,
161 Belarusian, Finnish, Kinyarwandan, and Irish. Many updated
162 translations.
163
164A complete list of bugs fixed in this version is available here:
165
166 http://savannah.gnu.org/bugs/index.php?group=make&report_id=111&fix_release_id=103
167
168
169
170Version 3.80
171
172* A new feature exists: order-only prerequisites. These prerequisites
173 affect the order in which targets are built, but they do not impact
174 the rebuild/no-rebuild decision of their dependents. That is to say,
175 they allow you to require target B be built before target A, without
176 requiring that target A will always be rebuilt if target B is updated.
177 Patch for this feature provided by Greg McGary <[email protected]>.
178
179* For compatibility with SysV make, GNU make now supports the peculiar
180 syntax $$@, $$(@D), and $$(@F) in the prerequisites list of a rule.
181 This syntax is only valid within explicit and static pattern rules: it
182 cannot be used in implicit (suffix or pattern) rules. Edouard G. Parmelan
183 <[email protected]> provided a patch implementing this feature; however, I
184 decided to implement it in a different way.
185
186* The argument to the "ifdef" conditional is now expanded before it's
187 tested, so it can be a constructed variable name.
188
189 Similarly, the arguments to "export" (when not used in a variable
190 definition context) and "unexport" are also now expanded.
191
192* A new function is defined: $(value ...). The argument to this
193 function is the _name_ of a variable. The result of the function is
194 the value of the variable, without having been expanded.
195
196* A new function is defined: $(eval ...). The arguments to this
197 function should expand to makefile commands, which will then be
198 evaluated as if they had appeared in the makefile. In combination
199 with define/endef multiline variable definitions this is an extremely
200 powerful capability. The $(value ...) function is also sometimes
201 useful here.
202
203* A new built-in variable is defined, $(MAKEFILE_LIST). It contains a
204 list of each makefile GNU make has read, or started to read, in the
205 order in which they were encountered. So, the last filename in the
206 list when a makefile is just being read (before any includes) is the
207 name of the current makefile.
208
209* A new built-in variable is defined: $(.VARIABLES). When it is
210 expanded it returns a complete list of variable names defined by all
211 makefiles at that moment.
212
213* A new command line option is defined, -B or --always-make. If
214 specified GNU make will consider all targets out-of-date even if they
215 would otherwise not be.
216
217* The arguments to $(call ...) functions were being stored in $1, $2,
218 etc. as recursive variables, even though they are fully expanded
219 before assignment. This means that escaped dollar signs ($$ etc.)
220 were not behaving properly. Now the arguments are stored as simple
221 variables. This may mean that if you added extra escaping to your
222 $(call ...) function arguments you will need to undo it now.
223
224* The variable invoked by $(call ...) can now be recursive: unlike other
225 variables it can reference itself and this will not produce an error
226 when it is used as the first argument to $(call ...) (but only then).
227
228* New pseudo-target .LOW_RESOLUTION_TIME, superseding the configure
229 option --disable-nsec-timestamps. You might need this if your build
230 process depends on tools like "cp -p" preserving time stamps, since
231 "cp -p" (right now) doesn't preserve the subsecond portion of a time
232 stamp.
233
234* Updated translations for French, Galician, German, Japanese, Korean,
235 and Russian. New translations for Croatian, Danish, Hebrew, and
236 Turkish.
237
238* Updated internationalization support to Gettext 0.11.5.
239 GNU make now uses Gettext's "external" feature, and does not include
240 any internationalization code itself. Configure will search your
241 system for an existing implementation of GNU Gettext (only GNU Gettext
242 is acceptable) and use it if it exists. If not, NLS will be disabled.
243 See ABOUT-NLS for more information.
244
245* Updated to autoconf 2.54 and automake 1.7. Users should not be impacted.
246
247A complete list of bugs fixed in this version is available here:
248
249 http://savannah.gnu.org/bugs/index.php?group=make&report_id=111&fix_release_id=102
250
251
252
253Version 3.79.1
254
255* .SECONDARY with no prerequisites now prevents any target from being
256 removed because make thinks it's an intermediate file, not just those
257 listed in the makefile.
258
259* New configure option --disable-nsec-timestamps, but this was
260 superseded in later versions by the .LOW_RESOLUTION_TIME pseudo-target.
261
262
263Version 3.79
264
265* GNU make optionally supports internationalization and locales via the
266 GNU gettext (or local gettext if suitable) package. See the ABOUT-NLS
267 file for more information on configuring GNU make for NLS.
268
269* Previously, GNU make quoted variables such as MAKEFLAGS and
270 MAKEOVERRIDES for proper parsing by the shell. This allowed them to
271 be used within make build scripts. However, using them there is not
272 proper behavior: they are meant to be passed to subshells via the
273 environment. Unfortunately the values were not quoted properly to be
274 passed through the environment. This meant that make didn't properly
275 pass some types of command line values to submakes.
276
277 With this version we change that behavior: now these variables are
278 quoted properly for passing through the environment, which is the
279 correct way to do it. If you previously used these variables
280 explicitly within a make rule you may need to re-examine your use for
281 correctness given this change.
282
283* A new pseudo-target .NOTPARALLEL is available. If defined, the
284 current makefile is run serially regardless of the value of -j.
285 However, submakes are still eligible for parallel execution.
286
287* The --debug option has changed: it now allows optional flags
288 controlling the amount and type of debugging output. By default only
289 a minimal amount information is generated, displaying the names of
290 "normal" targets (not makefiles) that were deemed out of date and in
291 need of being rebuilt.
292
293 Note that the -d option behaves as before: it takes no arguments and
294 all debugging information is generated.
295
296* The `-p' (print database) output now includes filename and linenumber
297 information for variable definitions, to aid debugging.
298
299* The wordlist function no longer reverses its arguments if the "start"
300 value is greater than the "end" value. If that's true, nothing is
301 returned.
302
303* Hartmut Becker provided many updates for the VMS port of GNU make.
304 See the readme.vms file for more details.
305
306
307Version 3.78
308
309* Two new functions, $(error ...) and $(warning ...) are available. The
310 former will cause make to fail and exit immediately upon expansion of
311 the function, with the text provided as the error message. The latter
312 causes the text provided to be printed as a warning message, but make
313 proceeds normally.
314
315* A new function $(call ...) is available. This allows users to create
316 their own parameterized macros and invoke them later. Original
317 implementation of this function was provided by Han-Wen Nienhuys
318 <[email protected]>.
319
320* A new function $(if ...) is available. It provides if-then-else
321 capabilities in a builtin function. Original implementation of this
322 function was provided by Han-Wen Nienhuys <[email protected]>.
323
324* Make defines a new variable, .LIBPATTERNS. This variable controls how
325 library dependency expansion (dependencies like ``-lfoo'') is performed.
326
327* Make accepts CRLF sequences as well as traditional LF, for
328 compatibility with makefiles created on other operating systems.
329
330* Make accepts a new option: -R, or --no-builtin-variables. This option
331 disables the definition of the rule-specific builtin variables (CC,
332 LD, AR, etc.). Specifying this option forces -r (--no-builtin-rules)
333 as well.
334
335* A "job server" feature, suggested by Howard Chu <[email protected]>.
336
337 On systems that support POSIX pipe(2) semantics, GNU make can now pass
338 -jN options to submakes rather than forcing them all to use -j1. The
339 top make and all its sub-make processes use a pipe to communicate with
340 each other to ensure that no more than N jobs are started across all
341 makes. To get the old behavior of -j back, you can configure make
342 with the --disable-job-server option.
343
344* The confusing term "dependency" has been replaced by the more accurate
345 and standard term "prerequisite", both in the manual and in all GNU make
346 output.
347
348* GNU make supports the "big archive" library format introduced in AIX 4.3.
349
350* GNU make supports large files on AIX, HP-UX, and IRIX. These changes
351 were provided by Paul Eggert <[email protected]>. (Large file
352 support for Solaris and Linux was introduced in 3.77, but the
353 configuration had issues: these have also been resolved).
354
355* The Windows 95/98/NT (W32) version of GNU make now has native support
356 for the Cygnus Cygwin release B20.1 shell (bash).
357
358* The GNU make regression test suite, long available separately "under
359 the table", has been integrated into the release. You can invoke it
360 by running "make check" in the distribution. Note that it requires
361 Perl (either Perl 4 or Perl 5) to run.
362
363
364Version 3.77
365
366* Implement BSD make's "?=" variable assignment operator. The variable
367 is assigned the specified value only if that variable is not already
368 defined.
369
370* Make defines a new variable, "CURDIR", to contain the current working
371 directory (after the -C option, if any, has been processed).
372 Modifying this variable has no effect on the operation of make.
373
374* Make defines a new default RCS rule, for new-style master file
375 storage: ``% :: RCS/%'' (note no ``,v'' suffix).
376
377 Make defines new default rules for DOS-style C++ file naming
378 conventions, with ``.cpp'' suffixes. All the same rules as for
379 ``.cc'' and ``.C'' suffixes are provided, along with LINK.cpp and
380 COMPILE.cpp macros (which default to the same value as LINK.cc and
381 COMPILE.cc). Note CPPFLAGS is still C preprocessor flags! You should
382 use CXXFLAGS to change C++ compiler flags.
383
384* A new feature, "target-specific variable values", has been added.
385 This is a large change so please see the appropriate sections of the
386 manual for full details. Briefly, syntax like this:
387
388 TARGET: VARIABLE = VALUE
389
390 defines VARIABLE as VALUE within the context of TARGET. This is
391 similar to SunOS make's "TARGET := VARIABLE = VALUE" feature. Note
392 that the assignment may be of any type, not just recursive, and that
393 the override keyword is available.
394
395 COMPATIBILITY: This new syntax means that if you have any rules where
396 the first or second dependency has an equal sign (=) in its name,
397 you'll have to escape them with a backslash: "foo : bar\=baz".
398 Further, if you have any dependencies which already contain "\=",
399 you'll have to escape both of them: "foo : bar\\\=baz".
400
401* A new appendix listing the most common error and warning messages
402 generated by GNU make, with some explanation, has been added to the
403 GNU make User's Manual.
404
405* Updates to the GNU make Customs library support (see README.customs).
406
407* Updates to the Windows 95/NT port from Rob Tulloh (see README.W32),
408 and to the DOS port from Eli Zaretski (see README.DOS).
409
410
411Version 3.76.1
412
413* Small (but serious) bug fix. Quick rollout to get into the GNU source CD.
414
415
416Version 3.76
417
418* GNU make now uses automake to control Makefile.in generation. This
419 should make it more consistent with the GNU standards.
420
421* VPATH functionality has been changed to incorporate the VPATH+ patch,
422 previously maintained by Paul Smith <[email protected]>. See the
423 manual.
424
425* Make defines a new variable, `MAKECMDGOALS', to contain the goals that
426 were specified on the command line, if any. Modifying this variable
427 has no effect on the operation of make.
428
429* A new function, `$(wordlist S,E,TEXT)', is available: it returns a
430 list of words from number S to number E (inclusive) of TEXT.
431
432* Instead of an error, detection of future modification times gives a
433 warning and continues. The warning is repeated just before GNU make
434 exits, so it is less likely to be lost.
435
436* Fix the $(basename) and $(suffix) functions so they only operate on
437 the last filename, not the entire string:
438
439 Command Old Result New Result
440 ------- ---------- ----------
441 $(basename a.b) a a
442 $(basename a.b/c) a a.b/c
443 $(suffix a.b) b b
444 $(suffix a.b/c) b/c <empty>
445
446* The $(strip) function now removes newlines as well as TABs and spaces.
447
448* The $(shell) function now changes CRLF (\r\n) pairs to a space as well
449 as newlines (\n).
450
451* Updates to the Windows 95/NT port from Rob Tulloh (see README.W32).
452
453* Eli Zaretskii has updated the port to 32-bit protected mode on MSDOS
454 and MS-Windows, building with the DJGPP v2 port of GNU C/C++ compiler
455 and utilities. See README.DOS for details, and direct all questions
456 concerning this port to Eli Zaretskii <[email protected]> or DJ
457 Delorie <[email protected]>.
458
459* John W. Eaton has updated the VMS port to support libraries and VPATH.
460
461
462Version 3.75
463
464* The directory messages printed by `-w' and implicitly in sub-makes,
465 are now omitted if Make runs no commands and has no other messages to print.
466
467* Make now detects files that for whatever reason have modification times
468 in the future and gives an error. Files with such impossible timestamps
469 can result from unsynchronized clocks, or archived distributions
470 containing bogus timestamps; they confuse Make's dependency engine
471 thoroughly.
472
473* The new directive `sinclude' is now recognized as another name for
474 `-include', for compatibility with some other Makes.
475
476* Aaron Digulla has contributed a port to AmigaDOS. See README.Amiga for
477 details, and direct all Amiga-related questions to <[email protected]>.
478
479* Rob Tulloh of Tivoli Systems has contributed a port to Windows NT or 95.
480 See README.W32 for details, and direct all Windows-related questions to
481 <[email protected]>.
482
483
484Version 3.73
485
486* Converted to use Autoconf version 2, so `configure' has some new options.
487 See INSTALL for details.
488
489* You can now send a SIGUSR1 signal to Make to toggle printing of debugging
490 output enabled by -d, at any time during the run.
491
492
493Version 3.72
494
495* DJ Delorie has ported Make to MS-DOS using the GO32 extender.
496 He is maintaining the DOS port, not the GNU Make maintainer;
497 please direct bugs and questions for DOS to <[email protected]>.
498 MS-DOS binaries are available for FTP from ftp.simtel.net in
499 /pub/simtelnet/gnu/djgpp/.
500
501* The `MAKEFLAGS' variable (in the environment or in a makefile) can now
502 contain variable definitions itself; these are treated just like
503 command line variable definitions. Make will automatically insert any
504 variable definitions from the environment value of `MAKEFLAGS' or from
505 the command line, into the `MAKEFLAGS' value exported to children. The
506 `MAKEOVERRIDES' variable previously included in the value of `$(MAKE)'
507 for sub-makes is now included in `MAKEFLAGS' instead. As before, you can
508 reset `MAKEOVERRIDES' in your makefile to avoid putting all the variables
509 in the environment when its size is limited.
510
511* If `.DELETE_ON_ERROR' appears as a target, Make will delete the target of
512 a rule if it has changed when its recipe exits with a nonzero status,
513 just as when the recipe gets a signal.
514
515* The automatic variable `$+' is new. It lists all the dependencies like
516 `$^', but preserves duplicates listed in the makefile. This is useful
517 for linking rules, where library files sometimes need to be listed twice
518 in the link order.
519
520* You can now specify the `.IGNORE' and `.SILENT' special targets with
521 dependencies to limit their effects to those files. If a file appears as
522 a dependency of `.IGNORE', then errors will be ignored while running the
523 recipe to update that file. Likewise if a file appears as a dependency
524 of `.SILENT', then the recipe to update that file will not be printed
525 before it is run. (This change was made to conform to POSIX.2.)
526
527
528Version 3.71
529
530* The automatic variables `$(@D)', `$(%D)', `$(*D)', `$(<D)', `$(?D)', and
531 `$(^D)' now omit the trailing slash from the directory name. (This change
532 was made to comply with POSIX.2.)
533
534* The source distribution now includes the Info files for the Make manual.
535 There is no longer a separate distribution containing Info and DVI files.
536
537* You can now set the variables `binprefix' and/or `manprefix' in
538 Makefile.in (or on the command line when installing) to install GNU make
539 under a name other than `make' (i.e., ``make binprefix=g install''
540 installs GNU make as `gmake').
541
542* The built-in Texinfo rules use the new variables `TEXI2DVI_FLAGS' for
543 flags to the `texi2dvi' script, and `MAKEINFO_FLAGS' for flags to the
544 Makeinfo program.
545
546* The exit status of Make when it runs into errors is now 2 instead of 1.
547 The exit status is 1 only when using -q and some target is not up to date.
548 (This change was made to comply with POSIX.2.)
549
550
551Version 3.70
552
553* It is no longer a fatal error to have a NUL character in a makefile.
554 You should never put a NUL in a makefile because it can have strange
555 results, but otherwise empty lines full of NULs (such as produced by
556 the `xmkmf' program) will always work fine.
557
558* The error messages for nonexistent included makefiles now refer to the
559 makefile name and line number where the `include' appeared, so Emacs's
560 C-x ` command takes you there (in case it's a typo you need to fix).
561
562
563Version 3.69
564
565* Implicit rule search for archive member references is now done in the
566 opposite order from previous versions: the whole target name `LIB(MEM)'
567 first, and just the member name and parentheses `(MEM)' second.
568
569* Make now gives an error for an unterminated variable or function reference.
570 For example, `$(foo' with no matching `)' or `${bar' with no matching `}'.
571
572* The new default variable `MAKE_VERSION' gives the version number of
573 Make, and a string describing the remote job support compiled in (if any).
574 Thus the value (in this release) is something like `3.69' or `3.69-Customs'.
575
576* Commands in an invocation of the `shell' function are no longer run
577 with a modified environment like recipes are. As in versions before
578 3.68, they now run with the environment that `make' started with. We
579 have reversed the change made in version 3.68 because it turned out to
580 cause a paradoxical situation in cases like:
581
582 export variable = $(shell echo value)
583
584 When Make attempted to put this variable in the environment for a
585 recipe, it would try expand the value by running the shell command
586 `echo value'. In version 3.68, because it constructed an environment
587 for that shell command in the same way, Make would begin to go into an
588 infinite loop and then get a fatal error when it detected the loop.
589
590* The recipe given for `.DEFAULT' is now used for phony targets with no
591 recipe.
592
593
594Version 3.68
595
596* You can list several archive member names inside parenthesis:
597 `lib(mem1 mem2 mem3)' is equivalent to `lib(mem1) lib(mem2) lib(mem3)'.
598
599* You can use wildcards inside archive member references. For example,
600 `lib(*.o)' expands to all existing members of `lib' whose names end in
601 `.o' (e.g. `lib(a.o) lib(b.o)'); `*.a(*.o)' expands to all such members
602 of all existing files whose names end in `.a' (e.g. `foo.a(a.o)
603 foo.a(b.o) bar.a(c.o) bar.a(d.o)'.
604
605* A suffix rule `.X.a' now produces two pattern rules:
606 (%.o): %.X # Previous versions produced only this.
607 %.a: %.X # Now produces this as well, just like other suffixes.
608
609* The new flag `--warn-undefined-variables' says to issue a warning message
610 whenever Make expands a reference to an undefined variable.
611
612* The new `-include' directive is just like `include' except that there is
613 no error (not even a warning) for a nonexistent makefile.
614
615* Commands in an invocation of the `shell' function are now run with a
616 modified environment like recipes are, so you can use `export' et al
617 to set up variables for them. They used to run with the environment
618 that `make' started with.
619
620
621Version 3.66
622
623* `make --version' (or `make -v') now exits immediately after printing
624 the version number.
625
626
627Version 3.65
628
629* Make now supports long-named members in `ar' archive files.
630
631
632Version 3.64
633
634* Make now supports the `+=' syntax for a variable definition which appends
635 to the variable's previous value. See the section `Appending More Text
636 to Variables' in the manual for full details.
637
638* The new option `--no-print-directory' inhibits the `-w' or
639 `--print-directory' feature. Make turns on `--print-directory'
640 automatically if you use `-C' or `--directory', and in sub-makes; some
641 users have found this behavior undesirable.
642
643* The built-in implicit rules now support the alternative extension
644 `.txinfo' for Texinfo files, just like `.texinfo' and `.texi'.
645
646
647Version 3.63
648
649* Make now uses a standard GNU `configure' script. See the new file
650 INSTALL for the new (and much simpler) installation procedure.
651
652* There is now a shell script to build Make the first time, if you have no
653 other `make' program. `build.sh' is created by `configure'; see README.
654
655* GNU Make now completely conforms to the POSIX.2 specification for `make'.
656
657* Elements of the `$^' and `$?' automatic variables that are archive
658 member references now list only the member name, as in Unix and POSIX.2.
659
660* You should no longer ever need to specify the `-w' switch, which prints
661 the current directory before and after Make runs. The `-C' switch to
662 change directory, and recursive use of Make, now set `-w' automatically.
663
664* Multiple double-colon rules for the same target will no longer have their
665 recipes run simultaneously under -j, as this could result in the two
666 recipes trying to change the file at the same time and interfering with
667 one another.
668
669* The `SHELL' variable is now never taken from the environment.
670 Each makefile that wants a shell other than the default (/bin/sh) must
671 set SHELL itself. SHELL is always exported to child processes.
672 This change was made for compatibility with POSIX.2.
673
674* Make now accepts long options. There is now an informative usage message
675 that tells you what all the options are and what they do. Try `make --help'.
676
677* There are two new directives: `export' and `unexport'. All variables are
678 no longer automatically put into the environments of the recipe lines that
679 Make runs. Instead, only variables specified on the command line or in
680 the environment are exported by default. To export others, use:
681 export VARIABLE
682 or you can define variables with:
683 export VARIABLE = VALUE
684 or:
685 export VARIABLE := VALUE
686 You can use just:
687 export
688 or:
689 .EXPORT_ALL_VARIABLES:
690 to get the old behavior. See the node `Variables/Recursion' in the manual
691 for a full description.
692
693* The recipe from the `.DEFAULT' special target is only applied to
694 targets which have no rules at all, not all targets with no recipe.
695 This change was made for compatibility with Unix make.
696
697* All fatal error messages now contain `***', so they are easy to find in
698 compilation logs.
699
700* Dependency file names like `-lNAME' are now replaced with the actual file
701 name found, as with files found by normal directory search (VPATH).
702 The library file `libNAME.a' may now be found in the current directory,
703 which is checked before VPATH; the standard set of directories (/lib,
704 /usr/lib, /usr/local/lib) is now checked last.
705 See the node `Libraries/Search' in the manual for full details.
706
707* A single `include' directive can now specify more than one makefile to
708 include, like this:
709 include file1 file2
710 You can also use shell file name patterns in an `include' directive:
711 include *.mk
712
713* The default directories to search for included makefiles, and for
714 libraries specified with `-lNAME', are now set by configuration.
715
716* You can now use blanks as well as colons to separate the directories in a
717 search path for the `vpath' directive or the `VPATH' variable.
718
719* You can now use variables and functions in the left hand side of a
720 variable assignment, as in "$(foo)bar = value".
721
722* The `MAKE' variable is always defined as `$(MAKE_COMMAND) $(MAKEOVERRIDES)'.
723 The `MAKE_COMMAND' variable is now defined to the name with which make
724 was invoked.
725
726* The built-in rules for C++ compilation now use the variables `$(CXX)' and
727 `$(CXXFLAGS)' instead of `$(C++)' and `$(C++FLAGS)'. The old names had
728 problems with shells that cannot have `+' in environment variable names.
729
730* The value of a recursively expanded variable is now expanded when putting
731 it into the environment for child processes. This change was made for
732 compatibility with Unix make.
733
734* A rule with no targets before the `:' is now accepted and ignored.
735 This change was made for compatibility with SunOS 4 make.
736 We do not recommend that you write your makefiles to take advantage of this.
737
738* The `-I' switch can now be used in MAKEFLAGS, and are put there
739 automatically just like other switches.
740
741
742Version 3.61
743
744* Built-in rules for C++ source files with the `.C' suffix.
745 We still recommend that you use `.cc' instead.
746
747* If a recipe is given too many times for a single target, the last one
748 given is used, and a warning message is printed.
749
750* Error messages about makefiles are in standard GNU error format,
751 so C-x ` in Emacs works on them.
752
753* Dependencies of pattern rules which contain no % need not actually exist
754 if they can be created (just like dependencies which do have a %).
755
756
757Version 3.60
758
759* A message is always printed when Make decides there is nothing to be done.
760 It used to be that no message was printed for top-level phony targets
761 (because "`phony' is up to date" isn't quite right). Now a different
762 message "Nothing to be done for `phony'" is printed in that case.
763
764* Archives on AIX now supposedly work.
765
766* When the recipes specified for .DEFAULT are used to update a target,
767 the $< automatic variable is given the same value as $@ for that target.
768 This is how Unix make behaves, and this behavior is mandated by POSIX.2.
769
770
771Version 3.59
772
773* The -n, -q, and -t options are not put in the `MAKEFLAGS' and `MFLAG'
774 variables while remaking makefiles, so recursive makes done while remaking
775 makefiles will behave properly.
776
777* If the special target `.NOEXPORT' is specified in a makefile,
778 only variables that came from the environment and variables
779 defined on the command line are exported.
780
781
782Version 3.58
783
784* Suffix rules may have dependencies (which are ignored).
785
786
787Version 3.57
788
789* Dependencies of the form `-lLIB' are searched for as /usr/local/lib/libLIB.a
790 as well as libLIB.a in /usr/lib, /lib, the current directory, and VPATH.
791
792
793Version 3.55
794
795* There is now a Unix man page for GNU Make. It is certainly not a
796 replacement for the Texinfo manual, but it documents the basic
797 functionality and the switches. For full documentation, you should
798 still read the Texinfo manual. Thanks to Dennis Morse of Stanford
799 University for contributing the initial version of this.
800
801* Variables which are defined by default (e.g., `CC') will no longer be
802 put into the environment for child processes. (If these variables are
803 reset by the environment, makefiles, or the command line, they will
804 still go into the environment.)
805
806* Makefiles which have recipes but no dependencies (and thus are always
807 considered out of date and in need of remaking), will not be remade (if they
808 were being remade only because they were makefiles). This means that GNU
809 Make will no longer go into an infinite loop when fed the makefiles that
810 `imake' (necessary to build X Windows) produces.
811
812* There is no longer a warning for using the `vpath' directive with an explicit
813pathname (instead of a `%' pattern).
814
815
816Version 3.51
817
818* When removing intermediate files, only one `rm' command line is printed,
819 listing all file names.
820
821* There are now automatic variables `$(^D)', `$(^F)', `$(?D)', and `$(?F)'.
822 These are the directory-only and file-only versions of `$^' and `$?'.
823
824* Library dependencies given as `-lNAME' will use "libNAME.a" in the current
825 directory if it exists.
826
827* The automatic variable `$($/)' is no longer defined.
828
829* Leading `+' characters on a recipe line make that line be executed even
830 under -n, -t, or -q (as if the line contained `$(MAKE)').
831
832* For recipe lines containing `$(MAKE)', `${MAKE}', or leading `+' characters,
833 only those lines are executed, not the entire recipe.
834 (This is how Unix make behaves for lines containing `$(MAKE)' or `${MAKE}'.)
835
836
837Version 3.50
838
839* Filenames in rules will now have ~ and ~USER expanded.
840
841* The `-p' output has been changed so it can be used as a makefile.
842 (All information that isn't specified by makefiles is prefaced with comment
843 characters.)
844
845
846Version 3.49
847
848* The % character can be quoted with backslash in implicit pattern rules,
849 static pattern rules, `vpath' directives, and `patsubst', `filter', and
850 `filter-out' functions. A warning is issued if a `vpath' directive's
851 pattern contains no %.
852
853* The `wildcard' variable expansion function now expands ~ and ~USER.
854
855* Messages indicating failed recipe lines now contain the target name:
856 make: *** [target] Error 1
857
858* The `-p' output format has been changed somewhat to look more like
859 makefile rules and to give all information that Make has about files.
860
861
862Version 3.48
863
864
865Version 3.47
866
867* The `-l' switch with no argument removes any previous load-average limit.
868
869* When the `-w' switch is in effect, and Make has updated makefiles,
870 it will write a `Leaving directory' message before re-executing itself.
871 This makes the `directory change tracking' changes to Emacs's compilation
872 commands work properly.
873
874
875Version 3.46
876
877* The automatic variable `$*' is now defined for explicit rules,
878 as it is in Unix make.
879
880
881Version 3.45
882
883* The `-j' switch is now put in the MAKEFLAGS and MFLAGS variables when
884 specified without an argument (indicating infinite jobs).
885 The `-l' switch is not always put in the MAKEFLAGS and MFLAGS variables.
886
887* Make no longer checks hashed directories after running recipes.
888 The behavior implemented in 3.41 caused too much slowdown.
889
890
891Version 3.44
892
893* A dependency is NOT considered newer than its dependent if
894 they have the same modification time. The behavior implemented
895 in 3.43 conflicts with RCS.
896
897
898Version 3.43
899
900* Dependency loops are no longer fatal errors.
901
902* A dependency is considered newer than its dependent if
903 they have the same modification time.
904
905
906Version 3.42
907
908* The variables F77 and F77FLAGS are now set by default to $(FC) and
909 $(FFLAGS). Makefiles designed for System V make may use these variables in
910 explicit rules and expect them to be set. Unfortunately, there is no way to
911 make setting these affect the Fortran implicit rules unless FC and FFLAGS
912 are not used (and these are used by BSD make).
913
914
915Version 3.41
916
917* Make now checks to see if its hashed directories are changed by recipes.
918 Other makes that hash directories (Sun, 4.3 BSD) don't do this.
919
920
921Version 3.39
922
923* The `shell' function no longer captures standard error output.
924
925
926Version 3.32
927
928* A file beginning with a dot can be the default target if it also contains
929 a slash (e.g., `../bin/foo'). (Unix make allows this as well.)
930
931
932Version 3.31
933
934* Archive member names are truncated to 15 characters.
935
936* Yet more USG stuff.
937
938* Minimal support for Microport System V (a 16-bit machine and a
939 brain-damaged compiler). This has even lower priority than other USG
940 support, so if it gets beyond trivial, I will take it out completely.
941
942* Revamped default implicit rules (not much visible change).
943
944* The -d and -p options can come from the environment.
945
946
947Version 3.30
948
949* Improved support for USG and HPUX (hopefully).
950
951* A variable reference like `$(foo:a=b)', if `a' contains a `%', is
952 equivalent to `$(patsubst a,b,$(foo))'.
953
954* Defining .DEFAULT with no deps or recipe clears its recipe.
955
956* New default implicit rules for .S (cpp, then as), and .sh (copy and
957 make executable). All default implicit rules that use cpp (even
958 indirectly), use $(CPPFLAGS).
959
960
961Version 3.29
962
963* Giving the -j option with no arguments gives you infinite jobs.
964
965
966Version 3.28
967
968* New option: "-l LOAD" says not to start any new jobs while others are
969 running if the load average is not below LOAD (a floating-point number).
970
971* There is support in place for implementations of remote command execution
972 in Make. See the file remote.c.
973
974
975Version 3.26
976
977* No more than 10 directories will be kept open at once.
978 (This number can be changed by redefining MAX_OPEN_DIRECTORIES in dir.c.)
979
980
981Version 3.25
982
983* Archive files will have their modification times recorded before doing
984 anything that might change their modification times by updating an archive
985 member.
986
987
988Version 3.20
989
990* The `MAKELEVEL' variable is defined for use by makefiles.
991
992
993Version 3.19
994
995* The recursion level indications in error messages are much shorter than
996 they were in version 3.14.
997
998
999Version 3.18
1000
1001* Leading spaces before directives are ignored (as documented).
1002
1003* Included makefiles can determine the default goal target.
1004 (System V Make does it this way, so we are being compatible).
1005
1006
1007Version 3.14.
1008
1009* Variables that are defaults built into Make will not be put in the
1010 environment for children. This just saves some environment space and,
1011 except under -e, will be transparent to sub-makes.
1012
1013* Error messages from sub-makes will indicate the level of recursion.
1014
1015* Hopefully some speed-up for large directories due to a change in the
1016 directory hashing scheme.
1017
1018* One child will always get a standard input that is usable.
1019
1020* Default makefiles that don't exist will be remade and read in.
1021
1022
1023Version 3.13.
1024
1025* Count parentheses inside expansion function calls so you can
1026 have nested calls: `$(sort $(foreach x,a b,$(x)))'.
1027
1028
1029Version 3.12.
1030
1031* Several bug fixes, including USG and Sun386i support.
1032
1033* `shell' function to expand shell commands a la `
1034
1035* If the `-d' flag is given, version information will be printed.
1036
1037* The `-c' option has been renamed to `-C' for compatibility with tar.
1038
1039* The `-p' option no longer inhibits other normal operation.
1040
1041* Makefiles will be updated and re-read if necessary.
1042
1043* Can now run several recipes at once (parallelism), -j option.
1044
1045* Error messages will contain the level of Make recursion, if any.
1046
1047* The `MAKEFLAGS' and `MFLAGS' variables will be scanned for options after
1048 makefiles are read.
1049
1050* A double-colon rule with no dependencies will always have its recipe run.
1051 (This is how both the BSD and System V versions of Make do it.)
1052
1053
1054Version 3.05
1055
1056(Changes from versions 1 through 3.05 were never recorded. Sorry.)
1057
1058
1059-------------------------------------------------------------------------------
1060Copyright (C) 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997,
10611998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007 Free Software
1062Foundation, Inc.
1063This file is part of GNU Make.
1064
1065GNU Make is free software; you can redistribute it and/or modify it under the
1066terms of the GNU General Public License as published by the Free Software
1067Foundation; either version 3 of the License, or (at your option) any later
1068version.
1069
1070GNU Make is distributed in the hope that it will be useful, but WITHOUT ANY
1071WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
1072A PARTICULAR PURPOSE. See the GNU General Public License for more details.
1073
1074You should have received a copy of the GNU General Public License along with
1075this program. If not, see <http://www.gnu.org/licenses/>.
Note: See TracBrowser for help on using the repository browser.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette