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