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