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