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