summaryrefslogtreecommitdiff
path: root/configure.ac
diff options
context:
space:
mode:
authorKrzesimir Nowak <krnowak@openismus.com>2012-12-04 12:51:23 +0100
committerJens Georg <mail@jensge.org>2012-12-05 13:40:02 +0100
commit2e1b32df3c2b5aec1a05f357d58e3ce10d8e2db8 (patch)
treea7351c576fb5a3ecc6347ce4652c4bc214418066 /configure.ac
parentc623f828fe5eb94c0f64b20ebea527167c607b98 (diff)
downloadgupnp-dlna-2e1b32df3c2b5aec1a05f357d58e3ce10d8e2db8.tar.gz
Lower the GLib version dependency to 2.32.
If GLib does not have g_clear_pointer then we provide our own naive implementation for it in config.h. https://bugzilla.gnome.org/show_bug.cgi?id=689612
Diffstat (limited to 'configure.ac')
-rw-r--r--configure.ac36
1 files changed, 35 insertions, 1 deletions
diff --git a/configure.ac b/configure.ac
index 6ce354e..b1e4877 100644
--- a/configure.ac
+++ b/configure.ac
@@ -119,7 +119,7 @@ GUPNP_DLNA_METADATA_BACKEND_CFLAGS="$GUPNP_DLNA_METADATA_BACKEND_CFLAGS -DGUPNP_
AC_SUBST(GUPNP_DLNA_METADATA_BACKEND_CFLAGS)
-PKG_CHECK_MODULES([GLIB], [glib-2.0 >= 2.34])
+PKG_CHECK_MODULES([GLIB], [glib-2.0 >= 2.32])
PKG_CHECK_MODULES([GOBJECT], [gobject-2.0])
PKG_CHECK_MODULES([GMODULE], [gmodule-2.0])
@@ -130,6 +130,40 @@ AC_SUBST(GOBJECT_LIBS)
AC_SUBST(GMODULE_CFLAGS)
AC_SUBST(GMODULE_LIBS)
+# Check for g_clear_pointer
+have_g_clear_pointer='no'
+PKG_CHECK_EXISTS([glib-2.0 >= 2.34],
+ [have_g_clear_pointer='yes'])
+AS_VAR_IF([have_g_clear_pointer], [no],
+ [GUPNP_DLNA_TEMP_CFLAGS="$CFLAGS"
+ CFLAGS="$CFLAGS $GLIB_CFLAGS"
+ GUPNP_DLNA_TEMP_LIBS="$LIBS"
+ LIBS="$LIBS $GLIB_LIBS"
+ AC_LANG([C])
+ AC_LINK_IFELSE([AC_LANG_PROGRAM([[
+ #include <glib.h>
+ ]],
+ [[
+ gchar *test = g_malloc (2);
+ g_clear_pointer (&test, g_free);
+ return (test == NULL)
+ ]])],
+ [have_g_clear_pointer='yes'])
+ LIBS="$GUPNP_DLNA_TEMP_LIBS"
+ CFLAGS="$GUPNP_DLNA_TEMP_CFLAGS"])
+
+AS_VAR_IF([have_g_clear_pointer], [no],
+ [AC_DEFINE([g_clear_pointer(ptr, func)],
+ [\
+ G_STMT_START { \
+ if (ptr != NULL && func != NULL) { \
+ gpointer g_clear_pointer_tmp_var = *ptr; \
+ *ptr = NULL; \
+ func (g_clear_pointer_tmp_var); \
+ } \
+ } G_STMT_END],
+ [Naive g_clear_pointer implementation.])])
+
# Debugging
AC_ARG_ENABLE([debug],
AS_HELP_STRING([--enable-debug], [enable debugging @<:@default=no@:>@]),