[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: GNU make 3.81beta4 released
From: |
Eli Zaretskii |
Subject: |
Re: GNU make 3.81beta4 released |
Date: |
Sat, 17 Dec 2005 20:08:14 +0200 |
> Date: Tue, 13 Dec 2005 10:27:13 -0500
> From: address@hidden
> 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 <address@hidden>
* 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 address@hidden
+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
address@hidden'...'} 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
address@hidden
+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.