1AC_PREREQ([2.63])
2AC_INIT([gupnp-dlna],
3        [0.10.3],
4        [https://bugzilla.gnome.org/enter_bug.cgi?product=gupnp&component=gupnp-dlna],
5        [gupnp-dlna],
6        [http://www.gupnp.org/])
7
8AC_CONFIG_HEADERS([config.h])
9AC_CONFIG_SRCDIR(libgupnp-dlna/gupnp-dlna-profile.h)
10AC_CONFIG_MACRO_DIR([m4])
11AC_CONFIG_AUX_DIR([build-aux])
12
13AM_INIT_AUTOMAKE([1.11 tar-ustar no-dist-gzip dist-xz])
14AM_MAINTAINER_MODE([enable])
15
16AM_SILENT_RULES([yes])
17
18AX_REQUIRE_DEFINED([GTK_DOC_CHECK])
19AX_REQUIRE_DEFINED([GOBJECT_INTROSPECTION_CHECK])
20AX_CHECK_ENABLE_DEBUG([yes])
21
22dnl library versioning
23dnl Increase when changing the API
24GUPNP_DLNA_CURRENT=3
25
26dnl Update when changing implementation of current API,
27dnl reset to 0 when changing CURRENT.  This is the revision of
28dnl current API version
29GUPNP_DLNA_REVISION=0
30
31dnl Increase if API change is ABI compatible, otherwise reset to 0
32GUPNP_DLNA_AGE=0
33
34GUPNP_DLNA_VERSION_INFO="$GUPNP_DLNA_CURRENT:$GUPNP_DLNA_REVISION:$GUPNP_DLNA_AGE"
35AC_SUBST(GUPNP_DLNA_VERSION_INFO)
36
37# Check for programs
38AC_PROG_CC
39AC_HEADER_STDC
40
41AX_IS_RELEASE([git-directory])
42AX_COMPILER_FLAGS([WARN_CFLAGS])
43
44# Initialize libtool
45LT_PREREQ([2.2])
46LT_INIT([win32-dll])
47
48PKG_CHECK_MODULES([LIBXML], [libxml-2.0 >= 2.5.0])
49
50AM_PROG_CC_C_O
51
52AC_ARG_WITH([default-metadata-backend],
53            [AS_HELP_STRING([--with-default-metadata-backend=your_backend],
54                            [set a default metadata backend @<:@default=gstreamer@:>@])])
55
56if test "x$with_default_metadata_backend" = 'x'
57then
58        with_default_metadata_backend='gstreamer'
59fi
60
61if test "x$with_default_metadata_backend" = 'xyes' || test "x$with_default_metadata_backend" = 'xno'
62then
63        AC_MSG_WARN([Dubious default metadata backend name: $with_default_metadata_backend])
64fi
65
66GUPNP_DLNA_METADATA_BACKEND_CFLAGS="$GUPNP_DLNA_METADATA_BACKEND_CFLAGS -DGUPNP_DLNA_DEFAULT_METADATA_BACKEND=\\\"$with_default_metadata_backend\\\""
67
68AC_ARG_ENABLE([gstreamer-metadata-backend],
69              [AS_HELP_STRING([--enable-gstreamer-metadata-backend],
70                              [build a GStreamer metadata backend @<:@default=auto@:>@])],
71                              ,
72                              [enable_gstreamer_metadata_backend=auto])
73
74if test "x$enable_gstreamer_metadata_backend" != 'xno'
75then
76        gstreamer_found='yes'
77        GST_MAJORMINOR=1.0
78        GST_REQ=1.0
79        GSTPBU_REQ=1.0
80
81        PKG_CHECK_MODULES([GST],
82                          [gstreamer-$GST_MAJORMINOR >= $GST_REQ],
83                          ,
84                          [gstreamer_found='no'])
85        PKG_CHECK_MODULES([GST_PBU],
86                          [gstreamer-pbutils-$GST_MAJORMINOR >= $GSTPBU_REQ],
87                          ,
88                          [gstreamer_found='no'])
89
90        if test "x$gstreamer_found" = 'xyes'
91        then
92                AC_SUBST(GST_MAJORMINOR)
93
94                GST_CFLAGS="$GST_CFLAGS -DGST_USE_UNSTABLE_API"
95                AC_SUBST(GST_CFLAGS)
96                enable_gstreamer_metadata_backend='yes'
97        elif test "x$enable_gstreamer_metadata_backend" = 'xyes'
98        then
99                AC_MSG_ERROR([GStreamer $GST_MAJORMINOR not found.])
100        else
101                enable_gstreamer_metadata_backend='no'
102        fi
103fi
104
105if test "x$enable_gstreamer_metadata_backend" = 'xyes'
106then
107        AM_CONDITIONAL(GSTREAMER_METADATA_BACKEND_ENABLED, true)
108else
109        AM_CONDITIONAL(GSTREAMER_METADATA_BACKEND_ENABLED, false)
110fi
111
112AC_ARG_ENABLE([legacy-gstreamer-metadata-backend],
113              [AS_HELP_STRING([--enable-legacy-gstreamer-metadata-backend],
114                              [build a GStreamer 0.10 metadata backend @<:@default=no@:>@])],
115                              ,
116                              [enable_legacy_gstreamer_metadata_backend=no])
117
118if test "x$enable_legacy_gstreamer_metadata_backend" != 'xno'
119then
120        gstreamer_found='yes'
121        GST_LEGACY_MAJORMINOR=0.10
122        GST_LEGACY_REQ=0.10.36
123        GSTPBU_LEGACY_REQ=0.10.36
124
125        PKG_CHECK_MODULES([GST_LEGACY],
126                          [gstreamer-$GST_LEGACY_MAJORMINOR >= $GST_LEGACY_REQ],
127                          ,
128                          [gstreamer_found='no'])
129        PKG_CHECK_MODULES([GST_PBU_LEGACY],
130                          [gstreamer-pbutils-$GST_LEGACY_MAJORMINOR >= $GSTPBU_LEGACY_REQ],
131                          ,
132                          [gstreamer_found='no'])
133
134        if test "x$gstreamer_found" = 'xyes'
135        then
136                AC_SUBST(GST_LEGACY_MAJORMINOR)
137                enable_legacy_gstreamer_metadata_backend='yes'
138        elif test "x$enable_legacy_gstreamer_metadata_backend" = 'xyes'
139        then
140                AC_MSG_ERROR([GStreamer $GST_LEGACY_MAJORMINOR not found.])
141        else
142                enable_legacy_gstreamer_metadata_backend='no'
143        fi
144fi
145
146if test "x$enable_legacy_gstreamer_metadata_backend" = 'xyes'
147then
148        AM_CONDITIONAL(GSTREAMER_LEGACY_METADATA_BACKEND_ENABLED, true)
149else
150        AM_CONDITIONAL(GSTREAMER_LEGACY_METADATA_BACKEND_ENABLED, false)
151fi
152
153AC_ARG_WITH([default-metadata-backend-dir],
154            [AS_HELP_STRING([--with-default-metadata-backend-dir=your_directory],
155                            [set a default metadata backend directory @<:@default=$libdir/$PACKAGE_NAME@:>@])])
156
157if test "x$with_default_metadata_backend_dir" = 'x'
158then
159        with_default_metadata_backend_dir="$libdir/$PACKAGE_NAME"
160fi
161
162if test "x$with_default_metadata_backend_dir" = 'xyes' || test "x$with_default_metadata_backend_dir" = 'xno'
163then
164        AC_MSG_WARN([Dubious default metadata backend directory: $with_default_metadata_backend_dir])
165fi
166
167AC_SUBST(METADATA_DIRECTORY, $with_default_metadata_backend_dir)
168
169GUPNP_DLNA_METADATA_BACKEND_CFLAGS="$GUPNP_DLNA_METADATA_BACKEND_CFLAGS -DGUPNP_DLNA_DEFAULT_METADATA_BACKEND_DIR=\\\"$with_default_metadata_backend_dir\\\""
170
171AC_SUBST(GUPNP_DLNA_METADATA_BACKEND_CFLAGS)
172
173PKG_CHECK_MODULES([GLIB], [glib-2.0 >= 2.32])
174PKG_CHECK_MODULES([GOBJECT], [gobject-2.0])
175PKG_CHECK_MODULES([GMODULE], [gmodule-2.0])
176
177# Check for g_clear_pointer
178have_g_clear_pointer='no'
179PKG_CHECK_EXISTS([glib-2.0 >= 2.34],
180                 [have_g_clear_pointer='yes'])
181AS_VAR_IF([have_g_clear_pointer], [no],
182          [AC_MSG_CHECKING([for g_clear_pointer])
183           GUPNP_DLNA_TEMP_CFLAGS="$CFLAGS"
184           CFLAGS="$CFLAGS $GLIB_CFLAGS"
185           GUPNP_DLNA_TEMP_LIBS="$LIBS"
186           LIBS="$LIBS $GLIB_LIBS"
187           AC_LANG([C])
188           AC_LINK_IFELSE([AC_LANG_PROGRAM([[
189                                             #include <glib.h>
190                                           ]],
191                                           [[
192                                             gchar *test = g_malloc (2);
193                                             g_clear_pointer (&test, g_free);
194                                             return (test == NULL)
195                                           ]])],
196                          [have_g_clear_pointer='yes'])
197          LIBS="$GUPNP_DLNA_TEMP_LIBS"
198          CFLAGS="$GUPNP_DLNA_TEMP_CFLAGS"
199          AC_MSG_RESULT([$have_g_clear_pointer])])
200
201AS_VAR_IF([have_g_clear_pointer], [no],
202          [AC_DEFINE([g_clear_pointer(ptr, func)],
203                     [\
204                      G_STMT_START { \
205                        if (ptr != NULL && func != NULL) { \
206                          gpointer g_clear_pointer_tmp_var = *ptr; \
207                          *ptr = NULL; \
208                          func (g_clear_pointer_tmp_var); \
209                        } \
210                      } G_STMT_END],
211                     [Naive g_clear_pointer implementation.])])
212
213# Debugging
214AC_ARG_ENABLE([debug],
215              AS_HELP_STRING([--enable-debug], [enable debugging @<:@default=no@:>@]),
216              ,
217              [enable_debug=no])
218if test "x$enable_debug" = "xyes"; then
219        CFLAGS="$CFLAGS -g -Wall"
220fi
221
222GOBJECT_INTROSPECTION_CHECK([0.6.4])
223
224# vapigen
225have_vapigen=no
226AS_IF([test "x$found_introspection" = "xyes"],
227      [
228       dnl output of g-i >= 1.36.0 needs vapigen >= 0.20 to process
229       AC_MSG_CHECKING([whether G-I is 1.36 or newer])
230       VAPIGEN_MIN_VERSION=0.18
231       AS_IF([pkg-config --atleast-version=1.36.0 gobject-introspection-1.0],
232             [
233              AC_MSG_RESULT([yes])
234              VAPIGEN_MIN_VERSION=0.20
235             ],[AC_MSG_RESULT([no])]
236       )
237       GUPNP_PROG_VAPIGEN([$VAPIGEN_MIN_VERSION])
238      ]
239)
240AS_IF([test "x$VAPIGEN" != "x"], [have_vapigen=yes])
241AM_CONDITIONAL([HAVE_VAPIGEN], [test "x$VAPIGEN" != "x"])
242
243GTK_DOC_CHECK([1.11],[--flavour no-tmpl])
244# for fixxref
245GLIB_PREFIX="`$PKG_CONFIG --variable=prefix glib-2.0`"
246AC_SUBST(GLIB_PREFIX)
247
248dnl xmllint for schema validation
249AC_PATH_PROG([XMLLINT],[xmllint])
250AM_CONDITIONAL([HAVE_XMLLINT], [test "x$XMLLINT" != "x"])
251
252AC_CONFIG_FILES([
253Makefile
254libgupnp-dlna/Makefile
255tools/Makefile
256tests/Makefile
257data/Makefile
258gupnp-dlna-2.0.pc
259gupnp-dlna-metadata-2.0.pc
260gupnp-dlna-gst-2.0.pc
261gupnp-dlna-gst-legacy-2.0.pc
262doc/Makefile
263doc/version.xml
264doc/gupnp-dlna/Makefile
265doc/gupnp-dlna-metadata/Makefile
266doc/gupnp-dlna-gst/Makefile
267vala/Makefile
268])
269AC_CONFIG_FILES([tests/test-discoverer.sh],
270                [chmod a+x tests/test-discoverer.sh])
271AC_OUTPUT
272
273echo
274echo 'Configuration status:'
275echo
276echo "GObject-Introspection:                   $found_introspection"
277echo "VALA bindings:                           $have_vapigen"
278echo "Default metadata backend:                $with_default_metadata_backend"
279echo "Default metadata backend directory:      $with_default_metadata_backend_dir"
280echo "Build GStreamer metadata backend:        $enable_gstreamer_metadata_backend"
281echo "Build legacy GStreamer metadata backend: $enable_legacy_gstreamer_metadata_backend"
282echo
283