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