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