bug-make
[Top][All Lists]
Advanced

[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.




reply via email to

[Prev in Thread] Current Thread [Next in Thread]