[53] | 1 | GNU make NEWS -*-indented-text-*-
|
---|
| 2 | History of user-visible changes.
|
---|
[3138] | 3 | 10 June 2016
|
---|
[53] | 4 |
|
---|
[501] | 5 | See the end of this file for copyrights and conditions.
|
---|
[53] | 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.
|
---|
[280] | 9 | See the README file and the GNU make manual for instructions for
|
---|
| 10 | reporting bugs.
|
---|
[53] | 11 | |
---|
[3138] | 12 |
|
---|
[900] | 13 | Version 4.2.1 (10 Jun 2016)
|
---|
[2596] | 14 |
|
---|
[3138] | 15 | A complete list of bugs fixed in this version is available here:
|
---|
| 16 | h
|
---|
[2596] | 17 | ttp://sv.gnu.org/bugs/index.php?group=make&report_id=111&fix_release_id=107&set=custom
|
---|
[3138] | 18 |
|
---|
| 19 | This release is a bug-fix release.
|
---|
| 20 |
|
---|
| 21 | |
---|
| 22 |
|
---|
| 23 | Version 4.2 (22 May 2016)
|
---|
| 24 |
|
---|
| 25 | A complete list of bugs fixed in this version is available here:
|
---|
| 26 |
|
---|
| 27 | http://sv.gnu.org/bugs/index.php?group=make&report_id=111&fix_release_id=106&set=custom
|
---|
| 28 |
|
---|
| 29 | * New variable: $(.SHELLSTATUS) is set to the exit status of the last != or
|
---|
| 30 | $(shell ...) function invoked in this instance of make. This will be "0" if
|
---|
| 31 | successful or not "0" if not successful. The variable value is unset if no
|
---|
| 32 | != or $(shell ...) function has been invoked.
|
---|
| 33 |
|
---|
| 34 | * The $(file ...) function can now read from a file with $(file <FILE).
|
---|
| 35 | The function is expanded to the contents of the file. The contents are
|
---|
| 36 | expanded verbatim except that the final newline, if any, is stripped.
|
---|
| 37 |
|
---|
| 38 | * The makefile line numbers shown by GNU make now point directly to the
|
---|
| 39 | specific line in the recipe where the failure or warning occurred.
|
---|
| 40 | Sample changes suggested by Brian Vandenberg <phantall@gmail.com>
|
---|
| 41 |
|
---|
| 42 | * The interface to GNU make's "jobserver" is stable as documented in the
|
---|
| 43 | manual, for tools which may want to access it.
|
---|
| 44 |
|
---|
| 45 | WARNING: Backward-incompatibility! The internal-only command line option
|
---|
| 46 | --jobserver-fds has been renamed for publishing, to --jobserver-auth.
|
---|
| 47 |
|
---|
| 48 | * The amount of parallelism can be determined by querying MAKEFLAGS, even when
|
---|
| 49 | the job server is enabled (previously MAKEFLAGS would always contain only
|
---|
| 50 | "-j", with no number, when job server was enabled).
|
---|
| 51 |
|
---|
| 52 | * VMS-specific changes:
|
---|
| 53 |
|
---|
| 54 | * Perl test harness now works.
|
---|
| 55 |
|
---|
| 56 | * Full support for converting Unix exit status codes to VMS exit status
|
---|
| 57 | codes. BACKWARD INCOMPATIBILITY Notice: On a child failure the VMS exit
|
---|
| 58 | code is now the encoded Unix exit status that Make usually generates, not
|
---|
| 59 | the VMS exit status of the child.
|
---|
| 60 |
|
---|
| 61 | |
---|
| 62 |
|
---|
| 63 | Version 4.1 (05 Oct 2014)
|
---|
| 64 |
|
---|
| 65 | A complete list of bugs fixed in this version is available here:
|
---|
| 66 |
|
---|
| 67 | http://sv.gnu.org/bugs/index.php?group=make&report_id=111&fix_release_id=105&set=custom
|
---|
| 68 |
|
---|
| 69 | * New variables: $(MAKE_TERMOUT) and $(MAKE_TERMERR) are set to non-empty
|
---|
| 70 | values if stdout or stderr, respectively, are believed to be writing to a
|
---|
| 71 | terminal. These variables are exported by default.
|
---|
| 72 |
|
---|
| 73 | * Allow a no-text-argument form of the $(file ...) function. Without a text
|
---|
| 74 | argument nothing is written to the file: it is simply opened in the
|
---|
| 75 | requested mode, then closed again.
|
---|
| 76 |
|
---|
| 77 | * Change the fatal error for mixed explicit and implicit rules, that was
|
---|
| 78 | introduced in GNU make 3.82, to a non-fatal error. However, this syntax is
|
---|
| 79 | still deprecated and may return to being illegal in a future version of GNU
|
---|
| 80 | make. Makefiles that rely on this syntax should be fixed.
|
---|
| 81 | See https://savannah.gnu.org/bugs/?33034
|
---|
| 82 |
|
---|
| 83 | * VMS-specific changes:
|
---|
| 84 |
|
---|
| 85 | * Support for library files added, including support for using the GNV ar
|
---|
| 86 | utility.
|
---|
| 87 |
|
---|
| 88 | * Partial support for properly encoding Unix exit status codes into VMS exit
|
---|
| 89 | status codes.
|
---|
| 90 |
|
---|
| 91 | WARNING: Backward-incompatibility! These are different exit status codes
|
---|
| 92 | than Make exited with in the past.
|
---|
| 93 |
|
---|
| 94 | * Macros to hold the current make command are set up to translate the
|
---|
| 95 | argv[0] string to a VMS format path name and prefix it with "MCR " so that
|
---|
| 96 | the macro has a space in it.
|
---|
| 97 |
|
---|
| 98 | WARNING: Backward-incompatibility! This may break complex makefiles that
|
---|
| 99 | do processing on those macros. This is unlikely because so much in that
|
---|
| 100 | area was not and is still not currently working on VMS, it is unlikely to
|
---|
| 101 | find such a complex makefile, so this is more likely to impact
|
---|
| 102 | construction of a future makefile.
|
---|
| 103 |
|
---|
| 104 | * A command file is always used to run the commands for a recipe.
|
---|
| 105 |
|
---|
| 106 | WARNING: Backward-incompatibility! Running the make self tests has
|
---|
| 107 | exposed that there are significant differences in behavior when running
|
---|
| 108 | with the command file mode. It is unknown if this will be noticed by most
|
---|
| 109 | existing VMS makefiles.
|
---|
| 110 | |
---|
| 111 |
|
---|
| 112 | Version 4.0 (09 Oct 2013)
|
---|
| 113 |
|
---|
| 114 | A complete list of bugs fixed in this version is available here:
|
---|
| 115 |
|
---|
| 116 | http://sv.gnu.org/bugs/index.php?group=make&report_id=111&fix_release_id=101&set=custom
|
---|
| 117 |
|
---|
| 118 | * WARNING: Backward-incompatibility!
|
---|
| 119 | If .POSIX is specified, then make adheres to the POSIX backslash/newline
|
---|
| 120 | handling requirements, which introduces the following changes to the
|
---|
| 121 | standard backslash/newline handling in non-recipe lines:
|
---|
| 122 | * Any trailing space before the backslash is preserved
|
---|
| 123 | * Each backslash/newline (plus subsequent whitespace) is converted to a
|
---|
| 124 | single space
|
---|
| 125 |
|
---|
| 126 | * New feature: GNU Guile integration
|
---|
| 127 | This version of GNU make can be compiled with GNU Guile integration.
|
---|
| 128 | GNU Guile serves as an embedded extension language for make.
|
---|
| 129 | See the "Guile Function" section in the GNU Make manual for details.
|
---|
| 130 | Currently GNU Guile 1.8 and 2.0+ are supported. In Guile 1.8 there is no
|
---|
| 131 | support for internationalized character sets. In Guile 2.0+, scripts can be
|
---|
| 132 | encoded in UTF-8.
|
---|
| 133 |
|
---|
| 134 | * New command line option: --output-sync (-O) enables grouping of output by
|
---|
| 135 | target or by recursive make. This is useful during parallel builds to avoid
|
---|
| 136 | mixing output from different jobs together giving hard-to-understand
|
---|
| 137 | results. Original implementation by David Boyce <dsb@boyski.com>.
|
---|
| 138 | Reworked and enhanced by Frank Heckenbach <f.heckenbach@fh-soft.de>.
|
---|
| 139 | Windows support by Eli Zaretskii <eliz@gnu.org>.
|
---|
| 140 |
|
---|
| 141 | * New command line option: --trace enables tracing of targets. When enabled
|
---|
| 142 | the recipe to be invoked is printed even if it would otherwise be suppressed
|
---|
| 143 | by .SILENT or a "@" prefix character. Also before each recipe is run the
|
---|
| 144 | makefile name and linenumber where it was defined are shown as well as the
|
---|
| 145 | prerequisites that caused the target to be considered out of date.
|
---|
| 146 |
|
---|
| 147 | * New command line option argument: --debug now accepts a "n" (none) flag
|
---|
| 148 | which disables all debugging settings that are currently enabled.
|
---|
| 149 |
|
---|
| 150 | * New feature: The "job server" capability is now supported on Windows.
|
---|
| 151 | Implementation contributed by Troy Runkel <Troy.Runkel@mathworks.com>
|
---|
| 152 |
|
---|
| 153 | * New feature: The .ONESHELL capability is now supported on Windows. Support
|
---|
| 154 | added by Eli Zaretskii <eliz@gnu.org>.
|
---|
| 155 |
|
---|
| 156 | * New feature: "!=" shell assignment operator as an alternative to the
|
---|
| 157 | $(shell ...) function. Implemented for compatibility with BSD makefiles.
|
---|
| 158 | Note there are subtle differences between "!=" and $(shell ...). See the
|
---|
| 159 | description in the GNU make manual.
|
---|
| 160 | WARNING: Backward-incompatibility!
|
---|
| 161 | Variables ending in "!" previously defined as "variable!= value" will now be
|
---|
| 162 | interpreted as shell assignment. Change your assignment to add whitespace
|
---|
| 163 | between the "!" and "=": "variable! = value"
|
---|
| 164 |
|
---|
| 165 | * New feature: "::=" simple assignment operator as defined by POSIX in 2012.
|
---|
| 166 | This operator has identical functionality to ":=" in GNU make, but will be
|
---|
| 167 | portable to any implementation of make conforming to a sufficiently new
|
---|
| 168 | version of POSIX (see http://austingroupbugs.net/view.php?id=330). It is
|
---|
| 169 | not necessary to define the .POSIX target to access this operator.
|
---|
| 170 |
|
---|
| 171 | * New feature: Loadable objects
|
---|
| 172 | This version of GNU make contains a "technology preview": the ability to
|
---|
| 173 | load dynamic objects into the make runtime. These objects can be created by
|
---|
| 174 | the user and can add extended functionality, usable by makefiles.
|
---|
| 175 |
|
---|
| 176 | * New function: $(file ...) writes to a file.
|
---|
| 177 |
|
---|
| 178 | * New variable: $(GNUMAKEFLAGS) will be parsed for make flags, just like
|
---|
| 179 | MAKEFLAGS is. It can be set in the environment or the makefile, containing
|
---|
| 180 | GNU make-specific flags to allow your makefile to be portable to other
|
---|
| 181 | versions of make. Once this variable is parsed, GNU make will set it to the
|
---|
| 182 | empty string so that flags will not be duplicated on recursion.
|
---|
| 183 |
|
---|
| 184 | * New variable: `MAKE_HOST' gives the name of the host architecture
|
---|
| 185 | make was compiled for. This is the same value you see after 'Built for'
|
---|
| 186 | when running 'make --version'.
|
---|
| 187 |
|
---|
| 188 | * Behavior of MAKEFLAGS and MFLAGS is more rigorously defined. All simple
|
---|
| 189 | flags are grouped together in the first word of MAKEFLAGS. No options that
|
---|
| 190 | accept arguments appear in the first word. If no simple flags are present
|
---|
| 191 | MAKEFLAGS begins with a space. Flags with both short and long versions
|
---|
| 192 | always use the short versions in MAKEFLAGS. Flags are listed in
|
---|
| 193 | alphabetical order using ASCII ordering. MFLAGS never begins with "- ".
|
---|
| 194 |
|
---|
| 195 | * Setting the -r and -R options in MAKEFLAGS inside a makefile now works as
|
---|
| 196 | expected, removing all built-in rules and variables, respectively.
|
---|
| 197 |
|
---|
| 198 | * If a recipe fails, the makefile name and linenumber of the recipe are shown.
|
---|
| 199 |
|
---|
| 200 | * A .RECIPEPREFIX setting is remembered per-recipe and variables expanded
|
---|
| 201 | in that recipe also use that recipe prefix setting.
|
---|
| 202 |
|
---|
| 203 | * In -p output, .RECIPEPREFIX settings are shown and all target-specific
|
---|
| 204 | variables are output as if in a makefile, instead of as comments.
|
---|
| 205 |
|
---|
| 206 | * On MS-Windows, recipes that use ".." quoting will no longer force
|
---|
| 207 | invocation of commands via temporary batch files and stock Windows
|
---|
| 208 | shells, they will be short-circuited and invoked directly. (In
|
---|
| 209 | other words, " is no longer a special character for stock Windows
|
---|
| 210 | shells.) This avoids hitting shell limits for command length when
|
---|
| 211 | quotes are used, but nothing else in the command requires the shell.
|
---|
| 212 | This change could potentially mean some minor incompatibilities in
|
---|
| 213 | behavior when the recipe uses quoted string on shell command lines.
|
---|
| 214 |
|
---|
| 215 | |
---|
[2596] | 216 |
|
---|
| 217 | Version 3.82 (28 Jul 2010)
|
---|
[900] | 218 |
|
---|
| 219 | A complete list of bugs fixed in this version is available here:
|
---|
| 220 |
|
---|
[2596] | 221 | http://sv.gnu.org/bugs/index.php?group=make&report_id=111&fix_release_id=104&set=custom
|
---|
| 222 |
|
---|
| 223 | * Compiling GNU make now requires a conforming ISO C 1989 compiler and
|
---|
| 224 | standard runtime library.
|
---|
| 225 |
|
---|
| 226 | * WARNING: Backward-incompatibility!
|
---|
| 227 | The POSIX standard for make was changed in the 2008 version in a
|
---|
| 228 | fundamentally incompatible way: make is required to invoke the shell as if
|
---|
| 229 | the '-e' flag were provided. Because this would break many makefiles that
|
---|
| 230 | have been written to conform to the original text of the standard, the
|
---|
| 231 | default behavior of GNU make remains to invoke the shell with simply '-c'.
|
---|
| 232 | However, any makefile specifying the .POSIX special target will follow the
|
---|
| 233 | new POSIX standard and pass '-e' to the shell. See also .SHELLFLAGS
|
---|
| 234 | below.
|
---|
| 235 |
|
---|
| 236 | * WARNING: Backward-incompatibility!
|
---|
[3138] | 237 | The '$?' variable now contains all prerequisites that caused the target to
|
---|
| 238 | be considered out of date, even if they do not exist (previously only
|
---|
| 239 | existing targets were provided in $?).
|
---|
| 240 |
|
---|
| 241 | * WARNING: Backward-incompatibility!
|
---|
| 242 | Wildcards were not documented as returning sorted values, but the results
|
---|
[2596] | 243 | have been sorted up until this release.. If your makefiles require sorted
|
---|
| 244 | results from wildcard expansions, use the $(sort ...) function to request
|
---|
| 245 | it explicitly.
|
---|
| 246 |
|
---|
| 247 | * WARNING: Backward-incompatibility!
|
---|
| 248 | As a result of parser enhancements, three backward-compatibility issues
|
---|
| 249 | exist: first, a prerequisite containing an "=" cannot be escaped with a
|
---|
| 250 | backslash any longer. You must create a variable containing an "=" and
|
---|
| 251 | use that variable in the prerequisite. Second, variable names can no
|
---|
| 252 | longer contain whitespace, unless you put the whitespace in a variable and
|
---|
| 253 | use the variable. Third, in previous versions of make it was sometimes
|
---|
| 254 | not flagged as an error for explicit and pattern targets to appear in the
|
---|
| 255 | same rule. Now this is always reported as an error.
|
---|
| 256 |
|
---|
| 257 | * WARNING: Backward-incompatibility!
|
---|
| 258 | The pattern-specific variables and pattern rules are now applied in the
|
---|
| 259 | shortest stem first order instead of the definition order (variables
|
---|
| 260 | and rules with the same stem length are still applied in the definition
|
---|
| 261 | order). This produces the usually-desired behavior where more specific
|
---|
| 262 | patterns are preferred. To detect this feature search for 'shortest-stem'
|
---|
| 263 | in the .FEATURES special variable.
|
---|
| 264 |
|
---|
| 265 | * WARNING: Backward-incompatibility!
|
---|
| 266 | The library search behavior has changed to be compatible with the standard
|
---|
| 267 | linker behavior. Prior to this version for prerequisites specified using
|
---|
| 268 | the -lfoo syntax make first searched for libfoo.so in the current
|
---|
| 269 | directory, vpath directories, and system directories. If that didn't yield
|
---|
| 270 | a match, make then searched for libfoo.a in these directories. Starting
|
---|
| 271 | with this version make searches first for libfoo.so and then for libfoo.a
|
---|
| 272 | in each of these directories in order.
|
---|
| 273 |
|
---|
[1989] | 274 | * New command line option: --eval=STRING causes STRING to be evaluated as
|
---|
| 275 | makefile syntax (akin to using the $(eval ...) function). The evaluation
|
---|
| 276 | is performed after all default rules and variables are defined, but before
|
---|
[2596] | 277 | any makefiles are read.
|
---|
| 278 |
|
---|
| 279 | * New special variable: .RECIPEPREFIX allows you to reset the recipe
|
---|
| 280 | introduction character from the default (TAB) to something else. The
|
---|
[1989] | 281 | first character of this variable value is the new recipe introduction
|
---|
[2596] | 282 | character. If the variable is set to the empty string, TAB is used again.
|
---|
| 283 | It can be set and reset at will; recipes will use the value active when
|
---|
| 284 | they were first parsed. To detect this feature check the value of
|
---|
| 285 | $(.RECIPEPREFIX).
|
---|
| 286 |
|
---|
| 287 | * New special variable: .SHELLFLAGS allows you to change the options passed
|
---|
| 288 | to the shell when it invokes recipes. By default the value will be "-c"
|
---|
| 289 | (or "-ec" if .POSIX is set).
|
---|
| 290 |
|
---|
| 291 | * New special target: .ONESHELL instructs make to invoke a single instance
|
---|
| 292 | of the shell and provide it with the entire recipe, regardless of how many
|
---|
| 293 | lines it contains. As a special feature to allow more straightforward
|
---|
| 294 | conversion of makefiles to use .ONESHELL, any recipe line control
|
---|
| 295 | characters ('@', '+', or '-') will be removed from the second and
|
---|
| 296 | subsequent recipe lines. This happens _only_ if the SHELL value is deemed
|
---|
| 297 | to be a standard POSIX-style shell. If not, then no interior line control
|
---|
| 298 | characters are removed (as they may be part of the scripting language used
|
---|
| 299 | with the alternate SHELL).
|
---|
| 300 |
|
---|
| 301 | * New variable modifier 'private': prefixing a variable assignment with the
|
---|
| 302 | modifier 'private' suppresses inheritance of that variable by
|
---|
| 303 | prerequisites. This is most useful for target- and pattern-specific
|
---|
| 304 | variables.
|
---|
| 305 |
|
---|
| 306 | * New make directive: 'undefine' allows you to undefine a variable so that
|
---|
| 307 | it appears as if it was never set. Both $(flavor) and $(origin) functions
|
---|
| 308 | will return 'undefined' for such a variable. To detect this feature search
|
---|
| 309 | for 'undefine' in the .FEATURES special variable.
|
---|
| 310 |
|
---|
| 311 | * The parser for variable assignments has been enhanced to allow multiple
|
---|
| 312 | modifiers ('export', 'override', 'private') on the same line as variables,
|
---|
| 313 | including define/endef variables, and in any order. Also, it is possible
|
---|
| 314 | to create variables and targets named as these modifiers.
|
---|
[3138] | 315 |
|
---|
| 316 | * The 'define' make directive now allows a variable assignment operator
|
---|
| 317 | after the variable name, to allow for simple, conditional, or appending
|
---|
| 318 | multi-line variable assignment.
|
---|
| 319 |
|
---|
| 320 | * VMS-specific changes:
|
---|
| 321 |
|
---|
| 322 | * Michael Gehre (at VISTEC-SEMI dot COM) supplied a fix for a problem with
|
---|
| 323 | timestamps of object modules in OLBs. The timestamps were not correctly
|
---|
| 324 | adjusted to GMT based time, if the local VMS time was using a daylight
|
---|
| 325 | saving algorithm and if daylight saving was switched off.
|
---|
| 326 |
|
---|
| 327 | * John Eisenbraun (at HP dot COM) supplied fixes and and an enhancement to
|
---|
| 328 | append output redirection in action lines.
|
---|
| 329 |
|
---|
| 330 | * Rework of ctrl+c and ctrl+y handling.
|
---|
| 331 |
|
---|
| 332 | * Fix a problem with cached strings, which showed on case-insensitive file
|
---|
| 333 | systems.
|
---|
| 334 |
|
---|
| 335 | * Build fixes for const-ified code in VMS specific sources.
|
---|
| 336 |
|
---|
| 337 | * A note on appending the redirected output. With this change, a simple
|
---|
| 338 | mechanism is implemented to make ">>" work in action lines. In VMS
|
---|
| 339 | there is no simple feature like ">>" to have DCL command or program
|
---|
| 340 | output redirected and appended to a file. GNU make for VMS already
|
---|
| 341 | implements the redirection of output. If such a redirection is detected,
|
---|
| 342 | an ">" on the action line, GNU make creates a DCL command procedure to
|
---|
| 343 | execute the action and to redirect its output. Based on that, now ">>"
|
---|
| 344 | is also recognized and a similar but different command procedure is
|
---|
| 345 | created to implement the append. The main idea here is to create a
|
---|
| 346 | temporary file which collects the output and which is appended to the
|
---|
| 347 | wanted output file. Then the temporary file is deleted. This is all done
|
---|
| 348 | in the command procedure to keep changes in make small and simple. This
|
---|
| 349 | obviously has some limitations but it seems good enough compared with
|
---|
| 350 | the current ">" implementation. (And in my opinion, redirection is not
|
---|
| 351 | really what GNU make has to do.) With this approach, it may happen that
|
---|
| 352 | the temporary file is not yet appended and is left in SYS$SCRATCH.
|
---|
| 353 | The temporary file names look like "CMDxxxxx.". Any time the created
|
---|
| 354 | command procedure can not complete, this happens. Pressing Ctrl+Y to
|
---|
| 355 | abort make is one case. In case of Ctrl+Y the associated command
|
---|
| 356 | procedure is left in SYS$SCRATCH as well. Its name is CMDxxxxx.COM.
|
---|
| 357 |
|
---|
| 358 | * Change in the Ctrl+Y handling. The CtrlY handler now uses $delprc to
|
---|
| 359 | delete all children. This way also actions with DCL commands will be
|
---|
| 360 | stopped. As before the CtrlY handler then sends SIGQUIT to itself,
|
---|
| 361 | which is handled in common code.
|
---|
| 362 |
|
---|
| 363 | * Change in deleteing temporary command files. Temporary command files
|
---|
| 364 | are now deleted in the vms child termination handler. That deletes
|
---|
| 365 | them even if a Ctrl+C was pressed.
|
---|
[900] | 366 |
|
---|
[3138] | 367 | * The behavior of pressing Ctrl+C is not changed. It still has only an
|
---|
[53] | 368 | effect, after the current action is terminated. If that doesn't happen
|
---|
| 369 | or takes too long, Ctrl+Y should be used instead.
|
---|
| 370 |
|
---|
[501] | 371 | |
---|
| 372 |
|
---|
| 373 | Version 3.81 (01 Apr 2006)
|
---|
[280] | 374 |
|
---|
[501] | 375 | * GNU make is ported to OS/2.
|
---|
| 376 |
|
---|
| 377 | * GNU make is ported to MinGW. The MinGW build is only supported by
|
---|
| 378 | the build_w32.bat batch file; see the file README.W32 for more
|
---|
| 379 | details.
|
---|
[3138] | 380 |
|
---|
| 381 | * WARNING: Future backward-incompatibility!
|
---|
[501] | 382 | Up to and including this release, the '$?' variable does not contain
|
---|
[280] | 383 | any prerequisite that does not exist, even though that prerequisite
|
---|
| 384 | might have caused the target to rebuild. Starting with the _next_
|
---|
[501] | 385 | release of GNU make, '$?' will contain all prerequisites that caused
|
---|
| 386 | the target to be considered out of date.
|
---|
| 387 | See http://savannah.gnu.org/bugs/?16051
|
---|
| 388 |
|
---|
| 389 | * WARNING: Backward-incompatibility!
|
---|
| 390 | GNU make now implements a generic "second expansion" feature on the
|
---|
| 391 | prerequisites of both explicit and implicit (pattern) rules. In order
|
---|
| 392 | to enable this feature, the special target '.SECONDEXPANSION' must be
|
---|
| 393 | defined before the first target which takes advantage of it. If this
|
---|
| 394 | feature is enabled then after all rules have been parsed the
|
---|
[280] | 395 | prerequisites are expanded again, this time with all the automatic
|
---|
[501] | 396 | variables in scope. This means that in addition to using standard
|
---|
| 397 | SysV $$@ in prerequisites lists, you can also use complex functions
|
---|
| 398 | such as $$(notdir $$@) etc. This behavior applies to implicit rules,
|
---|
| 399 | as well, where the second expansion occurs when the rule is matched.
|
---|
[280] | 400 | However, this means that when '.SECONDEXPANSION' is enabled you must
|
---|
[501] | 401 | double-quote any "$" in your filenames; instead of "foo: boo$$bar" you
|
---|
| 402 | now must write "foo: foo$$$$bar". Note that the SysV $$@ etc. feature,
|
---|
[1989] | 403 | which used to be available by default, is now ONLY available when the
|
---|
| 404 | .SECONDEXPANSION target is defined. If your makefiles take advantage
|
---|
| 405 | of this SysV feature you will need to update them.
|
---|
| 406 |
|
---|
| 407 | * WARNING: Backward-incompatibility!
|
---|
| 408 | In order to comply with POSIX, the way in which GNU make processes
|
---|
[501] | 409 | backslash-newline sequences in recipes has changed. If your makefiles
|
---|
| 410 | use backslash-newline sequences inside of single-quoted strings in
|
---|
| 411 | recipes you will be impacted by this change. See the GNU make manual
|
---|
| 412 | subsection "Splitting Recipe Lines" (node "Splitting Lines"), in
|
---|
| 413 | section "Recipe Syntax", chapter "Writing Recipe in Rules", for
|
---|
| 414 | details.
|
---|
| 415 |
|
---|
| 416 | * WARNING: Backward-incompatibility!
|
---|
[1989] | 417 | Some previous versions of GNU make had a bug where "#" in a function
|
---|
[280] | 418 | invocation such as $(shell ...) was treated as a make comment. A
|
---|
| 419 | workaround was to escape these with backslashes. This bug has been
|
---|
| 420 | fixed: if your makefile uses "\#" in a function invocation the
|
---|
| 421 | backslash is now preserved, so you'll need to remove it.
|
---|
| 422 |
|
---|
[501] | 423 | * New command line option: -L (--check-symlink-times). On systems that
|
---|
[280] | 424 | support symbolic links, if this option is given then GNU make will
|
---|
[501] | 425 | use the most recent modification time of any symbolic links that are
|
---|
| 426 | used to resolve target files. The default behavior remains as it
|
---|
[280] | 427 | always has: use the modification time of the actual target file only.
|
---|
[53] | 428 |
|
---|
| 429 | * The "else" conditional line can now be followed by any other valid
|
---|
| 430 | conditional on the same line: this does not increase the depth of the
|
---|
| 431 | conditional nesting, so only one "endif" is required to close the
|
---|
| 432 | conditional.
|
---|
| 433 |
|
---|
| 434 | * All pattern-specific variables that match a given target are now used
|
---|
| 435 | (previously only the first match was used).
|
---|
| 436 |
|
---|
[153] | 437 | * Target-specific variables can be marked as exportable using the
|
---|
| 438 | "export" keyword.
|
---|
| 439 |
|
---|
[280] | 440 | * In a recursive $(call ...) context, any extra arguments from the outer
|
---|
| 441 | call are now masked in the context of the inner call.
|
---|
[153] | 442 |
|
---|
[280] | 443 | * Implemented a solution for the "thundering herd" problem with "-j -l".
|
---|
[501] | 444 | This version of GNU make uses an algorithm suggested by Thomas Riedl
|
---|
| 445 | <thomas.riedl@siemens.com> to track the number of jobs started in the
|
---|
[280] | 446 | last second and artificially adjust GNU make's view of the system's
|
---|
| 447 | load average accordingly.
|
---|
| 448 |
|
---|
| 449 | * New special variables available in this release:
|
---|
[501] | 450 | - .INCLUDE_DIRS: Expands to a list of directories that make searches
|
---|
| 451 | for included makefiles.
|
---|
| 452 | - .FEATURES: Contains a list of special features available in this
|
---|
[280] | 453 | version of GNU make.
|
---|
| 454 | - .DEFAULT_GOAL: Set the name of the default goal make will
|
---|
| 455 | use if no goals are provided on the command line.
|
---|
| 456 | - MAKE_RESTARTS: If set, then this is the number of times this
|
---|
| 457 | instance of make has been restarted (see "How Makefiles Are Remade"
|
---|
| 458 | in the manual).
|
---|
| 459 | - New automatic variable: $| (added in 3.80, actually): contains all
|
---|
| 460 | the order-only prerequisites defined for the target.
|
---|
| 461 |
|
---|
| 462 | * New functions available in this release:
|
---|
| 463 | - $(lastword ...) returns the last word in the list. This gives
|
---|
| 464 | identical results as $(word $(words ...) ...), but is much faster.
|
---|
[501] | 465 | - $(abspath ...) returns the absolute path (all "." and ".."
|
---|
| 466 | directories resolved, and any duplicate "/" characters removed) for
|
---|
| 467 | each path provided.
|
---|
| 468 | - $(realpath ...) returns the canonical pathname for each path
|
---|
| 469 | provided. The canonical pathname is the absolute pathname, with
|
---|
| 470 | all symbolic links resolved as well.
|
---|
| 471 | - $(info ...) prints its arguments to stdout. No makefile name or
|
---|
| 472 | line number info, etc. is printed.
|
---|
| 473 | - $(flavor ...) returns the flavor of a variable.
|
---|
| 474 | - $(or ...) provides a short-circuiting OR conditional: each argument
|
---|
| 475 | is expanded. The first true (non-empty) argument is returned; no
|
---|
[280] | 476 | further arguments are expanded. Expands to empty if there are no
|
---|
| 477 | true arguments.
|
---|
[1989] | 478 | - $(and ...) provides a short-circuiting AND conditional: each
|
---|
[280] | 479 | argument is expanded. The first false (empty) argument is
|
---|
| 480 | returned; no further arguments are expanded. Expands to the last
|
---|
| 481 | argument if all arguments are true.
|
---|
| 482 |
|
---|
[53] | 483 | * Changes made for POSIX compatibility:
|
---|
[501] | 484 | - Only touch targets (under -t) if they have a recipe.
|
---|
| 485 | - Setting the SHELL make variable does NOT change the value of the
|
---|
| 486 | SHELL environment variable given to programs invoked by make. As
|
---|
| 487 | an enhancement to POSIX, if you export the make variable SHELL then
|
---|
[280] | 488 | it will be set in the environment, just as before.
|
---|
[501] | 489 |
|
---|
[3138] | 490 | * On MS Windows systems, explicitly setting SHELL to a pathname ending
|
---|
[501] | 491 | in "cmd" or "cmd.exe" (case-insensitive) will force GNU make to use
|
---|
| 492 | the DOS command interpreter in batch mode even if a UNIX-like shell
|
---|
| 493 | could be found on the system.
|
---|
| 494 |
|
---|
| 495 | * On VMS there is now support for case-sensitive filesystems such as ODS5.
|
---|
| 496 | See the README.VMS file for information.
|
---|
[53] | 497 |
|
---|
| 498 | * Parallel builds (-jN) no longer require a working Bourne shell on
|
---|
[280] | 499 | Windows platforms. They work even with the stock Windows shells, such
|
---|
| 500 | as cmd.exe and command.com.
|
---|
| 501 |
|
---|
| 502 | * Updated to autoconf 2.59, automake 1.9.5, and gettext 0.14.1. Users
|
---|
[501] | 503 | should not be impacted.
|
---|
| 504 |
|
---|
| 505 | * New translations for Swedish, Chinese (simplified), Ukrainian,
|
---|
| 506 | Belarusian, Finnish, Kinyarwandan, and Irish. Many updated
|
---|
[53] | 507 | translations.
|
---|
[3138] | 508 |
|
---|
[53] | 509 | A complete list of bugs fixed in this version is available here:
|
---|
| 510 |
|
---|
| 511 | http://savannah.gnu.org/bugs/index.php?group=make&report_id=111&fix_release_id=103
|
---|
| 512 |
|
---|
| 513 | |
---|
| 514 |
|
---|
| 515 | Version 3.80 (03 Oct 2002)
|
---|
| 516 |
|
---|
| 517 | * A new feature exists: order-only prerequisites. These prerequisites
|
---|
| 518 | affect the order in which targets are built, but they do not impact
|
---|
| 519 | the rebuild/no-rebuild decision of their dependents. That is to say,
|
---|
| 520 | they allow you to require target B be built before target A, without
|
---|
| 521 | requiring that target A will always be rebuilt if target B is updated.
|
---|
| 522 | Patch for this feature provided by Greg McGary <greg@mcgary.org>.
|
---|
| 523 |
|
---|
| 524 | * For compatibility with SysV make, GNU make now supports the peculiar
|
---|
| 525 | syntax $$@, $$(@D), and $$(@F) in the prerequisites list of a rule.
|
---|
| 526 | This syntax is only valid within explicit and static pattern rules: it
|
---|
| 527 | cannot be used in implicit (suffix or pattern) rules. Edouard G. Parmelan
|
---|
| 528 | <egp@free.fr> provided a patch implementing this feature; however, I
|
---|
| 529 | decided to implement it in a different way.
|
---|
| 530 |
|
---|
| 531 | * The argument to the "ifdef" conditional is now expanded before it's
|
---|
| 532 | tested, so it can be a constructed variable name.
|
---|
| 533 |
|
---|
| 534 | Similarly, the arguments to "export" (when not used in a variable
|
---|
| 535 | definition context) and "unexport" are also now expanded.
|
---|
| 536 |
|
---|
| 537 | * A new function is defined: $(value ...). The argument to this
|
---|
| 538 | function is the _name_ of a variable. The result of the function is
|
---|
| 539 | the value of the variable, without having been expanded.
|
---|
| 540 |
|
---|
| 541 | * A new function is defined: $(eval ...). The arguments to this
|
---|
| 542 | function should expand to makefile commands, which will then be
|
---|
| 543 | evaluated as if they had appeared in the makefile. In combination
|
---|
| 544 | with define/endef multiline variable definitions this is an extremely
|
---|
| 545 | powerful capability. The $(value ...) function is also sometimes
|
---|
| 546 | useful here.
|
---|
| 547 |
|
---|
| 548 | * A new built-in variable is defined, $(MAKEFILE_LIST). It contains a
|
---|
| 549 | list of each makefile GNU make has read, or started to read, in the
|
---|
| 550 | order in which they were encountered. So, the last filename in the
|
---|
[1989] | 551 | list when a makefile is just being read (before any includes) is the
|
---|
[53] | 552 | name of the current makefile.
|
---|
| 553 |
|
---|
| 554 | * A new built-in variable is defined: $(.VARIABLES). When it is
|
---|
| 555 | expanded it returns a complete list of variable names defined by all
|
---|
| 556 | makefiles at that moment.
|
---|
| 557 |
|
---|
| 558 | * A new command line option is defined, -B or --always-make. If
|
---|
| 559 | specified GNU make will consider all targets out-of-date even if they
|
---|
| 560 | would otherwise not be.
|
---|
| 561 |
|
---|
| 562 | * The arguments to $(call ...) functions were being stored in $1, $2,
|
---|
| 563 | etc. as recursive variables, even though they are fully expanded
|
---|
| 564 | before assignment. This means that escaped dollar signs ($$ etc.)
|
---|
| 565 | were not behaving properly. Now the arguments are stored as simple
|
---|
| 566 | variables. This may mean that if you added extra escaping to your
|
---|
| 567 | $(call ...) function arguments you will need to undo it now.
|
---|
| 568 |
|
---|
| 569 | * The variable invoked by $(call ...) can now be recursive: unlike other
|
---|
| 570 | variables it can reference itself and this will not produce an error
|
---|
| 571 | when it is used as the first argument to $(call ...) (but only then).
|
---|
| 572 |
|
---|
| 573 | * New pseudo-target .LOW_RESOLUTION_TIME, superseding the configure
|
---|
| 574 | option --disable-nsec-timestamps. You might need this if your build
|
---|
| 575 | process depends on tools like "cp -p" preserving time stamps, since
|
---|
| 576 | "cp -p" (right now) doesn't preserve the subsecond portion of a time
|
---|
| 577 | stamp.
|
---|
| 578 |
|
---|
| 579 | * Updated translations for French, Galician, German, Japanese, Korean,
|
---|
| 580 | and Russian. New translations for Croatian, Danish, Hebrew, and
|
---|
| 581 | Turkish.
|
---|
| 582 |
|
---|
| 583 | * Updated internationalization support to Gettext 0.11.5.
|
---|
[501] | 584 | GNU make now uses Gettext's "external" feature, and does not include
|
---|
[3138] | 585 | any internationalization code itself. Configure will search your
|
---|
| 586 | system for an existing implementation of GNU Gettext (only GNU Gettext
|
---|
| 587 | is acceptable) and use it if it exists. If not, NLS will be disabled.
|
---|
| 588 | See ABOUT-NLS for more information.
|
---|
| 589 |
|
---|
| 590 | * Updated to autoconf 2.54 and automake 1.7. Users should not be impacted.
|
---|
| 591 |
|
---|
| 592 | * VMS-specific changes:
|
---|
| 593 |
|
---|
| 594 | * In default.c define variable ARCH as IA64 for VMS on Itanium systems.
|
---|
| 595 |
|
---|
| 596 | * In makefile.vms avoid name collision for glob and globfree.
|
---|
| 597 |
|
---|
| 598 | * This is the VMS port of GNU Make done by Hartmut.Becker@compaq.com.
|
---|
| 599 |
|
---|
| 600 | It is based on the specific version 3.77k and on 3.78.1. 3.77k was done
|
---|
| 601 | by Klaus Kämpf <kkaempf@rmi.de>, the code was based on the VMS port of
|
---|
| 602 | GNU Make 3.60 by Mike Moretti.
|
---|
| 603 |
|
---|
| 604 | It was ported on OpenVMS/Alpha V7.1, DECC V5.7-006. It was re-build and
|
---|
| 605 | tested on OpenVMS/Alpha V7.2, OpenVMS/VAX 7.1 and 5.5-2. Different
|
---|
| 606 | versions of DECC were used. VAXC was tried: it fails; but it doesn't
|
---|
| 607 | seem worth to get it working. There are still some PTRMISMATCH warnings
|
---|
| 608 | during the compile. Although perl is working on VMS the test scripts
|
---|
| 609 | don't work. The function $shell is still missing.
|
---|
| 610 |
|
---|
| 611 | There is a known bug in some of the VMS CRTLs. It is in the shipped
|
---|
| 612 | versions of VMS V7.2 and V7.2-1 and in the currently (October 1999)
|
---|
| 613 | available ECOs for VMS V7.1 and newer versions. It is fixed in versions
|
---|
| 614 | shipped with newer VMS versions and all ECO kits after October 1999. It
|
---|
| 615 | only shows up during the daylight saving time period (DST): stat()
|
---|
| 616 | returns a modification time 1 hour ahead. This results in GNU make
|
---|
| 617 | warning messages. For a just created source you will see:
|
---|
| 618 |
|
---|
| 619 | $ gmake x.exe
|
---|
| 620 | gmake.exe;1: *** Warning: File 'x.c' has modification time in the future
|
---|
[501] | 621 | (940582863 > 940579269)
|
---|
| 622 | cc /obj=x.obj x.c
|
---|
| 623 | link x.obj /exe=x.exe
|
---|
| 624 | gmake.exe;1: *** Warning: Clock skew detected. Your build may be
|
---|
[53] | 625 | incomplete.
|
---|
[3138] | 626 |
|
---|
[53] | 627 |
|
---|
| 628 | A complete list of bugs fixed in this version is available here:
|
---|
| 629 |
|
---|
| 630 | http://savannah.gnu.org/bugs/index.php?group=make&report_id=111&fix_release_id=102
|
---|
| 631 |
|
---|
| 632 | |
---|
| 633 |
|
---|
| 634 | Version 3.79.1 (23 Jun 2000)
|
---|
[3138] | 635 |
|
---|
[53] | 636 | * .SECONDARY with no prerequisites now prevents any target from being
|
---|
| 637 | removed because make thinks it's an intermediate file, not just those
|
---|
| 638 | listed in the makefile.
|
---|
| 639 |
|
---|
| 640 | * New configure option --disable-nsec-timestamps, but this was
|
---|
| 641 | superseded in later versions by the .LOW_RESOLUTION_TIME pseudo-target.
|
---|
| 642 | |
---|
| 643 |
|
---|
| 644 | Version 3.79 (04 Apr 2000)
|
---|
| 645 |
|
---|
| 646 | * GNU make optionally supports internationalization and locales via the
|
---|
| 647 | GNU gettext (or local gettext if suitable) package. See the ABOUT-NLS
|
---|
| 648 | file for more information on configuring GNU make for NLS.
|
---|
| 649 |
|
---|
| 650 | * Previously, GNU make quoted variables such as MAKEFLAGS and
|
---|
| 651 | MAKEOVERRIDES for proper parsing by the shell. This allowed them to
|
---|
| 652 | be used within make build scripts. However, using them there is not
|
---|
| 653 | proper behavior: they are meant to be passed to subshells via the
|
---|
| 654 | environment. Unfortunately the values were not quoted properly to be
|
---|
| 655 | passed through the environment. This meant that make didn't properly
|
---|
| 656 | pass some types of command line values to submakes.
|
---|
| 657 |
|
---|
| 658 | With this version we change that behavior: now these variables are
|
---|
| 659 | quoted properly for passing through the environment, which is the
|
---|
| 660 | correct way to do it. If you previously used these variables
|
---|
| 661 | explicitly within a make rule you may need to re-examine your use for
|
---|
| 662 | correctness given this change.
|
---|
| 663 |
|
---|
| 664 | * A new pseudo-target .NOTPARALLEL is available. If defined, the
|
---|
| 665 | current makefile is run serially regardless of the value of -j.
|
---|
| 666 | However, submakes are still eligible for parallel execution.
|
---|
| 667 |
|
---|
| 668 | * The --debug option has changed: it now allows optional flags
|
---|
| 669 | controlling the amount and type of debugging output. By default only
|
---|
| 670 | a minimal amount information is generated, displaying the names of
|
---|
| 671 | "normal" targets (not makefiles) that were deemed out of date and in
|
---|
| 672 | need of being rebuilt.
|
---|
| 673 |
|
---|
| 674 | Note that the -d option behaves as before: it takes no arguments and
|
---|
| 675 | all debugging information is generated.
|
---|
[3138] | 676 |
|
---|
| 677 | * The `-p' (print database) output now includes filename and linenumber
|
---|
| 678 | information for variable definitions, to aid debugging.
|
---|
| 679 |
|
---|
| 680 | * The wordlist function no longer reverses its arguments if the "start"
|
---|
| 681 | value is greater than the "end" value. If that's true, nothing is
|
---|
| 682 | returned.
|
---|
| 683 |
|
---|
| 684 | * Hartmut Becker provided many updates for the VMS port of GNU make.
|
---|
| 685 | See the README.VMS file for more details.
|
---|
| 686 |
|
---|
| 687 | * VMS-specific changes:
|
---|
| 688 |
|
---|
| 689 | * Fix a problem with automatically remaking makefiles. GNU make uses an
|
---|
| 690 | execve to restart itself after a successful remake of the makefile. On
|
---|
| 691 | UNIX systems execve replaces the running program with a new one and
|
---|
| 692 | resets all signal handling to the default. On VMS execve creates a child
|
---|
| 693 | process, signal and exit handlers of the parent are still active, and,
|
---|
| 694 | unfortunately, corrupt the exit code from the child. Fix in job.c:
|
---|
| 695 | ignore SIGCHLD.
|
---|
| 696 |
|
---|
| 697 | * Added some switches to reflect latest features of DECC. Modifications in
|
---|
| 698 | makefile.vms.
|
---|
| 699 |
|
---|
| 700 | * Set some definitions to reflect latest features of DECC. Modifications in
|
---|
| 701 | config.h-vms (which is copied to config.h).
|
---|
| 702 |
|
---|
| 703 | * Added extern strcmpi declaration to avoid 'implicitly declared' messages.
|
---|
| 704 | Modification in make.h.
|
---|
| 705 |
|
---|
| 706 | * Default rule for C++, conditionals for gcc (GCC_IS_NATIVE) or DEC/Digital/
|
---|
| 707 | Compaq c/c++ compilers. Modifications in default.c.
|
---|
| 708 |
|
---|
| 709 | * Usage of opendir() and friends, suppress file version. Modifications in
|
---|
| 710 | dir.c.
|
---|
| 711 |
|
---|
| 712 | * Added VMS specific code to handle ctrl+c and ctrl+y to abort make.
|
---|
| 713 | Modifications in job.c.
|
---|
| 714 |
|
---|
| 715 | * Added support to have case sensitive targets and dependencies but to
|
---|
| 716 | still use case blind file names. This is especially useful for Java
|
---|
| 717 | makefiles on VMS:
|
---|
| 718 |
|
---|
| 719 | .SUFFIXES :
|
---|
| 720 | .SUFFIXES : .class .java
|
---|
| 721 | .java.class :
|
---|
| 722 | javac "$<
|
---|
| 723 | HelloWorld.class : HelloWorld.java
|
---|
| 724 |
|
---|
| 725 | * A new macro WANT_CASE_SENSITIVE_TARGETS in config.h-vms was introduced.
|
---|
| 726 | It needs to be enabled to get this feature; default is disabled. The
|
---|
[53] | 727 | macro HAVE_CASE_INSENSITIVE_FS must not be touched: it is still enabled.
|
---|
[3138] | 728 | Modifications in file.c and config.h-vms.
|
---|
[53] | 729 |
|
---|
| 730 | * Bootstrap make to start building make is still makefile.com, but make
|
---|
| 731 | needs to be re-made with a make to make a correct version: ignore all
|
---|
| 732 | possible warnings, delete all objects, rename make.exe to a different
|
---|
| 733 | name and run it.
|
---|
| 734 |
|
---|
| 735 | * Made some minor modifications to the bootstrap build makefile.com.
|
---|
| 736 | |
---|
| 737 |
|
---|
| 738 | Version 3.78 (22 Sep 1999)
|
---|
| 739 |
|
---|
| 740 | * Two new functions, $(error ...) and $(warning ...) are available. The
|
---|
| 741 | former will cause make to fail and exit immediately upon expansion of
|
---|
| 742 | the function, with the text provided as the error message. The latter
|
---|
| 743 | causes the text provided to be printed as a warning message, but make
|
---|
| 744 | proceeds normally.
|
---|
| 745 |
|
---|
| 746 | * A new function $(call ...) is available. This allows users to create
|
---|
| 747 | their own parameterized macros and invoke them later. Original
|
---|
| 748 | implementation of this function was provided by Han-Wen Nienhuys
|
---|
| 749 | <hanwen@cs.uu.nl>.
|
---|
| 750 |
|
---|
| 751 | * A new function $(if ...) is available. It provides if-then-else
|
---|
| 752 | capabilities in a builtin function. Original implementation of this
|
---|
| 753 | function was provided by Han-Wen Nienhuys <hanwen@cs.uu.nl>.
|
---|
| 754 |
|
---|
| 755 | * Make defines a new variable, .LIBPATTERNS. This variable controls how
|
---|
| 756 | library dependency expansion (dependencies like ``-lfoo'') is performed.
|
---|
| 757 |
|
---|
| 758 | * Make accepts CRLF sequences as well as traditional LF, for
|
---|
| 759 | compatibility with makefiles created on other operating systems.
|
---|
| 760 |
|
---|
| 761 | * Make accepts a new option: -R, or --no-builtin-variables. This option
|
---|
| 762 | disables the definition of the rule-specific builtin variables (CC,
|
---|
| 763 | LD, AR, etc.). Specifying this option forces -r (--no-builtin-rules)
|
---|
| 764 | as well.
|
---|
| 765 |
|
---|
| 766 | * A "job server" feature, suggested by Howard Chu <hyc@highlandsun.com>.
|
---|
| 767 |
|
---|
| 768 | On systems that support POSIX pipe(2) semantics, GNU make can now pass
|
---|
| 769 | -jN options to submakes rather than forcing them all to use -j1. The
|
---|
| 770 | top make and all its sub-make processes use a pipe to communicate with
|
---|
| 771 | each other to ensure that no more than N jobs are started across all
|
---|
| 772 | makes. To get the old behavior of -j back, you can configure make
|
---|
| 773 | with the --disable-job-server option.
|
---|
| 774 |
|
---|
| 775 | * The confusing term "dependency" has been replaced by the more accurate
|
---|
| 776 | and standard term "prerequisite", both in the manual and in all GNU make
|
---|
| 777 | output.
|
---|
| 778 |
|
---|
| 779 | * GNU make supports the "big archive" library format introduced in AIX 4.3.
|
---|
| 780 |
|
---|
| 781 | * GNU make supports large files on AIX, HP-UX, and IRIX. These changes
|
---|
| 782 | were provided by Paul Eggert <eggert@twinsun.com>. (Large file
|
---|
| 783 | support for Solaris and Linux was introduced in 3.77, but the
|
---|
[3138] | 784 | configuration had issues: these have also been resolved).
|
---|
[53] | 785 |
|
---|
| 786 | * The Windows 95/98/NT (W32) version of GNU make now has native support
|
---|
| 787 | for the Cygnus Cygwin release B20.1 shell (bash).
|
---|
| 788 |
|
---|
| 789 | * The GNU make regression test suite, long available separately "under
|
---|
| 790 | the table", has been integrated into the release. You can invoke it
|
---|
| 791 | by running "make check" in the distribution. Note that it requires
|
---|
| 792 | Perl (either Perl 4 or Perl 5) to run.
|
---|
| 793 | |
---|
| 794 |
|
---|
| 795 | Version 3.77 (28 Jul 1998)
|
---|
| 796 |
|
---|
| 797 | * Implement BSD make's "?=" variable assignment operator. The variable
|
---|
| 798 | is assigned the specified value only if that variable is not already
|
---|
| 799 | defined.
|
---|
| 800 |
|
---|
| 801 | * Make defines a new variable, "CURDIR", to contain the current working
|
---|
| 802 | directory (after the -C option, if any, has been processed).
|
---|
| 803 | Modifying this variable has no effect on the operation of make.
|
---|
| 804 |
|
---|
| 805 | * Make defines a new default RCS rule, for new-style master file
|
---|
| 806 | storage: ``% :: RCS/%'' (note no ``,v'' suffix).
|
---|
| 807 |
|
---|
| 808 | Make defines new default rules for DOS-style C++ file naming
|
---|
| 809 | conventions, with ``.cpp'' suffixes. All the same rules as for
|
---|
| 810 | ``.cc'' and ``.C'' suffixes are provided, along with LINK.cpp and
|
---|
| 811 | COMPILE.cpp macros (which default to the same value as LINK.cc and
|
---|
| 812 | COMPILE.cc). Note CPPFLAGS is still C preprocessor flags! You should
|
---|
| 813 | use CXXFLAGS to change C++ compiler flags.
|
---|
| 814 |
|
---|
| 815 | * A new feature, "target-specific variable values", has been added.
|
---|
| 816 | This is a large change so please see the appropriate sections of the
|
---|
| 817 | manual for full details. Briefly, syntax like this:
|
---|
| 818 |
|
---|
| 819 | TARGET: VARIABLE = VALUE
|
---|
| 820 |
|
---|
| 821 | defines VARIABLE as VALUE within the context of TARGET. This is
|
---|
| 822 | similar to SunOS make's "TARGET := VARIABLE = VALUE" feature. Note
|
---|
| 823 | that the assignment may be of any type, not just recursive, and that
|
---|
| 824 | the override keyword is available.
|
---|
| 825 |
|
---|
| 826 | COMPATIBILITY: This new syntax means that if you have any rules where
|
---|
| 827 | the first or second dependency has an equal sign (=) in its name,
|
---|
| 828 | you'll have to escape them with a backslash: "foo : bar\=baz".
|
---|
[3138] | 829 | Further, if you have any dependencies which already contain "\=",
|
---|
| 830 | you'll have to escape both of them: "foo : bar\\\=baz".
|
---|
| 831 |
|
---|
| 832 | * A new appendix listing the most common error and warning messages
|
---|
| 833 | generated by GNU make, with some explanation, has been added to the
|
---|
| 834 | GNU make User's Manual.
|
---|
| 835 |
|
---|
| 836 | * Updates to the GNU make Customs library support (see README.customs).
|
---|
| 837 |
|
---|
| 838 | * Updates to the Windows 95/NT port from Rob Tulloh (see README.W32),
|
---|
| 839 | and to the DOS port from Eli Zaretski (see README.DOS).
|
---|
| 840 |
|
---|
| 841 | * VMS-specific changes:
|
---|
| 842 |
|
---|
| 843 | * This is the VMS port of GNU Make.
|
---|
| 844 | It is based on the VMS port of GNU Make 3.60 by Mike Moretti.
|
---|
| 845 | This port was done by Klaus Kämpf <kkaempf@rmi.de>
|
---|
| 846 |
|
---|
| 847 | * There is first-level support available from proGIS Software, Germany.
|
---|
| 848 | Visit their web-site at http://www.progis.de to get information
|
---|
| 849 | about other vms software and forthcoming updates to gnu make.
|
---|
| 850 |
|
---|
| 851 | * /bin/sh style I/O redirection is supported. You can now write lines like
|
---|
| 852 | mcr sys$disk:[]program.exe < input.txt > output.txt &> error.txt
|
---|
| 853 |
|
---|
| 854 | * Makefile variables are looked up in the current environment. You can set
|
---|
| 855 | symbols or logicals in DCL and evaluate them in the Makefile via
|
---|
| 856 | $(<name-of-symbol-or-logical>). Variables defined in the Makefile
|
---|
| 857 | override VMS symbols/logicals !
|
---|
| 858 |
|
---|
| 859 | * Functions for file names are working now. See the GNU Make manual for
|
---|
| 860 | $(dir ...) and $(wildcard ...). Unix-style and VMS-style names are
|
---|
| 861 | supported as arguments.
|
---|
| 862 |
|
---|
| 863 | * The default rules are set up for GNU C. Building an executable from a
|
---|
| 864 | single source file is as easy as 'make file.exe'.
|
---|
| 865 |
|
---|
| 866 | * The variable $(ARCH) is predefined as ALPHA or VAX resp. Makefiles for
|
---|
| 867 | different VMS systems can now be written by checking $(ARCH) as in
|
---|
[53] | 868 | ifeq ($(ARCH),ALPHA)
|
---|
[3138] | 869 | $(ECHO) "On the Alpha"
|
---|
[53] | 870 | else
|
---|
| 871 | $(ECHO) "On the VAX"
|
---|
| 872 | endif
|
---|
[3138] | 873 |
|
---|
[53] | 874 | * Command lines of excessive length are correctly broken and written to a
|
---|
| 875 | batch file in sys$scratch for later execution. There's no limit to the
|
---|
| 876 | lengths of commands (and no need for .opt files :-) any more.
|
---|
| 877 |
|
---|
| 878 | * Empty commands are handled correctly and don't end in a new DCL process.
|
---|
| 879 | |
---|
| 880 |
|
---|
| 881 | Version 3.76.1 (19 Sep 1997)
|
---|
| 882 |
|
---|
| 883 | * Small (but serious) bug fix. Quick rollout to get into the GNU source CD.
|
---|
| 884 | |
---|
| 885 |
|
---|
| 886 | Version 3.76 (16 Sep 1997)
|
---|
| 887 |
|
---|
| 888 | * GNU make now uses automake to control Makefile.in generation. This
|
---|
| 889 | should make it more consistent with the GNU standards.
|
---|
| 890 |
|
---|
| 891 | * VPATH functionality has been changed to incorporate the VPATH+ patch,
|
---|
| 892 | previously maintained by Paul Smith <psmith@baynetworks.com>. See the
|
---|
| 893 | manual.
|
---|
| 894 |
|
---|
| 895 | * Make defines a new variable, `MAKECMDGOALS', to contain the goals that
|
---|
| 896 | were specified on the command line, if any. Modifying this variable
|
---|
| 897 | has no effect on the operation of make.
|
---|
| 898 |
|
---|
| 899 | * A new function, `$(wordlist S,E,TEXT)', is available: it returns a
|
---|
| 900 | list of words from number S to number E (inclusive) of TEXT.
|
---|
| 901 |
|
---|
| 902 | * Instead of an error, detection of future modification times gives a
|
---|
| 903 | warning and continues. The warning is repeated just before GNU make
|
---|
| 904 | exits, so it is less likely to be lost.
|
---|
| 905 |
|
---|
| 906 | * Fix the $(basename) and $(suffix) functions so they only operate on
|
---|
| 907 | the last filename, not the entire string:
|
---|
| 908 |
|
---|
| 909 | Command Old Result New Result
|
---|
| 910 | ------- ---------- ----------
|
---|
| 911 | $(basename a.b) a a
|
---|
| 912 | $(basename a.b/c) a a.b/c
|
---|
| 913 | $(suffix a.b) b b
|
---|
| 914 | $(suffix a.b/c) b/c <empty>
|
---|
| 915 |
|
---|
[3138] | 916 | * The $(strip) function now removes newlines as well as TABs and spaces.
|
---|
[53] | 917 |
|
---|
[3138] | 918 | * The $(shell) function now changes CRLF (\r\n) pairs to a space as well
|
---|
| 919 | as newlines (\n).
|
---|
| 920 |
|
---|
| 921 | * Updates to the Windows 95/NT port from Rob Tulloh (see README.W32).
|
---|
| 922 |
|
---|
| 923 | * Eli Zaretskii has updated the port to 32-bit protected mode on MSDOS
|
---|
| 924 | and MS-Windows, building with the DJGPP v2 port of GNU C/C++ compiler
|
---|
| 925 | and utilities. See README.DOS for details, and direct all questions
|
---|
| 926 | concerning this port to Eli Zaretskii <eliz@is.elta.co.il> or DJ
|
---|
| 927 | Delorie <dj@delorie.com>.
|
---|
| 928 |
|
---|
| 929 | * VMS-specific changes:
|
---|
| 930 |
|
---|
| 931 | * John W. Eaton has updated the VMS port to support libraries and VPATH.
|
---|
| 932 |
|
---|
| 933 | * The cd command is supported if it's called as $(CD). This invokes
|
---|
| 934 | the 'builtin_cd' command which changes the directory.
|
---|
| 935 | Calling 'set def' doesn't do the trick, since a sub-shell is
|
---|
| 936 | spawned for this command, the directory is changed *in this sub-shell*
|
---|
| 937 | and the sub-shell ends.
|
---|
| 938 |
|
---|
| 939 | * Libraries are not supported. They were in GNU Make 3.60 but somehow I
|
---|
| 940 | didn't care porting the code. If there is enough interest, I'll do it at
|
---|
| 941 | some later time.
|
---|
| 942 |
|
---|
| 943 | * The variable $^ separates files with commas instead of spaces (It's the
|
---|
| 944 | natural thing to do for VMS).
|
---|
| 945 |
|
---|
| 946 | * See defaults.c for VMS default suffixes and my definitions for default
|
---|
| 947 | rules and variables.
|
---|
| 948 |
|
---|
| 949 | * The shell function is not implemented yet.
|
---|
| 950 |
|
---|
| 951 | * Load average routines haven't been implemented for VMS yet.
|
---|
| 952 |
|
---|
| 953 | * The default include directory for including other makefiles is
|
---|
| 954 | SYS$SYSROOT:[SYSLIB] (I don't remember why I didn't just use
|
---|
| 955 | SYS$LIBRARY: instead; maybe it wouldn't work that way).
|
---|
| 956 |
|
---|
| 957 | * The default makefiles make looks for are: makefile.vms, gnumakefile,
|
---|
| 958 | makefile., and gnumakefile. .
|
---|
| 959 |
|
---|
| 960 | * The stat() function and handling of time stamps in VMS is broken, so I
|
---|
| 961 | replaced it with a hack in vmsfunctions.c. I will provide a full rewrite
|
---|
| 962 | somewhere in the future. Be warned, the time resolution inside make is
|
---|
| 963 | less than what vms provides. This might be a problem on the faster Alphas.
|
---|
| 964 |
|
---|
| 965 | * You can use a : in a filename only if you precede it with a backslash ('\').
|
---|
[53] | 966 | E.g.- hobbes\:[bogas.files]
|
---|
| 967 |
|
---|
| 968 | * Make ignores success, informational, or warning errors (-S-, -I-, or -W-).
|
---|
| 969 | But it will stop on -E- and -F- errors. (unless you do something
|
---|
| 970 | to override this in your makefile, or whatever).
|
---|
| 971 |
|
---|
| 972 | * Remote stuff isn't implemented yet.
|
---|
| 973 |
|
---|
| 974 | * Multiple line DCL commands, such as "if" statements, must be put inside
|
---|
| 975 | command files. You can run a command file by using \@.
|
---|
| 976 |
|
---|
| 977 | Version 3.75 (27 Aug 1996)
|
---|
| 978 |
|
---|
| 979 | * The directory messages printed by `-w' and implicitly in sub-makes,
|
---|
| 980 | are now omitted if Make runs no commands and has no other messages to print.
|
---|
| 981 |
|
---|
| 982 | * Make now detects files that for whatever reason have modification times
|
---|
| 983 | in the future and gives an error. Files with such impossible timestamps
|
---|
[3138] | 984 | can result from unsynchronized clocks, or archived distributions
|
---|
| 985 | containing bogus timestamps; they confuse Make's dependency engine
|
---|
| 986 | thoroughly.
|
---|
| 987 |
|
---|
| 988 | * The new directive `sinclude' is now recognized as another name for
|
---|
| 989 | `-include', for compatibility with some other Makes.
|
---|
| 990 |
|
---|
| 991 | * Aaron Digulla has contributed a port to AmigaDOS. See README.Amiga for
|
---|
[53] | 992 | details, and direct all Amiga-related questions to <digulla@fh-konstanz.de>.
|
---|
[3138] | 993 |
|
---|
[53] | 994 | * Rob Tulloh of Tivoli Systems has contributed a port to Windows NT or 95.
|
---|
| 995 | See README.W32 for details, and direct all Windows-related questions to
|
---|
| 996 | <rob_tulloh@tivoli.com>.
|
---|
| 997 |
|
---|
| 998 | * VMS-specific changes:
|
---|
| 999 |
|
---|
| 1000 | * Lots of default settings are adapted for VMS. See default.c.
|
---|
[3138] | 1001 |
|
---|
[53] | 1002 | * Long command lines are now converted to command files.
|
---|
| 1003 |
|
---|
| 1004 | * Comma (',') as a separator is now allowed. See makefile.vms for an example.
|
---|
| 1005 | |
---|
| 1006 |
|
---|
| 1007 | Version 3.73 (05 Apr 1995)
|
---|
| 1008 |
|
---|
| 1009 | * Converted to use Autoconf version 2, so `configure' has some new options.
|
---|
| 1010 | See INSTALL for details.
|
---|
[1989] | 1011 |
|
---|
[53] | 1012 | * You can now send a SIGUSR1 signal to Make to toggle printing of debugging
|
---|
| 1013 | output enabled by -d, at any time during the run.
|
---|
| 1014 | |
---|
| 1015 |
|
---|
| 1016 | Version 3.72 (04 Nov 1994)
|
---|
| 1017 |
|
---|
| 1018 | * DJ Delorie has ported Make to MS-DOS using the GO32 extender.
|
---|
| 1019 | He is maintaining the DOS port, not the GNU Make maintainer;
|
---|
[1989] | 1020 | please direct bugs and questions for DOS to <djgpp@sun.soe.clarkson.edu>.
|
---|
| 1021 | MS-DOS binaries are available for FTP from ftp.simtel.net in
|
---|
[53] | 1022 | /pub/simtelnet/gnu/djgpp/.
|
---|
| 1023 |
|
---|
| 1024 | * The `MAKEFLAGS' variable (in the environment or in a makefile) can now
|
---|
| 1025 | contain variable definitions itself; these are treated just like
|
---|
| 1026 | command line variable definitions. Make will automatically insert any
|
---|
| 1027 | variable definitions from the environment value of `MAKEFLAGS' or from
|
---|
| 1028 | the command line, into the `MAKEFLAGS' value exported to children. The
|
---|
| 1029 | `MAKEOVERRIDES' variable previously included in the value of `$(MAKE)'
|
---|
| 1030 | for sub-makes is now included in `MAKEFLAGS' instead. As before, you can
|
---|
[1989] | 1031 | reset `MAKEOVERRIDES' in your makefile to avoid putting all the variables
|
---|
| 1032 | in the environment when its size is limited.
|
---|
| 1033 |
|
---|
[53] | 1034 | * If `.DELETE_ON_ERROR' appears as a target, Make will delete the target of
|
---|
[3138] | 1035 | a rule if it has changed when its recipe exits with a nonzero status,
|
---|
[53] | 1036 | just as when the recipe gets a signal.
|
---|
| 1037 |
|
---|
| 1038 | * The automatic variable `$+' is new. It lists all the dependencies like
|
---|
| 1039 | `$^', but preserves duplicates listed in the makefile. This is useful
|
---|
| 1040 | for linking rules, where library files sometimes need to be listed twice
|
---|
| 1041 | in the link order.
|
---|
| 1042 |
|
---|
| 1043 | * You can now specify the `.IGNORE' and `.SILENT' special targets with
|
---|
| 1044 | dependencies to limit their effects to those files. If a file appears as
|
---|
| 1045 | a dependency of `.IGNORE', then errors will be ignored while running the
|
---|
| 1046 | recipe to update that file. Likewise if a file appears as a dependency
|
---|
| 1047 | of `.SILENT', then the recipe to update that file will not be printed
|
---|
| 1048 | before it is run. (This change was made to conform to POSIX.2.)
|
---|
| 1049 | |
---|
| 1050 |
|
---|
| 1051 | Version 3.71 (21 May 1994)
|
---|
| 1052 |
|
---|
| 1053 | * The automatic variables `$(@D)', `$(%D)', `$(*D)', `$(<D)', `$(?D)', and
|
---|
| 1054 | `$(^D)' now omit the trailing slash from the directory name. (This change
|
---|
| 1055 | was made to comply with POSIX.2.)
|
---|
| 1056 |
|
---|
[3138] | 1057 | * The source distribution now includes the Info files for the Make manual.
|
---|
[53] | 1058 | There is no longer a separate distribution containing Info and DVI files.
|
---|
| 1059 |
|
---|
| 1060 | * You can now set the variables `binprefix' and/or `manprefix' in
|
---|
| 1061 | Makefile.in (or on the command line when installing) to install GNU make
|
---|
| 1062 | under a name other than `make' (i.e., ``make binprefix=g install''
|
---|
| 1063 | installs GNU make as `gmake').
|
---|
| 1064 |
|
---|
| 1065 | * The built-in Texinfo rules use the new variables `TEXI2DVI_FLAGS' for
|
---|
| 1066 | flags to the `texi2dvi' script, and `MAKEINFO_FLAGS' for flags to the
|
---|
| 1067 | Makeinfo program.
|
---|
[3138] | 1068 |
|
---|
[53] | 1069 | * The exit status of Make when it runs into errors is now 2 instead of 1.
|
---|
| 1070 | The exit status is 1 only when using -q and some target is not up to date.
|
---|
| 1071 | (This change was made to comply with POSIX.2.)
|
---|
| 1072 | |
---|
| 1073 |
|
---|
| 1074 | Version 3.70 (03 Jan 1994)
|
---|
| 1075 |
|
---|
| 1076 | * It is no longer a fatal error to have a NUL character in a makefile.
|
---|
| 1077 | You should never put a NUL in a makefile because it can have strange
|
---|
| 1078 | results, but otherwise empty lines full of NULs (such as produced by
|
---|
| 1079 | the `xmkmf' program) will always work fine.
|
---|
| 1080 |
|
---|
[1989] | 1081 | * The error messages for nonexistent included makefiles now refer to the
|
---|
| 1082 | makefile name and line number where the `include' appeared, so Emacs's
|
---|
[53] | 1083 | C-x ` command takes you there (in case it's a typo you need to fix).
|
---|
| 1084 | |
---|
| 1085 |
|
---|
| 1086 | Version 3.69 (07 Nov 1993)
|
---|
[3138] | 1087 |
|
---|
[53] | 1088 | * Implicit rule search for archive member references is now done in the
|
---|
[1989] | 1089 | opposite order from previous versions: the whole target name `LIB(MEM)'
|
---|
| 1090 | first, and just the member name and parentheses `(MEM)' second.
|
---|
[53] | 1091 |
|
---|
| 1092 | * Make now gives an error for an unterminated variable or function reference.
|
---|
| 1093 | For example, `$(foo' with no matching `)' or `${bar' with no matching `}'.
|
---|
| 1094 |
|
---|
[1989] | 1095 | * The new default variable `MAKE_VERSION' gives the version number of
|
---|
| 1096 | Make, and a string describing the remote job support compiled in (if any).
|
---|
[53] | 1097 | Thus the value (in this release) is something like `3.69' or `3.69-Customs'.
|
---|
[3138] | 1098 |
|
---|
[53] | 1099 | * Commands in an invocation of the `shell' function are no longer run
|
---|
| 1100 | with a modified environment like recipes are. As in versions before
|
---|
| 1101 | 3.68, they now run with the environment that `make' started with. We
|
---|
| 1102 | have reversed the change made in version 3.68 because it turned out to
|
---|
| 1103 | cause a paradoxical situation in cases like:
|
---|
| 1104 |
|
---|
| 1105 | export variable = $(shell echo value)
|
---|
| 1106 |
|
---|
| 1107 | When Make attempted to put this variable in the environment for a
|
---|
| 1108 | recipe, it would try expand the value by running the shell command
|
---|
| 1109 | `echo value'. In version 3.68, because it constructed an environment
|
---|
[3138] | 1110 | for that shell command in the same way, Make would begin to go into an
|
---|
| 1111 | infinite loop and then get a fatal error when it detected the loop.
|
---|
[53] | 1112 |
|
---|
| 1113 | * The recipe given for `.DEFAULT' is now used for phony targets with no
|
---|
| 1114 | recipe.
|
---|
| 1115 | |
---|
| 1116 |
|
---|
| 1117 | Version 3.68 (28 Jul 1993)
|
---|
| 1118 |
|
---|
| 1119 | * You can list several archive member names inside parenthesis:
|
---|
[1989] | 1120 | `lib(mem1 mem2 mem3)' is equivalent to `lib(mem1) lib(mem2) lib(mem3)'.
|
---|
| 1121 |
|
---|
[53] | 1122 | * You can use wildcards inside archive member references. For example,
|
---|
| 1123 | `lib(*.o)' expands to all existing members of `lib' whose names end in
|
---|
[3138] | 1124 | `.o' (e.g. `lib(a.o) lib(b.o)'); `*.a(*.o)' expands to all such members
|
---|
[53] | 1125 | of all existing files whose names end in `.a' (e.g. `foo.a(a.o)
|
---|
| 1126 | foo.a(b.o) bar.a(c.o) bar.a(d.o)'.
|
---|
| 1127 |
|
---|
| 1128 | * A suffix rule `.X.a' now produces two pattern rules:
|
---|
[3138] | 1129 | (%.o): %.X # Previous versions produced only this.
|
---|
[53] | 1130 | %.a: %.X # Now produces this as well, just like other suffixes.
|
---|
| 1131 |
|
---|
| 1132 | * The new flag `--warn-undefined-variables' says to issue a warning message
|
---|
[3138] | 1133 | whenever Make expands a reference to an undefined variable.
|
---|
[53] | 1134 |
|
---|
| 1135 | * The new `-include' directive is just like `include' except that there is
|
---|
| 1136 | no error (not even a warning) for a nonexistent makefile.
|
---|
| 1137 |
|
---|
| 1138 | * Commands in an invocation of the `shell' function are now run with a
|
---|
| 1139 | modified environment like recipes are, so you can use `export' et al
|
---|
| 1140 | to set up variables for them. They used to run with the environment
|
---|
| 1141 | that `make' started with.
|
---|
| 1142 | |
---|
| 1143 |
|
---|
| 1144 | Version 3.66 (21 May 1993)
|
---|
| 1145 |
|
---|
| 1146 | * `make --version' (or `make -v') now exits immediately after printing
|
---|
[3138] | 1147 | the version number.
|
---|
[53] | 1148 | |
---|
| 1149 |
|
---|
| 1150 | Version 3.65 (09 May 1993)
|
---|
| 1151 |
|
---|
| 1152 | * Make now supports long-named members in `ar' archive files.
|
---|
| 1153 | |
---|
| 1154 |
|
---|
| 1155 | Version 3.64 (21 Apr 1993)
|
---|
| 1156 |
|
---|
| 1157 | * Make now supports the `+=' syntax for a variable definition which appends
|
---|
| 1158 | to the variable's previous value. See the section `Appending More Text
|
---|
| 1159 | to Variables' in the manual for full details.
|
---|
| 1160 |
|
---|
| 1161 | * The new option `--no-print-directory' inhibits the `-w' or
|
---|
| 1162 | `--print-directory' feature. Make turns on `--print-directory'
|
---|
| 1163 | automatically if you use `-C' or `--directory', and in sub-makes; some
|
---|
| 1164 | users have found this behavior undesirable.
|
---|
[1989] | 1165 |
|
---|
| 1166 | * The built-in implicit rules now support the alternative extension
|
---|
[53] | 1167 | `.txinfo' for Texinfo files, just like `.texinfo' and `.texi'.
|
---|
| 1168 | |
---|
| 1169 |
|
---|
| 1170 | Version 3.63 (22 Jan 1993)
|
---|
| 1171 |
|
---|
| 1172 | * Make now uses a standard GNU `configure' script. See the new file
|
---|
| 1173 | INSTALL for the new (and much simpler) installation procedure.
|
---|
| 1174 |
|
---|
| 1175 | * There is now a shell script to build Make the first time, if you have no
|
---|
| 1176 | other `make' program. `build.sh' is created by `configure'; see README.
|
---|
| 1177 |
|
---|
[1989] | 1178 | * GNU Make now completely conforms to the POSIX.2 specification for `make'.
|
---|
[53] | 1179 |
|
---|
| 1180 | * Elements of the `$^' and `$?' automatic variables that are archive
|
---|
[3138] | 1181 | member references now list only the member name, as in Unix and POSIX.2.
|
---|
[53] | 1182 |
|
---|
[3138] | 1183 | * You should no longer ever need to specify the `-w' switch, which prints
|
---|
[53] | 1184 | the current directory before and after Make runs. The `-C' switch to
|
---|
[3138] | 1185 | change directory, and recursive use of Make, now set `-w' automatically.
|
---|
[53] | 1186 |
|
---|
[3138] | 1187 | * Multiple double-colon rules for the same target will no longer have their
|
---|
[53] | 1188 | recipes run simultaneously under -j, as this could result in the two
|
---|
[3138] | 1189 | recipes trying to change the file at the same time and interfering with
|
---|
[53] | 1190 | one another.
|
---|
| 1191 |
|
---|
| 1192 | * The `SHELL' variable is now never taken from the environment.
|
---|
[1989] | 1193 | Each makefile that wants a shell other than the default (/bin/sh) must
|
---|
| 1194 | set SHELL itself. SHELL is always exported to child processes.
|
---|
[53] | 1195 | This change was made for compatibility with POSIX.2.
|
---|
| 1196 |
|
---|
| 1197 | * Make now accepts long options. There is now an informative usage message
|
---|
| 1198 | that tells you what all the options are and what they do. Try `make --help'.
|
---|
| 1199 |
|
---|
| 1200 | * There are two new directives: `export' and `unexport'. All variables are
|
---|
| 1201 | no longer automatically put into the environments of the recipe lines that
|
---|
| 1202 | Make runs. Instead, only variables specified on the command line or in
|
---|
| 1203 | the environment are exported by default. To export others, use:
|
---|
| 1204 | export VARIABLE
|
---|
| 1205 | or you can define variables with:
|
---|
| 1206 | export VARIABLE = VALUE
|
---|
| 1207 | or:
|
---|
| 1208 | export VARIABLE := VALUE
|
---|
[3138] | 1209 | You can use just:
|
---|
[53] | 1210 | export
|
---|
[3138] | 1211 | or:
|
---|
[53] | 1212 | .EXPORT_ALL_VARIABLES:
|
---|
| 1213 | to get the old behavior. See the node `Variables/Recursion' in the manual
|
---|
| 1214 | for a full description.
|
---|
| 1215 |
|
---|
| 1216 | * The recipe from the `.DEFAULT' special target is only applied to
|
---|
| 1217 | targets which have no rules at all, not all targets with no recipe.
|
---|
| 1218 | This change was made for compatibility with Unix make.
|
---|
| 1219 |
|
---|
| 1220 | * All fatal error messages now contain `***', so they are easy to find in
|
---|
| 1221 | compilation logs.
|
---|
| 1222 |
|
---|
| 1223 | * Dependency file names like `-lNAME' are now replaced with the actual file
|
---|
| 1224 | name found, as with files found by normal directory search (VPATH).
|
---|
| 1225 | The library file `libNAME.a' may now be found in the current directory,
|
---|
| 1226 | which is checked before VPATH; the standard set of directories (/lib,
|
---|
| 1227 | /usr/lib, /usr/local/lib) is now checked last.
|
---|
| 1228 | See the node `Libraries/Search' in the manual for full details.
|
---|
| 1229 |
|
---|
| 1230 | * A single `include' directive can now specify more than one makefile to
|
---|
| 1231 | include, like this:
|
---|
| 1232 | include file1 file2
|
---|
| 1233 | You can also use shell file name patterns in an `include' directive:
|
---|
| 1234 | include *.mk
|
---|
| 1235 |
|
---|
| 1236 | * The default directories to search for included makefiles, and for
|
---|
| 1237 | libraries specified with `-lNAME', are now set by configuration.
|
---|
| 1238 |
|
---|
| 1239 | * You can now use blanks as well as colons to separate the directories in a
|
---|
| 1240 | search path for the `vpath' directive or the `VPATH' variable.
|
---|
| 1241 |
|
---|
| 1242 | * You can now use variables and functions in the left hand side of a
|
---|
| 1243 | variable assignment, as in "$(foo)bar = value".
|
---|
| 1244 |
|
---|
| 1245 | * The `MAKE' variable is always defined as `$(MAKE_COMMAND) $(MAKEOVERRIDES)'.
|
---|
[1989] | 1246 | The `MAKE_COMMAND' variable is now defined to the name with which make
|
---|
| 1247 | was invoked.
|
---|
[53] | 1248 |
|
---|
| 1249 | * The built-in rules for C++ compilation now use the variables `$(CXX)' and
|
---|
| 1250 | `$(CXXFLAGS)' instead of `$(C++)' and `$(C++FLAGS)'. The old names had
|
---|
| 1251 | problems with shells that cannot have `+' in environment variable names.
|
---|
| 1252 |
|
---|
| 1253 | * The value of a recursively expanded variable is now expanded when putting
|
---|
| 1254 | it into the environment for child processes. This change was made for
|
---|
| 1255 | compatibility with Unix make.
|
---|
| 1256 |
|
---|
| 1257 | * A rule with no targets before the `:' is now accepted and ignored.
|
---|
| 1258 | This change was made for compatibility with SunOS 4 make.
|
---|
| 1259 | We do not recommend that you write your makefiles to take advantage of this.
|
---|
| 1260 |
|
---|
| 1261 | * The `-I' switch can now be used in MAKEFLAGS, and are put there
|
---|
| 1262 | automatically just like other switches.
|
---|
| 1263 | |
---|
[1989] | 1264 |
|
---|
[53] | 1265 | Version 3.61
|
---|
| 1266 |
|
---|
| 1267 | * Built-in rules for C++ source files with the `.C' suffix.
|
---|
| 1268 | We still recommend that you use `.cc' instead.
|
---|
| 1269 |
|
---|
| 1270 | * If a recipe is given too many times for a single target, the last one
|
---|
| 1271 | given is used, and a warning message is printed.
|
---|
| 1272 |
|
---|
| 1273 | * Error messages about makefiles are in standard GNU error format,
|
---|
| 1274 | so C-x ` in Emacs works on them.
|
---|
| 1275 |
|
---|
| 1276 | * Dependencies of pattern rules which contain no % need not actually exist
|
---|
| 1277 | if they can be created (just like dependencies which do have a %).
|
---|
| 1278 | |
---|
| 1279 |
|
---|
| 1280 | Version 3.60
|
---|
| 1281 |
|
---|
| 1282 | * A message is always printed when Make decides there is nothing to be done.
|
---|
| 1283 | It used to be that no message was printed for top-level phony targets
|
---|
| 1284 | (because "`phony' is up to date" isn't quite right). Now a different
|
---|
| 1285 | message "Nothing to be done for `phony'" is printed in that case.
|
---|
| 1286 |
|
---|
| 1287 | * Archives on AIX now supposedly work.
|
---|
| 1288 |
|
---|
[1989] | 1289 | * When the recipes specified for .DEFAULT are used to update a target,
|
---|
| 1290 | the $< automatic variable is given the same value as $@ for that target.
|
---|
| 1291 | This is how Unix make behaves, and this behavior is mandated by POSIX.2.
|
---|
| 1292 | |
---|
| 1293 |
|
---|
[53] | 1294 | Version 3.59
|
---|
[1989] | 1295 |
|
---|
| 1296 | * The -n, -q, and -t options are not put in the `MAKEFLAGS' and `MFLAG'
|
---|
| 1297 | variables while remaking makefiles, so recursive makes done while remaking
|
---|
| 1298 | makefiles will behave properly.
|
---|
[53] | 1299 |
|
---|
[1989] | 1300 | * If the special target `.NOEXPORT' is specified in a makefile,
|
---|
[53] | 1301 | only variables that came from the environment and variables
|
---|
| 1302 | defined on the command line are exported.
|
---|
| 1303 | |
---|
| 1304 |
|
---|
| 1305 | Version 3.58
|
---|
| 1306 |
|
---|
| 1307 | * Suffix rules may have dependencies (which are ignored).
|
---|
| 1308 | |
---|
| 1309 |
|
---|
| 1310 | Version 3.57
|
---|
| 1311 |
|
---|
[1989] | 1312 | * Dependencies of the form `-lLIB' are searched for as /usr/local/lib/libLIB.a
|
---|
[53] | 1313 | as well as libLIB.a in /usr/lib, /lib, the current directory, and VPATH.
|
---|
| 1314 | |
---|
[1989] | 1315 |
|
---|
[53] | 1316 | Version 3.55
|
---|
| 1317 |
|
---|
[1989] | 1318 | * There is now a Unix man page for GNU Make. It is certainly not a
|
---|
[53] | 1319 | replacement for the Texinfo manual, but it documents the basic
|
---|
| 1320 | functionality and the switches. For full documentation, you should
|
---|
| 1321 | still read the Texinfo manual. Thanks to Dennis Morse of Stanford
|
---|
[1989] | 1322 | University for contributing the initial version of this.
|
---|
| 1323 |
|
---|
[53] | 1324 | * Variables which are defined by default (e.g., `CC') will no longer be
|
---|
[1989] | 1325 | put into the environment for child processes. (If these variables are
|
---|
| 1326 | reset by the environment, makefiles, or the command line, they will
|
---|
| 1327 | still go into the environment.)
|
---|
[53] | 1328 |
|
---|
| 1329 | * Makefiles which have recipes but no dependencies (and thus are always
|
---|
| 1330 | considered out of date and in need of remaking), will not be remade (if they
|
---|
| 1331 | were being remade only because they were makefiles). This means that GNU
|
---|
| 1332 | Make will no longer go into an infinite loop when fed the makefiles that
|
---|
| 1333 | `imake' (necessary to build X Windows) produces.
|
---|
[1989] | 1334 |
|
---|
| 1335 | * There is no longer a warning for using the `vpath' directive with an explicit
|
---|
[53] | 1336 | pathname (instead of a `%' pattern).
|
---|
| 1337 | |
---|
| 1338 |
|
---|
| 1339 | Version 3.51
|
---|
[1989] | 1340 |
|
---|
| 1341 | * When removing intermediate files, only one `rm' command line is printed,
|
---|
| 1342 | listing all file names.
|
---|
[53] | 1343 |
|
---|
| 1344 | * There are now automatic variables `$(^D)', `$(^F)', `$(?D)', and `$(?F)'.
|
---|
| 1345 | These are the directory-only and file-only versions of `$^' and `$?'.
|
---|
[1989] | 1346 |
|
---|
[3138] | 1347 | * Library dependencies given as `-lNAME' will use "libNAME.a" in the current
|
---|
[53] | 1348 | directory if it exists.
|
---|
| 1349 |
|
---|
[1989] | 1350 | * The automatic variable `$($/)' is no longer defined.
|
---|
[53] | 1351 |
|
---|
| 1352 | * Leading `+' characters on a recipe line make that line be executed even
|
---|
| 1353 | under -n, -t, or -q (as if the line contained `$(MAKE)').
|
---|
| 1354 |
|
---|
| 1355 | * For recipe lines containing `$(MAKE)', `${MAKE}', or leading `+' characters,
|
---|
| 1356 | only those lines are executed, not the entire recipe.
|
---|
| 1357 | (This is how Unix make behaves for lines containing `$(MAKE)' or `${MAKE}'.)
|
---|
| 1358 | |
---|
[1989] | 1359 |
|
---|
| 1360 | Version 3.50
|
---|
| 1361 |
|
---|
[53] | 1362 | * Filenames in rules will now have ~ and ~USER expanded.
|
---|
| 1363 |
|
---|
| 1364 | * The `-p' output has been changed so it can be used as a makefile.
|
---|
| 1365 | (All information that isn't specified by makefiles is prefaced with comment
|
---|
[1989] | 1366 | characters.)
|
---|
[53] | 1367 | |
---|
| 1368 |
|
---|
| 1369 | Version 3.49
|
---|
| 1370 |
|
---|
[1989] | 1371 | * The % character can be quoted with backslash in implicit pattern rules,
|
---|
| 1372 | static pattern rules, `vpath' directives, and `patsubst', `filter', and
|
---|
[53] | 1373 | `filter-out' functions. A warning is issued if a `vpath' directive's
|
---|
[1989] | 1374 | pattern contains no %.
|
---|
| 1375 |
|
---|
[53] | 1376 | * The `wildcard' variable expansion function now expands ~ and ~USER.
|
---|
| 1377 |
|
---|
| 1378 | * Messages indicating failed recipe lines now contain the target name:
|
---|
| 1379 | make: *** [target] Error 1
|
---|
[1989] | 1380 |
|
---|
| 1381 | * The `-p' output format has been changed somewhat to look more like
|
---|
[53] | 1382 | makefile rules and to give all information that Make has about files.
|
---|
| 1383 | |
---|
| 1384 |
|
---|
| 1385 | Version 3.48
|
---|
| 1386 | |
---|
| 1387 |
|
---|
[1989] | 1388 | Version 3.47
|
---|
[53] | 1389 |
|
---|
| 1390 | * The `-l' switch with no argument removes any previous load-average limit.
|
---|
| 1391 |
|
---|
| 1392 | * When the `-w' switch is in effect, and Make has updated makefiles,
|
---|
[1989] | 1393 | it will write a `Leaving directory' message before re-executing itself.
|
---|
| 1394 | This makes the `directory change tracking' changes to Emacs's compilation
|
---|
| 1395 | commands work properly.
|
---|
| 1396 | |
---|
[53] | 1397 |
|
---|
| 1398 | Version 3.46
|
---|
| 1399 |
|
---|
[1989] | 1400 | * The automatic variable `$*' is now defined for explicit rules,
|
---|
| 1401 | as it is in Unix make.
|
---|
[53] | 1402 | |
---|
| 1403 |
|
---|
| 1404 | Version 3.45
|
---|
| 1405 |
|
---|
| 1406 | * The `-j' switch is now put in the MAKEFLAGS and MFLAGS variables when
|
---|
| 1407 | specified without an argument (indicating infinite jobs).
|
---|
| 1408 | The `-l' switch is not always put in the MAKEFLAGS and MFLAGS variables.
|
---|
| 1409 |
|
---|
[1989] | 1410 | * Make no longer checks hashed directories after running recipes.
|
---|
[53] | 1411 | The behavior implemented in 3.41 caused too much slowdown.
|
---|
| 1412 | |
---|
| 1413 |
|
---|
| 1414 | Version 3.44
|
---|
| 1415 |
|
---|
| 1416 | * A dependency is NOT considered newer than its dependent if
|
---|
| 1417 | they have the same modification time. The behavior implemented
|
---|
| 1418 | in 3.43 conflicts with RCS.
|
---|
[1989] | 1419 | |
---|
| 1420 |
|
---|
[53] | 1421 | Version 3.43
|
---|
| 1422 |
|
---|
| 1423 | * Dependency loops are no longer fatal errors.
|
---|
| 1424 |
|
---|
| 1425 | * A dependency is considered newer than its dependent if
|
---|
| 1426 | they have the same modification time.
|
---|
| 1427 | |
---|
| 1428 |
|
---|
| 1429 | Version 3.42
|
---|
| 1430 |
|
---|
[1989] | 1431 | * The variables F77 and F77FLAGS are now set by default to $(FC) and
|
---|
[53] | 1432 | $(FFLAGS). Makefiles designed for System V make may use these variables in
|
---|
[1989] | 1433 | explicit rules and expect them to be set. Unfortunately, there is no way to
|
---|
[53] | 1434 | make setting these affect the Fortran implicit rules unless FC and FFLAGS
|
---|
[1989] | 1435 | are not used (and these are used by BSD make).
|
---|
| 1436 | |
---|
| 1437 |
|
---|
[53] | 1438 | Version 3.41
|
---|
| 1439 |
|
---|
| 1440 | * Make now checks to see if its hashed directories are changed by recipes.
|
---|
| 1441 | Other makes that hash directories (Sun, 4.3 BSD) don't do this.
|
---|
| 1442 | |
---|
| 1443 |
|
---|
| 1444 | Version 3.39
|
---|
| 1445 |
|
---|
[1989] | 1446 | * The `shell' function no longer captures standard error output.
|
---|
[53] | 1447 | |
---|
| 1448 |
|
---|
[1989] | 1449 | Version 3.32
|
---|
[53] | 1450 |
|
---|
| 1451 | * A file beginning with a dot can be the default target if it also contains
|
---|
| 1452 | a slash (e.g., `../bin/foo'). (Unix make allows this as well.)
|
---|
| 1453 | |
---|
[1989] | 1454 |
|
---|
[53] | 1455 | Version 3.31
|
---|
| 1456 |
|
---|
| 1457 | * Archive member names are truncated to 15 characters.
|
---|
| 1458 |
|
---|
[1989] | 1459 | * Yet more USG stuff.
|
---|
| 1460 |
|
---|
[53] | 1461 | * Minimal support for Microport System V (a 16-bit machine and a
|
---|
| 1462 | brain-damaged compiler). This has even lower priority than other USG
|
---|
| 1463 | support, so if it gets beyond trivial, I will take it out completely.
|
---|
| 1464 |
|
---|
| 1465 | * Revamped default implicit rules (not much visible change).
|
---|
| 1466 |
|
---|
| 1467 | * The -d and -p options can come from the environment.
|
---|
| 1468 | |
---|
[1989] | 1469 |
|
---|
[53] | 1470 | Version 3.30
|
---|
| 1471 |
|
---|
| 1472 | * Improved support for USG and HPUX (hopefully).
|
---|
| 1473 |
|
---|
| 1474 | * A variable reference like `$(foo:a=b)', if `a' contains a `%', is
|
---|
| 1475 | equivalent to `$(patsubst a,b,$(foo))'.
|
---|
[1989] | 1476 |
|
---|
[53] | 1477 | * Defining .DEFAULT with no deps or recipe clears its recipe.
|
---|
| 1478 |
|
---|
| 1479 | * New default implicit rules for .S (cpp, then as), and .sh (copy and
|
---|
| 1480 | make executable). All default implicit rules that use cpp (even
|
---|
[1989] | 1481 | indirectly), use $(CPPFLAGS).
|
---|
| 1482 | |
---|
[53] | 1483 |
|
---|
| 1484 | Version 3.29
|
---|
| 1485 |
|
---|
| 1486 | * Giving the -j option with no arguments gives you infinite jobs.
|
---|
[1989] | 1487 | |
---|
[53] | 1488 |
|
---|
| 1489 | Version 3.28
|
---|
| 1490 |
|
---|
| 1491 | * New option: "-l LOAD" says not to start any new jobs while others are
|
---|
| 1492 | running if the load average is not below LOAD (a floating-point number).
|
---|
| 1493 |
|
---|
| 1494 | * There is support in place for implementations of remote command execution
|
---|
| 1495 | in Make. See the file remote.c.
|
---|
[1989] | 1496 | |
---|
[53] | 1497 |
|
---|
| 1498 | Version 3.26
|
---|
| 1499 |
|
---|
| 1500 | * No more than 10 directories will be kept open at once.
|
---|
| 1501 | (This number can be changed by redefining MAX_OPEN_DIRECTORIES in dir.c.)
|
---|
| 1502 | |
---|
| 1503 |
|
---|
| 1504 | Version 3.25
|
---|
| 1505 |
|
---|
| 1506 | * Archive files will have their modification times recorded before doing
|
---|
| 1507 | anything that might change their modification times by updating an archive
|
---|
| 1508 | member.
|
---|
| 1509 | |
---|
| 1510 |
|
---|
| 1511 | Version 3.20
|
---|
[1989] | 1512 |
|
---|
[53] | 1513 | * The `MAKELEVEL' variable is defined for use by makefiles.
|
---|
| 1514 | |
---|
| 1515 |
|
---|
| 1516 | Version 3.19
|
---|
[1989] | 1517 |
|
---|
[53] | 1518 | * The recursion level indications in error messages are much shorter than
|
---|
[1989] | 1519 | they were in version 3.14.
|
---|
| 1520 | |
---|
[53] | 1521 |
|
---|
| 1522 | Version 3.18
|
---|
| 1523 |
|
---|
| 1524 | * Leading spaces before directives are ignored (as documented).
|
---|
| 1525 |
|
---|
[501] | 1526 | * Included makefiles can determine the default goal target.
|
---|
[3138] | 1527 | (System V Make does it this way, so we are being compatible).
|
---|
| 1528 | |
---|
[53] | 1529 |
|
---|
[501] | 1530 | Version 3.14.
|
---|
| 1531 |
|
---|
[1989] | 1532 | * Variables that are defaults built into Make will not be put in the
|
---|
| 1533 | environment for children. This just saves some environment space and,
|
---|
[53] | 1534 | except under -e, will be transparent to sub-makes.
|
---|
[501] | 1535 |
|
---|
| 1536 | * Error messages from sub-makes will indicate the level of recursion.
|
---|
| 1537 |
|
---|
| 1538 | * Hopefully some speed-up for large directories due to a change in the
|
---|
| 1539 | directory hashing scheme.
|
---|
[1989] | 1540 |
|
---|
| 1541 | * One child will always get a standard input that is usable.
|
---|
| 1542 |
|
---|
| 1543 | * Default makefiles that don't exist will be remade and read in.
|
---|
| 1544 | |
---|
| 1545 |
|
---|
| 1546 | Version 3.13.
|
---|
| 1547 |
|
---|
| 1548 | * Count parentheses inside expansion function calls so you can
|
---|
| 1549 | have nested calls: `$(sort $(foreach x,a b,$(x)))'.
|
---|
| 1550 | |
---|
| 1551 |
|
---|
| 1552 | Version 3.12.
|
---|
| 1553 |
|
---|
| 1554 | * Several bug fixes, including USG and Sun386i support.
|
---|
| 1555 |
|
---|
| 1556 | * `shell' function to expand shell commands a la `
|
---|
| 1557 |
|
---|
| 1558 | * If the `-d' flag is given, version information will be printed.
|
---|
| 1559 |
|
---|
| 1560 | * The `-c' option has been renamed to `-C' for compatibility with tar.
|
---|
| 1561 |
|
---|
| 1562 | * The `-p' option no longer inhibits other normal operation.
|
---|
| 1563 |
|
---|
| 1564 | * Makefiles will be updated and re-read if necessary.
|
---|
| 1565 |
|
---|
| 1566 | * Can now run several recipes at once (parallelism), -j option.
|
---|
| 1567 |
|
---|
| 1568 | * Error messages will contain the level of Make recursion, if any.
|
---|
| 1569 |
|
---|
| 1570 | * The `MAKEFLAGS' and `MFLAGS' variables will be scanned for options after
|
---|
| 1571 | makefiles are read.
|
---|
| 1572 |
|
---|
| 1573 | * A double-colon rule with no dependencies will always have its recipe run.
|
---|
| 1574 | (This is how both the BSD and System V versions of Make do it.)
|
---|
| 1575 | |
---|
| 1576 |
|
---|
| 1577 | Version 3.05
|
---|
| 1578 |
|
---|
| 1579 | (Changes from versions 1 through 3.05 were never recorded. Sorry.)
|
---|
| 1580 | |
---|
| 1581 |
|
---|
| 1582 | -------------------------------------------------------------------------------
|
---|
| 1583 | Copyright (C) 1988-2016 Free Software Foundation, Inc.
|
---|
| 1584 | This file is part of GNU Make.
|
---|
| 1585 |
|
---|
| 1586 | GNU Make is free software; you can redistribute it and/or modify it under the
|
---|
| 1587 | terms of the GNU General Public License as published by the Free Software
|
---|
| 1588 | Foundation; either version 3 of the License, or (at your option) any later
|
---|
| 1589 | version.
|
---|
| 1590 |
|
---|
| 1591 | GNU Make is distributed in the hope that it will be useful, but WITHOUT ANY
|
---|
| 1592 | WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
|
---|
| 1593 | A PARTICULAR PURPOSE. See the GNU General Public License for more details.
|
---|
| 1594 |
|
---|
| 1595 | You should have received a copy of the GNU General Public License along with
|
---|
| 1596 | this program. If not, see <http://www.gnu.org/licenses/>.
|
---|