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