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