Add apexsink for audio output to Apple AirPort Express Wireless devices. Fixes bug...
[platform/upstream/gstreamer.git] / configure.ac
1 AC_PREREQ(2.52)
2
3 dnl initialize autoconf
4 dnl when going to/from release please set the nano (fourth number) right !
5 dnl releases only do Wall, cvs and prerelease does Werror too
6 AC_INIT(GStreamer Bad Plug-ins, 0.10.8.1,
7     http://bugzilla.gnome.org/enter_bug.cgi?product=GStreamer,
8     gst-plugins-bad)
9
10 AG_GST_INIT
11
12 dnl initialize automake
13 AM_INIT_AUTOMAKE
14
15 dnl define PACKAGE_VERSION_* variables
16 AS_VERSION
17
18 dnl check if this is a release version
19 AS_NANO(GST_CVS="no", GST_CVS="yes")
20
21 dnl can autoconf find the source ?
22 AC_CONFIG_SRCDIR([docs/plugins/gst-plugins-bad-plugins-docs.sgml])
23
24 dnl define the output header for config
25 AM_CONFIG_HEADER([config.h])
26
27 dnl AM_MAINTAINER_MODE only provides the option to configure to enable it
28 AM_MAINTAINER_MODE
29
30 dnl sets host_* variables
31 AC_CANONICAL_HOST
32
33 dnl our libraries and install dirs use major.minor as a version
34 GST_MAJORMINOR=$GST_PLUGINS_BAD_VERSION_MAJOR.$GST_PLUGINS_BAD_VERSION_MINOR
35 dnl we override it here if we need to for the release candidate of new series
36 GST_MAJORMINOR=0.10
37 AC_SUBST(GST_MAJORMINOR)
38
39 dnl FIXME: this macro doesn't actually work;
40 dnl the generated libtool script has no support for the listed tags.
41 dnl So this needs to be fixed first if we want to use this
42 dnl AS_LIBTOOL_TAGS([CXX])
43
44 AC_LIBTOOL_WIN32_DLL
45 AM_PROG_LIBTOOL
46
47 dnl *** required versions of GStreamer stuff ***
48 GST_REQ=0.10.20
49 GSTPB_REQ=0.10.20
50
51 dnl *** autotools stuff ****
52
53 dnl allow for different autotools
54 AS_AUTOTOOLS_ALTERNATE
55
56 dnl Add parameters for aclocal
57 AC_SUBST(ACLOCAL_AMFLAGS, "-I m4 -I common/m4")
58
59 dnl set up gettext
60 dnl the version check needs to stay here because autopoint greps for it
61 AM_GNU_GETTEXT_VERSION([0.11.5])
62 AM_GNU_GETTEXT([external])
63 AG_GST_GETTEXT([gst-plugins-bad-$GST_MAJORMINOR])
64
65 dnl *** check for arguments to configure ***
66
67 AG_GST_ARG_DEBUG
68 AG_GST_ARG_PROFILING
69 AG_GST_ARG_VALGRIND
70 AG_GST_ARG_GCOV
71
72 AG_GST_ARG_EXAMPLES
73
74 AG_GST_ARG_WITH_PKG_CONFIG_PATH
75 AG_GST_ARG_WITH_PACKAGE_NAME
76 AG_GST_ARG_WITH_PACKAGE_ORIGIN
77
78 AG_GST_ARG_WITH_PLUGINS
79
80 AG_GST_ARG_ENABLE_EXTERNAL
81
82 AG_GST_ARG_ENABLE_EXPERIMENTAL
83
84 dnl *** checks for platform ***
85
86 dnl * hardware/architecture *
87
88 dnl common/m4/gst-arch.m4
89 dnl check CPU type
90 AG_GST_ARCH
91
92 dnl Determine endianness
93 AC_C_BIGENDIAN
94
95 dnl *** checks for programs ***
96
97 dnl find a compiler
98 AC_PROG_CC
99
100 dnl determine c++ compiler
101 AC_PROG_CXX
102 dnl determine if c++ is available on this system
103 AC_CHECK_PROG(HAVE_CXX, $CXX, yes, no)
104
105 AS_PROG_OBJC
106
107 dnl check if the compiler supports '-c' and '-o' options
108 AM_PROG_CC_C_O
109
110 dnl check if the compiler supports do while(0) macros
111 AG_GST_CHECK_DOWHILE_MACROS
112
113 AC_PATH_PROG(VALGRIND_PATH, valgrind, no)
114 AM_CONDITIONAL(HAVE_VALGRIND, test ! "x$VALGRIND_PATH" = "xno")
115
116 dnl check for documentation tools
117 GTK_DOC_CHECK([1.3])
118 AS_PATH_PYTHON([2.1])
119 AG_GST_PLUGIN_DOCS([1.3],[2.1])
120
121 dnl *** checks for libraries ***
122
123 dnl check for libm, for sin() etc.
124 AC_CHECK_LIBM
125 AC_SUBST(LIBM)
126
127 dnl *** checks for header files ***
128
129 AC_CHECK_HEADERS([unistd.h], HAVE_UNISTD_H=yes)
130 AM_CONDITIONAL(HAVE_UNISTD_H, test "x$HAVE_UNISTD_H" = "xyes")
131
132 if test "x$HAVE_UNISTD_H" != "xyes"; then
133   GST_PLUGINS_SELECTED=`echo $GST_PLUGINS_SELECTED | $SED -e s/festival//`
134 fi
135
136 dnl used by ext/dts
137 AX_CREATE_STDINT_H
138
139 dnl *** checks for types/defines ***
140
141 dnl *** checks for structures ***
142
143 dnl *** checks for compiler characteristics ***
144 dnl check if we have GCC inline-asm
145 AS_GCC_INLINE_ASSEMBLY([HAVE_GCC_ASM=yes], [HAVE_GCC_ASM=no])
146 if test x$HAVE_GCC_ASM = xyes ; then
147   AC_DEFINE(HAVE_GCC_ASM, 1,
148     [Define if compiler supports gcc inline assembly])
149 fi
150 AM_CONDITIONAL(HAVE_GCC_ASM, test "x$HAVE_GCC_ASM" = "xyes")
151
152 dnl *** checks for library functions ***
153
154 dnl *** checks for dependency libraries ***
155
156 dnl GLib is required
157 AG_GST_GLIB_CHECK([2.6])
158
159 dnl liboil is required
160 PKG_CHECK_MODULES(LIBOIL, liboil-0.3 >= 0.3.8, HAVE_LIBOIL=yes, HAVE_LIBOIL=no)
161 if test "x$HAVE_LIBOIL" != "xyes"; then
162   AC_ERROR([liboil-0.3.8 or later is required])
163 fi
164
165 dnl checks for gstreamer
166 dnl uninstalled is selected preferentially -- see pkg-config(1)
167 AG_GST_CHECK_GST($GST_MAJORMINOR, [$GST_REQ], yes)
168 AG_GST_CHECK_GST_BASE($GST_MAJORMINOR, [$GST_REQ], yes)
169 AG_GST_CHECK_GST_GDP($GST_MAJORMINOR, [$GST_REQ], yes)
170 AG_GST_CHECK_GST_CHECK($GST_MAJORMINOR, [$GST_REQ], no)
171 AG_GST_CHECK_GST_CONTROLLER($GST_MAJORMINOR, [$GST_REQ], yes)
172 AG_GST_CHECK_GST_PLUGINS_BASE($GST_MAJORMINOR, [$GSTPB_REQ], yes)
173 AM_CONDITIONAL(HAVE_GST_CHECK, test "x$HAVE_GST_CHECK" = "xyes")
174
175 GSTPB_PLUGINS_DIR=`$PKG_CONFIG gstreamer-plugins-base-$GST_MAJORMINOR --variable pluginsdir`
176 AC_SUBST(GSTPB_PLUGINS_DIR)
177 AC_MSG_NOTICE(Using GStreamer Base Plugins in $GSTPB_PLUGINS_DIR)
178
179 dnl Check for documentation xrefs
180 GLIB_PREFIX="`$PKG_CONFIG --variable=prefix glib-2.0`"
181 GST_PREFIX="`$PKG_CONFIG --variable=prefix gstreamer-$GST_MAJORMINOR`"
182 GSTPB_PREFIX="`$PKG_CONFIG --variable=prefix gstreamer-plugins-base-$GST_MAJORMINOR`"
183 AC_SUBST(GLIB_PREFIX)
184 AC_SUBST(GST_PREFIX)
185 AC_SUBST(GSTPB_PREFIX)
186
187 dnl GTK is optional and used in examples
188 HAVE_GTK=NO
189 PKG_CHECK_MODULES(GTK2, gtk+-2.0 >= 2.2.0, HAVE_GTK_22=yes, HAVE_GTK_22=no)
190 if test "x$HAVE_GTK_22" = "xyes"; then
191   HAVE_GTK=yes
192   GTK_VERSION=`$PKG_CONFIG --variable=gtk_binary_version gtk+-2.0`
193   AC_SUBST(GTK_VERSION)
194   GTK_PREFIX=`$PKG_CONFIG --variable=prefix gdk-pixbuf-2.0`
195   AC_SUBST(GTK_BASE_DIR)
196   GDK_PIXBUF_LIBDIR=`$PKG_CONFIG --variable=libdir gdk-pixbuf-2.0`
197   GDK_PIXBUF_PREFIXDIR=`$PKG_CONFIG --variable=prefix gdk-pixbuf-2.0`
198   AC_SUBST(GTK_BASE_DIR)
199 else
200   PKG_CHECK_MODULES(GTK2, gtk+-2.0, HAVE_GTK_20=yes, HAVE_GTK_20=no)
201 fi
202 if test "x$HAVE_GTK_20" = "xyes"; then
203   HAVE_GTK=yes
204 fi
205 GTK_CFLAGS=$GTK2_CFLAGS
206 GTK_LIBS=$GTK2_LIBS
207 AC_SUBST(GTK_LIBS)
208 AC_SUBST(GTK_CFLAGS)
209 AC_SUBST(HAVE_GTK)
210 AM_CONDITIONAL(HAVE_GTK, test "x$HAVE_GTK" = "xyes")
211
212 dnl libglade is optional and only used in examples
213 HAVE_GLADE=NO
214 PKG_CHECK_MODULES(GLADE, libglade-2.0 >= 2.6.0, HAVE_GLADE=yes, HAVE_GLADE=no)
215 AC_SUBST(GLADE_LIBS)
216 AC_SUBST(GLADE_CFLAGS)
217 AC_SUBST(HAVE_GLADE)
218 AM_CONDITIONAL(HAVE_GLADE, test "x$HAVE_GLADE" = "xyes")
219
220 dnl set license and copyright notice
221 GST_LICENSE="LGPL"
222 AC_DEFINE_UNQUOTED(GST_LICENSE, "$GST_LICENSE", [GStreamer license])
223 AC_SUBST(GST_LICENSE)
224
225 dnl set location of plugin directory
226 AG_GST_SET_PLUGINDIR
227
228 dnl define an ERROR_CFLAGS Makefile variable
229 AG_GST_SET_ERROR_CFLAGS($GST_CVS)
230
231 dnl define an ERROR_CXXFLAGS Makefile variable
232 AG_GST_SET_ERROR_CXXFLAGS($GST_CVS)
233
234 dnl define correct level for debugging messages
235 AG_GST_SET_LEVEL_DEFAULT($GST_CVS)
236
237 dnl *** plug-ins to include ***
238
239 dnl these are all the gst plug-ins, compilable without additional libs
240 AG_GST_CHECK_PLUGIN(aiffparse)
241 AG_GST_CHECK_PLUGIN(app)
242 AG_GST_CHECK_PLUGIN(bayer)
243 AG_GST_CHECK_PLUGIN(cdxaparse)
244 AG_GST_CHECK_PLUGIN(dccp)
245 AG_GST_CHECK_PLUGIN(deinterlace)
246 AG_GST_CHECK_PLUGIN(deinterlace2)
247 AG_GST_CHECK_PLUGIN(dvdspu)
248 AG_GST_CHECK_PLUGIN(festival)
249 AG_GST_CHECK_PLUGIN(filter)
250 AG_GST_CHECK_PLUGIN(flv)
251 AG_GST_CHECK_PLUGIN(freeze)
252 AG_GST_CHECK_PLUGIN(h264parse)
253 AG_GST_CHECK_PLUGIN(librfb)
254 AG_GST_CHECK_PLUGIN(modplug)
255 AG_GST_CHECK_PLUGIN(mpegtsparse)
256 AG_GST_CHECK_PLUGIN(mpeg4videoparse)
257 AG_GST_CHECK_PLUGIN(mpegvideoparse)
258 AG_GST_CHECK_PLUGIN(mve)
259 AG_GST_CHECK_PLUGIN(nsf)
260 AG_GST_CHECK_PLUGIN(nuvdemux)
261 AG_GST_CHECK_PLUGIN(pcapparse)
262 AG_GST_CHECK_PLUGIN(rawparse)
263 AG_GST_CHECK_PLUGIN(real)
264 AG_GST_CHECK_PLUGIN(rtpmanager)
265 AG_GST_CHECK_PLUGIN(sdp)
266 AG_GST_CHECK_PLUGIN(selector)
267 AG_GST_CHECK_PLUGIN(speed)
268 AG_GST_CHECK_PLUGIN(speexresample)
269 AG_GST_CHECK_PLUGIN(subenc)
270 AG_GST_CHECK_PLUGIN(stereo)
271 AG_GST_CHECK_PLUGIN(tta)
272 AG_GST_CHECK_PLUGIN(videosignal)
273 AG_GST_CHECK_PLUGIN(vmnc)
274 AG_GST_CHECK_PLUGIN(y4m)
275
276 dnl *** plug-ins to exclude ***
277
278 dnl see if we can build C++ plug-ins
279 if test "x$HAVE_CXX" != "xyes"; then
280   AC_MSG_WARN([Not compiling plug-ins requiring C++ compiler])
281   AG_GST_DISABLE_PLUGIN(modplug)
282 fi
283
284 dnl real plugin only works on i386 and x86_64 for the time being.
285 if test "x$HAVE_CPU_I386" != "xyes" && test "x$HAVE_CPU_X86_64" != "xyes"; then
286   AC_MSG_WARN([Not building real plugin, only works on 32bit and 64bit x86 platforms])
287   AG_GST_DISABLE_PLUGIN(real)
288 fi
289
290 dnl disable experimental plug-ins
291 if test "x$BUILD_EXPERIMENTAL" != "xyes"; then
292   AG_GST_DISABLE_PLUGIN(deinterlace2)
293 fi
294
295 dnl disable gst plugins we might not be able to build on this
296 dnl platform: librfb (ugly but minimally invasive)
297 dnl FIXME: maybe move to sys, or make work with winsock2
298 AC_CHECK_HEADERS([sys/socket.h], HAVE_SYS_SOCKET_H=yes)
299 AC_CHECK_HEADERS([winsock2.h], HAVE_WINSOCK2_H=yes)
300
301 dnl needed for festival
302 AM_CONDITIONAL(HAVE_WINSOCK2_H, test "x$HAVE_WINSOCK2_H" = "xyes")
303
304 if test "x$HAVE_SYS_SOCKET_H" != "xyes"; then
305   AG_GST_DISABLE_PLUGIN(librfb)
306 fi
307
308 dnl *** sys plug-ins ***
309
310 dnl check for QuickTime
311 translit(dnm, m, l) AM_CONDITIONAL(USE_QUICKTIME, true)
312 AG_GST_CHECK_FEATURE(QUICKTIME, [QuickTime wrapper], qtwrapper, [
313   AC_CHECK_HEADER(QuickTime/Movies.h, HAVE_QUICKTIME="yes", HAVE_QUICKTIME="no")
314 ])
315
316 dnl check for Video CD
317 translit(dnm, m, l) AM_CONDITIONAL(USE_VCD, true)
318 AG_GST_CHECK_FEATURE(VCD, [Video CD], vcdsrc, [
319   AC_CHECK_HEADER(linux/cdrom.h, HAVE_VCD="yes", HAVE_VCD="no")
320 ])
321
322 dnl *** ext plug-ins ***
323 dnl keep this list sorted alphabetically !
324
325 if test "x$BUILD_EXTERNAL" = "xyes"; then
326
327 dnl *** alsa ***
328 translit(dnm, m, l) AM_CONDITIONAL(USE_ALSA, true)
329 AG_GST_CHECK_FEATURE(ALSA, [alsa plug-ins], gstalsa, [
330   PKG_CHECK_MODULES(ALSA, alsa >= 0.9.1, [
331     HAVE_ALSA="yes"
332     AC_SUBST(ALSA_CFLAGS)
333     AC_SUBST(ALSA_LIBS)
334   ], [
335     AM_PATH_ALSA(0.9.1, HAVE_ALSA="yes", HAVE_ALSA="no")
336   ])
337 ])
338
339 dnl *** amrwb ***
340 translit(dnm, m, l) AM_CONDITIONAL(USE_AMRWB, true)
341 AG_GST_CHECK_FEATURE(AMRWB, [amrwb library], amrwb, [
342   AG_GST_CHECK_LIBHEADER(AMRWB, amrwb,
343                         GP3D_IF_decode, ,
344                         amrwb/dec.h,
345                         AMRWB_LIBS="-lamrwb"
346                         AC_SUBST(AMRWB_LIBS))
347 ])
348
349 dnl *** apexsink ***
350 translit(dnm, m, l) AM_CONDITIONAL(USE_APEXSINK, true)
351 AG_GST_CHECK_FEATURE(APEXSINK, [AirPort Express Wireless sink], apexsink, [
352
353   HAVE_APEXSINK="yes"
354   # The big search for OpenSSL
355   # copied from openssh's configure.ac
356   AC_ARG_WITH(ssl-dir,
357           [  --with-ssl-dir=PATH     Specify path to OpenSSL installation ],
358           [
359                   if test "x$withval" != "xno" ; then
360                           tryssldir=$withval
361                   fi
362           ]
363   )
364
365   AC_SEARCH_LIBS(socket, [socket])
366   AC_SEARCH_LIBS(gethostbyname, [nsl])
367
368   saved_LIBS="$LIBS"
369   saved_LDFLAGS="$LDFLAGS"
370   saved_CPPFLAGS="$CPPFLAGS"
371   if test "x$prefix" != "xNONE" ; then
372           tryssldir="$tryssldir $prefix"
373   fi
374   AC_CACHE_CHECK([for OpenSSL directory], ac_cv_openssldir, [
375           for ssldir in $tryssldir "" /usr/local/openssl /usr/lib/openssl /usr/local/ssl /usr/lib/ssl /usr/local /usr/athena /usr/pkg /opt /opt/openssl ; do
376                   CPPFLAGS="$saved_CPPFLAGS"
377                   LDFLAGS="$saved_LDFLAGS"
378                   LIBS="$saved_LIBS -lssl -lcrypto"
379
380                   # Skip directories if they don't exist
381                   if test ! -z "$ssldir" -a ! -d "$ssldir" ; then
382                           continue;
383                   fi
384                   if test ! -z "$ssldir" -a "x$ssldir" != "x/usr"; then
385                           # Try to use $ssldir/lib if it exists, otherwise
386                           # $ssldir
387                           if test -d "$ssldir/lib" ; then
388                                   LDFLAGS="-L$ssldir/lib $saved_LDFLAGS"
389                                   if test ! -z "$need_dash_r" ; then
390                                           LDFLAGS="-R$ssldir/lib $LDFLAGS"
391                                   fi
392                           else
393                                   LDFLAGS="-L$ssldir $saved_LDFLAGS"
394                                   if test ! -z "$need_dash_r" ; then
395                                           LDFLAGS="-R$ssldir $LDFLAGS"
396                                   fi
397                           fi
398                           # Try to use $ssldir/include if it exists, otherwise
399                           # $ssldir
400                           if test -d "$ssldir/include" ; then
401                                   CPPFLAGS="-I$ssldir/include $saved_CPPFLAGS"
402                           else
403                                   CPPFLAGS="-I$ssldir $saved_CPPFLAGS"
404                           fi
405                   fi
406
407                   # Basic test to check for compatible version and correct linking
408                   # *does not* test for RSA - that comes later.
409                   AC_TRY_RUN(
410                           [
411 #include <string.h>
412 #include <openssl/rand.h>
413 int main(void)
414 {
415         char a[2048];
416         memset(a, 0, sizeof(a));
417         RAND_add(a, sizeof(a), sizeof(a));
418         return(RAND_status() <= 0);
419 }
420                           ],
421                           [
422                                   found_crypto=1
423                                   break;
424                           ], []
425                   )
426
427                   if test ! -z "$found_crypto" ; then
428                           break;
429                   fi
430           done
431
432           if test -z "$found_crypto" ; then
433                   HAVE_APEXSINK="no"
434           fi
435           if test -z "$ssldir" ; then
436                   ssldir="(system)"
437           fi
438
439           ac_cv_openssldir=$ssldir
440   ])
441   if (test ! -z "$ac_cv_openssldir" && test "x$ac_cv_openssldir" != "x(system)") ;
442    then
443           dnl Need to recover ssldir - test above runs in subshell
444           ssldir=$ac_cv_openssldir
445           if test ! -z "$ssldir" -a "x$ssldir" != "x/usr"; then
446                   # Try to use $ssldir/lib if it exists, otherwise
447                   # $ssldir
448                   if test -d "$ssldir/lib" ; then
449                           APEXSINK_LIBS="-L$ssldir/lib $saved_LDFLAGS"
450                           if test ! -z "$need_dash_r" ; then
451                                   APEXSINK_LIBS="-R$ssldir/lib $LDFLAGS"
452                           fi
453                   else
454                           APEXSINK_LDFLAGS="-L$ssldir $saved_LDFLAGS"
455                           if test ! -z "$need_dash_r" ; then
456                                   APEXSINK_LIBS="-R$ssldir $LDFLAGS"
457                           fi
458                   fi
459                   # Try to use $ssldir/include if it exists, otherwise
460                   # $ssldir
461                   if test -d "$ssldir/include" ; then
462                           APEXSINK_CFLAGS="-I$ssldir/include $saved_CPPFLAGS"
463                   else
464                           APEXSINK_CFLAGS="-I$ssldir $saved_CPPFLAGS"
465                   fi
466           fi
467   fi
468   APEXSINK_LIBS="$APEXSINK_LIBS $LIBS"
469   LIBS="$saved_LIBS"
470 ])
471
472 dnl *** BZ2 ***
473 translit(dnm, m, l) AM_CONDITIONAL(USE_BZ2, true)
474 AG_GST_CHECK_FEATURE(BZ2, [bz2 library], bz2, [
475   AG_GST_CHECK_LIBHEADER(BZ2, bz2, BZ2_bzCompress, ,bzlib.h, BZ2_LIBS="-lbz2")
476   AC_SUBST(BZ2_LIBS)
477 ])
478
479 #dnl *** cairo ***
480 #translit(dnm, m, l) AM_CONDITIONAL(USE_CAIRO, true)
481 #AG_GST_CHECK_FEATURE(CAIRO, [cairo plug-in], cairo, [
482 #  PKG_CHECK_MODULES(CAIRO, cairo >= 1.0 glitz-glx, HAVE_CAIRO=yes, [
483 #    HAVE_CAIRO=no
484 #    AC_MSG_RESULT(no)
485 #  ])
486 #  AC_SUBST(CAIRO_CFLAGS)
487 #  AC_SUBST(CAIRO_LIBS)
488 #])
489
490 dnl *** cdaudio ***
491 translit(dnm, m, l) AM_CONDITIONAL(USE_CDAUDIO, true)
492 AG_GST_CHECK_FEATURE(CDAUDIO, [cdaudio], cdaudio, [
493   AG_GST_CHECK_CONFIGPROG(CDAUDIO, libcdaudio-config)
494   AC_SUBST(CDAUDIO_CFLAGS)
495   AC_SUBST(CDAUDIO_LIBS)
496 ])
497
498 dnl *** celt ***
499 translit(dnm, m, l) AM_CONDITIONAL(USE_CELT, true)
500 AG_GST_CHECK_FEATURE(CELT, [celt], celt, [
501   PKG_CHECK_MODULES(CELT, celt >= 0.4.0, [
502       HAVE_CELT="yes"], [
503       HAVE_CELT="no"
504       AC_MSG_RESULT(no)
505   ])
506   AC_SUBST(CELT_CFLAGS)
507   AC_SUBST(CELT_LIBS)
508 ])
509
510 dnl *** dc1394  ***
511 translit(dnm, m, l) AM_CONDITIONAL(USE_DC1394, true)
512 AG_GST_CHECK_FEATURE(DC1394, [libdc1394], dc1394, [
513    PKG_CHECK_MODULES(LIBDC1394, libdc1394-2 >= 2.0.0, [
514         if test -z "`pkg-config --modversion libdc1394-2 | grep 2.0.0-rc`"; then
515                 HAVE_DC1394="yes"
516         else
517                 HAVE_DC1394="no"
518                 AC_MSG_RESULT(no)
519         fi
520    ], [
521         HAVE_DC1394="no"
522         AC_MSG_RESULT(no)
523    ])
524    AC_SUBST(LIBDC1394_CFLAGS)
525    AC_SUBST(LIBDC1394_LIBS)
526 ])
527
528
529 dnl **** DirectFB ****
530 translit(dnm, m, l) AM_CONDITIONAL(USE_DIRECTFB, true)
531 AG_GST_CHECK_FEATURE(DIRECTFB, [directfb], dfbvideosink , [
532   PKG_CHECK_MODULES(DIRECTFB, directfb >= 0.9.24, HAVE_DIRECTFB="yes", [
533     HAVE_DIRECTFB="no"
534     AC_MSG_RESULT(no)
535   ])
536 ])
537
538 dnl **** Dirac ****
539 translit(dnm, m, l) AM_CONDITIONAL(USE_DIRAC, true)
540 AG_GST_CHECK_FEATURE(DIRAC, [dirac], dirac, [
541   PKG_CHECK_MODULES(DIRAC, dirac >= 0.10, HAVE_DIRAC="yes", [
542     HAVE_DIRAC="no"
543     AC_MSG_RESULT(no)
544   ])
545 ])
546
547 dnl *** DTS ***
548 translit(dnm, m, l) AM_CONDITIONAL(USE_DTS, true)
549 AG_GST_CHECK_FEATURE(DTS, [dts library], dtsdec, [
550   HAVE_DTS="yes"
551   AG_GST_CHECK_LIBHEADER(DTS, dts_pic, dts_init, -lm, dts.h,
552     DTS_LIBS="-ldts_pic -lm", HAVE_DTS="no")
553   if test $HAVE_DTS = "no"; then
554     AG_GST_CHECK_LIBHEADER(DTS, dca, dca_init, -lm, dts.h,
555       DTS_LIBS="-ldca -lm")
556   fi
557   AC_SUBST(DTS_LIBS)
558 ])
559
560 dnl *** DIVX ***
561 translit(dnm, m, l) AM_CONDITIONAL(USE_DIVX, true)
562 AG_GST_CHECK_FEATURE(DIVX, [divx plugins], divx, [
563   HAVE_DIVX=yes
564   AC_CHECK_HEADER(encore2.h, , [
565     AC_MSG_WARN([Divx4linux encore headers not found])
566     HAVE_DIVX=no
567   ])
568   if [ test x$HAVE_DIVX = xyes ]; then
569     AC_MSG_CHECKING([Checking for valid divx4linux encore version])
570     AC_TRY_COMPILE([
571 #include <encore2.h>
572 #if ENCORE_VERSION != 20021024
573 #error Wrong version of divx encore libraries
574 #endif
575     ], [
576 return 0;
577     ], [
578       HAVE_DIVX=yes
579       AC_MSG_RESULT(yes)
580     ], [
581       HAVE_DIVX=no
582       AC_MSG_RESULT(no)
583       AC_MSG_WARN([Wrong version of divx4linux installed])
584     ])
585   fi
586   if [ test x$HAVE_DIVX = xyes ]; then
587     AC_CHECK_HEADER(decore.h, , [
588       AC_MSG_WARN([Divx4linux decoder headers not found])
589       HAVE_DIVX=no
590     ])
591   fi
592   if [ test x$HAVE_DIVX = xyes ]; then
593     AC_MSG_CHECKING([Checking for valid divx4linux decore version])
594     AC_TRY_COMPILE([
595 #include <decore.h>
596 #if DECORE_VERSION != 20021112
597 #error Wrong version of divx decore libraries
598 #endif
599     ], [
600 return 0;
601     ], [
602       HAVE_DIVX=yes
603       AC_MSG_RESULT(yes)
604     ], [
605       HAVE_DIVX=no
606       AC_MSG_RESULT(no)
607       AC_MSG_WARN([Wrong version of divx4linux installed])
608     ])
609   fi
610   LIBS="-lm"
611   if test x$HAVE_DIVX = xyes; then
612     AC_CHECK_LIB(divxencore, encore, , [
613       AC_MSG_WARN([Divx4linux encore libs not found])
614       HAVE_DIVX=no
615     ])
616   fi
617   if test x$HAVE_DIVX = xyes; then
618     AC_CHECK_LIB(divxdecore, decore, , [
619       AC_MSG_WARN([Divx4linux decore libs not found])
620       HAVE_DIVX=no
621   ])
622   fi
623   if test x$HAVE_DIVX = xyes; then
624     DIVXENC_LIBS="-ldivxencore -lm"
625     DIVXDEC_LIBS="-ldivxdecore -lm"
626     AC_SUBST(DIVXENC_LIBS)
627     AC_SUBST(DIVXDEC_LIBS)
628   fi
629 ])
630
631 dnl *** dvdnav for resindvd ***
632 USE_DVDNAV=$BUILD_EXPERIMENTAL
633 translit(dnm, m, l) AM_CONDITIONAL(USE_DVDNAV, true)
634 AG_GST_CHECK_FEATURE(DVDNAV, [dvdnav library], resindvd, [
635   translit(dnm, m, l) AC_SUBST(DVDNAV_LIBS)
636   translit(dnm, m, l) AC_SUBST(DVDNAV_CFLAGS)
637   AG_GST_CHECK_CONFIGPROG(DVDNAV, dvdnav-config)
638   if test x"$HAVE_DVDNAV" = x"yes"; then
639     dnl check version
640     DVDNAV_VERSION=`dvdnav-config --version|head -n 1|sed 's/^.*) //'|sed 's/ (.*)//'`
641     DVDNAV_MAJOR=`echo $DVDNAV_VERSION | cut -d. -f1 | sed s/[a-zA-Z\-].*//g`
642     DVDNAV_MINOR=`echo $DVDNAV_VERSION | cut -d. -f2 | sed s/[a-zA-Z\-].*//g`
643     DVDNAV_MICRO=`echo $DVDNAV_VERSION | cut -d. -f3 | sed s/[a-zA-Z\-].*//g`
644     if [[ "$DVDNAV_MAJOR" -eq "0" ]] && \
645        [[ "$DVDNAV_MINOR" -lt "1" ]]; then
646       AC_MSG_WARN([libdvdnav >= 0.1.7 is required, you have $DVDNAV_VERSION])
647       HAVE_DVDNAV="no"
648     elif [[ "$DVDNAV_MAJOR" -eq "0" ]] && \
649          [[ "$DVDNAV_MINOR" -eq "1" ]] && \
650          [[ "$DVDNAV_MICRO" -lt "7" ]]; then
651       AC_MSG_WARN([libdvdnav >= 0.1.7 is required, you have $DVDNAV_VERSION])
652       HAVE_DVDNAV="no"
653     elif [[ "$DVDNAV_MAJOR" -eq "0" ]]; then
654       AC_DEFINE(DVDNAV_OLD, 1, [Define if an old libdvdnav is used])      
655     fi
656   fi
657   AS_SCRUB_INCLUDE(DVDNAV_CFLAGS)
658 ])
659
660 dnl *** METADATA ***
661 translit(dnm, m, l) AM_CONDITIONAL(USE_METADATA, true)
662 AG_GST_CHECK_FEATURE(METADATA, [METADATA muxer and demuxer], metadata, [
663   HAVE_METADATA="no"
664   PKG_CHECK_MODULES(EXIF, libexif >= 0.6.16, HAVE_EXIF="yes", [
665     HAVE_EXIF="no"
666   ])
667   PKG_CHECK_MODULES(IPTC, libiptcdata >= 1.0.2, HAVE_IPTC="yes", [
668     HAVE_IPTC="no"
669   ])
670   PKG_CHECK_MODULES(XMP, exempi-2.0, HAVE_XMP="yes", [
671     HAVE_XMP="no"
672   ])
673   PKG_CHECK_MODULES(XMP_1_99_5, exempi-2.0 >= 1.99.5, XMP_CFLAGS="-DXMP_1_99_5 $XMP_CFLAGS", AC_MSG_RESULT(no))
674   if test x$HAVE_EXIF = xyes; then
675     METADATA_CFLAGS="-DHAVE_EXIF $EXIF_CFLAGS $METADATA_CFLAGS"
676     METADATA_LIBS="$EXIF_LIBS $METADATA_LIBS -lm"
677     HAVE_METADATA="yes"
678   fi
679   if test x$HAVE_IPTC = xyes; then
680     METADATA_CFLAGS="-DHAVE_IPTC $IPTC_CFLAGS $METADATA_CFLAGS"
681     METADATA_LIBS="$IPTC_LIBS $METADATA_LIBS"
682     HAVE_METADATA="yes"
683   fi
684   if test x$HAVE_XMP = xyes; then
685     METADATA_CFLAGS="-DHAVE_XMP $XMP_CFLAGS $METADATA_CFLAGS"
686     METADATA_LIBS="$XMP_LIBS $METADATA_LIBS"
687     HAVE_METADATA="yes"
688   fi
689   if test x$HAVE_METADATA = xno; then
690     AC_MSG_WARN(no of metadata libraries (exif, iptc or xmp) found)
691   fi
692   dnl metadata plugin will parse whole chunks anyway
693   HAVE_METADATA="yes"
694   AC_SUBST(METADATA_CFLAGS)
695   AC_SUBST(METADATA_LIBS)
696 ])
697
698 dnl **** Free AAC Encoder (FAAC) ****
699 translit(dnm, m, l) AM_CONDITIONAL(USE_FAAC, true)
700 AG_GST_CHECK_FEATURE(FAAC, [AAC encoder plug-in], faac, [
701   AG_GST_CHECK_LIBHEADER(FAAC, faac, faacEncOpen, -lm, faac.h,
702     FAAC_LIBS="-lfaac -lm")
703   AS_SCRUB_INCLUDE(FAAC_CFLAGS)
704   AC_SUBST(FAAC_LIBS)
705 ])
706
707 dnl **** Free AAC Decoder (FAAD) ****
708 translit(dnm, m, l) AM_CONDITIONAL(USE_FAAD, true)
709 AG_GST_CHECK_FEATURE(FAAD, [AAC decoder plug-in], faad, [
710   HAVE_FAAD="yes"
711   AG_GST_CHECK_LIBHEADER(FAAD, faad, faacDecOpen, -lm, faad.h,
712     FAAD_LIBS="-lfaad -lm", HAVE_FAAD="no")
713   if test $HAVE_FAAD = "no"; then
714     AG_GST_CHECK_LIBHEADER(FAAD, faad, NeAACDecOpen, -lm, neaacdec.h,
715       [ FAAD_LIBS="-lfaad -lm"
716                 AC_DEFINE(FAAD_IS_NEAAC, 1, [Define if AAC is using new api prefix])
717           ],
718           HAVE_FAAD="no",)
719   fi
720   if test $HAVE_FAAD = "yes"; then
721     AC_MSG_CHECKING([Checking for FAAD >= 2.0])
722     AC_TRY_COMPILE([#include <faad.h>], [
723         #if !defined(FAAD2_VERSION) || !defined(FAAD_FMT_DOUBLE)
724         #error Not faad2
725         #else
726         /* Release candidate of 2.0 is not good enough for us. This field
727          * was added only in 2.0 final and does not exist in 2.0-RC3 */
728         faacDecConfiguration conf; conf.dontUpSampleImplicitSBR = 1;
729         #endif
730     ], [
731       HAVE_FAAD="yes"
732       AC_MSG_RESULT(yes)
733     ], [
734       HAVE_FAAD="no"
735       AC_MSG_RESULT(no)
736     ])
737   fi
738   AS_SCRUB_INCLUDE(FAAD_CFLAGS)
739   AC_SUBST(FAAD_LIBS)
740   AC_SUBST(FAAD_IS_NEAAC)
741 ])
742
743 dnl *** fbdev ***
744 translit(dnm, m, l) AM_CONDITIONAL(USE_FBDEV, true)
745 AG_GST_CHECK_FEATURE(FBDEV, [linux framebuffer], fbdevsink, [
746   if test "x$HAVE_FBDEV" != "xyes"; then
747     AC_CHECK_HEADER([linux/fb.h], HAVE_FBDEV=yes, HAVE_FBDEV=no)
748   fi
749 ])
750
751 dnl *** gsm ***
752 translit(dnm, m, l) AM_CONDITIONAL(USE_GSM, true)
753 AG_GST_CHECK_FEATURE(GSM, [GSM library], gsmenc gsmdec, [
754   AG_GST_CHECK_LIBHEADER(GSM, gsm, gsm_create, , gsm.h, GSM_LIBS="-lgsm")
755   if test $HAVE_GSM != "yes"; then
756     AG_GST_CHECK_LIBHEADER(GSM, gsm, gsm_create, , gsm/gsm.h, GSM_LIBS="-lgsm")
757     if test $HAVE_GSM = "yes"; then
758       AC_DEFINE(GSM_HEADER_IN_SUBDIR, 1, [Define if GSM header in gsm/ subdir])
759     fi
760   fi
761   AC_SUBST(GSM_LIBS)
762 ])
763
764 dnl *** ivorbis ***
765 dnl AM_PATH_IVORBIS only takes two options
766 translit(dnm, m, l) AM_CONDITIONAL(USE_IVORBIS, true)
767 AG_GST_CHECK_FEATURE(IVORBIS, [integer vorbis plug-in], ivorbisdec, [
768   IVORBIS_LIBS=
769   IVORBIS_CFLAGS=
770   AC_CHECK_LIB(vorbisidec, vorbis_block_init,
771     [IVORBIS_LIBS=-lvorbisidec
772      HAVE_IVORBIS=yes
773      case $host in
774      arm-*-*)
775        IVORBIS_CFLAGS="-D_ARM_ASSEM_ $IVORBIS_CFLAGS"
776      esac
777     ],
778     HAVE_IVORBIS=no)
779   AC_SUBST(IVORBIS_LIBS)
780   AC_SUBST(IVORBIS_CFLAGS)
781 ])
782
783 dnl *** Jack ***
784 translit(dnm, m, l) AM_CONDITIONAL(USE_JACK, true)
785 AG_GST_CHECK_FEATURE(JACK, Jack, jack, [
786   PKG_CHECK_MODULES(JACK, jack >= 0.99.10, HAVE_JACK="yes", HAVE_JACK="no")
787   AC_SUBST(JACK_CFLAGS)
788   AC_SUBST(JACK_LIBS)
789 ])
790
791 dnl *** ladspa ***
792 translit(dnm, m, l) AM_CONDITIONAL(USE_LADSPA, true)
793 AG_GST_CHECK_FEATURE(LADSPA, [ladspa], ladspa, [
794   AC_CHECK_HEADER(ladspa.h, HAVE_LADSPA="yes", HAVE_LADSPA="no")
795   save_cflags="$CFLAGS"
796   CFLAGS="$CFLAGS -D_GNU_SOURCE"
797   
798   AC_CHECK_LIB(dl, dlopen,
799     LADSPA_LIBS="-ldl",
800     HAVE_LADSPA="no")
801   CFLAGS="$save_cflags"
802 ])
803 AC_SUBST(LADSPA_LIBS)
804
805 dnl *** libmms ***
806 translit(dnm, m, l) AM_CONDITIONAL(USE_LIBMMS, true)
807 AG_GST_CHECK_FEATURE(LIBMMS, [mms protocol library], libmms, [
808   dnl check with pkg-config first
809   PKG_CHECK_MODULES(LIBMMS, libmms >= 0.2, HAVE_LIBMMS="yes", [
810     HAVE_LIBMMS="no"
811     AC_MSG_RESULT(no)
812   ])
813 ])
814 AC_SUBST(LIBMMS_LIBS)
815
816 dnl *** mjpegtools version info ***
817 dnl some may prefer older version (given quirks above)
818 dnl hm, no version info seems available within mjpegtools headers
819 dnl and API really moves along
820 echo
821 PKG_CHECK_EXISTS(mjpegtools >= 1.6.1.93 mjpegtools < 1.8.0, [
822   mjpegtools_api=10601
823 ], [
824   PKG_CHECK_EXISTS(mjpegtools >= 1.8.0 mjpegtools < 1.9.0, [
825     mjpegtools_api=10800
826   ], [
827     PKG_CHECK_MODULES(MJPEG, mjpegtools >= 1.9.0, [
828       dnl logging API changed in release candidates
829       OLD_CFLAGS="$CFLAGS"
830       OLD_LIBS="$LIBS"
831       CFLAGS="$MJPEG_CFLAGS"
832       LIBS="$LIBS $MJPEG_LIBS -lmjpegutils -lm -lpthread"
833       AC_CHECK_FUNC(mjpeg_loglev_t, [
834         mjpegtools_api=10903
835         ], [
836         mjpegtools_api=10900
837         ])
838       CFLAGS="$OLD_CFLAGS"
839       LIBS="$OLD_LIBS"
840     ], [
841       mjpegtools_api=0
842     ])
843   ])
844 ])
845 AC_DEFINE_UNQUOTED(GST_MJPEGTOOLS_API, $mjpegtools_api,
846   [mjpegtools API evolution])
847
848 dnl *** mpeg2enc ***
849 translit(dnm, m, l) AM_CONDITIONAL(USE_MPEG2ENC, true)
850 AG_GST_CHECK_FEATURE(MPEG2ENC, [mpeg2enc], mpeg2enc, [
851   HAVE_MPEG2ENC="no"
852   dnl we require a c++ compiler for this one
853   if [ test x$HAVE_CXX = xyes ]; then
854     dnl libmpeg2enc was first included in mjpegtools-1.6.2-rc3 (1.6.1.92)
855     dnl since many distros include mjpegtools specifically without mplex
856     dnl and mpeg2enc, we check for mpeg2enc on its own, too.
857     PKG_CHECK_MODULES(MPEG2ENC, mjpegtools >= 1.6.1.93, [
858       dnl HACK because mpeg2enc 1.8.0 header files have a spurious 'include config.h'
859       touch config.h
860       dnl switch over to c++ to test things
861       AC_LANG_CPLUSPLUS
862       OLD_CPPFLAGS="$CPPFLAGS"
863       dnl HACK as above
864       CPPFLAGS_GOOD="$CPPFLAGS $MPEG2ENC_CFLAGS"
865       CPPFLAGS="$CPPFLAGS_GOOD -I."
866       dnl check headers
867       mpeg2enc_headers_ok=no
868       AC_CHECK_HEADER([mpeg2encoder.hh], [
869         MPEG2ENC_LIBS="$MPEG2ENC_LIBS -lmpeg2encpp -lm -lpthread"
870         OLD_LIBS="$LIBS"
871         LIBS="$LIBS $MPEG2ENC_LIBS"
872         AC_MSG_CHECKING([for valid mpeg2enc objects])
873         AC_TRY_RUN([
874           #include <mpeg2encoder.hh>
875           #include <mpeg2encoptions.hh>
876
877           int
878           main (int   argc,
879                 char *argv[])
880           {
881             MPEG2EncOptions *options = new MPEG2EncOptions ();
882             MPEG2Encoder *encoder = new MPEG2Encoder (*options);
883             return 0;
884           }
885         ],[
886           AC_MSG_RESULT(yes)
887           dnl so far so good, let's check more things:
888           dnl mjpegtools-1.8.0 does not install the required
889           dnl mpeg2syntaxcodes.h header by default, and a new release
890           dnl is not in sight, so check for this oversight in case
891           dnl distros or folks have fixed this themselves
892           if test "$mjpegtools_api" -ge "10800"; then
893             AC_CHECK_HEADER([mpeg2syntaxcodes.h], [
894                 mpeg2enc_headers_ok=yes
895               ], [
896                 mpeg2enc_headers_ok=no
897               ])
898           else
899             mpeg2enc_headers_ok=yes
900           fi
901           if test "x$mpeg2enc_headers_ok" = "xyes"; then
902             HAVE_MPEG2ENC="yes"
903           fi
904           CPP_FLAGS="$CPPFLAGS_GOOD"
905           AC_SUBST(MPEG2ENC_CFLAGS)
906           AC_SUBST(MPEG2ENC_LIBS)
907         ], [
908           AC_MSG_RESULT(no)
909         ])
910         LIBS="$OLD_LIBS"
911       ])
912
913       CPPFLAGS="$OLD_CPPFLAGS"
914       AC_LANG_C
915     ], [
916       HAVE_MPEG2ENC="no"
917     ])
918   fi
919 ])
920
921 dnl *** mplex ***
922 translit(dnm, m, l) AM_CONDITIONAL(USE_MPLEX, true)
923 AG_GST_CHECK_FEATURE(MPLEX, [mplex], mplex, [
924   HAVE_MPLEX="no"
925   dnl we require a c++ compiler for this one
926   if [ test x$HAVE_CXX = xyes ]; then
927     dnl libmplex was first included in mjpegtools-1.6.2-rc4 (1.6.1.93)
928     dnl since many distros include mjpegtools specifically without mplex
929     dnl and mpeg2enc, we check for mplex on its own, too.
930     dnl libmplex < 1.9rc? has fuzzy ABI, valgrind and other problems
931     PKG_CHECK_MODULES(MPLEX, mjpegtools >= 1.9.0, [
932       dnl switch over to c++ to test things
933       AC_LANG_CPLUSPLUS
934       OLD_CPPFLAGS="$CPPFLAGS"
935       CPPFLAGS="$CPPFLAGS $MPLEX_CFLAGS"
936       AC_CHECK_HEADER(interact.hpp, [
937         MPLEX_LIBS="$MPLEX_LIBS -lmplex2 -lm"
938         OLD_LIBS="$LIBS"
939         LIBS="$LIBS $MPLEX_LIBS"
940         dnl older libmplex uses off_t SegmentSize (), which leads to fuzzy ABI;
941         dnl don't want this here
942         AC_MSG_CHECKING([for valid mplex objects])
943         AC_TRY_RUN([
944
945 #include <interact.hpp>
946 #include <outputstrm.hpp>
947 #include <multiplexor.hpp>
948 int
949 main (int   argc,
950       char *argv[])
951 {
952   class TestOutputStream : public OutputStream {
953   public:
954     TestOutputStream () : OutputStream () { }
955     void Write (uint8_t *a, unsigned int b) { }
956     void NextSegment () { }
957     uint64_t SegmentSize () { }
958     void Close () { }
959     int Open () { }
960 };
961   MultiplexJob *job = new MultiplexJob ();
962   vector<IBitStream *> inputs;
963   job->SetupInputStreams (inputs);
964   TestOutputStream *out = new TestOutputStream ();
965   Multiplexor *mux = new Multiplexor(*job, *out, NULL);
966   return 0;
967 }
968         ],[
969           HAVE_MPLEX="yes"
970           AC_SUBST(MPLEX_CFLAGS)
971           AC_SUBST(MPLEX_LIBS)
972           AC_MSG_RESULT(yes)
973         ], AC_MSG_RESULT(no))
974         LIBS="$OLD_LIBS"
975       ])
976       CPPFLAGS="$OLD_CPPFLAGS"
977       AC_LANG_C
978     ], HAVE_MPLEX="no")
979   fi
980 ])
981
982 dnl *** musepack ***
983 translit(dnm, m, l) AM_CONDITIONAL(USE_MUSEPACK, true)
984 AG_GST_CHECK_FEATURE(MUSEPACK, [musepackdec], musepack, [
985   AC_CHECK_HEADER([mpc/mpcdec.h], [
986     HAVE_MUSEPACK="yes"
987     MUSEPACK_LIBS="-lmpcdec"
988     AC_SUBST(MUSEPACK_LIBS)
989     ], [AC_CHECK_HEADER([mpcdec/mpcdec.h], [
990       HAVE_MUSEPACK="yes"
991       MUSEPACK_LIBS="-lmpcdec"
992       AC_DEFINE(MPC_IS_OLD_API, 1, [Define if the old MusePack API is used])
993       AC_SUBST(MUSEPACK_LIBS)
994     ], [HAVE_MUSEPACK="no"])])
995 ])
996
997 dnl *** musicbrainz ***
998 translit(dnm, m, l) AM_CONDITIONAL(USE_MUSICBRAINZ, true)
999 AG_GST_CHECK_FEATURE(MUSICBRAINZ, [musicbrainz tag generation], musicbrainz, [
1000   PKG_CHECK_MODULES(MUSICBRAINZ, libmusicbrainz >= 2.1.0, HAVE_MUSICBRAINZ="yes", HAVE_MUSICBRAINZ="no")
1001   AC_SUBST(MUSICBRAINZ_CFLAGS)
1002   AC_SUBST(MUSICBRAINZ_LIBS)
1003 ])
1004
1005 dnl *** MythTV ***
1006 translit(dnm, m, l) AM_CONDITIONAL(USE_MYTHTV, true)
1007 AG_GST_CHECK_FEATURE(MYTHTV, [MythTV client plugins], mythtvsrc, [
1008   PKG_CHECK_MODULES(GMYTH, gmyth >= 0.4 gmyth <= 0.7.99, HAVE_MYTHTV="yes", [
1009     HAVE_MYTHTV="no"
1010     AC_MSG_RESULT(no)
1011   ])
1012   AC_SUBST(GMYTH_CFLAGS)
1013   AC_SUBST(GMYTH_LIBS)
1014 ])
1015
1016 dnl *** nas ***
1017 translit(dnm, m, l) AM_CONDITIONAL(USE_NAS, true)
1018 AG_GST_CHECK_FEATURE(NAS, [nas plug-in], nassink, [
1019   HAVE_NAS="no"
1020   AG_GST_CHECK_X
1021   if test "x$HAVE_X" = "xyes"; then
1022     save_cppflags=$CFLAGS
1023     CPPFLAGS="$CPPFLAGS $X_CFLAGS"
1024     AG_GST_CHECK_LIBHEADER(NAS, audio, AuOpenServer, $X_LIBS, audio/audiolib.h,
1025       NAS_LIBS="$X_LIBS -laudio" NAS_CFLAGS="$X_CFLAGS")
1026     CPPFLAGS="$save_cppflags"
1027   fi
1028   AC_SUBST(NAS_CFLAGS)
1029   AC_SUBST(NAS_LIBS)
1030 ])
1031
1032 dnl *** neon ***
1033 translit(dnm, m, l) AM_CONDITIONAL(USE_NEON, true)
1034 AG_GST_CHECK_FEATURE(NEON, [neon http client plugins], neonhttpsrc, [
1035   PKG_CHECK_MODULES(NEON, neon >= 0.26.0  neon <= 0.28.99, HAVE_NEON="yes", [
1036     HAVE_NEON="no"
1037     AC_MSG_RESULT(no)
1038   ])
1039   AC_SUBST(NEON_CFLAGS)
1040   AC_SUBST(NEON_LIBS)
1041 ])
1042
1043 dnl *** ofa ***
1044 translit(dnm, m, l) AM_CONDITIONAL(USE_OFA, true)
1045 AG_GST_CHECK_FEATURE(OFA, [ofa plugins], ofa, [
1046   PKG_CHECK_MODULES(OFA, libofa >= 0.9.3, HAVE_OFA="yes", [
1047     HAVE_OFA="no"
1048     AC_MSG_RESULT(no)
1049   ])
1050   AC_SUBST(OFA_CFLAGS)
1051   AC_SUBST(OFA_LIBS)
1052 ])
1053
1054 dnl *** timidity ***
1055 translit(dnm, m, l) AM_CONDITIONAL(USE_TIMIDITY, true)
1056 AG_GST_CHECK_FEATURE(TIMIDITY, [timidity midi soft synth plugin], timidity, [
1057   PKG_CHECK_MODULES(TIMIDITY, libtimidity, [
1058     HAVE_TIMIDITY="yes",
1059         AC_MSG_CHECKING([for timidity.cfg])
1060         timidity_cfg=""
1061         if test -r /etc/timidity.cfg; then
1062           timidity_cfg=/etc/timidity.cfg
1063         elif test -r /etc/timidity/timidity.cfg; then
1064           timidity_cfg=/etc/timidity/timidity.cfg
1065         elif test -r /usr/share/timidity/timidity.cfg; then
1066           timidity_cfg=/usr/share/timidity/timidity.cfg
1067         elif test -r /usr/local/share/timidity/timidity.cfg; then
1068           timidity_cfg=/usr/local/share/timidity/timidity.cfg
1069         fi
1070         if test "x$timidity_cfg" != "x"; then
1071           AC_MSG_RESULT($timidity_cfg)
1072       AC_DEFINE_UNQUOTED(TIMIDITY_CFG, "$timidity_cfg", [Define location of timidity.cfg])
1073         else
1074           AC_MSG_RESULT([not found])
1075         fi
1076   ], [
1077     HAVE_TIMIDITY="no"
1078     AC_MSG_RESULT(no)
1079   ])
1080   AC_SUBST(TIMIDITY_CFLAGS)
1081   AC_SUBST(TIMIDITY_LIBS)
1082 ])
1083
1084 dnl *** wildmidi ***
1085 translit(dnm, m, l) AM_CONDITIONAL(USE_WILDMIDI, true)
1086 AG_GST_CHECK_FEATURE(WILDMIDI, [wildmidi midi soft synth plugin], wildmidi, [
1087   AC_CHECK_HEADER([wildmidi_lib.h],HAVE_WILDMIDI=yes, HAVE_WILDMIDI=no)
1088   if test "x$HAVE_WILDMIDI" = "xyes"; then
1089          WILDMIDI_CFLAGS=
1090          WILDMIDI_LIBS=-lWildMidi
1091          AC_MSG_NOTICE(compiling gstWildMidi)
1092   else
1093          WILDMIDI_CFLAGS=
1094          WILDMIDI_LIBS=
1095          AC_MSG_WARN(no WildMidi library found (libWildMidi))
1096   fi
1097   AC_SUBST(WILDMIDI_CFLAGS)
1098   AC_SUBST(WILDMIDI_LIBS)
1099 ])
1100
1101 dnl *** twolame ***
1102 translit(dnm, m, l) AM_CONDITIONAL(USE_TWOLAME, true)
1103 AG_GST_CHECK_FEATURE(TWOLAME, [twolame], twolame, [
1104   PKG_CHECK_MODULES(TWOLAME, twolame >= 0.3.0, [
1105       HAVE_TWOLAME="yes"], [
1106       HAVE_TWOLAME="no"
1107       AC_MSG_RESULT(no)
1108   ])
1109   AC_SUBST(TWOLAME_CFLAGS)
1110   AC_SUBST(TWOLAME_LIBS)
1111 ])
1112
1113 dnl *** SDL ***
1114 translit(dnm, m, l) AM_CONDITIONAL(USE_SDL, true)
1115 AG_GST_CHECK_FEATURE(SDL, [SDL plug-in], sdlvideosink sdlaudiosink, [
1116     AM_PATH_SDL(, HAVE_SDL=yes, HAVE_SDL=no)
1117 ])
1118
1119 dnl *** sndfile ***
1120 translit(dnm, m, l) AM_CONDITIONAL(USE_SNDFILE, true)
1121 AG_GST_CHECK_FEATURE(SNDFILE, [sndfile plug-in], sfsrc sfsink, [
1122   PKG_CHECK_MODULES(SNDFILE, sndfile >= 1.0.16, HAVE_SNDFILE="yes", HAVE_SNDFILE="no")
1123   AC_SUBST(SNDFILE_CFLAGS)
1124   AC_SUBST(SNDFILE_LIBS)
1125 ])
1126
1127 dnl *** soundtouch ***
1128 translit(dnm, m, l) AM_CONDITIONAL(USE_SOUNDTOUCH, true)
1129 AG_GST_CHECK_FEATURE(SOUNDTOUCH, [soundtouch plug-in], soundtouch, [
1130   PKG_CHECK_MODULES(SOUNDTOUCH, soundtouch-1.0,
1131     HAVE_SOUNDTOUCH=yes, 
1132     [PKG_CHECK_MODULES(SOUNDTOUCH, libSoundTouch,
1133       HAVE_SOUNDTOUCH=yes,
1134       HAVE_SOUNDTOUCH=no)])
1135   AC_SUBST(SOUNDTOUCH_CFLAGS)
1136   AC_SUBST(SOUNDTOUCH_LIBS)
1137   if test "x$HAVE_CXX" != "xyes"; then
1138     USE_SOUNDTOUCH=false
1139     AC_MSG_NOTICE([Not building soundtouch plugin: no C++ compiler found])
1140   fi
1141 ])
1142
1143 dnl *** spc ***
1144 translit(dnm, m, l) AM_CONDITIONAL(USE_SPC, true)
1145 AG_GST_CHECK_FEATURE(SPC, [spc decoder], spc, [
1146   AC_CHECK_HEADER(openspc.h, [
1147     AC_CHECK_LIB(openspc, OSPC_Init, [
1148       SPC_LIBS="-lopenspc"
1149       AC_SUBST(SPC_LIBS)
1150       HAVE_SPC=yes
1151     ], [
1152       HAVE_SPC=no
1153     ])
1154   ], [
1155     HAVE_SPC=no
1156   ])
1157 ])
1158
1159 dnl *** swfdec ***
1160 translit(dnm, m, l) AM_CONDITIONAL(USE_SWFDEC, true)
1161 AG_GST_CHECK_FEATURE(SWFDEC, [swfdec plug-in], swfdec, [
1162   PKG_CHECK_MODULES(SWFDEC, swfdec-0.3 >= 0.3.6, HAVE_SWFDEC=yes, [
1163     HAVE_SWFDEC=no
1164     AC_MSG_RESULT(no)
1165   ])
1166   AC_SUBST(SWFDEC_CFLAGS)
1167   AC_SUBST(SWFDEC_LIBS)
1168 ])
1169
1170 dnl *** theora ***
1171 translit(dnm, m, l) AM_CONDITIONAL(USE_THEORADEC, true)
1172 AG_GST_CHECK_FEATURE(THEORADEC, [ogg theora codec], theoraexpdec, [
1173   PKG_CHECK_MODULES(THEORADEC, theoradec, HAVE_THEORADEC="yes", [
1174     HAVE_THEORADEC="no"
1175     AC_MSG_RESULT(no)
1176   ])
1177   AC_SUBST(THEORADEC_LIBS)
1178   AC_SUBST(THEORADEC_CFLAGS)
1179 ])
1180
1181 dnl *** x264 (MPEG-4 part 10/h.264/AVC encoder) ***
1182 translit(dnm, m, l) AM_CONDITIONAL(USE_X264, true)
1183 AG_GST_CHECK_FEATURE(X264, [x264 plug-in], x264, [
1184   AG_GST_CHECK_LIBHEADER(X264, x264, x264_nal_encode, -lm, x264.h,
1185       AC_MSG_CHECKING([for uptodate x264 API version])
1186       dnl _stdint not yet generated, so no compiling
1187       AC_TRY_CPP([
1188         #include <x264.h>
1189         #if X264_BUILD < 55
1190         #error "x264 build too old"
1191         #endif
1192       ], [
1193         AC_MSG_RESULT(yes)
1194         X264_LIBS="$LDFLAGS -lx264 -lm"
1195         X264_CFLAGS="$CFLAGS"
1196         AC_SUBST(X264_LIBS)
1197         AC_SUBST(X264_CFLAGS)
1198       ], [
1199         AC_MSG_RESULT(no)
1200         HAVE_X264=no
1201       ]))
1202 ])
1203
1204 dnl *** XVID ***
1205 translit(dnm, m, l) AM_CONDITIONAL(USE_XVID, true)
1206 AG_GST_CHECK_FEATURE(XVID, [xvid plugins], xvid, [
1207   HAVE_XVID=no
1208   AC_CHECK_HEADER(xvid.h, [
1209     OLD_LIBS="$LIBS"
1210     LIBS="-lm"
1211     AC_CHECK_LIB(xvidcore, xvid_encore, [
1212       AC_CHECK_LIB(xvidcore, xvid_decore, [
1213         AC_CHECK_LIB(xvidcore, xvid_global, [
1214           AC_MSG_CHECKING([for uptodate XviD API version])
1215           AC_TRY_COMPILE([#include <xvid.h>], [
1216               #if XVID_API_MAJOR(XVID_API) != 4
1217               #error "Incompatible XviD API version"
1218               #endif
1219           ],[ AC_MSG_RESULT(yes)
1220             XVID_LIBS="-lxvidcore -lm"
1221             AC_SUBST(XVID_LIBS)
1222             HAVE_XVID=yes
1223           ], AC_MSG_RESULT(no) )
1224         ], )
1225       ], )
1226     ], )
1227     LIBS="$OLD_LIBS"
1228   ], )
1229 ])
1230
1231 dnl *** dvb ***
1232 translit(dnm, m, l) AM_CONDITIONAL(USE_DVB, true)
1233 AG_GST_CHECK_FEATURE(DVB, [DVB Source], dvb, [
1234   AC_MSG_CHECKING([Checking for up to date dvb installation])
1235   AC_CHECK_HEADER(linux/dvb/frontend.h, [HAVE_DVB="yes"], [HAVE_DVB="no"])
1236 ])
1237
1238 dnl *** oss4 ***
1239 translit(dnm, m, l) AM_CONDITIONAL(USE_OSS4, true)
1240 AG_GST_CHECK_FEATURE(OSS4, [Open Sound System 4], oss4, [
1241   AC_MSG_CHECKING([Checking if we can build the OSS4 elements])
1242   AC_CHECK_HEADERS([fcntl.h sys/ioctl.h sys/stat.h sys/types.h],
1243       [test -z "$OSS4_MISSING_HEADER" && HAVE_OSS4="yes"],
1244       [OSS4_MISSING_HEADER="yes";HAVE_OSS4="no"])
1245 ])
1246
1247 dnl *** wininet ***
1248 translit(dnm, m, l) AM_CONDITIONAL(USE_WININET, true)
1249 AG_GST_CHECK_FEATURE(WININET, [Windows internet library], wininet, [
1250   AC_MSG_CHECKING([Checking for windows internet support])
1251   AC_CHECK_HEADERS([windows.h wininet.h],
1252       [HAVE_WININET="yes"], [HAVE_WININET="no"])
1253 ])
1254
1255 dnl *** acm ***
1256 translit(dnm, m, l) AM_CONDITIONAL(USE_ACM, true)
1257 AG_GST_CHECK_FEATURE(ACM, [Windows ACM library], acm, [
1258   AC_MSG_CHECKING([Checking for ACM support])
1259   AC_CHECK_HEADERS([windows.h msacm.h],
1260       [HAVE_ACM="yes"], [HAVE_ACM="no"])
1261 ])
1262
1263 else
1264
1265 dnl not building plugins with external dependencies,
1266 dnl but we still need to set the conditionals
1267
1268 AM_CONDITIONAL(USE_QUICKTIME, false)
1269 AM_CONDITIONAL(USE_VCD, false)
1270 AM_CONDITIONAL(USE_ALSA, false)
1271 AM_CONDITIONAL(USE_AMRWB, false)
1272 AM_CONDITIONAL(USE_APEXSINK, false)
1273 AM_CONDITIONAL(USE_BZ2, false)
1274 AM_CONDITIONAL(USE_CDAUDIO, false)
1275 AM_CONDITIONAL(USE_CELT, false)
1276 AM_CONDITIONAL(USE_DC1394, false)
1277 AM_CONDITIONAL(USE_DIRECTFB, false)
1278 AM_CONDITIONAL(USE_DTS, false)
1279 AM_CONDITIONAL(USE_DIRAC, false)
1280 AM_CONDITIONAL(USE_DIVX, false)
1281 AM_CONDITIONAL(USE_DVB, false)
1282 AM_CONDITIONAL(USE_FAAC, false)
1283 AM_CONDITIONAL(USE_FAAD, false)
1284 AM_CONDITIONAL(USE_FBDEV, false)
1285 AM_CONDITIONAL(USE_GSM, false)
1286 AM_CONDITIONAL(USE_IVORBIS, false)
1287 AM_CONDITIONAL(USE_JACK, false)
1288 AM_CONDITIONAL(USE_LADSPA, false)
1289 AM_CONDITIONAL(USE_LIBMMS, false)
1290 AM_CONDITIONAL(USE_METADATA, false)
1291 AM_CONDITIONAL(USE_MPEG2ENC, false)
1292 AM_CONDITIONAL(USE_MPLEX, false)
1293 AM_CONDITIONAL(USE_MUSEPACK, false)
1294 AM_CONDITIONAL(USE_MUSICBRAINZ, false)
1295 AM_CONDITIONAL(USE_MYTHTV, false)
1296 AM_CONDITIONAL(USE_NAS, false)
1297 AM_CONDITIONAL(USE_NEON, false)
1298 AM_CONDITIONAL(USE_OFA, false)
1299 AM_CONDITIONAL(USE_OSS4, false)
1300 AM_CONDITIONAL(USE_TWOLAME, false)
1301 AM_CONDITIONAL(USE_SDL, false)
1302 AM_CONDITIONAL(USE_SNDFILE, false)
1303 AM_CONDITIONAL(USE_SOUNDTOUCH, false)
1304 AM_CONDITIONAL(USE_SPC, false)
1305 AM_CONDITIONAL(USE_SWFDEC, false)
1306 AM_CONDITIONAL(USE_THEORADEC, false)
1307 AM_CONDITIONAL(USE_TIMIDITY, false)
1308 AM_CONDITIONAL(USE_X264, false)
1309 AM_CONDITIONAL(USE_XVID, false)
1310 AM_CONDITIONAL(USE_WILDMIDI, false)
1311 AM_CONDITIONAL(USE_WININET, false)
1312 AM_CONDITIONAL(USE_ACM, false)
1313
1314 fi dnl of EXT plugins
1315
1316 dnl *** finalize CFLAGS, LDFLAGS, LIBS
1317
1318 dnl Overview:
1319 dnl GST_OPTION_CFLAGS:  common flags for profiling, debugging, errors, ...
1320 dnl GST_*:              flags shared by built objects to link against GStreamer
1321 dnl GST_ALL_LDFLAGS:    linker flags shared by all
1322 dnl GST_LIB_LDFLAGS:    additional linker flags for all libaries
1323 dnl GST_LT_LDFLAGS:     library versioning of our libraries
1324 dnl GST_PLUGIN_LDFLAGS: flags to be used for all plugins
1325
1326 dnl GST_OPTION_CFLAGS
1327 if test "x$USE_DEBUG" = xyes; then
1328    PROFILE_CFLAGS="-g"
1329 fi
1330 AC_SUBST(PROFILE_CFLAGS)
1331
1332 if test "x$PACKAGE_VERSION_NANO" = "x1"; then
1333   dnl Define _only_ during CVS (not pre-releases or releases)
1334   DEPRECATED_CFLAGS="-DGST_DISABLE_DEPRECATED"
1335 else
1336   DEPRECATED_CFLAGS=""
1337 fi
1338 AC_SUBST(DEPRECATED_CFLAGS)
1339
1340 dnl every flag in GST_OPTION_CFLAGS and GST_OPTION_CXXFLAGS can be overridden
1341 dnl at make time with e.g. make ERROR_CFLAGS=""
1342 GST_OPTION_CFLAGS="\$(ERROR_CFLAGS) \$(DEBUG_CFLAGS) \$(PROFILE_CFLAGS) \$(GCOV_CFLAGS) \$(OPT_CFLAGS) \$(DEPRECATED_CFLAGS)"
1343 GST_OPTION_CXXFLAGS="\$(ERROR_CXXFLAGS) \$(DEBUG_CFLAGS) \$(PROFILE_CFLAGS) \$(GCOV_CFLAGS) \$(OPT_CFLAGS) \$(DEPRECATED_CFLAGS)"
1344 AC_SUBST(GST_OPTION_CFLAGS)
1345 AC_SUBST(GST_OPTION_CXXFLAGS)
1346
1347 dnl FIXME: do we want to rename to GST_ALL_* ?
1348 dnl prefer internal headers to already installed ones
1349 dnl also add builddir include for enumtypes and marshal
1350 dnl add GST_OPTION_CFLAGS, but overridable
1351 GST_CFLAGS="-I\$(top_srcdir)/gst-libs -I\$(top_builddir)/gst-libs $GST_CFLAGS \$(GST_OPTION_CFLAGS)"
1352 GST_CXXFLAGS="-I\$(top_srcdir)/gst-libs -I\$(top_builddir)/gst-libs $GST_CXXFLAGS \$(GST_OPTION_CXXFLAGS)"
1353 AC_SUBST(GST_CFLAGS)
1354 AC_SUBST(GST_CXXFLAGS)
1355 AC_SUBST(GST_LIBS)
1356
1357 dnl LDFLAGS really should only contain flags, not libs - they get added before
1358 dnl whatevertarget_LIBS and -L flags here affect the rest of the linking
1359 GST_ALL_LDFLAGS="-no-undefined"
1360 AC_SUBST(GST_ALL_LDFLAGS)
1361
1362 dnl this really should only contain flags, not libs - they get added before
1363 dnl whatevertarget_LIBS and -L flags here affect the rest of the linking
1364 GST_PLUGIN_LDFLAGS="-module -avoid-version -export-symbols-regex '^[_]*gst_plugin_desc\$\$' $GST_ALL_LDFLAGS"
1365 AC_SUBST(GST_PLUGIN_LDFLAGS)
1366
1367 dnl *** output files ***
1368
1369 dnl po/Makefile.in
1370
1371
1372 AC_CONFIG_FILES(
1373 Makefile
1374 gst-plugins-bad.spec
1375 gst/Makefile
1376 gst/aiffparse/Makefile
1377 gst/app/Makefile
1378 gst/bayer/Makefile
1379 gst/cdxaparse/Makefile
1380 gst/dccp/Makefile
1381 gst/deinterlace/Makefile
1382 gst/deinterlace2/Makefile
1383 gst/dvdspu/Makefile
1384 gst/festival/Makefile
1385 gst/filter/Makefile
1386 gst/flv/Makefile
1387 gst/freeze/Makefile
1388 gst/h264parse/Makefile
1389 gst/librfb/Makefile
1390 gst/modplug/Makefile
1391 gst/modplug/libmodplug/Makefile
1392 gst/mpegtsparse/Makefile
1393 gst/mpeg4videoparse/Makefile
1394 gst/mpegvideoparse/Makefile
1395 gst/mve/Makefile
1396 gst/nsf/Makefile
1397 gst/nuvdemux/Makefile
1398 gst/pcapparse/Makefile
1399 gst/rawparse/Makefile
1400 gst/rtpmanager/Makefile
1401 gst/sdp/Makefile
1402 gst/selector/Makefile
1403 gst/speed/Makefile
1404 gst/speexresample/Makefile
1405 gst/subenc/Makefile
1406 gst/stereo/Makefile
1407 gst/tta/Makefile
1408 gst/videosignal/Makefile
1409 gst/vmnc/Makefile
1410 gst/real/Makefile
1411 gst/y4m/Makefile
1412 gst-libs/Makefile
1413 gst-libs/gst/Makefile
1414 gst-libs/gst/app/Makefile
1415 gst-libs/gst/dshow/Makefile
1416 sys/Makefile
1417 sys/dshowdecwrapper/Makefile
1418 sys/acmenc/Makefile
1419 sys/dshowsrcwrapper/Makefile
1420 sys/dshowvideosink/Makefile
1421 sys/dvb/Makefile
1422 sys/fbdev/Makefile
1423 sys/oss4/Makefile
1424 sys/qtwrapper/Makefile
1425 sys/vcd/Makefile
1426 sys/wininet/Makefile
1427 sys/winks/Makefile
1428 sys/winscreencap/Makefile
1429 examples/Makefile
1430 examples/app/Makefile
1431 examples/directfb/Makefile
1432 examples/switch/Makefile
1433 ext/amrwb/Makefile
1434 ext/alsaspdif/Makefile
1435 ext/apexsink/Makefile
1436 ext/bz2/Makefile
1437 ext/cdaudio/Makefile
1438 ext/celt/Makefile
1439 ext/dc1394/Makefile
1440 ext/dirac/Makefile
1441 ext/directfb/Makefile
1442 ext/divx/Makefile
1443 ext/dts/Makefile
1444 ext/metadata/Makefile
1445 ext/faac/Makefile
1446 ext/faad/Makefile
1447 ext/gsm/Makefile
1448 ext/ivorbis/Makefile
1449 ext/jack/Makefile
1450 ext/ladspa/Makefile
1451 ext/libmms/Makefile
1452 ext/Makefile
1453 ext/nas/Makefile
1454 ext/mpeg2enc/Makefile
1455 ext/mplex/Makefile
1456 ext/musepack/Makefile
1457 ext/musicbrainz/Makefile
1458 ext/mythtv/Makefile
1459 ext/neon/Makefile
1460 ext/ofa/Makefile
1461 ext/resindvd/Makefile
1462 ext/twolame/Makefile
1463 ext/sdl/Makefile
1464 ext/sndfile/Makefile
1465 ext/soundtouch/Makefile
1466 ext/spc/Makefile
1467 ext/swfdec/Makefile
1468 ext/theora/Makefile
1469 ext/timidity/Makefile
1470 ext/x264/Makefile
1471 ext/xvid/Makefile
1472 po/Makefile.in
1473 docs/Makefile
1474 docs/plugins/Makefile
1475 docs/version.entities
1476 common/Makefile
1477 common/m4/Makefile
1478 m4/Makefile
1479 tests/Makefile
1480 tests/check/Makefile
1481 tests/icles/Makefile
1482 win32/common/config.h
1483 )
1484 AC_OUTPUT
1485
1486 AG_GST_OUTPUT_PLUGINS