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