decklink: Add autotools support on Windows
[platform/upstream/gstreamer.git] / configure.ac
1 AC_PREREQ([2.69])
2
3 dnl initialize autoconf
4 dnl when going to/from release please set the nano (fourth number) right !
5 dnl releases only do Wall, git and prerelease does Werror too
6 AC_INIT([GStreamer Bad Plug-ins],[1.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 Video CD
1879 translit(dnm, m, l) AM_CONDITIONAL(USE_VCD, true)
1880 AG_GST_CHECK_FEATURE(VCD, [Video CD], vcdsrc, [
1881   AC_CHECK_HEADER(linux/cdrom.h, HAVE_VCD="yes", HAVE_VCD="no")
1882 ])
1883
1884 dnl check for OpenSL ES
1885 translit(dnm, m, l) AM_CONDITIONAL(USE_OPENSLES, true)
1886 AG_GST_CHECK_FEATURE(OPENSLES, [OpenSL ES], opensl, [
1887   AC_CHECK_HEADER(SLES/OpenSLES.h, HAVE_OPENSLES="yes", HAVE_OPENSLES="no")
1888 ])
1889
1890 dnl *** UVC H264 ***
1891 translit(dnm, m, l) AM_CONDITIONAL(USE_UVCH264, true)
1892 AG_GST_CHECK_FEATURE(UVCH264, [UVC H264], uvch264, [
1893   AC_CHECK_HEADER(linux/uvcvideo.h, HAVE_UVCVIDEO_H=yes, HAVE_UVCVIDEO_H=no)
1894   PKG_CHECK_MODULES(G_UDEV, gudev-1.0 , [
1895           AC_DEFINE([HAVE_GUDEV], 1, [Define if gudev is installed])
1896           HAVE_GUDEV="yes" ],
1897           [HAVE_GUDEV="no"])
1898   PKG_CHECK_MODULES(LIBUSB, libusb-1.0 , [
1899           AC_DEFINE([HAVE_LIBUSB], 1, [Define if libusb 1.x is installed])
1900           HAVE_LIBUSB="yes" ],
1901           [HAVE_LIBUSB="no"])
1902   if test "x$HAVE_UVCVIDEO_H" = "xyes" && \
1903      test "x$HAVE_GUDEV" = "xyes" && \
1904      test "x$HAVE_LIBUSB" = "xyes"; then
1905     HAVE_UVCH264=yes
1906   else
1907     HAVE_UVCH264=no
1908   fi
1909 ])
1910 AC_SUBST(LIBUDEV_CFLAGS)
1911 AC_SUBST(LIBUDEV_LIBS)
1912 AC_SUBST(LIBUSB_CFLAGS)
1913 AC_SUBST(LIBUSB_LIBS)
1914
1915 dnl *** CUDA ***
1916 translit(dnm, m, l) AM_CONDITIONAL(USE_CUDA, true)
1917 AG_GST_CHECK_FEATURE(CUDA, [NVIDIA CUDA API],, [
1918   AC_ARG_WITH([cuda-prefix],
1919           AS_HELP_STRING([--with-cuda-prefix],
1920           [Use the provided prefix for detecting the cuda installation]),
1921           [AS_IF([test "x$with_cuda_prefix" != "x"],
1922                  [CUDA_PREFIX="$with_cuda_prefix"])],
1923           [CUDA_PREFIX=""])
1924
1925   HAVE_CUDA="yes"
1926   if test "x$CUDA_PREFIX" != "x"; then
1927     dnl only override if not already set
1928     if test "x$CUDA_CFLAGS" = "x" -a "x$CUDA_LIBS" = "x"; then
1929       dnl this is an educated guess, user can always override these
1930       CUDA_CFLAGS="-I$CUDA_PREFIX/include"
1931       CUDA_LIBS="-L$CUDA_PREFIX/lib -L$CUDA_PREFIX/lib64 -L$CUDA_PREFIX/lib/stubs -L$CUDA_PREFIX/lib64/stubs -lcuda -lcudart"
1932     fi
1933   else
1934     PKG_CHECK_MODULES([CUDA], [cuda-8.0 cudart-8.0],, [
1935       PKG_CHECK_MODULES([CUDA], [cuda-7.5 cudart-7.5],, [
1936         PKG_CHECK_MODULES([CUDA], [cuda-7.0 cudart-7.0],, [
1937           PKG_CHECK_MODULES([CUDA], [cuda-6.5 cudart-6.5],, [
1938             AC_MSG_WARN([Could not find cuda headers/libraries])])])])])
1939   fi
1940
1941   HAVE_CUDA_H=no
1942   HAVE_CUDART_H=no
1943   save_CPPFLAGS="$CPPFLAGS"
1944   CPPFLAGS="$CUDA_CFLAGS $save_CPPFLAGS "
1945   AC_CHECK_HEADER([cuda.h], [HAVE_CUDA_H=yes],
1946       AC_MSG_WARN([Could not find cuda.h]))
1947   AC_CHECK_HEADER([cuda_runtime_api.h], [HAVE_CUDART_H=yes],
1948       AC_MSG_WARN([Could not find cuda_runtime_api.h]))
1949   CPPFLAGS=$save_CPPFLAGS
1950
1951   dnl libcuda and libcudart libraries
1952   save_LIBS="$LIBS"
1953   LIBS="$CUDA_LIBS $save_LIBS"
1954   HAVE_CUDART_LIB="no"
1955   AC_CHECK_LIB(cudart,cudaGetErrorString,[HAVE_CUDART_LIB="yes"], [
1956       AC_MSG_WARN([Could not find cudart library])])
1957   HAVE_CUDA_LIB="no"
1958   AC_CHECK_LIB(cuda,cuInit,[HAVE_CUDA_LIB="yes"], [
1959       AC_MSG_WARN([Could not find cuda library])])
1960   LIBS="$save_LIBS"
1961 ])
1962
1963 dnl *** NVDEC ***
1964 translit(dnm, m, l) AM_CONDITIONAL(USE_NVDEC, true)
1965 AG_GST_CHECK_FEATURE(NVDEC, [nvdec], nvdec, [
1966   HAVE_NVCUVID_H=no
1967   save_CPPFLAGS="$CPPFLAGS"
1968   CPPFLAGS="$CUDA_CFLAGS $save_CPPFLAGS"
1969   AC_CHECK_HEADER([nvcuvid.h], [HAVE_NVCUVID_H=yes],
1970       AC_MSG_WARN([Could not find nvcuvid.h]))
1971   CPPFLAGS=$save_CPPFLAGS
1972
1973   HAVE_NVCUVID=no
1974   save_LIBS="$LIBS"
1975   LIBS="$CUDA_LIBS $save_LIBS"
1976   AC_CHECK_LIB(nvcuvid, cuvidCtxLock, [HAVE_NVCUVID=yes],
1977       AC_MSG_WARN([Could not find library nvcuvid]))
1978   LIBS="$save_LIBS"
1979
1980   if test "x$HAVE_NVCUVID_H" = "xyes" -a "x$HAVE_NVCUVID" = "xyes"; then
1981     HAVE_NVDEC=yes
1982   else
1983     HAVE_NVDEC=no
1984   fi
1985 ])
1986
1987 dnl *** NVENC ***
1988 translit(dnm, m, l) AM_CONDITIONAL(USE_NVENC, true)
1989 AG_GST_CHECK_FEATURE(NVENC, [NVIDIA Encode API], nvenc, [
1990   dnl nvEncodeAPI.h header
1991   HAVE_NVENCODEAPI_H=no
1992   AC_ARG_VAR(NVENCODE_CFLAGS, [C compiler flags for NvEncodeAPI.h])
1993   save_CPPFLAGS="$CPPFLAGS"
1994   CPPFLAGS="$NVENCODE_CFLAGS $save_CPPFLAGS"
1995   AC_CHECK_HEADER([nvEncodeAPI.h], [
1996       AC_PREPROC_IFELSE([AC_LANG_SOURCE([[#include <nvEncodeAPI.h>
1997           #if NVENCAPI_MAJOR_VERSION < 5
1998           #error "Need nvEncodeAPI.h >= 5.0"
1999           #endif
2000           ]])], [
2001           HAVE_NVENCODEAPI_H=yes
2002           ], [
2003           AC_MSG_WARN([nvEncodeAPI.h must be >= 5.0])
2004           ])
2005       ],
2006       AC_MSG_WARN([Could not find nvEncodeAPI.h]))
2007   AC_SUBST(NVENCODE_CFLAGS)
2008   CPPFLAGS="$save_CPPFLAGS"
2009
2010   dnl libnvnidia-encode library
2011   HAVE_NVENCODE_LIB=no
2012   AC_ARG_VAR(NVENCODE_LIBS, [linker flags for nvidia-encode])
2013   saved_LIBS="$LIBS"
2014   LIBS="$NVENCODE_LIBS $saved_LIBS"
2015   AC_CHECK_LIB(nvidia-encode, NvEncodeAPICreateInstance, [HAVE_NVENCODE_LIB="yes"],
2016       AC_MSG_WARN([Could not find library nvidia-encode]))
2017   NVENCODE_LIBS="$NVENCODE_LIBS -lnvidia-encode"
2018   AC_SUBST(NVENCODE_LIBS)
2019   LIBS="$saved_LIBS"
2020
2021   USE_NVENC_GST_GL=no
2022   if test "x$HAVE_CUDA_H" = "xyes" \
2023       -a "x$HAVE_CUDART_H" = "xyes" \
2024       -a "x$HAVE_CUDA_LIB" = "xyes" \
2025       -a "x$HAVE_CUDART_LIB" = "xyes" \
2026       -a "x$HAVE_NVENCODEAPI_H" = "xyes" \
2027       -a "x$HAVE_NVENCODE_LIB" = "xyes"; then
2028     HAVE_NVENC="yes"
2029     if test x"$USE_OPENGL" = x"yes"; then
2030       dnl cuda-gl interop header
2031       save_CPPFLAGS="$CPPFLAGS"
2032       CPPFLAGS="$save_CPPFLAGS $CUDA_CFLAGS"
2033       AC_CHECK_HEADER([cuda_gl_interop.h], [
2034         USE_NVENC_GST_GL="yes"
2035         AC_DEFINE(HAVE_NVENC_GST_GL, [1] , [NVENC GStreamer OpenGL support available])
2036         ])
2037       CPPFLAGS="$save_CPPFLAGS"
2038     fi
2039   else
2040     HAVE_NVENC="no"
2041   fi
2042 ])
2043 AM_CONDITIONAL(USE_NVENC_GST_GL, test "x$USE_NVENC_GST_GL" = "xyes")
2044
2045 dnl check for tinyalsa
2046 translit(dnm, m, l) AM_CONDITIONAL(USE_TINYALSA, true)
2047 AG_GST_CHECK_FEATURE(TINYALSA, [tinyalsa], tinyalsa, [
2048   AC_CHECK_HEADER(tinyalsa/asoundlib.h, HAVE_TINYALSA="yes", HAVE_TINYALSA="no")
2049 ])
2050
2051 dnl check for intel mediasdk
2052 translit(dnm, m, l) AM_CONDITIONAL(USE_MSDK, true)
2053 AG_GST_CHECK_FEATURE(MSDK, [Intel MediaSDK], msdk, [
2054   AC_ARG_WITH([msdk-prefix],
2055           AS_HELP_STRING([--with-msdk-prefix],
2056           [Use the provided prefix for detecting the Intel MediaSDK]),
2057           [AS_IF([test "x$with_msdk_prefix" != "x"],
2058                  [MSDK_PREFIX="$with_msdk_prefix"])],
2059           [AS_IF([test "x$MFX_HOME" != "x"],
2060                  [MSDK_PREFIX="$MFX_HOME"],
2061                  [MSDK_PREFIX="/opt/intel/media"])])
2062   MSDK_CFLAGS="-I$MSDK_PREFIX/include"
2063   MSDK_LIBS="-L$MSDK_PREFIX/lib/lin_x64 -lmfx -ldl"
2064   AC_SUBST(MSDK_CFLAGS)
2065   AC_SUBST(MSDK_LIBS)
2066
2067   save_CPPFLAGS="$CPPFLAGS"
2068   CPPFLAGS="$MSDK_CFLAGS $save_CPPFLAGS"
2069   AC_CHECK_HEADER(mfxdefs.h, HAVE_MFXDEFS_H="yes", HAVE_MFXDEFS_H="no")
2070   CPPFLAGS="$save_CPPFLAGS"
2071
2072   save_LIBS="$LIBS"
2073   LIBS="$MSDK_LIBS $LIBS"
2074   AC_LANG_PUSH([C++])
2075   AC_CHECK_LIB(mfx,MFXInit,HAVE_MFX_LIB="yes",HAVE_MFX_LIB="no")
2076   AC_LANG_POP([C++])
2077   LIBS="$save_LIBS"
2078
2079   PKG_CHECK_MODULES(LIBVA_DRM, libva-drm, HAVE_LIBVA_DRM="yes", HAVE_LIBVA_DRM="no")
2080
2081   if test "x$HAVE_MFXDEFS_H" = "xyes" \
2082       -a "x$HAVE_MFX_LIB" = "xyes" \
2083       -a "x$HAVE_LIBVA_DRM" = "xyes"; then
2084     HAVE_MSDK="yes"
2085   else
2086     HAVE_MSDK="no"
2087   fi
2088 ])
2089 AM_CONDITIONAL(USE_MSDK_LIBVA,
2090     test "x$HAVE_MSDK" = "xyes" -a "x$HAVE_LIBVA_DRM" = "xyes")
2091
2092 dnl *** ext plug-ins ***
2093 dnl keep this list sorted alphabetically !
2094
2095 if test "x$BUILD_EXTERNAL" = "xyes"; then
2096
2097 dnl *** assrender ***
2098 translit(dnm, m, l) AM_CONDITIONAL(USE_ASSRENDER, true)
2099 AG_GST_CHECK_FEATURE(ASSRENDER, [ASS/SSA renderer], assrender, [
2100   PKG_CHECK_MODULES(ASSRENDER, libass >= 0.10.2, [
2101     HAVE_ASSRENDER="yes" ], [
2102     HAVE_ASSRENDER="no"
2103   ])
2104 ])
2105 AC_SUBST(ASSRENDER_CFLAGS)
2106 AC_SUBST(ASSRENDER_LIBS)
2107
2108 dnl *** vo-amrwbenc ***
2109 translit(dnm, m, l) AM_CONDITIONAL(USE_VOAMRWBENC, true)
2110 AG_GST_CHECK_FEATURE(VOAMRWBENC, [vo-amrwbenc library], vo-amrwbenc, [
2111   AG_GST_PKG_CHECK_MODULES(VOAMRWBENC, vo-amrwbenc >= 0.1.0)
2112 ])
2113
2114 dnl *** vo-aacenc ***
2115 translit(dnm, m, l) AM_CONDITIONAL(USE_VOAACENC, true)
2116 AG_GST_CHECK_FEATURE(VOAACENC, [vo-aacenc library], vo-aacenc, [
2117   AG_GST_PKG_CHECK_MODULES(VOAACENC, vo-aacenc >= 0.1.0)
2118 ])
2119
2120 dnl *** bs2b ***
2121 translit(dnm, m, l) AM_CONDITIONAL(USE_BS2B, true)
2122 AG_GST_CHECK_FEATURE(BS2B, [bs2b], bs2b, [
2123   PKG_CHECK_MODULES(BS2B, libbs2b >= 3.1.0, HAVE_BS2B="yes", [
2124     HAVE_BS2B="no"
2125   ])
2126   AC_SUBST(BS2B_CFLAGS)
2127   AC_SUBST(BS2B_LIBS)
2128 ])
2129
2130 dnl *** BZ2 ***
2131 translit(dnm, m, l) AM_CONDITIONAL(USE_BZ2, true)
2132 AG_GST_CHECK_FEATURE(BZ2, [bz2 library], bz2, [
2133   save_LIBS=$LIBS
2134   LIBS="$LIBS -lbz2"
2135   AC_MSG_CHECKING([for BZ2_bzlibVersion in -lbz2])
2136   AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <bzlib.h>]], [[const char *version = BZ2_bzlibVersion ();]])],[HAVE_BZ2=yes],[HAVE_BZ2=no])
2137   AC_MSG_RESULT($HAVE_BZ2)
2138   LIBS=$save_LIBS
2139   if test "x$HAVE_BZ2" = "xyes"; then
2140     BZ2_LIBS="-lbz2"
2141   fi
2142   AC_SUBST(BZ2_LIBS)
2143
2144 ])
2145
2146 #dnl *** cairo ***
2147 #translit(dnm, m, l) AM_CONDITIONAL(USE_CAIRO, true)
2148 #AG_GST_CHECK_FEATURE(CAIRO, [cairo plug-in], cairo, [
2149 #  PKG_CHECK_MODULES(CAIRO, cairo >= 1.0 glitz-glx, HAVE_CAIRO=yes, [
2150 #    HAVE_CAIRO=no
2151 #  ])
2152 #  AC_SUBST(CAIRO_CFLAGS)
2153 #  AC_SUBST(CAIRO_LIBS)
2154 #])
2155
2156 dnl *** chromaprint ***
2157 translit(dnm, m, l) AM_CONDITIONAL(USE_CHROMAPRINT, true)
2158 AG_GST_CHECK_FEATURE(CHROMAPRINT, [chromaprint], chromaprint, [
2159   PKG_CHECK_MODULES(CHROMAPRINT, libchromaprint, HAVE_CHROMAPRINT="yes", [
2160     HAVE_CHROMAPRINT="no"
2161   ])
2162   AC_SUBST(CHROMAPRINT_CFLAGS)
2163   AC_SUBST(CHROMAPRINT_LIBS)
2164 ])
2165
2166 dnl *** Curl ***
2167 translit(dnm, m, l) AM_CONDITIONAL(USE_CURL, true)
2168 AG_GST_CHECK_FEATURE(CURL, [Curl plugin], curl, [
2169   PKG_CHECK_MODULES(CURL, libcurl >= 7.35.0, [
2170     HAVE_CURL="yes"
2171     AC_CHECK_HEADERS([unistd.h sys/socket.h sys/types.h netinet/in.h netinet/tcp.h fcntl.h], [ ], [
2172       AC_CHECK_HEADERS([unistd.h sys/types.h winsock2.h ws2tcpip.h fcntl.h], [ ], [HAVE_CURL="no"])
2173     ])
2174     AC_CHECK_HEADERS([netinet/ip.h], [], [HAVE_CURL="no"],
2175     [[#ifdef HAVE_SYS_TYPES_H
2176      # include <sys/types.h>
2177      #endif
2178      #ifdef HAVE_NETINET_IN_H
2179      # include <netinet/in.h>
2180      #endif
2181     ]])
2182     AC_MSG_CHECKING([for socket support needed by curlsink])
2183     AC_MSG_RESULT($HAVE_CURL)
2184   ], [
2185     HAVE_CURL="no"
2186   ])
2187   AC_SUBST(CURL_CFLAGS)
2188   AC_SUBST(CURL_LIBS)
2189   PKG_CHECK_MODULES(SSH2, libssh2 >= 1.4.3, [
2190     HAVE_SSH2="yes"
2191     AC_DEFINE(HAVE_SSH2, 1, [Define if libssh2 is available])
2192   ], [
2193     HAVE_SSH2="no"
2194   ])
2195   AM_CONDITIONAL(USE_SSH2, test "x$HAVE_SSH2" = "xyes")
2196   AC_SUBST(SSH2_CFLAGS)
2197   AC_SUBST(SSH2_LIBS)
2198 ],,,[AM_CONDITIONAL(USE_SSH2, false)])
2199
2200 dnl **** DASH ****
2201 translit(dnm, m, l) AM_CONDITIONAL(USE_DASH, true)
2202 AG_GST_CHECK_FEATURE(DASH, [DASH plug-in], dash, [
2203   PKG_CHECK_MODULES(LIBXML2, libxml-2.0 >= 2.8, [HAVE_LIBXML2="yes"
2204     HAVE_DASH="yes"], [HAVE_LIBXML2="no"
2205     HAVE_DASH="no"])
2206   AC_SUBST(LIBXML2_CFLAGS)
2207   AC_SUBST(LIBXML2_LIBS)
2208 ])
2209
2210 dnl *** dc1394  ***
2211 translit(dnm, m, l) AM_CONDITIONAL(USE_DC1394, true)
2212 AG_GST_CHECK_FEATURE(DC1394, [libdc1394], dc1394, [
2213    PKG_CHECK_MODULES(LIBDC1394, libdc1394-2 >= 2.0.0, [
2214         if test -z "`$PKG_CONFIG --modversion libdc1394-2 | grep 2.0.0-rc`"; then
2215                 HAVE_DC1394="yes"
2216         else
2217                 HAVE_DC1394="no"
2218         fi
2219    ], [
2220         HAVE_DC1394="no"
2221         AC_MSG_RESULT(no)
2222    ])
2223    AC_SUBST(LIBDC1394_CFLAGS)
2224    AC_SUBST(LIBDC1394_LIBS)
2225 ])
2226
2227 dnl *** decklink  ***
2228 translit(dnm, m, l) AM_CONDITIONAL(USE_DECKLINK, true)
2229 AG_GST_CHECK_FEATURE(DECKLINK, [decklink], decklink, [
2230    HAVE_DECKLINK=no
2231    case "$host" in
2232      *android*)
2233        HAVE_DECKLINK=no
2234        ;;
2235      *-*linux*)
2236        if test "x$HAVE_PTHREAD_H" = "xyes"; then
2237          AC_CHECK_LIB(dl, dlopen,
2238            [
2239             HAVE_DECKLINK=yes
2240             DECKLINK_CXXFLAGS=
2241             DECKLINK_LIBS="-lpthread -ldl"
2242            ])
2243        fi
2244        ;;
2245      *-*darwin*)
2246        if test "x$HAVE_PTHREAD_H" = "xyes"; then
2247          AC_CHECK_LIB(dl, dlopen,
2248            [
2249             HAVE_DECKLINK=yes
2250             DECKLINK_CXXFLAGS=
2251             DECKLINK_LIBS="-lpthread -ldl"
2252             HAVE_DECKLINK_OSX=yes
2253            ])
2254        fi
2255        ;;
2256      *-mingw*)
2257        HAVE_DECKLINK=yes
2258        DECKLINK_CXXFLAGS=
2259        DECKLINK_LIBS="-loleaut32"
2260        HAVE_DECKLINK_WIN=yes
2261        ;;
2262      *)
2263        HAVE_DECKLINK=no
2264        ;;
2265    esac
2266
2267    AC_SUBST(DECKLINK_CXXFLAGS)
2268    AC_SUBST(DECKLINK_LIBS)
2269 ])
2270 AM_CONDITIONAL(DECKLINK_OSX, test "x$HAVE_DECKLINK_OSX" = xyes)
2271 AM_CONDITIONAL(DECKLINK_WIN, test "x$HAVE_DECKLINK_WIN" = xyes)
2272
2273 dnl **** DirectFB ****
2274 translit(dnm, m, l) AM_CONDITIONAL(USE_DIRECTFB, true)
2275 AG_GST_CHECK_FEATURE(DIRECTFB, [directfb], dfbvideosink , [
2276   PKG_CHECK_MODULES(DIRECTFB, directfb >= 0.9.24, HAVE_DIRECTFB="yes", [
2277     HAVE_DIRECTFB="no"
2278   ])
2279 ])
2280
2281 dnl **** Wayland ****
2282 translit(dnm, m, l) AM_CONDITIONAL(USE_WAYLAND, true)
2283 AC_PATH_PROG([wayland_scanner], [wayland-scanner])
2284 AG_GST_CHECK_FEATURE(WAYLAND, [wayland sink], wayland , [
2285   PKG_CHECK_MODULES(WAYLAND, wayland-client >= 1.4.0 libdrm >= 2.4.55 wayland-protocols >= 1.4, [
2286     if test "x$wayland_scanner" != "x"; then
2287       HAVE_WAYLAND="yes"
2288       AC_SUBST(WAYLAND_PROTOCOLS_DATADIR, `$PKG_CONFIG --variable=pkgdatadir wayland-protocols`)
2289     else
2290       AC_MSG_RESULT([wayland-scanner is required to build the wayland plugin])
2291       HAVE_WAYLAND="no"
2292     fi
2293     ],
2294     [ HAVE_WAYLAND="no"
2295   ])
2296 ])
2297
2298 dnl **** WebP ****
2299 translit(dnm, m, l) AM_CONDITIONAL(USE_WEBP, true)
2300 AG_GST_CHECK_FEATURE(WEBP, [WebP], webp , [
2301   PKG_CHECK_MODULES(WEBP, libwebp >= 0.2.1, [
2302     HAVE_WEBP="yes" ], [ HAVE_WEBP="no"
2303   ])
2304   AC_SUBST(WEBP_CFLAGS)
2305   AC_SUBST(WEBP_LIBS)
2306 ])
2307
2308 dnl *** Daala ***
2309 translit(dnm, m, l) AM_CONDITIONAL(USE_DAALA, true)
2310 AG_GST_CHECK_FEATURE(DAALA, [daala], daala, [
2311   if test "x$BUILD_EXPERIMENTAL" = "xyes"; then
2312     PKG_CHECK_MODULES(DAALA, daalaenc daaladec, [
2313             HAVE_DAALA="yes"
2314     ], [
2315             HAVE_DAALA="no"
2316     ])
2317     AC_SUBST(DAALA_CFLAGS)
2318     AC_SUBST(DAALA_LIBS)
2319   fi
2320 ])
2321
2322 dnl *** DTS ***
2323 translit(dnm, m, l) AM_CONDITIONAL(USE_DTS, true)
2324 AG_GST_CHECK_FEATURE(DTS, [dts library], dtsdec, [
2325   HAVE_DTS="yes"
2326   AG_GST_CHECK_LIBHEADER(DTS, dca, dca_init, $LIBM, dca.h,
2327     DTS_LIBS="-ldca $LIBM", HAVE_DTS="no")
2328   if test $HAVE_DTS = "no"; then
2329     AG_GST_CHECK_LIBHEADER(DTS, dts_pic, dts_init, $LIBM, dts.h,
2330       [ DTS_LIBS="-ldts_pic $LIBM"
2331         AC_DEFINE(DTS_OLD, 1, [Define if an old libdts is used])
2332       ])
2333   fi
2334   AC_SUBST(DTS_LIBS)
2335 ])
2336
2337 dnl *** resindvd ***
2338 translit(dnm, m, l) AM_CONDITIONAL(USE_RESINDVD, true)
2339 AG_GST_CHECK_FEATURE(RESINDVD, [resindvd plugin], resindvd, [
2340   PKG_CHECK_MODULES(DVDNAV, dvdnav >= 4.1.2 dvdread >= 4.1.2, HAVE_RESINDVD="yes", [
2341     HAVE_RESINDVD="no"
2342   ])
2343 ])
2344
2345 dnl **** Free AAC Encoder (FAAC) ****
2346 translit(dnm, m, l) AM_CONDITIONAL(USE_FAAC, true)
2347 AG_GST_CHECK_FEATURE(FAAC, [AAC encoder plug-in], faac, [
2348   AG_GST_CHECK_LIBHEADER(FAAC, faac, faacEncOpen, $LIBM, faac.h,
2349     FAAC_LIBS="-lfaac $LIBM")
2350   AC_SUBST(FAAC_LIBS)
2351 ])
2352
2353 dnl **** Free AAC Decoder (FAAD2) ****
2354 translit(dnm, m, l) AM_CONDITIONAL(USE_FAAD, true)
2355 AG_GST_CHECK_FEATURE(FAAD, [FAAD2 AAC decoder plug-in], faad, [
2356   AG_GST_CHECK_LIBHEADER(FAAD, faad, NeAACDecOpen, $LIBM, neaacdec.h, [
2357     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <faad.h>]], [[
2358       #if !defined(FAAD2_VERSION) || !defined(FAAD_FMT_DOUBLE)
2359       #error Not faad2
2360       #elif !defined(LATM)
2361       #error Not faad2 >= 2.7
2362       #endif
2363     ]])],[
2364       HAVE_FAAD="yes"
2365       FAAD_LIBS="-lfaad"
2366     ], [
2367       AC_MSG_WARN([Found libfaad, but version not recent enough. Need faad2 >= 2.7])
2368       HAVE_FAAD="no"
2369     ])
2370   ], [
2371       HAVE_FAAD="no"
2372   ])
2373   AC_SUBST(FAAD_LIBS)
2374 ])
2375
2376 dnl *** fbdev ***
2377 translit(dnm, m, l) AM_CONDITIONAL(USE_FBDEV, true)
2378 AG_GST_CHECK_FEATURE(FBDEV, [linux framebuffer], fbdevsink, [
2379   if test "x$HAVE_FBDEV" != "xyes"; then
2380     AC_CHECK_HEADER([linux/fb.h], HAVE_FBDEV=yes, HAVE_FBDEV=no)
2381   fi
2382 ])
2383
2384 dnl *** fdkaac ***
2385 translit(dnm, m, l) AM_CONDITIONAL(USE_FDK_AAC, true)
2386 AG_GST_CHECK_FEATURE(FDK_AAC, [fdkaac plugin], fdkaac, [
2387   PKG_CHECK_MODULES(FDK_AAC, fdk-aac >= 0.1.4, [
2388     HAVE_FDK_AAC="yes",
2389     HAVE_FDK_AAC_0_1_4="yes"
2390     AC_DEFINE(HAVE_FDK_AAC_0_1_4 1, [Define if we have fdk-aac >= 0.1.4])
2391   ],[
2392     PKG_CHECK_MODULES(FDK_AAC, fdk-aac, HAVE_FDK_AAC="yes", HAVE_FDK_AAC="no")
2393   ])
2394 ])
2395
2396 dnl *** flite ***
2397 translit(dnm, m, l) AM_CONDITIONAL(USE_FLITE, true)
2398 AG_GST_CHECK_FEATURE(FLITE, [Flite plugin], flite, [
2399   AG_GST_CHECK_LIBHEADER(FLITE, flite, flite_init, $LIBM, flite/flite.h,
2400     FLITE_LIBS="-lflite -lflite_cmu_us_kal -lflite_usenglish -lflite_cmulex $LIBM")
2401
2402   AC_SUBST(FLITE_CFLAGS)
2403   AC_SUBST(FLITE_LIBS)
2404 ])
2405
2406 dnl *** gsm ***
2407 translit(dnm, m, l) AM_CONDITIONAL(USE_GSM, true)
2408 AG_GST_CHECK_FEATURE(GSM, [GSM library], gsmenc gsmdec, [
2409   AG_GST_CHECK_LIBHEADER(GSM, gsm, gsm_create, , gsm.h, GSM_LIBS="-lgsm")
2410   if test $HAVE_GSM != "yes"; then
2411     AG_GST_CHECK_LIBHEADER(GSM, gsm, gsm_create, , gsm/gsm.h, GSM_LIBS="-lgsm")
2412     if test $HAVE_GSM = "yes"; then
2413       AC_DEFINE(GSM_HEADER_IN_SUBDIR, 1, [Define if GSM header in gsm/ subdir])
2414     fi
2415   fi
2416   AC_SUBST(GSM_LIBS)
2417 ])
2418
2419 dnl *** fluidSynth ***
2420 translit(dnm, m, l) AM_CONDITIONAL(USE_FLUIDSYNTH, true)
2421 AG_GST_CHECK_FEATURE(FLUIDSYNTH, [fluidsynth], fluidsynth, [
2422   PKG_CHECK_MODULES(FLUIDSYNTH, fluidsynth >= 1.0, HAVE_FLUIDSYNTH="yes", [
2423     HAVE_FLUIDSYNTH="no"
2424   ])
2425 ])
2426
2427 dnl *** kate ***
2428 translit(dnm, m, l) AM_CONDITIONAL(USE_KATE, true)
2429 AG_GST_CHECK_FEATURE(KATE, [Kate], kate, [
2430   PKG_CHECK_MODULES(KATE, kate >= 0.1.7, HAVE_KATE="yes", [
2431     HAVE_KATE="no"
2432   ])
2433   AC_SUBST(KATE_CFLAGS)
2434   AC_SUBST(KATE_LIBS)
2435   PKG_CHECK_MODULES(TIGER, tiger >= 0.3.2,
2436     [
2437       HAVE_TIGER="yes"
2438       AC_DEFINE(HAVE_TIGER, 1, [Define if libtiger is available])
2439     ],
2440     [
2441       HAVE_TIGER="no"
2442     ]
2443   )
2444   AM_CONDITIONAL(USE_TIGER, test "x$HAVE_TIGER" = "xyes")
2445   AC_SUBST(TIGER_CFLAGS)
2446   AC_SUBST(TIGER_LIBS)
2447 ],,,[AM_CONDITIONAL(USE_TIGER, false)])
2448
2449 dnl *** kms ***
2450 translit(dnm, m, l) AM_CONDITIONAL(USE_KMS, true)
2451 AG_GST_CHECK_FEATURE(KMS, [drm/kms libraries], kms, [
2452   AG_GST_PKG_CHECK_MODULES(GST_ALLOCATORS, gstreamer-allocators-1.0)
2453   PKG_CHECK_MODULES([KMS_DRM], [libdrm >= 2.4.55], HAVE_KMS=yes, HAVE_KMS=no)
2454 ])
2455
2456 dnl *** ladspa ***
2457 translit(dnm, m, l) AM_CONDITIONAL(USE_LADSPA, true)
2458 AG_GST_CHECK_FEATURE(LADSPA, [ladspa], ladspa, [
2459   AC_CHECK_HEADER(ladspa.h, HAVE_LADSPA="yes", HAVE_LADSPA="no")
2460
2461   PKG_CHECK_MODULES(LRDF, lrdf, HAVE_LRDF=yes, HAVE_LRDF=no)
2462   if test $HAVE_LRDF = "yes"; then
2463     AC_DEFINE(HAVE_LRDF, 1, [Define if we have liblrdf])
2464   fi
2465   AC_SUBST(LRDF_LIBS)
2466   AC_SUBST(LRDF_CFLAGS)
2467 ])
2468
2469 dnl *** LV2 ***
2470 translit(dnm, m, l) AM_CONDITIONAL(USE_LV2, true)
2471 AG_GST_CHECK_FEATURE(LV2, [lv2], lv2, [
2472   PKG_CHECK_MODULES(LILV, lilv-0 >= 0.22, [
2473     HAVE_LV2="yes",
2474     HAVE_LILV_0_22="yes"
2475     AC_DEFINE(HAVE_LILV_0_22, 1, [Define if we have liblilv >= 0.22])
2476   ],[
2477     PKG_CHECK_MODULES(LILV, lilv-0 >= 0.16, HAVE_LV2="yes", HAVE_LV2="no")
2478   ])
2479   AC_SUBST(LILV_CFLAGS)
2480   AC_SUBST(LILV_LIBS)
2481 ])
2482
2483 dnl *** libde265 ***
2484 translit(dnm, m, l) AM_CONDITIONAL(USE_LIBDE265, true)
2485 AG_GST_CHECK_FEATURE(LIBDE265, [libde265 HEVC/H.265 decoder], libde265, [
2486   PKG_CHECK_MODULES(LIBDE265, libde265 >= 0.9, HAVE_LIBDE265="yes", HAVE_LIBDE265="no")
2487   AC_SUBST(LIBDE265_CFLAGS)
2488   AC_SUBST(LIBDE265_LIBS)
2489 ])
2490
2491 dnl *** libmms ***
2492 translit(dnm, m, l) AM_CONDITIONAL(USE_LIBMMS, true)
2493 AG_GST_CHECK_FEATURE(LIBMMS, [mms protocol library], libmms, [
2494   dnl check with pkg-config first
2495   PKG_CHECK_MODULES(LIBMMS, libmms >= 0.4, HAVE_LIBMMS="yes", [
2496     HAVE_LIBMMS="no"
2497   ])
2498 ])
2499 AC_SUBST(LIBMMS_LIBS)
2500
2501
2502 dnl *** libsrtp ***
2503 translit(dnm, m, l) AM_CONDITIONAL(USE_SRTP, true)
2504 AG_GST_CHECK_FEATURE(SRTP, [srtp library], srtp, [
2505   PKG_CHECK_MODULES(SRTP, libsrtp, HAVE_SRTP="yes",
2506     AG_GST_CHECK_LIBHEADER(SRTP, srtp, srtp_init, , srtp/srtp.h, SRTP_LIBS="-lsrtp")
2507   )
2508   AC_SUBST(SRTP_LIBS)
2509   AC_SUBST(SRTP_CFLAGS)
2510 ])
2511
2512 dnl *** dtls ***
2513 translit(dnm, m, l) AM_CONDITIONAL(USE_DTLS, true)
2514 AG_GST_CHECK_FEATURE(DTLS, [DTLS plugin], dtls, [
2515   PKG_CHECK_MODULES(DTLS, [ openssl >= 1.0.1  libcrypto ], [
2516     HAVE_DTLS="yes"
2517     AC_SUBST(DTLS_CFLAGS)
2518     AC_SUBST(DTLS_LIBS)
2519   ], [
2520     HAVE_DTLS="no"
2521   ])
2522 ])
2523
2524 dnl *** ttml ***
2525 translit(dnm, m, l) AM_CONDITIONAL(USE_TTML, true)
2526 AG_GST_CHECK_FEATURE(TTML, [TTML plugin], ttml, [
2527   PKG_CHECK_MODULES(TTML, [ libxml-2.0 >= 2.9.2 pango cairo pangocairo ], [
2528     HAVE_TTML="yes"
2529   ], [
2530     HAVE_TTML="no"
2531   ])
2532 ])
2533
2534 dnl *** modplug ***
2535 translit(dnm, m, l) AM_CONDITIONAL(USE_MODPLUG, true)
2536 AG_GST_CHECK_FEATURE(MODPLUG, modplug, modplug, [
2537   if test "x$HAVE_CXX" != "xyes"; then
2538     AC_MSG_WARN([Not compiling modplug plugin as it requires a C++ compiler])
2539     HAVE_MODPLUG="no"
2540   else
2541     PKG_CHECK_MODULES(MODPLUG, libmodplug, HAVE_MODPLUG="yes", HAVE_MODPLUG="no")
2542   fi
2543   AC_SUBST(MODPLUG_CFLAGS)
2544   AC_SUBST(MODPLUG_LIBS)
2545 ])
2546
2547 dnl *** mjpegtools version info ***
2548 dnl some may prefer older version (given quirks above)
2549 dnl hm, no version info seems available within mjpegtools headers
2550 dnl and API really moves along
2551 echo
2552 PKG_CHECK_EXISTS(mjpegtools >= 1.6.1.93 mjpegtools < 1.8.0, [
2553   mjpegtools_api=10601
2554 ], [
2555   PKG_CHECK_EXISTS(mjpegtools >= 1.8.0 mjpegtools < 1.9.0, [
2556     mjpegtools_api=10800
2557   ], [
2558     PKG_CHECK_EXISTS(mjpegtools >= 2.0.0, [
2559       mjpegtools_api=20000
2560     ], [
2561       PKG_CHECK_MODULES(MJPEG, mjpegtools >= 1.9.0 mjpegtools < 2.0.0, [
2562         dnl logging API changed in release candidates
2563         OLD_CFLAGS="$CFLAGS"
2564         OLD_LIBS="$LIBS"
2565         CFLAGS="$MJPEG_CFLAGS"
2566         LIBS="$LIBS $MJPEG_LIBS -lmjpegutils $LIBM $PTHREAD_LIBS"
2567         AC_CHECK_FUNC(mjpeg_loglev_t, [
2568           mjpegtools_api=10903
2569           ], [
2570           mjpegtools_api=10900
2571           ])
2572         CFLAGS="$OLD_CFLAGS"
2573         LIBS="$OLD_LIBS"
2574       ], [
2575         mjpegtools_api=0
2576       ])
2577     ])
2578   ])
2579 ])
2580 AC_DEFINE_UNQUOTED(GST_MJPEGTOOLS_API, $mjpegtools_api,
2581   [mjpegtools API evolution])
2582
2583 dnl *** mpeg2enc ***
2584 translit(dnm, m, l) AM_CONDITIONAL(USE_MPEG2ENC, true)
2585 AG_GST_CHECK_FEATURE(MPEG2ENC, [mpeg2enc], mpeg2enc, [
2586   HAVE_MPEG2ENC="no"
2587   dnl we require a c++ compiler for this one
2588   if [ test x$HAVE_CXX = xyes ]; then
2589     dnl libmpeg2enc was first included in mjpegtools-1.6.2-rc3 (1.6.1.92)
2590     dnl since many distros include mjpegtools specifically without mplex
2591     dnl and mpeg2enc, we check for mpeg2enc on its own, too.
2592     PKG_CHECK_MODULES(MPEG2ENC, mjpegtools >= 1.6.1.93, [
2593       dnl HACK because mpeg2enc 1.8.0 header files have a spurious 'include config.h'
2594       touch config.h
2595       dnl switch over to c++ to test things
2596       AC_LANG([C++])
2597       OLD_CPPFLAGS="$CPPFLAGS"
2598       dnl HACK as above
2599       CPPFLAGS_GOOD="$CPPFLAGS $MPEG2ENC_CFLAGS"
2600       CPPFLAGS="$CPPFLAGS_GOOD -I."
2601       dnl check headers
2602       mpeg2enc_headers_ok=no
2603       AC_CHECK_HEADER([mpeg2encoder.hh], [
2604         MPEG2ENC_LIBS="$MPEG2ENC_LIBS -lmpeg2encpp $LIBM $PTHREAD_LIBS"
2605         OLD_LIBS="$LIBS"
2606         LIBS="$LIBS $MPEG2ENC_LIBS"
2607         AC_MSG_CHECKING([for valid mpeg2enc objects])
2608         AC_RUN_IFELSE([AC_LANG_SOURCE([[
2609           #include <mpeg2encoder.hh>
2610           #include <mpeg2encoptions.hh>
2611
2612           int
2613           main (int   argc,
2614                 char *argv[])
2615           {
2616             MPEG2EncOptions *options = new MPEG2EncOptions ();
2617             MPEG2Encoder *encoder = new MPEG2Encoder (*options);
2618             return 0;
2619           }
2620         ]])],[
2621           AC_MSG_RESULT(yes)
2622           dnl so far so good, let's check more things:
2623           dnl mjpegtools-1.8.0 does not install the required
2624           dnl mpeg2syntaxcodes.h header by default, and a new release
2625           dnl is not in sight, so check for this oversight in case
2626           dnl distros or folks have fixed this themselves
2627           if test "$mjpegtools_api" -ge "10800"; then
2628             AC_CHECK_HEADER([mpeg2syntaxcodes.h], [
2629                 mpeg2enc_headers_ok=yes
2630               ], [
2631                 mpeg2enc_headers_ok=no
2632               ])
2633           else
2634             mpeg2enc_headers_ok=yes
2635           fi
2636           if test "x$mpeg2enc_headers_ok" = "xyes"; then
2637             HAVE_MPEG2ENC="yes"
2638           fi
2639           CPPFLAGS="$CPPFLAGS_GOOD"
2640           AC_SUBST(MPEG2ENC_CFLAGS)
2641           AC_SUBST(MPEG2ENC_LIBS)
2642         ],[
2643           AC_MSG_RESULT(no)
2644         ],[])
2645         LIBS="$OLD_LIBS"
2646       ])
2647
2648       CPPFLAGS="$OLD_CPPFLAGS"
2649       AC_LANG([C])
2650     ], [
2651       HAVE_MPEG2ENC="no"
2652     ])
2653   fi
2654 ])
2655
2656 dnl *** mplex ***
2657 translit(dnm, m, l) AM_CONDITIONAL(USE_MPLEX, true)
2658 AG_GST_CHECK_FEATURE(MPLEX, [mplex], mplex, [
2659   HAVE_MPLEX="no"
2660   dnl we require a c++ compiler for this one
2661   if [ test x$HAVE_CXX = xyes ]; then
2662     dnl libmplex was first included in mjpegtools-1.6.2-rc4 (1.6.1.93)
2663     dnl since many distros include mjpegtools specifically without mplex
2664     dnl and mpeg2enc, we check for mplex on its own, too.
2665     dnl libmplex < 1.9rc? has fuzzy ABI, valgrind and other problems
2666     PKG_CHECK_MODULES(MPLEX, mjpegtools >= 1.9.0, [
2667       dnl HACK because mplex 2.0.0 header files have a spurious 'include config.h'
2668       touch config.h
2669       dnl switch over to c++ to test things
2670       AC_LANG([C++])
2671       OLD_CPPFLAGS="$CPPFLAGS"
2672       dnl HACK as above
2673       CPPFLAGS_GOOD="$CPPFLAGS $MPLEX_CFLAGS"
2674       CPPFLAGS="$CPPFLAGS_GOOD -I."
2675       AC_CHECK_HEADER(interact.hpp, [
2676         MPLEX_LIBS="$MPLEX_LIBS -lmplex2 $LIBM"
2677         OLD_LIBS="$LIBS"
2678         LIBS="$LIBS $MPLEX_LIBS"
2679         OLD_LDFLAGS="$LDFLAGS"
2680         LDFLAGS="$LDFLAGS $MPLEX_LDFLAGS"
2681         dnl older libmplex uses off_t SegmentSize (), which leads to fuzzy ABI;
2682         dnl don't want this here
2683         AC_MSG_CHECKING([for valid mplex objects])
2684         AC_RUN_IFELSE([AC_LANG_SOURCE([[
2685
2686 #include <interact.hpp>
2687 #include <outputstrm.hpp>
2688 #include <multiplexor.hpp>
2689 int
2690 main (int   argc,
2691       char *argv[])
2692 {
2693   class TestOutputStream : public OutputStream {
2694   public:
2695     TestOutputStream () : OutputStream () { }
2696     void Write (uint8_t *a, unsigned int b) { }
2697     void NextSegment () { }
2698     uint64_t SegmentSize () { }
2699     void Close () { }
2700     int Open () { }
2701 };
2702   MultiplexJob *job = new MultiplexJob ();
2703   vector<IBitStream *> inputs;
2704   job->SetupInputStreams (inputs);
2705   TestOutputStream *out = new TestOutputStream ();
2706   Multiplexor *mux = new Multiplexor(*job, *out, NULL);
2707   return 0;
2708 }
2709         ]])],[
2710           HAVE_MPLEX="yes"
2711           CPPFLAGS="$CPPFLAGS_GOOD"
2712           AC_SUBST(MPLEX_CFLAGS)
2713           AC_SUBST(MPLEX_LIBS)
2714           AC_SUBST(MPLEX_LDFLAGS)
2715           AC_MSG_RESULT(yes)
2716         ],[AC_MSG_RESULT(no)],[])
2717         LIBS="$OLD_LIBS"
2718         LDFLAGS="$OLD_LDFLAGS"
2719       ])
2720       CPPFLAGS="$OLD_CPPFLAGS"
2721       AC_LANG([C])
2722     ], HAVE_MPLEX="no")
2723   fi
2724 ])
2725
2726 dnl *** musepack ***
2727 translit(dnm, m, l) AM_CONDITIONAL(USE_MUSEPACK, true)
2728 AG_GST_CHECK_FEATURE(MUSEPACK, [musepackdec], musepack, [
2729   AC_CHECK_HEADER([mpc/mpcdec.h], [
2730     HAVE_MUSEPACK="yes"
2731     MUSEPACK_LIBS="-lmpcdec"
2732     AC_SUBST(MUSEPACK_LIBS)
2733     ], [AC_CHECK_HEADER([mpcdec/mpcdec.h], [
2734       HAVE_MUSEPACK="yes"
2735       MUSEPACK_LIBS="-lmpcdec"
2736       AC_DEFINE(MPC_IS_OLD_API, 1, [Define if the old MusePack API is used])
2737       AC_SUBST(MUSEPACK_LIBS)
2738     ], [HAVE_MUSEPACK="no"])])
2739 ])
2740
2741 dnl *** neon ***
2742 translit(dnm, m, l) AM_CONDITIONAL(USE_NEON, true)
2743 AG_GST_CHECK_FEATURE(NEON, [neon http client plugins], neonhttpsrc, [
2744   PKG_CHECK_MODULES(NEON, neon >= 0.27.0  neon <= 0.30.99, HAVE_NEON="yes", [
2745     HAVE_NEON="no"
2746   ])
2747   AC_SUBST(NEON_CFLAGS)
2748   AC_SUBST(NEON_LIBS)
2749 ])
2750
2751 dnl *** ofa ***
2752 translit(dnm, m, l) AM_CONDITIONAL(USE_OFA, true)
2753 AG_GST_CHECK_FEATURE(OFA, [ofa plugins], ofa, [
2754   PKG_CHECK_MODULES(OFA, libofa >= 0.9.3, HAVE_OFA="yes", [
2755     HAVE_OFA="no"
2756   ])
2757   AC_SUBST(OFA_CFLAGS)
2758   AC_SUBST(OFA_LIBS)
2759 ])
2760
2761 dnl *** OpenAL ***
2762 translit(dnm, m, l) AM_CONDITIONAL(USE_OPENAL, true)
2763 AG_GST_CHECK_FEATURE(OPENAL, [OpenAL plugin], openal, [
2764   PKG_CHECK_MODULES(OPENAL, openal >= 1.14, HAVE_OPENAL="yes", [
2765     HAVE_OPENAL="no"
2766   ])
2767   AC_SUBST(OPENAL_CFLAGS)
2768   AC_SUBST(OPENAL_LIBS)
2769 ])
2770
2771 dnl *** opencv ***
2772 translit(dnm, m, l) AM_CONDITIONAL(USE_OPENCV, true)
2773 AG_GST_CHECK_FEATURE(OPENCV, [opencv plugins], opencv, [
2774   dnl we specify a max. version too because we set CV_NO_BACKWARD_COMPATIBILITY
2775   dnl and don't want the build to break when a new opencv version comes out.
2776   dnl Need to adjust this upwards once we know that our code compiles fine with
2777   dnl a new version and the no-backward-compatibility define. (There doesn't
2778   dnl seem to be a switch to suppress the warnings the cvcompat.h header
2779   dnl causes.)
2780   PKG_CHECK_MODULES(OPENCV, opencv >= 2.3.0 opencv <= 3.2.0 , [
2781     AC_PROG_CXX
2782     AC_LANG([C++])
2783     OLD_CPPFLAGS=$CPPFLAGS
2784     CPPFLAGS=$OPENCV_CFLAGS
2785     something_not_found=no
2786     AC_CHECK_HEADERS([opencv2/core/core_c.h \
2787                       opencv2/core/version.hpp \
2788                       opencv2/highgui/highgui_c.h \
2789                       opencv2/imgproc/imgproc.hpp \
2790                       opencv2/imgproc/imgproc_c.h \
2791                       opencv2/objdetect/objdetect.hpp \
2792                       opencv2/video/background_segm.hpp], [], [something_not_found=yes])
2793
2794     dnl Only required for OpenCV >= 3, we have compat code for older versions
2795     PKG_CHECK_MODULES(OPENCV_3, opencv >= 3, [
2796       dnl check opencv_contrib headers (not always present in opencv distributions)
2797       AC_CHECK_HEADERS([opencv2/bgsegm.hpp], [], [something_not_found=yes])],
2798       [NOT_A_PROBLEM=yes])
2799
2800     CPPFLAGS=$OLD_CPPFLAGS
2801     AC_LANG([C])
2802
2803     if test $something_not_found = "yes"; then
2804       AC_MSG_RESULT([not all opencv2 headers were found])
2805       HAVE_OPENCV="no"
2806     else
2807       HAVE_OPENCV="yes"
2808     fi
2809   ], [
2810     HAVE_OPENCV="no"
2811   ])
2812   OPENCV_PREFIX="`$PKG_CONFIG --variable=prefix opencv`"
2813   AC_DEFINE_UNQUOTED(OPENCV_PREFIX, "$OPENCV_PREFIX", [opencv install prefix])
2814   AC_SUBST(OPENCV_PREFIX)
2815   AC_SUBST(OPENCV_CFLAGS)
2816   AC_SUBST(OPENCV_LIBS)
2817   dnl the OpenCV prefix is used at runtime for some object properties, and also
2818   dnl used here to detect which directory is the correct one. For the second
2819   dnl case, make sure the right sysroot is used, ensuring correct behavior
2820   dnl during cross compilation.
2821   if test -d "$PKG_CONFIG_SYSROOT_DIR/$OPENCV_PREFIX/share/opencv/"; then
2822     AC_DEFINE_UNQUOTED(OPENCV_PATH_NAME, ["opencv"], [OpenCV path name])
2823   else
2824     AC_DEFINE_UNQUOTED(OPENCV_PATH_NAME, ["OpenCV"], [OpenCV path name])
2825   fi
2826 ])
2827
2828 dnl *** OpenEXR ***
2829 translit(dnm, m, l) AM_CONDITIONAL(USE_OPENEXR, true)
2830 AG_GST_CHECK_FEATURE(OPENEXR, [openexr library], openexr, [
2831   AG_GST_PKG_CHECK_MODULES(OPENEXR, OpenEXR)
2832 ])
2833
2834 dnl *** openh264 ***
2835 translit(dnm, m, l) AM_CONDITIONAL(USE_OPENH264, true)
2836 AG_GST_CHECK_FEATURE(OPENH264, [openh264 library], openh264, [
2837   AG_GST_PKG_CHECK_MODULES(OPENH264, openh264 >= 1.3.0)
2838 ])
2839
2840 dnl *** OpenJPEG ***
2841 translit(dnm, m, l) AM_CONDITIONAL(USE_OPENJPEG, true)
2842 AG_GST_CHECK_FEATURE(OPENJPEG, [openjpeg library], openjpeg, [
2843   HAVE_OPENJPEG="no"
2844   AG_GST_PKG_CHECK_MODULES(OPENJPEG, libopenjp2 >= 2.0)
2845   if test x"$HAVE_OPENJPEG" = x"yes"; then
2846     dnl minor API changes in v2.1
2847     AG_GST_PKG_CHECK_MODULES(OPENJPEG_2_1, libopenjp2 >= 2.1)
2848     if test x"$HAVE_OPENJPEG" = x"yes"; then
2849       AC_DEFINE([HAVE_OPENJPEG_2_1], 1, [Define if OpenJPEG 2.1 is used])
2850     fi
2851   else
2852     # Fallback to v1.5
2853     OPENJPEG_LIBS=""
2854     PKG_CHECK_MODULES(OPENJPEG, libopenjpeg1,
2855       HAVE_OPENJPEG="yes",
2856       AG_GST_CHECK_LIBHEADER(OPENJPEG, openjpeg, opj_version, , openjpeg.h, OPENJPEG_LIBS="-lopenjpeg")
2857     )
2858     if test x"$HAVE_OPENJPEG" = x"yes"; then
2859       AC_DEFINE([HAVE_OPENJPEG_1], 1, [Define if OpenJPEG 1 is used])
2860     fi
2861   fi
2862   AC_SUBST(OPENJPEG_CFLAGS)
2863   AC_SUBST(OPENJPEG_LIBS)
2864 ])
2865
2866 dnl *** OpenMPT ***
2867 translit(dnm, m, l) AM_CONDITIONAL(USE_OPENMPT, true)
2868 AG_GST_CHECK_FEATURE(OPENMPT, openmpt, openmpt, [
2869   PKG_CHECK_MODULES(OPENMPT, libopenmpt, HAVE_OPENMPT="yes", HAVE_OPENMPT="no")
2870   AC_SUBST(OPENMPT_CFLAGS)
2871   AC_SUBST(OPENMPT_LIBS)
2872 ])
2873
2874 dnl *** OpenNI2 ***
2875 translit(dnm, m, l) AM_CONDITIONAL(USE_OPENNI2, true)
2876 AG_GST_CHECK_FEATURE(OPENNI2, [openni2 library], openni2, [
2877   PKG_CHECK_MODULES(OPENNI2, libopenni2 >= 0.26, HAVE_OPENNI2="yes", [ HAVE_OPENNI2="no" ] )
2878   AC_SUBST(OPENNI2_CFLAGS)
2879   AC_SUBST(OPENNI2_LIBS)
2880 ])
2881
2882 dnl *** Opus ***
2883 translit(dnm, m, l) AM_CONDITIONAL(USE_OPUS, true)
2884 AG_GST_CHECK_FEATURE(OPUS, [opus], opus, [
2885   PKG_CHECK_MODULES(OPUS, opus >= 0.9.4, [
2886           AC_DEFINE([HAVE_OPUS], 1, [Define if Opus >= 0.9.4 is installed])
2887           HAVE_OPUS="yes"
2888   ], [
2889           HAVE_OPUS="no"
2890   ])
2891   AC_SUBST(OPUS_CFLAGS)
2892   AC_SUBST(OPUS_LIBS)
2893 ])
2894
2895 dnl *** rsvg ***
2896 translit(dnm, m, l) AM_CONDITIONAL(USE_RSVG, true)
2897 AG_GST_CHECK_FEATURE(RSVG, [rsvg decoder], rsvg, [
2898   AG_GST_PKG_CHECK_MODULES(RSVG, librsvg-2.0 >= 2.36.2)
2899 ])
2900
2901 dnl *** gl ***
2902 translit(dnm, m, l) AM_CONDITIONAL(USE_GL, true)
2903 AG_GST_CHECK_FEATURE(GL, [gl elements], gl, [
2904   HAVE_GL="no"
2905
2906   if test x"$USE_OPENGL" = x"yes" -o x"$USE_GLES2" = x"yes"; then
2907     HAVE_GL="yes"
2908   fi
2909 ])
2910
2911 dnl *** gtk+ ***
2912 HAVE_GTK3_GL="no"
2913 translit(dnm, m, l) AM_CONDITIONAL(USE_GTK3, true)
2914 AG_GST_CHECK_FEATURE(GTK3, [Gtk+ elements], gtk, [
2915   PKG_CHECK_MODULES(GTK3, gtk+-3.0, [
2916     AC_DEFINE([HAVE_GTK3], 1, [Define if Gtk+ 3.0 is installed])
2917     HAVE_GTK3="yes"
2918   ], [
2919     HAVE_GTK3="no"
2920   ])
2921   PKG_CHECK_MODULES(GTK3_GL, gtk+-3.0 >= 3.15.0, [
2922     GDK_WINDOWING="no"
2923     if test "x$GST_GL_HAVE_WINDOW_X11" = "x1" -a "x$GST_GL_HAVE_PLATFORM_GLX" = "x1"; then
2924       PKG_CHECK_MODULES(GTK3_X11, gtk+-x11-3.0, [
2925         GTK3_CFLAGS="$GTK3_CFLAGS $GTK3_X11_CFLAGS"
2926         GTK3_LIBS="$GTK3_LIBS $GTK3_X11_LIBS"
2927         GDK_WINDOWING="yes"
2928       ], [AC_MSG_NOTICE([Could not find Gtk X11 integration])])
2929     fi
2930     if test "x$GST_GL_HAVE_WINDOW_WAYLAND" = "x1" -a "x$GST_GL_HAVE_PLATFORM_EGL" = "x1"; then
2931       PKG_CHECK_MODULES(GTK3_WAYLAND, gtk+-wayland-3.0, [
2932         GTK3_CFLAGS="$GTK3_CFLAGS $GTK3_WAYLAND_CFLAGS"
2933         GTK3_LIBS="$GTK3_LIBS $GTK3_WAYLAND_LIBS"
2934         GDK_WINDOWING="yes"
2935       ], [AC_MSG_NOTICE([Could not find Gtk Wayland integration])])
2936     fi
2937     if test "x$GDK_WINDOWING" = "xyes"; then
2938       AC_DEFINE([HAVE_GTK3_GL], 1, [Define if Gtk+ 3.0 GL is installed])
2939       HAVE_GTK3_GL="yes"
2940     fi
2941   ], [
2942       HAVE_GTK3_GL="no"
2943   ])
2944 ])
2945 AM_CONDITIONAL(USE_GTK3_GL, test "x$HAVE_GTK3_GL" = "xyes")
2946
2947 dnl *** Qt ***
2948 translit(dnm, m, l) AM_CONDITIONAL(USE_QT, true)
2949 AG_GST_CHECK_FEATURE(QT, [Qt elements], qt, [
2950   PKG_CHECK_MODULES(QT, Qt5Core Qt5Gui Qt5Qml Qt5Quick >= 5.4.0, [
2951       QT_PATH=`$PKG_CONFIG --variable=exec_prefix Qt5Core`
2952       QT_HOST_PATH=`$PKG_CONFIG --variable=host_bins Qt5Core`
2953       AC_ARG_WITH([moc],
2954            AS_HELP_STRING([--with-moc], [Set location of qt moc tool]),
2955            [MOC=$withval])
2956       AC_PATH_PROGS(MOC, [moc-qt5 moc], [moc], ["${QT_HOST_PATH}" "${QT_PATH}/bin"])
2957       AC_ARG_WITH([rcc],
2958            AS_HELP_STRING([--with-rcc], [Set location of qt rcc tool]),
2959            [RCC=$withval])
2960       AC_PATH_PROGS(RCC, [rcc-qt5 rcc], [rcc], ["${QT_HOST_PATH}" "${QT_PATH}/bin"])
2961       AC_ARG_WITH([uic],
2962                AS_HELP_STRING([--with-uic], [Set location of qt uic tool]),
2963                [UIC=$withval])
2964       AC_PATH_PROGS(UIC, [uic-qt5 uic], [uic], ["${QT_HOST_PATH}" "${QT_PATH}/bin"])
2965       if test "x$MOC" = "x" || test "x$UIC" = "x" || test "x$RCC" = "x"; then
2966         AC_MSG_WARN([One of the required qt build programs was not found])
2967         HAVE_QT="no"
2968       else
2969         HAVE_QT="yes"
2970         HAVE_QT_WINDOWING="no"
2971         QT_VERSION="`$PKG_CONFIG --define-prefix --modversion Qt5Core`"
2972         QPA_INCLUDE_PATH=`$PKG_CONFIG --variable=includedir Qt5Core`/QtGui/${QT_VERSION}/QtGui
2973         AS_IF([test -f "$PKG_CONFIG_SYSROOT_DIR/$QPA_INCLUDE_PATH/qpa/qplatformnativeinterface.h"], [
2974           QT_CFLAGS="$QT_CFLAGS -I$PKG_CONFIG_SYSROOT_DIR/$QPA_INCLUDE_PATH"
2975           HAVE_QT_QPA_HEADER="yes"
2976         ], [AC_MSG_NOTICE([Cannot find QPA])])
2977         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
2978           PKG_CHECK_MODULES(QT_X11, Qt5X11Extras, [
2979             AC_DEFINE([HAVE_QT_X11], [], [Define if Qt X11 integration is installed])
2980             QT_CFLAGS="$QT_CFLAGS $QT_X11_CFLAGS"
2981             QT_LIBS="$QT_LIBS $QT_X11_LIBS"
2982             HAVE_QT_WINDOWING="yes"
2983           ], [AC_MSG_NOTICE([Could not find Qt X11 integration])])
2984         fi
2985         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
2986           PKG_CHECK_MODULES(QT_WAYLAND, Qt5WaylandClient, [
2987             AC_DEFINE([HAVE_QT_WAYLAND], [],
2988                 [Define if Qt Wayland integration is installed])
2989             QT_CFLAGS="$QT_CFLAGS $QT_WAYLAND_CFLAGS"
2990             QT_LIBS="$QT_LIBS $QT_WAYLAND_LIBS"
2991             HAVE_QT_WINDOWING="yes"
2992           ], [AC_MSG_NOTICE([Could not find Qt Wayland integration])])
2993         fi
2994         if test "x$GST_GL_HAVE_PLATFORM_EGL" = "x1"; then
2995           if test "x$GST_GL_HAVE_WINDOW_ANDROID" = "x1"; then
2996             PKG_CHECK_MODULES(QT_ANDROID, Qt5AndroidExtras, [
2997               # c++ on android requires a standard library and there are multiple
2998               # choices.  cerbero provides a pkg-config file the describes a choice
2999               # so try to use that.  Outside cerbero one has to pass these flags
3000               # manually for the library one is using
3001               PKG_CHECK_MODULES(GNUSTL, gnustl, [
3002                 QT_CFLAGS="$QT_CFLAGS $GNUSTL_CFLAGS"
3003                 QT_LIBS="$QT_LIBS $GNUSTL_LIBS"
3004                 ], [
3005                 AC_MSG_NOTICE([Could not find Standard C++ library])])
3006               AC_DEFINE([HAVE_QT_EGLFS], [],
3007                 [Define if Qt eglfs integration is installed])
3008               QT_CFLAGS="$QT_CFLAGS $QT_ANDROID_CFLAGS"
3009               QT_LIBS="$QT_LIBS $QT_ANDROID_LIBS"
3010               HAVE_QT_WINDOWING="yes"
3011             ], [AC_MSG_NOTICE([Could not find Qt Android integration])])
3012           else
3013               AC_DEFINE([HAVE_QT_EGLFS], [],
3014                 [Define if Qt eglfs integration is installed])
3015               HAVE_QT_WINDOWING="yes"
3016           fi
3017         fi
3018         if test "x$GST_GL_HAVE_WINDOW_COCOA" = "x1" -a "x$GST_GL_HAVE_PLATFORM_CGL" = "x1"; then
3019           PKG_CHECK_MODULES(QT_MAC, Qt5MacExtras, [
3020             AC_DEFINE([HAVE_QT_MAC], [],
3021                 [Define if Qt Mac integration is installed])
3022             QT_LIBDIR=`$PKG_CONFIG --variable=libdir Qt5Core`
3023             QT_CFLAGS="$QT_CFLAGS $QT_MAC_CFLAGS -F$QT_LIBDIR -framework QtCore -framework QtGui -framework QtQuick -framework QtQml -framework QtMacExtras"
3024             QT_LIBS="$QT_LIBS $QT_MAC_LIBS"
3025             HAVE_QT_WINDOWING="yes"
3026           ], [AC_MSG_NOTICE([Could not find Qt Mac integration])])
3027         fi
3028         if test "x$GST_GL_HAVE_WINDOW_EAGL" = "x1" -a "x$GST_GL_HAVE_PLATFORM_EAGL" = "x1"; then
3029           if test "x$HAVE_IOS" = "xyes"; then
3030             # iOS doesn't have its own extras package so if we have the core
3031             # modules we are good to go
3032             AC_DEFINE([HAVE_QT_IOS], [],
3033                 [Define if Qt iOS integration is installed])
3034             HAVE_QT_WINDOWING="yes"
3035           fi
3036         fi
3037         if test "x$HAVE_QT_WINDOWING" = "xno"; then
3038           AC_MSG_WARN([Could not find any Qt Windowing integration])
3039           HAVE_QT="no"
3040         fi
3041         AC_SUBST([QT_CFLAGS])
3042         AC_SUBST([QT_LIBS])
3043       fi
3044   ], [
3045       HAVE_QT="no"
3046   ])
3047 ])
3048
3049 dnl *** Vulkan ***
3050 translit(dnm, m, l) AM_CONDITIONAL(USE_VULKAN, true)
3051 AG_GST_CHECK_FEATURE(VULKAN, [Vulkan elements], vulkan, [
3052   AC_CHECK_HEADER(vulkan/vulkan.h, [
3053     AC_CHECK_LIB(vulkan, vkCreateDevice, [
3054       VULKAN_LIBS="-lvulkan"
3055       AC_SUBST(VULKAN_LIBS)
3056       if test "x$GST_VULKAN_HAVE_WINDOW_XCB" = "x1"; then
3057         HAVE_VULKAN="yes"
3058       fi
3059       if test "x$GST_VULKAN_HAVE_WINDOW_WAYLAND" = "x1"; then
3060         HAVE_VULKAN="yes"
3061       fi
3062     ], [])
3063   ], [])
3064 ])
3065
3066 dnl *** teletextdec ***
3067 translit(dnm, m, l) AM_CONDITIONAL(USE_TELETEXTDEC, true)
3068 AG_GST_CHECK_FEATURE(TELETEXTDEC, [Teletext decoder], teletextdec, [
3069   AG_GST_PKG_CHECK_MODULES(TELETEXTDEC, zvbi-0.2)
3070  ])
3071
3072 dnl *** wildmidi ***
3073 translit(dnm, m, l) AM_CONDITIONAL(USE_WILDMIDI, true)
3074 AG_GST_CHECK_FEATURE(WILDMIDI, [wildmidi midi soft synth plugin], wildmidi, [
3075   AG_GST_CHECK_LIBHEADER(WILDMIDI, WildMidi,
3076                          WildMidi_Init, ,
3077                          wildmidi_lib.h,
3078                          WILDMIDI_LIBS="-lWildMidi")
3079   WILDMIDI_CFLAGS=
3080   WILDMIDI_LIBS=
3081   if test "x$HAVE_WILDMIDI" = "xyes"; then
3082     AC_MSG_CHECKING([for wildmidi >= 4.0])
3083     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <wildmidi_lib.h>]], [[
3084         #if LIBWILDMIDI_VER_MAJOR == 0 && LIBWILDMIDI_VER_MINOR < 4
3085         #error "wildmidi too old"
3086         #endif
3087     ]])], [ AC_MSG_RESULT(yes)
3088       HAVE_WILDMIDI="yes"
3089       WILDMIDI_CFLAGS=
3090       WILDMIDI_LIBS=-lWildMidi
3091     ], [ AC_MSG_RESULT(no)
3092       HAVE_WILDMIDI="no"
3093     ])
3094   else
3095     AC_MSG_WARN([WildMidi library or development headers not found])
3096   fi
3097   AC_SUBST(WILDMIDI_CFLAGS)
3098   AC_SUBST(WILDMIDI_LIBS)
3099 ])
3100
3101 dnl **** Smooth Streaming ****
3102 translit(dnm, m, l) AM_CONDITIONAL(USE_SMOOTHSTREAMING, true)
3103 AG_GST_CHECK_FEATURE(SMOOTHSTREAMING, [Smooth Streaming plug-in], smoothstreaming, [
3104   PKG_CHECK_MODULES(LIBXML2, libxml-2.0 >= 2.4,
3105     [HAVE_LIBXML2="yes"
3106      HAVE_SMOOTHSTREAMING="yes"],
3107     [HAVE_LIBXML2="no"
3108      HAVE_SMOOTHSTREAMING="no"])
3109   AC_SUBST(LIBXML2_CFLAGS)
3110   AC_SUBST(LIBXML2_LIBS)
3111 ])
3112
3113 dnl *** sndfile ***
3114 translit(dnm, m, l) AM_CONDITIONAL(USE_SNDFILE, true)
3115 AG_GST_CHECK_FEATURE(SNDFILE, [sndfile plug-in], sfdec sfenc, [
3116   PKG_CHECK_MODULES(SNDFILE, sndfile >= 1.0.16, HAVE_SNDFILE="yes", HAVE_SNDFILE="no")
3117   AC_SUBST(SNDFILE_CFLAGS)
3118   AC_SUBST(SNDFILE_LIBS)
3119 ])
3120
3121 dnl *** soundtouch ***
3122 translit(dnm, m, l) AM_CONDITIONAL(USE_SOUNDTOUCH, true)
3123 AG_GST_CHECK_FEATURE(SOUNDTOUCH, [soundtouch plug-in], soundtouch, [
3124   dnl We only need -lBPM on soundtouch < 1.4
3125   dnl We check for libSoundTouch since Debian used it before upstream
3126   dnl added a pkgconfig file.
3127   HAVE_SOUNDTOUCH_1_4=yes
3128   PKG_CHECK_MODULES(SOUNDTOUCH, soundtouch,
3129     [HAVE_SOUNDTOUCH=yes],
3130     [PKG_CHECK_MODULES(SOUNDTOUCH, soundtouch-1.4,
3131       [HAVE_SOUNDTOUCH=yes],
3132       [PKG_CHECK_MODULES(SOUNDTOUCH, soundtouch-1.0,
3133         [HAVE_SOUNDTOUCH=yes
3134           HAVE_SOUNDTOUCH_1_4=no
3135           SOUNDTOUCH_LIBS="$SOUNDTOUCH_LIBS -lBPM"],
3136         [PKG_CHECK_MODULES(SOUNDTOUCH, libSoundTouch >= 1.4,
3137           [HAVE_SOUNDTOUCH=yes],
3138           [PKG_CHECK_MODULES(SOUNDTOUCH, libSoundTouch,
3139             [HAVE_SOUNDTOUCH=yes
3140               HAVE_SOUNDTOUCH_1_4=no
3141               SOUNDTOUCH_LIBS="$SOUNDTOUCH_LIBS -lBPM"],
3142             HAVE_SOUNDTOUCH=no)])])])])
3143   AC_SUBST(SOUNDTOUCH_CFLAGS)
3144   AC_SUBST(SOUNDTOUCH_LIBS)
3145   if test "x$HAVE_CXX" != "xyes"; then
3146     USE_SOUNDTOUCH=false
3147     AC_MSG_NOTICE([Not building soundtouch plugin: no C++ compiler found])
3148   fi
3149   if test "x$HAVE_SOUNDTOUCH" = "xyes" -a "x$HAVE_SOUNDTOUCH_1_4" = "xyes"; then
3150      AC_DEFINE([HAVE_SOUNDTOUCH_1_4], [1],
3151          [Defined if the available libSoundTouch is >= 1.4])
3152   fi
3153 ])
3154
3155 dnl *** spc ***
3156 translit(dnm, m, l) AM_CONDITIONAL(USE_SPC, true)
3157 AG_GST_CHECK_FEATURE(SPC, [spc decoder], spc, [
3158   AC_CHECK_HEADER(openspc.h, [
3159     AC_CHECK_LIB(openspc, OSPC_Init, [
3160       SPC_LIBS="-lopenspc"
3161       AC_SUBST(SPC_LIBS)
3162       HAVE_SPC=yes
3163     ], [
3164       HAVE_SPC=no
3165     ])
3166   ], [
3167     HAVE_SPC=no
3168   ])
3169 ])
3170
3171 dnl *** gme ***
3172 translit(dnm, m, l) AM_CONDITIONAL(USE_GME, true)
3173 AG_GST_CHECK_FEATURE(GME, [gme decoder], gme, [
3174   AC_CHECK_HEADER(gme/gme.h, [
3175     AC_CHECK_LIB(gme, gme_new_emu, [
3176       GME_LIBS="-lgme"
3177       AC_SUBST(GME_LIBS)
3178       HAVE_GME=yes
3179     ], [
3180       HAVE_GME=no
3181     ])
3182   ], [
3183     HAVE_GME=no
3184   ])
3185
3186   if test "x$HAVE_GME" = "xyes"; then
3187     AC_CHECK_LIB(gme, gme_enable_accuracy, [
3188       AC_DEFINE(HAVE_LIBGME_ACCURACY, 1, [Define if gme 0.5.6 or newer is available])
3189       ])
3190   fi
3191 ])
3192
3193 dnl *** dvb ***
3194 translit(dnm, m, l) AM_CONDITIONAL(USE_DVB, true)
3195 AG_GST_CHECK_FEATURE(DVB, [DVB Source], dvb, [
3196   AC_MSG_CHECKING([Checking for up to date dvb installation])
3197   AC_CHECK_HEADER(linux/dvb/version.h, [
3198     AC_MSG_CHECKING([for up-to-date dvb API])
3199     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <linux/dvb/version.h>]], [[
3200         #if DVB_API_VERSION < 5 || (DVB_API_VERSION == 5 && DVB_API_VERSION_MINOR <= 4)
3201         #error "Incompatible dvb API"
3202         #endif
3203     ]])], [ AC_MSG_RESULT(yes)
3204       HAVE_DVB="yes"
3205     ], [ AC_MSG_RESULT(no)
3206       HAVE_DVB="no"
3207     ])
3208   ], [HAVE_DVB="no"])
3209 ])
3210
3211 dnl *** acm ***
3212 translit(dnm, m, l) AM_CONDITIONAL(USE_ACM, true)
3213 AG_GST_CHECK_FEATURE(ACM, [Windows ACM library], acm, [
3214   AC_MSG_CHECKING([Checking for ACM support])
3215   AC_CHECK_HEADERS([windows.h msacm.h],
3216       [HAVE_ACM="yes"
3217        AC_SUBST(ACMENC_CFLAGS)
3218        AC_SUBST(ACMMP3DEC_CFLAGS)
3219       ], [HAVE_ACM="no"],
3220       [AC_INCLUDES_DEFAULT
3221 #include <windows.h>])
3222 ])
3223
3224 dnl *** vdpau ***
3225 translit(dnm, m, l) AM_CONDITIONAL(USE_VDPAU, true)
3226 AG_GST_CHECK_FEATURE(VDPAU, [VDPAU], vdpau, [
3227   VDPAU_CFLAGS=
3228   VDPAU_LIBS=-lvdpau
3229   HAVE_VDPAU=no
3230
3231   PKG_CHECK_MODULES(VDPAU, vdpau, [HAVE_VDPAU="yes"],
3232   [
3233     if test "$HAVE_VDPAU" = "no"; then
3234       saved_CPPFLAGS="$CPPFLAGS"
3235       AC_CHECK_HEADER([vdpau/vdpau.h], [HAVE_VDPAU_H=yes])
3236
3237       if test -z "$HAVE_VDPAU_H"; then
3238         dnl Didn't find VDPAU header straight away.
3239         dnl Try /usr/include/nvidia. Need to clear caching vars first
3240         AC_MSG_NOTICE([VDPAU header not in standard path. Checking /usr/include/nvidia])
3241         unset ac_cv_header_vdpau_vdpau_h
3242         unset ac_cv_header_vdpau_vdpau_x11_h
3243         VDPAU_CFLAGS="-I/usr/include/nvidia"
3244         VDPAU_LIBS="-L/usr/lib/nvidia -lvdpau"
3245         CPPFLAGS="$VDPAU_CFLAGS $saved_CPPFLAGS"
3246         AC_CHECK_HEADER([vdpau/vdpau.h], [HAVE_VDPAU_H=yes])
3247       fi
3248
3249       AC_CHECK_HEADER([vdpau/vdpau_x11.h], [HAVE_VDPAU_X11_H=yes])
3250
3251       if test "x$HAVE_VDPAU_H" = "xyes" -a "x$HAVE_VDPAU_X11_H" = "xyes"; then
3252         dnl Found the headers - look for the lib
3253         AC_MSG_NOTICE([VDPAU headers found. Checking libraries])
3254         saved_LIBS="$LIBS"
3255         LIBS="$VDPAU_LIBS $saved_LIBS"
3256         AC_CHECK_LIB(vdpau,vdp_device_create_x11,[HAVE_VDPAU="yes"])
3257         LIBS="$saved_LIBS"
3258       fi
3259     fi
3260   ])
3261
3262   if test "$HAVE_VDPAU" = "yes"; then
3263     AC_MSG_NOTICE([Found up to date VDPAU installation])
3264     AC_SUBST(VDPAU_CFLAGS)
3265     AC_SUBST(VDPAU_LIBS)
3266   fi
3267 ])
3268
3269 dnl *** sbc ***
3270 translit(dnm, m, l) AM_CONDITIONAL(USE_SBC, true)
3271 AG_GST_CHECK_FEATURE(SBC, [SBC bluetooth audio codec], sbc, [
3272   AG_GST_PKG_CHECK_MODULES(SBC, [sbc >= 1.0])
3273 ])
3274
3275 dnl *** schroedinger ***
3276 translit(dnm, m, l) AM_CONDITIONAL(USE_SCHRO, true)
3277 AG_GST_CHECK_FEATURE(SCHRO, [Schroedinger video codec], schro, [
3278   AG_GST_PKG_CHECK_MODULES(SCHRO, schroedinger-1.0 >= 1.0.10)
3279 ])
3280
3281 dnl *** zbar ***
3282 translit(dnm, m, l) AM_CONDITIONAL(USE_ZBAR, true)
3283 AG_GST_CHECK_FEATURE(ZBAR, [ZBar barcode detector], zbar, [
3284   AG_GST_PKG_CHECK_MODULES(ZBAR, zbar >= 0.9)
3285 ])
3286
3287 dnl *** rtmp ***
3288 translit(dnm, m, l) AM_CONDITIONAL(USE_RTMP, true)
3289 AG_GST_CHECK_FEATURE(RTMP, [rtmp library], rtmp, [
3290   AG_GST_PKG_CHECK_MODULES(RTMP, librtmp)
3291 ])
3292
3293 dnl *** spandsp ***
3294 translit(dnm, m, l) AM_CONDITIONAL(USE_SPANDSP, true)
3295 AG_GST_CHECK_FEATURE(SPANDSP, [Spandsp], spandsp, [
3296   PKG_CHECK_MODULES(SPANDSP, spandsp >= 0.0.6, [
3297     HAVE_SPANDSP="yes" ], [
3298     HAVE_SPANDSP="no"
3299   ])
3300 ])
3301 AC_SUBST(SPANDSP_CFLAGS)
3302 AC_SUBST(SPANDSP_LIBS)
3303
3304 dnl *** hls-crypto ***
3305 AC_ARG_WITH([hls-crypto],
3306   AS_HELP_STRING([--with-hls-crypto=auto|nettle|libgcrypt|openssl], [
3307     which cryptographic library version to compile against for hls (default: auto)
3308   ]), [
3309     AS_CASE([$with_hls_crypto],
3310       [nettle],[],
3311       [libgcrypt],[],
3312       [openssl],[],
3313       [with_hls_crypto=auto]
3314     )
3315   ]
3316 )
3317
3318 dnl *** hls ***
3319 translit(dnm, m, l) AM_CONDITIONAL(USE_HLS, true)
3320 AG_GST_CHECK_FEATURE(HLS, [http live streaming plugin], hls, [
3321   AS_CASE([$with_hls_crypto],
3322     [nettle], [
3323       PKG_CHECK_MODULES(NETTLE, nettle, [
3324         AC_DEFINE(HAVE_NETTLE, 1, [Define if nettle is available])
3325         HAVE_HLS="yes"
3326       ],[AC_MSG_ERROR([Could not find nettle library])])
3327     ],
3328     [libgcrypt], [
3329       AM_PATH_LIBGCRYPT([1.2.0], [
3330         AC_DEFINE(HAVE_LIBGCRYPT, 1, [Define if libgcrypt is available])
3331         HAVE_HLS="yes"
3332       ],[AC_MSG_ERROR([Could not find libgcrypt library])])
3333     ],
3334     [openssl], [
3335       PKG_CHECK_MODULES(OPENSSL, openssl, [
3336         AC_DEFINE(HAVE_OPENSSL, 1, [Define if openssl is available])
3337         HAVE_HLS="yes"
3338       ],[AC_MSG_ERROR([Could not find openssl library])])
3339     ],
3340     [
3341       dnl Try to find a valid crypto library
3342       PKG_CHECK_MODULES(NETTLE, nettle, [
3343         AC_DEFINE(HAVE_NETTLE, 1, [Define if nettle is available])
3344         HAVE_HLS="yes"
3345       ],[
3346         AM_PATH_LIBGCRYPT([1.2.0], [
3347           AC_DEFINE(HAVE_LIBGCRYPT, 1, [Define if libgcrypt is available])
3348           HAVE_HLS="yes"
3349         ],[
3350           PKG_CHECK_MODULES(OPENSSL, openssl, [
3351             AC_DEFINE(HAVE_OPENSSL, 1, [Define if openssl is available])
3352             HAVE_HLS="yes"
3353           ],[
3354             HAVE_HLS="no"
3355           ])
3356         ])
3357       ])
3358     ]
3359   )
3360 ])
3361
3362 dnl *** x265 (H.265/HEVC encoder) ***
3363 translit(dnm, m, l) AM_CONDITIONAL(USE_X265, true)
3364 AG_GST_CHECK_FEATURE(X265, [x265 plug-in], x265, [
3365   AG_GST_PKG_CHECK_MODULES(X265, x265)
3366 ])
3367
3368 dnl *** WebRTC Audio Processing ***
3369 dnl Note: We test for a specific version as there is no API stability
3370 translit(dnm, m, l) AM_CONDITIONAL(USE_WEBRTCDSP, true)
3371 AG_GST_CHECK_FEATURE(WEBRTCDSP, [WebRTC Audio Processing], webrtcdsp, [
3372
3373   AG_GST_PKG_CHECK_MODULES(WEBRTCDSP, webrtc-audio-processing >= 0.2 webrtc-audio-processing < 0.4)
3374
3375   # On Android, C++ headers comes with the STL implementation
3376   AS_CASE(["${host}"],
3377     [*android*],
3378       [
3379         PKG_CHECK_MODULES(GNUSTL, gnustl, [
3380           WEBRTCDSP_CFLAGS="$WEBRTCDSP_CFLAGS $GNUSTL_CFLAGS"
3381           WEBRTCDSP_LIBS="$WEBRTCDSP_LIBS $GNUSTL_LIBS"])
3382       ])
3383   AC_SUBST([WEBRTCDSP_CFLAGS])
3384   AC_SUBST([WEBRTCDSP_LIBS])
3385
3386   AC_LANG_PUSH([C++])
3387   old_CPPFLAGS=$CPPFLAGS
3388   CPPFLAGS="-std=c++11 $CPPFLAGS $GNUSTL_CFLAGS"
3389   AC_CHECK_HEADER([vector],[],[HAVE_WEBRTCDSP=no])
3390   CPPFLAGS=$old_CPPFLAGS
3391   AC_LANG_POP([C++])
3392 ])
3393
3394 else
3395
3396 dnl not building plugins with external dependencies,
3397 dnl but we still need to set the conditionals
3398
3399 AM_CONDITIONAL(USE_ASSRENDER, false)
3400 AM_CONDITIONAL(USE_VOAMRWBENC, false)
3401 AM_CONDITIONAL(USE_VOAACENC, false)
3402 AM_CONDITIONAL(USE_BS2B, false)
3403 AM_CONDITIONAL(USE_BZ2, false)
3404 AM_CONDITIONAL(USE_CHROMAPRINT, false)
3405 AM_CONDITIONAL(USE_CURL, false)
3406 AM_CONDITIONAL(USE_SSH2, false)
3407 AM_CONDITIONAL(USE_DASH, false)
3408 AM_CONDITIONAL(USE_DC1394, false)
3409 AM_CONDITIONAL(USE_DECKLINK, false)
3410 AM_CONDITIONAL(DECKLINK_OSX, false)
3411 AM_CONDITIONAL(USE_DIRECTFB, false)
3412 AM_CONDITIONAL(USE_WAYLAND, false)
3413 AM_CONDITIONAL(USE_DAALA, false)
3414 AM_CONDITIONAL(USE_DTS, false)
3415 AM_CONDITIONAL(USE_EXIF, false)
3416 AM_CONDITIONAL(USE_RESINDVD, false)
3417 AM_CONDITIONAL(USE_FAAC, false)
3418 AM_CONDITIONAL(USE_FAAD, false)
3419 AM_CONDITIONAL(USE_FBDEV, false)
3420 AM_CONDITIONAL(USE_FDK_AAC, false)
3421 AM_CONDITIONAL(USE_FLITE, false)
3422 AM_CONDITIONAL(USE_FLUIDSYNTH, false)
3423 AM_CONDITIONAL(USE_GL, false)
3424 AM_CONDITIONAL(USE_GSM, false)
3425 AM_CONDITIONAL(USE_GTK3, false)
3426 AM_CONDITIONAL(USE_GTK3_GL, false)
3427 AM_CONDITIONAL(USE_HLS, false)
3428 AM_CONDITIONAL(USE_IQA, false)
3429 AM_CONDITIONAL(USE_KATE, false)
3430 AM_CONDITIONAL(USE_KMS, false)
3431 AM_CONDITIONAL(USE_TIGER, false)
3432 AM_CONDITIONAL(USE_LADSPA, false)
3433 AM_CONDITIONAL(USE_LV2, false)
3434 AM_CONDITIONAL(USE_LIBDE265, false)
3435 AM_CONDITIONAL(USE_LIBMMS, false)
3436 AM_CONDITIONAL(USE_MODPLUG, false)
3437 AM_CONDITIONAL(USE_MPEG2ENC, false)
3438 AM_CONDITIONAL(USE_MPLEX, false)
3439 AM_CONDITIONAL(USE_MUSEPACK, false)
3440 AM_CONDITIONAL(USE_NEON, false)
3441 AM_CONDITIONAL(USE_OFA, false)
3442 AM_CONDITIONAL(USE_OPENAL, false)
3443 AM_CONDITIONAL(USE_OPENCV, false)
3444 AM_CONDITIONAL(USE_OPENEXR, false)
3445 AM_CONDITIONAL(USE_OPENJPEG, false)
3446 AM_CONDITIONAL(USE_OPENMPT, false)
3447 AM_CONDITIONAL(USE_OPENNI2, false)
3448 AM_CONDITIONAL(USE_OPUS, false)
3449 AM_CONDITIONAL(USE_QT, false)
3450 AM_CONDITIONAL(USE_WILDMIDI, false)
3451 AM_CONDITIONAL(USE_SMOOTHSTREAMING, false)
3452 AM_CONDITIONAL(USE_SNDFILE, false)
3453 AM_CONDITIONAL(USE_SOUNDTOUCH, false)
3454 AM_CONDITIONAL(USE_SPANDSP, false)
3455 AM_CONDITIONAL(USE_SPC, false)
3456 AM_CONDITIONAL(USE_SRTP, false)
3457 AM_CONDITIONAL(USE_GME, false)
3458 AM_CONDITIONAL(USE_DVB, false)
3459 AM_CONDITIONAL(USE_ACM, false)
3460 AM_CONDITIONAL(USE_VDPAU, false)
3461 AM_CONDITIONAL(USE_SBC, false)
3462 AM_CONDITIONAL(USE_SCHRO, false)
3463 AM_CONDITIONAL(USE_ZBAR, false)
3464 AM_CONDITIONAL(USE_RSVG, false)
3465 AM_CONDITIONAL(USE_RTMP, false)
3466 AM_CONDITIONAL(USE_TELETEXTDEC, false)
3467 AM_CONDITIONAL(USE_UVCH264, false)
3468 AM_CONDITIONAL(USE_WEBP, false)
3469 AM_CONDITIONAL(USE_WEBRTCDSP, false)
3470 AM_CONDITIONAL(USE_OPENH264, false)
3471 AM_CONDITIONAL(USE_X265, false)
3472 AM_CONDITIONAL(USE_DTLS, false)
3473 AM_CONDITIONAL(USE_VULKAN, false)
3474 AM_CONDITIONAL(USE_TTML, false)
3475
3476 fi dnl of EXT plugins
3477
3478 dnl *** finalize CFLAGS, LDFLAGS, LIBS
3479
3480 dnl Overview:
3481 dnl GST_OPTION_CFLAGS:  common flags for profiling, debugging, errors, ...
3482 dnl GST_*:              flags shared by built objects to link against GStreamer
3483 dnl GST_ALL_LDFLAGS:    linker flags shared by all
3484 dnl GST_LIB_LDFLAGS:    additional linker flags for all libaries
3485 dnl GST_LT_LDFLAGS:     library versioning of our libraries
3486 dnl GST_PLUGIN_LDFLAGS: flags to be used for all plugins
3487
3488 dnl GST_OPTION_CFLAGS
3489 if test "x$USE_DEBUG" = xyes; then
3490    PROFILE_CFLAGS="-g"
3491 fi
3492 AC_SUBST(PROFILE_CFLAGS)
3493
3494 if test "x$PACKAGE_VERSION_NANO" = "x1"; then
3495   dnl Define _only_ during CVS (not pre-releases or releases)
3496   DEPRECATED_CFLAGS="-DGST_DISABLE_DEPRECATED"
3497 else
3498   DEPRECATED_CFLAGS=""
3499 fi
3500 AC_SUBST(DEPRECATED_CFLAGS)
3501
3502 dnl every flag in GST_OPTION_CFLAGS and GST_OPTION_CXXFLAGS can be overridden
3503 dnl at make time with e.g. make ERROR_CFLAGS=""
3504 GST_OPTION_CFLAGS="\$(WARNING_CFLAGS) \$(ERROR_CFLAGS) \$(DEBUG_CFLAGS) \$(PROFILE_CFLAGS) \$(GCOV_CFLAGS) \$(OPT_CFLAGS) \$(DEPRECATED_CFLAGS)"
3505 GST_OPTION_CXXFLAGS="\$(WARNING_CXXFLAGS) \$(ERROR_CXXFLAGS) \$(DEBUG_CFLAGS) \$(PROFILE_CFLAGS) \$(GCOV_CFLAGS) \$(OPT_CFLAGS) \$(DEPRECATED_CFLAGS)"
3506 GST_OPTION_OBJCFLAGS="\$(WARNING_OBJCFLAGS) \$(ERROR_OBJCFLAGS) \$(DEBUG_CFLAGS) \$(PROFILE_CFLAGS) \$(GCOV_CFLAGS) \$(OPT_CFLAGS) \$(DEPRECATED_CFLAGS)"
3507 AC_SUBST(GST_OPTION_CFLAGS)
3508 AC_SUBST(GST_OPTION_CXXFLAGS)
3509 AC_SUBST(GST_OPTION_OBJCFLAGS)
3510
3511 dnl FIXME: do we want to rename to GST_ALL_* ?
3512 dnl prefer internal headers to already installed ones
3513 dnl also add builddir include for enumtypes and marshal
3514 dnl add GST_OPTION_CFLAGS, but overridable
3515 GST_CFLAGS="$GST_CFLAGS $GST_STATIC_CFLAGS -DGST_USE_UNSTABLE_API"
3516 GST_CXXFLAGS="$GST_CFLAGS $GLIB_EXTRA_CFLAGS \$(GST_OPTION_CXXFLAGS)"
3517 GST_OBJCFLAGS="$GST_CFLAGS $GLIB_EXTRA_CFLAGS \$(GST_OPTION_OBJCFLAGS)"
3518 GST_CFLAGS="$GST_CFLAGS $GLIB_EXTRA_CFLAGS \$(GST_OPTION_CFLAGS)"
3519 AC_SUBST(GST_CFLAGS)
3520 AC_SUBST(GST_CXXFLAGS)
3521 AC_SUBST(GST_OBJCFLAGS)
3522 AC_SUBST(GST_LIBS)
3523 GST_PLUGINS_BAD_CXXFLAGS="-I\$(top_srcdir)/gst-libs -I\$(top_builddir)/gst-libs"
3524 GST_PLUGINS_BAD_OBJCFLAGS="-I\$(top_srcdir)/gst-libs -I\$(top_builddir)/gst-libs"
3525 GST_PLUGINS_BAD_CFLAGS="-I\$(top_srcdir)/gst-libs -I\$(top_builddir)/gst-libs"
3526 AC_SUBST(GST_PLUGINS_BAD_CFLAGS)
3527 AC_SUBST(GST_PLUGINS_BAD_CXXFLAGS)
3528 AC_SUBST(GST_PLUGINS_BAD_OBJCFLAGS)
3529
3530 dnl LDFLAGS really should only contain flags, not libs - they get added before
3531 dnl whatevertarget_LIBS and -L flags here affect the rest of the linking
3532 GST_ALL_LDFLAGS="-no-undefined"
3533 if test "x${enable_Bsymbolic}" = "xyes"; then
3534   GST_ALL_LDFLAGS="$GST_ALL_LDFLAGS -Wl,-Bsymbolic-functions"
3535 fi
3536 AC_SUBST(GST_ALL_LDFLAGS)
3537
3538 dnl GST_LIB_LDFLAGS
3539 dnl linker flags shared by all libraries
3540 dnl LDFLAGS modifier defining exported symbols from built libraries
3541 dnl (export _gst_foo but not __gst_foo)
3542 GST_LIB_LDFLAGS="-export-symbols-regex ^_?\(gst_\|Gst\|GST_\).*"
3543 AC_SUBST(GST_LIB_LDFLAGS)
3544
3545 dnl this really should only contain flags, not libs - they get added before
3546 dnl whatevertarget_LIBS and -L flags here affect the rest of the linking
3547 GST_PLUGIN_LDFLAGS="-module -avoid-version -export-symbols-regex '^[_]*gst_plugin_.*' $GST_ALL_LDFLAGS"
3548 AC_SUBST(GST_PLUGIN_LDFLAGS)
3549
3550 dnl *** output files ***
3551
3552 $MKDIR_P tests/check/orc
3553
3554 dnl po/Makefile.in
3555
3556 AC_CONFIG_FILES(
3557 Makefile
3558 common/Makefile
3559 common/m4/Makefile
3560 gst/Makefile
3561 gst/accurip/Makefile
3562 gst/adpcmdec/Makefile
3563 gst/adpcmenc/Makefile
3564 gst/aiff/Makefile
3565 gst/videoframe_audiolevel/Makefile
3566 gst/asfmux/Makefile
3567 gst/audiobuffersplit/Makefile
3568 gst/audiofxbad/Makefile
3569 gst/audiomixer/Makefile
3570 gst/audiomixmatrix/Makefile
3571 gst/audiovisualizers/Makefile
3572 gst/autoconvert/Makefile
3573 gst/bayer/Makefile
3574 gst/camerabin2/Makefile
3575 gst/coloreffects/Makefile
3576 gst/debugutils/Makefile
3577 gst/dvbsuboverlay/Makefile
3578 gst/dvdspu/Makefile
3579 gst/faceoverlay/Makefile
3580 gst/festival/Makefile
3581 gst/fieldanalysis/Makefile
3582 gst/freeverb/Makefile
3583 gst/frei0r/Makefile
3584 gst/gaudieffects/Makefile
3585 gst/geometrictransform/Makefile
3586 gst/gdp/Makefile
3587 gst/id3tag/Makefile
3588 gst/inter/Makefile
3589 gst/interlace/Makefile
3590 gst/ivfparse/Makefile
3591 gst/ivtc/Makefile
3592 gst/jp2kdecimator/Makefile
3593 gst/jpegformat/Makefile
3594 gst/librfb/Makefile
3595 gst/midi/Makefile
3596 gst/mpegdemux/Makefile
3597 gst/mpegtsdemux/Makefile
3598 gst/mpegtsmux/Makefile
3599 gst/mpegtsmux/tsmux/Makefile
3600 gst/mpegpsmux/Makefile
3601 gst/mxf/Makefile
3602 gst/netsim/Makefile
3603 gst/onvif/Makefile
3604 gst/pcapparse/Makefile
3605 gst/pnm/Makefile
3606 gst/rawparse/Makefile
3607 gst/removesilence/Makefile
3608 gst/sdp/Makefile
3609 gst/segmentclip/Makefile
3610 gst/siren/Makefile
3611 gst/smooth/Makefile
3612 gst/speed/Makefile
3613 gst/subenc/Makefile
3614 gst/stereo/Makefile
3615 gst/timecode/Makefile
3616 gst/videofilters/Makefile
3617 gst/videoparsers/Makefile
3618 gst/videosignal/Makefile
3619 gst/vmnc/Makefile
3620 gst/y4m/Makefile
3621 gst/yadif/Makefile
3622 gst/compositor/Makefile
3623 gst-libs/Makefile
3624 gst-libs/gst/Makefile
3625 gst-libs/gst/adaptivedemux/Makefile
3626 gst-libs/gst/basecamerabinsrc/Makefile
3627 gst-libs/gst/gl/Makefile
3628 gst-libs/gst/gl/android/Makefile
3629 gst-libs/gst/gl/cocoa/Makefile
3630 gst-libs/gst/gl/dispmanx/Makefile
3631 gst-libs/gst/gl/glprototypes/Makefile
3632 gst-libs/gst/gl/eagl/Makefile
3633 gst-libs/gst/gl/egl/Makefile
3634 gst-libs/gst/gl/wayland/Makefile
3635 gst-libs/gst/gl/win32/Makefile
3636 gst-libs/gst/gl/x11/Makefile
3637 gst-libs/gst/gl/viv-fb/Makefile
3638 gst-libs/gst/insertbin/Makefile
3639 gst-libs/gst/interfaces/Makefile
3640 gst-libs/gst/codecparsers/Makefile
3641 gst-libs/gst/mpegts/Makefile
3642 gst-libs/gst/uridownloader/Makefile
3643 gst-libs/gst/wayland/Makefile
3644 gst-libs/gst/base/Makefile
3645 gst-libs/gst/player/Makefile
3646 gst-libs/gst/video/Makefile
3647 gst-libs/gst/audio/Makefile
3648 gst-libs/gst/opencv/Makefile
3649 gst-libs/gst/allocators/Makefile
3650 sys/Makefile
3651 sys/dshowdecwrapper/Makefile
3652 sys/acmenc/Makefile
3653 sys/acmmp3dec/Makefile
3654 sys/androidmedia/Makefile
3655 sys/applemedia/Makefile
3656 sys/bluez/Makefile
3657 sys/d3dvideosink/Makefile
3658 sys/decklink/Makefile
3659 sys/directsound/Makefile
3660 sys/dshowsrcwrapper/Makefile
3661 sys/dshowvideosink/Makefile
3662 sys/dvb/Makefile
3663 sys/fbdev/Makefile
3664 sys/kms/Makefile
3665 sys/msdk/Makefile
3666 sys/nvdec/Makefile
3667 sys/nvenc/Makefile
3668 sys/opensles/Makefile
3669 sys/shm/Makefile
3670 sys/tinyalsa/Makefile
3671 sys/uvch264/Makefile
3672 sys/vcd/Makefile
3673 sys/vdpau/Makefile
3674 sys/wasapi/Makefile
3675 sys/winks/Makefile
3676 sys/winscreencap/Makefile
3677 tests/Makefile
3678 tests/check/Makefile
3679 tests/files/Makefile
3680 tests/examples/Makefile
3681 tests/examples/avsamplesink/Makefile
3682 tests/examples/camerabin2/Makefile
3683 tests/examples/codecparsers/Makefile
3684 tests/examples/directfb/Makefile
3685 tests/examples/audiomixmatrix/Makefile
3686 tests/examples/gl/Makefile
3687 tests/examples/gl/cocoa/Makefile
3688 tests/examples/gl/clutter/Makefile
3689 tests/examples/gl/generic/Makefile
3690 tests/examples/gl/generic/cube/Makefile
3691 tests/examples/gl/generic/cubeyuv/Makefile
3692 tests/examples/gl/generic/doublecube/Makefile
3693 tests/examples/gl/generic/recordgraphic/Makefile
3694 tests/examples/gl/gtk/Makefile
3695 tests/examples/gl/gtk/3dvideo/Makefile
3696 tests/examples/gl/gtk/filternovideooverlay/Makefile
3697 tests/examples/gl/gtk/filtervideooverlay/Makefile
3698 tests/examples/gl/gtk/fxtest/Makefile
3699 tests/examples/gl/gtk/switchvideooverlay/Makefile
3700 tests/examples/gl/qt/Makefile
3701 tests/examples/gl/sdl/Makefile
3702 tests/examples/gtk/Makefile
3703 tests/examples/mpegts/Makefile
3704 tests/examples/mxf/Makefile
3705 tests/examples/opencv/Makefile
3706 tests/examples/uvch264/Makefile
3707 tests/examples/waylandsink/Makefile
3708 tests/icles/Makefile
3709 ext/voamrwbenc/Makefile
3710 ext/voaacenc/Makefile
3711 ext/assrender/Makefile
3712 ext/bs2b/Makefile
3713 ext/bz2/Makefile
3714 ext/chromaprint/Makefile
3715 ext/curl/Makefile
3716 ext/dash/Makefile
3717 ext/dc1394/Makefile
3718 ext/directfb/Makefile
3719 ext/wayland/Makefile
3720 ext/daala/Makefile
3721 ext/dts/Makefile
3722 ext/gl/Makefile
3723 ext/gtk/Makefile
3724 ext/faac/Makefile
3725 ext/faad/Makefile
3726 ext/fdkaac/Makefile
3727 ext/flite/Makefile
3728 ext/fluidsynth/Makefile
3729 ext/gsm/Makefile
3730 ext/hls/Makefile
3731 ext/iqa/Makefile
3732 ext/kate/Makefile
3733 ext/ladspa/Makefile
3734 ext/lv2/Makefile
3735 ext/libde265/Makefile
3736 ext/libmms/Makefile
3737 ext/Makefile
3738 ext/modplug/Makefile
3739 ext/mpeg2enc/Makefile
3740 ext/mplex/Makefile
3741 ext/musepack/Makefile
3742 ext/neon/Makefile
3743 ext/ofa/Makefile
3744 ext/openal/Makefile
3745 ext/opencv/Makefile
3746 ext/openexr/Makefile
3747 ext/openh264/Makefile
3748 ext/openjpeg/Makefile
3749 ext/openmpt/Makefile
3750 ext/openni2/Makefile
3751 ext/opus/Makefile
3752 ext/qt/Makefile
3753 ext/rsvg/Makefile
3754 ext/resindvd/Makefile
3755 ext/rtmp/Makefile
3756 ext/sbc/Makefile
3757 ext/schroedinger/Makefile
3758 ext/smoothstreaming/Makefile
3759 ext/sndfile/Makefile
3760 ext/soundtouch/Makefile
3761 ext/spandsp/Makefile
3762 ext/srtp/Makefile
3763 ext/teletextdec/Makefile
3764 ext/gme/Makefile
3765 ext/spc/Makefile
3766 ext/wildmidi/Makefile
3767 ext/vulkan/Makefile
3768 ext/vulkan/xcb/Makefile
3769 ext/vulkan/wayland/Makefile
3770 ext/webp/Makefile
3771 ext/x265/Makefile
3772 ext/zbar/Makefile
3773 ext/dtls/Makefile
3774 ext/webrtcdsp/Makefile
3775 ext/ttml/Makefile
3776 po/Makefile.in
3777 docs/Makefile
3778 docs/plugins/Makefile
3779 docs/libs/Makefile
3780 docs/version.entities
3781 pkgconfig/Makefile
3782 pkgconfig/gstreamer-plugins-bad.pc
3783 pkgconfig/gstreamer-plugins-bad-uninstalled.pc
3784 pkgconfig/gstreamer-codecparsers.pc
3785 pkgconfig/gstreamer-codecparsers-uninstalled.pc
3786 pkgconfig/gstreamer-insertbin.pc
3787 pkgconfig/gstreamer-insertbin-uninstalled.pc
3788 pkgconfig/gstreamer-gl.pc
3789 pkgconfig/gstreamer-gl-uninstalled.pc
3790 pkgconfig/gstreamer-mpegts.pc
3791 pkgconfig/gstreamer-mpegts-uninstalled.pc
3792 pkgconfig/gstreamer-player.pc
3793 pkgconfig/gstreamer-player-uninstalled.pc
3794 pkgconfig/gstreamer-wayland.pc
3795 pkgconfig/gstreamer-wayland-uninstalled.pc
3796 pkgconfig/gstreamer-bad-base.pc
3797 pkgconfig/gstreamer-bad-base-uninstalled.pc
3798 pkgconfig/gstreamer-bad-video.pc
3799 pkgconfig/gstreamer-bad-video-uninstalled.pc
3800 pkgconfig/gstreamer-bad-audio.pc
3801 pkgconfig/gstreamer-bad-audio-uninstalled.pc
3802 pkgconfig/gstreamer-bad-allocators.pc
3803 pkgconfig/gstreamer-bad-allocators-uninstalled.pc
3804 tools/Makefile
3805 m4/Makefile
3806 )
3807
3808 AC_OUTPUT
3809
3810 AG_GST_OUTPUT_PLUGINS
3811 ORC_OUTPUT
3812