Currently, usb redirection and policykit are enabled by default,
and configure will error out if the required dependencies cannot
be found. This commit changes the default behaviour, by default
usb redirection/policykit support is automatically enabled/disabled
depending on the availability of the needed dependencies. Passing
--enable-usbredir will error out if the dependencies for usb
redirection cannot be found, ditto for policykit. This should make
things nicer for people running configure or autogen.sh with no
argument.
---
 configure.ac    |   73 ++++++++++++++++++++++++++++++++++---------------------
 gtk/Makefile.am |    8 +----
 2 files changed, 47 insertions(+), 34 deletions(-)

diff --git a/configure.ac b/configure.ac
index d7dd1c0..202aa3c 100644
--- a/configure.ac
+++ b/configure.ac
@@ -314,43 +314,60 @@ else
 fi
 
 AC_ARG_ENABLE([usbredir],
-  AS_HELP_STRING([--enable-usbredir=@<:@yes/no@:>@],
-                 [Enable usbredir support @<:@default=yes@:>@]),
+  AS_HELP_STRING([--enable-usbredir=@<:@auto/yes/no@:>@],
+                 [Enable usbredir support @<:@default=auto@:>@]),
   [],
-  [enable_usbredir="yes"])
-AC_ARG_ENABLE([polkit],
-  AS_HELP_STRING([--enable-polkit=@<:@yes/no@:>@],
-                 [Enable policykit support (for the usb acl 
helper)@<:@default=yes@:>@]),
-  [],
-  [enable_polkit="yes"])
+  [enable_usbredir="auto"])
 
 if test "x$enable_usbredir" = "xno"; then
   AM_CONDITIONAL(WITH_USBREDIR, false)
   AM_CONDITIONAL(WITH_POLKIT, false)
 else
-  PKG_CHECK_MODULES(GUDEV, gudev-1.0)
-  PKG_CHECK_MODULES(LIBUSB, libusb-1.0 >= 1.0.9)
-  PKG_CHECK_MODULES(LIBUSBREDIRHOST, libusbredirhost >= 0.3.3)
-  AC_DEFINE(USE_USBREDIR, [1], [Define if supporting usbredir proxying])
-  AM_CONDITIONAL(WITH_USBREDIR, true)
-  if test "x$enable_polkit" = "xno"; then
-    AM_CONDITIONAL(WITH_POLKIT, false)
-  else
-    PKG_CHECK_MODULES(POLKIT, polkit-gobject-1 >= 0.96)
-    AC_CHECK_HEADER([acl/libacl.h],,
-                    AC_MSG_ERROR([cannot find headers for libacl]))
-    AC_CHECK_LIB([acl], [acl_get_file], [ACL_LIBS=-lacl] [AC_SUBST(ACL_LIBS)],
-                 AC_MSG_ERROR([cannot find libacl]))
+  PKG_CHECK_MODULES([USBREDIR],
+                    [gudev-1.0 libusb-1.0 >= 1.0.9 libusbredirhost >= 0.3.3],
+                    [have_usbredir=yes],
+                    [have_usbredir=no])
+  if test x"$have_usbredir" = "xno" && test x"$enable_usbredir" = "xyes"; then
+    AC_MSG_ERROR([usbredir support explicitly requested, but some required 
packages are not available])
+  fi
+  if test x"$have_usbredir" = "xyes"; then
+    AC_DEFINE(USE_USBREDIR, [1], [Define if supporting usbredir proxying])
+  fi
+  AM_CONDITIONAL([WITH_USBREDIR], [test x"$have_usbredir" = "xyes"])
+fi
+
+AC_ARG_ENABLE([polkit],
+  AS_HELP_STRING([--enable-polkit=@<:@yes/no@:>@],
+                 [Enable policykit support (for the usb acl 
helper)@<:@default=yes@:>@]),
+  [],
+  [enable_polkit="auto"])
+
+if test x"$have_usbredir" = "xyes" && test "x$enable_polkit" != "xno"; then
+  have_polkit=yes
+  PKG_CHECK_MODULES([POLKIT], [polkit-gobject-1 >= 0.96],
+                              [],
+                              [have_polkit=no])
+  AC_CHECK_HEADER([acl/libacl.h], [], [have_polkit=no])
+  AC_CHECK_LIB([acl], [acl_get_file], [ACL_LIBS=-lacl], [have_polkit=no])
+  if test x"$enable_polkit" = "xyes" && test x"$have_polkit" = "xno"; then
+    AC_MSG_ERROR([PolicyKit support explicitly requested, but some required 
packages are not available])
+  fi
+
+  if test x"$have_polkit" = "xyes"; then
+    AC_SUBST(ACL_LIBS)
     AC_DEFINE(USE_POLKIT, [1], [Define if supporting polkit])
-    AM_CONDITIONAL(WITH_POLKIT, true)
-    POLICYDIR=`${PKG_CONFIG} polkit-gobject-1 --variable=policydir`
-    AC_SUBST(POLICYDIR)
-    # Check for polkit_authority_get_sync()
-    AC_CHECK_LIB([polkit-gobject-1], [polkit_authority_get_sync], 
ac_have_pk_auth_get_sync="1", ac_have_pk_auth_get_sync="0")
-    AC_DEFINE_UNQUOTED(HAVE_POLKIT_AUTHORITY_GET_SYNC, 
$ac_have_pk_auth_get_sync, [Define if you have a polkit with 
polkit_authority_get_sync()])
   fi
+  AM_CONDITIONAL([WITH_POLKIT], [test x"$have_polkit" = "xyes"])
+  POLICYDIR=`${PKG_CONFIG} polkit-gobject-1 --variable=policydir`
+  AC_SUBST(POLICYDIR)
+  # Check for polkit_authority_get_sync()
+  AC_CHECK_LIB([polkit-gobject-1], [polkit_authority_get_sync], 
ac_have_pk_auth_get_sync="1", ac_have_pk_auth_get_sync="0")
+  AC_DEFINE_UNQUOTED(HAVE_POLKIT_AUTHORITY_GET_SYNC, 
$ac_have_pk_auth_get_sync, [Define if you have a polkit with 
polkit_authority_get_sync()])
+else
+  AM_CONDITIONAL(WITH_POLKIT, false)
 fi
 
+
 AC_ARG_WITH([usb-acl-helper-dir],
   AS_HELP_STRING([--with-usb-acl-helper-dir=DIR],
                  [Directory where the USB ACL helper binary should be 
installed]),
@@ -598,7 +615,7 @@ AC_MSG_NOTICE([
         Target:                   ${red_target}
         SASL support:             ${enable_sasl}
         Smartcard support:        ${enable_smartcard}
-        USB redirection support:  ${enable_usbredir}
+        USB redirection support:  ${have_usbredir}
         Gtk:                      $GTK_API_VERSION
 
         Now type 'make' to build $PACKAGE
diff --git a/gtk/Makefile.am b/gtk/Makefile.am
index 043e48f..6f39888 100644
--- a/gtk/Makefile.am
+++ b/gtk/Makefile.am
@@ -78,9 +78,7 @@ SPICE_COMMON_CPPFLAGS = \
        $(SASL_CFLAGS)                  \
        $(GST_CFLAGS)                   \
        $(SMARTCARD_CFLAGS)             \
-       $(GUDEV_CFLAGS)                 \
-       $(LIBUSB_CFLAGS)                \
-       $(LIBUSBREDIRHOST_CFLAGS)       \
+       $(USBREDIR_CFLAGS)              \
        $(NULL)
 
 AM_CPPFLAGS = \
@@ -170,9 +168,7 @@ libspice_client_glib_2_0_la_LIBADD =        \
        $(GST_LIBS)                     \
        $(SASL_LIBS)                    \
        $(SMARTCARD_LIBS)               \
-       $(GUDEV_LIBS)                   \
-       $(LIBUSB_LIBS)                  \
-       $(LIBUSBREDIRHOST_LIBS)         \
+       $(USBREDIR_LIBS)                \
        $(NULL)
 
 if WITH_POLKIT
-- 
1.7.7.6

_______________________________________________
Spice-devel mailing list
Spice-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/spice-devel

Reply via email to