bluez: add new plugin to build system, but disable for now
[platform/upstream/gstreamer.git] / configure.ac
1 AC_PREREQ([2.68])
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],[1.1.0.1],[http://bugzilla.gnome.org/enter_bug.cgi?product=GStreamer],[gst-plugins-bad])
7
8 AG_GST_INIT
9
10 dnl initialize automake
11 AM_INIT_AUTOMAKE([-Wno-portability 1.11 no-dist-gzip dist-xz tar-ustar])
12
13 dnl define PACKAGE_VERSION_* variables
14 AS_VERSION
15
16 dnl check if this is a release version
17 AS_NANO(GST_GIT="no", GST_GIT="yes")
18
19 dnl can autoconf find the source ?
20 AC_CONFIG_SRCDIR([docs/plugins/gst-plugins-bad-plugins-docs.sgml])
21
22 dnl define the output header for config
23 AC_CONFIG_HEADERS([config.h])
24
25 dnl AM_MAINTAINER_MODE only provides the option to configure to enable it
26 AM_MAINTAINER_MODE([enable])
27
28 dnl sets host_* variables
29 AC_CANONICAL_HOST
30
31 dnl use pretty build output with automake >= 1.11
32 m4_ifdef([AM_SILENT_RULES],[AM_SILENT_RULES([yes])],
33   [AM_DEFAULT_VERBOSITY=1
34    AC_SUBST(AM_DEFAULT_VERBOSITY)])
35
36 dnl our libraries and install dirs use GST_API_VERSION in the filename
37 dnl to allow side-by-side installation of different API versions
38 GST_API_VERSION=1.0
39 AC_SUBST(GST_API_VERSION)
40 AC_DEFINE_UNQUOTED(GST_API_VERSION, "$GST_API_VERSION",
41   [GStreamer API Version])
42
43 AG_GST_LIBTOOL_PREPARE
44
45 dnl CURRENT, REVISION, AGE
46 dnl - library source changed -> increment REVISION
47 dnl - interfaces added/removed/changed -> increment CURRENT, REVISION = 0
48 dnl - interfaces added -> increment AGE
49 dnl - interfaces removed -> AGE = 0
50 dnl sets GST_LT_LDFLAGS
51 AS_LIBTOOL(GST, 2, 0, 2)
52
53 dnl *** required versions of GStreamer stuff ***
54 GST_REQ=1.1.0
55 GSTPB_REQ=1.1.0
56
57 dnl *** autotools stuff ****
58
59 dnl allow for different autotools
60 AS_AUTOTOOLS_ALTERNATE
61
62 dnl Add parameters for aclocal
63 AC_SUBST(ACLOCAL_AMFLAGS, "-I m4 -I common/m4")
64
65 dnl set up gettext
66 dnl the version check needs to stay here because autopoint greps for it
67 AM_GNU_GETTEXT_VERSION([0.17])
68 AM_GNU_GETTEXT([external])
69 AG_GST_GETTEXT([gst-plugins-bad-$GST_API_VERSION])
70
71 dnl *** check for arguments to configure ***
72
73 AG_GST_ARG_DISABLE_FATAL_WARNINGS
74
75 AG_GST_ARG_DEBUG
76 AG_GST_ARG_PROFILING
77 AG_GST_ARG_VALGRIND
78 AG_GST_ARG_GCOV
79
80 AG_GST_ARG_EXAMPLES
81
82 AG_GST_ARG_WITH_PKG_CONFIG_PATH
83 AG_GST_ARG_WITH_PACKAGE_NAME
84 AG_GST_ARG_WITH_PACKAGE_ORIGIN
85
86 AG_GST_ARG_WITH_PLUGINS
87
88 AG_GST_ARG_ENABLE_EXTERNAL
89
90 AG_GST_ARG_ENABLE_EXPERIMENTAL
91
92 dnl *** checks for platform ***
93 AG_GST_PLATFORM
94
95 dnl * hardware/architecture *
96
97 dnl common/m4/gst-arch.m4
98 dnl check CPU type
99 AG_GST_ARCH
100
101 dnl Determine endianness
102 AC_C_BIGENDIAN
103
104 dnl *** checks for programs ***
105
106 dnl find a compiler
107 AC_PROG_CC
108 AC_PROG_CC_STDC
109
110 dnl determine c++ compiler
111 AC_PROG_CXX
112 dnl determine if c++ is available on this system
113 AC_CHECK_PROG(HAVE_CXX, $CXX, yes, no)
114
115 AC_PROG_OBJC
116
117 dnl check if the compiler supports '-c' and '-o' options
118 AM_PROG_CC_C_O
119
120 dnl check if the compiler supports do while(0) macros
121 AG_GST_CHECK_DOWHILE_MACROS
122
123 AC_PATH_PROG(VALGRIND_PATH, valgrind, no)
124 AM_CONDITIONAL(HAVE_VALGRIND, test ! "x$VALGRIND_PATH" = "xno")
125
126 dnl check for documentation tools
127 GTK_DOC_CHECK([1.12])
128 AG_GST_PLUGIN_DOCS([1.12])
129
130 dnl *** checks for libraries ***
131
132 dnl check for libm, for sin() etc.
133 LT_LIB_M
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 AC_CHECK_HEADERS([sys/time.h])
148
149 dnl used by ext/dts
150 AX_CREATE_STDINT_H
151
152 AC_CHECK_HEADERS([pthread.h], HAVE_PTHREAD_H=yes)
153 AM_CONDITIONAL(HAVE_PTHREAD_H, test "x$HAVE_PTHREAD_H" = "xyes")
154
155 if test "x$HAVE_PTHREAD_H" != "xyes"; then
156   GST_PLUGINS_SELECTED=`echo $GST_PLUGINS_SELECTED | $SED -e s/dccp//`
157 fi
158
159 dnl *** checks for types/defines ***
160
161 dnl Check for FIONREAD ioctl declaration
162 dnl used in gst/dccp
163 GST_CHECK_FIONREAD
164
165 dnl *** checks for structures ***
166
167 dnl *** checks for compiler characteristics ***
168
169 dnl *** checks for library functions ***
170 AC_CHECK_FUNCS([gmtime_r])
171
172 dnl *** checks for headers ***
173 AC_CHECK_HEADERS([sys/utsname.h])
174
175 dnl *** checks for dependency libraries ***
176
177 dnl *** checks for socket and nsl libraries ***
178 AC_CHECK_FUNC(socket,,[AC_CHECK_LIB(socket,socket)])
179 AC_CHECK_FUNC(gethostbyname,,[AC_CHECK_LIB(nsl,gethostbyname)])
180
181 dnl GLib is required
182 GLIB_REQ=2.32.0
183 AG_GST_GLIB_CHECK([$GLIB_REQ])
184
185 dnl checks for gstreamer
186 dnl uninstalled is selected preferentially -- see pkg-config(1)
187 AG_GST_CHECK_GST($GST_API_VERSION, [$GST_REQ], yes)
188 AG_GST_CHECK_GST_BASE($GST_API_VERSION, [$GST_REQ], yes)
189 AG_GST_CHECK_GST_CHECK($GST_API_VERSION, [$GST_REQ], no)
190 AG_GST_CHECK_GST_CONTROLLER($GST_API_VERSION, [$GST_REQ], yes)
191 AM_CONDITIONAL(HAVE_GST_CHECK, test "x$HAVE_GST_CHECK" = "xyes")
192
193 AG_GST_CHECK_GST_PLUGINS_BASE($GST_API_VERSION, [$GSTPB_REQ], yes)
194
195 dnl check for uninstalled plugin directories for unit tests
196 AG_GST_CHECK_UNINSTALLED_SETUP([
197   AG_GST_CHECK_GST_PLUGINS_GOOD($GST_API_VERSION, [0.11.0])
198   AG_GST_CHECK_GST_PLUGINS_UGLY($GST_API_VERSION, [0.11.0])
199   AG_GST_CHECK_GST_PLUGINS_FFMPEG($GST_API_VERSION, [0.11.0])
200 ])
201
202 dnl Check for documentation xrefs
203 GLIB_PREFIX="`$PKG_CONFIG --variable=prefix glib-2.0`"
204 GST_PREFIX="`$PKG_CONFIG --variable=prefix gstreamer-$GST_API_VERSION`"
205 GSTPB_PREFIX="`$PKG_CONFIG --variable=prefix gstreamer-plugins-base-$GST_API_VERSION`"
206 AC_SUBST(GLIB_PREFIX)
207 AC_SUBST(GST_PREFIX)
208 AC_SUBST(GSTPB_PREFIX)
209
210 dnl GTK is optional and used in examples
211 HAVE_GTK=NO
212 GTK2_REQ=2.14.0
213 GTK3_REQ=2.91.3
214 if test "x$BUILD_EXAMPLES" = "xyes"; then
215   AC_MSG_CHECKING([which gtk+ version to compile examples against (optional)])
216   AC_ARG_WITH([gtk],
217     AS_HELP_STRING([--with-gtk=3.0|2.0],[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
233
234 dnl Needed for GtkBuilder to autoconnect signals
235 PKG_CHECK_MODULES(GMODULE_EXPORT, gmodule-export-2.0, HAVE_GMODULE_EXPORT=yes, HAVE_GMODULE_EXPORT=no)
236
237 dnl Needed by plugins that use g_module_*() API
238 PKG_CHECK_MODULES(GMODULE_NO_EXPORT, gmodule-no-export-2.0)
239
240 dnl x11 is optional for librfb and eglglessink
241 HAVE_X11=NO
242 PKG_CHECK_MODULES(X11, x11, HAVE_X11=yes, HAVE_X11=no)
243 AC_SUBST(X11_LIBS)
244 AC_SUBST(X11_CFLAGS)
245 AC_SUBST(HAVE_X11)
246 AM_CONDITIONAL(HAVE_X11, test "x$HAVE_X11" = "xyes")
247 if test "x$HAVE_X11" = "xyes"; then
248   AC_DEFINE(HAVE_X11, 1, [Define if you have X11 library])
249 fi
250
251 dnl exif (used on jifmux tests) ****
252 PKG_CHECK_MODULES(EXIF, libexif >= 0.6.16, HAVE_EXIF="yes", HAVE_EXIF="no")
253 AC_SUBST(EXIF_LIBS)
254 AC_SUBST(EXIF_CFLAGS)
255 AM_CONDITIONAL(USE_EXIF, test "x$HAVE_EXIF" = "xyes")
256
257 dnl Orc
258 ORC_CHECK([0.4.16])
259
260 dnl set license and copyright notice
261 GST_LICENSE="LGPL"
262 AC_DEFINE_UNQUOTED(GST_LICENSE, "$GST_LICENSE", [GStreamer license])
263 AC_SUBST(GST_LICENSE)
264
265 dnl define LIBDIR so we can inform people where we live
266 AS_AC_EXPAND(LIBDIR, $libdir)
267 AC_DEFINE_UNQUOTED(LIBDIR, "$LIBDIR", [library dir])
268
269 dnl set location of plugin directory
270 AG_GST_SET_PLUGINDIR
271
272 dnl set release date/time
273 AG_GST_SET_PACKAGE_RELEASE_DATETIME_WITH_NANO([$PACKAGE_VERSION_NANO],
274   ["${srcdir}/gst-plugins-bad.doap"],
275   [$PACKAGE_VERSION_MAJOR.$PACKAGE_VERSION_MINOR.$PACKAGE_VERSION_MICRO])
276
277 # set by AG_GST_PARSE_SUBSYSTEM_DISABLES above
278 dnl make sure it doesn't complain about unused variables if debugging is disabled
279 NO_WARNINGS=""
280 AG_GST_CHECK_GST_DEBUG_DISABLED([NO_WARNINGS="-Wno-unused"], [NO_WARNINGS=""])
281
282 dnl define an ERROR_CFLAGS Makefile variable
283 dnl -Waggregate-return - libexif returns aggregates
284 dnl -Wundef - Windows headers check _MSC_VER unconditionally
285 AG_GST_SET_ERROR_CFLAGS($FATAL_WARNINGS, [
286     -Wmissing-declarations -Wmissing-prototypes -Wredundant-decls
287     -Wwrite-strings -Wformat-security -Wold-style-definition
288     -Winit-self -Wmissing-include-dirs -Waddress -Wno-multichar
289     -Wnested-externs $NO_WARNINGS])
290
291 dnl define an ERROR_CXXFLAGS Makefile variable
292 AG_GST_SET_ERROR_CXXFLAGS($FATAL_WARNINGS, [
293     -Wmissing-declarations -Wredundant-decls
294     -Wwrite-strings -Wformat-nonliteral -Wformat-security
295     -Winit-self -Wmissing-include-dirs -Waddress -Wno-multichar $NO_WARNINGS])
296
297 dnl define an ERROR_OBJCFLAGS Makefile variable
298 AG_GST_SET_ERROR_OBJCFLAGS($FATAL_WARNINGS, [
299     -Wmissing-declarations -Wredundant-decls
300     -Wwrite-strings -Wformat-nonliteral -Wformat-security
301     -Winit-self -Wmissing-include-dirs -Wno-multichar $NO_WARNINGS])
302
303 dnl define correct level for debugging messages
304 AG_GST_SET_LEVEL_DEFAULT($GST_GIT)
305
306 dnl used in examples
307 AG_GST_DEFAULT_ELEMENTS
308
309 dnl *** plug-ins to include ***
310 dnl Non ported plugins (non-dependant, then dependant)
311 dnl Make sure you have a space before and after all plugins
312 GST_PLUGINS_NONPORTED=" aiff \
313  cdxaparse \
314  dccp faceoverlay \
315  freeverb \
316  hdvparse ivfparse jp2kdecimator \
317  kate librfb \
318  mve mythtv nsf nuvdemux \
319  patchdetect real \
320  sdi stereo tta videofilters \
321  videomeasure videosignal vmnc \
322  decklink fbdev linsys vcd \
323  apexsink cdaudio cog dc1394 dirac directfb \
324  gsettings ladspa \
325  musepack musicbrainz nas neon ofa openal rsvg sdl sndfile timidity \
326  directdraw direct3d9 acm wininet \
327  wildmidi xvid lv2 teletextdec sndio uvch264 wasapi"
328 AC_SUBST(GST_PLUGINS_NONPORTED)
329
330 dnl these are all the gst plug-ins, compilable without additional libs
331 AG_GST_CHECK_PLUGIN(accurip)
332 AG_GST_CHECK_PLUGIN(adpcmdec)
333 AG_GST_CHECK_PLUGIN(adpcmenc)
334 AG_GST_CHECK_PLUGIN(aiff)
335 AG_GST_CHECK_PLUGIN(asfmux)
336 AG_GST_CHECK_PLUGIN(audiovisualizers)
337 AG_GST_CHECK_PLUGIN(autoconvert)
338 AG_GST_CHECK_PLUGIN(bayer)
339 AG_GST_CHECK_PLUGIN(camerabin2)
340 AG_GST_CHECK_PLUGIN(cdxaparse)
341 AG_GST_CHECK_PLUGIN(coloreffects)
342 AG_GST_CHECK_PLUGIN(dataurisrc)
343 AG_GST_CHECK_PLUGIN(dccp)
344 AG_GST_CHECK_PLUGIN(debugutils)
345 AG_GST_CHECK_PLUGIN(dtmf)
346 AG_GST_CHECK_PLUGIN(dvbsuboverlay)
347 AG_GST_CHECK_PLUGIN(dvdspu)
348 AG_GST_CHECK_PLUGIN(faceoverlay)
349 AG_GST_CHECK_PLUGIN(festival)
350 AG_GST_CHECK_PLUGIN(fieldanalysis)
351 AG_GST_CHECK_PLUGIN(freeverb)
352 AG_GST_CHECK_PLUGIN(frei0r)
353 AG_GST_CHECK_PLUGIN(gaudieffects)
354 AG_GST_CHECK_PLUGIN(geometrictransform)
355 AG_GST_CHECK_PLUGIN(gdp)
356 AG_GST_CHECK_PLUGIN(hdvparse)
357 AG_GST_CHECK_PLUGIN(hls)
358 AG_GST_CHECK_PLUGIN(id3tag)
359 AG_GST_CHECK_PLUGIN(inter)
360 AG_GST_CHECK_PLUGIN(interlace)
361 AG_GST_CHECK_PLUGIN(ivfparse)
362 AG_GST_CHECK_PLUGIN(jp2kdecimator)
363 AG_GST_CHECK_PLUGIN(jpegformat)
364 AG_GST_CHECK_PLUGIN(librfb)
365 AG_GST_CHECK_PLUGIN(liveadder)
366 AG_GST_CHECK_PLUGIN(mpegdemux)
367 AG_GST_CHECK_PLUGIN(mpegtsdemux)
368 AG_GST_CHECK_PLUGIN(mpegtsmux)
369 AG_GST_CHECK_PLUGIN(mpegpsmux)
370 AG_GST_CHECK_PLUGIN(mve)
371 AG_GST_CHECK_PLUGIN(mxf)
372 AG_GST_CHECK_PLUGIN(nsf)
373 AG_GST_CHECK_PLUGIN(nuvdemux)
374 AG_GST_CHECK_PLUGIN(patchdetect)
375 AG_GST_CHECK_PLUGIN(pcapparse)
376 AG_GST_CHECK_PLUGIN(pnm)
377 AG_GST_CHECK_PLUGIN(rawparse)
378 AG_GST_CHECK_PLUGIN(real)
379 AG_GST_CHECK_PLUGIN(removesilence)
380 AG_GST_CHECK_PLUGIN(sdi)
381 AG_GST_CHECK_PLUGIN(sdp)
382 AG_GST_CHECK_PLUGIN(segmentclip)
383 AG_GST_CHECK_PLUGIN(siren)
384 AG_GST_CHECK_PLUGIN(smooth)
385 AG_GST_CHECK_PLUGIN(speed)
386 AG_GST_CHECK_PLUGIN(subenc)
387 AG_GST_CHECK_PLUGIN(stereo)
388 AG_GST_CHECK_PLUGIN(tta)
389 AG_GST_CHECK_PLUGIN(videofilters)
390 AG_GST_CHECK_PLUGIN(videomeasure)
391 AG_GST_CHECK_PLUGIN(videoparsers)
392 AG_GST_CHECK_PLUGIN(videosignal)
393 AG_GST_CHECK_PLUGIN(vmnc)
394 AG_GST_CHECK_PLUGIN(y4m)
395
396 dnl *** plug-ins to exclude ***
397
398 dnl real plugin only works on i386 and x86_64 for the time being.
399 if test "x$HAVE_CPU_I386" != "xyes" && test "x$HAVE_CPU_X86_64" != "xyes"; then
400   AC_MSG_WARN([Not building real plugin, only works on 32bit and 64bit x86 platforms])
401   AG_GST_DISABLE_PLUGIN(real)
402 fi
403
404 dnl disable gst plugins we might not be able to build on this
405 dnl platform: librfb (ugly but minimally invasive)
406 dnl FIXME: maybe move to sys, or make work with winsock2
407 AC_CHECK_HEADERS([sys/socket.h], HAVE_SYS_SOCKET_H=yes)
408 AC_CHECK_HEADERS([winsock2.h], HAVE_WINSOCK2_H=yes)
409
410 if test "x$HAVE_WINSOCK2_H" = "xyes"; then
411   WINSOCK2_LIBS="-lws2_32"
412   AC_SUBST(WINSOCK2_LIBS)
413 fi
414
415 if test "x$HAVE_PTHREAD_H" = "xyes"; then
416   DCCP_LIBS="$DCCP_LIBS -lpthread"
417   AC_SUBST(DCCP_LIBS)
418 else
419   AG_GST_DISABLE_PLUGIN(dccp)
420 fi
421
422 dnl *** sys plug-ins ***
423
424 dnl DirectSound
425 translit(dnm, m, l) AM_CONDITIONAL(USE_DIRECTSOUND, true)
426 AG_GST_CHECK_FEATURE(DIRECTSOUND, [DirectSound], directsoundsrc, [
427   HAVE_DIRECTSOUND="no"
428   save_CFLAGS="$CFLAGS"
429   save_LDFLAGS="$LDFLAGS"
430   save_LIBS="$LIBS"
431   CFLAGS="$CFLAGS $DIRECTX_CFLAGS"
432   LDFLAGS="$LDFLAGS $DIRECTX_LDFLAGS"
433   LIBS="$LIBS -ldsound -ldxerr9 -luser32"
434   AC_MSG_CHECKING(for DirectSound LDFLAGS)
435   AC_LINK_IFELSE([AC_LANG_PROGRAM([[
436 #include <windows.h>
437 #include <dxerr9.h>
438 #include <dsound.h>
439 ]], [[
440   DXGetErrorString9 (0);
441   DirectSoundCreate(NULL, NULL, NULL);
442 ]])],
443     [HAVE_DIRECTSOUND="yes"],
444     [HAVE_DIRECTSOUND="no"])
445   AC_MSG_RESULT($HAVE_DIRECTSOUND)
446   CFLAGS=$save_CFLAGS
447   LDFLAGS=$save_LDFLAGS
448   LIBS=$save_LIBS
449
450   if test "x$HAVE_DIRECTSOUND" = "xyes";  then
451     dnl this is much more than we want
452     DIRECTSOUND_LIBS="-ldsound -ldxerr9 -luser32"
453     AC_SUBST(DIRECTX_CFLAGS)
454     AC_SUBST(DIRECTX_LDFLAGS)
455     AC_SUBST(DIRECTSOUND_LIBS)
456   fi
457   AC_SUBST(HAVE_DIRECTSOUND)
458 ])
459
460 dnl WASAPI
461 translit(dnm, m, l) AM_CONDITIONAL(USE_WASAPI, true)
462 AG_GST_CHECK_FEATURE(WASAPI, [WASAPI plug-in], wasapi, [
463   HAVE_WASAPI="no"
464   save_CFLAGS="$CFLAGS"
465   save_LDFLAGS="$LDFLAGS"
466   save_LIBS="$LIBS"
467   CFLAGS="$CFLAGS $DIRECTX_CFLAGS"
468   LDFLAGS="$LDFLAGS $DIRECTX_LDFLAGS"
469   LIBS="$LIBS -lole32 -lwinmm -lksuser"
470   AC_MSG_CHECKING(for WASAPI LDFLAGS)
471   AC_LINK_IFELSE([AC_LANG_PROGRAM([[
472 #include <windows.h>
473 #include <stdio.h>
474 #include <mmsystem.h>
475 #include <mmdeviceapi.h>
476 ]], [[
477 int main ()
478 {
479     HRESULT hr = S_OK;
480
481     hr = CoInitialize(NULL);
482     if (FAILED(hr)) {
483         printf("CoInitialize failed: hr = 0x%08x", hr);
484         return __LINE__;
485     }
486
487         int result = 0;
488     // result = do_everything(argc, argv);
489     
490     CoUninitialize();
491     return result;
492 }
493 ]])],
494     [HAVE_WASAPI="yes"],
495     [HAVE_WASAPI="no"])
496   AC_MSG_RESULT($HAVE_WASAPI)
497   CFLAGS=$save_CFLAGS
498   LDFLAGS=$save_LDFLAGS
499   LIBS=$save_LIBS
500
501   if test "x$HAVE_WASAPI" = "xyes";  then
502     WASAPI_LIBS="-lole32 -lwinmm -lksuser"
503     AC_SUBST(WASAPI_LIBS)
504   fi
505   AC_SUBST(HAVE_WASAPI)
506 ])
507
508 dnl Direct3D
509 translit(dnm, m, l) AM_CONDITIONAL(USE_DIRECT3D, true)
510 AG_GST_CHECK_FEATURE(DIRECT3D, [Direct3D plug-in], direct3dsink, [
511   HAVE_DIRECT3D="no"
512   save_CFLAGS="$CFLAGS"
513   save_LDFLAGS="$LDFLAGS"
514   save_LIBS="$LIBS"
515   CFLAGS="$CFLAGS $DIRECTX_CFLAGS"
516   LDFLAGS="$LDFLAGS $DIRECTX_LDFLAGS"
517   LIBS="$LIBS -ld3d9 -lgdi32"
518   AC_MSG_CHECKING(for Direct3D LDFLAGS)
519   AC_LINK_IFELSE([AC_LANG_PROGRAM([[
520 #include <windows.h>
521 #include <d3d9.h>
522 ]], [[
523   Direct3DCreate9(D3D_SDK_VERSION);
524 ]])],
525     [HAVE_DIRECT3D="yes"],
526     [HAVE_DIRECT3D="no"])
527   AC_MSG_RESULT($HAVE_DIRECT3D)
528   CFLAGS=$save_CFLAGS
529   LDFLAGS=$save_LDFLAGS
530   LIBS=$save_LIBS
531
532   if test "x$HAVE_DIRECT3D" = "xyes";  then
533     DIRECT3D_LIBS="-ld3d9 -lgdi32"
534     AC_SUBST(DIRECT3D_LIBS)
535   fi
536   AC_SUBST(HAVE_DIRECT3D)
537 ])
538
539 dnl DirectDraw
540 translit(dnm, m, l) AM_CONDITIONAL(USE_DIRECTDRAW, true)
541 AG_GST_CHECK_FEATURE(DIRECTDRAW, [DirectDraw plug-in], directdrawsink, [
542   HAVE_DIRECTDRAW="no"
543   save_CFLAGS="$CFLAGS"
544   save_LDFLAGS="$LDFLAGS"
545   save_LIBS="$LIBS"
546   CFLAGS="$CFLAGS $DIRECTX_CFLAGS"
547   LDFLAGS="$LDFLAGS $DIRECTX_LDFLAGS"
548   LIBS="$LIBS -lddraw -lgdi32"
549   AC_MSG_CHECKING(for DirectDraw LDFLAGS)
550   AC_LINK_IFELSE([AC_LANG_PROGRAM([[
551 #include <windows.h>
552 #include <ddraw.h>
553 ]], [[
554   GetStockObject(0);
555   DirectDrawCreate(NULL, NULL, NULL);
556 ]])],
557     [HAVE_DIRECTDRAW="yes"],
558     [HAVE_DIRECTDRAW="no"])
559   AC_MSG_RESULT($HAVE_DIRECTDRAW)
560   CFLAGS=$save_CFLAGS
561   LDFLAGS=$save_LDFLAGS
562   LIBS=$save_LIBS
563
564   if test "x$HAVE_DIRECTDRAW" = "xyes";  then
565     dnl this is much more than we want
566     DIRECTDRAW_LIBS="-lddraw -ldxguid -lgdi32"
567     AC_SUBST(DIRECTX_CFLAGS)
568     AC_SUBST(DIRECTX_LDFLAGS)
569     AC_SUBST(DIRECTDRAW_LIBS)
570   fi
571   AC_SUBST(HAVE_DIRECTDRAW)
572 ])
573
574 dnl Direct3D9
575 AM_CONDITIONAL(USE_DIRECT3D9, true)
576 AG_GST_CHECK_FEATURE(DIRECT3D9, [Direct3D9], winscreencap, [
577   HAVE_DIRECT3D9="no"
578   save_CFLAGS="$CFLAGS"
579   save_LDFLAGS="$LDFLAGS"
580   save_LIBS="$LIBS"
581   CFLAGS="$CFLAGS $DIRECTX_CFLAGS"
582   LDFLAGS="$LDFLAGS $DIRECTX_LDFLAGS"
583   LIBS="$LIBS -ld3d9 -lgdi32"
584   AC_MSG_CHECKING(for Direct3D9 LDFLAGS)
585   AC_LINK_IFELSE([AC_LANG_PROGRAM([[
586 #include <windows.h>
587 #include <d3d9.h>
588 ]], [[
589   Direct3DCreate9(D3D_SDK_VERSION);
590 ]])],
591     [HAVE_DIRECT3D9="yes"],
592     [HAVE_DIRECT3D9="no"])
593   AC_MSG_RESULT($HAVE_DIRECT3D9)
594   CFLAGS=$save_CFLAGS
595   LDFLAGS=$save_LDFLAGS
596   LIBS=$save_LIBS
597
598   if test "x$HAVE_DIRECT3D9" = "xyes";  then
599
600     DIRECT3D9_LIBS="-ld3d9 -lgdi32"
601     AC_SUBST(DIRECT3D9_LIBS)
602   fi
603   AC_SUBST(HAVE_DIRECT3D9)
604 ])
605
606 dnl DirectShow
607 translit(dnm, m, l) AM_CONDITIONAL(USE_DIRECTSHOW, true)
608 AG_GST_CHECK_FEATURE(DIRECTSHOW, [DirectShow plug-in], winks, [
609   HAVE_DIRECTSHOW="no"
610   save_CFLAGS="$CFLAGS"
611   save_LDFLAGS="$LDFLAGS"
612   save_LIBS="$LIBS"
613   CFLAGS="$CFLAGS $DIRECTX_CFLAGS"
614   LDFLAGS="$LDFLAGS $DIRECTX_LDFLAGS"
615   LIBS="$LIBS -lole32 -luuid -lstrmiids"
616   AC_MSG_CHECKING(for DirectShow LDFLAGS)
617   AC_LINK_IFELSE([AC_LANG_PROGRAM([[
618 #include <windows.h>
619 #include <strmif.h>
620 #include <uuids.h>
621
622 int main () {
623   IGraphBuilder *pGraph = NULL;
624   HRESULT hr = CoInitialize(NULL);
625   hr = CoCreateInstance(&CLSID_FilterGraph, NULL, CLSCTX_INPROC_SERVER, 
626                         &IID_IGraphBuilder, (void **)&pGraph);
627
628   return 0;
629 }
630 ]])],
631     [HAVE_DIRECTSHOW="yes"],
632     [HAVE_DIRECTSHOW="no"])
633   AC_MSG_RESULT($HAVE_DIRECTSHOW)
634   CFLAGS=$save_CFLAGS
635   LDFLAGS=$save_LDFLAGS
636   LIBS=$save_LIBS
637
638   if test "x$HAVE_DIRECTSHOW" = "xyes";  then
639     dnl this is much more than we want
640     DIRECTSHOW_LIBS="-ldxguid -lole32 -luuid -lstrmiids -lksuser -lsetupapi"
641     AC_SUBST(DIRECTX_CFLAGS)
642     AC_SUBST(DIRECTX_LDFLAGS)
643     AC_SUBST(DIRECTSHOW_LIBS)
644   fi
645   AC_SUBST(HAVE_DIRECTSHOW)
646 ])
647
648 dnl *** Android Media ***
649 translit(dnm, m, l) AM_CONDITIONAL(USE_ANDROID_MEDIA, true)
650 HAVE_ANDROID_MEDIA="no"
651 AG_GST_CHECK_FEATURE(ANDROID_MEDIA, [Android Media], androidmedia, [
652   case "$host" in
653     *android*)
654       AC_CHECK_HEADER(jni.h, HAVE_ANDROID_MEDIA="yes", HAVE_ANDROID_MEDIA="no")
655       ;;
656     *)
657       HAVE_ANDROID_MEDIA="no"
658       ;;
659   esac
660 ])
661
662 dnl *** AppleMedia (OS X and iOS) ***
663 translit(dnm, m, l) AM_CONDITIONAL(USE_APPLE_MEDIA, true)
664 HAVE_APPLE_MEDIA="no"
665 dnl SystemConfiguration.h is common to OS X and iOS, so we check for that
666 AG_GST_CHECK_FEATURE(APPLE_MEDIA, [Apple video], applemedia, [
667   AC_CHECK_HEADER(SystemConfiguration/SystemConfiguration.h, HAVE_APPLE_MEDIA="yes", HAVE_APPLE_MEDIA="no")
668 ])
669 dnl in case header SystemConfiguration/SystemConfiguration.h is found on other platforms
670 case "$host" in
671   *-*darwin*)
672     ;;
673   *)
674     HAVE_APPLE_MEDIA="no"
675     ;;
676 esac
677 HAVE_IOS="no"
678 if test "x$HAVE_APPLE_MEDIA" = "xyes"; then
679   AC_CHECK_HEADER(MobileCoreServices/MobileCoreServices.h, HAVE_IOS="yes", HAVE_IOS="no", [-])
680 fi
681
682 AM_CONDITIONAL(HAVE_IOS, test "x$HAVE_IOS" = "xyes")
683 if test "x$HAVE_IOS" = "xyes"; then
684   AC_DEFINE(HAVE_IOS, 1, [Define if building for Apple iOS])
685 fi
686
687 dnl *** bluez ***
688 translit(dnm, m, l) AM_CONDITIONAL(USE_BLUEZ, true)
689 AG_GST_CHECK_FEATURE(BLUEZ, [Bluez], bluez, [
690   dnl FIXME: we should be able to replace this with the GLib DBus stuff
691   PKG_CHECK_MODULES([DBUS], [dbus-1], [HAVE_BLUEZ=yes], [HAVE_BLUEZ=no])
692
693   AC_MSG_NOTICE([Disabling bluez plugin for now, does not work yet])
694   HAVE_BLUEZ=no
695 ])
696
697 dnl *** OS X videosrc ***
698 translit(dnm, m, l) AM_CONDITIONAL(USE_OSX_VIDEO, true)
699 HAVE_OSX_VIDEO="no"
700 AG_GST_CHECK_FEATURE(OSX_VIDEO, [OSX video], osxvideosrc, [
701   AC_CHECK_TYPE([SeqGrabComponent], HAVE_OSX_VIDEO="yes", HAVE_OSX_VIDEO="no",
702       [#include <Quicktime/Quicktime.h>])
703 ])
704 dnl in case header Quicktime/Quicktime.h is found on other platforms
705 case "$host" in
706   *-*darwin*)
707     ;;
708   *)
709     HAVE_OSX_VIDEO="no"
710     ;;
711 esac
712
713 dnl *** OS/X AVCVideoServices ***
714 translit(dnm, m, l) AM_CONDITIONAL(USE_AVC, true)
715 HAVE_AVC="no"
716 AG_GST_CHECK_FEATURE(AVC, [AVC Video Services], avcsrc, [
717   AC_LANG_PUSH([C++])
718   save_CPPFLAGS="$CPPFLAGS"
719   CPPFLAGS="$CPPFLAGS -framework AVCVideoServices -framework CoreFoundation"
720   save_LIBS="$LIBS"
721   LIBS="$LIBS -framework AVCVideoServices -framework CoreFoundation"
722   AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[]])],[HAVE_AVC=yes],[HAVE_AVC=no])
723   LIBS=$save_LIBS
724   CPPFLAGS=$save_CPPFLAGS
725   AC_LANG_POP([C++])
726 ])
727 dnl in case header AVCVideoServices/AVCVideoServices.h is found on other platforms
728 case "$host" in
729   *-*darwin*)
730     ;;
731   *)
732     HAVE_AVC="no"
733     ;;
734 esac
735
736 dnl check for QuickTime
737 translit(dnm, m, l) AM_CONDITIONAL(USE_QUICKTIME, true)
738 AG_GST_CHECK_FEATURE(QUICKTIME, [QuickTime wrapper], qtwrapper, [
739   AC_CHECK_TYPE([SampleReferenceRecord], HAVE_QUICKTIME="yes", HAVE_QUICKTIME="no",
740       [#include <Quicktime/Quicktime.h>])
741 ])
742
743 dnl check for shm_open (for shm plugin)
744 translit(dnm, m, l) AM_CONDITIONAL(USE_SHM, true)
745 AG_GST_CHECK_FEATURE(SHM, [POSIX shared memory source and sink], shm, [
746     if test "x$HAVE_SYS_SOCKET_H" = "xyes"; then
747         case $host in
748         *-darwin* | *-macos10*)
749             AC_DEFINE(HAVE_OSX,[1],[Apple Mac OS X operating system detected])
750             HAVE_SHM=yes
751             ;;
752         *)
753             AC_CHECK_LIB([rt], [shm_open],
754                 AC_CHECK_DECL([MSG_NOSIGNAL], HAVE_SHM=yes, HAVE_SHM=no, [
755                 #include <sys/socket.h>
756                     ]),
757                 HAVE_SHM=no)
758             AC_SUBST(SHM_LIBS, "-lrt")
759             ;;
760         esac
761     else
762         HAVE_SHM=no
763     fi
764 ])
765
766 dnl *** Video 4 Linux 2 ***
767 dnl for information about the header/define, see sys/v4l2/gstv4l2element.h
768 dnl renamed to GST_V4L2 because of some conflict with kernel headers
769 translit(dnm, m, l) AM_CONDITIONAL(USE_MFC, true)
770 AG_GST_CHECK_FEATURE(MFC, [Multi Format Codec], mfc, [
771   AC_MSG_CHECKING([Checking for up to date v4l2 installation])
772   AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
773 #include <sys/types.h>
774 #ifdef __sun /* Solaris */
775 #include <sys/types.h>
776 #include <sys/videodev2.h>
777 #elif __FreeBSD__
778 #include <linux/videodev2.h>
779 #else /* Linux */
780 #include <linux/types.h>
781 #define _LINUX_TIME_H
782 #define __user
783 #include <linux/videodev2.h>
784 #endif
785 #if defined(V4L2_MAJOR_VERSION) || defined(V4L2_MINOR_VERSION)
786 #error too early v4l2 version or no v4l2 at all
787 #endif
788     ]], [[
789 return 0;
790     ]])],[
791       HAVE_MFC="yes"
792       AC_MSG_RESULT(yes)
793     ],[
794       HAVE_MFC="no"
795       AC_MSG_RESULT(no)
796
797       HAVE_VIDEODEV=no
798       AC_CHECK_HEADER(linux/videodev2.h, [ HAVE_VIDEODEV=yes ],
799       [
800         AC_CHECK_HEADER(sys/videodev2.h, [ HAVE_VIDEODEV=yes ])
801       ])
802
803       if test "x$HAVE_VIDEODEV" = "xyes"; then
804         AC_MSG_WARN([video4linux2 headers were found, but they're old.])
805         AC_MSG_WARN([Please update v4l2 to compile the MFC plugins])
806       else
807         AC_MSG_WARN([v4l2 was not found])
808       fi
809     ])
810 ])
811
812 dnl check for Video CD
813 translit(dnm, m, l) AM_CONDITIONAL(USE_VCD, true)
814 AG_GST_CHECK_FEATURE(VCD, [Video CD], vcdsrc, [
815   AC_CHECK_HEADER(linux/cdrom.h, HAVE_VCD="yes", HAVE_VCD="no")
816 ])
817
818 dnl check for OpenSL ES
819 translit(dnm, m, l) AM_CONDITIONAL(USE_OPENSLES, true)
820 AG_GST_CHECK_FEATURE(OPENSLES, [OpenSL ES], opensl, [
821   AC_CHECK_HEADER(SLES/OpenSLES.h, HAVE_OPENSLES="yes", HAVE_OPENSLES="no")
822 ])
823
824 dnl *** UVC H264 ***
825 translit(dnm, m, l) AM_CONDITIONAL(USE_UVCH264, true)
826 AG_GST_CHECK_FEATURE(UVCH264, [UVC H264], uvch264, [
827   AC_CHECK_HEADER(linux/uvcvideo.h, HAVE_UVCVIDEO_H=yes, HAVE_UVCVIDEO_H=no)
828   AG_GST_PKG_CHECK_MODULES(GST_VIDEO, gstreamer-video-0.10 >= 0.10.36)
829   PKG_CHECK_MODULES(G_UDEV, gudev-1.0 , [
830           AC_DEFINE([HAVE_GUDEV], 1, [Define if gudev is installed])
831           HAVE_GUDEV="yes" ],
832           [HAVE_GUDEV="no"])
833   PKG_CHECK_MODULES(LIBUSB, libusb-1.0 , [
834           AC_DEFINE([HAVE_LIBUSB], 1, [Define if libusb 1.x is installed])
835           HAVE_LIBUSB="yes" ],
836           [HAVE_LIBUSB="no"])
837   if test "x$HAVE_UVCVIDEO_H" == "xyes" && \
838      test "x$HAVE_GUDEV" == "xyes" && \
839      test "x$HAVE_LIBUSB" == "xyes"; then
840     HAVE_UVCH264=yes
841   else
842     HAVE_UVCH264=no
843   fi
844 ])
845 AC_SUBST(LIBUDEV_CFLAGS)
846 AC_SUBST(LIBUDEV_LIBS)
847 AC_SUBST(LIBUSB_CFLAGS)
848 AC_SUBST(LIBUSB_LIBS)
849
850
851 dnl *** ext plug-ins ***
852 dnl keep this list sorted alphabetically !
853
854 if test "x$BUILD_EXTERNAL" = "xyes"; then
855
856 dnl *** assrender ***
857 translit(dnm, m, l) AM_CONDITIONAL(USE_ASSRENDER, true)
858 AG_GST_CHECK_FEATURE(ASSRENDER, [ASS/SSA renderer], assrender, [
859   PKG_CHECK_MODULES(ASSRENDER, libass >= 0.9.4, [
860     HAVE_ASSRENDER="yes" ], [
861     HAVE_ASSRENDER="no"
862   ])
863 ])
864 AC_SUBST(ASSRENDER_CFLAGS)
865 AC_SUBST(ASSRENDER_LIBS)
866
867 dnl *** vo-amrwbenc ***
868 translit(dnm, m, l) AM_CONDITIONAL(USE_VOAMRWBENC, true)
869 AG_GST_CHECK_FEATURE(VOAMRWBENC, [vo-amrwbenc library], vo-amrwbenc, [
870   AG_GST_PKG_CHECK_MODULES(VOAMRWBENC, vo-amrwbenc >= 0.1.0)
871 ])
872
873 dnl *** vo-aacenc ***
874 translit(dnm, m, l) AM_CONDITIONAL(USE_VOAACENC, true)
875 AG_GST_CHECK_FEATURE(VOAACENC, [vo-aacenc library], vo-aacenc, [
876   AG_GST_PKG_CHECK_MODULES(VOAACENC, vo-aacenc >= 0.1.0)
877 ])
878
879 dnl *** apexsink ***
880 translit(dnm, m, l) AM_CONDITIONAL(USE_APEXSINK, true)
881 AG_GST_CHECK_FEATURE(APEXSINK, [AirPort Express Wireless sink], apexsink, [
882   PKG_CHECK_MODULES(APEXSINK, [ openssl >= 0.9.5  libcrypto ], [
883     HAVE_APEXSINK="yes"
884     saved_LIBS="$LIBS"
885     LIBS=""
886     AC_SEARCH_LIBS(socket, [socket], [ ], [ APEXSINK="no" ])
887     AC_SEARCH_LIBS(gethostbyname, [nsl], [ ], [ APEXSINK="no" ])
888     APEXSINK_LIBS="$APEXSINK_LIBS $LIBS"
889     LIBS="$saved_LIBS"
890     AC_SUBST(APEXSINK_CFLAGS)
891     AC_SUBST(APEXSINK_LIBS)
892   ], [
893     APEXSINK="no"
894   ])
895 ])
896
897 dnl *** BZ2 ***
898 translit(dnm, m, l) AM_CONDITIONAL(USE_BZ2, true)
899 AG_GST_CHECK_FEATURE(BZ2, [bz2 library], bz2, [
900   AG_GST_CHECK_LIBHEADER(BZ2, bz2, BZ2_bzCompress, ,bzlib.h, BZ2_LIBS="-lbz2")
901   AC_SUBST(BZ2_LIBS)
902 ])
903
904 #dnl *** cairo ***
905 #translit(dnm, m, l) AM_CONDITIONAL(USE_CAIRO, true)
906 #AG_GST_CHECK_FEATURE(CAIRO, [cairo plug-in], cairo, [
907 #  PKG_CHECK_MODULES(CAIRO, cairo >= 1.0 glitz-glx, HAVE_CAIRO=yes, [
908 #    HAVE_CAIRO=no
909 #  ])
910 #  AC_SUBST(CAIRO_CFLAGS)
911 #  AC_SUBST(CAIRO_LIBS)
912 #])
913
914 dnl *** cdaudio ***
915 translit(dnm, m, l) AM_CONDITIONAL(USE_CDAUDIO, true)
916 AG_GST_CHECK_FEATURE(CDAUDIO, [cdaudio], cdaudio, [
917   PKG_CHECK_MODULES(CDAUDIO, libcdaudio, [
918           HAVE_CDAUDIO="yes"
919   ], [
920           HAVE_CDAUDIO="no"
921   ])
922   AC_SUBST(CDAUDIO_CFLAGS)
923   AC_SUBST(CDAUDIO_LIBS)
924 ])
925
926 dnl *** celt ***
927 translit(dnm, m, l) AM_CONDITIONAL(USE_CELT, true)
928 AG_GST_CHECK_FEATURE(CELT, [celt], celt, [
929   PKG_CHECK_MODULES(CELT, celt >= 0.5.0, [
930           AC_DEFINE([HAVE_CELT], 1, [Define if libcelt 0.5 is installed])
931           HAVE_CELT="yes"
932   ], [
933           HAVE_CELT="no"
934   ])
935
936   PKG_CHECK_MODULES(CELT_0_7, celt >= 0.7.0, [
937           AC_DEFINE([HAVE_CELT_0_7], 1, [Define if libcelt 0.7 is installed])
938   ], [
939           dnl to prevent an error
940           true
941   ])
942
943   PKG_CHECK_MODULES(CELT_0_8, celt >= 0.8.0, [
944           AC_DEFINE([HAVE_CELT_0_8], 1, [Define if libcelt 0.8 is installed])
945   ], [
946           dnl to prevent an error
947           true
948   ])
949
950   PKG_CHECK_MODULES(CELT_0_11, celt >= 0.11.0, [
951           AC_DEFINE([HAVE_CELT_0_11], 1, [Define if libcelt 0.11 is installed])
952   ], [
953           dnl to prevent an error
954           true
955   ])
956   AC_SUBST(CELT_CFLAGS)
957   AC_SUBST(CELT_LIBS)
958 ])
959
960 dnl *** chromaprint ***
961 translit(dnm, m, l) AM_CONDITIONAL(USE_CHROMAPRINT, true)
962 AG_GST_CHECK_FEATURE(CHROMAPRINT, [chromaprint], chromaprint, [
963   PKG_CHECK_MODULES(CHROMAPRINT, libchromaprint, HAVE_CHROMAPRINT="yes", [
964     HAVE_CHROMAPRINT="no"
965   ])
966   AC_SUBST(CHROMAPRINT_CFLAGS)
967   AC_SUBST(CHROMAPRINT_LIBS)
968 ])
969
970 dnl *** Cog ***
971 translit(dnm, m, l) AM_CONDITIONAL(USE_COG, true)
972 AG_GST_CHECK_FEATURE(COG, [Cog plugin], cog, [
973   PKG_CHECK_MODULES(COG, libpng >= 1.2, HAVE_COG="yes", [
974     HAVE_COG="no"
975   ])
976   AC_SUBST(COG_CFLAGS)
977   AC_SUBST(COG_LIBS)
978 ])
979
980 dnl *** Curl ***
981 translit(dnm, m, l) AM_CONDITIONAL(USE_CURL, true)
982 AG_GST_CHECK_FEATURE(CURL, [Curl plugin], curl, [
983   PKG_CHECK_MODULES(CURL, libcurl >= 7.21.0, [
984     HAVE_CURL="yes"
985     AC_CHECK_HEADERS([unistd.h sys/socket.h sys/types.h netinet/in.h netinet/ip.h netinet/tcp.h fcntl.h], [ ], [
986       AC_CHECK_HEADERS([unistd.h sys/types.h winsock2.h ws2tcpip.h fcntl.h], [ ], [HAVE_CURL="no"])
987     ])
988     AC_MSG_CHECKING([for socket support needed by curlsink])
989     AC_MSG_RESULT($HAVE_CURL)
990   ], [
991     HAVE_CURL="no"
992   ])
993   AC_SUBST(CURL_CFLAGS)
994   AC_SUBST(CURL_LIBS)
995 ])
996
997 dnl *** dc1394  ***
998 translit(dnm, m, l) AM_CONDITIONAL(USE_DC1394, true)
999 AG_GST_CHECK_FEATURE(DC1394, [libdc1394], dc1394, [
1000    PKG_CHECK_MODULES(LIBDC1394, libdc1394-2 >= 2.0.0, [
1001         if test -z "`$PKG_CONFIG --modversion libdc1394-2 | grep 2.0.0-rc`"; then
1002                 HAVE_DC1394="yes"
1003         else
1004                 HAVE_DC1394="no"
1005         fi
1006    ], [
1007         HAVE_DC1394="no"
1008         AC_MSG_RESULT(no)
1009    ])
1010    AC_SUBST(LIBDC1394_CFLAGS)
1011    AC_SUBST(LIBDC1394_LIBS)
1012 ])
1013
1014 dnl *** decklink  ***
1015 translit(dnm, m, l) AM_CONDITIONAL(USE_DECKLINK, true)
1016 AG_GST_CHECK_FEATURE(DECKLINK, [decklink], decklink, [
1017    HAVE_DECKLINK=no
1018    case "$host" in
1019      *-*linux*)
1020        if test "x$HAVE_PTHREAD_H" = "xyes"; then
1021          AC_CHECK_LIB(dl, dlopen,
1022            [
1023             HAVE_DECKLINK=yes
1024             DECKLINK_CXXFLAGS=
1025             DECKLINK_LIBS="-lpthread -ldl"
1026            ])
1027        fi
1028        ;;
1029      *-*darwin*)
1030        if test "x$HAVE_PTHREAD_H" = "xyes"; then
1031          AC_CHECK_LIB(dl, dlopen,
1032            [
1033             HAVE_DECKLINK=yes
1034             DECKLINK_CXXFLAGS=
1035             DECKLINK_LIBS="-lpthread -ldl"
1036             HAVE_DECKLINK_OSX=yes
1037            ])
1038        fi
1039        ;;
1040      *)
1041        HAVE_DECKLINK=no
1042        ;;
1043    esac
1044
1045    AC_SUBST(DECKLINK_CXXFLAGS)
1046    AC_SUBST(DECKLINK_LIBS)
1047 ])
1048 AM_CONDITIONAL(DECKLINK_OSX, test "x$HAVE_DECKLINK_OSX" = xyes)
1049
1050 dnl **** DirectFB ****
1051 translit(dnm, m, l) AM_CONDITIONAL(USE_DIRECTFB, true)
1052 AG_GST_CHECK_FEATURE(DIRECTFB, [directfb], dfbvideosink , [
1053   PKG_CHECK_MODULES(DIRECTFB, directfb >= 0.9.24, HAVE_DIRECTFB="yes", [
1054     HAVE_DIRECTFB="no"
1055   ])
1056 ])
1057
1058 dnl **** Wayland ****
1059 translit(dnm, m, l) AM_CONDITIONAL(USE_WAYLAND, true)
1060 AG_GST_CHECK_FEATURE(WAYLAND, [wayland sink], wayland , [
1061   PKG_CHECK_MODULES(WAYLAND, wayland-client >= 1.0.0, [
1062     HAVE_WAYLAND="yes" ], [ HAVE_WAYLAND="no"
1063   ])
1064 ])
1065
1066 dnl **** Dirac ****
1067 translit(dnm, m, l) AM_CONDITIONAL(USE_DIRAC, true)
1068 AG_GST_CHECK_FEATURE(DIRAC, [dirac], dirac, [
1069   PKG_CHECK_MODULES(DIRAC, dirac >= 0.10, HAVE_DIRAC="yes", [
1070     HAVE_DIRAC="no"
1071   ])
1072 ])
1073
1074 dnl *** DTS ***
1075 translit(dnm, m, l) AM_CONDITIONAL(USE_DTS, true)
1076 AG_GST_CHECK_FEATURE(DTS, [dts library], dtsdec, [
1077   HAVE_DTS="yes"
1078   AG_GST_CHECK_LIBHEADER(DTS, dca, dca_init, $LIBM, dca.h,
1079     DTS_LIBS="-ldca $LIBM", HAVE_DTS="no")
1080   if test $HAVE_DTS = "no"; then
1081     AG_GST_CHECK_LIBHEADER(DTS, dts_pic, dts_init, $LIBM, dts.h,
1082       [ DTS_LIBS="-ldts_pic $LIBM"
1083         AC_DEFINE(DTS_OLD, 1, [Define if an old libdts is used])
1084       ])
1085   fi
1086   AC_SUBST(DTS_LIBS)
1087 ])
1088
1089 dnl *** resindvd ***
1090 translit(dnm, m, l) AM_CONDITIONAL(USE_RESINDVD, true)
1091 AG_GST_CHECK_FEATURE(RESINDVD, [resindvd plugin], resindvd, [
1092   PKG_CHECK_MODULES(DVDNAV, dvdnav >= 4.1.2 dvdread >= 4.1.2, HAVE_RESINDVD="yes", [
1093     HAVE_RESINDVD="no"
1094   ])
1095 ])
1096
1097 dnl **** Free AAC Encoder (FAAC) ****
1098 translit(dnm, m, l) AM_CONDITIONAL(USE_FAAC, true)
1099 AG_GST_CHECK_FEATURE(FAAC, [AAC encoder plug-in], faac, [
1100   AG_GST_CHECK_LIBHEADER(FAAC, faac, faacEncOpen, $LIBM, faac.h,
1101     FAAC_LIBS="-lfaac $LIBM")
1102   AS_SCRUB_INCLUDE(FAAC_CFLAGS)
1103   AC_SUBST(FAAC_LIBS)
1104 ])
1105
1106 dnl **** Free AAC Decoder (FAAD) ****
1107 translit(dnm, m, l) AM_CONDITIONAL(USE_FAAD, true)
1108 AG_GST_CHECK_FEATURE(FAAD, [AAC decoder plug-in], faad, [
1109   HAVE_FAAD="yes"
1110   faad_hdr=""
1111   AG_GST_CHECK_LIBHEADER(FAAD, faad, faacDecOpen, $LIBM, faad.h,
1112     FAAD_LIBS="-lfaad $LIBM", HAVE_FAAD="no")
1113   if test $HAVE_FAAD = "no"; then
1114     AG_GST_CHECK_LIBHEADER(FAAD, faad, NeAACDecOpen, $LIBM, neaacdec.h,
1115       [ FAAD_LIBS="-lfaad $LIBM"
1116         AC_DEFINE(FAAD_IS_NEAAC, 1, [Define if AAC is using new api prefix])
1117         faad_hdr="neaacdec.h"
1118       ], [
1119         HAVE_FAAD="no"
1120       ],)
1121   else
1122     faad_hdr="faad.h"
1123   fi
1124   if test $HAVE_FAAD = "yes"; then
1125     AC_MSG_CHECKING([Checking for FAAD >= 2.0])
1126     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <faad.h>]], [[
1127         #if !defined(FAAD2_VERSION) || !defined(FAAD_FMT_DOUBLE)
1128         #error Not faad2
1129         #else
1130         /* Release candidate of 2.0 is not good enough for us. This field
1131          * was added only in 2.0 final and does not exist in 2.0-RC3 */
1132         faacDecConfiguration conf; conf.dontUpSampleImplicitSBR = 1;
1133         #endif
1134     ]])],[
1135       HAVE_FAAD="yes"
1136
1137       AC_MSG_CHECKING([Checking FAAD2 version in $faad_hdr])
1138       for minor in 10 9 8 7 6 5 0; do
1139         if test x$faad2_minor_version = "x"; then
1140           AC_EGREP_CPP([GST_CHECK_FAAD_VERSION \"2\.$minor\"], [
1141               #include <$faad_hdr>
1142               GST_CHECK_FAAD_VERSION FAAD2_VERSION
1143             ], [
1144               faad2_minor_version=$minor
1145             ])
1146         fi
1147       done
1148       if test x$faad2_minor_version = "x"; then
1149         AC_MSG_RESULT([no idea])
1150       else
1151         AC_MSG_RESULT([2.$faad2_minor_version])
1152         AC_DEFINE_UNQUOTED([FAAD2_MINOR_VERSION], [$faad2_minor_version], [The x in 2.x])
1153       fi
1154     ],[
1155       HAVE_FAAD="no"
1156     ])
1157   fi
1158   AS_SCRUB_INCLUDE(FAAD_CFLAGS)
1159   AC_SUBST(FAAD_LIBS)
1160   AC_SUBST(FAAD_IS_NEAAC)
1161 ])
1162
1163 dnl *** fbdev ***
1164 translit(dnm, m, l) AM_CONDITIONAL(USE_FBDEV, true)
1165 AG_GST_CHECK_FEATURE(FBDEV, [linux framebuffer], fbdevsink, [
1166   if test "x$HAVE_FBDEV" != "xyes"; then
1167     AC_CHECK_HEADER([linux/fb.h], HAVE_FBDEV=yes, HAVE_FBDEV=no)
1168   fi
1169 ])
1170
1171 dnl *** flite ***
1172 translit(dnm, m, l) AM_CONDITIONAL(USE_FLITE, true)
1173 AG_GST_CHECK_FEATURE(FLITE, [Flite plugin], flite, [
1174   AG_GST_CHECK_LIBHEADER(FLITE, flite, flite_init, $LIBM, flite/flite.h,
1175     FLITE_LIBS="-lflite -lflite_cmu_us_kal -lflite_usenglish -lflite_cmulex $LIBM")
1176
1177   AC_SUBST(FLITE_CFLAGS)
1178   AC_SUBST(FLITE_LIBS)
1179 ])
1180
1181 dnl *** gsm ***
1182 translit(dnm, m, l) AM_CONDITIONAL(USE_GSM, true)
1183 AG_GST_CHECK_FEATURE(GSM, [GSM library], gsmenc gsmdec, [
1184   AG_GST_CHECK_LIBHEADER(GSM, gsm, gsm_create, , gsm.h, GSM_LIBS="-lgsm")
1185   if test $HAVE_GSM != "yes"; then
1186     AG_GST_CHECK_LIBHEADER(GSM, gsm, gsm_create, , gsm/gsm.h, GSM_LIBS="-lgsm")
1187     if test $HAVE_GSM = "yes"; then
1188       AC_DEFINE(GSM_HEADER_IN_SUBDIR, 1, [Define if GSM header in gsm/ subdir])
1189     fi
1190   fi
1191   AC_SUBST(GSM_LIBS)
1192 ])
1193
1194 dnl *** kate ***
1195 translit(dnm, m, l) AM_CONDITIONAL(USE_KATE, true)
1196 AG_GST_CHECK_FEATURE(KATE, [Kate], kate, [
1197   PKG_CHECK_MODULES(KATE, kate >= 0.1.7, HAVE_KATE="yes", [
1198     HAVE_KATE="no"
1199   ])
1200   AC_SUBST(KATE_CFLAGS)
1201   AC_SUBST(KATE_LIBS)
1202   PKG_CHECK_MODULES(TIGER, tiger >= 0.3.2,
1203     [
1204       HAVE_TIGER="yes"
1205       AC_DEFINE(HAVE_TIGER, 1, [Define if libtiger is available])
1206     ],
1207     [
1208       HAVE_TIGER="no"
1209     ]
1210   )
1211   AM_CONDITIONAL(USE_TIGER, test "x$HAVE_TIGER" = "xyes")
1212   AC_SUBST(TIGER_CFLAGS)
1213   AC_SUBST(TIGER_LIBS)
1214 ],,,[AM_CONDITIONAL(USE_TIGER, false)])
1215
1216 dnl *** ladspa ***
1217 translit(dnm, m, l) AM_CONDITIONAL(USE_LADSPA, true)
1218 AG_GST_CHECK_FEATURE(LADSPA, [ladspa], ladspa, [
1219   AC_CHECK_HEADER(ladspa.h, HAVE_LADSPA="yes", HAVE_LADSPA="no")
1220
1221   PKG_CHECK_MODULES(LRDF, lrdf, HAVE_LRDF=yes, HAVE_LRDF=no)
1222   if test $HAVE_LRDF = "yes"; then
1223     AC_DEFINE(HAVE_LRDF, 1, [Define if we have liblrdf])
1224   fi
1225   AC_SUBST(LRDF_LIBS)
1226   AC_SUBST(LRDF_CFLAGS)
1227 ])
1228
1229 dnl *** LV2 ***
1230 translit(dnm, m, l) AM_CONDITIONAL(USE_LV2, true)
1231 AG_GST_CHECK_FEATURE(LV2, [lv2], lv2, [
1232   PKG_CHECK_MODULES(SLV2, slv2 >= 0.6.6, HAVE_LV2="yes", HAVE_LV2="no")
1233   AC_SUBST(SLV2_CFLAGS)
1234   AC_SUBST(SLV2_LIBS)
1235 ])
1236
1237 dnl *** libmms ***
1238 translit(dnm, m, l) AM_CONDITIONAL(USE_LIBMMS, true)
1239 AG_GST_CHECK_FEATURE(LIBMMS, [mms protocol library], libmms, [
1240   dnl check with pkg-config first
1241   PKG_CHECK_MODULES(LIBMMS, libmms >= 0.4, HAVE_LIBMMS="yes", [
1242     HAVE_LIBMMS="no"
1243   ])
1244 ])
1245 AC_SUBST(LIBMMS_LIBS)
1246
1247 dnl *** linsys ***
1248 translit(dnm, m, l) AM_CONDITIONAL(USE_LINSYS, true)
1249 AG_GST_CHECK_FEATURE(LINSYS, [Linear Systems SDI plugin], linsys, [
1250   case "$host" in
1251     *-*linux*)
1252       HAVE_LINSYS=yes
1253       ;;
1254     *)
1255       HAVE_LINSYS=no
1256       ;;
1257   esac
1258 ])
1259
1260 dnl *** modplug ***
1261 translit(dnm, m, l) AM_CONDITIONAL(USE_MODPLUG, true)
1262 AG_GST_CHECK_FEATURE(MODPLUG, modplug, modplug, [
1263   if test "x$HAVE_CXX" != "xyes"; then
1264     AC_MSG_WARN([Not compiling modplug plugin as it requires a C++ compiler])
1265     HAVE_MODPLUG="no"
1266   else
1267     PKG_CHECK_MODULES(MODPLUG, libmodplug, HAVE_MODPLUG="yes", HAVE_MODPLUG="no")
1268   fi
1269   AC_SUBST(MODPLUG_CFLAGS)
1270   AC_SUBST(MODPLUG_LIBS)
1271 ])
1272
1273 dnl *** mimic ***
1274 translit(dnm, m, l) AM_CONDITIONAL(USE_MIMIC, true)
1275 AG_GST_CHECK_FEATURE(MIMIC, [libmimic library], mimic, [
1276   MIMIC_REQUIRED=1.0
1277   PKG_CHECK_MODULES(MIMIC, libmimic >= $MIMIC_REQUIRED,
1278       HAVE_MIMIC=yes, HAVE_MIMIC=no)
1279   AC_SUBST(MIMIC_CFLAGS)
1280   AC_SUBST(MIMIC_LIBS)
1281 ])
1282
1283 dnl *** mjpegtools version info ***
1284 dnl some may prefer older version (given quirks above)
1285 dnl hm, no version info seems available within mjpegtools headers
1286 dnl and API really moves along
1287 echo
1288 PKG_CHECK_EXISTS(mjpegtools >= 1.6.1.93 mjpegtools < 1.8.0, [
1289   mjpegtools_api=10601
1290 ], [
1291   PKG_CHECK_EXISTS(mjpegtools >= 1.8.0 mjpegtools < 1.9.0, [
1292     mjpegtools_api=10800
1293   ], [
1294     PKG_CHECK_EXISTS(mjpegtools >= 2.0.0, [
1295       mjpegtools_api=20000
1296     ], [
1297       PKG_CHECK_MODULES(MJPEG, mjpegtools >= 1.9.0 mjpegtools < 2.0.0, [
1298         dnl logging API changed in release candidates
1299         OLD_CFLAGS="$CFLAGS"
1300         OLD_LIBS="$LIBS"
1301         CFLAGS="$MJPEG_CFLAGS"
1302         LIBS="$LIBS $MJPEG_LIBS -lmjpegutils $LIBM -lpthread"
1303         AC_CHECK_FUNC(mjpeg_loglev_t, [
1304           mjpegtools_api=10903
1305           ], [
1306           mjpegtools_api=10900
1307           ])
1308         CFLAGS="$OLD_CFLAGS"
1309         LIBS="$OLD_LIBS"
1310       ], [
1311         mjpegtools_api=0
1312       ])
1313     ])
1314   ])
1315 ])
1316 AC_DEFINE_UNQUOTED(GST_MJPEGTOOLS_API, $mjpegtools_api,
1317   [mjpegtools API evolution])
1318
1319 dnl *** mpeg2enc ***
1320 translit(dnm, m, l) AM_CONDITIONAL(USE_MPEG2ENC, true)
1321 AG_GST_CHECK_FEATURE(MPEG2ENC, [mpeg2enc], mpeg2enc, [
1322   HAVE_MPEG2ENC="no"
1323   dnl we require a c++ compiler for this one
1324   if [ test x$HAVE_CXX = xyes ]; then
1325     dnl libmpeg2enc was first included in mjpegtools-1.6.2-rc3 (1.6.1.92)
1326     dnl since many distros include mjpegtools specifically without mplex
1327     dnl and mpeg2enc, we check for mpeg2enc on its own, too.
1328     PKG_CHECK_MODULES(MPEG2ENC, mjpegtools >= 1.6.1.93, [
1329       dnl HACK because mpeg2enc 1.8.0 header files have a spurious 'include config.h'
1330       touch config.h
1331       dnl switch over to c++ to test things
1332       AC_LANG([C++])
1333       OLD_CPPFLAGS="$CPPFLAGS"
1334       dnl HACK as above
1335       CPPFLAGS_GOOD="$CPPFLAGS $MPEG2ENC_CFLAGS"
1336       CPPFLAGS="$CPPFLAGS_GOOD -I."
1337       dnl check headers
1338       mpeg2enc_headers_ok=no
1339       AC_CHECK_HEADER([mpeg2encoder.hh], [
1340         MPEG2ENC_LIBS="$MPEG2ENC_LIBS -lmpeg2encpp $LIBM -lpthread"
1341         OLD_LIBS="$LIBS"
1342         LIBS="$LIBS $MPEG2ENC_LIBS"
1343         AC_MSG_CHECKING([for valid mpeg2enc objects])
1344         AC_RUN_IFELSE([AC_LANG_SOURCE([[
1345           #include <mpeg2encoder.hh>
1346           #include <mpeg2encoptions.hh>
1347
1348           int
1349           main (int   argc,
1350                 char *argv[])
1351           {
1352             MPEG2EncOptions *options = new MPEG2EncOptions ();
1353             MPEG2Encoder *encoder = new MPEG2Encoder (*options);
1354             return 0;
1355           }
1356         ]])],[
1357           AC_MSG_RESULT(yes)
1358           dnl so far so good, let's check more things:
1359           dnl mjpegtools-1.8.0 does not install the required
1360           dnl mpeg2syntaxcodes.h header by default, and a new release
1361           dnl is not in sight, so check for this oversight in case
1362           dnl distros or folks have fixed this themselves
1363           if test "$mjpegtools_api" -ge "10800"; then
1364             AC_CHECK_HEADER([mpeg2syntaxcodes.h], [
1365                 mpeg2enc_headers_ok=yes
1366               ], [
1367                 mpeg2enc_headers_ok=no
1368               ])
1369           else
1370             mpeg2enc_headers_ok=yes
1371           fi
1372           if test "x$mpeg2enc_headers_ok" = "xyes"; then
1373             HAVE_MPEG2ENC="yes"
1374           fi
1375           CPPFLAGS="$CPPFLAGS_GOOD"
1376           AC_SUBST(MPEG2ENC_CFLAGS)
1377           AC_SUBST(MPEG2ENC_LIBS)
1378         ],[
1379           AC_MSG_RESULT(no)
1380         ],[])
1381         LIBS="$OLD_LIBS"
1382       ])
1383
1384       CPPFLAGS="$OLD_CPPFLAGS"
1385       AC_LANG([C])
1386     ], [
1387       HAVE_MPEG2ENC="no"
1388     ])
1389   fi
1390 ])
1391
1392 dnl *** mpg123 ***
1393 translit(dnm, m, l) AM_CONDITIONAL(USE_MPG123, true)
1394 AG_GST_CHECK_FEATURE(MPG123, [mpg123 audio decoder], mpg123, [
1395   PKG_CHECK_MODULES(MPG123, libmpg123 >= 1.13, HAVE_MPG123="yes", HAVE_MPG123="no")
1396   AC_SUBST(MPG123_CFLAGS)
1397   AC_SUBST(MPG123_LIBS)
1398 ])
1399
1400 dnl *** mplex ***
1401 translit(dnm, m, l) AM_CONDITIONAL(USE_MPLEX, true)
1402 AG_GST_CHECK_FEATURE(MPLEX, [mplex], mplex, [
1403   HAVE_MPLEX="no"
1404   dnl we require a c++ compiler for this one
1405   if [ test x$HAVE_CXX = xyes ]; then
1406     dnl libmplex was first included in mjpegtools-1.6.2-rc4 (1.6.1.93)
1407     dnl since many distros include mjpegtools specifically without mplex
1408     dnl and mpeg2enc, we check for mplex on its own, too.
1409     dnl libmplex < 1.9rc? has fuzzy ABI, valgrind and other problems
1410     PKG_CHECK_MODULES(MPLEX, mjpegtools >= 1.9.0, [
1411       dnl HACK because mplex 2.0.0 header files have a spurious 'include config.h'
1412       touch config.h
1413       dnl switch over to c++ to test things
1414       AC_LANG([C++])
1415       OLD_CPPFLAGS="$CPPFLAGS"
1416       dnl HACK as above
1417       CPPFLAGS_GOOD="$CPPFLAGS $MPLEX_CFLAGS"
1418       CPPFLAGS="$CPPFLAGS_GOOD -I."
1419       AC_CHECK_HEADER(interact.hpp, [
1420         MPLEX_LIBS="$MPLEX_LIBS -lmplex2 $LIBM"
1421         OLD_LIBS="$LIBS"
1422         LIBS="$LIBS $MPLEX_LIBS"
1423         OLD_LDFLAGS="$LDFLAGS"
1424         LDFLAGS="$LDFLAGS $MPLEX_LDFLAGS"
1425         dnl older libmplex uses off_t SegmentSize (), which leads to fuzzy ABI;
1426         dnl don't want this here
1427         AC_MSG_CHECKING([for valid mplex objects])
1428         AC_RUN_IFELSE([AC_LANG_SOURCE([[
1429
1430 #include <interact.hpp>
1431 #include <outputstrm.hpp>
1432 #include <multiplexor.hpp>
1433 int
1434 main (int   argc,
1435       char *argv[])
1436 {
1437   class TestOutputStream : public OutputStream {
1438   public:
1439     TestOutputStream () : OutputStream () { }
1440     void Write (uint8_t *a, unsigned int b) { }
1441     void NextSegment () { }
1442     uint64_t SegmentSize () { }
1443     void Close () { }
1444     int Open () { }
1445 };
1446   MultiplexJob *job = new MultiplexJob ();
1447   vector<IBitStream *> inputs;
1448   job->SetupInputStreams (inputs);
1449   TestOutputStream *out = new TestOutputStream ();
1450   Multiplexor *mux = new Multiplexor(*job, *out, NULL);
1451   return 0;
1452 }
1453         ]])],[
1454           HAVE_MPLEX="yes"
1455           CPPFLAGS="$CPPFLAGS_GOOD"
1456           AC_SUBST(MPLEX_CFLAGS)
1457           AC_SUBST(MPLEX_LIBS)
1458           AC_SUBST(MPLEX_LDFLAGS)
1459           AC_MSG_RESULT(yes)
1460         ],[AC_MSG_RESULT(no)],[])
1461         LIBS="$OLD_LIBS"
1462         LDFLAGS="$OLD_LDFLAGS"
1463       ])
1464       CPPFLAGS="$OLD_CPPFLAGS"
1465       AC_LANG([C])
1466     ], HAVE_MPLEX="no")
1467   fi
1468 ])
1469
1470 dnl *** musepack ***
1471 translit(dnm, m, l) AM_CONDITIONAL(USE_MUSEPACK, true)
1472 AG_GST_CHECK_FEATURE(MUSEPACK, [musepackdec], musepack, [
1473   AC_CHECK_HEADER([mpc/mpcdec.h], [
1474     HAVE_MUSEPACK="yes"
1475     MUSEPACK_LIBS="-lmpcdec"
1476     AC_SUBST(MUSEPACK_LIBS)
1477     ], [AC_CHECK_HEADER([mpcdec/mpcdec.h], [
1478       HAVE_MUSEPACK="yes"
1479       MUSEPACK_LIBS="-lmpcdec"
1480       AC_DEFINE(MPC_IS_OLD_API, 1, [Define if the old MusePack API is used])
1481       AC_SUBST(MUSEPACK_LIBS)
1482     ], [HAVE_MUSEPACK="no"])])
1483 ])
1484
1485 dnl *** musicbrainz ***
1486 translit(dnm, m, l) AM_CONDITIONAL(USE_MUSICBRAINZ, true)
1487 AG_GST_CHECK_FEATURE(MUSICBRAINZ, [musicbrainz tag generation], musicbrainz, [
1488   PKG_CHECK_MODULES(MUSICBRAINZ, libmusicbrainz >= 2.1.0, HAVE_MUSICBRAINZ="yes", HAVE_MUSICBRAINZ="no")
1489   AC_SUBST(MUSICBRAINZ_CFLAGS)
1490   AC_SUBST(MUSICBRAINZ_LIBS)
1491 ])
1492
1493 dnl *** MythTV ***
1494 translit(dnm, m, l) AM_CONDITIONAL(USE_MYTHTV, true)
1495 AG_GST_CHECK_FEATURE(MYTHTV, [MythTV client plugins], mythtvsrc, [
1496   PKG_CHECK_MODULES(GMYTH, gmyth >= 0.4 gmyth <= 0.7.99, HAVE_MYTHTV="yes", [
1497     HAVE_MYTHTV="no"
1498   ])
1499   AC_SUBST(GMYTH_CFLAGS)
1500   AC_SUBST(GMYTH_LIBS)
1501 ])
1502
1503 dnl *** nas ***
1504 translit(dnm, m, l) AM_CONDITIONAL(USE_NAS, true)
1505 AG_GST_CHECK_FEATURE(NAS, [nas plug-in], nassink, [
1506   HAVE_NAS="no"
1507   AG_GST_CHECK_X
1508   if test "x$HAVE_X" = "xyes"; then
1509     save_cppflags=$CFLAGS
1510     CPPFLAGS="$CPPFLAGS $X_CFLAGS"
1511     AG_GST_CHECK_LIBHEADER(NAS, audio, AuOpenServer, $X_LIBS, audio/audiolib.h,
1512       NAS_LIBS="$X_LIBS -laudio" NAS_CFLAGS="$X_CFLAGS")
1513     CPPFLAGS="$save_cppflags"
1514   fi
1515   AC_SUBST(NAS_CFLAGS)
1516   AC_SUBST(NAS_LIBS)
1517 ])
1518
1519 dnl *** neon ***
1520 translit(dnm, m, l) AM_CONDITIONAL(USE_NEON, true)
1521 AG_GST_CHECK_FEATURE(NEON, [neon http client plugins], neonhttpsrc, [
1522   PKG_CHECK_MODULES(NEON, neon >= 0.27.0  neon <= 0.29.99, HAVE_NEON="yes", [
1523     HAVE_NEON="no"
1524   ])
1525   AC_SUBST(NEON_CFLAGS)
1526   AC_SUBST(NEON_LIBS)
1527 ])
1528
1529 dnl *** ofa ***
1530 translit(dnm, m, l) AM_CONDITIONAL(USE_OFA, true)
1531 AG_GST_CHECK_FEATURE(OFA, [ofa plugins], ofa, [
1532   PKG_CHECK_MODULES(OFA, libofa >= 0.9.3, HAVE_OFA="yes", [
1533     HAVE_OFA="no"
1534   ])
1535   AC_SUBST(OFA_CFLAGS)
1536   AC_SUBST(OFA_LIBS)
1537 ])
1538
1539 dnl *** OpenAL ***
1540 translit(dnm, m, l) AM_CONDITIONAL(USE_OPENAL, true)
1541 AG_GST_CHECK_FEATURE(OPENAL, [OpenAL plugin], openal, [
1542   PKG_CHECK_MODULES(OPENAL, openal, HAVE_OPENAL="yes", [
1543     HAVE_OPENAL="no"
1544   ])
1545   AC_SUBST(OPENAL_CFLAGS)
1546   AC_SUBST(OPENAL_LIBS)
1547 ])
1548
1549 dnl *** opencv ***
1550 translit(dnm, m, l) AM_CONDITIONAL(USE_OPENCV, true)
1551 AG_GST_CHECK_FEATURE(OPENCV, [opencv plugins], opencv, [
1552   dnl we specify a max. version too because we set CV_NO_BACKWARD_COMPATIBILITY
1553   dnl and don't want the build to break when a new opencv version comes out.
1554   dnl Need to adjust this upwards once we know that our code compiles fine with
1555   dnl a new version and the no-backward-compatibility define. (There doesn't
1556   dnl seem to be a switch to suppress the warnings the cvcompat.h header
1557   dnl causes.)
1558   PKG_CHECK_MODULES(OPENCV, opencv >= 2.0.0 opencv <= 2.4.3 , [
1559     AC_PROG_CXX
1560     AC_LANG([C++])
1561     OLD_CPPFLAGS=$CPPFLAGS
1562     CPPFLAGS=$OPENCV_CFLAGS
1563     AC_CHECK_HEADERS([highgui.h opencv2/highgui/highgui_c.h])
1564     CPPFLAGS=$OLD_CPPFLAGS
1565     AC_LANG([C])
1566
1567     if test $ac_cv_header_highgui_h = "yes" -o $ac_cv_header_opencv2_highgui_highgui_c_h = "yes" ; then
1568       HAVE_OPENCV="yes"
1569     else
1570       AC_MSG_RESULT([neither highgui.h nor opencv2/highgui/highgui_c.h could not be found])
1571       HAVE_OPENCV="no"
1572     fi
1573   ], [
1574     HAVE_OPENCV="no"
1575   ])
1576   OPENCV_PREFIX="`$PKG_CONFIG --variable=prefix opencv`"
1577   AC_DEFINE_UNQUOTED(OPENCV_PREFIX, "$OPENCV_PREFIX", [opencv install prefix])
1578   AC_SUBST(OPENCV_PREFIX)
1579   AC_SUBST(OPENCV_CFLAGS)
1580   AC_SUBST(OPENCV_LIBS)
1581 ])
1582
1583 dnl *** OpenJPEG ***
1584 translit(dnm, m, l) AM_CONDITIONAL(USE_OPENJPEG, true)
1585 AG_GST_CHECK_FEATURE(OPENJPEG, [openjpeg library], openjpeg, [
1586   HAVE_OPENJPEG="no"
1587   PKG_CHECK_MODULES(OPENJPEG, libopenjpeg1,
1588     HAVE_OPENJPEG="yes",
1589     AG_GST_CHECK_LIBHEADER(OPENJPEG, openjpeg, opj_version, , openjpeg.h, OPENJPEG_LIBS="-lopenjpeg")
1590   )
1591   AC_SUBST(OPENJPEG_CFLAGS)
1592   AC_SUBST(OPENJPEG_LIBS)
1593 ])
1594
1595 dnl *** Opus ***
1596 translit(dnm, m, l) AM_CONDITIONAL(USE_OPUS, true)
1597 AG_GST_CHECK_FEATURE(OPUS, [opus], opus, [
1598   PKG_CHECK_MODULES(OPUS, opus >= 0.9.4, [
1599           AC_DEFINE([HAVE_OPUS], 1, [Define if Opus >= 0.9.4 is installed])
1600           HAVE_OPUS="yes"
1601   ], [
1602           HAVE_OPUS="no"
1603   ])
1604   AC_SUBST(OPUS_CFLAGS)
1605   AC_SUBST(OPUS_LIBS)
1606 ])
1607
1608 dnl *** pvr ***
1609 translit(dnm, m, l) AM_CONDITIONAL(USE_PVR, true)
1610 AG_GST_CHECK_FEATURE(PVR, [pvrvideosink], pvr, [
1611   PKG_CHECK_MODULES([PVR], [libtimemmgr], HAVE_PVR=yes, HAVE_PVR=no)
1612   AC_SUBST(PVR_CFLAGS)
1613   AC_SUBST(PVR_LIBS)
1614 ])
1615
1616  AC_ARG_WITH([pvr-external-headers],
1617               AS_HELP_STRING([--with-pvr-external-headers],[Use system installed PVR2D headers]),
1618               [AS_IF([test "x$with_pvr_external_headers" = "xno"],
1619                      [PVR_CFLAGS="$PVR_CFLAGS -I\$(srcdir)/pvr_includes"])],
1620               [PVR_CFLAGS="$PVR_CFLAGS -I\$(srcdir)/pvr_includes"])
1621
1622 dnl *** rsvg ***
1623 translit(dnm, m, l) AM_CONDITIONAL(USE_RSVG, true)
1624 AG_GST_CHECK_FEATURE(RSVG, [rsvg decoder], rsvg, [
1625   PKG_CHECK_MODULES(RSVG, librsvg-2.0 >= 2.14 cairo, [
1626     HAVE_RSVG="yes"
1627     PKG_CHECK_MODULES(RSVG_2_35_0, librsvg-2.0 >= 2.35.0, HAVE_RSVG_2_35_0="yes", HAVE_RSVG_2_35_0="no")
1628     if test "x$HAVE_RSVG_2_35_0" = "xyes"; then
1629       AC_DEFINE(HAVE_RSVG_2_35_0, [1], [Have RSVG 2.35.0 or newer])
1630     fi
1631   ], [
1632     HAVE_RSVG="no"
1633   ])
1634   AC_SUBST(RSVG_CFLAGS)
1635   AC_SUBST(RSVG_LIBS)
1636 ])
1637
1638 dnl *** eglgles ***
1639 AC_ARG_WITH([egl-window-system],
1640               AS_HELP_STRING([--with-egl-window-system],[EGL window system to use (x11, mali-fb, none)]),
1641               [EGL_WINDOW_SYSTEM="$withval"],
1642               [EGL_WINDOW_SYSTEM="none"])
1643
1644 translit(dnm, m, l) AM_CONDITIONAL(USE_EGLGLES, true)
1645 AG_GST_CHECK_FEATURE(EGLGLES, [eglgles sink], eglgles, [
1646   HAVE_EGLGLES="no"
1647
1648   case "$EGL_WINDOW_SYSTEM" in
1649     x11|none)
1650       PKG_CHECK_MODULES(EGLGLES, egl glesv2, HAVE_EGLGLES="yes", [
1651         HAVE_EGLGLES="no"
1652         old_LIBS=$LIBS
1653         old_CFLAGS=$CFLAGS
1654         AC_CHECK_LIB([GLESv2], [glEnable],
1655           [
1656             AC_CHECK_HEADER([GLES2/gl2.h],
1657               [
1658                 AC_CHECK_LIB([EGL], [eglGetProcAddress],
1659                   [
1660                     AC_CHECK_HEADER([EGL/egl.h],
1661                       [
1662                         HAVE_EGLGLES="yes"
1663                         EGLGLES_LIBS="-lGLESv2 -lEGL"
1664                         EGLGLES_CFLAGS=""
1665                       ])
1666                   ])
1667               ])
1668           ])
1669         LIBS=$old_LIBS
1670         CFLAGS=$old_CFLAGS
1671       ])
1672       
1673       if test x"$HAVE_EGLGLES" = x"yes" -a x"$EGL_WINDOW_SYSTEM" = x"x11"; then
1674         if test x"$HAVE_X11" != x"yes"; then
1675           AC_MSG_ERROR([libX11 not found and is required for EGL X11 window system])
1676         else
1677           AC_DEFINE(USE_EGL_X11, [1], [Use X11 EGL window system])
1678           EGLGLES_CFLAGS="$EGLGLES_CFLAGS $X11_CFLAGS"
1679           EGLGLES_LIBS="$EGLGLES_LIBS $X11_LIBS"
1680         fi
1681       fi
1682       ;;
1683     mali-fb)
1684       HAVE_EGLGLES="no"
1685       AC_CHECK_HEADER([EGL/fbdev_window.h],
1686         [
1687           old_LIBS=$LIBS
1688           old_CFLAGS=$CFLAGS
1689
1690           LIBS="$LIBS -lUMP"
1691           AC_CHECK_LIB([Mali], [mali_image_create],
1692             [
1693               LIBS="$LIBS -lMali"
1694               AC_CHECK_LIB([GLESv2], [glEnable],
1695                 [
1696                   AC_CHECK_HEADER([GLES2/gl2.h],
1697                     [
1698                       AC_CHECK_LIB([EGL], [eglGetProcAddress],
1699                         [
1700                           AC_CHECK_HEADER([EGL/egl.h],
1701                             [
1702                               HAVE_EGLGLES="yes"
1703                               EGLGLES_LIBS="-lGLESv2 -lEGL -lMali -lUMP"
1704                               EGLGLES_CFLAGS=""
1705                               AC_DEFINE(USE_EGL_MALI_FB, [1], [Use Mali FB EGL window system])
1706                             ])
1707                         ])
1708                     ])
1709                 ])
1710             ])
1711
1712           LIBS=$old_LIBS
1713           CFLAGS=$old_CFLAGS
1714         ])
1715       ;;
1716     *)
1717       AC_MSG_ERROR([invalid EGL window system specified])
1718       ;;
1719   esac
1720
1721   AC_SUBST(EGLGLES_CFLAGS)
1722   AC_SUBST(EGLGLES_LIBS)
1723 ])
1724
1725 dnl *** timidity ***
1726 translit(dnm, m, l) AM_CONDITIONAL(USE_TIMIDITY, true)
1727 AG_GST_CHECK_FEATURE(TIMIDITY, [timidity midi soft synth plugin], timidity, [
1728   PKG_CHECK_MODULES(TIMIDITY, libtimidity, [
1729     HAVE_TIMIDITY="yes",
1730         AC_MSG_CHECKING([for timidity.cfg])
1731         timidity_cfg=""
1732         if test -r /etc/timidity.cfg; then
1733           timidity_cfg=/etc/timidity.cfg
1734         elif test -r /etc/timidity/timidity.cfg; then
1735           timidity_cfg=/etc/timidity/timidity.cfg
1736         elif test -r /usr/share/timidity/timidity.cfg; then
1737           timidity_cfg=/usr/share/timidity/timidity.cfg
1738         elif test -r /usr/local/share/timidity/timidity.cfg; then
1739           timidity_cfg=/usr/local/share/timidity/timidity.cfg
1740         fi
1741         if test "x$timidity_cfg" != "x"; then
1742           AC_MSG_RESULT($timidity_cfg)
1743       AC_DEFINE_UNQUOTED(TIMIDITY_CFG, "$timidity_cfg", [Define location of timidity.cfg])
1744         else
1745           AC_MSG_RESULT([not found])
1746         fi
1747   ], [
1748     HAVE_TIMIDITY="no"
1749   ])
1750   AC_SUBST(TIMIDITY_CFLAGS)
1751   AC_SUBST(TIMIDITY_LIBS)
1752 ])
1753
1754 dnl *** teletextdec ***
1755 translit(dnm, m, l) AM_CONDITIONAL(USE_TELETEXTDEC, true)
1756 AG_GST_CHECK_FEATURE(TELETEXTDEC, [Teletext decoder], teletextdec, [
1757   AG_GST_PKG_CHECK_MODULES(TELETEXTDEC, zvbi-0.2)
1758  ])
1759
1760 dnl *** wildmidi ***
1761 translit(dnm, m, l) AM_CONDITIONAL(USE_WILDMIDI, true)
1762 AG_GST_CHECK_FEATURE(WILDMIDI, [wildmidi midi soft synth plugin], wildmidi, [
1763   AG_GST_CHECK_LIBHEADER(WILDMIDI, WildMidi,
1764                          WildMidi_Init, ,
1765                          wildmidi_lib.h,
1766                          WILDMIDI_LIBS="-lWildMidi")
1767   AC_CHECK_LIB(WildMidi, WildMidi_LoadSamples, AC_DEFINE(HAVE_WILDMIDI_0_2_2, [1], [Have WildMidi 0.2.2 or earlier library]))
1768
1769   if test "x$HAVE_WILDMIDI" = "xyes"; then
1770          WILDMIDI_CFLAGS=
1771          WILDMIDI_LIBS=-lWildMidi
1772          AC_MSG_NOTICE(compiling gstWildMidi)
1773   else
1774          WILDMIDI_CFLAGS=
1775          WILDMIDI_LIBS=
1776          AC_MSG_WARN(no WildMidi library found (libWildMidi))
1777   fi
1778   AC_SUBST(WILDMIDI_CFLAGS)
1779   AC_SUBST(WILDMIDI_LIBS)
1780 ])
1781
1782 dnl *** SDL ***
1783 translit(dnm, m, l) AM_CONDITIONAL(USE_SDL, true)
1784 AG_GST_CHECK_FEATURE(SDL, [SDL plug-in], sdlvideosink sdlaudiosink, [
1785     AM_PATH_SDL(, HAVE_SDL=yes, HAVE_SDL=no)
1786 ])
1787
1788 dnl *** sndfile ***
1789 translit(dnm, m, l) AM_CONDITIONAL(USE_SNDFILE, true)
1790 AG_GST_CHECK_FEATURE(SNDFILE, [sndfile plug-in], sfsrc sfsink, [
1791   PKG_CHECK_MODULES(SNDFILE, sndfile >= 1.0.16, HAVE_SNDFILE="yes", HAVE_SNDFILE="no")
1792   AC_SUBST(SNDFILE_CFLAGS)
1793   AC_SUBST(SNDFILE_LIBS)
1794 ])
1795
1796 dnl *** soundtouch ***
1797 translit(dnm, m, l) AM_CONDITIONAL(USE_SOUNDTOUCH, true)
1798 AG_GST_CHECK_FEATURE(SOUNDTOUCH, [soundtouch plug-in], soundtouch, [
1799   dnl We only need -lBPM on soundtouch < 1.4
1800   dnl We check for libSoundTouch since Debian used it before upstream
1801   dnl added a pkgconfig file.
1802   HAVE_SOUNDTOUCH_1_4=yes
1803   PKG_CHECK_MODULES(SOUNDTOUCH, soundtouch,
1804     [HAVE_SOUNDTOUCH=yes],
1805     [PKG_CHECK_MODULES(SOUNDTOUCH, soundtouch-1.4,
1806       [HAVE_SOUNDTOUCH=yes],
1807       [PKG_CHECK_MODULES(SOUNDTOUCH, soundtouch-1.0,
1808         [HAVE_SOUNDTOUCH=yes
1809           HAVE_SOUNDTOUCH_1_4=no
1810           SOUNDTOUCH_LIBS="$SOUNDTOUCH_LIBS -lBPM"],
1811         [PKG_CHECK_MODULES(SOUNDTOUCH, libSoundTouch >= 1.4,
1812           [HAVE_SOUNDTOUCH=yes],
1813           [PKG_CHECK_MODULES(SOUNDTOUCH, libSoundTouch,
1814             [HAVE_SOUNDTOUCH=yes
1815               HAVE_SOUNDTOUCH_1_4=no
1816               SOUNDTOUCH_LIBS="$SOUNDTOUCH_LIBS -lBPM"],
1817             HAVE_SOUNDTOUCH=no)])])])])
1818   AC_SUBST(SOUNDTOUCH_CFLAGS)
1819   AC_SUBST(SOUNDTOUCH_LIBS)
1820   if test "x$HAVE_CXX" != "xyes"; then
1821     USE_SOUNDTOUCH=false
1822     AC_MSG_NOTICE([Not building soundtouch plugin: no C++ compiler found])
1823   fi
1824   if test "x$HAVE_SOUNDTOUCH" = "xyes" -a "x$HAVE_SOUNDTOUCH_1_4" = "xyes"; then
1825      AC_DEFINE([HAVE_SOUNDTOUCH_1_4], [1],
1826          [Defined if the available libSoundTouch is >= 1.4])
1827   fi
1828 ])
1829
1830 dnl *** spc ***
1831 translit(dnm, m, l) AM_CONDITIONAL(USE_SPC, true)
1832 AG_GST_CHECK_FEATURE(SPC, [spc decoder], spc, [
1833   AC_CHECK_HEADER(openspc.h, [
1834     AC_CHECK_LIB(openspc, OSPC_Init, [
1835       SPC_LIBS="-lopenspc"
1836       AC_SUBST(SPC_LIBS)
1837       HAVE_SPC=yes
1838     ], [
1839       HAVE_SPC=no
1840     ])
1841   ], [
1842     HAVE_SPC=no
1843   ])
1844 ])
1845
1846 dnl *** gme ***
1847 translit(dnm, m, l) AM_CONDITIONAL(USE_GME, true)
1848 AG_GST_CHECK_FEATURE(GME, [gme decoder], gme, [
1849   AC_CHECK_HEADER(gme/gme.h, [
1850     AC_CHECK_LIB(gme, gme_new_emu, [
1851       GME_LIBS="-lgme"
1852       AC_SUBST(GME_LIBS)
1853       HAVE_GME=yes
1854     ], [
1855       HAVE_GME=no
1856     ])
1857   ], [
1858     HAVE_GME=no
1859   ])
1860
1861   if test "x$HAVE_GME" = "xyes"; then
1862     AC_CHECK_LIB(gme, gme_enable_accuracy, [
1863       AC_DEFINE(HAVE_LIBGME_ACCURACY, 1, [Define if gme 0.5.6 or newer is available])
1864       ])
1865   fi
1866 ])
1867
1868 dnl *** swfdec ***
1869 translit(dnm, m, l) AM_CONDITIONAL(USE_SWFDEC, true)
1870 AG_GST_CHECK_FEATURE(SWFDEC, [swfdec plug-in], swfdec, [
1871   PKG_CHECK_MODULES(SWFDEC, swfdec-0.3 >= 0.3.6, HAVE_SWFDEC=yes, [
1872     HAVE_SWFDEC=no
1873   ])
1874   AC_SUBST(SWFDEC_CFLAGS)
1875   AC_SUBST(SWFDEC_LIBS)
1876 ])
1877
1878 dnl *** XVID ***
1879 translit(dnm, m, l) AM_CONDITIONAL(USE_XVID, true)
1880 AG_GST_CHECK_FEATURE(XVID, [xvid plugins], xvid, [
1881   HAVE_XVID=no
1882   AC_CHECK_HEADER(xvid.h, [
1883     OLD_LIBS="$LIBS"
1884     LIBS="-lpthread $LIBM"
1885     AC_CHECK_LIB(xvidcore, xvid_encore, [
1886       AC_CHECK_LIB(xvidcore, xvid_decore, [
1887         AC_CHECK_LIB(xvidcore, xvid_global, [
1888           AC_MSG_CHECKING([for uptodate XviD API version])
1889           AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <xvid.h>]], [[
1890               #if XVID_API_MAJOR(XVID_API) != 4
1891               #error "Incompatible XviD API version"
1892               #endif
1893               #if XVID_API_MAJOR(XVID_API) == 4 && XVID_API_MINOR(XVID_API) < 3
1894               #error "Incompatible XviD API version"
1895               #endif
1896           ]])],[ AC_MSG_RESULT(yes)
1897             XVID_LIBS="-lxvidcore $LIBM"
1898             AC_SUBST(XVID_LIBS)
1899             HAVE_XVID=yes
1900           ],[AC_MSG_RESULT(no) ])
1901         ], )
1902       ], )
1903     ], )
1904     LIBS="$OLD_LIBS"
1905   ], )
1906 ])
1907
1908 dnl *** dvb ***
1909 translit(dnm, m, l) AM_CONDITIONAL(USE_DVB, true)
1910 AG_GST_CHECK_FEATURE(DVB, [DVB Source], dvb, [
1911   AC_MSG_CHECKING([Checking for up to date dvb installation])
1912   AC_CHECK_HEADER(linux/dvb/frontend.h, [HAVE_DVB="yes"], [HAVE_DVB="no"])
1913 ])
1914
1915 dnl *** wininet ***
1916 translit(dnm, m, l) AM_CONDITIONAL(USE_WININET, true)
1917 AG_GST_CHECK_FEATURE(WININET, [Windows internet library], wininet, [
1918   AC_MSG_CHECKING([Checking for windows internet support])
1919   AC_CHECK_HEADERS([windows.h wininet.h],
1920       [HAVE_WININET="yes"], [HAVE_WININET="no"],
1921       [AC_INCLUDES_DEFAULT
1922 #include <windows.h>])
1923 ])
1924
1925 dnl *** acm ***
1926 translit(dnm, m, l) AM_CONDITIONAL(USE_ACM, true)
1927 AG_GST_CHECK_FEATURE(ACM, [Windows ACM library], acm, [
1928   AC_MSG_CHECKING([Checking for ACM support])
1929   AC_CHECK_HEADERS([windows.h msacm.h],
1930       [HAVE_ACM="yes"
1931        AC_SUBST(ACMENC_CFLAGS)
1932        AC_SUBST(ACMMP3DEC_CFLAGS)
1933       ], [HAVE_ACM="no"],
1934       [AC_INCLUDES_DEFAULT
1935 #include <windows.h>])
1936 ])
1937
1938 dnl *** vdpau ***
1939 translit(dnm, m, l) AM_CONDITIONAL(USE_VDPAU, true)
1940 AG_GST_CHECK_FEATURE(VDPAU, [VDPAU], vdpau, [
1941   VDPAU_CFLAGS=
1942   VDPAU_LIBS=-lvdpau
1943   HAVE_VDPAU=no
1944
1945   PKG_CHECK_MODULES(VDPAU, vdpau, [HAVE_VDPAU="yes"],
1946   [
1947     if test "$HAVE_VDPAU" = "no"; then
1948       saved_CPPFLAGS="$CPPFLAGS"
1949       AC_CHECK_HEADER([vdpau/vdpau.h], [HAVE_VDPAU_H=yes])
1950
1951       if test -z "$HAVE_VDPAU_H"; then
1952         dnl Didn't find VDPAU header straight away.
1953         dnl Try /usr/include/nvidia. Need to clear caching vars first
1954         AC_MSG_NOTICE([VDPAU header not in standard path. Checking /usr/include/nvidia])
1955         unset ac_cv_header_vdpau_vdpau_h
1956         unset ac_cv_header_vdpau_vdpau_x11_h
1957         VDPAU_CFLAGS="-I/usr/include/nvidia"
1958         VDPAU_LIBS="-L/usr/lib/nvidia -lvdpau"
1959         CPPFLAGS="$VDPAU_CFLAGS $saved_CPPFLAGS"
1960         AC_CHECK_HEADER([vdpau/vdpau.h], [HAVE_VDPAU_H=yes])
1961       fi
1962
1963       AC_CHECK_HEADER([vdpau/vdpau_x11.h], [HAVE_VDPAU_X11_H=yes])
1964
1965       if test "x$HAVE_VDPAU_H" = "xyes" -a "x$HAVE_VDPAU_X11_H" = "xyes"; then
1966         dnl Found the headers - look for the lib
1967         AC_MSG_NOTICE([VDPAU headers found. Checking libraries])
1968         saved_LIBS="$LIBS"
1969         LIBS="$VDPAU_LIBS $saved_LIBS"
1970         AC_CHECK_LIB(vdpau,vdp_device_create_x11,[HAVE_VDPAU="yes"])
1971         LIBS="$saved_LIBS"
1972       fi
1973     fi
1974   ])
1975
1976   if test "$HAVE_VDPAU" = "yes"; then
1977     AC_MSG_NOTICE([Found up to date VDPAU installation])
1978     AC_SUBST(VDPAU_CFLAGS)
1979     AC_SUBST(VDPAU_LIBS)
1980   fi
1981 ])
1982
1983 dnl *** schroedinger ***
1984 translit(dnm, m, l) AM_CONDITIONAL(USE_SCHRO, true)
1985 AG_GST_CHECK_FEATURE(SCHRO, [Schroedinger video codec], schro, [
1986   AG_GST_PKG_CHECK_MODULES(SCHRO, schroedinger-1.0 >= 1.0.10)
1987 ])
1988
1989 dnl *** zbar ***
1990 translit(dnm, m, l) AM_CONDITIONAL(USE_ZBAR, true)
1991 AG_GST_CHECK_FEATURE(ZBAR, [ZBar barcode detector], zbar, [
1992   AG_GST_PKG_CHECK_MODULES(ZBAR, zbar >= 0.9)
1993 ])
1994
1995 dnl *** rtmp ***
1996 translit(dnm, m, l) AM_CONDITIONAL(USE_RTMP, true)
1997 AG_GST_CHECK_FEATURE(RTMP, [rtmp library], rtmp, [
1998   AG_GST_PKG_CHECK_MODULES(RTMP, librtmp)
1999 ])
2000
2001 dnl *** spandsp ***
2002 translit(dnm, m, l) AM_CONDITIONAL(USE_SPANDSP, true)
2003 AG_GST_CHECK_FEATURE(SPANDSP, [Spandsp], spandsp, [
2004   PKG_CHECK_MODULES(SPANDSP, spandsp >= 0.0.6, [
2005     HAVE_SPANDSP="yes" ], [
2006     HAVE_SPANDSP="no"
2007   ])
2008 ])
2009 AC_SUBST(SPANDSP_CFLAGS)
2010 AC_SUBST(SPANDSP_LIBS)
2011
2012 dnl *** GSettings ***
2013 translit(dnm, m, l) AM_CONDITIONAL(USE_GSETTINGS, true)
2014 AG_GST_CHECK_FEATURE(GSETTINGS, [GSettings plugin], gsettings, [
2015   AG_GST_PKG_CHECK_MODULES(GSETTINGS, gio-2.0 >= 2.25.0)
2016   if test "x$HAVE_GSETTINGS" = "xyes"; then
2017     GLIB_GSETTINGS
2018   fi
2019 ])
2020
2021 dnl *** sndio ***
2022 translit(dnm, m, l) AM_CONDITIONAL(USE_SNDIO, true)
2023 AG_GST_CHECK_FEATURE(SNDIO, [sndio audio], sndio, [
2024   AC_CHECK_HEADER(sndio.h, HAVE_SNDIO="yes", HAVE_SNDIO="no")
2025   if test "x$HAVE_SNDIO" = "xyes"; then
2026     AC_CHECK_LIB(sndio, sio_open, HAVE_SNDIO="yes", HAVE_SNDIO="no")
2027     if test "x$HAVE_SNDIO" = "xyes"; then
2028       SNDIO_LIBS=-lsndio
2029       AC_SUBST(SNDIO_LIBS)
2030     fi
2031   fi
2032 ])
2033
2034 else
2035
2036 dnl not building plugins with external dependencies,
2037 dnl but we still need to set the conditionals
2038
2039 AM_CONDITIONAL(USE_ASSRENDER, false)
2040 AM_CONDITIONAL(USE_VOAMRWBENC, false)
2041 AM_CONDITIONAL(USE_VOAACENC, false)
2042 AM_CONDITIONAL(USE_APEXSINK, false)
2043 AM_CONDITIONAL(USE_BZ2, false)
2044 AM_CONDITIONAL(USE_CDAUDIO, false)
2045 AM_CONDITIONAL(USE_CELT, false)
2046 AM_CONDITIONAL(USE_CHROMAPRINT, false)
2047 AM_CONDITIONAL(USE_COG, false)
2048 AM_CONDITIONAL(USE_CURL, false)
2049 AM_CONDITIONAL(USE_DC1394, false)
2050 AM_CONDITIONAL(USE_DECKLINK, false)
2051 AM_CONDITIONAL(DECKLINK_OSX, false)
2052 AM_CONDITIONAL(USE_DIRECTFB, false)
2053 AM_CONDITIONAL(USE_WAYLAND, false)
2054 AM_CONDITIONAL(USE_DIRAC, false)
2055 AM_CONDITIONAL(USE_DTS, false)
2056 AM_CONDITIONAL(USE_EXIF, false)
2057 AM_CONDITIONAL(USE_RESINDVD, false)
2058 AM_CONDITIONAL(USE_FAAC, false)
2059 AM_CONDITIONAL(USE_FAAD, false)
2060 AM_CONDITIONAL(USE_FBDEV, false)
2061 AM_CONDITIONAL(USE_FLITE, false)
2062 AM_CONDITIONAL(USE_GSM, false)
2063 AM_CONDITIONAL(USE_KATE, false)
2064 AM_CONDITIONAL(USE_TIGER, false)
2065 AM_CONDITIONAL(USE_LADSPA, false)
2066 AM_CONDITIONAL(USE_LV2, false)
2067 AM_CONDITIONAL(USE_LIBMMS, false)
2068 AM_CONDITIONAL(USE_LINSYS, false)
2069 AM_CONDITIONAL(USE_MODPLUG, false)
2070 AM_CONDITIONAL(USE_MIMIC, false)
2071 AM_CONDITIONAL(USE_MPEG2ENC, false)
2072 AM_CONDITIONAL(USE_MPG123, false)
2073 AM_CONDITIONAL(USE_MPLEX, false)
2074 AM_CONDITIONAL(USE_MUSEPACK, false)
2075 AM_CONDITIONAL(USE_MUSICBRAINZ, false)
2076 AM_CONDITIONAL(USE_MYTHTV, false)
2077 AM_CONDITIONAL(USE_NAS, false)
2078 AM_CONDITIONAL(USE_NEON, false)
2079 AM_CONDITIONAL(USE_OFA, false)
2080 AM_CONDITIONAL(USE_OPENAL, false)
2081 AM_CONDITIONAL(USE_OPENCV, false)
2082 AM_CONDITIONAL(USE_OPENJPEG, false)
2083 AM_CONDITIONAL(USE_OPUS, false)
2084 AM_CONDITIONAL(USE_PVR, false)
2085 AM_CONDITIONAL(USE_RSVG, false)
2086 AM_CONDITIONAL(USE_TIMIDITY, false)
2087 AM_CONDITIONAL(USE_WILDMIDI, false)
2088 AM_CONDITIONAL(USE_SDL, false)
2089 AM_CONDITIONAL(USE_SNDFILE, false)
2090 AM_CONDITIONAL(USE_SOUNDTOUCH, false)
2091 AM_CONDITIONAL(USE_SPANDSP, false)
2092 AM_CONDITIONAL(USE_SPC, false)
2093 AM_CONDITIONAL(USE_GME, false)
2094 AM_CONDITIONAL(USE_GSETTINGS, false)
2095 AM_CONDITIONAL(USE_SWFDEC, false)
2096 AM_CONDITIONAL(USE_XVID, false)
2097 AM_CONDITIONAL(USE_DVB, false)
2098 AM_CONDITIONAL(USE_WININET, false)
2099 AM_CONDITIONAL(USE_ACM, false)
2100 AM_CONDITIONAL(USE_VDPAU, false)
2101 AM_CONDITIONAL(USE_SCHRO, false)
2102 AM_CONDITIONAL(USE_ZBAR, false)
2103 AM_CONDITIONAL(USE_RTMP, false)
2104 AM_CONDITIONAL(USE_TELETEXTDEC, false)
2105 AM_CONDITIONAL(USE_SNDIO, false)
2106 AM_CONDITIONAL(USE_UVCH264, false)
2107
2108 fi dnl of EXT plugins
2109
2110 dnl *** finalize CFLAGS, LDFLAGS, LIBS
2111
2112 dnl Overview:
2113 dnl GST_OPTION_CFLAGS:  common flags for profiling, debugging, errors, ...
2114 dnl GST_*:              flags shared by built objects to link against GStreamer
2115 dnl GST_ALL_LDFLAGS:    linker flags shared by all
2116 dnl GST_LIB_LDFLAGS:    additional linker flags for all libaries
2117 dnl GST_LT_LDFLAGS:     library versioning of our libraries
2118 dnl GST_PLUGIN_LDFLAGS: flags to be used for all plugins
2119
2120 dnl GST_OPTION_CFLAGS
2121 if test "x$USE_DEBUG" = xyes; then
2122    PROFILE_CFLAGS="-g"
2123 fi
2124 AC_SUBST(PROFILE_CFLAGS)
2125
2126 if test "x$PACKAGE_VERSION_NANO" = "x1"; then
2127   dnl Define _only_ during CVS (not pre-releases or releases)
2128   DEPRECATED_CFLAGS="-DGST_DISABLE_DEPRECATED"
2129 else
2130   DEPRECATED_CFLAGS=""
2131 fi
2132 AC_SUBST(DEPRECATED_CFLAGS)
2133
2134 dnl every flag in GST_OPTION_CFLAGS and GST_OPTION_CXXFLAGS can be overridden
2135 dnl at make time with e.g. make ERROR_CFLAGS=""
2136 GST_OPTION_CFLAGS="\$(WARNING_CFLAGS) \$(ERROR_CFLAGS) \$(DEBUG_CFLAGS) \$(PROFILE_CFLAGS) \$(GCOV_CFLAGS) \$(OPT_CFLAGS) \$(DEPRECATED_CFLAGS)"
2137 GST_OPTION_CXXFLAGS="\$(WARNING_CXXFLAGS) \$(ERROR_CXXFLAGS) \$(DEBUG_CFLAGS) \$(PROFILE_CFLAGS) \$(GCOV_CFLAGS) \$(OPT_CFLAGS) \$(DEPRECATED_CFLAGS)"
2138 GST_OPTION_OBJCFLAGS="\$(WARNING_OBJCFLAGS) \$(ERROR_OBJCFLAGS) \$(DEBUG_CFLAGS) \$(PROFILE_CFLAGS) \$(GCOV_CFLAGS) \$(OPT_CFLAGS) \$(DEPRECATED_CFLAGS)"
2139 AC_SUBST(GST_OPTION_CFLAGS)
2140 AC_SUBST(GST_OPTION_CXXFLAGS)
2141 AC_SUBST(GST_OPTION_OBJCFLAGS)
2142
2143 dnl FIXME: do we want to rename to GST_ALL_* ?
2144 dnl prefer internal headers to already installed ones
2145 dnl also add builddir include for enumtypes and marshal
2146 dnl add GST_OPTION_CFLAGS, but overridable
2147 GST_CFLAGS="$GST_CFLAGS -DGST_USE_UNSTABLE_API"
2148 GST_CXXFLAGS="$GST_CFLAGS $GLIB_EXTRA_CFLAGS \$(GST_OPTION_CXXFLAGS)"
2149 GST_OBJCFLAGS="$GST_CFLAGS $GLIB_EXTRA_CFLAGS \$(GST_OPTION_OBJCFLAGS)"
2150 GST_CFLAGS="$GST_CFLAGS $GLIB_EXTRA_CFLAGS \$(GST_OPTION_CFLAGS)"
2151 AC_SUBST(GST_CFLAGS)
2152 AC_SUBST(GST_CXXFLAGS)
2153 AC_SUBST(GST_OBJCFLAGS)
2154 AC_SUBST(GST_LIBS)
2155 GST_PLUGINS_BAD_CXXFLAGS="-I\$(top_srcdir)/gst-libs -I\$(top_builddir)/gst-libs"
2156 GST_PLUGINS_BAD_OBJCFLAGS="-I\$(top_srcdir)/gst-libs -I\$(top_builddir)/gst-libs"
2157 GST_PLUGINS_BAD_CFLAGS="-I\$(top_srcdir)/gst-libs -I\$(top_builddir)/gst-libs"
2158 AC_SUBST(GST_PLUGINS_BAD_CFLAGS)
2159 AC_SUBST(GST_PLUGINS_BAD_CXXFLAGS)
2160 AC_SUBST(GST_PLUGINS_BAD_OBJCFLAGS)
2161
2162 dnl LDFLAGS really should only contain flags, not libs - they get added before
2163 dnl whatevertarget_LIBS and -L flags here affect the rest of the linking
2164 GST_ALL_LDFLAGS="-no-undefined"
2165 AC_SUBST(GST_ALL_LDFLAGS)
2166
2167 dnl GST_LIB_LDFLAGS
2168 dnl linker flags shared by all libraries
2169 dnl LDFLAGS modifier defining exported symbols from built libraries
2170 dnl (export _gst_foo but not __gst_foo)
2171 GST_LIB_LDFLAGS="-export-symbols-regex ^_?\(gst_\|Gst\|GST_\).*"
2172 AC_SUBST(GST_LIB_LDFLAGS)
2173
2174 dnl this really should only contain flags, not libs - they get added before
2175 dnl whatevertarget_LIBS and -L flags here affect the rest of the linking
2176 GST_PLUGIN_LDFLAGS="-module -avoid-version -export-symbols-regex '^[_]*gst_plugin_desc.*' $GST_ALL_LDFLAGS"
2177 AC_SUBST(GST_PLUGIN_LDFLAGS)
2178
2179 dnl *** output files ***
2180
2181 dnl po/Makefile.in
2182
2183 AC_CONFIG_FILES(
2184 Makefile
2185 common/Makefile
2186 common/m4/Makefile
2187 gst-plugins-bad.spec
2188 gst/Makefile
2189 gst/accurip/Makefile
2190 gst/adpcmdec/Makefile
2191 gst/adpcmenc/Makefile
2192 gst/aiff/Makefile
2193 gst/asfmux/Makefile
2194 gst/audiovisualizers/Makefile
2195 gst/autoconvert/Makefile
2196 gst/bayer/Makefile
2197 gst/camerabin2/Makefile
2198 gst/cdxaparse/Makefile
2199 gst/coloreffects/Makefile
2200 gst/dataurisrc/Makefile
2201 gst/dccp/Makefile
2202 gst/debugutils/Makefile
2203 gst/dtmf/Makefile
2204 gst/dvbsuboverlay/Makefile
2205 gst/dvdspu/Makefile
2206 gst/faceoverlay/Makefile
2207 gst/festival/Makefile
2208 gst/fieldanalysis/Makefile
2209 gst/freeverb/Makefile
2210 gst/frei0r/Makefile
2211 gst/gaudieffects/Makefile
2212 gst/geometrictransform/Makefile
2213 gst/gdp/Makefile
2214 gst/hdvparse/Makefile
2215 gst/hls/Makefile
2216 gst/id3tag/Makefile
2217 gst/inter/Makefile
2218 gst/interlace/Makefile
2219 gst/ivfparse/Makefile
2220 gst/jp2kdecimator/Makefile
2221 gst/jpegformat/Makefile
2222 gst/librfb/Makefile
2223 gst/liveadder/Makefile
2224 gst/mpegdemux/Makefile
2225 gst/mpegtsdemux/Makefile
2226 gst/mpegtsmux/Makefile
2227 gst/mpegtsmux/tsmux/Makefile
2228 gst/mpegpsmux/Makefile
2229 gst/mve/Makefile
2230 gst/mxf/Makefile
2231 gst/nsf/Makefile
2232 gst/nuvdemux/Makefile
2233 gst/patchdetect/Makefile
2234 gst/pcapparse/Makefile
2235 gst/pnm/Makefile
2236 gst/rawparse/Makefile
2237 gst/real/Makefile
2238 gst/removesilence/Makefile
2239 gst/sdi/Makefile
2240 gst/sdp/Makefile
2241 gst/segmentclip/Makefile
2242 gst/siren/Makefile
2243 gst/smooth/Makefile
2244 gst/speed/Makefile
2245 gst/subenc/Makefile
2246 gst/stereo/Makefile
2247 gst/tta/Makefile
2248 gst/videofilters/Makefile
2249 gst/videomeasure/Makefile
2250 gst/videoparsers/Makefile
2251 gst/videosignal/Makefile
2252 gst/vmnc/Makefile
2253 gst/y4m/Makefile
2254 gst-libs/Makefile
2255 gst-libs/gst/Makefile
2256 gst-libs/gst/basecamerabinsrc/Makefile
2257 gst-libs/gst/interfaces/Makefile
2258 gst-libs/gst/signalprocessor/Makefile
2259 gst-libs/gst/codecparsers/Makefile
2260 gst-libs/gst/video/Makefile
2261 sys/Makefile
2262 sys/dshowdecwrapper/Makefile
2263 sys/acmenc/Makefile
2264 sys/acmmp3dec/Makefile
2265 sys/androidmedia/Makefile
2266 sys/applemedia/Makefile
2267 sys/avc/Makefile
2268 sys/bluez/Makefile
2269 sys/d3dvideosink/Makefile
2270 sys/decklink/Makefile
2271 sys/directdraw/Makefile
2272 sys/directsound/Makefile
2273 sys/dshowsrcwrapper/Makefile
2274 sys/dshowvideosink/Makefile
2275 sys/dvb/Makefile
2276 sys/fbdev/Makefile
2277 sys/linsys/Makefile
2278 sys/opensles/Makefile
2279 sys/osxvideo/Makefile
2280 sys/qtwrapper/Makefile
2281 sys/mfc/Makefile
2282 sys/shm/Makefile
2283 sys/uvch264/Makefile
2284 sys/vcd/Makefile
2285 sys/vdpau/Makefile
2286 sys/vdpau/gstvdp/Makefile
2287 sys/vdpau/basevideodecoder/Makefile
2288 sys/pvr2d/Makefile
2289 sys/wasapi/Makefile
2290 sys/wininet/Makefile
2291 sys/winks/Makefile
2292 sys/winscreencap/Makefile
2293 tests/Makefile
2294 tests/check/Makefile
2295 tests/files/Makefile
2296 tests/examples/Makefile
2297 tests/examples/camerabin2/Makefile
2298 tests/examples/directfb/Makefile
2299 tests/examples/mxf/Makefile
2300 tests/examples/opencv/Makefile
2301 tests/examples/uvch264/Makefile
2302 tests/icles/Makefile
2303 ext/voamrwbenc/Makefile
2304 ext/voaacenc/Makefile
2305 ext/assrender/Makefile
2306 ext/apexsink/Makefile
2307 ext/bz2/Makefile
2308 ext/cdaudio/Makefile
2309 ext/celt/Makefile
2310 ext/chromaprint/Makefile
2311 ext/cog/Makefile
2312 ext/curl/Makefile
2313 ext/dc1394/Makefile
2314 ext/dirac/Makefile
2315 ext/directfb/Makefile
2316 ext/wayland/Makefile
2317 ext/dts/Makefile
2318 ext/eglgles/Makefile
2319 ext/faac/Makefile
2320 ext/faad/Makefile
2321 ext/flite/Makefile
2322 ext/gsm/Makefile
2323 ext/kate/Makefile
2324 ext/ladspa/Makefile
2325 ext/lv2/Makefile
2326 ext/libmms/Makefile
2327 ext/Makefile
2328 ext/modplug/Makefile
2329 ext/mpeg2enc/Makefile
2330 ext/mpg123/Makefile
2331 ext/mimic/Makefile
2332 ext/mplex/Makefile
2333 ext/musepack/Makefile
2334 ext/musicbrainz/Makefile
2335 ext/mythtv/Makefile
2336 ext/nas/Makefile
2337 ext/neon/Makefile
2338 ext/ofa/Makefile
2339 ext/openal/Makefile
2340 ext/opencv/Makefile
2341 ext/openjpeg/Makefile
2342 ext/opus/Makefile
2343 ext/rsvg/Makefile
2344 ext/resindvd/Makefile
2345 ext/rtmp/Makefile
2346 ext/schroedinger/Makefile
2347 ext/sdl/Makefile
2348 ext/sndfile/Makefile
2349 ext/soundtouch/Makefile
2350 ext/spandsp/Makefile
2351 ext/sndio/Makefile
2352 ext/teletextdec/Makefile
2353 ext/gme/Makefile
2354 ext/gsettings/Makefile
2355 ext/gsettings/org.freedesktop.gstreamer.default-elements.gschema.xml
2356 ext/spc/Makefile
2357 ext/swfdec/Makefile
2358 ext/timidity/Makefile
2359 ext/xvid/Makefile
2360 ext/zbar/Makefile
2361 po/Makefile.in
2362 docs/Makefile
2363 docs/plugins/Makefile
2364 docs/libs/Makefile
2365 docs/version.entities
2366 pkgconfig/Makefile
2367 pkgconfig/gstreamer-plugins-bad.pc
2368 pkgconfig/gstreamer-plugins-bad-uninstalled.pc
2369 pkgconfig/gstreamer-codecparsers.pc
2370 pkgconfig/gstreamer-codecparsers-uninstalled.pc
2371 pkgconfig/gstreamer-basevideo.pc
2372 pkgconfig/gstreamer-basevideo-uninstalled.pc
2373 tools/Makefile
2374 m4/Makefile
2375 win32/common/config.h
2376 )
2377 AC_OUTPUT
2378
2379 AG_GST_OUTPUT_PLUGINS
2380 ORC_OUTPUT
2381