Subject: bug#52675: 28.0.60; /usr/include/X11/X.h:96:13: error: conflicting types for ‘Window’

From: Po Lu <[email-masked]>
Date: Mon, 20 Dec 2021 11:30:39 +0800

"Feng Shu" <[email-masked]> writes:

> In file included from /usr/include/X11/Xlib.h:44,
>                  from xwidget.h:35,
>                  from dispnew.c:43:
> /usr/include/X11/X.h:96:13: error: conflicting types for ‘Window’
>    96 | typedef XID Window;
>       |             ^~~~~~
> In file included from dispextern.h:138,
>                  from termchar.h:23,
>                  from dispnew.c:28:
> pgtkgui.h:49:13: note: previous declaration of ‘Window’ was here
>    49 | typedef int Window;
>       |             ^~~~~~
> In file included from xwidget.h:35,
>                  from dispnew.c:43:
> /usr/include/X11/Xlib.h:433:3: error: conflicting types for ‘XRectangle’
>   433 | } XRectangle;
>       |   ^~~~~~~~~~
> In file included from dispextern.h:138,
>                  from termchar.h:23,
>                  from dispnew.c:28:
> pgtkgui.h:62:3: note: previous declaration of ‘XRectangle’ was here
>    62 | } XRectangle;
>       |   ^~~~~~~~~~
> In file included from xwidget.h:35,
>                  from dispnew.c:43:
> /usr/include/X11/Xlib.h:487:26: error: conflicting types for ‘Display’
>   487 | typedef struct _XDisplay Display;
>       |                          ^~~~~~~
> In file included from dispextern.h:138,
>                  from termchar.h:23,
>                  from dispnew.c:28:
> pgtkgui.h:50:28: note: previous declaration of ‘Display’ was here
>    50 | typedef struct _GdkDisplay Display;
>       |                            ^~~~~~~
> In file included from xwidget.h:35,
>                  from dispnew.c:43:
> /usr/include/X11/Xlib.h:1024:3: error: conflicting types for ‘XCharStruct’
>  1024 | } XCharStruct;
>       |   ^~~~~~~~~~~
> In file included from dispextern.h:138,
>                  from termchar.h:23,
>                  from dispnew.c:28:
> pgtkgui.h:30:3: note: previous declaration of ‘XCharStruct’ was here
>    30 | } XCharStruct;
>       |   ^~~~~~~~~~~
> In file included from xwidget.h:35,
>                  from dispnew.c:43:
> /usr/include/X11/Xlib.h:1067:3: error: conflicting types for ‘XChar2b’
>  1067 | } XChar2b;
>       |   ^~~~~~~
> In file included from dispextern.h:138,
>                  from termchar.h:23,
>                  from dispnew.c:28:
> pgtkgui.h:34:17: note: previous declaration of ‘XChar2b’ was here
>    34 | typedef unichar XChar2b;
>       |                 ^~~~~~~
> In file included from xterm.h:33,
>                  from xwidget.h:36,
>                  from dispnew.c:43:
> /usr/include/X11/Xresource.h:175:35: error: conflicting types for ‘XrmDatabase’
>   175 | typedef struct _XrmHashBucketRec *XrmDatabase;
>       |                                   ^~~~~~~~~~~
> In file included from dispextern.h:138,
>                  from termchar.h:23,
>                  from dispnew.c:28:
> pgtkgui.h:53:15: note: previous declaration of ‘XrmDatabase’ was here
>    53 | typedef void *XrmDatabase;
>       |               ^~~~~~~~~~~
> In file included from xwidget.h:36,
>                  from dispnew.c:43:
> xterm.h:1327: warning: "STORE_NATIVE_RECT" redefined
>  1327 | #define STORE_NATIVE_RECT(nr,rx,ry,rwidth,rheight) \
>       | 
> In file included from dispextern.h:138,
>                  from termchar.h:23,
>                  from dispnew.c:28:
> pgtkgui.h:113: note: this is the location of the previous definition
>   113 | #define STORE_NATIVE_RECT(nr, px, py, pwidth, pheight) \
>       | 
> In file included from gtkutil.h:29,
>                  from dispnew.c:47:
> pgtkterm.h:60:8: error: redefinition of ‘struct scroll_bar’
>    60 | struct scroll_bar
>       |        ^~~~~~~~~~
> In file included from xwidget.h:36,
>                  from dispnew.c:43:
> xterm.h:918:8: note: originally defined here
>   918 | struct scroll_bar
>       |        ^~~~~~~~~~
> In file included from gtkutil.h:29,
>                  from dispnew.c:47:
> pgtkterm.h:246:34: error: conflicting types for ‘x_display_list’
>   246 | extern struct pgtk_display_info *x_display_list;
>       |                                  ^~~~~~~~~~~~~~
> In file included from xwidget.h:36,
>                  from dispnew.c:43:
> xterm.h:540:31: note: previous declaration of ‘x_display_list’ was here
>   540 | extern struct x_display_info *x_display_list;
>       |                               ^~~~~~~~~~~~~~
> In file included from gtkutil.h:29,
>                  from dispnew.c:47:
> pgtkterm.h:386:10: error: redefinition of ‘struct relief’
>   386 |   struct relief
>       |          ^~~~~~
> In file included from xwidget.h:36,
>                  from dispnew.c:43:
> xterm.h:755:10: note: originally defined here
>   755 |   struct relief
>       |          ^~~~~~
> In file included from gtkutil.h:29,
>                  from dispnew.c:47:
> pgtkterm.h:411:8: error: redefinition of ‘struct x_output’
>   411 | struct x_output
>       |        ^~~~~~~~
> In file included from xwidget.h:36,
>                  from dispnew.c:43:
> xterm.h:555:8: note: originally defined here
>   555 | struct x_output
>       |        ^~~~~~~~
> In file included from gtkutil.h:29,
>                  from dispnew.c:47:
> pgtkterm.h:423:3: error: redeclaration of enumerator ‘FOCUS_NONE’
>   423 |   FOCUS_NONE = 0,
>       |   ^~~~~~~~~~
> In file included from xwidget.h:36,
>                  from dispnew.c:43:
> xterm.h:798:3: note: previous definition of ‘FOCUS_NONE’ was here
>   798 |   FOCUS_NONE     = 0,
>       |   ^~~~~~~~~~
> In file included from gtkutil.h:29,
>                  from dispnew.c:47:
> pgtkterm.h:424:3: error: redeclaration of enumerator ‘FOCUS_IMPLICIT’
>   424 |   FOCUS_IMPLICIT = 1,
>       |   ^~~~~~~~~~~~~~
> In file included from xwidget.h:36,
>                  from dispnew.c:43:
> xterm.h:799:3: note: previous definition of ‘FOCUS_IMPLICIT’ was here
>   799 |   FOCUS_IMPLICIT = 1,
>       |   ^~~~~~~~~~~~~~
> In file included from gtkutil.h:29,
>                  from dispnew.c:47:
> pgtkterm.h:425:3: error: redeclaration of enumerator ‘FOCUS_EXPLICIT’
>   425 |   FOCUS_EXPLICIT = 2
>       |   ^~~~~~~~~~~~~~
> In file included from xwidget.h:36,
>                  from dispnew.c:43:
> xterm.h:800:3: note: previous definition of ‘FOCUS_EXPLICIT’ was here
>   800 |   FOCUS_EXPLICIT = 2
>       |   ^~~~~~~~~~~~~~
> In file included from gtkutil.h:29,
>                  from dispnew.c:47:
> pgtkterm.h:429: warning: "FRAME_X_OUTPUT" redefined
>   429 | #define FRAME_X_OUTPUT(f)         ((f)->output_data.pgtk)
>       | 
> In file included from xwidget.h:36,
>                  from dispnew.c:43:
> xterm.h:805: note: this is the location of the previous definition
>   805 | #define FRAME_X_OUTPUT(f) ((f)->output_data.x)
>       | 
> In file included from gtkutil.h:29,
>                  from dispnew.c:47:
> pgtkterm.h:432: warning: "FRAME_DISPLAY_INFO" redefined
>   432 | #define FRAME_DISPLAY_INFO(f)     (FRAME_X_OUTPUT (f)->display_info)
>       | 
> In file included from xwidget.h:36,
>                  from dispnew.c:43:
> xterm.h:885: note: this is the location of the previous definition
>   885 | #define FRAME_DISPLAY_INFO(f) ((f)->output_data.x->display_info)
>       | 
> In file included from gtkutil.h:29,
>                  from dispnew.c:47:
> pgtkterm.h:437: warning: "FRAME_FONT" redefined
>   437 | #define FRAME_FONT(f)             (FRAME_X_OUTPUT (f)->font)
>       | 
> In file included from xwidget.h:36,
>                  from dispnew.c:43:
> xterm.h:871: note: this is the location of the previous definition
>   871 | #define FRAME_FONT(f) ((f)->output_data.x->font)
>       | 
> In file included from gtkutil.h:29,
>                  from dispnew.c:47:
> pgtkterm.h:438: warning: "FRAME_GTK_OUTER_WIDGET" redefined
>   438 | #define FRAME_GTK_OUTER_WIDGET(f) (FRAME_X_OUTPUT (f)->widget)
>       | 
> In file included from xwidget.h:36,
>                  from dispnew.c:43:
> xterm.h:853: note: this is the location of the previous definition
>   853 | #define FRAME_GTK_OUTER_WIDGET(f) ((f)->output_data.x->widget)
>       | 
> In file included from gtkutil.h:29,
>                  from dispnew.c:47:
> pgtkterm.h:439: warning: "FRAME_GTK_WIDGET" redefined
>   439 | #define FRAME_GTK_WIDGET(f)       (FRAME_X_OUTPUT (f)->edit_widget)
>       | 
> In file included from xwidget.h:36,
>                  from dispnew.c:43:
> xterm.h:854: note: this is the location of the previous definition
>   854 | #define FRAME_GTK_WIDGET(f) ((f)->output_data.x->edit_widget)
>       | 
> In file included from gtkutil.h:29,
>                  from dispnew.c:47:
> pgtkterm.h:446: warning: "FRAME_X_WINDOW" redefined
>   446 | #define FRAME_X_WINDOW(f)          FRAME_GTK_OUTER_WIDGET (f)
>       | 
> In file included from xwidget.h:36,
>                  from dispnew.c:43:
> xterm.h:809: note: this is the location of the previous definition
>   809 | #define FRAME_X_WINDOW(f) ((f)->output_data.x->window_desc)
>       | 
> In file included from gtkutil.h:29,
>                  from dispnew.c:47:
> pgtkterm.h:447: warning: "FRAME_NATIVE_WINDOW" redefined
>   447 | #define FRAME_NATIVE_WINDOW(f)     GTK_WINDOW (FRAME_X_WINDOW (f))
>       | 
> In file included from xwidget.h:36,
>                  from dispnew.c:43:
> xterm.h:810: note: this is the location of the previous definition
>   810 | #define FRAME_NATIVE_WINDOW(f) FRAME_X_WINDOW (f)
>       | 
> In file included from gtkutil.h:29,
>                  from dispnew.c:47:
> pgtkterm.h:449: warning: "FRAME_X_DISPLAY" redefined
>   449 | #define FRAME_X_DISPLAY(f)        (FRAME_DISPLAY_INFO (f)->gdpy)
>       | 
> In file included from xwidget.h:36,
>                  from dispnew.c:43:
> xterm.h:888: note: this is the location of the previous definition
>   888 | #define FRAME_X_DISPLAY(f) (FRAME_DISPLAY_INFO (f)->display)
>       | 
> In file included from gtkutil.h:29,
>                  from dispnew.c:47:
> pgtkterm.h:451: warning: "DEFAULT_GDK_DISPLAY" redefined
>   451 | #define DEFAULT_GDK_DISPLAY() gdk_display_get_default ()
>       | 
> In file included from xwidget.h:36,
>                  from dispnew.c:43:
> xterm.h:839: note: this is the location of the previous definition
>   839 | #define DEFAULT_GDK_DISPLAY() \
>       | 
> In file included from gtkutil.h:29,
>                  from dispnew.c:47:
> pgtkterm.h:493: warning: "FRAME_MENUBAR_HEIGHT" redefined
>   493 | #define FRAME_MENUBAR_HEIGHT(f) (FRAME_X_OUTPUT (f)->menubar_height)
>       | 
> In file included from xwidget.h:36,
>                  from dispnew.c:43:
> xterm.h:866: note: this is the location of the previous definition
>   866 | #define FRAME_MENUBAR_HEIGHT(f) ((f)->output_data.x->menubar_height)
>       | 
> In file included from gtkutil.h:29,
>                  from dispnew.c:47:
> pgtkterm.h:509: warning: "FRAME_TOOLBAR_TOP_HEIGHT" redefined
>   509 | #define FRAME_TOOLBAR_TOP_HEIGHT(f) ((f)->output_data.pgtk->toolbar_top_height)
>       | 
> In file included from xwidget.h:36,
>                  from dispnew.c:43:
> xterm.h:873: note: this is the location of the previous definition
>   873 | #define FRAME_TOOLBAR_TOP_HEIGHT(f) ((f)->output_data.x->toolbar_top_height)
>       | 
> In file included from gtkutil.h:29,
>                  from dispnew.c:47:
> pgtkterm.h:510: warning: "FRAME_TOOLBAR_BOTTOM_HEIGHT" redefined
>   510 | #define FRAME_TOOLBAR_BOTTOM_HEIGHT(f) \
>       | 
> In file included from xwidget.h:36,
>                  from dispnew.c:43:
> xterm.h:874: note: this is the location of the previous definition
>   874 | #define FRAME_TOOLBAR_BOTTOM_HEIGHT(f) \
>       | 
> In file included from gtkutil.h:29,
>                  from dispnew.c:47:
> pgtkterm.h:514: warning: "FRAME_TOOLBAR_LEFT_WIDTH" redefined
>   514 | #define FRAME_TOOLBAR_LEFT_WIDTH(f) ((f)->output_data.pgtk->toolbar_left_width)
>       | 
> In file included from xwidget.h:36,
>                  from dispnew.c:43:
> xterm.h:878: note: this is the location of the previous definition
>   878 | #define FRAME_TOOLBAR_LEFT_WIDTH(f) ((f)->output_data.x->toolbar_left_width)
>       | 
> In file included from gtkutil.h:29,
>                  from dispnew.c:47:
> pgtkterm.h:515: warning: "FRAME_TOOLBAR_RIGHT_WIDTH" redefined
>   515 | #define FRAME_TOOLBAR_RIGHT_WIDTH(f) ((f)->output_data.pgtk->toolbar_right_width)
>       | 
> In file included from xwidget.h:36,
>                  from dispnew.c:43:
> xterm.h:879: note: this is the location of the previous definition
>   879 | #define FRAME_TOOLBAR_RIGHT_WIDTH(f) ((f)->output_data.x->toolbar_right_width)
>       | 
> In file included from gtkutil.h:29,
>                  from dispnew.c:47:
> pgtkterm.h:519: warning: "FRAME_FONTSET" redefined
>   519 | #define FRAME_FONTSET(f) (FRAME_X_OUTPUT (f)->fontset)
>       | 
> In file included from xwidget.h:36,
>                  from dispnew.c:43:
> xterm.h:872: note: this is the location of the previous definition
>   872 | #define FRAME_FONTSET(f) ((f)->output_data.x->fontset)
>       | 
> In file included from gtkutil.h:29,
>                  from dispnew.c:47:
> pgtkterm.h:521: warning: "FRAME_BASELINE_OFFSET" redefined
>   521 | #define FRAME_BASELINE_OFFSET(f) (FRAME_X_OUTPUT (f)->baseline_offset)
>       | 
> In file included from xwidget.h:36,
>                  from dispnew.c:43:
> xterm.h:882: note: this is the location of the previous definition
>   882 | #define FRAME_BASELINE_OFFSET(f) ((f)->output_data.x->baseline_offset)
>       | 
> In file included from gtkutil.h:29,
>                  from dispnew.c:47:
> pgtkterm.h:522: warning: "BLACK_PIX_DEFAULT" redefined
>   522 | #define BLACK_PIX_DEFAULT(f) 0x000000
>       | 
> In file included from xwidget.h:36,
>                  from dispnew.c:43:
> xterm.h:101: note: this is the location of the previous definition
>   101 | #define BLACK_PIX_DEFAULT(f)     \
>       | 
> In file included from gtkutil.h:29,
>                  from dispnew.c:47:
> pgtkterm.h:523: warning: "WHITE_PIX_DEFAULT" redefined
>   523 | #define WHITE_PIX_DEFAULT(f) 0xFFFFFF
>       | 
> In file included from xwidget.h:36,
>                  from dispnew.c:43:
> xterm.h:103: note: this is the location of the previous definition
>   103 | #define WHITE_PIX_DEFAULT(f)     \
>       | 
> In file included from gtkutil.h:29,
>                  from dispnew.c:47:
> pgtkterm.h:574:12: error: conflicting types for ‘x_display_pixel_height’
>   574 | extern int x_display_pixel_height (struct pgtk_display_info *);
>       |            ^~~~~~~~~~~~~~~~~~~~~~
> In file included from xwidget.h:36,
>                  from dispnew.c:43:
> xterm.h:1179:1: note: previous definition of ‘x_display_pixel_height’ was here
>  1179 | x_display_pixel_height (struct x_display_info *dpyinfo)
>       | ^~~~~~~~~~~~~~~~~~~~~~
> In file included from gtkutil.h:29,
>                  from dispnew.c:47:
> pgtkterm.h:575:12: error: conflicting types for ‘x_display_pixel_width’
>   575 | extern int x_display_pixel_width (struct pgtk_display_info *);
>       |            ^~~~~~~~~~~~~~~~~~~~~
> In file included from xwidget.h:36,
>                  from dispnew.c:43:
> xterm.h:1185:1: note: previous definition of ‘x_display_pixel_width’ was here
>  1185 | x_display_pixel_width (struct x_display_info *dpyinfo)
>       | ^~~~~~~~~~~~~~~~~~~~~
> In file included from gtkutil.h:29,
>                  from dispnew.c:47:
> pgtkterm.h:585:13: warning: redundant redeclaration of ‘x_set_z_group’ [-Wredundant-decls]
>   585 | extern void x_set_z_group (struct frame *f, Lisp_Object new_value,
>       |             ^~~~~~~~~~~~~
> In file included from xwidget.h:36,
>                  from dispnew.c:43:
> xterm.h:1228:13: note: previous declaration of ‘x_set_z_group’ was here
>  1228 | extern void x_set_z_group (struct frame *, Lisp_Object, Lisp_Object);
>       |             ^~~~~~~~~~~~~
> In file included from gtkutil.h:29,
>                  from dispnew.c:47:
> pgtkterm.h:608:13: warning: redundant redeclaration of ‘initialize_frame_menubar’ [-Wredundant-decls]
>   608 | extern void initialize_frame_menubar (struct frame *);
>       |             ^~~~~~~~~~~~~~~~~~~~~~~~
> In file included from xwidget.h:36,
>                  from dispnew.c:43:
> xterm.h:1313:13: note: previous declaration of ‘initialize_frame_menubar’ was here
>  1313 | extern void initialize_frame_menubar (struct frame *);
>       |             ^~~~~~~~~~~~~~~~~~~~~~~~
> In file included from gtkutil.h:29,
>                  from dispnew.c:47:
> pgtkterm.h:628:13: warning: redundant redeclaration of ‘x_wm_set_size_hint’ [-Wredundant-decls]
>   628 | extern void x_wm_set_size_hint (struct frame *, long, bool);
>       |             ^~~~~~~~~~~~~~~~~~
> In file included from xwidget.h:36,
>                  from dispnew.c:43:
> xterm.h:1142:13: note: previous declaration of ‘x_wm_set_size_hint’ was here
>  1142 | extern void x_wm_set_size_hint (struct frame *, long, bool);
>       |             ^~~~~~~~~~~~~~~~~~
> In file included from gtkutil.h:29,
>                  from dispnew.c:47:
> pgtkterm.h:629:13: warning: redundant redeclaration of ‘x_free_frame_resources’ [-Wredundant-decls]
>   629 | extern void x_free_frame_resources (struct frame *);
>       |             ^~~~~~~~~~~~~~~~~~~~~~
> In file included from xwidget.h:36,
>                  from dispnew.c:43:
> xterm.h:1141:13: note: previous declaration of ‘x_free_frame_resources’ was here
>  1141 | extern void x_free_frame_resources (struct frame *);
>       |             ^~~~~~~~~~~~~~~~~~~~~~
> In file included from gtkutil.h:29,
>                  from dispnew.c:47:
> pgtkterm.h:638:13: warning: redundant redeclaration of ‘x_change_tab_bar_height’ [-Wredundant-decls]
>   638 | extern void x_change_tab_bar_height (struct frame *, int);
>       |             ^~~~~~~~~~~~~~~~~~~~~~~
> In file included from xwidget.h:36,
>                  from dispnew.c:43:
> xterm.h:1238:13: note: previous declaration of ‘x_change_tab_bar_height’ was here
>  1238 | extern void x_change_tab_bar_height (struct frame *, int);
>       |             ^~~~~~~~~~~~~~~~~~~~~~~
> In file included from gtkutil.h:29,
>                  from dispnew.c:47:
> pgtkterm.h:657:13: warning: redundant redeclaration of ‘xg_set_icon’ [-Wredundant-decls]
>   657 | extern bool xg_set_icon (struct frame *, Lisp_Object);
>       |             ^~~~~~~~~~~
> In file included from xwidget.h:36,
>                  from dispnew.c:43:
> xterm.h:1277:13: note: previous declaration of ‘xg_set_icon’ was here
>  1277 | extern bool xg_set_icon (struct frame *, Lisp_Object);
>       |             ^~~~~~~~~~~
> In file included from gtkutil.h:29,
>                  from dispnew.c:47:
> pgtkterm.h:658:13: warning: redundant redeclaration of ‘xg_set_icon_from_xpm_data’ [-Wredundant-decls]
>   658 | extern bool xg_set_icon_from_xpm_data (struct frame *f, const char **data);
>       |             ^~~~~~~~~~~~~~~~~~~~~~~~~
> In file included from xwidget.h:36,
>                  from dispnew.c:43:
> xterm.h:1278:13: note: previous declaration of ‘xg_set_icon_from_xpm_data’ was here
>  1278 | extern bool xg_set_icon_from_xpm_data (struct frame *, const char **);
>       |             ^~~~~~~~~~~~~~~~~~~~~~~~~
> make[2]: *** [Makefile:411：dispnew.o] 错误 1
> make[2]: 离开目录“/home/feng/emacs/emacs.git/src”
> make[1]: *** [Makefile:463：src] 错误 2
> make[1]: 离开目录“/home/feng/emacs/emacs.git”
> make: *** [Makefile:1173：bootstrap] 错误 2
>
>
>
> In GNU Emacs 28.0.60 (build 1, x86_64-pc-linux-gnu, GTK+ Version 3.24.24, cairo version 1.16.0)
>  of 2021-11-16 built on debian
> Repository revision: e852822f3db469c985bf022651f184d6ff2c518a
> Repository branch: emacs-28
> Windowing system distributor 'The X.Org Foundation', version 11.0.12011000
> System Description: Debian GNU/Linux 11 (bullseye)

The PGTK port doesn't support xwidgets at present, and this is a
duplicate of bug#52564.

Could someone please merge those two bugs?

Thanks.