configure: Remove unused Mali EGL/fbdev_window support
[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.11.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, 1101, 0, 1101)
55
56 dnl *** required versions of GStreamer stuff ***
57 GST_REQ=1.11.1.1
58 GSTPB_REQ=1.11.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])
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 checks for gstreamer
190 dnl uninstalled is selected preferentially -- see pkg-config(1)
191 AG_GST_CHECK_GST($GST_API_VERSION, [$GST_REQ], yes)
192 AG_GST_CHECK_GST_BASE($GST_API_VERSION, [$GST_REQ], yes)
193 AG_GST_CHECK_GST_CHECK($GST_API_VERSION, [$GST_REQ], no)
194 AG_GST_CHECK_GST_CONTROLLER($GST_API_VERSION, [$GST_REQ], yes)
195 AG_GST_CHECK_GST_NET($GST_API_VERSION, [$GST_REQ], yes)
196 AG_GST_PKG_CHECK_MODULES(GST_VIDEO, gstreamer-video-[$GST_API_VERSION], [$GST_REQ], yes)
197 AG_GST_PKG_CHECK_MODULES(GST_AUDIO, gstreamer-audio-[$GST_API_VERSION], [$GST_REQ], yes)
198 AG_GST_PKG_CHECK_MODULES(GST_PBUTILS, gstreamer-pbutils-[$GST_API_VERSION], [$GST_REQ], yes)
199
200 AM_CONDITIONAL(HAVE_GST_CHECK, test "x$HAVE_GST_CHECK" = "xyes")
201
202 AG_GST_CHECK_GST_PLUGINS_BASE($GST_API_VERSION, [$GSTPB_REQ], yes)
203
204 dnl check for uninstalled plugin directories for unit tests
205 AG_GST_CHECK_UNINSTALLED_SETUP([
206   AG_GST_CHECK_GST_PLUGINS_GOOD($GST_API_VERSION, [0.11.0])
207   AG_GST_CHECK_GST_PLUGINS_UGLY($GST_API_VERSION, [0.11.0])
208   AG_GST_CHECK_GST_PLUGINS_LIBAV($GST_API_VERSION, [0.11.0])
209 ])
210
211 dnl Check for documentation xrefs
212 GLIB_PREFIX="`$PKG_CONFIG --variable=prefix glib-2.0`"
213 GST_PREFIX="`$PKG_CONFIG --variable=prefix gstreamer-$GST_API_VERSION`"
214 GSTPB_PREFIX="`$PKG_CONFIG --variable=prefix gstreamer-plugins-base-$GST_API_VERSION`"
215 AC_SUBST(GLIB_PREFIX)
216 AC_SUBST(GST_PREFIX)
217 AC_SUBST(GSTPB_PREFIX)
218
219 dnl GTK is optional and used in examples
220 HAVE_GTK=NO
221 GTK2_REQ=2.14.0
222 GTK3_REQ=2.91.3
223 if test "x$BUILD_EXAMPLES" = "xyes"; then
224   AC_MSG_CHECKING([which gtk+ version to compile examples against (optional)])
225   AC_ARG_WITH([gtk],
226     AS_HELP_STRING([--with-gtk=3.0|2.0],[which gtk+ version to compile against (default: 2.0)]),
227     [case "$with_gtk" in
228         2.0) GTK_REQ=$GTK2_REQ ;;
229         3.0) GTK_REQ=$GTK3_REQ ;;
230         *) AC_MSG_ERROR([invalid gtk+ version specified]);;
231     esac],
232     [with_gtk=2.0
233      GTK_REQ=$GTK2_REQ])
234   AC_MSG_RESULT([$with_gtk (>= $GTK_REQ)])
235   PKG_CHECK_MODULES(GTK, gtk+-x11-$with_gtk >= $GTK_REQ, HAVE_GTK=yes, HAVE_GTK=no)
236   AC_SUBST(GTK_LIBS)
237   AC_SUBST(GTK_CFLAGS)
238 fi
239 AM_CONDITIONAL(HAVE_GTK, test "x$HAVE_GTK" = "xyes")
240
241 dnl Check for -Bsymbolic-functions linker flag used to avoid
242 dnl intra-library PLT jumps, if available.
243 AC_ARG_ENABLE(Bsymbolic,
244               [AS_HELP_STRING([--disable-Bsymbolic],[avoid linking with -Bsymbolic])],,
245               [SAVED_LDFLAGS="${LDFLAGS}" SAVED_LIBS="${LIBS}"
246                AC_MSG_CHECKING([for -Bsymbolic-functions linker flag])
247                LDFLAGS=-Wl,-Bsymbolic-functions
248                LIBS=
249                AC_TRY_LINK([], [return 0],
250                            AC_MSG_RESULT(yes)
251                            enable_Bsymbolic=yes,
252                            AC_MSG_RESULT(no)
253                            enable_Bsymbolic=no)
254                LDFLAGS="${SAVED_LDFLAGS}" LIBS="${SAVED_LIBS}"])
255
256 dnl *** set variables based on configure arguments ***
257
258 dnl GTK is optional and used in examples
259 HAVE_GTK3=NO
260 if test "x$BUILD_EXAMPLES" = "xyes"; then
261   PKG_CHECK_MODULES(GTK3, gtk+-3.0 >= 3.4, HAVE_GTK3=yes, HAVE_GTK3=no)
262   if test "x$HAVE_GTK3" = "xyes"; then
263     HAVE_GTK=yes
264     GTK_VERSION=`$PKG_CONFIG --variable=gtk_binary_version gtk+-3.0`
265     AC_SUBST(GTK_VERSION)
266     GTK_PREFIX=`$PKG_CONFIG --variable=prefix gdk-pixbuf-2.0`
267     AC_SUBST(GTK_BASE_DIR)
268   fi
269 fi
270 AC_SUBST(GTK3_LIBS)
271 AC_SUBST(GTK3_CFLAGS)
272 AC_SUBST(HAVE_GTK3)
273 AM_CONDITIONAL(HAVE_GTK3, test "x$HAVE_GTK3" = "xyes")
274
275 dnl clutter is optional and used in examples
276 HAVE_CLUTTER=no
277 HAVE_CLUTTER_X11=no
278 HAVE_CLUTTER_GLX=no
279 if test "x$BUILD_EXAMPLES" = "xyes"; then
280   PKG_CHECK_MODULES(CLUTTER, clutter-1.0 >= 1.8, HAVE_CLUTTER=yes, HAVE_CLUTTER=no)
281   AC_SUBST(CLUTTER_LIBS)
282   AC_SUBST(CLUTTER_CFLAGS)
283   AC_SUBST(HAVE_CLUTTER)
284
285   PKG_CHECK_MODULES(CLUTTER_GLX, clutter-glx-1.0 >= 1.8, HAVE_CLUTTER_GLX=yes, HAVE_CLUTTER_GLX=no)
286   AC_SUBST(CLUTTER_GLX_LIBS)
287   AC_SUBST(CLUTTER_GLX_CFLAGS)
288   AC_SUBST(HAVE_CLUTTER_GLX)
289
290   PKG_CHECK_MODULES(CLUTTER_X11, clutter-x11-1.0 >= 1.8, HAVE_CLUTTER_X11=yes, HAVE_CLUTTER_X11=no)
291   AC_SUBST(CLUTTER_X11_LIBS)
292   AC_SUBST(CLUTTER_X11_CFLAGS)
293   AC_SUBST(HAVE_CLUTTER_X11)
294 fi
295 AM_CONDITIONAL(HAVE_CLUTTER, test "x$HAVE_CLUTTER" = "xyes")
296 AM_CONDITIONAL(HAVE_CLUTTER_GLX, test "x$HAVE_CLUTTER_GLX" = "xyes")
297 AM_CONDITIONAL(HAVE_CLUTTER_X11, test "x$HAVE_CLUTTER_X11" = "xyes")
298
299 dnl used in the gl/clutteractor example
300 if test "x$BUILD_EXAMPLES" = "xyes"; then
301   PKG_CHECK_MODULES(XCOMPOSITE, xcomposite, HAVE_XCOMPOSITE=yes, HAVE_XCOMPOSITE=no)
302   AC_SUBST(XCOMPOSITE_CFLAGS)
303   AC_SUBST(XCOMPOSITE_LIBS)
304 fi
305 AM_CONDITIONAL(HAVE_XCOMPOSITE, test "x$HAVE_XCOMPOSITE" = "xyes")
306
307 dnl graphene-1.0 is optional and used in gltransformation
308 HAVE_GRAPHENE=NO
309 PKG_CHECK_MODULES(GRAPHENE, graphene-1.0 >= 1.4.0, HAVE_GRAPHENE=yes, HAVE_GRAPHENE=no)
310 if test "x$HAVE_GRAPHENE" = "xyes"; then
311   AC_DEFINE(HAVE_GRAPHENE, [1] , [Use graphene])
312 fi
313 AC_SUBST(HAVE_GRAPHENE)
314 AC_SUBST(GRAPHENE_LIBS)
315 AC_SUBST(GRAPHENE_CFLAGS)
316 AM_CONDITIONAL(HAVE_GRAPHENE, test "x$HAVE_GRAPHENE" = "xyes")
317
318
319 dnl sdl is optional and used in examples
320 HAVE_SDL=NO
321 if test "x$BUILD_EXAMPLES" = "xyes"; then
322   PKG_CHECK_MODULES(SDL, sdl >= 1.2.0, HAVE_SDL=yes, HAVE_SDL=no)
323   AC_SUBST(SDL_LIBS)
324   AC_SUBST(SDL_CFLAGS)
325   AC_SUBST(SDL_CLUTTER)
326 fi
327 AM_CONDITIONAL(HAVE_SDL, test "x$HAVE_SDL" = "xyes")
328
329
330 dnl Needed for GtkBuilder to autoconnect signals
331 PKG_CHECK_MODULES(GMODULE_EXPORT, gmodule-export-2.0, HAVE_GMODULE_EXPORT=yes, HAVE_GMODULE_EXPORT=no)
332
333 dnl Needed by plugins that use g_module_*() API
334 PKG_CHECK_MODULES(GMODULE_NO_EXPORT, gmodule-no-export-2.0)
335
336 dnl x11 is optional for librfb
337 HAVE_X11=NO
338 PKG_CHECK_MODULES(X11, x11, HAVE_X11=yes, HAVE_X11=no)
339 AC_SUBST(X11_LIBS)
340 AC_SUBST(X11_CFLAGS)
341 AC_SUBST(HAVE_X11)
342 AM_CONDITIONAL(HAVE_X11, test "x$HAVE_X11" = "xyes")
343 if test "x$HAVE_X11" = "xyes"; then
344   AC_DEFINE(HAVE_X11, 1, [Define if you have X11 library])
345 fi
346
347 dnl exif (used on jifmux tests) ****
348 PKG_CHECK_MODULES(EXIF, libexif >= 0.6.16, HAVE_EXIF="yes", HAVE_EXIF="no")
349 AC_SUBST(EXIF_LIBS)
350 AC_SUBST(EXIF_CFLAGS)
351 AM_CONDITIONAL(USE_EXIF, test "x$HAVE_EXIF" = "xyes")
352
353 AG_GST_CHECK_FEATURE(IQA, [iqa], iqa , [
354   PKG_CHECK_MODULES(DSSIM, dssim, [
355     HAVE_DSSIM="yes"
356     HAVE_IQA="yes"
357   ], [
358     HAVE_DSSIM="no"
359     HAVE_IQA="no"
360   ])
361
362   if test "x$HAVE_DSSIM" = "xyes"; then
363     AC_DEFINE(HAVE_DSSIM, 1, [Define if you have dssim library])
364   fi
365   AC_SUBST(DSSIM_LIBS)
366   AC_SUBST(DSSIM_CFLAGS)
367 ])
368 AM_CONDITIONAL(HAVE_DSSIM, test "x$HAVE_DSSIM" = "xyes")
369
370 dnl Orc
371 ORC_CHECK([0.4.17])
372
373 dnl set license and copyright notice
374 GST_LICENSE="LGPL"
375 AC_DEFINE_UNQUOTED(GST_LICENSE, "$GST_LICENSE", [GStreamer license])
376 AC_SUBST(GST_LICENSE)
377
378 dnl define LIBDIR so we can inform people where we live
379 AS_AC_EXPAND(LIBDIR, $libdir)
380 AC_DEFINE_UNQUOTED(LIBDIR, "$LIBDIR", [library dir])
381
382 dnl set location of plugin directory
383 AG_GST_SET_PLUGINDIR
384
385 dnl set release date/time
386 AG_GST_SET_PACKAGE_RELEASE_DATETIME_WITH_NANO([$PACKAGE_VERSION_NANO],
387   ["${srcdir}/gst-plugins-bad.doap"],
388   [$PACKAGE_VERSION_MAJOR.$PACKAGE_VERSION_MINOR.$PACKAGE_VERSION_MICRO])
389
390 dnl build static plugins or not
391 AC_MSG_CHECKING([whether to build static plugins or not])
392 AC_ARG_ENABLE(
393   static-plugins,
394   AC_HELP_STRING(
395     [--enable-static-plugins],
396     [build static plugins @<:@default=no@:>@]),
397   [AS_CASE(
398     [$enableval], [no], [], [yes], [],
399     [AC_MSG_ERROR([bad value "$enableval" for --enable-static-plugins])])],
400   [enable_static_plugins=no])
401 AC_MSG_RESULT([$enable_static_plugins])
402 if test "x$enable_static_plugins" = xyes; then
403   AC_DEFINE(GST_PLUGIN_BUILD_STATIC, 1,
404     [Define if static plugins should be built])
405   GST_PLUGIN_LIBTOOLFLAGS=""
406 else
407   GST_PLUGIN_LIBTOOLFLAGS="--tag=disable-static"
408 fi
409 AC_SUBST(GST_PLUGIN_LIBTOOLFLAGS)
410 AM_CONDITIONAL(GST_PLUGIN_BUILD_STATIC, test "x$enable_static_plugins" = "xyes")
411
412 dnl If only building static libraries, define GST_STATIC_COMPILATION. This is
413 dnl needed only on Windows, but it doesn't hurt to have it everywhere.
414 if test x$enable_static = xyes -a x$enable_shared = xno; then
415   GST_STATIC_CFLAGS="-DGST_STATIC_COMPILATION"
416 fi
417
418 AC_ARG_WITH([player-tests],
419   AS_HELP_STRING([--with-player-tests],[Enable GstPlayer tests that need network access (default: no)]))
420 if test x$with_player_tests = xyes; then
421   AC_PATH_PROG([WGET], [wget], no)
422   if test x$WGET = xno; then
423     AC_MSG_WARN([wget required for GstPlayer tests but not found - disabling])
424     with_player_tests=no
425   fi
426 fi
427 AM_CONDITIONAL(WITH_GST_PLAYER_TESTS, test "x$with_player_tests" = "xyes")
428
429 # set by AG_GST_PARSE_SUBSYSTEM_DISABLES above
430 dnl make sure it doesn't complain about unused variables if debugging is disabled
431 NO_WARNINGS=""
432 AG_GST_CHECK_GST_DEBUG_DISABLED([NO_WARNINGS="-Wno-unused"], [NO_WARNINGS=""])
433
434 dnl define an ERROR_CFLAGS Makefile variable
435 dnl -Waggregate-return - libexif returns aggregates
436 dnl -Wundef - Windows headers check _MSC_VER unconditionally
437 AG_GST_SET_ERROR_CFLAGS($FATAL_WARNINGS, [
438     -Wmissing-declarations -Wmissing-prototypes -Wredundant-decls
439     -Wwrite-strings -Wformat-security -Wold-style-definition
440     -Winit-self -Wmissing-include-dirs -Waddress -Wno-multichar
441     -Wnested-externs $NO_WARNINGS])
442
443 dnl define an ERROR_CXXFLAGS Makefile variable
444 AG_GST_SET_ERROR_CXXFLAGS($FATAL_WARNINGS, [
445     -Wmissing-declarations -Wredundant-decls
446     -Wwrite-strings -Wformat-nonliteral -Wformat-security
447     -Winit-self -Wmissing-include-dirs -Waddress -Wno-multichar $NO_WARNINGS])
448
449 dnl define an ERROR_OBJCFLAGS Makefile variable
450 AG_GST_SET_ERROR_OBJCFLAGS($FATAL_WARNINGS, [
451     -Wmissing-declarations -Wredundant-decls
452     -Wwrite-strings -Wformat-nonliteral -Wformat-security
453     -Winit-self -Wmissing-include-dirs -Wno-multichar $NO_WARNINGS])
454
455 dnl define correct level for debugging messages
456 AG_GST_SET_LEVEL_DEFAULT($GST_GIT)
457
458 dnl used in examples
459 AG_GST_DEFAULT_ELEMENTS
460
461 dnl *** plug-ins to include ***
462
463 dnl these are all the gst plug-ins, compilable without additional libs
464 AG_GST_CHECK_PLUGIN(accurip)
465 AG_GST_CHECK_PLUGIN(adpcmdec)
466 AG_GST_CHECK_PLUGIN(adpcmenc)
467 AG_GST_CHECK_PLUGIN(aiff)
468 AG_GST_CHECK_PLUGIN(videoframe_audiolevel)
469 AG_GST_CHECK_PLUGIN(asfmux)
470 AG_GST_CHECK_PLUGIN(audiobuffersplit)
471 AG_GST_CHECK_PLUGIN(audiofxbad)
472 AG_GST_CHECK_PLUGIN(audiomixer)
473 AG_GST_CHECK_PLUGIN(compositor)
474 AG_GST_CHECK_PLUGIN(audiovisualizers)
475 AG_GST_CHECK_PLUGIN(autoconvert)
476 AG_GST_CHECK_PLUGIN(bayer)
477 AG_GST_CHECK_PLUGIN(camerabin2)
478 AG_GST_CHECK_PLUGIN(coloreffects)
479 AG_GST_CHECK_PLUGIN(debugutils)
480 AG_GST_CHECK_PLUGIN(dvbsuboverlay)
481 AG_GST_CHECK_PLUGIN(dvdspu)
482 AG_GST_CHECK_PLUGIN(festival)
483 AG_GST_CHECK_PLUGIN(fieldanalysis)
484 AG_GST_CHECK_PLUGIN(freeverb)
485 AG_GST_CHECK_PLUGIN(frei0r)
486 AG_GST_CHECK_PLUGIN(gaudieffects)
487 AG_GST_CHECK_PLUGIN(geometrictransform)
488 AG_GST_CHECK_PLUGIN(gdp)
489 AG_GST_CHECK_PLUGIN(id3tag)
490 AG_GST_CHECK_PLUGIN(inter)
491 AG_GST_CHECK_PLUGIN(interlace)
492 AG_GST_CHECK_PLUGIN(ivfparse)
493 AG_GST_CHECK_PLUGIN(ivtc)
494 AG_GST_CHECK_PLUGIN(jp2kdecimator)
495 AG_GST_CHECK_PLUGIN(jpegformat)
496 AG_GST_CHECK_PLUGIN(librfb)
497 AG_GST_CHECK_PLUGIN(midi)
498 AG_GST_CHECK_PLUGIN(mpegdemux)
499 AG_GST_CHECK_PLUGIN(mpegtsdemux)
500 AG_GST_CHECK_PLUGIN(mpegtsmux)
501 AG_GST_CHECK_PLUGIN(mpegpsmux)
502 AG_GST_CHECK_PLUGIN(mxf)
503 AG_GST_CHECK_PLUGIN(netsim)
504 AG_GST_CHECK_PLUGIN(onvif)
505 AG_GST_CHECK_PLUGIN(pcapparse)
506 AG_GST_CHECK_PLUGIN(pnm)
507 AG_GST_CHECK_PLUGIN(rawparse)
508 AG_GST_CHECK_PLUGIN(removesilence)
509 AG_GST_CHECK_PLUGIN(sdp)
510 AG_GST_CHECK_PLUGIN(segmentclip)
511 AG_GST_CHECK_PLUGIN(siren)
512 AG_GST_CHECK_PLUGIN(smooth)
513 AG_GST_CHECK_PLUGIN(speed)
514 AG_GST_CHECK_PLUGIN(subenc)
515 AG_GST_CHECK_PLUGIN(stereo)
516 AG_GST_CHECK_PLUGIN(timecode)
517 AG_GST_CHECK_PLUGIN(videofilters)
518 AG_GST_CHECK_PLUGIN(videoparsers)
519 AG_GST_CHECK_PLUGIN(videosignal)
520 AG_GST_CHECK_PLUGIN(vmnc)
521 AG_GST_CHECK_PLUGIN(y4m)
522 AG_GST_CHECK_PLUGIN(yadif)
523
524 dnl *** plug-ins to exclude ***
525
526 AC_CHECK_HEADER(AVFoundation/AVFoundation.h, HAVE_AVFOUNDATION="yes", HAVE_AVFOUNDATION="no", [-])
527 AC_CHECK_HEADER(MobileCoreServices/MobileCoreServices.h, HAVE_IOS="yes", HAVE_IOS="no", [-])
528 AC_CHECK_HEADER(VideoToolbox/VideoToolbox.h, HAVE_VIDEOTOOLBOX="yes", HAVE_VIDEOTOOLBOX="no", [-])
529 AC_CHECK_HEADER(QTKit/QTKit.h, HAVE_QTKIT="yes", HAVE_QTKIT="no", [-])
530
531 if test "x$HAVE_VIDEOTOOLBOX" = "xyes"; then
532   old_LIBS=$LIBS
533   LIBS="$LIBS -framework VideoToolbox"
534   AC_CHECK_FUNC(VTCompressionSessionPrepareToEncodeFrames, [
535     AC_DEFINE(HAVE_VIDEOTOOLBOX_10_9_6, 1, [Define if building with VideoToolbox >= 10.9.6])
536   ], [
537   ])
538   LIBS=$old_LIBS
539 fi
540
541 AM_CONDITIONAL(HAVE_AVFOUNDATION, test "x$HAVE_AVFOUNDATION" = "xyes")
542 if test "x$HAVE_AVFOUNDATION" = "xyes"; then
543   AC_DEFINE(HAVE_AVFOUNDATION, 1, [Define if building with AVFoundation])
544 fi
545
546 AM_CONDITIONAL(HAVE_IOS, test "x$HAVE_IOS" = "xyes")
547 if test "x$HAVE_IOS" = "xyes"; then
548   AC_DEFINE(HAVE_IOS, 1, [Define if building for Apple iOS])
549 fi
550
551 AM_CONDITIONAL(HAVE_VIDEOTOOLBOX, test "x$HAVE_VIDEOTOOLBOX" = "xyes")
552 if test "x$HAVE_VIDEOTOOLBOX" = "xyes"; then
553   AC_DEFINE(HAVE_VIDEOTOOLBOX, 1, [Define if building with VideoToolbox])
554 fi
555
556 AM_CONDITIONAL(HAVE_QTKIT, test "x$HAVE_QTKIT" = "xyes")
557 if test "x$HAVE_QTKIT" = "xyes"; then
558   AC_DEFINE(HAVE_QTKIT, 1, [Define if building with QTKit])
559 fi
560 dnl disable gst plugins we might not be able to build on this
561 dnl platform: (ugly but minimally invasive)
562 dnl FIXME: maybe move to sys, or make work with winsock2
563 AC_CHECK_HEADERS([sys/socket.h], HAVE_SYS_SOCKET_H=yes)
564 AC_CHECK_HEADERS([winsock2.h], HAVE_WINSOCK2_H=yes)
565
566 if test "x$HAVE_WINSOCK2_H" = "xyes"; then
567   WINSOCK2_LIBS="-lws2_32"
568   AC_SUBST(WINSOCK2_LIBS)
569 fi
570
571 dnl *** opengl ***
572 AC_ARG_ENABLE([opengl],
573      [  --enable-opengl         Enable Desktop OpenGL support @<:@default=auto@:>@],
574      [case "${enableval}" in
575        yes)  NEED_GL=yes ;;
576        no)   NEED_GL=no ;;
577        auto) NEED_GL=auto ;;
578        *) AC_MSG_ERROR([bad value ${enableval} for --enable-opengl]) ;;
579      esac],[NEED_GL=auto])
580
581 AC_ARG_WITH([opengl-module-name],
582   AS_HELP_STRING([--with-opengl-module-name],[library module name for OpenGL (default: libGL)]))
583 if test x$with_opengl_module_name != x; then
584   AC_DEFINE_UNQUOTED(GST_GL_LIBGL_MODULE_NAME, "$with_opengl_module_name", [OpenGL module name])
585 fi
586
587 AC_ARG_ENABLE([gles2],
588      [  --enable-gles2          Enable OpenGL|ES 2.0 support @<:@default=auto@:>@],
589      [case "${enableval}" in
590        yes)  NEED_GLES2=yes ;;
591        no)   NEED_GLES2=no ;;
592        auto) NEED_GLES2=auto ;;
593        *) AC_MSG_ERROR([bad value ${enableval} for --enable-gles2]) ;;
594      esac],[NEED_GLES2=auto])
595
596 AC_ARG_WITH([gles2-module-name],
597   AS_HELP_STRING([--with-gles2-module-name],[library module name for GLES2 (default: libGLESv2)]))
598 if test x$with_gles2_module_name != x; then
599   AC_DEFINE_UNQUOTED(GST_GL_LIBGLESV2_MODULE_NAME, "$with_gles2_module_name", [GLES2 module name])
600 fi
601
602 AC_ARG_ENABLE([egl],
603      [  --enable-egl            Enable EGL support @<:@default=auto@:>@],
604      [case "${enableval}" in
605        yes)  NEED_EGL=yes ;;
606        no)   NEED_EGL=no ;;
607        auto) NEED_EGL=auto ;;
608        *) AC_MSG_ERROR([bad value ${enableval} for --enable-egl]) ;;
609      esac],[NEED_EGL=auto])
610
611 AC_ARG_WITH([egl-module-name],
612   AS_HELP_STRING([--with-egl-module-name],[library module name for EGL (default: libEGL)]))
613 if test x$with_egl_module_name != x; then
614   AC_DEFINE_UNQUOTED(GST_GL_LIBEGL_MODULE_NAME, "$with_egl_module_name", [EGL module name])
615 fi
616
617 AC_ARG_ENABLE([wgl],
618      [  --enable-wgl            Enable WGL support @<:@default=auto@:>@],
619      [case "${enableval}" in
620        yes)  NEED_WGL=yes ;;
621        no)   NEED_WGL=no ;;
622        auto) NEED_WGL=auto ;;
623        *) AC_MSG_ERROR([bad value ${enableval} for --enable-wgl]) ;;
624      esac],[NEED_WGL=auto])
625
626 AC_ARG_ENABLE([glx],
627      [  --enable-glx            Enable GLX support @<:@default=auto@:>@],
628      [case "${enableval}" in
629        yes)  NEED_GLX=yes ;;
630        no)   NEED_GLX=no ;;
631        auto) NEED_GLX=auto ;;
632        *) AC_MSG_ERROR([bad value ${enableval} for --enable-glx]) ;;
633      esac],[NEED_GLX=auto])
634
635 AC_ARG_ENABLE([cocoa],
636      [  --enable-cocoa          Enable Cocoa support @<:@default=auto@:>@],
637      [case "${enableval}" in
638        yes)  NEED_COCOA=yes ;;
639        no)   NEED_COCOA=no ;;
640        auto) NEED_COCOA=auto ;;
641        *) AC_MSG_ERROR([bad value ${enableval} for --enable-cocoa]) ;;
642      esac],[NEED_COCOA=auto])
643
644 AC_ARG_ENABLE([x11],
645      [  --enable-x11            Enable x11 support @<:@default=auto@:>@],
646      [case "${enableval}" in
647        yes)  NEED_X11=yes ;;
648        no)   NEED_X11=no ;;
649        auto) NEED_X11=auto ;;
650        *) AC_MSG_ERROR([bad value ${enableval} for --enable-x11]) ;;
651      esac],[NEED_X11=auto])
652
653 AC_ARG_ENABLE([wayland],
654      [  --enable-wayland        Enable Wayland support (requires EGL) @<:@default=auto@:>@],
655      [case "${enableval}" in
656        yes)  NEED_WAYLAND_EGL=yes ;;
657        no)   NEED_WAYLAND_EGL=no ;;
658        auto) NEED_WAYLAND_EGL=auto ;;
659        *) AC_MSG_ERROR([bad value ${enableval} for --enable-wayland]) ;;
660      esac],[NEED_WAYLAND_EGL=auto])
661
662 AC_ARG_ENABLE([dispmanx],
663      [  --enable-dispmanx        Enable Dispmanx support (requires EGL) @<:@default=auto@:>@],
664      [case "${enableval}" in
665        yes)  NEED_DISPMANX=yes ;;
666        no)   NEED_DISPMANX=no ;;
667        auto) NEED_DISPMANX=auto ;;
668        *) AC_MSG_ERROR([bad value ${enableval} for --enable-dispmanx]) ;;
669      esac],[NEED_DISPMANX=auto])
670
671 AG_GST_PKG_CHECK_MODULES(X11_XCB, x11-xcb)
672 save_CPPFLAGS="$CPPFLAGS"
673 save_LIBS="$LIBS"
674
675 HAVE_GL=no
676 HAVE_GLES2=no
677 HAVE_GLES3_H=no
678 HAVE_WAYLAND_EGL=no
679
680 HAVE_EGL_RPI=no
681
682 case $host in
683   *-mingw32* )
684     LIBS="$LIBS -lgdi32"
685     AG_GST_CHECK_LIBHEADER(GL, opengl32, glTexImage2D,, GL/gl.h)
686     AC_CHECK_HEADER(GL/wglext.h, HAVE_WGLEXT="yes", HAVE_WGLEXT="no", [#include <GL/gl.h>])
687     if test "x$HAVE_WGLEXT" = "xyes"; then
688       HAVE_WGL=yes
689       HAVE_GL=yes
690     fi
691   ;;
692   *)
693     if test "x$NEED_GL" != "xno"; then
694       AG_GST_PKG_CHECK_MODULES(GL, gl)
695       if test "x$HAVE_GL" != "xyes"; then
696         AG_GST_CHECK_LIBHEADER(GL, GL, glTexImage2D,, GL/gl.h)
697       fi
698     fi
699     if test "x$NEED_GLES2" != "xno"; then
700       AG_GST_PKG_CHECK_MODULES(GLES2, glesv2)
701       if test "x$HAVE_GLES2" != "xyes"; then
702         AG_GST_CHECK_LIBHEADER(GLES2, GLESv2, glTexImage2D,, GLES2/gl2.h)
703       fi
704       AC_CHECK_HEADER([GLES3/gl3.h], [HAVE_GLES3_H=yes])
705     fi
706     if test "x$NEED_EGL" != "xno"; then
707       AG_GST_PKG_CHECK_MODULES(EGL, egl)
708       if test "x$HAVE_EGL" != "xyes"; then
709         AG_GST_CHECK_LIBHEADER(EGL, EGL, eglGetError,, EGL/egl.h)
710       fi
711     fi
712
713     old_LIBS=$LIBS
714     old_CFLAGS=$CFLAGS
715
716     dnl FIXME: EGL of RPi depends on GLESv1 or GLESv2
717     dnl FIXME: GLESv2 of RPi depends on EGL... WTF!
718     LIBS="$LIBS -lvcos -lvchiq_arm"
719     AC_CHECK_LIB([bcm_host], [bcm_host_init],
720       [
721         LIBS="$LIBS -lbcm_host"
722         AC_CHECK_HEADER(bcm_host.h,
723           [
724             LIBS="$LIBS -lGLESv2"
725             AC_CHECK_LIB([EGL], [eglGetProcAddress],
726               [
727                 LIBS="$LIBS -lEGL"
728                 AC_CHECK_HEADER([EGL/egl.h],
729                   [
730                     AC_CHECK_LIB([GLESv2], [glEnable],
731                       [
732                         AC_CHECK_HEADER([GLES2/gl2.h],
733                           [
734                             HAVE_EGL=yes
735                             HAVE_GLES2=yes
736                             HAVE_EGL_RPI=yes
737                             EGL_LIBS="-lbcm_host -lvcos -lvchiq_arm"
738                             EGL_CFLAGS=""
739                             AC_DEFINE(USE_EGL_RPI, [1], [Use RPi platform])
740                           ])
741                       ])
742                   ])
743               ])
744           ])
745       ])
746
747     LIBS=$old_LIBS
748     CFLAGS=$old_CFLAGS
749
750     PKG_CHECK_MODULES(WAYLAND_EGL, wayland-client >= 1.0 wayland-cursor >= 1.0 wayland-egl >= 9.0, HAVE_WAYLAND_EGL=yes, HAVE_WAYLAND_EGL=no)
751
752     # OS X and iOS always have GL available
753     case $host in
754       *-darwin*)
755         if test "x$HAVE_IOS" = "xyes"; then
756           HAVE_GLES2=yes
757         else
758           HAVE_GL=yes
759         fi
760       ;;
761     esac
762   ;;
763 esac
764
765 CPPFLAGS="$save_CPPFLAGS"
766 LIBS="$save_LIBS"
767
768 USE_OPENGL=no
769 USE_GLES2=no
770 USE_GLX=no
771 USE_COCOA=no
772 USE_WGL=no
773 USE_X11=no
774 USE_EAGL=no
775 GL_LIBS=
776 GL_CFLAGS=
777 GL_OBJCFLAGS=
778
779 dnl Check for what the user asked for and what we could find
780 if test "x$HAVE_EGL" = "xno"; then
781   if test "x$NEED_EGL" = "xyes"; then
782     AC_MSG_ERROR([Could not find the required EGL libraries])
783   fi
784 fi
785
786 if test "x$HAVE_GL" = "xno"; then
787   if test "x$NEED_GL" = "xyes"; then
788     AC_MSG_ERROR([Could not find the required OpenGL libraries])
789   fi
790 fi
791
792 if test "x$HAVE_GLES2" = "xno"; then
793   if test "x$NEED_GLES2" = "xyes"; then
794     AC_MSG_ERROR([Could not find the required OpenGL|ES 2.0 libraries])
795   fi
796 fi
797
798 dnl X, GLX and OpenGL
799 if test "x$HAVE_X11_XCB" = "xno"; then
800   if test "x$NEED_GLX" = "xyes"; then
801     AC_MSG_ERROR([Building the GLX backend without X11 is unsupported])
802   fi
803   if test "x$NEED_X11" = "xyes"; then
804     AC_MSG_ERROR([Could not find X11 development libraries])
805   fi
806 else
807   if test "x$NEED_GL" != "xno"; then
808     if test "x$HAVE_GL" = "xno"; then
809       if test "x$NEED_GLX" = "xyes"; then
810         AC_MSG_ERROR([Building the GLX backend without the OpenGL backend is unsupported])
811       fi
812     else dnl HAVE_GL=yes
813       USE_OPENGL=yes
814       if test "x$NEED_GLX" != "xno"; then
815         USE_GLX=yes
816       fi
817     fi
818   fi
819 fi
820
821 dnl check for DMABUF support
822 HAVE_DRM_FOURCC_HEADER=no
823 AC_CHECK_HEADER(libdrm/drm_fourcc.h,
824   HAVE_DRM_FOURCC_HEADER=yes, )
825
826 HAVE_GST_ALLOCATORS=no
827 PKG_CHECK_MODULES(GST_ALLOCATORS, gstreamer-allocators-1.0,
828   HAVE_GST_ALLOCATORS=yes, )
829
830 GST_GL_HAVE_DMABUF=0
831 if test "x$HAVE_DRM_FOURCC_HEADER" = "xyes" -a \
832         "x$HAVE_GST_ALLOCATORS" = "xyes" -a \
833         "x$HAVE_EGL" = "xyes"; then
834           GST_GL_HAVE_DMABUF=1
835 fi
836
837 dnl check if we can include both GL and GLES2 at the same time
838 if test "x$HAVE_GL" = "xyes" -a "x$HAVE_GLES2" = "xyes"; then
839   GLES3_H_DEFINE=0
840   if test "x$HAVE_GLES3_H" == "xyes"; then
841     GLES3_H_DEFINE=1
842   fi
843   GL_INCLUDES="
844 #ifdef __GNUC__
845 #  pragma GCC diagnostic push
846 #  pragma GCC diagnostic ignored \"-Wredundant-decls\"
847 #endif
848 #ifndef GL_GLEXT_PROTOTYPES
849 #define GL_GLEXT_PROTOTYPES 1
850 #endif
851 # ifdef HAVE_IOS
852 #  include <OpenGLES/ES2/gl.h>
853 #  include <OpenGLES/ES2/glext.h>
854 # else
855 #  if $GLES3_H_DEFINE
856 #   include <GLES3/gl3.h>
857 #   include <GLES3/gl3ext.h>
858 #  else
859 #   include <GLES2/gl2.h>
860 #   include <GLES2/gl2ext.h>
861 #  endif
862 # endif
863 # ifdef __APPLE__
864 #  include <OpenGL/OpenGL.h>
865 #  include <OpenGL/gl.h>
866 #  if MAC_OS_X_VERSION_MAX_ALLOWED >= 1070
867 #   define GL_DO_NOT_WARN_IF_MULTI_GL_VERSION_HEADERS_INCLUDED
868 #   include <OpenGL/gl3.h>
869 #  endif
870 # else
871 #  include <GL/gl.h>
872 #  if __WIN32__ || _WIN32
873 #   include <GL/glext.h>
874 #  endif
875 # endif
876 int main (int argc, char **argv) { return 0; }
877 "
878   AC_MSG_CHECKING([whether it is possible to include both GL and GLES2 headers])
879   save_CFLAGS="$CFLAGS"
880   CFLAGS="$CFLAGS $GL_CFLAGS $GLES2_CFLAGS $WARNING_CFLAGS $ERROR_CFLAGS"
881   AC_COMPILE_IFELSE([AC_LANG_SOURCE([[$GL_INCLUDES]], [[
882     #if !defined(GL_FALSE)
883     #error Failed to include GL headers
884     #endif
885     ]])],[ AC_MSG_RESULT(yes)
886     ],[AC_MSG_RESULT(no)
887     if test "x$NEED_GLES2" = "xyes"; then
888       if test "x$NEED_GL" = "xyes"; then
889         AC_MSG_ERROR([Cannot seem to include both GL and GLES2 headers. Try disabling one API])
890       fi
891       AC_MSG_WARN([Disabling Desktop GL support])
892       HAVE_GL=no
893       USE_OPENGL=no
894     else
895       AC_MSG_WARN([Disabling GL|ES 2.0 support])
896       HAVE_GLES2=no
897       HAVE_GLES3_H=no
898     fi
899   ])
900   CFLAGS="$save_CFLAGS"
901 fi
902
903 #dnl Check for OpenGL
904 echo host is $host
905 case $host in
906   *-android*)
907     if test "x$NEED_WGL" = "xyes"; then
908       AC_MSG_ERROR([WGL is not available on Android])
909     fi
910     if test "x$NEED_GLX" = "xyes"; then
911       AC_MSG_ERROR([GLX is not available on Android])
912     fi
913     if test "x$NEED_GL" = "xyes"; then
914       AC_MSG_ERROR([GL is not available on Android])
915     fi
916     if test "x$NEED_X11" = "xyes"; then
917       AC_MSG_ERROR([X11 is not available on Android])
918     fi
919     if test "x$NEED_COCOA" = "xyes"; then
920       AC_MSG_ERROR([Cocoa is not available on Android])
921     fi
922
923     dnl OpenGL|ES 2.0
924     if test "x$HAVE_GLES2" = "xyes"; then
925       if test "x$NEED_GLES2" != "xno"; then
926         GL_LIBS="$GL_LIBS -lGLESv2"
927         USE_GLES2=yes
928       fi
929     fi
930
931     dnl EGL
932     if test "x$HAVE_EGL" = "xyes"; then
933       if test "x$NEED_EGL" != "xno"; then
934         GL_LIBS="$GL_LIBS -lEGL"
935         USE_EGL=yes
936       fi
937     fi
938
939     if test "x$USE_EGL" != "xyes"; then
940       AC_MSG_ERROR([Need EGL on Android])
941     fi
942
943     if test "x$USE_GLES2" != "xyes"; then
944       AC_MSG_ERROR([Need OpenGL|ES 2.0 on Android])
945     fi
946
947     HAVE_WINDOW_ANDROID=yes
948     ;;
949   *-linux* | *-cygwin* | *-solaris* | *-netbsd* | *-freebsd* | *-openbsd* | *-kfreebsd* | *-dragonflybsd* | *-gnu* )
950     if test "x$NEED_WGL" = "xyes"; then
951       AC_MSG_ERROR([WGL is not available on unix])
952     fi
953
954     if test "x$HAVE_X11_XCB" = "xno"; then
955       if test "x$HAVE_WAYLAND_EGL" = "xno"; then
956         AC_MSG_WARN([X or Wayland is required for OpenGL support])
957       fi
958     fi
959
960     dnl check Desktop OpenGL
961     if test "x$HAVE_GL" = "xyes"; then
962       if test "x$NEED_GL" != "xno"; then
963         GL_LIBS="$GL_LIBS -lGL"
964       fi
965     fi
966
967     dnl OpenGL|ES 2.0
968     if test "x$HAVE_GLES2" = "xyes"; then
969       if test "x$NEED_GLES2" != "xno"; then
970         GL_LIBS="$GL_LIBS -lGLESv2"
971         USE_GLES2=yes
972       fi
973     fi
974
975     if test "x$HAVE_X11_XCB" = "xyes" -a "x$HAVE_EGL_RPI" = "xno"; then
976       if test "x$NEED_X11" != "xno"; then
977         GL_LIBS="$GL_LIBS $X11_XCB_LIBS"
978         GL_CFLAGS="$GL_CFLAGS $X11_XCB_CFLAGS"
979         HAVE_WINDOW_X11=yes
980       fi
981     fi
982
983     if test "x$HAVE_WAYLAND_EGL" = "xyes"; then
984       if test "x$NEED_EGL" = "xno" -o "x$HAVE_EGL" = "xno"; then
985         AC_MSG_WARN([EGL is required by the Wayland backend for OpenGL support])
986       else
987         if test "x$NEED_WAYLAND_EGL" != "xno"; then
988           HAVE_WINDOW_WAYLAND=yes
989           GL_LIBS="$GL_LIBS $WAYLAND_EGL_LIBS"
990           GL_CFLAGS="$GL_CFLAGS $WAYLAND_EGL_CFLAGS"
991         fi
992       fi
993     fi
994
995     if test "x$HAVE_EGL_RPI" = "xyes"; then
996       if test "x$NEED_DISPMANX" != "xno"; then
997         HAVE_WINDOW_DISPMANX=yes
998         USE_EGL=yes
999       fi
1000     fi
1001
1002     dnl EGL
1003     if test "x$HAVE_EGL" = "xno"; then
1004       if test "x$HAVE_GL" = "xno"; then
1005         AC_MSG_WARN([Building requires either EGL or GLX for OpenGL support])
1006       fi
1007     else
1008       if test "x$NEED_EGL" != "xno"; then
1009         if test "x$HAVE_WINDOW_WAYLAND" = "xyes" -o "x$HAVE_WINDOW_X11" = "xyes" -o "x$HAVE_WINDOW_DISPMANX" = "xyes"; then
1010           GL_LIBS="$GL_LIBS -lEGL $EGL_LIBS"
1011           GL_CFLAGS="$GL_CFLAGS $EGL_CFLAGS"
1012           USE_EGL=yes
1013         fi
1014       fi
1015     fi
1016     ;;
1017   *-darwin*)
1018     if test "x$HAVE_IOS" = "xyes"; then
1019       if test "x$NEED_WGL" = "xyes"; then
1020         AC_MSG_ERROR([WGL is not available on iOS])
1021       fi
1022       if test "x$NEED_GLX" = "xyes"; then
1023         AC_MSG_ERROR([GLX is not available on iOS])
1024       fi
1025       if test "x$NEED_GL" = "xyes"; then
1026         AC_MSG_ERROR([GL is not available on iOS])
1027       fi
1028       if test "x$NEED_X11" = "xyes"; then
1029         AC_MSG_ERROR([X11 is not available on iOS])
1030       fi
1031       if test "x$NEED_COCOA" = "xyes"; then
1032         AC_MSG_ERROR([Cocoa is not available on iOS])
1033       fi
1034       if test "x$NEED_EGL" = "xyes"; then
1035         AC_MSG_ERROR([EGL is not available on iOS])
1036       fi
1037
1038       GL_LIBS="$LIBS -framework OpenGLES -framework QuartzCore -framework UIKit -framework CoreGraphics -framework CoreFoundation -framework Foundation"
1039       GL_CFLAGS="$GL_CFLAGS"
1040       USE_GLES2=yes
1041       USE_EAGL=yes
1042       HAVE_WINDOW_EAGL=yes
1043
1044       ac_cv_type_GLsizeiptr=yes
1045       ac_cv_type_GLintptr=yes
1046       ac_cv_type_GLchar=yes
1047     else
1048       dnl Only osx supports cocoa.
1049       if test "x$NEED_WGL" = "xyes"; then
1050         AC_MSG_ERROR([WGL is not available on Mac OS X])
1051       fi
1052
1053       if test "x$NEED_COCOA" != "xno"; then
1054         GL_LIBS="$LIBS -framework OpenGL -framework Cocoa -framework QuartzCore -framework CoreFoundation"
1055         GL_CFLAGS="$GL_CFLAGS"
1056         USE_COCOA=yes
1057         HAVE_WINDOW_COCOA=yes
1058         USE_OPENGL=yes
1059       fi
1060
1061       if test "x$USE_GLX" = "xyes"; then
1062         if test "x$HAVE_X11_XCB" = "xyes"; then
1063           if test "x$NEED_X11" != "xno"; then
1064             GL_LIBS="$GL_LIBS $X11_XCB_LIBS"
1065             GL_CFLAGS="$GL_CFLAGS $X11_XCB_CFLAGS"
1066             HAVE_WINDOW_X11=yes
1067           fi
1068         fi
1069
1070         if test "x$HAVE_GL" = "xyes"; then
1071           if test "x$NEED_GL" != "xno"; then
1072             GL_LIBS="$GL_LIBS -lGL"
1073           fi
1074           USE_OPENGL=yes
1075         fi
1076       fi
1077
1078       if test "x$HAVE_EGL" = "xyes"; then
1079         if test "x$NEED_EGL" != "xno"; then
1080           if test "x$HAVE_WINDOW_X11" = "xyes"; then
1081             GL_LIBS="$GL_LIBS -lEGL $EGL_LIBS"
1082             GL_CFLAGS="$GL_CFLAGS $EGL_CFLAGS"
1083             USE_EGL=yes
1084           fi
1085         fi
1086       fi
1087
1088       dnl OpenGL|ES 2.0
1089       if test "x$HAVE_GLES2" = "xyes"; then
1090         if test "x$NEED_GLES2" != "xno"; then
1091           GL_LIBS="$GL_LIBS -lGLESv2"
1092           USE_GLES2=yes
1093         fi
1094       fi
1095     fi
1096     ;;
1097   *-mingw32*)
1098     if test "x$NEED_GLX" = "xyes"; then
1099       AC_MSG_ERROR([GLX is not available on Windows])
1100     fi
1101     if test "x$NEED_GLES2" = "xyes"; then
1102       AC_MSG_ERROR([OpenGL|ES 2.0 is not supported on your platform yet])
1103     fi
1104
1105     if test "x$HAVE_GL" = "xyes"; then
1106       if test "x$NEED_GL" != "xno"; then
1107         if test "x$HAVE_WGL" = "xyes"; then
1108           if test "$NEED_WGL" != "xno"; then
1109             GL_LIBS="$GL_LIBS -lgdi32 -lopengl32"
1110             HAVE_WINDOW_WIN32=yes
1111             USE_OPENGL=yes
1112             USE_WGL=yes
1113           fi
1114         fi
1115       fi
1116     fi
1117     ;;
1118   *)
1119     AC_MSG_WARN([Don't know how to check for OpenGL on your platform.])
1120     ;;
1121 esac
1122
1123 GL_PLATFORMS=
1124 GL_WINDOWS=
1125 GL_APIS=
1126 GL_CONFIG_DEFINES=
1127
1128 dnl APIs
1129
1130 GST_GL_HAVE_OPENGL=0
1131 GST_GL_HAVE_GLES2=0
1132 GST_GL_HAVE_GLES3=0
1133
1134 if test "x$USE_OPENGL" = "xyes"; then
1135   GL_APIS="gl $GL_APIS"
1136   GST_GL_HAVE_OPENGL=1
1137 fi
1138 if test "x$USE_GLES2" = "xyes"; then
1139   GL_APIS="gles2 $GL_APIS"
1140   GST_GL_HAVE_GLES2=1
1141   if test "x$HAVE_GLES3_H" = "xyes"; then
1142     GST_GL_HAVE_GLES3=1
1143   fi
1144 fi
1145
1146 GL_CONFIG_DEFINES="$GL_CONFIG_DEFINES
1147 #define GST_GL_HAVE_OPENGL $GST_GL_HAVE_OPENGL
1148 #define GST_GL_HAVE_GLES2 $GST_GL_HAVE_GLES2
1149 #define GST_GL_HAVE_GLES3 $GST_GL_HAVE_GLES3
1150 "
1151
1152 dnl WINDOW's
1153
1154 GST_GL_HAVE_WINDOW_X11=0
1155 GST_GL_HAVE_WINDOW_COCOA=0
1156 GST_GL_HAVE_WINDOW_WIN32=0
1157 GST_GL_HAVE_WINDOW_WAYLAND=0
1158 GST_GL_HAVE_WINDOW_ANDROID=0
1159 GST_GL_HAVE_WINDOW_DISPMANX=0
1160 GST_GL_HAVE_WINDOW_EAGL=0
1161
1162 if test "x$HAVE_WINDOW_X11" = "xyes"; then
1163   GL_WINDOWS="x11 $GL_WINDOWS"
1164   GST_GL_HAVE_WINDOW_X11=1
1165 fi
1166 if test "x$HAVE_WINDOW_COCOA" = "xyes"; then
1167   GL_WINDOWS="cocoa $GL_WINDOWS"
1168   GST_GL_HAVE_WINDOW_COCOA=1
1169 fi
1170 if test "x$HAVE_WINDOW_WIN32" = "xyes"; then
1171   GL_WINDOWS="win32 $GL_WINDOWS"
1172   GST_GL_HAVE_WINDOW_WIN32=1
1173 fi
1174 if test "x$HAVE_WINDOW_WAYLAND" = "xyes"; then
1175   GL_WINDOWS="wayland $GL_WINDOWS"
1176   GST_GL_HAVE_WINDOW_WAYLAND=1
1177 fi
1178 if test "x$HAVE_WINDOW_ANDROID" = "xyes"; then
1179   GL_WINDOWS="android $GL_WINDOWS"
1180   GST_GL_HAVE_WINDOW_ANDROID=1
1181 fi
1182 if test "x$HAVE_WINDOW_DISPMANX" = "xyes"; then
1183   GL_WINDOWS="dispmanx $GL_WINDOWS"
1184   GST_GL_HAVE_WINDOW_DISPMANX=1
1185 fi
1186 if test "x$HAVE_WINDOW_EAGL" = "xyes"; then
1187   GL_WINDOWS="eagl $GL_WINDOWS"
1188   GST_GL_HAVE_WINDOW_EAGL=1
1189 fi
1190
1191 GL_CONFIG_DEFINES="$GL_CONFIG_DEFINES
1192 #define GST_GL_HAVE_WINDOW_X11 $GST_GL_HAVE_WINDOW_X11
1193 #define GST_GL_HAVE_WINDOW_COCOA $GST_GL_HAVE_WINDOW_COCOA
1194 #define GST_GL_HAVE_WINDOW_WIN32 $GST_GL_HAVE_WINDOW_WIN32
1195 #define GST_GL_HAVE_WINDOW_WAYLAND $GST_GL_HAVE_WINDOW_WAYLAND
1196 #define GST_GL_HAVE_WINDOW_ANDROID $GST_GL_HAVE_WINDOW_ANDROID
1197 #define GST_GL_HAVE_WINDOW_DISPMANX $GST_GL_HAVE_WINDOW_DISPMANX
1198 #define GST_GL_HAVE_WINDOW_EAGL $GST_GL_HAVE_WINDOW_EAGL
1199 "
1200
1201 dnl PLATFORM's
1202
1203 GST_GL_HAVE_PLATFORM_EGL=0
1204 GST_GL_HAVE_PLATFORM_GLX=0
1205 GST_GL_HAVE_PLATFORM_WGL=0
1206 GST_GL_HAVE_PLATFORM_CGL=0
1207 GST_GL_HAVE_PLATFORM_EAGL=0
1208
1209 if test "x$USE_EGL" = "xyes"; then
1210   GL_PLATFORMS="egl $GL_PLATFORMS"
1211   GST_GL_HAVE_PLATFORM_EGL=1
1212 fi
1213 if test "x$USE_GLX" = "xyes"; then
1214   GL_PLATFORMS="glx $GL_PLATFORMS"
1215   GST_GL_HAVE_PLATFORM_GLX=1
1216 fi
1217 if test "x$USE_WGL" = "xyes"; then
1218   GL_PLATFORMS="wgl $GL_PLATFORMS"
1219   GST_GL_HAVE_PLATFORM_WGL=1
1220 fi
1221 if test "x$USE_COCOA" = "xyes"; then
1222   GL_PLATFORMS="cgl $GL_PLATFORMS"
1223   GST_GL_HAVE_PLATFORM_CGL=1
1224 fi
1225 if test "x$USE_EAGL" = "xyes"; then
1226   GL_PLATFORMS="eagl $GL_PLATFORMS"
1227   GST_GL_HAVE_PLATFORM_EAGL=1
1228 fi
1229
1230 GL_CONFIG_DEFINES="$GL_CONFIG_DEFINES
1231 #define GST_GL_HAVE_PLATFORM_EGL $GST_GL_HAVE_PLATFORM_EGL
1232 #define GST_GL_HAVE_PLATFORM_GLX $GST_GL_HAVE_PLATFORM_GLX
1233 #define GST_GL_HAVE_PLATFORM_WGL $GST_GL_HAVE_PLATFORM_WGL
1234 #define GST_GL_HAVE_PLATFORM_CGL $GST_GL_HAVE_PLATFORM_CGL
1235 #define GST_GL_HAVE_PLATFORM_EAGL $GST_GL_HAVE_PLATFORM_EAGL
1236 "
1237
1238 GL_CONFIG_DEFINES="$GL_CONFIG_DEFINES
1239 #define GST_GL_HAVE_DMABUF $GST_GL_HAVE_DMABUF
1240 "
1241
1242 dnl Check for no platforms/window systems
1243 if test "x$GL_APIS" = "x"; then
1244   AC_MSG_WARN([Either OpenGL or OpenGL|ES is required for OpenGL support])
1245 fi
1246 if test "x$GL_PLATFORMS" = "x"; then
1247   AC_MSG_WARN([Could not find any OpenGL platforms to use such as CGL, WGL or GLX])
1248 fi
1249 if test "x$GL_WINDOWS" = "x"; then
1250   AC_MSG_WARN([Could not find any window systems to use such as Cocoa, Win32API or X11])
1251 fi
1252
1253 if test "x$GL_APIS" = "x" -o "x$GL_PLATFORMS" = "x" -o "x$GL_WINDOWS" = "x"; then
1254   GL_LIBS=
1255   GL_CFLAGS=
1256   GL_OBJCFLAGS=
1257   USE_OPENGL=no
1258   USE_GLES2=no
1259   USE_GLX=no
1260   USE_EGL=no
1261   USE_WGL=no
1262   USE_COCOA=no
1263   USE_EGL_MALI=no
1264   USE_EGL_RPI=no
1265   USE_EAGL=no
1266
1267   HAVE_WINDOW_X11=no
1268   HAVE_WINDOW_WIN32=no
1269   HAVE_WINDOW_DISPMANX=no
1270   HAVE_WINDOW_WAYLAND=no
1271   HAVE_WINDOW_ANDROID=no
1272   HAVE_WINDOW_COCOA=no
1273   HAVE_WINDOW_EAGL=no
1274 fi
1275
1276 AC_SUBST(GL_APIS)
1277 AC_SUBST(GL_PLATFORMS)
1278 AC_SUBST(GL_WINDOWS)
1279 AC_SUBST(GL_LIBS)
1280 AC_SUBST(GL_CFLAGS)
1281 AC_SUBST(GL_OBJCFLAGS)
1282 AC_SUBST(USE_OPENGL)
1283 AC_SUBST(USE_GLES2)
1284
1285 AM_CONDITIONAL(HAVE_WINDOW_X11, test "x$HAVE_WINDOW_X11" = "xyes")
1286 AM_CONDITIONAL(HAVE_WINDOW_COCOA, test "x$HAVE_WINDOW_COCOA" = "xyes")
1287 AM_CONDITIONAL(HAVE_WINDOW_WIN32, test "x$HAVE_WINDOW_WIN32" = "xyes")
1288 AM_CONDITIONAL(HAVE_WINDOW_DISPMANX, test "x$HAVE_WINDOW_DISPMANX" = "xyes")
1289 AM_CONDITIONAL(HAVE_WINDOW_WAYLAND, test "x$HAVE_WINDOW_WAYLAND" = "xyes")
1290 AM_CONDITIONAL(HAVE_WINDOW_ANDROID, test "x$HAVE_WINDOW_ANDROID" = "xyes")
1291 AM_CONDITIONAL(HAVE_WINDOW_EAGL, test "x$HAVE_WINDOW_EAGL" = "xyes")
1292
1293 AM_CONDITIONAL(USE_OPENGL, test "x$USE_OPENGL" = "xyes")
1294 AM_CONDITIONAL(USE_GLES2, test "x$USE_GLES2" = "xyes")
1295 AM_CONDITIONAL(USE_GLX, test "x$USE_GLX" = "xyes")
1296 AM_CONDITIONAL(USE_EGL, test "x$USE_EGL" = "xyes")
1297 AM_CONDITIONAL(USE_WGL, test "x$USE_WGL" = "xyes")
1298 AM_CONDITIONAL(USE_COCOA, test "x$USE_COCOA" = "xyes")
1299 AM_CONDITIONAL(USE_EGL_MALI, test "x$USE_EGL_MALI" = "xyes")
1300 AM_CONDITIONAL(USE_EGL_RPI, test "x$USE_EGL_RPI" = "xyes")
1301 AM_CONDITIONAL(USE_EAGL, test "x$USE_EAGL" = "xyes")
1302
1303 AM_CONDITIONAL(HAVE_GST_GL, test "x$USE_OPENGL" = "xyes" -o "x$USE_GLES2" = "xyes")
1304
1305 dnl Check for some types that are not always present
1306 GL_INCLUDES=""
1307 if test "x$USE_GLES2" = "xyes"; then
1308   GL_INCLUDES="$GL_INCLUDES
1309 #ifndef GL_GLEXT_PROTOTYPES
1310 #define GL_GLEXT_PROTOTYPES 1
1311 #endif
1312 # ifdef HAVE_IOS
1313 #  include <OpenGLES/ES2/gl.h>
1314 #  include <OpenGLES/ES2/glext.h>
1315 # else
1316 #  if $GST_GL_HAVE_GLES3
1317 #   include <GLES3/gl3.h>
1318 #   include <GLES3/gl3ext.h>
1319 #  else
1320 #   include <GLES2/gl2.h>
1321 #   include <GLES2/gl2ext.h>
1322 #  endif
1323 # endif
1324 "
1325 fi
1326
1327 if test "x$USE_OPENGL" = "xyes"; then
1328   GL_INCLUDES="$GL_INCLUDES
1329 # ifdef __APPLE__
1330 #  include <OpenGL/OpenGL.h>
1331 #  include <OpenGL/gl.h>
1332 # else
1333 #  include <GL/gl.h>
1334 #  if __WIN32__ || _WIN32
1335 #   include <GL/glext.h>
1336 #  endif
1337 # endif
1338 "
1339 fi
1340
1341 GST_GL_HAVE_GLEGLIMAGEOES=0
1342 GST_GL_HAVE_GLCHAR=0
1343 GST_GL_HAVE_GLSIZEIPTR=0
1344 GST_GL_HAVE_GLINTPTR=0
1345 GST_GL_HAVE_GLSYNC=0
1346 GST_GL_HAVE_GLUINT64=0
1347 GST_GL_HAVE_GLINT64=0
1348 GST_GL_HAVE_EGLATTRIB=0
1349
1350 old_CFLAGS=$CFLAGS
1351 CFLAGS="$GL_CFLAGS $CFLAGS"
1352
1353 AC_CHECK_TYPES(GLeglImageOES, [], [], [[$GL_INCLUDES]])
1354 if test "x$ac_cv_type_GLeglImageOES" = "xyes"; then
1355   GST_GL_HAVE_GLEGLIMAGEOES=1
1356 fi
1357
1358 AC_CHECK_TYPES(GLchar, [], [], [[$GL_INCLUDES]])
1359 if test "x$ac_cv_type_GLchar" = "xyes"; then
1360   GST_GL_HAVE_GLCHAR=1
1361 fi
1362
1363 AC_CHECK_TYPES(GLsizeiptr, [], [], [[$GL_INCLUDES]])
1364 if test "x$ac_cv_type_GLsizeiptr" = "xyes"; then
1365   GST_GL_HAVE_GLSIZEIPTR=1
1366 fi
1367
1368 AC_CHECK_TYPES(GLintptr, [], [], [[$GL_INCLUDES]])
1369 if test "x$ac_cv_type_GLintptr" = "xyes"; then
1370   GST_GL_HAVE_GLINTPTR=1
1371 fi
1372
1373 AC_CHECK_TYPES(GLsync, [], [], [[$GL_INCLUDES]])
1374 if test "x$ac_cv_type_GLsync" = "xyes"; then
1375   GST_GL_HAVE_GLSYNC=1
1376 fi
1377
1378 AC_CHECK_TYPES(GLuint64, [], [], [[$GL_INCLUDES]])
1379 if test "x$ac_cv_type_GLuint64" = "xyes"; then
1380   GST_GL_HAVE_GLUINT64=1
1381 fi
1382
1383 AC_CHECK_TYPES(GLint64, [], [], [[$GL_INCLUDES]])
1384 if test "x$ac_cv_type_GLint64" = "xyes"; then
1385   GST_GL_HAVE_GLINT64=1
1386 fi
1387
1388 if test "x$USE_EGL" = "xyes"; then
1389   EGL_INCLUDES="$GL_INCLUDES
1390   #include <EGL/egl.h>
1391   #include <EGL/eglext.h>
1392   "
1393   AC_CHECK_TYPES(EGLAttrib, [], [], [[$EGL_INCLUDES]])
1394   if test "x$ac_cv_type_EGLAttrib" = "xyes"; then
1395     GST_GL_HAVE_EGLATTRIB=1
1396   fi
1397 fi
1398
1399 CFLAGS=$old_CFLAGS
1400
1401 GL_CONFIG_DEFINES="$GL_CONFIG_DEFINES
1402 #define GST_GL_HAVE_GLEGLIMAGEOES $GST_GL_HAVE_GLEGLIMAGEOES
1403 #define GST_GL_HAVE_GLCHAR $GST_GL_HAVE_GLCHAR
1404 #define GST_GL_HAVE_GLSIZEIPTR $GST_GL_HAVE_GLSIZEIPTR
1405 #define GST_GL_HAVE_GLINTPTR $GST_GL_HAVE_GLINTPTR
1406 #define GST_GL_HAVE_GLSYNC $GST_GL_HAVE_GLSYNC
1407 #define GST_GL_HAVE_GLUINT64 $GST_GL_HAVE_GLUINT64
1408 #define GST_GL_HAVE_GLINT64 $GST_GL_HAVE_GLINT64
1409 #define GST_GL_HAVE_EGLATTRIB $GST_GL_HAVE_EGLATTRIB
1410 "
1411
1412 AC_CONFIG_COMMANDS([gst-libs/gst/gl/gstglconfig.h], [
1413         outfile=gstglconfig.h-tmp
1414         cat > $outfile <<\_______EOF
1415 /* gstglconfig.h
1416  *
1417  * This is a generated file.  Please modify `configure.ac'
1418  */
1419
1420 #ifndef __GST_GL_CONFIG_H__
1421 #define __GST_GL_CONFIG_H__
1422
1423 #include <gst/gst.h>
1424
1425 G_BEGIN_DECLS
1426
1427 _______EOF
1428
1429         cat >>$outfile <<_______EOF
1430 $gl_config_defines
1431 _______EOF
1432
1433         cat >>$outfile <<_______EOF
1434
1435 G_END_DECLS
1436
1437 #endif  /* __GST_GL_CONFIG_H__ */
1438 _______EOF
1439
1440
1441         if cmp -s $outfile gst-libs/gst/gl/gstglconfig.h; then
1442           AC_MSG_NOTICE([gst-libs/gst/gl/gstglconfig.h is unchanged])
1443           rm -f $outfile
1444         else
1445           mv $outfile gst-libs/gst/gl/gstglconfig.h
1446         fi
1447 ],[
1448 gl_config_defines='$GL_CONFIG_DEFINES'
1449 ])
1450
1451 dnl libpng is optional
1452 PKG_CHECK_MODULES(LIBPNG, libpng >= 1.0, HAVE_PNG=yes, HAVE_PNG=no)
1453 if test "x$HAVE_PNG" = "xyes"; then
1454   AC_DEFINE(HAVE_PNG, [1] , [Use libpng])
1455 fi
1456 AC_SUBST(HAVE_PNG)
1457 AC_SUBST(LIBPNG_LIBS)
1458 AC_SUBST(LIBPNG_CFLAGS)
1459 AM_CONDITIONAL(HAVE_PNG, test "x$HAVE_PNG" = "xyes")
1460
1461 dnl libjpeg is optional
1462 AC_ARG_WITH(jpeg-mmx, [  --with-jpeg-mmx, path to MMX'ified JPEG library])
1463 OLD_LIBS="$LIBS"
1464 if test x$with_jpeg_mmx != x; then
1465   LIBS="$LIBS -L$with_jpeg_mmx"
1466 fi
1467 AC_CHECK_LIB(jpeg-mmx, jpeg_set_defaults, HAVE_JPEG="yes", HAVE_JPEG="no")
1468 JPEG_LIBS="$LIBS -ljpeg-mmx"
1469 LIBS="$OLD_LIBS"
1470 if test x$HAVE_JPEG != xyes; then
1471   JPEG_LIBS="-ljpeg"
1472   AC_CHECK_LIB(jpeg, jpeg_set_defaults, HAVE_JPEG="yes", HAVE_JPEG="no")
1473 fi
1474
1475 if test x$HAVE_JPEG = xyes; then
1476   AC_DEFINE(HAVE_JPEG, [1], [Use libjpeg])
1477 else
1478   AC_DEFINE(HAVE_JPEG, [0], [Use libjpeg])
1479   JPEG_LIBS=
1480 fi
1481 AC_SUBST(JPEG_LIBS)
1482 AC_SUBST(HAVE_JPEG)
1483 AM_CONDITIONAL(HAVE_JPEG, test "x$HAVE_JPEG" = "xyes")
1484
1485 dnl Vulkan
1486 PKG_CHECK_MODULES(XCB, xcb >= 1.10, GST_VULKAN_HAVE_WINDOW_XCB=1, GST_VULKAN_HAVE_WINDOW_XCB=0)
1487 AM_CONDITIONAL(USE_XCB, test "x$GST_VULKAN_HAVE_WINDOW_XCB" = "x1")
1488
1489 PKG_CHECK_MODULES(VULKAN_WAYLAND, wayland-client >= 1.4, GST_VULKAN_HAVE_WINDOW_WAYLAND=1, GST_VULKAN_HAVE_WINDOW_WAYLAND=0)
1490 AM_CONDITIONAL(USE_WAYLAND, test "x$GST_VULKAN_HAVE_WINDOW_WAYLAND" = "x1")
1491 VULKAN_CONFIG_DEFINES="
1492 #define GST_VULKAN_HAVE_WINDOW_XCB $GST_VULKAN_HAVE_WINDOW_XCB
1493 #define GST_VULKAN_HAVE_WINDOW_WAYLAND $GST_VULKAN_HAVE_WINDOW_WAYLAND"
1494
1495 AC_CONFIG_COMMANDS([ext/vulkan/vkconfig.h], [
1496         outfile=vkconfig.h-tmp
1497         cat > $outfile <<\_______EOF
1498 /* vkconfig.h
1499  *
1500  * This is a generated file.  Please modify `configure.ac'
1501  */
1502
1503 #ifndef __GST_VULKAN_CONFIG_H__
1504 #define __GST_VULKAN_CONFIG_H__
1505
1506 #include <gst/gst.h>
1507
1508 G_BEGIN_DECLS
1509
1510 _______EOF
1511
1512         cat >>$outfile <<_______EOF
1513 $vulkan_config_defines
1514 _______EOF
1515
1516         cat >>$outfile <<_______EOF
1517
1518 G_END_DECLS
1519
1520 #endif  /* __GST_VULKAN_CONFIG_H__ */
1521 _______EOF
1522
1523
1524         if cmp -s $outfile ext/vulkan/vkconfig.h; then
1525           AC_MSG_NOTICE([ext/vulkan/vkconfig.h is unchanged])
1526           rm -f $outfile
1527         else
1528           mv $outfile ext/vulkan/vkconfig.h
1529         fi
1530 ],[
1531 vulkan_config_defines='$VULKAN_CONFIG_DEFINES'
1532 ])
1533
1534 dnl *** sys plug-ins ***
1535
1536 dnl DirectSound
1537 translit(dnm, m, l) AM_CONDITIONAL(USE_DIRECTSOUND, true)
1538 AG_GST_CHECK_FEATURE(DIRECTSOUND, [DirectSound], directsoundsrc, [
1539   HAVE_DIRECTSOUND="no"
1540   save_CFLAGS="$CFLAGS"
1541   save_LDFLAGS="$LDFLAGS"
1542   save_LIBS="$LIBS"
1543   CFLAGS="$CFLAGS $DIRECTX_CFLAGS"
1544   LDFLAGS="$LDFLAGS $DIRECTX_LDFLAGS"
1545   LIBS="$LIBS -lwinmm -ldsound -ldxerr9 -luser32"
1546   AC_MSG_CHECKING(for DirectSound LDFLAGS)
1547   AC_LINK_IFELSE([AC_LANG_PROGRAM([[
1548 #include <windows.h>
1549 #include <dxerr9.h>
1550 #include <dsound.h>
1551 #include <mmsystem.h>
1552 ]], [[
1553   DXGetErrorString9 (0);
1554   DirectSoundCreate(NULL, NULL, NULL);
1555 ]])],
1556     [HAVE_DIRECTSOUND="yes"],
1557     [HAVE_DIRECTSOUND="no"])
1558   AC_MSG_RESULT($HAVE_DIRECTSOUND)
1559   CFLAGS=$save_CFLAGS
1560   LDFLAGS=$save_LDFLAGS
1561   LIBS=$save_LIBS
1562
1563   if test "x$HAVE_DIRECTSOUND" = "xyes";  then
1564     dnl this is much more than we want
1565     DIRECTSOUND_LIBS="-lwinmm -ldsound -ldxerr9 -luser32"
1566     AC_SUBST(DIRECTX_CFLAGS)
1567     AC_SUBST(DIRECTX_LDFLAGS)
1568     AC_SUBST(DIRECTSOUND_LIBS)
1569   fi
1570   AC_SUBST(HAVE_DIRECTSOUND)
1571 ])
1572
1573 dnl WASAPI
1574 translit(dnm, m, l) AM_CONDITIONAL(USE_WASAPI, true)
1575 AG_GST_CHECK_FEATURE(WASAPI, [WASAPI plug-in], wasapi, [
1576   HAVE_WASAPI="no"
1577   save_CFLAGS="$CFLAGS"
1578   save_LDFLAGS="$LDFLAGS"
1579   save_LIBS="$LIBS"
1580   CFLAGS="$CFLAGS $DIRECTX_CFLAGS"
1581   LDFLAGS="$LDFLAGS $DIRECTX_LDFLAGS"
1582   LIBS="$LIBS -lole32 -lwinmm -lksuser"
1583   AC_MSG_CHECKING(for WASAPI LDFLAGS)
1584   AC_LINK_IFELSE([AC_LANG_PROGRAM([[
1585 #include <windows.h>
1586 #include <stdio.h>
1587 #include <mmsystem.h>
1588 #include <mmdeviceapi.h>
1589 ]], [[
1590 int main ()
1591 {
1592     HRESULT hr = S_OK;
1593
1594     hr = CoInitialize(NULL);
1595     if (FAILED(hr)) {
1596         printf("CoInitialize failed: hr = 0x%08x", hr);
1597         return __LINE__;
1598     }
1599
1600         int result = 0;
1601     // result = do_everything(argc, argv);
1602
1603     CoUninitialize();
1604     return result;
1605 }
1606 ]])],
1607     [HAVE_WASAPI="yes"],
1608     [HAVE_WASAPI="no"])
1609   AC_MSG_RESULT($HAVE_WASAPI)
1610   CFLAGS=$save_CFLAGS
1611   LDFLAGS=$save_LDFLAGS
1612   LIBS=$save_LIBS
1613
1614   if test "x$HAVE_WASAPI" = "xyes";  then
1615     WASAPI_LIBS="-lole32 -lwinmm -lksuser"
1616     AC_SUBST(WASAPI_LIBS)
1617   fi
1618   AC_SUBST(HAVE_WASAPI)
1619 ])
1620
1621 dnl Direct3D
1622 translit(dnm, m, l) AM_CONDITIONAL(USE_DIRECT3D, true)
1623 AG_GST_CHECK_FEATURE(DIRECT3D, [Direct3D plug-in], direct3dsink, [
1624   HAVE_DIRECT3D="no"
1625   save_CFLAGS="$CFLAGS"
1626   save_LDFLAGS="$LDFLAGS"
1627   save_LIBS="$LIBS"
1628   CFLAGS="$CFLAGS $DIRECTX_CFLAGS"
1629   LDFLAGS="$LDFLAGS $DIRECTX_LDFLAGS"
1630   LIBS="$LIBS -ld3d9 -lgdi32"
1631   AC_MSG_CHECKING(for Direct3D LDFLAGS)
1632   AC_LINK_IFELSE([AC_LANG_PROGRAM([[
1633 #include <windows.h>
1634 #include <d3d9.h>
1635 ]], [[
1636   Direct3DCreate9(D3D_SDK_VERSION);
1637 ]])],
1638     [HAVE_DIRECT3D="yes"],
1639     [HAVE_DIRECT3D="no"])
1640   AC_MSG_RESULT($HAVE_DIRECT3D)
1641   CFLAGS=$save_CFLAGS
1642   LDFLAGS=$save_LDFLAGS
1643   LIBS=$save_LIBS
1644
1645   if test "x$HAVE_DIRECT3D" = "xyes";  then
1646     DIRECT3D_LIBS="-ld3d9 -lgdi32"
1647     AC_SUBST(DIRECT3D_LIBS)
1648   fi
1649   AC_SUBST(HAVE_DIRECT3D)
1650 ])
1651
1652 dnl winscreencap
1653 translit(dnm, m, l) AM_CONDITIONAL(USE_WINSCREENCAP, true)
1654 AG_GST_CHECK_FEATURE(WINSCREENCAP, [winscreencap plug-in], winscreencap, [
1655   HAVE_WINSCREENCAP="no"
1656   save_CFLAGS="$CFLAGS"
1657   save_LDFLAGS="$LDFLAGS"
1658   save_LIBS="$LIBS"
1659   CFLAGS="$CFLAGS $DIRECTX_CFLAGS"
1660   LDFLAGS="$LDFLAGS $DIRECTX_LDFLAGS"
1661   LIBS="$LIBS -ld3d9 -lgdi32"
1662   AC_MSG_CHECKING(for Direct3D LDFLAGS)
1663   AC_LINK_IFELSE([AC_LANG_PROGRAM([[
1664 #include <windows.h>
1665 #include <d3d9.h>
1666 ]], [[
1667   Direct3DCreate9(D3D_SDK_VERSION);
1668 ]])],
1669     [HAVE_WINSCREENCAP="yes"],
1670     [HAVE_WINSCREENCAP="no"])
1671   AC_MSG_RESULT($HAVE_WINSCREENCAP)
1672   CFLAGS=$save_CFLAGS
1673   LDFLAGS=$save_LDFLAGS
1674   LIBS=$save_LIBS
1675
1676   if test "x$HAVE_WINSCREENCAP" = "xyes";  then
1677     WINSCREENCAP_LIBS="-ld3d9 -lgdi32"
1678     AC_SUBST(WINSCREENCAP_LIBS)
1679   fi
1680   AC_SUBST(HAVE_WINSCREENCAP)
1681 ])
1682
1683 dnl winks
1684 translit(dnm, m, l) AM_CONDITIONAL(USE_WINKS, true)
1685 AG_GST_CHECK_FEATURE(WINKS, [Winks plug-in], winks, [
1686   HAVE_WINKS="no"
1687   save_CFLAGS="$CFLAGS"
1688   save_LDFLAGS="$LDFLAGS"
1689   save_LIBS="$LIBS"
1690   CFLAGS="$CFLAGS $DIRECTX_CFLAGS"
1691   LDFLAGS="$LDFLAGS $DIRECTX_LDFLAGS"
1692   LIBS="$LIBS -lole32 -luuid -lstrmiids"
1693   AC_MSG_CHECKING(for Winks LDFLAGS)
1694   AC_LINK_IFELSE([AC_LANG_PROGRAM([[
1695 #include <windows.h>
1696 #include <strmif.h>
1697 #include <uuids.h>
1698 ]], [[
1699 int main () {
1700   IGraphBuilder *pGraph = NULL;
1701   HRESULT hr = CoInitialize(NULL);
1702   hr = CoCreateInstance(&CLSID_FilterGraph, NULL, CLSCTX_INPROC_SERVER,
1703                         &IID_IGraphBuilder, (void **)&pGraph);
1704
1705   return 0;
1706 }
1707 ]])],
1708     [HAVE_WINKS="yes"],
1709     [HAVE_WINKS="no"])
1710   AC_MSG_RESULT($HAVE_WINKS)
1711   CFLAGS=$save_CFLAGS
1712   LDFLAGS=$save_LDFLAGS
1713   LIBS=$save_LIBS
1714
1715   if test "x$HAVE_WINKS" = "xyes";  then
1716     dnl this is much more than we want
1717     WINKS_LIBS="-ldxguid -lole32 -luuid -lstrmiids -lksuser -lsetupapi"
1718     AC_SUBST(DIRECTX_CFLAGS)
1719     AC_SUBST(DIRECTX_LDFLAGS)
1720     AC_SUBST(WINKS_LIBS)
1721   fi
1722   AC_SUBST(HAVE_WINKS)
1723 ])
1724
1725 dnl *** Android Media ***
1726 translit(dnm, m, l) AM_CONDITIONAL(USE_ANDROID_MEDIA, true)
1727 HAVE_ANDROID_MEDIA="no"
1728 AG_GST_CHECK_FEATURE(ANDROID_MEDIA, [Android Media], androidmedia, [
1729   case "$host" in
1730     *android*)
1731       AC_CHECK_HEADER(jni.h, HAVE_ANDROID_MEDIA="yes", HAVE_ANDROID_MEDIA="no")
1732       ;;
1733     *)
1734       HAVE_ANDROID_MEDIA="no"
1735       ;;
1736   esac
1737 ])
1738
1739 dnl *** AppleMedia (OS X and iOS) ***
1740 translit(dnm, m, l) AM_CONDITIONAL(USE_APPLE_MEDIA, true)
1741 HAVE_APPLE_MEDIA="no"
1742 dnl SystemConfiguration.h is common to OS X and iOS, so we check for that
1743 AG_GST_CHECK_FEATURE(APPLE_MEDIA, [Apple video], applemedia, [
1744   AC_CHECK_HEADER(SystemConfiguration/SystemConfiguration.h, HAVE_APPLE_MEDIA="yes", HAVE_APPLE_MEDIA="no")
1745   dnl OSX 10.7 and earlier lack VideoToolbox/VideoToolbox.h
1746   if test "x$HAVE_IOS" = "xno"; then
1747     AC_CHECK_HEADER(VideoToolbox/VideoToolbox.h,, HAVE_APPLE_MEDIA="no")
1748   fi
1749 ])
1750
1751 dnl in case header SystemConfiguration/SystemConfiguration.h is found on other platforms
1752 case "$host" in
1753   *-*darwin*)
1754     ;;
1755   *)
1756     HAVE_APPLE_MEDIA="no"
1757     ;;
1758 esac
1759
1760 dnl *** bluez ***
1761 translit(dnm, m, l) AM_CONDITIONAL(USE_BLUEZ, true)
1762 AG_GST_CHECK_FEATURE(BLUEZ, [Bluez], bluez, [
1763   PKG_CHECK_MODULES([BLUEZ5], [bluez >= 5.0], [
1764     PKG_CHECK_MODULES([GIO_UNIX], gio-unix-2.0 > 2.24, [
1765       AC_CHECK_PROG([GDBUS_CODEGEN],[gdbus-codegen],[gdbus-codegen])
1766       HAVE_BLUEZ=yes
1767       AC_DEFINE(HAVE_BLUEZ5,[1],[Bluez5 detected])
1768     ], [
1769       HAVE_BLUEZ=no
1770     ])
1771   ], [
1772     HAVE_BLUEZ=no
1773   ])
1774 ])
1775
1776 dnl *** OS/X AVCVideoServices ***
1777 translit(dnm, m, l) AM_CONDITIONAL(USE_AVC, true)
1778 HAVE_AVC="no"
1779 AG_GST_CHECK_FEATURE(AVC, [AVC Video Services], avcsrc, [
1780   AC_LANG_PUSH([C++])
1781   save_CPPFLAGS="$CPPFLAGS"
1782   CPPFLAGS="$CPPFLAGS -framework AVCVideoServices -framework CoreFoundation"
1783   save_LIBS="$LIBS"
1784   LIBS="$LIBS -framework AVCVideoServices -framework CoreFoundation"
1785   AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[]])],[HAVE_AVC=yes],[HAVE_AVC=no])
1786   LIBS=$save_LIBS
1787   CPPFLAGS=$save_CPPFLAGS
1788   AC_LANG_POP([C++])
1789 ])
1790 dnl in case header AVCVideoServices/AVCVideoServices.h is found on other platforms
1791 case "$host" in
1792   *-*darwin*)
1793     ;;
1794   *)
1795     HAVE_AVC="no"
1796     ;;
1797 esac
1798
1799 dnl check for shm_open (for shm plugin)
1800 translit(dnm, m, l) AM_CONDITIONAL(USE_SHM, true)
1801 AG_GST_CHECK_FEATURE(SHM, [POSIX shared memory source and sink], shm, [
1802     if test "x$HAVE_SYS_SOCKET_H" = "xyes"; then
1803         case $host in
1804         *-darwin* | *-macos10*)
1805             AC_DEFINE(HAVE_OSX,[1],[Apple Mac OS X operating system detected])
1806             HAVE_SHM=yes
1807             ;;
1808         *-*-OpenBSD*)
1809             HAVE_SHM=yes
1810             ;;
1811         *)
1812             AC_CHECK_LIB([rt], [shm_open],
1813                 AC_CHECK_DECL([MSG_NOSIGNAL], HAVE_SHM=yes, HAVE_SHM=no, [
1814                 #include <sys/socket.h>
1815                     ]),
1816                 HAVE_SHM=no)
1817             AC_SUBST(SHM_LIBS, "-lrt")
1818             ;;
1819         esac
1820     else
1821         HAVE_SHM=no
1822     fi
1823 ])
1824
1825 dnl check for Video CD
1826 translit(dnm, m, l) AM_CONDITIONAL(USE_VCD, true)
1827 AG_GST_CHECK_FEATURE(VCD, [Video CD], vcdsrc, [
1828   AC_CHECK_HEADER(linux/cdrom.h, HAVE_VCD="yes", HAVE_VCD="no")
1829 ])
1830
1831 dnl check for OpenSL ES
1832 translit(dnm, m, l) AM_CONDITIONAL(USE_OPENSLES, true)
1833 AG_GST_CHECK_FEATURE(OPENSLES, [OpenSL ES], opensl, [
1834   AC_CHECK_HEADER(SLES/OpenSLES.h, HAVE_OPENSLES="yes", HAVE_OPENSLES="no")
1835 ])
1836
1837 dnl *** UVC H264 ***
1838 translit(dnm, m, l) AM_CONDITIONAL(USE_UVCH264, true)
1839 AG_GST_CHECK_FEATURE(UVCH264, [UVC H264], uvch264, [
1840   AC_CHECK_HEADER(linux/uvcvideo.h, HAVE_UVCVIDEO_H=yes, HAVE_UVCVIDEO_H=no)
1841   PKG_CHECK_MODULES(G_UDEV, gudev-1.0 , [
1842           AC_DEFINE([HAVE_GUDEV], 1, [Define if gudev is installed])
1843           HAVE_GUDEV="yes" ],
1844           [HAVE_GUDEV="no"])
1845   PKG_CHECK_MODULES(LIBUSB, libusb-1.0 , [
1846           AC_DEFINE([HAVE_LIBUSB], 1, [Define if libusb 1.x is installed])
1847           HAVE_LIBUSB="yes" ],
1848           [HAVE_LIBUSB="no"])
1849   if test "x$HAVE_UVCVIDEO_H" = "xyes" && \
1850      test "x$HAVE_GUDEV" = "xyes" && \
1851      test "x$HAVE_LIBUSB" = "xyes"; then
1852     HAVE_UVCH264=yes
1853   else
1854     HAVE_UVCH264=no
1855   fi
1856 ])
1857 AC_SUBST(LIBUDEV_CFLAGS)
1858 AC_SUBST(LIBUDEV_LIBS)
1859 AC_SUBST(LIBUSB_CFLAGS)
1860 AC_SUBST(LIBUSB_LIBS)
1861
1862 dnl *** NVENC ***
1863 translit(dnm, m, l) AM_CONDITIONAL(USE_NVENC, true)
1864 AG_GST_CHECK_FEATURE(NVENC, [NVIDIA Encode API], nvenc, [
1865   AC_ARG_WITH([cuda-prefix],
1866           AS_HELP_STRING([--with-cuda-prefix],
1867           [Use the provided prefix for detecting the cuda installation]),
1868           [AS_IF([test "x$with_cuda_prefix" != "x"],
1869                  [CUDA_PREFIX="$with_cuda_prefix"])],
1870           [CUDA_PREFIX=""])
1871
1872   HAVE_CUDA="yes"
1873   if test "x$CUDA_PREFIX" != "x"; then
1874     dnl only override if not already set
1875     if test "x$CUDA_CFLAGS" = "x" -a "x$CUDA_LIBS" = "x"; then
1876       dnl this is an educated guess, user can always override these
1877       CUDA_CFLAGS="-I$CUDA_PREFIX/include"
1878       CUDA_LIBS="-L$CUDA_PREFIX/lib -L$CUDA_PREFIX/lib64 -L$CUDA_PREFIX/lib/stubs -L$CUDA_PREFIX/lib64/stubs -lcuda -lcudart"
1879     fi
1880   else
1881     PKG_CHECK_MODULES([CUDA], [cuda-7.5 cudart-7.5],, [
1882       PKG_CHECK_MODULES([CUDA], [cuda-7.0 cudart-7.0],, [
1883         PKG_CHECK_MODULES([CUDA], [cuda-6.5 cudart-6.5],, [
1884           AC_MSG_WARN([Could not find cuda headers/libraries])])])])
1885   fi
1886
1887   HAVE_CUDA_H=no
1888   HAVE_CUDART_H=no
1889   save_CPPFLAGS="$CPPFLAGS"
1890   CPPFLAGS="$CUDA_CFLAGS $save_CPPFLAGS "
1891   AC_CHECK_HEADER([cuda.h], [HAVE_CUDA_H=yes],
1892       AC_MSG_WARN([Could not find cuda.h]))
1893   AC_CHECK_HEADER([cuda_runtime_api.h], [HAVE_CUDART_H=yes],
1894       AC_MSG_WARN([Could not find cuda_runtime_api.h]))
1895   CPPFLAGS=$save_CPPFLAGS
1896
1897   dnl libcuda and libcudart libraries
1898   save_LIBS="$LIBS"
1899   LIBS="$CUDA_LIBS $save_LIBS"
1900   HAVE_CUDART_LIB="no"
1901   AC_CHECK_LIB(cudart,cudaGetErrorString,[HAVE_CUDART_LIB="yes"], [
1902       AC_MSG_WARN([Could not find cudart library])])
1903   HAVE_CUDA_LIB="no"
1904   AC_CHECK_LIB(cuda,cuInit,[HAVE_CUDA_LIB="yes"], [
1905       AC_MSG_WARN([Could not find cuda library])])
1906   LIBS="$save_LIBS"
1907
1908   dnl nvEncodeAPI.h header
1909   HAVE_NVENCODEAPI_H=no
1910   AC_ARG_VAR(NVENCODE_CFLAGS, [C compiler flags for NvEncodeAPI.h])
1911   save_CPPFLAGS="$CPPFLAGS"
1912   CPPFLAGS="$NVENCODE_CFLAGS $save_CPPFLAGS"
1913   AC_CHECK_HEADER([nvEncodeAPI.h], [
1914       AC_PREPROC_IFELSE([AC_LANG_SOURCE([[#include <nvEncodeAPI.h>
1915           #if NVENCAPI_MAJOR_VERSION < 5
1916           #error "Need nvEncodeAPI.h >= 5.0"
1917           #endif
1918           ]])], [
1919           HAVE_NVENCODEAPI_H=yes
1920           ], [
1921           AC_MSG_WARN([nvEncodeAPI.h must be >= 5.0])
1922           ])
1923       ],
1924       AC_MSG_WARN([Could not find nvEncodeAPI.h]))
1925   AC_SUBST(NVENCODE_CFLAGS)
1926   CPPFLAGS="$save_CPPFLAGS"
1927
1928   dnl libnvnidia-encode library
1929   HAVE_NVENCODE_LIB=no
1930   AC_ARG_VAR(NVENCODE_LIBS, [linker flags for nvidia-encode])
1931   saved_LIBS="$LIBS"
1932   LIBS="$NVENCODE_LIBS $saved_LIBS"
1933   AC_CHECK_LIB(nvidia-encode, NvEncodeAPICreateInstance, [HAVE_NVENCODE_LIB="yes"],
1934       AC_MSG_WARN([Could not find library nvidia-encode]))
1935   NVENCODE_LIBS="$NVENCODE_LIBS -lnvidia-encode"
1936   AC_SUBST(NVENCODE_LIBS)
1937   LIBS="$saved_LIBS"
1938
1939   USE_NVENC_GST_GL=no
1940   if test "x$HAVE_CUDA_H" = "xyes" \
1941       -a "x$HAVE_CUDART_H" = "xyes" \
1942       -a "x$HAVE_CUDA_LIB" = "xyes" \
1943       -a "x$HAVE_CUDART_LIB" = "xyes" \
1944       -a "x$HAVE_NVENCODEAPI_H" = "xyes" \
1945       -a "x$HAVE_NVENCODE_LIB" = "xyes"; then
1946     HAVE_NVENC="yes"
1947     if test x"$USE_OPENGL" = x"yes"; then
1948       dnl cuda-gl interop header
1949       save_CPPFLAGS="$CPPFLAGS"
1950       CPPFLAGS="$save_CPPFLAGS $CUDA_CFLAGS"
1951       AC_CHECK_HEADER([cuda_gl_interop.h], [
1952         USE_NVENC_GST_GL="yes"
1953         AC_DEFINE(HAVE_NVENC_GST_GL, [1] , [NVENC GStreamer OpenGL support available])
1954         ])
1955       CPPFLAGS="$save_CPPFLAGS"
1956     fi
1957   else
1958     HAVE_NVENC="no"
1959   fi
1960 ])
1961 AM_CONDITIONAL(USE_NVENC_GST_GL, test "x$USE_NVENC_GST_GL" = "xyes")
1962
1963 dnl check for tinyalsa
1964 translit(dnm, m, l) AM_CONDITIONAL(USE_TINYALSA, true)
1965 AG_GST_CHECK_FEATURE(TINYALSA, [tinyalsa], tinyalsa, [
1966   AC_CHECK_HEADER(tinyalsa/asoundlib.h, HAVE_TINYALSA="yes", HAVE_TINYALSA="no")
1967 ])
1968
1969 dnl check for intel mediasdk
1970 translit(dnm, m, l) AM_CONDITIONAL(USE_MSDK, true)
1971 AG_GST_CHECK_FEATURE(MSDK, [Intel MediaSDK], msdk, [
1972   AC_ARG_WITH([msdk-prefix],
1973           AS_HELP_STRING([--with-msdk-prefix],
1974           [Use the provided prefix for detecting the Intel MediaSDK]),
1975           [AS_IF([test "x$with_msdk_prefix" != "x"],
1976                  [MSDK_PREFIX="$with_msdk_prefix"])],
1977           [AS_IF([test "x$MFX_HOME" != "x"],
1978                  [MSDK_PREFIX="$MFX_HOME"],
1979                  [MSDK_PREFIX="/opt/intel/media"])])
1980   MSDK_CFLAGS="-I$MSDK_PREFIX/include"
1981   MSDK_LIBS="-L$MSDK_PREFIX/lib/lin_x64 -lmfx -ldl"
1982   AC_SUBST(MSDK_CFLAGS)
1983   AC_SUBST(MSDK_LIBS)
1984
1985   save_CPPFLAGS="$CPPFLAGS"
1986   CPPFLAGS="$MSDK_CFLAGS $save_CPPFLAGS"
1987   AC_CHECK_HEADER(mfxdefs.h, HAVE_MFXDEFS_H="yes", HAVE_MFXDEFS_H="no")
1988   CPPFLAGS="$save_CPPFLAGS"
1989
1990   save_LIBS="$LIBS"
1991   LIBS="$MSDK_LIBS $LIBS"
1992   AC_LANG_PUSH([C++])
1993   AC_CHECK_LIB(mfx,MFXInit,HAVE_MFX_LIB="yes",HAVE_MFX_LIB="no")
1994   AC_LANG_POP([C++])
1995   LIBS="$save_LIBS"
1996
1997   PKG_CHECK_MODULES(LIBVA_DRM, libva-drm, HAVE_LIBVA_DRM="yes", HAVE_LIBVA_DRM="no")
1998
1999   if test "x$HAVE_MFXDEFS_H" = "xyes" \
2000       -a "x$HAVE_MFX_LIB" = "xyes" \
2001       -a "x$HAVE_LIBVA_DRM" = "xyes"; then
2002     HAVE_MSDK="yes"
2003   else
2004     HAVE_MSDK="no"
2005   fi
2006 ])
2007 AM_CONDITIONAL(USE_MSDK_LIBVA,
2008     test "x$HAVE_MSDK" = "xyes" -a "x$HAVE_LIBVA_DRM" = "xyes")
2009
2010 dnl *** ext plug-ins ***
2011 dnl keep this list sorted alphabetically !
2012
2013 if test "x$BUILD_EXTERNAL" = "xyes"; then
2014
2015 dnl *** assrender ***
2016 translit(dnm, m, l) AM_CONDITIONAL(USE_ASSRENDER, true)
2017 AG_GST_CHECK_FEATURE(ASSRENDER, [ASS/SSA renderer], assrender, [
2018   PKG_CHECK_MODULES(ASSRENDER, libass >= 0.10.2, [
2019     HAVE_ASSRENDER="yes" ], [
2020     HAVE_ASSRENDER="no"
2021   ])
2022 ])
2023 AC_SUBST(ASSRENDER_CFLAGS)
2024 AC_SUBST(ASSRENDER_LIBS)
2025
2026 dnl *** vo-amrwbenc ***
2027 translit(dnm, m, l) AM_CONDITIONAL(USE_VOAMRWBENC, true)
2028 AG_GST_CHECK_FEATURE(VOAMRWBENC, [vo-amrwbenc library], vo-amrwbenc, [
2029   AG_GST_PKG_CHECK_MODULES(VOAMRWBENC, vo-amrwbenc >= 0.1.0)
2030 ])
2031
2032 dnl *** vo-aacenc ***
2033 translit(dnm, m, l) AM_CONDITIONAL(USE_VOAACENC, true)
2034 AG_GST_CHECK_FEATURE(VOAACENC, [vo-aacenc library], vo-aacenc, [
2035   AG_GST_PKG_CHECK_MODULES(VOAACENC, vo-aacenc >= 0.1.0)
2036 ])
2037
2038 dnl *** bs2b ***
2039 translit(dnm, m, l) AM_CONDITIONAL(USE_BS2B, true)
2040 AG_GST_CHECK_FEATURE(BS2B, [bs2b], bs2b, [
2041   PKG_CHECK_MODULES(BS2B, libbs2b >= 3.1.0, HAVE_BS2B="yes", [
2042     HAVE_BS2B="no"
2043   ])
2044   AC_SUBST(BS2B_CFLAGS)
2045   AC_SUBST(BS2B_LIBS)
2046 ])
2047
2048 dnl *** BZ2 ***
2049 translit(dnm, m, l) AM_CONDITIONAL(USE_BZ2, true)
2050 AG_GST_CHECK_FEATURE(BZ2, [bz2 library], bz2, [
2051   save_LIBS=$LIBS
2052   LIBS="$LIBS -lbz2"
2053   AC_MSG_CHECKING([for BZ2_bzlibVersion in -lbz2])
2054   AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <bzlib.h>]], [[const char *version = BZ2_bzlibVersion ();]])],[HAVE_BZ2=yes],[HAVE_BZ2=no])
2055   AC_MSG_RESULT($HAVE_BZ2)
2056   LIBS=$save_LIBS
2057   if test "x$HAVE_BZ2" = "xyes"; then
2058     BZ2_LIBS="-lbz2"
2059   fi
2060   AC_SUBST(BZ2_LIBS)
2061
2062 ])
2063
2064 #dnl *** cairo ***
2065 #translit(dnm, m, l) AM_CONDITIONAL(USE_CAIRO, true)
2066 #AG_GST_CHECK_FEATURE(CAIRO, [cairo plug-in], cairo, [
2067 #  PKG_CHECK_MODULES(CAIRO, cairo >= 1.0 glitz-glx, HAVE_CAIRO=yes, [
2068 #    HAVE_CAIRO=no
2069 #  ])
2070 #  AC_SUBST(CAIRO_CFLAGS)
2071 #  AC_SUBST(CAIRO_LIBS)
2072 #])
2073
2074 dnl *** chromaprint ***
2075 translit(dnm, m, l) AM_CONDITIONAL(USE_CHROMAPRINT, true)
2076 AG_GST_CHECK_FEATURE(CHROMAPRINT, [chromaprint], chromaprint, [
2077   PKG_CHECK_MODULES(CHROMAPRINT, libchromaprint, HAVE_CHROMAPRINT="yes", [
2078     HAVE_CHROMAPRINT="no"
2079   ])
2080   AC_SUBST(CHROMAPRINT_CFLAGS)
2081   AC_SUBST(CHROMAPRINT_LIBS)
2082 ])
2083
2084 dnl *** Curl ***
2085 translit(dnm, m, l) AM_CONDITIONAL(USE_CURL, true)
2086 AG_GST_CHECK_FEATURE(CURL, [Curl plugin], curl, [
2087   PKG_CHECK_MODULES(CURL, libcurl >= 7.35.0, [
2088     HAVE_CURL="yes"
2089     AC_CHECK_HEADERS([unistd.h sys/socket.h sys/types.h netinet/in.h netinet/tcp.h fcntl.h], [ ], [
2090       AC_CHECK_HEADERS([unistd.h sys/types.h winsock2.h ws2tcpip.h fcntl.h], [ ], [HAVE_CURL="no"])
2091     ])
2092     AC_CHECK_HEADERS([netinet/ip.h], [], [HAVE_CURL="no"],
2093     [[#ifdef HAVE_SYS_TYPES_H
2094      # include <sys/types.h>
2095      #endif
2096      #ifdef HAVE_NETINET_IN_H
2097      # include <netinet/in.h>
2098      #endif
2099     ]])
2100     AC_MSG_CHECKING([for socket support needed by curlsink])
2101     AC_MSG_RESULT($HAVE_CURL)
2102   ], [
2103     HAVE_CURL="no"
2104   ])
2105   AC_SUBST(CURL_CFLAGS)
2106   AC_SUBST(CURL_LIBS)
2107   PKG_CHECK_MODULES(SSH2, libssh2 >= 1.4.3, [
2108     HAVE_SSH2="yes"
2109     AC_DEFINE(HAVE_SSH2, 1, [Define if libssh2 is available])
2110   ], [
2111     HAVE_SSH2="no"
2112   ])
2113   AM_CONDITIONAL(USE_SSH2, test "x$HAVE_SSH2" = "xyes")
2114   AC_SUBST(SSH2_CFLAGS)
2115   AC_SUBST(SSH2_LIBS)
2116 ],,,[AM_CONDITIONAL(USE_SSH2, false)])
2117
2118 dnl **** DASH ****
2119 translit(dnm, m, l) AM_CONDITIONAL(USE_DASH, true)
2120 AG_GST_CHECK_FEATURE(DASH, [DASH plug-in], dash, [
2121   PKG_CHECK_MODULES(LIBXML2, libxml-2.0 >= 2.8, [HAVE_LIBXML2="yes"
2122     HAVE_DASH="yes"], [HAVE_LIBXML2="no"
2123     HAVE_DASH="no"])
2124   AC_SUBST(LIBXML2_CFLAGS)
2125   AC_SUBST(LIBXML2_LIBS)
2126 ])
2127
2128 dnl *** dc1394  ***
2129 translit(dnm, m, l) AM_CONDITIONAL(USE_DC1394, true)
2130 AG_GST_CHECK_FEATURE(DC1394, [libdc1394], dc1394, [
2131    PKG_CHECK_MODULES(LIBDC1394, libdc1394-2 >= 2.0.0, [
2132         if test -z "`$PKG_CONFIG --modversion libdc1394-2 | grep 2.0.0-rc`"; then
2133                 HAVE_DC1394="yes"
2134         else
2135                 HAVE_DC1394="no"
2136         fi
2137    ], [
2138         HAVE_DC1394="no"
2139         AC_MSG_RESULT(no)
2140    ])
2141    AC_SUBST(LIBDC1394_CFLAGS)
2142    AC_SUBST(LIBDC1394_LIBS)
2143 ])
2144
2145 dnl *** decklink  ***
2146 translit(dnm, m, l) AM_CONDITIONAL(USE_DECKLINK, true)
2147 AG_GST_CHECK_FEATURE(DECKLINK, [decklink], decklink, [
2148    HAVE_DECKLINK=no
2149    case "$host" in
2150      *android*)
2151        HAVE_DECKLINK=no
2152        ;;
2153      *-*linux*)
2154        if test "x$HAVE_PTHREAD_H" = "xyes"; then
2155          AC_CHECK_LIB(dl, dlopen,
2156            [
2157             HAVE_DECKLINK=yes
2158             DECKLINK_CXXFLAGS=
2159             DECKLINK_LIBS="-lpthread -ldl"
2160            ])
2161        fi
2162        ;;
2163      *-*darwin*)
2164        if test "x$HAVE_PTHREAD_H" = "xyes"; then
2165          AC_CHECK_LIB(dl, dlopen,
2166            [
2167             HAVE_DECKLINK=yes
2168             DECKLINK_CXXFLAGS=
2169             DECKLINK_LIBS="-lpthread -ldl"
2170             HAVE_DECKLINK_OSX=yes
2171            ])
2172        fi
2173        ;;
2174      *)
2175        HAVE_DECKLINK=no
2176        ;;
2177    esac
2178
2179    AC_SUBST(DECKLINK_CXXFLAGS)
2180    AC_SUBST(DECKLINK_LIBS)
2181 ])
2182 AM_CONDITIONAL(DECKLINK_OSX, test "x$HAVE_DECKLINK_OSX" = xyes)
2183
2184 dnl **** DirectFB ****
2185 translit(dnm, m, l) AM_CONDITIONAL(USE_DIRECTFB, true)
2186 AG_GST_CHECK_FEATURE(DIRECTFB, [directfb], dfbvideosink , [
2187   PKG_CHECK_MODULES(DIRECTFB, directfb >= 0.9.24, HAVE_DIRECTFB="yes", [
2188     HAVE_DIRECTFB="no"
2189   ])
2190 ])
2191
2192 dnl **** Wayland ****
2193 translit(dnm, m, l) AM_CONDITIONAL(USE_WAYLAND, true)
2194 AC_PATH_PROG([wayland_scanner], [wayland-scanner])
2195 AG_GST_CHECK_FEATURE(WAYLAND, [wayland sink], wayland , [
2196   PKG_CHECK_MODULES(WAYLAND, wayland-client >= 1.4.0 libdrm >= 2.4.55 wayland-protocols >= 1.4, [
2197     if test "x$wayland_scanner" != "x"; then
2198       HAVE_WAYLAND="yes"
2199       AC_SUBST(WAYLAND_PROTOCOLS_DATADIR, `$PKG_CONFIG --variable=pkgdatadir wayland-protocols`)
2200     else
2201       AC_MSG_RESULT([wayland-scanner is required to build the wayland plugin])
2202       HAVE_WAYLAND="no"
2203     fi
2204     ],
2205     [ HAVE_WAYLAND="no"
2206   ])
2207 ])
2208
2209 dnl **** WebP ****
2210 translit(dnm, m, l) AM_CONDITIONAL(USE_WEBP, true)
2211 AG_GST_CHECK_FEATURE(WEBP, [WebP], webp , [
2212   PKG_CHECK_MODULES(WEBP, libwebp >= 0.2.1, [
2213     HAVE_WEBP="yes" ], [ HAVE_WEBP="no"
2214   ])
2215   AC_SUBST(WEBP_CFLAGS)
2216   AC_SUBST(WEBP_LIBS)
2217 ])
2218
2219 dnl *** Daala ***
2220 translit(dnm, m, l) AM_CONDITIONAL(USE_DAALA, true)
2221 AG_GST_CHECK_FEATURE(DAALA, [daala], daala, [
2222   if test "x$BUILD_EXPERIMENTAL" = "xyes"; then
2223     PKG_CHECK_MODULES(DAALA, daalaenc daaladec, [
2224             HAVE_DAALA="yes"
2225     ], [
2226             HAVE_DAALA="no"
2227     ])
2228     AC_SUBST(DAALA_CFLAGS)
2229     AC_SUBST(DAALA_LIBS)
2230   fi
2231 ])
2232
2233 dnl *** DTS ***
2234 translit(dnm, m, l) AM_CONDITIONAL(USE_DTS, true)
2235 AG_GST_CHECK_FEATURE(DTS, [dts library], dtsdec, [
2236   HAVE_DTS="yes"
2237   AG_GST_CHECK_LIBHEADER(DTS, dca, dca_init, $LIBM, dca.h,
2238     DTS_LIBS="-ldca $LIBM", HAVE_DTS="no")
2239   if test $HAVE_DTS = "no"; then
2240     AG_GST_CHECK_LIBHEADER(DTS, dts_pic, dts_init, $LIBM, dts.h,
2241       [ DTS_LIBS="-ldts_pic $LIBM"
2242         AC_DEFINE(DTS_OLD, 1, [Define if an old libdts is used])
2243       ])
2244   fi
2245   AC_SUBST(DTS_LIBS)
2246 ])
2247
2248 dnl *** resindvd ***
2249 translit(dnm, m, l) AM_CONDITIONAL(USE_RESINDVD, true)
2250 AG_GST_CHECK_FEATURE(RESINDVD, [resindvd plugin], resindvd, [
2251   PKG_CHECK_MODULES(DVDNAV, dvdnav >= 4.1.2 dvdread >= 4.1.2, HAVE_RESINDVD="yes", [
2252     HAVE_RESINDVD="no"
2253   ])
2254 ])
2255
2256 dnl **** Free AAC Encoder (FAAC) ****
2257 translit(dnm, m, l) AM_CONDITIONAL(USE_FAAC, true)
2258 AG_GST_CHECK_FEATURE(FAAC, [AAC encoder plug-in], faac, [
2259   AG_GST_CHECK_LIBHEADER(FAAC, faac, faacEncOpen, $LIBM, faac.h,
2260     FAAC_LIBS="-lfaac $LIBM")
2261   AC_SUBST(FAAC_LIBS)
2262 ])
2263
2264 dnl **** Free AAC Decoder (FAAD2) ****
2265 translit(dnm, m, l) AM_CONDITIONAL(USE_FAAD, true)
2266 AG_GST_CHECK_FEATURE(FAAD, [FAAD2 AAC decoder plug-in], faad, [
2267   AG_GST_CHECK_LIBHEADER(FAAD, faad, NeAACDecOpen, $LIBM, neaacdec.h, [
2268     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <faad.h>]], [[
2269       #if !defined(FAAD2_VERSION) || !defined(FAAD_FMT_DOUBLE)
2270       #error Not faad2
2271       #elif !defined(LATM)
2272       #error Not faad2 >= 2.7
2273       #endif
2274     ]])],[
2275       HAVE_FAAD="yes"
2276       FAAD_LIBS="-lfaad"
2277     ], [
2278       AC_MSG_WARN([Found libfaad, but version not recent enough. Need faad2 >= 2.7])
2279       HAVE_FAAD="no"
2280     ])
2281   ], [
2282       HAVE_FAAD="no"
2283   ])
2284   AC_SUBST(FAAD_LIBS)
2285 ])
2286
2287 dnl *** fbdev ***
2288 translit(dnm, m, l) AM_CONDITIONAL(USE_FBDEV, true)
2289 AG_GST_CHECK_FEATURE(FBDEV, [linux framebuffer], fbdevsink, [
2290   if test "x$HAVE_FBDEV" != "xyes"; then
2291     AC_CHECK_HEADER([linux/fb.h], HAVE_FBDEV=yes, HAVE_FBDEV=no)
2292   fi
2293 ])
2294
2295 dnl *** fdkaac ***
2296 translit(dnm, m, l) AM_CONDITIONAL(USE_FDK_AAC, true)
2297 AG_GST_CHECK_FEATURE(FDK_AAC, [fdkaac plugin], fdkaac, [
2298   PKG_CHECK_MODULES(FDK_AAC, fdk-aac >= 0.1.4, [
2299     HAVE_FDK_AAC="yes",
2300     HAVE_FDK_AAC_0_1_4="yes"
2301     AC_DEFINE(HAVE_FDK_AAC_0_1_4 1, [Define if we have fdk-aac >= 0.1.4])
2302   ],[
2303     PKG_CHECK_MODULES(FDK_AAC, fdk-aac, HAVE_FDK_AAC="yes", HAVE_FDK_AAC="no")
2304   ])
2305 ])
2306
2307 dnl *** flite ***
2308 translit(dnm, m, l) AM_CONDITIONAL(USE_FLITE, true)
2309 AG_GST_CHECK_FEATURE(FLITE, [Flite plugin], flite, [
2310   AG_GST_CHECK_LIBHEADER(FLITE, flite, flite_init, $LIBM, flite/flite.h,
2311     FLITE_LIBS="-lflite -lflite_cmu_us_kal -lflite_usenglish -lflite_cmulex $LIBM")
2312
2313   AC_SUBST(FLITE_CFLAGS)
2314   AC_SUBST(FLITE_LIBS)
2315 ])
2316
2317 dnl *** gsm ***
2318 translit(dnm, m, l) AM_CONDITIONAL(USE_GSM, true)
2319 AG_GST_CHECK_FEATURE(GSM, [GSM library], gsmenc gsmdec, [
2320   AG_GST_CHECK_LIBHEADER(GSM, gsm, gsm_create, , gsm.h, GSM_LIBS="-lgsm")
2321   if test $HAVE_GSM != "yes"; then
2322     AG_GST_CHECK_LIBHEADER(GSM, gsm, gsm_create, , gsm/gsm.h, GSM_LIBS="-lgsm")
2323     if test $HAVE_GSM = "yes"; then
2324       AC_DEFINE(GSM_HEADER_IN_SUBDIR, 1, [Define if GSM header in gsm/ subdir])
2325     fi
2326   fi
2327   AC_SUBST(GSM_LIBS)
2328 ])
2329
2330 dnl *** fluidSynth ***
2331 translit(dnm, m, l) AM_CONDITIONAL(USE_FLUIDSYNTH, true)
2332 AG_GST_CHECK_FEATURE(FLUIDSYNTH, [fluidsynth], fluidsynth, [
2333   PKG_CHECK_MODULES(FLUIDSYNTH, fluidsynth >= 1.0, HAVE_FLUIDSYNTH="yes", [
2334     HAVE_FLUIDSYNTH="no"
2335   ])
2336 ])
2337
2338 dnl *** kate ***
2339 translit(dnm, m, l) AM_CONDITIONAL(USE_KATE, true)
2340 AG_GST_CHECK_FEATURE(KATE, [Kate], kate, [
2341   PKG_CHECK_MODULES(KATE, kate >= 0.1.7, HAVE_KATE="yes", [
2342     HAVE_KATE="no"
2343   ])
2344   AC_SUBST(KATE_CFLAGS)
2345   AC_SUBST(KATE_LIBS)
2346   PKG_CHECK_MODULES(TIGER, tiger >= 0.3.2,
2347     [
2348       HAVE_TIGER="yes"
2349       AC_DEFINE(HAVE_TIGER, 1, [Define if libtiger is available])
2350     ],
2351     [
2352       HAVE_TIGER="no"
2353     ]
2354   )
2355   AM_CONDITIONAL(USE_TIGER, test "x$HAVE_TIGER" = "xyes")
2356   AC_SUBST(TIGER_CFLAGS)
2357   AC_SUBST(TIGER_LIBS)
2358 ],,,[AM_CONDITIONAL(USE_TIGER, false)])
2359
2360 dnl *** kms ***
2361 translit(dnm, m, l) AM_CONDITIONAL(USE_KMS, true)
2362 AG_GST_CHECK_FEATURE(KMS, [drm/kms libraries], kms, [
2363   AG_GST_PKG_CHECK_MODULES(GST_ALLOCATORS, gstreamer-allocators-1.0)
2364   PKG_CHECK_MODULES([KMS_DRM], [libdrm >= 2.4.55], HAVE_KMS=yes, HAVE_KMS=no)
2365 ])
2366
2367 dnl *** ladspa ***
2368 translit(dnm, m, l) AM_CONDITIONAL(USE_LADSPA, true)
2369 AG_GST_CHECK_FEATURE(LADSPA, [ladspa], ladspa, [
2370   AC_CHECK_HEADER(ladspa.h, HAVE_LADSPA="yes", HAVE_LADSPA="no")
2371
2372   PKG_CHECK_MODULES(LRDF, lrdf, HAVE_LRDF=yes, HAVE_LRDF=no)
2373   if test $HAVE_LRDF = "yes"; then
2374     AC_DEFINE(HAVE_LRDF, 1, [Define if we have liblrdf])
2375   fi
2376   AC_SUBST(LRDF_LIBS)
2377   AC_SUBST(LRDF_CFLAGS)
2378 ])
2379
2380 dnl *** LV2 ***
2381 translit(dnm, m, l) AM_CONDITIONAL(USE_LV2, true)
2382 AG_GST_CHECK_FEATURE(LV2, [lv2], lv2, [
2383   PKG_CHECK_MODULES(LILV, lilv-0 >= 0.22, [
2384     HAVE_LV2="yes",
2385     HAVE_LILV_0_22="yes"
2386     AC_DEFINE(HAVE_LILV_0_22, 1, [Define if we have liblilv >= 0.22])
2387   ],[
2388     PKG_CHECK_MODULES(LILV, lilv-0 >= 0.16, HAVE_LV2="yes", HAVE_LV2="no")
2389   ])
2390   AC_SUBST(LILV_CFLAGS)
2391   AC_SUBST(LILV_LIBS)
2392 ])
2393
2394 dnl *** libde265 ***
2395 translit(dnm, m, l) AM_CONDITIONAL(USE_LIBDE265, true)
2396 AG_GST_CHECK_FEATURE(LIBDE265, [libde265 HEVC/H.265 decoder], libde265, [
2397   PKG_CHECK_MODULES(LIBDE265, libde265 >= 0.9, HAVE_LIBDE265="yes", HAVE_LIBDE265="no")
2398   AC_SUBST(LIBDE265_CFLAGS)
2399   AC_SUBST(LIBDE265_LIBS)
2400 ])
2401
2402 dnl *** libmms ***
2403 translit(dnm, m, l) AM_CONDITIONAL(USE_LIBMMS, true)
2404 AG_GST_CHECK_FEATURE(LIBMMS, [mms protocol library], libmms, [
2405   dnl check with pkg-config first
2406   PKG_CHECK_MODULES(LIBMMS, libmms >= 0.4, HAVE_LIBMMS="yes", [
2407     HAVE_LIBMMS="no"
2408   ])
2409 ])
2410 AC_SUBST(LIBMMS_LIBS)
2411
2412
2413 dnl *** libsrtp ***
2414 translit(dnm, m, l) AM_CONDITIONAL(USE_SRTP, true)
2415 AG_GST_CHECK_FEATURE(SRTP, [srtp library], srtp, [
2416   PKG_CHECK_MODULES(SRTP, libsrtp, HAVE_SRTP="yes",
2417     AG_GST_CHECK_LIBHEADER(SRTP, srtp, srtp_init, , srtp/srtp.h, SRTP_LIBS="-lsrtp")
2418   )
2419   AC_SUBST(SRTP_LIBS)
2420   AC_SUBST(SRTP_CFLAGS)
2421 ])
2422
2423 dnl *** dtls ***
2424 translit(dnm, m, l) AM_CONDITIONAL(USE_DTLS, true)
2425 AG_GST_CHECK_FEATURE(DTLS, [DTLS plugin], dtls, [
2426   PKG_CHECK_MODULES(DTLS, [ openssl >= 1.0.1  libcrypto ], [
2427     HAVE_DTLS="yes"
2428     AC_SUBST(DTLS_CFLAGS)
2429     AC_SUBST(DTLS_LIBS)
2430   ], [
2431     HAVE_DTLS="no"
2432   ])
2433 ])
2434
2435 dnl *** ttml ***
2436 translit(dnm, m, l) AM_CONDITIONAL(USE_TTML, true)
2437 AG_GST_CHECK_FEATURE(TTML, [TTML plugin], ttml, [
2438   if test "x$BUILD_EXPERIMENTAL" = "xyes"; then
2439     PKG_CHECK_MODULES(TTML, [ libxml-2.0 >= 2.9.2 pango cairo pangocairo ], [
2440       HAVE_TTML="yes"
2441     ], [
2442       HAVE_TTML="no"
2443     ])
2444   fi
2445 ])
2446
2447 dnl *** modplug ***
2448 translit(dnm, m, l) AM_CONDITIONAL(USE_MODPLUG, true)
2449 AG_GST_CHECK_FEATURE(MODPLUG, modplug, modplug, [
2450   if test "x$HAVE_CXX" != "xyes"; then
2451     AC_MSG_WARN([Not compiling modplug plugin as it requires a C++ compiler])
2452     HAVE_MODPLUG="no"
2453   else
2454     PKG_CHECK_MODULES(MODPLUG, libmodplug, HAVE_MODPLUG="yes", HAVE_MODPLUG="no")
2455   fi
2456   AC_SUBST(MODPLUG_CFLAGS)
2457   AC_SUBST(MODPLUG_LIBS)
2458 ])
2459
2460 dnl *** mjpegtools version info ***
2461 dnl some may prefer older version (given quirks above)
2462 dnl hm, no version info seems available within mjpegtools headers
2463 dnl and API really moves along
2464 echo
2465 PKG_CHECK_EXISTS(mjpegtools >= 1.6.1.93 mjpegtools < 1.8.0, [
2466   mjpegtools_api=10601
2467 ], [
2468   PKG_CHECK_EXISTS(mjpegtools >= 1.8.0 mjpegtools < 1.9.0, [
2469     mjpegtools_api=10800
2470   ], [
2471     PKG_CHECK_EXISTS(mjpegtools >= 2.0.0, [
2472       mjpegtools_api=20000
2473     ], [
2474       PKG_CHECK_MODULES(MJPEG, mjpegtools >= 1.9.0 mjpegtools < 2.0.0, [
2475         dnl logging API changed in release candidates
2476         OLD_CFLAGS="$CFLAGS"
2477         OLD_LIBS="$LIBS"
2478         CFLAGS="$MJPEG_CFLAGS"
2479         LIBS="$LIBS $MJPEG_LIBS -lmjpegutils $LIBM $PTHREAD_LIBS"
2480         AC_CHECK_FUNC(mjpeg_loglev_t, [
2481           mjpegtools_api=10903
2482           ], [
2483           mjpegtools_api=10900
2484           ])
2485         CFLAGS="$OLD_CFLAGS"
2486         LIBS="$OLD_LIBS"
2487       ], [
2488         mjpegtools_api=0
2489       ])
2490     ])
2491   ])
2492 ])
2493 AC_DEFINE_UNQUOTED(GST_MJPEGTOOLS_API, $mjpegtools_api,
2494   [mjpegtools API evolution])
2495
2496 dnl *** mpeg2enc ***
2497 translit(dnm, m, l) AM_CONDITIONAL(USE_MPEG2ENC, true)
2498 AG_GST_CHECK_FEATURE(MPEG2ENC, [mpeg2enc], mpeg2enc, [
2499   HAVE_MPEG2ENC="no"
2500   dnl we require a c++ compiler for this one
2501   if [ test x$HAVE_CXX = xyes ]; then
2502     dnl libmpeg2enc was first included in mjpegtools-1.6.2-rc3 (1.6.1.92)
2503     dnl since many distros include mjpegtools specifically without mplex
2504     dnl and mpeg2enc, we check for mpeg2enc on its own, too.
2505     PKG_CHECK_MODULES(MPEG2ENC, mjpegtools >= 1.6.1.93, [
2506       dnl HACK because mpeg2enc 1.8.0 header files have a spurious 'include config.h'
2507       touch config.h
2508       dnl switch over to c++ to test things
2509       AC_LANG([C++])
2510       OLD_CPPFLAGS="$CPPFLAGS"
2511       dnl HACK as above
2512       CPPFLAGS_GOOD="$CPPFLAGS $MPEG2ENC_CFLAGS"
2513       CPPFLAGS="$CPPFLAGS_GOOD -I."
2514       dnl check headers
2515       mpeg2enc_headers_ok=no
2516       AC_CHECK_HEADER([mpeg2encoder.hh], [
2517         MPEG2ENC_LIBS="$MPEG2ENC_LIBS -lmpeg2encpp $LIBM $PTHREAD_LIBS"
2518         OLD_LIBS="$LIBS"
2519         LIBS="$LIBS $MPEG2ENC_LIBS"
2520         AC_MSG_CHECKING([for valid mpeg2enc objects])
2521         AC_RUN_IFELSE([AC_LANG_SOURCE([[
2522           #include <mpeg2encoder.hh>
2523           #include <mpeg2encoptions.hh>
2524
2525           int
2526           main (int   argc,
2527                 char *argv[])
2528           {
2529             MPEG2EncOptions *options = new MPEG2EncOptions ();
2530             MPEG2Encoder *encoder = new MPEG2Encoder (*options);
2531             return 0;
2532           }
2533         ]])],[
2534           AC_MSG_RESULT(yes)
2535           dnl so far so good, let's check more things:
2536           dnl mjpegtools-1.8.0 does not install the required
2537           dnl mpeg2syntaxcodes.h header by default, and a new release
2538           dnl is not in sight, so check for this oversight in case
2539           dnl distros or folks have fixed this themselves
2540           if test "$mjpegtools_api" -ge "10800"; then
2541             AC_CHECK_HEADER([mpeg2syntaxcodes.h], [
2542                 mpeg2enc_headers_ok=yes
2543               ], [
2544                 mpeg2enc_headers_ok=no
2545               ])
2546           else
2547             mpeg2enc_headers_ok=yes
2548           fi
2549           if test "x$mpeg2enc_headers_ok" = "xyes"; then
2550             HAVE_MPEG2ENC="yes"
2551           fi
2552           CPPFLAGS="$CPPFLAGS_GOOD"
2553           AC_SUBST(MPEG2ENC_CFLAGS)
2554           AC_SUBST(MPEG2ENC_LIBS)
2555         ],[
2556           AC_MSG_RESULT(no)
2557         ],[])
2558         LIBS="$OLD_LIBS"
2559       ])
2560
2561       CPPFLAGS="$OLD_CPPFLAGS"
2562       AC_LANG([C])
2563     ], [
2564       HAVE_MPEG2ENC="no"
2565     ])
2566   fi
2567 ])
2568
2569 dnl *** mplex ***
2570 translit(dnm, m, l) AM_CONDITIONAL(USE_MPLEX, true)
2571 AG_GST_CHECK_FEATURE(MPLEX, [mplex], mplex, [
2572   HAVE_MPLEX="no"
2573   dnl we require a c++ compiler for this one
2574   if [ test x$HAVE_CXX = xyes ]; then
2575     dnl libmplex was first included in mjpegtools-1.6.2-rc4 (1.6.1.93)
2576     dnl since many distros include mjpegtools specifically without mplex
2577     dnl and mpeg2enc, we check for mplex on its own, too.
2578     dnl libmplex < 1.9rc? has fuzzy ABI, valgrind and other problems
2579     PKG_CHECK_MODULES(MPLEX, mjpegtools >= 1.9.0, [
2580       dnl HACK because mplex 2.0.0 header files have a spurious 'include config.h'
2581       touch config.h
2582       dnl switch over to c++ to test things
2583       AC_LANG([C++])
2584       OLD_CPPFLAGS="$CPPFLAGS"
2585       dnl HACK as above
2586       CPPFLAGS_GOOD="$CPPFLAGS $MPLEX_CFLAGS"
2587       CPPFLAGS="$CPPFLAGS_GOOD -I."
2588       AC_CHECK_HEADER(interact.hpp, [
2589         MPLEX_LIBS="$MPLEX_LIBS -lmplex2 $LIBM"
2590         OLD_LIBS="$LIBS"
2591         LIBS="$LIBS $MPLEX_LIBS"
2592         OLD_LDFLAGS="$LDFLAGS"
2593         LDFLAGS="$LDFLAGS $MPLEX_LDFLAGS"
2594         dnl older libmplex uses off_t SegmentSize (), which leads to fuzzy ABI;
2595         dnl don't want this here
2596         AC_MSG_CHECKING([for valid mplex objects])
2597         AC_RUN_IFELSE([AC_LANG_SOURCE([[
2598
2599 #include <interact.hpp>
2600 #include <outputstrm.hpp>
2601 #include <multiplexor.hpp>
2602 int
2603 main (int   argc,
2604       char *argv[])
2605 {
2606   class TestOutputStream : public OutputStream {
2607   public:
2608     TestOutputStream () : OutputStream () { }
2609     void Write (uint8_t *a, unsigned int b) { }
2610     void NextSegment () { }
2611     uint64_t SegmentSize () { }
2612     void Close () { }
2613     int Open () { }
2614 };
2615   MultiplexJob *job = new MultiplexJob ();
2616   vector<IBitStream *> inputs;
2617   job->SetupInputStreams (inputs);
2618   TestOutputStream *out = new TestOutputStream ();
2619   Multiplexor *mux = new Multiplexor(*job, *out, NULL);
2620   return 0;
2621 }
2622         ]])],[
2623           HAVE_MPLEX="yes"
2624           CPPFLAGS="$CPPFLAGS_GOOD"
2625           AC_SUBST(MPLEX_CFLAGS)
2626           AC_SUBST(MPLEX_LIBS)
2627           AC_SUBST(MPLEX_LDFLAGS)
2628           AC_MSG_RESULT(yes)
2629         ],[AC_MSG_RESULT(no)],[])
2630         LIBS="$OLD_LIBS"
2631         LDFLAGS="$OLD_LDFLAGS"
2632       ])
2633       CPPFLAGS="$OLD_CPPFLAGS"
2634       AC_LANG([C])
2635     ], HAVE_MPLEX="no")
2636   fi
2637 ])
2638
2639 dnl *** musepack ***
2640 translit(dnm, m, l) AM_CONDITIONAL(USE_MUSEPACK, true)
2641 AG_GST_CHECK_FEATURE(MUSEPACK, [musepackdec], musepack, [
2642   AC_CHECK_HEADER([mpc/mpcdec.h], [
2643     HAVE_MUSEPACK="yes"
2644     MUSEPACK_LIBS="-lmpcdec"
2645     AC_SUBST(MUSEPACK_LIBS)
2646     ], [AC_CHECK_HEADER([mpcdec/mpcdec.h], [
2647       HAVE_MUSEPACK="yes"
2648       MUSEPACK_LIBS="-lmpcdec"
2649       AC_DEFINE(MPC_IS_OLD_API, 1, [Define if the old MusePack API is used])
2650       AC_SUBST(MUSEPACK_LIBS)
2651     ], [HAVE_MUSEPACK="no"])])
2652 ])
2653
2654 dnl *** neon ***
2655 translit(dnm, m, l) AM_CONDITIONAL(USE_NEON, true)
2656 AG_GST_CHECK_FEATURE(NEON, [neon http client plugins], neonhttpsrc, [
2657   PKG_CHECK_MODULES(NEON, neon >= 0.27.0  neon <= 0.30.99, HAVE_NEON="yes", [
2658     HAVE_NEON="no"
2659   ])
2660   AC_SUBST(NEON_CFLAGS)
2661   AC_SUBST(NEON_LIBS)
2662 ])
2663
2664 dnl *** ofa ***
2665 translit(dnm, m, l) AM_CONDITIONAL(USE_OFA, true)
2666 AG_GST_CHECK_FEATURE(OFA, [ofa plugins], ofa, [
2667   PKG_CHECK_MODULES(OFA, libofa >= 0.9.3, HAVE_OFA="yes", [
2668     HAVE_OFA="no"
2669   ])
2670   AC_SUBST(OFA_CFLAGS)
2671   AC_SUBST(OFA_LIBS)
2672 ])
2673
2674 dnl *** OpenAL ***
2675 translit(dnm, m, l) AM_CONDITIONAL(USE_OPENAL, true)
2676 AG_GST_CHECK_FEATURE(OPENAL, [OpenAL plugin], openal, [
2677   PKG_CHECK_MODULES(OPENAL, openal >= 1.14, HAVE_OPENAL="yes", [
2678     HAVE_OPENAL="no"
2679   ])
2680   AC_SUBST(OPENAL_CFLAGS)
2681   AC_SUBST(OPENAL_LIBS)
2682 ])
2683
2684 dnl *** opencv ***
2685 translit(dnm, m, l) AM_CONDITIONAL(USE_OPENCV, true)
2686 AG_GST_CHECK_FEATURE(OPENCV, [opencv plugins], opencv, [
2687   dnl we specify a max. version too because we set CV_NO_BACKWARD_COMPATIBILITY
2688   dnl and don't want the build to break when a new opencv version comes out.
2689   dnl Need to adjust this upwards once we know that our code compiles fine with
2690   dnl a new version and the no-backward-compatibility define. (There doesn't
2691   dnl seem to be a switch to suppress the warnings the cvcompat.h header
2692   dnl causes.)
2693   PKG_CHECK_MODULES(OPENCV, opencv >= 2.3.0 opencv <= 3.2.0 , [
2694     AC_PROG_CXX
2695     AC_LANG([C++])
2696     OLD_CPPFLAGS=$CPPFLAGS
2697     CPPFLAGS=$OPENCV_CFLAGS
2698     something_not_found=no
2699     AC_CHECK_HEADERS([opencv2/core/core_c.h \
2700                       opencv2/core/version.hpp \
2701                       opencv2/highgui/highgui_c.h \
2702                       opencv2/imgproc/imgproc.hpp \
2703                       opencv2/imgproc/imgproc_c.h \
2704                       opencv2/objdetect/objdetect.hpp \
2705                       opencv2/video/background_segm.hpp], [], [something_not_found=yes])
2706
2707     dnl Only required for OpenCV >= 3, we have compat code for older versions
2708     PKG_CHECK_MODULES(OPENCV_3, opencv >= 3, [
2709       dnl check opencv_contrib headers (not always present in opencv distributions)
2710       AC_CHECK_HEADERS([opencv2/bgsegm.hpp], [], [something_not_found=yes])],
2711       [NOT_A_PROBLEM=yes])
2712
2713     CPPFLAGS=$OLD_CPPFLAGS
2714     AC_LANG([C])
2715
2716     if test $something_not_found = "yes"; then
2717       AC_MSG_RESULT([not all opencv2 headers were found])
2718       HAVE_OPENCV="no"
2719     else
2720       HAVE_OPENCV="yes"
2721     fi
2722   ], [
2723     HAVE_OPENCV="no"
2724   ])
2725   OPENCV_PREFIX="`$PKG_CONFIG --variable=prefix opencv`"
2726   AC_DEFINE_UNQUOTED(OPENCV_PREFIX, "$OPENCV_PREFIX", [opencv install prefix])
2727   AC_SUBST(OPENCV_PREFIX)
2728   AC_SUBST(OPENCV_CFLAGS)
2729   AC_SUBST(OPENCV_LIBS)
2730   dnl the OpenCV prefix is used at runtime for some object properties, and also
2731   dnl used here to detect which directory is the correct one. For the second
2732   dnl case, make sure the right sysroot is used, ensuring correct behavior
2733   dnl during cross compilation.
2734   if test -d "$PKG_CONFIG_SYSROOT_DIR/$OPENCV_PREFIX/share/opencv/"; then
2735     AC_DEFINE_UNQUOTED(OPENCV_PATH_NAME, ["opencv"], [OpenCV path name])
2736   else
2737     AC_DEFINE_UNQUOTED(OPENCV_PATH_NAME, ["OpenCV"], [OpenCV path name])
2738   fi
2739 ])
2740
2741 dnl *** OpenEXR ***
2742 translit(dnm, m, l) AM_CONDITIONAL(USE_OPENEXR, true)
2743 AG_GST_CHECK_FEATURE(OPENEXR, [openexr library], openexr, [
2744   AG_GST_PKG_CHECK_MODULES(OPENEXR, OpenEXR)
2745 ])
2746
2747 dnl *** openh264 ***
2748 translit(dnm, m, l) AM_CONDITIONAL(USE_OPENH264, true)
2749 AG_GST_CHECK_FEATURE(OPENH264, [openh264 library], openh264, [
2750   AG_GST_PKG_CHECK_MODULES(OPENH264, openh264 >= 1.3.0)
2751 ])
2752
2753 dnl *** OpenJPEG ***
2754 translit(dnm, m, l) AM_CONDITIONAL(USE_OPENJPEG, true)
2755 AG_GST_CHECK_FEATURE(OPENJPEG, [openjpeg library], openjpeg, [
2756   HAVE_OPENJPEG="no"
2757   AG_GST_PKG_CHECK_MODULES(OPENJPEG, libopenjp2 >= 2.0)
2758   if test x"$HAVE_OPENJPEG" = x"yes"; then
2759     dnl minor API changes in v2.1
2760     AG_GST_PKG_CHECK_MODULES(OPENJPEG_2_1, libopenjp2 >= 2.1)
2761     if test x"$HAVE_OPENJPEG" = x"yes"; then
2762       AC_DEFINE([HAVE_OPENJPEG_2_1], 1, [Define if OpenJPEG 2.1 is used])
2763     fi
2764   else
2765     # Fallback to v1.5
2766     OPENJPEG_LIBS=""
2767     PKG_CHECK_MODULES(OPENJPEG, libopenjpeg1,
2768       HAVE_OPENJPEG="yes",
2769       AG_GST_CHECK_LIBHEADER(OPENJPEG, openjpeg, opj_version, , openjpeg.h, OPENJPEG_LIBS="-lopenjpeg")
2770     )
2771     if test x"$HAVE_OPENJPEG" = x"yes"; then
2772       AC_DEFINE([HAVE_OPENJPEG_1], 1, [Define if OpenJPEG 1 is used])
2773     fi
2774   fi
2775   AC_SUBST(OPENJPEG_CFLAGS)
2776   AC_SUBST(OPENJPEG_LIBS)
2777 ])
2778
2779 dnl *** OpenNI2 ***
2780 translit(dnm, m, l) AM_CONDITIONAL(USE_OPENNI2, true)
2781 AG_GST_CHECK_FEATURE(OPENNI2, [openni2 library], openni2, [
2782   PKG_CHECK_MODULES(OPENNI2, libopenni2 >= 0.26, HAVE_OPENNI2="yes", [ HAVE_OPENNI2="no" ] )
2783   AC_SUBST(OPENNI2_CFLAGS)
2784   AC_SUBST(OPENNI2_LIBS)
2785 ])
2786
2787 dnl *** Opus ***
2788 translit(dnm, m, l) AM_CONDITIONAL(USE_OPUS, true)
2789 AG_GST_CHECK_FEATURE(OPUS, [opus], opus, [
2790   PKG_CHECK_MODULES(OPUS, opus >= 0.9.4, [
2791           AC_DEFINE([HAVE_OPUS], 1, [Define if Opus >= 0.9.4 is installed])
2792           HAVE_OPUS="yes"
2793   ], [
2794           HAVE_OPUS="no"
2795   ])
2796   AC_SUBST(OPUS_CFLAGS)
2797   AC_SUBST(OPUS_LIBS)
2798 ])
2799
2800 dnl *** rsvg ***
2801 translit(dnm, m, l) AM_CONDITIONAL(USE_RSVG, true)
2802 AG_GST_CHECK_FEATURE(RSVG, [rsvg decoder], rsvg, [
2803   AG_GST_PKG_CHECK_MODULES(RSVG, librsvg-2.0 >= 2.36.2)
2804 ])
2805
2806 dnl *** gl ***
2807 translit(dnm, m, l) AM_CONDITIONAL(USE_GL, true)
2808 AG_GST_CHECK_FEATURE(GL, [gl elements], gl, [
2809   HAVE_GL="no"
2810
2811   if test x"$USE_OPENGL" = x"yes" -o x"$USE_GLES2" = x"yes"; then
2812     HAVE_GL="yes"
2813   fi
2814 ])
2815
2816 dnl *** gtk+ ***
2817 HAVE_GTK3_GL="no"
2818 translit(dnm, m, l) AM_CONDITIONAL(USE_GTK3, true)
2819 AG_GST_CHECK_FEATURE(GTK3, [Gtk+ elements], gtk, [
2820   PKG_CHECK_MODULES(GTK3, gtk+-3.0, [
2821     AC_DEFINE([HAVE_GTK3], 1, [Define if Gtk+ 3.0 is installed])
2822     HAVE_GTK3="yes"
2823   ], [
2824     HAVE_GTK3="no"
2825   ])
2826   PKG_CHECK_MODULES(GTK3_GL, gtk+-3.0 >= 3.15.0, [
2827     GDK_WINDOWING="no"
2828     if test "x$GST_GL_HAVE_WINDOW_X11" = "x1" -a "x$GST_GL_HAVE_PLATFORM_GLX" = "x1"; then
2829       PKG_CHECK_MODULES(GTK3_X11, gtk+-x11-3.0, [
2830         GTK3_CFLAGS="$GTK3_CFLAGS $GTK3_X11_CFLAGS"
2831         GTK3_LIBS="$GTK3_LIBS $GTK3_X11_LIBS"
2832         GDK_WINDOWING="yes"
2833       ], [AC_MSG_NOTICE([Could not find Gtk X11 integration])])
2834     fi
2835     if test "x$GST_GL_HAVE_WINDOW_WAYLAND" = "x1" -a "x$GST_GL_HAVE_PLATFORM_EGL" = "x1"; then
2836       PKG_CHECK_MODULES(GTK3_WAYLAND, gtk+-wayland-3.0, [
2837         GTK3_CFLAGS="$GTK3_CFLAGS $GTK3_WAYLAND_CFLAGS"
2838         GTK3_LIBS="$GTK3_LIBS $GTK3_WAYLAND_LIBS"
2839         GDK_WINDOWING="yes"
2840       ], [AC_MSG_NOTICE([Could not find Gtk Wayland integration])])
2841     fi
2842     if test "x$GDK_WINDOWING" = "xyes"; then
2843       AC_DEFINE([HAVE_GTK3_GL], 1, [Define if Gtk+ 3.0 GL is installed])
2844       HAVE_GTK3_GL="yes"
2845     fi
2846   ], [
2847       HAVE_GTK3_GL="no"
2848   ])
2849 ])
2850 AM_CONDITIONAL(USE_GTK3_GL, test "x$HAVE_GTK3_GL" = "xyes")
2851
2852 dnl *** Qt ***
2853 translit(dnm, m, l) AM_CONDITIONAL(USE_QT, true)
2854 AG_GST_CHECK_FEATURE(QT, [Qt elements], qt, [
2855   PKG_CHECK_MODULES(QT, Qt5Core Qt5Gui Qt5Qml Qt5Quick >= 5.4.0, [
2856       QT_PATH=`$PKG_CONFIG --variable=exec_prefix Qt5Core`
2857       QT_HOST_PATH=`$PKG_CONFIG --variable=host_bins Qt5Core`
2858       AC_PATH_PROGS(MOC, [moc-qt5 moc], moc, ["${QT_HOST_PATH}" "${QT_PATH}/bin"])
2859       AC_PATH_PROGS(RCC, [rcc-qt5 rcc], rcc, ["${QT_HOST_PATH}" "${QT_PATH}/bin"])
2860       AC_PATH_PROGS(UIC, [uic-qt5 uic], uic, ["${QT_HOST_PATH}" "${QT_PATH}/bin"])
2861       if test "x$MOC" = "x" || test "x$UIC" = "x" || test "x$RCC" = "x"; then
2862         AC_MSG_WARN([One of the required qt build programs was not found])
2863         HAVE_QT="no"
2864       else
2865         HAVE_QT="yes"
2866         HAVE_QT_WINDOWING="no"
2867         QT_VERSION="`$PKG_CONFIG --modversion Qt5Core`"
2868         QPA_INCLUDE_PATH=`$PKG_CONFIG --variable=includedir Qt5Core`/QtGui/${QT_VERSION}/QtGui
2869         AS_IF([test -f "$PKG_CONFIG_SYSROOT_DIR/$QPA_INCLUDE_PATH/qpa/qplatformnativeinterface.h"], [
2870           QT_CFLAGS="$QT_CFLAGS -I$QPA_INCLUDE_PATH"
2871           HAVE_QT_QPA_HEADER="yes"
2872         ], [AC_MSG_NOTICE([Cannot find QPA])])
2873         if test "x$GST_GL_HAVE_WINDOW_X11" = "x1" -a "x$GST_GL_HAVE_PLATFORM_GLX" = "x1"; then
2874           PKG_CHECK_MODULES(QT_X11, Qt5X11Extras, [
2875             AC_DEFINE([HAVE_QT_X11], [], [Define if Qt X11 integration is installed])
2876             QT_CFLAGS="$QT_CFLAGS $QT_X11_CFLAGS"
2877             QT_LIBS="$QT_LIBS $QT_X11_LIBS"
2878             HAVE_QT_WINDOWING="yes"
2879           ], [AC_MSG_NOTICE([Could not find Qt X11 integration])])
2880         fi
2881         if test "x$GST_GL_HAVE_WINDOW_WAYLAND" = "x1" -a "x$GST_GL_HAVE_PLATFORM_EGL" = "x1" -a "x$HAVE_QT_QPA_HEADER" = "xyes"; then
2882           PKG_CHECK_MODULES(QT_WAYLAND, Qt5WaylandClient, [
2883             AC_DEFINE([HAVE_QT_WAYLAND], [],
2884                 [Define if Qt Wayland integration is installed])
2885             QT_CFLAGS="$QT_CFLAGS $QT_WAYLAND_CFLAGS"
2886             QT_LIBS="$QT_LIBS $QT_WAYLAND_LIBS"
2887             HAVE_QT_WINDOWING="yes"
2888           ], [AC_MSG_NOTICE([Could not find Qt Wayland integration])])
2889         fi
2890         if test "x$GST_GL_HAVE_PLATFORM_EGL" = "x1"; then
2891           if test "x$GST_GL_HAVE_WINDOW_ANDROID" = "x1"; then
2892             PKG_CHECK_MODULES(QT_ANDROID, Qt5AndroidExtras, [
2893               # c++ on android requires a standard library and there are multiple
2894               # choices.  cerbero provides a pkg-config file the describes a choice
2895               # so try to use that.  Outside cerbero one has to pass these flags
2896               # manually for the library one is using
2897               PKG_CHECK_MODULES(GNUSTL, gnustl, [
2898                 QT_CFLAGS="$QT_CFLAGS $GNUSTL_CFLAGS"
2899                 QT_LIBS="$QT_LIBS $GNUSTL_LIBS"
2900                 ], [
2901                 AC_MSG_NOTICE([Could not find Standard C++ library])])
2902               AC_DEFINE([HAVE_QT_EGLFS], [],
2903                 [Define if Qt eglfs integration is installed])
2904               QT_CFLAGS="$QT_CFLAGS $QT_ANDROID_CFLAGS"
2905               QT_LIBS="$QT_LIBS $QT_ANDROID_LIBS"
2906               HAVE_QT_WINDOWING="yes"
2907             ], [AC_MSG_NOTICE([Could not find Qt Android integration])])
2908           else
2909               AC_DEFINE([HAVE_QT_EGLFS], [],
2910                 [Define if Qt eglfs integration is installed])
2911               HAVE_QT_WINDOWING="yes"
2912           fi
2913         fi
2914         if test "x$GST_GL_HAVE_WINDOW_COCOA" = "x1" -a "x$GST_GL_HAVE_PLATFORM_CGL" = "x1"; then
2915           PKG_CHECK_MODULES(QT_MAC, Qt5MacExtras, [
2916             AC_DEFINE([HAVE_QT_MAC], [],
2917                 [Define if Qt Mac integration is installed])
2918             QT_LIBDIR=`$PKG_CONFIG --variable=libdir Qt5Core`
2919             QT_CFLAGS="$QT_CFLAGS $QT_MAC_CFLAGS -F$QT_LIBDIR -framework QtCore -framework QtGui -framework QtQuick -framework QtQml -framework QtMacExtras"
2920             QT_LIBS="$QT_LIBS $QT_MAC_LIBS"
2921             HAVE_QT_WINDOWING="yes"
2922           ], [AC_MSG_NOTICE([Could not find Qt Mac integration])])
2923         fi
2924         if test "x$GST_GL_HAVE_WINDOW_EAGL" = "x1" -a "x$GST_GL_HAVE_PLATFORM_EAGL" = "x1"; then
2925           if test "x$HAVE_IOS" = "xyes"; then
2926             # iOS doesn't have its own extras package so if we have the core
2927             # modules we are good to go
2928             AC_DEFINE([HAVE_QT_IOS], [],
2929                 [Define if Qt iOS integration is installed])
2930             HAVE_QT_WINDOWING="yes"
2931           fi
2932         fi
2933         if test "x$HAVE_QT_WINDOWING" = "xno"; then
2934           AC_MSG_WARN([Could not find any Qt Windowing integration])
2935           HAVE_QT="no"
2936         fi
2937         AC_SUBST([QT_CFLAGS])
2938         AC_SUBST([QT_LIBS])
2939       fi
2940   ], [
2941       HAVE_QT="no"
2942   ])
2943 ])
2944
2945 dnl *** Vulkan ***
2946 translit(dnm, m, l) AM_CONDITIONAL(USE_VULKAN, true)
2947 AG_GST_CHECK_FEATURE(VULKAN, [Vulkan elements], vulkan, [
2948   AC_CHECK_HEADER(vulkan/vulkan.h, [
2949     AC_CHECK_LIB(vulkan, vkCreateDevice, [
2950       VULKAN_LIBS="-lvulkan"
2951       AC_SUBST(VULKAN_LIBS)
2952       if test "x$GST_VULKAN_HAVE_WINDOW_XCB" = "x1"; then
2953         HAVE_VULKAN="yes"
2954       fi
2955       if test "x$GST_VULKAN_HAVE_WINDOW_WAYLAND" = "x1"; then
2956         HAVE_VULKAN="yes"
2957       fi
2958     ], [])
2959   ], [])
2960 ])
2961
2962 dnl *** teletextdec ***
2963 translit(dnm, m, l) AM_CONDITIONAL(USE_TELETEXTDEC, true)
2964 AG_GST_CHECK_FEATURE(TELETEXTDEC, [Teletext decoder], teletextdec, [
2965   AG_GST_PKG_CHECK_MODULES(TELETEXTDEC, zvbi-0.2)
2966  ])
2967
2968 dnl *** wildmidi ***
2969 translit(dnm, m, l) AM_CONDITIONAL(USE_WILDMIDI, true)
2970 AG_GST_CHECK_FEATURE(WILDMIDI, [wildmidi midi soft synth plugin], wildmidi, [
2971   AG_GST_CHECK_LIBHEADER(WILDMIDI, WildMidi,
2972                          WildMidi_Init, ,
2973                          wildmidi_lib.h,
2974                          WILDMIDI_LIBS="-lWildMidi")
2975   AC_CHECK_LIB(WildMidi, WildMidi_LoadSamples, AC_DEFINE(HAVE_WILDMIDI_0_2_2, [1], [Have WildMidi 0.2.2 or earlier library]))
2976
2977   if test "x$HAVE_WILDMIDI" = "xyes"; then
2978          WILDMIDI_CFLAGS=
2979          WILDMIDI_LIBS=-lWildMidi
2980          AC_MSG_NOTICE(compiling gstWildMidi)
2981   else
2982          WILDMIDI_CFLAGS=
2983          WILDMIDI_LIBS=
2984          AC_MSG_WARN(no WildMidi library found (libWildMidi))
2985   fi
2986   AC_SUBST(WILDMIDI_CFLAGS)
2987   AC_SUBST(WILDMIDI_LIBS)
2988 ])
2989
2990 dnl **** Smooth Streaming ****
2991 translit(dnm, m, l) AM_CONDITIONAL(USE_SMOOTHSTREAMING, true)
2992 AG_GST_CHECK_FEATURE(SMOOTHSTREAMING, [Smooth Streaming plug-in], smoothstreaming, [
2993   PKG_CHECK_MODULES(LIBXML2, libxml-2.0 >= 2.4,
2994     [HAVE_LIBXML2="yes"
2995      HAVE_SMOOTHSTREAMING="yes"],
2996     [HAVE_LIBXML2="no"
2997      HAVE_SMOOTHSTREAMING="no"])
2998   AC_SUBST(LIBXML2_CFLAGS)
2999   AC_SUBST(LIBXML2_LIBS)
3000 ])
3001
3002 dnl *** sndfile ***
3003 translit(dnm, m, l) AM_CONDITIONAL(USE_SNDFILE, true)
3004 AG_GST_CHECK_FEATURE(SNDFILE, [sndfile plug-in], sfdec sfenc, [
3005   PKG_CHECK_MODULES(SNDFILE, sndfile >= 1.0.16, HAVE_SNDFILE="yes", HAVE_SNDFILE="no")
3006   AC_SUBST(SNDFILE_CFLAGS)
3007   AC_SUBST(SNDFILE_LIBS)
3008 ])
3009
3010 dnl *** soundtouch ***
3011 translit(dnm, m, l) AM_CONDITIONAL(USE_SOUNDTOUCH, true)
3012 AG_GST_CHECK_FEATURE(SOUNDTOUCH, [soundtouch plug-in], soundtouch, [
3013   dnl We only need -lBPM on soundtouch < 1.4
3014   dnl We check for libSoundTouch since Debian used it before upstream
3015   dnl added a pkgconfig file.
3016   HAVE_SOUNDTOUCH_1_4=yes
3017   PKG_CHECK_MODULES(SOUNDTOUCH, soundtouch,
3018     [HAVE_SOUNDTOUCH=yes],
3019     [PKG_CHECK_MODULES(SOUNDTOUCH, soundtouch-1.4,
3020       [HAVE_SOUNDTOUCH=yes],
3021       [PKG_CHECK_MODULES(SOUNDTOUCH, soundtouch-1.0,
3022         [HAVE_SOUNDTOUCH=yes
3023           HAVE_SOUNDTOUCH_1_4=no
3024           SOUNDTOUCH_LIBS="$SOUNDTOUCH_LIBS -lBPM"],
3025         [PKG_CHECK_MODULES(SOUNDTOUCH, libSoundTouch >= 1.4,
3026           [HAVE_SOUNDTOUCH=yes],
3027           [PKG_CHECK_MODULES(SOUNDTOUCH, libSoundTouch,
3028             [HAVE_SOUNDTOUCH=yes
3029               HAVE_SOUNDTOUCH_1_4=no
3030               SOUNDTOUCH_LIBS="$SOUNDTOUCH_LIBS -lBPM"],
3031             HAVE_SOUNDTOUCH=no)])])])])
3032   AC_SUBST(SOUNDTOUCH_CFLAGS)
3033   AC_SUBST(SOUNDTOUCH_LIBS)
3034   if test "x$HAVE_CXX" != "xyes"; then
3035     USE_SOUNDTOUCH=false
3036     AC_MSG_NOTICE([Not building soundtouch plugin: no C++ compiler found])
3037   fi
3038   if test "x$HAVE_SOUNDTOUCH" = "xyes" -a "x$HAVE_SOUNDTOUCH_1_4" = "xyes"; then
3039      AC_DEFINE([HAVE_SOUNDTOUCH_1_4], [1],
3040          [Defined if the available libSoundTouch is >= 1.4])
3041   fi
3042 ])
3043
3044 dnl *** spc ***
3045 translit(dnm, m, l) AM_CONDITIONAL(USE_SPC, true)
3046 AG_GST_CHECK_FEATURE(SPC, [spc decoder], spc, [
3047   AC_CHECK_HEADER(openspc.h, [
3048     AC_CHECK_LIB(openspc, OSPC_Init, [
3049       SPC_LIBS="-lopenspc"
3050       AC_SUBST(SPC_LIBS)
3051       HAVE_SPC=yes
3052     ], [
3053       HAVE_SPC=no
3054     ])
3055   ], [
3056     HAVE_SPC=no
3057   ])
3058 ])
3059
3060 dnl *** gme ***
3061 translit(dnm, m, l) AM_CONDITIONAL(USE_GME, true)
3062 AG_GST_CHECK_FEATURE(GME, [gme decoder], gme, [
3063   AC_CHECK_HEADER(gme/gme.h, [
3064     AC_CHECK_LIB(gme, gme_new_emu, [
3065       GME_LIBS="-lgme"
3066       AC_SUBST(GME_LIBS)
3067       HAVE_GME=yes
3068     ], [
3069       HAVE_GME=no
3070     ])
3071   ], [
3072     HAVE_GME=no
3073   ])
3074
3075   if test "x$HAVE_GME" = "xyes"; then
3076     AC_CHECK_LIB(gme, gme_enable_accuracy, [
3077       AC_DEFINE(HAVE_LIBGME_ACCURACY, 1, [Define if gme 0.5.6 or newer is available])
3078       ])
3079   fi
3080 ])
3081
3082 dnl *** dvb ***
3083 translit(dnm, m, l) AM_CONDITIONAL(USE_DVB, true)
3084 AG_GST_CHECK_FEATURE(DVB, [DVB Source], dvb, [
3085   AC_MSG_CHECKING([Checking for up to date dvb installation])
3086   AC_CHECK_HEADER(linux/dvb/version.h, [
3087     AC_MSG_CHECKING([for up-to-date dvb API])
3088     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <linux/dvb/version.h>]], [[
3089         #if DVB_API_VERSION < 5 || (DVB_API_VERSION == 5 && DVB_API_VERSION_MINOR <= 4)
3090         #error "Incompatible dvb API"
3091         #endif
3092     ]])], [ AC_MSG_RESULT(yes)
3093       HAVE_DVB="yes"
3094     ], [ AC_MSG_RESULT(no)
3095       HAVE_DVB="no"
3096     ])
3097   ], [HAVE_DVB="no"])
3098 ])
3099
3100 dnl *** acm ***
3101 translit(dnm, m, l) AM_CONDITIONAL(USE_ACM, true)
3102 AG_GST_CHECK_FEATURE(ACM, [Windows ACM library], acm, [
3103   AC_MSG_CHECKING([Checking for ACM support])
3104   AC_CHECK_HEADERS([windows.h msacm.h],
3105       [HAVE_ACM="yes"
3106        AC_SUBST(ACMENC_CFLAGS)
3107        AC_SUBST(ACMMP3DEC_CFLAGS)
3108       ], [HAVE_ACM="no"],
3109       [AC_INCLUDES_DEFAULT
3110 #include <windows.h>])
3111 ])
3112
3113 dnl *** vdpau ***
3114 translit(dnm, m, l) AM_CONDITIONAL(USE_VDPAU, true)
3115 AG_GST_CHECK_FEATURE(VDPAU, [VDPAU], vdpau, [
3116   VDPAU_CFLAGS=
3117   VDPAU_LIBS=-lvdpau
3118   HAVE_VDPAU=no
3119
3120   PKG_CHECK_MODULES(VDPAU, vdpau, [HAVE_VDPAU="yes"],
3121   [
3122     if test "$HAVE_VDPAU" = "no"; then
3123       saved_CPPFLAGS="$CPPFLAGS"
3124       AC_CHECK_HEADER([vdpau/vdpau.h], [HAVE_VDPAU_H=yes])
3125
3126       if test -z "$HAVE_VDPAU_H"; then
3127         dnl Didn't find VDPAU header straight away.
3128         dnl Try /usr/include/nvidia. Need to clear caching vars first
3129         AC_MSG_NOTICE([VDPAU header not in standard path. Checking /usr/include/nvidia])
3130         unset ac_cv_header_vdpau_vdpau_h
3131         unset ac_cv_header_vdpau_vdpau_x11_h
3132         VDPAU_CFLAGS="-I/usr/include/nvidia"
3133         VDPAU_LIBS="-L/usr/lib/nvidia -lvdpau"
3134         CPPFLAGS="$VDPAU_CFLAGS $saved_CPPFLAGS"
3135         AC_CHECK_HEADER([vdpau/vdpau.h], [HAVE_VDPAU_H=yes])
3136       fi
3137
3138       AC_CHECK_HEADER([vdpau/vdpau_x11.h], [HAVE_VDPAU_X11_H=yes])
3139
3140       if test "x$HAVE_VDPAU_H" = "xyes" -a "x$HAVE_VDPAU_X11_H" = "xyes"; then
3141         dnl Found the headers - look for the lib
3142         AC_MSG_NOTICE([VDPAU headers found. Checking libraries])
3143         saved_LIBS="$LIBS"
3144         LIBS="$VDPAU_LIBS $saved_LIBS"
3145         AC_CHECK_LIB(vdpau,vdp_device_create_x11,[HAVE_VDPAU="yes"])
3146         LIBS="$saved_LIBS"
3147       fi
3148     fi
3149   ])
3150
3151   if test "$HAVE_VDPAU" = "yes"; then
3152     AC_MSG_NOTICE([Found up to date VDPAU installation])
3153     AC_SUBST(VDPAU_CFLAGS)
3154     AC_SUBST(VDPAU_LIBS)
3155   fi
3156 ])
3157
3158 dnl *** sbc ***
3159 translit(dnm, m, l) AM_CONDITIONAL(USE_SBC, true)
3160 AG_GST_CHECK_FEATURE(SBC, [SBC bluetooth audio codec], sbc, [
3161   AG_GST_PKG_CHECK_MODULES(SBC, [sbc >= 1.0])
3162 ])
3163
3164 dnl *** schroedinger ***
3165 translit(dnm, m, l) AM_CONDITIONAL(USE_SCHRO, true)
3166 AG_GST_CHECK_FEATURE(SCHRO, [Schroedinger video codec], schro, [
3167   AG_GST_PKG_CHECK_MODULES(SCHRO, schroedinger-1.0 >= 1.0.10)
3168 ])
3169
3170 dnl *** zbar ***
3171 translit(dnm, m, l) AM_CONDITIONAL(USE_ZBAR, true)
3172 AG_GST_CHECK_FEATURE(ZBAR, [ZBar barcode detector], zbar, [
3173   AG_GST_PKG_CHECK_MODULES(ZBAR, zbar >= 0.9)
3174 ])
3175
3176 dnl *** rtmp ***
3177 translit(dnm, m, l) AM_CONDITIONAL(USE_RTMP, true)
3178 AG_GST_CHECK_FEATURE(RTMP, [rtmp library], rtmp, [
3179   AG_GST_PKG_CHECK_MODULES(RTMP, librtmp)
3180 ])
3181
3182 dnl *** spandsp ***
3183 translit(dnm, m, l) AM_CONDITIONAL(USE_SPANDSP, true)
3184 AG_GST_CHECK_FEATURE(SPANDSP, [Spandsp], spandsp, [
3185   PKG_CHECK_MODULES(SPANDSP, spandsp >= 0.0.6, [
3186     HAVE_SPANDSP="yes" ], [
3187     HAVE_SPANDSP="no"
3188   ])
3189 ])
3190 AC_SUBST(SPANDSP_CFLAGS)
3191 AC_SUBST(SPANDSP_LIBS)
3192
3193 dnl *** hls-crypto ***
3194 AC_ARG_WITH([hls-crypto],
3195   AS_HELP_STRING([--with-hls-crypto=auto|nettle|libgcrypt|openssl], [
3196     which cryptographic library version to compile against for hls (default: auto)
3197   ]), [
3198     AS_CASE([$with_hls_crypto],
3199       [nettle],[],
3200       [libgcrypt],[],
3201       [openssl],[],
3202       [with_hls_crypto=auto]
3203     )
3204   ]
3205 )
3206
3207 dnl *** hls ***
3208 translit(dnm, m, l) AM_CONDITIONAL(USE_HLS, true)
3209 AG_GST_CHECK_FEATURE(HLS, [http live streaming plugin], hls, [
3210   AS_CASE([$with_hls_crypto],
3211     [nettle], [
3212       PKG_CHECK_MODULES(NETTLE, nettle, [
3213         AC_DEFINE(HAVE_NETTLE, 1, [Define if nettle is available])
3214         HAVE_HLS="yes"
3215       ],[AC_MSG_ERROR([Could not find nettle library])])
3216     ],
3217     [libgcrypt], [
3218       AM_PATH_LIBGCRYPT([1.2.0], [
3219         AC_DEFINE(HAVE_LIBGCRYPT, 1, [Define if libgcrypt is available])
3220         HAVE_HLS="yes"
3221       ],[AC_MSG_ERROR([Could not find libgcrypt library])])
3222     ],
3223     [openssl], [
3224       PKG_CHECK_MODULES(OPENSSL, openssl, [
3225         AC_DEFINE(HAVE_OPENSSL, 1, [Define if openssl is available])
3226         HAVE_HLS="yes"
3227       ],[AC_MSG_ERROR([Could not find openssl library])])
3228     ],
3229     [
3230       dnl Try to find a valid crypto library
3231       PKG_CHECK_MODULES(NETTLE, nettle, [
3232         AC_DEFINE(HAVE_NETTLE, 1, [Define if nettle is available])
3233         HAVE_HLS="yes"
3234       ],[
3235         AM_PATH_LIBGCRYPT([1.2.0], [
3236           AC_DEFINE(HAVE_LIBGCRYPT, 1, [Define if libgcrypt is available])
3237           HAVE_HLS="yes"
3238         ],[
3239           PKG_CHECK_MODULES(OPENSSL, openssl, [
3240             AC_DEFINE(HAVE_OPENSSL, 1, [Define if openssl is available])
3241             HAVE_HLS="yes"
3242           ],[
3243             HAVE_HLS="no"
3244           ])
3245         ])
3246       ])
3247     ]
3248   )
3249 ])
3250
3251 dnl *** x265 (H.265/HEVC encoder) ***
3252 translit(dnm, m, l) AM_CONDITIONAL(USE_X265, true)
3253 AG_GST_CHECK_FEATURE(X265, [x265 plug-in], x265, [
3254   AG_GST_PKG_CHECK_MODULES(X265, x265)
3255 ])
3256
3257 dnl *** WebRTC Audio Processing ***
3258 dnl Note: We test for a specific version as there is no API stability
3259 translit(dnm, m, l) AM_CONDITIONAL(USE_WEBRTCDSP, true)
3260 AG_GST_CHECK_FEATURE(WEBRTCDSP, [WebRTC Audio Processing], webrtcdsp, [
3261
3262   AG_GST_PKG_CHECK_MODULES(WEBRTCDSP, webrtc-audio-processing >= 0.2 webrtc-audio-processing < 0.4)
3263
3264   # On Android, C++ headers comes with the STL implementation
3265   AS_CASE(["${host}"],
3266     [*android*],
3267       [
3268         PKG_CHECK_MODULES(GNUSTL, gnustl, [
3269           WEBRTCDSP_CFLAGS="$WEBRTCDSP_CFLAGS $GNUSTL_CFLAGS"
3270           WEBRTCDSP_LIBS="$WEBRTCDSP_LIBS $GNUSTL_LIBS"])
3271       ])
3272   AC_SUBST([WEBRTCDSP_CFLAGS])
3273   AC_SUBST([WEBRTCDSP_LIBS])
3274
3275   AC_LANG_PUSH([C++])
3276   old_CPPFLAGS=$CPPFLAGS
3277   CPPFLAGS="-std=c++11 $CPPFLAGS $GNUSTL_CFLAGS"
3278   AC_CHECK_HEADER([vector],[],[HAVE_WEBRTCDSP=no])
3279   CPPFLAGS=$old_CPPFLAGS
3280   AC_LANG_POP([C++])
3281 ])
3282
3283 else
3284
3285 dnl not building plugins with external dependencies,
3286 dnl but we still need to set the conditionals
3287
3288 AM_CONDITIONAL(USE_ASSRENDER, false)
3289 AM_CONDITIONAL(USE_VOAMRWBENC, false)
3290 AM_CONDITIONAL(USE_VOAACENC, false)
3291 AM_CONDITIONAL(USE_BS2B, false)
3292 AM_CONDITIONAL(USE_BZ2, false)
3293 AM_CONDITIONAL(USE_CHROMAPRINT, false)
3294 AM_CONDITIONAL(USE_CURL, false)
3295 AM_CONDITIONAL(USE_SSH2, false)
3296 AM_CONDITIONAL(USE_DASH, false)
3297 AM_CONDITIONAL(USE_DC1394, false)
3298 AM_CONDITIONAL(USE_DECKLINK, false)
3299 AM_CONDITIONAL(DECKLINK_OSX, false)
3300 AM_CONDITIONAL(USE_DIRECTFB, false)
3301 AM_CONDITIONAL(USE_WAYLAND, false)
3302 AM_CONDITIONAL(USE_DAALA, false)
3303 AM_CONDITIONAL(USE_DTS, false)
3304 AM_CONDITIONAL(USE_EXIF, false)
3305 AM_CONDITIONAL(USE_RESINDVD, false)
3306 AM_CONDITIONAL(USE_FAAC, false)
3307 AM_CONDITIONAL(USE_FAAD, false)
3308 AM_CONDITIONAL(USE_FBDEV, false)
3309 AM_CONDITIONAL(USE_FDK_AAC, false)
3310 AM_CONDITIONAL(USE_FLITE, false)
3311 AM_CONDITIONAL(USE_FLUIDSYNTH, false)
3312 AM_CONDITIONAL(USE_GL, false)
3313 AM_CONDITIONAL(USE_GSM, false)
3314 AM_CONDITIONAL(USE_GTK3, false)
3315 AM_CONDITIONAL(USE_GTK3_GL, false)
3316 AM_CONDITIONAL(USE_HLS, false)
3317 AM_CONDITIONAL(USE_IQA, false)
3318 AM_CONDITIONAL(USE_KATE, false)
3319 AM_CONDITIONAL(USE_KMS, false)
3320 AM_CONDITIONAL(USE_TIGER, false)
3321 AM_CONDITIONAL(USE_LADSPA, false)
3322 AM_CONDITIONAL(USE_LV2, false)
3323 AM_CONDITIONAL(USE_LIBDE265, false)
3324 AM_CONDITIONAL(USE_LIBMMS, false)
3325 AM_CONDITIONAL(USE_MODPLUG, false)
3326 AM_CONDITIONAL(USE_MPEG2ENC, false)
3327 AM_CONDITIONAL(USE_MPLEX, false)
3328 AM_CONDITIONAL(USE_MUSEPACK, false)
3329 AM_CONDITIONAL(USE_NEON, false)
3330 AM_CONDITIONAL(USE_OFA, false)
3331 AM_CONDITIONAL(USE_OPENAL, false)
3332 AM_CONDITIONAL(USE_OPENCV, false)
3333 AM_CONDITIONAL(USE_OPENEXR, false)
3334 AM_CONDITIONAL(USE_OPENJPEG, false)
3335 AM_CONDITIONAL(USE_OPENNI2, false)
3336 AM_CONDITIONAL(USE_OPUS, false)
3337 AM_CONDITIONAL(USE_QT, false)
3338 AM_CONDITIONAL(USE_WILDMIDI, false)
3339 AM_CONDITIONAL(USE_SMOOTHSTREAMING, false)
3340 AM_CONDITIONAL(USE_SNDFILE, false)
3341 AM_CONDITIONAL(USE_SOUNDTOUCH, false)
3342 AM_CONDITIONAL(USE_SPANDSP, false)
3343 AM_CONDITIONAL(USE_SPC, false)
3344 AM_CONDITIONAL(USE_SRTP, false)
3345 AM_CONDITIONAL(USE_GME, false)
3346 AM_CONDITIONAL(USE_DVB, false)
3347 AM_CONDITIONAL(USE_ACM, false)
3348 AM_CONDITIONAL(USE_VDPAU, false)
3349 AM_CONDITIONAL(USE_SBC, false)
3350 AM_CONDITIONAL(USE_SCHRO, false)
3351 AM_CONDITIONAL(USE_ZBAR, false)
3352 AM_CONDITIONAL(USE_RSVG, false)
3353 AM_CONDITIONAL(USE_RTMP, false)
3354 AM_CONDITIONAL(USE_TELETEXTDEC, false)
3355 AM_CONDITIONAL(USE_UVCH264, false)
3356 AM_CONDITIONAL(USE_WEBP, false)
3357 AM_CONDITIONAL(USE_WEBRTCDSP, false)
3358 AM_CONDITIONAL(USE_OPENH264, false)
3359 AM_CONDITIONAL(USE_X265, false)
3360 AM_CONDITIONAL(USE_DTLS, false)
3361 AM_CONDITIONAL(USE_VULKAN, false)
3362 AM_CONDITIONAL(USE_TTML, false)
3363
3364 fi dnl of EXT plugins
3365
3366 dnl *** finalize CFLAGS, LDFLAGS, LIBS
3367
3368 dnl Overview:
3369 dnl GST_OPTION_CFLAGS:  common flags for profiling, debugging, errors, ...
3370 dnl GST_*:              flags shared by built objects to link against GStreamer
3371 dnl GST_ALL_LDFLAGS:    linker flags shared by all
3372 dnl GST_LIB_LDFLAGS:    additional linker flags for all libaries
3373 dnl GST_LT_LDFLAGS:     library versioning of our libraries
3374 dnl GST_PLUGIN_LDFLAGS: flags to be used for all plugins
3375
3376 dnl GST_OPTION_CFLAGS
3377 if test "x$USE_DEBUG" = xyes; then
3378    PROFILE_CFLAGS="-g"
3379 fi
3380 AC_SUBST(PROFILE_CFLAGS)
3381
3382 if test "x$PACKAGE_VERSION_NANO" = "x1"; then
3383   dnl Define _only_ during CVS (not pre-releases or releases)
3384   DEPRECATED_CFLAGS="-DGST_DISABLE_DEPRECATED"
3385 else
3386   DEPRECATED_CFLAGS=""
3387 fi
3388 AC_SUBST(DEPRECATED_CFLAGS)
3389
3390 dnl every flag in GST_OPTION_CFLAGS and GST_OPTION_CXXFLAGS can be overridden
3391 dnl at make time with e.g. make ERROR_CFLAGS=""
3392 GST_OPTION_CFLAGS="\$(WARNING_CFLAGS) \$(ERROR_CFLAGS) \$(DEBUG_CFLAGS) \$(PROFILE_CFLAGS) \$(GCOV_CFLAGS) \$(OPT_CFLAGS) \$(DEPRECATED_CFLAGS)"
3393 GST_OPTION_CXXFLAGS="\$(WARNING_CXXFLAGS) \$(ERROR_CXXFLAGS) \$(DEBUG_CFLAGS) \$(PROFILE_CFLAGS) \$(GCOV_CFLAGS) \$(OPT_CFLAGS) \$(DEPRECATED_CFLAGS)"
3394 GST_OPTION_OBJCFLAGS="\$(WARNING_OBJCFLAGS) \$(ERROR_OBJCFLAGS) \$(DEBUG_CFLAGS) \$(PROFILE_CFLAGS) \$(GCOV_CFLAGS) \$(OPT_CFLAGS) \$(DEPRECATED_CFLAGS)"
3395 AC_SUBST(GST_OPTION_CFLAGS)
3396 AC_SUBST(GST_OPTION_CXXFLAGS)
3397 AC_SUBST(GST_OPTION_OBJCFLAGS)
3398
3399 dnl FIXME: do we want to rename to GST_ALL_* ?
3400 dnl prefer internal headers to already installed ones
3401 dnl also add builddir include for enumtypes and marshal
3402 dnl add GST_OPTION_CFLAGS, but overridable
3403 GST_CFLAGS="$GST_CFLAGS $GST_STATIC_CFLAGS -DGST_USE_UNSTABLE_API"
3404 GST_CXXFLAGS="$GST_CFLAGS $GLIB_EXTRA_CFLAGS \$(GST_OPTION_CXXFLAGS)"
3405 GST_OBJCFLAGS="$GST_CFLAGS $GLIB_EXTRA_CFLAGS \$(GST_OPTION_OBJCFLAGS)"
3406 GST_CFLAGS="$GST_CFLAGS $GLIB_EXTRA_CFLAGS \$(GST_OPTION_CFLAGS)"
3407 AC_SUBST(GST_CFLAGS)
3408 AC_SUBST(GST_CXXFLAGS)
3409 AC_SUBST(GST_OBJCFLAGS)
3410 AC_SUBST(GST_LIBS)
3411 GST_PLUGINS_BAD_CXXFLAGS="-I\$(top_srcdir)/gst-libs -I\$(top_builddir)/gst-libs"
3412 GST_PLUGINS_BAD_OBJCFLAGS="-I\$(top_srcdir)/gst-libs -I\$(top_builddir)/gst-libs"
3413 GST_PLUGINS_BAD_CFLAGS="-I\$(top_srcdir)/gst-libs -I\$(top_builddir)/gst-libs"
3414 AC_SUBST(GST_PLUGINS_BAD_CFLAGS)
3415 AC_SUBST(GST_PLUGINS_BAD_CXXFLAGS)
3416 AC_SUBST(GST_PLUGINS_BAD_OBJCFLAGS)
3417
3418 dnl LDFLAGS really should only contain flags, not libs - they get added before
3419 dnl whatevertarget_LIBS and -L flags here affect the rest of the linking
3420 GST_ALL_LDFLAGS="-no-undefined"
3421 if test "x${enable_Bsymbolic}" = "xyes"; then
3422   GST_ALL_LDFLAGS="$GST_ALL_LDFLAGS -Wl,-Bsymbolic-functions"
3423 fi
3424 AC_SUBST(GST_ALL_LDFLAGS)
3425
3426 dnl GST_LIB_LDFLAGS
3427 dnl linker flags shared by all libraries
3428 dnl LDFLAGS modifier defining exported symbols from built libraries
3429 dnl (export _gst_foo but not __gst_foo)
3430 GST_LIB_LDFLAGS="-export-symbols-regex ^_?\(gst_\|Gst\|GST_\).*"
3431 AC_SUBST(GST_LIB_LDFLAGS)
3432
3433 dnl this really should only contain flags, not libs - they get added before
3434 dnl whatevertarget_LIBS and -L flags here affect the rest of the linking
3435 GST_PLUGIN_LDFLAGS="-module -avoid-version -export-symbols-regex '^[_]*gst_plugin_.*' $GST_ALL_LDFLAGS"
3436 AC_SUBST(GST_PLUGIN_LDFLAGS)
3437
3438 dnl *** output files ***
3439
3440 $MKDIR_P tests/check/orc
3441
3442 dnl po/Makefile.in
3443
3444 AC_CONFIG_FILES(
3445 Makefile
3446 common/Makefile
3447 common/m4/Makefile
3448 gst/Makefile
3449 gst/accurip/Makefile
3450 gst/adpcmdec/Makefile
3451 gst/adpcmenc/Makefile
3452 gst/aiff/Makefile
3453 gst/videoframe_audiolevel/Makefile
3454 gst/asfmux/Makefile
3455 gst/audiobuffersplit/Makefile
3456 gst/audiofxbad/Makefile
3457 gst/audiomixer/Makefile
3458 gst/audiovisualizers/Makefile
3459 gst/autoconvert/Makefile
3460 gst/bayer/Makefile
3461 gst/camerabin2/Makefile
3462 gst/coloreffects/Makefile
3463 gst/debugutils/Makefile
3464 gst/dvbsuboverlay/Makefile
3465 gst/dvdspu/Makefile
3466 gst/festival/Makefile
3467 gst/fieldanalysis/Makefile
3468 gst/freeverb/Makefile
3469 gst/frei0r/Makefile
3470 gst/gaudieffects/Makefile
3471 gst/geometrictransform/Makefile
3472 gst/gdp/Makefile
3473 gst/id3tag/Makefile
3474 gst/inter/Makefile
3475 gst/interlace/Makefile
3476 gst/ivfparse/Makefile
3477 gst/ivtc/Makefile
3478 gst/jp2kdecimator/Makefile
3479 gst/jpegformat/Makefile
3480 gst/librfb/Makefile
3481 gst/midi/Makefile
3482 gst/mpegdemux/Makefile
3483 gst/mpegtsdemux/Makefile
3484 gst/mpegtsmux/Makefile
3485 gst/mpegtsmux/tsmux/Makefile
3486 gst/mpegpsmux/Makefile
3487 gst/mxf/Makefile
3488 gst/netsim/Makefile
3489 gst/onvif/Makefile
3490 gst/pcapparse/Makefile
3491 gst/pnm/Makefile
3492 gst/rawparse/Makefile
3493 gst/removesilence/Makefile
3494 gst/sdp/Makefile
3495 gst/segmentclip/Makefile
3496 gst/siren/Makefile
3497 gst/smooth/Makefile
3498 gst/speed/Makefile
3499 gst/subenc/Makefile
3500 gst/stereo/Makefile
3501 gst/timecode/Makefile
3502 gst/videofilters/Makefile
3503 gst/videoparsers/Makefile
3504 gst/videosignal/Makefile
3505 gst/vmnc/Makefile
3506 gst/y4m/Makefile
3507 gst/yadif/Makefile
3508 gst/compositor/Makefile
3509 gst-libs/Makefile
3510 gst-libs/gst/Makefile
3511 gst-libs/gst/adaptivedemux/Makefile
3512 gst-libs/gst/basecamerabinsrc/Makefile
3513 gst-libs/gst/gl/Makefile
3514 gst-libs/gst/gl/android/Makefile
3515 gst-libs/gst/gl/cocoa/Makefile
3516 gst-libs/gst/gl/dispmanx/Makefile
3517 gst-libs/gst/gl/glprototypes/Makefile
3518 gst-libs/gst/gl/eagl/Makefile
3519 gst-libs/gst/gl/egl/Makefile
3520 gst-libs/gst/gl/wayland/Makefile
3521 gst-libs/gst/gl/win32/Makefile
3522 gst-libs/gst/gl/x11/Makefile
3523 gst-libs/gst/insertbin/Makefile
3524 gst-libs/gst/interfaces/Makefile
3525 gst-libs/gst/codecparsers/Makefile
3526 gst-libs/gst/mpegts/Makefile
3527 gst-libs/gst/uridownloader/Makefile
3528 gst-libs/gst/wayland/Makefile
3529 gst-libs/gst/base/Makefile
3530 gst-libs/gst/player/Makefile
3531 gst-libs/gst/video/Makefile
3532 gst-libs/gst/audio/Makefile
3533 gst-libs/gst/opencv/Makefile
3534 sys/Makefile
3535 sys/dshowdecwrapper/Makefile
3536 sys/acmenc/Makefile
3537 sys/acmmp3dec/Makefile
3538 sys/androidmedia/Makefile
3539 sys/applemedia/Makefile
3540 sys/bluez/Makefile
3541 sys/d3dvideosink/Makefile
3542 sys/decklink/Makefile
3543 sys/directsound/Makefile
3544 sys/dshowsrcwrapper/Makefile
3545 sys/dshowvideosink/Makefile
3546 sys/dvb/Makefile
3547 sys/fbdev/Makefile
3548 sys/kms/Makefile
3549 sys/msdk/Makefile
3550 sys/nvenc/Makefile
3551 sys/opensles/Makefile
3552 sys/shm/Makefile
3553 sys/tinyalsa/Makefile
3554 sys/uvch264/Makefile
3555 sys/vcd/Makefile
3556 sys/vdpau/Makefile
3557 sys/wasapi/Makefile
3558 sys/winks/Makefile
3559 sys/winscreencap/Makefile
3560 tests/Makefile
3561 tests/check/Makefile
3562 tests/files/Makefile
3563 tests/examples/Makefile
3564 tests/examples/avsamplesink/Makefile
3565 tests/examples/camerabin2/Makefile
3566 tests/examples/codecparsers/Makefile
3567 tests/examples/directfb/Makefile
3568 tests/examples/gl/Makefile
3569 tests/examples/gl/cocoa/Makefile
3570 tests/examples/gl/clutter/Makefile
3571 tests/examples/gl/generic/Makefile
3572 tests/examples/gl/generic/cube/Makefile
3573 tests/examples/gl/generic/cubeyuv/Makefile
3574 tests/examples/gl/generic/doublecube/Makefile
3575 tests/examples/gl/generic/recordgraphic/Makefile
3576 tests/examples/gl/gtk/Makefile
3577 tests/examples/gl/gtk/3dvideo/Makefile
3578 tests/examples/gl/gtk/filternovideooverlay/Makefile
3579 tests/examples/gl/gtk/filtervideooverlay/Makefile
3580 tests/examples/gl/gtk/fxtest/Makefile
3581 tests/examples/gl/gtk/switchvideooverlay/Makefile
3582 tests/examples/gl/qt/Makefile
3583 tests/examples/gl/sdl/Makefile
3584 tests/examples/gtk/Makefile
3585 tests/examples/mpegts/Makefile
3586 tests/examples/mxf/Makefile
3587 tests/examples/opencv/Makefile
3588 tests/examples/uvch264/Makefile
3589 tests/examples/waylandsink/Makefile
3590 tests/icles/Makefile
3591 ext/voamrwbenc/Makefile
3592 ext/voaacenc/Makefile
3593 ext/assrender/Makefile
3594 ext/bs2b/Makefile
3595 ext/bz2/Makefile
3596 ext/chromaprint/Makefile
3597 ext/curl/Makefile
3598 ext/dash/Makefile
3599 ext/dc1394/Makefile
3600 ext/directfb/Makefile
3601 ext/wayland/Makefile
3602 ext/daala/Makefile
3603 ext/dts/Makefile
3604 ext/gl/Makefile
3605 ext/gtk/Makefile
3606 ext/faac/Makefile
3607 ext/faad/Makefile
3608 ext/fdkaac/Makefile
3609 ext/flite/Makefile
3610 ext/fluidsynth/Makefile
3611 ext/gsm/Makefile
3612 ext/hls/Makefile
3613 ext/iqa/Makefile
3614 ext/kate/Makefile
3615 ext/ladspa/Makefile
3616 ext/lv2/Makefile
3617 ext/libde265/Makefile
3618 ext/libmms/Makefile
3619 ext/Makefile
3620 ext/modplug/Makefile
3621 ext/mpeg2enc/Makefile
3622 ext/mplex/Makefile
3623 ext/musepack/Makefile
3624 ext/neon/Makefile
3625 ext/ofa/Makefile
3626 ext/openal/Makefile
3627 ext/opencv/Makefile
3628 ext/openexr/Makefile
3629 ext/openh264/Makefile
3630 ext/openjpeg/Makefile
3631 ext/openni2/Makefile
3632 ext/opus/Makefile
3633 ext/qt/Makefile
3634 ext/rsvg/Makefile
3635 ext/resindvd/Makefile
3636 ext/rtmp/Makefile
3637 ext/sbc/Makefile
3638 ext/schroedinger/Makefile
3639 ext/smoothstreaming/Makefile
3640 ext/sndfile/Makefile
3641 ext/soundtouch/Makefile
3642 ext/spandsp/Makefile
3643 ext/srtp/Makefile
3644 ext/teletextdec/Makefile
3645 ext/gme/Makefile
3646 ext/spc/Makefile
3647 ext/wildmidi/Makefile
3648 ext/vulkan/Makefile
3649 ext/vulkan/xcb/Makefile
3650 ext/vulkan/wayland/Makefile
3651 ext/webp/Makefile
3652 ext/x265/Makefile
3653 ext/zbar/Makefile
3654 ext/dtls/Makefile
3655 ext/webrtcdsp/Makefile
3656 ext/ttml/Makefile
3657 po/Makefile.in
3658 docs/Makefile
3659 docs/plugins/Makefile
3660 docs/libs/Makefile
3661 docs/version.entities
3662 pkgconfig/Makefile
3663 pkgconfig/gstreamer-plugins-bad.pc
3664 pkgconfig/gstreamer-plugins-bad-uninstalled.pc
3665 pkgconfig/gstreamer-codecparsers.pc
3666 pkgconfig/gstreamer-codecparsers-uninstalled.pc
3667 pkgconfig/gstreamer-insertbin.pc
3668 pkgconfig/gstreamer-insertbin-uninstalled.pc
3669 pkgconfig/gstreamer-gl.pc
3670 pkgconfig/gstreamer-gl-uninstalled.pc
3671 pkgconfig/gstreamer-mpegts.pc
3672 pkgconfig/gstreamer-mpegts-uninstalled.pc
3673 pkgconfig/gstreamer-player.pc
3674 pkgconfig/gstreamer-player-uninstalled.pc
3675 pkgconfig/gstreamer-wayland.pc
3676 pkgconfig/gstreamer-wayland-uninstalled.pc
3677 pkgconfig/gstreamer-bad-base.pc
3678 pkgconfig/gstreamer-bad-base-uninstalled.pc
3679 pkgconfig/gstreamer-bad-video.pc
3680 pkgconfig/gstreamer-bad-video-uninstalled.pc
3681 pkgconfig/gstreamer-bad-audio.pc
3682 pkgconfig/gstreamer-bad-audio-uninstalled.pc
3683 tools/Makefile
3684 m4/Makefile
3685 )
3686
3687 AC_OUTPUT
3688
3689 AG_GST_OUTPUT_PLUGINS
3690 ORC_OUTPUT
3691