Dist compositor crossfade example and pythons script for meson build
[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.13.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, 1300, 0, 1300)
55
56 dnl *** required versions of GStreamer stuff ***
57 GST_REQ=1.13.0.1
58 GSTPB_REQ=1.13.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 dnl *** checks for types/defines ***
168
169 dnl *** checks for structures ***
170
171 dnl *** checks for compiler characteristics ***
172
173 dnl *** checks for library functions ***
174 AC_CHECK_FUNCS([gmtime_r pipe2])
175
176 dnl *** checks for headers ***
177 AC_CHECK_HEADERS([sys/utsname.h])
178
179 dnl *** checks for dependency libraries ***
180
181 dnl *** checks for socket and nsl libraries ***
182 AC_CHECK_FUNC(socket,,[AC_CHECK_LIB(socket,socket)])
183 AC_CHECK_FUNC(gethostbyname,,[AC_CHECK_LIB(nsl,gethostbyname)])
184
185 dnl GLib is required
186 GLIB_REQ=2.40.0
187 AG_GST_GLIB_CHECK([$GLIB_REQ])
188
189 dnl checks for gstreamer
190 dnl uninstalled is selected preferentially -- see pkg-config(1)
191 AG_GST_CHECK_GST($GST_API_VERSION, [$GST_REQ], yes)
192 AG_GST_CHECK_GST_BASE($GST_API_VERSION, [$GST_REQ], yes)
193 AG_GST_CHECK_GST_CHECK($GST_API_VERSION, [$GST_REQ], no)
194 AG_GST_CHECK_GST_CONTROLLER($GST_API_VERSION, [$GST_REQ], yes)
195 AG_GST_CHECK_GST_NET($GST_API_VERSION, [$GST_REQ], yes)
196 AG_GST_PKG_CHECK_MODULES(GST_VIDEO, gstreamer-video-[$GST_API_VERSION], [$GST_REQ], yes)
197 AG_GST_PKG_CHECK_MODULES(GST_AUDIO, gstreamer-audio-[$GST_API_VERSION], [$GST_REQ], yes)
198 AG_GST_PKG_CHECK_MODULES(GST_PBUTILS, gstreamer-pbutils-[$GST_API_VERSION], [$GST_REQ], yes)
199 AG_GST_PKG_CHECK_MODULES(GST_GL, gstreamer-gl-[$GST_API_VERSION], [$GST_REQ], no)
200 AG_GST_PKG_CHECK_MODULES(GST_SDP, gstreamer-sdp-[$GST_API_VERSION], [$GST_REQ], yes)
201
202 if test "x$HAVE_GST_GL" = "xyes"; then
203
204   AC_MSG_CHECKING([GStreamer OpenGL window systems ...])
205   GST_GL_WINSYS=`$PKG_CONFIG --variable=gl_winsys gstreamer-gl-1.0`
206   AC_MSG_RESULT([$GST_GL_WINSYS])
207   GST_GL_HAVE_WINDOW_X11=""
208   GST_GL_HAVE_WINDOW_WAYLAND=""
209   GST_GL_HAVE_WINDOW_ANDROID=""
210   GST_GL_HAVE_WINDOW_COCOA=""
211   GST_GL_HAVE_WINDOW_EAGL=""
212   case "$GST_GL_WINSYS" in  *x11*) GST_GL_HAVE_WINDOW_X11="1" ;; esac
213   case "$GST_GL_WINSYS" in  *wayland*) GST_GL_HAVE_WINDOW_WAYLAND="1" ;; esac
214   case "$GST_GL_WINSYS" in  *android*) GST_GL_HAVE_WINDOW_ANDROID="1" ;; esac
215   case "$GST_GL_WINSYS" in  *cocoa*) GST_GL_HAVE_WINDOW_COCOA="1" ;; esac
216   case "$GST_GL_WINSYS" in  *eagl*) GST_GL_HAVE_WINDOW_EAGL="1" ;; esac
217
218   AC_MSG_CHECKING([GStreamer OpenGL platforms ...])
219   GST_GL_PLATFORMS=`$PKG_CONFIG --variable=gl_platforms gstreamer-gl-1.0`
220   AC_MSG_RESULT([$GST_GL_PLATFORMS])
221   GST_GL_HAVE_PLATFORM_GLX=""
222   GST_GL_HAVE_PLATFORM_EGL=""
223   GST_GL_HAVE_PLATFORM_CGL=""
224   GST_GL_HAVE_PLATFORM_EAGL=""
225   case "$GST_GL_PLATFORMS" in  *glx*) GST_GL_HAVE_PLATFORM_GLX="1" ;; esac
226   case "$GST_GL_PLATFORMS" in  *egl*) GST_GL_HAVE_PLATFORM_EGL="1" ;; esac
227   case "$GST_GL_PLATFORMS" in  *cgl*) GST_GL_HAVE_PLATFORM_CGL="1" ;; esac
228   case "$GST_GL_PLATFORMS" in  *eagl*) GST_GL_HAVE_PLATFORM_EAGL="1" ;; esac
229
230   AC_MSG_CHECKING([GStreamer OpenGL apis ...])
231   GST_GL_APIS=`$PKG_CONFIG --variable=gl_apis gstreamer-gl-1.0`
232   AC_MSG_RESULT([$GST_GL_APIS])
233   GST_GL_HAVE_API_GLES2=""
234   GST_GL_HAVE_API_GL=""
235   case "$GST_GL_APIS" in  *gles2*) GST_GL_HAVE_API_GLES2="1" ;; esac
236   case "$GST_GL_APIS" in "gl"|"gl "*|*" gl"|*" gl "*) GST_GL_HAVE_API_GL="1" ;; esac
237 fi
238
239 AM_CONDITIONAL(HAVE_GST_CHECK, test "x$HAVE_GST_CHECK" = "xyes")
240
241 AG_GST_CHECK_GST_PLUGINS_BASE($GST_API_VERSION, [$GSTPB_REQ], yes)
242
243 dnl check for uninstalled plugin directories for unit tests
244 AG_GST_CHECK_UNINSTALLED_SETUP([
245   AG_GST_CHECK_GST_PLUGINS_GOOD($GST_API_VERSION, [0.11.0])
246   AG_GST_CHECK_GST_PLUGINS_UGLY($GST_API_VERSION, [0.11.0])
247   AG_GST_CHECK_GST_PLUGINS_LIBAV($GST_API_VERSION, [0.11.0])
248 ])
249
250 dnl Check for documentation xrefs
251 GLIB_PREFIX="`$PKG_CONFIG --variable=prefix glib-2.0`"
252 GST_PREFIX="`$PKG_CONFIG --variable=prefix gstreamer-$GST_API_VERSION`"
253 GSTPB_PREFIX="`$PKG_CONFIG --variable=prefix gstreamer-plugins-base-$GST_API_VERSION`"
254 AC_SUBST(GLIB_PREFIX)
255 AC_SUBST(GST_PREFIX)
256 AC_SUBST(GSTPB_PREFIX)
257
258 dnl GTK is optional and used in examples
259 HAVE_GTK=NO
260 GTK2_REQ=2.14.0
261 GTK3_REQ=2.91.3
262 if test "x$BUILD_EXAMPLES" = "xyes"; then
263   AC_MSG_CHECKING([which gtk+ version to compile examples against (optional)])
264   AC_ARG_WITH([gtk],
265     AS_HELP_STRING([--with-gtk=3.0|2.0],[which gtk+ version to compile against (default: 2.0)]),
266     [case "$with_gtk" in
267         2.0) GTK_REQ=$GTK2_REQ ;;
268         3.0) GTK_REQ=$GTK3_REQ ;;
269         *) AC_MSG_ERROR([invalid gtk+ version specified]);;
270     esac],
271     [with_gtk=2.0
272      GTK_REQ=$GTK2_REQ])
273   AC_MSG_RESULT([$with_gtk (>= $GTK_REQ)])
274   PKG_CHECK_MODULES(GTK, gtk+-x11-$with_gtk >= $GTK_REQ, HAVE_GTK=yes, HAVE_GTK=no)
275   AC_SUBST(GTK_LIBS)
276   AC_SUBST(GTK_CFLAGS)
277 fi
278 AM_CONDITIONAL(HAVE_GTK, test "x$HAVE_GTK" = "xyes")
279
280 dnl Check for -Bsymbolic-functions linker flag used to avoid
281 dnl intra-library PLT jumps, if available.
282 AC_ARG_ENABLE(Bsymbolic,
283               [AS_HELP_STRING([--disable-Bsymbolic],[avoid linking with -Bsymbolic])],,
284               [SAVED_LDFLAGS="${LDFLAGS}" SAVED_LIBS="${LIBS}"
285                AC_MSG_CHECKING([for -Bsymbolic-functions linker flag])
286                LDFLAGS=-Wl,-Bsymbolic-functions
287                LIBS=
288                AC_TRY_LINK([], [return 0],
289                            AC_MSG_RESULT(yes)
290                            enable_Bsymbolic=yes,
291                            AC_MSG_RESULT(no)
292                            enable_Bsymbolic=no)
293                LDFLAGS="${SAVED_LDFLAGS}" LIBS="${SAVED_LIBS}"])
294
295 dnl *** set variables based on configure arguments ***
296
297 dnl GTK is optional and used in examples
298 HAVE_GTK3=NO
299 if test "x$BUILD_EXAMPLES" = "xyes"; then
300   PKG_CHECK_MODULES(GTK3, gtk+-3.0 >= 3.4, HAVE_GTK3=yes, HAVE_GTK3=no)
301   if test "x$HAVE_GTK3" = "xyes"; then
302     HAVE_GTK=yes
303     GTK_VERSION=`$PKG_CONFIG --variable=gtk_binary_version gtk+-3.0`
304     AC_SUBST(GTK_VERSION)
305     GTK_PREFIX=`$PKG_CONFIG --variable=prefix gdk-pixbuf-2.0`
306     AC_SUBST(GTK_BASE_DIR)
307   fi
308 fi
309 AC_SUBST(GTK3_LIBS)
310 AC_SUBST(GTK3_CFLAGS)
311 AC_SUBST(HAVE_GTK3)
312 AM_CONDITIONAL(HAVE_GTK3, test "x$HAVE_GTK3" = "xyes")
313
314 dnl x11 is optional for librfb
315 HAVE_X11=NO
316 PKG_CHECK_MODULES(X11, x11, HAVE_X11=yes, HAVE_X11=no)
317 AC_SUBST(X11_LIBS)
318 AC_SUBST(X11_CFLAGS)
319 AC_SUBST(HAVE_X11)
320 AM_CONDITIONAL(HAVE_X11, test "x$HAVE_X11" = "xyes")
321 if test "x$HAVE_X11" = "xyes"; then
322   AC_DEFINE(HAVE_X11, 1, [Define if you have X11 library])
323 fi
324
325 dnl exif (used on jifmux tests) ****
326 PKG_CHECK_MODULES(EXIF, libexif >= 0.6.16, HAVE_EXIF="yes", HAVE_EXIF="no")
327 AC_SUBST(EXIF_LIBS)
328 AC_SUBST(EXIF_CFLAGS)
329 AM_CONDITIONAL(USE_EXIF, test "x$HAVE_EXIF" = "xyes")
330
331 AG_GST_CHECK_FEATURE(IQA, [iqa], iqa , [
332   PKG_CHECK_MODULES(DSSIM, dssim, [
333     HAVE_DSSIM="yes"
334     HAVE_IQA="yes"
335   ], [
336     HAVE_DSSIM="no"
337     HAVE_IQA="no"
338   ])
339
340   if test "x$HAVE_DSSIM" = "xyes"; then
341     AC_DEFINE(HAVE_DSSIM, 1, [Define if you have dssim library])
342   fi
343   AC_SUBST(DSSIM_LIBS)
344   AC_SUBST(DSSIM_CFLAGS)
345 ])
346 AM_CONDITIONAL(HAVE_DSSIM, test "x$HAVE_DSSIM" = "xyes")
347
348 dnl Orc
349 ORC_CHECK([0.4.17])
350
351 dnl set license and copyright notice
352 GST_LICENSE="LGPL"
353 AC_DEFINE_UNQUOTED(GST_LICENSE, "$GST_LICENSE", [GStreamer license])
354 AC_SUBST(GST_LICENSE)
355
356 dnl define LIBDIR so we can inform people where we live
357 AS_AC_EXPAND(LIBDIR, $libdir)
358 AC_DEFINE_UNQUOTED(LIBDIR, "$LIBDIR", [library dir])
359
360 dnl set location of plugin directory
361 AG_GST_SET_PLUGINDIR
362
363 dnl set release date/time
364 AG_GST_SET_PACKAGE_RELEASE_DATETIME_WITH_NANO([$PACKAGE_VERSION_NANO],
365   ["${srcdir}/gst-plugins-bad.doap"],
366   [$PACKAGE_VERSION_MAJOR.$PACKAGE_VERSION_MINOR.$PACKAGE_VERSION_MICRO])
367
368 dnl If only building static libraries, define GST_STATIC_COMPILATION. This is
369 dnl needed only on Windows, but it doesn't hurt to have it everywhere.
370 if test x$enable_static = xyes -a x$enable_shared = xno; then
371   GST_STATIC_CFLAGS="-DGST_STATIC_COMPILATION"
372 fi
373
374 AC_ARG_WITH([player-tests],
375   AS_HELP_STRING([--with-player-tests],[Enable GstPlayer tests that need network access (default: no)]))
376 if test x$with_player_tests = xyes; then
377   AC_PATH_PROG([WGET], [wget], no)
378   if test x$WGET = xno; then
379     AC_MSG_WARN([wget required for GstPlayer tests but not found - disabling])
380     with_player_tests=no
381   fi
382 fi
383 AM_CONDITIONAL(WITH_GST_PLAYER_TESTS, test "x$with_player_tests" = "xyes")
384
385 # set by AG_GST_PARSE_SUBSYSTEM_DISABLES above
386 dnl make sure it doesn't complain about unused variables if debugging is disabled
387 NO_WARNINGS=""
388 AG_GST_CHECK_GST_DEBUG_DISABLED([NO_WARNINGS="-Wno-unused"], [NO_WARNINGS=""])
389
390 dnl define an ERROR_CFLAGS Makefile variable
391 dnl -Waggregate-return - libexif returns aggregates
392 dnl -Wundef - Windows headers check _MSC_VER unconditionally
393 AG_GST_SET_ERROR_CFLAGS($FATAL_WARNINGS, [
394     -Wmissing-declarations -Wmissing-prototypes -Wredundant-decls
395     -Wwrite-strings -Wformat-security -Wold-style-definition
396     -Winit-self -Wmissing-include-dirs -Waddress -Wno-multichar
397     -Wnested-externs $NO_WARNINGS])
398
399 dnl define an ERROR_CXXFLAGS Makefile variable
400 AG_GST_SET_ERROR_CXXFLAGS($FATAL_WARNINGS, [
401     -Wmissing-declarations -Wredundant-decls
402     -Wwrite-strings -Wformat-nonliteral -Wformat-security
403     -Winit-self -Wmissing-include-dirs -Waddress -Wno-multichar $NO_WARNINGS])
404
405 dnl define an ERROR_OBJCFLAGS Makefile variable
406 AG_GST_SET_ERROR_OBJCFLAGS($FATAL_WARNINGS, [
407     -Wmissing-declarations -Wredundant-decls
408     -Wwrite-strings -Wformat-nonliteral -Wformat-security
409     -Winit-self -Wmissing-include-dirs -Wno-multichar $NO_WARNINGS])
410
411 dnl define correct level for debugging messages
412 AG_GST_SET_LEVEL_DEFAULT($GST_GIT)
413
414 dnl used in examples
415 AG_GST_DEFAULT_ELEMENTS
416
417 dnl *** plug-ins to include ***
418
419 dnl these are all the gst plug-ins, compilable without additional libs
420 AG_GST_CHECK_PLUGIN(accurip)
421 AG_GST_CHECK_PLUGIN(adpcmdec)
422 AG_GST_CHECK_PLUGIN(adpcmenc)
423 AG_GST_CHECK_PLUGIN(aiff)
424 AG_GST_CHECK_PLUGIN(videoframe_audiolevel)
425 AG_GST_CHECK_PLUGIN(asfmux)
426 AG_GST_CHECK_PLUGIN(audiobuffersplit)
427 AG_GST_CHECK_PLUGIN(audiofxbad)
428 AG_GST_CHECK_PLUGIN(audiomixmatrix)
429 AG_GST_CHECK_PLUGIN(compositor)
430 AG_GST_CHECK_PLUGIN(audiovisualizers)
431 AG_GST_CHECK_PLUGIN(autoconvert)
432 AG_GST_CHECK_PLUGIN(bayer)
433 AG_GST_CHECK_PLUGIN(camerabin2)
434 AG_GST_CHECK_PLUGIN(coloreffects)
435 AG_GST_CHECK_PLUGIN(debugutils)
436 AG_GST_CHECK_PLUGIN(dvbsuboverlay)
437 AG_GST_CHECK_PLUGIN(dvdspu)
438 AG_GST_CHECK_PLUGIN(faceoverlay)
439 AG_GST_CHECK_PLUGIN(festival)
440 AG_GST_CHECK_PLUGIN(fieldanalysis)
441 AG_GST_CHECK_PLUGIN(freeverb)
442 AG_GST_CHECK_PLUGIN(frei0r)
443 AG_GST_CHECK_PLUGIN(gaudieffects)
444 AG_GST_CHECK_PLUGIN(geometrictransform)
445 AG_GST_CHECK_PLUGIN(gdp)
446 AG_GST_CHECK_PLUGIN(id3tag)
447 AG_GST_CHECK_PLUGIN(inter)
448 AG_GST_CHECK_PLUGIN(interlace)
449 AG_GST_CHECK_PLUGIN(ivfparse)
450 AG_GST_CHECK_PLUGIN(ivtc)
451 AG_GST_CHECK_PLUGIN(jp2kdecimator)
452 AG_GST_CHECK_PLUGIN(jpegformat)
453 AG_GST_CHECK_PLUGIN(librfb)
454 AG_GST_CHECK_PLUGIN(midi)
455 AG_GST_CHECK_PLUGIN(mpegdemux)
456 AG_GST_CHECK_PLUGIN(mpegtsdemux)
457 AG_GST_CHECK_PLUGIN(mpegtsmux)
458 AG_GST_CHECK_PLUGIN(mpegpsmux)
459 AG_GST_CHECK_PLUGIN(mxf)
460 AG_GST_CHECK_PLUGIN(netsim)
461 AG_GST_CHECK_PLUGIN(onvif)
462 AG_GST_CHECK_PLUGIN(pcapparse)
463 AG_GST_CHECK_PLUGIN(pnm)
464 AG_GST_CHECK_PLUGIN(proxy)
465 AG_GST_CHECK_PLUGIN(rawparse)
466 AG_GST_CHECK_PLUGIN(removesilence)
467 AG_GST_CHECK_PLUGIN(sdp)
468 AG_GST_CHECK_PLUGIN(segmentclip)
469 AG_GST_CHECK_PLUGIN(siren)
470 AG_GST_CHECK_PLUGIN(smooth)
471 AG_GST_CHECK_PLUGIN(speed)
472 AG_GST_CHECK_PLUGIN(subenc)
473 AG_GST_CHECK_PLUGIN(stereo)
474 AG_GST_CHECK_PLUGIN(timecode)
475 AG_GST_CHECK_PLUGIN(videofilters)
476 AG_GST_CHECK_PLUGIN(videoparsers)
477 AG_GST_CHECK_PLUGIN(videosignal)
478 AG_GST_CHECK_PLUGIN(vmnc)
479 AG_GST_CHECK_PLUGIN(y4m)
480 AG_GST_CHECK_PLUGIN(yadif)
481
482 dnl *** plug-ins to exclude ***
483
484 AC_CHECK_HEADER(AVFoundation/AVFoundation.h, HAVE_AVFOUNDATION="yes", HAVE_AVFOUNDATION="no", [-])
485 AC_CHECK_HEADER(MobileCoreServices/MobileCoreServices.h, HAVE_IOS="yes", HAVE_IOS="no", [-])
486 AC_CHECK_HEADER(VideoToolbox/VideoToolbox.h, HAVE_VIDEOTOOLBOX="yes", HAVE_VIDEOTOOLBOX="no", [-])
487
488 if test "x$HAVE_VIDEOTOOLBOX" = "xyes"; then
489   old_LIBS=$LIBS
490   LIBS="$LIBS -framework VideoToolbox"
491   AC_CHECK_FUNC(VTCompressionSessionPrepareToEncodeFrames, [
492     AC_DEFINE(HAVE_VIDEOTOOLBOX_10_9_6, 1, [Define if building with VideoToolbox >= 10.9.6])
493   ], [
494   ])
495   LIBS=$old_LIBS
496 fi
497
498 AM_CONDITIONAL(HAVE_AVFOUNDATION, test "x$HAVE_AVFOUNDATION" = "xyes")
499 if test "x$HAVE_AVFOUNDATION" = "xyes"; then
500   AC_DEFINE(HAVE_AVFOUNDATION, 1, [Define if building with AVFoundation])
501 fi
502
503 AM_CONDITIONAL(HAVE_IOS, test "x$HAVE_IOS" = "xyes")
504 if test "x$HAVE_IOS" = "xyes"; then
505   AC_DEFINE(HAVE_IOS, 1, [Define if building for Apple iOS])
506 fi
507
508 AM_CONDITIONAL(HAVE_VIDEOTOOLBOX, test "x$HAVE_VIDEOTOOLBOX" = "xyes")
509 if test "x$HAVE_VIDEOTOOLBOX" = "xyes"; then
510   AC_DEFINE(HAVE_VIDEOTOOLBOX, 1, [Define if building with VideoToolbox])
511 fi
512
513 dnl disable gst plugins we might not be able to build on this
514 dnl platform: (ugly but minimally invasive)
515 dnl FIXME: maybe move to sys, or make work with winsock2
516 AC_CHECK_HEADERS([sys/socket.h], HAVE_SYS_SOCKET_H=yes)
517 AC_CHECK_HEADERS([winsock2.h], HAVE_WINSOCK2_H=yes)
518
519 if test "x$HAVE_WINSOCK2_H" = "xyes"; then
520   WINSOCK2_LIBS="-lws2_32"
521   AC_SUBST(WINSOCK2_LIBS)
522 fi
523
524 dnl Vulkan
525 PKG_CHECK_MODULES(XCB, xcb >= 1.10, GST_VULKAN_HAVE_WINDOW_XCB=1, GST_VULKAN_HAVE_WINDOW_XCB=0)
526 AM_CONDITIONAL(USE_XCB, test "x$GST_VULKAN_HAVE_WINDOW_XCB" = "x1")
527
528 PKG_CHECK_MODULES(VULKAN_WAYLAND, wayland-client >= 1.4, GST_VULKAN_HAVE_WINDOW_WAYLAND=1, GST_VULKAN_HAVE_WINDOW_WAYLAND=0)
529 AM_CONDITIONAL(USE_WAYLAND, test "x$GST_VULKAN_HAVE_WINDOW_WAYLAND" = "x1")
530 VULKAN_CONFIG_DEFINES="
531 #define GST_VULKAN_HAVE_WINDOW_XCB $GST_VULKAN_HAVE_WINDOW_XCB
532 #define GST_VULKAN_HAVE_WINDOW_WAYLAND $GST_VULKAN_HAVE_WINDOW_WAYLAND"
533
534 AC_CONFIG_COMMANDS([ext/vulkan/vkconfig.h], [
535         outfile=vkconfig.h-tmp
536         cat > $outfile <<\_______EOF
537 /* vkconfig.h
538  *
539  * This is a generated file.  Please modify `configure.ac'
540  */
541
542 #ifndef __GST_VULKAN_CONFIG_H__
543 #define __GST_VULKAN_CONFIG_H__
544
545 #include <gst/gst.h>
546
547 G_BEGIN_DECLS
548
549 _______EOF
550
551         cat >>$outfile <<_______EOF
552 $vulkan_config_defines
553 _______EOF
554
555         cat >>$outfile <<_______EOF
556
557 G_END_DECLS
558
559 #endif  /* __GST_VULKAN_CONFIG_H__ */
560 _______EOF
561
562
563         if cmp -s $outfile ext/vulkan/vkconfig.h; then
564           AC_MSG_NOTICE([ext/vulkan/vkconfig.h is unchanged])
565           rm -f $outfile
566         else
567           mv $outfile ext/vulkan/vkconfig.h
568         fi
569 ],[
570 vulkan_config_defines='$VULKAN_CONFIG_DEFINES'
571 ])
572
573 dnl *** sys plug-ins ***
574
575 dnl DirectSound
576 translit(dnm, m, l) AM_CONDITIONAL(USE_DIRECTSOUND, true)
577 AG_GST_CHECK_FEATURE(DIRECTSOUND, [DirectSound], directsoundsrc, [
578   HAVE_DIRECTSOUND="no"
579   save_CFLAGS="$CFLAGS"
580   save_LDFLAGS="$LDFLAGS"
581   save_LIBS="$LIBS"
582   CFLAGS="$CFLAGS $DIRECTX_CFLAGS"
583   LDFLAGS="$LDFLAGS $DIRECTX_LDFLAGS"
584   LIBS="$LIBS -lwinmm -ldsound -ldxerr9 -luser32"
585   AC_MSG_CHECKING(for DirectSound LDFLAGS)
586   AC_LINK_IFELSE([AC_LANG_PROGRAM([[
587 #include <windows.h>
588 #include <dxerr9.h>
589 #include <dsound.h>
590 #include <mmsystem.h>
591 ]], [[
592   DXGetErrorString9 (0);
593   DirectSoundCreate(NULL, NULL, NULL);
594 ]])],
595     [HAVE_DIRECTSOUND="yes"],
596     [HAVE_DIRECTSOUND="no"])
597   AC_MSG_RESULT($HAVE_DIRECTSOUND)
598   CFLAGS=$save_CFLAGS
599   LDFLAGS=$save_LDFLAGS
600   LIBS=$save_LIBS
601
602   if test "x$HAVE_DIRECTSOUND" = "xyes";  then
603     dnl this is much more than we want
604     DIRECTSOUND_LIBS="-lwinmm -ldsound -ldxerr9 -luser32"
605     AC_SUBST(DIRECTX_CFLAGS)
606     AC_SUBST(DIRECTX_LDFLAGS)
607     AC_SUBST(DIRECTSOUND_LIBS)
608   fi
609   AC_SUBST(HAVE_DIRECTSOUND)
610 ])
611
612 dnl WASAPI
613 translit(dnm, m, l) AM_CONDITIONAL(USE_WASAPI, true)
614 AG_GST_CHECK_FEATURE(WASAPI, [WASAPI plug-in], wasapi, [
615   HAVE_WASAPI="no"
616   save_CFLAGS="$CFLAGS"
617   save_LDFLAGS="$LDFLAGS"
618   save_LIBS="$LIBS"
619   CFLAGS="$CFLAGS $DIRECTX_CFLAGS"
620   LDFLAGS="$LDFLAGS $DIRECTX_LDFLAGS"
621   LIBS="$LIBS -lole32 -lwinmm -lksuser"
622   AC_MSG_CHECKING(for WASAPI LDFLAGS)
623   AC_LINK_IFELSE([AC_LANG_PROGRAM([[
624 #include <windows.h>
625 #include <stdio.h>
626 #include <mmsystem.h>
627 #include <mmdeviceapi.h>
628 ]], [[
629 int main ()
630 {
631     HRESULT hr = S_OK;
632
633     hr = CoInitialize(NULL);
634     if (FAILED(hr)) {
635         printf("CoInitialize failed: hr = 0x%08x", hr);
636         return __LINE__;
637     }
638
639         int result = 0;
640     // result = do_everything(argc, argv);
641
642     CoUninitialize();
643     return result;
644 }
645 ]])],
646     [HAVE_WASAPI="yes"],
647     [HAVE_WASAPI="no"])
648   AC_MSG_RESULT($HAVE_WASAPI)
649   CFLAGS=$save_CFLAGS
650   LDFLAGS=$save_LDFLAGS
651   LIBS=$save_LIBS
652
653   if test "x$HAVE_WASAPI" = "xyes";  then
654     WASAPI_LIBS="-lole32 -lwinmm -lksuser"
655     AC_SUBST(WASAPI_LIBS)
656   fi
657   AC_SUBST(HAVE_WASAPI)
658 ])
659
660 dnl Direct3D
661 translit(dnm, m, l) AM_CONDITIONAL(USE_DIRECT3D, true)
662 AG_GST_CHECK_FEATURE(DIRECT3D, [Direct3D plug-in], direct3dsink, [
663   HAVE_DIRECT3D="no"
664   save_CFLAGS="$CFLAGS"
665   save_LDFLAGS="$LDFLAGS"
666   save_LIBS="$LIBS"
667   CFLAGS="$CFLAGS $DIRECTX_CFLAGS"
668   LDFLAGS="$LDFLAGS $DIRECTX_LDFLAGS"
669   LIBS="$LIBS -ld3d9 -lgdi32"
670   AC_MSG_CHECKING(for Direct3D LDFLAGS)
671   AC_LINK_IFELSE([AC_LANG_PROGRAM([[
672 #include <windows.h>
673 #include <d3d9.h>
674 ]], [[
675   Direct3DCreate9(D3D_SDK_VERSION);
676 ]])],
677     [HAVE_DIRECT3D="yes"],
678     [HAVE_DIRECT3D="no"])
679   AC_MSG_RESULT($HAVE_DIRECT3D)
680   CFLAGS=$save_CFLAGS
681   LDFLAGS=$save_LDFLAGS
682   LIBS=$save_LIBS
683
684   if test "x$HAVE_DIRECT3D" = "xyes";  then
685     DIRECT3D_LIBS="-ld3d9 -lgdi32"
686     AC_SUBST(DIRECT3D_LIBS)
687   fi
688   AC_SUBST(HAVE_DIRECT3D)
689 ])
690
691 dnl winscreencap
692 translit(dnm, m, l) AM_CONDITIONAL(USE_WINSCREENCAP, true)
693 AG_GST_CHECK_FEATURE(WINSCREENCAP, [winscreencap plug-in], winscreencap, [
694   HAVE_WINSCREENCAP="no"
695   save_CFLAGS="$CFLAGS"
696   save_LDFLAGS="$LDFLAGS"
697   save_LIBS="$LIBS"
698   CFLAGS="$CFLAGS $DIRECTX_CFLAGS"
699   LDFLAGS="$LDFLAGS $DIRECTX_LDFLAGS"
700   LIBS="$LIBS -ld3d9 -lgdi32"
701   AC_MSG_CHECKING(for Direct3D LDFLAGS)
702   AC_LINK_IFELSE([AC_LANG_PROGRAM([[
703 #include <windows.h>
704 #include <d3d9.h>
705 ]], [[
706   Direct3DCreate9(D3D_SDK_VERSION);
707 ]])],
708     [HAVE_WINSCREENCAP="yes"],
709     [HAVE_WINSCREENCAP="no"])
710   AC_MSG_RESULT($HAVE_WINSCREENCAP)
711   CFLAGS=$save_CFLAGS
712   LDFLAGS=$save_LDFLAGS
713   LIBS=$save_LIBS
714
715   if test "x$HAVE_WINSCREENCAP" = "xyes";  then
716     WINSCREENCAP_LIBS="-ld3d9 -lgdi32"
717     AC_SUBST(WINSCREENCAP_LIBS)
718   fi
719   AC_SUBST(HAVE_WINSCREENCAP)
720 ])
721
722 dnl winks
723 translit(dnm, m, l) AM_CONDITIONAL(USE_WINKS, true)
724 AG_GST_CHECK_FEATURE(WINKS, [Winks plug-in], winks, [
725   HAVE_WINKS="no"
726   save_CFLAGS="$CFLAGS"
727   save_LDFLAGS="$LDFLAGS"
728   save_LIBS="$LIBS"
729   CFLAGS="$CFLAGS $DIRECTX_CFLAGS"
730   LDFLAGS="$LDFLAGS $DIRECTX_LDFLAGS"
731   LIBS="$LIBS -lole32 -luuid -lstrmiids"
732   AC_MSG_CHECKING(for Winks LDFLAGS)
733   AC_LINK_IFELSE([AC_LANG_PROGRAM([[
734 #include <windows.h>
735 #include <strmif.h>
736 #include <uuids.h>
737 ]], [[
738 int main () {
739   IGraphBuilder *pGraph = NULL;
740   HRESULT hr = CoInitialize(NULL);
741   hr = CoCreateInstance(&CLSID_FilterGraph, NULL, CLSCTX_INPROC_SERVER,
742                         &IID_IGraphBuilder, (void **)&pGraph);
743
744   return 0;
745 }
746 ]])],
747     [HAVE_WINKS="yes"],
748     [HAVE_WINKS="no"])
749   AC_MSG_RESULT($HAVE_WINKS)
750   CFLAGS=$save_CFLAGS
751   LDFLAGS=$save_LDFLAGS
752   LIBS=$save_LIBS
753
754   if test "x$HAVE_WINKS" = "xyes";  then
755     dnl this is much more than we want
756     WINKS_LIBS="-ldxguid -lole32 -luuid -lstrmiids -lksuser -lsetupapi"
757     AC_SUBST(DIRECTX_CFLAGS)
758     AC_SUBST(DIRECTX_LDFLAGS)
759     AC_SUBST(WINKS_LIBS)
760   fi
761   AC_SUBST(HAVE_WINKS)
762 ])
763
764 dnl *** Android Media ***
765 translit(dnm, m, l) AM_CONDITIONAL(USE_ANDROID_MEDIA, true)
766 HAVE_ANDROID_MEDIA="no"
767 AG_GST_CHECK_FEATURE(ANDROID_MEDIA, [Android Media], androidmedia, [
768   case "$host" in
769     *android*)
770       AC_CHECK_HEADER(jni.h, HAVE_ANDROID_MEDIA="yes", HAVE_ANDROID_MEDIA="no")
771       ;;
772     *)
773       HAVE_ANDROID_MEDIA="no"
774       ;;
775   esac
776 ])
777
778 dnl *** AppleMedia (OS X and iOS) ***
779 translit(dnm, m, l) AM_CONDITIONAL(USE_APPLE_MEDIA, true)
780 HAVE_APPLE_MEDIA="no"
781 dnl SystemConfiguration.h is common to OS X and iOS, so we check for that
782 AG_GST_CHECK_FEATURE(APPLE_MEDIA, [Apple video], applemedia, [
783   AC_CHECK_HEADER(SystemConfiguration/SystemConfiguration.h, HAVE_APPLE_MEDIA="yes", HAVE_APPLE_MEDIA="no")
784   dnl OSX 10.7 and earlier lack VideoToolbox/VideoToolbox.h
785   if test "x$HAVE_IOS" = "xno"; then
786     AC_CHECK_HEADER(VideoToolbox/VideoToolbox.h,, HAVE_APPLE_MEDIA="no")
787   fi
788 ])
789
790 dnl in case header SystemConfiguration/SystemConfiguration.h is found on other platforms
791 case "$host" in
792   *-*darwin*)
793     ;;
794   *)
795     HAVE_APPLE_MEDIA="no"
796     ;;
797 esac
798
799 dnl *** bluez ***
800 translit(dnm, m, l) AM_CONDITIONAL(USE_BLUEZ, true)
801 AG_GST_CHECK_FEATURE(BLUEZ, [Bluez], bluez, [
802   PKG_CHECK_MODULES([BLUEZ5], [bluez >= 5.0], [
803     PKG_CHECK_MODULES([GIO_UNIX], gio-unix-2.0 > 2.24, [
804       AC_CHECK_PROG([GDBUS_CODEGEN],[gdbus-codegen],[gdbus-codegen])
805       HAVE_BLUEZ=yes
806       AC_DEFINE(HAVE_BLUEZ5,[1],[Bluez5 detected])
807     ], [
808       HAVE_BLUEZ=no
809     ])
810   ], [
811     HAVE_BLUEZ=no
812   ])
813 ])
814
815 dnl *** OS/X AVCVideoServices ***
816 translit(dnm, m, l) AM_CONDITIONAL(USE_AVC, true)
817 HAVE_AVC="no"
818 AG_GST_CHECK_FEATURE(AVC, [AVC Video Services], avcsrc, [
819   AC_LANG_PUSH([C++])
820   save_CPPFLAGS="$CPPFLAGS"
821   CPPFLAGS="$CPPFLAGS -framework AVCVideoServices -framework CoreFoundation"
822   save_LIBS="$LIBS"
823   LIBS="$LIBS -framework AVCVideoServices -framework CoreFoundation"
824   AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[]])],[HAVE_AVC=yes],[HAVE_AVC=no])
825   LIBS=$save_LIBS
826   CPPFLAGS=$save_CPPFLAGS
827   AC_LANG_POP([C++])
828 ])
829 dnl in case header AVCVideoServices/AVCVideoServices.h is found on other platforms
830 case "$host" in
831   *-*darwin*)
832     ;;
833   *)
834     HAVE_AVC="no"
835     ;;
836 esac
837
838 dnl check for shm_open (for shm plugin)
839 translit(dnm, m, l) AM_CONDITIONAL(USE_SHM, true)
840 AG_GST_CHECK_FEATURE(SHM, [POSIX shared memory source and sink], shm, [
841     if test "x$HAVE_SYS_SOCKET_H" = "xyes"; then
842         case $host in
843         *-darwin* | *-macos10*)
844             AC_DEFINE(HAVE_OSX,[1],[Apple Mac OS X operating system detected])
845             HAVE_SHM=yes
846             ;;
847         *-*-OpenBSD*)
848             HAVE_SHM=yes
849             ;;
850         *)
851             AC_CHECK_LIB([rt], [shm_open],
852                 AC_CHECK_DECL([MSG_NOSIGNAL], HAVE_SHM=yes, HAVE_SHM=no, [
853                 #include <sys/socket.h>
854                     ]),
855                 HAVE_SHM=no)
856             AC_SUBST(SHM_LIBS, "-lrt")
857             ;;
858         esac
859     else
860         HAVE_SHM=no
861     fi
862 ])
863
864 dnl check for unix sockets (ipcpipeline plugin)
865 translit(dnm, m, l) AM_CONDITIONAL(USE_IPCPIPELINE, true)
866 AG_GST_CHECK_FEATURE(IPCPIPELINE, [Unix sockets], ipcpipeline, [
867     if test "x$HAVE_SYS_SOCKET_H" = "xyes"; then
868         AC_CHECK_FUNC(pipe, [
869           AC_CHECK_FUNC(socketpair, [HAVE_IPCPIPELINE=yes], [HAVE_IPCPIPELINE=no])
870           ], [
871           HAVE_IPCPIPELINE=no
872         ])
873     else
874         HAVE_IPCPIPELINE=no
875     fi
876 ])
877
878 dnl check for Video CD
879 translit(dnm, m, l) AM_CONDITIONAL(USE_VCD, true)
880 AG_GST_CHECK_FEATURE(VCD, [Video CD], vcdsrc, [
881   AC_CHECK_HEADER(linux/cdrom.h, HAVE_VCD="yes", HAVE_VCD="no")
882 ])
883
884 dnl check for OpenSL ES
885 translit(dnm, m, l) AM_CONDITIONAL(USE_OPENSLES, true)
886 AG_GST_CHECK_FEATURE(OPENSLES, [OpenSL ES], opensl, [
887   AC_CHECK_HEADER(SLES/OpenSLES.h, HAVE_OPENSLES="yes", HAVE_OPENSLES="no")
888 ])
889
890 dnl *** UVC H264 ***
891 translit(dnm, m, l) AM_CONDITIONAL(USE_UVCH264, true)
892 AG_GST_CHECK_FEATURE(UVCH264, [UVC H264], uvch264, [
893   AC_CHECK_HEADER(linux/uvcvideo.h, HAVE_UVCVIDEO_H=yes, HAVE_UVCVIDEO_H=no)
894   PKG_CHECK_MODULES(G_UDEV, gudev-1.0 , [
895           AC_DEFINE([HAVE_GUDEV], 1, [Define if gudev is installed])
896           HAVE_GUDEV="yes" ],
897           [HAVE_GUDEV="no"])
898   PKG_CHECK_MODULES(LIBUSB, libusb-1.0 , [
899           AC_DEFINE([HAVE_LIBUSB], 1, [Define if libusb 1.x is installed])
900           HAVE_LIBUSB="yes" ],
901           [HAVE_LIBUSB="no"])
902   if test "x$HAVE_UVCVIDEO_H" = "xyes" && \
903      test "x$HAVE_GUDEV" = "xyes" && \
904      test "x$HAVE_LIBUSB" = "xyes"; then
905     HAVE_UVCH264=yes
906   else
907     HAVE_UVCH264=no
908   fi
909 ])
910 AC_SUBST(LIBUDEV_CFLAGS)
911 AC_SUBST(LIBUDEV_LIBS)
912 AC_SUBST(LIBUSB_CFLAGS)
913 AC_SUBST(LIBUSB_LIBS)
914
915 dnl *** CUDA ***
916 translit(dnm, m, l) AM_CONDITIONAL(USE_CUDA, true)
917 AG_GST_CHECK_FEATURE(CUDA, [NVIDIA CUDA API],, [
918   AC_ARG_WITH([cuda-prefix],
919           AS_HELP_STRING([--with-cuda-prefix],
920           [Use the provided prefix for detecting the cuda installation]),
921           [AS_IF([test "x$with_cuda_prefix" != "x"],
922                  [CUDA_PREFIX="$with_cuda_prefix"])],
923           [CUDA_PREFIX=""])
924
925   HAVE_CUDA="yes"
926   if test "x$CUDA_PREFIX" != "x"; then
927     dnl only override if not already set
928     if test "x$CUDA_CFLAGS" = "x" -a "x$CUDA_LIBS" = "x"; then
929       dnl this is an educated guess, user can always override these
930       CUDA_CFLAGS="-I$CUDA_PREFIX/include"
931       CUDA_LIBS="-L$CUDA_PREFIX/lib -L$CUDA_PREFIX/lib64 -L$CUDA_PREFIX/lib/stubs -L$CUDA_PREFIX/lib64/stubs -lcuda -lcudart"
932     fi
933   else
934     PKG_CHECK_MODULES([CUDA], [cuda-8.0 cudart-8.0],, [
935       PKG_CHECK_MODULES([CUDA], [cuda-7.5 cudart-7.5],, [
936         PKG_CHECK_MODULES([CUDA], [cuda-7.0 cudart-7.0],, [
937           PKG_CHECK_MODULES([CUDA], [cuda-6.5 cudart-6.5],, [
938             AC_MSG_WARN([Could not find cuda headers/libraries])])])])])
939   fi
940
941   HAVE_CUDA_H=no
942   HAVE_CUDART_H=no
943   save_CPPFLAGS="$CPPFLAGS"
944   CPPFLAGS="$CUDA_CFLAGS $save_CPPFLAGS "
945   AC_CHECK_HEADER([cuda.h], [HAVE_CUDA_H=yes],
946       AC_MSG_WARN([Could not find cuda.h]))
947   AC_CHECK_HEADER([cuda_runtime_api.h], [HAVE_CUDART_H=yes],
948       AC_MSG_WARN([Could not find cuda_runtime_api.h]))
949   CPPFLAGS=$save_CPPFLAGS
950
951   dnl libcuda and libcudart libraries
952   save_LIBS="$LIBS"
953   LIBS="$CUDA_LIBS $save_LIBS"
954   HAVE_CUDART_LIB="no"
955   AC_CHECK_LIB(cudart,cudaGetErrorString,[HAVE_CUDART_LIB="yes"], [
956       AC_MSG_WARN([Could not find cudart library])])
957   HAVE_CUDA_LIB="no"
958   AC_CHECK_LIB(cuda,cuInit,[HAVE_CUDA_LIB="yes"], [
959       AC_MSG_WARN([Could not find cuda library])])
960   LIBS="$save_LIBS"
961 ])
962
963 dnl *** NVDEC ***
964 translit(dnm, m, l) AM_CONDITIONAL(USE_NVDEC, true)
965 AG_GST_CHECK_FEATURE(NVDEC, [nvdec], nvdec, [
966   HAVE_NVCUVID_H=no
967   save_CPPFLAGS="$CPPFLAGS"
968   CPPFLAGS="$CUDA_CFLAGS $save_CPPFLAGS"
969   AC_CHECK_HEADER([nvcuvid.h], [HAVE_NVCUVID_H=yes],
970       AC_MSG_WARN([Could not find nvcuvid.h]))
971   CPPFLAGS=$save_CPPFLAGS
972
973   HAVE_NVCUVID=no
974   save_LIBS="$LIBS"
975   LIBS="$CUDA_LIBS $save_LIBS"
976   AC_CHECK_LIB(nvcuvid, cuvidCtxLock, [HAVE_NVCUVID=yes],
977       AC_MSG_WARN([Could not find library nvcuvid]))
978   LIBS="$save_LIBS"
979
980   if test "x$HAVE_NVCUVID_H" = "xyes" -a "x$HAVE_NVCUVID" = "xyes"; then
981     HAVE_NVDEC=yes
982   else
983     HAVE_NVDEC=no
984   fi
985 ])
986
987 dnl *** NVENC ***
988 translit(dnm, m, l) AM_CONDITIONAL(USE_NVENC, true)
989 AG_GST_CHECK_FEATURE(NVENC, [NVIDIA Encode API], nvenc, [
990   dnl nvEncodeAPI.h header
991   HAVE_NVENCODEAPI_H=no
992   AC_ARG_VAR(NVENCODE_CFLAGS, [C compiler flags for NvEncodeAPI.h])
993   save_CPPFLAGS="$CPPFLAGS"
994   CPPFLAGS="$NVENCODE_CFLAGS $save_CPPFLAGS"
995   AC_CHECK_HEADER([nvEncodeAPI.h], [
996       AC_PREPROC_IFELSE([AC_LANG_SOURCE([[#include <nvEncodeAPI.h>
997           #if NVENCAPI_MAJOR_VERSION < 5
998           #error "Need nvEncodeAPI.h >= 5.0"
999           #endif
1000           ]])], [
1001           HAVE_NVENCODEAPI_H=yes
1002           ], [
1003           AC_MSG_WARN([nvEncodeAPI.h must be >= 5.0])
1004           ])
1005       ],
1006       AC_MSG_WARN([Could not find nvEncodeAPI.h]))
1007   AC_SUBST(NVENCODE_CFLAGS)
1008   CPPFLAGS="$save_CPPFLAGS"
1009
1010   dnl libnvnidia-encode library
1011   HAVE_NVENCODE_LIB=no
1012   AC_ARG_VAR(NVENCODE_LIBS, [linker flags for nvidia-encode])
1013   saved_LIBS="$LIBS"
1014   LIBS="$NVENCODE_LIBS $saved_LIBS"
1015   AC_CHECK_LIB(nvidia-encode, NvEncodeAPICreateInstance, [HAVE_NVENCODE_LIB="yes"],
1016       AC_MSG_WARN([Could not find library nvidia-encode]))
1017   NVENCODE_LIBS="$NVENCODE_LIBS -lnvidia-encode"
1018   AC_SUBST(NVENCODE_LIBS)
1019   LIBS="$saved_LIBS"
1020
1021   USE_NVENC_GST_GL=no
1022   if test "x$HAVE_CUDA_H" = "xyes" \
1023       -a "x$HAVE_CUDART_H" = "xyes" \
1024       -a "x$HAVE_CUDA_LIB" = "xyes" \
1025       -a "x$HAVE_CUDART_LIB" = "xyes" \
1026       -a "x$HAVE_NVENCODEAPI_H" = "xyes" \
1027       -a "x$HAVE_NVENCODE_LIB" = "xyes"; then
1028     HAVE_NVENC="yes"
1029     if test x"$USE_OPENGL" = x"yes"; then
1030       dnl cuda-gl interop header
1031       save_CPPFLAGS="$CPPFLAGS"
1032       CPPFLAGS="$save_CPPFLAGS $CUDA_CFLAGS"
1033       AC_CHECK_HEADER([cuda_gl_interop.h], [
1034         USE_NVENC_GST_GL="yes"
1035         AC_DEFINE(HAVE_NVENC_GST_GL, [1] , [NVENC GStreamer OpenGL support available])
1036         ])
1037       CPPFLAGS="$save_CPPFLAGS"
1038     fi
1039   else
1040     HAVE_NVENC="no"
1041   fi
1042 ])
1043 AM_CONDITIONAL(USE_NVENC_GST_GL, test "x$USE_NVENC_GST_GL" = "xyes")
1044
1045 dnl check for tinyalsa
1046 translit(dnm, m, l) AM_CONDITIONAL(USE_TINYALSA, true)
1047 AG_GST_CHECK_FEATURE(TINYALSA, [tinyalsa], tinyalsa, [
1048   AC_CHECK_HEADER(tinyalsa/asoundlib.h, HAVE_TINYALSA="yes", HAVE_TINYALSA="no")
1049 ])
1050
1051 dnl check for intel mediasdk
1052 translit(dnm, m, l) AM_CONDITIONAL(USE_MSDK, true)
1053 AG_GST_CHECK_FEATURE(MSDK, [Intel MediaSDK], msdk, [
1054   PKG_CHECK_MODULES(G_UDEV, gudev-1.0 , [
1055           AC_DEFINE([HAVE_GUDEV], 1, [Define if gudev is installed])
1056           HAVE_GUDEV="yes" ],
1057           [HAVE_GUDEV="no"])
1058   PKG_CHECK_MODULES(LIBMFX, libmfx,
1059   [
1060     AC_DEFINE(HAVE_LIBMFX, 1, [Define if mfx_dispatcher is available])
1061     HAVE_MSDK="yes"
1062   ], [
1063     AC_ARG_WITH([msdk-prefix],
1064             AS_HELP_STRING([--with-msdk-prefix],
1065             [Use the provided prefix for detecting the Intel MediaSDK]),
1066             [AS_IF([test "x$with_msdk_prefix" != "x"],
1067                    [MSDK_PREFIX="$with_msdk_prefix"])],
1068             [AS_IF([test "x$MFX_HOME" != "x"],
1069                    [MSDK_PREFIX="$MFX_HOME"],
1070                    [MSDK_PREFIX="/opt/intel/media"])])
1071     MSDK_CFLAGS="-I$MSDK_PREFIX/include"
1072     MSDK_LIBS="-L$MSDK_PREFIX/lib/lin_x64 -lmfx -ldl"
1073     AC_SUBST(MSDK_CFLAGS)
1074     AC_SUBST(MSDK_LIBS)
1075
1076     save_CPPFLAGS="$CPPFLAGS"
1077     CPPFLAGS="$MSDK_CFLAGS $save_CPPFLAGS"
1078     AC_CHECK_HEADER(mfxdefs.h, HAVE_MFXDEFS_H="yes", HAVE_MFXDEFS_H="no")
1079     CPPFLAGS="$save_CPPFLAGS"
1080
1081     save_LIBS="$LIBS"
1082     LIBS="$MSDK_LIBS $LIBS"
1083     AC_LANG_PUSH([C++])
1084     AC_CHECK_LIB(mfx,MFXInit,HAVE_MFX_LIB="yes",HAVE_MFX_LIB="no")
1085     AC_LANG_POP([C++])
1086     LIBS="$save_LIBS"
1087
1088     if test "x$HAVE_MFXDEFS_H" = "xyes" \
1089         -a "x$HAVE_MFX_LIB" = "xyes"; then
1090       HAVE_MSDK="yes"
1091     else
1092       HAVE_MSDK="no"
1093     fi
1094   ])
1095
1096   PKG_CHECK_MODULES(LIBVA_DRM, libva-drm, HAVE_LIBVA_DRM="yes", HAVE_LIBVA_DRM="no")
1097
1098   if test "x$HAVE_GUDEV" = "xyes" \
1099      -a  "x$HAVE_MSDK" = "xyes" \
1100      -a "x$HAVE_LIBVA_DRM" = "xyes"; then
1101     HAVE_MSDK="yes"
1102   else
1103     HAVE_MSDK="no"
1104   fi
1105 ])
1106 AM_CONDITIONAL(USE_MSDK_LIBVA,
1107     test "x$HAVE_MSDK" = "xyes" -a "x$HAVE_LIBVA_DRM" = "xyes")
1108
1109 dnl *** ext plug-ins ***
1110 dnl keep this list sorted alphabetically !
1111
1112 if test "x$BUILD_EXTERNAL" = "xyes"; then
1113
1114 dnl *** assrender ***
1115 translit(dnm, m, l) AM_CONDITIONAL(USE_ASSRENDER, true)
1116 AG_GST_CHECK_FEATURE(ASSRENDER, [ASS/SSA renderer], assrender, [
1117   PKG_CHECK_MODULES(ASSRENDER, libass >= 0.10.2, [
1118     HAVE_ASSRENDER="yes" ], [
1119     HAVE_ASSRENDER="no"
1120   ])
1121 ])
1122 AC_SUBST(ASSRENDER_CFLAGS)
1123 AC_SUBST(ASSRENDER_LIBS)
1124
1125 dnl *** AOM ***
1126 translit(dnm, m, l) AM_CONDITIONAL(USE_AOM, true)
1127 AG_GST_CHECK_FEATURE(AOM, [AV1 encoder/decoder], aom, [
1128   AG_GST_PKG_CHECK_MODULES(AOM, aom)
1129 ])
1130
1131 dnl *** vo-amrwbenc ***
1132 translit(dnm, m, l) AM_CONDITIONAL(USE_VOAMRWBENC, true)
1133 AG_GST_CHECK_FEATURE(VOAMRWBENC, [vo-amrwbenc library], vo-amrwbenc, [
1134   AG_GST_PKG_CHECK_MODULES(VOAMRWBENC, vo-amrwbenc >= 0.1.0)
1135 ])
1136
1137 dnl *** vo-aacenc ***
1138 translit(dnm, m, l) AM_CONDITIONAL(USE_VOAACENC, true)
1139 AG_GST_CHECK_FEATURE(VOAACENC, [vo-aacenc library], vo-aacenc, [
1140   AG_GST_PKG_CHECK_MODULES(VOAACENC, vo-aacenc >= 0.1.0)
1141 ])
1142
1143 dnl *** bs2b ***
1144 translit(dnm, m, l) AM_CONDITIONAL(USE_BS2B, true)
1145 AG_GST_CHECK_FEATURE(BS2B, [bs2b], bs2b, [
1146   PKG_CHECK_MODULES(BS2B, libbs2b >= 3.1.0, HAVE_BS2B="yes", [
1147     HAVE_BS2B="no"
1148   ])
1149   AC_SUBST(BS2B_CFLAGS)
1150   AC_SUBST(BS2B_LIBS)
1151 ])
1152
1153 dnl *** BZ2 ***
1154 translit(dnm, m, l) AM_CONDITIONAL(USE_BZ2, true)
1155 AG_GST_CHECK_FEATURE(BZ2, [bz2 library], bz2, [
1156   save_LIBS=$LIBS
1157   LIBS="$LIBS -lbz2"
1158   AC_MSG_CHECKING([for BZ2_bzlibVersion in -lbz2])
1159   AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <bzlib.h>]], [[const char *version = BZ2_bzlibVersion ();]])],[HAVE_BZ2=yes],[HAVE_BZ2=no])
1160   AC_MSG_RESULT($HAVE_BZ2)
1161   LIBS=$save_LIBS
1162   if test "x$HAVE_BZ2" = "xyes"; then
1163     BZ2_LIBS="-lbz2"
1164   fi
1165   AC_SUBST(BZ2_LIBS)
1166
1167 ])
1168
1169 #dnl *** cairo ***
1170 #translit(dnm, m, l) AM_CONDITIONAL(USE_CAIRO, true)
1171 #AG_GST_CHECK_FEATURE(CAIRO, [cairo plug-in], cairo, [
1172 #  PKG_CHECK_MODULES(CAIRO, cairo >= 1.0 glitz-glx, HAVE_CAIRO=yes, [
1173 #    HAVE_CAIRO=no
1174 #  ])
1175 #  AC_SUBST(CAIRO_CFLAGS)
1176 #  AC_SUBST(CAIRO_LIBS)
1177 #])
1178
1179 dnl *** chromaprint ***
1180 translit(dnm, m, l) AM_CONDITIONAL(USE_CHROMAPRINT, true)
1181 AG_GST_CHECK_FEATURE(CHROMAPRINT, [chromaprint], chromaprint, [
1182   PKG_CHECK_MODULES(CHROMAPRINT, libchromaprint, HAVE_CHROMAPRINT="yes", [
1183     HAVE_CHROMAPRINT="no"
1184   ])
1185   AC_SUBST(CHROMAPRINT_CFLAGS)
1186   AC_SUBST(CHROMAPRINT_LIBS)
1187 ])
1188
1189 dnl *** Curl ***
1190 translit(dnm, m, l) AM_CONDITIONAL(USE_CURL, true)
1191 AG_GST_CHECK_FEATURE(CURL, [Curl plugin], curl, [
1192   PKG_CHECK_MODULES(CURL, libcurl >= 7.35.0, [
1193     HAVE_CURL="yes"
1194     AC_CHECK_HEADERS([unistd.h sys/socket.h sys/types.h netinet/in.h netinet/tcp.h fcntl.h], [ ], [
1195       AC_CHECK_HEADERS([unistd.h sys/types.h winsock2.h ws2tcpip.h fcntl.h], [ ], [HAVE_CURL="no"])
1196     ])
1197     AC_CHECK_HEADERS([netinet/ip.h], [], [HAVE_CURL="no"],
1198     [[#ifdef HAVE_SYS_TYPES_H
1199      # include <sys/types.h>
1200      #endif
1201      #ifdef HAVE_NETINET_IN_H
1202      # include <netinet/in.h>
1203      #endif
1204     ]])
1205     AC_MSG_CHECKING([for socket support needed by curlsink])
1206     AC_MSG_RESULT($HAVE_CURL)
1207   ], [
1208     HAVE_CURL="no"
1209   ])
1210   AC_SUBST(CURL_CFLAGS)
1211   AC_SUBST(CURL_LIBS)
1212   PKG_CHECK_MODULES(SSH2, libssh2 >= 1.4.3, [
1213     HAVE_SSH2="yes"
1214     AC_DEFINE(HAVE_SSH2, 1, [Define if libssh2 is available])
1215   ], [
1216     HAVE_SSH2="no"
1217   ])
1218   AM_CONDITIONAL(USE_SSH2, test "x$HAVE_SSH2" = "xyes")
1219   AC_SUBST(SSH2_CFLAGS)
1220   AC_SUBST(SSH2_LIBS)
1221 ],,,[AM_CONDITIONAL(USE_SSH2, false)])
1222
1223 dnl **** DASH ****
1224 translit(dnm, m, l) AM_CONDITIONAL(USE_DASH, true)
1225 AG_GST_CHECK_FEATURE(DASH, [DASH plug-in], dash, [
1226   PKG_CHECK_MODULES(LIBXML2, libxml-2.0 >= 2.8, [HAVE_LIBXML2="yes"
1227     HAVE_DASH="yes"], [HAVE_LIBXML2="no"
1228     HAVE_DASH="no"])
1229   AC_SUBST(LIBXML2_CFLAGS)
1230   AC_SUBST(LIBXML2_LIBS)
1231 ])
1232
1233 dnl *** dc1394  ***
1234 translit(dnm, m, l) AM_CONDITIONAL(USE_DC1394, true)
1235 AG_GST_CHECK_FEATURE(DC1394, [libdc1394], dc1394, [
1236    PKG_CHECK_MODULES(LIBDC1394, libdc1394-2 >= 2.0.0, [
1237         if test -z "`$PKG_CONFIG --modversion libdc1394-2 | grep 2.0.0-rc`"; then
1238                 HAVE_DC1394="yes"
1239         else
1240                 HAVE_DC1394="no"
1241         fi
1242    ], [
1243         HAVE_DC1394="no"
1244         AC_MSG_RESULT(no)
1245    ])
1246    AC_SUBST(LIBDC1394_CFLAGS)
1247    AC_SUBST(LIBDC1394_LIBS)
1248 ])
1249
1250 dnl *** decklink  ***
1251 translit(dnm, m, l) AM_CONDITIONAL(USE_DECKLINK, true)
1252 AG_GST_CHECK_FEATURE(DECKLINK, [decklink], decklink, [
1253    HAVE_DECKLINK=no
1254    case "$host" in
1255      *android*)
1256        HAVE_DECKLINK=no
1257        ;;
1258      *-*linux*)
1259        if test "x$HAVE_PTHREAD_H" = "xyes"; then
1260          AC_CHECK_LIB(dl, dlopen,
1261            [
1262             HAVE_DECKLINK=yes
1263             DECKLINK_CXXFLAGS=
1264             DECKLINK_LIBS="-lpthread -ldl"
1265            ])
1266        fi
1267        ;;
1268      *-*darwin*)
1269        if test "x$HAVE_PTHREAD_H" = "xyes"; then
1270          AC_CHECK_LIB(dl, dlopen,
1271            [
1272             HAVE_DECKLINK=yes
1273             DECKLINK_CXXFLAGS=
1274             DECKLINK_LIBS="-lpthread -ldl"
1275             HAVE_DECKLINK_OSX=yes
1276            ])
1277        fi
1278        ;;
1279      *-mingw*)
1280        HAVE_DECKLINK=yes
1281        DECKLINK_CXXFLAGS=
1282        DECKLINK_LIBS="-lole32 -loleaut32"
1283        HAVE_DECKLINK_WIN=yes
1284        ;;
1285      *)
1286        HAVE_DECKLINK=no
1287        ;;
1288    esac
1289
1290    AC_SUBST(DECKLINK_CXXFLAGS)
1291    AC_SUBST(DECKLINK_LIBS)
1292 ])
1293 AM_CONDITIONAL(DECKLINK_OSX, test "x$HAVE_DECKLINK_OSX" = xyes)
1294 AM_CONDITIONAL(DECKLINK_WIN, test "x$HAVE_DECKLINK_WIN" = xyes)
1295
1296 dnl **** DirectFB ****
1297 translit(dnm, m, l) AM_CONDITIONAL(USE_DIRECTFB, true)
1298 AG_GST_CHECK_FEATURE(DIRECTFB, [directfb], dfbvideosink , [
1299   PKG_CHECK_MODULES(DIRECTFB, directfb >= 0.9.24, HAVE_DIRECTFB="yes", [
1300     HAVE_DIRECTFB="no"
1301   ])
1302 ])
1303
1304 dnl **** Wayland ****
1305 translit(dnm, m, l) AM_CONDITIONAL(USE_WAYLAND, true)
1306 AC_PATH_PROG([wayland_scanner], [wayland-scanner])
1307 AG_GST_CHECK_FEATURE(WAYLAND, [wayland sink], wayland , [
1308   PKG_CHECK_MODULES(WAYLAND, wayland-client >= 1.4.0 libdrm >= 2.4.55 wayland-protocols >= 1.4, [
1309     if test "x$wayland_scanner" != "x"; then
1310       HAVE_WAYLAND="yes"
1311       AC_SUBST(WAYLAND_PROTOCOLS_DATADIR, `$PKG_CONFIG --variable=pkgdatadir wayland-protocols`)
1312     else
1313       AC_MSG_RESULT([wayland-scanner is required to build the wayland plugin])
1314       HAVE_WAYLAND="no"
1315     fi
1316     ],
1317     [ HAVE_WAYLAND="no"
1318   ])
1319 ])
1320
1321 dnl **** WebP ****
1322 translit(dnm, m, l) AM_CONDITIONAL(USE_WEBP, true)
1323 AG_GST_CHECK_FEATURE(WEBP, [WebP], webp , [
1324   PKG_CHECK_MODULES(WEBP, libwebp >= 0.2.1, [
1325     HAVE_WEBP="yes" ], [ HAVE_WEBP="no"
1326   ])
1327   AC_SUBST(WEBP_CFLAGS)
1328   AC_SUBST(WEBP_LIBS)
1329 ])
1330
1331 dnl *** Daala ***
1332 translit(dnm, m, l) AM_CONDITIONAL(USE_DAALA, true)
1333 AG_GST_CHECK_FEATURE(DAALA, [daala], daala, [
1334   if test "x$BUILD_EXPERIMENTAL" = "xyes"; then
1335     PKG_CHECK_MODULES(DAALA, daalaenc daaladec, [
1336             HAVE_DAALA="yes"
1337     ], [
1338             HAVE_DAALA="no"
1339     ])
1340     AC_SUBST(DAALA_CFLAGS)
1341     AC_SUBST(DAALA_LIBS)
1342   fi
1343 ])
1344
1345 dnl *** DTS ***
1346 translit(dnm, m, l) AM_CONDITIONAL(USE_DTS, true)
1347 AG_GST_CHECK_FEATURE(DTS, [dts library], dtsdec, [
1348   HAVE_DTS="yes"
1349   AG_GST_CHECK_LIBHEADER(DTS, dca, dca_init, $LIBM, dca.h,
1350     DTS_LIBS="-ldca $LIBM", HAVE_DTS="no")
1351   if test $HAVE_DTS = "no"; then
1352     AG_GST_CHECK_LIBHEADER(DTS, dts_pic, dts_init, $LIBM, dts.h,
1353       [ DTS_LIBS="-ldts_pic $LIBM"
1354         AC_DEFINE(DTS_OLD, 1, [Define if an old libdts is used])
1355       ])
1356   fi
1357   AC_SUBST(DTS_LIBS)
1358 ])
1359
1360 dnl *** resindvd ***
1361 translit(dnm, m, l) AM_CONDITIONAL(USE_RESINDVD, true)
1362 AG_GST_CHECK_FEATURE(RESINDVD, [resindvd plugin], resindvd, [
1363   PKG_CHECK_MODULES(DVDNAV, dvdnav >= 4.1.2 dvdread >= 4.1.2, HAVE_RESINDVD="yes", [
1364     HAVE_RESINDVD="no"
1365   ])
1366 ])
1367
1368 dnl **** Free AAC Encoder (FAAC) ****
1369 translit(dnm, m, l) AM_CONDITIONAL(USE_FAAC, true)
1370 AG_GST_CHECK_FEATURE(FAAC, [AAC encoder plug-in], faac, [
1371   AG_GST_CHECK_LIBHEADER(FAAC, faac, faacEncOpen, $LIBM, faac.h,
1372     FAAC_LIBS="-lfaac $LIBM")
1373   AC_SUBST(FAAC_LIBS)
1374 ])
1375
1376 dnl **** Free AAC Decoder (FAAD2) ****
1377 translit(dnm, m, l) AM_CONDITIONAL(USE_FAAD, true)
1378 AG_GST_CHECK_FEATURE(FAAD, [FAAD2 AAC decoder plug-in], faad, [
1379   AG_GST_CHECK_LIBHEADER(FAAD, faad, NeAACDecOpen, $LIBM, neaacdec.h, [
1380     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <faad.h>]], [[
1381       #if !defined(FAAD2_VERSION) || !defined(FAAD_FMT_DOUBLE)
1382       #error Not faad2
1383       #elif !defined(LATM)
1384       #error Not faad2 >= 2.7
1385       #endif
1386     ]])],[
1387       HAVE_FAAD="yes"
1388       FAAD_LIBS="-lfaad"
1389     ], [
1390       AC_MSG_WARN([Found libfaad, but version not recent enough. Need faad2 >= 2.7])
1391       HAVE_FAAD="no"
1392     ])
1393   ], [
1394       HAVE_FAAD="no"
1395   ])
1396   AC_SUBST(FAAD_LIBS)
1397 ])
1398
1399 dnl *** fbdev ***
1400 translit(dnm, m, l) AM_CONDITIONAL(USE_FBDEV, true)
1401 AG_GST_CHECK_FEATURE(FBDEV, [linux framebuffer], fbdevsink, [
1402   if test "x$HAVE_FBDEV" != "xyes"; then
1403     AC_CHECK_HEADER([linux/fb.h], HAVE_FBDEV=yes, HAVE_FBDEV=no)
1404   fi
1405 ])
1406
1407 dnl *** fdkaac ***
1408 translit(dnm, m, l) AM_CONDITIONAL(USE_FDK_AAC, true)
1409 AG_GST_CHECK_FEATURE(FDK_AAC, [fdkaac plugin], fdkaac, [
1410   PKG_CHECK_MODULES(FDK_AAC, fdk-aac >= 0.1.4, [
1411     HAVE_FDK_AAC="yes",
1412     HAVE_FDK_AAC_0_1_4="yes"
1413     AC_DEFINE(HAVE_FDK_AAC_0_1_4, 1, [Define if we have fdk-aac >= 0.1.4])
1414   ],[
1415     PKG_CHECK_MODULES(FDK_AAC, fdk-aac, HAVE_FDK_AAC="yes", HAVE_FDK_AAC="no")
1416   ])
1417 ])
1418
1419 dnl *** flite ***
1420 translit(dnm, m, l) AM_CONDITIONAL(USE_FLITE, true)
1421 AG_GST_CHECK_FEATURE(FLITE, [Flite plugin], flite, [
1422   AG_GST_CHECK_LIBHEADER(FLITE, flite, flite_init, $LIBM, flite/flite.h,
1423     FLITE_LIBS="-lflite -lflite_cmu_us_kal -lflite_usenglish -lflite_cmulex $LIBM")
1424
1425   AC_SUBST(FLITE_CFLAGS)
1426   AC_SUBST(FLITE_LIBS)
1427 ])
1428
1429 dnl *** gsm ***
1430 translit(dnm, m, l) AM_CONDITIONAL(USE_GSM, true)
1431 AG_GST_CHECK_FEATURE(GSM, [GSM library], gsmenc gsmdec, [
1432   AG_GST_CHECK_LIBHEADER(GSM, gsm, gsm_create, , gsm.h, GSM_LIBS="-lgsm")
1433   if test $HAVE_GSM != "yes"; then
1434     AG_GST_CHECK_LIBHEADER(GSM, gsm, gsm_create, , gsm/gsm.h, GSM_LIBS="-lgsm")
1435     if test $HAVE_GSM = "yes"; then
1436       AC_DEFINE(GSM_HEADER_IN_SUBDIR, 1, [Define if GSM header in gsm/ subdir])
1437     fi
1438   fi
1439   AC_SUBST(GSM_LIBS)
1440 ])
1441
1442 dnl *** fluidSynth ***
1443 translit(dnm, m, l) AM_CONDITIONAL(USE_FLUIDSYNTH, true)
1444 AG_GST_CHECK_FEATURE(FLUIDSYNTH, [fluidsynth], fluidsynth, [
1445   PKG_CHECK_MODULES(FLUIDSYNTH, fluidsynth >= 1.0, HAVE_FLUIDSYNTH="yes", [
1446     HAVE_FLUIDSYNTH="no"
1447   ])
1448 ])
1449
1450 dnl *** kate ***
1451 translit(dnm, m, l) AM_CONDITIONAL(USE_KATE, true)
1452 AG_GST_CHECK_FEATURE(KATE, [Kate], kate, [
1453   PKG_CHECK_MODULES(KATE, kate >= 0.1.7, HAVE_KATE="yes", [
1454     HAVE_KATE="no"
1455   ])
1456   AC_SUBST(KATE_CFLAGS)
1457   AC_SUBST(KATE_LIBS)
1458   PKG_CHECK_MODULES(TIGER, tiger >= 0.3.2,
1459     [
1460       HAVE_TIGER="yes"
1461       AC_DEFINE(HAVE_TIGER, 1, [Define if libtiger is available])
1462     ],
1463     [
1464       HAVE_TIGER="no"
1465     ]
1466   )
1467   AM_CONDITIONAL(USE_TIGER, test "x$HAVE_TIGER" = "xyes")
1468   AC_SUBST(TIGER_CFLAGS)
1469   AC_SUBST(TIGER_LIBS)
1470 ],,,[AM_CONDITIONAL(USE_TIGER, false)])
1471
1472 dnl *** kms ***
1473 translit(dnm, m, l) AM_CONDITIONAL(USE_KMS, true)
1474 AG_GST_CHECK_FEATURE(KMS, [drm/kms libraries], kms, [
1475   AG_GST_PKG_CHECK_MODULES(GST_ALLOCATORS, gstreamer-allocators-1.0)
1476   PKG_CHECK_MODULES([KMS_DRM], [libdrm >= 2.4.55], HAVE_KMS=yes, HAVE_KMS=no)
1477 ])
1478
1479 dnl *** ladspa ***
1480 translit(dnm, m, l) AM_CONDITIONAL(USE_LADSPA, true)
1481 AG_GST_CHECK_FEATURE(LADSPA, [ladspa], ladspa, [
1482   AC_CHECK_HEADER(ladspa.h, HAVE_LADSPA="yes", HAVE_LADSPA="no")
1483
1484   PKG_CHECK_MODULES(LRDF, lrdf, HAVE_LRDF=yes, HAVE_LRDF=no)
1485   if test $HAVE_LRDF = "yes"; then
1486     AC_DEFINE(HAVE_LRDF, 1, [Define if we have liblrdf])
1487   fi
1488   AC_SUBST(LRDF_LIBS)
1489   AC_SUBST(LRDF_CFLAGS)
1490 ])
1491
1492 dnl *** LCM2  ***
1493 #translit(dnm, m, l) AM_CONDITIONAL(USE_LCMS2, true)
1494 AG_GST_CHECK_FEATURE(LCMS2, [LCMS colormanagement plugin], lcms2, [
1495   PKG_CHECK_MODULES(LCMS2, lcms2 >= 2.7, HAVE_LCMS2="yes", [
1496     HAVE_LCMS2="no"
1497   ])
1498    AC_SUBST(LCMS2_LIBS)
1499 ])
1500
1501 dnl *** LV2 ***
1502 translit(dnm, m, l) AM_CONDITIONAL(USE_LV2, true)
1503 AG_GST_CHECK_FEATURE(LV2, [lv2], lv2, [
1504   PKG_CHECK_MODULES(LILV, lilv-0 >= 0.22, [
1505     HAVE_LV2="yes",
1506     HAVE_LILV_0_22="yes"
1507     AC_DEFINE(HAVE_LILV_0_22, 1, [Define if we have liblilv >= 0.22])
1508   ],[
1509     PKG_CHECK_MODULES(LILV, lilv-0 >= 0.16, HAVE_LV2="yes", HAVE_LV2="no")
1510   ])
1511   AC_SUBST(LILV_CFLAGS)
1512   AC_SUBST(LILV_LIBS)
1513 ])
1514
1515 dnl *** libde265 ***
1516 translit(dnm, m, l) AM_CONDITIONAL(USE_LIBDE265, true)
1517 AG_GST_CHECK_FEATURE(LIBDE265, [libde265 HEVC/H.265 decoder], libde265, [
1518   PKG_CHECK_MODULES(LIBDE265, libde265 >= 0.9, HAVE_LIBDE265="yes", HAVE_LIBDE265="no")
1519   AC_SUBST(LIBDE265_CFLAGS)
1520   AC_SUBST(LIBDE265_LIBS)
1521 ])
1522
1523 dnl *** libmms ***
1524 translit(dnm, m, l) AM_CONDITIONAL(USE_LIBMMS, true)
1525 AG_GST_CHECK_FEATURE(LIBMMS, [mms protocol library], libmms, [
1526   dnl check with pkg-config first
1527   PKG_CHECK_MODULES(LIBMMS, libmms >= 0.4, HAVE_LIBMMS="yes", [
1528     HAVE_LIBMMS="no"
1529   ])
1530 ])
1531 AC_SUBST(LIBMMS_LIBS)
1532
1533 dnl *** libsrt ***
1534 translit(dnm, m, l) AM_CONDITIONAL(USE_SRT, true)
1535 AG_GST_CHECK_FEATURE(SRT, [srt library], srt, [
1536   PKG_CHECK_MODULES(SRT, srt, HAVE_SRT="yes", HAVE_SRT=no)
1537   AC_SUBST(SRT_LIBS)
1538   AC_SUBST(SRT_CFLAGS)
1539 ])
1540
1541 dnl *** libsrtp ***
1542 translit(dnm, m, l) AM_CONDITIONAL(USE_SRTP, true)
1543 AG_GST_CHECK_FEATURE(SRTP, [srtp library], srtp, [
1544   HAVE_SRTP="no"
1545   AG_GST_PKG_CHECK_MODULES(SRTP, libsrtp2 >= 2.1.0)
1546   if test x"$HAVE_SRTP" = x"yes"; then
1547     AC_DEFINE([HAVE_SRTP2], 1, [Define if libsrtp2 is used])
1548   else
1549     PKG_CHECK_MODULES(SRTP, libsrtp, HAVE_SRTP="yes",
1550       AG_GST_CHECK_LIBHEADER(SRTP, srtp, srtp_init, , srtp/srtp.h, SRTP_LIBS="-lsrtp")
1551     )
1552   fi
1553   AC_SUBST(SRTP_LIBS)
1554   AC_SUBST(SRTP_CFLAGS)
1555 ])
1556
1557 dnl *** dtls ***
1558 translit(dnm, m, l) AM_CONDITIONAL(USE_DTLS, true)
1559 AG_GST_CHECK_FEATURE(DTLS, [DTLS plugin], dtls, [
1560   PKG_CHECK_MODULES(DTLS, [ openssl >= 1.0.1  libcrypto ], [
1561     HAVE_DTLS="yes"
1562     AC_SUBST(DTLS_CFLAGS)
1563     AC_SUBST(DTLS_LIBS)
1564   ], [
1565     HAVE_DTLS="no"
1566   ])
1567 ])
1568
1569 dnl *** ttml ***
1570 translit(dnm, m, l) AM_CONDITIONAL(USE_TTML, true)
1571 AG_GST_CHECK_FEATURE(TTML, [TTML plugin], ttml, [
1572   PKG_CHECK_MODULES(TTML, [ libxml-2.0 >= 2.9.2 pango cairo pangocairo ], [
1573     HAVE_TTML="yes"
1574   ], [
1575     HAVE_TTML="no"
1576   ])
1577 ])
1578
1579 dnl *** modplug ***
1580 translit(dnm, m, l) AM_CONDITIONAL(USE_MODPLUG, true)
1581 AG_GST_CHECK_FEATURE(MODPLUG, modplug, modplug, [
1582   if test "x$HAVE_CXX" != "xyes"; then
1583     AC_MSG_WARN([Not compiling modplug plugin as it requires a C++ compiler])
1584     HAVE_MODPLUG="no"
1585   else
1586     PKG_CHECK_MODULES(MODPLUG, libmodplug, HAVE_MODPLUG="yes", HAVE_MODPLUG="no")
1587   fi
1588   AC_SUBST(MODPLUG_CFLAGS)
1589   AC_SUBST(MODPLUG_LIBS)
1590 ])
1591
1592 dnl *** mjpegtools version info ***
1593 dnl some may prefer older version (given quirks above)
1594 dnl hm, no version info seems available within mjpegtools headers
1595 dnl and API really moves along
1596 echo
1597 PKG_CHECK_EXISTS(mjpegtools >= 1.6.1.93 mjpegtools < 1.8.0, [
1598   mjpegtools_api=10601
1599 ], [
1600   PKG_CHECK_EXISTS(mjpegtools >= 1.8.0 mjpegtools < 1.9.0, [
1601     mjpegtools_api=10800
1602   ], [
1603     PKG_CHECK_EXISTS(mjpegtools >= 2.0.0, [
1604       mjpegtools_api=20000
1605     ], [
1606       PKG_CHECK_MODULES(MJPEG, mjpegtools >= 1.9.0 mjpegtools < 2.0.0, [
1607         dnl logging API changed in release candidates
1608         OLD_CFLAGS="$CFLAGS"
1609         OLD_LIBS="$LIBS"
1610         CFLAGS="$MJPEG_CFLAGS"
1611         LIBS="$LIBS $MJPEG_LIBS -lmjpegutils $LIBM $PTHREAD_LIBS"
1612         AC_CHECK_FUNC(mjpeg_loglev_t, [
1613           mjpegtools_api=10903
1614           ], [
1615           mjpegtools_api=10900
1616           ])
1617         CFLAGS="$OLD_CFLAGS"
1618         LIBS="$OLD_LIBS"
1619       ], [
1620         mjpegtools_api=0
1621       ])
1622     ])
1623   ])
1624 ])
1625 AC_DEFINE_UNQUOTED(GST_MJPEGTOOLS_API, $mjpegtools_api,
1626   [mjpegtools API evolution])
1627
1628 dnl *** mpeg2enc ***
1629 translit(dnm, m, l) AM_CONDITIONAL(USE_MPEG2ENC, true)
1630 AG_GST_CHECK_FEATURE(MPEG2ENC, [mpeg2enc], mpeg2enc, [
1631   HAVE_MPEG2ENC="no"
1632   dnl we require a c++ compiler for this one
1633   if [ test x$HAVE_CXX = xyes ]; then
1634     dnl libmpeg2enc was first included in mjpegtools-1.6.2-rc3 (1.6.1.92)
1635     dnl since many distros include mjpegtools specifically without mplex
1636     dnl and mpeg2enc, we check for mpeg2enc on its own, too.
1637     PKG_CHECK_MODULES(MPEG2ENC, mjpegtools >= 1.6.1.93, [
1638       dnl HACK because mpeg2enc 1.8.0 header files have a spurious 'include config.h'
1639       touch config.h
1640       dnl switch over to c++ to test things
1641       AC_LANG([C++])
1642       OLD_CPPFLAGS="$CPPFLAGS"
1643       dnl HACK as above
1644       CPPFLAGS_GOOD="$CPPFLAGS $MPEG2ENC_CFLAGS"
1645       CPPFLAGS="$CPPFLAGS_GOOD -I."
1646       dnl check headers
1647       mpeg2enc_headers_ok=no
1648       AC_CHECK_HEADER([mpeg2encoder.hh], [
1649         MPEG2ENC_LIBS="$MPEG2ENC_LIBS -lmpeg2encpp $LIBM $PTHREAD_LIBS"
1650         OLD_LIBS="$LIBS"
1651         LIBS="$LIBS $MPEG2ENC_LIBS"
1652         AC_MSG_CHECKING([for valid mpeg2enc objects])
1653         AC_RUN_IFELSE([AC_LANG_SOURCE([[
1654           #include <mpeg2encoder.hh>
1655           #include <mpeg2encoptions.hh>
1656
1657           int
1658           main (int   argc,
1659                 char *argv[])
1660           {
1661             MPEG2EncOptions *options = new MPEG2EncOptions ();
1662             MPEG2Encoder *encoder = new MPEG2Encoder (*options);
1663             return 0;
1664           }
1665         ]])],[
1666           AC_MSG_RESULT(yes)
1667           dnl so far so good, let's check more things:
1668           dnl mjpegtools-1.8.0 does not install the required
1669           dnl mpeg2syntaxcodes.h header by default, and a new release
1670           dnl is not in sight, so check for this oversight in case
1671           dnl distros or folks have fixed this themselves
1672           if test "$mjpegtools_api" -ge "10800"; then
1673             AC_CHECK_HEADER([mpeg2syntaxcodes.h], [
1674                 mpeg2enc_headers_ok=yes
1675               ], [
1676                 mpeg2enc_headers_ok=no
1677               ])
1678           else
1679             mpeg2enc_headers_ok=yes
1680           fi
1681           if test "x$mpeg2enc_headers_ok" = "xyes"; then
1682             HAVE_MPEG2ENC="yes"
1683           fi
1684           CPPFLAGS="$CPPFLAGS_GOOD"
1685           AC_SUBST(MPEG2ENC_CFLAGS)
1686           AC_SUBST(MPEG2ENC_LIBS)
1687         ],[
1688           AC_MSG_RESULT(no)
1689         ],[])
1690         LIBS="$OLD_LIBS"
1691       ])
1692
1693       CPPFLAGS="$OLD_CPPFLAGS"
1694       AC_LANG([C])
1695     ], [
1696       HAVE_MPEG2ENC="no"
1697     ])
1698   fi
1699 ])
1700
1701 dnl *** mplex ***
1702 translit(dnm, m, l) AM_CONDITIONAL(USE_MPLEX, true)
1703 AG_GST_CHECK_FEATURE(MPLEX, [mplex], mplex, [
1704   HAVE_MPLEX="no"
1705   dnl we require a c++ compiler for this one
1706   if [ test x$HAVE_CXX = xyes ]; then
1707     dnl libmplex was first included in mjpegtools-1.6.2-rc4 (1.6.1.93)
1708     dnl since many distros include mjpegtools specifically without mplex
1709     dnl and mpeg2enc, we check for mplex on its own, too.
1710     dnl libmplex < 1.9rc? has fuzzy ABI, valgrind and other problems
1711     PKG_CHECK_MODULES(MPLEX, mjpegtools >= 1.9.0, [
1712       dnl HACK because mplex 2.0.0 header files have a spurious 'include config.h'
1713       touch config.h
1714       dnl switch over to c++ to test things
1715       AC_LANG([C++])
1716       OLD_CPPFLAGS="$CPPFLAGS"
1717       dnl HACK as above
1718       CPPFLAGS_GOOD="$CPPFLAGS $MPLEX_CFLAGS"
1719       CPPFLAGS="$CPPFLAGS_GOOD -I."
1720       AC_CHECK_HEADER(interact.hpp, [
1721         MPLEX_LIBS="$MPLEX_LIBS -lmplex2 $LIBM"
1722         OLD_LIBS="$LIBS"
1723         LIBS="$LIBS $MPLEX_LIBS"
1724         OLD_LDFLAGS="$LDFLAGS"
1725         LDFLAGS="$LDFLAGS $MPLEX_LDFLAGS"
1726         dnl older libmplex uses off_t SegmentSize (), which leads to fuzzy ABI;
1727         dnl don't want this here
1728         AC_MSG_CHECKING([for valid mplex objects])
1729         AC_RUN_IFELSE([AC_LANG_SOURCE([[
1730
1731 #include <interact.hpp>
1732 #include <outputstrm.hpp>
1733 #include <multiplexor.hpp>
1734 int
1735 main (int   argc,
1736       char *argv[])
1737 {
1738   class TestOutputStream : public OutputStream {
1739   public:
1740     TestOutputStream () : OutputStream () { }
1741     void Write (uint8_t *a, unsigned int b) { }
1742     void NextSegment () { }
1743     uint64_t SegmentSize () { }
1744     void Close () { }
1745     int Open () { }
1746 };
1747   MultiplexJob *job = new MultiplexJob ();
1748   vector<IBitStream *> inputs;
1749   job->SetupInputStreams (inputs);
1750   TestOutputStream *out = new TestOutputStream ();
1751   Multiplexor *mux = new Multiplexor(*job, *out, NULL);
1752   return 0;
1753 }
1754         ]])],[
1755           HAVE_MPLEX="yes"
1756           CPPFLAGS="$CPPFLAGS_GOOD"
1757           AC_SUBST(MPLEX_CFLAGS)
1758           AC_SUBST(MPLEX_LIBS)
1759           AC_SUBST(MPLEX_LDFLAGS)
1760           AC_MSG_RESULT(yes)
1761         ],[AC_MSG_RESULT(no)],[])
1762         LIBS="$OLD_LIBS"
1763         LDFLAGS="$OLD_LDFLAGS"
1764       ])
1765       CPPFLAGS="$OLD_CPPFLAGS"
1766       AC_LANG([C])
1767     ], HAVE_MPLEX="no")
1768   fi
1769 ])
1770
1771 dnl *** musepack ***
1772 translit(dnm, m, l) AM_CONDITIONAL(USE_MUSEPACK, true)
1773 AG_GST_CHECK_FEATURE(MUSEPACK, [musepackdec], musepack, [
1774   AC_CHECK_HEADER([mpc/mpcdec.h], [
1775     HAVE_MUSEPACK="yes"
1776     MUSEPACK_LIBS="-lmpcdec"
1777     AC_SUBST(MUSEPACK_LIBS)
1778     ], [AC_CHECK_HEADER([mpcdec/mpcdec.h], [
1779       HAVE_MUSEPACK="yes"
1780       MUSEPACK_LIBS="-lmpcdec"
1781       AC_DEFINE(MPC_IS_OLD_API, 1, [Define if the old MusePack API is used])
1782       AC_SUBST(MUSEPACK_LIBS)
1783     ], [HAVE_MUSEPACK="no"])])
1784 ])
1785
1786 dnl *** neon ***
1787 translit(dnm, m, l) AM_CONDITIONAL(USE_NEON, true)
1788 AG_GST_CHECK_FEATURE(NEON, [neon http client plugins], neonhttpsrc, [
1789   PKG_CHECK_MODULES(NEON, neon >= 0.27.0  neon <= 0.30.99, HAVE_NEON="yes", [
1790     HAVE_NEON="no"
1791   ])
1792   AC_SUBST(NEON_CFLAGS)
1793   AC_SUBST(NEON_LIBS)
1794 ])
1795
1796 dnl *** ofa ***
1797 translit(dnm, m, l) AM_CONDITIONAL(USE_OFA, true)
1798 AG_GST_CHECK_FEATURE(OFA, [ofa plugins], ofa, [
1799   PKG_CHECK_MODULES(OFA, libofa >= 0.9.3, HAVE_OFA="yes", [
1800     HAVE_OFA="no"
1801   ])
1802   AC_SUBST(OFA_CFLAGS)
1803   AC_SUBST(OFA_LIBS)
1804 ])
1805
1806 dnl *** OpenAL ***
1807 translit(dnm, m, l) AM_CONDITIONAL(USE_OPENAL, true)
1808 AG_GST_CHECK_FEATURE(OPENAL, [OpenAL plugin], openal, [
1809   PKG_CHECK_MODULES(OPENAL, openal >= 1.14, HAVE_OPENAL="yes", [
1810     HAVE_OPENAL="no"
1811   ])
1812   AC_SUBST(OPENAL_CFLAGS)
1813   AC_SUBST(OPENAL_LIBS)
1814 ])
1815
1816 dnl *** opencv ***
1817 translit(dnm, m, l) AM_CONDITIONAL(USE_OPENCV, true)
1818 AG_GST_CHECK_FEATURE(OPENCV, [opencv plugins], opencv, [
1819   dnl we specify a max. version too because we set CV_NO_BACKWARD_COMPATIBILITY
1820   dnl and don't want the build to break when a new opencv version comes out.
1821   dnl Need to adjust this upwards once we know that our code compiles fine with
1822   dnl a new version and the no-backward-compatibility define. (There doesn't
1823   dnl seem to be a switch to suppress the warnings the cvcompat.h header
1824   dnl causes.)
1825   PKG_CHECK_MODULES(OPENCV, opencv >= 2.3.0 opencv < 3.5.0 , [
1826     AC_PROG_CXX
1827     AC_LANG([C++])
1828     OLD_CPPFLAGS=$CPPFLAGS
1829     CPPFLAGS=$OPENCV_CFLAGS
1830     something_not_found=no
1831     AC_CHECK_HEADERS([opencv2/core/core_c.h \
1832                       opencv2/core/version.hpp \
1833                       opencv2/highgui/highgui_c.h \
1834                       opencv2/imgproc/imgproc.hpp \
1835                       opencv2/imgproc/imgproc_c.h \
1836                       opencv2/objdetect/objdetect.hpp \
1837                       opencv2/video/background_segm.hpp], [], [something_not_found=yes])
1838
1839     dnl Only required for OpenCV >= 3, we have compat code for older versions
1840     PKG_CHECK_MODULES(OPENCV_3, opencv >= 3, [
1841       dnl check opencv_contrib headers (not always present in opencv distributions)
1842       AC_CHECK_HEADERS([opencv2/bgsegm.hpp], [], [something_not_found=yes])],
1843       [NOT_A_PROBLEM=yes])
1844
1845     CPPFLAGS=$OLD_CPPFLAGS
1846     AC_LANG([C])
1847
1848     if test $something_not_found = "yes"; then
1849       AC_MSG_RESULT([not all opencv2 headers were found])
1850       HAVE_OPENCV="no"
1851     else
1852       HAVE_OPENCV="yes"
1853     fi
1854   ], [
1855     HAVE_OPENCV="no"
1856   ])
1857   OPENCV_PREFIX="`$PKG_CONFIG --variable=prefix opencv`"
1858   AC_DEFINE_UNQUOTED(OPENCV_PREFIX, "$OPENCV_PREFIX", [opencv install prefix])
1859   AC_SUBST(OPENCV_PREFIX)
1860   AC_SUBST(OPENCV_CFLAGS)
1861   AC_SUBST(OPENCV_LIBS)
1862   dnl the OpenCV prefix is used at runtime for some object properties, and also
1863   dnl used here to detect which directory is the correct one. For the second
1864   dnl case, make sure the right sysroot is used, ensuring correct behavior
1865   dnl during cross compilation.
1866   if test -d "$PKG_CONFIG_SYSROOT_DIR/$OPENCV_PREFIX/share/opencv/"; then
1867     AC_DEFINE_UNQUOTED(OPENCV_PATH_NAME, ["opencv"], [OpenCV path name])
1868   else
1869     AC_DEFINE_UNQUOTED(OPENCV_PATH_NAME, ["OpenCV"], [OpenCV path name])
1870   fi
1871 ])
1872
1873 dnl *** OpenEXR ***
1874 translit(dnm, m, l) AM_CONDITIONAL(USE_OPENEXR, true)
1875 AG_GST_CHECK_FEATURE(OPENEXR, [openexr library], openexr, [
1876   AG_GST_PKG_CHECK_MODULES(OPENEXR, OpenEXR)
1877 ])
1878
1879 dnl *** openh264 ***
1880 translit(dnm, m, l) AM_CONDITIONAL(USE_OPENH264, true)
1881 AG_GST_CHECK_FEATURE(OPENH264, [openh264 library], openh264, [
1882   AG_GST_PKG_CHECK_MODULES(OPENH264, openh264 >= 1.3.0)
1883 ])
1884
1885 dnl *** OpenJPEG ***
1886 translit(dnm, m, l) AM_CONDITIONAL(USE_OPENJPEG, true)
1887 AG_GST_CHECK_FEATURE(OPENJPEG, [openjpeg library], openjpeg, [
1888   HAVE_OPENJPEG="no"
1889   AG_GST_PKG_CHECK_MODULES(OPENJPEG, libopenjp2 >= 2.1)
1890   if test x"$HAVE_OPENJPEG" != x"yes"; then
1891     # Fallback to v1.5
1892     OPENJPEG_LIBS=""
1893     PKG_CHECK_MODULES(OPENJPEG, libopenjpeg1,
1894       HAVE_OPENJPEG="yes",
1895       AG_GST_CHECK_LIBHEADER(OPENJPEG, openjpeg, opj_version, , openjpeg.h, OPENJPEG_LIBS="-lopenjpeg")
1896     )
1897     if test x"$HAVE_OPENJPEG" = x"yes"; then
1898       AC_DEFINE([HAVE_OPENJPEG_1], 1, [Define if OpenJPEG 1 is used])
1899     fi
1900   fi
1901   AC_SUBST(OPENJPEG_CFLAGS)
1902   AC_SUBST(OPENJPEG_LIBS)
1903 ])
1904
1905 dnl *** OpenMPT ***
1906 translit(dnm, m, l) AM_CONDITIONAL(USE_OPENMPT, true)
1907 AG_GST_CHECK_FEATURE(OPENMPT, openmpt, openmpt, [
1908   PKG_CHECK_MODULES(OPENMPT, libopenmpt, HAVE_OPENMPT="yes", HAVE_OPENMPT="no")
1909   AC_SUBST(OPENMPT_CFLAGS)
1910   AC_SUBST(OPENMPT_LIBS)
1911 ])
1912
1913 dnl *** OpenNI2 ***
1914 translit(dnm, m, l) AM_CONDITIONAL(USE_OPENNI2, true)
1915 AG_GST_CHECK_FEATURE(OPENNI2, [openni2 library], openni2, [
1916   PKG_CHECK_MODULES(OPENNI2, libopenni2 >= 0.26, HAVE_OPENNI2="yes", [ HAVE_OPENNI2="no" ] )
1917   AC_SUBST(OPENNI2_CFLAGS)
1918   AC_SUBST(OPENNI2_LIBS)
1919 ])
1920
1921 dnl *** Opus ***
1922 translit(dnm, m, l) AM_CONDITIONAL(USE_OPUS, true)
1923 AG_GST_CHECK_FEATURE(OPUS, [opus], opus, [
1924   PKG_CHECK_MODULES(OPUS, opus >= 0.9.4, [
1925           AC_DEFINE([HAVE_OPUS], 1, [Define if Opus >= 0.9.4 is installed])
1926           HAVE_OPUS="yes"
1927   ], [
1928           HAVE_OPUS="no"
1929   ])
1930   AC_SUBST(OPUS_CFLAGS)
1931   AC_SUBST(OPUS_LIBS)
1932 ])
1933
1934 dnl *** rsvg ***
1935 translit(dnm, m, l) AM_CONDITIONAL(USE_RSVG, true)
1936 AG_GST_CHECK_FEATURE(RSVG, [rsvg decoder], rsvg, [
1937   AG_GST_PKG_CHECK_MODULES(RSVG, librsvg-2.0 >= 2.36.2)
1938 ])
1939
1940 dnl *** gl ***
1941 HAVE_GL="no"
1942 translit(dnm, m, l) AM_CONDITIONAL(USE_GL, true)
1943 AG_GST_CHECK_FEATURE(GL, [gl elements], gl, [
1944   if test "x$HAVE_GST_GL" = "xyes"; then
1945     HAVE_GL="yes"
1946   fi
1947 ])
1948 AM_CONDITIONAL(USE_GL, test "x$HAVE_GL" = "xyes")
1949 AM_CONDITIONAL(USE_OPENGL, test "x$GST_GL_HAVE_API_GL" = "x1")
1950
1951 dnl *** Vulkan ***
1952 translit(dnm, m, l) AM_CONDITIONAL(USE_VULKAN, true)
1953 AG_GST_CHECK_FEATURE(VULKAN, [Vulkan elements], vulkan, [
1954   AC_CHECK_HEADER(vulkan/vulkan.h, [
1955     AC_CHECK_LIB(vulkan, vkCreateDevice, [
1956       VULKAN_LIBS="-lvulkan"
1957       AC_SUBST(VULKAN_LIBS)
1958       if test "x$GST_VULKAN_HAVE_WINDOW_XCB" = "x1"; then
1959         HAVE_VULKAN="yes"
1960       fi
1961       if test "x$GST_VULKAN_HAVE_WINDOW_WAYLAND" = "x1"; then
1962         HAVE_VULKAN="yes"
1963       fi
1964     ], [])
1965   ], [])
1966 ])
1967
1968 dnl *** teletextdec ***
1969 translit(dnm, m, l) AM_CONDITIONAL(USE_TELETEXTDEC, true)
1970 AG_GST_CHECK_FEATURE(TELETEXTDEC, [Teletext decoder], teletextdec, [
1971   AG_GST_PKG_CHECK_MODULES(TELETEXTDEC, zvbi-0.2)
1972  ])
1973
1974 dnl *** wildmidi ***
1975 translit(dnm, m, l) AM_CONDITIONAL(USE_WILDMIDI, true)
1976 AG_GST_CHECK_FEATURE(WILDMIDI, [wildmidi midi soft synth plugin], wildmidi, [
1977   AG_GST_CHECK_LIBHEADER(WILDMIDI, WildMidi,
1978                          WildMidi_Init, ,
1979                          wildmidi_lib.h,
1980                          WILDMIDI_LIBS="-lWildMidi")
1981   WILDMIDI_CFLAGS=
1982   WILDMIDI_LIBS=
1983   if test "x$HAVE_WILDMIDI" = "xyes"; then
1984     AC_MSG_CHECKING([for wildmidi >= 4.0])
1985     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <wildmidi_lib.h>]], [[
1986         #if LIBWILDMIDI_VER_MAJOR == 0 && LIBWILDMIDI_VER_MINOR < 4
1987         #error "wildmidi too old"
1988         #endif
1989     ]])], [ AC_MSG_RESULT(yes)
1990       HAVE_WILDMIDI="yes"
1991       WILDMIDI_CFLAGS=
1992       WILDMIDI_LIBS=-lWildMidi
1993     ], [ AC_MSG_RESULT(no)
1994       HAVE_WILDMIDI="no"
1995     ])
1996   else
1997     AC_MSG_WARN([WildMidi library or development headers not found])
1998   fi
1999   AC_SUBST(WILDMIDI_CFLAGS)
2000   AC_SUBST(WILDMIDI_LIBS)
2001 ])
2002
2003 dnl **** Smooth Streaming ****
2004 translit(dnm, m, l) AM_CONDITIONAL(USE_SMOOTHSTREAMING, true)
2005 AG_GST_CHECK_FEATURE(SMOOTHSTREAMING, [Smooth Streaming plug-in], smoothstreaming, [
2006   PKG_CHECK_MODULES(LIBXML2, libxml-2.0 >= 2.4,
2007     [HAVE_LIBXML2="yes"
2008      HAVE_SMOOTHSTREAMING="yes"],
2009     [HAVE_LIBXML2="no"
2010      HAVE_SMOOTHSTREAMING="no"])
2011   AC_SUBST(LIBXML2_CFLAGS)
2012   AC_SUBST(LIBXML2_LIBS)
2013 ])
2014
2015 dnl *** sndfile ***
2016 translit(dnm, m, l) AM_CONDITIONAL(USE_SNDFILE, true)
2017 AG_GST_CHECK_FEATURE(SNDFILE, [sndfile plug-in], sfdec sfenc, [
2018   PKG_CHECK_MODULES(SNDFILE, sndfile >= 1.0.16, HAVE_SNDFILE="yes", HAVE_SNDFILE="no")
2019   AC_SUBST(SNDFILE_CFLAGS)
2020   AC_SUBST(SNDFILE_LIBS)
2021 ])
2022
2023 dnl *** soundtouch ***
2024 translit(dnm, m, l) AM_CONDITIONAL(USE_SOUNDTOUCH, true)
2025 AG_GST_CHECK_FEATURE(SOUNDTOUCH, [soundtouch plug-in], soundtouch, [
2026   dnl We only need -lBPM on soundtouch < 1.4
2027   dnl We check for libSoundTouch since Debian used it before upstream
2028   dnl added a pkgconfig file.
2029   HAVE_SOUNDTOUCH_1_4=yes
2030   PKG_CHECK_MODULES(SOUNDTOUCH, soundtouch,
2031     [HAVE_SOUNDTOUCH=yes],
2032     [PKG_CHECK_MODULES(SOUNDTOUCH, soundtouch-1.4,
2033       [HAVE_SOUNDTOUCH=yes],
2034       [PKG_CHECK_MODULES(SOUNDTOUCH, soundtouch-1.0,
2035         [HAVE_SOUNDTOUCH=yes
2036           HAVE_SOUNDTOUCH_1_4=no
2037           SOUNDTOUCH_LIBS="$SOUNDTOUCH_LIBS -lBPM"],
2038         [PKG_CHECK_MODULES(SOUNDTOUCH, libSoundTouch >= 1.4,
2039           [HAVE_SOUNDTOUCH=yes],
2040           [PKG_CHECK_MODULES(SOUNDTOUCH, libSoundTouch,
2041             [HAVE_SOUNDTOUCH=yes
2042               HAVE_SOUNDTOUCH_1_4=no
2043               SOUNDTOUCH_LIBS="$SOUNDTOUCH_LIBS -lBPM"],
2044             HAVE_SOUNDTOUCH=no)])])])])
2045   AC_SUBST(SOUNDTOUCH_CFLAGS)
2046   AC_SUBST(SOUNDTOUCH_LIBS)
2047   if test "x$HAVE_CXX" != "xyes"; then
2048     USE_SOUNDTOUCH=false
2049     AC_MSG_NOTICE([Not building soundtouch plugin: no C++ compiler found])
2050   fi
2051   if test "x$HAVE_SOUNDTOUCH" = "xyes" -a "x$HAVE_SOUNDTOUCH_1_4" = "xyes"; then
2052      AC_DEFINE([HAVE_SOUNDTOUCH_1_4], [1],
2053          [Defined if the available libSoundTouch is >= 1.4])
2054   fi
2055 ])
2056
2057 dnl *** spc ***
2058 translit(dnm, m, l) AM_CONDITIONAL(USE_SPC, true)
2059 AG_GST_CHECK_FEATURE(SPC, [spc decoder], spc, [
2060   AC_CHECK_HEADER(openspc.h, [
2061     AC_CHECK_LIB(openspc, OSPC_Init, [
2062       SPC_LIBS="-lopenspc"
2063       AC_SUBST(SPC_LIBS)
2064       HAVE_SPC=yes
2065     ], [
2066       HAVE_SPC=no
2067     ])
2068   ], [
2069     HAVE_SPC=no
2070   ])
2071 ])
2072
2073 dnl *** gme ***
2074 translit(dnm, m, l) AM_CONDITIONAL(USE_GME, true)
2075 AG_GST_CHECK_FEATURE(GME, [gme decoder], gme, [
2076   AC_CHECK_HEADER(gme/gme.h, [
2077     AC_CHECK_LIB(gme, gme_new_emu, [
2078       GME_LIBS="-lgme"
2079       AC_SUBST(GME_LIBS)
2080       HAVE_GME=yes
2081     ], [
2082       HAVE_GME=no
2083     ])
2084   ], [
2085     HAVE_GME=no
2086   ])
2087
2088   if test "x$HAVE_GME" = "xyes"; then
2089     AC_CHECK_LIB(gme, gme_enable_accuracy, [
2090       AC_DEFINE(HAVE_LIBGME_ACCURACY, 1, [Define if gme 0.5.6 or newer is available])
2091       ])
2092   fi
2093 ])
2094
2095 dnl *** dvb ***
2096 translit(dnm, m, l) AM_CONDITIONAL(USE_DVB, true)
2097 AG_GST_CHECK_FEATURE(DVB, [DVB Source], dvb, [
2098   AC_MSG_CHECKING([Checking for up to date dvb installation])
2099   AC_CHECK_HEADER(linux/dvb/version.h, [
2100     AC_MSG_CHECKING([for up-to-date dvb API])
2101     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <linux/dvb/version.h>]], [[
2102         #if DVB_API_VERSION < 5 || (DVB_API_VERSION == 5 && DVB_API_VERSION_MINOR <= 4)
2103         #error "Incompatible dvb API"
2104         #endif
2105     ]])], [ AC_MSG_RESULT(yes)
2106       HAVE_DVB="yes"
2107     ], [ AC_MSG_RESULT(no)
2108       HAVE_DVB="no"
2109     ])
2110   ], [HAVE_DVB="no"])
2111 ])
2112
2113 dnl *** acm ***
2114 translit(dnm, m, l) AM_CONDITIONAL(USE_ACM, true)
2115 AG_GST_CHECK_FEATURE(ACM, [Windows ACM library], acm, [
2116   AC_MSG_CHECKING([Checking for ACM support])
2117   AC_CHECK_HEADERS([windows.h msacm.h],
2118       [HAVE_ACM="yes"
2119        AC_SUBST(ACMENC_CFLAGS)
2120        AC_SUBST(ACMMP3DEC_CFLAGS)
2121       ], [HAVE_ACM="no"],
2122       [AC_INCLUDES_DEFAULT
2123 #include <windows.h>])
2124 ])
2125
2126 dnl *** vdpau ***
2127 translit(dnm, m, l) AM_CONDITIONAL(USE_VDPAU, true)
2128 AG_GST_CHECK_FEATURE(VDPAU, [VDPAU], vdpau, [
2129   VDPAU_CFLAGS=
2130   VDPAU_LIBS=-lvdpau
2131   HAVE_VDPAU=no
2132
2133   PKG_CHECK_MODULES(VDPAU, vdpau, [HAVE_VDPAU="yes"],
2134   [
2135     if test "$HAVE_VDPAU" = "no"; then
2136       saved_CPPFLAGS="$CPPFLAGS"
2137       AC_CHECK_HEADER([vdpau/vdpau.h], [HAVE_VDPAU_H=yes])
2138
2139       if test -z "$HAVE_VDPAU_H"; then
2140         dnl Didn't find VDPAU header straight away.
2141         dnl Try /usr/include/nvidia. Need to clear caching vars first
2142         AC_MSG_NOTICE([VDPAU header not in standard path. Checking /usr/include/nvidia])
2143         unset ac_cv_header_vdpau_vdpau_h
2144         unset ac_cv_header_vdpau_vdpau_x11_h
2145         VDPAU_CFLAGS="-I/usr/include/nvidia"
2146         VDPAU_LIBS="-L/usr/lib/nvidia -lvdpau"
2147         CPPFLAGS="$VDPAU_CFLAGS $saved_CPPFLAGS"
2148         AC_CHECK_HEADER([vdpau/vdpau.h], [HAVE_VDPAU_H=yes])
2149       fi
2150
2151       AC_CHECK_HEADER([vdpau/vdpau_x11.h], [HAVE_VDPAU_X11_H=yes])
2152
2153       if test "x$HAVE_VDPAU_H" = "xyes" -a "x$HAVE_VDPAU_X11_H" = "xyes"; then
2154         dnl Found the headers - look for the lib
2155         AC_MSG_NOTICE([VDPAU headers found. Checking libraries])
2156         saved_LIBS="$LIBS"
2157         LIBS="$VDPAU_LIBS $saved_LIBS"
2158         AC_CHECK_LIB(vdpau,vdp_device_create_x11,[HAVE_VDPAU="yes"])
2159         LIBS="$saved_LIBS"
2160       fi
2161     fi
2162   ])
2163
2164   if test "$HAVE_VDPAU" = "yes"; then
2165     AC_MSG_NOTICE([Found up to date VDPAU installation])
2166     AC_SUBST(VDPAU_CFLAGS)
2167     AC_SUBST(VDPAU_LIBS)
2168   fi
2169 ])
2170
2171 dnl *** sbc ***
2172 translit(dnm, m, l) AM_CONDITIONAL(USE_SBC, true)
2173 AG_GST_CHECK_FEATURE(SBC, [SBC bluetooth audio codec], sbc, [
2174   AG_GST_PKG_CHECK_MODULES(SBC, [sbc >= 1.0])
2175 ])
2176
2177 dnl *** schroedinger ***
2178 translit(dnm, m, l) AM_CONDITIONAL(USE_SCHRO, true)
2179 AG_GST_CHECK_FEATURE(SCHRO, [Schroedinger video codec], schro, [
2180   AG_GST_PKG_CHECK_MODULES(SCHRO, schroedinger-1.0 >= 1.0.10)
2181 ])
2182
2183 dnl *** zbar ***
2184 translit(dnm, m, l) AM_CONDITIONAL(USE_ZBAR, true)
2185 AG_GST_CHECK_FEATURE(ZBAR, [ZBar barcode detector], zbar, [
2186   AG_GST_PKG_CHECK_MODULES(ZBAR, zbar >= 0.9)
2187 ])
2188
2189 dnl *** rtmp ***
2190 translit(dnm, m, l) AM_CONDITIONAL(USE_RTMP, true)
2191 AG_GST_CHECK_FEATURE(RTMP, [rtmp library], rtmp, [
2192   AG_GST_PKG_CHECK_MODULES(RTMP, librtmp)
2193 ])
2194
2195 dnl *** spandsp ***
2196 translit(dnm, m, l) AM_CONDITIONAL(USE_SPANDSP, true)
2197 AG_GST_CHECK_FEATURE(SPANDSP, [Spandsp], spandsp, [
2198   PKG_CHECK_MODULES(SPANDSP, spandsp >= 0.0.6, [
2199     HAVE_SPANDSP="yes" ], [
2200     HAVE_SPANDSP="no"
2201   ])
2202 ])
2203 AC_SUBST(SPANDSP_CFLAGS)
2204 AC_SUBST(SPANDSP_LIBS)
2205
2206 dnl *** hls-crypto ***
2207 AC_ARG_WITH([hls-crypto],
2208   AS_HELP_STRING([--with-hls-crypto=auto|nettle|libgcrypt|openssl], [
2209     which cryptographic library version to compile against for hls (default: auto)
2210   ]), [
2211     AS_CASE([$with_hls_crypto],
2212       [nettle],[],
2213       [libgcrypt],[],
2214       [openssl],[],
2215       [with_hls_crypto=auto]
2216     )
2217   ]
2218 )
2219
2220 dnl *** hls ***
2221 translit(dnm, m, l) AM_CONDITIONAL(USE_HLS, true)
2222 AG_GST_CHECK_FEATURE(HLS, [http live streaming plugin], hls, [
2223   AS_CASE([$with_hls_crypto],
2224     [nettle], [
2225       PKG_CHECK_MODULES(NETTLE, nettle, [
2226         AC_DEFINE(HAVE_NETTLE, 1, [Define if nettle is available])
2227         HAVE_HLS="yes"
2228       ],[AC_MSG_ERROR([Could not find nettle library])])
2229     ],
2230     [libgcrypt], [
2231       AM_PATH_LIBGCRYPT([1.2.0], [
2232         AC_DEFINE(HAVE_LIBGCRYPT, 1, [Define if libgcrypt is available])
2233         HAVE_HLS="yes"
2234       ],[AC_MSG_ERROR([Could not find libgcrypt library])])
2235     ],
2236     [openssl], [
2237       PKG_CHECK_MODULES(OPENSSL, openssl, [
2238         AC_DEFINE(HAVE_OPENSSL, 1, [Define if openssl is available])
2239         HAVE_HLS="yes"
2240       ],[AC_MSG_ERROR([Could not find openssl library])])
2241     ],
2242     [
2243       dnl Try to find a valid crypto library
2244       PKG_CHECK_MODULES(NETTLE, nettle, [
2245         AC_DEFINE(HAVE_NETTLE, 1, [Define if nettle is available])
2246         HAVE_HLS="yes"
2247       ],[
2248         AM_PATH_LIBGCRYPT([1.2.0], [
2249           AC_DEFINE(HAVE_LIBGCRYPT, 1, [Define if libgcrypt is available])
2250           HAVE_HLS="yes"
2251         ],[
2252           PKG_CHECK_MODULES(OPENSSL, openssl, [
2253             AC_DEFINE(HAVE_OPENSSL, 1, [Define if openssl is available])
2254             HAVE_HLS="yes"
2255           ],[
2256             HAVE_HLS="no"
2257           ])
2258         ])
2259       ])
2260     ]
2261   )
2262 ])
2263
2264 dnl *** x265 (H.265/HEVC encoder) ***
2265 translit(dnm, m, l) AM_CONDITIONAL(USE_X265, true)
2266 AG_GST_CHECK_FEATURE(X265, [x265 plug-in], x265, [
2267   AG_GST_PKG_CHECK_MODULES(X265, x265)
2268 ])
2269
2270 dnl *** WebRTC Audio Processing ***
2271 dnl Note: We test for a specific version as there is no API stability
2272 translit(dnm, m, l) AM_CONDITIONAL(USE_WEBRTCDSP, true)
2273 AG_GST_CHECK_FEATURE(WEBRTCDSP, [WebRTC Audio Processing], webrtcdsp, [
2274
2275   AG_GST_PKG_CHECK_MODULES(WEBRTCDSP, webrtc-audio-processing >= 0.2 webrtc-audio-processing < 0.4)
2276
2277   # On Android, C++ headers comes with the STL implementation
2278   AS_CASE(["${host}"],
2279     [*android*],
2280       [
2281         PKG_CHECK_MODULES(GNUSTL, gnustl, [
2282           WEBRTCDSP_CFLAGS="$WEBRTCDSP_CFLAGS $GNUSTL_CFLAGS"
2283           WEBRTCDSP_LIBS="$WEBRTCDSP_LIBS $GNUSTL_LIBS"])
2284       ])
2285   AC_SUBST([WEBRTCDSP_CFLAGS])
2286   AC_SUBST([WEBRTCDSP_LIBS])
2287
2288   AC_LANG_PUSH([C++])
2289   old_CPPFLAGS=$CPPFLAGS
2290   CPPFLAGS="-std=c++11 $CPPFLAGS $GNUSTL_CFLAGS"
2291   AC_CHECK_HEADER([vector],[],[HAVE_WEBRTCDSP=no])
2292   CPPFLAGS=$old_CPPFLAGS
2293   AC_LANG_POP([C++])
2294 ])
2295
2296 dnl *** WebRTC ***
2297 translit(dnm, m, l) AM_CONDITIONAL(USE_WEBRTC, true)
2298 AG_GST_CHECK_FEATURE(WEBRTC, [WebRTC], webrtc, [
2299   PKG_CHECK_MODULES(NICE, nice >= 0.1, [
2300     HAVE_WEBRTC="yes" ], [
2301     HAVE_WEBRTC="no"
2302   ])
2303 ])
2304
2305 else
2306
2307 dnl not building plugins with external dependencies,
2308 dnl but we still need to set the conditionals
2309
2310 AM_CONDITIONAL(USE_ASSRENDER, false)
2311 AM_CONDITIONAL(USE_AOM, false)
2312 AM_CONDITIONAL(USE_VOAMRWBENC, false)
2313 AM_CONDITIONAL(USE_VOAACENC, false)
2314 AM_CONDITIONAL(USE_BS2B, false)
2315 AM_CONDITIONAL(USE_BZ2, false)
2316 AM_CONDITIONAL(USE_CHROMAPRINT, false)
2317 AM_CONDITIONAL(USE_CURL, false)
2318 AM_CONDITIONAL(USE_SSH2, false)
2319 AM_CONDITIONAL(USE_DASH, false)
2320 AM_CONDITIONAL(USE_DC1394, false)
2321 AM_CONDITIONAL(USE_DECKLINK, false)
2322 AM_CONDITIONAL(DECKLINK_OSX, false)
2323 AM_CONDITIONAL(DECKLINK_WIN, false)
2324 AM_CONDITIONAL(USE_DIRECTFB, false)
2325 AM_CONDITIONAL(USE_WAYLAND, false)
2326 AM_CONDITIONAL(USE_DAALA, false)
2327 AM_CONDITIONAL(USE_DTS, false)
2328 AM_CONDITIONAL(USE_EXIF, false)
2329 AM_CONDITIONAL(USE_RESINDVD, false)
2330 AM_CONDITIONAL(USE_FAAC, false)
2331 AM_CONDITIONAL(USE_FAAD, false)
2332 AM_CONDITIONAL(USE_FBDEV, false)
2333 AM_CONDITIONAL(USE_FDK_AAC, false)
2334 AM_CONDITIONAL(USE_FLITE, false)
2335 AM_CONDITIONAL(USE_FLUIDSYNTH, false)
2336 AM_CONDITIONAL(USE_GL, false)
2337 AM_CONDITIONAL(USE_GSM, false)
2338 AM_CONDITIONAL(USE_HLS, false)
2339 AM_CONDITIONAL(USE_IQA, false)
2340 AM_CONDITIONAL(USE_KATE, false)
2341 AM_CONDITIONAL(USE_KMS, false)
2342 AM_CONDITIONAL(USE_TIGER, false)
2343 AM_CONDITIONAL(USE_LADSPA, false)
2344 AM_CONDITIONAL(USE_LCMS2, false)
2345 AM_CONDITIONAL(USE_LV2, false)
2346 AM_CONDITIONAL(USE_LIBDE265, false)
2347 AM_CONDITIONAL(USE_LIBMMS, false)
2348 AM_CONDITIONAL(USE_MODPLUG, false)
2349 AM_CONDITIONAL(USE_MPEG2ENC, false)
2350 AM_CONDITIONAL(USE_MPLEX, false)
2351 AM_CONDITIONAL(USE_MUSEPACK, false)
2352 AM_CONDITIONAL(USE_NEON, false)
2353 AM_CONDITIONAL(USE_OFA, false)
2354 AM_CONDITIONAL(USE_OPENAL, false)
2355 AM_CONDITIONAL(USE_OPENCV, false)
2356 AM_CONDITIONAL(USE_OPENEXR, false)
2357 AM_CONDITIONAL(USE_OPENGL, false)
2358 AM_CONDITIONAL(USE_OPENJPEG, false)
2359 AM_CONDITIONAL(USE_OPENMPT, false)
2360 AM_CONDITIONAL(USE_OPENNI2, false)
2361 AM_CONDITIONAL(USE_OPUS, false)
2362 AM_CONDITIONAL(USE_WILDMIDI, false)
2363 AM_CONDITIONAL(USE_SMOOTHSTREAMING, false)
2364 AM_CONDITIONAL(USE_SNDFILE, false)
2365 AM_CONDITIONAL(USE_SOUNDTOUCH, false)
2366 AM_CONDITIONAL(USE_SPANDSP, false)
2367 AM_CONDITIONAL(USE_SPC, false)
2368 AM_CONDITIONAL(USE_SRTP, false)
2369 AM_CONDITIONAL(USE_SRT, false)
2370 AM_CONDITIONAL(USE_GME, false)
2371 AM_CONDITIONAL(USE_DVB, false)
2372 AM_CONDITIONAL(USE_ACM, false)
2373 AM_CONDITIONAL(USE_VDPAU, false)
2374 AM_CONDITIONAL(USE_SBC, false)
2375 AM_CONDITIONAL(USE_SCHRO, false)
2376 AM_CONDITIONAL(USE_ZBAR, false)
2377 AM_CONDITIONAL(USE_RSVG, false)
2378 AM_CONDITIONAL(USE_RTMP, false)
2379 AM_CONDITIONAL(USE_TELETEXTDEC, false)
2380 AM_CONDITIONAL(USE_UVCH264, false)
2381 AM_CONDITIONAL(USE_WEBP, false)
2382 AM_CONDITIONAL(USE_WEBRTC, false)
2383 AM_CONDITIONAL(USE_WEBRTCDSP, false)
2384 AM_CONDITIONAL(USE_OPENH264, false)
2385 AM_CONDITIONAL(USE_X265, false)
2386 AM_CONDITIONAL(USE_DTLS, false)
2387 AM_CONDITIONAL(USE_VULKAN, false)
2388 AM_CONDITIONAL(USE_TTML, false)
2389
2390 fi dnl of EXT plugins
2391
2392 dnl *** finalize CFLAGS, LDFLAGS, LIBS
2393
2394 dnl Overview:
2395 dnl GST_OPTION_CFLAGS:  common flags for profiling, debugging, errors, ...
2396 dnl GST_*:              flags shared by built objects to link against GStreamer
2397 dnl GST_ALL_LDFLAGS:    linker flags shared by all
2398 dnl GST_LIB_LDFLAGS:    additional linker flags for all libaries
2399 dnl GST_LT_LDFLAGS:     library versioning of our libraries
2400 dnl GST_PLUGIN_LDFLAGS: flags to be used for all plugins
2401
2402 dnl GST_OPTION_CFLAGS
2403 if test "x$USE_DEBUG" = xyes; then
2404    PROFILE_CFLAGS="-g"
2405 fi
2406 AC_SUBST(PROFILE_CFLAGS)
2407
2408 if test "x$PACKAGE_VERSION_NANO" = "x1"; then
2409   dnl Define _only_ during CVS (not pre-releases or releases)
2410   DEPRECATED_CFLAGS="-DGST_DISABLE_DEPRECATED"
2411 else
2412   DEPRECATED_CFLAGS=""
2413 fi
2414 AC_SUBST(DEPRECATED_CFLAGS)
2415
2416 VISIBILITY_CFLAGS=""
2417 AS_COMPILER_FLAG([-fvisibility=hidden], [VISIBILITY_CFLAGS="-fvisibility=hidden"])
2418 AC_SUBST(VISIBILITY_CFLAGS)
2419
2420 VISIBILITY_CXXFLAGS=""
2421 if test "x$HAVE_CXX" = "xyes"; then
2422   AS_CXX_COMPILER_FLAG([-fvisibility=hidden], [VISIBILITY_CXXFLAGS="-fvisibility=hidden"])
2423 fi
2424 AC_SUBST(VISIBILITY_CXXFLAGS)
2425
2426 dnl disable strict aliasing
2427 AS_COMPILER_FLAG([-fno-strict-aliasing], [EXTRA_CFLAGS="-fno-strict-aliasing"])
2428 AC_SUBST(EXTRA_CFLAGS)
2429
2430 dnl every flag in GST_OPTION_CFLAGS and GST_OPTION_CXXFLAGS can be overridden
2431 dnl at make time with e.g. make ERROR_CFLAGS=""
2432 GST_OPTION_CFLAGS="\$(WARNING_CFLAGS) \$(ERROR_CFLAGS) \$(DEBUG_CFLAGS) \$(PROFILE_CFLAGS) \$(GCOV_CFLAGS) \$(OPT_CFLAGS) \$(DEPRECATED_CFLAGS)"
2433 GST_OPTION_CXXFLAGS="\$(WARNING_CXXFLAGS) \$(ERROR_CXXFLAGS) \$(DEBUG_CFLAGS) \$(PROFILE_CFLAGS) \$(GCOV_CFLAGS) \$(OPT_CFLAGS) \$(DEPRECATED_CFLAGS)"
2434 GST_OPTION_OBJCFLAGS="\$(WARNING_OBJCFLAGS) \$(ERROR_OBJCFLAGS) \$(DEBUG_CFLAGS) \$(PROFILE_CFLAGS) \$(GCOV_CFLAGS) \$(OPT_CFLAGS) \$(DEPRECATED_CFLAGS)"
2435 AC_SUBST(GST_OPTION_CFLAGS)
2436 AC_SUBST(GST_OPTION_CXXFLAGS)
2437 AC_SUBST(GST_OPTION_OBJCFLAGS)
2438
2439 dnl FIXME: do we want to rename to GST_ALL_* ?
2440 dnl prefer internal headers to already installed ones
2441 dnl also add builddir include for enumtypes and marshal
2442 dnl add GST_OPTION_CFLAGS, but overridable
2443 GST_CFLAGS="$GST_CFLAGS $GST_STATIC_CFLAGS -DGST_USE_UNSTABLE_API"
2444 GST_CXXFLAGS="$GST_CFLAGS $EXTRA_CFLAGS $GLIB_EXTRA_CFLAGS \$(GST_OPTION_CXXFLAGS) \$(VISIBILITY_CXXFLAGS)"
2445 GST_OBJCFLAGS="$GST_CFLAGS $EXTRA_CFLAGS $GLIB_EXTRA_CFLAGS \$(GST_OPTION_OBJCFLAGS) \$(VISIBILITY_CFLAGS)"
2446 GST_CFLAGS="$GST_CFLAGS $EXTRA_CFLAGS $GLIB_EXTRA_CFLAGS \$(GST_OPTION_CFLAGS) \$(VISIBILITY_CFLAGS)"
2447 AC_SUBST(GST_CFLAGS)
2448 AC_SUBST(GST_CXXFLAGS)
2449 AC_SUBST(GST_OBJCFLAGS)
2450 AC_SUBST(GST_LIBS)
2451 GST_PLUGINS_BAD_CXXFLAGS="-I\$(top_srcdir)/gst-libs -I\$(top_builddir)/gst-libs"
2452 GST_PLUGINS_BAD_OBJCFLAGS="-I\$(top_srcdir)/gst-libs -I\$(top_builddir)/gst-libs"
2453 GST_PLUGINS_BAD_CFLAGS="-I\$(top_srcdir)/gst-libs -I\$(top_builddir)/gst-libs"
2454 AC_SUBST(GST_PLUGINS_BAD_CFLAGS)
2455 AC_SUBST(GST_PLUGINS_BAD_CXXFLAGS)
2456 AC_SUBST(GST_PLUGINS_BAD_OBJCFLAGS)
2457
2458 dnl LDFLAGS really should only contain flags, not libs - they get added before
2459 dnl whatevertarget_LIBS and -L flags here affect the rest of the linking
2460 GST_ALL_LDFLAGS="-no-undefined"
2461 if test "x${enable_Bsymbolic}" = "xyes"; then
2462   GST_ALL_LDFLAGS="$GST_ALL_LDFLAGS -Wl,-Bsymbolic-functions"
2463 fi
2464 AC_SUBST(GST_ALL_LDFLAGS)
2465
2466 dnl GST_LIB_LDFLAGS
2467 dnl linker flags shared by all libraries
2468 dnl LDFLAGS modifier defining exported symbols from built libraries
2469 dnl (export _gst_foo but not __gst_foo)
2470 GST_LIB_LDFLAGS=""
2471 AC_SUBST(GST_LIB_LDFLAGS)
2472
2473 dnl this really should only contain flags, not libs - they get added before
2474 dnl whatevertarget_LIBS and -L flags here affect the rest of the linking
2475 GST_PLUGIN_LDFLAGS="-module -avoid-version $GST_ALL_LDFLAGS"
2476 AC_SUBST(GST_PLUGIN_LDFLAGS)
2477
2478 dnl *** output files ***
2479
2480 $MKDIR_P tests/check/orc
2481
2482 dnl po/Makefile.in
2483
2484 AC_CONFIG_FILES(
2485 Makefile
2486 common/Makefile
2487 common/m4/Makefile
2488 gst/Makefile
2489 gst/accurip/Makefile
2490 gst/adpcmdec/Makefile
2491 gst/adpcmenc/Makefile
2492 gst/aiff/Makefile
2493 gst/videoframe_audiolevel/Makefile
2494 gst/asfmux/Makefile
2495 gst/audiobuffersplit/Makefile
2496 gst/audiofxbad/Makefile
2497 gst/audiomixmatrix/Makefile
2498 gst/audiovisualizers/Makefile
2499 gst/autoconvert/Makefile
2500 gst/bayer/Makefile
2501 gst/camerabin2/Makefile
2502 gst/coloreffects/Makefile
2503 gst/debugutils/Makefile
2504 gst/dvbsuboverlay/Makefile
2505 gst/dvdspu/Makefile
2506 gst/faceoverlay/Makefile
2507 gst/festival/Makefile
2508 gst/fieldanalysis/Makefile
2509 gst/freeverb/Makefile
2510 gst/frei0r/Makefile
2511 gst/gaudieffects/Makefile
2512 gst/geometrictransform/Makefile
2513 gst/gdp/Makefile
2514 gst/id3tag/Makefile
2515 gst/inter/Makefile
2516 gst/interlace/Makefile
2517 gst/ivfparse/Makefile
2518 gst/ivtc/Makefile
2519 gst/jp2kdecimator/Makefile
2520 gst/jpegformat/Makefile
2521 gst/librfb/Makefile
2522 gst/midi/Makefile
2523 gst/mpegdemux/Makefile
2524 gst/mpegtsdemux/Makefile
2525 gst/mpegtsmux/Makefile
2526 gst/mpegtsmux/tsmux/Makefile
2527 gst/mpegpsmux/Makefile
2528 gst/mxf/Makefile
2529 gst/netsim/Makefile
2530 gst/onvif/Makefile
2531 gst/pcapparse/Makefile
2532 gst/pnm/Makefile
2533 gst/proxy/Makefile
2534 gst/rawparse/Makefile
2535 gst/removesilence/Makefile
2536 gst/sdp/Makefile
2537 gst/segmentclip/Makefile
2538 gst/siren/Makefile
2539 gst/smooth/Makefile
2540 gst/speed/Makefile
2541 gst/subenc/Makefile
2542 gst/stereo/Makefile
2543 gst/timecode/Makefile
2544 gst/videofilters/Makefile
2545 gst/videoparsers/Makefile
2546 gst/videosignal/Makefile
2547 gst/vmnc/Makefile
2548 gst/y4m/Makefile
2549 gst/yadif/Makefile
2550 gst/compositor/Makefile
2551 gst-libs/Makefile
2552 gst-libs/gst/Makefile
2553 gst-libs/gst/adaptivedemux/Makefile
2554 gst-libs/gst/basecamerabinsrc/Makefile
2555 gst-libs/gst/insertbin/Makefile
2556 gst-libs/gst/interfaces/Makefile
2557 gst-libs/gst/isoff/Makefile
2558 gst-libs/gst/codecparsers/Makefile
2559 gst-libs/gst/mpegts/Makefile
2560 gst-libs/gst/uridownloader/Makefile
2561 gst-libs/gst/wayland/Makefile
2562 gst-libs/gst/webrtc/Makefile
2563 gst-libs/gst/player/Makefile
2564 gst-libs/gst/video/Makefile
2565 gst-libs/gst/audio/Makefile
2566 gst-libs/gst/opencv/Makefile
2567 sys/Makefile
2568 sys/dshowdecwrapper/Makefile
2569 sys/acmenc/Makefile
2570 sys/acmmp3dec/Makefile
2571 sys/androidmedia/Makefile
2572 sys/applemedia/Makefile
2573 sys/bluez/Makefile
2574 sys/d3dvideosink/Makefile
2575 sys/decklink/Makefile
2576 sys/directsound/Makefile
2577 sys/dshowsrcwrapper/Makefile
2578 sys/dshowvideosink/Makefile
2579 sys/dvb/Makefile
2580 sys/fbdev/Makefile
2581 sys/ipcpipeline/Makefile
2582 sys/kms/Makefile
2583 sys/msdk/Makefile
2584 sys/nvdec/Makefile
2585 sys/nvenc/Makefile
2586 sys/opensles/Makefile
2587 sys/shm/Makefile
2588 sys/tinyalsa/Makefile
2589 sys/uvch264/Makefile
2590 sys/vcd/Makefile
2591 sys/vdpau/Makefile
2592 sys/wasapi/Makefile
2593 sys/winks/Makefile
2594 sys/winscreencap/Makefile
2595 tests/Makefile
2596 tests/check/Makefile
2597 tests/files/Makefile
2598 tests/examples/Makefile
2599 tests/examples/avsamplesink/Makefile
2600 tests/examples/camerabin2/Makefile
2601 tests/examples/codecparsers/Makefile
2602 tests/examples/compositor/Makefile
2603 tests/examples/directfb/Makefile
2604 tests/examples/audiomixmatrix/Makefile
2605 tests/examples/ipcpipeline/Makefile
2606 tests/examples/mpegts/Makefile
2607 tests/examples/mxf/Makefile
2608 tests/examples/opencv/Makefile
2609 tests/examples/uvch264/Makefile
2610 tests/examples/waylandsink/Makefile
2611 tests/examples/webrtc/Makefile
2612 tests/icles/Makefile
2613 ext/voamrwbenc/Makefile
2614 ext/voaacenc/Makefile
2615 ext/assrender/Makefile
2616 ext/aom/Makefile
2617 ext/bs2b/Makefile
2618 ext/bz2/Makefile
2619 ext/chromaprint/Makefile
2620 ext/colormanagement/Makefile
2621 ext/curl/Makefile
2622 ext/dash/Makefile
2623 ext/dc1394/Makefile
2624 ext/directfb/Makefile
2625 ext/wayland/Makefile
2626 ext/daala/Makefile
2627 ext/dts/Makefile
2628 ext/faac/Makefile
2629 ext/faad/Makefile
2630 ext/fdkaac/Makefile
2631 ext/flite/Makefile
2632 ext/fluidsynth/Makefile
2633 ext/gl/Makefile
2634 ext/gsm/Makefile
2635 ext/hls/Makefile
2636 ext/iqa/Makefile
2637 ext/kate/Makefile
2638 ext/ladspa/Makefile
2639 ext/lv2/Makefile
2640 ext/libde265/Makefile
2641 ext/libmms/Makefile
2642 ext/Makefile
2643 ext/modplug/Makefile
2644 ext/mpeg2enc/Makefile
2645 ext/mplex/Makefile
2646 ext/musepack/Makefile
2647 ext/neon/Makefile
2648 ext/ofa/Makefile
2649 ext/openal/Makefile
2650 ext/opencv/Makefile
2651 ext/openexr/Makefile
2652 ext/openh264/Makefile
2653 ext/openjpeg/Makefile
2654 ext/openmpt/Makefile
2655 ext/openni2/Makefile
2656 ext/opus/Makefile
2657 ext/rsvg/Makefile
2658 ext/resindvd/Makefile
2659 ext/rtmp/Makefile
2660 ext/sbc/Makefile
2661 ext/schroedinger/Makefile
2662 ext/smoothstreaming/Makefile
2663 ext/sndfile/Makefile
2664 ext/soundtouch/Makefile
2665 ext/spandsp/Makefile
2666 ext/srt/Makefile
2667 ext/srtp/Makefile
2668 ext/teletextdec/Makefile
2669 ext/gme/Makefile
2670 ext/spc/Makefile
2671 ext/wildmidi/Makefile
2672 ext/vulkan/Makefile
2673 ext/vulkan/xcb/Makefile
2674 ext/vulkan/wayland/Makefile
2675 ext/webp/Makefile
2676 ext/x265/Makefile
2677 ext/zbar/Makefile
2678 ext/dtls/Makefile
2679 ext/webrtc/Makefile
2680 ext/webrtcdsp/Makefile
2681 ext/ttml/Makefile
2682 po/Makefile.in
2683 docs/Makefile
2684 docs/plugins/Makefile
2685 docs/libs/Makefile
2686 docs/version.entities
2687 pkgconfig/Makefile
2688 pkgconfig/gstreamer-plugins-bad.pc
2689 pkgconfig/gstreamer-plugins-bad-uninstalled.pc
2690 pkgconfig/gstreamer-codecparsers.pc
2691 pkgconfig/gstreamer-codecparsers-uninstalled.pc
2692 pkgconfig/gstreamer-insertbin.pc
2693 pkgconfig/gstreamer-insertbin-uninstalled.pc
2694 pkgconfig/gstreamer-mpegts.pc
2695 pkgconfig/gstreamer-mpegts-uninstalled.pc
2696 pkgconfig/gstreamer-player.pc
2697 pkgconfig/gstreamer-player-uninstalled.pc
2698 pkgconfig/gstreamer-wayland.pc
2699 pkgconfig/gstreamer-wayland-uninstalled.pc
2700 pkgconfig/gstreamer-webrtc.pc
2701 pkgconfig/gstreamer-webrtc-uninstalled.pc
2702 pkgconfig/gstreamer-bad-video.pc
2703 pkgconfig/gstreamer-bad-video-uninstalled.pc
2704 pkgconfig/gstreamer-bad-audio.pc
2705 pkgconfig/gstreamer-bad-audio-uninstalled.pc
2706 tools/Makefile
2707 m4/Makefile
2708 )
2709
2710 AC_OUTPUT
2711
2712 AG_GST_OUTPUT_PLUGINS
2713 ORC_OUTPUT
2714