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