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