[Spice-devel] [PATCH vdagent 1/2] build: make GTK+ optional

Jakub Janků janku.jakub.jj at gmail.com
Thu Mar 1 10:10:55 UTC 2018


From: Jakub Janků <jjanku at redhat.com>

Add --with-gtk configure option.
If used, favor GTK+ over Xlib.
---
 configure.ac          | 13 ++++++++++++-
 src/vdagent/vdagent.c |  8 +++++++-
 src/vdagent/x11.c     |  6 ++++++
 3 files changed, 25 insertions(+), 2 deletions(-)

diff --git a/configure.ac b/configure.ac
index 1eb17a9..89f617c 100644
--- a/configure.ac
+++ b/configure.ac
@@ -75,6 +75,16 @@ if test "x$init_systemd" = "xyes"; then
   fi
 fi
 
+AC_ARG_WITH([gtk],
+            [AS_HELP_STRING([--with-gtk], [Use GTK+ instead of Xlib])],
+            [],
+            [with_gtk="auto"])
+if test "x$with_gtk" != "xno"; then
+  PKG_CHECK_MODULES([GTK], [gtk+-3.0 >= 3.10],
+                    [AC_DEFINE([WITH_GTK], [1], [If defined, vdagent will favor GTK+ over Xlib])],
+                    [AS_IF([test "x$with_gtk" = "xyes"], [AC_MSG_ERROR([GTK+ requested but not found])])])
+fi
+
 AC_ARG_ENABLE([pciaccess],
               [AS_HELP_STRING([--enable-pciaccess], [Enable libpciaccess use for auto generation of Xinerama xorg.conf (default: yes)])],
               [enable_pciaccess="$enableval"],
@@ -86,7 +96,6 @@ AC_ARG_ENABLE([static-uinput],
               [enable_static_uinput="no"])
 
 PKG_CHECK_MODULES([GLIB2], [glib-2.0 >= 2.34])
-PKG_CHECK_MODULES([GTK], [gtk+-3.0 >= 3.10])
 PKG_CHECK_MODULES(X, [xfixes xrandr >= 1.3 xinerama x11])
 PKG_CHECK_MODULES(SPICE, [spice-protocol >= 0.12.13])
 PKG_CHECK_MODULES(ALSA, [alsa >= 1.0.22])
@@ -210,6 +219,8 @@ AC_MSG_NOTICE([
         install systemd service:  ${init_systemd}
         udevdir:                  ${udevdir}
 
+        use GTK+:                 ${with_gtk}
+
         Now type 'make' to build $PACKAGE
 
 ])
diff --git a/src/vdagent/vdagent.c b/src/vdagent/vdagent.c
index d86ee25..6bd52fa 100644
--- a/src/vdagent/vdagent.c
+++ b/src/vdagent/vdagent.c
@@ -36,7 +36,9 @@
 #include <spice/vd_agent.h>
 #include <poll.h>
 #include <glib-unix.h>
-#include <gtk/gtk.h>
+#ifdef WITH_GTK
+# include <gtk/gtk.h>
+#endif
 
 #include "udscs.h"
 #include "vdagentd-proto.h"
@@ -401,7 +403,9 @@ int main(int argc, char *argv[])
     g_option_context_set_summary(context,
                                  "\tSpice session guest agent: X11\n"
                                  "\tVersion: " VERSION);
+#ifdef WITH_GTK
     g_option_context_add_group(context, gtk_get_option_group(FALSE));
+#endif
     g_option_context_parse(context, &argc, &argv, &error);
     g_option_context_free(context);
 
@@ -429,8 +433,10 @@ int main(int argc, char *argv[])
     if (do_daemonize)
         parent_socket = daemonize();
 
+#ifdef WITH_GTK
     gdk_set_allowed_backends("x11");
     gtk_init(NULL, NULL);
+#endif
 
 reconnect:
     if (version_mismatch) {
diff --git a/src/vdagent/x11.c b/src/vdagent/x11.c
index 9700847..e6c3e9e 100644
--- a/src/vdagent/x11.c
+++ b/src/vdagent/x11.c
@@ -31,11 +31,17 @@
    Calling XPending when-ever we return to the mainloop also ensures any
    pending writes are flushed. */
 
+#ifdef HAVE_CONFIG_H
+# include <config.h>
+#endif
+
 #include <glib.h>
+#ifdef WITH_GTK
 #include <gdk/gdk.h>
 #ifdef GDK_WINDOWING_X11
 #include <gdk/gdkx.h>
 #endif
+#endif
 #include <stdlib.h>
 #include <limits.h>
 #include <string.h>
-- 
2.14.3



More information about the Spice-devel mailing list