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