Hello,

I managed to compile a working version of make 3.81rc1 for MSYS but I
had do some modifications.

first config/config.guess and config/config.sub must be simply patched
to support MSYS build system (see config_msys.patch in attachment).

sources must be patched (bugs correction) like specified hereunder (also
in sources_msys.patch in attachment) :

file job.c, at line 2525 :
  && strchr (sh_chars_sh, p[1]) == 0)
should be :
  && strchr (sh_chars, p[1]) == 0)

file implicit.c, at line 355 :
  if (!check_lastslash)
should be :
  if (check_lastslash)

file make.h, at line 350 : 
  #if defined(HAVE_DOS_PATHS)
should be :
  #if defined(HAVE_DOS_PATHS) && !defined(__MSYS__)

And after executing 'configure', I had to modify config.h manually
before executing make (easier for me than correcting the configure
script) :

to support dos-style paths, changed :
  /* #undef HAVE_DOS_PATHS */
into
  #define HAVE_DOS_PATHS 1

and to use the internal realpath function as a workaround to the buggy
msys realpath() function (otherwise the test 'functions/realpath' fails
at line 19 about realpath of ///), changed :
  #define HAVE_REALPATH 1
into
  /* #undef HAVE_REALPATH */

Could you please integrate these changes into the next release candidate
of make 3.81 ?

Thanks,

David Ergo
--- config/config.guess.orig    Mon Feb 20 04:29:30 2006
+++ config/config.guess Tue Feb 28 11:02:15 2006
@@ -780,6 +780,9 @@
     i*:MINGW*:*)
        echo ${UNAME_MACHINE}-pc-mingw32
        exit ;;
+    i*:MSYS*:*)
+       echo ${UNAME_MACHINE}-pc-msys
+       exit 0 ;;
     i*:windows32*:*)
        # uname -m includes "-pc" on this system.
        echo ${UNAME_MACHINE}-mingw32
--- config/config.sub.orig      Mon Feb 20 04:29:31 2006
+++ config/config.sub   Tue Feb 28 12:42:24 2006
@@ -683,6 +683,10 @@
                basic_machine=i386-pc
                os=-mingw32
                ;;
+       msys*)
+               basic_machine=i386-pc
+               os=-msys
+               ;;
        miniframe)
                basic_machine=m68000-convergent
                ;;
@@ -1207,7 +1211,7 @@
              | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \
              | -chorusos* | -chorusrdb* \
              | -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \
-             | -mingw32* | -linux-gnu* | -linux-newlib* | -linux-uclibc* \
+             | -mingw32* | -msys* | -linux-gnu* | -linux-newlib* | 
-linux-uclibc* \
              | -uxpv* | -beos* | -mpeix* | -udk* \
              | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \
              | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \
--- implicit.c.orig     Tue Feb 28 12:44:49 2006
+++ implicit.c  Tue Feb 28 12:12:51 2006
@@ -352,7 +352,7 @@
               check_lastslash = strchr (target, '/') == 0;
 #ifdef HAVE_DOS_PATHS
               /* Didn't find it yet: check for DOS-type directories.  */
-              if (!check_lastslash)
+              if (check_lastslash)
                 {
                   char *b = strrchr (target, '\\');
                   check_lastslash = !(b ? b > lastslash
--- job.c.orig  Tue Feb 28 12:44:59 2006
+++ job.c       Tue Feb 28 12:46:33 2006
@@ -2521,7 +2521,7 @@
 #endif
                   if (p[1] != '\\' && p[1] != '\''
                       && !isspace ((unsigned char)p[1])
-                      && strchr (sh_chars_sh, p[1]) == 0)
+                      && strchr (sh_chars, p[1]) == 0)
                     /* back up one notch, to copy the backslash */
                     --p;
 #endif  /* HAVE_DOS_PATHS */
--- make.h.orig Tue Feb 28 12:53:40 2006
+++ make.h      Tue Feb 28 12:53:18 2006
@@ -347,7 +347,7 @@
 #define S_(msg1,msg2,num)   ngettext (msg1,msg2,num)
 
 /* Handle other OSs.  */
-#if defined(HAVE_DOS_PATHS)
+#if defined(HAVE_DOS_PATHS) && !defined(__MSYS__)
 # define PATH_SEPARATOR_CHAR ';'
 #elif defined(VMS)
 # define PATH_SEPARATOR_CHAR ','
_______________________________________________
Bug-make mailing list
Bug-make@gnu.org
http://lists.gnu.org/mailman/listinfo/bug-make

Reply via email to