> Date: Tue, 13 Dec 2005 10:27:13 -0500 > From: [EMAIL PROTECTED] > Cc: > > Please find GNU make 3.18beta4, available now for download from > ftp://alpha.gnu.org/gnu/make: > > 0db7ce037088bb32548de7153225c95c > ftp://alpha.gnu.org/gnu/make/make-3.81beta4.tar.gz > 8bd2a61eef5e98feaf36fa5f95b7aa8a > ftp://alpha.gnu.org/gnu/make/make-3.81beta4.tar.bz2
I find the description in the manual of how backslash-newline sequences in commands are handled not detailed enough. On top of that, NEWS points those who want to know details about this to a non-existing section. I suggest the following changes to make.texi and NEWS: 2005-12-17 Eli Zaretskii <[EMAIL PROTECTED]> * doc/make.texi (Execution): Add a footnote about changes in handling of backslash-newline sequences. Mention the differences on MS-DOS and MS-Windows. * NEWS: More details about building the MinGW port and a pointer to README.W32. Fix the section name that describes the new backward-incompatible processing of backslash-newline sequences. The special processing of SHELL set to "cmd" is only relevant to MS-Windows, not MS-DOS. --- doc/make.texi~1 2005-12-17 15:27:50.234375000 +0200 +++ doc/make.texi 2005-12-17 19:55:04.125000000 +0200 @@ -3609,7 +3609,19 @@ A shell command can be split into multiple lines of text by placing a backslash before each newline. Such a sequence of lines is provided to the shell as a single command script. The backslash and newline -are preserved in the shell command. If the first character on the +are preserved in the shell [EMAIL PROTECTED] +Versions of GNU @code{make} before 3.81 removed the backslash and the +following newline from the command scripts passed to the shell. +Beginning with version 3.81, GNU @code{make} behaves according to +Posix requirements and retains the backslash-newline sequences in +commands. In most situations, this will not cause any visible change +in behavior, since Posix shells will remove the backslash-newline +sequences, per shell quoting rules. However, note that +backslash-newline sequences inside command-line arguments quoted with [EMAIL PROTECTED]'...'} are not removed by the shell. Also, the MS-DOS and +MS-Windows ports of @code{make} @strong{do} remove backslash-newline +sequences when the shell to be used is not a Unix-style shell. +}. If the first character on the line after a backslash-newline is a tab, the tab will @emph{not} be included in the shell command. So, this makefile: @@ -3662,6 +3674,11 @@ @end group @end example [EMAIL PROTECTED] +Notice how the backslash and the following newline was removed inside +the string quoted with @code{"..."}, but not from the string quoted +with @code{'...'}. + @vindex SHELL The program used as the shell is taken from the variable @code{SHELL}. By default, the program @file{/bin/sh} is used. --- NEWS.~0 2005-12-13 18:44:17.000000000 +0200 +++ NEWS 2005-12-17 19:36:03.234375000 +0200 @@ -14,7 +14,9 @@ * GNU make is ported to OS/2. -* GNU make is ported to MinGW. +* GNU make is ported to MinGW. The MinGW build is only supported by + the build_w32.bat batch file; see the file README.W32 for more + details. * WARNING: Backward-incompatibility! GNU make now implements a generic "second expansion" feature on the @@ -37,7 +39,8 @@ * WARNING: Backward-incompatibility! In order to comply with POSIX, the way in which GNU make processes backslash-newline sequences in command strings has changed. See the - GNU make manual section "Shell Execution" for details. + section "Command Execution" (node "Execution") in the GNU Make + manual for details. * New command-line option: -L (--check-symlink-times). On systems that support symbolic links, if this option is given then GNU make will @@ -45,7 +48,7 @@ used to resolve target files. The default behavior remains as it always has: use the modification time of the actual target file only. -* The "else" conditional line can now be followed by any other legal +* The "else" conditional line can now be followed by any other valid conditional on the same line: this does not increase the depth of the conditional nesting, so only one "endif" is required to close the conditional. @@ -98,10 +101,10 @@ an enhancement to POSIX, if you export the make variable SHELL then it will be set in the environment, just as before. -* On DOS and MS Windows systems, explicitly setting SHELL to a pathname - ending in "cmd" or "cmd.exe" (case-insensitive) will force GNU make to - use the DOS command interpreter in batch mode even if a UNIX-like - shell could be found on the system. +* On MS Windows systems, explicitly setting SHELL to a pathname ending + in "cmd" or "cmd.exe" (case-insensitive) will force GNU make to use + the DOS command interpreter in batch mode even if a UNIX-like shell + could be found on the system. * Updated to autoconf 2.59, automake 1.9.5, and gettext 0.14.1. Users should not be impacted. _______________________________________________ Bug-make mailing list Bug-make@gnu.org http://lists.gnu.org/mailman/listinfo/bug-make