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