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