Release 0.10.22
[gstreamer-omap:gst-plugins-bad.git] / configure.ac
1 AC_PREREQ(2.60)
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.22,
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([-Wno-portability 1.10])
14
15 dnl define PACKAGE_VERSION_* variables
16 AS_VERSION
17
18 dnl check if this is a release version
19 AS_NANO(GST_GIT="no", GST_GIT="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 use pretty build output with automake >= 1.11
34 m4_ifdef([AM_SILENT_RULES],[AM_SILENT_RULES([yes])],
35   [AM_DEFAULT_VERBOSITY=1
36    AC_SUBST(AM_DEFAULT_VERBOSITY)])
37
38 dnl our libraries and install dirs use major.minor as a version
39 GST_MAJORMINOR=$GST_PLUGINS_BAD_VERSION_MAJOR.$GST_PLUGINS_BAD_VERSION_MINOR
40 dnl we override it here if we need to for the release candidate of new series
41 GST_MAJORMINOR=0.10
42 AC_SUBST(GST_MAJORMINOR)
43
44 AG_GST_LIBTOOL_PREPARE
45
46 dnl FIXME: this macro doesn't actually work;
47 dnl the generated libtool script has no support for the listed tags.
48 dnl So this needs to be fixed first if we want to use this
49 dnl AS_LIBTOOL_TAGS([CXX])
50
51 AC_LIBTOOL_WIN32_DLL
52 AM_PROG_LIBTOOL
53
54 dnl *** required versions of GStreamer stuff ***
55 GST_REQ=0.10.33
56 GSTPB_REQ=0.10.33
57
58 dnl *** autotools stuff ****
59
60 dnl allow for different autotools
61 AS_AUTOTOOLS_ALTERNATE
62
63 dnl Add parameters for aclocal
64 AC_SUBST(ACLOCAL_AMFLAGS, "-I m4 -I common/m4")
65
66 dnl set up gettext
67 dnl the version check needs to stay here because autopoint greps for it
68 AM_GNU_GETTEXT_VERSION([0.17])
69 AM_GNU_GETTEXT([external])
70 AG_GST_GETTEXT([gst-plugins-bad-$GST_MAJORMINOR])
71
72 dnl *** check for arguments to configure ***
73
74 AG_GST_ARG_DEBUG
75 AG_GST_ARG_PROFILING
76 AG_GST_ARG_VALGRIND
77 AG_GST_ARG_GCOV
78
79 AG_GST_ARG_EXAMPLES
80
81 AG_GST_ARG_WITH_PKG_CONFIG_PATH
82 AG_GST_ARG_WITH_PACKAGE_NAME
83 AG_GST_ARG_WITH_PACKAGE_ORIGIN
84
85 AG_GST_ARG_WITH_PLUGINS
86
87 AG_GST_ARG_ENABLE_EXTERNAL
88
89 AG_GST_ARG_ENABLE_EXPERIMENTAL
90
91 dnl *** checks for platform ***
92 AG_GST_PLATFORM
93
94 dnl * hardware/architecture *
95
96 dnl common/m4/gst-arch.m4
97 dnl check CPU type
98 AG_GST_ARCH
99
100 dnl Determine endianness
101 AC_C_BIGENDIAN
102
103 dnl *** checks for programs ***
104
105 dnl find a compiler
106 AC_PROG_CC
107 AC_PROG_CC_STDC
108
109 dnl determine c++ compiler
110 AC_PROG_CXX
111 dnl determine if c++ is available on this system
112 AC_CHECK_PROG(HAVE_CXX, $CXX, yes, no)
113
114 AS_PROG_OBJC
115
116 dnl check if the compiler supports '-c' and '-o' options
117 AM_PROG_CC_C_O
118
119 dnl check if the compiler supports do while(0) macros
120 AG_GST_CHECK_DOWHILE_MACROS
121
122 AC_PATH_PROG(VALGRIND_PATH, valgrind, no)
123 AM_CONDITIONAL(HAVE_VALGRIND, test ! "x$VALGRIND_PATH" = "xno")
124
125 dnl check for documentation tools
126 GTK_DOC_CHECK([1.3])
127 AS_PATH_PYTHON([2.1])
128 AG_GST_PLUGIN_DOCS([1.3],[2.1])
129
130 dnl *** checks for libraries ***
131
132 dnl check for libm, for sin() etc.
133 AC_CHECK_LIBM
134 AC_SUBST(LIBM)
135
136 AC_FUNC_MMAP
137
138 dnl *** checks for header files ***
139
140 AC_CHECK_HEADERS([unistd.h], HAVE_UNISTD_H=yes)
141 AM_CONDITIONAL(HAVE_UNISTD_H, test "x$HAVE_UNISTD_H" = "xyes")
142
143 if test "x$HAVE_UNISTD_H" != "xyes"; then
144   GST_PLUGINS_SELECTED=`echo $GST_PLUGINS_SELECTED | $SED -e s/festival//`
145 fi
146
147 dnl used by camerabin
148 AC_CHECK_HEADERS([sys/time.h])
149
150 dnl used by ext/dts
151 AX_CREATE_STDINT_H
152
153 AC_CHECK_HEADERS([pthread.h], HAVE_PTHREAD_H=yes)
154 AM_CONDITIONAL(HAVE_PTHREAD_H, test "x$HAVE_PTHREAD_H" = "xyes")
155
156 if test "x$HAVE_PTHREAD_H" != "xyes"; then
157   GST_PLUGINS_SELECTED=`echo $GST_PLUGINS_SELECTED | $SED -e s/dccp//`
158 fi
159
160 dnl *** checks for types/defines ***
161
162 dnl Check for FIONREAD ioctl declaration
163 dnl used in gst/dccp
164 GST_CHECK_FIONREAD
165
166 dnl *** checks for structures ***
167
168 dnl *** checks for compiler characteristics ***
169
170 dnl *** checks for library functions ***
171 AC_CHECK_FUNCS([gmtime_r])
172
173 dnl *** checks for headers ***
174 AC_CHECK_HEADERS([sys/utsname.h])
175
176 dnl *** checks for dependency libraries ***
177
178 dnl *** checks for socket and nsl libraries ***
179 AC_CHECK_FUNC(socket,,[AC_CHECK_LIB(socket,socket)])
180 AC_CHECK_FUNC(gethostbyname,,[AC_CHECK_LIB(nsl,gethostbyname)])
181
182 dnl GLib is required
183 AG_GST_GLIB_CHECK([2.22])
184
185 dnl checks for gstreamer
186 dnl uninstalled is selected preferentially -- see pkg-config(1)
187 AG_GST_CHECK_GST($GST_MAJORMINOR, [$GST_REQ], yes)
188 AG_GST_CHECK_GST_BASE($GST_MAJORMINOR, [$GST_REQ], yes)
189 AG_GST_CHECK_GST_GDP($GST_MAJORMINOR, [$GST_REQ], yes)
190 AG_GST_CHECK_GST_CHECK($GST_MAJORMINOR, [$GST_REQ], no)
191 AG_GST_CHECK_GST_CONTROLLER($GST_MAJORMINOR, [$GST_REQ], yes)
192 AM_CONDITIONAL(HAVE_GST_CHECK, test "x$HAVE_GST_CHECK" = "xyes")
193
194 AG_GST_CHECK_GST_PLUGINS_BASE($GST_MAJORMINOR, [$GSTPB_REQ], yes)
195
196 dnl check for uninstalled plugin directories for unit tests
197 AG_GST_CHECK_GST_PLUGINS_GOOD($GST_MAJORMINOR, [0.10.25])
198 AG_GST_CHECK_GST_PLUGINS_UGLY($GST_MAJORMINOR, [0.10.16])
199 AG_GST_CHECK_GST_PLUGINS_FFMPEG($GST_MAJORMINOR, [0.10.11])
200
201 dnl Check for documentation xrefs
202 GLIB_PREFIX="`$PKG_CONFIG --variable=prefix glib-2.0`"
203 GST_PREFIX="`$PKG_CONFIG --variable=prefix gstreamer-$GST_MAJORMINOR`"
204 GSTPB_PREFIX="`$PKG_CONFIG --variable=prefix gstreamer-plugins-base-$GST_MAJORMINOR`"
205 AC_SUBST(GLIB_PREFIX)
206 AC_SUBST(GST_PREFIX)
207 AC_SUBST(GSTPB_PREFIX)
208
209 dnl GTK is optional and used in examples
210 HAVE_GTK=NO
211 GTK2_REQ=2.14.0
212 GTK3_REQ=2.91.3
213 if test "x$BUILD_EXAMPLES" = "xyes"; then
214   AC_MSG_CHECKING([which gtk+ version to compile examples against (optional)])
215   AC_ARG_WITH([gtk],
216     AC_HELP_STRING([--with-gtk=3.0|2.0],
217                    [which gtk+ version to compile against (default: 2.0)]),
218     [case "$with_gtk" in
219         2.0) GTK_REQ=$GTK2_REQ ;;
220         3.0) GTK_REQ=$GTK3_REQ ;;
221         *) AC_MSG_ERROR([invalid gtk+ version specified]);;
222     esac],
223     [with_gtk=2.0
224      GTK_REQ=$GTK2_REQ])
225   AC_MSG_RESULT([$with_gtk (>= $GTK_REQ)])
226   PKG_CHECK_MODULES(GTK, gtk+-x11-$with_gtk >= $GTK_REQ, HAVE_GTK=yes, HAVE_GTK=no)
227   AC_SUBST(GTK_LIBS)
228   AC_SUBST(GTK_CFLAGS)
229 fi
230 AM_CONDITIONAL(HAVE_GTK, test "x$HAVE_GTK" = "xyes")
231
232 dnl Needed for GtkBuilder to autoconnect signals
233 PKG_CHECK_MODULES(GMODULE_EXPORT, gmodule-export-2.0, HAVE_GMODULE_EXPORT=yes, HAVE_GMODULE_EXPORT=no)
234
235 dnl x11 is optional for librfb
236 HAVE_X11=NO
237 PKG_CHECK_MODULES(X11, x11, HAVE_X11=yes, HAVE_X11=no)
238 AC_SUBST(X11_LIBS)
239 AC_SUBST(X11_CFLAGS)
240 AC_SUBST(HAVE_X11)
241 AM_CONDITIONAL(HAVE_X11, test "x$HAVE_X11" = "xyes")
242 if test "x$HAVE_X11" = "xyes"; then
243   AC_DEFINE(HAVE_X11, 1, [Define if you have X11 library])
244 fi
245
246 dnl exif (used on jifmux tests) ****
247 PKG_CHECK_MODULES(EXIF, libexif >= 0.6.16, HAVE_EXIF="yes", HAVE_EXIF="no")
248 AC_SUBST(EXIF_LIBS)
249 AC_SUBST(EXIF_CFLAGS)
250 AM_CONDITIONAL(USE_EXIF, test "x$HAVE_EXIF" = "xyes")
251
252 dnl Orc
253 ORC_CHECK([0.4.11])
254
255 dnl set license and copyright notice
256 GST_LICENSE="LGPL"
257 AC_DEFINE_UNQUOTED(GST_LICENSE, "$GST_LICENSE", [GStreamer license])
258 AC_SUBST(GST_LICENSE)
259
260 dnl define LIBDIR so we can inform people where we live
261 AS_AC_EXPAND(LIBDIR, $libdir)
262 AC_DEFINE_UNQUOTED(LIBDIR, "$LIBDIR", [library dir])
263
264 dnl set location of plugin directory
265 AG_GST_SET_PLUGINDIR
266
267 dnl set release date/time
268 AG_GST_SET_PACKAGE_RELEASE_DATETIME_WITH_NANO([$PACKAGE_VERSION_NANO],
269   ["${srcdir}/gst-plugins-bad.doap"],
270   [$PACKAGE_VERSION_MAJOR.$PACKAGE_VERSION_MINOR.$PACKAGE_VERSION_MICRO])
271
272 dnl define an ERROR_CFLAGS Makefile variable
273 dnl -Waggregate-return - libexif returns aggregates
274 dnl -Wundef - Windows headers check _MSC_VER unconditionally
275 AG_GST_SET_ERROR_CFLAGS($GST_GIT, [
276     -Wmissing-declarations -Wmissing-prototypes -Wredundant-decls
277     -Wwrite-strings -Wformat-security -Wold-style-definition
278     -Winit-self -Wmissing-include-dirs -Waddress -Wno-multichar
279     -Wnested-externs])
280
281 dnl define an ERROR_CXXFLAGS Makefile variable
282 AG_GST_SET_ERROR_CXXFLAGS($GST_GIT, [
283     -Wmissing-declarations -Wredundant-decls
284     -Wwrite-strings -Wformat-nonliteral -Wformat-security
285     -Winit-self -Wmissing-include-dirs -Waddress -Wno-multichar ])
286
287 dnl define correct level for debugging messages
288 AG_GST_SET_LEVEL_DEFAULT($GST_GIT)
289
290 dnl used in examples
291 AG_GST_DEFAULT_ELEMENTS
292
293 dnl *** plug-ins to include ***
294
295 dnl these are all the gst plug-ins, compilable without additional libs
296 AG_GST_CHECK_PLUGIN(adpcmdec)
297 AG_GST_CHECK_PLUGIN(adpcmenc)
298 AG_GST_CHECK_PLUGIN(aiff)
299 AG_GST_CHECK_PLUGIN(asfmux)
300 AG_GST_CHECK_PLUGIN(autoconvert)
301 AG_GST_CHECK_PLUGIN(bayer)
302 AG_GST_CHECK_PLUGIN(camerabin)
303 AG_GST_CHECK_PLUGIN(camerabin2)
304 AG_GST_CHECK_PLUGIN(cdxaparse)
305 AG_GST_CHECK_PLUGIN(coloreffects)
306 AG_GST_CHECK_PLUGIN(colorspace)
307 AG_GST_CHECK_PLUGIN(dataurisrc)
308 AG_GST_CHECK_PLUGIN(dccp)
309 AG_GST_CHECK_PLUGIN(debugutils)
310 AG_GST_CHECK_PLUGIN(dtmf)
311 AG_GST_CHECK_PLUGIN(dvbsuboverlay)
312 AG_GST_CHECK_PLUGIN(dvdspu)
313 AG_GST_CHECK_PLUGIN(festival)
314 AG_GST_CHECK_PLUGIN(fieldanalysis)
315 AG_GST_CHECK_PLUGIN(freeze)
316 AG_GST_CHECK_PLUGIN(frei0r)
317 AG_GST_CHECK_PLUGIN(gaudieffects)
318 AG_GST_CHECK_PLUGIN(geometrictransform)
319 AG_GST_CHECK_PLUGIN(h264parse)
320 AG_GST_CHECK_PLUGIN(hdvparse)
321 AG_GST_CHECK_PLUGIN(hls)
322 AG_GST_CHECK_PLUGIN(id3tag)
323 AG_GST_CHECK_PLUGIN(interlace)
324 AG_GST_CHECK_PLUGIN(invtelecine)
325 AG_GST_CHECK_PLUGIN(ivfparse)
326 AG_GST_CHECK_PLUGIN(jp2kdecimator)
327 AG_GST_CHECK_PLUGIN(jpegformat)
328 AG_GST_CHECK_PLUGIN(legacyresample)
329 AG_GST_CHECK_PLUGIN(librfb)
330 AG_GST_CHECK_PLUGIN(liveadder)
331 AG_GST_CHECK_PLUGIN(mpegdemux)
332 AG_GST_CHECK_PLUGIN(mpegtsdemux)
333 AG_GST_CHECK_PLUGIN(mpegtsmux)
334 AG_GST_CHECK_PLUGIN(mpegpsmux)
335 AG_GST_CHECK_PLUGIN(mpeg4videoparse)
336 AG_GST_CHECK_PLUGIN(mpegvideoparse)
337 AG_GST_CHECK_PLUGIN(mve)
338 AG_GST_CHECK_PLUGIN(mxf)
339 AG_GST_CHECK_PLUGIN(nsf)
340 AG_GST_CHECK_PLUGIN(nuvdemux)
341 AG_GST_CHECK_PLUGIN(patchdetect)
342 AG_GST_CHECK_PLUGIN(pcapparse)
343 AG_GST_CHECK_PLUGIN(pnm)
344 AG_GST_CHECK_PLUGIN(rawparse)
345 AG_GST_CHECK_PLUGIN(real)
346 AG_GST_CHECK_PLUGIN(rtpmux)
347 AG_GST_CHECK_PLUGIN(rtpvp8)
348 AG_GST_CHECK_PLUGIN(scaletempo)
349 AG_GST_CHECK_PLUGIN(sdi)
350 AG_GST_CHECK_PLUGIN(sdp)
351 AG_GST_CHECK_PLUGIN(segmentclip)
352 AG_GST_CHECK_PLUGIN(siren)
353 AG_GST_CHECK_PLUGIN(speed)
354 AG_GST_CHECK_PLUGIN(subenc)
355 AG_GST_CHECK_PLUGIN(stereo)
356 AG_GST_CHECK_PLUGIN(tta)
357 AG_GST_CHECK_PLUGIN(videofilters)
358 AG_GST_CHECK_PLUGIN(videomaxrate)
359 AG_GST_CHECK_PLUGIN(videomeasure)
360 AG_GST_CHECK_PLUGIN(videoparsers)
361 AG_GST_CHECK_PLUGIN(videosignal)
362 AG_GST_CHECK_PLUGIN(vmnc)
363 AG_GST_CHECK_PLUGIN(y4m)
364
365 dnl *** plug-ins to exclude ***
366
367 dnl real plugin only works on i386 and x86_64 for the time being.
368 if test "x$HAVE_CPU_I386" != "xyes" && test "x$HAVE_CPU_X86_64" != "xyes"; then
369   AC_MSG_WARN([Not building real plugin, only works on 32bit and 64bit x86 platforms])
370   AG_GST_DISABLE_PLUGIN(real)
371 fi
372
373 dnl disable experimental plug-ins
374 if test "x$BUILD_EXPERIMENTAL" != "xyes"; then
375   AG_GST_DISABLE_PLUGIN(camerabin2)
376 fi
377
378 # This will always succeed because we depend on GLib >= 2.16
379 PKG_CHECK_MODULES(GIO, gio-2.0 >= 2.16, HAVE_GIO=yes, HAVE_GIO=no)
380 AC_SUBST(GIO_CFLAGS)
381 AC_SUBST(GIO_LIBS)
382
383 dnl disable gst plugins we might not be able to build on this
384 dnl platform: librfb (ugly but minimally invasive)
385 dnl FIXME: maybe move to sys, or make work with winsock2
386 AC_CHECK_HEADERS([sys/socket.h], HAVE_SYS_SOCKET_H=yes)
387 AC_CHECK_HEADERS([winsock2.h], HAVE_WINSOCK2_H=yes)
388
389 if test "x$HAVE_WINSOCK2_H" = "xyes"; then
390   WIN32_LIBS="-lws2_32"
391   AC_SUBST(WIN32_LIBS)
392 fi
393
394 dnl needed for festival
395 AM_CONDITIONAL(HAVE_WINSOCK2_H, test "x$HAVE_WINSOCK2_H" = "xyes")
396
397 if test "x$HAVE_WINSOCK2_H" = "xyes"; then
398   DCCP_LIBS="$DCCP_LIBS -lws2_32"
399   XDG_LIBS="$XDG_LIBS -lws2_32"
400   AC_SUBST(DCCP_LIBS)
401   AC_SUBST(XDG_LIBS)
402 fi
403
404 if test "x$HAVE_PTHREAD_H" = "xyes"; then
405   DCCP_LIBS="$DCCP_LIBS -lpthread"
406   AC_SUBST(DCCP_LIBS)
407 fi
408
409 if test "x$HAVE_PTHREAD_H" != "xyes"; then
410   AG_GST_DISABLE_PLUGIN(dccp)
411 fi
412
413 dnl *** sys plug-ins ***
414
415 dnl DirectSound
416 translit(dnm, m, l) AM_CONDITIONAL(USE_DIRECTSOUND, true)
417 AG_GST_CHECK_FEATURE(DIRECTSOUND, [DirectSound], directsoundsrc, [
418   HAVE_DIRECTSOUND="no"
419   save_CFLAGS="$CFLAGS"
420   save_LDFLAGS="$LDFLAGS"
421   save_LIBS="$LIBS"
422   CFLAGS="$CFLAGS $DIRECTX_CFLAGS"
423   LDFLAGS="$LDFLAGS $DIRECTX_LDFLAGS"
424   LIBS="$LIBS -ldsound -ldxerr9 -luser32"
425   AC_MSG_CHECKING(for DirectSound LDFLAGS)
426   AC_LINK_IFELSE([
427 #include <windows.h>
428 #include <dxerr9.h>
429 #include <dsound.h>
430
431 int main ()
432 {
433   DXGetErrorString9 (0);
434   DirectSoundCreate(NULL, NULL, NULL);
435
436   return 0;
437 }
438 ],
439     [HAVE_DIRECTSOUND="yes"],
440     [HAVE_DIRECTSOUND="no"])
441   AC_MSG_RESULT($HAVE_DIRECTSOUND)
442   CFLAGS=$save_CFLAGS
443   LDFLAGS=$save_LDFLAGS
444   LIBS=$save_LIBS
445
446   if test "x$HAVE_DIRECTSOUND" = "xyes";  then
447     dnl this is much more than we want
448     DIRECTSOUND_LIBS="-ldsound -ldxerr9 -luser32"
449     AC_SUBST(DIRECTX_CFLAGS)
450     AC_SUBST(DIRECTX_LDFLAGS)
451     AC_SUBST(DIRECTSOUND_LIBS)
452   fi
453   AC_SUBST(HAVE_DIRECTSOUND)
454 ])
455
456 dnl DirectDraw
457 translit(dnm, m, l) AM_CONDITIONAL(USE_DIRECTDRAW, true)
458 AG_GST_CHECK_FEATURE(DIRECTDRAW, [DirectDraw plug-in], directdrawsink, [
459   HAVE_DIRECTDRAW="no"
460   save_CFLAGS="$CFLAGS"
461   save_LDFLAGS="$LDFLAGS"
462   save_LIBS="$LIBS"
463   CFLAGS="$CFLAGS $DIRECTX_CFLAGS"
464   LDFLAGS="$LDFLAGS $DIRECTX_LDFLAGS"
465   LIBS="$LIBS -lddraw -lgdi32"
466   AC_MSG_CHECKING(for DirectDraw LDFLAGS)
467   AC_LINK_IFELSE([
468 #include <windows.h>
469 #include <ddraw.h>
470
471 int main ()
472 {
473   GetStockObject(0);
474   DirectDrawCreate(NULL, NULL, NULL);
475
476   return 0;
477 }
478 ],
479     [HAVE_DIRECTDRAW="yes"],
480     [HAVE_DIRECTDRAW="no"])
481   AC_MSG_RESULT($HAVE_DIRECTDRAW)
482   CFLAGS=$save_CFLAGS
483   LDFLAGS=$save_LDFLAGS
484   LIBS=$save_LIBS
485
486   if test "x$HAVE_DIRECTDRAW" = "xyes";  then
487     dnl this is much more than we want
488     DIRECTDRAW_LIBS="-lddraw -ldxguid -lgdi32"
489     AC_SUBST(DIRECTX_CFLAGS)
490     AC_SUBST(DIRECTX_LDFLAGS)
491     AC_SUBST(DIRECTDRAW_LIBS)
492   fi
493   AC_SUBST(HAVE_DIRECTDRAW)
494 ])
495
496 dnl *** AppleMedia (OS X and iOS) ***
497 translit(dnm, m, l) AM_CONDITIONAL(USE_APPLE_MEDIA, true)
498 HAVE_APPLE_MEDIA="no"
499 dnl SystemConfiguration.h is common to OS X and iOS, so we check for that
500 AG_GST_CHECK_FEATURE(APPLE_MEDIA, [Apple video], applemedia, [
501   AC_CHECK_HEADER(SystemConfiguration/SystemConfiguration.h, HAVE_APPLE_MEDIA="yes", HAVE_APPLE_MEDIA="no")
502 ])
503 dnl in case header SystemConfiguration/SystemConfiguration.h is found on other platforms
504 case "$host" in
505   *-*darwin*)
506     ;;
507   *)
508     HAVE_APPLE_MEDIA="no"
509     ;;
510 esac
511 HAVE_IOS="no"
512 if test "x$HAVE_APPLE_MEDIA" = "xyes"; then
513   AC_CHECK_HEADER(MobileCoreServices/MobileCoreServices.h, HAVE_IOS="yes", HAVE_IOS="no", [-])
514 fi
515
516 AM_CONDITIONAL(HAVE_IOS, test "x$HAVE_IOS" = "xyes")
517 if test "x$HAVE_IOS" = "xyes"; then
518   AC_DEFINE(HAVE_IOS, 1, [Define if building for Apple iOS])
519 fi
520
521 dnl *** OS X videosrc ***
522 translit(dnm, m, l) AM_CONDITIONAL(USE_OSX_VIDEO, true)
523 HAVE_OSX_VIDEO="no"
524 AG_GST_CHECK_FEATURE(OSX_VIDEO, [OSX video], osxvideosrc, [
525   AC_CHECK_TYPE([SeqGrabComponent], HAVE_OSX_VIDEO="yes", HAVE_OSX_VIDEO="no",
526       [#include <Quicktime/Quicktime.h>])
527 ])
528 dnl in case header Quicktime/Quicktime.h is found on other platforms
529 case "$host" in
530   *-*darwin*)
531     ;;
532   *)
533     HAVE_OSX_VIDEO="no"
534     ;;
535 esac
536
537 dnl check for QuickTime
538 translit(dnm, m, l) AM_CONDITIONAL(USE_QUICKTIME, true)
539 AG_GST_CHECK_FEATURE(QUICKTIME, [QuickTime wrapper], qtwrapper, [
540   AC_CHECK_TYPE([SampleReferenceRecord], HAVE_QUICKTIME="yes", HAVE_QUICKTIME="no",
541       [#include <Quicktime/Quicktime.h>])
542 ])
543
544 dnl check for shm_open (for shm plugin)
545 translit(dnm, m, l) AM_CONDITIONAL(USE_SHM, true)
546 AG_GST_CHECK_FEATURE(SHM, [POSIX shared memory source and sink], shm, [
547   if test "x$HAVE_SYS_SOCKET_H" = "xyes"; then
548     AC_CHECK_LIB([rt], [shm_open],
549        AC_CHECK_DECL([MSG_NOSIGNAL], HAVE_SHM=yes, HAVE_SHM=no, [
550 #include <sys/socket.h>
551          ]),
552          HAVE_SHM=no)
553   else
554     HAVE_SHM=no
555   fi
556 ])
557
558 dnl check for Video CD
559 translit(dnm, m, l) AM_CONDITIONAL(USE_VCD, true)
560 AG_GST_CHECK_FEATURE(VCD, [Video CD], vcdsrc, [
561   AC_CHECK_HEADER(linux/cdrom.h, HAVE_VCD="yes", HAVE_VCD="no")
562 ])
563
564 dnl *** ext plug-ins ***
565 dnl keep this list sorted alphabetically !
566
567 if test "x$BUILD_EXTERNAL" = "xyes"; then
568
569 dnl *** assrender ***
570 translit(dnm, m, l) AM_CONDITIONAL(USE_ASSRENDER, true)
571 AG_GST_CHECK_FEATURE(ASSRENDER, [ASS/SSA renderer], assrender, [
572   PKG_CHECK_MODULES(ASSRENDER, libass >= 0.9.4, [
573     HAVE_ASSRENDER="yes" ], [
574     HAVE_ASSRENDER="no"
575   ])
576 ])
577 AC_SUBST(ASSRENDER_CFLAGS)
578 AC_SUBST(ASSRENDER_LIBS)
579
580 dnl *** amrwb ***
581 translit(dnm, m, l) AM_CONDITIONAL(USE_AMRWB, true)
582 AG_GST_CHECK_FEATURE(AMRWB, [amrwb library], amrwbenc, [
583   AG_GST_CHECK_LIBHEADER(AMRWB, amrwb,
584                         GP3E_IF_encode, ,
585                         amrwb/enc.h,
586                         AMRWB_LIBS="-lamrwb"
587                         AC_SUBST(AMRWB_LIBS))
588 ])
589
590 dnl *** apexsink ***
591 translit(dnm, m, l) AM_CONDITIONAL(USE_APEXSINK, true)
592 AG_GST_CHECK_FEATURE(APEXSINK, [AirPort Express Wireless sink], apexsink, [
593   PKG_CHECK_MODULES(APEXSINK, [ openssl >= 0.9.5  libcrypto ], [
594     HAVE_APEXSINK="yes"
595     saved_LIBS="$LIBS"
596     LIBS=""
597     AC_SEARCH_LIBS(socket, [socket], [ ], [ APEXSINK="no" ])
598     AC_SEARCH_LIBS(gethostbyname, [nsl], [ ], [ APEXSINK="no" ])
599     APEXSINK_LIBS="$APEXSINK_LIBS $LIBS"
600     LIBS="$saved_LIBS"
601     AC_SUBST(APEXSINK_CFLAGS)
602     AC_SUBST(APEXSINK_LIBS)
603   ], [
604     APEXSINK="no"
605   ])
606 ])
607
608 dnl *** BZ2 ***
609 translit(dnm, m, l) AM_CONDITIONAL(USE_BZ2, true)
610 AG_GST_CHECK_FEATURE(BZ2, [bz2 library], bz2, [
611   AG_GST_CHECK_LIBHEADER(BZ2, bz2, BZ2_bzCompress, ,bzlib.h, BZ2_LIBS="-lbz2")
612   AC_SUBST(BZ2_LIBS)
613 ])
614
615 #dnl *** cairo ***
616 #translit(dnm, m, l) AM_CONDITIONAL(USE_CAIRO, true)
617 #AG_GST_CHECK_FEATURE(CAIRO, [cairo plug-in], cairo, [
618 #  PKG_CHECK_MODULES(CAIRO, cairo >= 1.0 glitz-glx, HAVE_CAIRO=yes, [
619 #    HAVE_CAIRO=no
620 #  ])
621 #  AC_SUBST(CAIRO_CFLAGS)
622 #  AC_SUBST(CAIRO_LIBS)
623 #])
624
625 dnl *** cdaudio ***
626 translit(dnm, m, l) AM_CONDITIONAL(USE_CDAUDIO, true)
627 AG_GST_CHECK_FEATURE(CDAUDIO, [cdaudio], cdaudio, [
628   AG_GST_CHECK_CONFIGPROG(CDAUDIO, libcdaudio-config)
629   AC_SUBST(CDAUDIO_CFLAGS)
630   AC_SUBST(CDAUDIO_LIBS)
631 ])
632
633 dnl *** celt ***
634 translit(dnm, m, l) AM_CONDITIONAL(USE_CELT, true)
635 AG_GST_CHECK_FEATURE(CELT, [celt], celt, [
636   PKG_CHECK_MODULES(CELT, celt >= 0.5.0, [
637           AC_DEFINE([HAVE_CELT], 1, [Define if libcelt 0.5 is installed])
638           HAVE_CELT="yes"
639   ], [
640           HAVE_CELT="no"
641   ])
642
643   PKG_CHECK_MODULES(CELT_0_7, celt >= 0.7.0, [
644           AC_DEFINE([HAVE_CELT_0_7], 1, [Define if libcelt 0.7 is installed])
645   ], [
646           dnl to prevent an error
647           true
648   ])
649
650   PKG_CHECK_MODULES(CELT_0_8, celt >= 0.8.0, [
651           AC_DEFINE([HAVE_CELT_0_8], 1, [Define if libcelt 0.8 is installed])
652   ], [
653           dnl to prevent an error
654           true
655   ])
656
657   PKG_CHECK_MODULES(CELT_0_11, celt >= 0.11.0, [
658           AC_DEFINE([HAVE_CELT_0_11], 1, [Define if libcelt 0.11 is installed])
659   ], [
660           dnl to prevent an error
661           true
662   ])
663   AC_SUBST(CELT_CFLAGS)
664   AC_SUBST(CELT_LIBS)
665 ])
666
667 dnl *** Cog ***
668 translit(dnm, m, l) AM_CONDITIONAL(USE_COG, true)
669 AG_GST_CHECK_FEATURE(COG, [Cog plugin], cog, [
670   PKG_CHECK_MODULES(COG, libpng >= 1.2, HAVE_COG="yes", [
671     HAVE_COG="no"
672   ])
673   AC_SUBST(COG_CFLAGS)
674   AC_SUBST(COG_LIBS)
675 ])
676
677 dnl *** Curl ***
678 translit(dnm, m, l) AM_CONDITIONAL(USE_CURL, true)
679 AG_GST_CHECK_FEATURE(CURL, [Curl plugin], curl, [
680   PKG_CHECK_MODULES(CURL, libcurl >= 7.21.0, [
681     HAVE_CURL="yes"
682     AC_CHECK_HEADERS([unistd.h sys/socket.h sys/types.h netinet/in.h netinet/ip.h netinet/tcp.h fcntl.h],
683         [ ], [HAVE_CURL="no"])
684     AC_MSG_CHECKING([for socket support needed by curlsink])
685     AC_MSG_RESULT($HAVE_CURL)
686   ], [
687     HAVE_CURL="no"
688   ])
689   AC_SUBST(CURL_CFLAGS)
690   AC_SUBST(CURL_LIBS)
691 ])
692
693 dnl *** dc1394  ***
694 translit(dnm, m, l) AM_CONDITIONAL(USE_DC1394, true)
695 AG_GST_CHECK_FEATURE(DC1394, [libdc1394], dc1394, [
696    PKG_CHECK_MODULES(LIBDC1394, libdc1394-2 >= 2.0.0, [
697         if test -z "`$PKG_CONFIG --modversion libdc1394-2 | grep 2.0.0-rc`"; then
698                 HAVE_DC1394="yes"
699         else
700                 HAVE_DC1394="no"
701         fi
702    ], [
703         HAVE_DC1394="no"
704         AC_MSG_RESULT(no)
705    ])
706    AC_SUBST(LIBDC1394_CFLAGS)
707    AC_SUBST(LIBDC1394_LIBS)
708 ])
709
710 dnl *** decklink  ***
711 translit(dnm, m, l) AM_CONDITIONAL(USE_DECKLINK, true)
712 AG_GST_CHECK_FEATURE(DECKLINK, [decklink], decklink, [
713    HAVE_DECKLINK=no
714    case "$host" in
715      *-*linux*)
716        if test "x$HAVE_PTHREAD_H" = "xyes"; then
717          AC_CHECK_LIB(dl, dlopen,
718            [
719             HAVE_DECKLINK=yes
720             DECKLINK_CXXFLAGS=
721             DECKLINK_LIBS="-lpthread -ldl"
722            ])
723        fi
724        ;;
725      *)
726        HAVE_DECKLINK=no
727        ;;
728    esac
729
730    AC_SUBST(DECKLINK_CXXFLAGS)
731    AC_SUBST(DECKLINK_LIBS)
732 ])
733
734 dnl **** DirectFB ****
735 translit(dnm, m, l) AM_CONDITIONAL(USE_DIRECTFB, true)
736 AG_GST_CHECK_FEATURE(DIRECTFB, [directfb], dfbvideosink , [
737   PKG_CHECK_MODULES(DIRECTFB, directfb >= 0.9.24, HAVE_DIRECTFB="yes", [
738     HAVE_DIRECTFB="no"
739   ])
740 ])
741
742 dnl **** Dirac ****
743 translit(dnm, m, l) AM_CONDITIONAL(USE_DIRAC, true)
744 AG_GST_CHECK_FEATURE(DIRAC, [dirac], dirac, [
745   PKG_CHECK_MODULES(DIRAC, dirac >= 0.10, HAVE_DIRAC="yes", [
746     HAVE_DIRAC="no"
747   ])
748 ])
749
750 dnl *** DTS ***
751 translit(dnm, m, l) AM_CONDITIONAL(USE_DTS, true)
752 AG_GST_CHECK_FEATURE(DTS, [dts library], dtsdec, [
753   HAVE_DTS="yes"
754   AG_GST_CHECK_LIBHEADER(DTS, dca, dca_init, $LIBM, dca.h,
755     DTS_LIBS="-ldca $LIBM", HAVE_DTS="no")
756   if test $HAVE_DTS = "no"; then
757     AG_GST_CHECK_LIBHEADER(DTS, dts_pic, dts_init, $LIBM, dts.h,
758       [ DTS_LIBS="-ldts_pic $LIBM"
759         AC_DEFINE(DTS_OLD, 1, [Define if an old libdts is used])
760       ])
761   fi
762   AC_SUBST(DTS_LIBS)
763 ])
764
765 dnl *** DIVX ***
766 translit(dnm, m, l) AM_CONDITIONAL(USE_DIVX, true)
767 AG_GST_CHECK_FEATURE(DIVX, [divx plugins], divx, [
768   HAVE_DIVX=yes
769   AC_CHECK_HEADER(encore2.h, , [
770     AC_MSG_WARN([Divx4linux encore headers not found])
771     HAVE_DIVX=no
772   ])
773   if [ test x$HAVE_DIVX = xyes ]; then
774     AC_MSG_CHECKING([Checking for valid divx4linux encore version])
775     AC_TRY_COMPILE([
776 #include <encore2.h>
777 #if ENCORE_VERSION != 20021024
778 #error Wrong version of divx encore libraries
779 #endif
780     ], [
781 return 0;
782     ], [
783       HAVE_DIVX=yes
784     ], [
785       HAVE_DIVX=no
786       AC_MSG_WARN([Wrong version of divx4linux installed])
787     ])
788   fi
789   if [ test x$HAVE_DIVX = xyes ]; then
790     AC_CHECK_HEADER(decore.h, , [
791       AC_MSG_WARN([Divx4linux decoder headers not found])
792       HAVE_DIVX=no
793     ])
794   fi
795   if [ test x$HAVE_DIVX = xyes ]; then
796     AC_MSG_CHECKING([Checking for valid divx4linux decore version])
797     AC_TRY_COMPILE([
798 #include <decore.h>
799 #if DECORE_VERSION != 20021112
800 #error Wrong version of divx decore libraries
801 #endif
802     ], [
803 return 0;
804     ], [
805       HAVE_DIVX=yes
806     ], [
807       HAVE_DIVX=no
808       AC_MSG_WARN([Wrong version of divx4linux installed])
809     ])
810   fi
811   LIBS="$LIBM"
812   if test x$HAVE_DIVX = xyes; then
813     AC_CHECK_LIB(divxencore, encore, , [
814       AC_MSG_WARN([Divx4linux encore libs not found])
815       HAVE_DIVX=no
816     ])
817   fi
818   if test x$HAVE_DIVX = xyes; then
819     AC_CHECK_LIB(divxdecore, decore, , [
820       AC_MSG_WARN([Divx4linux decore libs not found])
821       HAVE_DIVX=no
822   ])
823   fi
824   if test x$HAVE_DIVX = xyes; then
825     DIVXENC_LIBS="-ldivxencore $LIBM"
826     DIVXDEC_LIBS="-ldivxdecore $LIBM"
827     AC_SUBST(DIVXENC_LIBS)
828     AC_SUBST(DIVXDEC_LIBS)
829   fi
830 ])
831
832 dnl *** resindvd ***
833 translit(dnm, m, l) AM_CONDITIONAL(USE_RESINDVD, true)
834 AG_GST_CHECK_FEATURE(RESINDVD, [resindvd plugin], resindvd, [
835   PKG_CHECK_MODULES(DVDNAV, dvdnav >= 4.1.2 dvdread >= 4.1.2, HAVE_RESINDVD="yes", [
836     HAVE_RESINDVD="no"
837   ])
838 ])
839
840 dnl **** Free AAC Encoder (FAAC) ****
841 translit(dnm, m, l) AM_CONDITIONAL(USE_FAAC, true)
842 AG_GST_CHECK_FEATURE(FAAC, [AAC encoder plug-in], faac, [
843   AG_GST_CHECK_LIBHEADER(FAAC, faac, faacEncOpen, $LIBM, faac.h,
844     FAAC_LIBS="-lfaac $LIBM")
845   AS_SCRUB_INCLUDE(FAAC_CFLAGS)
846   AC_SUBST(FAAC_LIBS)
847 ])
848
849 dnl **** Free AAC Decoder (FAAD) ****
850 translit(dnm, m, l) AM_CONDITIONAL(USE_FAAD, true)
851 AG_GST_CHECK_FEATURE(FAAD, [AAC decoder plug-in], faad, [
852   HAVE_FAAD="yes"
853   faad_hdr=""
854   AG_GST_CHECK_LIBHEADER(FAAD, faad, faacDecOpen, $LIBM, faad.h,
855     FAAD_LIBS="-lfaad $LIBM", HAVE_FAAD="no")
856   if test $HAVE_FAAD = "no"; then
857     AG_GST_CHECK_LIBHEADER(FAAD, faad, NeAACDecOpen, $LIBM, neaacdec.h,
858       [ FAAD_LIBS="-lfaad $LIBM"
859         AC_DEFINE(FAAD_IS_NEAAC, 1, [Define if AAC is using new api prefix])
860         faad_hdr="neaacdec.h"
861       ], [
862         HAVE_FAAD="no"
863       ],)
864   else
865     faad_hdr="faad.h"
866   fi
867   if test $HAVE_FAAD = "yes"; then
868     AC_MSG_CHECKING([Checking for FAAD >= 2.0])
869     AC_TRY_COMPILE([#include <faad.h>], [
870         #if !defined(FAAD2_VERSION) || !defined(FAAD_FMT_DOUBLE)
871         #error Not faad2
872         #else
873         /* Release candidate of 2.0 is not good enough for us. This field
874          * was added only in 2.0 final and does not exist in 2.0-RC3 */
875         faacDecConfiguration conf; conf.dontUpSampleImplicitSBR = 1;
876         #endif
877     ], [
878       HAVE_FAAD="yes"
879
880       AC_MSG_CHECKING([Checking FAAD2 version in $faad_hdr])
881       for minor in 10 9 8 7 6 5 0; do
882         if test x$faad2_minor_version = "x"; then
883           AC_EGREP_CPP([GST_CHECK_FAAD_VERSION \"2\.$minor\"], [
884               #include <$faad_hdr>
885               GST_CHECK_FAAD_VERSION FAAD2_VERSION
886             ], [
887               faad2_minor_version=$minor
888             ])
889         fi
890       done
891       if test x$faad2_minor_version = "x"; then
892         AC_MSG_RESULT([no idea])
893       else
894         AC_MSG_RESULT([2.$faad2_minor_version])
895         AC_DEFINE_UNQUOTED([FAAD2_MINOR_VERSION], [$faad2_minor_version], [The x in 2.x])
896       fi
897     ], [
898       HAVE_FAAD="no"
899     ])
900   fi
901   AS_SCRUB_INCLUDE(FAAD_CFLAGS)
902   AC_SUBST(FAAD_LIBS)
903   AC_SUBST(FAAD_IS_NEAAC)
904 ])
905
906 dnl *** fbdev ***
907 translit(dnm, m, l) AM_CONDITIONAL(USE_FBDEV, true)
908 AG_GST_CHECK_FEATURE(FBDEV, [linux framebuffer], fbdevsink, [
909   if test "x$HAVE_FBDEV" != "xyes"; then
910     AC_CHECK_HEADER([linux/fb.h], HAVE_FBDEV=yes, HAVE_FBDEV=no)
911   fi
912 ])
913
914 dnl *** flite ***
915 translit(dnm, m, l) AM_CONDITIONAL(USE_FLITE, true)
916 AG_GST_CHECK_FEATURE(FLITE, [Flite plugin], flite, [
917   AG_GST_CHECK_LIBHEADER(FLITE, flite, flite_init, $LIBM, flite/flite.h,
918     FLITE_LIBS="-lflite -lflite_cmu_us_kal -lflite_usenglish -lflite_cmulex $LIBM")
919
920   AC_SUBST(FLITE_CFLAGS)
921   AC_SUBST(FLITE_LIBS)
922 ])
923
924 dnl *** gsm ***
925 translit(dnm, m, l) AM_CONDITIONAL(USE_GSM, true)
926 AG_GST_CHECK_FEATURE(GSM, [GSM library], gsmenc gsmdec, [
927   AG_GST_CHECK_LIBHEADER(GSM, gsm, gsm_create, , gsm.h, GSM_LIBS="-lgsm")
928   if test $HAVE_GSM != "yes"; then
929     AG_GST_CHECK_LIBHEADER(GSM, gsm, gsm_create, , gsm/gsm.h, GSM_LIBS="-lgsm")
930     if test $HAVE_GSM = "yes"; then
931       AC_DEFINE(GSM_HEADER_IN_SUBDIR, 1, [Define if GSM header in gsm/ subdir])
932     fi
933   fi
934   AC_SUBST(GSM_LIBS)
935 ])
936
937 dnl *** jp2k ***
938 translit(dnm, m, l) AM_CONDITIONAL(USE_JP2K, true)
939 AG_GST_CHECK_FEATURE(JP2K, [jp2k], jp2kdec jp2kenc, [
940   AG_GST_CHECK_LIBHEADER(JP2K, jasper, jas_stream_fopen, , jasper/jasper.h,
941     JP2K_LIBS="-ljasper")
942   AC_SUBST(JP2K_LIBS)
943 ])
944
945 dnl *** kate ***
946 translit(dnm, m, l) AM_CONDITIONAL(USE_KATE, true)
947 AG_GST_CHECK_FEATURE(KATE, [Kate], kate, [
948   PKG_CHECK_MODULES(KATE, kate >= 0.1.7, HAVE_KATE="yes", [
949     HAVE_KATE="no"
950   ])
951   AC_SUBST(KATE_CFLAGS)
952   AC_SUBST(KATE_LIBS)
953   PKG_CHECK_MODULES(TIGER, tiger >= 0.3.2,
954     [
955       HAVE_TIGER="yes"
956       AC_DEFINE(HAVE_TIGER, 1, [Define if libtiger is available])
957     ],
958     [
959       HAVE_TIGER="no"
960     ]
961   )
962   AM_CONDITIONAL(USE_TIGER, test "x$HAVE_TIGER" = "xyes")
963   AC_SUBST(TIGER_CFLAGS)
964   AC_SUBST(TIGER_LIBS)
965 ],,,[AM_CONDITIONAL(USE_TIGER, false)])
966
967 dnl *** ladspa ***
968 translit(dnm, m, l) AM_CONDITIONAL(USE_LADSPA, true)
969 AG_GST_CHECK_FEATURE(LADSPA, [ladspa], ladspa, [
970   AC_CHECK_HEADER(ladspa.h, HAVE_LADSPA="yes", HAVE_LADSPA="no")
971   
972   PKG_CHECK_MODULES(LRDF, lrdf, HAVE_LRDF=yes, HAVE_LRDF=no)
973   if test $HAVE_LRDF = "yes"; then
974     AC_DEFINE(HAVE_LRDF, 1, [Define if we have liblrdf])
975   fi
976   AC_SUBST(LRDF_LIBS)
977   AC_SUBST(LRDF_CFLAGS)
978 ])
979
980 dnl *** LV2 ***
981 translit(dnm, m, l) AM_CONDITIONAL(USE_LV2, true)
982 AG_GST_CHECK_FEATURE(LV2, [lv2], lv2, [
983   PKG_CHECK_MODULES(SLV2, slv2 >= 0.6.6, HAVE_LV2="yes", HAVE_LV2="no")
984   AC_SUBST(SLV2_CFLAGS)
985   AC_SUBST(SLV2_LIBS)
986 ])
987
988 dnl *** libmms ***
989 translit(dnm, m, l) AM_CONDITIONAL(USE_LIBMMS, true)
990 AG_GST_CHECK_FEATURE(LIBMMS, [mms protocol library], libmms, [
991   dnl check with pkg-config first
992   PKG_CHECK_MODULES(LIBMMS, libmms >= 0.4, HAVE_LIBMMS="yes", [
993     HAVE_LIBMMS="no"
994   ])
995 ])
996 AC_SUBST(LIBMMS_LIBS)
997
998 dnl *** linsys ***
999 translit(dnm, m, l) AM_CONDITIONAL(USE_LINSYS, true)
1000 AG_GST_CHECK_FEATURE(LINSYS, [Linear Systems SDI plugin], linsys, [
1001   case "$host" in
1002     *-*linux*)
1003       HAVE_LINSYS=yes
1004       ;;
1005     *)
1006       HAVE_LINSYS=no
1007       ;;
1008   esac
1009 ])
1010
1011 dnl *** modplug ***
1012 translit(dnm, m, l) AM_CONDITIONAL(USE_MODPLUG, true)
1013 AG_GST_CHECK_FEATURE(MODPLUG, modplug, modplug, [
1014   if test "x$HAVE_CXX" != "xyes"; then
1015     AC_MSG_WARN([Not compiling modplug plugin as it requires a C++ compiler])
1016     HAVE_MODPLUG="no"
1017   else
1018     PKG_CHECK_MODULES(MODPLUG, libmodplug, HAVE_MODPLUG="yes", HAVE_MODPLUG="no")
1019   fi
1020   AC_SUBST(MODPLUG_CFLAGS)
1021   AC_SUBST(MODPLUG_LIBS)
1022 ])
1023
1024 dnl *** mimic ***
1025 translit(dnm, m, l) AM_CONDITIONAL(USE_MIMIC, true)
1026 AG_GST_CHECK_FEATURE(MIMIC, [libmimic library], mimic, [
1027   MIMDEC_REQUIRED=1.0
1028   PKG_CHECK_MODULES(MIMIC, libmimic >= $MIMDEC_REQUIRED,
1029       HAVE_MIMIC=yes, HAVE_MIMIC=no)
1030   AC_SUBST(MIMIC_CFLAGS)
1031   AC_SUBST(MIMIC_LIBS)
1032 ])
1033
1034 dnl *** mjpegtools version info ***
1035 dnl some may prefer older version (given quirks above)
1036 dnl hm, no version info seems available within mjpegtools headers
1037 dnl and API really moves along
1038 echo
1039 PKG_CHECK_EXISTS(mjpegtools >= 1.6.1.93 mjpegtools < 1.8.0, [
1040   mjpegtools_api=10601
1041 ], [
1042   PKG_CHECK_EXISTS(mjpegtools >= 1.8.0 mjpegtools < 1.9.0, [
1043     mjpegtools_api=10800
1044   ], [
1045     PKG_CHECK_MODULES(MJPEG, mjpegtools >= 1.9.0, [
1046       dnl logging API changed in release candidates
1047       OLD_CFLAGS="$CFLAGS"
1048       OLD_LIBS="$LIBS"
1049       CFLAGS="$MJPEG_CFLAGS"
1050       LIBS="$LIBS $MJPEG_LIBS -lmjpegutils $LIBM -lpthread"
1051       AC_CHECK_FUNC(mjpeg_loglev_t, [
1052         mjpegtools_api=10903
1053         ], [
1054         mjpegtools_api=10900
1055         ])
1056       CFLAGS="$OLD_CFLAGS"
1057       LIBS="$OLD_LIBS"
1058     ], [
1059       mjpegtools_api=0
1060     ])
1061   ])
1062 ])
1063 AC_DEFINE_UNQUOTED(GST_MJPEGTOOLS_API, $mjpegtools_api,
1064   [mjpegtools API evolution])
1065
1066 dnl *** mpeg2enc ***
1067 translit(dnm, m, l) AM_CONDITIONAL(USE_MPEG2ENC, true)
1068 AG_GST_CHECK_FEATURE(MPEG2ENC, [mpeg2enc], mpeg2enc, [
1069   HAVE_MPEG2ENC="no"
1070   dnl we require a c++ compiler for this one
1071   if [ test x$HAVE_CXX = xyes ]; then
1072     dnl libmpeg2enc was first included in mjpegtools-1.6.2-rc3 (1.6.1.92)
1073     dnl since many distros include mjpegtools specifically without mplex
1074     dnl and mpeg2enc, we check for mpeg2enc on its own, too.
1075     PKG_CHECK_MODULES(MPEG2ENC, mjpegtools >= 1.6.1.93, [
1076       dnl HACK because mpeg2enc 1.8.0 header files have a spurious 'include config.h'
1077       touch config.h
1078       dnl switch over to c++ to test things
1079       AC_LANG_CPLUSPLUS
1080       OLD_CPPFLAGS="$CPPFLAGS"
1081       dnl HACK as above
1082       CPPFLAGS_GOOD="$CPPFLAGS $MPEG2ENC_CFLAGS"
1083       CPPFLAGS="$CPPFLAGS_GOOD -I."
1084       dnl check headers
1085       mpeg2enc_headers_ok=no
1086       AC_CHECK_HEADER([mpeg2encoder.hh], [
1087         MPEG2ENC_LIBS="$MPEG2ENC_LIBS -lmpeg2encpp $LIBM -lpthread"
1088         OLD_LIBS="$LIBS"
1089         LIBS="$LIBS $MPEG2ENC_LIBS"
1090         AC_MSG_CHECKING([for valid mpeg2enc objects])
1091         AC_TRY_RUN([
1092           #include <mpeg2encoder.hh>
1093           #include <mpeg2encoptions.hh>
1094
1095           int
1096           main (int   argc,
1097                 char *argv[])
1098           {
1099             MPEG2EncOptions *options = new MPEG2EncOptions ();
1100             MPEG2Encoder *encoder = new MPEG2Encoder (*options);
1101             return 0;
1102           }
1103         ],[
1104           AC_MSG_RESULT(yes)
1105           dnl so far so good, let's check more things:
1106           dnl mjpegtools-1.8.0 does not install the required
1107           dnl mpeg2syntaxcodes.h header by default, and a new release
1108           dnl is not in sight, so check for this oversight in case
1109           dnl distros or folks have fixed this themselves
1110           if test "$mjpegtools_api" -ge "10800"; then
1111             AC_CHECK_HEADER([mpeg2syntaxcodes.h], [
1112                 mpeg2enc_headers_ok=yes
1113               ], [
1114                 mpeg2enc_headers_ok=no
1115               ])
1116           else
1117             mpeg2enc_headers_ok=yes
1118           fi
1119           if test "x$mpeg2enc_headers_ok" = "xyes"; then
1120             HAVE_MPEG2ENC="yes"
1121           fi
1122           CPP_FLAGS="$CPPFLAGS_GOOD"
1123           AC_SUBST(MPEG2ENC_CFLAGS)
1124           AC_SUBST(MPEG2ENC_LIBS)
1125         ], [
1126           AC_MSG_RESULT(no)
1127         ])
1128         LIBS="$OLD_LIBS"
1129       ])
1130
1131       CPPFLAGS="$OLD_CPPFLAGS"
1132       AC_LANG_C
1133     ], [
1134       HAVE_MPEG2ENC="no"
1135     ])
1136   fi
1137 ])
1138
1139 dnl *** mplex ***
1140 translit(dnm, m, l) AM_CONDITIONAL(USE_MPLEX, true)
1141 AG_GST_CHECK_FEATURE(MPLEX, [mplex], mplex, [
1142   HAVE_MPLEX="no"
1143   dnl we require a c++ compiler for this one
1144   if [ test x$HAVE_CXX = xyes ]; then
1145     dnl libmplex was first included in mjpegtools-1.6.2-rc4 (1.6.1.93)
1146     dnl since many distros include mjpegtools specifically without mplex
1147     dnl and mpeg2enc, we check for mplex on its own, too.
1148     dnl libmplex < 1.9rc? has fuzzy ABI, valgrind and other problems
1149     PKG_CHECK_MODULES(MPLEX, mjpegtools >= 1.9.0, [
1150       dnl switch over to c++ to test things
1151       AC_LANG_CPLUSPLUS
1152       OLD_CPPFLAGS="$CPPFLAGS"
1153       CPPFLAGS="$CPPFLAGS $MPLEX_CFLAGS"
1154       AC_CHECK_HEADER(interact.hpp, [
1155         MPLEX_LIBS="$MPLEX_LIBS -lmplex2 $LIBM"
1156         OLD_LIBS="$LIBS"
1157         LIBS="$LIBS $MPLEX_LIBS"
1158         OLD_LDFLAGS="$LDFLAGS"
1159         LDFLAGS="$LDFLAGS $MPLEX_LDFLAGS"
1160         dnl older libmplex uses off_t SegmentSize (), which leads to fuzzy ABI;
1161         dnl don't want this here
1162         AC_MSG_CHECKING([for valid mplex objects])
1163         AC_TRY_RUN([
1164
1165 #include <interact.hpp>
1166 #include <outputstrm.hpp>
1167 #include <multiplexor.hpp>
1168 int
1169 main (int   argc,
1170       char *argv[])
1171 {
1172   class TestOutputStream : public OutputStream {
1173   public:
1174     TestOutputStream () : OutputStream () { }
1175     void Write (uint8_t *a, unsigned int b) { }
1176     void NextSegment () { }
1177     uint64_t SegmentSize () { }
1178     void Close () { }
1179     int Open () { }
1180 };
1181   MultiplexJob *job = new MultiplexJob ();
1182   vector<IBitStream *> inputs;
1183   job->SetupInputStreams (inputs);
1184   TestOutputStream *out = new TestOutputStream ();
1185   Multiplexor *mux = new Multiplexor(*job, *out, NULL);
1186   return 0;
1187 }
1188         ],[
1189           HAVE_MPLEX="yes"
1190           AC_SUBST(MPLEX_CFLAGS)
1191           AC_SUBST(MPLEX_LIBS)
1192           AC_SUBST(MPLEX_LDFLAGS)
1193           AC_MSG_RESULT(yes)
1194         ], AC_MSG_RESULT(no))
1195         LIBS="$OLD_LIBS"
1196         LDFLAGS="$OLD_LDFLAGS"
1197       ])
1198       CPPFLAGS="$OLD_CPPFLAGS"
1199       AC_LANG_C
1200     ], HAVE_MPLEX="no")
1201   fi
1202 ])
1203
1204 dnl *** musepack ***
1205 translit(dnm, m, l) AM_CONDITIONAL(USE_MUSEPACK, true)
1206 AG_GST_CHECK_FEATURE(MUSEPACK, [musepackdec], musepack, [
1207   AC_CHECK_HEADER([mpc/mpcdec.h], [
1208     HAVE_MUSEPACK="yes"
1209     MUSEPACK_LIBS="-lmpcdec"
1210     AC_SUBST(MUSEPACK_LIBS)
1211     ], [AC_CHECK_HEADER([mpcdec/mpcdec.h], [
1212       HAVE_MUSEPACK="yes"
1213       MUSEPACK_LIBS="-lmpcdec"
1214       AC_DEFINE(MPC_IS_OLD_API, 1, [Define if the old MusePack API is used])
1215       AC_SUBST(MUSEPACK_LIBS)
1216     ], [HAVE_MUSEPACK="no"])])
1217 ])
1218
1219 dnl *** musicbrainz ***
1220 translit(dnm, m, l) AM_CONDITIONAL(USE_MUSICBRAINZ, true)
1221 AG_GST_CHECK_FEATURE(MUSICBRAINZ, [musicbrainz tag generation], musicbrainz, [
1222   PKG_CHECK_MODULES(MUSICBRAINZ, libmusicbrainz >= 2.1.0, HAVE_MUSICBRAINZ="yes", HAVE_MUSICBRAINZ="no")
1223   AC_SUBST(MUSICBRAINZ_CFLAGS)
1224   AC_SUBST(MUSICBRAINZ_LIBS)
1225 ])
1226
1227 dnl *** MythTV ***
1228 translit(dnm, m, l) AM_CONDITIONAL(USE_MYTHTV, true)
1229 AG_GST_CHECK_FEATURE(MYTHTV, [MythTV client plugins], mythtvsrc, [
1230   PKG_CHECK_MODULES(GMYTH, gmyth >= 0.4 gmyth <= 0.7.99, HAVE_MYTHTV="yes", [
1231     HAVE_MYTHTV="no"
1232   ])
1233   AC_SUBST(GMYTH_CFLAGS)
1234   AC_SUBST(GMYTH_LIBS)
1235 ])
1236
1237 dnl *** nas ***
1238 translit(dnm, m, l) AM_CONDITIONAL(USE_NAS, true)
1239 AG_GST_CHECK_FEATURE(NAS, [nas plug-in], nassink, [
1240   HAVE_NAS="no"
1241   AG_GST_CHECK_X
1242   if test "x$HAVE_X" = "xyes"; then
1243     save_cppflags=$CFLAGS
1244     CPPFLAGS="$CPPFLAGS $X_CFLAGS"
1245     AG_GST_CHECK_LIBHEADER(NAS, audio, AuOpenServer, $X_LIBS, audio/audiolib.h,
1246       NAS_LIBS="$X_LIBS -laudio" NAS_CFLAGS="$X_CFLAGS")
1247     CPPFLAGS="$save_cppflags"
1248   fi
1249   AC_SUBST(NAS_CFLAGS)
1250   AC_SUBST(NAS_LIBS)
1251 ])
1252
1253 dnl *** neon ***
1254 translit(dnm, m, l) AM_CONDITIONAL(USE_NEON, true)
1255 AG_GST_CHECK_FEATURE(NEON, [neon http client plugins], neonhttpsrc, [
1256   PKG_CHECK_MODULES(NEON, neon >= 0.27.0  neon <= 0.29.99, HAVE_NEON="yes", [
1257     HAVE_NEON="no"
1258   ])
1259   AC_SUBST(NEON_CFLAGS)
1260   AC_SUBST(NEON_LIBS)
1261 ])
1262
1263 dnl *** ofa ***
1264 translit(dnm, m, l) AM_CONDITIONAL(USE_OFA, true)
1265 AG_GST_CHECK_FEATURE(OFA, [ofa plugins], ofa, [
1266   PKG_CHECK_MODULES(OFA, libofa >= 0.9.3, HAVE_OFA="yes", [
1267     HAVE_OFA="no"
1268   ])
1269   AC_SUBST(OFA_CFLAGS)
1270   AC_SUBST(OFA_LIBS)
1271 ])
1272
1273 dnl *** opencv ***
1274 translit(dnm, m, l) AM_CONDITIONAL(USE_OPENCV, true)
1275 AG_GST_CHECK_FEATURE(OPENCV, [opencv plugins], opencv, [
1276   dnl we specify a max. version too because we set CV_NO_BACKWARD_COMPATIBILITY
1277   dnl and don't want the build to break when a new opencv version comes out.
1278   dnl Need to adjust this upwards once we know that our code compiles fine with
1279   dnl a new version and the no-backward-compatibility define. (There doesn't
1280   dnl seem to be a switch to suppress the warnings the cvcompat.h header
1281   dnl causes.)
1282   PKG_CHECK_MODULES(OPENCV, opencv >= 2.0.0 opencv <= 2.2.0 , [
1283     AC_PROG_CXX
1284     AC_LANG_CPLUSPLUS
1285     OLD_CPPFLAGS=$CPPFLAGS
1286     CPPFLAGS=$OPENCV_CFLAGS
1287     AC_CHECK_HEADER(highgui.h, HAVE_HIGHGUI="yes", HAVE_HIGHGUI="no")
1288     AC_CHECK_HEADER(cvaux.h, HAVE_CVAUX="yes", HAVE_CVAUX="no")
1289     CPPFLAGS=$OLD_CPPFLAGS
1290     AC_LANG_C
1291     if test "x$HAVE_HIGHGUI" = "xno"; then
1292       AC_MSG_RESULT(highgui.h could not be found.)
1293       HAVE_OPENCV="no"
1294     elif test "x$HAVE_CVAUX" = "xno"; then
1295       AC_MSG_RESULT(cvaux.h could not be found.)
1296       HAVE_OPENCV="no"
1297     else
1298       HAVE_OPENCV="yes"
1299     fi
1300   ], [
1301     HAVE_OPENCV="no"
1302   ])
1303   AC_SUBST(OPENCV_CFLAGS)
1304   AC_SUBST(OPENCV_LIBS)
1305 ])
1306
1307 dnl *** rsvg ***
1308 translit(dnm, m, l) AM_CONDITIONAL(USE_RSVG, true)
1309 AG_GST_CHECK_FEATURE(RSVG, [rsvg decoder], rsvg, [
1310   PKG_CHECK_MODULES(RSVG, librsvg-2.0 >= 2.14 cairo, HAVE_RSVG="yes", [
1311     HAVE_RSVG="no"
1312   ])
1313   AC_SUBST(RSVG_CFLAGS)
1314   AC_SUBST(RSVG_LIBS)
1315 ])
1316
1317 dnl *** timidity ***
1318 translit(dnm, m, l) AM_CONDITIONAL(USE_TIMIDITY, true)
1319 AG_GST_CHECK_FEATURE(TIMIDITY, [timidity midi soft synth plugin], timidity, [
1320   PKG_CHECK_MODULES(TIMIDITY, libtimidity, [
1321     HAVE_TIMIDITY="yes",
1322         AC_MSG_CHECKING([for timidity.cfg])
1323         timidity_cfg=""
1324         if test -r /etc/timidity.cfg; then
1325           timidity_cfg=/etc/timidity.cfg
1326         elif test -r /etc/timidity/timidity.cfg; then
1327           timidity_cfg=/etc/timidity/timidity.cfg
1328         elif test -r /usr/share/timidity/timidity.cfg; then
1329           timidity_cfg=/usr/share/timidity/timidity.cfg
1330         elif test -r /usr/local/share/timidity/timidity.cfg; then
1331           timidity_cfg=/usr/local/share/timidity/timidity.cfg
1332         fi
1333         if test "x$timidity_cfg" != "x"; then
1334           AC_MSG_RESULT($timidity_cfg)
1335       AC_DEFINE_UNQUOTED(TIMIDITY_CFG, "$timidity_cfg", [Define location of timidity.cfg])
1336         else
1337           AC_MSG_RESULT([not found])
1338         fi
1339   ], [
1340     HAVE_TIMIDITY="no"
1341   ])
1342   AC_SUBST(TIMIDITY_CFLAGS)
1343   AC_SUBST(TIMIDITY_LIBS)
1344 ])
1345
1346 dnl *** wildmidi ***
1347 translit(dnm, m, l) AM_CONDITIONAL(USE_WILDMIDI, true)
1348 AG_GST_CHECK_FEATURE(WILDMIDI, [wildmidi midi soft synth plugin], wildmidi, [
1349   AG_GST_CHECK_LIBHEADER(WILDMIDI, WildMidi,
1350                          WildMidi_Init, ,
1351                          wildmidi_lib.h,
1352                          WILDMIDI_LIBS="-lWildMidi")
1353   AC_CHECK_LIB(WildMidi, WildMidi_LoadSamples, AC_DEFINE(HAVE_WILDMIDI_0_2_2, [1], [Have WildMidi 0.2.2 or earlier library]))
1354
1355   if test "x$HAVE_WILDMIDI" = "xyes"; then
1356          WILDMIDI_CFLAGS=
1357          WILDMIDI_LIBS=-lWildMidi
1358          AC_MSG_NOTICE(compiling gstWildMidi)
1359   else
1360          WILDMIDI_CFLAGS=
1361          WILDMIDI_LIBS=
1362          AC_MSG_WARN(no WildMidi library found (libWildMidi))
1363   fi
1364   AC_SUBST(WILDMIDI_CFLAGS)
1365   AC_SUBST(WILDMIDI_LIBS)
1366 ])
1367
1368 dnl *** SDL ***
1369 translit(dnm, m, l) AM_CONDITIONAL(USE_SDL, true)
1370 AG_GST_CHECK_FEATURE(SDL, [SDL plug-in], sdlvideosink sdlaudiosink, [
1371     AM_PATH_SDL(, HAVE_SDL=yes, HAVE_SDL=no)
1372 ])
1373
1374 dnl *** sndfile ***
1375 translit(dnm, m, l) AM_CONDITIONAL(USE_SNDFILE, true)
1376 AG_GST_CHECK_FEATURE(SNDFILE, [sndfile plug-in], sfsrc sfsink, [
1377   PKG_CHECK_MODULES(SNDFILE, sndfile >= 1.0.16, HAVE_SNDFILE="yes", HAVE_SNDFILE="no")
1378   AC_SUBST(SNDFILE_CFLAGS)
1379   AC_SUBST(SNDFILE_LIBS)
1380 ])
1381
1382 dnl *** soundtouch ***
1383 translit(dnm, m, l) AM_CONDITIONAL(USE_SOUNDTOUCH, true)
1384 AG_GST_CHECK_FEATURE(SOUNDTOUCH, [soundtouch plug-in], soundtouch, [
1385   dnl We only need -lBPM on soundtouch < 1.4
1386   dnl We check for libSoundTouch since Debian used it before upstream
1387   dnl added a pkgconfig file.
1388   HAVE_SOUNDTOUCH_1_4=yes
1389   PKG_CHECK_MODULES(SOUNDTOUCH, soundtouch,
1390     [HAVE_SOUNDTOUCH=yes],
1391     [PKG_CHECK_MODULES(SOUNDTOUCH, soundtouch-1.4,
1392       [HAVE_SOUNDTOUCH=yes],
1393       [PKG_CHECK_MODULES(SOUNDTOUCH, soundtouch-1.0,
1394         [HAVE_SOUNDTOUCH=yes
1395           HAVE_SOUNDTOUCH_1_4=no
1396           SOUNDTOUCH_LIBS="$SOUNDTOUCH_LIBS -lBPM"], 
1397         [PKG_CHECK_MODULES(SOUNDTOUCH, libSoundTouch >= 1.4,
1398           [HAVE_SOUNDTOUCH=yes],
1399           [PKG_CHECK_MODULES(SOUNDTOUCH, libSoundTouch,
1400             [HAVE_SOUNDTOUCH=yes
1401               HAVE_SOUNDTOUCH_1_4=no
1402               SOUNDTOUCH_LIBS="$SOUNDTOUCH_LIBS -lBPM"],
1403             HAVE_SOUNDTOUCH=no)])])])])
1404   AC_SUBST(SOUNDTOUCH_CFLAGS)
1405   AC_SUBST(SOUNDTOUCH_LIBS)
1406   if test "x$HAVE_CXX" != "xyes"; then
1407     USE_SOUNDTOUCH=false
1408     AC_MSG_NOTICE([Not building soundtouch plugin: no C++ compiler found])
1409   fi
1410   if test "x$HAVE_SOUNDTOUCH" = "xyes" -a "x$HAVE_SOUNDTOUCH_1_4" = "xyes"; then
1411      AC_DEFINE([HAVE_SOUNDTOUCH_1_4], [1],
1412          [Defined if the available libSoundTouch is >= 1.4])
1413   fi
1414 ])
1415
1416 dnl *** spc ***
1417 translit(dnm, m, l) AM_CONDITIONAL(USE_SPC, true)
1418 AG_GST_CHECK_FEATURE(SPC, [spc decoder], spc, [
1419   AC_CHECK_HEADER(openspc.h, [
1420     AC_CHECK_LIB(openspc, OSPC_Init, [
1421       SPC_LIBS="-lopenspc"
1422       AC_SUBST(SPC_LIBS)
1423       HAVE_SPC=yes
1424     ], [
1425       HAVE_SPC=no
1426     ])
1427   ], [
1428     HAVE_SPC=no
1429   ])
1430 ])
1431
1432 dnl *** gme ***
1433 translit(dnm, m, l) AM_CONDITIONAL(USE_GME, true)
1434 AG_GST_CHECK_FEATURE(GME, [gme decoder], gme, [
1435   AC_CHECK_HEADER(gme/gme.h, [
1436     AC_CHECK_LIB(gme, gme_new_emu, [
1437       GME_LIBS="-lgme"
1438       AC_SUBST(GME_LIBS)
1439       HAVE_GME=yes
1440     ], [
1441       HAVE_GME=no
1442     ])
1443   ], [
1444     HAVE_GME=no
1445   ])
1446
1447   if test "x$HAVE_GME" = "xyes"; then
1448     AC_CHECK_LIB(gme, gme_enable_accuracy, [
1449       AC_DEFINE(HAVE_LIBGME_ACCURACY, 1, [Define if gme 0.5.6 or newer is available])
1450       ])
1451   fi
1452 ])
1453
1454 dnl *** swfdec ***
1455 translit(dnm, m, l) AM_CONDITIONAL(USE_SWFDEC, true)
1456 AG_GST_CHECK_FEATURE(SWFDEC, [swfdec plug-in], swfdec, [
1457   PKG_CHECK_MODULES(SWFDEC, swfdec-0.3 >= 0.3.6, HAVE_SWFDEC=yes, [
1458     HAVE_SWFDEC=no
1459   ])
1460   AC_SUBST(SWFDEC_CFLAGS)
1461   AC_SUBST(SWFDEC_LIBS)
1462 ])
1463
1464 dnl *** XVID ***
1465 translit(dnm, m, l) AM_CONDITIONAL(USE_XVID, true)
1466 AG_GST_CHECK_FEATURE(XVID, [xvid plugins], xvid, [
1467   HAVE_XVID=no
1468   AC_CHECK_HEADER(xvid.h, [
1469     OLD_LIBS="$LIBS"
1470     LIBS="-lpthread $LIBM"
1471     AC_CHECK_LIB(xvidcore, xvid_encore, [
1472       AC_CHECK_LIB(xvidcore, xvid_decore, [
1473         AC_CHECK_LIB(xvidcore, xvid_global, [
1474           AC_MSG_CHECKING([for uptodate XviD API version])
1475           AC_TRY_COMPILE([#include <xvid.h>], [
1476               #if XVID_API_MAJOR(XVID_API) != 4
1477               #error "Incompatible XviD API version"
1478               #endif
1479           ],[ AC_MSG_RESULT(yes)
1480             XVID_LIBS="-lxvidcore $LIBM"
1481             AC_SUBST(XVID_LIBS)
1482             HAVE_XVID=yes
1483           ], AC_MSG_RESULT(no) )
1484         ], )
1485       ], )
1486     ], )
1487     LIBS="$OLD_LIBS"
1488   ], )
1489 ])
1490
1491 dnl *** dvb ***
1492 translit(dnm, m, l) AM_CONDITIONAL(USE_DVB, true)
1493 AG_GST_CHECK_FEATURE(DVB, [DVB Source], dvb, [
1494   AC_MSG_CHECKING([Checking for up to date dvb installation])
1495   AC_CHECK_HEADER(linux/dvb/frontend.h, [HAVE_DVB="yes"], [HAVE_DVB="no"])
1496 ])
1497
1498 dnl *** wininet ***
1499 translit(dnm, m, l) AM_CONDITIONAL(USE_WININET, true)
1500 AG_GST_CHECK_FEATURE(WININET, [Windows internet library], wininet, [
1501   AC_MSG_CHECKING([Checking for windows internet support])
1502   AC_CHECK_HEADERS([windows.h wininet.h],
1503       [HAVE_WININET="yes"], [HAVE_WININET="no"])
1504 ])
1505
1506 dnl *** acm ***
1507 translit(dnm, m, l) AM_CONDITIONAL(USE_ACM, true)
1508 AG_GST_CHECK_FEATURE(ACM, [Windows ACM library], acm, [
1509   AC_MSG_CHECKING([Checking for ACM support])
1510   AC_CHECK_HEADERS([windows.h msacm.h],
1511       [HAVE_ACM="yes"
1512        AC_SUBST(ACMENC_CFLAGS)
1513        AC_SUBST(ACMMP3DEC_CFLAGS)
1514       ], [HAVE_ACM="no"],
1515       [AC_INCLUDES_DEFAULT
1516 #include <windows.h>])
1517 ])
1518
1519 dnl *** vdpau ***
1520 translit(dnm, m, l) AM_CONDITIONAL(USE_VDPAU, true)
1521 AG_GST_CHECK_FEATURE(VDPAU, [VDPAU], vdpau, [
1522   VDPAU_CFLAGS=
1523   VDPAU_LIBS=-lvdpau
1524   HAVE_VDPAU=no
1525
1526   PKG_CHECK_MODULES(VDPAU, vdpau, [HAVE_VDPAU="yes"],
1527   [
1528     if test "$HAVE_VDPAU" = "no"; then
1529       saved_CPPFLAGS="$CPPFLAGS"
1530       AC_CHECK_HEADER([vdpau/vdpau.h], [HAVE_VDPAU_H=yes])
1531       
1532       if test -z "$HAVE_VDPAU_H"; then
1533         dnl Didn't find VDPAU header straight away.
1534         dnl Try /usr/include/nvidia. Need to clear caching vars first
1535         AC_MSG_NOTICE([VDPAU header not in standard path. Checking /usr/include/nvidia])
1536         unset ac_cv_header_vdpau_vdpau_h
1537         unset ac_cv_header_vdpau_vdpau_x11_h
1538         VDPAU_CFLAGS="-I/usr/include/nvidia"
1539         VDPAU_LIBS="-L/usr/lib/nvidia -lvdpau"
1540         CPPFLAGS="$VDPAU_CFLAGS $saved_CPPFLAGS"
1541         AC_CHECK_HEADER([vdpau/vdpau.h], [HAVE_VDPAU_H=yes])
1542       fi
1543       
1544       AC_CHECK_HEADER([vdpau/vdpau_x11.h], [HAVE_VDPAU_X11_H=yes])
1545   
1546       if test "x$HAVE_VDPAU_H" = "xyes" -a "x$HAVE_VDPAU_X11_H" = "xyes"; then
1547         dnl Found the headers - look for the lib
1548         AC_MSG_NOTICE([VDPAU headers found. Checking libraries])
1549         saved_LIBS="$LIBS"
1550         LIBS="$VDPAU_LIBS $saved_LIBS"
1551         AC_CHECK_LIB(vdpau,vdp_device_create_x11,[HAVE_VDPAU="yes"])
1552         LIBS="$saved_LIBS"
1553       fi
1554     fi
1555   ])
1556
1557   if test "$HAVE_VDPAU" = "yes"; then
1558     AC_MSG_NOTICE([Found up to date VDPAU installation])
1559     AC_SUBST(VDPAU_CFLAGS)
1560     AC_SUBST(VDPAU_LIBS)
1561   fi
1562 ])
1563
1564 dnl *** schroedinger ***
1565 translit(dnm, m, l) AM_CONDITIONAL(USE_SCHRO, true)
1566 AG_GST_CHECK_FEATURE(SCHRO, [Schroedinger video codec], schro, [
1567   AG_GST_PKG_CHECK_MODULES(SCHRO, schroedinger-1.0 >= 1.0.7)
1568 ])
1569
1570 dnl *** zbar ***
1571 translit(dnm, m, l) AM_CONDITIONAL(USE_ZBAR, true)
1572 AG_GST_CHECK_FEATURE(ZBAR, [ZBar barcode detector], zbar, [
1573   AG_GST_PKG_CHECK_MODULES(ZBAR, zbar >= 0.9)
1574 ])
1575
1576 dnl *** vp8 ***
1577 translit(dnm, m, l) AM_CONDITIONAL(USE_VP8, vp8)
1578 AG_GST_CHECK_FEATURE(VP8, [VP8 decoder], vp8, [
1579   VPX_LIBS=""
1580   AG_GST_CHECK_LIBHEADER(VPX, vpx,
1581                         vpx_codec_version, ,
1582                         vpx/vpx_codec.h, [
1583     HAVE_VP8_ENCODER=no
1584     HAVE_VP8_DECODER=no
1585
1586     OLD_LIBS="$LIBS"
1587     LIBS="$LIBS $LIBM -lpthread"
1588     AC_CHECK_LIB(vpx, vpx_codec_vp8_cx_algo, [
1589       HAVE_VP8=yes
1590       AC_DEFINE(HAVE_VP8_ENCODER, 1, [Defined if the VP8 encoder is available])
1591       VPX_LIBS="-lvpx"
1592     ])
1593     AC_CHECK_LIB(vpx, vpx_codec_vp8_dx_algo, [
1594       HAVE_VP8=yes
1595       AC_DEFINE(HAVE_VP8_DECODER, 1, [Defined if the VP8 decoder is available])
1596       VPX_LIBS="-lvpx"
1597     ])
1598     LIBS="$OLD_LIBS"
1599   ])
1600   AC_SUBST(VPX_LIBS)
1601 ])
1602
1603 dnl *** rtmp ***
1604 translit(dnm, m, l) AM_CONDITIONAL(USE_RTMP, true)
1605 AG_GST_CHECK_FEATURE(RTMP, [rtmp library], rtmp, [
1606   AG_GST_PKG_CHECK_MODULES(RTMP, librtmp)
1607 ])
1608
1609 dnl *** GSettings ***
1610 translit(dnm, m, l) AM_CONDITIONAL(USE_GSETTINGS, true)
1611 AG_GST_CHECK_FEATURE(GSETTINGS, [GSettings plugin], gsettings, [
1612   AG_GST_PKG_CHECK_MODULES(GSETTINGS, gio-2.0 >= 2.25.0)
1613   if test "x$HAVE_GSETTINGS" = "xyes"; then
1614     GLIB_GSETTINGS
1615   fi
1616 ])
1617
1618 else
1619
1620 dnl not building plugins with external dependencies,
1621 dnl but we still need to set the conditionals
1622
1623 AM_CONDITIONAL(USE_ASSRENDER, false)
1624 AM_CONDITIONAL(USE_AMRWB, false)
1625 AM_CONDITIONAL(USE_APEXSINK, false)
1626 AM_CONDITIONAL(USE_BZ2, false)
1627 AM_CONDITIONAL(USE_CDAUDIO, false)
1628 AM_CONDITIONAL(USE_CELT, false)
1629 AM_CONDITIONAL(USE_COG, false)
1630 AM_CONDITIONAL(USE_CURL, false)
1631 AM_CONDITIONAL(USE_DC1394, false)
1632 AM_CONDITIONAL(USE_DECKLINK, false)
1633 AM_CONDITIONAL(USE_DIRECTFB, false)
1634 AM_CONDITIONAL(USE_DIRAC, false)
1635 AM_CONDITIONAL(USE_DTS, false)
1636 AM_CONDITIONAL(USE_DIVX, false)
1637 AM_CONDITIONAL(USE_EXIF, false)
1638 AM_CONDITIONAL(USE_RESINDVD, false)
1639 AM_CONDITIONAL(USE_FAAC, false)
1640 AM_CONDITIONAL(USE_FAAD, false)
1641 AM_CONDITIONAL(USE_FBDEV, false)
1642 AM_CONDITIONAL(USE_FLITE, false)
1643 AM_CONDITIONAL(USE_GSM, false)
1644 AM_CONDITIONAL(USE_JP2K, false)
1645 AM_CONDITIONAL(USE_KATE, false)
1646 AM_CONDITIONAL(USE_TIGER, false)
1647 AM_CONDITIONAL(USE_LADSPA, false)
1648 AM_CONDITIONAL(USE_LV2, false)
1649 AM_CONDITIONAL(USE_LIBMMS, false)
1650 AM_CONDITIONAL(USE_LINSYS, false)
1651 AM_CONDITIONAL(USE_MODPLUG, false)
1652 AM_CONDITIONAL(USE_MIMIC, false)
1653 AM_CONDITIONAL(USE_MPEG2ENC, false)
1654 AM_CONDITIONAL(USE_MPLEX, false)
1655 AM_CONDITIONAL(USE_MUSEPACK, false)
1656 AM_CONDITIONAL(USE_MUSICBRAINZ, false)
1657 AM_CONDITIONAL(USE_MYTHTV, false)
1658 AM_CONDITIONAL(USE_NAS, false)
1659 AM_CONDITIONAL(USE_NEON, false)
1660 AM_CONDITIONAL(USE_OFA, false)
1661 AM_CONDITIONAL(USE_OPENCV, false)
1662 AM_CONDITIONAL(USE_RSVG, false)
1663 AM_CONDITIONAL(USE_TIMIDITY, false)
1664 AM_CONDITIONAL(USE_WILDMIDI, false)
1665 AM_CONDITIONAL(USE_SDL, false)
1666 AM_CONDITIONAL(USE_SNDFILE, false)
1667 AM_CONDITIONAL(USE_SOUNDTOUCH, false)
1668 AM_CONDITIONAL(USE_SPC, false)
1669 AM_CONDITIONAL(USE_GME, false)
1670 AM_CONDITIONAL(USE_GSETTINGS, false)
1671 AM_CONDITIONAL(USE_SWFDEC, false)
1672 AM_CONDITIONAL(USE_XVID, false)
1673 AM_CONDITIONAL(USE_DVB, false)
1674 AM_CONDITIONAL(USE_WININET, false)
1675 AM_CONDITIONAL(USE_ACM, false)
1676 AM_CONDITIONAL(USE_VDPAU, false)
1677 AM_CONDITIONAL(USE_SCHRO, false)
1678 AM_CONDITIONAL(USE_ZBAR, false)
1679 AM_CONDITIONAL(USE_VP8, false)
1680 AM_CONDITIONAL(USE_RTMP, false)
1681
1682 fi dnl of EXT plugins
1683
1684 dnl *** finalize CFLAGS, LDFLAGS, LIBS
1685
1686 dnl Overview:
1687 dnl GST_OPTION_CFLAGS:  common flags for profiling, debugging, errors, ...
1688 dnl GST_*:              flags shared by built objects to link against GStreamer
1689 dnl GST_ALL_LDFLAGS:    linker flags shared by all
1690 dnl GST_LIB_LDFLAGS:    additional linker flags for all libaries
1691 dnl GST_LT_LDFLAGS:     library versioning of our libraries
1692 dnl GST_PLUGIN_LDFLAGS: flags to be used for all plugins
1693
1694 dnl GST_OPTION_CFLAGS
1695 if test "x$USE_DEBUG" = xyes; then
1696    PROFILE_CFLAGS="-g"
1697 fi
1698 AC_SUBST(PROFILE_CFLAGS)
1699
1700 if test "x$PACKAGE_VERSION_NANO" = "x1"; then
1701   dnl Define _only_ during CVS (not pre-releases or releases)
1702   DEPRECATED_CFLAGS="-DGST_DISABLE_DEPRECATED"
1703 else
1704   DEPRECATED_CFLAGS=""
1705 fi
1706 AC_SUBST(DEPRECATED_CFLAGS)
1707
1708 dnl every flag in GST_OPTION_CFLAGS and GST_OPTION_CXXFLAGS can be overridden
1709 dnl at make time with e.g. make ERROR_CFLAGS=""
1710 GST_OPTION_CFLAGS="\$(WARNING_CFLAGS) \$(ERROR_CFLAGS) \$(DEBUG_CFLAGS) \$(PROFILE_CFLAGS) \$(GCOV_CFLAGS) \$(OPT_CFLAGS) \$(DEPRECATED_CFLAGS)"
1711 GST_OPTION_CXXFLAGS="\$(WARNING_CXXFLAGS) \$(ERROR_CXXFLAGS) \$(DEBUG_CFLAGS) \$(PROFILE_CFLAGS) \$(GCOV_CFLAGS) \$(OPT_CFLAGS) \$(DEPRECATED_CFLAGS)"
1712 AC_SUBST(GST_OPTION_CFLAGS)
1713 AC_SUBST(GST_OPTION_CXXFLAGS)
1714
1715 dnl FIXME: do we want to rename to GST_ALL_* ?
1716 dnl prefer internal headers to already installed ones
1717 dnl also add builddir include for enumtypes and marshal
1718 dnl add GST_OPTION_CFLAGS, but overridable
1719 GST_CXXFLAGS="$GST_CFLAGS $GLIB_EXTRA_CFLAGS \$(GST_OPTION_CXXFLAGS)"
1720 GST_CFLAGS="$GST_CFLAGS $GLIB_EXTRA_CFLAGS \$(GST_OPTION_CFLAGS)"
1721 AC_SUBST(GST_CFLAGS)
1722 AC_SUBST(GST_CXXFLAGS)
1723 AC_SUBST(GST_LIBS)
1724 GST_PLUGINS_BAD_CXXFLAGS="-I\$(top_srcdir)/gst-libs -I\$(top_builddir)/gst-libs"
1725 GST_PLUGINS_BAD_CFLAGS="-I\$(top_srcdir)/gst-libs -I\$(top_builddir)/gst-libs"
1726 AC_SUBST(GST_PLUGINS_BAD_CFLAGS)
1727 AC_SUBST(GST_PLUGINS_BAD_CXXFLAGS)
1728
1729 dnl LDFLAGS really should only contain flags, not libs - they get added before
1730 dnl whatevertarget_LIBS and -L flags here affect the rest of the linking
1731 GST_ALL_LDFLAGS="-no-undefined"
1732 AC_SUBST(GST_ALL_LDFLAGS)
1733
1734 dnl GST_LIB_LDFLAGS
1735 dnl linker flags shared by all libraries
1736 dnl LDFLAGS modifier defining exported symbols from built libraries
1737 dnl (export _gst_foo but not __gst_foo)
1738 GST_LIB_LDFLAGS="-export-symbols-regex ^_?\(gst_\|Gst\|GST_\).*"
1739 AC_SUBST(GST_LIB_LDFLAGS)
1740
1741 dnl this really should only contain flags, not libs - they get added before
1742 dnl whatevertarget_LIBS and -L flags here affect the rest of the linking
1743 GST_PLUGIN_LDFLAGS="-module -avoid-version -export-symbols-regex '^[_]*gst_plugin_desc.*' $GST_ALL_LDFLAGS"
1744 AC_SUBST(GST_PLUGIN_LDFLAGS)
1745
1746 dnl *** output files ***
1747
1748 dnl po/Makefile.in
1749
1750 AC_CONFIG_FILES(
1751 Makefile
1752 common/Makefile
1753 common/m4/Makefile
1754 gst-plugins-bad.spec
1755 gst/Makefile
1756 gst/adpcmdec/Makefile
1757 gst/adpcmenc/Makefile
1758 gst/aiff/Makefile
1759 gst/asfmux/Makefile
1760 gst/autoconvert/Makefile
1761 gst/bayer/Makefile
1762 gst/camerabin/Makefile
1763 gst/camerabin2/Makefile
1764 gst/cdxaparse/Makefile
1765 gst/colorspace/Makefile
1766 gst/coloreffects/Makefile
1767 gst/dataurisrc/Makefile
1768 gst/dccp/Makefile
1769 gst/debugutils/Makefile
1770 gst/dtmf/Makefile
1771 gst/dvbsuboverlay/Makefile
1772 gst/dvdspu/Makefile
1773 gst/festival/Makefile
1774 gst/fieldanalysis/Makefile
1775 gst/freeze/Makefile
1776 gst/frei0r/Makefile
1777 gst/gaudieffects/Makefile
1778 gst/geometrictransform/Makefile
1779 gst/h264parse/Makefile
1780 gst/hdvparse/Makefile
1781 gst/hls/Makefile
1782 gst/id3tag/Makefile
1783 gst/interlace/Makefile
1784 gst/invtelecine/Makefile
1785 gst/ivfparse/Makefile
1786 gst/jp2kdecimator/Makefile
1787 gst/jpegformat/Makefile
1788 gst/legacyresample/Makefile
1789 gst/librfb/Makefile
1790 gst/liveadder/Makefile
1791 gst/mpegdemux/Makefile
1792 gst/mpegtsdemux/Makefile
1793 gst/mpegtsmux/Makefile
1794 gst/mpegtsmux/tsmux/Makefile
1795 gst/mpegpsmux/Makefile
1796 gst/mpeg4videoparse/Makefile
1797 gst/mpegvideoparse/Makefile
1798 gst/mve/Makefile
1799 gst/mxf/Makefile
1800 gst/nsf/Makefile
1801 gst/nuvdemux/Makefile
1802 gst/patchdetect/Makefile
1803 gst/pcapparse/Makefile
1804 gst/pnm/Makefile
1805 gst/rawparse/Makefile
1806 gst/real/Makefile
1807 gst/rtpmux/Makefile
1808 gst/rtpvp8/Makefile
1809 gst/scaletempo/Makefile
1810 gst/sdi/Makefile
1811 gst/sdp/Makefile
1812 gst/segmentclip/Makefile
1813 gst/siren/Makefile
1814 gst/speed/Makefile
1815 gst/subenc/Makefile
1816 gst/stereo/Makefile
1817 gst/tta/Makefile
1818 gst/videofilters/Makefile
1819 gst/videomaxrate/Makefile
1820 gst/videomeasure/Makefile
1821 gst/videoparsers/Makefile
1822 gst/videosignal/Makefile
1823 gst/vmnc/Makefile
1824 gst/y4m/Makefile
1825 gst-libs/Makefile
1826 gst-libs/gst/Makefile
1827 gst-libs/gst/basecamerabinsrc/Makefile
1828 gst-libs/gst/interfaces/Makefile
1829 gst-libs/gst/signalprocessor/Makefile
1830 gst-libs/gst/video/Makefile
1831 sys/Makefile
1832 sys/dshowdecwrapper/Makefile
1833 sys/acmenc/Makefile
1834 sys/acmmp3dec/Makefile
1835 sys/applemedia/Makefile
1836 sys/decklink/Makefile
1837 sys/directdraw/Makefile
1838 sys/directsound/Makefile
1839 sys/dshowsrcwrapper/Makefile
1840 sys/dshowvideosink/Makefile
1841 sys/dvb/Makefile
1842 sys/fbdev/Makefile
1843 sys/linsys/Makefile
1844 sys/osxvideo/Makefile
1845 sys/qtwrapper/Makefile
1846 sys/shm/Makefile
1847 sys/vcd/Makefile
1848 sys/vdpau/Makefile
1849 sys/vdpau/gstvdp/Makefile
1850 sys/vdpau/basevideodecoder/Makefile
1851 sys/wasapi/Makefile
1852 sys/wininet/Makefile
1853 sys/winks/Makefile
1854 sys/winscreencap/Makefile
1855 tests/Makefile
1856 tests/check/Makefile
1857 tests/files/Makefile
1858 tests/examples/Makefile
1859 tests/examples/camerabin/Makefile
1860 tests/examples/camerabin2/Makefile
1861 tests/examples/directfb/Makefile
1862 tests/examples/mxf/Makefile
1863 tests/examples/scaletempo/Makefile
1864 tests/icles/Makefile
1865 ext/amrwbenc/Makefile
1866 ext/assrender/Makefile
1867 ext/apexsink/Makefile
1868 ext/bz2/Makefile
1869 ext/cdaudio/Makefile
1870 ext/celt/Makefile
1871 ext/cog/Makefile
1872 ext/curl/Makefile
1873 ext/dc1394/Makefile
1874 ext/dirac/Makefile
1875 ext/directfb/Makefile
1876 ext/divx/Makefile
1877 ext/dts/Makefile
1878 ext/faac/Makefile
1879 ext/faad/Makefile
1880 ext/flite/Makefile
1881 ext/gsm/Makefile
1882 ext/jp2k/Makefile
1883 ext/kate/Makefile
1884 ext/ladspa/Makefile
1885 ext/lv2/Makefile
1886 ext/libmms/Makefile
1887 ext/Makefile
1888 ext/modplug/Makefile
1889 ext/mpeg2enc/Makefile
1890 ext/mimic/Makefile
1891 ext/mplex/Makefile
1892 ext/musepack/Makefile
1893 ext/musicbrainz/Makefile
1894 ext/mythtv/Makefile
1895 ext/nas/Makefile
1896 ext/neon/Makefile
1897 ext/ofa/Makefile
1898 ext/opencv/Makefile
1899 ext/rsvg/Makefile
1900 ext/resindvd/Makefile
1901 ext/rtmp/Makefile
1902 ext/schroedinger/Makefile
1903 ext/sdl/Makefile
1904 ext/sndfile/Makefile
1905 ext/soundtouch/Makefile
1906 ext/gme/Makefile
1907 ext/gsettings/Makefile
1908 ext/gsettings/org.freedesktop.gstreamer.default-elements.gschema.xml
1909 ext/spc/Makefile
1910 ext/swfdec/Makefile
1911 ext/timidity/Makefile
1912 ext/vp8/Makefile
1913 ext/xvid/Makefile
1914 ext/zbar/Makefile
1915 po/Makefile.in
1916 docs/Makefile
1917 docs/plugins/Makefile
1918 docs/version.entities
1919 pkgconfig/Makefile
1920 pkgconfig/gstreamer-plugins-bad.pc
1921 pkgconfig/gstreamer-plugins-bad-uninstalled.pc
1922 tools/Makefile
1923 m4/Makefile
1924 win32/common/config.h
1925 )
1926 AC_OUTPUT
1927
1928 AG_GST_OUTPUT_PLUGINS
1929 ORC_OUTPUT
1930