emacs-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Anyone building Emacs trunk with MinGW w64 (32 bits)


From: Eli Zaretskii
Subject: Re: Anyone building Emacs trunk with MinGW w64 (32 bits)
Date: Tue, 26 Mar 2013 19:38:18 +0200

> If USE_NO_MINGW_SETJMP_TWO_ARGS is defined, it seems that emacs crash
> when byte-compile. I do not know what happened in this case exactly,
> sorry.
> 
> In ms-w32.h, some functions are defined to sys_...,
> such as chmod -> sys_chmod.
> if it is defined before "#include <sys/stat.h>",
> functions in sys/stat.h are changed.
> It cause warning like "warning: 'sys_chmod' redeclared without
> dllimport...", I think. so I include it here.
> 
> __start is entry point that specified by linker option in makefile,
> but 64bit gcc does not add '_' to symbol, so change _start to
> __start.
> 
> >   --- ./nt/inc/sys/time.h.orig      2013-03-26 17:33:23.000000000 +0900
> >   +++ ./nt/inc/sys/time.h   2013-03-26 21:46:23.425698700 +0900
>     :
> > This breaks the MinGW32 build, so please see if the current trunk has
> > a better solution for this problem.
> 
> I understand.
> 
> >     --- ./src/image.c.orig  2013-03-24 18:16:45.000000000 +0900
> >     +++ ./src/image.c       2013-03-26 21:46:23.437698700 +0900
> >     @@ -5545,6 +5545,9 @@
> >        png_byte **rows;
> >      };
> >
> >     +#ifdef _W64
> >     +#define _setjmp setjmp
> >     +#endif
> >
> > Why is this needed?
> 
> In image.c, _setjmp() is used with 1 arg. It seems that some compile error.
> This is also related to the following.
> 
> >   --- ./src/lisp.h.orig     2013-03-25 12:31:37.000000000 +0900
> >   +++ ./src/lisp.h  2013-03-26 21:46:23.442698700 +0900
> >   @@ -2164,7 +2164,11 @@
> >
> >    #ifdef HAVE__SETJMP
> >    typedef jmp_buf sys_jmp_buf;
> >   +#ifdef _W64
> >   +# define sys_setjmp(j) setjmp (j)
> >   +#else
> >    # define sys_setjmp(j) _setjmp (j)
> >   +#endif
> >    # define sys_longjmp(j, v) _longjmp (j, v)
> >
> > And this?
> 
> If USE_NO_MINGW_SETJMP_TWO_ARGS is not defined,
> it seems that _setjmp() need 2 args (see mingw-w64's setjmp.h).
> so I change this.

I think I found a cleaner way of handling the MinGW64 setjmp
interface, committed as trunk revision 112145.

The 64-bit MinGW64 build still needs some changes, in nt/configure.bat
and elsewhere.  But I hope the 32-bit build is OK now.

Can you two please see if the latest trunk builds with MinGW64 for
you?  (Remember to re-run configure.bat, as some changes require
that.)  If there are any problems left, whether errors or warnings,
please post them.

TIA



reply via email to

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