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