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