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