qmlglsink: Add Wayland support
[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 \
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         *-*-OpenBSD*)
1817             HAVE_SHM=yes
1818             ;;
1819         *)
1820             AC_CHECK_LIB([rt], [shm_open],
1821                 AC_CHECK_DECL([MSG_NOSIGNAL], HAVE_SHM=yes, HAVE_SHM=no, [
1822                 #include <sys/socket.h>
1823                     ]),
1824                 HAVE_SHM=no)
1825             AC_SUBST(SHM_LIBS, "-lrt")
1826             ;;
1827         esac
1828     else
1829         HAVE_SHM=no
1830     fi
1831 ])
1832
1833 dnl check for Video CD
1834 translit(dnm, m, l) AM_CONDITIONAL(USE_VCD, true)
1835 AG_GST_CHECK_FEATURE(VCD, [Video CD], vcdsrc, [
1836   AC_CHECK_HEADER(linux/cdrom.h, HAVE_VCD="yes", HAVE_VCD="no")
1837 ])
1838
1839 dnl check for OpenSL ES
1840 translit(dnm, m, l) AM_CONDITIONAL(USE_OPENSLES, true)
1841 AG_GST_CHECK_FEATURE(OPENSLES, [OpenSL ES], opensl, [
1842   AC_CHECK_HEADER(SLES/OpenSLES.h, HAVE_OPENSLES="yes", HAVE_OPENSLES="no")
1843 ])
1844
1845 dnl *** UVC H264 ***
1846 translit(dnm, m, l) AM_CONDITIONAL(USE_UVCH264, true)
1847 AG_GST_CHECK_FEATURE(UVCH264, [UVC H264], uvch264, [
1848   AC_CHECK_HEADER(linux/uvcvideo.h, HAVE_UVCVIDEO_H=yes, HAVE_UVCVIDEO_H=no)
1849   PKG_CHECK_MODULES(G_UDEV, gudev-1.0 , [
1850           AC_DEFINE([HAVE_GUDEV], 1, [Define if gudev is installed])
1851           HAVE_GUDEV="yes" ],
1852           [HAVE_GUDEV="no"])
1853   PKG_CHECK_MODULES(LIBUSB, libusb-1.0 , [
1854           AC_DEFINE([HAVE_LIBUSB], 1, [Define if libusb 1.x is installed])
1855           HAVE_LIBUSB="yes" ],
1856           [HAVE_LIBUSB="no"])
1857   if test "x$HAVE_UVCVIDEO_H" = "xyes" && \
1858      test "x$HAVE_GUDEV" = "xyes" && \
1859      test "x$HAVE_LIBUSB" = "xyes"; then
1860     HAVE_UVCH264=yes
1861   else
1862     HAVE_UVCH264=no
1863   fi
1864 ])
1865 AC_SUBST(LIBUDEV_CFLAGS)
1866 AC_SUBST(LIBUDEV_LIBS)
1867 AC_SUBST(LIBUSB_CFLAGS)
1868 AC_SUBST(LIBUSB_LIBS)
1869
1870 dnl *** NVENC ***
1871 translit(dnm, m, l) AM_CONDITIONAL(USE_NVENC, true)
1872 AG_GST_CHECK_FEATURE(NVENC, [NVIDIA Encode API], nvenc, [
1873   AG_GST_PKG_CHECK_MODULES(GST_VIDEO, gstreamer-video-1.0)
1874   AG_GST_PKG_CHECK_MODULES(GST_PBUTILS, gstreamer-pbutils-1.0)
1875   AC_ARG_WITH([cuda-prefix],
1876           AS_HELP_STRING([--with-cuda-prefix],
1877           [Use the provided prefix for detecting the cuda installation]),
1878           [AS_IF([test "x$with_cuda_prefix" != "x"],
1879                  [CUDA_PREFIX="$with_cuda_prefix"])],
1880           [CUDA_PREFIX=""])
1881
1882   HAVE_CUDA="yes"
1883   if test "x$CUDA_PREFIX" != "x"; then
1884     dnl only override if not already set
1885     if test "x$CUDA_CFLAGS" = "x" -a "x$CUDA_LIBS" = "x"; then
1886       dnl this is an educated guess, user can always override these
1887       CUDA_CFLAGS="-I$CUDA_PREFIX/include"
1888       CUDA_LIBS="-L$CUDA_PREFIX/lib -L$CUDA_PREFIX/lib64 -L$CUDA_PREFIX/lib/stubs -L$CUDA_PREFIX/lib64/stubs -lcuda -lcudart"
1889     fi
1890   else
1891     PKG_CHECK_MODULES([CUDA], [cuda-7.5 cudart-7.5],, [
1892       PKG_CHECK_MODULES([CUDA], [cuda-7.0 cudart-7.0],, [
1893         PKG_CHECK_MODULES([CUDA], [cuda-6.5 cudart-6.5],, [
1894           AC_MSG_WARN([Could not find cuda headers/libraries])])])])
1895   fi
1896
1897   HAVE_CUDA_H=no
1898   HAVE_CUDART_H=no
1899   save_CPPFLAGS="$CPPFLAGS"
1900   CPPFLAGS="$CUDA_CFLAGS $save_CPPFLAGS "
1901   AC_CHECK_HEADER([cuda.h], [HAVE_CUDA_H=yes],
1902       AC_MSG_WARN([Could not find cuda.h]))
1903   AC_CHECK_HEADER([cuda_runtime_api.h], [HAVE_CUDART_H=yes],
1904       AC_MSG_WARN([Could not find cuda_runtime_api.h]))
1905   CPPFLAGS=$save_CPPFLAGS
1906
1907   dnl libcuda and libcudart libraries
1908   save_LIBS="$LIBS"
1909   LIBS="$CUDA_LIBS $save_LIBS"
1910   HAVE_CUDART_LIB="no"
1911   AC_CHECK_LIB(cudart,cudaGetErrorString,[HAVE_CUDART_LIB="yes"], [
1912       AC_MSG_WARN([Could not find cudart library])])
1913   HAVE_CUDA_LIB="no"
1914   AC_CHECK_LIB(cuda,cuInit,[HAVE_CUDA_LIB="yes"], [
1915       AC_MSG_WARN([Could not find cuda library])])
1916   LIBS="$save_LIBS"
1917
1918   dnl nvEncodeAPI.h header
1919   HAVE_NVENCODEAPI_H=no
1920   AC_ARG_VAR(NVENCODE_CFLAGS, [C compiler flags for NvEncodeAPI.h])
1921   save_CPPFLAGS="$CPPFLAGS"
1922   CPPFLAGS="$NVENCODE_CFLAGS $save_CPPFLAGS"
1923   AC_CHECK_HEADER([nvEncodeAPI.h], [
1924       AC_PREPROC_IFELSE([AC_LANG_SOURCE([[#include <nvEncodeAPI.h>
1925           #if NVENCAPI_MAJOR_VERSION < 5
1926           #error "Need nvEncodeAPI.h >= 5.0"
1927           #endif
1928           ]])], [
1929           HAVE_NVENCODEAPI_H=yes
1930           ], [
1931           AC_MSG_WARN([nvEncodeAPI.h must be >= 5.0])
1932           ])
1933       ],
1934       AC_MSG_WARN([Could not find nvEncodeAPI.h]))
1935   AC_SUBST(NVENCODE_CFLAGS)
1936   CPPFLAGS="$save_CPPFLAGS"
1937
1938   dnl libnvnidia-encode library
1939   HAVE_NVENCODE_LIB=no
1940   AC_ARG_VAR(NVENCODE_LIBS, [linker flags for nvidia-encode])
1941   saved_LIBS="$LIBS"
1942   LIBS="$NVENCODE_LIBS $saved_LIBS"
1943   AC_CHECK_LIB(nvidia-encode, NvEncodeAPICreateInstance, [HAVE_NVENCODE_LIB="yes"],
1944       AC_MSG_WARN([Could not find library nvidia-encode]))
1945   NVENCODE_LIBS="$NVENCODE_LIBS -lnvidia-encode"
1946   AC_SUBST(NVENCODE_LIBS)
1947   LIBS="$saved_LIBS"
1948
1949   USE_NVENC_GST_GL=no
1950   if test "x$HAVE_CUDA_H" = "xyes" \
1951       -a "x$HAVE_CUDART_H" = "xyes" \
1952       -a "x$HAVE_CUDA_LIB" = "xyes" \
1953       -a "x$HAVE_CUDART_LIB" = "xyes" \
1954       -a "x$HAVE_NVENCODEAPI_H" = "xyes" \
1955       -a "x$HAVE_NVENCODE_LIB" = "xyes"; then
1956     HAVE_NVENC="yes"
1957     if test x"$USE_OPENGL" = x"yes"; then
1958       dnl cuda-gl interop header
1959       save_CPPFLAGS="$CPPFLAGS"
1960       CPPFLAGS="$save_CPPFLAGS $CUDA_CFLAGS"
1961       AC_CHECK_HEADER([cuda_gl_interop.h], [
1962         USE_NVENC_GST_GL="yes"
1963         AC_DEFINE(HAVE_NVENC_GST_GL, [1] , [NVENC GStreamer OpenGL support available])
1964         ])
1965       CPPFLAGS="$save_CPPFLAGS"
1966     fi
1967   else
1968     HAVE_NVENC="no"
1969   fi
1970 ])
1971 AM_CONDITIONAL(USE_NVENC_GST_GL, test "x$USE_NVENC_GST_GL" = "xyes")
1972
1973 dnl check for tinyalsa
1974 translit(dnm, m, l) AM_CONDITIONAL(USE_TINYALSA, true)
1975 AG_GST_CHECK_FEATURE(TINYALSA, [tinyalsa], tinyalsa, [
1976   AC_CHECK_HEADER(tinyalsa/asoundlib.h, HAVE_TINYALSA="yes", HAVE_TINYALSA="no")
1977 ])
1978
1979 dnl *** ext plug-ins ***
1980 dnl keep this list sorted alphabetically !
1981
1982 if test "x$BUILD_EXTERNAL" = "xyes"; then
1983
1984 dnl *** assrender ***
1985 translit(dnm, m, l) AM_CONDITIONAL(USE_ASSRENDER, true)
1986 AG_GST_CHECK_FEATURE(ASSRENDER, [ASS/SSA renderer], assrender, [
1987   PKG_CHECK_MODULES(ASSRENDER, libass >= 0.10.2, [
1988     HAVE_ASSRENDER="yes" ], [
1989     HAVE_ASSRENDER="no"
1990   ])
1991 ])
1992 AC_SUBST(ASSRENDER_CFLAGS)
1993 AC_SUBST(ASSRENDER_LIBS)
1994
1995 dnl *** vo-amrwbenc ***
1996 translit(dnm, m, l) AM_CONDITIONAL(USE_VOAMRWBENC, true)
1997 AG_GST_CHECK_FEATURE(VOAMRWBENC, [vo-amrwbenc library], vo-amrwbenc, [
1998   AG_GST_PKG_CHECK_MODULES(VOAMRWBENC, vo-amrwbenc >= 0.1.0)
1999 ])
2000
2001 dnl *** vo-aacenc ***
2002 translit(dnm, m, l) AM_CONDITIONAL(USE_VOAACENC, true)
2003 AG_GST_CHECK_FEATURE(VOAACENC, [vo-aacenc library], vo-aacenc, [
2004   AG_GST_PKG_CHECK_MODULES(VOAACENC, vo-aacenc >= 0.1.0)
2005 ])
2006
2007 dnl *** apexsink ***
2008 translit(dnm, m, l) AM_CONDITIONAL(USE_APEXSINK, true)
2009 AG_GST_CHECK_FEATURE(APEXSINK, [AirPort Express Wireless sink], apexsink, [
2010   PKG_CHECK_MODULES(APEXSINK, [ openssl >= 0.9.5  libcrypto ], [
2011     HAVE_APEXSINK="yes"
2012     saved_LIBS="$LIBS"
2013     LIBS=""
2014     AC_SEARCH_LIBS(socket, [socket], [ ], [ APEXSINK="no" ])
2015     AC_SEARCH_LIBS(gethostbyname, [nsl], [ ], [ APEXSINK="no" ])
2016     APEXSINK_LIBS="$APEXSINK_LIBS $LIBS"
2017     LIBS="$saved_LIBS"
2018     AC_SUBST(APEXSINK_CFLAGS)
2019     AC_SUBST(APEXSINK_LIBS)
2020   ], [
2021     APEXSINK="no"
2022   ])
2023 ])
2024
2025 dnl *** bs2b ***
2026 translit(dnm, m, l) AM_CONDITIONAL(USE_BS2B, true)
2027 AG_GST_CHECK_FEATURE(BS2B, [bs2b], bs2b, [
2028   PKG_CHECK_MODULES(BS2B, libbs2b >= 3.1.0, HAVE_BS2B="yes", [
2029     HAVE_BS2B="no"
2030   ])
2031   AC_SUBST(BS2B_CFLAGS)
2032   AC_SUBST(BS2B_LIBS)
2033 ])
2034
2035 dnl *** BZ2 ***
2036 translit(dnm, m, l) AM_CONDITIONAL(USE_BZ2, true)
2037 AG_GST_CHECK_FEATURE(BZ2, [bz2 library], bz2, [
2038   save_LIBS=$LIBS
2039   LIBS="$LIBS -lbz2"
2040   AC_MSG_CHECKING([for BZ2_bzlibVersion in -lbz2])
2041   AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <bzlib.h>]], [[const char *version = BZ2_bzlibVersion ();]])],[HAVE_BZ2=yes],[HAVE_BZ2=no])
2042   AC_MSG_RESULT($HAVE_BZ2)
2043   LIBS=$save_LIBS
2044   if test "x$HAVE_BZ2" = "xyes"; then
2045     BZ2_LIBS="-lbz2"
2046   fi
2047   AC_SUBST(BZ2_LIBS)
2048
2049 ])
2050
2051 #dnl *** cairo ***
2052 #translit(dnm, m, l) AM_CONDITIONAL(USE_CAIRO, true)
2053 #AG_GST_CHECK_FEATURE(CAIRO, [cairo plug-in], cairo, [
2054 #  PKG_CHECK_MODULES(CAIRO, cairo >= 1.0 glitz-glx, HAVE_CAIRO=yes, [
2055 #    HAVE_CAIRO=no
2056 #  ])
2057 #  AC_SUBST(CAIRO_CFLAGS)
2058 #  AC_SUBST(CAIRO_LIBS)
2059 #])
2060
2061 dnl *** chromaprint ***
2062 translit(dnm, m, l) AM_CONDITIONAL(USE_CHROMAPRINT, true)
2063 AG_GST_CHECK_FEATURE(CHROMAPRINT, [chromaprint], chromaprint, [
2064   PKG_CHECK_MODULES(CHROMAPRINT, libchromaprint, HAVE_CHROMAPRINT="yes", [
2065     HAVE_CHROMAPRINT="no"
2066   ])
2067   AC_SUBST(CHROMAPRINT_CFLAGS)
2068   AC_SUBST(CHROMAPRINT_LIBS)
2069 ])
2070
2071 dnl *** Curl ***
2072 translit(dnm, m, l) AM_CONDITIONAL(USE_CURL, true)
2073 AG_GST_CHECK_FEATURE(CURL, [Curl plugin], curl, [
2074   PKG_CHECK_MODULES(CURL, libcurl >= 7.35.0, [
2075     HAVE_CURL="yes"
2076     AC_CHECK_HEADERS([unistd.h sys/socket.h sys/types.h netinet/in.h netinet/tcp.h fcntl.h], [ ], [
2077       AC_CHECK_HEADERS([unistd.h sys/types.h winsock2.h ws2tcpip.h fcntl.h], [ ], [HAVE_CURL="no"])
2078     ])
2079     AC_CHECK_HEADERS([netinet/ip.h], [], [HAVE_CURL="no"],
2080     [[#ifdef HAVE_SYS_TYPES_H
2081      # include <sys/types.h>
2082      #endif
2083      #ifdef HAVE_NETINET_IN_H
2084      # include <netinet/in.h>
2085      #endif
2086     ]])
2087     AC_MSG_CHECKING([for socket support needed by curlsink])
2088     AC_MSG_RESULT($HAVE_CURL)
2089   ], [
2090     HAVE_CURL="no"
2091   ])
2092   AC_SUBST(CURL_CFLAGS)
2093   AC_SUBST(CURL_LIBS)
2094   PKG_CHECK_MODULES(SSH2, libssh2 >= 1.4.3, [
2095     HAVE_SSH2="yes"
2096     AC_DEFINE(HAVE_SSH2, 1, [Define if libssh2 is available])
2097   ], [
2098     HAVE_SSH2="no"
2099   ])
2100   AM_CONDITIONAL(USE_SSH2, test "x$HAVE_SSH2" = "xyes")
2101   AC_SUBST(SSH2_CFLAGS)
2102   AC_SUBST(SSH2_LIBS)
2103 ],,,[AM_CONDITIONAL(USE_SSH2, false)])
2104
2105 dnl **** DASH ****
2106 translit(dnm, m, l) AM_CONDITIONAL(USE_DASH, true)
2107 AG_GST_CHECK_FEATURE(DASH, [DASH plug-in], dash, [
2108   PKG_CHECK_MODULES(LIBXML2, libxml-2.0 >= 2.8, [HAVE_LIBXML2="yes"
2109     HAVE_DASH="yes"], [HAVE_LIBXML2="no"
2110     HAVE_DASH="no"])
2111   AC_SUBST(LIBXML2_CFLAGS)
2112   AC_SUBST(LIBXML2_LIBS)
2113 ])
2114
2115 dnl *** dc1394  ***
2116 translit(dnm, m, l) AM_CONDITIONAL(USE_DC1394, true)
2117 AG_GST_CHECK_FEATURE(DC1394, [libdc1394], dc1394, [
2118    PKG_CHECK_MODULES(LIBDC1394, libdc1394-2 >= 2.0.0, [
2119         if test -z "`$PKG_CONFIG --modversion libdc1394-2 | grep 2.0.0-rc`"; then
2120                 HAVE_DC1394="yes"
2121         else
2122                 HAVE_DC1394="no"
2123         fi
2124    ], [
2125         HAVE_DC1394="no"
2126         AC_MSG_RESULT(no)
2127    ])
2128    AC_SUBST(LIBDC1394_CFLAGS)
2129    AC_SUBST(LIBDC1394_LIBS)
2130 ])
2131
2132 dnl *** decklink  ***
2133 translit(dnm, m, l) AM_CONDITIONAL(USE_DECKLINK, true)
2134 AG_GST_CHECK_FEATURE(DECKLINK, [decklink], decklink, [
2135    HAVE_DECKLINK=no
2136    case "$host" in
2137      *android*)
2138        HAVE_DECKLINK=no
2139        ;;
2140      *-*linux*)
2141        if test "x$HAVE_PTHREAD_H" = "xyes"; then
2142          AC_CHECK_LIB(dl, dlopen,
2143            [
2144             HAVE_DECKLINK=yes
2145             DECKLINK_CXXFLAGS=
2146             DECKLINK_LIBS="-lpthread -ldl"
2147            ])
2148        fi
2149        ;;
2150      *-*darwin*)
2151        if test "x$HAVE_PTHREAD_H" = "xyes"; then
2152          AC_CHECK_LIB(dl, dlopen,
2153            [
2154             HAVE_DECKLINK=yes
2155             DECKLINK_CXXFLAGS=
2156             DECKLINK_LIBS="-lpthread -ldl"
2157             HAVE_DECKLINK_OSX=yes
2158            ])
2159        fi
2160        ;;
2161      *)
2162        HAVE_DECKLINK=no
2163        ;;
2164    esac
2165
2166    AC_SUBST(DECKLINK_CXXFLAGS)
2167    AC_SUBST(DECKLINK_LIBS)
2168 ])
2169 AM_CONDITIONAL(DECKLINK_OSX, test "x$HAVE_DECKLINK_OSX" = xyes)
2170
2171 dnl **** DirectFB ****
2172 translit(dnm, m, l) AM_CONDITIONAL(USE_DIRECTFB, true)
2173 AG_GST_CHECK_FEATURE(DIRECTFB, [directfb], dfbvideosink , [
2174   PKG_CHECK_MODULES(DIRECTFB, directfb >= 0.9.24, HAVE_DIRECTFB="yes", [
2175     HAVE_DIRECTFB="no"
2176   ])
2177 ])
2178
2179 dnl **** Wayland ****
2180 translit(dnm, m, l) AM_CONDITIONAL(USE_WAYLAND, true)
2181 AC_PATH_PROG([wayland_scanner], [wayland-scanner])
2182 AG_GST_CHECK_FEATURE(WAYLAND, [wayland sink], wayland , [
2183   PKG_CHECK_MODULES(WAYLAND, wayland-client >= 1.4.0, [
2184     if test "x$wayland_scanner" != "x"; then
2185       HAVE_WAYLAND="yes"
2186     else
2187       AC_MSG_RESULT([wayland-scanner is required to build the wayland plugin])
2188       HAVE_WAYLAND="no"
2189     fi
2190     ],
2191     [ HAVE_WAYLAND="no"
2192   ])
2193 ])
2194
2195 dnl **** WebP ****
2196 translit(dnm, m, l) AM_CONDITIONAL(USE_WEBP, true)
2197 AG_GST_CHECK_FEATURE(WEBP, [WebP], webp , [
2198   PKG_CHECK_MODULES(WEBP, libwebp >= 0.2.1, [
2199     HAVE_WEBP="yes" ], [ HAVE_WEBP="no"
2200   ])
2201   AC_SUBST(WEBP_CFLAGS)
2202   AC_SUBST(WEBP_LIBS)
2203 ])
2204
2205 dnl *** Daala ***
2206 translit(dnm, m, l) AM_CONDITIONAL(USE_DAALA, true)
2207 AG_GST_CHECK_FEATURE(DAALA, [daala], daala, [
2208   if test "x$BUILD_EXPERIMENTAL" = "xyes"; then
2209     PKG_CHECK_MODULES(DAALA, daalaenc daaladec, [
2210             HAVE_DAALA="yes"
2211     ], [
2212             HAVE_DAALA="no"
2213     ])
2214     AC_SUBST(DAALA_CFLAGS)
2215     AC_SUBST(DAALA_LIBS)
2216   fi
2217 ])
2218
2219 dnl *** DTS ***
2220 translit(dnm, m, l) AM_CONDITIONAL(USE_DTS, true)
2221 AG_GST_CHECK_FEATURE(DTS, [dts library], dtsdec, [
2222   HAVE_DTS="yes"
2223   AG_GST_CHECK_LIBHEADER(DTS, dca, dca_init, $LIBM, dca.h,
2224     DTS_LIBS="-ldca $LIBM", HAVE_DTS="no")
2225   if test $HAVE_DTS = "no"; then
2226     AG_GST_CHECK_LIBHEADER(DTS, dts_pic, dts_init, $LIBM, dts.h,
2227       [ DTS_LIBS="-ldts_pic $LIBM"
2228         AC_DEFINE(DTS_OLD, 1, [Define if an old libdts is used])
2229       ])
2230   fi
2231   AC_SUBST(DTS_LIBS)
2232 ])
2233
2234 dnl *** resindvd ***
2235 translit(dnm, m, l) AM_CONDITIONAL(USE_RESINDVD, true)
2236 AG_GST_CHECK_FEATURE(RESINDVD, [resindvd plugin], resindvd, [
2237   PKG_CHECK_MODULES(DVDNAV, dvdnav >= 4.1.2 dvdread >= 4.1.2, HAVE_RESINDVD="yes", [
2238     HAVE_RESINDVD="no"
2239   ])
2240 ])
2241
2242 dnl **** Free AAC Encoder (FAAC) ****
2243 translit(dnm, m, l) AM_CONDITIONAL(USE_FAAC, true)
2244 AG_GST_CHECK_FEATURE(FAAC, [AAC encoder plug-in], faac, [
2245   AG_GST_CHECK_LIBHEADER(FAAC, faac, faacEncOpen, $LIBM, faac.h,
2246     FAAC_LIBS="-lfaac $LIBM")
2247   AC_SUBST(FAAC_LIBS)
2248 ])
2249
2250 dnl **** Free AAC Decoder (FAAD2) ****
2251 translit(dnm, m, l) AM_CONDITIONAL(USE_FAAD, true)
2252 AG_GST_CHECK_FEATURE(FAAD, [FAAD2 AAC decoder plug-in], faad, [
2253   AG_GST_CHECK_LIBHEADER(FAAD, faad, NeAACDecOpen, $LIBM, neaacdec.h, [
2254     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <faad.h>]], [[
2255       #if !defined(FAAD2_VERSION) || !defined(FAAD_FMT_DOUBLE)
2256       #error Not faad2
2257       #elif !defined(LATM)
2258       #error Not faad2 >= 2.7
2259       #endif
2260     ]])],[
2261       HAVE_FAAD="yes"
2262       FAAD_LIBS="-lfaad"
2263     ], [
2264       AC_MSG_WARN([Found libfaad, but version not recent enough. Need faad2 >= 2.7])
2265       HAVE_FAAD="no"
2266     ])
2267   ], [
2268       HAVE_FAAD="no"
2269   ])
2270   AC_SUBST(FAAD_LIBS)
2271 ])
2272
2273 dnl *** fbdev ***
2274 translit(dnm, m, l) AM_CONDITIONAL(USE_FBDEV, true)
2275 AG_GST_CHECK_FEATURE(FBDEV, [linux framebuffer], fbdevsink, [
2276   if test "x$HAVE_FBDEV" != "xyes"; then
2277     AC_CHECK_HEADER([linux/fb.h], HAVE_FBDEV=yes, HAVE_FBDEV=no)
2278   fi
2279 ])
2280
2281 dnl *** flite ***
2282 translit(dnm, m, l) AM_CONDITIONAL(USE_FLITE, true)
2283 AG_GST_CHECK_FEATURE(FLITE, [Flite plugin], flite, [
2284   AG_GST_CHECK_LIBHEADER(FLITE, flite, flite_init, $LIBM, flite/flite.h,
2285     FLITE_LIBS="-lflite -lflite_cmu_us_kal -lflite_usenglish -lflite_cmulex $LIBM")
2286
2287   AC_SUBST(FLITE_CFLAGS)
2288   AC_SUBST(FLITE_LIBS)
2289 ])
2290
2291 dnl *** gsm ***
2292 translit(dnm, m, l) AM_CONDITIONAL(USE_GSM, true)
2293 AG_GST_CHECK_FEATURE(GSM, [GSM library], gsmenc gsmdec, [
2294   AG_GST_CHECK_LIBHEADER(GSM, gsm, gsm_create, , gsm.h, GSM_LIBS="-lgsm")
2295   if test $HAVE_GSM != "yes"; then
2296     AG_GST_CHECK_LIBHEADER(GSM, gsm, gsm_create, , gsm/gsm.h, GSM_LIBS="-lgsm")
2297     if test $HAVE_GSM = "yes"; then
2298       AC_DEFINE(GSM_HEADER_IN_SUBDIR, 1, [Define if GSM header in gsm/ subdir])
2299     fi
2300   fi
2301   AC_SUBST(GSM_LIBS)
2302 ])
2303
2304 dnl *** fluidSynth ***
2305 translit(dnm, m, l) AM_CONDITIONAL(USE_FLUIDSYNTH, true)
2306 AG_GST_CHECK_FEATURE(FLUIDSYNTH, [fluidsynth], fluidsynth, [
2307   PKG_CHECK_MODULES(FLUIDSYNTH, fluidsynth >= 1.0, HAVE_FLUIDSYNTH="yes", [
2308     HAVE_FLUIDSYNTH="no"
2309   ])
2310 ])
2311
2312 dnl *** kate ***
2313 translit(dnm, m, l) AM_CONDITIONAL(USE_KATE, true)
2314 AG_GST_CHECK_FEATURE(KATE, [Kate], kate, [
2315   PKG_CHECK_MODULES(KATE, kate >= 0.1.7, HAVE_KATE="yes", [
2316     HAVE_KATE="no"
2317   ])
2318   AC_SUBST(KATE_CFLAGS)
2319   AC_SUBST(KATE_LIBS)
2320   PKG_CHECK_MODULES(TIGER, tiger >= 0.3.2,
2321     [
2322       HAVE_TIGER="yes"
2323       AC_DEFINE(HAVE_TIGER, 1, [Define if libtiger is available])
2324     ],
2325     [
2326       HAVE_TIGER="no"
2327     ]
2328   )
2329   AM_CONDITIONAL(USE_TIGER, test "x$HAVE_TIGER" = "xyes")
2330   AC_SUBST(TIGER_CFLAGS)
2331   AC_SUBST(TIGER_LIBS)
2332 ],,,[AM_CONDITIONAL(USE_TIGER, false)])
2333
2334 dnl *** kms ***
2335 translit(dnm, m, l) AM_CONDITIONAL(USE_KMS, true)
2336 AG_GST_CHECK_FEATURE(KMS, [drm/kms libraries], kms, [
2337   AG_GST_PKG_CHECK_MODULES(GST_VIDEO, gstreamer-video-1.0)
2338   AG_GST_PKG_CHECK_MODULES(GST_ALLOCATORS, gstreamer-allocators-1.0)
2339   PKG_CHECK_MODULES([DRM], [libdrm libkms], HAVE_KMS=yes, HAVE_KMS=no)
2340 ])
2341
2342 dnl *** ladspa ***
2343 translit(dnm, m, l) AM_CONDITIONAL(USE_LADSPA, true)
2344 AG_GST_CHECK_FEATURE(LADSPA, [ladspa], ladspa, [
2345   AC_CHECK_HEADER(ladspa.h, HAVE_LADSPA="yes", HAVE_LADSPA="no")
2346
2347   PKG_CHECK_MODULES(LRDF, lrdf, HAVE_LRDF=yes, HAVE_LRDF=no)
2348   if test $HAVE_LRDF = "yes"; then
2349     AC_DEFINE(HAVE_LRDF, 1, [Define if we have liblrdf])
2350   fi
2351   AC_SUBST(LRDF_LIBS)
2352   AC_SUBST(LRDF_CFLAGS)
2353 ])
2354
2355 dnl *** LV2 ***
2356 translit(dnm, m, l) AM_CONDITIONAL(USE_LV2, true)
2357 AG_GST_CHECK_FEATURE(LV2, [lv2], lv2, [
2358   PKG_CHECK_MODULES(LILV, lilv-0 >= 0.6.6, HAVE_LV2="yes", HAVE_LV2="no")
2359   AC_SUBST(LILV_CFLAGS)
2360   AC_SUBST(LILV_LIBS)
2361 ])
2362
2363 dnl *** libde265 ***
2364 translit(dnm, m, l) AM_CONDITIONAL(USE_LIBDE265, true)
2365 AG_GST_CHECK_FEATURE(LIBDE265, [libde265 HEVC/H.265 decoder], libde265, [
2366   PKG_CHECK_MODULES(LIBDE265, libde265 >= 0.9, HAVE_LIBDE265="yes", HAVE_LIBDE265="no")
2367   AC_SUBST(LIBDE265_CFLAGS)
2368   AC_SUBST(LIBDE265_LIBS)
2369 ])
2370
2371 dnl *** libmms ***
2372 translit(dnm, m, l) AM_CONDITIONAL(USE_LIBMMS, true)
2373 AG_GST_CHECK_FEATURE(LIBMMS, [mms protocol library], libmms, [
2374   dnl check with pkg-config first
2375   PKG_CHECK_MODULES(LIBMMS, libmms >= 0.4, HAVE_LIBMMS="yes", [
2376     HAVE_LIBMMS="no"
2377   ])
2378 ])
2379 AC_SUBST(LIBMMS_LIBS)
2380
2381
2382 dnl *** libsrtp ***
2383 translit(dnm, m, l) AM_CONDITIONAL(USE_SRTP, true)
2384 AG_GST_CHECK_FEATURE(SRTP, [srtp library], srtp, [
2385   PKG_CHECK_MODULES(SRTP, libsrtp, HAVE_SRTP="yes",
2386     AG_GST_CHECK_LIBHEADER(SRTP, srtp, srtp_init, , srtp/srtp.h, SRTP_LIBS="-lsrtp")
2387   )
2388   AC_SUBST(SRTP_LIBS)
2389   AC_SUBST(SRTP_CFLAGS)
2390 ])
2391
2392 dnl *** dtls ***
2393 translit(dnm, m, l) AM_CONDITIONAL(USE_DTLS, true)
2394 AG_GST_CHECK_FEATURE(DTLS, [DTLS plugin], dtls, [
2395   PKG_CHECK_MODULES(DTLS, [ openssl >= 1.0.1  libcrypto ], [
2396     HAVE_DTLS="yes"
2397     AC_SUBST(DTLS_CFLAGS)
2398     AC_SUBST(DTLS_LIBS)
2399   ], [
2400     HAVE_DTLS="no"
2401   ])
2402 ])
2403
2404 dnl *** linsys ***
2405 translit(dnm, m, l) AM_CONDITIONAL(USE_LINSYS, true)
2406 AG_GST_CHECK_FEATURE(LINSYS, [Linear Systems SDI plugin], linsys, [
2407   case "$host" in
2408     *-*linux*)
2409       HAVE_LINSYS=yes
2410       ;;
2411     *)
2412       HAVE_LINSYS=no
2413       ;;
2414   esac
2415 ])
2416
2417 dnl *** modplug ***
2418 translit(dnm, m, l) AM_CONDITIONAL(USE_MODPLUG, true)
2419 AG_GST_CHECK_FEATURE(MODPLUG, modplug, modplug, [
2420   if test "x$HAVE_CXX" != "xyes"; then
2421     AC_MSG_WARN([Not compiling modplug plugin as it requires a C++ compiler])
2422     HAVE_MODPLUG="no"
2423   else
2424     PKG_CHECK_MODULES(MODPLUG, libmodplug, HAVE_MODPLUG="yes", HAVE_MODPLUG="no")
2425   fi
2426   AC_SUBST(MODPLUG_CFLAGS)
2427   AC_SUBST(MODPLUG_LIBS)
2428 ])
2429
2430 dnl *** mimic ***
2431 translit(dnm, m, l) AM_CONDITIONAL(USE_MIMIC, true)
2432 AG_GST_CHECK_FEATURE(MIMIC, [libmimic library], mimic, [
2433   MIMIC_REQUIRED=1.0
2434   PKG_CHECK_MODULES(MIMIC, libmimic >= $MIMIC_REQUIRED,
2435       HAVE_MIMIC=yes, HAVE_MIMIC=no)
2436   AC_SUBST(MIMIC_CFLAGS)
2437   AC_SUBST(MIMIC_LIBS)
2438 ])
2439
2440 dnl *** mjpegtools version info ***
2441 dnl some may prefer older version (given quirks above)
2442 dnl hm, no version info seems available within mjpegtools headers
2443 dnl and API really moves along
2444 echo
2445 PKG_CHECK_EXISTS(mjpegtools >= 1.6.1.93 mjpegtools < 1.8.0, [
2446   mjpegtools_api=10601
2447 ], [
2448   PKG_CHECK_EXISTS(mjpegtools >= 1.8.0 mjpegtools < 1.9.0, [
2449     mjpegtools_api=10800
2450   ], [
2451     PKG_CHECK_EXISTS(mjpegtools >= 2.0.0, [
2452       mjpegtools_api=20000
2453     ], [
2454       PKG_CHECK_MODULES(MJPEG, mjpegtools >= 1.9.0 mjpegtools < 2.0.0, [
2455         dnl logging API changed in release candidates
2456         OLD_CFLAGS="$CFLAGS"
2457         OLD_LIBS="$LIBS"
2458         CFLAGS="$MJPEG_CFLAGS"
2459         LIBS="$LIBS $MJPEG_LIBS -lmjpegutils $LIBM $PTHREAD_LIBS"
2460         AC_CHECK_FUNC(mjpeg_loglev_t, [
2461           mjpegtools_api=10903
2462           ], [
2463           mjpegtools_api=10900
2464           ])
2465         CFLAGS="$OLD_CFLAGS"
2466         LIBS="$OLD_LIBS"
2467       ], [
2468         mjpegtools_api=0
2469       ])
2470     ])
2471   ])
2472 ])
2473 AC_DEFINE_UNQUOTED(GST_MJPEGTOOLS_API, $mjpegtools_api,
2474   [mjpegtools API evolution])
2475
2476 dnl *** mpeg2enc ***
2477 translit(dnm, m, l) AM_CONDITIONAL(USE_MPEG2ENC, true)
2478 AG_GST_CHECK_FEATURE(MPEG2ENC, [mpeg2enc], mpeg2enc, [
2479   HAVE_MPEG2ENC="no"
2480   dnl we require a c++ compiler for this one
2481   if [ test x$HAVE_CXX = xyes ]; then
2482     dnl libmpeg2enc was first included in mjpegtools-1.6.2-rc3 (1.6.1.92)
2483     dnl since many distros include mjpegtools specifically without mplex
2484     dnl and mpeg2enc, we check for mpeg2enc on its own, too.
2485     PKG_CHECK_MODULES(MPEG2ENC, mjpegtools >= 1.6.1.93, [
2486       dnl HACK because mpeg2enc 1.8.0 header files have a spurious 'include config.h'
2487       touch config.h
2488       dnl switch over to c++ to test things
2489       AC_LANG([C++])
2490       OLD_CPPFLAGS="$CPPFLAGS"
2491       dnl HACK as above
2492       CPPFLAGS_GOOD="$CPPFLAGS $MPEG2ENC_CFLAGS"
2493       CPPFLAGS="$CPPFLAGS_GOOD -I."
2494       dnl check headers
2495       mpeg2enc_headers_ok=no
2496       AC_CHECK_HEADER([mpeg2encoder.hh], [
2497         MPEG2ENC_LIBS="$MPEG2ENC_LIBS -lmpeg2encpp $LIBM $PTHREAD_LIBS"
2498         OLD_LIBS="$LIBS"
2499         LIBS="$LIBS $MPEG2ENC_LIBS"
2500         AC_MSG_CHECKING([for valid mpeg2enc objects])
2501         AC_RUN_IFELSE([AC_LANG_SOURCE([[
2502           #include <mpeg2encoder.hh>
2503           #include <mpeg2encoptions.hh>
2504
2505           int
2506           main (int   argc,
2507                 char *argv[])
2508           {
2509             MPEG2EncOptions *options = new MPEG2EncOptions ();
2510             MPEG2Encoder *encoder = new MPEG2Encoder (*options);
2511             return 0;
2512           }
2513         ]])],[
2514           AC_MSG_RESULT(yes)
2515           dnl so far so good, let's check more things:
2516           dnl mjpegtools-1.8.0 does not install the required
2517           dnl mpeg2syntaxcodes.h header by default, and a new release
2518           dnl is not in sight, so check for this oversight in case
2519           dnl distros or folks have fixed this themselves
2520           if test "$mjpegtools_api" -ge "10800"; then
2521             AC_CHECK_HEADER([mpeg2syntaxcodes.h], [
2522                 mpeg2enc_headers_ok=yes
2523               ], [
2524                 mpeg2enc_headers_ok=no
2525               ])
2526           else
2527             mpeg2enc_headers_ok=yes
2528           fi
2529           if test "x$mpeg2enc_headers_ok" = "xyes"; then
2530             HAVE_MPEG2ENC="yes"
2531           fi
2532           CPPFLAGS="$CPPFLAGS_GOOD"
2533           AC_SUBST(MPEG2ENC_CFLAGS)
2534           AC_SUBST(MPEG2ENC_LIBS)
2535         ],[
2536           AC_MSG_RESULT(no)
2537         ],[])
2538         LIBS="$OLD_LIBS"
2539       ])
2540
2541       CPPFLAGS="$OLD_CPPFLAGS"
2542       AC_LANG([C])
2543     ], [
2544       HAVE_MPEG2ENC="no"
2545     ])
2546   fi
2547 ])
2548
2549 dnl *** mplex ***
2550 translit(dnm, m, l) AM_CONDITIONAL(USE_MPLEX, true)
2551 AG_GST_CHECK_FEATURE(MPLEX, [mplex], mplex, [
2552   HAVE_MPLEX="no"
2553   dnl we require a c++ compiler for this one
2554   if [ test x$HAVE_CXX = xyes ]; then
2555     dnl libmplex was first included in mjpegtools-1.6.2-rc4 (1.6.1.93)
2556     dnl since many distros include mjpegtools specifically without mplex
2557     dnl and mpeg2enc, we check for mplex on its own, too.
2558     dnl libmplex < 1.9rc? has fuzzy ABI, valgrind and other problems
2559     PKG_CHECK_MODULES(MPLEX, mjpegtools >= 1.9.0, [
2560       dnl HACK because mplex 2.0.0 header files have a spurious 'include config.h'
2561       touch config.h
2562       dnl switch over to c++ to test things
2563       AC_LANG([C++])
2564       OLD_CPPFLAGS="$CPPFLAGS"
2565       dnl HACK as above
2566       CPPFLAGS_GOOD="$CPPFLAGS $MPLEX_CFLAGS"
2567       CPPFLAGS="$CPPFLAGS_GOOD -I."
2568       AC_CHECK_HEADER(interact.hpp, [
2569         MPLEX_LIBS="$MPLEX_LIBS -lmplex2 $LIBM"
2570         OLD_LIBS="$LIBS"
2571         LIBS="$LIBS $MPLEX_LIBS"
2572         OLD_LDFLAGS="$LDFLAGS"
2573         LDFLAGS="$LDFLAGS $MPLEX_LDFLAGS"
2574         dnl older libmplex uses off_t SegmentSize (), which leads to fuzzy ABI;
2575         dnl don't want this here
2576         AC_MSG_CHECKING([for valid mplex objects])
2577         AC_RUN_IFELSE([AC_LANG_SOURCE([[
2578
2579 #include <interact.hpp>
2580 #include <outputstrm.hpp>
2581 #include <multiplexor.hpp>
2582 int
2583 main (int   argc,
2584       char *argv[])
2585 {
2586   class TestOutputStream : public OutputStream {
2587   public:
2588     TestOutputStream () : OutputStream () { }
2589     void Write (uint8_t *a, unsigned int b) { }
2590     void NextSegment () { }
2591     uint64_t SegmentSize () { }
2592     void Close () { }
2593     int Open () { }
2594 };
2595   MultiplexJob *job = new MultiplexJob ();
2596   vector<IBitStream *> inputs;
2597   job->SetupInputStreams (inputs);
2598   TestOutputStream *out = new TestOutputStream ();
2599   Multiplexor *mux = new Multiplexor(*job, *out, NULL);
2600   return 0;
2601 }
2602         ]])],[
2603           HAVE_MPLEX="yes"
2604           CPPFLAGS="$CPPFLAGS_GOOD"
2605           AC_SUBST(MPLEX_CFLAGS)
2606           AC_SUBST(MPLEX_LIBS)
2607           AC_SUBST(MPLEX_LDFLAGS)
2608           AC_MSG_RESULT(yes)
2609         ],[AC_MSG_RESULT(no)],[])
2610         LIBS="$OLD_LIBS"
2611         LDFLAGS="$OLD_LDFLAGS"
2612       ])
2613       CPPFLAGS="$OLD_CPPFLAGS"
2614       AC_LANG([C])
2615     ], HAVE_MPLEX="no")
2616   fi
2617 ])
2618
2619 dnl *** musepack ***
2620 translit(dnm, m, l) AM_CONDITIONAL(USE_MUSEPACK, true)
2621 AG_GST_CHECK_FEATURE(MUSEPACK, [musepackdec], musepack, [
2622   AC_CHECK_HEADER([mpc/mpcdec.h], [
2623     HAVE_MUSEPACK="yes"
2624     MUSEPACK_LIBS="-lmpcdec"
2625     AC_SUBST(MUSEPACK_LIBS)
2626     ], [AC_CHECK_HEADER([mpcdec/mpcdec.h], [
2627       HAVE_MUSEPACK="yes"
2628       MUSEPACK_LIBS="-lmpcdec"
2629       AC_DEFINE(MPC_IS_OLD_API, 1, [Define if the old MusePack API is used])
2630       AC_SUBST(MUSEPACK_LIBS)
2631     ], [HAVE_MUSEPACK="no"])])
2632 ])
2633
2634 dnl *** nas ***
2635 translit(dnm, m, l) AM_CONDITIONAL(USE_NAS, true)
2636 AG_GST_CHECK_FEATURE(NAS, [nas plug-in], nassink, [
2637   HAVE_NAS="no"
2638   if test "x$HAVE_X" = "xyes"; then
2639     save_cppflags=$CFLAGS
2640     CPPFLAGS="$CPPFLAGS $X_CFLAGS"
2641     AG_GST_CHECK_LIBHEADER(NAS, audio, AuOpenServer, $X_LIBS, audio/audiolib.h,
2642       NAS_LIBS="$X_LIBS -laudio" NAS_CFLAGS="$X_CFLAGS")
2643     CPPFLAGS="$save_cppflags"
2644   fi
2645   AC_SUBST(NAS_CFLAGS)
2646   AC_SUBST(NAS_LIBS)
2647 ])
2648
2649 dnl *** neon ***
2650 translit(dnm, m, l) AM_CONDITIONAL(USE_NEON, true)
2651 AG_GST_CHECK_FEATURE(NEON, [neon http client plugins], neonhttpsrc, [
2652   PKG_CHECK_MODULES(NEON, neon >= 0.27.0  neon <= 0.30.99, HAVE_NEON="yes", [
2653     HAVE_NEON="no"
2654   ])
2655   AC_SUBST(NEON_CFLAGS)
2656   AC_SUBST(NEON_LIBS)
2657 ])
2658
2659 dnl *** ofa ***
2660 translit(dnm, m, l) AM_CONDITIONAL(USE_OFA, true)
2661 AG_GST_CHECK_FEATURE(OFA, [ofa plugins], ofa, [
2662   PKG_CHECK_MODULES(OFA, libofa >= 0.9.3, HAVE_OFA="yes", [
2663     HAVE_OFA="no"
2664   ])
2665   AC_SUBST(OFA_CFLAGS)
2666   AC_SUBST(OFA_LIBS)
2667 ])
2668
2669 dnl *** OpenAL ***
2670 translit(dnm, m, l) AM_CONDITIONAL(USE_OPENAL, true)
2671 AG_GST_CHECK_FEATURE(OPENAL, [OpenAL plugin], openal, [
2672   PKG_CHECK_MODULES(OPENAL, openal >= 1.14, HAVE_OPENAL="yes", [
2673     HAVE_OPENAL="no"
2674   ])
2675   AC_SUBST(OPENAL_CFLAGS)
2676   AC_SUBST(OPENAL_LIBS)
2677 ])
2678
2679 dnl *** opencv ***
2680 translit(dnm, m, l) AM_CONDITIONAL(USE_OPENCV, true)
2681 AG_GST_CHECK_FEATURE(OPENCV, [opencv plugins], opencv, [
2682   dnl we specify a max. version too because we set CV_NO_BACKWARD_COMPATIBILITY
2683   dnl and don't want the build to break when a new opencv version comes out.
2684   dnl Need to adjust this upwards once we know that our code compiles fine with
2685   dnl a new version and the no-backward-compatibility define. (There doesn't
2686   dnl seem to be a switch to suppress the warnings the cvcompat.h header
2687   dnl causes.)
2688   PKG_CHECK_MODULES(OPENCV, opencv >= 2.3.0 opencv <= 3.1.0 , [
2689     AC_PROG_CXX
2690     AC_LANG([C++])
2691     OLD_CPPFLAGS=$CPPFLAGS
2692     CPPFLAGS=$OPENCV_CFLAGS
2693     something_not_found=no
2694     AC_CHECK_HEADERS([opencv2/core/core_c.h \
2695                       opencv2/core/version.hpp \
2696                       opencv2/highgui/highgui_c.h \
2697                       opencv2/imgproc/imgproc.hpp \
2698                       opencv2/imgproc/imgproc_c.h \
2699                       opencv2/objdetect/objdetect.hpp \
2700                       opencv2/video/background_segm.hpp], [], [something_not_found=yes])
2701     CPPFLAGS=$OLD_CPPFLAGS
2702     AC_LANG([C])
2703
2704     if test $something_not_found = "yes"; then
2705       AC_MSG_RESULT([not all opencv2 headers were found])
2706       HAVE_OPENCV="no"
2707     else
2708       HAVE_OPENCV="yes"
2709     fi
2710   ], [
2711     HAVE_OPENCV="no"
2712   ])
2713   OPENCV_PREFIX="`$PKG_CONFIG --variable=prefix opencv`"
2714   AC_DEFINE_UNQUOTED(OPENCV_PREFIX, "$OPENCV_PREFIX", [opencv install prefix])
2715   AC_SUBST(OPENCV_PREFIX)
2716   AC_SUBST(OPENCV_CFLAGS)
2717   AC_SUBST(OPENCV_LIBS)
2718   dnl the OpenCV prefix is used at runtime for some object properties, and also
2719   dnl used here to detect which directory is the correct one. For the second
2720   dnl case, make sure the right sysroot is used, ensuring correct behavior
2721   dnl during cross compilation.
2722   if test -d "$PKG_CONFIG_SYSROOT_DIR/$OPENCV_PREFIX/share/opencv/"; then
2723     AC_DEFINE_UNQUOTED(OPENCV_PATH_NAME, ["opencv"], [OpenCV path name])
2724   else
2725     AC_DEFINE_UNQUOTED(OPENCV_PATH_NAME, ["OpenCV"], [OpenCV path name])
2726   fi
2727 ])
2728
2729 dnl *** OpenEXR ***
2730 translit(dnm, m, l) AM_CONDITIONAL(USE_OPENEXR, true)
2731 AG_GST_CHECK_FEATURE(OPENEXR, [openexr library], openexr, [
2732   AG_GST_PKG_CHECK_MODULES(OPENEXR, OpenEXR)
2733 ])
2734
2735 dnl *** openh264 ***
2736 translit(dnm, m, l) AM_CONDITIONAL(USE_OPENH264, true)
2737 AG_GST_CHECK_FEATURE(OPENH264, [openh264 library], openh264, [
2738   AG_GST_PKG_CHECK_MODULES(OPENH264, openh264 >= 1.3.0)
2739 ])
2740
2741 dnl *** OpenJPEG ***
2742 translit(dnm, m, l) AM_CONDITIONAL(USE_OPENJPEG, true)
2743 AG_GST_CHECK_FEATURE(OPENJPEG, [openjpeg library], openjpeg, [
2744   HAVE_OPENJPEG="no"
2745   AG_GST_PKG_CHECK_MODULES(OPENJPEG, libopenjp2 >= 2.0)
2746   if test x"$HAVE_OPENJPEG" = x"yes"; then
2747     dnl minor API changes in v2.1
2748     AG_GST_PKG_CHECK_MODULES(OPENJPEG_2_1, libopenjp2 >= 2.1)
2749     if test x"$HAVE_OPENJPEG" = x"yes"; then
2750       AC_DEFINE([HAVE_OPENJPEG_2_1], 1, [Define if OpenJPEG 2.1 is used])
2751     fi
2752   else
2753     # Fallback to v1.5
2754     OPENJPEG_LIBS=""
2755     PKG_CHECK_MODULES(OPENJPEG, libopenjpeg1,
2756       HAVE_OPENJPEG="yes",
2757       AG_GST_CHECK_LIBHEADER(OPENJPEG, openjpeg, opj_version, , openjpeg.h, OPENJPEG_LIBS="-lopenjpeg")
2758     )
2759     if test x"$HAVE_OPENJPEG" = x"yes"; then
2760       AC_DEFINE([HAVE_OPENJPEG_1], 1, [Define if OpenJPEG 1 is used])
2761     fi
2762   fi
2763   AC_SUBST(OPENJPEG_CFLAGS)
2764   AC_SUBST(OPENJPEG_LIBS)
2765 ])
2766
2767 dnl *** OpenNI2 ***
2768 translit(dnm, m, l) AM_CONDITIONAL(USE_OPENNI2, true)
2769 AG_GST_CHECK_FEATURE(OPENNI2, [openni2 library], openni2, [
2770   PKG_CHECK_MODULES(OPENNI2, libopenni2 >= 0.26, HAVE_OPENNI2="yes", [ HAVE_OPENNI2="no" ] )
2771   AC_SUBST(OPENNI2_CFLAGS)
2772   AC_SUBST(OPENNI2_LIBS)
2773 ])
2774
2775 dnl *** Opus ***
2776 translit(dnm, m, l) AM_CONDITIONAL(USE_OPUS, true)
2777 AG_GST_CHECK_FEATURE(OPUS, [opus], opus, [
2778   PKG_CHECK_MODULES(OPUS, opus >= 0.9.4, [
2779           AC_DEFINE([HAVE_OPUS], 1, [Define if Opus >= 0.9.4 is installed])
2780           HAVE_OPUS="yes"
2781   ], [
2782           HAVE_OPUS="no"
2783   ])
2784   AC_SUBST(OPUS_CFLAGS)
2785   AC_SUBST(OPUS_LIBS)
2786 ])
2787
2788 dnl *** pvr ***
2789 translit(dnm, m, l) AM_CONDITIONAL(USE_PVR, true)
2790 AG_GST_CHECK_FEATURE(PVR, [pvrvideosink], pvr, [
2791   PKG_CHECK_MODULES([PVR], [libtimemmgr], HAVE_PVR=yes, HAVE_PVR=no)
2792   AC_SUBST(PVR_CFLAGS)
2793   AC_SUBST(PVR_LIBS)
2794 ])
2795
2796  AC_ARG_WITH([pvr-external-headers],
2797               AS_HELP_STRING([--with-pvr-external-headers],[Use system installed PVR2D headers]),
2798               [AS_IF([test "x$with_pvr_external_headers" = "xno"],
2799                      [PVR_CFLAGS="$PVR_CFLAGS -I\$(srcdir)/pvr_includes"])],
2800               [PVR_CFLAGS="$PVR_CFLAGS -I\$(srcdir)/pvr_includes"])
2801
2802 dnl *** rsvg ***
2803 translit(dnm, m, l) AM_CONDITIONAL(USE_RSVG, true)
2804 AG_GST_CHECK_FEATURE(RSVG, [rsvg decoder], rsvg, [
2805   AG_GST_PKG_CHECK_MODULES(RSVG, librsvg-2.0 >= 2.36.2)
2806 ])
2807
2808 dnl *** gl ***
2809 translit(dnm, m, l) AM_CONDITIONAL(USE_GL, true)
2810 AG_GST_CHECK_FEATURE(GL, [gl elements], gl, [
2811   HAVE_GL="no"
2812
2813   if test x"$USE_OPENGL" = x"yes" -o x"$USE_GLES2" = x"yes"; then
2814     HAVE_GL="yes"
2815   fi
2816 ])
2817
2818 dnl *** gtk+ ***
2819 HAVE_GTK3_GL="no"
2820 translit(dnm, m, l) AM_CONDITIONAL(USE_GTK3, true)
2821 AG_GST_CHECK_FEATURE(GTK3, [Gtk+ elements], gtk, [
2822   PKG_CHECK_MODULES(GTK3, gtk+-3.0, [
2823     AC_DEFINE([HAVE_GTK3], 1, [Define if Gtk+ 3.0 is installed])
2824     HAVE_GTK3="yes"
2825   ], [
2826     HAVE_GTK3="no"
2827   ])
2828   PKG_CHECK_MODULES(GTK3_GL, gtk+-3.0 >= 3.15.0, [
2829     GDK_WINDOWING="no"
2830     if test "x$GST_GL_HAVE_WINDOW_X11" = "x1" -a "x$GST_GL_HAVE_PLATFORM_GLX" = "x1"; then
2831       PKG_CHECK_MODULES(GTK3_X11, gtk+-x11-3.0, [
2832         GTK3_CFLAGS="$GTK3_CFLAGS $GTK3_X11_CFLAGS"
2833         GTK3_LIBS="$GTK3_LIBS $GTK3_X11_LIBS"
2834         GDK_WINDOWING="yes"
2835       ], [AC_MSG_NOTICE([Could not find Gtk X11 integration])])
2836     fi
2837     if test "x$GST_GL_HAVE_WINDOW_WAYLAND" = "x1" -a "x$GST_GL_HAVE_PLATFORM_EGL" = "x1"; then
2838       PKG_CHECK_MODULES(GTK3_WAYLAND, gtk+-wayland-3.0, [
2839         GTK3_CFLAGS="$GTK3_CFLAGS $GTK3_WAYLAND_CFLAGS"
2840         GTK3_LIBS="$GTK3_LIBS $GTK3_WAYLAND_LIBS"
2841         GDK_WINDOWING="yes"
2842       ], [AC_MSG_NOTICE([Could not find Gtk Wayland integration])])
2843     fi
2844     if test "x$GDK_WINDOWING" = "xyes"; then
2845       AC_DEFINE([HAVE_GTK3_GL], 1, [Define if Gtk+ 3.0 GL is installed])
2846       HAVE_GTK3_GL="yes"
2847     fi
2848   ], [
2849       HAVE_GTK3_GL="no"
2850   ])
2851 ])
2852 AM_CONDITIONAL(USE_GTK3_GL, test "x$HAVE_GTK3_GL" = "xyes")
2853
2854 dnl *** Qt ***
2855 translit(dnm, m, l) AM_CONDITIONAL(USE_QT, true)
2856 AG_GST_CHECK_FEATURE(QT, [Qt elements], qt, [
2857   PKG_CHECK_MODULES(QT, Qt5Core Qt5Gui Qt5Qml Qt5Quick >= 5.4.0, [
2858       QT_PATH=`$PKG_CONFIG --variable=exec_prefix Qt5Core`
2859       QT_HOST_PATH=`$PKG_CONFIG --variable=host_bins Qt5Core`
2860       AC_PATH_PROGS(MOC, [moc-qt5 moc], moc, ["${QT_HOST_PATH}" "${QT_PATH}/bin"])
2861       AC_PATH_PROGS(RCC, [rcc-qt5 rcc], rcc, ["${QT_HOST_PATH}" "${QT_PATH}/bin"])
2862       AC_PATH_PROGS(UIC, [uic-qt5 uic], uic, ["${QT_HOST_PATH}" "${QT_PATH}/bin"])
2863       if test "x$MOC" = "x" || test "x$UIC" = "x" || test "x$RCC" = "x"; then
2864         AC_MSG_WARN([One of the required qt build programs was not found])
2865         HAVE_QT="no"
2866       else
2867         HAVE_QT="yes"
2868         HAVE_QT_WINDOWING="no"
2869         QT_VERSION="`$PKG_CONFIG --modversion Qt5Core`"
2870         QPA_INCLUDE_PATH=`$PKG_CONFIG --variable=includedir Qt5Core`/QtGui/${QT_VERSION}/QtGui
2871         AC_SUBST(QPA_INCLUDE_PATH)
2872         if test "x$GST_GL_HAVE_WINDOW_X11" = "x1" -a "x$GST_GL_HAVE_PLATFORM_GLX" = "x1"; then
2873           PKG_CHECK_MODULES(QT_X11, Qt5X11Extras, [
2874             AC_DEFINE([HAVE_QT_X11], [], [Define if Qt X11 integration is installed])
2875             QT_CFLAGS="$QT_CFLAGS $QT_X11_CFLAGS"
2876             QT_LIBS="$QT_LIBS $QT_X11_LIBS"
2877             HAVE_QT_WINDOWING="yes"
2878           ], [AC_MSG_NOTICE([Could not find Qt X11 integration])])
2879         fi
2880         if test "x$GST_GL_HAVE_WINDOW_WAYLAND" = "x1" -a "x$GST_GL_HAVE_PLATFORM_EGL" = "x1"; then
2881           PKG_CHECK_MODULES(QT_WAYLAND, Qt5WaylandClient, [
2882             AC_DEFINE([HAVE_QT_WAYLAND], [],
2883                 [Define if Qt Wayland integration is installed])
2884             QT_CFLAGS="$QT_CFLAGS $QT_WAYLAND_CFLAGS"
2885             QT_LIBS="$QT_LIBS $QT_WAYLAND_LIBS"
2886             HAVE_QT_WINDOWING="yes"
2887           ], [AC_MSG_NOTICE([Could not find Qt Wayland integration])])
2888         fi
2889         if test "x$GST_GL_HAVE_WINDOW_ANDROID" = "x1" -a "x$GST_GL_HAVE_PLATFORM_EGL" = "x1"; then
2890           PKG_CHECK_MODULES(QT_ANDROID, Qt5AndroidExtras, [
2891             # c++ on android requires a standard library and there are multiple
2892             # choices.  cerbero provides a pkg-config file the describes a choice
2893             # so try to use that.  Outside cerbero one has to pass these flags
2894             # manually for the library one is using
2895             PKG_CHECK_MODULES(GNUSTL, gnustl, [
2896               QT_CFLAGS="$QT_CFLAGS $GNUSTL_CFLAGS"
2897               QT_LIBS="$QT_LIBS $GNUSTL_LIBS"
2898               ], [
2899               AC_MSG_NOTICE([Could not find Standard C++ library])])
2900
2901             AC_DEFINE([HAVE_QT_ANDROID], [],
2902                 [Define if Qt Android integration is installed])
2903             QT_CFLAGS="$QT_CFLAGS $QT_ANDROID_CFLAGS"
2904             QT_LIBS="$QT_LIBS $QT_ANDROID_LIBS"
2905             HAVE_QT_WINDOWING="yes"
2906           ], [AC_MSG_NOTICE([Could not find Qt Android integration])])
2907         fi
2908         if test "x$GST_GL_HAVE_WINDOW_COCOA" = "x1" -a "x$GST_GL_HAVE_PLATFORM_CGL" = "x1"; then
2909           PKG_CHECK_MODULES(QT_MAC, Qt5MacExtras, [
2910             AC_DEFINE([HAVE_QT_MAC], [],
2911                 [Define if Qt Mac integration is installed])
2912             QT_LIBDIR=`$PKG_CONFIG --variable=libdir Qt5Core`
2913             QT_CFLAGS="$QT_CFLAGS $QT_MAC_CFLAGS -F$QT_LIBDIR -framework QtCore -framework QtGui -framework QtQuick -framework QtQml -framework QtMacExtras"
2914             QT_LIBS="$QT_LIBS $QT_MAC_LIBS"
2915             HAVE_QT_WINDOWING="yes"
2916           ], [AC_MSG_NOTICE([Could not find Qt Mac integration])])
2917         fi
2918         if test "x$GST_GL_HAVE_WINDOW_EAGL" = "x1" -a "x$GST_GL_HAVE_PLATFORM_EAGL" = "x1"; then
2919           if test "x$HAVE_IOS" = "xyes"; then
2920             # iOS doesn't have its own extras package so if we have the core
2921             # modules we are good to go
2922             AC_DEFINE([HAVE_QT_IOS], [],
2923                 [Define if Qt iOS integration is installed])
2924             HAVE_QT_WINDOWING="yes"
2925           fi
2926         fi
2927         if test "x$HAVE_QT_WINDOWING" = "xno"; then
2928           AC_MSG_WARN([Could not find any Qt Windowing integration])
2929           HAVE_QT="no"
2930         fi
2931         AC_SUBST([QT_CFLAGS])
2932         AC_SUBST([QT_LIBS])
2933       fi
2934   ], [
2935       HAVE_QT="no"
2936   ])
2937 ])
2938
2939 dnl *** Vulkan ***
2940 translit(dnm, m, l) AM_CONDITIONAL(USE_VULKAN, true)
2941 AG_GST_CHECK_FEATURE(VULKAN, [Vulkan elements], vulkan, [
2942   HAVE_VULKAN=no
2943   AC_CHECK_HEADER(vulkan/vulkan.h, [
2944     AC_CHECK_LIB(vulkan, vkCreateDevice, [
2945       VULKAN_LIBS="-lvulkan"
2946       AC_SUBST(VULKAN_LIBS)
2947       dnl TODO check platform support (x11, win32, wayland, android, etc)
2948       if test "x$HAVE_XCB" = "xyes"; then
2949         HAVE_VULKAN=yes
2950       fi
2951     ], [])
2952   ], [])
2953 ])
2954
2955 dnl *** libvisual ***
2956 translit(dnm, m, l) AM_CONDITIONAL(USE_LIBVISUAL, true)
2957 AG_GST_CHECK_FEATURE(LIBVISUAL, [libvisual visualization library], libvisual, [
2958   AG_GST_PKG_CHECK_MODULES(LIBVISUAL, libvisual-0.4 >= 0.4.0)
2959   if test x$HAVE_LIBVISUAL = xyes; then
2960     LIBVIS_PLUGINSDIR="`$PKG_CONFIG --variable=pluginsbasedir libvisual-0.4`"
2961   fi
2962   AC_MSG_NOTICE([libvisual pluginsdir: $LIBVIS_PLUGINSDIR])
2963   if test x$LIBVIS_PLUGINSDIR != x; then
2964     AC_DEFINE_UNQUOTED(LIBVISUAL_PLUGINSBASEDIR,
2965         "$LIBVIS_PLUGINSDIR",
2966         [directory in which the detected libvisual's plugins are located])
2967   fi
2968 ])
2969
2970 dnl *** timidity ***
2971 translit(dnm, m, l) AM_CONDITIONAL(USE_TIMIDITY, true)
2972 AG_GST_CHECK_FEATURE(TIMIDITY, [timidity midi soft synth plugin], timidity, [
2973   PKG_CHECK_MODULES(TIMIDITY, libtimidity, [
2974     HAVE_TIMIDITY="yes",
2975         AC_MSG_CHECKING([for timidity.cfg])
2976         timidity_cfg=""
2977         if test -r /etc/timidity.cfg; then
2978           timidity_cfg=/etc/timidity.cfg
2979         elif test -r /etc/timidity/timidity.cfg; then
2980           timidity_cfg=/etc/timidity/timidity.cfg
2981         elif test -r /usr/share/timidity/timidity.cfg; then
2982           timidity_cfg=/usr/share/timidity/timidity.cfg
2983         elif test -r /usr/local/share/timidity/timidity.cfg; then
2984           timidity_cfg=/usr/local/share/timidity/timidity.cfg
2985         fi
2986         if test "x$timidity_cfg" != "x"; then
2987           AC_MSG_RESULT($timidity_cfg)
2988       AC_DEFINE_UNQUOTED(TIMIDITY_CFG, "$timidity_cfg", [Define location of timidity.cfg])
2989         else
2990           AC_MSG_RESULT([not found])
2991         fi
2992   ], [
2993     HAVE_TIMIDITY="no"
2994   ])
2995   AC_SUBST(TIMIDITY_CFLAGS)
2996   AC_SUBST(TIMIDITY_LIBS)
2997 ])
2998
2999 dnl *** teletextdec ***
3000 translit(dnm, m, l) AM_CONDITIONAL(USE_TELETEXTDEC, true)
3001 AG_GST_CHECK_FEATURE(TELETEXTDEC, [Teletext decoder], teletextdec, [
3002   AG_GST_PKG_CHECK_MODULES(TELETEXTDEC, zvbi-0.2)
3003  ])
3004
3005 dnl *** wildmidi ***
3006 translit(dnm, m, l) AM_CONDITIONAL(USE_WILDMIDI, true)
3007 AG_GST_CHECK_FEATURE(WILDMIDI, [wildmidi midi soft synth plugin], wildmidi, [
3008   AG_GST_CHECK_LIBHEADER(WILDMIDI, WildMidi,
3009                          WildMidi_Init, ,
3010                          wildmidi_lib.h,
3011                          WILDMIDI_LIBS="-lWildMidi")
3012   AC_CHECK_LIB(WildMidi, WildMidi_LoadSamples, AC_DEFINE(HAVE_WILDMIDI_0_2_2, [1], [Have WildMidi 0.2.2 or earlier library]))
3013
3014   if test "x$HAVE_WILDMIDI" = "xyes"; then
3015          WILDMIDI_CFLAGS=
3016          WILDMIDI_LIBS=-lWildMidi
3017          AC_MSG_NOTICE(compiling gstWildMidi)
3018   else
3019          WILDMIDI_CFLAGS=
3020          WILDMIDI_LIBS=
3021          AC_MSG_WARN(no WildMidi library found (libWildMidi))
3022   fi
3023   AC_SUBST(WILDMIDI_CFLAGS)
3024   AC_SUBST(WILDMIDI_LIBS)
3025 ])
3026
3027 dnl *** SDL ***
3028 translit(dnm, m, l) AM_CONDITIONAL(USE_SDL, true)
3029 AG_GST_CHECK_FEATURE(SDL, [SDL plug-in], sdlvideosink sdlaudiosink, [
3030     AM_PATH_SDL(, HAVE_SDL=yes, HAVE_SDL=no)
3031 ])
3032
3033 dnl **** Smooth Streaming ****
3034 translit(dnm, m, l) AM_CONDITIONAL(USE_SMOOTHSTREAMING, true)
3035 AG_GST_CHECK_FEATURE(SMOOTHSTREAMING, [Smooth Streaming plug-in], smoothstreaming, [
3036   PKG_CHECK_MODULES(LIBXML2, libxml-2.0 >= 2.4,
3037     [HAVE_LIBXML2="yes"
3038      HAVE_SMOOTHSTREAMING="yes"],
3039     [HAVE_LIBXML2="no"
3040      HAVE_SMOOTHSTREAMING="no"])
3041   AC_SUBST(LIBXML2_CFLAGS)
3042   AC_SUBST(LIBXML2_LIBS)
3043 ])
3044
3045 dnl *** sndfile ***
3046 translit(dnm, m, l) AM_CONDITIONAL(USE_SNDFILE, true)
3047 AG_GST_CHECK_FEATURE(SNDFILE, [sndfile plug-in], sfdec sfenc, [
3048   PKG_CHECK_MODULES(SNDFILE, sndfile >= 1.0.16, HAVE_SNDFILE="yes", HAVE_SNDFILE="no")
3049   AC_SUBST(SNDFILE_CFLAGS)
3050   AC_SUBST(SNDFILE_LIBS)
3051 ])
3052
3053 dnl *** soundtouch ***
3054 translit(dnm, m, l) AM_CONDITIONAL(USE_SOUNDTOUCH, true)
3055 AG_GST_CHECK_FEATURE(SOUNDTOUCH, [soundtouch plug-in], soundtouch, [
3056   dnl We only need -lBPM on soundtouch < 1.4
3057   dnl We check for libSoundTouch since Debian used it before upstream
3058   dnl added a pkgconfig file.
3059   HAVE_SOUNDTOUCH_1_4=yes
3060   PKG_CHECK_MODULES(SOUNDTOUCH, soundtouch,
3061     [HAVE_SOUNDTOUCH=yes],
3062     [PKG_CHECK_MODULES(SOUNDTOUCH, soundtouch-1.4,
3063       [HAVE_SOUNDTOUCH=yes],
3064       [PKG_CHECK_MODULES(SOUNDTOUCH, soundtouch-1.0,
3065         [HAVE_SOUNDTOUCH=yes
3066           HAVE_SOUNDTOUCH_1_4=no
3067           SOUNDTOUCH_LIBS="$SOUNDTOUCH_LIBS -lBPM"],
3068         [PKG_CHECK_MODULES(SOUNDTOUCH, libSoundTouch >= 1.4,
3069           [HAVE_SOUNDTOUCH=yes],
3070           [PKG_CHECK_MODULES(SOUNDTOUCH, libSoundTouch,
3071             [HAVE_SOUNDTOUCH=yes
3072               HAVE_SOUNDTOUCH_1_4=no
3073               SOUNDTOUCH_LIBS="$SOUNDTOUCH_LIBS -lBPM"],
3074             HAVE_SOUNDTOUCH=no)])])])])
3075   AC_SUBST(SOUNDTOUCH_CFLAGS)
3076   AC_SUBST(SOUNDTOUCH_LIBS)
3077   if test "x$HAVE_CXX" != "xyes"; then
3078     USE_SOUNDTOUCH=false
3079     AC_MSG_NOTICE([Not building soundtouch plugin: no C++ compiler found])
3080   fi
3081   if test "x$HAVE_SOUNDTOUCH" = "xyes" -a "x$HAVE_SOUNDTOUCH_1_4" = "xyes"; then
3082      AC_DEFINE([HAVE_SOUNDTOUCH_1_4], [1],
3083          [Defined if the available libSoundTouch is >= 1.4])
3084   fi
3085 ])
3086
3087 dnl *** spc ***
3088 translit(dnm, m, l) AM_CONDITIONAL(USE_SPC, true)
3089 AG_GST_CHECK_FEATURE(SPC, [spc decoder], spc, [
3090   AC_CHECK_HEADER(openspc.h, [
3091     AC_CHECK_LIB(openspc, OSPC_Init, [
3092       SPC_LIBS="-lopenspc"
3093       AC_SUBST(SPC_LIBS)
3094       HAVE_SPC=yes
3095     ], [
3096       HAVE_SPC=no
3097     ])
3098   ], [
3099     HAVE_SPC=no
3100   ])
3101 ])
3102
3103 dnl *** gme ***
3104 translit(dnm, m, l) AM_CONDITIONAL(USE_GME, true)
3105 AG_GST_CHECK_FEATURE(GME, [gme decoder], gme, [
3106   AC_CHECK_HEADER(gme/gme.h, [
3107     AC_CHECK_LIB(gme, gme_new_emu, [
3108       GME_LIBS="-lgme"
3109       AC_SUBST(GME_LIBS)
3110       HAVE_GME=yes
3111     ], [
3112       HAVE_GME=no
3113     ])
3114   ], [
3115     HAVE_GME=no
3116   ])
3117
3118   if test "x$HAVE_GME" = "xyes"; then
3119     AC_CHECK_LIB(gme, gme_enable_accuracy, [
3120       AC_DEFINE(HAVE_LIBGME_ACCURACY, 1, [Define if gme 0.5.6 or newer is available])
3121       ])
3122   fi
3123 ])
3124
3125 dnl *** XVID ***
3126 translit(dnm, m, l) AM_CONDITIONAL(USE_XVID, true)
3127 AG_GST_CHECK_FEATURE(XVID, [xvid plugins], xvid, [
3128   HAVE_XVID=no
3129   AC_CHECK_HEADER(xvid.h, [
3130     OLD_LIBS="$LIBS"
3131     LIBS="$PTHREAD_LIBS $LIBM"
3132     AC_CHECK_LIB(xvidcore, xvid_encore, [
3133       AC_CHECK_LIB(xvidcore, xvid_decore, [
3134         AC_CHECK_LIB(xvidcore, xvid_global, [
3135           AC_MSG_CHECKING([for up-to-date XviD API version])
3136           AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <xvid.h>]], [[
3137               #if XVID_API_MAJOR(XVID_API) != 4
3138               #error "Incompatible XviD API version"
3139               #endif
3140               #if XVID_API_MAJOR(XVID_API) == 4 && XVID_API_MINOR(XVID_API) < 3
3141               #error "Incompatible XviD API version"
3142               #endif
3143           ]])],[ AC_MSG_RESULT(yes)
3144             XVID_LIBS="-lxvidcore $LIBM"
3145             AC_SUBST(XVID_LIBS)
3146             HAVE_XVID=yes
3147           ],[AC_MSG_RESULT(no) ])
3148         ], )
3149       ], )
3150     ], )
3151     LIBS="$OLD_LIBS"
3152   ], )
3153 ])
3154
3155 dnl *** dvb ***
3156 translit(dnm, m, l) AM_CONDITIONAL(USE_DVB, true)
3157 AG_GST_CHECK_FEATURE(DVB, [DVB Source], dvb, [
3158   AC_MSG_CHECKING([Checking for up to date dvb installation])
3159   AC_CHECK_HEADER(linux/dvb/version.h, [
3160     AC_MSG_CHECKING([for up-to-date dvb API])
3161     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <linux/dvb/version.h>]], [[
3162         #if DVB_API_VERSION < 5 || (DVB_API_VERSION == 5 && DVB_API_VERSION_MINOR <= 4)
3163         #error "Incompatible dvb API"
3164         #endif
3165     ]])], [ AC_MSG_RESULT(yes)
3166       HAVE_DVB="yes"
3167     ], [ AC_MSG_RESULT(no)
3168       HAVE_DVB="no"
3169     ])
3170   ], [HAVE_DVB="no"])
3171 ])
3172
3173 dnl *** wininet ***
3174 translit(dnm, m, l) AM_CONDITIONAL(USE_WININET, true)
3175 AG_GST_CHECK_FEATURE(WININET, [Windows internet library], wininet, [
3176   AC_MSG_CHECKING([Checking for windows internet support])
3177   AC_CHECK_HEADERS([windows.h wininet.h],
3178       [HAVE_WININET="yes"], [HAVE_WININET="no"],
3179       [AC_INCLUDES_DEFAULT
3180 #include <windows.h>])
3181 ])
3182
3183 dnl *** acm ***
3184 translit(dnm, m, l) AM_CONDITIONAL(USE_ACM, true)
3185 AG_GST_CHECK_FEATURE(ACM, [Windows ACM library], acm, [
3186   AC_MSG_CHECKING([Checking for ACM support])
3187   AC_CHECK_HEADERS([windows.h msacm.h],
3188       [HAVE_ACM="yes"
3189        AC_SUBST(ACMENC_CFLAGS)
3190        AC_SUBST(ACMMP3DEC_CFLAGS)
3191       ], [HAVE_ACM="no"],
3192       [AC_INCLUDES_DEFAULT
3193 #include <windows.h>])
3194 ])
3195
3196 dnl *** vdpau ***
3197 translit(dnm, m, l) AM_CONDITIONAL(USE_VDPAU, true)
3198 AG_GST_CHECK_FEATURE(VDPAU, [VDPAU], vdpau, [
3199   VDPAU_CFLAGS=
3200   VDPAU_LIBS=-lvdpau
3201   HAVE_VDPAU=no
3202
3203   PKG_CHECK_MODULES(VDPAU, vdpau, [HAVE_VDPAU="yes"],
3204   [
3205     if test "$HAVE_VDPAU" = "no"; then
3206       saved_CPPFLAGS="$CPPFLAGS"
3207       AC_CHECK_HEADER([vdpau/vdpau.h], [HAVE_VDPAU_H=yes])
3208
3209       if test -z "$HAVE_VDPAU_H"; then
3210         dnl Didn't find VDPAU header straight away.
3211         dnl Try /usr/include/nvidia. Need to clear caching vars first
3212         AC_MSG_NOTICE([VDPAU header not in standard path. Checking /usr/include/nvidia])
3213         unset ac_cv_header_vdpau_vdpau_h
3214         unset ac_cv_header_vdpau_vdpau_x11_h
3215         VDPAU_CFLAGS="-I/usr/include/nvidia"
3216         VDPAU_LIBS="-L/usr/lib/nvidia -lvdpau"
3217         CPPFLAGS="$VDPAU_CFLAGS $saved_CPPFLAGS"
3218         AC_CHECK_HEADER([vdpau/vdpau.h], [HAVE_VDPAU_H=yes])
3219       fi
3220
3221       AC_CHECK_HEADER([vdpau/vdpau_x11.h], [HAVE_VDPAU_X11_H=yes])
3222
3223       if test "x$HAVE_VDPAU_H" = "xyes" -a "x$HAVE_VDPAU_X11_H" = "xyes"; then
3224         dnl Found the headers - look for the lib
3225         AC_MSG_NOTICE([VDPAU headers found. Checking libraries])
3226         saved_LIBS="$LIBS"
3227         LIBS="$VDPAU_LIBS $saved_LIBS"
3228         AC_CHECK_LIB(vdpau,vdp_device_create_x11,[HAVE_VDPAU="yes"])
3229         LIBS="$saved_LIBS"
3230       fi
3231     fi
3232   ])
3233
3234   if test "$HAVE_VDPAU" = "yes"; then
3235     AC_MSG_NOTICE([Found up to date VDPAU installation])
3236     AC_SUBST(VDPAU_CFLAGS)
3237     AC_SUBST(VDPAU_LIBS)
3238   fi
3239 ])
3240
3241 dnl *** sbc ***
3242 translit(dnm, m, l) AM_CONDITIONAL(USE_SBC, true)
3243 AG_GST_CHECK_FEATURE(SBC, [SBC bluetooth audio codec], sbc, [
3244   AG_GST_PKG_CHECK_MODULES(SBC, [sbc >= 1.0])
3245 ])
3246
3247 dnl *** schroedinger ***
3248 translit(dnm, m, l) AM_CONDITIONAL(USE_SCHRO, true)
3249 AG_GST_CHECK_FEATURE(SCHRO, [Schroedinger video codec], schro, [
3250   AG_GST_PKG_CHECK_MODULES(SCHRO, schroedinger-1.0 >= 1.0.10)
3251 ])
3252
3253 dnl *** zbar ***
3254 translit(dnm, m, l) AM_CONDITIONAL(USE_ZBAR, true)
3255 AG_GST_CHECK_FEATURE(ZBAR, [ZBar barcode detector], zbar, [
3256   AG_GST_PKG_CHECK_MODULES(ZBAR, zbar >= 0.9)
3257 ])
3258
3259 dnl *** rtmp ***
3260 translit(dnm, m, l) AM_CONDITIONAL(USE_RTMP, true)
3261 AG_GST_CHECK_FEATURE(RTMP, [rtmp library], rtmp, [
3262   AG_GST_PKG_CHECK_MODULES(RTMP, librtmp)
3263 ])
3264
3265 dnl *** spandsp ***
3266 translit(dnm, m, l) AM_CONDITIONAL(USE_SPANDSP, true)
3267 AG_GST_CHECK_FEATURE(SPANDSP, [Spandsp], spandsp, [
3268   PKG_CHECK_MODULES(SPANDSP, spandsp >= 0.0.6, [
3269     HAVE_SPANDSP="yes" ], [
3270     HAVE_SPANDSP="no"
3271   ])
3272 ])
3273 AC_SUBST(SPANDSP_CFLAGS)
3274 AC_SUBST(SPANDSP_LIBS)
3275
3276 dnl *** sndio ***
3277 translit(dnm, m, l) AM_CONDITIONAL(USE_SNDIO, true)
3278 AG_GST_CHECK_FEATURE(SNDIO, [sndio audio], sndio, [
3279   AC_CHECK_HEADER(sndio.h, HAVE_SNDIO="yes", HAVE_SNDIO="no")
3280   if test "x$HAVE_SNDIO" = "xyes"; then
3281     AC_CHECK_LIB(sndio, sio_open, HAVE_SNDIO="yes", HAVE_SNDIO="no")
3282     if test "x$HAVE_SNDIO" = "xyes"; then
3283       SNDIO_LIBS=-lsndio
3284       AC_SUBST(SNDIO_LIBS)
3285     fi
3286   fi
3287 ])
3288
3289 dnl *** hls-crypto ***
3290 AC_ARG_WITH([hls-crypto],
3291   AS_HELP_STRING([--with-hls-crypto=auto|nettle|libgcrypt|openssl], [
3292     which cryptographic library version to compile against for hls (default: auto)
3293   ]), [
3294     AS_CASE([$with_hls_crypto],
3295       [nettle],[],
3296       [libgcrypt],[],
3297       [openssl],[],
3298       [with_hls_crypto=auto]
3299     )
3300   ]
3301 )
3302
3303 dnl *** hls ***
3304 translit(dnm, m, l) AM_CONDITIONAL(USE_HLS, true)
3305 AG_GST_CHECK_FEATURE(HLS, [http live streaming plugin], hls, [
3306   AS_CASE([$with_hls_crypto],
3307     [nettle], [
3308       PKG_CHECK_MODULES(NETTLE, nettle, [
3309         AC_DEFINE(HAVE_NETTLE, 1, [Define if nettle is available])
3310         HAVE_HLS="yes"
3311       ],[AC_MSG_ERROR([Could not find nettle library])])
3312     ],
3313     [libgcrypt], [
3314       AM_PATH_LIBGCRYPT([1.2.0], [
3315         AC_DEFINE(HAVE_LIBGCRYPT, 1, [Define if libgcrypt is available])
3316         HAVE_HLS="yes"
3317       ],[AC_MSG_ERROR([Could not find libgcrypt library])])
3318     ],
3319     [openssl], [
3320       PKG_CHECK_MODULES(OPENSSL, openssl, [
3321         AC_DEFINE(HAVE_OPENSSL, 1, [Define if openssl is available])
3322         HAVE_HLS="yes"
3323       ],[AC_MSG_ERROR([Could not find openssl library])])
3324     ],
3325     [
3326       dnl Try to find a valid crypto library
3327       PKG_CHECK_MODULES(NETTLE, nettle, [
3328         AC_DEFINE(HAVE_NETTLE, 1, [Define if nettle is available])
3329         HAVE_HLS="yes"
3330       ],[
3331         AM_PATH_LIBGCRYPT([1.2.0], [
3332           AC_DEFINE(HAVE_LIBGCRYPT, 1, [Define if libgcrypt is available])
3333           HAVE_HLS="yes"
3334         ],[
3335           PKG_CHECK_MODULES(OPENSSL, openssl, [
3336             AC_DEFINE(HAVE_OPENSSL, 1, [Define if openssl is available])
3337             HAVE_HLS="yes"
3338           ],[
3339             HAVE_HLS="no"
3340           ])
3341         ])
3342       ])
3343     ]
3344   )
3345 ])
3346
3347 dnl *** x265 (H.265/HEVC encoder) ***
3348 translit(dnm, m, l) AM_CONDITIONAL(USE_X265, true)
3349 AG_GST_CHECK_FEATURE(X265, [x265 plug-in], x265, [
3350   AG_GST_PKG_CHECK_MODULES(X265, x265)
3351 ])
3352
3353 else
3354
3355 dnl not building plugins with external dependencies,
3356 dnl but we still need to set the conditionals
3357
3358 AM_CONDITIONAL(USE_ASSRENDER, false)
3359 AM_CONDITIONAL(USE_VOAMRWBENC, false)
3360 AM_CONDITIONAL(USE_VOAACENC, false)
3361 AM_CONDITIONAL(USE_APEXSINK, false)
3362 AM_CONDITIONAL(USE_BS2B, false)
3363 AM_CONDITIONAL(USE_BZ2, false)
3364 AM_CONDITIONAL(USE_CHROMAPRINT, false)
3365 AM_CONDITIONAL(USE_CURL, false)
3366 AM_CONDITIONAL(USE_SSH2, false)
3367 AM_CONDITIONAL(USE_DASH, false)
3368 AM_CONDITIONAL(USE_DC1394, false)
3369 AM_CONDITIONAL(USE_DECKLINK, false)
3370 AM_CONDITIONAL(DECKLINK_OSX, false)
3371 AM_CONDITIONAL(USE_DIRECTFB, false)
3372 AM_CONDITIONAL(USE_WAYLAND, false)
3373 AM_CONDITIONAL(USE_DAALA, false)
3374 AM_CONDITIONAL(USE_DTS, false)
3375 AM_CONDITIONAL(USE_EXIF, false)
3376 AM_CONDITIONAL(USE_RESINDVD, false)
3377 AM_CONDITIONAL(USE_FAAC, false)
3378 AM_CONDITIONAL(USE_FAAD, false)
3379 AM_CONDITIONAL(USE_FBDEV, false)
3380 AM_CONDITIONAL(USE_FLITE, false)
3381 AM_CONDITIONAL(USE_FLUIDSYNTH, false)
3382 AM_CONDITIONAL(USE_GL, false)
3383 AM_CONDITIONAL(USE_GSM, false)
3384 AM_CONDITIONAL(USE_GTK3, false)
3385 AM_CONDITIONAL(USE_GTK3_GL, false)
3386 AM_CONDITIONAL(USE_HLS, false)
3387 AM_CONDITIONAL(USE_KATE, false)
3388 AM_CONDITIONAL(USE_KMS, false)
3389 AM_CONDITIONAL(USE_TIGER, false)
3390 AM_CONDITIONAL(USE_LADSPA, false)
3391 AM_CONDITIONAL(USE_LV2, false)
3392 AM_CONDITIONAL(USE_LIBDE265, false)
3393 AM_CONDITIONAL(USE_LIBMMS, false)
3394 AM_CONDITIONAL(USE_LINSYS, false)
3395 AM_CONDITIONAL(USE_MODPLUG, false)
3396 AM_CONDITIONAL(USE_MIMIC, false)
3397 AM_CONDITIONAL(USE_MPEG2ENC, false)
3398 AM_CONDITIONAL(USE_MPLEX, false)
3399 AM_CONDITIONAL(USE_MUSEPACK, false)
3400 AM_CONDITIONAL(USE_NAS, false)
3401 AM_CONDITIONAL(USE_NEON, false)
3402 AM_CONDITIONAL(USE_OFA, false)
3403 AM_CONDITIONAL(USE_OPENAL, false)
3404 AM_CONDITIONAL(USE_OPENCV, false)
3405 AM_CONDITIONAL(USE_OPENEXR, false)
3406 AM_CONDITIONAL(USE_OPENJPEG, false)
3407 AM_CONDITIONAL(USE_OPENNI2, false)
3408 AM_CONDITIONAL(USE_OPUS, false)
3409 AM_CONDITIONAL(USE_PVR, false)
3410 AM_CONDITIONAL(USE_QT, false)
3411 AM_CONDITIONAL(USE_LIBVISUAL, false)
3412 AM_CONDITIONAL(USE_TIMIDITY, false)
3413 AM_CONDITIONAL(USE_WILDMIDI, false)
3414 AM_CONDITIONAL(USE_SDL, false)
3415 AM_CONDITIONAL(USE_SMOOTHSTREAMING, false)
3416 AM_CONDITIONAL(USE_SNDFILE, false)
3417 AM_CONDITIONAL(USE_SOUNDTOUCH, false)
3418 AM_CONDITIONAL(USE_SPANDSP, false)
3419 AM_CONDITIONAL(USE_SPC, false)
3420 AM_CONDITIONAL(USE_SRTP, false)
3421 AM_CONDITIONAL(USE_GME, false)
3422 AM_CONDITIONAL(USE_XVID, false)
3423 AM_CONDITIONAL(USE_DVB, false)
3424 AM_CONDITIONAL(USE_WININET, false)
3425 AM_CONDITIONAL(USE_ACM, false)
3426 AM_CONDITIONAL(USE_VDPAU, false)
3427 AM_CONDITIONAL(USE_SBC, false)
3428 AM_CONDITIONAL(USE_SCHRO, false)
3429 AM_CONDITIONAL(USE_ZBAR, false)
3430 AM_CONDITIONAL(USE_RSVG, false)
3431 AM_CONDITIONAL(USE_RTMP, false)
3432 AM_CONDITIONAL(USE_TELETEXTDEC, false)
3433 AM_CONDITIONAL(USE_SNDIO, false)
3434 AM_CONDITIONAL(USE_UVCH264, false)
3435 AM_CONDITIONAL(USE_WEBP, false)
3436 AM_CONDITIONAL(USE_OPENH264, false)
3437 AM_CONDITIONAL(USE_X265, false)
3438 AM_CONDITIONAL(USE_DTLS, false)
3439
3440 fi dnl of EXT plugins
3441
3442 dnl *** finalize CFLAGS, LDFLAGS, LIBS
3443
3444 dnl Overview:
3445 dnl GST_OPTION_CFLAGS:  common flags for profiling, debugging, errors, ...
3446 dnl GST_*:              flags shared by built objects to link against GStreamer
3447 dnl GST_ALL_LDFLAGS:    linker flags shared by all
3448 dnl GST_LIB_LDFLAGS:    additional linker flags for all libaries
3449 dnl GST_LT_LDFLAGS:     library versioning of our libraries
3450 dnl GST_PLUGIN_LDFLAGS: flags to be used for all plugins
3451
3452 dnl GST_OPTION_CFLAGS
3453 if test "x$USE_DEBUG" = xyes; then
3454    PROFILE_CFLAGS="-g"
3455 fi
3456 AC_SUBST(PROFILE_CFLAGS)
3457
3458 if test "x$PACKAGE_VERSION_NANO" = "x1"; then
3459   dnl Define _only_ during CVS (not pre-releases or releases)
3460   DEPRECATED_CFLAGS="-DGST_DISABLE_DEPRECATED"
3461 else
3462   DEPRECATED_CFLAGS=""
3463 fi
3464 AC_SUBST(DEPRECATED_CFLAGS)
3465
3466 dnl every flag in GST_OPTION_CFLAGS and GST_OPTION_CXXFLAGS can be overridden
3467 dnl at make time with e.g. make ERROR_CFLAGS=""
3468 GST_OPTION_CFLAGS="\$(WARNING_CFLAGS) \$(ERROR_CFLAGS) \$(DEBUG_CFLAGS) \$(PROFILE_CFLAGS) \$(GCOV_CFLAGS) \$(OPT_CFLAGS) \$(DEPRECATED_CFLAGS)"
3469 GST_OPTION_CXXFLAGS="\$(WARNING_CXXFLAGS) \$(ERROR_CXXFLAGS) \$(DEBUG_CFLAGS) \$(PROFILE_CFLAGS) \$(GCOV_CFLAGS) \$(OPT_CFLAGS) \$(DEPRECATED_CFLAGS)"
3470 GST_OPTION_OBJCFLAGS="\$(WARNING_OBJCFLAGS) \$(ERROR_OBJCFLAGS) \$(DEBUG_CFLAGS) \$(PROFILE_CFLAGS) \$(GCOV_CFLAGS) \$(OPT_CFLAGS) \$(DEPRECATED_CFLAGS)"
3471 AC_SUBST(GST_OPTION_CFLAGS)
3472 AC_SUBST(GST_OPTION_CXXFLAGS)
3473 AC_SUBST(GST_OPTION_OBJCFLAGS)
3474
3475 dnl FIXME: do we want to rename to GST_ALL_* ?
3476 dnl prefer internal headers to already installed ones
3477 dnl also add builddir include for enumtypes and marshal
3478 dnl add GST_OPTION_CFLAGS, but overridable
3479 GST_CFLAGS="$GST_CFLAGS -DGST_USE_UNSTABLE_API"
3480 GST_CXXFLAGS="$GST_CFLAGS $GLIB_EXTRA_CFLAGS \$(GST_OPTION_CXXFLAGS)"
3481 GST_OBJCFLAGS="$GST_CFLAGS $GLIB_EXTRA_CFLAGS \$(GST_OPTION_OBJCFLAGS)"
3482 GST_CFLAGS="$GST_CFLAGS $GLIB_EXTRA_CFLAGS \$(GST_OPTION_CFLAGS)"
3483 AC_SUBST(GST_CFLAGS)
3484 AC_SUBST(GST_CXXFLAGS)
3485 AC_SUBST(GST_OBJCFLAGS)
3486 AC_SUBST(GST_LIBS)
3487 GST_PLUGINS_BAD_CXXFLAGS="-I\$(top_srcdir)/gst-libs -I\$(top_builddir)/gst-libs"
3488 GST_PLUGINS_BAD_OBJCFLAGS="-I\$(top_srcdir)/gst-libs -I\$(top_builddir)/gst-libs"
3489 GST_PLUGINS_BAD_CFLAGS="-I\$(top_srcdir)/gst-libs -I\$(top_builddir)/gst-libs"
3490 AC_SUBST(GST_PLUGINS_BAD_CFLAGS)
3491 AC_SUBST(GST_PLUGINS_BAD_CXXFLAGS)
3492 AC_SUBST(GST_PLUGINS_BAD_OBJCFLAGS)
3493
3494 dnl LDFLAGS really should only contain flags, not libs - they get added before
3495 dnl whatevertarget_LIBS and -L flags here affect the rest of the linking
3496 GST_ALL_LDFLAGS="-no-undefined"
3497 if test "x${enable_Bsymbolic}" = "xyes"; then
3498   GST_ALL_LDFLAGS="$GST_ALL_LDFLAGS -Wl,-Bsymbolic-functions"
3499 fi
3500 AC_SUBST(GST_ALL_LDFLAGS)
3501
3502 dnl GST_LIB_LDFLAGS
3503 dnl linker flags shared by all libraries
3504 dnl LDFLAGS modifier defining exported symbols from built libraries
3505 dnl (export _gst_foo but not __gst_foo)
3506 GST_LIB_LDFLAGS="-export-symbols-regex ^_?\(gst_\|Gst\|GST_\).*"
3507 AC_SUBST(GST_LIB_LDFLAGS)
3508
3509 dnl this really should only contain flags, not libs - they get added before
3510 dnl whatevertarget_LIBS and -L flags here affect the rest of the linking
3511 GST_PLUGIN_LDFLAGS="-module -avoid-version -export-symbols-regex '^[_]*gst_plugin_.*' $GST_ALL_LDFLAGS"
3512 AC_SUBST(GST_PLUGIN_LDFLAGS)
3513
3514 dnl *** output files ***
3515
3516 $MKDIR_P tests/check/orc
3517
3518 dnl po/Makefile.in
3519
3520 AC_CONFIG_FILES(
3521 Makefile
3522 common/Makefile
3523 common/m4/Makefile
3524 gst-plugins-bad.spec
3525 gst/Makefile
3526 gst/accurip/Makefile
3527 gst/adpcmdec/Makefile
3528 gst/adpcmenc/Makefile
3529 gst/aiff/Makefile
3530 gst/videoframe_audiolevel/Makefile
3531 gst/asfmux/Makefile
3532 gst/audiofxbad/Makefile
3533 gst/audiomixer/Makefile
3534 gst/audiovisualizers/Makefile
3535 gst/autoconvert/Makefile
3536 gst/bayer/Makefile
3537 gst/camerabin2/Makefile
3538 gst/cdxaparse/Makefile
3539 gst/coloreffects/Makefile
3540 gst/dataurisrc/Makefile
3541 gst/dccp/Makefile
3542 gst/debugutils/Makefile
3543 gst/dvbsuboverlay/Makefile
3544 gst/dvdspu/Makefile
3545 gst/faceoverlay/Makefile
3546 gst/festival/Makefile
3547 gst/fieldanalysis/Makefile
3548 gst/freeverb/Makefile
3549 gst/frei0r/Makefile
3550 gst/gaudieffects/Makefile
3551 gst/geometrictransform/Makefile
3552 gst/gdp/Makefile
3553 gst/hdvparse/Makefile
3554 gst/id3tag/Makefile
3555 gst/inter/Makefile
3556 gst/interlace/Makefile
3557 gst/ivfparse/Makefile
3558 gst/ivtc/Makefile
3559 gst/jp2kdecimator/Makefile
3560 gst/jpegformat/Makefile
3561 gst/librfb/Makefile
3562 gst/midi/Makefile
3563 gst/mpegdemux/Makefile
3564 gst/mpegtsdemux/Makefile
3565 gst/mpegtsmux/Makefile
3566 gst/mpegtsmux/tsmux/Makefile
3567 gst/mpegpsmux/Makefile
3568 gst/mve/Makefile
3569 gst/mxf/Makefile
3570 gst/netsim/Makefile
3571 gst/nuvdemux/Makefile
3572 gst/onvif/Makefile
3573 gst/patchdetect/Makefile
3574 gst/pcapparse/Makefile
3575 gst/pnm/Makefile
3576 gst/rawparse/Makefile
3577 gst/removesilence/Makefile
3578 gst/sdi/Makefile
3579 gst/sdp/Makefile
3580 gst/segmentclip/Makefile
3581 gst/siren/Makefile
3582 gst/smooth/Makefile
3583 gst/speed/Makefile
3584 gst/subenc/Makefile
3585 gst/stereo/Makefile
3586 gst/tta/Makefile
3587 gst/videofilters/Makefile
3588 gst/videomeasure/Makefile
3589 gst/videoparsers/Makefile
3590 gst/videosignal/Makefile
3591 gst/vmnc/Makefile
3592 gst/y4m/Makefile
3593 gst/yadif/Makefile
3594 gst/compositor/Makefile
3595 gst-libs/Makefile
3596 gst-libs/gst/Makefile
3597 gst-libs/gst/adaptivedemux/Makefile
3598 gst-libs/gst/basecamerabinsrc/Makefile
3599 gst-libs/gst/gl/Makefile
3600 gst-libs/gst/gl/android/Makefile
3601 gst-libs/gst/gl/cocoa/Makefile
3602 gst-libs/gst/gl/dispmanx/Makefile
3603 gst-libs/gst/gl/glprototypes/Makefile
3604 gst-libs/gst/gl/eagl/Makefile
3605 gst-libs/gst/gl/egl/Makefile
3606 gst-libs/gst/gl/wayland/Makefile
3607 gst-libs/gst/gl/win32/Makefile
3608 gst-libs/gst/gl/x11/Makefile
3609 gst-libs/gst/insertbin/Makefile
3610 gst-libs/gst/interfaces/Makefile
3611 gst-libs/gst/codecparsers/Makefile
3612 gst-libs/gst/mpegts/Makefile
3613 gst-libs/gst/uridownloader/Makefile
3614 gst-libs/gst/wayland/Makefile
3615 gst-libs/gst/base/Makefile
3616 gst-libs/gst/player/Makefile
3617 gst-libs/gst/video/Makefile
3618 gst-libs/gst/audio/Makefile
3619 sys/Makefile
3620 sys/dshowdecwrapper/Makefile
3621 sys/acmenc/Makefile
3622 sys/acmmp3dec/Makefile
3623 sys/androidmedia/Makefile
3624 sys/applemedia/Makefile
3625 sys/applemedia-nonpublic/Makefile
3626 sys/avc/Makefile
3627 sys/bluez/Makefile
3628 sys/d3dvideosink/Makefile
3629 sys/decklink/Makefile
3630 sys/directsound/Makefile
3631 sys/dshowsrcwrapper/Makefile
3632 sys/dshowvideosink/Makefile
3633 sys/dvb/Makefile
3634 sys/fbdev/Makefile
3635 sys/kms/Makefile
3636 sys/linsys/Makefile
3637 sys/nvenc/Makefile
3638 sys/opensles/Makefile
3639 sys/shm/Makefile
3640 sys/tinyalsa/Makefile
3641 sys/uvch264/Makefile
3642 sys/vcd/Makefile
3643 sys/vdpau/Makefile
3644 sys/pvr2d/Makefile
3645 sys/wasapi/Makefile
3646 sys/wininet/Makefile
3647 sys/winks/Makefile
3648 sys/winscreencap/Makefile
3649 tests/Makefile
3650 tests/check/Makefile
3651 tests/files/Makefile
3652 tests/examples/Makefile
3653 tests/examples/avsamplesink/Makefile
3654 tests/examples/camerabin2/Makefile
3655 tests/examples/codecparsers/Makefile
3656 tests/examples/directfb/Makefile
3657 tests/examples/gl/Makefile
3658 tests/examples/gl/cocoa/Makefile
3659 tests/examples/gl/clutter/Makefile
3660 tests/examples/gl/generic/Makefile
3661 tests/examples/gl/generic/cube/Makefile
3662 tests/examples/gl/generic/cubeyuv/Makefile
3663 tests/examples/gl/generic/doublecube/Makefile
3664 tests/examples/gl/generic/recordgraphic/Makefile
3665 tests/examples/gl/gtk/Makefile
3666 tests/examples/gl/gtk/3dvideo/Makefile
3667 tests/examples/gl/gtk/filternovideooverlay/Makefile
3668 tests/examples/gl/gtk/filtervideooverlay/Makefile
3669 tests/examples/gl/gtk/fxtest/Makefile
3670 tests/examples/gl/gtk/switchvideooverlay/Makefile
3671 tests/examples/gl/qt/Makefile
3672 tests/examples/gl/sdl/Makefile
3673 tests/examples/gtk/Makefile
3674 tests/examples/mpegts/Makefile
3675 tests/examples/mxf/Makefile
3676 tests/examples/opencv/Makefile
3677 tests/examples/uvch264/Makefile
3678 tests/examples/waylandsink/Makefile
3679 tests/icles/Makefile
3680 ext/voamrwbenc/Makefile
3681 ext/voaacenc/Makefile
3682 ext/assrender/Makefile
3683 ext/apexsink/Makefile
3684 ext/bs2b/Makefile
3685 ext/bz2/Makefile
3686 ext/chromaprint/Makefile
3687 ext/curl/Makefile
3688 ext/dash/Makefile
3689 ext/dc1394/Makefile
3690 ext/directfb/Makefile
3691 ext/wayland/Makefile
3692 ext/daala/Makefile
3693 ext/dts/Makefile
3694 ext/gl/Makefile
3695 ext/gtk/Makefile
3696 ext/faac/Makefile
3697 ext/faad/Makefile
3698 ext/flite/Makefile
3699 ext/fluidsynth/Makefile
3700 ext/gsm/Makefile
3701 ext/hls/Makefile
3702 ext/kate/Makefile
3703 ext/ladspa/Makefile
3704 ext/lv2/Makefile
3705 ext/libde265/Makefile
3706 ext/libmms/Makefile
3707 ext/libvisual/Makefile
3708 ext/Makefile
3709 ext/modplug/Makefile
3710 ext/mpeg2enc/Makefile
3711 ext/mimic/Makefile
3712 ext/mplex/Makefile
3713 ext/musepack/Makefile
3714 ext/nas/Makefile
3715 ext/neon/Makefile
3716 ext/ofa/Makefile
3717 ext/openal/Makefile
3718 ext/opencv/Makefile
3719 ext/openexr/Makefile
3720 ext/openh264/Makefile
3721 ext/openjpeg/Makefile
3722 ext/openni2/Makefile
3723 ext/opus/Makefile
3724 ext/qt/Makefile
3725 ext/rsvg/Makefile
3726 ext/resindvd/Makefile
3727 ext/rtmp/Makefile
3728 ext/sbc/Makefile
3729 ext/schroedinger/Makefile
3730 ext/sdl/Makefile
3731 ext/smoothstreaming/Makefile
3732 ext/sndfile/Makefile
3733 ext/soundtouch/Makefile
3734 ext/spandsp/Makefile
3735 ext/sndio/Makefile
3736 ext/srtp/Makefile
3737 ext/teletextdec/Makefile
3738 ext/gme/Makefile
3739 ext/spc/Makefile
3740 ext/timidity/Makefile
3741 ext/vulkan/Makefile
3742 ext/vulkan/xcb/Makefile
3743 ext/vulkan/wayland/Makefile
3744 ext/webp/Makefile
3745 ext/x265/Makefile
3746 ext/xvid/Makefile
3747 ext/zbar/Makefile
3748 ext/dtls/Makefile
3749 po/Makefile.in
3750 docs/Makefile
3751 docs/plugins/Makefile
3752 docs/libs/Makefile
3753 docs/version.entities
3754 pkgconfig/Makefile
3755 pkgconfig/gstreamer-plugins-bad.pc
3756 pkgconfig/gstreamer-plugins-bad-uninstalled.pc
3757 pkgconfig/gstreamer-codecparsers.pc
3758 pkgconfig/gstreamer-codecparsers-uninstalled.pc
3759 pkgconfig/gstreamer-insertbin.pc
3760 pkgconfig/gstreamer-insertbin-uninstalled.pc
3761 pkgconfig/gstreamer-gl.pc
3762 pkgconfig/gstreamer-gl-uninstalled.pc
3763 pkgconfig/gstreamer-mpegts.pc
3764 pkgconfig/gstreamer-mpegts-uninstalled.pc
3765 pkgconfig/gstreamer-player.pc
3766 pkgconfig/gstreamer-player-uninstalled.pc
3767 pkgconfig/gstreamer-wayland.pc
3768 pkgconfig/gstreamer-wayland-uninstalled.pc
3769 pkgconfig/gstreamer-bad-base.pc
3770 pkgconfig/gstreamer-bad-base-uninstalled.pc
3771 pkgconfig/gstreamer-bad-video.pc
3772 pkgconfig/gstreamer-bad-video-uninstalled.pc
3773 pkgconfig/gstreamer-bad-audio.pc
3774 pkgconfig/gstreamer-bad-audio-uninstalled.pc
3775 tools/Makefile
3776 m4/Makefile
3777 )
3778
3779 dnl Create the config.h file for Visual Studio builds
3780 dnl Beware of spaces and /'s in some of the shell variable contents.
3781 sed \
3782     -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"/' \
3783     -e 's/.* GETTEXT_PACKAGE$/#define GETTEXT_PACKAGE "'$GETTEXT_PACKAGE'"/' \
3784     -e 's/.* GST_DATADIR$/#define GST_DATADIR PREFIX "\\\\share"/' \
3785     -e 's/.* GST_LEVEL_DEFAULT$/#define GST_LEVEL_DEFAULT GST_LEVEL_ERROR/' \
3786     -e 's/.* GST_LICENSE$/#define GST_LICENSE "'$GST_LICENSE'"/' \
3787     -e 's/.* GST_API_VERSION$/#define GST_API_VERSION "'$GST_API_VERSION'"/' \
3788     -e "s,.* GST_PACKAGE_NAME$,#define GST_PACKAGE_NAME \"${GST_PACKAGE_NAME}\"," \
3789     -e 's/.* GST_PACKAGE_ORIGIN$/#define GST_PACKAGE_ORIGIN "Unknown package origin"/' \
3790     -e "s,.* GST_PACKAGE_RELEASE_DATETIME$,#define GST_PACKAGE_RELEASE_DATETIME \"${GST_PACKAGE_RELEASE_DATETIME}\"," \
3791     -e 's/.* HAVE_CPU_I386$/#define HAVE_CPU_I386 1/' \
3792     -e 's/.* HAVE_STDLIB_H$/#define HAVE_STDLIB_H 1/' \
3793     -e 's/.* HAVE_STRING_H$/#define HAVE_STRING_H 1/' \
3794     -e 's/.* HAVE_SYS_STAT_H$/#define HAVE_SYS_STAT_H 1/' \
3795     -e 's/.* HAVE_SYS_TYPES_H$/#define HAVE_SYS_TYPES_H 1/' \
3796     -e 's/.* HAVE_WIN32$/#define HAVE_WIN32 1/' \
3797     -e 's/.* HOST_CPU$/#define HOST_CPU "i686"/' \
3798     -e 's/.* LIBDIR$/#ifdef _DEBUG\n#  define LIBDIR PREFIX "\\\\debug\\\\lib"\n#else\n#  define LIBDIR PREFIX "\\\\lib"\n#endif/' \
3799     -e 's/.* LOCALEDIR$/#define LOCALEDIR PREFIX "\\\\share\\\\locale"/' \
3800     -e "s/.* PACKAGE$/#define PACKAGE \"$PACKAGE\"/" \
3801     -e 's/.* PACKAGE_BUGREPORT$/#define PACKAGE_BUGREPORT "http:\/\/bugzilla.gnome.org\/enter_bug.cgi?product=GStreamer"/' \
3802     -e "s/.* PACKAGE_NAME$/#define PACKAGE_NAME \"$PACKAGE_NAME\"/" \
3803     -e "s/.* PACKAGE_STRING$/#define PACKAGE_STRING \"$PACKAGE_STRING\"/" \
3804     -e 's/.* PACKAGE_TARNAME$/#define PACKAGE_TARNAME "'$PACKAGE_TARNAME'"/' \
3805     -e 's/.* PACKAGE_VERSION$/#define PACKAGE_VERSION "'$PACKAGE_VERSION'"/' \
3806     -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/' \
3807     -e 's/.* VERSION$/#define VERSION "'$VERSION'"/' \
3808     -e "s/.* DEFAULT_AUDIOSINK$/#define DEFAULT_AUDIOSINK \"directsoundsink\"/" \
3809     -e "s/.* DEFAULT_AUDIOSRC$/#define DEFAULT_AUDIOSRC \"audiotestsrc\"/" \
3810     -e "s/.* DEFAULT_VIDEOSRC$/#define DEFAULT_VIDEOSRC \"videotestsrc\"/" \
3811     -e "s/.* DEFAULT_VISUALIZER$/#define DEFAULT_VISUALIZER \"goom\"/" \
3812     -e 's/.* HAVE_WINDOWS_H$/#define HAVE_WINDOWS_H 1/' \
3813     -e 's/.* HAVE_WININET_H$/#define HAVE_WININET_H 1/' \
3814     -e 's/.* HAVE_WINSOCK2_H$/#define HAVE_WINSOCK2_H 1/' \
3815     -e 's/.* HAVE_WS2TCPIP_H$/#define HAVE_WS2TCPIP_H 1/' \
3816     config.h.in >win32/common/config.h-new
3817
3818 AC_OUTPUT
3819
3820 AG_GST_OUTPUT_PLUGINS
3821 ORC_OUTPUT
3822