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