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