Subject: Re: bug#62792: Emacs 29.0.90 build fails

From: Tak Ota <[email-masked]>
Date: Wed, 12 Apr 2023 09:18:39 -0700

This is what I saw.

  CC       w32fns.o
  CC       w32menu.o
  CC       w32reg.o
  CC       w32font.o
  CC       w32term.o
  CC       w32xfns.o
  CC       w32select.o
  CC       w32uniscribe.o
  CC       w32cygwinx.o
  CC       w32.o
w32.c:551:3: error: conflicting types for 'CONSOLE_FONT_INFO'
 } CONSOLE_FONT_INFO;
   ^
In file included from c:\mingw\include\windows.h:43:0,
                 from c:\mingw\include\winsock2.h:22,
                 from c:/d/pub/emacs/emacs-29.0.90/nt/inc/sys/socket.h:57,
                 from thread.h:25,
                 from lisp.h:2268,
                 from w32.c:98:
c:\mingw\include\wincon.h:86:3: note: previous declaration of
'CONSOLE_FONT_INFO' was here
 } CONSOLE_FONT_INFO, *PCONSOLE_FONT_INFO;
   ^
make[2]: *** [w32.o] Error 1
make[2]: Leaving directory `/c/d/pub/emacs/emacs-29.0.90/src'
make[1]: *** [src] Error 2
make[1]: Leaving directory `/c/d/pub/emacs/emacs-29.0.90'
make[1]: Entering directory `/c/d/pub/emacs/emacs-29.0.90'
***
*** "make all" failed with exit status 2.
***
*** You could try to:
*** - run "make bootstrap", which might fix the problem
*** - run "make V=1", which displays the full commands invoked by make,
***   to further investigate the problem
***
make[1]: *** [advice-on-failure] Error 2
make[1]: Leaving directory `/c/d/pub/emacs/emacs-29.0.90'
make: *** [all] Error 2

On Wed, Apr 12, 2023 at 8:32 AM Eli Zaretskii <[email-masked]> wrote:

> > From: Tak Ota <[email-masked]>
> > Date: Tue, 11 Apr 2023 11:16:28 -0700
> >
> > When attempted to build using MinGW the next section of code in
> src/w32.c conflicts with the definition
> > in MinGW/include/wincon.h
>
> Thank you for your report.
>
> Please show the exact compilation error message you get due to this
> conflict.  I don't see any errors here, and Emacs 29 compiles with
> MinGW flawlessly here.
>
> > This typedef was not in src/w32.c of Emacs 28.2.
> >
> > #if _WIN32_WINNT < 0x0501
> > typedef struct
> > {
> >   DWORD nFont;
> >   COORD dwFontSize;
> > } CONSOLE_FONT_INFO;
> > #endif
>
> Also, which flavor of MinGW and which version are you using?  The
> above should be only visible with _WIN32_WINNT that is smaller than
> 0x0501, which should not happen with latest MinGW64.  And looking at
> the latest MinGW64 headers, I see the definition of CONSOLE_FONT_INFO
> structure there that is identical to the above, so how can it
> conflict?
>