Subject: 25.1.50; --with-x-toolkit options cause the build to fail.
From: Keith David Bershatsky <[email-masked]>
To: [email-masked]
Date: Sun, 13 Mar 2016 00:21:04 -0800
List-Id: <debbugs-submit.debbugs.gnu.org>

There appear to be several issues that relate to building Emacs with X11 support.

The first issue is with the default GTK3 -- i.e., "What toolkit should Emacs use?  GTK3"

  ./configure --with-x --with-ns=no --without-imagemagick --enable-checking='glyphs'

* * *
  CC       xsettings.o
  CC       gtkutil.o
gtkutil.c: In function 'get_utf8_string':
gtkutil.c:521: warning: comparison is always true due to limited range of data type
gtkutil.c:521: warning: comparison is always true due to limited range of data type
gtkutil.c:521: warning: comparison is always false due to limited range of data type
gtkutil.c:521: warning: comparison is always false due to limited range of data type
gtkutil.c:521: warning: comparison is always true due to limited range of data type
gtkutil.c:521: warning: comparison is always true due to limited range of data type
gtkutil.c:521: warning: comparison is always false due to limited range of data type
gtkutil.c:521: warning: comparison is always false due to limited range of data type
  CC       emacsgtkfixed.o
emacsgtkfixed.c:36: error: redefinition of typedef 'EmacsFixedPrivate'
emacsgtkfixed.h:32: error: previous declaration of 'EmacsFixedPrivate' was here
emacsgtkfixed.c:37: error: redefinition of typedef 'EmacsFixedClass'
emacsgtkfixed.h:33: error: previous declaration of 'EmacsFixedClass' was here
make[1]: *** [emacsgtkfixed.o] Error 1
make: *** [src] Error 2

The second and third issues deal with other types of toolkit that I attempted to use -- i.e., "motif" and "athena".

~/Desktop/emacs $ ./configure --with-x --with-ns=no --with-x-toolkit=motif --without-imagemagick --enable-checking='glyphs'
***
  CC       xgselect.o
  CC       terminfo.o
  CC       lastfile.o
  CC       widget.o
/usr/bin/make -C ../admin/charsets all
make[2]: Nothing to be done for `all'.
/usr/bin/make -C ../admin/unidata charscript.el
make[2]: Nothing to be done for `charscript.el'.
  CCLD     temacs
Undefined symbols:
  "_xaw_create_dialog", referenced from:
      _lw_make_widget in liblw.a(lwlib.o)
  "_xlw_update_one_widget", referenced from:
      _set_one_value in liblw.a(lwlib.o)
  "_xlw_destroy_instance", referenced from:
      _destroy_one_instance in liblw.a(lwlib.o)
  "_xaw_pop_instance", referenced from:
      _lw_pop_all_widgets in liblw.a(lwlib.o)
  "_xaw_creation_table", referenced from:
      _lw_make_widget in liblw.a(lwlib.o)
  "_xaw_destroy_instance", referenced from:
      _destroy_one_instance in liblw.a(lwlib.o)
  "_xlw_popup_menu", referenced from:
      _lw_popup_menu in liblw.a(lwlib.o)
  "_xaw_update_one_widget", referenced from:
      _set_one_value in liblw.a(lwlib.o)
  "_lw_xaw_widget_p", referenced from:
      _get_one_value in liblw.a(lwlib.o)
      _set_one_value in liblw.a(lwlib.o)
      _lw_popup_menu in liblw.a(lwlib.o)
      _lw_pop_all_widgets in liblw.a(lwlib.o)
      _destroy_one_instance in liblw.a(lwlib.o)
  "_lw_lucid_widget_p", referenced from:
      _get_one_value in liblw.a(lwlib.o)
      _set_one_value in liblw.a(lwlib.o)
      _lw_popup_menu in liblw.a(lwlib.o)
      _lw_pop_all_widgets in liblw.a(lwlib.o)
      _destroy_one_instance in liblw.a(lwlib.o)
  "_xlw_creation_table", referenced from:
      _lw_make_widget in liblw.a(lwlib.o)
  "_XawPanedSetRefigureMode", referenced from:
      _lw_refigure_widget in liblw.a(lwlib.o)
ld: symbol(s) not found
collect2: ld returned 1 exit status
make[1]: *** [temacs] Error 1
make: *** [src] Error 2

~/Desktop/emacs $ ./configure --with-x --with-ns=no --with-x-toolkit=athena --without-imagemagick --enable-checking='glyphs'
***
  CC       xgselect.o
  CC       terminfo.o
  CC       lastfile.o
  CC       widget.o
/usr/bin/make -C ../admin/charsets all
make[2]: Nothing to be done for `all'.
/usr/bin/make -C ../admin/unidata charscript.el
make[2]: Nothing to be done for `charscript.el'.
  CCLD     temacs
Undefined symbols:
  "_xaw_create_dialog", referenced from:
      _lw_make_widget in liblw.a(lwlib.o)
  "_xlw_update_one_widget", referenced from:
      _set_one_value in liblw.a(lwlib.o)
  "_xlw_destroy_instance", referenced from:
      _destroy_one_instance in liblw.a(lwlib.o)
  "_xaw_pop_instance", referenced from:
      _lw_pop_all_widgets in liblw.a(lwlib.o)
  "_xlwmenu_window_p", referenced from:
      _handle_one_xevent in xterm.o
  "_xaw_creation_table", referenced from:
      _lw_make_widget in liblw.a(lwlib.o)
  "_xaw_destroy_instance", referenced from:
      _destroy_one_instance in liblw.a(lwlib.o)
  "_xlw_popup_menu", referenced from:
      _lw_popup_menu in liblw.a(lwlib.o)
  "_xaw_update_one_widget", referenced from:
      _set_one_value in liblw.a(lwlib.o)
  "_lw_xaw_widget_p", referenced from:
      _get_one_value in liblw.a(lwlib.o)
      _set_one_value in liblw.a(lwlib.o)
      _lw_popup_menu in liblw.a(lwlib.o)
      _lw_pop_all_widgets in liblw.a(lwlib.o)
      _destroy_one_instance in liblw.a(lwlib.o)
  "_lw_lucid_widget_p", referenced from:
      _get_one_value in liblw.a(lwlib.o)
      _set_one_value in liblw.a(lwlib.o)
      _lw_popup_menu in liblw.a(lwlib.o)
      _lw_pop_all_widgets in liblw.a(lwlib.o)
      _destroy_one_instance in liblw.a(lwlib.o)
  "_xlwmenu_redisplay", referenced from:
      _handle_one_xevent in xterm.o
      _x_hide_tip in xfns.o
  "_xlw_creation_table", referenced from:
      _lw_make_widget in liblw.a(lwlib.o)
ld: symbol(s) not found
collect2: ld returned 1 exit status
make[1]: *** [temacs] Error 1
make: *** [src] Error 2

I only tried those three (3) toolkit, but perhaps the other possible toolkit have problems also -- however I'm just guessing.

On a less important note, I did not know that it is necessary to manually deactivate --with-ns=no so that I could use --with-x and I spent a lot of time trying to figure that out.  Perhaps when a user types ./configure -h, there could be a message indicating how to disable --with-ns when building on OSX.  Alternatively, if a user specifies --with-x when building on OSX, then that specific setting should trump and internally set --with-ns=no.  Unless, of course it's possible to somehow have the best of both worlds.  If I can have both possibilities, I'd love to know how to do that.

Thanks,

Keith

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

In GNU Emacs 25.1.50.1 (x86_64-apple-darwin10.8.0, NS appkit-1038.36 Version 10.6.8 (Build 10K549))
 of 2016-03-11 built on server.private
Repository revision: ea626c72e590aa7a45fd26df42240854e4225cef
Windowing system distributor 'Apple', version 10.3.1038
Configured using:
 'configure --with-ns --without-imagemagick --enable-checking=glyphs
 CPPFLAGS=-I/Users/HOME/.0.data/.0.emacs/macports/include
 LDFLAGS=-L/Users/HOME/.0.data/.0.emacs/macports/lib'

Configured features:
JPEG RSVG DBUS NOTIFY ACL LIBXML2 ZLIB TOOLKIT_SCROLL_BARS NS

Important settings:
  value of $LANG: en_US
  locale-coding-system: utf-8-unix

Major mode: FM

Minor modes in effect:
  tabbar-mode: t
  ml-mode: t
  ds-mode: t
  sd-mode: t

Recent messages:

Load-path shadows:
None found.

Features:
(shadow emacsbug message mml mml-sec epa epg mm-decode mm-bodies
mm-encode gmm-utils mailheader sendmail lawlist-ztree lawlist-ys
lawlist-ws lawlist-wl elmo-imap4 elmo-localdir modb-standard
modb-legacy elmo-internal elmo-flag mmelmo-imap mmelmo-buffer
elsp-generic mel-u epg-config lawlist-w3m doc-view jka-compr
image-mode ccl lawlist-vl lawlist-view lawlist-undo lawlist-txt
lawlist-tm lawlist-tex compare-w diff-mode lawlist-tabbar
lawlist-speedbar lawlist-shell info esh-groups ehelp ange-ftp
lawlist-sgml lawlist-sb lawlist-ruler lawlist-replace
lawlist-rectangle lawlist-re-builder lawlist-python skeleton
lawlist-profiler lawlist-print lawlist-php lawlist-perl lawlist-parens
lawlist-org lawlist-calendar org-agenda org org-macro org-footnote
org-pcomplete org-list org-faces org-entities org-version
ob-emacs-lisp ob ob-tangle ob-ref ob-lob ob-table ob-exp org-src
ob-keys ob-comint ob-core ob-eval org-compat org-macs org-loaddefs
find-func holidays hol-loaddefs cal-menu calendar cal-loaddefs
lawlist-neotree lawlist-movement lawlist-mouse lawlist-ml lawlist-misc
lawlist-messages lawlist-mc lawlist-markdown noutline outline
lawlist-lorem lawlist-linum lawlist-keymap lawlist-js json map
thingatpt cc-mode cc-fonts cc-guess cc-menus cc-cmds cc-styles
cc-align cc-engine cc-vars cc-defs lawlist-ispell lawlist-isearch
lawlist-info lawlist-imenu lawlist-ibuffer lawlist-hl lawlist-grep
lawlist-git pcvs-util ido seq server conf-mode lawlist-framebufs
lawlist-frame lawlist-fm lawlist-env lawlist-elscreen lawlist-elisp
lawlist-dv lawlist-image lawlist-files zeroconf dbus xml lawlist-ds
lawlist-dired dired dired-loaddefs format-spec lawlist-diff
lawlist-desktop frameset lawlist-saveplace lawlist-debug
lawlist-window debug lawlist-css smie lawlist-compile rx lawlist-color
lawlist-cm lawlist-cc-mode lawlist-cc-awk lawlist-font-lock cl-macs
lawlist-cc-fonts lawlist-cc-guess lawlist-cc-menus lawlist-cc-align
lawlist-cc-cmds lawlist-cc-styles lawlist-cc-engine lawlist-cc-langs
lawlist-cc-vars lawlist-cc-defs lawlist-cc-bytecomp lawlist-calc
lawlist-calc+ lawlist-bk lawlist-bc lawlist-bbdb gnus nnheader subr-x
wid-edit mail-parse rfc2231 mailabbrev mail-extr rfc822 timezone
lawlist-minibuffer gv lawlist-auth gnus-util rmail rmail-loaddefs
rfc2047 rfc2045 ietf-drums mail-utils mm-util mail-prsvr
password-cache lawlist-as lawlist-archive lawlist-apropos lawlist-+
lawlist-lcl byte-opt bytecomp byte-compile cl-extra cconv lawlist-help
disp-table easy-mmode edmacro kmacro quail help-mode easymenu
cl-loaddefs cl-lib pcase derived advice shell pcomplete comint
ansi-color ring savehist time-date mule-util tooltip eldoc electric
uniquify ediff-hook vc-hooks lisp-float-type mwheel term/ns-win ns-win
ucs-normalize term/common-win tool-bar dnd fontset image regexp-opt
fringe tabulated-list newcomment elisp-mode lisp-mode prog-mode
register page menu-bar rfn-eshadow timer select scroll-bar mouse
jit-lock font-lock syntax facemenu font-core term/tty-colors frame
cl-generic cham georgian utf-8-lang misc-lang vietnamese tibetan thai
tai-viet lao korean japanese eucjp-ms cp51932 hebrew greek romanian
slovak czech european ethiopic indian cyrillic chinese charscript
case-table epa-hook jka-cmpr-hook help simple abbrev obarray
minibuffer cl-preloaded nadvice loaddefs button faces cus-face
macroexp files text-properties overlay sha1 md5 base64 format env
code-pages mule custom widget hashtable-print-readable backquote
dbusbind kqueue cocoa ns multi-tty make-network-process emacs)

Memory information:
nil