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