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