VirtualBox

Changeset 1993 in kBuild for trunk/src/kmk/NEWS


Ignore:
Timestamp:
Oct 29, 2008 12:37:51 AM (16 years ago)
Author:
bird
Message:

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

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/kmk/NEWS

    r903 r1993  
    1515* Compiling GNU make now requires a conforming ISO C 1989 compiler and
    1616  standard runtime library.
     17
     18* New special variable: .RECIPEPREFIX allows you to reset the recipe
     19  introduction character from the default (TAB) to something else.  The
     20  first character of this variable value is the new recipe introduction
     21  character.  If the variable is set to the empty string, TAB is used
     22  again.  It can be set and reset at will; rules will be parsed
     23  according to the current value.
    1724
    1825
     
    5360
    5461* WARNING: Backward-incompatibility!
     62
    5563  In order to comply with POSIX, the way in which GNU make processes
    56   backslash-newline sequences in command strings has changed.  If your
    57   makefiles use backslash-newline sequences inside of single-quoted
    58   strings in command scripts you will be impacted by this change.  See
    59   the GNU make manual subsection "Splitting Command Lines" (node
    60   "Splitting Lines"), in section "Command Syntax", chapter "Writing the
    61   Commands in Rules", for details.
     64  backslash-newline sequences in recipes has changed.  If your makefiles
     65  use backslash-newline sequences inside of single-quoted strings in
     66  recipes you will be impacted by this change.  See the GNU make manual
     67  subsection "Splitting Recipe Lines" (node "Splitting Lines"), in
     68  section "Recipe Syntax", chapter "Writing Recipe in Rules", for
     69  details.
    6270
    6371* WARNING: Backward-incompatibility!
     
    6876  backslash is now preserved, so you'll need to remove it.
    6977
    70 * New command-line option: -L (--check-symlink-times).  On systems that
     78* New command line option: -L (--check-symlink-times).  On systems that
    7179  support symbolic links, if this option is given then GNU make will
    7280  use the most recent modification time of any symbolic links that are
     
    129137
    130138* Changes made for POSIX compatibility:
    131    - Only touch targets (under -t) if they have at least one command.
     139   - Only touch targets (under -t) if they have a recipe.
    132140   - Setting the SHELL make variable does NOT change the value of the
    133141     SHELL environment variable given to programs invoked by make.  As
     
    203211  makefiles at that moment.
    204212
    205 * A new command-line option is defined, -B or --always-make.  If
     213* A new command line option is defined, -B or --always-make.  If
    206214  specified GNU make will consider all targets out-of-date even if they
    207215  would otherwise not be.
     
    493501* The `MAKEFLAGS' variable (in the environment or in a makefile) can now
    494502  contain variable definitions itself; these are treated just like
    495   command-line variable definitions.  Make will automatically insert any
     503  command line variable definitions.  Make will automatically insert any
    496504  variable definitions from the environment value of `MAKEFLAGS' or from
    497505  the command line, into the `MAKEFLAGS' value exported to children.  The
     
    502510
    503511* If `.DELETE_ON_ERROR' appears as a target, Make will delete the target of
    504   a rule if it has changed when its commands exit with a nonzero status,
    505   just as when the commands get a signal.
     512  a rule if it has changed when its recipe exits with a nonzero status,
     513  just as when the recipe gets a signal.
    506514
    507515* The automatic variable `$+' is new.  It lists all the dependencies like
     
    513521  dependencies to limit their effects to those files.  If a file appears as
    514522  a dependency of `.IGNORE', then errors will be ignored while running the
    515   commands to update that file.  Likewise if a file appears as a dependency
    516   of `.SILENT', then the commands to update that file will not be printed
    517   before they are run.  (This change was made to conform to POSIX.2.)
     523  recipe to update that file.  Likewise if a file appears as a dependency
     524  of `.SILENT', then the recipe to update that file will not be printed
     525  before it is run.  (This change was made to conform to POSIX.2.)
    518526
    519527
     
    566574  Thus the value (in this release) is something like `3.69' or `3.69-Customs'.
    567575
    568 * Commands in an invocation of the `shell' function are no longer run with
    569   a modified environment like target commands are.  As in versions before
     576* Commands in an invocation of the `shell' function are no longer run
     577  with a modified environment like recipes are.  As in versions before
    570578  3.68, they now run with the environment that `make' started with.  We
    571579  have reversed the change made in version 3.68 because it turned out to
     
    574582        export variable = $(shell echo value)
    575583
    576   When Make attempted to put this variable in the environment for a target
    577   command, it would try expand the value by running the shell command
     584  When Make attempted to put this variable in the environment for a
     585  recipe, it would try expand the value by running the shell command
    578586  `echo value'.  In version 3.68, because it constructed an environment
    579587  for that shell command in the same way, Make would begin to go into an
    580588  infinite loop and then get a fatal error when it detected the loop.
    581589
    582 * The commands given for `.DEFAULT' are now used for phony targets with no
    583   commands.
     590* The recipe given for `.DEFAULT' is now used for phony targets with no
     591  recipe.
    584592
    585593
     
    606614
    607615* Commands in an invocation of the `shell' function are now run with a
    608   modified environment like target commands are, so you can use `export' et
    609   al to set up variables for them.  They used to run with the environment
     616  modified environment like recipes are, so you can use `export' et al
     617  to set up variables for them.  They used to run with the environment
    610618  that `make' started with.
    611619
     
    655663
    656664* Multiple double-colon rules for the same target will no longer have their
    657   commands run simultaneously under -j, as this could result in the two
    658   commands trying to change the file at the same time and interfering with
     665  recipes run simultaneously under -j, as this could result in the two
     666  recipes trying to change the file at the same time and interfering with
    659667  one another.
    660668
     
    668676
    669677* There are two new directives: `export' and `unexport'.  All variables are
    670   no longer automatically put into the environments of the commands that
     678  no longer automatically put into the environments of the recipe lines that
    671679  Make runs.  Instead, only variables specified on the command line or in
    672680  the environment are exported by default.  To export others, use:
     
    683691  for a full description.
    684692
    685 * The commands from the `.DEFAULT' special target are only applied to
    686   targets which have no rules at all, not all targets with no commands.
     693* The recipe from the `.DEFAULT' special target is only applied to
     694  targets which have no rules at all, not all targets with no recipe.
    687695  This change was made for compatibility with Unix make.
    688696
     
    737745  We still recommend that you use `.cc' instead.
    738746
    739 * If commands are given too many times for a single target,
    740   the last set given is used, and a warning message is printed.
     747* If a recipe is given too many times for a single target, the last one
     748  given is used, and a warning message is printed.
    741749
    742750* Error messages about makefiles are in standard GNU error format,
     
    756764* Archives on AIX now supposedly work.
    757765
    758 * When the commands specified for .DEFAULT are used to update a target,
     766* When the recipes specified for .DEFAULT are used to update a target,
    759767  the $< automatic variable is given the same value as $@ for that target.
    760768  This is how Unix make behaves, and this behavior is mandated by POSIX.2.
     
    785793Version 3.55
    786794
    787 * There is now a Unix man page for GNU Make.  It is certainly not a replacement
    788 for the Texinfo manual, but it documents the basic functionality and the
    789 switches.  For full documentation, you should still read the Texinfo manual.
    790 Thanks to Dennis Morse of Stanford University for contributing the initial
    791 version of this.
    792 
    793 * Variables which are defined by default (e.g., `CC') will no longer be put
    794 into the environment for child processes.  (If these variables are reset by the
    795 environment, makefiles, or the command line, they will still go into the
    796 environment.)
    797 
    798 * Makefiles which have commands but no dependencies (and thus are always
     795* There is now a Unix man page for GNU Make.  It is certainly not a
     796  replacement for the Texinfo manual, but it documents the basic
     797  functionality and the switches.  For full documentation, you should
     798  still read the Texinfo manual.  Thanks to Dennis Morse of Stanford
     799  University for contributing the initial version of this.
     800
     801* Variables which are defined by default (e.g., `CC') will no longer be
     802  put into the environment for child processes.  (If these variables are
     803  reset by the environment, makefiles, or the command line, they will
     804  still go into the environment.)
     805
     806* Makefiles which have recipes but no dependencies (and thus are always
    799807  considered out of date and in need of remaking), will not be remade (if they
    800808  were being remade only because they were makefiles).  This means that GNU
     
    809817
    810818* When removing intermediate files, only one `rm' command line is printed,
    811 listing all file names.
     819  listing all file names.
    812820
    813821* There are now automatic variables `$(^D)', `$(^F)', `$(?D)', and `$(?F)'.
    814 These are the directory-only and file-only versions of `$^' and `$?'.
     822  These are the directory-only and file-only versions of `$^' and `$?'.
    815823
    816824* Library dependencies given as `-lNAME' will use "libNAME.a" in the current
    817 directory if it exists.
     825  directory if it exists.
    818826
    819827* The automatic variable `$($/)' is no longer defined.
    820828
    821 * Leading `+' characters on a command line make that line be executed even
    822 under -n, -t, or -q (as if the line contained `$(MAKE)').
    823 
    824 * For command lines containing `$(MAKE)', `${MAKE}', or leading `+' characters,
    825 only those lines are executed, not their entire rules.
    826 (This is how Unix make behaves for lines containing `$(MAKE)' or `${MAKE}'.)
     829* Leading `+' characters on a recipe line make that line be executed even
     830  under -n, -t, or -q (as if the line contained `$(MAKE)').
     831
     832* For recipe lines containing `$(MAKE)', `${MAKE}', or leading `+' characters,
     833  only those lines are executed, not the entire recipe.
     834  (This is how Unix make behaves for lines containing `$(MAKE)' or `${MAKE}'.)
    827835
    828836
     
    832840
    833841* The `-p' output has been changed so it can be used as a makefile.
    834 (All information that isn't specified by makefiles is prefaced with comment
    835 characters.)
     842  (All information that isn't specified by makefiles is prefaced with comment
     843  characters.)
    836844
    837845
     
    839847
    840848* The % character can be quoted with backslash in implicit pattern rules,
    841 static pattern rules, `vpath' directives, and `patsubst', `filter', and
    842 `filter-out' functions.  A warning is issued if a `vpath' directive's
    843 pattern contains no %.
     849  static pattern rules, `vpath' directives, and `patsubst', `filter', and
     850  `filter-out' functions.  A warning is issued if a `vpath' directive's
     851  pattern contains no %.
    844852
    845853* The `wildcard' variable expansion function now expands ~ and ~USER.
    846854
    847 * Messages indicating failed commands now contain the target name:
     855* Messages indicating failed recipe lines now contain the target name:
    848856        make: *** [target] Error 1
    849857
    850858* The `-p' output format has been changed somewhat to look more like
    851 makefile rules and to give all information that Make has about files.
     859  makefile rules and to give all information that Make has about files.
    852860
    853861
     
    860868
    861869* When the `-w' switch is in effect, and Make has updated makefiles,
    862 it will write a `Leaving directory' messagfe before re-executing itself.
    863 This makes the `directory change tracking' changes to Emacs's compilation
    864 commands work properly.
     870  it will write a `Leaving directory' message before re-executing itself.
     871  This makes the `directory change tracking' changes to Emacs's compilation
     872  commands work properly.
    865873
    866874
     
    868876
    869877* The automatic variable `$*' is now defined for explicit rules,
    870 as it is in Unix make.
     878  as it is in Unix make.
    871879
    872880
     
    874882
    875883* The `-j' switch is now put in the MAKEFLAGS and MFLAGS variables when
    876 specified without an argument (indicating infinite jobs).
    877 The `-l' switch is not always put in the MAKEFLAGS and MFLAGS variables.
    878 
    879 * Make no longer checks hashed directories after running commands.
    880 The behavior implemented in 3.41 caused too much slowdown.
     884  specified without an argument (indicating infinite jobs).
     885  The `-l' switch is not always put in the MAKEFLAGS and MFLAGS variables.
     886
     887* Make no longer checks hashed directories after running recipes.
     888  The behavior implemented in 3.41 caused too much slowdown.
    881889
    882890
     
    884892
    885893* A dependency is NOT considered newer than its dependent if
    886 they have the same modification time.  The behavior implemented
    887 in 3.43 conflicts with RCS.
     894  they have the same modification time.  The behavior implemented
     895  in 3.43 conflicts with RCS.
    888896
    889897
     
    893901
    894902* A dependency is considered newer than its dependent if
    895 they have the same modification time.
     903  they have the same modification time.
    896904
    897905
     
    899907
    900908* The variables F77 and F77FLAGS are now set by default to $(FC) and
    901 $(FFLAGS).  Makefiles designed for System V make may use these variables in
    902 explicit rules and expect them to be set.  Unfortunately, there is no way to
    903 make setting these affect the Fortran implicit rules unless FC and FFLAGS
    904 are not used (and these are used by BSD make).
     909  $(FFLAGS).  Makefiles designed for System V make may use these variables in
     910  explicit rules and expect them to be set.  Unfortunately, there is no way to
     911  make setting these affect the Fortran implicit rules unless FC and FFLAGS
     912  are not used (and these are used by BSD make).
    905913
    906914
    907915Version 3.41
    908916
    909 * Make now checks to see if its hashed directories are changed by commands.
    910 Other makes that hash directories (Sun, 4.3 BSD) don't do this.
     917* Make now checks to see if its hashed directories are changed by recipes.
     918  Other makes that hash directories (Sun, 4.3 BSD) don't do this.
    911919
    912920
     
    919927
    920928* A file beginning with a dot can be the default target if it also contains
    921 a slash (e.g., `../bin/foo').  (Unix make allows this as well.)
     929  a slash (e.g., `../bin/foo').  (Unix make allows this as well.)
    922930
    923931
     
    929937
    930938* Minimal support for Microport System V (a 16-bit machine and a
    931 brain-damaged compiler).  This has even lower priority than other USG
    932 support, so if it gets beyond trivial, I will take it out completely.
     939  brain-damaged compiler).  This has even lower priority than other USG
     940  support, so if it gets beyond trivial, I will take it out completely.
    933941
    934942* Revamped default implicit rules (not much visible change).
     
    942950
    943951* A variable reference like `$(foo:a=b)', if `a' contains a `%', is
    944 equivalent to `$(patsubst a,b,$(foo))'.
    945 
    946 * Defining .DEFAULT with no deps or commands clears its commands.
    947 
    948 * New default implicit rules for .S (cpp, then as), and .sh (copy and make
    949 executable).  All default implicit rules that use cpp (even indirectly), use
    950 $(CPPFLAGS).
     952  equivalent to `$(patsubst a,b,$(foo))'.
     953
     954* Defining .DEFAULT with no deps or recipe clears its recipe.
     955
     956* New default implicit rules for .S (cpp, then as), and .sh (copy and
     957  make executable).  All default implicit rules that use cpp (even
     958  indirectly), use $(CPPFLAGS).
    951959
    952960
     
    959967
    960968* New option: "-l LOAD" says not to start any new jobs while others are
    961 running if the load average is not below LOAD (a floating-point number).
     969  running if the load average is not below LOAD (a floating-point number).
    962970
    963971* There is support in place for implementations of remote command execution
    964 in Make.  See the file remote.c.
     972  in Make.  See the file remote.c.
    965973
    966974
     
    968976
    969977* No more than 10 directories will be kept open at once.
    970 (This number can be changed by redefining MAX_OPEN_DIRECTORIES in dir.c.)
     978  (This number can be changed by redefining MAX_OPEN_DIRECTORIES in dir.c.)
    971979
    972980
     
    974982
    975983* Archive files will have their modification times recorded before doing
    976 anything that might change their modification times by updating an archive
    977 member.
     984  anything that might change their modification times by updating an archive
     985  member.
    978986
    979987
     
    986994
    987995* The recursion level indications in error messages are much shorter than
    988 they were in version 3.14.
     996  they were in version 3.14.
    989997
    990998
     
    9941002
    9951003* Included makefiles can determine the default goal target.
    996 (System V Make does it this way, so we are being compatible).
     1004  (System V Make does it this way, so we are being compatible).
    9971005
    9981006
     
    10001008
    10011009* Variables that are defaults built into Make will not be put in the
    1002 environment for children.  This just saves some environment space and,
    1003 except under -e, will be transparent to sub-makes.
     1010  environment for children.  This just saves some environment space and,
     1011  except under -e, will be transparent to sub-makes.
    10041012
    10051013* Error messages from sub-makes will indicate the level of recursion.
    10061014
    10071015* Hopefully some speed-up for large directories due to a change in the
    1008 directory hashing scheme.
     1016  directory hashing scheme.
    10091017
    10101018* One child will always get a standard input that is usable.
     
    10161024
    10171025* Count parentheses inside expansion function calls so you can
    1018 have nested calls: `$(sort $(foreach x,a b,$(x)))'.
     1026  have nested calls: `$(sort $(foreach x,a b,$(x)))'.
    10191027
    10201028
     
    10331041* Makefiles will be updated and re-read if necessary.
    10341042
    1035 * Can now run several commands at once (parallelism), -j option.
     1043* Can now run several recipes at once (parallelism), -j option.
    10361044
    10371045* Error messages will contain the level of Make recursion, if any.
    10381046
    10391047* The `MAKEFLAGS' and `MFLAGS' variables will be scanned for options after
    1040 makefiles are read.
    1041 
    1042 * A double-colon rule with no dependencies will always have its commands run.
    1043 (This is how both the BSD and System V versions of Make do it.)
     1048  makefiles are read.
     1049
     1050* A double-colon rule with no dependencies will always have its recipe run.
     1051  (This is how both the BSD and System V versions of Make do it.)
    10441052
    10451053
     
    10511059-------------------------------------------------------------------------------
    10521060Copyright (C) 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997,
    1053 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006 Free Software
     10611998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007 Free Software
    10541062Foundation, Inc.
    10551063This file is part of GNU Make.
     
    10571065GNU Make is free software; you can redistribute it and/or modify it under the
    10581066terms of the GNU General Public License as published by the Free Software
    1059 Foundation; either version 2, or (at your option) any later version.
     1067Foundation; either version 3 of the License, or (at your option) any later
     1068version.
    10601069
    10611070GNU Make is distributed in the hope that it will be useful, but WITHOUT ANY
     
    10641073
    10651074You should have received a copy of the GNU General Public License along with
    1066 GNU Make; see the file COPYING.  If not, write to the Free Software
    1067 Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
     1075this program.  If not, see <http://www.gnu.org/licenses/>.
Note: See TracChangeset for help on using the changeset viewer.

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