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