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