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