delorie.com/archives/browse.cgi   search  
Mail Archives: cygwin/2006/08/16/21:43:44

X-Spam-Check-By: sourceware.org
Message-Id: <6.2.3.4.2.20060816212830.096af8d0@pop.nycap.rr.com>
X-Mailer: QUALCOMM Windows Eudora Version 6.2.3.4
Date: Wed, 16 Aug 2006 21:41:23 -0400
To: "John W. Eaton" <jwe AT bevo DOT che DOT wisc DOT edu>
From: "William A. Hoffman" <billlist AT nycap DOT rr DOT com>
Subject: Re: change in behavior of make from 3.80 to 3.81
Cc: cygwin AT cygwin DOT com
In-Reply-To: <17635.34130.414540.228731@segfault.lan>
References: <6 DOT 2 DOT 3 DOT 4 DOT 2 DOT 20060815151104 DOT 0b40e260 AT pop DOT nycap DOT rr DOT com> <01b901c6c116$21259430$a501a8c0 AT CAM DOT ARTIMI DOT COM> <6 DOT 2 DOT 3 DOT 4 DOT 2 DOT 20060816091525 DOT 0ab90af0 AT pop DOT nycap DOT rr DOT com> <20060816144110 DOT GX20467 AT calimero DOT vinschen DOT de> <6 DOT 2 DOT 3 DOT 4 DOT 2 DOT 20060816111421 DOT 0b446b60 AT pop DOT nycap DOT rr DOT com> <20060816155054 DOT GY20467 AT calimero DOT vinschen DOT de> <Pine DOT GSO DOT 4 DOT 63 DOT 0608161418370 DOT 9095 AT access1 DOT cims DOT nyu DOT edu> <6 DOT 2 DOT 3 DOT 4 DOT 2 DOT 20060816144036 DOT 09695af0 AT pop DOT nycap DOT rr DOT com> <20060816194705 DOT GB7674 AT trixie DOT casa DOT cgf DOT cx> <6 DOT 2 DOT 3 DOT 4 DOT 2 DOT 20060816162448 DOT 09699ca0 AT pop DOT nycap DOT rr DOT com> <17635 DOT 34130 DOT 414540 DOT 228731 AT segfault DOT lan>
Mime-Version: 1.0
X-IsSubscribed: yes
Mailing-List: contact cygwin-help AT cygwin DOT com; run by ezmlm
List-Unsubscribe: <mailto:cygwin-unsubscribe-archive-cygwin=delorie DOT com AT cygwin DOT com>
List-Subscribe: <mailto:cygwin-subscribe AT cygwin DOT com>
List-Archive: <http://sourceware.org/ml/cygwin/>
List-Post: <mailto:cygwin AT cygwin DOT com>
List-Help: <mailto:cygwin-help AT cygwin DOT com>, <http://sourceware.org/ml/#faqs>
Sender: cygwin-owner AT cygwin DOT com
Mail-Followup-To: cygwin AT cygwin DOT com
Delivered-To: mailing list cygwin AT cygwin DOT com

At 04:51 PM 8/16/2006, John W. Eaton wrote:

>Have you tried this (uh, what file are you patching anyway)?  Does it
>work?  Does it cause problems for valid Makefiles that assume POSIX
>filenames?
>
>Suggesting changes to GNU Make on this list is not going to cause
>things to happen.  If you want to see changes, then I think the place
>to start is to
>
>  * get a copy of the current GNU Make sources
>
>  * apply your above "patch"
>
>  * build and test it
>
>  * if it works, submit the patch to the GNU Make maintainers in the
>    appropriate forum (not here) explaining why the patch is needed
>    and whether there are any potential hazards to watch out for if
>    the change is made



Here is the patch, and it seems to work. I have posted the patch to make-w32
minus the forcing of HAVE_DOS_PATHS for cygwin.  It would be nice
if this could be make-3.81-2 in cygwin, but my hopes are low for that.

But it can't be said I did not look at the code or provide a patch. :)
The original make-3.81 does not compile with HAVE_DOS_PATHS on cygwin,
and a patch on the make-w32 list crashed, I found the cause of the crash
and with my patch all tests for make check pass.  Also, windows paths
work in makefiles again.  

The reason I am posting this patch to this list is so that other cygwin
users can try the patch and make sure that things work in the ways they
expect.  The change in config.h.in is more of a hack, and the correct
place to fix that is in configure.in, and if it gets accepted I can
do the extra work to put the fix in that file instead.

*** make-3.81/config.h.in       Wed Aug 16 16:31:10 2006
--- make381orig/make-3.81/config.h.in   Sat Apr  1 01:40:00 2006
***************
*** 75,84 ****

  /* Use platform specific coding */
  #undef HAVE_DOS_PATHS
- #ifdef __CYGWIN__
- #define HAVE_DOS_PATHS 1
- #endif
-

  /* Define to 1 if you have the `dup2' function. */
  #undef HAVE_DUP2
--- 75,80 ----
Only in make-3.81: config.h.in~
diff -r -p make-3.81/job.c make381orig/make-3.81/job.c
*** make-3.81/job.c     Wed Aug 16 19:42:14 2006
--- make381orig/make-3.81/job.c Sun Mar 19 22:03:04 2006
*************** construct_command_argv_internal (char *l
*** 2297,2316 ****
                   0 };
    char*  sh_chars;
    char** sh_cmds;
- #elif defined(HAVE_DOS_PATHS)
-   /* This is required if the MSYS/Cygwin ports (which do not define
-      WINDOWS32) are compiled with HAVE_DOS_PATHS defined, which uses
-      sh_chars_sh[] directly (see below).  The value is identical to
-      the one above for WINDOWS32 platforms.  */
-   static char sh_chars_sh[] = "#;\"*?[]&|<>(){}$`^";
-   static char *sh_cmds_sh[] = { "cd", "eval", "exec", "exit", "login",
-                            "logout", "set", "umask", "wait", "while", "for",
-                            "case", "if", ":", ".", "break", "continue",
-                            "export", "read", "readonly", "shift", "times",
-                                 "trap", "switch", "test", "echo", 0};
-   char *sh_chars;
-   char **sh_cmds;
-
  #elif defined(__riscos__)
    static char sh_chars[] = "";
    static char *sh_cmds[] = { 0 };
--- 2297,2302 ----
*************** construct_command_argv_internal (char *l
*** 2340,2351 ****
      sh_chars = sh_chars_sh;
    }
  #endif /* WINDOWS32 */
- #if defined(HAVE_DOS_PATHS) && !defined(WINDOWS32)
-   int slow_flag = 0;
-
-   sh_cmds = sh_cmds_sh;
-   sh_chars = sh_chars_sh;
- #endif /* WINDOWS32 */

    if (restp != NULL)
      *restp = NULL;
--- 2326,2331 ---- 


--
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple
Problem reports:       http://cygwin.com/problems.html
Documentation:         http://cygwin.com/docs.html
FAQ:                   http://cygwin.com/faq/

- Raw text -


  webmaster     delorie software   privacy  
  Copyright © 2019   by DJ Delorie     Updated Jul 2019