Changeset 1993 in kBuild for trunk/src/kmk/NEWS
- Timestamp:
- Oct 29, 2008 12:37:51 AM (16 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/kmk/NEWS
r903 r1993 15 15 * Compiling GNU make now requires a conforming ISO C 1989 compiler and 16 16 standard runtime library. 17 18 * New special variable: .RECIPEPREFIX allows you to reset the recipe 19 introduction character from the default (TAB) to something else. The 20 first character of this variable value is the new recipe introduction 21 character. If the variable is set to the empty string, TAB is used 22 again. It can be set and reset at will; rules will be parsed 23 according to the current value. 17 24 18 25 … … 53 60 54 61 * WARNING: Backward-incompatibility! 62 55 63 In order to comply with POSIX, the way in which GNU make processes 56 backslash-newline sequences in command strings has changed. If your57 makefiles use backslash-newline sequences inside of single-quoted58 strings in command scripts you will be impacted by this change. See59 the GNU make manual subsection "Splitting Command Lines" (node60 "Splitting Lines"), in section "Command Syntax", chapter "Writing the61 Commands in Rules", fordetails.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. 62 70 63 71 * WARNING: Backward-incompatibility! … … 68 76 backslash is now preserved, so you'll need to remove it. 69 77 70 * New command -line option: -L (--check-symlink-times). On systems that78 * New command line option: -L (--check-symlink-times). On systems that 71 79 support symbolic links, if this option is given then GNU make will 72 80 use the most recent modification time of any symbolic links that are … … 129 137 130 138 * Changes made for POSIX compatibility: 131 - Only touch targets (under -t) if they have a t least one command.139 - Only touch targets (under -t) if they have a recipe. 132 140 - Setting the SHELL make variable does NOT change the value of the 133 141 SHELL environment variable given to programs invoked by make. As … … 203 211 makefiles at that moment. 204 212 205 * A new command -line option is defined, -B or --always-make. If213 * A new command line option is defined, -B or --always-make. If 206 214 specified GNU make will consider all targets out-of-date even if they 207 215 would otherwise not be. … … 493 501 * The `MAKEFLAGS' variable (in the environment or in a makefile) can now 494 502 contain variable definitions itself; these are treated just like 495 command -line variable definitions. Make will automatically insert any503 command line variable definitions. Make will automatically insert any 496 504 variable definitions from the environment value of `MAKEFLAGS' or from 497 505 the command line, into the `MAKEFLAGS' value exported to children. The … … 502 510 503 511 * If `.DELETE_ON_ERROR' appears as a target, Make will delete the target of 504 a rule if it has changed when its commands exitwith a nonzero status,505 just as when the commands geta 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. 506 514 507 515 * The automatic variable `$+' is new. It lists all the dependencies like … … 513 521 dependencies to limit their effects to those files. If a file appears as 514 522 a dependency of `.IGNORE', then errors will be ignored while running the 515 commandsto update that file. Likewise if a file appears as a dependency516 of `.SILENT', then the commandsto update that file will not be printed517 before they arerun. (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.) 518 526 519 527 … … 566 574 Thus the value (in this release) is something like `3.69' or `3.69-Customs'. 567 575 568 * Commands in an invocation of the `shell' function are no longer run with569 a modified environment like target commands are. As in versions before576 * Commands in an invocation of the `shell' function are no longer run 577 with a modified environment like recipes are. As in versions before 570 578 3.68, they now run with the environment that `make' started with. We 571 579 have reversed the change made in version 3.68 because it turned out to … … 574 582 export variable = $(shell echo value) 575 583 576 When Make attempted to put this variable in the environment for a target577 command, it would try expand the value by running the shell command584 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 578 586 `echo value'. In version 3.68, because it constructed an environment 579 587 for that shell command in the same way, Make would begin to go into an 580 588 infinite loop and then get a fatal error when it detected the loop. 581 589 582 * The commands given for `.DEFAULT' arenow used for phony targets with no583 commands.590 * The recipe given for `.DEFAULT' is now used for phony targets with no 591 recipe. 584 592 585 593 … … 606 614 607 615 * 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' et609 alto set up variables for them. They used to run with the environment616 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 610 618 that `make' started with. 611 619 … … 655 663 656 664 * 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 two658 commands trying to change the file at the same time and interfering with665 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 659 667 one another. 660 668 … … 668 676 669 677 * There are two new directives: `export' and `unexport'. All variables are 670 no longer automatically put into the environments of the commands that678 no longer automatically put into the environments of the recipe lines that 671 679 Make runs. Instead, only variables specified on the command line or in 672 680 the environment are exported by default. To export others, use: … … 683 691 for a full description. 684 692 685 * The commands from the `.DEFAULT' special target areonly applied to686 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. 687 695 This change was made for compatibility with Unix make. 688 696 … … 737 745 We still recommend that you use `.cc' instead. 738 746 739 * If commands are given too many times for a single target,740 the last setgiven 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. 741 749 742 750 * Error messages about makefiles are in standard GNU error format, … … 756 764 * Archives on AIX now supposedly work. 757 765 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, 759 767 the $< automatic variable is given the same value as $@ for that target. 760 768 This is how Unix make behaves, and this behavior is mandated by POSIX.2. … … 785 793 Version 3.55 786 794 787 * There is now a Unix man page for GNU Make. It is certainly not a replacement788 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 put794 into the environment for child processes. (If these variables are reset by the795 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 always795 * 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 799 807 considered out of date and in need of remaking), will not be remade (if they 800 808 were being remade only because they were makefiles). This means that GNU … … 809 817 810 818 * When removing intermediate files, only one `rm' command line is printed, 811 listing all file names.819 listing all file names. 812 820 813 821 * 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 `$?'. 815 823 816 824 * Library dependencies given as `-lNAME' will use "libNAME.a" in the current 817 directory if it exists.825 directory if it exists. 818 826 819 827 * The automatic variable `$($/)' is no longer defined. 820 828 821 * Leading `+' characters on a commandline make that line be executed even822 under -n, -t, or -q (as if the line contained `$(MAKE)').823 824 * For commandlines 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}'.) 827 835 828 836 … … 832 840 833 841 * 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 comment835 characters.)842 (All information that isn't specified by makefiles is prefaced with comment 843 characters.) 836 844 837 845 … … 839 847 840 848 * The % character can be quoted with backslash in implicit pattern rules, 841 static pattern rules, `vpath' directives, and `patsubst', `filter', and842 `filter-out' functions. A warning is issued if a `vpath' directive's843 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 %. 844 852 845 853 * The `wildcard' variable expansion function now expands ~ and ~USER. 846 854 847 * Messages indicating failed commands now contain the target name:855 * Messages indicating failed recipe lines now contain the target name: 848 856 make: *** [target] Error 1 849 857 850 858 * 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. 852 860 853 861 … … 860 868 861 869 * 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 compilation864 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. 865 873 866 874 … … 868 876 869 877 * The automatic variable `$*' is now defined for explicit rules, 870 as it is in Unix make.878 as it is in Unix make. 871 879 872 880 … … 874 882 875 883 * 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. 881 889 882 890 … … 884 892 885 893 * A dependency is NOT considered newer than its dependent if 886 they have the same modification time. The behavior implemented887 in 3.43 conflicts with RCS.894 they have the same modification time. The behavior implemented 895 in 3.43 conflicts with RCS. 888 896 889 897 … … 893 901 894 902 * A dependency is considered newer than its dependent if 895 they have the same modification time.903 they have the same modification time. 896 904 897 905 … … 899 907 900 908 * 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 in902 explicit rules and expect them to be set. Unfortunately, there is no way to903 make setting these affect the Fortran implicit rules unless FC and FFLAGS904 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). 905 913 906 914 907 915 Version 3.41 908 916 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. 911 919 912 920 … … 919 927 920 928 * 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.) 922 930 923 931 … … 929 937 930 938 * Minimal support for Microport System V (a 16-bit machine and a 931 brain-damaged compiler). This has even lower priority than other USG932 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. 933 941 934 942 * Revamped default implicit rules (not much visible change). … … 942 950 943 951 * 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 make949 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). 951 959 952 960 … … 959 967 960 968 * 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). 962 970 963 971 * 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. 965 973 966 974 … … 968 976 969 977 * 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.) 971 979 972 980 … … 974 982 975 983 * Archive files will have their modification times recorded before doing 976 anything that might change their modification times by updating an archive977 member.984 anything that might change their modification times by updating an archive 985 member. 978 986 979 987 … … 986 994 987 995 * 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. 989 997 990 998 … … 994 1002 995 1003 * 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). 997 1005 998 1006 … … 1000 1008 1001 1009 * 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. 1004 1012 1005 1013 * Error messages from sub-makes will indicate the level of recursion. 1006 1014 1007 1015 * Hopefully some speed-up for large directories due to a change in the 1008 directory hashing scheme.1016 directory hashing scheme. 1009 1017 1010 1018 * One child will always get a standard input that is usable. … … 1016 1024 1017 1025 * 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)))'. 1019 1027 1020 1028 … … 1033 1041 * Makefiles will be updated and re-read if necessary. 1034 1042 1035 * Can now run several commands at once (parallelism), -j option.1043 * Can now run several recipes at once (parallelism), -j option. 1036 1044 1037 1045 * Error messages will contain the level of Make recursion, if any. 1038 1046 1039 1047 * 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 commandsrun.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.) 1044 1052 1045 1053 … … 1051 1059 ------------------------------------------------------------------------------- 1052 1060 Copyright (C) 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1053 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006 Free Software1061 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007 Free Software 1054 1062 Foundation, Inc. 1055 1063 This file is part of GNU Make. … … 1057 1065 GNU Make is free software; you can redistribute it and/or modify it under the 1058 1066 terms of the GNU General Public License as published by the Free Software 1059 Foundation; either version 2, or (at your option) any later version. 1067 Foundation; either version 3 of the License, or (at your option) any later 1068 version. 1060 1069 1061 1070 GNU Make is distributed in the hope that it will be useful, but WITHOUT ANY … … 1064 1073 1065 1074 You 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. 1075 this program. If not, see <http://www.gnu.org/licenses/>.
Note:
See TracChangeset
for help on using the changeset viewer.