configure.ac: Added --with-hls-crypto=auto|nettle|libgcrypt|openssl option to build...
[platform/upstream/gstreamer.git] / configure.ac
1 AC_PREREQ([2.69])
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, git and prerelease does Werror too
6 AC_INIT([GStreamer Bad Plug-ins],[1.7.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.14 no-dist-gzip dist-xz tar-ustar subdir-objects])
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 PKG_CONFIG_SYSROOT_DIR is a valid environment variable
37 m4_pattern_allow(PKG_CONFIG_SYSROOT_DIR)
38
39 dnl our libraries and install dirs use GST_API_VERSION in the filename
40 dnl to allow side-by-side installation of different API versions
41 GST_API_VERSION=1.0
42 AC_SUBST(GST_API_VERSION)
43 AC_DEFINE_UNQUOTED(GST_API_VERSION, "$GST_API_VERSION",
44   [GStreamer API Version])
45
46 AG_GST_LIBTOOL_PREPARE
47
48 dnl CURRENT, REVISION, AGE
49 dnl - library source changed -> increment REVISION
50 dnl - interfaces added/removed/changed -> increment CURRENT, REVISION = 0
51 dnl - interfaces added -> increment AGE
52 dnl - interfaces removed -> AGE = 0
53 dnl sets GST_LT_LDFLAGS
54 AS_LIBTOOL(GST, 700, 0, 700)
55
56 dnl *** required versions of GStreamer stuff ***
57 GST_REQ=1.7.0.1
58 GSTPB_REQ=1.7.0.1
59
60 dnl *** autotools stuff ****
61
62 dnl allow for different autotools
63 AS_AUTOTOOLS_ALTERNATE
64
65 dnl Add parameters for aclocal
66 AC_SUBST(ACLOCAL_AMFLAGS, "-I m4 -I common/m4")
67
68 dnl set up gettext
69 dnl the version check needs to stay here because autopoint greps for it
70 AM_GNU_GETTEXT_VERSION([0.17])
71 AM_GNU_GETTEXT([external])
72 AG_GST_GETTEXT([gst-plugins-bad-$GST_API_VERSION])
73
74 dnl *** check for arguments to configure ***
75
76 AG_GST_ARG_DISABLE_FATAL_WARNINGS
77 AG_GST_ARG_ENABLE_EXTRA_CHECKS
78
79 AG_GST_ARG_DEBUG
80 AG_GST_ARG_PROFILING
81 AG_GST_ARG_VALGRIND
82 AG_GST_ARG_GCOV
83
84 AG_GST_ARG_EXAMPLES
85
86 AG_GST_ARG_WITH_PKG_CONFIG_PATH
87 AG_GST_ARG_WITH_PACKAGE_NAME
88 AG_GST_ARG_WITH_PACKAGE_ORIGIN
89
90 AG_GST_ARG_WITH_PLUGINS
91
92 AG_GST_ARG_ENABLE_EXTERNAL
93
94 AG_GST_ARG_ENABLE_EXPERIMENTAL
95
96 AG_GST_PKG_CONFIG_PATH
97
98 dnl *** checks for platform ***
99 AG_GST_PLATFORM
100
101 dnl * hardware/architecture *
102
103 dnl common/m4/gst-arch.m4
104 dnl check CPU type
105 AG_GST_ARCH
106
107 dnl Determine endianness
108 AC_C_BIGENDIAN
109
110 dnl *** checks for programs ***
111
112 dnl find a compiler
113 AC_PROG_CC
114 AC_PROG_CC_STDC
115
116 dnl determine c++ compiler
117 AC_PROG_CXX
118 dnl determine if c++ is available on this system
119 AC_CHECK_PROG(HAVE_CXX, $CXX, yes, no)
120
121 AC_PROG_OBJC
122
123 dnl check if the compiler supports '-c' and '-o' options
124 AM_PROG_CC_C_O
125
126 dnl check if the compiler supports do while(0) macros
127 AG_GST_CHECK_DOWHILE_MACROS
128
129 AC_PATH_PROG(VALGRIND_PATH, valgrind, no)
130 AM_CONDITIONAL(HAVE_VALGRIND, test ! "x$VALGRIND_PATH" = "xno")
131
132 dnl check for gobject-introspection
133 GOBJECT_INTROSPECTION_CHECK([1.31.1])
134
135 dnl check for documentation tools
136 GTK_DOC_CHECK([1.12])
137 AG_GST_PLUGIN_DOCS([1.12])
138
139 dnl *** checks for libraries ***
140
141 dnl check for libm, for sin() etc.
142 LT_LIB_M
143 AC_SUBST(LIBM)
144
145 AC_FUNC_MMAP
146
147 dnl check for pthreads
148 AX_PTHREAD
149
150 dnl *** checks for header files ***
151
152 AC_CHECK_HEADERS([unistd.h], HAVE_UNISTD_H=yes)
153 AM_CONDITIONAL(HAVE_UNISTD_H, test "x$HAVE_UNISTD_H" = "xyes")
154
155 if test "x$HAVE_UNISTD_H" != "xyes"; then
156   GST_PLUGINS_SELECTED=`echo $GST_PLUGINS_SELECTED | $SED -e s/festival//`
157 fi
158
159 AC_CHECK_HEADERS([sys/time.h])
160
161 dnl used by ext/dts
162 AX_CREATE_STDINT_H
163
164 AC_CHECK_HEADERS([pthread.h], HAVE_PTHREAD_H=yes)
165 AM_CONDITIONAL(HAVE_PTHREAD_H, test "x$HAVE_PTHREAD_H" = "xyes")
166
167 if test "x$HAVE_PTHREAD_H" != "xyes"; then
168   GST_PLUGINS_SELECTED=`echo $GST_PLUGINS_SELECTED | $SED -e s/dccp//`
169 fi
170
171 dnl *** checks for types/defines ***
172
173 dnl Check for FIONREAD ioctl declaration
174 dnl used in gst/dccp
175 GST_CHECK_FIONREAD
176
177 dnl *** checks for structures ***
178
179 dnl *** checks for compiler characteristics ***
180
181 dnl *** checks for library functions ***
182 AC_CHECK_FUNCS([gmtime_r])
183
184 dnl *** checks for headers ***
185 AC_CHECK_HEADERS([sys/utsname.h])
186
187 dnl *** checks for dependency libraries ***
188
189 dnl *** checks for socket and nsl libraries ***
190 AC_CHECK_FUNC(socket,,[AC_CHECK_LIB(socket,socket)])
191 AC_CHECK_FUNC(gethostbyname,,[AC_CHECK_LIB(nsl,gethostbyname)])
192
193 dnl GLib is required
194 GLIB_REQ=2.40.0
195 AG_GST_GLIB_CHECK([$GLIB_REQ])
196
197 dnl checks for gstreamer
198 dnl uninstalled is selected preferentially -- see pkg-config(1)
199 AG_GST_CHECK_GST($GST_API_VERSION, [$GST_REQ], yes)
200 AG_GST_CHECK_GST_BASE($GST_API_VERSION, [$GST_REQ], yes)
201 AG_GST_CHECK_GST_CHECK($GST_API_VERSION, [$GST_REQ], no)
202 AG_GST_CHECK_GST_CONTROLLER($GST_API_VERSION, [$GST_REQ], yes)
203 AG_GST_CHECK_GST_NET($GST_API_VERSION, [$GST_REQ], yes)
204 AM_CONDITIONAL(HAVE_GST_CHECK, test "x$HAVE_GST_CHECK" = "xyes")
205
206 AG_GST_CHECK_GST_PLUGINS_BASE($GST_API_VERSION, [$GSTPB_REQ], yes)
207
208 dnl check for uninstalled plugin directories for unit tests
209 AG_GST_CHECK_UNINSTALLED_SETUP([
210   AG_GST_CHECK_GST_PLUGINS_GOOD($GST_API_VERSION, [0.11.0])
211   AG_GST_CHECK_GST_PLUGINS_UGLY($GST_API_VERSION, [0.11.0])
212   AG_GST_CHECK_GST_PLUGINS_LIBAV($GST_API_VERSION, [0.11.0])
213 ])
214
215 dnl Check for documentation xrefs
216 GLIB_PREFIX="`$PKG_CONFIG --variable=prefix glib-2.0`"
217 GST_PREFIX="`$PKG_CONFIG --variable=prefix gstreamer-$GST_API_VERSION`"
218 GSTPB_PREFIX="`$PKG_CONFIG --variable=prefix gstreamer-plugins-base-$GST_API_VERSION`"
219 AC_SUBST(GLIB_PREFIX)
220 AC_SUBST(GST_PREFIX)
221 AC_SUBST(GSTPB_PREFIX)
222
223 dnl GTK is optional and used in examples
224 HAVE_GTK=NO
225 GTK2_REQ=2.14.0
226 GTK3_REQ=2.91.3
227 if test "x$BUILD_EXAMPLES" = "xyes"; then
228   AC_MSG_CHECKING([which gtk+ version to compile examples against (optional)])
229   AC_ARG_WITH([gtk],
230     AS_HELP_STRING([--with-gtk=3.0|2.0],[which gtk+ version to compile against (default: 2.0)]),
231     [case "$with_gtk" in
232         2.0) GTK_REQ=$GTK2_REQ ;;
233         3.0) GTK_REQ=$GTK3_REQ ;;
234         *) AC_MSG_ERROR([invalid gtk+ version specified]);;
235     esac],
236     [with_gtk=2.0
237      GTK_REQ=$GTK2_REQ])
238   AC_MSG_RESULT([$with_gtk (>= $GTK_REQ)])
239   PKG_CHECK_MODULES(GTK, gtk+-x11-$with_gtk >= $GTK_REQ, HAVE_GTK=yes, HAVE_GTK=no)
240   AC_SUBST(GTK_LIBS)
241   AC_SUBST(GTK_CFLAGS)
242 fi
243 AM_CONDITIONAL(HAVE_GTK, test "x$HAVE_GTK" = "xyes")
244
245
246 dnl GTK is optional and used in examples
247 HAVE_GTK3=NO
248 if test "x$BUILD_EXAMPLES" = "xyes"; then
249   PKG_CHECK_MODULES(GTK3, gtk+-3.0 >= 3.4, HAVE_GTK3=yes, HAVE_GTK3=no)
250   if test "x$HAVE_GTK3" = "xyes"; then
251     HAVE_GTK=yes
252     GTK_VERSION=`$PKG_CONFIG --variable=gtk_binary_version gtk+-3.0`
253     AC_SUBST(GTK_VERSION)
254     GTK_PREFIX=`$PKG_CONFIG --variable=prefix gdk-pixbuf-2.0`
255     AC_SUBST(GTK_BASE_DIR)
256   fi
257 fi
258 AC_SUBST(GTK3_LIBS)
259 AC_SUBST(GTK3_CFLAGS)
260 AC_SUBST(HAVE_GTK3)
261 AM_CONDITIONAL(HAVE_GTK3, test "x$HAVE_GTK3" = "xyes")
262
263 dnl clutter is optional and used in examples
264 HAVE_CLUTTER=no
265 HAVE_CLUTTER_X11=no
266 HAVE_CLUTTER_GLX=no
267 if test "x$BUILD_EXAMPLES" = "xyes"; then
268   PKG_CHECK_MODULES(CLUTTER, clutter-1.0 >= 1.8, HAVE_CLUTTER=yes, HAVE_CLUTTER=no)
269   AC_SUBST(CLUTTER_LIBS)
270   AC_SUBST(CLUTTER_CFLAGS)
271   AC_SUBST(HAVE_CLUTTER)
272
273   PKG_CHECK_MODULES(CLUTTER_GLX, clutter-glx-1.0 >= 1.8, HAVE_CLUTTER_GLX=yes, HAVE_CLUTTER_GLX=no)
274   AC_SUBST(CLUTTER_GLX_LIBS)
275   AC_SUBST(CLUTTER_GLX_CFLAGS)
276   AC_SUBST(HAVE_CLUTTER_GLX)
277
278   PKG_CHECK_MODULES(CLUTTER_X11, clutter-x11-1.0 >= 1.8, HAVE_CLUTTER_X11=yes, HAVE_CLUTTER_X11=no)
279   AC_SUBST(CLUTTER_X11_LIBS)
280   AC_SUBST(CLUTTER_X11_CFLAGS)
281   AC_SUBST(HAVE_CLUTTER_X11)
282 fi
283 AM_CONDITIONAL(HAVE_CLUTTER, test "x$HAVE_CLUTTER" = "xyes")
284 AM_CONDITIONAL(HAVE_CLUTTER_GLX, test "x$HAVE_CLUTTER_GLX" = "xyes")
285 AM_CONDITIONAL(HAVE_CLUTTER_X11, test "x$HAVE_CLUTTER_X11" = "xyes")
286
287 dnl used in the gl/clutteractor example
288 if test "x$BUILD_EXAMPLES" = "xyes"; then
289   PKG_CHECK_MODULES(XCOMPOSITE, xcomposite, HAVE_XCOMPOSITE=yes, HAVE_XCOMPOSITE=no)
290   AC_SUBST(XCOMPOSITE_CFLAGS)
291   AC_SUBST(XCOMPOSITE_LIBS)
292 fi
293 AM_CONDITIONAL(HAVE_XCOMPOSITE, test "x$HAVE_XCOMPOSITE" = "xyes")
294
295 dnl graphene-1.0 is optional and used in gltransformation
296 HAVE_GRAPHENE=NO
297 PKG_CHECK_MODULES(GRAPHENE, graphene-1.0 >= 1.0.0, HAVE_GRAPHENE=yes, HAVE_GRAPHENE=no)
298 if test "x$HAVE_GRAPHENE" = "xyes"; then
299   AC_DEFINE(HAVE_GRAPHENE, [1] , [Use graphene])
300 fi
301 AC_SUBST(HAVE_GRAPHENE)
302 AC_SUBST(GRAPHENE_LIBS)
303 AC_SUBST(GRAPHENE_CFLAGS)
304 AM_CONDITIONAL(HAVE_GRAPHENE, test "x$HAVE_GRAPHENE" = "xyes")
305
306
307 dnl sdl is optional and used in examples
308 HAVE_SDL=NO
309 if test "x$BUILD_EXAMPLES" = "xyes"; then
310   PKG_CHECK_MODULES(SDL, sdl >= 1.2.0, HAVE_SDL=yes, HAVE_SDL=no)
311   AC_SUBST(SDL_LIBS)
312   AC_SUBST(SDL_CFLAGS)
313   AC_SUBST(SDL_CLUTTER)
314 fi
315 AM_CONDITIONAL(HAVE_SDL, test "x$HAVE_SDL" = "xyes")
316
317
318 dnl Needed for GtkBuilder to autoconnect signals
319 PKG_CHECK_MODULES(GMODULE_EXPORT, gmodule-export-2.0, HAVE_GMODULE_EXPORT=yes, HAVE_GMODULE_EXPORT=no)
320
321 dnl Needed by plugins that use g_module_*() API
322 PKG_CHECK_MODULES(GMODULE_NO_EXPORT, gmodule-no-export-2.0)
323
324 dnl x11 is optional for librfb
325 HAVE_X11=NO
326 PKG_CHECK_MODULES(X11, x11, HAVE_X11=yes, HAVE_X11=no)
327 AC_SUBST(X11_LIBS)
328 AC_SUBST(X11_CFLAGS)
329 AC_SUBST(HAVE_X11)
330 AM_CONDITIONAL(HAVE_X11, test "x$HAVE_X11" = "xyes")
331 if test "x$HAVE_X11" = "xyes"; then
332   AC_DEFINE(HAVE_X11, 1, [Define if you have X11 library])
333 fi
334
335 dnl exif (used on jifmux tests) ****
336 PKG_CHECK_MODULES(EXIF, libexif >= 0.6.16, HAVE_EXIF="yes", HAVE_EXIF="no")
337 AC_SUBST(EXIF_LIBS)
338 AC_SUBST(EXIF_CFLAGS)
339 AM_CONDITIONAL(USE_EXIF, test "x$HAVE_EXIF" = "xyes")
340
341 dnl Orc
342 ORC_CHECK([0.4.17])
343
344 dnl set license and copyright notice
345 GST_LICENSE="LGPL"
346 AC_DEFINE_UNQUOTED(GST_LICENSE, "$GST_LICENSE", [GStreamer license])
347 AC_SUBST(GST_LICENSE)
348
349 dnl define LIBDIR so we can inform people where we live
350 AS_AC_EXPAND(LIBDIR, $libdir)
351 AC_DEFINE_UNQUOTED(LIBDIR, "$LIBDIR", [library dir])
352
353 dnl set location of plugin directory
354 AG_GST_SET_PLUGINDIR
355
356 dnl set release date/time
357 AG_GST_SET_PACKAGE_RELEASE_DATETIME_WITH_NANO([$PACKAGE_VERSION_NANO],
358   ["${srcdir}/gst-plugins-bad.doap"],
359   [$PACKAGE_VERSION_MAJOR.$PACKAGE_VERSION_MINOR.$PACKAGE_VERSION_MICRO])
360
361 dnl build static plugins or not
362 AC_MSG_CHECKING([whether to build static plugins or not])
363 AC_ARG_ENABLE(
364   static-plugins,
365   AC_HELP_STRING(
366     [--enable-static-plugins],
367     [build static plugins @<:@default=no@:>@]),
368   [AS_CASE(
369     [$enableval], [no], [], [yes], [],
370     [AC_MSG_ERROR([bad value "$enableval" for --enable-static-plugins])])],
371   [enable_static_plugins=no])
372 AC_MSG_RESULT([$enable_static_plugins])
373 if test "x$enable_static_plugins" = xyes; then
374   AC_DEFINE(GST_PLUGIN_BUILD_STATIC, 1,
375     [Define if static plugins should be built])
376   GST_PLUGIN_LIBTOOLFLAGS=""
377 else
378   GST_PLUGIN_LIBTOOLFLAGS="--tag=disable-static"
379 fi
380 AC_SUBST(GST_PLUGIN_LIBTOOLFLAGS)
381 AM_CONDITIONAL(GST_PLUGIN_BUILD_STATIC, test "x$enable_static_plugins" = "xyes")
382
383 # set by AG_GST_PARSE_SUBSYSTEM_DISABLES above
384 dnl make sure it doesn't complain about unused variables if debugging is disabled
385 NO_WARNINGS=""
386 AG_GST_CHECK_GST_DEBUG_DISABLED([NO_WARNINGS="-Wno-unused"], [NO_WARNINGS=""])
387
388 dnl define an ERROR_CFLAGS Makefile variable
389 dnl -Waggregate-return - libexif returns aggregates
390 dnl -Wundef - Windows headers check _MSC_VER unconditionally
391 AG_GST_SET_ERROR_CFLAGS($FATAL_WARNINGS, [
392     -Wmissing-declarations -Wmissing-prototypes -Wredundant-decls
393     -Wwrite-strings -Wformat-security -Wold-style-definition
394     -Winit-self -Wmissing-include-dirs -Waddress -Wno-multichar
395     -Wnested-externs $NO_WARNINGS])
396
397 dnl define an ERROR_CXXFLAGS Makefile variable
398 AG_GST_SET_ERROR_CXXFLAGS($FATAL_WARNINGS, [
399     -Wmissing-declarations -Wredundant-decls
400     -Wwrite-strings -Wformat-nonliteral -Wformat-security
401     -Winit-self -Wmissing-include-dirs -Waddress -Wno-multichar $NO_WARNINGS])
402
403 dnl define an ERROR_OBJCFLAGS Makefile variable
404 AG_GST_SET_ERROR_OBJCFLAGS($FATAL_WARNINGS, [
405     -Wmissing-declarations -Wredundant-decls
406     -Wwrite-strings -Wformat-nonliteral -Wformat-security
407     -Winit-self -Wmissing-include-dirs -Wno-multichar $NO_WARNINGS])
408
409 dnl define correct level for debugging messages
410 AG_GST_SET_LEVEL_DEFAULT($GST_GIT)
411
412 dnl used in examples
413 AG_GST_DEFAULT_ELEMENTS
414
415 dnl *** plug-ins to include ***
416 dnl Non ported plugins (non-dependant, then dependant)
417 dnl Make sure you have a space before and after all plugins
418 GST_PLUGINS_NONPORTED=" cdxaparse \
419  dccp faceoverlay \
420  hdvparse \
421  mve nuvdemux \
422  patchdetect \
423  sdi tta \
424  videomeasure \
425  linsys \
426  apexsink dc1394 \
427  gsettings \
428  musepack nas sdl timidity \
429  acm wininet \
430  xvid lv2 teletextdec sndio libvisual"
431 AC_SUBST(GST_PLUGINS_NONPORTED)
432
433 dnl these are all the gst plug-ins, compilable without additional libs
434 AG_GST_CHECK_PLUGIN(accurip)
435 AG_GST_CHECK_PLUGIN(adpcmdec)
436 AG_GST_CHECK_PLUGIN(adpcmenc)
437 AG_GST_CHECK_PLUGIN(aiff)
438 AG_GST_CHECK_PLUGIN(asfmux)
439 AG_GST_CHECK_PLUGIN(audiofxbad)
440 AG_GST_CHECK_PLUGIN(audiomixer)
441 AG_GST_CHECK_PLUGIN(compositor)
442 AG_GST_CHECK_PLUGIN(audiovisualizers)
443 AG_GST_CHECK_PLUGIN(autoconvert)
444 AG_GST_CHECK_PLUGIN(bayer)
445 AG_GST_CHECK_PLUGIN(camerabin2)
446 AG_GST_CHECK_PLUGIN(cdxaparse)
447 AG_GST_CHECK_PLUGIN(coloreffects)
448 AG_GST_CHECK_PLUGIN(dataurisrc)
449 AG_GST_CHECK_PLUGIN(dccp)
450 AG_GST_CHECK_PLUGIN(debugutils)
451 AG_GST_CHECK_PLUGIN(dvbsuboverlay)
452 AG_GST_CHECK_PLUGIN(dvdspu)
453 AG_GST_CHECK_PLUGIN(faceoverlay)
454 AG_GST_CHECK_PLUGIN(festival)
455 AG_GST_CHECK_PLUGIN(fieldanalysis)
456 AG_GST_CHECK_PLUGIN(freeverb)
457 AG_GST_CHECK_PLUGIN(frei0r)
458 AG_GST_CHECK_PLUGIN(gaudieffects)
459 AG_GST_CHECK_PLUGIN(geometrictransform)
460 AG_GST_CHECK_PLUGIN(gdp)
461 AG_GST_CHECK_PLUGIN(hdvparse)
462 AG_GST_CHECK_PLUGIN(id3tag)
463 AG_GST_CHECK_PLUGIN(inter)
464 AG_GST_CHECK_PLUGIN(interlace)
465 AG_GST_CHECK_PLUGIN(ivfparse)
466 AG_GST_CHECK_PLUGIN(ivtc)
467 AG_GST_CHECK_PLUGIN(jp2kdecimator)
468 AG_GST_CHECK_PLUGIN(jpegformat)
469 AG_GST_CHECK_PLUGIN(librfb)
470 AG_GST_CHECK_PLUGIN(midi)
471 AG_GST_CHECK_PLUGIN(mpegdemux)
472 AG_GST_CHECK_PLUGIN(mpegtsdemux)
473 AG_GST_CHECK_PLUGIN(mpegtsmux)
474 AG_GST_CHECK_PLUGIN(mpegpsmux)
475 AG_GST_CHECK_PLUGIN(mve)
476 AG_GST_CHECK_PLUGIN(mxf)
477 AG_GST_CHECK_PLUGIN(nuvdemux)
478 AG_GST_CHECK_PLUGIN(onvif)
479 AG_GST_CHECK_PLUGIN(patchdetect)
480 AG_GST_CHECK_PLUGIN(pcapparse)
481 AG_GST_CHECK_PLUGIN(pnm)
482 AG_GST_CHECK_PLUGIN(rawparse)
483 AG_GST_CHECK_PLUGIN(removesilence)
484 AG_GST_CHECK_PLUGIN(rtp)
485 AG_GST_CHECK_PLUGIN(sdi)
486 AG_GST_CHECK_PLUGIN(sdp)
487 AG_GST_CHECK_PLUGIN(segmentclip)
488 AG_GST_CHECK_PLUGIN(siren)
489 AG_GST_CHECK_PLUGIN(smooth)
490 AG_GST_CHECK_PLUGIN(speed)
491 AG_GST_CHECK_PLUGIN(subenc)
492 AG_GST_CHECK_PLUGIN(stereo)
493 AG_GST_CHECK_PLUGIN(tta)
494 AG_GST_CHECK_PLUGIN(videofilters)
495 AG_GST_CHECK_PLUGIN(videomeasure)
496 AG_GST_CHECK_PLUGIN(videoparsers)
497 AG_GST_CHECK_PLUGIN(videosignal)
498 AG_GST_CHECK_PLUGIN(vmnc)
499 AG_GST_CHECK_PLUGIN(y4m)
500 AG_GST_CHECK_PLUGIN(yadif)
501
502 dnl *** plug-ins to exclude ***
503
504 AC_CHECK_HEADER(AVFoundation/AVFoundation.h, HAVE_AVFOUNDATION="yes", HAVE_AVFOUNDATION="no", [-])
505 AC_CHECK_HEADER(MobileCoreServices/MobileCoreServices.h, HAVE_IOS="yes", HAVE_IOS="no", [-])
506 AC_CHECK_HEADER(VideoToolbox/VideoToolbox.h, HAVE_VIDEOTOOLBOX="yes", HAVE_VIDEOTOOLBOX="no", [-])
507
508 if test "x$HAVE_VIDEOTOOLBOX" = "xyes"; then
509   old_LIBS=$LIBS
510   LIBS="$LIBS -framework VideoToolbox"
511   AC_CHECK_FUNC(VTCompressionSessionPrepareToEncodeFrames, [
512     AC_DEFINE(HAVE_VIDEOTOOLBOX_10_9_6, 1, [Define if building with VideoToolbox >= 10.9.6])
513   ], [
514   ])
515   LIBS=$old_LIBS
516 fi
517
518 AM_CONDITIONAL(HAVE_AVFOUNDATION, test "x$HAVE_AVFOUNDATION" = "xyes")
519 if test "x$HAVE_AVFOUNDATION" = "xyes"; then
520   AC_DEFINE(HAVE_AVFOUNDATION, 1, [Define if building with AVFoundation])
521 fi
522
523 AM_CONDITIONAL(HAVE_IOS, test "x$HAVE_IOS" = "xyes")
524 if test "x$HAVE_IOS" = "xyes"; then
525   AC_DEFINE(HAVE_IOS, 1, [Define if building for Apple iOS])
526 fi
527
528 AM_CONDITIONAL(HAVE_VIDEOTOOLBOX, test "x$HAVE_VIDEOTOOLBOX" = "xyes")
529 if test "x$HAVE_VIDEOTOOLBOX" = "xyes"; then
530   AC_DEFINE(HAVE_VIDEOTOOLBOX, 1, [Define if building with VideoToolbox])
531 fi
532
533 dnl disable gst plugins we might not be able to build on this
534 dnl platform: (ugly but minimally invasive)
535 dnl FIXME: maybe move to sys, or make work with winsock2
536 AC_CHECK_HEADERS([sys/socket.h], HAVE_SYS_SOCKET_H=yes)
537 AC_CHECK_HEADERS([winsock2.h], HAVE_WINSOCK2_H=yes)
538
539 if test "x$HAVE_WINSOCK2_H" = "xyes"; then
540   WINSOCK2_LIBS="-lws2_32"
541   AC_SUBST(WINSOCK2_LIBS)
542 fi
543
544 if test "x$HAVE_PTHREAD_H" = "xyes"; then
545   DCCP_LIBS="$DCCP_LIBS $PTHREAD_LIBS"
546   AC_SUBST(DCCP_LIBS)
547 else
548   AG_GST_DISABLE_PLUGIN(dccp)
549 fi
550
551 dnl *** opengl ***
552 AC_ARG_ENABLE([opengl],
553      [  --enable-opengl         Enable Desktop OpenGL support @<:@default=auto@:>@],
554      [case "${enableval}" in
555        yes)  NEED_GL=yes ;;
556        no)   NEED_GL=no ;;
557        auto) NEED_GL=auto ;;
558        *) AC_MSG_ERROR([bad value ${enableval} for --enable-opengl]) ;;
559      esac],[NEED_GL=auto])
560
561 AC_ARG_WITH([opengl-module-name],
562   AS_HELP_STRING([--with-opengl-module-name],[library module name for OpenGL (default: libGL)]))
563 if test x$with_opengl_module_name != x; then
564   AC_DEFINE_UNQUOTED(GST_GL_LIBGL_MODULE_NAME, "$with_opengl_module_name", [OpenGL module name])
565 fi
566
567 AC_ARG_ENABLE([gles2],
568      [  --enable-gles2          Enable OpenGL|ES 2.0 support @<:@default=auto@:>@],
569      [case "${enableval}" in
570        yes)  NEED_GLES2=yes ;;
571        no)   NEED_GLES2=no ;;
572        auto) NEED_GLES2=auto ;;
573        *) AC_MSG_ERROR([bad value ${enableval} for --enable-gles2]) ;;
574      esac],[NEED_GLES2=auto])
575
576 AC_ARG_WITH([gles2-module-name],
577   AS_HELP_STRING([--with-gles2-module-name],[library module name for GLES2 (default: libGLESv2)]))
578 if test x$with_gles2_module_name != x; then
579   AC_DEFINE_UNQUOTED(GST_GL_LIBGLESV2_MODULE_NAME, "$with_gles2_module_name", [GLES2 module name])
580 fi
581
582 AC_ARG_ENABLE([egl],
583      [  --enable-egl            Enable EGL support @<:@default=auto@:>@],
584      [case "${enableval}" in
585        yes)  NEED_EGL=yes ;;
586        no)   NEED_EGL=no ;;
587        auto) NEED_EGL=auto ;;
588        *) AC_MSG_ERROR([bad value ${enableval} for --enable-egl]) ;;
589      esac],[NEED_EGL=auto])
590
591 AC_ARG_WITH([egl-module-name],
592   AS_HELP_STRING([--with-egl-module-name],[library module name for EGL (default: libEGL)]))
593 if test x$with_egl_module_name != x; then
594   AC_DEFINE_UNQUOTED(GST_GL_LIBEGL_MODULE_NAME, "$with_egl_module_name", [EGL module name])
595 fi
596
597 AC_ARG_ENABLE([wgl],
598      [  --enable-wgl            Enable WGL support @<:@default=auto@:>@],
599      [case "${enableval}" in
600        yes)  NEED_WGL=yes ;;
601        no)   NEED_WGL=no ;;
602        auto) NEED_WGL=auto ;;
603        *) AC_MSG_ERROR([bad value ${enableval} for --enable-wgl]) ;;
604      esac],[NEED_WGL=auto])
605
606 AC_ARG_ENABLE([glx],
607      [  --enable-glx            Enable GLX support @<:@default=auto@:>@],
608      [case "${enableval}" in
609        yes)  NEED_GLX=yes ;;
610        no)   NEED_GLX=no ;;
611        auto) NEED_GLX=auto ;;
612        *) AC_MSG_ERROR([bad value ${enableval} for --enable-glx]) ;;
613      esac],[NEED_GLX=auto])
614
615 AC_ARG_ENABLE([cocoa],
616      [  --enable-cocoa          Enable Cocoa support @<:@default=auto@:>@],
617      [case "${enableval}" in
618        yes)  NEED_COCOA=yes ;;
619        no)   NEED_COCOA=no ;;
620        auto) NEED_COCOA=auto ;;
621        *) AC_MSG_ERROR([bad value ${enableval} for --enable-cocoa]) ;;
622      esac],[NEED_COCOA=auto])
623
624 AC_ARG_ENABLE([x11],
625      [  --enable-x11            Enable x11 support @<:@default=auto@:>@],
626      [case "${enableval}" in
627        yes)  NEED_X11=yes ;;
628        no)   NEED_X11=no ;;
629        auto) NEED_X11=auto ;;
630        *) AC_MSG_ERROR([bad value ${enableval} for --enable-x11]) ;;
631      esac],[NEED_X11=auto])
632
633 AC_ARG_ENABLE([wayland],
634      [  --enable-wayland        Enable Wayland support (requires EGL) @<:@default=auto@:>@],
635      [case "${enableval}" in
636        yes)  NEED_WAYLAND_EGL=yes ;;
637        no)   NEED_WAYLAND_EGL=no ;;
638        auto) NEED_WAYLAND_EGL=auto ;;
639        *) AC_MSG_ERROR([bad value ${enableval} for --enable-wayland]) ;;
640      esac],[NEED_WAYLAND_EGL=auto])
641
642 AC_ARG_ENABLE([dispmanx],
643      [  --enable-dispmanx        Enable Dispmanx support (requires EGL) @<:@default=auto@:>@],
644      [case "${enableval}" in
645        yes)  NEED_DISPMANX=yes ;;
646        no)   NEED_DISPMANX=no ;;
647        auto) NEED_DISPMANX=auto ;;
648        *) AC_MSG_ERROR([bad value ${enableval} for --enable-dispmanx]) ;;
649      esac],[NEED_DISPMANX=auto])
650
651 AG_GST_PKG_CHECK_MODULES(X, x11)
652 save_CPPFLAGS="$CPPFLAGS"
653 save_LIBS="$LIBS"
654
655 HAVE_GL=no
656 HAVE_GLES2=no
657 HAVE_WAYLAND_EGL=no
658
659 HAVE_EGL_RPI=no
660
661 case $host in
662   *-mingw32* )
663     LIBS="$LIBS -lgdi32"
664     AG_GST_CHECK_LIBHEADER(GL, opengl32, glTexImage2D,, GL/gl.h)
665     AC_CHECK_HEADER(GL/wglext.h, HAVE_WGLEXT="yes", HAVE_WGLEXT="no", [#include <GL/gl.h>])
666     if test "x$HAVE_WGLEXT" = "xyes"; then
667       HAVE_WGL=yes
668       HAVE_GL=yes
669     fi
670   ;;
671   *)
672     if test "x$NEED_GL" != "xno"; then
673       AG_GST_CHECK_LIBHEADER(GL, GL, glTexImage2D,, GL/gl.h)
674     fi
675     if test "x$NEED_GLES2" != "xno"; then
676       AG_GST_CHECK_LIBHEADER(GLES2, GLESv2, glTexImage2D,, GLES2/gl2.h)
677     fi
678     if test "x$NEED_EGL" != "xno"; then
679       AG_GST_CHECK_LIBHEADER(EGL, EGL, eglGetError,, EGL/egl.h)
680     fi
681
682     old_LIBS=$LIBS
683     old_CFLAGS=$CFLAGS
684
685     dnl FIXME: Mali EGL depends on GLESv1 or GLESv2
686     AC_CHECK_HEADER([EGL/fbdev_window.h],
687       [
688         LIBS="$LIBS -lUMP"
689         AC_CHECK_LIB([Mali], [mali_image_create],
690           [
691             LIBS="$LIBS -lMali"
692             AC_CHECK_LIB([GLESv2], [glEnable],
693               [
694                 AC_CHECK_HEADER([GLES2/gl2.h],
695                   [
696                     AC_CHECK_LIB([EGL], [eglGetProcAddress],
697                       [
698                         AC_CHECK_HEADER([EGL/egl.h],
699                           [
700                             HAVE_EGL=yes
701                             HAVE_GLES2=yes
702                             EGL_LIBS="-lMali -lUMP"
703                             EGL_CFLAGS=""
704                             AC_DEFINE(USE_EGL_MALI_FB, [1], [Use Mali FB EGL platform])
705                           ])
706                       ])
707                   ])
708               ])
709           ])
710       ])
711
712     dnl FIXME: EGL of RPi depends on GLESv1 or GLESv2
713     dnl FIXME: GLESv2 of RPi depends on EGL... WTF!
714     LIBS="$LIBS -lvcos -lvchiq_arm"
715     AC_CHECK_LIB([bcm_host], [bcm_host_init],
716       [
717         LIBS="$LIBS -lbcm_host"
718         AC_CHECK_HEADER(bcm_host.h,
719           [
720             LIBS="$LIBS -lGLESv2"
721             AC_CHECK_LIB([EGL], [eglGetProcAddress],
722               [
723                 LIBS="$LIBS -lEGL"
724                 AC_CHECK_HEADER([EGL/egl.h],
725                   [
726                     AC_CHECK_LIB([GLESv2], [glEnable],
727                       [
728                         AC_CHECK_HEADER([GLES2/gl2.h],
729                           [
730                             HAVE_EGL=yes
731                             HAVE_GLES2=yes
732                             HAVE_EGL_RPI=yes
733                             EGL_LIBS="-lbcm_host -lvcos -lvchiq_arm"
734                             EGL_CFLAGS=""
735                             AC_DEFINE(USE_EGL_RPI, [1], [Use RPi platform])
736                           ])
737                       ])
738                   ])
739               ])
740           ])
741       ])
742
743     LIBS=$old_LIBS
744     CFLAGS=$old_CFLAGS
745
746     PKG_CHECK_MODULES(WAYLAND_EGL, wayland-client >= 1.0 wayland-cursor >= 1.0 wayland-egl >= 9.0, HAVE_WAYLAND_EGL=yes, HAVE_WAYLAND_EGL=no)
747   ;;
748 esac
749
750 CPPFLAGS="$save_CPPFLAGS"
751 LIBS="$save_LIBS"
752
753 USE_OPENGL=no
754 USE_GLES2=no
755 USE_GLX=no
756 USE_COCOA=no
757 USE_WGL=no
758 USE_X11=no
759 USE_EAGL=no
760 GL_LIBS=
761 GL_CFLAGS=
762 GL_OBJCFLAGS=
763
764 dnl Check for what the user asked for and what we could find
765 if test "x$HAVE_EGL" = "xno"; then
766   if test "x$NEED_EGL" = "xyes"; then
767     AC_MSG_ERROR([Could not find the required EGL libraries])
768   fi
769 fi
770
771 if test "x$HAVE_GL" = "xno"; then
772   if test "x$NEED_GL" = "xyes"; then
773     AC_MSG_ERROR([Could not find the required OpenGL libraries])
774   fi
775 fi
776
777 if test "x$HAVE_GLES2" = "xno"; then
778   if test "x$NEED_GLES2" = "xyes"; then
779     AC_MSG_ERROR([Could not find the required OpenGL|ES 2.0 libraries])
780   fi
781 fi
782
783 dnl X, GLX and OpenGL
784 if test "x$HAVE_X" = "xno"; then
785   if test "x$NEED_GLX" = "xyes"; then
786     AC_MSG_ERROR([Building the GLX backend without X11 is unsupported])
787   fi
788   if test "x$NEED_X11" = "xyes"; then
789     AC_MSG_ERROR([Could not find X11 development libraries])
790   fi
791 else
792   if test "x$NEED_GL" != "xno"; then
793     if test "x$HAVE_GL" = "xno"; then
794       if test "x$NEED_GLX" = "xyes"; then
795         AC_MSG_ERROR([Building the GLX backend without the OpenGL backend is unsupported])
796       fi
797     else dnl HAVE_GL=yes
798       USE_OPENGL=yes
799       if test "x$NEED_GLX" != "xno"; then
800         USE_GLX=yes
801       fi
802     fi
803   fi
804 fi
805
806 dnl check if we can include both GL and GLES2 at the same time
807 if test "x$HAVE_GL" = "xyes" -a "x$HAVE_GLES2" = "xyes"; then
808   GL_INCLUDES="
809 #ifndef GL_GLEXT_PROTOTYPES
810 #define GL_GLEXT_PROTOTYPES 1
811 #endif
812 # ifdef HAVE_IOS
813 #  include <OpenGLES/ES2/gl.h>
814 #  include <OpenGLES/ES2/glext.h>
815 # else
816 #  include <GLES2/gl2.h>
817 #  include <GLES2/gl2ext.h>
818 # endif
819 # ifdef __APPLE__
820 #  include <OpenGL/OpenGL.h>
821 #  include <OpenGL/gl.h>
822 #  if MAC_OS_X_VERSION_MAX_ALLOWED >= 1070
823 #   define GL_DO_NOT_WARN_IF_MULTI_GL_VERSION_HEADERS_INCLUDED
824 #   include <OpenGL/gl3.h>
825 #  endif
826 # else
827 #  include <GL/gl.h>
828 #  if __WIN32__ || _WIN32
829 #   include <GL/glext.h>
830 #  endif
831 # endif
832 "
833   AC_MSG_CHECKING([whether it is possible to include both GL and GLES2 headers])
834   save_CPPFLAGS="$CPPFLAGS"
835   CPPFLAGS="$CPPFLAGS $ERROR_CFLAGS"
836   AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[$GL_INCLUDES]], [[
837     #if !defined(GL_FALSE)
838     #error Failed to include GL headers
839     #endif
840     ]])],[ AC_MSG_RESULT(yes)
841     ],[AC_MSG_RESULT(no)
842     if test "x$NEED_GLES2" = "xyes"; then
843       if test "x$NEED_GL" = "xyes"; then
844         AC_MSG_ERROR([Cannot seem to include both GL and GLES2 headers. Try disabling one API])
845       fi
846       AC_MSG_WARN([Disabling Desktop GL support])
847       HAVE_GL=no
848       USE_OPENGL=no
849     else
850       AC_MSG_WARN([Disabling GL|ES 2.0 support])
851       HAVE_GLES2=no
852     fi
853   ])
854   CPPFLAGS="$save_CPPFLAGS"
855 fi
856
857 #dnl Check for OpenGL
858 echo host is $host
859 case $host in
860   *-android*)
861     if test "x$NEED_WGL" = "xyes"; then
862       AC_MSG_ERROR([WGL is not available on Android])
863     fi
864     if test "x$NEED_GLX" = "xyes"; then
865       AC_MSG_ERROR([GLX is not available on Android])
866     fi
867     if test "x$NEED_GL" = "xyes"; then
868       AC_MSG_ERROR([GL is not available on Android])
869     fi
870     if test "x$NEED_X11" = "xyes"; then
871       AC_MSG_ERROR([X11 is not available on Android])
872     fi
873     if test "x$NEED_COCOA" = "xyes"; then
874       AC_MSG_ERROR([Cocoa is not available on Android])
875     fi
876
877     dnl OpenGL|ES 2.0
878     if test "x$HAVE_GLES2" = "xyes"; then
879       if test "x$NEED_GLES2" != "xno"; then
880         GL_LIBS="$GL_LIBS -lGLESv2"
881         USE_GLES2=yes
882       fi
883     fi
884
885     dnl EGL
886     if test "x$HAVE_EGL" = "xyes"; then
887       if test "x$NEED_EGL" != "xno"; then
888         GL_LIBS="$GL_LIBS -lEGL"
889         USE_EGL=yes
890       fi
891     fi
892
893     if test "x$USE_EGL" != "xyes"; then
894       AC_MSG_ERROR([Need EGL on Android])
895     fi
896
897     if test "x$USE_GLES2" != "xyes"; then
898       AC_MSG_ERROR([Need OpenGL|ES 2.0 on Android])
899     fi
900
901     HAVE_WINDOW_ANDROID=yes
902     ;;
903   *-linux* | *-cygwin* | *-solaris* | *-netbsd* | *-freebsd* | *-openbsd* | *-kfreebsd* | *-dragonflybsd* | *-gnu* )
904     if test "x$NEED_WGL" = "xyes"; then
905       AC_MSG_ERROR([WGL is not available on unix])
906     fi
907
908     if test "x$HAVE_X" = "xno"; then
909       if test "x$HAVE_WAYLAND_EGL" = "xno"; then
910         AC_MSG_WARN([X or Wayland is required for OpenGL support])
911       fi
912     fi
913
914     dnl check Desktop OpenGL
915     if test "x$HAVE_GL" = "xyes"; then
916       if test "x$NEED_GL" != "xno"; then
917         GL_LIBS="$GL_LIBS -lGL"
918       fi
919     fi
920
921     dnl OpenGL|ES 2.0
922     if test "x$HAVE_GLES2" = "xyes"; then
923       if test "x$NEED_GLES2" != "xno"; then
924         GL_LIBS="$GL_LIBS -lGLESv2"
925         USE_GLES2=yes
926       fi
927     fi
928
929     if test "x$HAVE_X" = "xyes" -a "x$HAVE_EGL_RPI" = "xno"; then
930       if test "x$NEED_X11" != "xno"; then
931         GL_LIBS="$GL_LIBS $X_LIBS"
932         GL_CFLAGS="$GL_CFLAGS $X_CFLAGS"
933         HAVE_WINDOW_X11=yes
934       fi
935     fi
936
937     if test "x$HAVE_WAYLAND_EGL" = "xyes"; then
938       if test "x$NEED_EGL" = "xno" -o "x$HAVE_EGL" = "xno"; then
939         AC_MSG_WARN([EGL is required by the Wayland backend for OpenGL support])
940       else
941         if test "x$NEED_WAYLAND_EGL" != "xno"; then
942           HAVE_WINDOW_WAYLAND=yes
943           GL_LIBS="$GL_LIBS $WAYLAND_EGL_LIBS"
944           GL_CFLAGS="$GL_CFLAGS $WAYLAND_EGL_CFLAGS"
945         fi
946       fi
947     fi
948
949     if test "x$HAVE_EGL_RPI" = "xyes"; then
950       if test "x$NEED_DISPMANX" != "xno"; then
951         HAVE_WINDOW_DISPMANX=yes
952         USE_EGL=yes
953       fi
954     fi
955
956     dnl EGL
957     if test "x$HAVE_EGL" = "xno"; then
958       if test "x$HAVE_GL" = "xno"; then
959         AC_MSG_WARN([Building requires either EGL or GLX for OpenGL support])
960       fi
961     else
962       if test "x$NEED_EGL" != "xno"; then
963         if test "x$HAVE_WINDOW_WAYLAND" = "xyes" -o "x$HAVE_WINDOW_X11" = "xyes" -o "x$HAVE_WINDOW_DISPMANX" = "xyes"; then
964           GL_LIBS="$GL_LIBS -lEGL $EGL_LIBS"
965           GL_CFLAGS="$GL_CFLAGS $EGL_CFLAGS"
966           USE_EGL=yes
967         fi
968       fi
969     fi
970     ;;
971   *-darwin*)
972     if test "x$HAVE_IOS" = "xyes"; then
973       if test "x$NEED_WGL" = "xyes"; then
974         AC_MSG_ERROR([WGL is not available on iOS])
975       fi
976       if test "x$NEED_GLX" = "xyes"; then
977         AC_MSG_ERROR([GLX is not available on iOS])
978       fi
979       if test "x$NEED_GL" = "xyes"; then
980         AC_MSG_ERROR([GL is not available on iOS])
981       fi
982       if test "x$NEED_X11" = "xyes"; then
983         AC_MSG_ERROR([X11 is not available on iOS])
984       fi
985       if test "x$NEED_COCOA" = "xyes"; then
986         AC_MSG_ERROR([Cocoa is not available on iOS])
987       fi
988       if test "x$NEED_EGL" = "xyes"; then
989         AC_MSG_ERROR([EGL is not available on iOS])
990       fi
991
992       GL_LIBS="$LIBS -framework OpenGLES -framework QuartzCore -framework UIKit -framework CoreGraphics -framework CoreFoundation -framework Foundation"
993       GL_CFLAGS="$GL_CFLAGS"
994       USE_GLES2=yes
995       USE_EAGL=yes
996       HAVE_WINDOW_EAGL=yes
997
998       ac_cv_type_GLsizeiptr=yes
999       ac_cv_type_GLintptr=yes
1000       ac_cv_type_GLchar=yes
1001     else
1002       dnl Only osx supports cocoa.
1003       if test "x$NEED_WGL" = "xyes"; then
1004         AC_MSG_ERROR([WGL is not available on Mac OS X])
1005       fi
1006
1007       if test "x$NEED_COCOA" != "xno"; then
1008         GL_LIBS="$LIBS -framework OpenGL -framework Cocoa -framework QuartzCore -framework CoreFoundation"
1009         GL_CFLAGS="$GL_CFLAGS"
1010         USE_COCOA=yes
1011         HAVE_WINDOW_COCOA=yes
1012         USE_OPENGL=yes
1013       fi
1014
1015       if test "x$USE_GLX" = "xyes"; then
1016         if test "x$HAVE_X" = "xyes"; then
1017           if test "x$NEED_X11" != "xno"; then
1018             GL_LIBS="$GL_LIBS $X_LIBS"
1019             GL_CFLAGS="$GL_CFLAGS $X_CFLAGS"
1020             HAVE_WINDOW_X11=yes
1021           fi
1022         fi
1023
1024         if test "x$HAVE_GL" = "xyes"; then
1025           if test "x$NEED_GL" != "xno"; then
1026             GL_LIBS="$GL_LIBS -lGL"
1027           fi
1028           USE_OPENGL=yes
1029         fi
1030       fi
1031
1032       if test "x$HAVE_EGL" = "xyes"; then
1033         if test "x$NEED_EGL" != "xno"; then
1034           if test "x$HAVE_WINDOW_X11" = "xyes"; then
1035             GL_LIBS="$GL_LIBS -lEGL $EGL_LIBS"
1036             GL_CFLAGS="$GL_CFLAGS $EGL_CFLAGS"
1037             USE_EGL=yes
1038           fi
1039         fi
1040       fi
1041
1042       dnl OpenGL|ES 2.0
1043       if test "x$HAVE_GLES2" = "xyes"; then
1044         if test "x$NEED_GLES2" != "xno"; then
1045           GL_LIBS="$GL_LIBS -lGLESv2"
1046           USE_GLES2=yes
1047         fi
1048       fi
1049     fi
1050     ;;
1051   *-mingw32*)
1052     if test "x$NEED_GLX" = "xyes"; then
1053       AC_MSG_ERROR([GLX is not available on Windows])
1054     fi
1055     if test "x$NEED_GLES2" = "xyes"; then
1056       AC_MSG_ERROR([OpenGL|ES 2.0 is not supported on your platform yet])
1057     fi
1058
1059     if test "x$HAVE_GL" = "xyes"; then
1060       if test "x$NEED_GL" != "xno"; then
1061         if test "x$HAVE_WGL" = "xyes"; then
1062           if test "$NEED_WGL" != "xno"; then
1063             GL_LIBS="$GL_LIBS -lgdi32 -lopengl32"
1064             HAVE_WINDOW_WIN32=yes
1065             USE_OPENGL=yes
1066             USE_WGL=yes
1067           fi
1068         fi
1069       fi
1070     fi
1071     ;;
1072   *)
1073     AC_MSG_WARN([Don't know how to check for OpenGL on your platform.])
1074     ;;
1075 esac
1076
1077 GL_PLATFORMS=
1078 GL_WINDOWS=
1079 GL_APIS=
1080 GL_CONFIG_DEFINES=
1081
1082 dnl APIs
1083
1084 GST_GL_HAVE_OPENGL=0
1085 GST_GL_HAVE_GLES2=0
1086 GST_GL_HAVE_GLES3=0
1087
1088 if test "x$USE_OPENGL" = "xyes"; then
1089   GL_APIS="gl $GL_APIS"
1090   GST_GL_HAVE_OPENGL=1
1091 fi
1092 if test "x$USE_GLES2" = "xyes"; then
1093   GL_APIS="gles2 $GL_APIS"
1094   GST_GL_HAVE_GLES2=1
1095 fi
1096
1097 GL_CONFIG_DEFINES="$GL_CONFIG_DEFINES
1098 #define GST_GL_HAVE_OPENGL $GST_GL_HAVE_OPENGL
1099 #define GST_GL_HAVE_GLES2 $GST_GL_HAVE_GLES2
1100 #define GST_GL_HAVE_GLES3 $GST_GL_HAVE_GLES3
1101 "
1102
1103 dnl WINDOW's
1104
1105 GST_GL_HAVE_WINDOW_X11=0
1106 GST_GL_HAVE_WINDOW_COCOA=0
1107 GST_GL_HAVE_WINDOW_WIN32=0
1108 GST_GL_HAVE_WINDOW_WAYLAND=0
1109 GST_GL_HAVE_WINDOW_ANDROID=0
1110 GST_GL_HAVE_WINDOW_DISPMANX=0
1111 GST_GL_HAVE_WINDOW_EAGL=0
1112
1113 if test "x$HAVE_WINDOW_X11" = "xyes"; then
1114   GL_WINDOWS="x11 $GL_WINDOWS"
1115   GST_GL_HAVE_WINDOW_X11=1
1116 fi
1117 if test "x$HAVE_WINDOW_COCOA" = "xyes"; then
1118   GL_WINDOWS="cocoa $GL_WINDOWS"
1119   GST_GL_HAVE_WINDOW_COCOA=1
1120 fi
1121 if test "x$HAVE_WINDOW_WIN32" = "xyes"; then
1122   GL_WINDOWS="win32 $GL_WINDOWS"
1123   GST_GL_HAVE_WINDOW_WIN32=1
1124 fi
1125 if test "x$HAVE_WINDOW_WAYLAND" = "xyes"; then
1126   GL_WINDOWS="wayland $GL_WINDOWS"
1127   GST_GL_HAVE_WINDOW_WAYLAND=1
1128 fi
1129 if test "x$HAVE_WINDOW_ANDROID" = "xyes"; then
1130   GL_WINDOWS="android $GL_WINDOWS"
1131   GST_GL_HAVE_WINDOW_ANDROID=1
1132 fi
1133 if test "x$HAVE_WINDOW_DISPMANX" = "xyes"; then
1134   GL_WINDOWS="dispmanx $GL_WINDOWS"
1135   GST_GL_HAVE_WINDOW_DISPMANX=1
1136 fi
1137 if test "x$HAVE_WINDOW_EAGL" = "xyes"; then
1138   GL_WINDOWS="eagl $GL_WINDOWS"
1139   GST_GL_HAVE_WINDOW_EAGL=1
1140 fi
1141
1142 GL_CONFIG_DEFINES="$GL_CONFIG_DEFINES
1143 #define GST_GL_HAVE_WINDOW_X11 $GST_GL_HAVE_WINDOW_X11
1144 #define GST_GL_HAVE_WINDOW_COCOA $GST_GL_HAVE_WINDOW_COCOA
1145 #define GST_GL_HAVE_WINDOW_WIN32 $GST_GL_HAVE_WINDOW_WIN32
1146 #define GST_GL_HAVE_WINDOW_WAYLAND $GST_GL_HAVE_WINDOW_WAYLAND
1147 #define GST_GL_HAVE_WINDOW_ANDROID $GST_GL_HAVE_WINDOW_ANDROID
1148 #define GST_GL_HAVE_WINDOW_DISPMANX $GST_GL_HAVE_WINDOW_DISPMANX
1149 #define GST_GL_HAVE_WINDOW_EAGL $GST_GL_HAVE_WINDOW_EAGL
1150 "
1151
1152 dnl PLATFORM's
1153
1154 GST_GL_HAVE_PLATFORM_EGL=0
1155 GST_GL_HAVE_PLATFORM_GLX=0
1156 GST_GL_HAVE_PLATFORM_WGL=0
1157 GST_GL_HAVE_PLATFORM_CGL=0
1158 GST_GL_HAVE_PLATFORM_EAGL=0
1159
1160 if test "x$USE_EGL" = "xyes"; then
1161   GL_PLATFORMS="egl $GL_PLATFORMS"
1162   GST_GL_HAVE_PLATFORM_EGL=1
1163 fi
1164 if test "x$USE_GLX" = "xyes"; then
1165   GL_PLATFORMS="glx $GL_PLATFORMS"
1166   GST_GL_HAVE_PLATFORM_GLX=1
1167 fi
1168 if test "x$USE_WGL" = "xyes"; then
1169   GL_PLATFORMS="wgl $GL_PLATFORMS"
1170   GST_GL_HAVE_PLATFORM_WGL=1
1171 fi
1172 if test "x$USE_COCOA" = "xyes"; then
1173   GL_PLATFORMS="cgl $GL_PLATFORMS"
1174   GST_GL_HAVE_PLATFORM_CGL=1
1175 fi
1176 if test "x$USE_EAGL" = "xyes"; then
1177   GL_PLATFORMS="eagl $GL_PLATFORMS"
1178   GST_GL_HAVE_PLATFORM_EAGL=1
1179 fi
1180
1181 GL_CONFIG_DEFINES="$GL_CONFIG_DEFINES
1182 #define GST_GL_HAVE_PLATFORM_EGL $GST_GL_HAVE_PLATFORM_EGL
1183 #define GST_GL_HAVE_PLATFORM_GLX $GST_GL_HAVE_PLATFORM_GLX
1184 #define GST_GL_HAVE_PLATFORM_WGL $GST_GL_HAVE_PLATFORM_WGL
1185 #define GST_GL_HAVE_PLATFORM_CGL $GST_GL_HAVE_PLATFORM_CGL
1186 #define GST_GL_HAVE_PLATFORM_EAGL $GST_GL_HAVE_PLATFORM_EAGL
1187 "
1188
1189 dnl Check for no platforms/window systems
1190 if test "x$GL_APIS" = "x"; then
1191   AC_MSG_WARN([Either OpenGL or OpenGL|ES is required for OpenGL support])
1192 fi
1193 if test "x$GL_PLATFORMS" = "x"; then
1194   AC_MSG_WARN([Could not find any OpenGL platforms to use such as CGL, WGL or GLX])
1195 fi
1196 if test "x$GL_WINDOWS" = "x"; then
1197   AC_MSG_WARN([Could not find any window systems to use such as Cocoa, Win32API or X11])
1198 fi
1199
1200 if test "x$GL_APIS" = "x" -o "x$GL_PLATFORMS" = "x" -o "x$GL_WINDOWS" = "x"; then
1201   GL_LIBS=
1202   GL_CFLAGS=
1203   GL_OBJCFLAGS=
1204   USE_OPENGL=no
1205   USE_GLES2=no
1206   USE_GLX=no
1207   USE_EGL=no
1208   USE_WGL=no
1209   USE_COCOA=no
1210   USE_EGL_MALI=no
1211   USE_EGL_RPI=no
1212   USE_EAGL=no
1213
1214   HAVE_WINDOW_X11=no
1215   HAVE_WINDOW_WIN32=no
1216   HAVE_WINDOW_DISPMANX=no
1217   HAVE_WINDOW_WAYLAND=no
1218   HAVE_WINDOW_ANDROID=no
1219   HAVE_WINDOW_COCOA=no
1220   HAVE_WINDOW_EAGL=no
1221 fi
1222
1223 AC_SUBST(GL_LIBS)
1224 AC_SUBST(GL_CFLAGS)
1225 AC_SUBST(GL_OBJCFLAGS)
1226 AC_SUBST(USE_OPENGL)
1227 AC_SUBST(USE_GLES2)
1228
1229 AM_CONDITIONAL(HAVE_WINDOW_X11, test "x$HAVE_WINDOW_X11" = "xyes")
1230 AM_CONDITIONAL(HAVE_WINDOW_COCOA, test "x$HAVE_WINDOW_COCOA" = "xyes")
1231 AM_CONDITIONAL(HAVE_WINDOW_WIN32, test "x$HAVE_WINDOW_WIN32" = "xyes")
1232 AM_CONDITIONAL(HAVE_WINDOW_DISPMANX, test "x$HAVE_WINDOW_DISPMANX" = "xyes")
1233 AM_CONDITIONAL(HAVE_WINDOW_WAYLAND, test "x$HAVE_WINDOW_WAYLAND" = "xyes")
1234 AM_CONDITIONAL(HAVE_WINDOW_ANDROID, test "x$HAVE_WINDOW_ANDROID" = "xyes")
1235 AM_CONDITIONAL(HAVE_WINDOW_EAGL, test "x$HAVE_WINDOW_EAGL" = "xyes")
1236
1237 AM_CONDITIONAL(USE_OPENGL, test "x$USE_OPENGL" = "xyes")
1238 AM_CONDITIONAL(USE_GLES2, test "x$USE_GLES2" = "xyes")
1239 AM_CONDITIONAL(USE_GLX, test "x$USE_GLX" = "xyes")
1240 AM_CONDITIONAL(USE_EGL, test "x$USE_EGL" = "xyes")
1241 AM_CONDITIONAL(USE_WGL, test "x$USE_WGL" = "xyes")
1242 AM_CONDITIONAL(USE_COCOA, test "x$USE_COCOA" = "xyes")
1243 AM_CONDITIONAL(USE_EGL_MALI, test "x$USE_EGL_MALI" = "xyes")
1244 AM_CONDITIONAL(USE_EGL_RPI, test "x$USE_EGL_RPI" = "xyes")
1245 AM_CONDITIONAL(USE_EAGL, test "x$USE_EAGL" = "xyes")
1246
1247 AM_CONDITIONAL(HAVE_GST_GL, test "x$USE_OPENGL" = "xyes" -o "x$USE_GLES2" = "xyes")
1248
1249 dnl Check for some types that are not always present
1250 GL_INCLUDES=""
1251 if test "x$USE_GLES2" = "xyes"; then
1252   GL_INCLUDES="$GL_INCLUDES
1253 #ifndef GL_GLEXT_PROTOTYPES
1254 #define GL_GLEXT_PROTOTYPES 1
1255 #endif
1256 # ifdef HAVE_IOS
1257 #  include <OpenGLES/ES2/gl.h>
1258 #  include <OpenGLES/ES2/glext.h>
1259 # else
1260 #  include <GLES2/gl2.h>
1261 #  include <GLES2/gl2ext.h>
1262 # endif
1263 "
1264 fi
1265
1266 if test "x$USE_OPENGL" = "xyes"; then
1267   GL_INCLUDES="$GL_INCLUDES
1268 # ifdef __APPLE__
1269 #  include <OpenGL/OpenGL.h>
1270 #  include <OpenGL/gl.h>
1271 # else
1272 #  include <GL/gl.h>
1273 #  if __WIN32__ || _WIN32
1274 #   include <GL/glext.h>
1275 #  endif
1276 # endif
1277 "
1278 fi
1279
1280 GST_GL_HAVE_GLEGLIMAGEOES=0
1281 GST_GL_HAVE_GLCHAR=0
1282 GST_GL_HAVE_GLSIZEIPTR=0
1283 GST_GL_HAVE_GLINTPTR=0
1284 GST_GL_HAVE_GLSYNC=0
1285 GST_GL_HAVE_GLUINT64=0
1286
1287 old_CFLAGS=$CFLAGS
1288 CFLAGS="$GL_CFLAGS $CFLAGS"
1289
1290 AC_CHECK_TYPES(GLeglImageOES, [], [], [[$GL_INCLUDES]])
1291 if test "x$ac_cv_type_GLeglImageOES" = "xyes"; then
1292   GST_GL_HAVE_GLEGLIMAGEOES=1
1293 fi
1294
1295 AC_CHECK_TYPES(GLchar, [], [], [[$GL_INCLUDES]])
1296 if test "x$ac_cv_type_GLchar" = "xyes"; then
1297   GST_GL_HAVE_GLCHAR=1
1298 fi
1299
1300 AC_CHECK_TYPES(GLsizeiptr, [], [], [[$GL_INCLUDES]])
1301 if test "x$ac_cv_type_GLsizeiptr" = "xyes"; then
1302   GST_GL_HAVE_GLSIZEIPTR=1
1303 fi
1304
1305 AC_CHECK_TYPES(GLintptr, [], [], [[$GL_INCLUDES]])
1306 if test "x$ac_cv_type_GLintptr" = "xyes"; then
1307   GST_GL_HAVE_GLINTPTR=1
1308 fi
1309
1310 AC_CHECK_TYPES(GLsync, [], [], [[$GL_INCLUDES]])
1311 if test "x$ac_cv_type_GLsync" = "xyes"; then
1312   GST_GL_HAVE_GLSYNC=1
1313 fi
1314
1315 AC_CHECK_TYPES(GLuint64, [], [], [[$GL_INCLUDES]])
1316 if test "x$ac_cv_type_GLuint64" = "xyes"; then
1317   GST_GL_HAVE_GLUINT64=1
1318 fi
1319
1320 CFLAGS=$old_CFLAGS
1321
1322 GL_CONFIG_DEFINES="$GL_CONFIG_DEFINES
1323 #define GST_GL_HAVE_GLEGLIMAGEOES $GST_GL_HAVE_GLEGLIMAGEOES
1324 #define GST_GL_HAVE_GLCHAR $GST_GL_HAVE_GLCHAR
1325 #define GST_GL_HAVE_GLSIZEIPTR $GST_GL_HAVE_GLSIZEIPTR
1326 #define GST_GL_HAVE_GLINTPTR $GST_GL_HAVE_GLINTPTR
1327 #define GST_GL_HAVE_GLSYNC $GST_GL_HAVE_GLSYNC
1328 #define GST_GL_HAVE_GLUINT64 $GST_GL_HAVE_GLUINT64
1329 "
1330
1331 AC_CONFIG_COMMANDS([gst-libs/gst/gl/gstglconfig.h], [
1332         outfile=gstglconfig.h-tmp
1333         cat > $outfile <<\_______EOF
1334 /* gstglconfig.h
1335  *
1336  * This is a generated file.  Please modify `configure.ac'
1337  */
1338
1339 #ifndef __GST_GL_CONFIG_H__
1340 #define __GST_GL_CONFIG_H__
1341
1342 #include <gst/gst.h>
1343
1344 G_BEGIN_DECLS
1345
1346 _______EOF
1347
1348         cat >>$outfile <<_______EOF
1349 $gl_config_defines
1350 _______EOF
1351
1352         cat >>$outfile <<_______EOF
1353
1354 G_END_DECLS
1355
1356 #endif  /* __GST_GL_CONFIG_H__ */
1357 _______EOF
1358
1359
1360         if cmp -s $outfile gst-libs/gst/gl/gstglconfig.h; then
1361           AC_MSG_NOTICE([gst-libs/gst/gl/gstglconfig.h is unchanged])
1362           rm -f $outfile
1363         else
1364           mv $outfile gst-libs/gst/gl/gstglconfig.h
1365         fi
1366 ],[
1367 gl_config_defines='$GL_CONFIG_DEFINES'
1368 ])
1369
1370 dnl libpng is optional
1371 PKG_CHECK_MODULES(LIBPNG, libpng >= 1.0, HAVE_PNG=yes, HAVE_PNG=no)
1372 if test "x$HAVE_PNG" = "xyes"; then
1373   AC_DEFINE(HAVE_PNG, [1] , [Use libpng])
1374 fi
1375 AC_SUBST(HAVE_PNG)
1376 AC_SUBST(LIBPNG_LIBS)
1377 AC_SUBST(LIBPNG_CFLAGS)
1378 AM_CONDITIONAL(HAVE_PNG, test "x$HAVE_PNG" = "xyes")
1379
1380 dnl libjpeg is optional
1381 AC_ARG_WITH(jpeg-mmx, [  --with-jpeg-mmx, path to MMX'ified JPEG library])
1382 OLD_LIBS="$LIBS"
1383 if test x$with_jpeg_mmx != x; then
1384   LIBS="$LIBS -L$with_jpeg_mmx"
1385 fi
1386 AC_CHECK_LIB(jpeg-mmx, jpeg_set_defaults, HAVE_JPEG="yes", HAVE_JPEG="no")
1387 JPEG_LIBS="$LIBS -ljpeg-mmx"
1388 LIBS="$OLD_LIBS"
1389 if test x$HAVE_JPEG != xyes; then
1390   JPEG_LIBS="-ljpeg"
1391   AC_CHECK_LIB(jpeg, jpeg_set_defaults, HAVE_JPEG="yes", HAVE_JPEG="no")
1392 fi
1393
1394 if test x$HAVE_JPEG = xyes; then
1395   AC_DEFINE(HAVE_JPEG, [1], [Use libjpeg])
1396 else
1397   AC_DEFINE(HAVE_JPEG, [0], [Use libjpeg])
1398   JPEG_LIBS=
1399 fi
1400 AC_SUBST(JPEG_LIBS)
1401 AC_SUBST(HAVE_JPEG)
1402 AM_CONDITIONAL(HAVE_JPEG, test "x$HAVE_JPEG" = "xyes")
1403
1404
1405 dnl *** sys plug-ins ***
1406
1407 dnl DirectSound
1408 translit(dnm, m, l) AM_CONDITIONAL(USE_DIRECTSOUND, true)
1409 AG_GST_CHECK_FEATURE(DIRECTSOUND, [DirectSound], directsoundsrc, [
1410   HAVE_DIRECTSOUND="no"
1411   save_CFLAGS="$CFLAGS"
1412   save_LDFLAGS="$LDFLAGS"
1413   save_LIBS="$LIBS"
1414   CFLAGS="$CFLAGS $DIRECTX_CFLAGS"
1415   LDFLAGS="$LDFLAGS $DIRECTX_LDFLAGS"
1416   LIBS="$LIBS -lwinmm -ldsound -ldxerr9 -luser32"
1417   AC_MSG_CHECKING(for DirectSound LDFLAGS)
1418   AC_LINK_IFELSE([AC_LANG_PROGRAM([[
1419 #include <windows.h>
1420 #include <dxerr9.h>
1421 #include <dsound.h>
1422 #include <mmsystem.h>
1423 ]], [[
1424   DXGetErrorString9 (0);
1425   DirectSoundCreate(NULL, NULL, NULL);
1426 ]])],
1427     [HAVE_DIRECTSOUND="yes"],
1428     [HAVE_DIRECTSOUND="no"])
1429   AC_MSG_RESULT($HAVE_DIRECTSOUND)
1430   CFLAGS=$save_CFLAGS
1431   LDFLAGS=$save_LDFLAGS
1432   LIBS=$save_LIBS
1433
1434   if test "x$HAVE_DIRECTSOUND" = "xyes";  then
1435     dnl this is much more than we want
1436     DIRECTSOUND_LIBS="-lwinmm -ldsound -ldxerr9 -luser32"
1437     AC_SUBST(DIRECTX_CFLAGS)
1438     AC_SUBST(DIRECTX_LDFLAGS)
1439     AC_SUBST(DIRECTSOUND_LIBS)
1440   fi
1441   AC_SUBST(HAVE_DIRECTSOUND)
1442 ])
1443
1444 dnl WASAPI
1445 translit(dnm, m, l) AM_CONDITIONAL(USE_WASAPI, true)
1446 AG_GST_CHECK_FEATURE(WASAPI, [WASAPI plug-in], wasapi, [
1447   HAVE_WASAPI="no"
1448   save_CFLAGS="$CFLAGS"
1449   save_LDFLAGS="$LDFLAGS"
1450   save_LIBS="$LIBS"
1451   CFLAGS="$CFLAGS $DIRECTX_CFLAGS"
1452   LDFLAGS="$LDFLAGS $DIRECTX_LDFLAGS"
1453   LIBS="$LIBS -lole32 -lwinmm -lksuser"
1454   AC_MSG_CHECKING(for WASAPI LDFLAGS)
1455   AC_LINK_IFELSE([AC_LANG_PROGRAM([[
1456 #include <windows.h>
1457 #include <stdio.h>
1458 #include <mmsystem.h>
1459 #include <mmdeviceapi.h>
1460 ]], [[
1461 int main ()
1462 {
1463     HRESULT hr = S_OK;
1464
1465     hr = CoInitialize(NULL);
1466     if (FAILED(hr)) {
1467         printf("CoInitialize failed: hr = 0x%08x", hr);
1468         return __LINE__;
1469     }
1470
1471         int result = 0;
1472     // result = do_everything(argc, argv);
1473
1474     CoUninitialize();
1475     return result;
1476 }
1477 ]])],
1478     [HAVE_WASAPI="yes"],
1479     [HAVE_WASAPI="no"])
1480   AC_MSG_RESULT($HAVE_WASAPI)
1481   CFLAGS=$save_CFLAGS
1482   LDFLAGS=$save_LDFLAGS
1483   LIBS=$save_LIBS
1484
1485   if test "x$HAVE_WASAPI" = "xyes";  then
1486     WASAPI_LIBS="-lole32 -lwinmm -lksuser"
1487     AC_SUBST(WASAPI_LIBS)
1488   fi
1489   AC_SUBST(HAVE_WASAPI)
1490 ])
1491
1492 dnl Direct3D
1493 translit(dnm, m, l) AM_CONDITIONAL(USE_DIRECT3D, true)
1494 AG_GST_CHECK_FEATURE(DIRECT3D, [Direct3D plug-in], direct3dsink, [
1495   HAVE_DIRECT3D="no"
1496   save_CFLAGS="$CFLAGS"
1497   save_LDFLAGS="$LDFLAGS"
1498   save_LIBS="$LIBS"
1499   CFLAGS="$CFLAGS $DIRECTX_CFLAGS"
1500   LDFLAGS="$LDFLAGS $DIRECTX_LDFLAGS"
1501   LIBS="$LIBS -ld3d9 -lgdi32"
1502   AC_MSG_CHECKING(for Direct3D LDFLAGS)
1503   AC_LINK_IFELSE([AC_LANG_PROGRAM([[
1504 #include <windows.h>
1505 #include <d3d9.h>
1506 ]], [[
1507   Direct3DCreate9(D3D_SDK_VERSION);
1508 ]])],
1509     [HAVE_DIRECT3D="yes"],
1510     [HAVE_DIRECT3D="no"])
1511   AC_MSG_RESULT($HAVE_DIRECT3D)
1512   CFLAGS=$save_CFLAGS
1513   LDFLAGS=$save_LDFLAGS
1514   LIBS=$save_LIBS
1515
1516   if test "x$HAVE_DIRECT3D" = "xyes";  then
1517     DIRECT3D_LIBS="-ld3d9 -lgdi32"
1518     AC_SUBST(DIRECT3D_LIBS)
1519   fi
1520   AC_SUBST(HAVE_DIRECT3D)
1521 ])
1522
1523 dnl winscreencap
1524 translit(dnm, m, l) AM_CONDITIONAL(USE_WINSCREENCAP, true)
1525 AG_GST_CHECK_FEATURE(WINSCREENCAP, [winscreencap plug-in], winscreencap, [
1526   HAVE_WINSCREENCAP="no"
1527   save_CFLAGS="$CFLAGS"
1528   save_LDFLAGS="$LDFLAGS"
1529   save_LIBS="$LIBS"
1530   CFLAGS="$CFLAGS $DIRECTX_CFLAGS"
1531   LDFLAGS="$LDFLAGS $DIRECTX_LDFLAGS"
1532   LIBS="$LIBS -ld3d9 -lgdi32"
1533   AC_MSG_CHECKING(for Direct3D LDFLAGS)
1534   AC_LINK_IFELSE([AC_LANG_PROGRAM([[
1535 #include <windows.h>
1536 #include <d3d9.h>
1537 ]], [[
1538   Direct3DCreate9(D3D_SDK_VERSION);
1539 ]])],
1540     [HAVE_WINSCREENCAP="yes"],
1541     [HAVE_WINSCREENCAP="no"])
1542   AC_MSG_RESULT($HAVE_WINSCREENCAP)
1543   CFLAGS=$save_CFLAGS
1544   LDFLAGS=$save_LDFLAGS
1545   LIBS=$save_LIBS
1546
1547   if test "x$HAVE_WINSCREENCAP" = "xyes";  then
1548     WINSCREENCAP_LIBS="-ld3d9 -lgdi32"
1549     AC_SUBST(WINSCREENCAP_LIBS)
1550   fi
1551   AC_SUBST(HAVE_WINSCREENCAP)
1552 ])
1553
1554 dnl winks
1555 translit(dnm, m, l) AM_CONDITIONAL(USE_WINKS, true)
1556 AG_GST_CHECK_FEATURE(WINKS, [Winks plug-in], winks, [
1557   HAVE_WINKS="no"
1558   save_CFLAGS="$CFLAGS"
1559   save_LDFLAGS="$LDFLAGS"
1560   save_LIBS="$LIBS"
1561   CFLAGS="$CFLAGS $DIRECTX_CFLAGS"
1562   LDFLAGS="$LDFLAGS $DIRECTX_LDFLAGS"
1563   LIBS="$LIBS -lole32 -luuid -lstrmiids"
1564   AC_MSG_CHECKING(for Winks LDFLAGS)
1565   AC_LINK_IFELSE([AC_LANG_PROGRAM([[
1566 #include <windows.h>
1567 #include <strmif.h>
1568 #include <uuids.h>
1569 ]], [[
1570 int main () {
1571   IGraphBuilder *pGraph = NULL;
1572   HRESULT hr = CoInitialize(NULL);
1573   hr = CoCreateInstance(&CLSID_FilterGraph, NULL, CLSCTX_INPROC_SERVER,
1574                         &IID_IGraphBuilder, (void **)&pGraph);
1575
1576   return 0;
1577 }
1578 ]])],
1579     [HAVE_WINKS="yes"],
1580     [HAVE_WINKS="no"])
1581   AC_MSG_RESULT($HAVE_WINKS)
1582   CFLAGS=$save_CFLAGS
1583   LDFLAGS=$save_LDFLAGS
1584   LIBS=$save_LIBS
1585
1586   if test "x$HAVE_WINKS" = "xyes";  then
1587     dnl this is much more than we want
1588     WINKS_LIBS="-ldxguid -lole32 -luuid -lstrmiids -lksuser -lsetupapi"
1589     AC_SUBST(DIRECTX_CFLAGS)
1590     AC_SUBST(DIRECTX_LDFLAGS)
1591     AC_SUBST(WINKS_LIBS)
1592   fi
1593   AC_SUBST(HAVE_WINKS)
1594 ])
1595
1596 dnl *** Android Media ***
1597 translit(dnm, m, l) AM_CONDITIONAL(USE_ANDROID_MEDIA, true)
1598 HAVE_ANDROID_MEDIA="no"
1599 AG_GST_CHECK_FEATURE(ANDROID_MEDIA, [Android Media], androidmedia, [
1600   case "$host" in
1601     *android*)
1602       AC_CHECK_HEADER(jni.h, HAVE_ANDROID_MEDIA="yes", HAVE_ANDROID_MEDIA="no")
1603       ;;
1604     *)
1605       HAVE_ANDROID_MEDIA="no"
1606       ;;
1607   esac
1608 ])
1609
1610 dnl *** AppleMedia (OS X and iOS) ***
1611 translit(dnm, m, l) AM_CONDITIONAL(USE_APPLE_MEDIA, true)
1612 HAVE_APPLE_MEDIA="no"
1613 dnl SystemConfiguration.h is common to OS X and iOS, so we check for that
1614 AG_GST_CHECK_FEATURE(APPLE_MEDIA, [Apple video], applemedia, [
1615   AC_CHECK_HEADER(SystemConfiguration/SystemConfiguration.h, HAVE_APPLE_MEDIA="yes", HAVE_APPLE_MEDIA="no")
1616   dnl OSX 10.7 and earlier lack VideoToolbox/VideoToolbox.h
1617   if test "x$HAVE_IOS" = "xno"; then
1618     AC_CHECK_HEADER(VideoToolbox/VideoToolbox.h,, HAVE_APPLE_MEDIA="no")
1619   fi
1620 ])
1621
1622 dnl in case header SystemConfiguration/SystemConfiguration.h is found on other platforms
1623 case "$host" in
1624   *-*darwin*)
1625     ;;
1626   *)
1627     HAVE_APPLE_MEDIA="no"
1628     ;;
1629 esac
1630
1631 dnl *** bluez ***
1632 translit(dnm, m, l) AM_CONDITIONAL(USE_BLUEZ, true)
1633 AG_GST_CHECK_FEATURE(BLUEZ, [Bluez], bluez, [
1634   PKG_CHECK_MODULES([BLUEZ5], [bluez >= 5.0], [
1635     PKG_CHECK_MODULES([GIO_UNIX], gio-unix-2.0 > 2.24, [
1636       AC_CHECK_PROG([GDBUS_CODEGEN],[gdbus-codegen],[gdbus-codegen])
1637       HAVE_BLUEZ=yes
1638       AC_DEFINE(HAVE_BLUEZ5,[1],[Bluez5 detected])
1639     ], [
1640       HAVE_BLUEZ=no
1641     ])
1642   ], [
1643     HAVE_BLUEZ=no
1644   ])
1645 ])
1646
1647 dnl *** OS/X AVCVideoServices ***
1648 translit(dnm, m, l) AM_CONDITIONAL(USE_AVC, true)
1649 HAVE_AVC="no"
1650 AG_GST_CHECK_FEATURE(AVC, [AVC Video Services], avcsrc, [
1651   AC_LANG_PUSH([C++])
1652   save_CPPFLAGS="$CPPFLAGS"
1653   CPPFLAGS="$CPPFLAGS -framework AVCVideoServices -framework CoreFoundation"
1654   save_LIBS="$LIBS"
1655   LIBS="$LIBS -framework AVCVideoServices -framework CoreFoundation"
1656   AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[]])],[HAVE_AVC=yes],[HAVE_AVC=no])
1657   LIBS=$save_LIBS
1658   CPPFLAGS=$save_CPPFLAGS
1659   AC_LANG_POP([C++])
1660 ])
1661 dnl in case header AVCVideoServices/AVCVideoServices.h is found on other platforms
1662 case "$host" in
1663   *-*darwin*)
1664     ;;
1665   *)
1666     HAVE_AVC="no"
1667     ;;
1668 esac
1669
1670 dnl check for shm_open (for shm plugin)
1671 translit(dnm, m, l) AM_CONDITIONAL(USE_SHM, true)
1672 AG_GST_CHECK_FEATURE(SHM, [POSIX shared memory source and sink], shm, [
1673     if test "x$HAVE_SYS_SOCKET_H" = "xyes"; then
1674         case $host in
1675         *-darwin* | *-macos10*)
1676             AC_DEFINE(HAVE_OSX,[1],[Apple Mac OS X operating system detected])
1677             HAVE_SHM=yes
1678             ;;
1679         *)
1680             AC_CHECK_LIB([rt], [shm_open],
1681                 AC_CHECK_DECL([MSG_NOSIGNAL], HAVE_SHM=yes, HAVE_SHM=no, [
1682                 #include <sys/socket.h>
1683                     ]),
1684                 HAVE_SHM=no)
1685             AC_SUBST(SHM_LIBS, "-lrt")
1686             ;;
1687         esac
1688     else
1689         HAVE_SHM=no
1690     fi
1691 ])
1692
1693 dnl check for Video CD
1694 translit(dnm, m, l) AM_CONDITIONAL(USE_VCD, true)
1695 AG_GST_CHECK_FEATURE(VCD, [Video CD], vcdsrc, [
1696   AC_CHECK_HEADER(linux/cdrom.h, HAVE_VCD="yes", HAVE_VCD="no")
1697 ])
1698
1699 dnl check for OpenSL ES
1700 translit(dnm, m, l) AM_CONDITIONAL(USE_OPENSLES, true)
1701 AG_GST_CHECK_FEATURE(OPENSLES, [OpenSL ES], opensl, [
1702   AC_CHECK_HEADER(SLES/OpenSLES.h, HAVE_OPENSLES="yes", HAVE_OPENSLES="no")
1703 ])
1704
1705 dnl *** UVC H264 ***
1706 translit(dnm, m, l) AM_CONDITIONAL(USE_UVCH264, true)
1707 AG_GST_CHECK_FEATURE(UVCH264, [UVC H264], uvch264, [
1708   AC_CHECK_HEADER(linux/uvcvideo.h, HAVE_UVCVIDEO_H=yes, HAVE_UVCVIDEO_H=no)
1709   PKG_CHECK_MODULES(G_UDEV, gudev-1.0 , [
1710           AC_DEFINE([HAVE_GUDEV], 1, [Define if gudev is installed])
1711           HAVE_GUDEV="yes" ],
1712           [HAVE_GUDEV="no"])
1713   PKG_CHECK_MODULES(LIBUSB, libusb-1.0 , [
1714           AC_DEFINE([HAVE_LIBUSB], 1, [Define if libusb 1.x is installed])
1715           HAVE_LIBUSB="yes" ],
1716           [HAVE_LIBUSB="no"])
1717   if test "x$HAVE_UVCVIDEO_H" = "xyes" && \
1718      test "x$HAVE_GUDEV" = "xyes" && \
1719      test "x$HAVE_LIBUSB" = "xyes"; then
1720     HAVE_UVCH264=yes
1721   else
1722     HAVE_UVCH264=no
1723   fi
1724 ])
1725 AC_SUBST(LIBUDEV_CFLAGS)
1726 AC_SUBST(LIBUDEV_LIBS)
1727 AC_SUBST(LIBUSB_CFLAGS)
1728 AC_SUBST(LIBUSB_LIBS)
1729
1730 dnl *** NVENC ***
1731 translit(dnm, m, l) AM_CONDITIONAL(USE_NVENC, true)
1732 AG_GST_CHECK_FEATURE(NVENC, [NVIDIA Encode API], nvenc, [
1733   AG_GST_PKG_CHECK_MODULES(GST_VIDEO, gstreamer-video-1.0)
1734   AG_GST_PKG_CHECK_MODULES(GST_PBUTILS, gstreamer-pbutils-1.0)
1735   AC_ARG_WITH([cuda-prefix],
1736           AS_HELP_STRING([--with-cuda-prefix],
1737           [Use the provided prefix for detecting the cuda installation]),
1738           [AS_IF([test "x$with_cuda_prefix" != "x"],
1739                  [CUDA_PREFIX="$with_cuda_prefix"])],
1740           [CUDA_PREFIX=""])
1741
1742   HAVE_CUDA="yes"
1743   if test "x$CUDA_PREFIX" != "x"; then
1744     dnl only override if not already set
1745     if test "x$CUDA_CFLAGS" = "x" -a "x$CUDA_LIBS" = "x"; then
1746       dnl this is an educated guess, user can always override these
1747       CUDA_CFLAGS="-I$CUDA_PREFIX/include"
1748       CUDA_LIBS="-L$CUDA_PREFIX/lib -L$CUDA_PREFIX/lib64 -L$CUDA_PREFIX/lib/stubs -L$CUDA_PREFIX/lib64/stubs -lcuda -lcudart"
1749     fi
1750   else
1751     PKG_CHECK_MODULES([CUDA], [cuda-7.5 cudart-7.5],, [
1752       PKG_CHECK_MODULES([CUDA], [cuda-7.0 cudart-7.0],, [
1753         PKG_CHECK_MODULES([CUDA], [cuda-6.5 cudart-6.5],, [
1754           AC_MSG_WARN([Could not find cuda headers/libraries])])])])
1755   fi
1756
1757   HAVE_CUDA_H=no
1758   HAVE_CUDART_H=no
1759   save_CPPFLAGS="$CPPFLAGS"
1760   CPPFLAGS="$CUDA_CFLAGS $save_CPPFLAGS "
1761   AC_CHECK_HEADER([cuda.h], [HAVE_CUDA_H=yes],
1762       AC_MSG_WARN([Could not find cuda.h]))
1763   AC_CHECK_HEADER([cuda_runtime_api.h], [HAVE_CUDART_H=yes],
1764       AC_MSG_WARN([Could not find cuda_runtime_api.h]))
1765   CPPFLAGS=$save_CPPFLAGS
1766
1767   dnl libcuda and libcudart libraries
1768   save_LIBS="$LIBS"
1769   LIBS="$CUDA_LIBS $save_LIBS"
1770   HAVE_CUDART_LIB="no"
1771   AC_CHECK_LIB(cudart,cudaGetErrorString,[HAVE_CUDART_LIB="yes"], [
1772       AC_MSG_WARN([Could not find cudart library])])
1773   HAVE_CUDA_LIB="no"
1774   AC_CHECK_LIB(cuda,cuInit,[HAVE_CUDA_LIB="yes"], [
1775       AC_MSG_WARN([Could not find cuda library])])
1776   LIBS="$save_LIBS"
1777
1778   dnl nvEncodeAPI.h header
1779   HAVE_NVENCODEAPI_H=no
1780   AC_ARG_VAR(NVENCODE_CFLAGS, [C compiler flags for NvEncodeAPI.h])
1781   save_CPPFLAGS="$CPPFLAGS"
1782   CPPFLAGS="$NVENCODE_CFLAGS $save_CPPFLAGS"
1783   AC_CHECK_HEADER([nvEncodeAPI.h], [
1784       AC_PREPROC_IFELSE([AC_LANG_SOURCE([[#include <nvEncodeAPI.h>
1785           #if NVENCAPI_MAJOR_VERSION < 5
1786           #error "Need nvEncodeAPI.h >= 5.0"
1787           #endif
1788           ]])], [
1789           HAVE_NVENCODEAPI_H=yes
1790           ], [
1791           AC_MSG_WARN([nvEncodeAPI.h must be >= 5.0])
1792           ])
1793       ],
1794       AC_MSG_WARN([Could not find nvEncodeAPI.h]))
1795   AC_SUBST(NVENCODE_CFLAGS)
1796   CPPFLAGS="$save_CPPFLAGS"
1797
1798   dnl libnvnidia-encode library
1799   HAVE_NVENCODE_LIB=no
1800   AC_ARG_VAR(NVENCODE_LIBS, [linker flags for nvidia-encode])
1801   saved_LIBS="$LIBS"
1802   LIBS="$NVENCODE_LIBS $saved_LIBS"
1803   AC_CHECK_LIB(nvidia-encode, NvEncodeAPICreateInstance, [HAVE_NVENCODE_LIB="yes"],
1804       AC_MSG_WARN([Could not find library nvidia-encode]))
1805   NVENCODE_LIBS="$NVENCODE_LIBS -lnvidia-encode"
1806   AC_SUBST(NVENCODE_LIBS)
1807   LIBS="$saved_LIBS"
1808
1809   USE_NVENC_GST_GL=no
1810   if test "x$HAVE_CUDA_H" = "xyes" \
1811       -a "x$HAVE_CUDART_H" = "xyes" \
1812       -a "x$HAVE_CUDA_LIB" = "xyes" \
1813       -a "x$HAVE_CUDART_LIB" = "xyes" \
1814       -a "x$HAVE_NVENCODEAPI_H" = "xyes" \
1815       -a "x$HAVE_NVENCODE_LIB" = "xyes"; then
1816     HAVE_NVENC="yes"
1817     if test x"$USE_OPENGL" = x"yes"; then
1818       dnl cuda-gl interop header
1819       save_CPPFLAGS="$CPPFLAGS"
1820       CPPFLAGS="$save_CPPFLAGS $CUDA_CFLAGS"
1821       AC_CHECK_HEADER([cuda_gl_interop.h], [
1822         USE_NVENC_GST_GL="yes"
1823         AC_DEFINE(HAVE_NVENC_GST_GL, [1] , [NVENC GStreamer OpenGL support available])
1824         ])
1825       CPPFLAGS="$save_CPPFLAGS"
1826     fi
1827   else
1828     HAVE_NVENC="no"
1829   fi
1830 ])
1831 AM_CONDITIONAL(USE_NVENC_GST_GL, test "x$USE_NVENC_GST_GL" = "xyes")
1832
1833 dnl *** ext plug-ins ***
1834 dnl keep this list sorted alphabetically !
1835
1836 if test "x$BUILD_EXTERNAL" = "xyes"; then
1837
1838 dnl *** assrender ***
1839 translit(dnm, m, l) AM_CONDITIONAL(USE_ASSRENDER, true)
1840 AG_GST_CHECK_FEATURE(ASSRENDER, [ASS/SSA renderer], assrender, [
1841   PKG_CHECK_MODULES(ASSRENDER, libass >= 0.10.2, [
1842     HAVE_ASSRENDER="yes" ], [
1843     HAVE_ASSRENDER="no"
1844   ])
1845 ])
1846 AC_SUBST(ASSRENDER_CFLAGS)
1847 AC_SUBST(ASSRENDER_LIBS)
1848
1849 dnl *** vo-amrwbenc ***
1850 translit(dnm, m, l) AM_CONDITIONAL(USE_VOAMRWBENC, true)
1851 AG_GST_CHECK_FEATURE(VOAMRWBENC, [vo-amrwbenc library], vo-amrwbenc, [
1852   AG_GST_PKG_CHECK_MODULES(VOAMRWBENC, vo-amrwbenc >= 0.1.0)
1853 ])
1854
1855 dnl *** vo-aacenc ***
1856 translit(dnm, m, l) AM_CONDITIONAL(USE_VOAACENC, true)
1857 AG_GST_CHECK_FEATURE(VOAACENC, [vo-aacenc library], vo-aacenc, [
1858   AG_GST_PKG_CHECK_MODULES(VOAACENC, vo-aacenc >= 0.1.0)
1859 ])
1860
1861 dnl *** apexsink ***
1862 translit(dnm, m, l) AM_CONDITIONAL(USE_APEXSINK, true)
1863 AG_GST_CHECK_FEATURE(APEXSINK, [AirPort Express Wireless sink], apexsink, [
1864   PKG_CHECK_MODULES(APEXSINK, [ openssl >= 0.9.5  libcrypto ], [
1865     HAVE_APEXSINK="yes"
1866     saved_LIBS="$LIBS"
1867     LIBS=""
1868     AC_SEARCH_LIBS(socket, [socket], [ ], [ APEXSINK="no" ])
1869     AC_SEARCH_LIBS(gethostbyname, [nsl], [ ], [ APEXSINK="no" ])
1870     APEXSINK_LIBS="$APEXSINK_LIBS $LIBS"
1871     LIBS="$saved_LIBS"
1872     AC_SUBST(APEXSINK_CFLAGS)
1873     AC_SUBST(APEXSINK_LIBS)
1874   ], [
1875     APEXSINK="no"
1876   ])
1877 ])
1878
1879 dnl *** bs2b ***
1880 translit(dnm, m, l) AM_CONDITIONAL(USE_BS2B, true)
1881 AG_GST_CHECK_FEATURE(BS2B, [bs2b], bs2b, [
1882   PKG_CHECK_MODULES(BS2B, libbs2b >= 3.1.0, HAVE_BS2B="yes", [
1883     HAVE_BS2B="no"
1884   ])
1885   AC_SUBST(BS2B_CFLAGS)
1886   AC_SUBST(BS2B_LIBS)
1887 ])
1888
1889 dnl *** BZ2 ***
1890 translit(dnm, m, l) AM_CONDITIONAL(USE_BZ2, true)
1891 AG_GST_CHECK_FEATURE(BZ2, [bz2 library], bz2, [
1892   save_LIBS=$LIBS
1893   LIBS="$LIBS -lbz2"
1894   AC_MSG_CHECKING([for BZ2_bzlibVersion in -lbz2])
1895   AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <bzlib.h>]], [[const char *version = BZ2_bzlibVersion ();]])],[HAVE_BZ2=yes],[HAVE_BZ2=no])
1896   AC_MSG_RESULT($HAVE_BZ2)
1897   LIBS=$save_LIBS
1898   if test "x$HAVE_BZ2" = "xyes"; then
1899     BZ2_LIBS="-lbz2"
1900   fi
1901   AC_SUBST(BZ2_LIBS)
1902
1903 ])
1904
1905 #dnl *** cairo ***
1906 #translit(dnm, m, l) AM_CONDITIONAL(USE_CAIRO, true)
1907 #AG_GST_CHECK_FEATURE(CAIRO, [cairo plug-in], cairo, [
1908 #  PKG_CHECK_MODULES(CAIRO, cairo >= 1.0 glitz-glx, HAVE_CAIRO=yes, [
1909 #    HAVE_CAIRO=no
1910 #  ])
1911 #  AC_SUBST(CAIRO_CFLAGS)
1912 #  AC_SUBST(CAIRO_LIBS)
1913 #])
1914
1915 dnl *** chromaprint ***
1916 translit(dnm, m, l) AM_CONDITIONAL(USE_CHROMAPRINT, true)
1917 AG_GST_CHECK_FEATURE(CHROMAPRINT, [chromaprint], chromaprint, [
1918   PKG_CHECK_MODULES(CHROMAPRINT, libchromaprint, HAVE_CHROMAPRINT="yes", [
1919     HAVE_CHROMAPRINT="no"
1920   ])
1921   AC_SUBST(CHROMAPRINT_CFLAGS)
1922   AC_SUBST(CHROMAPRINT_LIBS)
1923 ])
1924
1925 dnl *** Curl ***
1926 translit(dnm, m, l) AM_CONDITIONAL(USE_CURL, true)
1927 AG_GST_CHECK_FEATURE(CURL, [Curl plugin], curl, [
1928   PKG_CHECK_MODULES(CURL, libcurl >= 7.35.0, [
1929     HAVE_CURL="yes"
1930     AC_CHECK_HEADERS([unistd.h sys/socket.h sys/types.h netinet/in.h netinet/tcp.h fcntl.h], [ ], [
1931       AC_CHECK_HEADERS([unistd.h sys/types.h winsock2.h ws2tcpip.h fcntl.h], [ ], [HAVE_CURL="no"])
1932     ])
1933     AC_CHECK_HEADERS([netinet/ip.h], [], [HAVE_CURL="no"],
1934     [[#ifdef HAVE_SYS_TYPES_H
1935      # include <sys/types.h>
1936      #endif
1937      #ifdef HAVE_NETINET_IN_H
1938      # include <netinet/in.h>
1939      #endif
1940     ]])
1941     AC_MSG_CHECKING([for socket support needed by curlsink])
1942     AC_MSG_RESULT($HAVE_CURL)
1943   ], [
1944     HAVE_CURL="no"
1945   ])
1946   AC_SUBST(CURL_CFLAGS)
1947   AC_SUBST(CURL_LIBS)
1948   PKG_CHECK_MODULES(SSH2, libssh2 >= 1.4.3, [
1949     HAVE_SSH2="yes"
1950     AC_DEFINE(HAVE_SSH2, 1, [Define if libssh2 is available])
1951   ], [
1952     HAVE_SSH2="no"
1953   ])
1954   AM_CONDITIONAL(USE_SSH2, test "x$HAVE_SSH2" = "xyes")
1955   AC_SUBST(SSH2_CFLAGS)
1956   AC_SUBST(SSH2_LIBS)
1957 ],,,[AM_CONDITIONAL(USE_SSH2, false)])
1958
1959 dnl **** DASH ****
1960 translit(dnm, m, l) AM_CONDITIONAL(USE_DASH, true)
1961 AG_GST_CHECK_FEATURE(DASH, [DASH plug-in], dash, [
1962   PKG_CHECK_MODULES(LIBXML2, libxml-2.0 >= 2.8, [HAVE_LIBXML2="yes"
1963     HAVE_DASH="yes"], [HAVE_LIBXML2="no"
1964     HAVE_DASH="no"])
1965   AC_SUBST(LIBXML2_CFLAGS)
1966   AC_SUBST(LIBXML2_LIBS)
1967 ])
1968
1969 dnl *** dc1394  ***
1970 translit(dnm, m, l) AM_CONDITIONAL(USE_DC1394, true)
1971 AG_GST_CHECK_FEATURE(DC1394, [libdc1394], dc1394, [
1972    PKG_CHECK_MODULES(LIBDC1394, libdc1394-2 >= 2.0.0, [
1973         if test -z "`$PKG_CONFIG --modversion libdc1394-2 | grep 2.0.0-rc`"; then
1974                 HAVE_DC1394="yes"
1975         else
1976                 HAVE_DC1394="no"
1977         fi
1978    ], [
1979         HAVE_DC1394="no"
1980         AC_MSG_RESULT(no)
1981    ])
1982    AC_SUBST(LIBDC1394_CFLAGS)
1983    AC_SUBST(LIBDC1394_LIBS)
1984 ])
1985
1986 dnl *** decklink  ***
1987 translit(dnm, m, l) AM_CONDITIONAL(USE_DECKLINK, true)
1988 AG_GST_CHECK_FEATURE(DECKLINK, [decklink], decklink, [
1989    HAVE_DECKLINK=no
1990    case "$host" in
1991      *android*)
1992        HAVE_DECKLINK=no
1993        ;;
1994      *-*linux*)
1995        if test "x$HAVE_PTHREAD_H" = "xyes"; then
1996          AC_CHECK_LIB(dl, dlopen,
1997            [
1998             HAVE_DECKLINK=yes
1999             DECKLINK_CXXFLAGS=
2000             DECKLINK_LIBS="-lpthread -ldl"
2001            ])
2002        fi
2003        ;;
2004      *-*darwin*)
2005        if test "x$HAVE_PTHREAD_H" = "xyes"; then
2006          AC_CHECK_LIB(dl, dlopen,
2007            [
2008             HAVE_DECKLINK=yes
2009             DECKLINK_CXXFLAGS=
2010             DECKLINK_LIBS="-lpthread -ldl"
2011             HAVE_DECKLINK_OSX=yes
2012            ])
2013        fi
2014        ;;
2015      *)
2016        HAVE_DECKLINK=no
2017        ;;
2018    esac
2019
2020    AC_SUBST(DECKLINK_CXXFLAGS)
2021    AC_SUBST(DECKLINK_LIBS)
2022 ])
2023 AM_CONDITIONAL(DECKLINK_OSX, test "x$HAVE_DECKLINK_OSX" = xyes)
2024
2025 dnl **** DirectFB ****
2026 translit(dnm, m, l) AM_CONDITIONAL(USE_DIRECTFB, true)
2027 AG_GST_CHECK_FEATURE(DIRECTFB, [directfb], dfbvideosink , [
2028   PKG_CHECK_MODULES(DIRECTFB, directfb >= 0.9.24, HAVE_DIRECTFB="yes", [
2029     HAVE_DIRECTFB="no"
2030   ])
2031 ])
2032
2033 dnl **** Wayland ****
2034 translit(dnm, m, l) AM_CONDITIONAL(USE_WAYLAND, true)
2035 AG_GST_CHECK_FEATURE(WAYLAND, [wayland sink], wayland , [
2036   PKG_CHECK_MODULES(WAYLAND, wayland-client >= 1.4.0 wayland-scanner, [
2037     HAVE_WAYLAND="yes" ], [ HAVE_WAYLAND="no"
2038   ])
2039 ])
2040
2041 AC_PATH_PROG([wayland_scanner], [wayland-scanner])
2042
2043 dnl **** WebP ****
2044 translit(dnm, m, l) AM_CONDITIONAL(USE_WEBP, true)
2045 AG_GST_CHECK_FEATURE(WEBP, [WebP], webp , [
2046   PKG_CHECK_MODULES(WEBP, libwebp >= 0.2.1, [
2047     HAVE_WEBP="yes" ], [ HAVE_WEBP="no"
2048   ])
2049   AC_SUBST(WEBP_CFLAGS)
2050   AC_SUBST(WEBP_LIBS)
2051 ])
2052
2053 dnl *** Daala ***
2054 translit(dnm, m, l) AM_CONDITIONAL(USE_DAALA, true)
2055 AG_GST_CHECK_FEATURE(DAALA, [daala], daala, [
2056   if test "x$BUILD_EXPERIMENTAL" = "xyes"; then
2057     PKG_CHECK_MODULES(DAALA, daalaenc daaladec, [
2058             HAVE_DAALA="yes"
2059     ], [
2060             HAVE_DAALA="no"
2061     ])
2062     AC_SUBST(DAALA_CFLAGS)
2063     AC_SUBST(DAALA_LIBS)
2064   fi
2065 ])
2066
2067 dnl *** DTS ***
2068 translit(dnm, m, l) AM_CONDITIONAL(USE_DTS, true)
2069 AG_GST_CHECK_FEATURE(DTS, [dts library], dtsdec, [
2070   HAVE_DTS="yes"
2071   AG_GST_CHECK_LIBHEADER(DTS, dca, dca_init, $LIBM, dca.h,
2072     DTS_LIBS="-ldca $LIBM", HAVE_DTS="no")
2073   if test $HAVE_DTS = "no"; then
2074     AG_GST_CHECK_LIBHEADER(DTS, dts_pic, dts_init, $LIBM, dts.h,
2075       [ DTS_LIBS="-ldts_pic $LIBM"
2076         AC_DEFINE(DTS_OLD, 1, [Define if an old libdts is used])
2077       ])
2078   fi
2079   AC_SUBST(DTS_LIBS)
2080 ])
2081
2082 dnl *** resindvd ***
2083 translit(dnm, m, l) AM_CONDITIONAL(USE_RESINDVD, true)
2084 AG_GST_CHECK_FEATURE(RESINDVD, [resindvd plugin], resindvd, [
2085   PKG_CHECK_MODULES(DVDNAV, dvdnav >= 4.1.2 dvdread >= 4.1.2, HAVE_RESINDVD="yes", [
2086     HAVE_RESINDVD="no"
2087   ])
2088 ])
2089
2090 dnl **** Free AAC Encoder (FAAC) ****
2091 translit(dnm, m, l) AM_CONDITIONAL(USE_FAAC, true)
2092 AG_GST_CHECK_FEATURE(FAAC, [AAC encoder plug-in], faac, [
2093   AG_GST_CHECK_LIBHEADER(FAAC, faac, faacEncOpen, $LIBM, faac.h,
2094     FAAC_LIBS="-lfaac $LIBM")
2095   AC_SUBST(FAAC_LIBS)
2096 ])
2097
2098 dnl **** Free AAC Decoder (FAAD) ****
2099 translit(dnm, m, l) AM_CONDITIONAL(USE_FAAD, true)
2100 AG_GST_CHECK_FEATURE(FAAD, [AAC decoder plug-in], faad, [
2101   HAVE_FAAD="yes"
2102   faad_hdr=""
2103   AG_GST_CHECK_LIBHEADER(FAAD, faad, faacDecOpen, $LIBM, faad.h,
2104     FAAD_LIBS="-lfaad $LIBM", HAVE_FAAD="no")
2105   if test $HAVE_FAAD = "no"; then
2106     AG_GST_CHECK_LIBHEADER(FAAD, faad, NeAACDecOpen, $LIBM, neaacdec.h,
2107       [ FAAD_LIBS="-lfaad $LIBM"
2108         AC_DEFINE(FAAD_IS_NEAAC, 1, [Define if AAC is using new api prefix])
2109         faad_hdr="neaacdec.h"
2110       ], [
2111         HAVE_FAAD="no"
2112       ],)
2113   else
2114     faad_hdr="faad.h"
2115   fi
2116   if test $HAVE_FAAD = "yes"; then
2117     AC_MSG_CHECKING([Checking for FAAD >= 2.0])
2118     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <faad.h>]], [[
2119         #if !defined(FAAD2_VERSION) || !defined(FAAD_FMT_DOUBLE)
2120         #error Not faad2
2121         #else
2122         /* Release candidate of 2.0 is not good enough for us. This field
2123          * was added only in 2.0 final and does not exist in 2.0-RC3 */
2124         faacDecConfiguration conf; conf.dontUpSampleImplicitSBR = 1;
2125         #endif
2126     ]])],[
2127       HAVE_FAAD="yes"
2128
2129       AC_MSG_CHECKING([Checking FAAD2 version in $faad_hdr])
2130       for minor in 10 9 8 7 6 5 0; do
2131         if test x$faad2_minor_version = "x"; then
2132           AC_EGREP_CPP([\"2\.$minor\"$], [
2133               #include <$faad_hdr>
2134               FAAD2_VERSION
2135             ], [
2136               faad2_minor_version=$minor
2137             ])
2138         fi
2139       done
2140       if test x$faad2_minor_version = "x"; then
2141         AC_MSG_RESULT([no idea])
2142       else
2143         AC_MSG_RESULT([2.$faad2_minor_version])
2144         AC_DEFINE_UNQUOTED([FAAD2_MINOR_VERSION], [$faad2_minor_version], [The x in 2.x])
2145       fi
2146     ],[
2147       HAVE_FAAD="no"
2148     ])
2149   fi
2150   AC_SUBST(FAAD_LIBS)
2151   AC_SUBST(FAAD_IS_NEAAC)
2152 ])
2153
2154 dnl *** fbdev ***
2155 translit(dnm, m, l) AM_CONDITIONAL(USE_FBDEV, true)
2156 AG_GST_CHECK_FEATURE(FBDEV, [linux framebuffer], fbdevsink, [
2157   if test "x$HAVE_FBDEV" != "xyes"; then
2158     AC_CHECK_HEADER([linux/fb.h], HAVE_FBDEV=yes, HAVE_FBDEV=no)
2159   fi
2160 ])
2161
2162 dnl *** flite ***
2163 translit(dnm, m, l) AM_CONDITIONAL(USE_FLITE, true)
2164 AG_GST_CHECK_FEATURE(FLITE, [Flite plugin], flite, [
2165   AG_GST_CHECK_LIBHEADER(FLITE, flite, flite_init, $LIBM, flite/flite.h,
2166     FLITE_LIBS="-lflite -lflite_cmu_us_kal -lflite_usenglish -lflite_cmulex $LIBM")
2167
2168   AC_SUBST(FLITE_CFLAGS)
2169   AC_SUBST(FLITE_LIBS)
2170 ])
2171
2172 dnl *** gsm ***
2173 translit(dnm, m, l) AM_CONDITIONAL(USE_GSM, true)
2174 AG_GST_CHECK_FEATURE(GSM, [GSM library], gsmenc gsmdec, [
2175   AG_GST_CHECK_LIBHEADER(GSM, gsm, gsm_create, , gsm.h, GSM_LIBS="-lgsm")
2176   if test $HAVE_GSM != "yes"; then
2177     AG_GST_CHECK_LIBHEADER(GSM, gsm, gsm_create, , gsm/gsm.h, GSM_LIBS="-lgsm")
2178     if test $HAVE_GSM = "yes"; then
2179       AC_DEFINE(GSM_HEADER_IN_SUBDIR, 1, [Define if GSM header in gsm/ subdir])
2180     fi
2181   fi
2182   AC_SUBST(GSM_LIBS)
2183 ])
2184
2185 dnl *** fluidSynth ***
2186 translit(dnm, m, l) AM_CONDITIONAL(USE_FLUIDSYNTH, true)
2187 AG_GST_CHECK_FEATURE(FLUIDSYNTH, [fluidsynth], fluidsynth, [
2188   PKG_CHECK_MODULES(FLUIDSYNTH, fluidsynth >= 1.0, HAVE_FLUIDSYNTH="yes", [
2189     HAVE_FLUIDSYNTH="no"
2190   ])
2191 ])
2192
2193 dnl *** kate ***
2194 translit(dnm, m, l) AM_CONDITIONAL(USE_KATE, true)
2195 AG_GST_CHECK_FEATURE(KATE, [Kate], kate, [
2196   PKG_CHECK_MODULES(KATE, kate >= 0.1.7, HAVE_KATE="yes", [
2197     HAVE_KATE="no"
2198   ])
2199   AC_SUBST(KATE_CFLAGS)
2200   AC_SUBST(KATE_LIBS)
2201   PKG_CHECK_MODULES(TIGER, tiger >= 0.3.2,
2202     [
2203       HAVE_TIGER="yes"
2204       AC_DEFINE(HAVE_TIGER, 1, [Define if libtiger is available])
2205     ],
2206     [
2207       HAVE_TIGER="no"
2208     ]
2209   )
2210   AM_CONDITIONAL(USE_TIGER, test "x$HAVE_TIGER" = "xyes")
2211   AC_SUBST(TIGER_CFLAGS)
2212   AC_SUBST(TIGER_LIBS)
2213 ],,,[AM_CONDITIONAL(USE_TIGER, false)])
2214
2215 dnl *** ladspa ***
2216 translit(dnm, m, l) AM_CONDITIONAL(USE_LADSPA, true)
2217 AG_GST_CHECK_FEATURE(LADSPA, [ladspa], ladspa, [
2218   AC_CHECK_HEADER(ladspa.h, HAVE_LADSPA="yes", HAVE_LADSPA="no")
2219
2220   PKG_CHECK_MODULES(LRDF, lrdf, HAVE_LRDF=yes, HAVE_LRDF=no)
2221   if test $HAVE_LRDF = "yes"; then
2222     AC_DEFINE(HAVE_LRDF, 1, [Define if we have liblrdf])
2223   fi
2224   AC_SUBST(LRDF_LIBS)
2225   AC_SUBST(LRDF_CFLAGS)
2226 ])
2227
2228 dnl *** LV2 ***
2229 translit(dnm, m, l) AM_CONDITIONAL(USE_LV2, true)
2230 AG_GST_CHECK_FEATURE(LV2, [lv2], lv2, [
2231   PKG_CHECK_MODULES(SLV2, slv2 >= 0.6.6, HAVE_LV2="yes", HAVE_LV2="no")
2232   AC_SUBST(SLV2_CFLAGS)
2233   AC_SUBST(SLV2_LIBS)
2234 ])
2235
2236 dnl *** libde265 ***
2237 translit(dnm, m, l) AM_CONDITIONAL(USE_LIBDE265, true)
2238 AG_GST_CHECK_FEATURE(LIBDE265, [libde265 HEVC/H.265 decoder], libde265, [
2239   PKG_CHECK_MODULES(LIBDE265, libde265 >= 0.9, HAVE_LIBDE265="yes", HAVE_LIBDE265="no")
2240   AC_SUBST(LIBDE265_CFLAGS)
2241   AC_SUBST(LIBDE265_LIBS)
2242 ])
2243
2244 dnl *** libmms ***
2245 translit(dnm, m, l) AM_CONDITIONAL(USE_LIBMMS, true)
2246 AG_GST_CHECK_FEATURE(LIBMMS, [mms protocol library], libmms, [
2247   dnl check with pkg-config first
2248   PKG_CHECK_MODULES(LIBMMS, libmms >= 0.4, HAVE_LIBMMS="yes", [
2249     HAVE_LIBMMS="no"
2250   ])
2251 ])
2252 AC_SUBST(LIBMMS_LIBS)
2253
2254
2255 dnl *** libsrtp ***
2256 translit(dnm, m, l) AM_CONDITIONAL(USE_SRTP, true)
2257 AG_GST_CHECK_FEATURE(SRTP, [srtp library], srtp, [
2258   PKG_CHECK_MODULES(SRTP, libsrtp, HAVE_SRTP="yes",
2259     AG_GST_CHECK_LIBHEADER(SRTP, srtp, srtp_init, , srtp/srtp.h, SRTP_LIBS="-lsrtp")
2260   )
2261   AC_SUBST(SRTP_LIBS)
2262   AC_SUBST(SRTP_CFLAGS)
2263 ])
2264
2265 dnl *** dtls ***
2266 translit(dnm, m, l) AM_CONDITIONAL(USE_DTLS, true)
2267 AG_GST_CHECK_FEATURE(DTLS, [DTLS plugin], dtls, [
2268   PKG_CHECK_MODULES(DTLS, [ openssl >= 1.0.1  libcrypto ], [
2269     HAVE_DTLS="yes"
2270     AC_SUBST(DTLS_CFLAGS)
2271     AC_SUBST(DTLS_LIBS)
2272   ], [
2273     HAVE_DTLS="no"
2274   ])
2275 ])
2276
2277 dnl *** linsys ***
2278 translit(dnm, m, l) AM_CONDITIONAL(USE_LINSYS, true)
2279 AG_GST_CHECK_FEATURE(LINSYS, [Linear Systems SDI plugin], linsys, [
2280   case "$host" in
2281     *-*linux*)
2282       HAVE_LINSYS=yes
2283       ;;
2284     *)
2285       HAVE_LINSYS=no
2286       ;;
2287   esac
2288 ])
2289
2290 dnl *** modplug ***
2291 translit(dnm, m, l) AM_CONDITIONAL(USE_MODPLUG, true)
2292 AG_GST_CHECK_FEATURE(MODPLUG, modplug, modplug, [
2293   if test "x$HAVE_CXX" != "xyes"; then
2294     AC_MSG_WARN([Not compiling modplug plugin as it requires a C++ compiler])
2295     HAVE_MODPLUG="no"
2296   else
2297     PKG_CHECK_MODULES(MODPLUG, libmodplug, HAVE_MODPLUG="yes", HAVE_MODPLUG="no")
2298   fi
2299   AC_SUBST(MODPLUG_CFLAGS)
2300   AC_SUBST(MODPLUG_LIBS)
2301 ])
2302
2303 dnl *** mimic ***
2304 translit(dnm, m, l) AM_CONDITIONAL(USE_MIMIC, true)
2305 AG_GST_CHECK_FEATURE(MIMIC, [libmimic library], mimic, [
2306   MIMIC_REQUIRED=1.0
2307   PKG_CHECK_MODULES(MIMIC, libmimic >= $MIMIC_REQUIRED,
2308       HAVE_MIMIC=yes, HAVE_MIMIC=no)
2309   AC_SUBST(MIMIC_CFLAGS)
2310   AC_SUBST(MIMIC_LIBS)
2311 ])
2312
2313 dnl *** mjpegtools version info ***
2314 dnl some may prefer older version (given quirks above)
2315 dnl hm, no version info seems available within mjpegtools headers
2316 dnl and API really moves along
2317 echo
2318 PKG_CHECK_EXISTS(mjpegtools >= 1.6.1.93 mjpegtools < 1.8.0, [
2319   mjpegtools_api=10601
2320 ], [
2321   PKG_CHECK_EXISTS(mjpegtools >= 1.8.0 mjpegtools < 1.9.0, [
2322     mjpegtools_api=10800
2323   ], [
2324     PKG_CHECK_EXISTS(mjpegtools >= 2.0.0, [
2325       mjpegtools_api=20000
2326     ], [
2327       PKG_CHECK_MODULES(MJPEG, mjpegtools >= 1.9.0 mjpegtools < 2.0.0, [
2328         dnl logging API changed in release candidates
2329         OLD_CFLAGS="$CFLAGS"
2330         OLD_LIBS="$LIBS"
2331         CFLAGS="$MJPEG_CFLAGS"
2332         LIBS="$LIBS $MJPEG_LIBS -lmjpegutils $LIBM $PTHREAD_LIBS"
2333         AC_CHECK_FUNC(mjpeg_loglev_t, [
2334           mjpegtools_api=10903
2335           ], [
2336           mjpegtools_api=10900
2337           ])
2338         CFLAGS="$OLD_CFLAGS"
2339         LIBS="$OLD_LIBS"
2340       ], [
2341         mjpegtools_api=0
2342       ])
2343     ])
2344   ])
2345 ])
2346 AC_DEFINE_UNQUOTED(GST_MJPEGTOOLS_API, $mjpegtools_api,
2347   [mjpegtools API evolution])
2348
2349 dnl *** mpeg2enc ***
2350 translit(dnm, m, l) AM_CONDITIONAL(USE_MPEG2ENC, true)
2351 AG_GST_CHECK_FEATURE(MPEG2ENC, [mpeg2enc], mpeg2enc, [
2352   HAVE_MPEG2ENC="no"
2353   dnl we require a c++ compiler for this one
2354   if [ test x$HAVE_CXX = xyes ]; then
2355     dnl libmpeg2enc was first included in mjpegtools-1.6.2-rc3 (1.6.1.92)
2356     dnl since many distros include mjpegtools specifically without mplex
2357     dnl and mpeg2enc, we check for mpeg2enc on its own, too.
2358     PKG_CHECK_MODULES(MPEG2ENC, mjpegtools >= 1.6.1.93, [
2359       dnl HACK because mpeg2enc 1.8.0 header files have a spurious 'include config.h'
2360       touch config.h
2361       dnl switch over to c++ to test things
2362       AC_LANG([C++])
2363       OLD_CPPFLAGS="$CPPFLAGS"
2364       dnl HACK as above
2365       CPPFLAGS_GOOD="$CPPFLAGS $MPEG2ENC_CFLAGS"
2366       CPPFLAGS="$CPPFLAGS_GOOD -I."
2367       dnl check headers
2368       mpeg2enc_headers_ok=no
2369       AC_CHECK_HEADER([mpeg2encoder.hh], [
2370         MPEG2ENC_LIBS="$MPEG2ENC_LIBS -lmpeg2encpp $LIBM $PTHREAD_LIBS"
2371         OLD_LIBS="$LIBS"
2372         LIBS="$LIBS $MPEG2ENC_LIBS"
2373         AC_MSG_CHECKING([for valid mpeg2enc objects])
2374         AC_RUN_IFELSE([AC_LANG_SOURCE([[
2375           #include <mpeg2encoder.hh>
2376           #include <mpeg2encoptions.hh>
2377
2378           int
2379           main (int   argc,
2380                 char *argv[])
2381           {
2382             MPEG2EncOptions *options = new MPEG2EncOptions ();
2383             MPEG2Encoder *encoder = new MPEG2Encoder (*options);
2384             return 0;
2385           }
2386         ]])],[
2387           AC_MSG_RESULT(yes)
2388           dnl so far so good, let's check more things:
2389           dnl mjpegtools-1.8.0 does not install the required
2390           dnl mpeg2syntaxcodes.h header by default, and a new release
2391           dnl is not in sight, so check for this oversight in case
2392           dnl distros or folks have fixed this themselves
2393           if test "$mjpegtools_api" -ge "10800"; then
2394             AC_CHECK_HEADER([mpeg2syntaxcodes.h], [
2395                 mpeg2enc_headers_ok=yes
2396               ], [
2397                 mpeg2enc_headers_ok=no
2398               ])
2399           else
2400             mpeg2enc_headers_ok=yes
2401           fi
2402           if test "x$mpeg2enc_headers_ok" = "xyes"; then
2403             HAVE_MPEG2ENC="yes"
2404           fi
2405           CPPFLAGS="$CPPFLAGS_GOOD"
2406           AC_SUBST(MPEG2ENC_CFLAGS)
2407           AC_SUBST(MPEG2ENC_LIBS)
2408         ],[
2409           AC_MSG_RESULT(no)
2410         ],[])
2411         LIBS="$OLD_LIBS"
2412       ])
2413
2414       CPPFLAGS="$OLD_CPPFLAGS"
2415       AC_LANG([C])
2416     ], [
2417       HAVE_MPEG2ENC="no"
2418     ])
2419   fi
2420 ])
2421
2422 dnl *** mpg123 ***
2423 translit(dnm, m, l) AM_CONDITIONAL(USE_MPG123, true)
2424 AG_GST_CHECK_FEATURE(MPG123, [mpg123 audio decoder], mpg123, [
2425   PKG_CHECK_MODULES(MPG123, libmpg123 >= 1.13, HAVE_MPG123="yes", HAVE_MPG123="no")
2426   AC_SUBST(MPG123_CFLAGS)
2427   AC_SUBST(MPG123_LIBS)
2428 ])
2429
2430 dnl *** mplex ***
2431 translit(dnm, m, l) AM_CONDITIONAL(USE_MPLEX, true)
2432 AG_GST_CHECK_FEATURE(MPLEX, [mplex], mplex, [
2433   HAVE_MPLEX="no"
2434   dnl we require a c++ compiler for this one
2435   if [ test x$HAVE_CXX = xyes ]; then
2436     dnl libmplex was first included in mjpegtools-1.6.2-rc4 (1.6.1.93)
2437     dnl since many distros include mjpegtools specifically without mplex
2438     dnl and mpeg2enc, we check for mplex on its own, too.
2439     dnl libmplex < 1.9rc? has fuzzy ABI, valgrind and other problems
2440     PKG_CHECK_MODULES(MPLEX, mjpegtools >= 1.9.0, [
2441       dnl HACK because mplex 2.0.0 header files have a spurious 'include config.h'
2442       touch config.h
2443       dnl switch over to c++ to test things
2444       AC_LANG([C++])
2445       OLD_CPPFLAGS="$CPPFLAGS"
2446       dnl HACK as above
2447       CPPFLAGS_GOOD="$CPPFLAGS $MPLEX_CFLAGS"
2448       CPPFLAGS="$CPPFLAGS_GOOD -I."
2449       AC_CHECK_HEADER(interact.hpp, [
2450         MPLEX_LIBS="$MPLEX_LIBS -lmplex2 $LIBM"
2451         OLD_LIBS="$LIBS"
2452         LIBS="$LIBS $MPLEX_LIBS"
2453         OLD_LDFLAGS="$LDFLAGS"
2454         LDFLAGS="$LDFLAGS $MPLEX_LDFLAGS"
2455         dnl older libmplex uses off_t SegmentSize (), which leads to fuzzy ABI;
2456         dnl don't want this here
2457         AC_MSG_CHECKING([for valid mplex objects])
2458         AC_RUN_IFELSE([AC_LANG_SOURCE([[
2459
2460 #include <interact.hpp>
2461 #include <outputstrm.hpp>
2462 #include <multiplexor.hpp>
2463 int
2464 main (int   argc,
2465       char *argv[])
2466 {
2467   class TestOutputStream : public OutputStream {
2468   public:
2469     TestOutputStream () : OutputStream () { }
2470     void Write (uint8_t *a, unsigned int b) { }
2471     void NextSegment () { }
2472     uint64_t SegmentSize () { }
2473     void Close () { }
2474     int Open () { }
2475 };
2476   MultiplexJob *job = new MultiplexJob ();
2477   vector<IBitStream *> inputs;
2478   job->SetupInputStreams (inputs);
2479   TestOutputStream *out = new TestOutputStream ();
2480   Multiplexor *mux = new Multiplexor(*job, *out, NULL);
2481   return 0;
2482 }
2483         ]])],[
2484           HAVE_MPLEX="yes"
2485           CPPFLAGS="$CPPFLAGS_GOOD"
2486           AC_SUBST(MPLEX_CFLAGS)
2487           AC_SUBST(MPLEX_LIBS)
2488           AC_SUBST(MPLEX_LDFLAGS)
2489           AC_MSG_RESULT(yes)
2490         ],[AC_MSG_RESULT(no)],[])
2491         LIBS="$OLD_LIBS"
2492         LDFLAGS="$OLD_LDFLAGS"
2493       ])
2494       CPPFLAGS="$OLD_CPPFLAGS"
2495       AC_LANG([C])
2496     ], HAVE_MPLEX="no")
2497   fi
2498 ])
2499
2500 dnl *** musepack ***
2501 translit(dnm, m, l) AM_CONDITIONAL(USE_MUSEPACK, true)
2502 AG_GST_CHECK_FEATURE(MUSEPACK, [musepackdec], musepack, [
2503   AC_CHECK_HEADER([mpc/mpcdec.h], [
2504     HAVE_MUSEPACK="yes"
2505     MUSEPACK_LIBS="-lmpcdec"
2506     AC_SUBST(MUSEPACK_LIBS)
2507     ], [AC_CHECK_HEADER([mpcdec/mpcdec.h], [
2508       HAVE_MUSEPACK="yes"
2509       MUSEPACK_LIBS="-lmpcdec"
2510       AC_DEFINE(MPC_IS_OLD_API, 1, [Define if the old MusePack API is used])
2511       AC_SUBST(MUSEPACK_LIBS)
2512     ], [HAVE_MUSEPACK="no"])])
2513 ])
2514
2515 dnl *** nas ***
2516 translit(dnm, m, l) AM_CONDITIONAL(USE_NAS, true)
2517 AG_GST_CHECK_FEATURE(NAS, [nas plug-in], nassink, [
2518   HAVE_NAS="no"
2519   if test "x$HAVE_X" = "xyes"; then
2520     save_cppflags=$CFLAGS
2521     CPPFLAGS="$CPPFLAGS $X_CFLAGS"
2522     AG_GST_CHECK_LIBHEADER(NAS, audio, AuOpenServer, $X_LIBS, audio/audiolib.h,
2523       NAS_LIBS="$X_LIBS -laudio" NAS_CFLAGS="$X_CFLAGS")
2524     CPPFLAGS="$save_cppflags"
2525   fi
2526   AC_SUBST(NAS_CFLAGS)
2527   AC_SUBST(NAS_LIBS)
2528 ])
2529
2530 dnl *** neon ***
2531 translit(dnm, m, l) AM_CONDITIONAL(USE_NEON, true)
2532 AG_GST_CHECK_FEATURE(NEON, [neon http client plugins], neonhttpsrc, [
2533   PKG_CHECK_MODULES(NEON, neon >= 0.27.0  neon <= 0.30.99, HAVE_NEON="yes", [
2534     HAVE_NEON="no"
2535   ])
2536   AC_SUBST(NEON_CFLAGS)
2537   AC_SUBST(NEON_LIBS)
2538 ])
2539
2540 dnl *** ofa ***
2541 translit(dnm, m, l) AM_CONDITIONAL(USE_OFA, true)
2542 AG_GST_CHECK_FEATURE(OFA, [ofa plugins], ofa, [
2543   PKG_CHECK_MODULES(OFA, libofa >= 0.9.3, HAVE_OFA="yes", [
2544     HAVE_OFA="no"
2545   ])
2546   AC_SUBST(OFA_CFLAGS)
2547   AC_SUBST(OFA_LIBS)
2548 ])
2549
2550 dnl *** OpenAL ***
2551 translit(dnm, m, l) AM_CONDITIONAL(USE_OPENAL, true)
2552 AG_GST_CHECK_FEATURE(OPENAL, [OpenAL plugin], openal, [
2553   PKG_CHECK_MODULES(OPENAL, openal >= 1.14, HAVE_OPENAL="yes", [
2554     HAVE_OPENAL="no"
2555   ])
2556   AC_SUBST(OPENAL_CFLAGS)
2557   AC_SUBST(OPENAL_LIBS)
2558 ])
2559
2560 dnl *** opencv ***
2561 translit(dnm, m, l) AM_CONDITIONAL(USE_OPENCV, true)
2562 AG_GST_CHECK_FEATURE(OPENCV, [opencv plugins], opencv, [
2563   dnl we specify a max. version too because we set CV_NO_BACKWARD_COMPATIBILITY
2564   dnl and don't want the build to break when a new opencv version comes out.
2565   dnl Need to adjust this upwards once we know that our code compiles fine with
2566   dnl a new version and the no-backward-compatibility define. (There doesn't
2567   dnl seem to be a switch to suppress the warnings the cvcompat.h header
2568   dnl causes.)
2569   PKG_CHECK_MODULES(OPENCV, opencv >= 2.3.0 opencv < 2.5.0 , [
2570     AC_PROG_CXX
2571     AC_LANG([C++])
2572     OLD_CPPFLAGS=$CPPFLAGS
2573     CPPFLAGS=$OPENCV_CFLAGS
2574     something_not_found=no
2575     AC_CHECK_HEADERS([opencv2/contrib/contrib.hpp \
2576                       opencv2/core/core_c.h \
2577                       opencv2/core/types_c.h \
2578                       opencv2/core/version.hpp \
2579                       opencv2/highgui/highgui_c.h \
2580                       opencv2/imgproc/imgproc.hpp \
2581                       opencv2/imgproc/imgproc_c.h \
2582                       opencv2/legacy/compat.hpp \
2583                       opencv2/legacy/legacy.hpp \
2584                       opencv2/objdetect/objdetect.hpp \
2585                       opencv2/video/background_segm.hpp], [], [something_not_found=yes])
2586     CPPFLAGS=$OLD_CPPFLAGS
2587     AC_LANG([C])
2588
2589     if test $something_not_found = "yes"; then
2590       AC_MSG_RESULT([not all opencv2 headers were found])
2591       HAVE_OPENCV="no"
2592     else
2593       HAVE_OPENCV="yes"
2594     fi
2595   ], [
2596     HAVE_OPENCV="no"
2597   ])
2598   OPENCV_PREFIX="`$PKG_CONFIG --variable=prefix opencv`"
2599   AC_DEFINE_UNQUOTED(OPENCV_PREFIX, "$OPENCV_PREFIX", [opencv install prefix])
2600   AC_SUBST(OPENCV_PREFIX)
2601   AC_SUBST(OPENCV_CFLAGS)
2602   AC_SUBST(OPENCV_LIBS)
2603   dnl the OpenCV prefix is used at runtime for some object properties, and also
2604   dnl used here to detect which directory is the correct one. For the second
2605   dnl case, make sure the right sysroot is used, ensuring correct behavior
2606   dnl during cross compilation.
2607   if test -d "$PKG_CONFIG_SYSROOT_DIR/$OPENCV_PREFIX/share/opencv/"; then
2608     AC_DEFINE_UNQUOTED(OPENCV_PATH_NAME, ["opencv"], [OpenCV path name])
2609   else
2610     AC_DEFINE_UNQUOTED(OPENCV_PATH_NAME, ["OpenCV"], [OpenCV path name])
2611   fi
2612 ])
2613
2614 dnl *** OpenEXR ***
2615 translit(dnm, m, l) AM_CONDITIONAL(USE_OPENEXR, true)
2616 AG_GST_CHECK_FEATURE(OPENEXR, [openexr library], openexr, [
2617   AG_GST_PKG_CHECK_MODULES(OPENEXR, OpenEXR)
2618 ])
2619
2620 dnl *** openh264 ***
2621 translit(dnm, m, l) AM_CONDITIONAL(USE_OPENH264, true)
2622 AG_GST_CHECK_FEATURE(OPENH264, [openh264 library], openh264, [
2623   AG_GST_PKG_CHECK_MODULES(OPENH264, openh264 >= 1.3.0)
2624 ])
2625
2626 dnl *** OpenJPEG ***
2627 translit(dnm, m, l) AM_CONDITIONAL(USE_OPENJPEG, true)
2628 AG_GST_CHECK_FEATURE(OPENJPEG, [openjpeg library], openjpeg, [
2629   HAVE_OPENJPEG="no"
2630
2631   save_LIBS="$LIBS"
2632   save_CFLAGS="$CFLAGS"
2633   OPENJPEG_LIBS="-lopenjp2"
2634   LIBS="$LIBS $OPENJPEG_LIBS"
2635   CFLAGS="$CFLAGS $OPENJPEG_CFLAGS"
2636   AC_LINK_IFELSE([
2637     AC_LANG_PROGRAM([#include <openjpeg-2.0/openjpeg.h>],
2638                     [return (int) *opj_version ();])
2639                  ], [HAVE_OPENJPEG=yes], [HAVE_OPENJPEG=no])
2640   LIBS="$save_LIBS"
2641   CFLAGS="$save_CFLAGS"
2642
2643   if test x"$HAVE_OPENJPEG" = x"no"; then
2644     OPENJPEG_LIBS=""
2645     PKG_CHECK_MODULES(OPENJPEG, libopenjpeg1,
2646       HAVE_OPENJPEG="yes",
2647       AG_GST_CHECK_LIBHEADER(OPENJPEG, openjpeg, opj_version, , openjpeg.h, OPENJPEG_LIBS="-lopenjpeg")
2648     )
2649     if test x"$HAVE_OPENJPEG" = x"yes"; then
2650       AC_DEFINE([HAVE_OPENJPEG_1], 1, [Define if OpenJPEG 1 is used])
2651     fi
2652   fi
2653   AC_SUBST(OPENJPEG_CFLAGS)
2654   AC_SUBST(OPENJPEG_LIBS)
2655 ])
2656
2657 dnl *** OpenNI2 ***
2658 translit(dnm, m, l) AM_CONDITIONAL(USE_OPENNI2, true)
2659 AG_GST_CHECK_FEATURE(OPENNI2, [openni2 library], openni2, [
2660   PKG_CHECK_MODULES(OPENNI2, libopenni2 >= 0.26, HAVE_OPENNI2="yes", [ HAVE_OPENNI2="no" ] )
2661   AC_SUBST(OPENNI2_CFLAGS)
2662   AC_SUBST(OPENNI2_LIBS)
2663 ])
2664
2665 dnl *** Opus ***
2666 translit(dnm, m, l) AM_CONDITIONAL(USE_OPUS, true)
2667 AG_GST_CHECK_FEATURE(OPUS, [opus], opus, [
2668   PKG_CHECK_MODULES(OPUS, opus >= 0.9.4, [
2669           AC_DEFINE([HAVE_OPUS], 1, [Define if Opus >= 0.9.4 is installed])
2670           HAVE_OPUS="yes"
2671   ], [
2672           HAVE_OPUS="no"
2673   ])
2674   AC_SUBST(OPUS_CFLAGS)
2675   AC_SUBST(OPUS_LIBS)
2676 ])
2677
2678 dnl *** pvr ***
2679 translit(dnm, m, l) AM_CONDITIONAL(USE_PVR, true)
2680 AG_GST_CHECK_FEATURE(PVR, [pvrvideosink], pvr, [
2681   PKG_CHECK_MODULES([PVR], [libtimemmgr], HAVE_PVR=yes, HAVE_PVR=no)
2682   AC_SUBST(PVR_CFLAGS)
2683   AC_SUBST(PVR_LIBS)
2684 ])
2685
2686  AC_ARG_WITH([pvr-external-headers],
2687               AS_HELP_STRING([--with-pvr-external-headers],[Use system installed PVR2D headers]),
2688               [AS_IF([test "x$with_pvr_external_headers" = "xno"],
2689                      [PVR_CFLAGS="$PVR_CFLAGS -I\$(srcdir)/pvr_includes"])],
2690               [PVR_CFLAGS="$PVR_CFLAGS -I\$(srcdir)/pvr_includes"])
2691
2692 dnl *** rsvg ***
2693 translit(dnm, m, l) AM_CONDITIONAL(USE_RSVG, true)
2694 AG_GST_CHECK_FEATURE(RSVG, [rsvg decoder], rsvg, [
2695   PKG_CHECK_MODULES(RSVG, librsvg-2.0 >= 2.36 cairo, [
2696     HAVE_RSVG="yes"
2697     PKG_CHECK_MODULES(RSVG_2_36_2, librsvg-2.0 >= 2.36.2, HAVE_RSVG_2_36_2="yes", HAVE_RSVG_2_36_2="no")
2698     if test "x$HAVE_RSVG_2_36_2" = "xyes"; then
2699       AC_DEFINE(HAVE_RSVG_2_36_2, [1], [Have RSVG 2.36.2 or newer])
2700     fi
2701   ], [
2702     HAVE_RSVG="no"
2703   ])
2704   AC_SUBST(RSVG_CFLAGS)
2705   AC_SUBST(RSVG_LIBS)
2706 ])
2707
2708 dnl *** gl ***
2709 translit(dnm, m, l) AM_CONDITIONAL(USE_GL, true)
2710 AG_GST_CHECK_FEATURE(GL, [gl elements], gl, [
2711   HAVE_GL="no"
2712
2713   if test x"$USE_OPENGL" = x"yes" -o x"$USE_GLES2" = x"yes"; then
2714     HAVE_GL="yes"
2715   fi
2716 ])
2717
2718 dnl *** gtk+ ***
2719 HAVE_GTK3_GL="no"
2720 translit(dnm, m, l) AM_CONDITIONAL(USE_GTK3, true)
2721 AG_GST_CHECK_FEATURE(GTK3, [Gtk+ elements], gtk, [
2722   PKG_CHECK_MODULES(GTK3, gtk+-3.0, [
2723     AC_DEFINE([HAVE_GTK3], 1, [Define if Gtk+ 3.0 is installed])
2724     HAVE_GTK3="yes"
2725   ], [
2726     HAVE_GTK3="no"
2727   ])
2728   PKG_CHECK_MODULES(GTK3_GL, gtk+-3.0 >= 3.15.0, [
2729     GDK_WINDOWING="no"
2730     if test "x$GST_GL_HAVE_WINDOW_X11" = "x1" -a "x$GST_GL_HAVE_PLATFORM_GLX" = "x1"; then
2731       PKG_CHECK_MODULES(GTK3_X11, gtk+-x11-3.0, [
2732         GTK3_CFLAGS="$GTK3_CFLAGS $GTK3_X11_CFLAGS"
2733         GTK3_LIBS="$GTK3_LIBS $GTK3_X11_LIBS"
2734         GDK_WINDOWING="yes"
2735       ], [AC_MSG_NOTICE([Could not find Gtk X11 integration])])
2736     fi
2737     if test "x$GST_GL_HAVE_WINDOW_WAYLAND" = "x1" -a "x$GST_GL_HAVE_PLATFORM_EGL" = "x1"; then
2738       PKG_CHECK_MODULES(GTK3_WAYLAND, gtk+-wayland-3.0, [
2739         GTK3_CFLAGS="$GTK3_CFLAGS $GTK3_WAYLAND_CFLAGS"
2740         GTK3_LIBS="$GTK3_LIBS $GTK3_WAYLAND_LIBS"
2741         GDK_WINDOWING="yes"
2742       ], [AC_MSG_NOTICE([Could not find Gtk Wayland integration])])
2743     fi
2744     if test "x$GDK_WINDOWING" = "xyes"; then
2745       AC_DEFINE([HAVE_GTK3_GL], 1, [Define if Gtk+ 3.0 GL is installed])
2746       HAVE_GTK3_GL="yes"
2747     fi
2748   ], [
2749       HAVE_GTK3_GL="no"
2750   ])
2751 ])
2752 AM_CONDITIONAL(USE_GTK3_GL, test "x$HAVE_GTK3_GL" = "xyes")
2753
2754 dnl *** Qt ***
2755 translit(dnm, m, l) AM_CONDITIONAL(USE_QT, true)
2756 AG_GST_CHECK_FEATURE(QT, [Qt elements], qt, [
2757   PKG_CHECK_MODULES(QT, Qt5Core Qt5Gui Qt5Qml Qt5Quick >= 5.4.0, [
2758       QT_PATH=`$PKG_CONFIG --variable=exec_prefix Qt5Core`
2759       QT_HOST_PATH=`$PKG_CONFIG --variable=host_bins Qt5Core`
2760       AC_PATH_PROGS(MOC, [moc-qt5 moc], moc, ["${QT_HOST_PATH}" "${QT_PATH}/bin"])
2761       AC_PATH_PROGS(RCC, [rcc-qt5 rcc], rcc, ["${QT_HOST_PATH}" "${QT_PATH}/bin"])
2762       AC_PATH_PROGS(UIC, [uic-qt5 uic], uic, ["${QT_HOST_PATH}" "${QT_PATH}/bin"])
2763       if test "x$MOC" = "x" || test "x$UIC" = "x" || test "x$RCC" = "x"; then
2764         AC_MSG_WARN([One of the required qt build programs was not found])
2765         HAVE_QT="no"
2766       else
2767         HAVE_QT="yes"
2768         HAVE_QT_WINDOWING="no"
2769         if test "x$GST_GL_HAVE_WINDOW_X11" = "x1" -a "x$GST_GL_HAVE_PLATFORM_GLX" = "x1"; then
2770           PKG_CHECK_MODULES(QT_X11, Qt5X11Extras, [
2771             AC_DEFINE([HAVE_QT_X11], [], [Define if Qt X11 integration is installed])
2772             QT_CFLAGS="$QT_CFLAGS $QT_X11_CFLAGS"
2773             QT_LIBS="$QT_LIBS $QT_X11_LIBS"
2774             HAVE_QT_WINDOWING="yes"
2775           ], [AC_MSG_NOTICE([Could not find Qt X11 integration])])
2776         fi
2777         if test "x$GST_GL_HAVE_WINDOW_WAYLAND" = "x1" -a "x$GST_GL_HAVE_PLATFORM_EGL" = "x1"; then
2778           PKG_CHECK_MODULES(QT_WAYLAND, Qt5WaylandClient, [
2779             AC_DEFINE([HAVE_QT_WAYLAND], [],
2780                 [Define if Qt Wayland integration is installed])
2781             QT_CFLAGS="$QT_CFLAGS $QT_WAYLAND_CFLAGS"
2782             QT_LIBS="$QT_LIBS $QT_WAYLAND_LIBS"
2783             HAVE_QT_WINDOWING="yes"
2784           ], [AC_MSG_NOTICE([Could not find Qt Wayland integration])])
2785         fi
2786         if test "x$GST_GL_HAVE_WINDOW_ANDROID" = "x1" -a "x$GST_GL_HAVE_PLATFORM_EGL" = "x1"; then
2787           PKG_CHECK_MODULES(QT_ANDROID, Qt5AndroidExtras, [
2788             # c++ on android requires a standard library and there are multiple
2789             # choices.  cerbero provides a pkg-config file the describes a choice
2790             # so try to use that.  Outside cerbero one has to pass these flags
2791             # manually for the library one is using
2792             PKG_CHECK_MODULES(GNUSTL, gnustl, [
2793               QT_CFLAGS="$QT_CFLAGS $GNUSTL_CFLAGS"
2794               QT_LIBS="$QT_CFLAGS $GNUSTL_LIBS"
2795               ], [
2796               AC_MSG_NOTICE([Could not find Standard C++ library])])
2797
2798             AC_DEFINE([HAVE_QT_ANDROID], [],
2799                 [Define if Qt Android integration is installed])
2800             QT_CFLAGS="$QT_CFLAGS $QT_ANDROID_CFLAGS"
2801             QT_LIBS="$QT_LIBS $QT_ANDROID_LIBS"
2802             HAVE_QT_WINDOWING="yes"
2803           ], [AC_MSG_NOTICE([Could not find Qt Android integration])])
2804         fi
2805         if test "x$GST_GL_HAVE_WINDOW_COCOA" = "x1" -a "x$GST_GL_HAVE_PLATFORM_CGL" = "x1"; then
2806           PKG_CHECK_MODULES(QT_MAC, Qt5MacExtras, [
2807             AC_DEFINE([HAVE_QT_MAC], [],
2808                 [Define if Qt Mac integration is installed])
2809             QT_LIBDIR=`$PKG_CONFIG --variable=libdir Qt5Core`
2810             QT_CFLAGS="$QT_CFLAGS $QT_MAC_CFLAGS -F$QT_LIBDIR -framework QtCore -framework QtGui -framework QtQuick -framework QtQml -framework QtMacExtras"
2811             QT_LIBS="$QT_LIBS $QT_MAC_LIBS"
2812             HAVE_QT_WINDOWING="yes"
2813           ], [AC_MSG_NOTICE([Could not find Qt Mac integration])])
2814         fi
2815         if test "x$GST_GL_HAVE_WINDOW_EAGL" = "x1" -a "x$GST_GL_HAVE_PLATFORM_EAGL" = "x1"; then
2816           if test "x$HAVE_IOS" = "xyes"; then
2817             # iOS doesn't have its own extras package so if we have the core
2818             # modules we are good to go
2819             AC_DEFINE([HAVE_QT_IOS], [],
2820                 [Define if Qt iOS integration is installed])
2821             HAVE_QT_WINDOWING="yes"
2822           fi
2823         fi
2824         if test "x$HAVE_QT_WINDOWING" = "xno"; then
2825           AC_MSG_WARN([Could not find any Qt Windowing integration])
2826           HAVE_QT="no"
2827         fi
2828         AC_SUBST([QT_CFLAGS])
2829         AC_SUBST([QT_LIBS])
2830       fi
2831   ], [
2832       HAVE_QT="no"
2833   ])
2834 ])
2835
2836 dnl *** libvisual ***
2837 translit(dnm, m, l) AM_CONDITIONAL(USE_LIBVISUAL, true)
2838 AG_GST_CHECK_FEATURE(LIBVISUAL, [libvisual visualization library], libvisual, [
2839   AG_GST_PKG_CHECK_MODULES(LIBVISUAL, libvisual-0.4 >= 0.4.0)
2840   if test x$HAVE_LIBVISUAL = xyes; then
2841     LIBVIS_PLUGINSDIR="`$PKG_CONFIG --variable=pluginsbasedir libvisual-0.4`"
2842   fi
2843   AC_MSG_NOTICE([libvisual pluginsdir: $LIBVIS_PLUGINSDIR])
2844   if test x$LIBVIS_PLUGINSDIR != x; then
2845     AC_DEFINE_UNQUOTED(LIBVISUAL_PLUGINSBASEDIR,
2846         "$LIBVIS_PLUGINSDIR",
2847         [directory in which the detected libvisual's plugins are located])
2848   fi
2849 ])
2850
2851 dnl *** timidity ***
2852 translit(dnm, m, l) AM_CONDITIONAL(USE_TIMIDITY, true)
2853 AG_GST_CHECK_FEATURE(TIMIDITY, [timidity midi soft synth plugin], timidity, [
2854   PKG_CHECK_MODULES(TIMIDITY, libtimidity, [
2855     HAVE_TIMIDITY="yes",
2856         AC_MSG_CHECKING([for timidity.cfg])
2857         timidity_cfg=""
2858         if test -r /etc/timidity.cfg; then
2859           timidity_cfg=/etc/timidity.cfg
2860         elif test -r /etc/timidity/timidity.cfg; then
2861           timidity_cfg=/etc/timidity/timidity.cfg
2862         elif test -r /usr/share/timidity/timidity.cfg; then
2863           timidity_cfg=/usr/share/timidity/timidity.cfg
2864         elif test -r /usr/local/share/timidity/timidity.cfg; then
2865           timidity_cfg=/usr/local/share/timidity/timidity.cfg
2866         fi
2867         if test "x$timidity_cfg" != "x"; then
2868           AC_MSG_RESULT($timidity_cfg)
2869       AC_DEFINE_UNQUOTED(TIMIDITY_CFG, "$timidity_cfg", [Define location of timidity.cfg])
2870         else
2871           AC_MSG_RESULT([not found])
2872         fi
2873   ], [
2874     HAVE_TIMIDITY="no"
2875   ])
2876   AC_SUBST(TIMIDITY_CFLAGS)
2877   AC_SUBST(TIMIDITY_LIBS)
2878 ])
2879
2880 dnl *** teletextdec ***
2881 translit(dnm, m, l) AM_CONDITIONAL(USE_TELETEXTDEC, true)
2882 AG_GST_CHECK_FEATURE(TELETEXTDEC, [Teletext decoder], teletextdec, [
2883   AG_GST_PKG_CHECK_MODULES(TELETEXTDEC, zvbi-0.2)
2884  ])
2885
2886 dnl *** wildmidi ***
2887 translit(dnm, m, l) AM_CONDITIONAL(USE_WILDMIDI, true)
2888 AG_GST_CHECK_FEATURE(WILDMIDI, [wildmidi midi soft synth plugin], wildmidi, [
2889   AG_GST_CHECK_LIBHEADER(WILDMIDI, WildMidi,
2890                          WildMidi_Init, ,
2891                          wildmidi_lib.h,
2892                          WILDMIDI_LIBS="-lWildMidi")
2893   AC_CHECK_LIB(WildMidi, WildMidi_LoadSamples, AC_DEFINE(HAVE_WILDMIDI_0_2_2, [1], [Have WildMidi 0.2.2 or earlier library]))
2894
2895   if test "x$HAVE_WILDMIDI" = "xyes"; then
2896          WILDMIDI_CFLAGS=
2897          WILDMIDI_LIBS=-lWildMidi
2898          AC_MSG_NOTICE(compiling gstWildMidi)
2899   else
2900          WILDMIDI_CFLAGS=
2901          WILDMIDI_LIBS=
2902          AC_MSG_WARN(no WildMidi library found (libWildMidi))
2903   fi
2904   AC_SUBST(WILDMIDI_CFLAGS)
2905   AC_SUBST(WILDMIDI_LIBS)
2906 ])
2907
2908 dnl *** SDL ***
2909 translit(dnm, m, l) AM_CONDITIONAL(USE_SDL, true)
2910 AG_GST_CHECK_FEATURE(SDL, [SDL plug-in], sdlvideosink sdlaudiosink, [
2911     AM_PATH_SDL(, HAVE_SDL=yes, HAVE_SDL=no)
2912 ])
2913
2914 dnl **** Smooth Streaming ****
2915 translit(dnm, m, l) AM_CONDITIONAL(USE_SMOOTHSTREAMING, true)
2916 AG_GST_CHECK_FEATURE(SMOOTHSTREAMING, [Smooth Streaming plug-in], smoothstreaming, [
2917   PKG_CHECK_MODULES(LIBXML2, libxml-2.0 >= 2.4,
2918     [HAVE_LIBXML2="yes"
2919      HAVE_SMOOTHSTREAMING="yes"],
2920     [HAVE_LIBXML2="no"
2921      HAVE_SMOOTHSTREAMING="no"])
2922   AC_SUBST(LIBXML2_CFLAGS)
2923   AC_SUBST(LIBXML2_LIBS)
2924 ])
2925
2926 dnl *** sndfile ***
2927 translit(dnm, m, l) AM_CONDITIONAL(USE_SNDFILE, true)
2928 AG_GST_CHECK_FEATURE(SNDFILE, [sndfile plug-in], sfdec sfenc, [
2929   PKG_CHECK_MODULES(SNDFILE, sndfile >= 1.0.16, HAVE_SNDFILE="yes", HAVE_SNDFILE="no")
2930   AC_SUBST(SNDFILE_CFLAGS)
2931   AC_SUBST(SNDFILE_LIBS)
2932 ])
2933
2934 dnl *** soundtouch ***
2935 translit(dnm, m, l) AM_CONDITIONAL(USE_SOUNDTOUCH, true)
2936 AG_GST_CHECK_FEATURE(SOUNDTOUCH, [soundtouch plug-in], soundtouch, [
2937   dnl We only need -lBPM on soundtouch < 1.4
2938   dnl We check for libSoundTouch since Debian used it before upstream
2939   dnl added a pkgconfig file.
2940   HAVE_SOUNDTOUCH_1_4=yes
2941   PKG_CHECK_MODULES(SOUNDTOUCH, soundtouch,
2942     [HAVE_SOUNDTOUCH=yes],
2943     [PKG_CHECK_MODULES(SOUNDTOUCH, soundtouch-1.4,
2944       [HAVE_SOUNDTOUCH=yes],
2945       [PKG_CHECK_MODULES(SOUNDTOUCH, soundtouch-1.0,
2946         [HAVE_SOUNDTOUCH=yes
2947           HAVE_SOUNDTOUCH_1_4=no
2948           SOUNDTOUCH_LIBS="$SOUNDTOUCH_LIBS -lBPM"],
2949         [PKG_CHECK_MODULES(SOUNDTOUCH, libSoundTouch >= 1.4,
2950           [HAVE_SOUNDTOUCH=yes],
2951           [PKG_CHECK_MODULES(SOUNDTOUCH, libSoundTouch,
2952             [HAVE_SOUNDTOUCH=yes
2953               HAVE_SOUNDTOUCH_1_4=no
2954               SOUNDTOUCH_LIBS="$SOUNDTOUCH_LIBS -lBPM"],
2955             HAVE_SOUNDTOUCH=no)])])])])
2956   AC_SUBST(SOUNDTOUCH_CFLAGS)
2957   AC_SUBST(SOUNDTOUCH_LIBS)
2958   if test "x$HAVE_CXX" != "xyes"; then
2959     USE_SOUNDTOUCH=false
2960     AC_MSG_NOTICE([Not building soundtouch plugin: no C++ compiler found])
2961   fi
2962   if test "x$HAVE_SOUNDTOUCH" = "xyes" -a "x$HAVE_SOUNDTOUCH_1_4" = "xyes"; then
2963      AC_DEFINE([HAVE_SOUNDTOUCH_1_4], [1],
2964          [Defined if the available libSoundTouch is >= 1.4])
2965   fi
2966 ])
2967
2968 dnl *** spc ***
2969 translit(dnm, m, l) AM_CONDITIONAL(USE_SPC, true)
2970 AG_GST_CHECK_FEATURE(SPC, [spc decoder], spc, [
2971   AC_CHECK_HEADER(openspc.h, [
2972     AC_CHECK_LIB(openspc, OSPC_Init, [
2973       SPC_LIBS="-lopenspc"
2974       AC_SUBST(SPC_LIBS)
2975       HAVE_SPC=yes
2976     ], [
2977       HAVE_SPC=no
2978     ])
2979   ], [
2980     HAVE_SPC=no
2981   ])
2982 ])
2983
2984 dnl *** gme ***
2985 translit(dnm, m, l) AM_CONDITIONAL(USE_GME, true)
2986 AG_GST_CHECK_FEATURE(GME, [gme decoder], gme, [
2987   AC_CHECK_HEADER(gme/gme.h, [
2988     AC_CHECK_LIB(gme, gme_new_emu, [
2989       GME_LIBS="-lgme"
2990       AC_SUBST(GME_LIBS)
2991       HAVE_GME=yes
2992     ], [
2993       HAVE_GME=no
2994     ])
2995   ], [
2996     HAVE_GME=no
2997   ])
2998
2999   if test "x$HAVE_GME" = "xyes"; then
3000     AC_CHECK_LIB(gme, gme_enable_accuracy, [
3001       AC_DEFINE(HAVE_LIBGME_ACCURACY, 1, [Define if gme 0.5.6 or newer is available])
3002       ])
3003   fi
3004 ])
3005
3006 dnl *** XVID ***
3007 translit(dnm, m, l) AM_CONDITIONAL(USE_XVID, true)
3008 AG_GST_CHECK_FEATURE(XVID, [xvid plugins], xvid, [
3009   HAVE_XVID=no
3010   AC_CHECK_HEADER(xvid.h, [
3011     OLD_LIBS="$LIBS"
3012     LIBS="$PTHREAD_LIBS $LIBM"
3013     AC_CHECK_LIB(xvidcore, xvid_encore, [
3014       AC_CHECK_LIB(xvidcore, xvid_decore, [
3015         AC_CHECK_LIB(xvidcore, xvid_global, [
3016           AC_MSG_CHECKING([for up-to-date XviD API version])
3017           AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <xvid.h>]], [[
3018               #if XVID_API_MAJOR(XVID_API) != 4
3019               #error "Incompatible XviD API version"
3020               #endif
3021               #if XVID_API_MAJOR(XVID_API) == 4 && XVID_API_MINOR(XVID_API) < 3
3022               #error "Incompatible XviD API version"
3023               #endif
3024           ]])],[ AC_MSG_RESULT(yes)
3025             XVID_LIBS="-lxvidcore $LIBM"
3026             AC_SUBST(XVID_LIBS)
3027             HAVE_XVID=yes
3028           ],[AC_MSG_RESULT(no) ])
3029         ], )
3030       ], )
3031     ], )
3032     LIBS="$OLD_LIBS"
3033   ], )
3034 ])
3035
3036 dnl *** dvb ***
3037 translit(dnm, m, l) AM_CONDITIONAL(USE_DVB, true)
3038 AG_GST_CHECK_FEATURE(DVB, [DVB Source], dvb, [
3039   AC_MSG_CHECKING([Checking for up to date dvb installation])
3040   AC_CHECK_HEADER(linux/dvb/version.h, [
3041     AC_MSG_CHECKING([for up-to-date dvb API])
3042     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <linux/dvb/version.h>]], [[
3043         #if DVB_API_VERSION < 5 || (DVB_API_VERSION == 5 && DVB_API_VERSION_MINOR <= 4)
3044         #error "Incompatible dvb API"
3045         #endif
3046     ]])], [ AC_MSG_RESULT(yes)
3047       HAVE_DVB="yes"
3048     ], [ AC_MSG_RESULT(no)
3049       HAVE_DVB="no"
3050     ])
3051   ], [HAVE_DVB="no"])
3052 ])
3053
3054 dnl *** wininet ***
3055 translit(dnm, m, l) AM_CONDITIONAL(USE_WININET, true)
3056 AG_GST_CHECK_FEATURE(WININET, [Windows internet library], wininet, [
3057   AC_MSG_CHECKING([Checking for windows internet support])
3058   AC_CHECK_HEADERS([windows.h wininet.h],
3059       [HAVE_WININET="yes"], [HAVE_WININET="no"],
3060       [AC_INCLUDES_DEFAULT
3061 #include <windows.h>])
3062 ])
3063
3064 dnl *** acm ***
3065 translit(dnm, m, l) AM_CONDITIONAL(USE_ACM, true)
3066 AG_GST_CHECK_FEATURE(ACM, [Windows ACM library], acm, [
3067   AC_MSG_CHECKING([Checking for ACM support])
3068   AC_CHECK_HEADERS([windows.h msacm.h],
3069       [HAVE_ACM="yes"
3070        AC_SUBST(ACMENC_CFLAGS)
3071        AC_SUBST(ACMMP3DEC_CFLAGS)
3072       ], [HAVE_ACM="no"],
3073       [AC_INCLUDES_DEFAULT
3074 #include <windows.h>])
3075 ])
3076
3077 dnl *** vdpau ***
3078 translit(dnm, m, l) AM_CONDITIONAL(USE_VDPAU, true)
3079 AG_GST_CHECK_FEATURE(VDPAU, [VDPAU], vdpau, [
3080   VDPAU_CFLAGS=
3081   VDPAU_LIBS=-lvdpau
3082   HAVE_VDPAU=no
3083
3084   PKG_CHECK_MODULES(VDPAU, vdpau, [HAVE_VDPAU="yes"],
3085   [
3086     if test "$HAVE_VDPAU" = "no"; then
3087       saved_CPPFLAGS="$CPPFLAGS"
3088       AC_CHECK_HEADER([vdpau/vdpau.h], [HAVE_VDPAU_H=yes])
3089
3090       if test -z "$HAVE_VDPAU_H"; then
3091         dnl Didn't find VDPAU header straight away.
3092         dnl Try /usr/include/nvidia. Need to clear caching vars first
3093         AC_MSG_NOTICE([VDPAU header not in standard path. Checking /usr/include/nvidia])
3094         unset ac_cv_header_vdpau_vdpau_h
3095         unset ac_cv_header_vdpau_vdpau_x11_h
3096         VDPAU_CFLAGS="-I/usr/include/nvidia"
3097         VDPAU_LIBS="-L/usr/lib/nvidia -lvdpau"
3098         CPPFLAGS="$VDPAU_CFLAGS $saved_CPPFLAGS"
3099         AC_CHECK_HEADER([vdpau/vdpau.h], [HAVE_VDPAU_H=yes])
3100       fi
3101
3102       AC_CHECK_HEADER([vdpau/vdpau_x11.h], [HAVE_VDPAU_X11_H=yes])
3103
3104       if test "x$HAVE_VDPAU_H" = "xyes" -a "x$HAVE_VDPAU_X11_H" = "xyes"; then
3105         dnl Found the headers - look for the lib
3106         AC_MSG_NOTICE([VDPAU headers found. Checking libraries])
3107         saved_LIBS="$LIBS"
3108         LIBS="$VDPAU_LIBS $saved_LIBS"
3109         AC_CHECK_LIB(vdpau,vdp_device_create_x11,[HAVE_VDPAU="yes"])
3110         LIBS="$saved_LIBS"
3111       fi
3112     fi
3113   ])
3114
3115   if test "$HAVE_VDPAU" = "yes"; then
3116     AC_MSG_NOTICE([Found up to date VDPAU installation])
3117     AC_SUBST(VDPAU_CFLAGS)
3118     AC_SUBST(VDPAU_LIBS)
3119   fi
3120 ])
3121
3122 dnl *** sbc ***
3123 translit(dnm, m, l) AM_CONDITIONAL(USE_SBC, true)
3124 AG_GST_CHECK_FEATURE(SBC, [SBC bluetooth audio codec], sbc, [
3125   AG_GST_PKG_CHECK_MODULES(SBC, [sbc >= 1.0])
3126 ])
3127
3128 dnl *** schroedinger ***
3129 translit(dnm, m, l) AM_CONDITIONAL(USE_SCHRO, true)
3130 AG_GST_CHECK_FEATURE(SCHRO, [Schroedinger video codec], schro, [
3131   AG_GST_PKG_CHECK_MODULES(SCHRO, schroedinger-1.0 >= 1.0.10)
3132 ])
3133
3134 dnl *** zbar ***
3135 translit(dnm, m, l) AM_CONDITIONAL(USE_ZBAR, true)
3136 AG_GST_CHECK_FEATURE(ZBAR, [ZBar barcode detector], zbar, [
3137   AG_GST_PKG_CHECK_MODULES(ZBAR, zbar >= 0.9)
3138 ])
3139
3140 dnl *** rtmp ***
3141 translit(dnm, m, l) AM_CONDITIONAL(USE_RTMP, true)
3142 AG_GST_CHECK_FEATURE(RTMP, [rtmp library], rtmp, [
3143   AG_GST_PKG_CHECK_MODULES(RTMP, librtmp)
3144 ])
3145
3146 dnl *** spandsp ***
3147 translit(dnm, m, l) AM_CONDITIONAL(USE_SPANDSP, true)
3148 AG_GST_CHECK_FEATURE(SPANDSP, [Spandsp], spandsp, [
3149   PKG_CHECK_MODULES(SPANDSP, spandsp >= 0.0.6, [
3150     HAVE_SPANDSP="yes" ], [
3151     HAVE_SPANDSP="no"
3152   ])
3153 ])
3154 AC_SUBST(SPANDSP_CFLAGS)
3155 AC_SUBST(SPANDSP_LIBS)
3156
3157 dnl *** GSettings ***
3158 translit(dnm, m, l) AM_CONDITIONAL(USE_GSETTINGS, true)
3159 AG_GST_CHECK_FEATURE(GSETTINGS, [GSettings plugin], gsettings, [
3160   AG_GST_PKG_CHECK_MODULES(GSETTINGS, gio-2.0 >= 2.25.0)
3161   if test "x$HAVE_GSETTINGS" = "xyes"; then
3162     GLIB_GSETTINGS
3163   fi
3164 ])
3165
3166 dnl *** sndio ***
3167 translit(dnm, m, l) AM_CONDITIONAL(USE_SNDIO, true)
3168 AG_GST_CHECK_FEATURE(SNDIO, [sndio audio], sndio, [
3169   AC_CHECK_HEADER(sndio.h, HAVE_SNDIO="yes", HAVE_SNDIO="no")
3170   if test "x$HAVE_SNDIO" = "xyes"; then
3171     AC_CHECK_LIB(sndio, sio_open, HAVE_SNDIO="yes", HAVE_SNDIO="no")
3172     if test "x$HAVE_SNDIO" = "xyes"; then
3173       SNDIO_LIBS=-lsndio
3174       AC_SUBST(SNDIO_LIBS)
3175     fi
3176   fi
3177 ])
3178
3179 dnl *** hls-crypto ***
3180 AC_ARG_WITH([hls-crypto],
3181   AS_HELP_STRING([--with-hls-crypto=auto|nettle|libgcrypt|openssl], [
3182     which cryptographic library version to compile against for hls (default: auto)
3183   ]), [
3184     AS_CASE([$with_hls_crypto],
3185       [nettle],[],
3186       [libgcrypt],[],
3187       [openssl],[],
3188       [with_hls_crypto=auto]
3189     )
3190   ]
3191 )
3192
3193 dnl *** hls ***
3194 translit(dnm, m, l) AM_CONDITIONAL(USE_HLS, true)
3195 AG_GST_CHECK_FEATURE(HLS, [http live streaming plugin], hls, [
3196   AS_CASE([$with_hls_crypto],
3197     [nettle], [
3198       PKG_CHECK_MODULES(NETTLE, nettle, [
3199         AC_DEFINE(HAVE_NETTLE, 1, [Define if nettle is available])
3200         HAVE_HLS="yes"
3201       ],[AC_MSG_ERROR([Could not find nettle library])])
3202     ],
3203     [libgcrypt], [
3204       AM_PATH_LIBGCRYPT([1.2.0], [
3205         AC_DEFINE(HAVE_LIBGCRYPT, 1, [Define if libgcrypt is available])
3206         HAVE_HLS="yes"
3207       ],[AC_MSG_ERROR([Could not find libgcrypt library])])
3208     ],
3209     [openssl], [
3210       PKG_CHECK_MODULES(OPENSSL, openssl, [
3211         AC_DEFINE(HAVE_OPENSSL, 1, [Define if openssl is available])
3212         HAVE_HLS="yes"
3213       ],[AC_MSG_ERROR([Could not find openssl library])])
3214     ],
3215     [
3216       dnl Try to find a valid crypto library
3217       PKG_CHECK_MODULES(NETTLE, nettle, [
3218         AC_DEFINE(HAVE_NETTLE, 1, [Define if nettle is available])
3219         HAVE_HLS="yes"
3220       ],[
3221         AM_PATH_LIBGCRYPT([1.2.0], [
3222           AC_DEFINE(HAVE_LIBGCRYPT, 1, [Define if libgcrypt is available])
3223           HAVE_HLS="yes"
3224         ],[
3225           PKG_CHECK_MODULES(OPENSSL, openssl, [
3226             AC_DEFINE(HAVE_OPENSSL, 1, [Define if openssl is available])
3227             HAVE_HLS="yes"
3228           ],[
3229             HAVE_HLS="no"
3230           ])
3231         ])
3232       ])
3233     ]
3234   )
3235 ])
3236
3237 dnl *** x265 (H.265/HEVC encoder) ***
3238 translit(dnm, m, l) AM_CONDITIONAL(USE_X265, true)
3239 AG_GST_CHECK_FEATURE(X265, [x265 plug-in], x265, [
3240   AG_GST_PKG_CHECK_MODULES(X265, x265)
3241 ])
3242
3243 else
3244
3245 dnl not building plugins with external dependencies,
3246 dnl but we still need to set the conditionals
3247
3248 AM_CONDITIONAL(USE_ASSRENDER, false)
3249 AM_CONDITIONAL(USE_VOAMRWBENC, false)
3250 AM_CONDITIONAL(USE_VOAACENC, false)
3251 AM_CONDITIONAL(USE_APEXSINK, false)
3252 AM_CONDITIONAL(USE_BS2B, false)
3253 AM_CONDITIONAL(USE_BZ2, false)
3254 AM_CONDITIONAL(USE_CHROMAPRINT, false)
3255 AM_CONDITIONAL(USE_CURL, false)
3256 AM_CONDITIONAL(USE_SSH2, false)
3257 AM_CONDITIONAL(USE_DASH, false)
3258 AM_CONDITIONAL(USE_DC1394, false)
3259 AM_CONDITIONAL(USE_DECKLINK, false)
3260 AM_CONDITIONAL(DECKLINK_OSX, false)
3261 AM_CONDITIONAL(USE_DIRECTFB, false)
3262 AM_CONDITIONAL(USE_WAYLAND, false)
3263 AM_CONDITIONAL(USE_DAALA, false)
3264 AM_CONDITIONAL(USE_DTS, false)
3265 AM_CONDITIONAL(USE_EXIF, false)
3266 AM_CONDITIONAL(USE_RESINDVD, false)
3267 AM_CONDITIONAL(USE_FAAC, false)
3268 AM_CONDITIONAL(USE_FAAD, false)
3269 AM_CONDITIONAL(USE_FBDEV, false)
3270 AM_CONDITIONAL(USE_FLITE, false)
3271 AM_CONDITIONAL(USE_FLUIDSYNTH, false)
3272 AM_CONDITIONAL(USE_GL, false)
3273 AM_CONDITIONAL(USE_GSM, false)
3274 AM_CONDITIONAL(USE_GTK3, false)
3275 AM_CONDITIONAL(USE_GTK3_GL, false)
3276 AM_CONDITIONAL(USE_HLS, false)
3277 AM_CONDITIONAL(USE_KATE, false)
3278 AM_CONDITIONAL(USE_TIGER, false)
3279 AM_CONDITIONAL(USE_LADSPA, false)
3280 AM_CONDITIONAL(USE_LV2, false)
3281 AM_CONDITIONAL(USE_LIBDE265, false)
3282 AM_CONDITIONAL(USE_LIBMMS, false)
3283 AM_CONDITIONAL(USE_LINSYS, false)
3284 AM_CONDITIONAL(USE_MODPLUG, false)
3285 AM_CONDITIONAL(USE_MIMIC, false)
3286 AM_CONDITIONAL(USE_MPEG2ENC, false)
3287 AM_CONDITIONAL(USE_MPG123, false)
3288 AM_CONDITIONAL(USE_MPLEX, false)
3289 AM_CONDITIONAL(USE_MUSEPACK, false)
3290 AM_CONDITIONAL(USE_NAS, false)
3291 AM_CONDITIONAL(USE_NEON, false)
3292 AM_CONDITIONAL(USE_OFA, false)
3293 AM_CONDITIONAL(USE_OPENAL, false)
3294 AM_CONDITIONAL(USE_OPENCV, false)
3295 AM_CONDITIONAL(USE_OPENEXR, false)
3296 AM_CONDITIONAL(USE_OPENJPEG, false)
3297 AM_CONDITIONAL(USE_OPENNI2, false)
3298 AM_CONDITIONAL(USE_OPUS, false)
3299 AM_CONDITIONAL(USE_PVR, false)
3300 AM_CONDITIONAL(USE_QT, false)
3301 AM_CONDITIONAL(USE_LIBVISUAL, false)
3302 AM_CONDITIONAL(USE_TIMIDITY, false)
3303 AM_CONDITIONAL(USE_WILDMIDI, false)
3304 AM_CONDITIONAL(USE_SDL, false)
3305 AM_CONDITIONAL(USE_SMOOTHSTREAMING, false)
3306 AM_CONDITIONAL(USE_SNDFILE, false)
3307 AM_CONDITIONAL(USE_SOUNDTOUCH, false)
3308 AM_CONDITIONAL(USE_SPANDSP, false)
3309 AM_CONDITIONAL(USE_SPC, false)
3310 AM_CONDITIONAL(USE_SRTP, false)
3311 AM_CONDITIONAL(USE_GME, false)
3312 AM_CONDITIONAL(USE_GSETTINGS, false)
3313 AM_CONDITIONAL(USE_XVID, false)
3314 AM_CONDITIONAL(USE_DVB, false)
3315 AM_CONDITIONAL(USE_WININET, false)
3316 AM_CONDITIONAL(USE_ACM, false)
3317 AM_CONDITIONAL(USE_VDPAU, false)
3318 AM_CONDITIONAL(USE_SBC, false)
3319 AM_CONDITIONAL(USE_SCHRO, false)
3320 AM_CONDITIONAL(USE_ZBAR, false)
3321 AM_CONDITIONAL(USE_RSVG, false)
3322 AM_CONDITIONAL(USE_RTMP, false)
3323 AM_CONDITIONAL(USE_TELETEXTDEC, false)
3324 AM_CONDITIONAL(USE_SNDIO, false)
3325 AM_CONDITIONAL(USE_UVCH264, false)
3326 AM_CONDITIONAL(USE_WEBP, false)
3327 AM_CONDITIONAL(USE_OPENH264, false)
3328 AM_CONDITIONAL(USE_X265, false)
3329 AM_CONDITIONAL(USE_DTLS, false)
3330
3331 fi dnl of EXT plugins
3332
3333 dnl *** finalize CFLAGS, LDFLAGS, LIBS
3334
3335 dnl Overview:
3336 dnl GST_OPTION_CFLAGS:  common flags for profiling, debugging, errors, ...
3337 dnl GST_*:              flags shared by built objects to link against GStreamer
3338 dnl GST_ALL_LDFLAGS:    linker flags shared by all
3339 dnl GST_LIB_LDFLAGS:    additional linker flags for all libaries
3340 dnl GST_LT_LDFLAGS:     library versioning of our libraries
3341 dnl GST_PLUGIN_LDFLAGS: flags to be used for all plugins
3342
3343 dnl GST_OPTION_CFLAGS
3344 if test "x$USE_DEBUG" = xyes; then
3345    PROFILE_CFLAGS="-g"
3346 fi
3347 AC_SUBST(PROFILE_CFLAGS)
3348
3349 if test "x$PACKAGE_VERSION_NANO" = "x1"; then
3350   dnl Define _only_ during CVS (not pre-releases or releases)
3351   DEPRECATED_CFLAGS="-DGST_DISABLE_DEPRECATED"
3352 else
3353   DEPRECATED_CFLAGS=""
3354 fi
3355 AC_SUBST(DEPRECATED_CFLAGS)
3356
3357 dnl every flag in GST_OPTION_CFLAGS and GST_OPTION_CXXFLAGS can be overridden
3358 dnl at make time with e.g. make ERROR_CFLAGS=""
3359 GST_OPTION_CFLAGS="\$(WARNING_CFLAGS) \$(ERROR_CFLAGS) \$(DEBUG_CFLAGS) \$(PROFILE_CFLAGS) \$(GCOV_CFLAGS) \$(OPT_CFLAGS) \$(DEPRECATED_CFLAGS)"
3360 GST_OPTION_CXXFLAGS="\$(WARNING_CXXFLAGS) \$(ERROR_CXXFLAGS) \$(DEBUG_CFLAGS) \$(PROFILE_CFLAGS) \$(GCOV_CFLAGS) \$(OPT_CFLAGS) \$(DEPRECATED_CFLAGS)"
3361 GST_OPTION_OBJCFLAGS="\$(WARNING_OBJCFLAGS) \$(ERROR_OBJCFLAGS) \$(DEBUG_CFLAGS) \$(PROFILE_CFLAGS) \$(GCOV_CFLAGS) \$(OPT_CFLAGS) \$(DEPRECATED_CFLAGS)"
3362 AC_SUBST(GST_OPTION_CFLAGS)
3363 AC_SUBST(GST_OPTION_CXXFLAGS)
3364 AC_SUBST(GST_OPTION_OBJCFLAGS)
3365
3366 dnl FIXME: do we want to rename to GST_ALL_* ?
3367 dnl prefer internal headers to already installed ones
3368 dnl also add builddir include for enumtypes and marshal
3369 dnl add GST_OPTION_CFLAGS, but overridable
3370 GST_CFLAGS="$GST_CFLAGS -DGST_USE_UNSTABLE_API"
3371 GST_CXXFLAGS="$GST_CFLAGS $GLIB_EXTRA_CFLAGS \$(GST_OPTION_CXXFLAGS)"
3372 GST_OBJCFLAGS="$GST_CFLAGS $GLIB_EXTRA_CFLAGS \$(GST_OPTION_OBJCFLAGS)"
3373 GST_CFLAGS="$GST_CFLAGS $GLIB_EXTRA_CFLAGS \$(GST_OPTION_CFLAGS)"
3374 AC_SUBST(GST_CFLAGS)
3375 AC_SUBST(GST_CXXFLAGS)
3376 AC_SUBST(GST_OBJCFLAGS)
3377 AC_SUBST(GST_LIBS)
3378 GST_PLUGINS_BAD_CXXFLAGS="-I\$(top_srcdir)/gst-libs -I\$(top_builddir)/gst-libs"
3379 GST_PLUGINS_BAD_OBJCFLAGS="-I\$(top_srcdir)/gst-libs -I\$(top_builddir)/gst-libs"
3380 GST_PLUGINS_BAD_CFLAGS="-I\$(top_srcdir)/gst-libs -I\$(top_builddir)/gst-libs"
3381 AC_SUBST(GST_PLUGINS_BAD_CFLAGS)
3382 AC_SUBST(GST_PLUGINS_BAD_CXXFLAGS)
3383 AC_SUBST(GST_PLUGINS_BAD_OBJCFLAGS)
3384
3385 dnl LDFLAGS really should only contain flags, not libs - they get added before
3386 dnl whatevertarget_LIBS and -L flags here affect the rest of the linking
3387 GST_ALL_LDFLAGS="-no-undefined"
3388 AC_SUBST(GST_ALL_LDFLAGS)
3389
3390 dnl GST_LIB_LDFLAGS
3391 dnl linker flags shared by all libraries
3392 dnl LDFLAGS modifier defining exported symbols from built libraries
3393 dnl (export _gst_foo but not __gst_foo)
3394 GST_LIB_LDFLAGS="-export-symbols-regex ^_?\(gst_\|Gst\|GST_\).*"
3395 AC_SUBST(GST_LIB_LDFLAGS)
3396
3397 dnl this really should only contain flags, not libs - they get added before
3398 dnl whatevertarget_LIBS and -L flags here affect the rest of the linking
3399 GST_PLUGIN_LDFLAGS="-module -avoid-version -export-symbols-regex '^[_]*gst_plugin_.*' $GST_ALL_LDFLAGS"
3400 AC_SUBST(GST_PLUGIN_LDFLAGS)
3401
3402 dnl *** output files ***
3403
3404 $MKDIR_P tests/check/orc
3405
3406 dnl po/Makefile.in
3407
3408 AC_CONFIG_FILES(
3409 Makefile
3410 common/Makefile
3411 common/m4/Makefile
3412 gst-plugins-bad.spec
3413 gst/Makefile
3414 gst/accurip/Makefile
3415 gst/adpcmdec/Makefile
3416 gst/adpcmenc/Makefile
3417 gst/aiff/Makefile
3418 gst/asfmux/Makefile
3419 gst/audiofxbad/Makefile
3420 gst/audiomixer/Makefile
3421 gst/audiovisualizers/Makefile
3422 gst/autoconvert/Makefile
3423 gst/bayer/Makefile
3424 gst/camerabin2/Makefile
3425 gst/cdxaparse/Makefile
3426 gst/coloreffects/Makefile
3427 gst/dataurisrc/Makefile
3428 gst/dccp/Makefile
3429 gst/debugutils/Makefile
3430 gst/dvbsuboverlay/Makefile
3431 gst/dvdspu/Makefile
3432 gst/faceoverlay/Makefile
3433 gst/festival/Makefile
3434 gst/fieldanalysis/Makefile
3435 gst/freeverb/Makefile
3436 gst/frei0r/Makefile
3437 gst/gaudieffects/Makefile
3438 gst/geometrictransform/Makefile
3439 gst/gdp/Makefile
3440 gst/hdvparse/Makefile
3441 gst/id3tag/Makefile
3442 gst/inter/Makefile
3443 gst/interlace/Makefile
3444 gst/ivfparse/Makefile
3445 gst/ivtc/Makefile
3446 gst/jp2kdecimator/Makefile
3447 gst/jpegformat/Makefile
3448 gst/librfb/Makefile
3449 gst/midi/Makefile
3450 gst/mpegdemux/Makefile
3451 gst/mpegtsdemux/Makefile
3452 gst/mpegtsmux/Makefile
3453 gst/mpegtsmux/tsmux/Makefile
3454 gst/mpegpsmux/Makefile
3455 gst/mve/Makefile
3456 gst/mxf/Makefile
3457 gst/nuvdemux/Makefile
3458 gst/onvif/Makefile
3459 gst/patchdetect/Makefile
3460 gst/pcapparse/Makefile
3461 gst/pnm/Makefile
3462 gst/rawparse/Makefile
3463 gst/removesilence/Makefile
3464 gst/rtp/Makefile
3465 gst/sdi/Makefile
3466 gst/sdp/Makefile
3467 gst/segmentclip/Makefile
3468 gst/siren/Makefile
3469 gst/smooth/Makefile
3470 gst/speed/Makefile
3471 gst/subenc/Makefile
3472 gst/stereo/Makefile
3473 gst/tta/Makefile
3474 gst/videofilters/Makefile
3475 gst/videomeasure/Makefile
3476 gst/videoparsers/Makefile
3477 gst/videosignal/Makefile
3478 gst/vmnc/Makefile
3479 gst/y4m/Makefile
3480 gst/yadif/Makefile
3481 gst/compositor/Makefile
3482 gst-libs/Makefile
3483 gst-libs/gst/Makefile
3484 gst-libs/gst/adaptivedemux/Makefile
3485 gst-libs/gst/basecamerabinsrc/Makefile
3486 gst-libs/gst/gl/Makefile
3487 gst-libs/gst/gl/android/Makefile
3488 gst-libs/gst/gl/cocoa/Makefile
3489 gst-libs/gst/gl/dispmanx/Makefile
3490 gst-libs/gst/gl/glprototypes/Makefile
3491 gst-libs/gst/gl/eagl/Makefile
3492 gst-libs/gst/gl/egl/Makefile
3493 gst-libs/gst/gl/wayland/Makefile
3494 gst-libs/gst/gl/win32/Makefile
3495 gst-libs/gst/gl/x11/Makefile
3496 gst-libs/gst/insertbin/Makefile
3497 gst-libs/gst/interfaces/Makefile
3498 gst-libs/gst/codecparsers/Makefile
3499 gst-libs/gst/mpegts/Makefile
3500 gst-libs/gst/uridownloader/Makefile
3501 gst-libs/gst/wayland/Makefile
3502 gst-libs/gst/base/Makefile
3503 gst-libs/gst/video/Makefile
3504 sys/Makefile
3505 sys/dshowdecwrapper/Makefile
3506 sys/acmenc/Makefile
3507 sys/acmmp3dec/Makefile
3508 sys/androidmedia/Makefile
3509 sys/applemedia/Makefile
3510 sys/applemedia-nonpublic/Makefile
3511 sys/avc/Makefile
3512 sys/bluez/Makefile
3513 sys/d3dvideosink/Makefile
3514 sys/decklink/Makefile
3515 sys/directsound/Makefile
3516 sys/dshowsrcwrapper/Makefile
3517 sys/dshowvideosink/Makefile
3518 sys/dvb/Makefile
3519 sys/fbdev/Makefile
3520 sys/linsys/Makefile
3521 sys/nvenc/Makefile
3522 sys/opensles/Makefile
3523 sys/shm/Makefile
3524 sys/uvch264/Makefile
3525 sys/vcd/Makefile
3526 sys/vdpau/Makefile
3527 sys/pvr2d/Makefile
3528 sys/wasapi/Makefile
3529 sys/wininet/Makefile
3530 sys/winks/Makefile
3531 sys/winscreencap/Makefile
3532 tests/Makefile
3533 tests/check/Makefile
3534 tests/files/Makefile
3535 tests/examples/Makefile
3536 tests/examples/avsamplesink/Makefile
3537 tests/examples/camerabin2/Makefile
3538 tests/examples/codecparsers/Makefile
3539 tests/examples/directfb/Makefile
3540 tests/examples/gl/Makefile
3541 tests/examples/gl/cocoa/Makefile
3542 tests/examples/gl/clutter/Makefile
3543 tests/examples/gl/generic/Makefile
3544 tests/examples/gl/generic/cube/Makefile
3545 tests/examples/gl/generic/cubeyuv/Makefile
3546 tests/examples/gl/generic/doublecube/Makefile
3547 tests/examples/gl/generic/recordgraphic/Makefile
3548 tests/examples/gl/gtk/Makefile
3549 tests/examples/gl/gtk/gtkvideooverlay/Makefile
3550 tests/examples/gl/gtk/3dvideo/Makefile
3551 tests/examples/gl/gtk/filternovideooverlay/Makefile
3552 tests/examples/gl/gtk/filtervideooverlay/Makefile
3553 tests/examples/gl/gtk/fxtest/Makefile
3554 tests/examples/gl/gtk/switchvideooverlay/Makefile
3555 tests/examples/gl/qt/Makefile
3556 tests/examples/gl/sdl/Makefile
3557 tests/examples/gtk/Makefile
3558 tests/examples/mpegts/Makefile
3559 tests/examples/mxf/Makefile
3560 tests/examples/opencv/Makefile
3561 tests/examples/uvch264/Makefile
3562 tests/icles/Makefile
3563 ext/voamrwbenc/Makefile
3564 ext/voaacenc/Makefile
3565 ext/assrender/Makefile
3566 ext/apexsink/Makefile
3567 ext/bs2b/Makefile
3568 ext/bz2/Makefile
3569 ext/chromaprint/Makefile
3570 ext/curl/Makefile
3571 ext/dash/Makefile
3572 ext/dc1394/Makefile
3573 ext/directfb/Makefile
3574 ext/wayland/Makefile
3575 ext/daala/Makefile
3576 ext/dts/Makefile
3577 ext/gl/Makefile
3578 ext/gtk/Makefile
3579 ext/faac/Makefile
3580 ext/faad/Makefile
3581 ext/flite/Makefile
3582 ext/fluidsynth/Makefile
3583 ext/gsm/Makefile
3584 ext/hls/Makefile
3585 ext/kate/Makefile
3586 ext/ladspa/Makefile
3587 ext/lv2/Makefile
3588 ext/libde265/Makefile
3589 ext/libmms/Makefile
3590 ext/libvisual/Makefile
3591 ext/Makefile
3592 ext/modplug/Makefile
3593 ext/mpeg2enc/Makefile
3594 ext/mpg123/Makefile
3595 ext/mimic/Makefile
3596 ext/mplex/Makefile
3597 ext/musepack/Makefile
3598 ext/nas/Makefile
3599 ext/neon/Makefile
3600 ext/ofa/Makefile
3601 ext/openal/Makefile
3602 ext/opencv/Makefile
3603 ext/openexr/Makefile
3604 ext/openh264/Makefile
3605 ext/openjpeg/Makefile
3606 ext/openni2/Makefile
3607 ext/opus/Makefile
3608 ext/qt/Makefile
3609 ext/rsvg/Makefile
3610 ext/resindvd/Makefile
3611 ext/rtmp/Makefile
3612 ext/sbc/Makefile
3613 ext/schroedinger/Makefile
3614 ext/sdl/Makefile
3615 ext/smoothstreaming/Makefile
3616 ext/sndfile/Makefile
3617 ext/soundtouch/Makefile
3618 ext/spandsp/Makefile
3619 ext/sndio/Makefile
3620 ext/srtp/Makefile
3621 ext/teletextdec/Makefile
3622 ext/gme/Makefile
3623 ext/gsettings/Makefile
3624 ext/gsettings/org.freedesktop.gstreamer.default-elements.gschema.xml
3625 ext/spc/Makefile
3626 ext/timidity/Makefile
3627 ext/webp/Makefile
3628 ext/x265/Makefile
3629 ext/xvid/Makefile
3630 ext/zbar/Makefile
3631 ext/dtls/Makefile
3632 po/Makefile.in
3633 docs/Makefile
3634 docs/plugins/Makefile
3635 docs/libs/Makefile
3636 docs/version.entities
3637 pkgconfig/Makefile
3638 pkgconfig/gstreamer-plugins-bad.pc
3639 pkgconfig/gstreamer-plugins-bad-uninstalled.pc
3640 pkgconfig/gstreamer-codecparsers.pc
3641 pkgconfig/gstreamer-codecparsers-uninstalled.pc
3642 pkgconfig/gstreamer-insertbin.pc
3643 pkgconfig/gstreamer-insertbin-uninstalled.pc
3644 pkgconfig/gstreamer-gl.pc
3645 pkgconfig/gstreamer-gl-uninstalled.pc
3646 pkgconfig/gstreamer-mpegts.pc
3647 pkgconfig/gstreamer-mpegts-uninstalled.pc
3648 pkgconfig/gstreamer-wayland.pc
3649 pkgconfig/gstreamer-wayland-uninstalled.pc
3650 pkgconfig/gstreamer-bad-base.pc
3651 pkgconfig/gstreamer-bad-base-uninstalled.pc
3652 pkgconfig/gstreamer-bad-video.pc
3653 pkgconfig/gstreamer-bad-video-uninstalled.pc
3654 tools/Makefile
3655 m4/Makefile
3656 )
3657
3658 dnl Create the config.h file for Visual Studio builds
3659 dnl Beware of spaces and /'s in some of the shell variable contents.
3660 sed \
3661     -e 's/.*config.h.in.*autoheader.*/\/* Autogenerated config.h created for win32 Visual Studio builds *\/\n\n\/* PREFIX -- specifically added for Windows for easier moving *\/\n#define PREFIX "C:\\\\gstreamer"/' \
3662     -e 's/.* GETTEXT_PACKAGE$/#define GETTEXT_PACKAGE "'$GETTEXT_PACKAGE'"/' \
3663     -e 's/.* GST_DATADIR$/#define GST_DATADIR PREFIX "\\\\share"/' \
3664     -e 's/.* GST_LEVEL_DEFAULT$/#define GST_LEVEL_DEFAULT GST_LEVEL_ERROR/' \
3665     -e 's/.* GST_LICENSE$/#define GST_LICENSE "'$GST_LICENSE'"/' \
3666     -e 's/.* GST_API_VERSION$/#define GST_API_VERSION "'$GST_API_VERSION'"/' \
3667     -e "s,.* GST_PACKAGE_NAME$,#define GST_PACKAGE_NAME \"${GST_PACKAGE_NAME}\"," \
3668     -e 's/.* GST_PACKAGE_ORIGIN$/#define GST_PACKAGE_ORIGIN "Unknown package origin"/' \
3669     -e "s,.* GST_PACKAGE_RELEASE_DATETIME$,#define GST_PACKAGE_RELEASE_DATETIME \"${GST_PACKAGE_RELEASE_DATETIME}\"," \
3670     -e 's/.* HAVE_CPU_I386$/#define HAVE_CPU_I386 1/' \
3671     -e 's/.* HAVE_STDLIB_H$/#define HAVE_STDLIB_H 1/' \
3672     -e 's/.* HAVE_STRING_H$/#define HAVE_STRING_H 1/' \
3673     -e 's/.* HAVE_SYS_STAT_H$/#define HAVE_SYS_STAT_H 1/' \
3674     -e 's/.* HAVE_SYS_TYPES_H$/#define HAVE_SYS_TYPES_H 1/' \
3675     -e 's/.* HAVE_WIN32$/#define HAVE_WIN32 1/' \
3676     -e 's/.* HOST_CPU$/#define HOST_CPU "i686"/' \
3677     -e 's/.* LIBDIR$/#ifdef _DEBUG\n#  define LIBDIR PREFIX "\\\\debug\\\\lib"\n#else\n#  define LIBDIR PREFIX "\\\\lib"\n#endif/' \
3678     -e 's/.* LOCALEDIR$/#define LOCALEDIR PREFIX "\\\\share\\\\locale"/' \
3679     -e "s/.* PACKAGE$/#define PACKAGE \"$PACKAGE\"/" \
3680     -e 's/.* PACKAGE_BUGREPORT$/#define PACKAGE_BUGREPORT "http:\/\/bugzilla.gnome.org\/enter_bug.cgi?product=GStreamer"/' \
3681     -e "s/.* PACKAGE_NAME$/#define PACKAGE_NAME \"$PACKAGE_NAME\"/" \
3682     -e "s/.* PACKAGE_STRING$/#define PACKAGE_STRING \"$PACKAGE_STRING\"/" \
3683     -e 's/.* PACKAGE_TARNAME$/#define PACKAGE_TARNAME "'$PACKAGE_TARNAME'"/' \
3684     -e 's/.* PACKAGE_VERSION$/#define PACKAGE_VERSION "'$PACKAGE_VERSION'"/' \
3685     -e 's/.* PLUGINDIR$/#ifdef _DEBUG\n#  define PLUGINDIR PREFIX "\\\\debug\\\\lib\\\\gstreamer-0.11"\n#else\n#  define PLUGINDIR PREFIX "\\\\lib\\\\gstreamer-0.11"\n#endif/' \
3686     -e 's/.* VERSION$/#define VERSION "'$VERSION'"/' \
3687     -e "s/.* DEFAULT_AUDIOSINK$/#define DEFAULT_AUDIOSINK \"directsoundsink\"/" \
3688     -e "s/.* DEFAULT_AUDIOSRC$/#define DEFAULT_AUDIOSRC \"audiotestsrc\"/" \
3689     -e "s/.* DEFAULT_VIDEOSRC$/#define DEFAULT_VIDEOSRC \"videotestsrc\"/" \
3690     -e "s/.* DEFAULT_VISUALIZER$/#define DEFAULT_VISUALIZER \"goom\"/" \
3691     -e 's/.* HAVE_WINDOWS_H$/#define HAVE_WINDOWS_H 1/' \
3692     -e 's/.* HAVE_WININET_H$/#define HAVE_WININET_H 1/' \
3693     -e 's/.* HAVE_WINSOCK2_H$/#define HAVE_WINSOCK2_H 1/' \
3694     -e 's/.* HAVE_WS2TCPIP_H$/#define HAVE_WS2TCPIP_H 1/' \
3695     config.h.in >win32/common/config.h-new
3696
3697 AC_OUTPUT
3698
3699 AG_GST_OUTPUT_PLUGINS
3700 ORC_OUTPUT
3701