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