[Spice-devel] [PATCH spice-gtk] Make phodav an optionnal external dependency
Marc-André Lureau
marcandre.lureau at gmail.com
Tue Apr 1 08:03:43 PDT 2014
Now that upstream provides a stable/versionnized API, it will be
easier to deal with than with submodules.
---
.gitmodules | 3 ---
autogen.sh | 1 -
configure.ac | 16 ++++++++++++----
gtk/Makefile.am | 6 +++---
gtk/channel-webdav.c | 10 +++++++++-
gtk/phodav | 1 -
gtk/spice-channel.c | 4 ++++
gtk/spice-session-priv.h | 10 +++++++++-
8 files changed, 37 insertions(+), 14 deletions(-)
delete mode 160000 gtk/phodav
diff --git a/.gitmodules b/.gitmodules
index cfce54a..0c618ee 100644
--- a/.gitmodules
+++ b/.gitmodules
@@ -1,6 +1,3 @@
[submodule "spice-common"]
path = spice-common
url = ../spice-common
-[submodule "gtk/phodav"]
- path = gtk/phodav
- url = git://git.gnome.org/phodav
diff --git a/autogen.sh b/autogen.sh
index d71be70..7b4415f 100755
--- a/autogen.sh
+++ b/autogen.sh
@@ -6,7 +6,6 @@ srcdir=`dirname $0`
test -z "$srcdir" && srcdir=.
git submodule update --init --recursive
-(cd "$srcdir/gtk/phodav/" && intltoolize -f)
gtkdocize
autoreconf -v --force --install
diff --git a/configure.ac b/configure.ac
index dc6a4ad..19f767d 100644
--- a/configure.ac
+++ b/configure.ac
@@ -75,8 +75,6 @@ AC_CONFIG_SUBDIRS([spice-common])
COMMON_CFLAGS='-I ${top_srcdir}/spice-common/ -I ${top_srcdir}/spice-common/spice-protocol/'
AC_SUBST(COMMON_CFLAGS)
-AC_CONFIG_SUBDIRS([gtk/phodav])
-
SPICE_GTK_MAJOR_VERSION=`echo $PACKAGE_VERSION | cut -d. -f1`
SPICE_GTK_MINOR_VERSION=`echo $PACKAGE_VERSION | cut -d. -f2`
SPICE_GTK_MICRO_VERSION=`echo $PACKAGE_VERSION | cut -d. -f3 | cut -d- -f1`
@@ -270,6 +268,15 @@ AC_SUBST(GTHREAD_CFLAGS)
AC_SUBST(GTHREAD_LIBS)
PKG_CHECK_MODULES(SOUP, libsoup-2.4)
+AC_SUBST(SOUP_CFLAGS)
+AC_SUBST(SOUP_LIBS)
+
+PKG_CHECK_MODULES(PHODAV, [libphodav-1.0], [have_phodav=yes], [have_phodav=no])
+AC_SUBST(PHODAV_CFLAGS)
+AC_SUBST(PHODAV_LIBS)
+AM_CONDITIONAL([WITH_PHODAV], [test "x$have_phodav" = "xyes"])
+AS_IF([test "x$have_phodav" = "xyes"],
+ AC_DEFINE(USE_PHODAV, [1], [Define if supporting phodav]))
AC_ARG_WITH([audio],
AS_HELP_STRING([--with-audio=@<:@gstreamer/pulse/auto/no@:>@], [Select audio backend @<:@default=auto@:>@]),
@@ -738,15 +745,16 @@ AC_MSG_NOTICE([
prefix: ${prefix}
c compiler: ${CC}
+ Target: ${red_target}
+ Gtk: $GTK_API_VERSION
Coroutine: ${with_coroutine}
Audio: ${with_audio}
- Target: ${red_target}
SASL support: ${enable_sasl}
Smartcard support: ${have_smartcard}
USB redirection support: ${have_usbredir} ${with_usbredir_hotplug}
- Gtk: $GTK_API_VERSION
DBus: ${have_dbus}
+ PhoDAV: ${have_phodav}
Now type 'make' to build $PACKAGE
diff --git a/gtk/Makefile.am b/gtk/Makefile.am
index 2e38cce..e28220c 100644
--- a/gtk/Makefile.am
+++ b/gtk/Makefile.am
@@ -1,6 +1,5 @@
NULL =
-
-SUBDIRS = phodav
+SUBDIRS =
if WITH_CONTROLLER
SUBDIRS += controller
@@ -97,6 +96,7 @@ SPICE_COMMON_CPPFLAGS = \
$(USBREDIR_CFLAGS) \
$(GUDEV_CFLAGS) \
$(SOUP_CFLAGS) \
+ $(PHODAV_CFLAGS) \
$(NULL)
AM_CPPFLAGS = \
@@ -186,7 +186,6 @@ libspice_client_glib_2_0_la_LDFLAGS = \
libspice_client_glib_2_0_la_LIBADD = \
$(top_builddir)/spice-common/common/libspice-common.la \
$(top_builddir)/spice-common/common/libspice-common-client.la \
- phodav/libphodav.la \
$(GLIB2_LIBS) \
$(SOUP_LIBS) \
$(GOBJECT2_LIBS) \
@@ -202,6 +201,7 @@ libspice_client_glib_2_0_la_LIBADD = \
$(SMARTCARD_LIBS) \
$(USBREDIR_LIBS) \
$(GUDEV_LIBS) \
+ $(PHODAV_LIBS) \
$(NULL)
if WITH_POLKIT
diff --git a/gtk/channel-webdav.c b/gtk/channel-webdav.c
index 2bee513..c619e48 100644
--- a/gtk/channel-webdav.c
+++ b/gtk/channel-webdav.c
@@ -15,6 +15,8 @@
You should have received a copy of the GNU Lesser General Public
License along with this library; if not, see <http://www.gnu.org/licenses/>.
*/
+#include "config.h"
+
#include "spice-client.h"
#include "spice-common.h"
#include "spice-channel-priv.h"
@@ -642,6 +644,7 @@ static void spice_webdav_handle_msg(SpiceChannel *channel, SpiceMsgIn *msg)
+#ifdef USE_PHODAV
static void new_connection(SoupSocket *sock,
SoupSocket *new,
gpointer user_data)
@@ -715,12 +718,14 @@ static PhodavServer* webdav_server_new(SpiceSession *session)
return dav;
}
+#endif /* USE_PHODAV */
static PhodavServer* phodav_server_get(SpiceSession *session, gint *port)
{
g_return_val_if_fail(SPICE_IS_SESSION(session), NULL);
- PhodavServer *self;
+#ifdef USE_PHODAV
+ PhodavServer *self = NULL;
static GStaticMutex mutex = G_STATIC_MUTEX_INIT;
g_static_mutex_lock(&mutex);
@@ -735,4 +740,7 @@ static PhodavServer* phodav_server_get(SpiceSession *session, gint *port)
*port = phodav_server_get_port(self);
return self;
+#else
+ g_return_val_if_reached(NULL);
+#endif
}
diff --git a/gtk/phodav b/gtk/phodav
deleted file mode 160000
index 2f53900..0000000
--- a/gtk/phodav
+++ /dev/null
@@ -1 +0,0 @@
-Subproject commit 2f53900e88eab21b5bd023145e0a6cce3b9cfe0c
diff --git a/gtk/spice-channel.c b/gtk/spice-channel.c
index 6f3f689..e460590 100644
--- a/gtk/spice-channel.c
+++ b/gtk/spice-channel.c
@@ -1945,7 +1945,9 @@ gchar *spice_channel_supported_string(void)
#ifdef USE_USBREDIR
spice_channel_type_to_string(SPICE_CHANNEL_USBREDIR),
#endif
+#ifdef USE_PHODAV
spice_channel_type_to_string(SPICE_CHANNEL_WEBDAV),
+#endif
NULL);
}
@@ -2010,10 +2012,12 @@ SpiceChannel *spice_channel_new(SpiceSession *s, int type, int id)
break;
}
#endif
+#ifdef USE_PHODAV
case SPICE_CHANNEL_WEBDAV: {
gtype = SPICE_TYPE_WEBDAV_CHANNEL;
break;
}
+#endif
case SPICE_CHANNEL_PORT:
gtype = SPICE_TYPE_PORT_CHANNEL;
break;
diff --git a/gtk/spice-session-priv.h b/gtk/spice-session-priv.h
index 94535a8..4b2c151 100644
--- a/gtk/spice-session-priv.h
+++ b/gtk/spice-session-priv.h
@@ -18,12 +18,20 @@
#ifndef __SPICE_CLIENT_SESSION_PRIV_H__
#define __SPICE_CLIENT_SESSION_PRIV_H__
+#include "config.h"
+
#include <glib.h>
#include <gio/gio.h>
+
+#ifdef USE_PHODAV
+#include <libphodav/phodav.h>
+#else
+typedef struct _PhodavServer PhodavServer;
+#endif
+
#include "desktop-integration.h"
#include "spice-session.h"
#include "spice-gtk-session.h"
-#include "phodav/libphodav/phodav.h"
#include "spice-channel-cache.h"
#include "decode.h"
--
1.8.5.3
More information about the Spice-devel
mailing list