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