From 2388fa74982a9146e4bcefc75004ec9d7241c505 Mon Sep 17 00:00:00 2001 From: Paul Eggert Date: Wed, 20 Jan 2016 11:06:01 -0800 Subject: [PATCH] Port to platforms with gtk3 but not webkitgtk3 MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit I ran into this problem on my Fedora 23 installation; Emacs configured but did not build when --with-xwidgets was specified. * configure.ac (HAVE_WEBKIT, HAVE_GIR): Omit unnecessary initializations. (DOES_XWIDGETS_USE_GIR): New var. If --with-xwidgets is specified, report an error if not doable, to be consistent with the other --with options. Require webkitgtk3 to use Xwidgets, as the Xwidgets code does not work at all without webkitgtk3. Simplify use of EMACS_CHECK_MODULES. Output message about gobject introspection only if xwidgets are used. * etc/NEWS: Users need webkitgtk3, not merely webkit. * src/xwidget.c (syms_of_xwidget): Don’t worry about HAVE_WEBKIT_OSR, since this file is no longer compiled if webkitgtk3 is not available. --- configure.ac | 35 +++++++++++++++-------------------- etc/NEWS | 2 +- src/xwidget.c | 2 -- 3 files changed, 16 insertions(+), 23 deletions(-) diff --git a/configure.ac b/configure.ac index 3b87fad60b6..a344b28c68a 100644 --- a/configure.ac +++ b/configure.ac @@ -2566,35 +2566,32 @@ if test "${HAVE_GTK}" = "yes"; then fi +dnl Enable xwidgets if GTK3 and WebKitGTK+ are available. HAVE_XWIDGETS=no -HAVE_WEBKIT=no -HAVE_GIR=no XWIDGETS_OBJ= -if test "$with_xwidgets" != "no" && test "$USE_GTK_TOOLKIT" = "GTK3" && - test "$window_system" != "none" -then - HAVE_XWIDGETS=yes - AC_DEFINE([HAVE_XWIDGETS], 1, [Define to 1 if you have xwidgets support.]) +DOES_XWIDGETS_USE_GIR= +if test "$with_xwidgets" != "no"; then + test "$USE_GTK_TOOLKIT" = "GTK3" && test "$window_system" != "none" || + AC_MSG_ERROR([xwidgets requested but gtk3 not used.]) - dnl xwidgets - dnl - enable only if GTK3 is enabled, and we have a window system - dnl - check for webkit and gobject introspection - dnl webkit version for gtk3. WEBKIT_REQUIRED=1.4.0 WEBKIT_MODULES="webkitgtk-3.0 >= $WEBKIT_REQUIRED" + EMACS_CHECK_MODULES([WEBKIT], [$WEBKIT_MODULES]) + HAVE_XWIDGETS=$HAVE_WEBKIT + test $HAVE_XWIDGETS = yes || + AC_MSG_ERROR([xwidgets requested but WebKitGTK+ not found.]) - EMACS_CHECK_MODULES(WEBKIT, $WEBKIT_MODULES, HAVE_WEBKIT=yes, HAVE_WEBKIT=no) - if test $HAVE_WEBKIT = yes; then - AC_DEFINE([HAVE_WEBKIT_OSR], 1, [Define to 1 if you have webkit_osr support.]) - fi + XWIDGETS_OBJ=xwidget.o + AC_DEFINE([HAVE_XWIDGETS], 1, [Define to 1 if you have xwidgets support.]) GIR_REQUIRED=1.32.1 GIR_MODULES="gobject-introspection-1.0 >= $GIR_REQUIRED" - EMACS_CHECK_MODULES(GIR, $GIR_MODULES, HAVE_GIR=yes, HAVE_GIR=no) + EMACS_CHECK_MODULES([GIR], [$GIR_MODULES]) if test $HAVE_GIR = yes; then AC_DEFINE([HAVE_GIR], 1, [Define to 1 if you have GIR support.]) fi - XWIDGETS_OBJ=xwidget.o + DOES_XWIDGETS_USE_GIR="\ + Does Xwidgets use gobject introspection? $HAVE_GIR" fi AC_SUBST(XWIDGETS_OBJ) @@ -5305,9 +5302,7 @@ AS_ECHO([" Does Emacs use -lXaw3d? ${HAVE_XAW3D Does Emacs have dynamic modules support? ${HAVE_MODULES} Does Emacs use toolkit scroll bars? ${USE_TOOLKIT_SCROLL_BARS} Does Emacs support Xwidgets (requires gtk3)? ${HAVE_XWIDGETS} - Does xwidgets support webkit? ${HAVE_WEBKIT} - Does xwidgets support gobject introspection? ${HAVE_GIR} -"]) +${DOES_XWIDGETS_USE_GIR}"]) if test -n "${EMACSDATA}"; then AS_ECHO([" Environment variable EMACSDATA set to: $EMACSDATA"]) diff --git a/etc/NEWS b/etc/NEWS index 934bc3f0859..06b32ce9ccc 100644 --- a/etc/NEWS +++ b/etc/NEWS @@ -121,7 +121,7 @@ and can contain escape sequences for command keys, quotes, and the like. * Changes in Emacs 25.1 ** Xwidgets: a new feature for embedding native widgets inside Emacs buffers. -If you have gtk3 and webkit-devel installed, you can access the +If you have gtk3 and webkitgtk3 installed, you can access the embedded webkit browser with `M-x xwidget-webkit-browse-url'. This opens a new buffer with the embedded browser. The buffer will have a new mode, `xwidget-webkit-mode' (similar to `image-mode'), diff --git a/src/xwidget.c b/src/xwidget.c index 88cdb941c4c..f8e13cd4522 100644 --- a/src/xwidget.c +++ b/src/xwidget.c @@ -1077,12 +1077,10 @@ syms_of_xwidget (void) defsubr (&Sxwidget_query_on_exit_flag); defsubr (&Sset_xwidget_query_on_exit_flag); -#ifdef HAVE_WEBKIT_OSR defsubr (&Sxwidget_webkit_goto_uri); defsubr (&Sxwidget_webkit_execute_script); defsubr (&Sxwidget_webkit_get_title); DEFSYM (Qwebkit_osr, "webkit-osr"); -#endif defsubr (&Sxwidget_size_request); defsubr (&Sdelete_xwidget_view); -- 2.39.2