unofficial mirror of emacs-devel@gnu.org 
 help / color / mirror / code / Atom feed
From: "Óscar Fuentes" <ofv@wanadoo.es>
To: emacs-devel@gnu.org
Subject: Re: Anyone building Emacs trunk with MinGW w64 (32 bits)
Date: Mon, 25 Mar 2013 22:30:33 +0100	[thread overview]
Message-ID: <8738vjcgli.fsf@wanadoo.es> (raw)
In-Reply-To: 83boa71a0u.fsf@gnu.org

Eli Zaretskii <eliz@gnu.org> writes:

>> I have no time for investigating why the linker searches for lstat and
>> fstatat as if they were dllimports and ignores those defined in w32.c.
>
> Try removing _CRTIMP from the prototypes in nt/inc/sys/stat.h.

Yep, it works.

>> -#define _WIN32_IE 0x400
>> +/* c:\apps\msys\1.0\mingw\bin\../lib/gcc/i686-w64-mingw32/4.7.2/../../../../i686-w6 */
>> +/* 4-mingw32/include/shlguid.h:16:2: error: #error _WIN32_IE setting conflicts */
>> +/* #define _WIN32_IE 0x400 */
>
> Please show the relevant parts of shlguid.h.

#ifndef _WIN32_IE
#define _WIN32_IE 0x0501
#else
/* FIXME: This really must be 0x0501 !!! */
#if (_WIN32_IE < 0x0500)
#error _WIN32_IE setting conflicts
#endif
#endif


>> --- a/nt/inc/ms-w32.h
>> +++ b/nt/inc/ms-w32.h
>> @@ -154,7 +154,7 @@ extern char *getenv ();
>>  
>>  #ifdef emacs
>>  
>> -#ifdef _MSC_VER
>> +#if 1
>>  #include <sys/timeb.h>
>>  #include <sys/stat.h>
>>  #include <signal.h>
>
> What was the problem here?

gcc -o oo-spd/i386/temacs.bin  -gdwarf-2 -g3   -Lc:/apps/GnuWin32/lib -Wl,-stack
,0x00800000 -Wl,-heap,0x00100000 -Wl,-image-base,0x01000000 -Wl,-subsystem,conso
le -Wl,-entry,__start -Wl,-Map,oo-spd/i386/temacs.map oo-spd/i386/firstfile.o oo
-spd/i386/emacs.res oo-spd/i386/temacs0.a oo-spd/i386/temacs1.a oo-spd/i386/tema
cs2.a oo-spd/i386/lastfile.a ../lib/oo-spd/i386/libgnu.a -lwinmm -ladvapi32 -lgd
i32 -lcomdlg32 -luser32 -lmpr -lshell32 -lwinspool -lole32 -lcomctl32 -lusp10
c:/apps/msys/1.0/mingw/bin/../lib/gcc/i686-w64-mingw32/4.7.2/../../../../i686-w6
4-mingw32/lib/../lib/libmingwex.a(lib32_libmingwex_a-_fstat.o): In function `fst
at':
/home/ruben/mingw-w64/src/mingw-w64/mingw-w64-crt/stdio/_fstat.c:11: multiple de
finition of `fstat'
oo-spd/i386/temacs1.a(w32.o):D:\dev\emacs\emacs\src/w32.c:4320: first defined he
re
oo-spd/i386/temacs1.a(fileio.o): In function `Fset_file_modes':
D:\dev\emacs\emacs\src/fileio.c:3237: undefined reference to `_imp__sys_chmod'

>> --- a/nt/inc/sys/time.h
>> +++ b/nt/inc/sys/time.h
>> @@ -6,6 +6,10 @@
>>   * have the below stuff.
>>   */
>>  
>> +#include <sys/types.h>
>> +#include <time.h>
>> +
>> +#ifndef _TIMESPEC_DEFINED
>>  struct timeval
>>  {
>>    long		tv_sec;		/* seconds */
>> @@ -17,6 +21,7 @@ struct timezone
>>    int		tz_minuteswest;	/* minutes west of Greenwich */
>>    int		tz_dsttime;	/* type of dst correction */
>>  };
>> +#endif
>
> And here?

Avoid redefinition of timeval. The inclusion of sys/types.h is to ensure
that _TIMESPEC_DEFINED is defined. <time.h> is for bringing in MinGW64's
timeval. There are files that includes just nt/inc/sys/time.h for
timeval (hence #include <time.h> is required), others that include
<time.h> too for other purposes (hence removing the #if
_TIMESPEC_DEFINED is required for avoiding redefinition.)

>>  /* MinGW64 defines 'struct itimerval' and _TIMESPEC_DEFINED in sys/types.h.  */
>> -#ifndef _TIMESPEC_DEFINED
>> +// #ifndef _TIMESPEC_DEFINED
>>  struct itimerval
>>  {
>>    struct  timeval it_interval;	/* timer interval */
>>    struct  timeval it_value;	/* current value */
>>  };
>> -#endif
>> +// #endif
>
> What's wrong with the #ifndef here?

MinGW64 does not define itimerval.

>> +/* w32.c:2392:1: error: conflicting types for 'gettimeofday' */
>> +/* In file included from w32.c:32:0: */
>> +/* ../nt/inc/sys/time.h:25:6: note: previous declaration of 'gettimeofday' was here */
>>  
>>  /* Emulate gettimeofday (Ulrich Leodolter, 1/11/95).  */
>> -void
>> -gettimeofday (struct timeval *tv, struct timezone *tz)
>
> That's not the right solution.  There's no conflict between w32.c and
> nt/inc/sys/time.h in how they declare/define gettimeofday.  The reason
> must be something else, like the order of definition of the relevant
> structures.  Presumably, by the time the prototype in time.h is seen,
> one or both of the types of its arguments are not yet defined.  Please
> look deeper.

Okay.

>> --- a/src/w32term.c
>> +++ b/src/w32term.c
>> @@ -109,7 +109,7 @@ struct w32_display_info *x_display_list;
>>  Lisp_Object w32_display_name_list;
>>  
>>  
>> -#if _WIN32_WINNT < 0x0500
>> +#if 0 // _WIN32_WINNT < 0x0500
>>  /* Pre Windows 2000, this was not available, but define it here so
>>     that Emacs compiled on such a platform will run on newer versions.  */
>
> What's the problem here?

The enclosed definitions already are on MinGW64's headers, apparently
without the _WIN32_WINNT condition:

gcc -I. -c -gdwarf-2 -g3  -mtune=pentium4 -O2    -isystemc:/apps/GnuWin32/includ
e -Demacs=1 -I../lib -I../nt/inc -DUSE_CRT_DLL=1 -o oo-spd/i386/w32term.o w32ter
m.c
w32term.c:116:16: error: redefinition of 'struct tagWCRANGE'
In file included from c:\apps\msys\1.0\mingw\bin\../lib/gcc/i686-w64-mingw32/4.7
.2/../../../../i686-w64-mingw32/include/windows.h:61:0,
                 from w32gui.h:21,
                 from w32term.h:21,
                 from w32term.c:25:
c:\apps\msys\1.0\mingw\bin\../lib/gcc/i686-w64-mingw32/4.7.2/../../../../i686-w6
4-mingw32/include/wingdi.h:2536:18: note: originally defined here
w32term.c:120:3: error: conflicting types for 'WCRANGE'
In file included from c:\apps\msys\1.0\mingw\bin\../lib/gcc/i686-w64-mingw32/4.7
.2/../../../../i686-w64-mingw32/include/windows.h:61:0,
                 from w32gui.h:21,
                 from w32term.h:21,
                 from w32term.c:25:
c:\apps\msys\1.0\mingw\bin\../lib/gcc/i686-w64-mingw32/4.7.2/../../../../i686-w6
4-mingw32/include/wingdi.h:2539:5: note: previous declaration of 'WCRANGE' was h
ere
w32term.c:122:16: error: redefinition of 'struct tagGLYPHSET'
In file included from c:\apps\msys\1.0\mingw\bin\../lib/gcc/i686-w64-mingw32/4.7
.2/../../../../i686-w64-mingw32/include/windows.h:61:0,
                 from w32gui.h:21,
                 from w32term.h:21,
                 from w32term.c:25:
c:\apps\msys\1.0\mingw\bin\../lib/gcc/i686-w64-mingw32/4.7.2/../../../../i686-w6
4-mingw32/include/wingdi.h:2541:18: note: originally defined here
w32term.c:129:3: error: conflicting types for 'GLYPHSET'
In file included from c:\apps\msys\1.0\mingw\bin\../lib/gcc/i686-w64-mingw32/4.7
.2/../../../../i686-w64-mingw32/include/windows.h:61:0,
                 from w32gui.h:21,
                 from w32term.h:21,
                 from w32term.c:25:
c:\apps\msys\1.0\mingw\bin\../lib/gcc/i686-w64-mingw32/4.7.2/../../../../i686-w6
4-mingw32/include/wingdi.h:2547:5: note: previous declaration of 'GLYPHSET' was
here
mingw32-make[1]: *** [oo-spd/i386/w32term.o] Error 1




  reply	other threads:[~2013-03-25 21:30 UTC|newest]

Thread overview: 91+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-03-23 14:32 Anyone building Emacs trunk with MinGW w64 (32 bits) Óscar Fuentes
2013-03-23 15:25 ` Eli Zaretskii
2013-03-23 15:49   ` Óscar Fuentes
2013-03-23 17:49     ` Eli Zaretskii
2013-03-23 19:47       ` Andy Moreton
2013-03-23 20:06         ` Eli Zaretskii
2013-03-23 20:18           ` Cross-compiling with MinGW on GNU/Linux (was: Anyone building Emacs trunk with MinGW w64 (32 bits)) Óscar Fuentes
2013-03-23 20:27             ` Eli Zaretskii
2013-03-24  9:08   ` 64-bit port " cg
2013-03-24 14:00     ` Fabrice Popineau
2013-03-24 15:11       ` 64-bit port cg
2013-03-26 21:05         ` Fabrice Popineau
2013-03-24 15:40       ` 64-bit port (was: Anyone building Emacs trunk with MinGW w64 (32 bits)) Eli Zaretskii
2013-03-25 13:57 ` Anyone building Emacs trunk with MinGW w64 (32 bits) Eli Zaretskii
2013-03-25 17:09   ` Óscar Fuentes
2013-03-25 20:30     ` Eli Zaretskii
2013-03-25 20:49       ` Óscar Fuentes
2013-03-26  2:24       ` Stefan Monnier
2013-03-26  6:34         ` Eli Zaretskii
2013-03-26 11:10           ` Óscar Fuentes
2013-03-26 12:07             ` Eli Zaretskii
2013-03-26 12:34               ` Óscar Fuentes
2013-03-26 13:24                 ` Eli Zaretskii
2013-03-26 16:17                   ` Óscar Fuentes
2013-03-26 16:32                     ` Eli Zaretskii
2013-03-25 17:41   ` Óscar Fuentes
2013-03-25 18:44     ` rzl24ozi
2013-03-25 19:11       ` Óscar Fuentes
2013-03-25 19:46         ` Óscar Fuentes
2013-03-25 20:48           ` Eli Zaretskii
2013-03-25 21:30             ` Óscar Fuentes [this message]
2013-03-25 21:37               ` Óscar Fuentes
2013-03-25 22:02                 ` Eli Zaretskii
2013-03-25 22:07               ` Eli Zaretskii
2013-03-26  8:25                 ` Eli Zaretskii
2013-03-26 11:48                   ` Óscar Fuentes
2013-03-26 12:42                     ` Eli Zaretskii
2013-03-26 13:54                     ` Eli Zaretskii
2013-03-26 14:06                       ` Eli Zaretskii
2013-03-26 20:49                       ` Óscar Fuentes
2013-03-26 21:24                         ` Eli Zaretskii
2013-03-26 21:58                           ` Óscar Fuentes
2013-03-26 22:30                             ` Óscar Fuentes
2013-03-27  7:24                               ` Eli Zaretskii
2013-03-25 20:38         ` Eli Zaretskii
2013-03-25 21:24         ` Eli Zaretskii
2013-03-25 21:33           ` Eli Zaretskii
2013-03-25 21:35           ` Óscar Fuentes
2013-03-25 23:41         ` rzl24ozi
2013-03-26  1:40           ` Óscar Fuentes
2013-03-26  6:42             ` Eli Zaretskii
2013-03-26  9:41               ` rzl24ozi
2013-03-26 13:52                 ` rzl24ozi
2013-03-26 14:17                   ` Eli Zaretskii
2013-03-26 15:48                     ` rzl24ozi
2013-03-26 16:07                       ` Eli Zaretskii
2013-03-26 17:38                       ` Eli Zaretskii
2013-03-26 18:13                         ` rzl24ozi
2013-03-26 18:57                           ` Eli Zaretskii
2013-03-26 20:17                             ` Óscar Fuentes
2013-03-26 20:34                               ` Eli Zaretskii
2013-03-27  8:17                             ` rzl24ozi
2013-03-27  8:41                               ` Eli Zaretskii
2013-03-27  9:34                                 ` rzl24ozi
2013-03-27 10:10                                   ` Eli Zaretskii
2013-03-27 11:35                                     ` rzl24ozi
2013-03-27 12:03                                       ` Eli Zaretskii
2013-03-27 12:57                                         ` rzl24ozi
2013-03-27 13:27                                           ` Eli Zaretskii
2013-03-27 22:03                                             ` rzl24ozi
2013-03-28  6:40                                               ` Eli Zaretskii
2013-03-27 13:17                                         ` using GnuTLS 3.x and certificate checks (was: Anyone building Emacs trunk with MinGW w64 (32 bits)) Ted Zlatanov
2013-04-10 20:35                                           ` using GnuTLS 3.x and certificate checks Christopher Schmidt
2013-05-19  2:57                                             ` Ted Zlatanov
2013-05-19 19:34                                               ` Christopher Schmidt
2013-05-19 22:59                                                 ` Ted Zlatanov
2013-06-05 15:07                                                   ` Ted Zlatanov
2013-06-05 15:59                                                     ` Christopher Schmidt
2013-06-05 15:08                                               ` Ted Zlatanov
2013-06-05 17:44                                                 ` Stefan Monnier
2013-06-05 18:03                                                   ` Ted Zlatanov
2013-06-05 18:42                                                     ` Stefan Monnier
2013-06-05 15:13                                           ` Ted Zlatanov
2013-06-05 20:55                                             ` Ted Zlatanov
2013-06-06 13:06                                               ` Ted Zlatanov
2013-10-07 22:24                                                 ` Ted Zlatanov
2013-10-10 23:20                                                   ` Ted Zlatanov
2013-10-10 23:37                                                   ` Glenn Morris
2013-10-11 13:48                                                     ` Ted Zlatanov
2013-03-26 14:33                   ` Anyone building Emacs trunk with MinGW w64 (32 bits) Eli Zaretskii
2013-03-26 16:56                     ` rzl24ozi

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://www.gnu.org/software/emacs/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=8738vjcgli.fsf@wanadoo.es \
    --to=ofv@wanadoo.es \
    --cc=emacs-devel@gnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).