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