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