Rename bonjour module to avahi
[vlc.git] / configure.ac
1 dnl Autoconf settings for vlc
2
3 AC_COPYRIGHT([Copyright 1999-2016 VLC authors and VideoLAN])
4
5 AC_INIT(vlc, 3.0.0-git)
6 VERSION_MAJOR=3
7 VERSION_MINOR=0
8 VERSION_REVISION=0
9 VERSION_EXTRA=0
10 VERSION_DEV=git
11
12 PKGDIR="vlc"
13 AC_SUBST(PKGDIR)
14
15 CONFIGURE_LINE="`echo "$0 $ac_configure_args" | sed -e 's/\\\/\\\\\\\/g'`"
16 CODENAME="Vetinari"
17 COPYRIGHT_YEARS="1996-2016"
18
19 AC_CONFIG_SRCDIR(src/libvlc.c)
20 AC_CONFIG_AUX_DIR(autotools)
21 AC_CONFIG_MACRO_DIR(m4)
22 AC_CONFIG_LIBOBJ_DIR(compat)
23 AC_CANONICAL_BUILD
24 AC_CANONICAL_HOST
25 AC_PRESERVE_HELP_ORDER
26
27 AM_INIT_AUTOMAKE(tar-ustar color-tests foreign)
28 AC_CONFIG_HEADERS([config.h])
29
30 AM_SILENT_RULES([yes])
31 AM_MAINTAINER_MODE([enable])
32
33 dnl
34 dnl Directories
35 dnl
36 dnl vlcincludedir="\${includedir}/\${PKGDIR}"
37 dnl AC_SUBST(vlcincludedir)
38 vlcdatadir="\${datadir}/\${PKGDIR}"
39 AC_SUBST(vlcdatadir)
40 vlclibdir="\${libdir}/\${PKGDIR}"
41 AC_SUBST(vlclibdir)
42
43 dnl
44 dnl Check for tools
45 dnl
46 AC_PROG_CC_C99
47 AC_USE_SYSTEM_EXTENSIONS
48 VLC_PROG_CC_C11
49 AC_DEFINE([_FORTIFY_SOURCE], 2, [Define to 2 to get glibc warnings.])
50 AC_DEFINE([_FILE_OFFSET_BITS], 64, [Define to 64 for large files support.])
51 AH_TOP([
52 #ifndef _REENTRANT
53 # define _REENTRANT
54 #endif
55 ])
56 AC_DEFINE([_THREAD_SAFE],, [Same as _REENTANT for some other OSes.])
57 AC_DEFINE([__LIBVLC__],, [Define within the LibVLC source code tree.])
58 AC_DEFINE([WIN32_LEAN_AND_MEAN],, [Define to limit the scope of <windows.h>.])
59
60 AM_PROG_CC_C_O
61 AC_PROG_CXX
62 AC_PROG_CPP
63 AC_PROG_OBJC
64 _AM_DEPENDENCIES([OBJC])
65 AC_PROG_EGREP
66 AC_PROG_MAKE_SET
67 AC_PROG_INSTALL
68 AM_PROG_AS
69
70 AC_ARG_VAR([DESKTOP_FILE_VALIDATE], [Validator for desktop entry files])
71 AC_CHECK_PROGS(DESKTOP_FILE_VALIDATE, [${DESKTOP_FILE_VALIDATE} desktop-file-validate], :)
72 AC_ARG_VAR([BUILDCC], [Build system C11 or C99 compiler command])
73 AC_CHECK_PROGS(BUILDCC, [c11-gcc c11 c99-gcc c99], [false])
74 AS_IF([test "$BUILDCC" = "false"], [
75   AC_MSG_ERROR([Cannot find native C99 compiler: please define BUILDCC.])
76 ])
77
78 dnl Check for compiler properties
79 AC_C_CONST
80 AC_C_INLINE
81 AC_C_RESTRICT
82 AX_CXX_COMPILE_STDCXX_11(noext, optional)
83
84 dnl Extend the --help string at the current spot.
85 AC_DEFUN([EXTEND_HELP_STRING], [m4_divert_once([HELP_ENABLE], [$1])])
86
87 dnl Allow binary package maintainer to pass a custom string to avoid
88 dnl cache problem
89 AC_ARG_WITH(binary-version,
90     AS_HELP_STRING([--with-binary-version=STRING],
91          [To avoid plugins cache problem between binary version]),[],[])
92 AS_IF([test -n "${with_binary_version}"],[
93     AC_DEFINE_UNQUOTED([DISTRO_VERSION],["${with_binary_version}"],
94          [Binary specific version])
95 ])
96
97 dnl
98 dnl  Check the operating system
99 dnl
100 HAVE_WIN64="0"
101 HAVE_IOS="0"
102 HAVE_OSX="0"
103 HAVE_TVOS="0"
104
105 case "${host_os}" in
106   "")
107     SYS=unknown
108     ;;
109   linux*)
110     SYS=linux
111     ;;
112   bsdi*)
113     SYS=bsdi
114     CFLAGS="${CFLAGS} -pthread"
115     ;;
116   freebsd*)
117     SYS=freebsd
118     CFLAGS="${CFLAGS} -pthread"
119     CPPFLAGS="${CPPFLAGS} -I/usr/local/include"
120     LDFLAGS="${LDFLAGS} -L/usr/local/lib"
121     ;;
122   openbsd*)
123     SYS=openbsd
124     CPPFLAGS="${CPPFLAGS} -I/usr/local/include -I/usr/X11R6/include"
125     LDFLAGS="${LDFLAGS} -L/usr/local/lib -L/usr/X11R6/lib/"
126     ;;
127   netbsd*)
128     SYS=netbsd
129     ;;
130   dragonfly*)
131     SYS=dragonfly
132     ;;
133   darwin*)
134
135     dnl Force gcc "-arch" flag
136     ARCH_flag=""
137     case "${host}" in
138       i?86*)
139         ARCH_flag="-arch i386"
140       ;;
141       ppc64*)
142         ARCH_flag="-arch ppc64"
143       ;;
144       ppc*)
145         ARCH_flag="-arch ppc"
146       ;;
147       x86_64*)
148         ARCH_flag="-arch x86_64"
149       ;;
150       arm*)
151         ac_cv_c_bigendian="no"
152         ac_cv_c_attribute_packed="no"
153       ;;
154     esac
155
156     SYS=darwin
157     CFLAGS="${CFLAGS} -D_INTL_REDIRECT_MACROS -std=gnu11 ${ARCH_flag}"
158     CXX="${CXX} -stdlib=libc++ -std=c++11"
159     CXXFLAGS="${CXXFLAGS} -D_INTL_REDIRECT_MACROS ${ARCH_flag}"
160     CPPFLAGS="${CPPFLAGS} ${ARCH_flag}"
161     OBJCFLAGS="${OBJCFLAGS} -D_INTL_REDIRECT_MACROS -std=gnu11 ${ARCH_flag}"
162     LDFLAGS="${LDFLAGS} -Wl,-headerpad_max_install_names ${ARCH_flag}"
163     VLC_ADD_LIBS([libvlc vlc],[-Wl,-undefined,dynamic_lookup,-framework,AppKit])
164     VLC_ADD_LIBS([libvlccore],[-Wl,-framework,CoreFoundation,-framework,CoreServices])
165
166     AC_EGREP_CPP(yes,
167             [#import <TargetConditionals.h>
168              #if TARGET_OS_IPHONE
169              yes
170              #endif],
171              [HAVE_IOS="1"],
172              [HAVE_OSX="1"])
173
174     AC_EGREP_CPP(yes,
175             [#import <TargetConditionals.h>
176              #if TARGET_OS_TV
177              yes
178              #endif],
179              [HAVE_TVOS="1"
180              HAVE_IOS="0"
181              HAVE_OSX="0"
182              ],)
183
184     dnl Allow binaries created on Lion to run on earlier releases
185     AC_EGREP_CPP(yes,
186            [#import <Cocoa/Cocoa.h>
187             #ifdef MAC_OS_X_VERSION_10_7
188             yes
189             #endif],
190             [AC_MSG_RESULT([yes])
191             AC_LIBOBJ([getdelim])
192             AC_LIBOBJ([strndup])
193             AC_LIBOBJ([strnlen])],)
194
195     dnl
196     dnl  Handle Mac OS X SDK flags
197     dnl
198     AC_ARG_WITH(macosx-sdk,
199       [AS_HELP_STRING([--with-macosx-sdk=DIR],
200         [compile using the SDK in DIR])])
201     if test "${with_macosx_sdk}" != "" ; then
202         test ! -d "${with_macosx_sdk}" && AC_MSG_ERROR([SDK "${with_macosx_sdk}" not found])
203         CPP="${CPP} -isysroot ${with_macosx_sdk}"
204         CC="${CC} -isysroot ${with_macosx_sdk}"
205         CXX="${CXX} -isysroot ${with_macosx_sdk}"
206         OBJC="${OBJC} -isysroot ${with_macosx_sdk}"
207         LD="${LD} -syslibroot ${with_macosx_sdk}"
208     fi
209     AC_ARG_WITH(macosx-version-min,
210       [AS_HELP_STRING([--with-macosx-version-min=VERSION],
211         [compile for Mac OS X VERSION and above])])
212     if test "${with_macosx_version_min}" != "" ; then
213         CPP="${CPP} -mmacosx-version-min=${with_macosx_version_min}"
214         CC="${CC} -mmacosx-version-min=${with_macosx_version_min}"
215         CXX="${CXX} -mmacosx-version-min=${with_macosx_version_min}"
216         OBJC="${OBJC} -mmacosx-version-min=${with_macosx_version_min}"
217         LD="${LD} -mmacosx_version_min=${with_macosx_version_min}"
218     fi
219     ;;
220   *mingw32* | *cygwin* | *wince* | *mingwce*)
221     AC_CHECK_TOOL(WINDRES, windres, :)
222     AC_CHECK_TOOL(OBJCOPY, objcopy, :)
223     AH_TOP([#if defined(_WIN32) && !defined(_WIN32_WINNT)])
224     AH_TOP([# define _WIN32_WINNT 0x0502 /* Windows XP SP2 */])
225     AH_TOP([#endif])
226     AC_DEFINE([_WIN32_IE], 0x0600, [Define to '0x0600' for IE 6.0 (and shell) APIs.])
227     AC_DEFINE([_UNICODE], [1], [Define to 1 for Unicode (Wide Chars) APIs.])
228     AC_DEFINE([UNICODE], [1], [Define to 1 for Unicode (Wide Chars) APIs.])
229     AC_DEFINE([_ISOC99_SOURCE], [1], [Extensions to ISO C89 from ISO C99.])
230     AC_DEFINE([_ISOC11_SOURCE], [1], [Extensions to ISO C99 from ISO C11.])
231     AC_DEFINE([_POSIX_SOURCE], [1], [IEEE Std 1003.1.])
232     AC_DEFINE([_POSIX_C_SOURCE], [200809L], [IEEE Std 1003.1.])
233     AC_DEFINE([_XOPEN_SOURCE], [700], [POSIX and XPG 7th edition])
234     AC_DEFINE([_XOPEN_SOURCE_EXTENDED], [1], [XPG things and X/Open Unix extensions.])
235     AC_DEFINE([_BSD_SOURCE], [1], [ISO C, POSIX, and 4.3BSD things.])
236     AC_DEFINE([_SVID_SOURCE], [1], [ISO C, POSIX, and SVID things.])
237
238     case "${host_os}" in
239       *mingw32*)
240         SYS=mingw32
241         ;;
242       *cygwin*)
243         dnl Check if we are using the mno-cygwin mode in which case we are
244         dnl actually dealing with a mingw32 compiler.
245         AC_EGREP_CPP(yes,
246             [#ifdef _WIN32
247              yes
248              #endif],
249             SYS=mingw32, AC_MSG_ERROR([VLC requires -mno-cygwin]))
250         ;;
251     esac
252
253     if test "${SYS}" = "mingw32"; then
254         # DEP, ASLR, NO SEH
255         LDFLAGS="${LDFLAGS} -Wl,--nxcompat -Wl,--no-seh -Wl,--dynamicbase"
256
257         AC_CHECK_PROGS(U2D, [unix2dos todos], unix2dos)
258         ac_default_prefix="`pwd`/_win32"
259         DESTDIR="`pwd`/_win32/"
260
261         dnl
262         dnl NSIS/MSI Installer prefix and WIN64
263         dnl
264         case "${host}" in
265             amd64*|x86_64*)
266                 HAVE_WIN64="1"
267                 WINDOWS_ARCH="x64"
268                 PROGRAMFILES="PROGRAMFILES64"
269             ;;
270             *)
271                 WINDOWS_ARCH="x86"
272                 PROGRAMFILES="PROGRAMFILES"
273             ;;
274         esac
275         AC_SUBST(WINDOWS_ARCH)
276         AC_SUBST(PROGRAMFILES)
277
278     fi
279     ;;
280   *nto*)
281     SYS=nto
282     ;;
283   solaris*)
284     SYS=solaris
285     ;;
286   hpux*)
287     SYS=hpux
288     ;;
289   *os2*)
290     SYS=os2
291     LDFLAGS="${LDFLAGS} -Zomf -Zbin-files -Zargs-wild -Zhigh-mem"
292     AC_LIBOBJ([freeaddrinfo])
293     AC_LIBOBJ([gai_strerror])
294     ;;
295   *)
296     SYS="${host_os}"
297     ;;
298 esac
299 AM_CONDITIONAL(HAVE_DARWIN,  test "${SYS}" = "darwin")
300 AM_CONDITIONAL(HAVE_LINUX,   test "${SYS}" = "linux")
301 AM_CONDITIONAL(HAVE_OS2,     test "${SYS}" = "os2")
302 AM_CONDITIONAL(HAVE_WIN32,   test "${SYS}" = "mingw32")
303 AM_CONDITIONAL(HAVE_WIN64,   test "${HAVE_WIN64}" = "1")
304 AM_CONDITIONAL(HAVE_IOS,     test "${HAVE_IOS}" = "1")
305 AM_CONDITIONAL(HAVE_OSX,     test "${HAVE_OSX}" = "1")
306 AM_CONDITIONAL(HAVE_TVOS,    test "${HAVE_TVOS}" = "1")
307
308 dnl
309 dnl Sadly autoconf does not think about testing foo.exe when ask to test
310 dnl for program foo on win32
311 case "${build_os}" in
312     cygwin|msys)
313         ac_executable_extensions=".exe"
314     ;;
315     os2*)
316         BUILDEXEEXT=".exe"
317     ;;
318     *)
319     ;;
320 esac
321 AC_SUBST(BUILDEXEEXT)
322
323 dnl Android is linux, but a bit different
324 AS_IF([test "$SYS" = linux],[
325     AC_MSG_CHECKING([for an Android system])
326     AC_PREPROC_IFELSE([AC_LANG_PROGRAM(
327         [[#ifndef __ANDROID__
328          # error Not Android
329          #endif
330         ]],[[;]])
331     ],[
332       HAVE_ANDROID="1"
333       AC_MSG_RESULT([yes])
334     ],[
335       AC_MSG_RESULT([no])
336     ])
337 ])
338 AM_CONDITIONAL(HAVE_ANDROID, test "${HAVE_ANDROID}" = "1")
339
340 dnl Tizen (minimum SDK version: 2.3)
341 AS_IF([test "$SYS" = linux],[
342     AC_MSG_CHECKING([for Tizen])
343     AC_PREPROC_IFELSE([AC_LANG_PROGRAM(
344         [[#include <tizen.h>
345         ]],[[;]])
346     ],[
347       HAVE_TIZEN="1"
348       AC_DEFINE([HAVE_TIZEN_SDK], [1], [Define to 1 if vlc is built against Tizen SDK])
349       AC_MSG_RESULT([yes])
350     ],[
351       AC_MSG_RESULT([no])
352     ])
353 ])
354 AM_CONDITIONAL(HAVE_TIZEN, test "${HAVE_TIZEN}" = "1")
355
356 dnl
357 dnl  Check for the contrib directory
358 dnl
359 AC_ARG_WITH(contrib,
360   [AS_HELP_STRING([--with-contrib[=DIR]],
361     [search for 3rd party libraries in DIR/include and DIR/lib])
362 ])
363 AC_MSG_CHECKING([for 3rd party libraries path])
364 AS_IF([test -z "${with_contrib}" || test "${with_contrib}" = "yes"], [
365   CONTRIB_DIR="${srcdir}/contrib/${host}"
366   AS_IF([test ! -d "${CONTRIB_DIR}"], [
367     echo "${CONTRIB_DIR} not found" >&AS_MESSAGE_LOG_FD
368     CONTRIB_DIR="${srcdir}/contrib/`$CC -dumpmachine`"
369     AS_IF([test ! -d "${CONTRIB_DIR}"], [
370       echo "${CONTRIB_DIR} not found" >&AS_MESSAGE_LOG_FD
371       CONTRIB_DIR="${srcdir}/extras/contrib/hosts/${host}"
372       AS_IF([test ! -d "${CONTRIB_DIR}"], [
373         echo "${CONTRIB_DIR} not found" >&AS_MESSAGE_LOG_FD
374         CONTRIB_DIR="${srcdir}/extras/contrib/hosts/`$CC -dumpmachine`"
375         AS_IF([test ! -d "${CONTRIB_DIR}"], [
376           echo "${CONTRIB_DIR} not found" >&AS_MESSAGE_LOG_FD
377           CONTRIB_DIR=""
378           AC_MSG_RESULT([not found])
379         ])
380       ])
381     ])
382   ])
383 ], [
384   AS_IF([test "${with_contrib}" != "no"], [
385     CONTRIB_DIR="${with_contrib}"
386   ], [
387     CONTRIB_DIR=""
388     AC_MSG_RESULT([disabled])
389   ])
390 ])
391 AS_IF([test -n "${CONTRIB_DIR}"], [
392   AS_IF([test -d "${CONTRIB_DIR}/lib"],[
393     CONTRIB_DIR=`cd "${CONTRIB_DIR}" && pwd`
394   ], [
395     echo "${CONTRIB_DIR}/lib not found" >&AS_MESSAGE_LOG_FD
396     CONTRIB_DIR=""
397     AC_MSG_RESULT([not usable])
398   ])
399
400 ])
401 AS_IF([test -n "${CONTRIB_DIR}"], [
402   AC_MSG_RESULT([${CONTRIB_DIR}])
403   export PATH=${CONTRIB_DIR}/bin:$PATH
404   CPPFLAGS="${CPPFLAGS} -I${CONTRIB_DIR}/include"
405   CFLAGS="${CFLAGS} -I${CONTRIB_DIR}/include"
406   CXXFLAGS="${CXXFLAGS} -I${CONTRIB_DIR}/include"
407   OBJCFLAGS="${OBJCFLAGS} -I${CONTRIB_DIR}/include"
408   export PKG_CONFIG_PATH="${CONTRIB_DIR}/lib/pkgconfig:$PKG_CONFIG_PATH"
409   LDFLAGS="${LDFLAGS} -L${CONTRIB_DIR}/lib"
410
411   AS_IF([test "${SYS}" = "darwin"], [
412     export LD_LIBRARY_PATH="${CONTRIB_DIR}/lib:$LD_LIBRARY_PATH"
413     export DYLD_LIBRARY_PATH="${CONTRIB_DIR}/lib:$DYLD_LIBRARY_PATH"
414   ])
415 ], [
416   AS_IF([test -n "${with_contrib}" && test "${with_contrib}" != "no"], [
417     AC_MSG_ERROR([Third party libraries not found!])
418   ])
419 ])
420 AC_SUBST(CONTRIB_DIR)
421
422 dnl Add extras/tools to the PATH
423 TOOLS_DIR="${srcdir}/extras/tools/build/bin"
424 AS_IF([test -d "${TOOLS_DIR}"], [
425     TOOLS_DIR=`cd "${TOOLS_DIR}" && pwd`
426     export PATH="${TOOLS_DIR}":$PATH
427 ])
428
429 dnl
430 dnl  Libtool
431 dnl  It's very bad, but our former custom system was worst
432 dnl  -- Courmisch
433 dnl
434
435 dnl override platform specific check for dependent libraries
436 dnl otherwise libtool linking of shared libraries will
437 dnl fail on anything other than pass_all.
438 AC_CACHE_VAL(lt_cv_deplibs_check_method,
439     [lt_cv_deplibs_check_method=pass_all])
440
441 LT_INIT([dlopen win32-dll shared disable-static])
442 LT_LANG([C++])
443 LT_LANG([Windows Resource])
444
445 DOLT
446
447 lt_cv_deplibs_check_method=pass_all
448
449 AS_IF([test "${enable_shared}" = "no" -a "${enable_vlc}" != "no"], [
450   AC_MSG_ERROR([VLC is based on plugins. Shared libraries cannot be disabled.])
451 ])
452
453 dnl
454 dnl Gettext stuff
455 dnl
456 AM_GNU_GETTEXT_VERSION([0.19.6])
457 AM_GNU_GETTEXT([external], [need-formatstring-macros])
458
459 dnl
460 dnl Iconv stuff
461 dnl
462 AM_ICONV
463
464 dnl
465 dnl checks for mingw
466 AS_IF([test "${SYS}" = "mingw32"], [
467
468 AC_PREPROC_IFELSE([AC_LANG_SOURCE([
469 #if !defined(__MINGW32__)
470 # error Not compiling with mingw
471 #endif
472     ])], [
473
474 dnl Check for broken versions of mingw-runtime compatability library
475     AC_MSG_CHECKING(for broken mingw-runtime)
476     AC_PREPROC_IFELSE([AC_LANG_SOURCE([
477 #include <_mingw.h>
478 #if defined(__MINGW64_VERSION_MAJOR)
479 # if __MINGW64_VERSION_MAJOR < 3
480 #  error Attempting to use mingw-runtime with broken vsnprintf and direct2d support
481 # endif
482 #elif __MINGW32_MAJOR_VERSION == 3 && __MINGW32_MINOR_VERSION < 15
483 # error Attempting to use mingw-runtime with broken vsnprintf support
484 #endif
485     ])], [
486         AC_MSG_RESULT([ok])
487     ], [
488         AC_MSG_RESULT([present])
489         AC_MSG_ERROR([LibVLC requires mingw-runtime version 3.15 or higher, or mingw-w64 version 3.0 or higher!])
490     ])
491
492     dnl force use of mingw provided c99 *printf over msvcrt
493     CPPFLAGS="${CPPFLAGS} -D__USE_MINGW_ANSI_STDIO=1"
494
495     dnl Add WinMainCRTStartup entry point to show it's a WinMain application
496     VLC_ADD_LDFLAGS([vlc],[-mwindows])
497
498     dnl Check for the need to include the mingwex lib for mingw32
499     VLC_SAVE_FLAGS
500     AC_CHECK_LIB(mingwex,opendir,
501         AC_CHECK_LIB(mingw32,opendir,,
502             [VLC_ADD_LIBS([libvlccore],[-lmingwex])])
503     )
504     VLC_RESTORE_FLAGS
505     ], [
506         AC_MSG_RESULT([Not compiling with mingw])
507     ])
508
509     dnl Check for fnative-struct or mms-bitfields support for mingw32
510     VLC_SAVE_FLAGS
511     CFLAGS="${CFLAGS} -mms-bitfields"
512     CXXFLAGS="${CXXFLAGS} -mms-bitfields"
513     AC_CACHE_CHECK([if \$CC accepts -mms-bitfields],
514         [ac_cv_c_mms_bitfields],
515         [AC_TRY_COMPILE([],,ac_cv_c_mms_bitfields=yes, ac_cv_c_mms_bitfields=no)])
516     if test "${ac_cv_c_mms_bitfields}" = "no"; then
517         VLC_RESTORE_FLAGS
518         CFLAGS="${CFLAGS} -fnative-struct"
519         CXXFLAGS="${CXXFLAGS} -fnative-struct"
520         AC_CACHE_CHECK([if \$CC accepts -fnative-struct],
521             [ac_cv_c_fnative_struct],
522             [AC_TRY_COMPILE([],,ac_cv_c_fnative_struct=yes, ac_cv_c_fnative_struct=no)])
523         "${ac_cv_c_fnative_struct}" = "no" && VLC_RESTORE_FLAGS
524     fi
525 ])
526
527 AC_ARG_ENABLE(winstore_app,
528      AS_HELP_STRING([--enable-winstore-app],
529                     [Build targetted for Windows Store apps (default disabled)]))
530
531 vlc_winstore_app=0
532 AS_IF([test "${SYS}" = "mingw32"],[
533   AS_IF([test "${enable_winstore_app}" = "yes"], [
534     vlc_winstore_app=1
535      VLC_ADD_LIBS([libvlccore], [-lole32 -lruntimeobject])
536      AC_LIBOBJ([gai_strerror])
537     ],[
538      VLC_ADD_LIBS([libvlccore],[-lwinmm])
539     ])
540   ])
541 AC_DEFINE_UNQUOTED(VLC_WINSTORE_APP, ${vlc_winstore_app}, [Define to 1 if you want to build for Windows Store apps])
542 AM_CONDITIONAL([HAVE_WINSTORE], [test "$vlc_winstore_app" = "1"])
543
544
545 dnl
546 dnl Buggy glibc prevention. Purposedly not cached.
547 dnl See sourceware.org bugs 5058 and 5443.
548 dnl Ubuntu alone has 20 bug numbers for this...
549 dnl
550 AC_MSG_CHECKING(for buggy GNU/libc versions)
551 AC_PREPROC_IFELSE([AC_LANG_SOURCE([
552 #include <limits.h>
553 #if defined (__GLIBC__) && (__GLIBC__ == 2) \
554   && (__GLIBC_MINOR__ >= 5) && (__GLIBC_MINOR__ <= 7)
555 # error GNU/libc with dcgettext killer bug!
556 #endif
557 ])], [
558   AC_MSG_RESULT([not present])
559 ], [
560   AC_MSG_RESULT([found])
561   AS_IF([test "x${enable_nls}" != "xno"], [
562     AC_MSG_ERROR([Buggy GNU/libc (version 2.5 - 2.7) present. VLC would crash; there is no viable
563 work-around for this. Check with your distribution vendor on how to update the
564 glibc run-time. Alternatively, build with --disable-nls.])
565   ])
566 ])
567
568 dnl Plugin compilation stuff
569
570 VLC_LIBRARY_SUFFIX
571
572 dnl Check for system libs needed
573 need_libc=false
574
575 dnl Check for usual libc functions
576 AC_CHECK_DECLS([nanosleep],,,[#include <time.h>])
577 AC_CHECK_FUNCS([daemon fcntl flock fstatvfs fork getenv getpwuid_r isatty lstat memalign mkostemp mmap open_memstream openat pread posix_fadvise posix_madvise setlocale stricmp strnicmp strptime uselocale pthread_cond_timedwait_monotonic_np pthread_condattr_setclock])
578 AC_REPLACE_FUNCS([atof atoll dirfd fdopendir ffsll flockfile fsync getdelim getpid lldiv nrand48 poll posix_memalign recvmsg rewind sendmsg setenv strcasecmp strcasestr strdup strlcpy strndup strnlen strnstr strsep strtof strtok_r strtoll swab tdestroy timegm timespec_get strverscmp])
579 AC_CHECK_FUNCS(fdatasync,,
580   [AC_DEFINE(fdatasync, fsync, [Alias fdatasync() to fsync() if missing.])
581 ])
582
583 dnl mingw64 implements those as static inline, not functions with C linkage
584 VLC_REPLACE_DECL([asprintf], [#include <stdio.h>])
585 VLC_REPLACE_DECL([vasprintf], [#include <stdio.h>])
586 VLC_REPLACE_DECL([gmtime_r], [#include <time.h>])
587 VLC_REPLACE_DECL([localtime_r], [#include <time.h>])
588
589 dnl C11 static_assert()
590 AC_MSG_CHECKING([for static_assert in assert.h])
591 AC_LINK_IFELSE([AC_LANG_PROGRAM([#include <assert.h>], [
592 static_assert(1, "The impossible happened.");
593 ])], [
594   AC_MSG_RESULT([yes])
595   AC_DEFINE([HAVE_STATIC_ASSERT], [1], [Define to 1 if <assert.h> defines static_assert.])
596 ], [
597   AC_MSG_RESULT([no])
598 ])
599
600 # Windows CE does not have strcoll()
601 AC_FUNC_STRCOLL
602
603 dnl Check for non-standard system calls
604 case "$SYS" in
605   "linux")
606     AC_CHECK_FUNCS([accept4 pipe2 eventfd vmsplice sched_getaffinity])
607     ;;
608   "mingw32")
609     AC_CHECK_FUNCS([_lock_file])
610     ;;
611 esac
612
613 AH_BOTTOM([#include <vlc_fixups.h>])
614
615 dnl Check for struct pollfd
616 AC_CHECK_TYPES([struct pollfd],,,
617 [#include <sys/types.h>
618 #if HAVE_POLL
619 # include <poll.h>
620 #elif defined (_WIN32)
621 # include <winsock2.h>
622 #endif
623 ])
624
625 dnl Checks for socket stuff
626 VLC_SAVE_FLAGS
627 SOCKET_LIBS=""
628 AC_SEARCH_LIBS(connect, [socket], [
629   AS_IF([test "$ac_cv_search_connect" != "none required"], [
630     SOCKET_LIBS="$ac_cv_search_connect"
631   ])
632 ], [
633   AS_IF([test "${SYS}" = "mingw32"], [
634     SOCKET_LIBS="-lws2_32"
635   ])
636 ])
637
638 AC_SEARCH_LIBS([inet_pton], [nsl], [
639  AS_IF([test "$ac_cv_search_inet_pton" != "none required"], [
640     SOCKET_LIBS="$ac_cv_search_inet_pton $SOCKET_LIBS"
641   ])
642 ],, [${SOCKET_LIBS}])
643
644 LIBS="${LIBS} ${SOCKET_LIBS}"
645 AC_LINK_IFELSE([
646     AC_LANG_PROGRAM([#ifdef _WIN32
647         # if _WIN32_WINNT < 0x600
648         #  error Needs vista+
649         # endif
650         #include <ws2tcpip.h>
651         #else
652         #include <sys/socket.h>
653         #include <arpa/inet.h>
654         #endif], [
655         char dst[[sizeof(struct in_addr)]];
656         inet_pton(AF_INET, "127.0.0.1", dst);
657     ])],[AC_DEFINE([HAVE_INET_PTON],[1],[Define to 1 if you have inet_pton function])],[AC_LIBOBJ([inet_pton])])
658 AC_CHECK_FUNCS([if_nameindex if_nametoindex])
659 VLC_RESTORE_FLAGS
660 AC_SUBST(SOCKET_LIBS)
661
662 dnl Check for socklen_t
663 AH_TEMPLATE(socklen_t, [Define to `int' if <sys/socket.h> does not define.])
664 AC_CACHE_CHECK([for socklen_t in sys/socket.h], dnl ` (fix VIM syntax highlight
665 ac_cv_type_socklen_t,
666 [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([
667 [#include <sys/types.h>
668 #ifdef _WIN32
669 # include <winsock2.h>
670 # include <ws2tcpip.h>
671 #else
672 # include <sys/socket.h>
673 #endif]], [[socklen_t len; len = 0;]])],
674 ac_cv_type_socklen_t=yes,
675 ac_cv_type_socklen_t=no)])
676 AS_IF([test "$ac_cv_type_socklen_t" = no],
677  [AC_DEFINE(socklen_t, int)])
678
679 dnl Check for struct sockaddr_storage
680 AH_TEMPLATE(sockaddr_storage, [Define to `sockaddr' if <sys/socket.h> does not define.]) dnl ` (fix VIM syntax highlight
681 AH_TEMPLATE(ss_family, [Define to `sa_family' if <sys/socket.h> does not define.]) dnl ` (fix VIM syntax highlight
682 AC_CACHE_CHECK([for struct sockaddr_storage], ac_cv_struct_sockaddr_storage,
683   [AC_TRY_COMPILE(
684     [#include <sys/types.h>
685      #if defined( _WIN32 )
686      # include <winsock2.h>
687      #else
688      # include <sys/socket.h>
689      #endif], [struct sockaddr_storage addr;],
690      ac_cv_struct_sockaddr_storage=yes,
691      ac_cv_struct_sockaddr_storage=no)])
692 AS_IF([test "${ac_cv_struct_sockaddr_storage}" = no], [
693   AC_DEFINE(sockaddr_storage, sockaddr)
694   AC_DEFINE(ss_family, sa_family)
695 ])
696
697 dnl FreeBSD has a gnugetopt library for this:
698 GNUGETOPT_LIBS=""
699 AC_CHECK_FUNC(getopt_long,, [
700   AC_CHECK_LIB([gnugetopt],[getopt_long], [
701     GNUGETOPT_LIBS="-lgnugetopt"
702   ])
703 ])
704 AC_SUBST(GNUGETOPT_LIBS)
705
706 AC_CHECK_LIB(m,cos,[
707   LIBM="-lm"
708 ], [
709   LIBM=""
710 ])
711 AC_SUBST(LIBM)
712
713 AC_CHECK_LIB(m,lrintf, [
714   AC_DEFINE(HAVE_LRINTF, 1, [Define to 1 if you have the lrintf function])
715   VLC_ADD_LIBS([skins2],[-lm])
716 ])
717 AC_CHECK_LIB(m,nanf,
718   AC_DEFINE(HAVE_NANF, 1, [Define to 1 if you have the NANF function])
719 )
720
721 dnl Check for dynamic plugins
722 LIBDL=""
723 have_dynamic_objects="no"
724 VLC_SAVE_FLAGS
725 AC_SEARCH_LIBS(dlsym, [dl svld], [
726   AS_IF([test "$ac_cv_search_dlsym" != "none required"], [
727     LIBDL="$ac_cv_search_dlsym"
728   ])
729   have_dynamic_objects="yes"
730 ])
731 VLC_RESTORE_FLAGS
732
733 # Windows
734 AS_IF([test "${SYS}" = "mingw32"], [
735   LIBDL=""
736   have_dynamic_objects="yes" #assume we can use shared objects
737 ])
738
739 AS_IF([test "${enable_shared}" = "no"], [
740   have_dynamic_objects=no
741 ])
742 AM_CONDITIONAL(HAVE_DYNAMIC_PLUGINS, [test "${have_dynamic_objects}" != "no"])
743
744 AC_SUBST(LIBDL)
745
746 dnl Check for thread library
747 LIBPTHREAD=""
748 AS_IF([test "${SYS}" != "mingw32"], [
749   VLC_SAVE_FLAGS
750   LIBS=""
751   AC_SEARCH_LIBS(pthread_rwlock_init, pthread pthreads c_r, [
752     AS_IF([test "$ac_cv_search_pthread_rwlock_init" != "none required"], [
753       LIBPTHREAD="$ac_cv_search_pthread_rwlock_init"
754     ])
755   ])
756   VLC_RESTORE_FLAGS
757 ])
758 AC_SUBST(LIBPTHREAD)
759
760 AC_SEARCH_LIBS([clock_nanosleep], [rt pthread], [
761   AS_IF([test "$ac_cv_search_clock_nanosleep" != "none required"], [
762     LIBRT="$ac_cv_search_clock_nanosleep"
763   ])
764 ], [
765   AC_SEARCH_LIBS([nanosleep], [rt pthread posix4], [
766     AS_IF([test "$ac_cv_search_nanosleep" != "none required"], [
767       LIBRT="$ac_cv_search_nanosleep"
768     ])
769   ])
770 ])
771 AC_SUBST(LIBRT)
772
773 dnl
774 dnl Check for headers
775 dnl
776
777 dnl  POSIX
778 AC_CHECK_HEADERS([arpa/inet.h pthread.h search.h sys/shm.h sys/socket.h])
779 AC_CHECK_HEADERS([net/if.h], [], [],
780 [
781 #include <sys/types.h>
782 #include <sys/socket.h>
783 ])
784 AC_CHECK_HEADER([syslog.h], [have_syslog="yes"], [have_syslog="no"])
785 AM_CONDITIONAL([HAVE_SYSLOG], [test "$have_syslog" = "yes"])
786
787 dnl  BSD
788 AC_CHECK_HEADERS([netinet/udplite.h sys/param.h sys/mount.h])
789
790 dnl  GNU/Linux
791 AC_CHECK_HEADERS([getopt.h linux/dccp.h linux/magic.h mntent.h sys/eventfd.h])
792
793 dnl  MacOS
794 AC_CHECK_HEADERS([xlocale.h])
795
796 dnl LP64 and LLP64 architectures had better define ssize_t by themselves...
797 AH_TEMPLATE(ssize_t, [Define to `int' if <stddef.h> does not define.]) dnl ` (fix VIM syntax highlight
798 AC_CHECK_TYPE(ssize_t,, [
799   AC_DEFINE(ssize_t, int)
800 ])
801
802 dnl It seems that autoconf detects pkg-config only during the first
803 dnl PKG_CHECK_MODULES from configure.ac - which makes sense. But in our case,
804 dnl it is nested within a conditional block, so it was not working right.
805 dnl Make PKG_CONFIG_PATH precious so that it appears in the help and get saved
806 AC_ARG_VAR(PKG_CONFIG_PATH,
807        [Paths where to find .pc not at the default location])
808 PKG_PROG_PKG_CONFIG()
809
810 dnl On some OS we need static linking
811 AS_IF([test -n "${PKG_CONFIG}" ],[
812     AS_IF([test "${SYS}" = "mingw32" -o "${SYS}" = "darwin" -o "${SYS}" = "os2" ],[
813         PKG_CONFIG="${PKG_CONFIG} --static"
814     ])
815 ])
816
817
818 dnl
819 dnl Check for zlib.h and -lz along with system -lminizip if available
820 dnl
821 AC_CHECK_HEADERS(zlib.h, [ have_zlib=yes ], [ have_zlib=no ])
822 AM_CONDITIONAL(HAVE_ZLIB, [ test "${have_zlib}" = "yes" ])
823 if test "${have_zlib}" = "yes"
824 then
825   VLC_ADD_LIBS([skins2 sap unzip zip],[-lz])
826   PKG_CHECK_MODULES([MINIZIP], [minizip] , [ have_minizip=yes ], [
827     AC_CHECK_HEADERS([unzip.h], [
828       have_minizip=yes
829       MINIZIP_LIBS="-lminizip -lz"
830     ], [
831       VLC_ADD_CPPFLAGS([skins2], [-I\\\$(top_srcdir)/modules/access/zip/unzip])
832       VLC_ADD_LIBS([skins2], [\\\$(top_builddir)/modules/libunzip.la])
833       have_minizip=no
834     ])
835   ])
836   VLC_ADD_CPPFLAGS([skins2],[$MINIZIP_CFLAGS])
837   VLC_ADD_LIBS([skins2],[$MINIZIP_LIBS])
838 fi
839 AM_CONDITIONAL(HAVE_MINIZIP, [ test "${have_minizip}" = "yes" ])
840
841
842 dnl
843 dnl Domain name i18n support via GNU libidn
844 dnl
845 PKG_CHECK_MODULES([IDN], [libidn], [
846   have_libidn="yes"
847   AC_DEFINE([HAVE_IDN], 1, [Define to 1 if you have GNU libidn.])
848 ], [
849   have_libidn="no"
850 ])
851
852
853 dnl Check for dbus
854 AC_ARG_ENABLE(dbus,
855   [AS_HELP_STRING([--enable-dbus],
856     [compile D-Bus message bus support (default enabled)])])
857 have_dbus="no"
858 AS_IF([test "${enable_dbus}" != "no"], [
859   PKG_CHECK_MODULES(DBUS, [dbus-1 >= 1.6.0], [
860     have_dbus="yes"
861   ], [
862     AS_IF([test -n "${enable_dbus}"], [
863       AC_MSG_ERROR([${DBUS_PKG_ERRORS}.])
864     ], [
865       AC_MSG_WARN([${DBUS_PKG_ERRORS}.])
866     ])
867   ])
868 ])
869 AM_CONDITIONAL([HAVE_DBUS], [test "${have_dbus}" = "yes"])
870
871
872 dnl Check for systemd
873 PKG_CHECK_MODULES([SYSTEMD], [libsystemd], [
874   have_systemd="yes"
875 ], [
876   AC_MSG_WARN([${SYSTEMD_PKG_ERRORS}.])
877 ])
878 AM_CONDITIONAL([HAVE_SYSTEMD], [test "${have_systemd}" = "yes"])
879
880
881 dnl Check for ntohl, etc.
882 VLC_SAVE_FLAGS
883 CFLAGS="${CFLAGS} -Wall -Werror"
884 AC_CACHE_CHECK([for ntohl in sys/param.h],
885     [ac_cv_c_ntohl_sys_param_h],
886     [     AC_TRY_COMPILE([#include <sys/param.h>],
887         [int meuh; ntohl(meuh);],
888         ac_cv_c_ntohl_sys_param_h=yes, ac_cv_c_ntohl_sys_param_h=no)])
889 if test "${ac_cv_c_ntohl_sys_param_h}" != "no"; then
890     AC_DEFINE(NTOHL_IN_SYS_PARAM_H, 1, Define if <sys/param.h> defines ntohl.)
891 fi
892 VLC_RESTORE_FLAGS
893
894 EXTEND_HELP_STRING([Optimization options:])
895 dnl
896 dnl  Compiler warnings
897 dnl
898
899 RDC_PROG_CC_WFLAGS([all extra sign-compare undef pointer-arith bad-function-cast write-strings missing-prototypes volatile-register-var error-implicit-function-declaration init-self logical-op format-security])
900 RDC_PROG_CC_FLAGS([-pipe])
901 AC_LANG_PUSH([C++])
902 RDC_PROG_CXX_WFLAGS([all extra sign-compare undef pointer-arith volatile-register-var format-security])
903 AC_LANG_POP([C++])
904
905 dnl
906 dnl  Debugging mode
907 dnl
908 AC_ARG_ENABLE(debug,
909   [AS_HELP_STRING([--enable-debug],
910     [build with run-time assertions (default disabled)])],,
911   [enable_debug="no"])
912 AH_TEMPLATE(NDEBUG,
913             [Define to 1 if debug code should NOT be compiled])
914 AS_IF([test "${enable_debug}" != "no"], [
915   AC_CHECK_HEADERS([valgrind/valgrind.h])
916 ], [
917   AC_DEFINE(NDEBUG)
918 ])
919
920 dnl
921 dnl  Profiling
922 dnl
923 AC_ARG_ENABLE(gprof,
924   [AS_HELP_STRING([--enable-gprof],[profile with gprof (default disabled)])],,
925   [enable_gprof="no"])
926 AS_IF([test "${enable_gprof}" != "no"], [
927   CFLAGS="${CFLAGS} -pg"
928   CXXFLAGS="${CXXFLAGS} -pg"
929   OBJCFLAGS="${OBJCFLAGS} -pg"
930   LDFLAGS="${LDFLAGS} -pg"
931 ])
932
933 AC_ARG_ENABLE(cprof,
934   [AS_HELP_STRING([--enable-cprof],[profile with cprof (default disabled)])],,
935   [enable_cprof="no"])
936 AS_IF([test "${enable_gprof}" != "no"], [
937   CFLAGS="${CFLAGS} -finstrument-functions"
938   CXXFLAGS="${CXXFLAGS} -finstrument-functions"
939   OBJCFLAGS="${OBJCFLAGS} -finstrument-functions"
940   LDFLAGS="${LDFLAGS} -finstrument-functions"
941 ])
942
943 dnl
944 dnl  Test coverage
945 dnl
946 AC_ARG_ENABLE(coverage,
947   [AS_HELP_STRING([--enable-coverage],
948     [build for test coverage (default disabled)])],,
949   [enable_coverage="no"])
950 AS_IF([test "${enable_coverage}" != "no"], [
951   CFLAGS="-fprofile-arcs -ftest-coverage ${CFLAGS}"
952   CXXFLAGS="-fprofile-arcs -ftest-coverage ${CXXFLAGS}"
953   LDFLAGS="-lgcov ${LDFLAGS}"
954 ])
955
956 AS_IF([test "${SYS}" != "mingw32" -a "${SYS}" != "os2"], [
957   VLC_SAVE_FLAGS
958   CFLAGS="${CFLAGS} -fvisibility=hidden"
959   CXXFLAGS="${CXXFLAGS} -fvisibility=hidden"
960   OBJCFLAGS="${OBJCFLAGS} -fvisibility=hidden"
961   AC_CACHE_CHECK([if $CC accepts -fvisibility=hidden],
962                  [ac_cv_c_visibility_hidden], [
963     AC_COMPILE_IFELSE([AC_LANG_PROGRAM()], [
964       ac_cv_c_visibility_hidden=yes
965     ], [
966       ac_cv_c_visibility_hidden=no
967     ])
968   ])
969   AS_IF([test "${ac_cv_c_visibility_hidden}" = "no"], [VLC_RESTORE_FLAGS])
970 ])
971
972
973 dnl
974 dnl  Enable/disable optimizations
975 dnl
976 AC_ARG_ENABLE(optimizations,
977   [AS_HELP_STRING([--disable-optimizations],
978     [disable compiler optimizations (default enabled)])],,
979   [enable_optimizations="yes"])
980
981 dnl Check for various optimization flags
982 AS_IF([test "${enable_optimizations}" != "no"], [
983
984   dnl -O3 only in production builds
985   AS_IF([test "${enable_debug}" = "no"], [
986     VLC_SAVE_FLAGS
987     CFLAGS="${CFLAGS} -O3"
988     CXXFLAGS="${CXXFLAGS} -O3"
989     OBJCFLAGS="${OBJCFLAGS} -O3"
990     AC_CACHE_CHECK([if $CC accepts -O3],  [ac_cv_c_o3], [
991       AC_COMPILE_IFELSE([AC_LANG_PROGRAM()], [
992         ac_cv_c_o3=yes
993       ], [
994         ac_cv_c_o3=no
995       ])
996     ])
997     AS_IF([test "${ac_cv_c_o3}" = "no"], [VLC_RESTORE_FLAGS])
998   ])
999
1000   dnl Check for -ffast-math
1001   VLC_SAVE_FLAGS
1002   CFLAGS="${CFLAGS} -ffast-math"
1003   CXXFLAGS="${CXXFLAGS} -ffast-math"
1004   OBJCFLAGS="${OBJCFLAGS} -ffast-math"
1005   AC_CACHE_CHECK([if $CC accepts -ffast-math], [ac_cv_c_fast_math], [
1006     AC_COMPILE_IFELSE([AC_LANG_PROGRAM()], [
1007       ac_cv_c_fast_math=yes
1008     ], [
1009       ac_cv_c_fast_math=no
1010     ])
1011   ])
1012   AS_IF([test "${ac_cv_c_fast_math}" = "no"], [VLC_RESTORE_FLAGS])
1013   AH_BOTTOM([
1014 #ifndef __FAST_MATH__
1015 # ifndef _MSC_VER
1016 #  pragma STDC FENV_ACCESS OFF
1017 #  pragma STDC FP_CONTRACT ON
1018 # else
1019 #  pragma fenv_access(off)
1020 #  pragma fp_contract(on)
1021 # endif
1022 #endif
1023 ])
1024
1025   dnl Check for -funroll-loops
1026   VLC_SAVE_FLAGS
1027   CFLAGS="${CFLAGS} -funroll-loops"
1028   CXXFLAGS="${CXXFLAGS} -funroll-loops"
1029   OBJCFLAGS="${OBJCFLAGS} -funroll-loops"
1030   AC_CACHE_CHECK([if $CC accepts -funroll-loops], [ac_cv_c_unroll_loops], [
1031     AC_COMPILE_IFELSE([AC_LANG_PROGRAM()], [
1032       ac_cv_c_unroll_loops=yes
1033     ], [
1034       ac_cv_c_unroll_loops=no
1035     ])
1036   ])
1037   AS_IF([test "${ac_cv_c_unroll_loops}" = "no"], [VLC_RESTORE_FLAGS])
1038
1039   AS_IF([test "$enable_debug" = "no"], [
1040     dnl Check for -fomit-frame-pointer
1041     VLC_SAVE_FLAGS
1042     CFLAGS="${CFLAGS} -fomit-frame-pointer"
1043     CXXFLAGS="${CXXFLAGS} -fomit-frame-pointer"
1044     OBJCFLAGS="${OBJCFLAGS} -fomit-frame-pointer"
1045     AC_CACHE_CHECK([if $CC accepts -fomit-frame-pointer],
1046       [ac_cv_c_omit_frame_pointer], [
1047       AC_COMPILE_IFELSE([AC_LANG_PROGRAM()], [
1048         ac_cv_c_omit_frame_pointer=yes
1049       ], [
1050         ac_cv_c_omit_frame_pointer=no
1051       ])
1052     ])
1053     AS_IF([test "${ac_cv_c_omit_frame_pointer}" = "no"], [VLC_RESTORE_FLAGS])
1054   ])
1055 ])
1056
1057 VLC_SAVE_FLAGS
1058 LDFLAGS="${LDFLAGS} -Wl,-Bsymbolic"
1059 AC_CACHE_CHECK([if linker supports -Bsymbolic], [ac_cv_ld_bsymbolic], [
1060   AC_TRY_LINK([],, [
1061     ac_cv_ld_bsymbolic="-Wl,-Bsymbolic"
1062   ], [
1063     ac_cv_ld_bsymbolic=""
1064   ])
1065 ])
1066 VLC_RESTORE_FLAGS
1067 SYMBOLIC_LDFLAGS="${ac_cv_ld_bsymbolic}"
1068 AC_SUBST(SYMBOLIC_LDFLAGS)
1069
1070 dnl Checks for __attribute__(aligned()) directive
1071 VLC_SAVE_FLAGS
1072 CFLAGS="${CFLAGS} -Werror"
1073 AC_CACHE_CHECK([__attribute__ ((aligned ())) support],
1074     [ac_cv_c_attribute_aligned],
1075     [ac_cv_c_attribute_aligned=0
1076     for ac_cv_c_attr_align_try in 2 4 8 16 32 64; do
1077         AC_TRY_COMPILE([],
1078         [static char c __attribute__ ((aligned(${ac_cv_c_attr_align_try}))) = 0; return c;],
1079         [ac_cv_c_attribute_aligned="${ac_cv_c_attr_align_try}"])
1080     done])
1081 VLC_RESTORE_FLAGS
1082 if test "${ac_cv_c_attribute_aligned}" != "0"; then
1083     AC_DEFINE_UNQUOTED([ATTRIBUTE_ALIGNED_MAX],
1084         [${ac_cv_c_attribute_aligned}],[Maximum supported data alignment])
1085 fi
1086
1087 dnl Check for __attribute__((packed))
1088 AC_CACHE_CHECK([for __attribute__((packed))],
1089   [ac_cv_c_attribute_packed],
1090   [ac_cv_c_attribute_packed=no
1091    AC_TRY_COMPILE(, [struct __attribute__((__packed__)) foo { int a; } b; (void)b;],
1092                     [ac_cv_c_attribute_packed=yes])])
1093 if test "${ac_cv_c_attribute_packed}" != "no"; then
1094   AC_DEFINE(HAVE_ATTRIBUTE_PACKED, 1, Support for __attribute__((packed)) for structs)
1095 fi
1096
1097 dnl
1098 dnl  Check the CPU
1099 dnl
1100 case "${host_cpu}" in
1101   "")
1102     ARCH=unknown
1103     ;;
1104   *)
1105     ARCH="${host_cpu}"
1106     ;;
1107 esac
1108
1109 dnl Check for backtrace() support
1110 AC_CHECK_HEADERS(execinfo.h)
1111 AC_CHECK_FUNCS(backtrace)
1112
1113 dnl
1114 dnl  default modules
1115 dnl
1116 ALIASES="${ALIASES} cvlc rvlc"
1117
1118 dnl
1119 dnl  Accelerated modules
1120 dnl
1121
1122 dnl  Check for fully working MMX intrinsics
1123 dnl  We need support for -mmmx, we need <mmintrin.h>, and we also need a
1124 dnl  working compiler (http://gcc.gnu.org/bugzilla/show_bug.cgi?id=23963)
1125 AC_ARG_ENABLE(mmx,
1126   [AS_HELP_STRING([--disable-mmx],
1127     [disable MMX optimizations (default auto)])],,[
1128   case "${host_cpu}" in
1129     i?86|x86_64)
1130       enable_mmx="yes"
1131       ;;
1132     *)
1133       enable_mmx="no"
1134       ;;
1135   esac
1136 ])
1137 have_mmx="no"
1138 have_mmxext="no"
1139 AS_IF([test "${enable_mmx}" != "no"], [
1140   ARCH="${ARCH} mmx"
1141   VLC_SAVE_FLAGS
1142   CFLAGS="${CFLAGS} -mmmx"
1143   AC_CACHE_CHECK([if $CC groks MMX intrinsics], [ac_cv_c_mmx_intrinsics], [
1144     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([
1145 [#include <mmintrin.h>
1146 #include <stdint.h>
1147 uint64_t frobzor;]], [
1148 [__m64 a, b, c;
1149 a = b = c = (__m64)frobzor;
1150 a = _mm_slli_pi16(a, 3);
1151 a = _mm_adds_pi16(a, b);
1152 c = _mm_srli_pi16(c, 8);
1153 c = _mm_slli_pi16(c, 3);
1154 b = _mm_adds_pi16(b, c);
1155 a = _mm_unpacklo_pi8(a, b);
1156 frobzor = (uint64_t)a;]])], [
1157       ac_cv_c_mmx_intrinsics=yes
1158     ], [
1159       ac_cv_c_mmx_intrinsics=no
1160     ])
1161   ])
1162   VLC_RESTORE_FLAGS
1163   AS_IF([test "${ac_cv_c_mmx_intrinsics}" != "no"], [
1164     AC_DEFINE(HAVE_MMX_INTRINSICS, 1, [Define to 1 if MMX intrinsics are available.])
1165   ])
1166
1167   VLC_SAVE_FLAGS
1168   CFLAGS="${CFLAGS} -mmmx"
1169   AC_CACHE_CHECK([if $CC groks MMX inline assembly], [ac_cv_mmx_inline], [
1170     AC_COMPILE_IFELSE([AC_LANG_PROGRAM(,[[
1171 void *p;
1172 asm volatile("packuswb %%mm1,%%mm2"::"r"(p):"mm1", "mm2");
1173 ]])
1174     ], [
1175       ac_cv_mmx_inline=yes
1176     ], [
1177       ac_cv_mmx_inline=no
1178     ])
1179   ])
1180   AS_IF([test "${ac_cv_mmx_inline}" != "no"], [
1181     AC_DEFINE(CAN_COMPILE_MMX, 1, [Define to 1 inline MMX assembly is available.])
1182     have_mmx="yes"
1183   ])
1184
1185   AC_CACHE_CHECK([if $CC groks MMX EXT inline assembly],
1186                  [ac_cv_mmxext_inline], [
1187     AC_COMPILE_IFELSE([AC_LANG_PROGRAM(,[[
1188 void *p;
1189 asm volatile("maskmovq %%mm1,%%mm2"::"r"(p):"mm1", "mm2");
1190 ]])
1191     ], [
1192       ac_cv_mmxext_inline=yes
1193     ], [
1194       ac_cv_mmxext_inline=no
1195     ])
1196   ])
1197   VLC_RESTORE_FLAGS
1198   AS_IF([test "${ac_cv_mmxext_inline}" != "no"], [
1199     AC_DEFINE(CAN_COMPILE_MMXEXT, 1, [Define to 1 if MMX EXT inline assembly is available.])
1200     have_mmxext="yes"
1201   ])
1202 ])
1203 AM_CONDITIONAL([HAVE_MMX], [test "${have_mmx}" = "yes"])
1204 AM_CONDITIONAL([HAVE_MMXEXT], [test "${have_mmxext}" = "yes"])
1205
1206 dnl  Check for fully workin SSE2 intrinsics
1207 dnl  We need support for -mmmx, we need <emmintrin.h>, and we also need a
1208 dnl  working compiler (http://gcc.gnu.org/bugzilla/show_bug.cgi?id=23963)
1209 AC_ARG_ENABLE(sse,
1210   [AS_HELP_STRING([--disable-sse],
1211     [disable SSE (1-4) optimizations (default auto)])],, [
1212   case "${host_cpu}" in
1213     i?86|x86_64)
1214       enable_sse=yes
1215       ;;
1216     *)
1217       enable_sse=no
1218       ;;
1219   esac
1220 ])
1221 have_sse2="no"
1222 AS_IF([test "${enable_sse}" != "no"], [
1223   ARCH="${ARCH} sse sse2"
1224
1225   VLC_SAVE_FLAGS
1226   CFLAGS="${CFLAGS} -msse2"
1227   AC_CACHE_CHECK([if $CC groks SSE2 intrinsics], [ac_cv_c_sse2_intrinsics], [
1228     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([
1229 [#include <emmintrin.h>
1230 #include <stdint.h>
1231 uint64_t frobzor;]], [
1232 [__m128i a, b, c;
1233 a = b = c = _mm_set1_epi64((__m64)frobzor);
1234 a = _mm_slli_epi16(a, 3);
1235 a = _mm_adds_epi16(a, b);
1236 c = _mm_srli_epi16(c, 8);
1237 c = _mm_slli_epi16(c, 3);
1238 b = _mm_adds_epi16(b, c);
1239 a = _mm_unpacklo_epi8(a, b);
1240 frobzor = (uint64_t)_mm_movepi64_pi64(a);]])], [
1241       ac_cv_c_sse2_intrinsics=yes
1242     ], [
1243       ac_cv_c_sse2_intrinsics=no
1244     ])
1245   ])
1246   VLC_RESTORE_FLAGS
1247   AS_IF([test "${ac_cv_c_sse2_intrinsics}" != "no"], [
1248     AC_DEFINE(HAVE_SSE2_INTRINSICS, 1, [Define to 1 if SSE2 intrinsics are available.])
1249   ])
1250
1251   VLC_SAVE_FLAGS
1252   CFLAGS="${CFLAGS} -msse"
1253   AC_CACHE_CHECK([if $CC groks SSE inline assembly], [ac_cv_sse_inline], [
1254     AC_COMPILE_IFELSE([AC_LANG_PROGRAM(,[[
1255 void *p;
1256 asm volatile("xorps %%xmm1,%%xmm2"::"r"(p):"xmm1", "xmm2");
1257 ]])
1258     ], [
1259       ac_cv_sse_inline=yes
1260     ], [
1261       ac_cv_sse_inline=no
1262     ])
1263   ])
1264
1265   AS_IF([test "${ac_cv_sse_inline}" != "no" -a "${SYS}" != "solaris"], [
1266     AC_DEFINE(CAN_COMPILE_SSE, 1, [Define to 1 if SSE inline assembly is available.])
1267   ])
1268
1269   AC_CACHE_CHECK([if $CC groks SSE2 inline assembly], [ac_cv_sse2_inline], [
1270     AC_COMPILE_IFELSE([AC_LANG_PROGRAM(,[[
1271 void *p;
1272 asm volatile("punpckhqdq %%xmm1,%%xmm2"::"r"(p):"xmm1", "xmm2");
1273 ]])
1274     ], [
1275       ac_cv_sse2_inline=yes
1276     ], [
1277       ac_cv_sse2_inline=no
1278     ])
1279   ])
1280   AS_IF([test "${ac_cv_sse2_inline}" != "no" -a "${SYS}" != "solaris"], [
1281     AC_DEFINE(CAN_COMPILE_SSE2, 1, [Define to 1 if SSE2 inline assembly is available.])
1282     have_sse2="yes"
1283   ])
1284
1285   # SSE3
1286   AC_CACHE_CHECK([if $CC groks SSE3 inline assembly], [ac_cv_sse3_inline], [
1287     AC_COMPILE_IFELSE([AC_LANG_PROGRAM(,[[
1288 void *p;
1289 asm volatile("movsldup %%xmm1,%%xmm0"::"r"(p):"xmm0", "xmm1");
1290 ]])
1291     ], [
1292       ac_cv_sse3_inline=yes
1293     ], [
1294       ac_cv_sse3_inline=no
1295     ])
1296   ])
1297
1298   AS_IF([test "${ac_cv_sse3_inline}" != "no"], [
1299     AC_DEFINE(CAN_COMPILE_SSE3, 1, [Define to 1 if SSE3 inline assembly is available.]) ])
1300   # SSSE3
1301   AC_CACHE_CHECK([if $CC groks SSSE3 inline assembly], [ac_cv_ssse3_inline], [
1302     AC_COMPILE_IFELSE([AC_LANG_PROGRAM(,[[
1303 void *p;
1304 asm volatile("pabsw %%xmm0,%%xmm0"::"r"(p):"xmm0");
1305 ]])
1306     ], [
1307       ac_cv_ssse3_inline=yes
1308     ], [
1309       ac_cv_ssse3_inline=no
1310     ])
1311   ])
1312
1313   AS_IF([test "${ac_cv_ssse3_inline}" != "no"], [
1314     AC_DEFINE(CAN_COMPILE_SSSE3, 1, [Define to 1 if SSSE3 inline assembly is available.]) ])
1315
1316   # SSE4.1
1317   AC_CACHE_CHECK([if $CC groks SSE4.1 inline assembly],
1318                  [ac_cv_sse4_1_inline], [
1319     AC_COMPILE_IFELSE([AC_LANG_PROGRAM(,[[
1320 void *p;
1321 asm volatile("pmaxsb %%xmm1,%%xmm0"::"r"(p):"xmm0", "xmm1");
1322 ]])
1323     ], [
1324       ac_cv_sse4_1_inline=yes
1325     ], [
1326       ac_cv_sse4_1_inline=no
1327     ])
1328   ])
1329
1330   AS_IF([test "${ac_cv_sse4_1_inline}" != "no"], [
1331     AC_DEFINE(CAN_COMPILE_SSE4_1, 1, [Define to 1 if SSE4_1 inline assembly is available.]) ])
1332
1333   # SSE4.2
1334   AC_CACHE_CHECK([if $CC groks SSE4.2 inline assembly],
1335                  [ac_cv_sse4_2_inline], [
1336     AC_COMPILE_IFELSE([AC_LANG_PROGRAM(,[[
1337 void *p;
1338 asm volatile("pcmpgtq %%xmm1,%%xmm0"::"r"(p):"xmm0", "xmm1");
1339 ]])
1340     ], [
1341       ac_cv_sse4_2_inline=yes
1342     ], [
1343       ac_cv_sse4_2_inline=no
1344     ])
1345   ])
1346
1347   AS_IF([test "${ac_cv_sse4_2_inline}" != "no"], [
1348     AC_DEFINE(CAN_COMPILE_SSE4_2, 1, [Define to 1 if SSE4_2 inline assembly is available.]) ])
1349
1350   # SSE4A
1351   AC_CACHE_CHECK([if $CC groks SSE4A inline assembly], [ac_cv_sse4a_inline], [
1352     AC_COMPILE_IFELSE([AC_LANG_PROGRAM(,[[
1353 void *p;
1354 asm volatile("insertq %%xmm1,%%xmm0"::"r"(p):"xmm0", "xmm1");
1355 ]])
1356     ], [
1357       ac_cv_sse4a_inline=yes
1358     ], [
1359       ac_cv_sse4a_inline=no
1360     ])
1361   ])
1362   VLC_RESTORE_FLAGS
1363   AS_IF([test "${ac_cv_sse4a_inline}" != "no"], [
1364     AC_DEFINE(CAN_COMPILE_SSE4A, 1, [Define to 1 if SSE4A inline assembly is available.]) ])
1365 ])
1366 AM_CONDITIONAL([HAVE_SSE2], [test "$have_sse2" = "yes"])
1367
1368 VLC_SAVE_FLAGS
1369 CFLAGS="${CFLAGS} -mmmx"
1370 have_3dnow="no"
1371 AC_CACHE_CHECK([if $CC groks 3D Now! inline assembly], [ac_cv_3dnow_inline], [
1372   AC_COMPILE_IFELSE([AC_LANG_PROGRAM(,[[
1373 void *p;
1374 asm volatile("pfadd %%mm1,%%mm2"::"r"(p):"mm1", "mm2");
1375 ]])
1376   ], [
1377     ac_cv_3dnow_inline=yes
1378   ], [
1379     ac_cv_3dnow_inline=no
1380   ])
1381 ])
1382 VLC_RESTORE_FLAGS
1383 AS_IF([test "${ac_cv_3dnow_inline}" != "no"], [
1384   AC_DEFINE(CAN_COMPILE_3DNOW, 1,
1385             [Define to 1 if 3D Now! inline assembly is available.])
1386   have_3dnow="yes"
1387 ])
1388 AM_CONDITIONAL([HAVE_3DNOW], [test "$have_3dnow" = "yes"])
1389
1390
1391 AC_ARG_ENABLE(neon,
1392   [AS_HELP_STRING([--disable-neon],
1393     [disable NEON optimizations (default auto)])],, [
1394   AS_IF([test "${host_cpu}" = "arm"], [enable_neon="yes"] ,[enable_neon="no"])
1395 ])
1396 AS_IF([test "${enable_neon}" != "no"], [
1397   VLC_SAVE_FLAGS
1398   CFLAGS="${CFLAGS} -mfpu=neon -mhard-float"
1399   AC_CACHE_CHECK([if $CCAS groks ARM NEON assembly], [ac_cv_arm_neon], [
1400     AC_COMPILE_IFELSE([
1401       AC_LANG_PROGRAM(,[[
1402 asm volatile("vqmovun.s64 d0, q1":::"d0");
1403 ]])
1404     ], [
1405       ac_cv_arm_neon="yes"
1406     ], [
1407       ac_cv_arm_neon="no"
1408     ])
1409   ])
1410   VLC_RESTORE_FLAGS
1411 ])
1412 AM_CONDITIONAL(HAVE_NEON, [test "${ac_cv_arm_neon}" = "yes"])
1413
1414
1415 AC_ARG_ENABLE(altivec,
1416   [AS_HELP_STRING([--disable-altivec],
1417     [disable AltiVec optimizations (default auto)])],, [
1418   AS_CASE("${host_cpu}", [powerpc*],
1419         [enable_altivec=yes], [enable_altivec=no])
1420 ])
1421 have_altivec="no"
1422 ALTIVEC_CFLAGS=""
1423 AS_IF([test "${enable_altivec}" = "yes"], [
1424   ARCH="${ARCH} altivec";
1425   VLC_SAVE_FLAGS
1426   AC_CACHE_CHECK([if $CC groks AltiVec inline assembly],
1427     [ac_cv_altivec_inline],
1428     [AC_TRY_COMPILE(,[asm volatile("vperm 0,1,2,3");],
1429          ac_cv_altivec_inline="yes",
1430          [CFLAGS="${CFLAGS} -Wa,-maltivec"
1431           AC_TRY_COMPILE(,[asm volatile("vperm 0,1,2,3");],
1432             [ac_cv_altivec_inline="-Wa,-maltivec"],
1433             ac_cv_altivec_inline=no)
1434          ])])
1435   VLC_RESTORE_FLAGS
1436   AS_IF([test "${ac_cv_altivec_inline}" != "no"], [
1437     AC_DEFINE(CAN_COMPILE_ALTIVEC, 1,
1438               [Define to 1 if AltiVec inline assembly is available.])
1439     AS_IF([test "${ac_cv_altivec_inline}" != "yes"], [
1440       ALTIVEC_CFLAGS="${ac_cv_altivec_inline}"
1441       VLC_ADD_CFLAGS([libvlccore],[${ac_cv_altivec_inline}])
1442     ])
1443     have_altivec="yes"
1444   ])
1445
1446   VLC_SAVE_FLAGS
1447   AC_CACHE_CHECK([if \$CC groks AltiVec C extensions],
1448   [ac_cv_c_altivec], [
1449     CFLAGS="${CFLAGS} -maltivec"
1450     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([
1451 [#include <altivec.h>]], [
1452 [vec_ld(0, (unsigned char *)0);]])], [
1453       ac_cv_c_altivec="-maltivec"
1454     ], [
1455       ac_cv_c_altivec="no"
1456     ])
1457   ])
1458   VLC_RESTORE_FLAGS
1459   AS_IF([test "${ac_cv_c_altivec}" != "no"], [
1460     CPPFLAGS="${CPPFLAGS} ${ac_cv_c_altivec}"
1461     AC_DEFINE(CAN_COMPILE_C_ALTIVEC, 1, [Define to 1 if C AltiVec extensions are available.])
1462     VLC_ADD_CFLAGS([libvlccore],[${ac_cv_c_altivec}])
1463     ALTIVEC_CFLAGS="$ALTIVEC_FLAGS ${ac_cv_c_altivec} ${ac_cv_c_altivec_abi}"
1464     VLC_ADD_CFLAGS([deinterlace],[${ac_cv_c_altivec} ${ac_cv_c_altivec_abi}])
1465     have_altivec="yes"
1466   ])
1467   AC_CHECK_HEADERS(altivec.h)
1468
1469   VLC_SAVE_FLAGS
1470   LDFLAGS="${LDFLAGS} -Wl,-framework,vecLib"
1471   AC_CACHE_CHECK([if linker needs -framework vecLib],
1472     [ac_cv_ld_altivec],
1473     [AC_TRY_LINK([],,ac_cv_ld_altivec=yes,ac_cv_ld_altivec=no)])
1474   VLC_RESTORE_FLAGS
1475   AS_IF([test "${ac_cv_ld_altivec}" != "no"], [
1476     VLC_ADD_LIBS([libvlccore],[-Wl,-framework,vecLib])
1477   ])
1478 ])
1479 AC_SUBST(ALTIVEC_CFLAGS)
1480 AM_CONDITIONAL([HAVE_ALTIVEC], [test "$have_altivec" = "yes"])
1481
1482 dnl
1483 dnl  Memory usage
1484 dnl
1485 AC_ARG_ENABLE(optimize-memory,
1486   [AS_HELP_STRING([--enable-optimize-memory],
1487     [optimize memory usage over performance])])
1488 if test "${enable_optimize_memory}" = "yes"; then
1489   AC_DEFINE(OPTIMIZE_MEMORY, 1, Define if you want to optimize memory usage over performance)
1490 fi
1491
1492 dnl
1493 dnl Allow running as root (useful for people running on embedded platforms)
1494 dnl
1495 AC_ARG_ENABLE(run-as-root,
1496   [AS_HELP_STRING([--enable-run-as-root],
1497     [allow running VLC as root (default disabled)])])
1498 AS_IF([test "${enable_run_as_root}" = "yes"],[
1499     AC_DEFINE(ALLOW_RUN_AS_ROOT, 1,
1500               [Define to 1 to allow running VLC as root (uid 0).])
1501 ])
1502
1503 dnl
1504 dnl Stream output
1505 dnl
1506 AC_ARG_ENABLE(sout,
1507   [AS_HELP_STRING([--disable-sout],
1508     [disable streaming output (default enabled)])])
1509 AS_IF([test "${enable_sout}" != "no"], [
1510   AC_DEFINE(ENABLE_SOUT, 1, [Define to 1 for stream output support.])
1511 ])
1512 AM_CONDITIONAL(ENABLE_SOUT, [test "${enable_sout}" != "no"])
1513
1514 dnl Lua modules
1515 AC_ARG_ENABLE(lua,
1516   [AS_HELP_STRING([--disable-lua],
1517     [disable LUA scripting support (default enabled)])])
1518 if test "${enable_lua}" != "no"
1519 then
1520   PKG_CHECK_MODULES(LUA, lua5.2,
1521     [ have_lua=yes ],
1522     [
1523     AC_MSG_WARN([${LUA_PKG_ERRORS}, trying lua 5.1 instead])
1524
1525     PKG_CHECK_MODULES(LUA, lua5.1,
1526       [ have_lua=yes ],
1527       [
1528       AC_MSG_WARN([${LUA_PKG_ERRORS}, trying lua >= 5.1 instead])
1529       PKG_CHECK_MODULES(LUA, lua >= 5.1,
1530         [ have_lua=yes ],
1531         [
1532           AC_MSG_WARN([${LUA_PKG_ERRORS}, trying manual detection instead])
1533           have_lua=yes
1534           AC_CHECK_HEADERS([lua.h lauxlib.h lualib.h],
1535             [],
1536             [ have_lua=no ] )
1537           AC_CHECK_LIB(  lua5.2 , luaL_newstate,
1538             [LUA_LIBS="-llua5.2"],
1539           AC_CHECK_LIB( lua5.1 , luaL_newstate,
1540             [LUA_LIBS="-llua5.1"],
1541             AC_CHECK_LIB( lua51 , luaL_newstate,
1542               [LUA_LIBS="-llua51"],
1543               AC_CHECK_LIB( lua , luaL_newstate,
1544                 [LUA_LIBS="-llua"],
1545                 [ have_lua=no
1546                 ], [-lm])
1547             )))
1548         ])
1549       ])
1550     ])
1551   if test "x${have_lua}" != "xyes" ;  then
1552       AC_MSG_ERROR([Could not find lua. Lua is needed for some interfaces (rc, telnet, http) as well as many other custom scripts. Use --disable-lua to ignore this error.])
1553   fi
1554   AC_ARG_VAR([LUAC], [LUA byte compiler])
1555   AC_CHECK_PROGS(LUAC, [${LUAC} luac], [false])
1556   AS_IF([test "${LUAC}" = "false"], [
1557     AC_MSG_ERROR([Could not find the LUA byte compiler.])
1558   ])
1559   AS_IF([test -d "${CONTRIB_DIR}" -a -f "${CONTRIB_DIR}/lib/liblua.a" -a `echo|${LUAC} -o - -|od -j 8 -N 2 -t x2|head -n 1|tr -s ' '|cut -d' ' -f2` != 0404], [
1560     AC_MSG_ERROR([You need 32-bits luac when using lua from contrib.])
1561   ])
1562 fi
1563 AM_CONDITIONAL(BUILD_LUA, [test "${have_lua}" = "yes"])
1564
1565
1566 dnl
1567 dnl HTTP daemon
1568 dnl
1569 AC_ARG_ENABLE(httpd,
1570   [AS_HELP_STRING([--disable-httpd],
1571     [disable the built-in HTTP server (default enabled)])])
1572 if test "${enable_httpd}" != "no"
1573 then
1574   AC_DEFINE(ENABLE_HTTPD, 1, Define if you want the HTTP daemon support)
1575 fi
1576 AM_CONDITIONAL(BUILD_HTTPD, [test "${enable_httpd}" != "no"])
1577
1578
1579 dnl
1580 dnl VideoLAN manager
1581 dnl
1582 AC_ARG_ENABLE(vlm,
1583   [AS_HELP_STRING([--disable-vlm],
1584     [disable the stream manager (default enabled)])],,
1585   [enable_vlm="${enable_sout}"])
1586 AS_IF([test "${enable_vlm}" != "no"], [
1587   AS_IF([test "${enable_sout}" = "no"], [
1588     AC_MSG_ERROR([VLM requires the stream output. Do not use --disable-sout.])
1589   ])
1590   AC_DEFINE(ENABLE_VLM, 1, [Define if you want the VideoLAN manager support])
1591 ])
1592 AM_CONDITIONAL([ENABLE_VLM], [test "${enable_vlm}" != "no"])
1593
1594
1595 dnl
1596 dnl Addons manager storage and repositories modules
1597 dnl
1598 AC_ARG_ENABLE(addonmanagermodules,
1599   [AS_HELP_STRING([--disable-addonmanagermodules],
1600     [disable the addons manager modules (default enabled)])])
1601 if test "${enable_addonmanagermodules}" != "no"
1602 then
1603   AC_DEFINE(ENABLE_ADDONMANAGERMODULES, 1, [Define if you want the addons manager modules])
1604 fi
1605 AM_CONDITIONAL([ENABLE_ADDONMANAGERMODULES], [test "${enable_addonmanagermodules}" != "no"])
1606
1607
1608 dnl
1609 dnl  Input plugins
1610 dnl
1611
1612 EXTEND_HELP_STRING([Input plugins:])
1613
1614 dnl
1615 dnl  libarchive access module
1616 dnl
1617 PKG_ENABLE_MODULES_VLC([ARCHIVE], [access_archive], [libarchive >= 3.1.0], (libarchive support), [auto])
1618
1619 dnl
1620 dnl  live555 input
1621 dnl
1622 AC_ARG_ENABLE(live555,
1623   [AS_HELP_STRING([--enable-live555],
1624     [enable RTSP input through live555 (default enabled)])])
1625
1626 AS_IF([test "${enable_live555}" != "no" -a -n "${CXX}"], [
1627   PKG_CHECK_MODULES(LIVE555, live555, [
1628     VLC_ADD_PLUGIN([live555])
1629     VLC_ADD_CXXFLAGS([live555], [$LIVE555_CFLAGS])
1630     VLC_ADD_LIBS([live555],[$LIVE555_LIBS])
1631   ], [
1632     AC_MSG_WARN([${LIVE555_PKG_ERRORS}.])
1633
1634     AC_LANG_PUSH(C++)
1635     VLC_SAVE_FLAGS
1636
1637     dnl detect include paths
1638     AS_IF([test -f "${CONTRIB_DIR}/include/UsageEnvironment.hh"], [
1639       CPPFLAGS_live555="-I${CONTRIB_DIR}/include/liveMedia -I${CONTRIB_DIR}/include/groupsock -I${CONTRIB_DIR}/include/BasicUsageEnvironment -I${CONTRIB_DIR}/include/UsageEnvironment"
1640     ], [
1641       AS_IF([test "${SYS}" != "os2"], [
1642         LIVE555_PREFIX=${LIVE555_PREFIX-"/usr"}
1643         CPPFLAGS_live555="-I${LIVE555_PREFIX}/include/liveMedia -I${LIVE555_PREFIX}/include/groupsock -I${LIVE555_PREFIX}/include/BasicUsageEnvironment -I${LIVE555_PREFIX}/include/UsageEnvironment"
1644       ], [
1645         LIVE555_PREFIX=${LIVE555_PREFIX-"/usr/lib/live"}
1646         CPPFLAGS_live555="-I${LIVE555_PREFIX}/liveMedia/include -I${LIVE555_PREFIX}/groupsock/include -I${LIVE555_PREFIX}/BasicUsageEnvironment/include -I${LIVE555_PREFIX}/UsageEnvironment/include"
1647         LDFLAGS_live555="-L${LIVE555_PREFIX}/liveMedia -L${LIVE555_PREFIX}/groupsock -L${LIVE555_PREFIX}/BasicUsageEnvironment -L${LIVE555_PREFIX}/UsageEnvironment"
1648       ])
1649     ])
1650
1651     dnl CPP Flags
1652     AS_IF([test "${SYS}" = "solaris"], [
1653       CPPFLAGS_live555="${CPPFLAGS_live555} -DSOLARIS"
1654     ])
1655     CPPFLAGS="${CPPFLAGS} ${CPPFLAGS_live555}"
1656     LDFLAGS="${LDFLAGS} ${LDFLAGS_live555}"
1657
1658     dnl version check
1659     AC_CACHE_CHECK([for live555 version 1324598400 or later], [ac_cv_live555], [
1660       AC_PREPROC_IFELSE([AC_LANG_PROGRAM([
1661 [#include <liveMedia_version.hh>
1662 #if !defined (LIVEMEDIA_LIBRARY_VERSION_INT) || (LIVEMEDIA_LIBRARY_VERSION_INT < 1324598400)
1663 # error BOOM
1664 #endif]])
1665       ], [
1666         ac_cv_live555="yes"
1667       ], [
1668         ac_cv_live555="no"
1669       ])
1670     ])
1671
1672     AS_IF([test "$ac_cv_live555" = "no"], [
1673       AC_MSG_WARN([live555 is missing or its installed version is too old:
1674 Version 2011.12.23 or later is required to proceed.
1675 You can get an updated one from http://www.live555.com/liveMedia .])
1676       AS_IF([test -n "${enable_live555}"], [
1677         AC_MSG_ERROR([Update live555 or pass --disable-live555 to disable RTSP input support.])
1678       ])
1679     ], [
1680       other_libs="-lgroupsock -lBasicUsageEnvironment -lUsageEnvironment"
1681       other_libs_pic="-lgroupsock_pic -lBasicUsageEnvironment_pic -lUsageEnvironment_pic"
1682       AS_IF([test "${SYS}" = "mingw32"], [
1683         # add ws2_32 for closesocket, select, recv
1684         other_libs="$other_libs -lws2_32"
1685       ])
1686
1687       dnl We need to check for pic because live555 don't provide shared libs
1688       dnl and we want to build a plugins so we need -fPIC on some arch.
1689       VLC_ADD_CXXFLAGS([live555], [${CPPFLAGS_live555}])
1690       VLC_ADD_LDFLAGS([live555], [${LDFLAGS_live555}])
1691       AC_CHECK_LIB(liveMedia_pic, main, [
1692         VLC_ADD_PLUGIN([live555])
1693         VLC_ADD_LIBS([live555], [-lliveMedia_pic ${other_libs_pic}])
1694       ],[
1695         AC_CHECK_LIB(liveMedia, main, [
1696           VLC_ADD_PLUGIN([live555])
1697           VLC_ADD_LIBS([live555], [-lliveMedia ${other_libs}])
1698         ],[],[${other_libs}])
1699       ],[${other_libs_pic}])
1700     ])
1701     VLC_RESTORE_FLAGS
1702     AC_LANG_POP(C++)
1703   ])
1704 ])
1705
1706 dnl
1707 dnl IIDC and DV FireWire input modules
1708 dnl
1709 PKG_ENABLE_MODULES_VLC([DC1394], [], [libdc1394-2 >= 2.1.0], [IIDC FireWire input module], [auto])
1710 PKG_ENABLE_MODULES_VLC([DV1394], [], [libraw1394 >= 2.0.1 libavc1394 >= 0.5.3], [DV FireWire input module], [auto])
1711
1712 dnl
1713 dnl - linsys modules: access module check for libzvbi
1714 dnl
1715 AC_ARG_ENABLE(linsys,
1716   [AS_HELP_STRING([--enable-linsys],
1717     [Linux Linear Systems Ltd. SDI and HD-SDI input cards (default enabled)])])
1718 AS_IF([test "$SYS" = "linux" -a "${enable_linsys}" != "no"], [
1719   VLC_ADD_PLUGIN([linsys_hdsdi])
1720   PKG_CHECK_MODULES(LINSYS_SDI, [zvbi-0.2 >= 0.2.28], [
1721     VLC_ADD_PLUGIN([linsys_sdi])
1722   ], [
1723     AC_MSG_WARN([${LINSYS_SDI_PKG_ERRORS}.])
1724   ])
1725 ])
1726
1727 dnl
1728 dnl dvdread module: check for libdvdread
1729 dnl
1730 PKG_ENABLE_MODULES_VLC([DVDREAD], [], [dvdread > 4.9.0], [dvdread input module], [auto])
1731
1732 dnl
1733 dnl libdvdnav plugin
1734 dnl
1735 PKG_ENABLE_MODULES_VLC([DVDNAV], [], [dvdnav > 4.9.0], [DVD with navigation input module (dvdnav)], [auto])
1736 AS_IF([test "${enable_dvdnav}" != "no"], [
1737   AC_MSG_CHECKING(for dvdnav_stream_cb in dvdnav/dvdnav.h)
1738     AC_EGREP_HEADER(dvdnav_stream_cb,dvdnav/dvdnav.h,[
1739       AC_MSG_RESULT(yes)
1740       AC_DEFINE(HAVE_STREAM_CB_IN_DVDNAV_H, 1, For dvdnav demux support)
1741       ],[
1742       AC_MSG_RESULT(no)
1743     ])
1744 ])
1745
1746 dnl
1747 dnl  Blu-ray Disc Support with libbluray
1748 dnl
1749 PKG_ENABLE_MODULES_VLC([BLURAY], [libbluray], [libbluray >= 0.6.2], (libbluray for Blu-ray disc support ) )
1750
1751 dnl
1752 dnl  OpenCV wrapper and example filters
1753 dnl
1754 PKG_ENABLE_MODULES_VLC([OPENCV], [opencv_example opencv_wrapper], [opencv > 2.0], (OpenCV (computer vision) filter), [auto])
1755
1756
1757 dnl
1758 dnl  libsmbclient plugin
1759 dnl
1760 PKG_ENABLE_MODULES_VLC([SMBCLIENT], [smb], [smbclient], (SMB/CIFS support), [auto])
1761 AS_IF([test "${SYS}" = "mingw32"], [ VLC_ADD_PLUGIN([smb]) ])
1762
1763 dnl
1764 dnl  liBDSM access module
1765 dnl
1766 PKG_ENABLE_MODULES_VLC([DSM], [dsm], [libdsm >= 0.0.7], [libdsm SMB/CIFS access/sd module], [auto])
1767
1768 dnl
1769 dnl sftp access support
1770 dnl
1771 PKG_ENABLE_MODULES_VLC([SFTP], [sftp], [libssh2], (support SFTP file transfer via libssh2), [auto])
1772
1773 dnl
1774 dnl nfs access support
1775 dnl
1776 PKG_ENABLE_MODULES_VLC([NFS], [nfs], [libnfs], (support nfs protocol via libnfs), [auto])
1777
1778 dnl
1779 dnl  Video4Linux 2
1780 dnl
1781 AC_ARG_ENABLE(v4l2, [AS_HELP_STRING([--disable-v4l2],
1782   [disable Video4Linux version 2 (default auto)])])
1783 have_v4l2="no"
1784 AS_IF([test "$enable_v4l2" != "no"], [
1785   AC_CHECK_HEADERS([linux/videodev2.h sys/videoio.h], [
1786     have_v4l2="yes"
1787   ])
1788 ])
1789 AM_CONDITIONAL(HAVE_V4L2, [test "${have_v4l2}" != "no"])
1790
1791 dnl
1792 dnl special access module for Blackmagic SDI cards
1793 dnl
1794 AC_ARG_ENABLE(decklink,
1795   [AS_HELP_STRING([--disable-decklink],
1796     [disable Blackmagic DeckLink SDI input (default auto)])])
1797 AC_ARG_WITH(decklink_sdk,
1798   [AS_HELP_STRING[--with-decklink-sdk=DIR],
1799     [                        location of Blackmagic DeckLink SDI SDK])])
1800 have_decklink=no
1801 if test "${enable_decklink}" != "no"
1802 then
1803   if test "${with_decklink_sdk}" != "no" -a -n "${with_decklink_sdk}"
1804   then
1805     VLC_ADD_CPPFLAGS([decklink decklinkoutput],[-I${with_decklink_sdk}/include])
1806   fi
1807   VLC_SAVE_FLAGS
1808   CPPFLAGS="${CPPFLAGS} ${CPPFLAGS_decklink}"
1809   AC_LANG_PUSH(C++)
1810   AC_CHECK_HEADERS(DeckLinkAPIDispatch.cpp, [
1811       have_decklink=yes
1812   ], [
1813       AC_MSG_WARN(Blackmagic DeckLink SDI include files not found, decklink disabled)
1814   ])
1815   AC_LANG_POP(C++)
1816   VLC_RESTORE_FLAGS
1817 fi
1818 AM_CONDITIONAL(HAVE_DECKLINK, [ test "${have_decklink}" != "no" ])
1819
1820
1821 dnl
1822 dnl  Built-in CD-DA and VCD module
1823 dnl
1824 AC_ARG_ENABLE(vcd,
1825   [AS_HELP_STRING([--disable-vcd],
1826     [disable built-in VCD and CD-DA support (default enabled)])])
1827
1828 AC_ARG_ENABLE(libcddb,
1829   [AS_HELP_STRING([--disable-libcddb],
1830     [disable CDDB for Audio CD (default enabled)])])
1831
1832 if test "${enable_vcd}" != "no"
1833 then
1834   AC_MSG_CHECKING(for cdrom_msf0 in linux/cdrom.h)
1835   AC_EGREP_HEADER(cdrom_msf0,linux/cdrom.h,[
1836     AC_MSG_RESULT(yes)
1837     VLC_ADD_PLUGIN([vcd cdda])
1838   ],[
1839     AC_MSG_RESULT(no)
1840   ])
1841
1842   AC_MSG_CHECKING(for scsireq in sys/scsiio.h)
1843   AC_EGREP_HEADER(scsireq,sys/scsiio.h,[
1844     AC_MSG_RESULT(yes)
1845     VLC_ADD_PLUGIN([vcd cdda])
1846     AC_DEFINE(HAVE_SCSIREQ_IN_SYS_SCSIIO_H, 1, For NetBSD VCD support)
1847   ],[
1848     AC_MSG_RESULT(no)
1849   ])
1850
1851   AC_MSG_CHECKING(for ioc_toc_header in sys/cdio.h)
1852   AC_EGREP_HEADER(ioc_toc_header ,sys/cdio.h,[
1853     AC_MSG_RESULT(yes)
1854     VLC_ADD_PLUGIN([vcd cdda])
1855     AC_DEFINE(HAVE_IOC_TOC_HEADER_IN_SYS_CDIO_H, 1, For FreeBSD VCD support)
1856   ],[
1857     AC_MSG_RESULT(no)
1858   ])
1859
1860   if test "${SYS}" = "bsdi" -o "${SYS}" = "mingw32" -o "${SYS}" = "os2" -o "${SYS}" = "darwin"
1861   then
1862     VLC_ADD_PLUGIN([vcd cdda])
1863   fi
1864
1865   if test "$enable_libcddb" != "no"; then
1866     PKG_CHECK_MODULES(LIBCDDB, [libcddb >= 0.9.5], [
1867       HAVE_LIBCDDB=yes
1868       AC_DEFINE(HAVE_LIBCDDB, 1, [Define this if you have libcddb installed])
1869       VLC_ADD_LIBS([cdda],[$LIBCDDB_LIBS])
1870       VLC_ADD_CFLAGS([cdda],[$LIBCDDB_CFLAGS])
1871       ],:
1872       [AC_MSG_WARN([${LIBCDDB_PKG_ERRORS}: CDDB access disabled.])
1873       HAVE_LIBCDDB=no])
1874   fi
1875 fi
1876
1877 dnl
1878 dnl Linux DVB
1879 dnl
1880 AC_CACHE_CHECK([for Linux DVB version 5.1], [ac_cv_linux_dvb_5_1], [
1881   AC_PREPROC_IFELSE([AC_LANG_PROGRAM([
1882 [#include <linux/dvb/version.h>
1883 #if (DVB_API_VERSION < 5)
1884 # error Linux DVB API v3.2 and older are not supported.
1885 #endif
1886 #if (DVB_API_VERSION == 5 && DVB_API_VERSION_MINOR < 1)
1887 # error Linux DVB API v5.0 is unsupported. Please update.
1888 #endif
1889 ]])], [
1890   ac_cv_linux_dvb_5_1=yes
1891 ], [
1892   ac_cv_linux_dvb_5_1=no
1893 ])])
1894 AM_CONDITIONAL([HAVE_LINUX_DVB], [test "$ac_cv_linux_dvb_5_1" = "yes"])
1895
1896 dnl
1897 dnl  Screen capture module
1898 dnl
1899 AC_ARG_ENABLE(screen,
1900   [AS_HELP_STRING([--enable-screen],
1901     [disable screen capture (default enabled)])])
1902 if test "${enable_screen}" != "no"; then
1903   if test "${SYS}" = "darwin"; then
1904     AC_CHECK_HEADERS(ApplicationServices/ApplicationServices.h, [
1905       VLC_ADD_PLUGIN([screen])
1906     ])
1907   fi
1908 fi
1909 AM_CONDITIONAL(HAVE_MAC_SCREEN, [test "${SYS}" = "darwin" -a "x${enable_screen}" != "xno"])
1910
1911 dnl
1912 dnl  VNC/RFB access module
1913 dnl
1914 PKG_ENABLE_MODULES_VLC([VNC], [vnc], [libvncclient >= 0.9.9], (VNC/rfb client support), [auto])
1915
1916 dnl  RDP/Remote Desktop access module
1917 dnl
1918 PKG_ENABLE_MODULES_VLC([FREERDP], [rdp], [freerdp >= 1.0.1], (RDP/Remote Desktop client support) )
1919
1920 dnl
1921 dnl  Real RTSP plugin
1922 dnl
1923 AC_ARG_ENABLE(realrtsp,
1924   [  --enable-realrtsp       Real RTSP module (default disabled)])
1925 if test "${enable_realrtsp}" = "yes"; then
1926   VLC_ADD_PLUGIN([access_realrtsp])
1927 fi
1928
1929 dnl
1930 dnl MacOS eyeTV
1931 AC_ARG_ENABLE(macosx-eyetv,
1932   [  --enable-macosx-eyetv   Mac OS X EyeTV (TNT Tuner) module (default enabled on Mac OS X)])
1933 if test "x${enable_macosx_eyetv}" != "xno" &&
1934   (test "${SYS}" = "darwin" || test "${enable_macosx_eyetv}" = "yes")
1935 then
1936   VLC_ADD_PLUGIN([access_eyetv])
1937 fi
1938
1939 dnl
1940 dnl QTKit
1941 AC_ARG_ENABLE(macosx-qtkit,
1942   [  --enable-macosx-qtkit Mac OS X qtsound (audio) module (default enabled on Mac OS X)])
1943 if test "x${enable_macosx_qtkit}" != "xno" &&
1944   (test "${SYS}" = "darwin" || test "${enable_macosx_qtkit}" = "yes")
1945 then
1946   VLC_ADD_PLUGIN([qtsound])
1947 fi
1948 AM_CONDITIONAL(HAVE_QTKIT, [test "${SYS}" = "darwin" -a "x${enable_macosx_qtkit}" != "xno"])
1949
1950 dnl
1951 dnl AVFoundation
1952 AC_SUBST(have_avfoundation, ["no"])
1953 AC_ARG_ENABLE(macosx-avfoundation,
1954   [  --enable-macosx-avfoundation Mac OS X avcapture (video) module (default enabled on Mac OS X)])
1955 if test "x${enable_macosx_avfoundation}" != "xno" &&
1956   (test "${SYS}" = "darwin" || test "${enable_macosx_avfoundation}" = "yes")
1957 then
1958   SAVED_LIBS="${LIBS}"
1959   LIBS="-framework AVFoundation"
1960   AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [])],[have_avfoundation=yes],[have_avfoundation=no])
1961   LIBS="${SAVED_LIBS}"
1962   if test "${have_avfoundation}" != "no"
1963   then
1964     VLC_ADD_PLUGIN([avcapture])
1965   fi
1966 fi
1967 AM_CONDITIONAL(HAVE_AVFOUNDATION, [test "${have_avfoundation}" != "no"])
1968
1969 dnl
1970 dnl  DCP plugin (using asdcplib)
1971 dnl
1972 PKG_WITH_MODULES([ASDCP], [asdcplib], [have_asdcp="yes"])
1973 AM_CONDITIONAL(HAVE_ASDCP, [test "${have_asdcp}" = "yes"])
1974
1975 dnl
1976 dnl  Demux plugins
1977 dnl
1978
1979 EXTEND_HELP_STRING([Mux/Demux plugins:])
1980
1981 dnl
1982 dnl  libdvbpsi check for ts mux/demux
1983 dnl
1984 have_dvbpsi="no"
1985 PKG_WITH_MODULES([DVBPSI], [libdvbpsi >= 1.0.0], [have_dvbpsi="yes"])
1986 AM_CONDITIONAL(HAVE_DVBPSI, [test "${have_dvbpsi}" = "yes"])
1987
1988
1989 dnl
1990 dnl  GME demux plugin
1991 dnl
1992 AC_ARG_ENABLE(gme,
1993   [AS_HELP_STRING([--enable-gme],
1994     [use Game Music Emu (default auto)])])
1995 AS_IF([test "${enable_gme}" != "no"], [
1996   AC_CHECK_HEADER([gme/gme.h], [
1997     VLC_ADD_LIBS([gme], [-lgme])
1998     VLC_ADD_PLUGIN([gme])
1999   ], [
2000     AS_IF([test "x${enable_gme}" != "x"], [
2001       AC_MSG_ERROR([GME cannot be found. Please install the development files.])
2002     ])
2003   ])
2004 ])
2005
2006
2007 dnl
2008 dnl  SIDPlay plugin
2009 dnl
2010 AC_ARG_ENABLE(sid,
2011     [AS_HELP_STRING([--enable-sid],[C64 sid demux support (default auto)])])
2012 AS_IF([test "${enable_sid}" != "no"], [
2013     PKG_CHECK_MODULES(SID, [libsidplay2], [
2014         AC_LANG_PUSH(C++)
2015         oldCPPFLAGS="$CPPFLAGS"
2016         CPPFLAGS="$CPPFLAGS $SID_CFLAGS"
2017         AC_CHECK_HEADER([sidplay/builders/resid.h], [
2018             VLC_ADD_PLUGIN([sid])
2019             VLC_ADD_CFLAGS([sid], [$SID_CFLAGS])
2020             VLC_ADD_LIBS([sid], [$SID_LIBS] [-lresid-builder])
2021         ], [
2022             AS_IF([test -n "${enable_sid}"],
2023                 [AC_MSG_ERROR([${SID_PKG_ERRORS} (required for sid).])],
2024                 [AC_MSG_WARN([${SID_PKG_ERRORS} (required for sid).])]
2025                 )
2026         ])
2027         CPPFLAGS="$oldCPPFLAGS"
2028         AC_LANG_POP(C++)
2029     ], [
2030         AS_IF([test "x${enable_sid}" = "xyes"],
2031             [AC_MSG_ERROR([${SID_PKG_ERRORS} (required for sid).])],
2032             [AC_MSG_WARN([${SID_PKG_ERRORS} (required for sid).])]
2033             )
2034     ])
2035 ])
2036
2037
2038 dnl
2039 dnl  ogg demux plugin
2040 dnl
2041 PKG_ENABLE_MODULES_VLC([OGG], [mux_ogg], [ogg >= 1.0], [Ogg demux support], [auto])
2042 PKG_CHECK_MODULES(LIBVORBIS, [vorbis >= 1.1], [
2043     AC_DEFINE(HAVE_LIBVORBIS, 1, [Define to 1 if you have the libvorbis])
2044 ],[true])
2045 PKG_ENABLE_MODULES_VLC([OGG], [], [ogg >= 1.0], [Ogg demux support], [auto], [${LIBVORBIS_CFLAGS}], [${LIBVORBIS_LIBS}])
2046 if test "${enable_sout}" != "no"; then
2047 dnl Check for libshout
2048     PKG_ENABLE_MODULES_VLC([SHOUT], [access_output_shout], [shout >= 2.1], [libshout output plugin], [auto])
2049 fi
2050
2051 dnl
2052 dnl  matroska demux plugin
2053 dnl
2054 AC_ARG_ENABLE(mkv,
2055   [AS_HELP_STRING([--disable-mkv],
2056     [do not use libmatroska (default auto)])])
2057 if test "${enable_mkv}" != "no" -a "${CXX}" != ""; then
2058   AC_LANG_PUSH(C++)
2059   AC_CHECK_HEADERS(ebml/EbmlVersion.h, [
2060     AC_MSG_CHECKING(for libebml version >= 1.0.0)
2061     AC_EGREP_CPP(yes,
2062       [#include <ebml/EbmlVersion.h>
2063        #ifdef LIBEBML_VERSION
2064        #if LIBEBML_VERSION >= 0x010000
2065        yes
2066        #endif
2067        #endif],
2068       [AC_MSG_RESULT([yes])
2069         AC_CHECK_HEADERS(matroska/KaxVersion.h, [
2070           AC_MSG_CHECKING(for libmatroska version >= 1.0.0)
2071           AC_EGREP_CPP(yes,
2072             [#include <matroska/KaxVersion.h>
2073              #ifdef LIBMATROSKA_VERSION
2074              #if LIBMATROSKA_VERSION >= 0x010000
2075              yes
2076              #endif
2077              #endif],
2078             [AC_MSG_RESULT([yes])
2079               AC_CHECK_HEADERS(matroska/KaxAttachments.h)
2080               AC_CHECK_LIB(ebml_pic, main, [
2081                 VLC_ADD_PLUGIN([mkv])
2082                 VLC_ADD_LIBS([mkv],[-lmatroska -lebml_pic])
2083               ],[
2084                 AC_CHECK_LIB(ebml, main, [
2085                   VLC_ADD_PLUGIN([mkv])
2086                   VLC_ADD_LIBS([mkv],[-lmatroska -lebml])
2087                 ])
2088               ])
2089             ], [
2090               AC_MSG_RESULT([no])
2091               AC_MSG_ERROR([Your libmatroska is too old: you may get a more recent one from http://dl.matroska.org/downloads/libmatroska/. Alternatively you can use --disable-mkv to disable the matroska plugin.])
2092           ])
2093         ])
2094       ],
2095       [AC_MSG_RESULT([no])
2096         AC_MSG_ERROR([Your libebml is too old: you may get a more recent one from http://dl.matroska.org/downloads/libebml/. Alternatively you can use --disable-mkv to disable the matroska plugin.])
2097     ])
2098   ])
2099   AC_LANG_POP(C++)
2100 fi
2101
2102 dnl
2103 dnl  modplug demux plugin
2104 dnl
2105 AC_ARG_ENABLE(mod,
2106   [AS_HELP_STRING([--disable-mod],
2107     [do not use libmodplug (default auto)])])
2108 if test "${enable_mod}" != "no" ; then
2109     PKG_CHECK_MODULES(LIBMODPLUG, [libmodplug >= 0.8.4 libmodplug != 0.8.8], [
2110           VLC_ADD_PLUGIN([mod])
2111           VLC_ADD_CXXFLAGS([mod],[$LIBMODPLUG_CFLAGS])
2112           VLC_ADD_CFLAGS([mod],[$LIBMODPLUG_CFLAGS]) #modules/demux/mod.c needs CFLAGS_mod, not CXXFLAGS_mod
2113           VLC_ADD_LIBS([mod],[$LIBMODPLUG_LIBS])
2114     ],[
2115        AS_IF([test -n "${enable_mod}"],
2116          [AC_MSG_ERROR([${LIBMODPLUG_PKG_ERRORS}.])],
2117          [AC_MSG_WARN([${LIBMODPLUG_PKG_ERRORS}.])])
2118     ])
2119 fi
2120
2121 dnl
2122 dnl  mpc demux plugin
2123 dnl
2124 AC_ARG_ENABLE(mpc,
2125   [AS_HELP_STRING([--disable-mpc], [do not use libmpcdec (default auto)])])
2126 if test "${enable_mpc}" != "no"
2127 then
2128   AC_CHECK_HEADERS([mpc/mpcdec.h], [
2129     VLC_ADD_PLUGIN([mpc])
2130     VLC_ADD_LIBS([mpc],[-lmpcdec])],
2131     [AC_CHECK_HEADERS([mpcdec/mpcdec.h], [
2132     VLC_ADD_PLUGIN([mpc])
2133     VLC_ADD_LIBS([mpc],[-lmpcdec])])])
2134 fi
2135
2136 dnl
2137 dnl  Codec plugins
2138 dnl
2139
2140 EXTEND_HELP_STRING([Codec plugins:])
2141
2142 dnl
2143 dnl wmafixed plugin
2144 dnl
2145 AC_ARG_ENABLE(wma-fixed,
2146   [  --enable-wma-fixed      libwma-fixed module (default disabled)])
2147 if test "${enable_wma_fixed}" = "yes"
2148 then
2149   VLC_ADD_PLUGIN([wma_fixed])
2150 fi
2151
2152 dnl
2153 dnl shine encoder plugin
2154 dnl
2155 PKG_ENABLE_MODULES_VLC([SHINE], [], [shine >= 3.0.0], [MPEG Audio Layer 3 encoder], [auto], [], [], [])
2156
2157
2158 dnl
2159 dnl openmax il codec plugin
2160 dnl
2161 AC_ARG_ENABLE(omxil,
2162   [  --enable-omxil          openmax il codec module (default disabled)])
2163 if test "${enable_omxil}" = "yes"
2164 then
2165   VLC_ADD_PLUGIN([omxil])
2166 fi
2167
2168 dnl
2169 dnl openmax il vout plugin
2170 dnl
2171 AC_ARG_ENABLE(omxil-vout,
2172   [  --enable-omxil-vout     openmax il video output module (default disabled)])
2173 if test "${enable_omxil_vout}" = "yes"
2174 then
2175   VLC_ADD_PLUGIN([omxil_vout])
2176 fi
2177
2178 dnl
2179 dnl raspberry pi openmax il configuration
2180 dnl
2181 AC_ARG_ENABLE(rpi-omxil,
2182   [  --enable-rpi-omxil     openmax il configured for raspberry pi (default disabled)])
2183 if test "${enable_rpi_omxil}" = "yes"
2184 then
2185   VLC_ADD_PLUGIN([omxil omxil_vout])
2186   VLC_ADD_CFLAGS([omxil omxil_vout],[-DRPI_OMX])
2187 fi
2188
2189 dnl
2190 dnl CrystalHD codec plugin
2191 dnl
2192 AC_ARG_ENABLE(crystalhd,
2193   [  --enable-crystalhd      crystalhd codec plugin (default auto)])
2194 if test "${enable_crystalhd}" != "no"; then
2195     AC_CHECK_HEADER(libcrystalhd/libcrystalhd_if.h, [
2196       VLC_ADD_PLUGIN([crystalhd])
2197       VLC_ADD_LIBS([crystalhd], [-lcrystalhd])
2198     ],[
2199       if test "${SYS}" = "mingw32" ; then
2200         AC_CHECK_HEADERS(libcrystalhd/bc_dts_defs.h, [
2201           VLC_ADD_PLUGIN([crystalhd])
2202           AC_CHECK_HEADERS(libcrystalhd/bc_drv_if.h, [
2203             VLC_ADD_LIBS([crystalhd], [-lbcmDIL])
2204             ])
2205         ],[
2206           AS_IF([test x"${enable_crystalhd}" = "xyes"],
2207                 [AC_MSG_ERROR("Could not find CrystalHD development headers")],
2208                 [AC_MSG_WARN("Could not find CrystalHD development headers")])
2209         ],[#define __LINUX_USER__
2210                #include <libcrystalhd/bc_dts_types.h>
2211         ])
2212       fi
2213     ],[
2214        #include <libcrystalhd/bc_dts_types.h>
2215       ])
2216 fi
2217
2218 dnl
2219 dnl  mad plugin
2220 dnl
2221 have_mad="no"
2222 MAD_CFLAGS=""
2223 MAD_LIBS=""
2224
2225 AC_ARG_WITH(mad, [  --with-mad=PATH         path to libmad], [
2226   enable_mad="yes"
2227 ], [
2228   with_mad="no"
2229 ])
2230 AS_IF([test "${with_mad}" != "no"], [
2231   MAD_CFLAGS="-I${with_mad}/include"
2232   MAD_LIBS="-L${with_mad}/lib"
2233 ])
2234
2235 AC_ARG_ENABLE(mad,
2236   [  --enable-mad            libmad module (default enabled)])
2237 AS_IF([test "${enable_mad}" != "no"], [
2238   VLC_SAVE_FLAGS
2239   CPPFLAGS="${CPPFLAGS} ${MAD_CFLAGS}"
2240   LDFLAGS="${LDFLAGS} ${MAD_LIBS}"
2241   AC_CHECK_HEADERS(mad.h, [
2242     AC_CHECK_LIB(mad, mad_bit_init, [
2243       have_mad="yes"
2244       MAD_LIBS="${MAD_LIBS} -lmad"
2245     ])
2246   ])
2247   VLC_RESTORE_FLAGS
2248   AS_IF([test -n "$enable_mad" -a "${have_mad}" = "no"], [
2249     AC_MSG_ERROR([Could not find libmad. Install it or pass --disable-mad to disable it.])
2250   ])
2251 ])
2252 AC_SUBST(MAD_CFLAGS)
2253 AC_SUBST(MAD_LIBS)
2254 AM_CONDITIONAL([HAVE_MAD], [test "${have_mad}" = "yes"])
2255
2256 dnl  mpg123 plugin
2257 dnl
2258 dnl
2259 PKG_ENABLE_MODULES_VLC([MPG123], [mpg123], [libmpg123], [libmpg123 decoder support], [auto])
2260
2261
2262 AC_ARG_ENABLE(merge-ffmpeg,
2263 [  --enable-merge-ffmpeg   merge FFmpeg-based plugins (default disabled)],, [
2264   enable_merge_ffmpeg="no"
2265 ])
2266 AM_CONDITIONAL([MERGE_FFMPEG], [test "$enable_merge_ffmpeg" != "no"])
2267
2268 AC_MSG_CHECKING([for libavutil variant])
2269 PKG_CHECK_EXISTS([libavutil], [
2270   libavutil_version="$(${PKG_CONFIG} --modversion libavutil)"
2271   libavutil_micro="${libavutil_version##*.}"
2272   AS_IF([test ${libavutil_micro} -le 99], [
2273     avfork="libav"
2274   ], [
2275     avfork="ffmpeg"
2276   ])
2277 ], [
2278   avfork="none"
2279 ])
2280 AC_MSG_RESULT([${avfork}])
2281
2282 dnl
2283 dnl gstreamer stuff
2284 dnl
2285 AC_ARG_ENABLE(gst-decode,
2286   [  --enable-gst-decode     GStreamer based decoding support (currently supports only video decoding) (default auto)])
2287
2288 have_gst_decode="no"
2289 AS_IF([test "${enable_gst_decode}" != "no"], [
2290   PKG_CHECK_MODULES([GST_APP], [gstreamer-app-1.0], [
2291     PKG_CHECK_MODULES([GST_VIDEO], [gstreamer-video-1.0], [
2292       have_gst_decode="yes"
2293     ], [
2294       AC_MSG_WARN([${GST_VIDEO_PKG_ERRORS}. GStreamer decoder module will not be built.])
2295     ])
2296   ], [
2297     AC_MSG_WARN([${GST_APP_PKG_ERRORS}. GStreamer modules will not be built.])
2298   ])
2299 ])
2300 AM_CONDITIONAL([HAVE_GST_DECODE], [test "${have_gst_decode}" = "yes"])
2301
2302 dnl
2303 dnl  avcodec decoder/encoder plugin
2304 dnl
2305 AC_ARG_ENABLE(avcodec,
2306 [  --enable-avcodec        libavcodec codec (default enabled)])
2307 AS_IF([test "${enable_avcodec}" != "no"], [
2308   PKG_CHECK_MODULES(AVCODEC,[libavcodec >= 55.0.0 libavutil >= 52.0.0], [
2309     dnl PKG_CHECK_EXISTS([libavcodec < 56],, [
2310     dnl   AC_MSG_ERROR([libavcodec versions 56 and later are not supported yet.])
2311     dnl ])
2312     VLC_SAVE_FLAGS
2313     CPPFLAGS="${CPPFLAGS} ${AVCODEC_CFLAGS}"
2314     CFLAGS="${CFLAGS} ${AVCODEC_CFLAGS}"
2315     AC_CHECK_HEADERS(libavcodec/avcodec.h)
2316     AC_CHECK_HEADERS(libavutil/avutil.h)
2317     VLC_RESTORE_FLAGS
2318     have_avcodec="yes"
2319   ],[
2320     AC_MSG_ERROR([${AVCODEC_PKG_ERRORS}. Pass --disable-avcodec to ignore this error.])
2321   ])
2322 ], [
2323   have_avcodec="no"
2324 ])
2325 AM_CONDITIONAL([HAVE_AVCODEC], [test "${have_avcodec}" != "no"])
2326
2327 dnl
2328 dnl libva needs avcodec
2329 dnl
2330 AC_ARG_ENABLE(libva,
2331   [  --enable-libva          VAAPI GPU decoding support (libVA) (default auto)])
2332
2333 AS_IF([test "${enable_libva}" = "yes" -a "${have_avcodec}" != "yes" ], [
2334   AC_MSG_ERROR([--enable-libva and --disable-avcodec options are mutually exclusive. Use --enable-avcodec.])
2335 ])
2336
2337 have_vaapi="no"
2338 have_vaapi_drm="no"
2339 have_vaapi_x11="no"
2340 AS_IF([test "${enable_libva}" != "no"], [
2341   PKG_CHECK_EXISTS([libva], [
2342     have_vaapi="yes"
2343   ], [
2344     AS_IF([test -n "${enable_libva}"], [
2345       AC_MSG_ERROR([${LIBVA_PKG_ERRORS}.])
2346     ], [
2347       AC_MSG_WARN([${LIBVA_PKG_ERRORS}.])
2348     ])
2349   ])
2350   PKG_CHECK_MODULES([LIBVA_DRM], [libva-drm], [
2351     have_vaapi_drm="yes"
2352   ], [
2353     AC_MSG_WARN([${LIBVA_DRM_PKG_ERRORS}.])
2354   ])
2355   PKG_CHECK_MODULES(LIBVA_X11, [libva-x11], [
2356     have_vaapi_x11="yes"
2357   ], [
2358     AC_MSG_WARN([${LIBVA_X11_PKG_ERRORS}.])
2359   ])
2360 ])
2361 AM_CONDITIONAL([HAVE_VAAPI_DRM], [test "${have_vaapi_drm}" = "yes"])
2362 AM_CONDITIONAL([HAVE_VAAPI_X11], [test "${have_vaapi_x11}" = "yes"])
2363
2364 have_avcodec_vaapi="no"
2365 AS_IF([test "${have_vaapi}" = "yes" -a "${have_avcodec}" = "yes"], [
2366   case "${avfork}" in
2367     ffmpeg)
2368       PKG_CHECK_EXISTS([libavcodec >= 57.10.100], [
2369         AC_MSG_ERROR([VA API requires FFmpeg libavcodec < 57.10 or libav.])
2370       ])
2371       ;;
2372   esac
2373   VLC_SAVE_FLAGS
2374   CPPFLAGS="${CPPFLAGS} ${AVCODEC_CFLAGS}"
2375   CFLAGS="${CFLAGS} ${AVCODEC_CFLAGS}"
2376   AC_CHECK_HEADERS([libavcodec/vaapi.h], [
2377     AC_MSG_NOTICE([VA API acceleration activated])
2378     have_avcodec_vaapi="yes"
2379   ],[
2380     AS_IF([test -n "${enable_libva}"], [
2381       AC_MSG_ERROR([libva is present but libavcodec/vaapi.h is missing])
2382     ], [
2383       AC_MSG_WARN([libva is present but libavcodec/vaapi.h is missing ])
2384     ])
2385   ])
2386   VLC_RESTORE_FLAGS
2387 ])
2388 AM_CONDITIONAL([HAVE_AVCODEC_VAAPI], [test "${have_avcodec_vaapi}" = "yes"])
2389
2390 dnl
2391 dnl dxva2 needs avcodec
2392 dnl
2393 AC_ARG_ENABLE(dxva2,
2394   [  --enable-dxva2          DxVA2 GPU decoding support (default auto)])
2395
2396 have_avcodec_dxva2="no"
2397 AS_IF([test "${enable_dxva2}" != "no"], [
2398   if test "${SYS}" = "mingw32"; then
2399   AS_IF([test "x${have_avcodec}" = "xyes"], [
2400     case "${avfork}" in
2401       ffmpeg)
2402         PKG_CHECK_EXISTS([libavcodec >= 57.10.100], [
2403           AC_MSG_ERROR([DXVA2 requires FFmpeg libavcodec < 57.10 or libav.])
2404         ])
2405         ;;
2406     esac
2407     AC_CHECK_HEADERS(dxva2api.h,
2408       [
2409         AC_CHECK_HEADERS(libavcodec/dxva2.h, [
2410            AC_MSG_NOTICE([DxVA2 acceleration activated])
2411            have_avcodec_dxva2="yes"
2412         ],[
2413     AS_IF([test "${enable_dxva2}" = "yes"],
2414           [AC_MSG_ERROR([dxva2 is present but libavcodec/dxva2.h is missing])],
2415               [AC_MSG_WARN([dxva2 is present but libavcodec/dxva2.h is missing ])])
2416         ], [#undef _WIN32_WINNT
2417             /* DXVA2 is only available in Vista and above */
2418             #define _WIN32_WINNT 0x600])
2419       ],[
2420     AS_IF([test "${enable_dxva2}" = "yes"],
2421               [AC_MSG_ERROR([Could not find required dxva2api.h])],
2422               [AC_MSG_WARN([dxva2api.h not found])])
2423       ])
2424   ],[
2425     AS_IF([test "x${enable_dxva2}" != "x"], [
2426       AC_MSG_ERROR([--enable-dxva2 and --disable-avcodec options are mutually exclusive.])
2427     ])
2428   ])
2429   fi
2430 ])
2431 AM_CONDITIONAL([HAVE_AVCODEC_DXVA2], [test "${have_avcodec_dxva2}" = "yes"])
2432
2433 dnl
2434 dnl d3d11va needs avcodec
2435 dnl
2436 AC_ARG_ENABLE(d3d11va,
2437   [  --enable-d3d11va          D3D11 GPU decoding support (default auto)])
2438
2439 have_avcodec_d3d11va="no"
2440 AS_IF([test "${enable_d3d11va}" != "no"], [
2441   if test "${SYS}" = "mingw32"; then
2442   AS_IF([test "x${have_avcodec}" = "xyes"], [
2443         AC_CHECK_TYPES([ID3D11VideoDecoder],
2444           [
2445             AC_CHECK_HEADERS(dxva2api.h,
2446               [
2447                 AC_CHECK_HEADERS(libavcodec/d3d11va.h, [
2448                    AC_MSG_NOTICE([D3D11 acceleration activated])
2449                    AC_DEFINE(HAVE_AVCODEC_D3D11VA, 1, [Define if the d3d11va module is built])
2450                    have_avcodec_d3d11va="yes"
2451                 ],[
2452                   AS_IF([test "${enable_d3d11va}" = "yes"],
2453                     [AC_MSG_ERROR([d3d11va is present but libavcodec/d3d11va.h is missing])],
2454                         [AC_MSG_WARN([d3d11va is present but libavcodec/d3d11va.h is missing ])])
2455                   ], [#undef _WIN32_WINNT
2456                       /* D3D11 is only available in Vista and above */
2457                       #define _WIN32_WINNT 0x600])
2458                   ],[
2459                     AS_IF([test "${enable_d3d11va}" = "yes"],
2460                           [AC_MSG_ERROR([Could not find required dxva2api.h])],
2461                           [AC_MSG_WARN([dxva2api.h not found])])
2462                   ])
2463           ],[
2464             AS_IF([test "${enable_d3d11va}" = "yes"],
2465                   [AC_MSG_ERROR([Could not find required ID3D11VideoDecoder in d3d11.h])],
2466                   [AC_MSG_WARN([ID3D11VideoDecoder not found])])
2467           ], [#include <d3d11.h>])
2468   ],[
2469     AS_IF([test "x${enable_d3d11va}" != "x"], [
2470       AC_MSG_ERROR([--enable-d3d11va and --disable-avcodec options are mutually exclusive.])
2471     ])
2472   ])
2473   fi
2474 ])
2475 AM_CONDITIONAL([HAVE_AVCODEC_D3D11VA], [test "${have_avcodec_d3d11va}" = "yes"])
2476
2477 dnl
2478 dnl DXGI debug
2479 dnl
2480 AC_CHECK_HEADERS(dxgidebug.h)
2481
2482 dnl
2483 dnl vda needs avcodec
2484 dnl
2485 AC_ARG_ENABLE(vda,
2486   [  --enable-vda          VDA  support (default auto)])
2487
2488 have_avcodec_vda="no"
2489 AS_IF([test "${enable_vda}" != "no"], [
2490   if test "${SYS}" = "darwin"; then
2491   AS_IF([test "x${have_avcodec}" = "xyes"], [
2492     AC_CHECK_HEADERS(VideoDecodeAcceleration/VDADecoder.h,
2493       [
2494         AC_CHECK_HEADERS(libavcodec/vda.h, [
2495            have_avcodec_vda="yes"
2496         ],[
2497         AS_IF([test "${enable_vda}" = "yes"],
2498               [AC_MSG_ERROR([vda is present but libavcodec/vda.h is missing])],
2499               [AC_MSG_WARN([vda is present but libavcodec/vda.h is missing ])])
2500         ])
2501   ],[
2502         AS_IF([test "${enable_vda}" = "yes"],
2503               [AC_MSG_ERROR([Could not find required VideoDecodeAcceleration/VDADecoder.h])],
2504               [AC_MSG_WARN([VideoDecodeAcceleration/VDADecoder.h not found])])
2505       ])
2506   ],[
2507     AS_IF([test "x${enable_vda}" != "x"], [
2508       AC_MSG_ERROR([--enable-vda and --disable-avcodec options are mutually exclusive.])
2509     ])
2510  ])
2511  AS_IF([test "${have_avcodec_vda}" = "yes"], [
2512      SAVE_LIBS=$LIBS
2513      LIBS="$LIBS $AVCODEC_LIBS"
2514      AC_CHECK_FUNCS([av_vda_alloc_context])
2515      LIBS=$SAVE_LIBS
2516  ])
2517  fi
2518 ])
2519 AM_CONDITIONAL([HAVE_AVCODEC_VDA], [test "${have_avcodec_vda}" = "yes"])
2520
2521 dnl
2522 dnl  avformat demuxer/muxer plugin
2523 dnl
2524
2525 AC_ARG_ENABLE(avformat,
2526 [  --enable-avformat       libavformat containers (default enabled)],, [
2527   enable_avformat="${have_avcodec}"
2528 ])
2529 have_avformat="no"
2530 AS_IF([test "${enable_avformat}" != "no"], [
2531   PKG_CHECK_MODULES(AVFORMAT,[libavformat >= 53.21.0 libavcodec libavutil], [
2532       have_avformat="yes"
2533       VLC_SAVE_FLAGS
2534       CPPFLAGS="${CPPFLAGS} ${AVFORMAT_CFLAGS}"
2535       CFLAGS="${CFLAGS} ${AVFORMAT_CFLAGS}"
2536       AC_CHECK_HEADERS(libavformat/avformat.h libavformat/avio.h)
2537       AC_CHECK_HEADERS(libavcodec/avcodec.h)
2538       AC_CHECK_HEADERS(libavutil/avutil.h)
2539       AS_IF([test "$enable_merge_ffmpeg" = "no"], [
2540         have_avformat="no"
2541       ])
2542       VLC_RESTORE_FLAGS
2543     ],[
2544       AC_MSG_ERROR([${AVFORMAT_PKG_ERRORS}. Pass --disable-avformat to ignore this error.])
2545   ])
2546 ])
2547 AM_CONDITIONAL([HAVE_AVFORMAT], [test "${enable_avformat}" != "no"])
2548
2549 dnl
2550 dnl  swscale image scaling and conversion plugin
2551 dnl
2552
2553 AC_ARG_ENABLE(swscale,
2554   AS_HELP_STRING([--enable-swscale],[libswscale image scaling and conversion
2555           (default enabled)]))
2556 if test "${enable_swscale}" != "no"
2557 then
2558   PKG_CHECK_MODULES(SWSCALE,[libswscale],
2559     [
2560       VLC_SAVE_FLAGS
2561       CPPFLAGS="${CPPFLAGS} ${SWSCALE_CFLAGS}"
2562       CFLAGS="${CFLAGS} ${SWSCALE_CFLAGS}"
2563       AC_CHECK_HEADERS(libswscale/swscale.h)
2564       AC_CHECK_HEADERS(libavutil/avutil.h)
2565       VLC_ADD_PLUGIN([swscale])
2566       VLC_ADD_LIBS([swscale],[$SWSCALE_LIBS])
2567       VLC_ADD_CFLAGS([swscale],[$SWSCALE_CFLAGS])
2568       AS_IF([test -n "${ac_cv_ld_bsymbolic}"], [
2569         VLC_ADD_LIBS([swscale],[${ac_cv_ld_bsymbolic}])
2570       ])
2571       VLC_RESTORE_FLAGS
2572     ],[
2573       AC_MSG_ERROR([${SWSCALE_PKG_ERRORS}. Pass --disable-swscale to ignore this error. Proper software scaling and some video chroma conversion will be missing.])
2574   ])
2575 fi
2576
2577 dnl
2578 dnl  postproc plugin
2579 dnl
2580
2581 AC_ARG_ENABLE(postproc,
2582 [  --enable-postproc       libpostproc image post-processing (default auto)])
2583 if test "${enable_postproc}" != "no"
2584 then
2585   PKG_CHECK_MODULES(POSTPROC,[libpostproc libavutil],
2586     [
2587       VLC_SAVE_FLAGS
2588       CPPFLAGS="${CPPFLAGS} ${POSTPROC_CFLAGS}"
2589       CFLAGS="${CFLAGS} ${POSTPROC_CFLAGS}"
2590       AC_CHECK_HEADERS(postproc/postprocess.h)
2591       VLC_ADD_PLUGIN([postproc])
2592       VLC_RESTORE_FLAGS
2593     ],[
2594       AC_MSG_WARN([${POSTPROC_PKG_ERRORS}.])
2595   ])
2596 fi
2597
2598 dnl
2599 dnl  faad decoder plugin
2600 dnl
2601 AC_ARG_ENABLE(faad,
2602 [  --enable-faad           faad codec (default auto)])
2603 have_faad="no"
2604 AS_IF([test "${enable_faad}" != "no"], [
2605   AC_CHECK_HEADERS([neaacdec.h], [
2606     AC_CHECK_LIB(faad, NeAACDecOpen, [have_faad="yes"],, [$LIBM])
2607
2608     AS_IF([test "${have_faad}" = "yes"], [
2609       VLC_ADD_PLUGIN([faad])
2610       VLC_ADD_LIBS([faad],[-lfaad])
2611     ], [
2612       AS_IF([test "${enable_faad}" = "yes"], [
2613         AC_MSG_ERROR([cannot find FAAD library])
2614       ], [
2615         AC_MSG_WARN([cannot find FAAD library])
2616       ])
2617     ])
2618   ])
2619 ])
2620
2621 dnl
2622 dnl libvpx decoder plugin
2623 dnl
2624 AC_ARG_ENABLE(vpx,
2625     AS_HELP_STRING([--enable-vpx],[libvpx VP8/VP9 decoder (default auto)]))
2626 AS_IF([test "${enable_vpx}" != "no"],[
2627     PKG_CHECK_MODULES([VPX], [vpx] , [
2628         VLC_ADD_PLUGIN([vpx])
2629         VLC_ADD_CPPFLAGS([vpx], [${VPX_CFLAGS}])
2630         VLC_ADD_LIBS([vpx], [${VPX_LIBS}])
2631         AC_CHECK_LIB([vpx],[vpx_codec_vp8_dx], [
2632             VLC_ADD_CPPFLAGS([vpx], [-DENABLE_VP8_DECODER])
2633         ], [], [${VPX_LIBS}])
2634         AC_CHECK_LIB([vpx],[vpx_codec_vp9_dx], [
2635             VLC_ADD_CPPFLAGS([vpx], [-DENABLE_VP9_DECODER])
2636         ], [], [${VPX_LIBS}])
2637     ], [
2638     AS_IF([test "${enable_vpx}" = "yes"],[
2639         AC_MSG_ERROR([libvpx was not found])
2640     ])])
2641 ])
2642
2643 dnl
2644 dnl twolame encoder plugin
2645 dnl
2646 PKG_ENABLE_MODULES_VLC([TWOLAME], [], [twolame], [MPEG Audio Layer 2 encoder], [auto], [], [], [ -DLIBTWOLAME_STATIC])
2647
2648 dnl
2649 dnl fdk-aac encoder plugin
2650 dnl
2651 PKG_ENABLE_MODULES_VLC([FDKAAC], [], [fdk-aac], [FDK-AAC encoder], [disabled])
2652
2653 dnl
2654 dnl  QuickTime plugin
2655 dnl
2656 AC_ARG_ENABLE(quicktime,
2657   [  --enable-quicktime      QuickTime module (deprecated)])
2658 if test "${enable_quicktime}" = "yes"; then
2659   if test "${SYS}" = "mingw32"; then
2660     VLC_ADD_PLUGIN([quicktime])
2661   else
2662   AC_CHECK_HEADERS(QuickTime/QuickTime.h,
2663     [ VLC_ADD_PLUGIN([quicktime])
2664       VLC_ADD_LIBS([quicktime],[-Wl,-framework,QuickTime,-framework,Carbon])
2665     ], [ AC_MSG_ERROR([cannot find QuickTime headers]) ])
2666   fi
2667 fi
2668
2669 dnl
2670 dnl A52/AC3 decoder plugin
2671 dnl
2672 AC_ARG_ENABLE(a52,
2673   [  --enable-a52            A/52 support with liba52 (default enabled)])
2674 if test "${enable_a52}" != "no"
2675 then
2676   AC_ARG_WITH(a52,
2677     [  --with-a52=PATH         a52 headers and libraries])
2678     if test -z "${with_a52}"
2679     then
2680       LDFLAGS_test=""
2681       CPPFLAGS_test=""
2682     else
2683       LDFLAGS_test="-L${with_a52}/lib"
2684       CPPFLAGS_test="-I${with_a52}/include"
2685     fi
2686     VLC_SAVE_FLAGS
2687     CPPFLAGS="${CPPFLAGS} ${CPPFLAGS_test} ${CPPFLAGS_a52tofloat32}"
2688     LDFLAGS="${LDFLAGS} ${LDFLAGS_test} ${LIBS_a52tofloat32}"
2689     AC_CHECK_HEADERS(a52dec/a52.h, [
2690       AC_CHECK_LIB(a52, a52_free, [
2691         VLC_ADD_PLUGIN([a52tofloat32])
2692         VLC_ADD_LIBS([a52tofloat32],[${LDFLAGS_test} -la52])
2693         VLC_ADD_CPPFLAGS([a52tofloat32],[${CPPFLAGS_test}])
2694       ],[
2695         AC_MSG_ERROR([Could not find liba52 on your system: you may get it from http://liba52.sf.net/. Alternatively you can use --disable-a52 to disable the a52 plugin.])
2696         ], [$LIBM])
2697     ],[
2698       AC_MSG_ERROR([Could not find liba52 on your system: you may get it from http://liba52.sf.net/. Alternatively you can use --disable-a52 to disable the a52 plugin.])
2699     ])
2700     VLC_RESTORE_FLAGS
2701 fi
2702
2703 dnl
2704 dnl DTS Coherent Acoustics decoder plugin
2705 dnl
2706 PKG_ENABLE_MODULES_VLC([DCA], [dtstofloat32], [libdca >= 0.0.5], [DTS Coherent Acoustics support with libdca], [auto])
2707
2708 dnl
2709 dnl  Flac plugin
2710 dnl
2711 PKG_ENABLE_MODULES_VLC([FLAC], [], [flac], [libflac decoder/encoder support], [auto])
2712
2713 dnl
2714 dnl  Libmpeg2 plugin
2715 dnl
2716 PKG_ENABLE_MODULES_VLC([LIBMPEG2], [], [libmpeg2 > 0.3.2], [libmpeg2 decoder support], [auto])
2717
2718 dnl
2719 dnl  Vorbis plugin
2720 dnl
2721 PKG_ENABLE_MODULES_VLC([VORBIS], [], [ogg vorbis >= 1.1 vorbisenc >= 1.1], [Vorbis decoder and encoder], [auto])
2722
2723 dnl
2724 dnl  Tremor plugin
2725 dnl
2726 AC_ARG_ENABLE(tremor,
2727   [  --enable-tremor         Tremor decoder support (default disabled)])
2728 if test "${enable_tremor}" = "yes"
2729 then
2730   AC_CHECK_HEADERS(tremor/ivorbiscodec.h, [
2731     VLC_ADD_PLUGIN([tremor])
2732    ],[])
2733 fi
2734
2735 dnl
2736 dnl  Speex plugins
2737 dnl
2738 PKG_ENABLE_MODULES_VLC([SPEEX], [], [ogg speex >= 1.0.5], [Speex support], [auto])
2739 have_speexdsp="no"
2740 AS_IF([test "${enable_speex}" != "no"], [
2741   PKG_CHECK_MODULES([SPEEXDSP], [speexdsp], [
2742     have_speexdsp="yes"
2743   ], [
2744     AC_MSG_WARN([${SPEEXDSP_PKG_ERRORS}.])
2745   ])
2746 ])
2747 AM_CONDITIONAL([HAVE_SPEEXDSP], [test "$have_speexdsp" = "yes"])
2748
2749 dnl
2750 dnl  Opus plugin
2751 dnl
2752 PKG_ENABLE_MODULES_VLC([OPUS], [], [ogg opus >= 1.0.3], [Opus support], [auto])
2753
2754 dnl
2755 dnl  theora decoder plugin
2756 dnl
2757 PKG_ENABLE_MODULES_VLC([THEORA], [], [ogg theoradec >= 1.0 theoraenc], [experimental theora codec], [auto])
2758
2759 dnl
2760 dnl  Daala decoder plugin
2761 dnl
2762 PKG_ENABLE_MODULES_VLC([DAALA], [], [ogg daaladec daalaenc], [experimental daala codec], [disabled])
2763
2764 dnl
2765 dnl  schroedinger decoder plugin (for dirac format video)
2766 dnl
2767 PKG_ENABLE_MODULES_VLC([SCHROEDINGER], [], [schroedinger-1.0 >= 1.0.10], [dirac decoder and encoder using schroedinger], [auto])
2768
2769 dnl
2770 dnl  PNG decoder module
2771 dnl
2772 AC_ARG_ENABLE(png,
2773   [  --enable-png            PNG support (default enabled)])
2774 AS_IF([test "${enable_png}" != "no"], [
2775 AC_CHECK_HEADERS(png.h, [
2776   VLC_SAVE_FLAGS
2777   LDFLAGS="${LDFLAGS} -lz $LIBM"
2778   AC_CHECK_LIB(png, png_set_rows, [
2779     VLC_ADD_PLUGIN([png])
2780   ], [], [-lz $LIBM])
2781   VLC_RESTORE_FLAGS
2782   ])
2783 ])
2784
2785 dnl
2786 dnl  JPEG decoder module
2787 dnl
2788 AC_ARG_ENABLE(jpeg,
2789   [  --enable-jpeg           JPEG support (default enabled)])
2790 AS_IF([test "${enable_jpeg}" != "no"], [
2791 AC_CHECK_HEADERS(jpeglib.h, [
2792   VLC_ADD_PLUGIN([jpeg])
2793   ])
2794 ])
2795
2796 dnl
2797 dnl  BPG decoder module
2798 dnl
2799 AC_ARG_ENABLE(bpg,
2800   [  --enable-bpg           BPG support (default disabled)])
2801 AS_IF([test "${enable_bpg}" != "no"], [
2802 AC_CHECK_HEADERS(libbpg.h, [
2803   VLC_ADD_PLUGIN([bpg])
2804   ])
2805 ])
2806
2807 dnl
2808 dnl H262 encoder plugin (lib262)
2809 dnl
2810 AC_ARG_ENABLE(x262,
2811   [  --enable-x262           H262 encoding support with static libx262 (default disabled)])
2812 if test "${enable_x262}" != "no"; then
2813     PKG_CHECK_MODULES(X262, x262, [
2814         VLC_ADD_PLUGIN([x262])
2815         VLC_ADD_LDFLAGS([x262],[${X262_LIBS}])
2816         AS_IF([test -n "${ac_cv_ld_bsymbolic}"], [
2817           VLC_ADD_LIBS([x262],[${av_cv_ld_bsymbolic}])
2818         ])
2819         VLC_ADD_CFLAGS([x262],[${X262_CFLAGS}])
2820         if echo ${X262_LIBS} |grep -q 'pthreadGC2'; then
2821           VLC_ADD_CFLAGS([x262], [-DPTW32_STATIC_LIB])
2822         fi
2823     ], [
2824        if test "${enable_x262}" = "yes"; then
2825         AC_MSG_ERROR([x262 module doesn't work without staticly compiled libx262.a])
2826        fi
2827     ])
2828 fi
2829
2830 dnl x265 encoder
2831 PKG_ENABLE_MODULES_VLC([X265],, [x265], [HEVC/H.265 encoder], [auto])
2832
2833 dnl
2834 dnl H264 encoder plugin (10-bit lib264)
2835 dnl
2836 AC_ARG_ENABLE(x26410b,
2837   [  --enable-x26410b           H264 10-bit encoding support with static libx264 (default disabled)])
2838 if test "${enable_x26410b}" != "no"; then
2839     PKG_CHECK_MODULES(X26410B, x26410b, [
2840         VLC_ADD_PLUGIN([x26410b])
2841         VLC_ADD_LIBS([x26410b],[${X26410B_LIBS}])
2842         AS_IF([test -n "${ac_cv_ld_bsymbolic}"], [
2843           VLC_ADD_LDFLAGS([x26410b],[${ac_cv_ld_bsymbolic}])
2844         ])
2845         VLC_ADD_CFLAGS([x26410b],[${X26410B_CFLAGS}])
2846         if echo ${X26410B_LIBS} |grep -q 'pthreadGC2'; then
2847           VLC_ADD_CFLAGS([x26410b], [-DPTW32_STATIC_LIB])
2848         fi
2849     ], [
2850        if test "${enable_x26410b}" = "yes"; then
2851         AC_MSG_ERROR([x26410b module doesn't work without staticly compiled libx264.a])
2852        fi
2853     ])
2854 fi
2855
2856
2857 dnl
2858 dnl H264 encoder plugin (using libx264)
2859 dnl
2860 AC_ARG_ENABLE(x264,
2861   [  --enable-x264           H264 encoding support with libx264 (default enabled)])
2862 if test "${enable_x264}" != "no"; then
2863       PKG_CHECK_MODULES(X264,x264 >= 0.86, [
2864         VLC_ADD_PLUGIN([x264])
2865         VLC_ADD_LIBS([x264],[${X264_LIBS}])
2866
2867         AS_IF([test -n "${ac_cv_ld_bsymbolic}"], [
2868           VLC_ADD_LDFLAGS([x264],[${ac_cv_ld_bsymbolic}])
2869         ])
2870
2871         VLC_ADD_CFLAGS([x264],[${X264_CFLAGS}])
2872         if echo ${X264_LIBS} |grep -q 'pthreadGC2'; then
2873           VLC_ADD_CFLAGS([x264], [-DPTW32_STATIC_LIB])
2874         fi
2875       ],[
2876         if test "${enable_x264}" = "yes"; then
2877             AC_MSG_ERROR([${X264_PKG_ERRORS}: you may get it from http://www.videolan.org/x264.html])
2878           fi
2879       ])
2880 fi
2881
2882 dnl
2883 dnl Intel QuickSync (aka MediaSDK) H264/H262 encoder
2884 dnl
2885 PKG_ENABLE_MODULES_VLC([MFX], [qsv], [libmfx], [Intel QuickSync MPEG4-Part10/MPEG2 (aka H.264/H.262) encoder], [auto])
2886
2887 dnl
2888 dnl libfluidsynth (MIDI synthetizer) plugin
2889 dnl
2890 PKG_ENABLE_MODULES_VLC([FLUIDSYNTH], [], [fluidsynth >= 1.1.2], [MIDI synthetiser with libfluidsynth], [auto])
2891
2892 dnl
2893 dnl Teletext Modules
2894 dnl vbi decoder plugin (using libzbvi)
2895 dnl telx module
2896 dnl uncompatible
2897 dnl
2898 AC_ARG_ENABLE(zvbi,
2899   AS_HELP_STRING([--enable-zvbi],[VBI (inc. Teletext) decoding support with
2900                   libzvbi (default enabled)]))
2901 AC_ARG_ENABLE(telx,
2902   AS_HELP_STRING([--enable-telx],[Teletext decoding module (conflicting with
2903                   zvbi) (default enabled if zvbi is absent)]))
2904
2905 AS_IF( [test "${enable_zvbi}" != "no"],[
2906     PKG_CHECK_MODULES(ZVBI, [zvbi-0.2 >= 0.2.28],
2907         [
2908           VLC_ADD_PLUGIN([zvbi])
2909           AC_DEFINE(ZVBI_COMPILED, 1, [Define if the zvbi module is built])
2910           AS_IF( [test "${enable_telx}" = "yes"],[
2911                   AC_MSG_WARN([The zvbi and telx modules are incompatible. Using zvbi.])
2912                   ])
2913         ],[
2914           AC_MSG_WARN([${ZVBI_PKG_ERRORS}. Enabling the telx module instead.])
2915         ])
2916     ])
2917 AS_IF( [test "${enable_telx}" != "no" ],[
2918   VLC_ADD_PLUGIN([telx])
2919   ])
2920
2921 dnl
2922 dnl libass subtitle rendering module
2923 dnl
2924 AC_ARG_ENABLE(libass,
2925   [  --enable-libass         Subtitle support using libass (default enabled)])
2926 AS_IF( [test "${enable_libass}" != "no"], [
2927   PKG_CHECK_MODULES(LIBASS, [libass >= 0.9.8],
2928       [
2929         VLC_ADD_PLUGIN([libass])
2930
2931         AC_CHECK_HEADERS(fontconfig/fontconfig.h,
2932           [VLC_ADD_CPPFLAGS([libass],[-DHAVE_FONTCONFIG])
2933            VLC_ADD_LIBS([libass],[-lfontconfig])
2934        ])
2935       ],[
2936         AC_MSG_WARN([${LIBASS_PKG_ERRORS}.])
2937       ])
2938   ])
2939
2940 dnl
2941 dnl ARIB subtitles rendering module
2942 dnl
2943 AC_ARG_ENABLE(aribsub,
2944   [  --enable-aribsub        ARIB Subtitles support (default enabled)])
2945 AS_IF( [test "${enable_aribsub}" != "no" ],[
2946   PKG_CHECK_MODULES(ARIBB24, [aribb24 >= 1.0.1], [
2947       have_aribb24="yes"
2948       VLC_ADD_PLUGIN([aribsub])
2949       VLC_ADD_LIBS([aribsub],[-laribb24])
2950       AC_DEFINE(HAVE_ARIBB24, 1, [Define if libaribb24 is available.])
2951     ],[
2952       AC_MSG_WARN(Library [aribb24] needed for [aribsub] was not found)
2953       have_aribb24="no"
2954   ])
2955 ])
2956 AM_CONDITIONAL([HAVE_ARIBB24], [test x"${have_aribb24}" = x"yes"])
2957
2958 dnl
2959 dnl ARIB B25
2960 dnl
2961 PKG_ENABLE_MODULES_VLC([ARIBB25], [aribcam], [aribb25 >= 0.2.6], [ARIB STD-B25], [auto])
2962
2963 dnl
2964 dnl  kate decoder plugin
2965 dnl
2966 PKG_ENABLE_MODULES_VLC([KATE], [], [kate >= 0.3.0], [kate codec], [auto])
2967
2968 dnl
2969 dnl  tiger rendering for kate decoder plugin
2970 dnl
2971 AC_ARG_ENABLE(tiger,
2972 [  --enable-tiger          Tiger rendering library for Kate streams (default auto)])
2973 AS_IF([test "${enable_tiger}" != "no"], [
2974   PKG_CHECK_MODULES(TIGER,[tiger >= 0.3.1], [
2975       AC_DEFINE(HAVE_TIGER, 1, [Define if libtiger is available.])],[
2976         AS_IF([test -n "${enable_tiger}"], [
2977           AC_MSG_ERROR([${TIGER_PKG_ERRORS}.])
2978         ])
2979   ])
2980 ])
2981
2982
2983 dnl
2984 dnl  Video plugins
2985 dnl
2986
2987 EXTEND_HELP_STRING([Video plugins:])
2988
2989 dnl
2990 dnl  OpenGL
2991 dnl
2992 PKG_CHECK_MODULES([EGL], [egl], [
2993   have_egl="yes"
2994 ], [
2995   have_egl="no"
2996 ])
2997 AM_CONDITIONAL([HAVE_EGL], [test "${have_egl}" = "yes"])
2998
2999 have_gl="no"
3000 PKG_CHECK_MODULES([GL], [gl], [
3001   have_gl="yes"
3002 ], [
3003   AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
3004 #ifdef _WIN32
3005 # include <GL/glew.h>
3006 #endif
3007 #include <GL/gl.h>
3008 ]], [
3009     [int t0 = GL_TEXTURE0;]])
3010   ], [
3011     GL_CFLAGS=""
3012     have_gl="yes"
3013     AS_IF([test "${SYS}" != "mingw32"], [
3014       GL_LIBS="-lGL"
3015     ], [
3016       GL_LIBS="-lopengl32"
3017     ])
3018   ])
3019 ])
3020 AM_CONDITIONAL([HAVE_GL], [test "${have_gl}" = "yes"])
3021
3022 dnl OpenGL ES 2: depends on EGL 1.1
3023 PKG_ENABLE_MODULES_VLC([GLES2], [], [glesv2], [OpenGL ES v2 support], [disabled])
3024 dnl OpenGL ES 1: depends on EGL 1.0
3025 PKG_ENABLE_MODULES_VLC([GLES1], [], [glesv1_cm], [OpenGL ES v1 support], [disabled])
3026
3027 dnl
3028 dnl  Xlib
3029 dnl
3030
3031 AC_PATH_XTRA()
3032 AC_CHECK_HEADERS(X11/Xlib.h)
3033
3034 dnl
3035 dnl  X C Bindings modules
3036 dnl
3037 AC_ARG_ENABLE(xcb,
3038   [  --enable-xcb            X11 support with XCB (default enabled)],, [
3039   AS_IF([test "${SYS}" != "mingw32" -a "${SYS}" != "darwin"], [
3040     enable_xcb="yes"
3041   ], [
3042     enable_xcb="no"
3043   ])
3044 ])
3045 AC_ARG_ENABLE(xvideo,
3046   [  --enable-xvideo         XVideo support (default enabled)],, [
3047     enable_xvideo="$enable_xcb"
3048 ])
3049
3050 have_xcb="no"
3051 have_xcb_keysyms="no"
3052 have_xcb_randr="no"
3053 have_xcb_xvideo="no"
3054 AS_IF([test "${enable_xcb}" != "no"], [
3055   dnl libxcb
3056   PKG_CHECK_MODULES(XCB, [xcb >= 1.6])
3057   have_xcb="yes"
3058   PKG_CHECK_MODULES(XCB_SHM, [xcb-shm])
3059   PKG_CHECK_MODULES(XCB_COMPOSITE, [xcb-composite])
3060   PKG_CHECK_MODULES(XPROTO, [xproto])
3061
3062   AS_IF([test "${enable_xvideo}" != "no"], [
3063     PKG_CHECK_MODULES(XCB_XV, [xcb-xv >= 1.1.90.1], [have_xcb_xvideo="yes"])
3064   ])
3065
3066   PKG_CHECK_MODULES(XCB_RANDR, [xcb-randr >= 1.3], [have_xcb_randr="yes"])
3067
3068   dnl xcb-utils
3069   PKG_CHECK_MODULES(XCB_KEYSYMS, [xcb-keysyms >= 0.3.4], [have_xcb_keysyms="yes"], [
3070     AC_MSG_WARN([${XCB_KEYSYMS_PKG_ERRORS}. Hotkeys will not work.])
3071   ])
3072 ])
3073 AM_CONDITIONAL([HAVE_XCB], [test "${have_xcb}" = "yes"])
3074 AM_CONDITIONAL([HAVE_XCB_KEYSYMS], [test "${have_xcb_keysyms}" = "yes"])
3075 AM_CONDITIONAL([HAVE_XCB_RANDR], [test "${have_xcb_randr}" = "yes"])
3076 AM_CONDITIONAL([HAVE_XCB_XVIDEO], [test "${have_xcb_xvideo}" = "yes"])
3077
3078
3079 dnl
3080 dnl VDPAU needs X11
3081 dnl
3082 AC_ARG_ENABLE(vdpau,
3083   [AS_HELP_STRING([--enable-vdpau], [VDPAU hardware support (default auto)])])
3084 have_vdpau="no"
3085 AS_IF([test "${enable_vdpau}" != "no"], [
3086   PKG_CHECK_MODULES([VDPAU], [vdpau >= 0.6], [
3087     have_vdpau="yes"
3088     AS_IF([test "${no_x}" = "yes"], [
3089       AC_MSG_ERROR([VDPAU requires Xlib (X11).])
3090     ])
3091   ], [
3092     AS_IF([test -n "${enable_vdpau}"], [
3093       AC_MSG_ERROR([${VDPAU_PKG_ERRORS}.])
3094     ])
3095   ])
3096 ])
3097 AM_CONDITIONAL([HAVE_VDPAU], [test "${have_vdpau}" = "yes"])
3098
3099 have_avcodec_vdpau="no"
3100 AS_IF([test "${have_vdpau}" = "yes" -a "${have_avcodec}" = "yes"], [
3101   case "${avfork}" in
3102     libav) av_vdpau_ver="55.26.0" ;;
3103     ffmpeg) av_vdpau_ver="55.42.100"
3104       PKG_CHECK_EXISTS([libavcodec >= 57.10.100], [
3105         AC_MSG_ERROR([VDPAU requires FFmpeg libavcodec < 57.10 or libav.])
3106       ])
3107       ;;
3108   esac
3109   PKG_CHECK_EXISTS([libavutil >= 52.4.0 libavcodec >= ${av_vdpau_ver}], [
3110     have_avcodec_vdpau="yes"
3111     AC_MSG_NOTICE([VDPAU decoding acceleration activated])
3112   ], [
3113     AS_IF([test -n "${enable_vdpau}"], [
3114       AC_MSG_ERROR([libav libavutil >= 52.4.0 and libavcodec >= 55.26.0 are required for VDPAU decoding.])
3115     ], [
3116       AC_MSG_WARN([libav libavutil >= 52.4.0 and libavcodec >= 55.26.0 are required for VDPAU decoding.])
3117     ])
3118   ])
3119 ])
3120 AM_CONDITIONAL([HAVE_AVCODEC_VDPAU], [test "${have_avcodec_vdpau}" = "yes"])
3121
3122
3123 dnl
3124 dnl  Wayland
3125 dnl
3126 AC_ARG_ENABLE(wayland,
3127   [AS_HELP_STRING([--enable-wayland], [Wayland support (default auto)])])
3128 have_wayland="no"
3129 AC_ARG_VAR([WAYLAND_SCANNER], [Wayland scanner utility])
3130
3131 AS_IF([test "${enable_wayland}" != "no"], [
3132   AC_MSG_CHECKING([for the Wayland scanner])
3133   AS_IF([test -z "$WAYLAND_SCANNER"], [
3134     PKG_CHECK_EXISTS([wayland-scanner], [
3135       WAYLAND_SCANNER="$(${PKG_CONFIG} wayland-scanner --variable wayland_scanner)"
3136     ], [
3137       WAYLAND_SCANNER="wayland-scanner"
3138     ])
3139   ])
3140   AC_MSG_RESULT([$WAYLAND_SCANNER])
3141
3142   PKG_CHECK_MODULES([WAYLAND_CLIENT], [wayland-client >= 1.5.91], [
3143     have_wayland="yes"
3144   ], [
3145     AS_IF([test -n "${enable_wayland}"], [
3146       AC_MSG_ERROR([${WAYLAND_CLIENT_PKG_ERRORS}.])
3147     ])
3148   ])
3149
3150   AS_IF([test "${have_egl}" = "yes"], [
3151     PKG_CHECK_MODULES([WAYLAND_EGL], [wayland-egl], [
3152       have_wayland_egl="yes"
3153     ], [
3154       AS_IF([test -n "${enable_wayland}"], [
3155         AC_MSG_ERROR([${WAYLAND_EGL_PKG_ERRORS}.])
3156       ])
3157     ])
3158   ])
3159 ])
3160 AM_CONDITIONAL([HAVE_WAYLAND], [test "${have_wayland}" = "yes"])
3161 AM_CONDITIONAL([HAVE_WAYLAND_EGL], [test "${have_wayland_egl}" = "yes"])
3162
3163
3164 dnl
3165 dnl  SDL module
3166 dnl
3167 AC_ARG_ENABLE(sdl,
3168   [  --enable-sdl            SDL support (default enabled)])
3169 AC_ARG_ENABLE(sdl-image,
3170   [  --enable-sdl-image      SDL image support (default enabled)])
3171 if test "${enable_sdl}" != "no"
3172 then
3173    PKG_CHECK_MODULES(SDL, [sdl >= 1.2.10], [
3174       # SDL on Darwin is heavily patched and can only run SDL_image
3175       if test "${SYS}" != "darwin"; then
3176         VLC_ADD_PLUGIN([vout_sdl])
3177       fi
3178
3179       # SDL_image
3180       AS_IF([ test "${enable_sdl_image}" != "no"],[
3181         PKG_CHECK_MODULES(SDL_IMAGE, [SDL_image >= 1.2.10], [
3182           VLC_ADD_PLUGIN([sdl_image])],
3183           [ AC_MSG_WARN([${SDL_IMAGE_PKG_ERRORS}. You should install it alongside your SDL package.])
3184           ])
3185       ])
3186    ],[
3187      AC_MSG_WARN([${SDL_PKG_ERRORS}.])
3188    ])
3189 fi
3190
3191 dnl
3192 dnl  freetype module
3193 dnl
3194 AC_ARG_ENABLE(freetype,
3195   [  --enable-freetype       freetype support   (default auto)])
3196 AC_ARG_ENABLE(fribidi,
3197   [  --enable-fribidi        fribidi support    (default auto)])
3198 AC_ARG_ENABLE(harfbuzz,
3199   [  --enable-harfbuzz       harfbuzz support   (default auto)])
3200 AC_ARG_ENABLE(fontconfig,
3201   [  --enable-fontconfig     fontconfig support (default auto)])
3202
3203 AC_ARG_WITH([default-font],
3204     AS_HELP_STRING([--with-default-font=PATH],
3205         [Path to the default font]),
3206         [AC_DEFINE_UNQUOTED([DEFAULT_FONT_FILE],
3207             "$withval", [Default font])])
3208 AC_ARG_WITH([default-monospace-font],
3209     AS_HELP_STRING([--with-default-monospace-font=PATH],
3210         [Path to the default font]),
3211         [AC_DEFINE_UNQUOTED([DEFAULT_MONOSPACE_FONT_FILE],
3212             "$withval", [Default monospace font])])
3213
3214 AC_ARG_WITH([default-font-family],
3215     AS_HELP_STRING([--with-default-font-family=NAME],
3216         [Path to the default font family]),
3217         [AC_DEFINE_UNQUOTED([DEFAULT_FAMILY],
3218             "$withval", [Default font family])])
3219 AC_ARG_WITH([default-monospace-font-family],
3220     AS_HELP_STRING([--with-default-monospace-font-family=NAME],
3221         [Path to the default font family]),
3222         [AC_DEFINE_UNQUOTED([DEFAULT_MONOSPACE_FAMILY],
3223             "$withval", [Default monospace font family])])
3224
3225 have_freetype="no"
3226 have_fontconfig="no"
3227 have_fribidi="no"
3228 have_harfbuzz="no"
3229
3230 if test "${enable_freetype}" != "no"; then
3231    PKG_CHECK_MODULES(FREETYPE, freetype2, [
3232       have_freetype="yes"
3233       VLC_ADD_CPPFLAGS([skins2],[${FREETYPE_CFLAGS}])
3234       VLC_ADD_LIBS([skins2],[${FREETYPE_LIBS}])
3235
3236       dnl fontconfig support
3237       if test "${SYS}" != "mingw32"; then
3238           if test "${enable_fontconfig}" != "no"; then
3239             AC_CHECK_HEADERS(fontconfig/fontconfig.h, [
3240               have_fontconfig="yes"
3241             ],[AC_MSG_WARN([library fontconfig not found. Styles will be disabled in freetype])])
3242           fi
3243       fi
3244
3245       dnl fribidi support
3246       if test "${enable_fribidi}" != "no"; then
3247         PKG_CHECK_MODULES(FRIBIDI, fribidi, [
3248           have_fribidi="yes"
3249           VLC_ADD_CPPFLAGS([skins2], [${FRIBIDI_CFLAGS} -DHAVE_FRIBIDI])
3250           VLC_ADD_LIBS([skins2], [${FRIBIDI_LIBS}])
3251         ],[AC_MSG_WARN([${FRIBIDI_PKG_ERRORS}. Bidirectional text and complex scripts (Arabic, Farsi, Thai...) will be disabled in FreeType.])])
3252       fi
3253
3254       dnl harfbuzz support
3255       if test "${have_fribidi}" != "no"; then
3256         if test "${enable_harfbuzz}" != "no"; then
3257           PKG_CHECK_MODULES(HARFBUZZ, harfbuzz, [
3258             have_harfbuzz="yes"
3259             VLC_ADD_CPPFLAGS([skins2], [${HARFBUZZ_CFLAGS} -DHAVE_HARFBUZZ])
3260             VLC_ADD_LIBS([skins2], [${HARFBUZZ_LIBS}])
3261           ],[AC_MSG_WARN([${HARFBUZZ_PKG_ERRORS}. Support for complex scripts (Arabic, Farsi, Thai...) will be disabled in FreeType.])])
3262         fi
3263       fi
3264   ],[
3265   AS_IF([test -n "${enable_freetype}"],[
3266     AC_MSG_ERROR([${FREETYPE_PKG_ERRORS}. Install FreeType2 development or configure with --disable-freetype.])
3267     ])
3268   ])
3269 fi
3270
3271 AM_CONDITIONAL([HAVE_FREETYPE], [test "${have_freetype}" = "yes"])
3272 AM_CONDITIONAL([HAVE_FONTCONFIG], [test "${have_fontconfig}" = "yes"])
3273 AM_CONDITIONAL([HAVE_FRIBIDI], [test "${have_fribidi}" = "yes"])
3274 AM_CONDITIONAL([HAVE_HARFBUZZ], [test "${have_harfbuzz}" = "yes"])
3275
3276 dnl
3277 dnl SAPI (text to Speech renderer for Windows)
3278 dnl
3279 AC_LANG_PUSH([C++])
3280 AC_CHECK_TYPES([ISpObjectToken],[
3281               have_sapi="yes"
3282             ],[AC_MSG_WARN([sapi.h not found. Text to Speech renderer for Windows disabled])],
3283               [#include <windows.h>
3284                #include <sapi.h>
3285                #include <sphelper.h>])
3286 AM_CONDITIONAL([HAVE_SAPI], [test "${have_sapi}" = "yes"])
3287 AC_LANG_POP([C++])
3288
3289 dnl
3290 dnl  QuartzText vout module (iOS/Mac OS)
3291 dnl
3292 AC_ARG_ENABLE(macosx-quartztext,
3293   [  --enable-macosx-quartztext   Mac OS X quartz text module (default enabled on Mac OS X)])
3294 if test "x${enable_macosx_quartztext}" != "xno" &&
3295   (test "${SYS}" = "darwin" || test "${enable_macosx_quartztext}" = "yes")
3296 then
3297   VLC_ADD_PLUGIN([quartztext])
3298 fi
3299
3300 dnl
3301 dnl  SVG module (text rendering and image decoding)
3302 dnl
3303 PKG_ENABLE_MODULES_VLC([SVG], [], [librsvg-2.0 >= 2.9.0], [SVG rendering library],[auto])
3304 PKG_ENABLE_MODULES_VLC([SVGDEC], [], [librsvg-2.0 >= 2.9.0 cairo >= 1.13.1], [SVG image decoder library],[auto])
3305
3306 dnl
3307 dnl  Windows DirectX module
3308 dnl
3309
3310 AC_ARG_ENABLE(directx,
3311   [AS_HELP_STRING([--enable-directx],
3312     [Microsoft DirectX support (default enabled on Windows)])],, [
3313   AS_IF([test "${SYS}" = "mingw32"], [
3314     enable_directx="yes"
3315   ], [
3316     enable_directx="no"
3317   ])
3318 ])
3319 have_directx="no"
3320 AS_IF([test "${enable_directx}" != "no"], [
3321   dnl DirectDraw
3322   AC_CHECK_HEADERS(ddraw.h, [
3323     have_directx="yes"
3324   ], [
3325     AC_MSG_ERROR([Cannot find DirectX headers!])
3326   ])
3327
3328   dnl OpenGL
3329   AC_CHECK_HEADERS(GL/wglew.h, [
3330     VLC_ADD_PLUGIN([glwin32])
3331   ],, [
3332     #include <windows.h>
3333     #include <GL/gl.h>
3334   ])
3335
3336   dnl Direct3D11
3337   AC_CHECK_HEADERS(d3d11.h, [
3338     VLC_ADD_PLUGIN([direct3d11])
3339   ])
3340
3341   dnl Direct3D9
3342   AC_CHECK_HEADERS(d3d9.h, [
3343     VLC_ADD_PLUGIN([direct3d9])
3344   ])
3345
3346   dnl Direct2D
3347   AC_CHECK_HEADERS(d2d1.h, [
3348     VLC_ADD_PLUGIN([direct2d])
3349   ])
3350 ])
3351 AM_CONDITIONAL([HAVE_DIRECTX], [test "$have_directx" = "yes"])
3352
3353 dnl
3354 dnl  Linux framebuffer module
3355 dnl
3356 AC_CHECK_HEADER([linux/fb.h], [
3357   VLC_ADD_PLUGIN([fb])
3358 ])
3359
3360
3361 dnl
3362 dnl  DirectFB module
3363 dnl  try to find using: 1 - given location; 2 - directfb-config; 3 - pkg-config
3364 dnl  TODO: support for static linking
3365 dnl
3366 AC_ARG_ENABLE(directfb,
3367   [  --enable-directfb       DirectFB support (default disabled)])
3368 AC_ARG_WITH(directfb,
3369   [  --with-directfb=PATH    path to DirectFB headers and libraries])
3370
3371 if test "${enable_directfb}" = "yes"; then
3372     have_directfb="false"
3373     CPPFLAGS_mydirectfb=
3374     LIBS_mydirectfb=
3375     if test "${with_directfb}" != "no" -a -n "${with_directfb}"; then
3376         dnl Trying the given location
3377         VLC_SAVE_FLAGS
3378
3379         CPPFLAGS_new="-I${with_directfb}/include -D_REENTRANT -D_GNU_SOURCE"
3380         LIBS_new="-L${with_directfb}/lib/fusion/.libs/ -L${with_directfb}/lib/direct/.libs/ -L${with_directfb}/src/.libs/"
3381
3382         CPPFLAGS="${CPPFLAGS} ${CPPFLAGS_new}"
3383         LIBS="${LIBS} ${LIBS_new}"
3384
3385         dnl FIXME: too obscure
3386         AC_CHECK_HEADER([directfb.h], [
3387             AC_CHECK_LIB([direct],[direct_initialize], [
3388                 AC_CHECK_LIB([fusion], [fusion_enter], [
3389                     AC_CHECK_LIB([directfb], [DirectFBInit], have_directfb="true", have_directfb="false")
3390                 ], have_directfb="false")
3391             ], have_directfb="false")
3392         ], have_directfb="false")
3393
3394         VLC_RESTORE_FLAGS
3395
3396         if test "${have_directfb}" = "true"; then
3397             LIBS_mydirectfb="${LIBS_new} -lz $LIBDL -ldirectfb -lfusion -ldirect -lpthread"
3398             CPPFLAGS_mydirectfb="${CPPFLAGS_new}"
3399         fi
3400     else
3401         dnl Look for directfb-config
3402         AC_PATH_PROG(DIRECTFB_CONFIG, directfb-config, no, ${PATH})
3403         if test "${DIRECTFB_CONFIG}" != "no"; then
3404             CPPFLAGS_mydirectfb="`${DIRECTFB_CONFIG} --cflags`"
3405             LIBS_mydirectfb="`${DIRECTFB_CONFIG} --libs`"
3406             have_directfb="true"
3407         else
3408             dnl Trying with pkg-config
3409             PKG_CHECK_MODULES(DIRECTFB, directfb, [
3410                 CPPFLAGS_mydirectfb="${DIRECTFB_CFLAGS}"
3411                 LIBS_mydirectfb="${DIRECTFB_LIBS}"
3412                 have_directfb="true"
3413                 ], [have_directfb="false"])
3414         fi
3415     fi
3416     if test "${have_directfb}" = "true"; then
3417         VLC_ADD_PLUGIN([directfb])
3418         VLC_ADD_CPPFLAGS([directfb],[${CPPFLAGS_mydirectfb}])
3419         VLC_ADD_LIBS([directfb],[${LIBS_mydirectfb}])
3420     else
3421         AC_MSG_ERROR([${DIRECTFB_PKG_ERRORS}.])
3422     fi
3423 fi
3424
3425 dnl
3426 dnl  AA plugin
3427 dnl
3428 AC_ARG_ENABLE(aa,
3429   [  --enable-aa             aalib output (default disabled)])
3430 if test "${enable_aa}" = "yes"
3431 then
3432   AC_CHECK_HEADER(aalib.h,have_aa="true",have_aa="false")
3433   if test "${have_aa}" = "true"
3434   then
3435     VLC_ADD_PLUGIN([aa])
3436   fi
3437 fi
3438
3439 dnl
3440 dnl  libcaca plugin
3441 dnl
3442 PKG_ENABLE_MODULES_VLC([CACA], [], [caca >= 0.99.beta14], [libcaca output],[auto])
3443
3444 dnl
3445 dnl  OS/2 KVA plugin
3446 dnl
3447 AC_ARG_ENABLE(kva,
3448   [AS_HELP_STRING([--enable-kva],
3449     [support the K Video Accelerator KVA (default enabled on OS/2)])],, [
3450   AS_IF([test "$SYS" = "os2"], [
3451     enable_kva="yes"
3452   ])
3453 ])
3454 have_kva="no"
3455 KVA_LIBS=""
3456 AS_IF([test "$enable_kva" != "no"], [
3457   AC_CHECK_HEADERS([kva.h], [
3458     have_kva="yes"
3459     AC_CHECK_LIB(kva, main, [
3460       KVA_LIBS="-lkva"
3461     ])
3462   ])
3463 ])
3464 AC_SUBST(KVA_LIBS)
3465 AM_CONDITIONAL([HAVE_KVA], [test "${have_kva}" = "yes"])
3466
3467 dnl
3468 dnl MMAL plugin
3469 dnl
3470 AC_ARG_ENABLE(mmal,
3471   AS_HELP_STRING([--enable-mmal],
3472     [Multi-Media Abstraction Layer (MMAL) hardware plugin (default enable)]))
3473 if test "${enable_mmal}" != "no"; then
3474   VLC_SAVE_FLAGS
3475   LDFLAGS="${LDFLAGS} -L/opt/vc/lib -lvchostif"
3476   CPPFLAGS="${CPPFLAGS} -I/opt/vc/include -I/opt/vc/include/interface/vcos/pthreads -I/opt/vc/include/interface/vmcs_host/linux"
3477   AC_CHECK_HEADERS(interface/mmal/mmal.h,
3478     [ AC_CHECK_LIB(bcm_host, vc_tv_unregister_callback_full, [
3479         have_mmal="yes"
3480         VLC_ADD_PLUGIN([mmal])
3481         VLC_ADD_LDFLAGS([mmal],[ -L/opt/vc/lib ])
3482         VLC_ADD_CFLAGS([mmal],[ -I/opt/vc/include -I/opt/vc/include/interface/vcos/pthreads -I/opt/vc/include/interface/vmcs_host/linux ])
3483         VLC_ADD_LIBS([mmal],[ -lbcm_host -lmmal -lvchostif ]) ], [
3484           AS_IF([test "${enable_mmal}" = "yes"],
3485             [ AC_MSG_ERROR([Cannot find bcm library...]) ],
3486             [ AC_MSG_WARN([Cannot find bcm library...]) ])
3487           ],
3488         [])
3489     ] , [ AS_IF([test "${enable_mmal}" = "yes"],
3490       [ AC_MSG_ERROR([Cannot find development headers for mmal...]) ],
3491       [ AC_MSG_WARN([Cannot find development headers for mmal...]) ]) ])
3492   VLC_RESTORE_FLAGS
3493 fi
3494 AM_CONDITIONAL([HAVE_MMAL], [test "${have_mmal}" = "yes"])
3495
3496 dnl
3497 dnl evas plugin
3498 dnl
3499 AC_ARG_ENABLE(evas,
3500   [AS_HELP_STRING([--enable-evas],
3501     [use evas output module (default disabled)])])
3502 have_evas="no"
3503 AS_IF([test "${enable_evas}" = "yes"], [
3504   PKG_CHECK_MODULES(EVAS, [evas >= 1.15.99 ecore >= 1.15.99], [
3505       have_evas="yes"
3506       AC_DEFINE([HAVE_EVAS], [1], [Define to 1 if evas is enabled.])
3507     ],[
3508     AS_IF([test "x${enable_evas}" != "x"], [
3509       AC_MSG_ERROR([$EVAS_PKG_ERRORS. libevas and libecore 1.15.99 or later required.])
3510     ])
3511   ])
3512 ])
3513 AM_CONDITIONAL([HAVE_EVAS], [test "${have_evas}" = "yes"])
3514
3515 dnl
3516 dnl  Audio plugins
3517 dnl
3518
3519 EXTEND_HELP_STRING([Audio plugins:])
3520
3521 dnl
3522 dnl  Pulseaudio module
3523 dnl
3524 AC_ARG_ENABLE(pulse,
3525   [AS_HELP_STRING([--enable-pulse],
3526     [use the PulseAudio client library (default auto)])])
3527 have_pulse="no"
3528 AS_IF([test "${enable_pulse}" != "no"], [
3529   PKG_CHECK_MODULES([PULSE], [libpulse >= 1.0], [
3530     have_pulse="yes"
3531   ], [
3532     AS_IF([test "x${enable_pulse}" != "x"], [
3533       AC_MSG_ERROR([$PULSE_PKG_ERRORS. PulseAudio 1.0 or later required.])
3534     ])
3535   ])
3536 ])
3537 AM_CONDITIONAL([HAVE_PULSE], [test "${have_pulse}" = "yes"])
3538
3539 dnl
3540 dnl  ALSA module
3541 dnl
3542 AC_ARG_ENABLE(alsa,
3543   [AS_HELP_STRING([--enable-alsa],
3544     [support the Advanced Linux Sound Architecture (default auto)])],, [
3545   AS_IF([test "$SYS" = "linux" -a "${have_pulse}" = "no"], [
3546     enable_alsa="yes"
3547   ])
3548 ])
3549 have_alsa="no"
3550 AS_IF([test "${enable_alsa}" != "no"], [
3551   PKG_CHECK_MODULES([ALSA], [alsa >= 1.0.24], [
3552     have_alsa="yes"
3553   ], [
3554     AS_IF([test "x${enable_alsa}" != "x"], [
3555       AC_MSG_ERROR([$ALSA_PKG_ERRORS. alsa-lib 1.0.24 or later required.])
3556     ])
3557   ])
3558 ])
3559 AM_CONDITIONAL([HAVE_ALSA], [test "${have_alsa}" = "yes"])
3560
3561 dnl
3562 dnl  Open Sound System module
3563 dnl
3564 AC_ARG_ENABLE(oss,
3565   [AS_HELP_STRING([--enable-oss],
3566     [support the Open Sound System OSS (default enabled on FreeBSD/NetBSD/DragonFlyBSD)])],, [
3567   AS_IF([test "$SYS" = "mingw32" -o "$SYS" = "linux" -o "$SYS" = "openbsd"], [
3568     enable_oss="no"
3569   ])
3570 ])
3571 have_oss="no"
3572 OSS_LIBS=""
3573 AS_IF([test "$enable_oss" != "no"], [
3574   AC_CHECK_HEADERS([soundcard.h sys/soundcard.h], [
3575     have_oss="yes"
3576     AC_CHECK_LIB(ossaudio, main, [
3577       OSS_LIBS="-lossaudio"
3578     ])
3579   ])
3580 ])
3581 AC_SUBST(OSS_LIBS)
3582 AM_CONDITIONAL([HAVE_OSS], [test "${have_oss}" = "yes"])
3583
3584 dnl
3585 dnl  OpenBSD sndio module
3586 dnl
3587 AC_ARG_ENABLE([sndio],
3588   [AS_HELP_STRING([--disable-sndio],
3589     [support the OpenBSD sndio (default auto)])],, [
3590   AS_IF([test "$SYS" = "openbsd"], [
3591     enable_sndio="yes"
3592   ])
3593 ])
3594 have_sndio="no"
3595 AS_IF([test "$enable_sndio" != "no"], [
3596   AC_CHECK_HEADER([sndio.h], [
3597     have_sndio="yes"
3598   ])
3599 ])
3600 AM_CONDITIONAL([HAVE_SNDIO], [test "${have_sndio}" = "yes"])
3601
3602 dnl
3603 dnl  Windows Audio Session plugin
3604 dnl
3605 AC_ARG_ENABLE([wasapi],
3606   [AS_HELP_STRING([--enable-wasapi],
3607     [use the Windows Audio Session API (default auto)])
3608 ])
3609 have_wasapi="no"
3610 AS_IF([test "$enable_wasapi" != "no"], [
3611   AC_CHECK_HEADER([audioclient.h], [
3612     have_wasapi="yes"
3613   ], [
3614     AS_IF([test "x${enable_wasapi}" != "x"], [
3615       AC_MSG_ERROR([Windows Audio Session API not found.])
3616     ])
3617   ])
3618 ])
3619 AM_CONDITIONAL([HAVE_WASAPI], [test "${have_wasapi}" = "yes"])
3620
3621 dnl
3622 dnl  AudioQueue plugin
3623 dnl
3624 AC_ARG_ENABLE(audioqueue,
3625   [  --enable-audioqueue     AudioQueue audio module (default disabled)])
3626 if test "${enable_audioqueue}" = "yes"
3627 then
3628   VLC_ADD_PLUGIN([audioqueue])
3629 fi
3630
3631 dnl
3632 dnl  JACK modules
3633 dnl
3634 AC_ARG_ENABLE(jack,
3635   [AS_HELP_STRING([--disable-jack],
3636     [do not use jack (default auto)])])
3637 have_jack="no"
3638 AS_IF([test "${enable_jack}" != "no"], [
3639     PKG_CHECK_MODULES(JACK, jack >= 1.9.7,
3640       [ have_jack=yes ],
3641       [
3642       AC_MSG_WARN([${JACK_PKG_ERRORS}, trying jack1 instead])
3643
3644       PKG_CHECK_MODULES(JACK, jack >= 0.120.1 jack < 1.0,
3645       [ have_jack=yes ],
3646       [
3647       AS_IF([test -n "${enable_jack}"],
3648          [AC_MSG_ERROR([${JACK_PKG_ERRORS}.])],
3649          [AC_MSG_WARN([${JACK_PKG_ERRORS}.])])
3650       ])
3651     ])
3652 ])
3653 AM_CONDITIONAL([HAVE_JACK], [test "${have_jack}" != "no"])
3654
3655 dnl
3656 dnl  OpenSLES Android
3657 dnl
3658 AC_ARG_ENABLE(opensles,
3659   [  --enable-opensles       Android OpenSL ES audio module (default disabled)])
3660 if test "${HAVE_ANDROID}" = "1"; then
3661   if test "${enable_opensles}" = "yes"; then
3662       AC_CHECK_HEADERS(SLES/OpenSLES.h,
3663         [ VLC_ADD_PLUGIN([opensles_android]) ],
3664         [ AC_MSG_ERROR([cannot find OpenSLES headers])] )
3665   fi
3666 fi
3667
3668 dnl
3669 dnl  Tizen audio
3670 dnl
3671 AC_ARG_ENABLE(tizen_audio,
3672   [AS_HELP_STRING([--enable-tizen-audio],
3673     [Tizen audio module (default enabled on Tizen)])],, [
3674   AS_IF([test "$HAVE_TIZEN" = "1"], [
3675     enable_tizen_audio="yes"
3676   ])
3677 ])
3678 if test "${enable_tizen_audio}" = "yes"; then
3679   AC_CHECK_HEADERS(audio_io.h,
3680     [ VLC_ADD_PLUGIN([tizen_audio]) ],
3681     [ AC_MSG_ERROR([cannot find Tizen audio_io headers])] )
3682 fi
3683
3684 dnl
3685 dnl libsamplerate plugin
3686 dnl
3687 PKG_ENABLE_MODULES_VLC([SAMPLERATE], [], [samplerate], [Resampler with libsamplerate], [auto])
3688
3689 dnl
3690 dnl  soxr module
3691 dnl
3692 PKG_ENABLE_MODULES_VLC([SOXR], [], [soxr >= 0.1.2], [SoX Resampler library], [auto])
3693
3694 dnl
3695 dnl  OS/2 KAI plugin
3696 dnl
3697 AC_ARG_ENABLE(kai,
3698   [AS_HELP_STRING([--enable-kai],
3699     [support the K Audio Interface KAI (default enabled on OS/2)])],, [
3700   AS_IF([test "$SYS" = "os2"], [
3701     enable_kai="yes"
3702   ])
3703 ])
3704 have_kai="no"
3705 KAI_LIBS=""
3706 AS_IF([test "$enable_kai" != "no"], [
3707   AC_CHECK_HEADERS([kai.h], [
3708     have_kai="yes"
3709     AC_CHECK_LIB(kai, main, [
3710       KAI_LIBS="-lkai"
3711     ])
3712   ])
3713 ])
3714 AC_SUBST(KAI_LIBS)
3715 AM_CONDITIONAL([HAVE_KAI], [test "${have_kai}" = "yes"])
3716
3717 dnl
3718 dnl  chromaprint audio track fingerprinter
3719 dnl
3720 m4_pushdef([libchromaprint_version], 0.6.0)
3721 PKG_WITH_MODULES([CHROMAPRINT],[libchromaprint >= libchromaprint_version],
3722     VLC_ADD_PLUGIN([stream_out_chromaprint]),
3723     AS_IF([test "${enable_chromaprint}" = "yes"],
3724         [AC_MSG_ERROR(Library [libchromaprint >= libchromaprint_version] needed for [chromaprint] was not found)],
3725         [AC_MSG_WARN(Library [libchromaprint >= libchromaprint_version] needed for [chromaprint] was not found)]
3726          ),
3727     [(Chromaprint based audio fingerprinter)],[auto])
3728 m4_popdef([libchromaprint_version])
3729
3730 dnl
3731 dnl  Chromecast streaming support
3732 dnl
3733 m4_pushdef([protobuf_lite_version], 2.5.0)
3734 AC_ARG_VAR(PROTOC, [protobuf compiler])
3735 AC_CHECK_PROGS(PROTOC, protoc, no)
3736 PKG_WITH_MODULES([CHROMECAST],[protobuf-lite >= protobuf_lite_version], [
3737     AS_IF([test "x${PROTOC}" != "xno"], [
3738         build_chromecast="yes"
3739     ], [
3740     AC_MSG_ERROR(protoc compiler needed for [chromecast] was not found)
3741     ])
3742 ], [
3743     AS_IF([test "${enable_chromecast}" = "yes"],
3744         AC_MSG_ERROR(Library [protobuf-lite >= protobuf_lite_version] needed for [chromecast] was not found),
3745         AC_MSG_WARN(Library [protobuf-lite >= protobuf_lite_version] needed for [chromecast] was not found)
3746     )
3747     enable_chromecast="no"
3748 ], [(Chromecast streaming support)], [auto])
3749 AM_CONDITIONAL([BUILD_CHROMECAST], [test "${build_chromecast}" = "yes"])
3750 m4_popdef([protobuf_lite_version])
3751
3752 dnl
3753 dnl  Interface plugins
3754 dnl
3755
3756 EXTEND_HELP_STRING([Interface plugins:])
3757
3758 dnl
3759 dnl QT
3760 dnl
3761 AC_ARG_ENABLE(qt, [
3762   AS_HELP_STRING([--disable-qt], [Qt UI support (default enabled)])],, [
3763   AS_IF([test "${SYS}" = "darwin"], [
3764     enable_qt="no"
3765   ])
3766 ])
3767 AS_IF([test "${enable_qt}" != "no"], [
3768   PKG_CHECK_MODULES([QT], [Qt5Core >= 5.1.0 Qt5Widgets Qt5Gui], [
3769       PKG_CHECK_MODULES([QTX11], [Qt5X11Extras], [
3770           VLC_ADD_LIBS([qt4],[${QTX11_LIBS}])
3771           VLC_ADD_CXXFLAGS([qt4],[${QTX11_CFLAGS} -DQT5_HAS_X11])
3772           PKG_CHECK_MODULES([XI], [xi], [
3773             VLC_ADD_LIBS([qt4], [${XI_LIBS}])
3774             VLC_ADD_CXXFLAGS([qt4], [${XI_CFLAGS} -DHAVE_XI])
3775           ], [
3776             PKG_CHECK_EXISTS([Qt5Gui >= 5.5], [
3777               AC_MSG_ERROR([${XI_PKG_ERRORS}.])
3778             ], [
3779               AC_MSG_WARN([${XI_PKG_ERRORS}.])
3780             ])
3781           ])
3782       ],[
3783           AC_MSG_WARN([Not building Qt Interface with X11 helpers.])
3784       ])
3785       QT_PATH="$(eval $PKG_CONFIG --variable=exec_prefix Qt5Core)"
3786       QT_HOST_PATH="$(eval $PKG_CONFIG --variable=host_bins Qt5Core)"
3787       AC_PATH_PROGS(MOC, [moc-qt5 moc], moc, ["${QT_HOST_PATH}" "${QT_PATH}/bin" "${CONTRIB_DIR}/bin"])
3788       AC_PATH_PROGS(RCC, [rcc-qt5 rcc], rcc, ["${QT_HOST_PATH}" "${QT_PATH}/bin" "${CONTRIB_DIR}/bin"])
3789       AC_PATH_PROGS(UIC, [uic-qt5 uic], uic, ["${QT_HOST_PATH}" "${QT_PATH}/bin" "${CONTRIB_DIR}/bin"])
3790     ], [
3791       PKG_CHECK_MODULES([QT], [QtCore QtGui >= 4.6.0],, [
3792         AS_IF([test -n "${enable_qt}"],[
3793           AC_MSG_ERROR([${QT_PKG_ERRORS}.])
3794         ],[
3795           AC_MSG_WARN([${QT_PKG_ERRORS}.])
3796         ])
3797         enable_qt="no"
3798       ])
3799       QT_PATH="$(eval $PKG_CONFIG --variable=exec_prefix QtCore)"
3800       AC_PATH_PROGS(MOC, [moc-qt4 moc], moc, ["${QT_PATH}/bin" "${CONTRIB_DIR}/bin"])
3801       AC_PATH_PROG(RCC, rcc, rcc, [${QT_PATH}/bin ${CONTRIB_DIR}/bin])
3802       AC_PATH_PROGS(UIC, [uic-qt4 uic], uic, ["${QT_PATH}/bin" "${CONTRIB_DIR}/bin"])
3803     ])
3804 ])
3805 AS_IF([test "${enable_qt}" != "no"], [
3806   VLC_ADD_PLUGIN([qt4])
3807   ALIASES="${ALIASES} qvlc"
3808 ])
3809 AM_CONDITIONAL(ENABLE_QT4, [test "$enable_qt" != "no"])
3810
3811 dnl
3812 dnl detect kde4-config patch (used for kde solids and kwallet).
3813 dnl
3814 AC_ARG_VAR([KDE4_CONFIG], [kde4-config utility])
3815 AS_IF([test "x$KDE4_CONFIG" = "x"], [
3816   KDE4_CONFIG="kde4-config"
3817 ])
3818
3819 dnl
3820 dnl Simple test for skins2 dependency
3821 dnl
3822 AS_IF([test "$enable_qt" = "no"], [
3823   AS_IF([test "${enable_skins2}" = "yes"], [
3824     AC_MSG_ERROR([The skins2 module depends on the Qt4 interface. Without it you will not be able to open any dialog box from the interface, which makes the skins2 interface rather useless. Install the Qt4 development package or alternatively you can also configure with: --disable-qt4 --disable-skins2.])
3825   ], [
3826     enable_skins2="no"
3827     AC_MSG_WARN([The skins2 module depends on the Qt4 interface, Qt4 is not built so skins2 is disabled.])
3828   ])
3829 ])
3830
3831 dnl
3832 dnl Skins2 module
3833 dnl
3834 AC_ARG_ENABLE(skins2,
3835   [AS_HELP_STRING([--enable-skins2], [skins interface module (default auto)])])
3836 AS_IF([test "${enable_skins2}" != "no"], [
3837   have_skins_deps="yes"
3838
3839   dnl Win32
3840   AS_IF([test "${SYS}" = "mingw32"], [
3841     VLC_ADD_CPPFLAGS([skins2],[-U_OFF_T_ -U_off_t -DWIN32_SKINS])
3842     VLC_ADD_LIBS([skins2],[-lgdi32 -lole32 -luuid -lmsimg32])
3843   dnl MacOS
3844   ], [test "${SYS}" = "darwin"], [
3845     VLC_ADD_CPPFLAGS([skins2],[ -DMACOSX_SKINS])
3846     VLC_ADD_LIBS([skins2],[-Wl,-framework,Carbon])
3847   dnl OS/2
3848   ], [test "${SYS}" = "os2"], [
3849     VLC_ADD_CPPFLAGS([skins2],[ -DOS2_SKINS])
3850   dnl Linux/Unix
3851   ], [
3852     PKG_CHECK_MODULES([XPM], [xpm],, [have_skins_deps="no"])
3853     PKG_CHECK_MODULES([XINERAMA], [xinerama],, [have_skins_deps="no"])
3854     PKG_CHECK_MODULES([XEXT], [xext],, [have_skins_deps="no"])
3855     VLC_ADD_CPPFLAGS([skins2],[${X_CFLAGS} ${XEXT_CFLAGS} ${XPM_CFLAGS} -DX11_SKINS])
3856     VLC_ADD_LIBS([skins2],[${X_LIBS} ${X_PRE_LIBS} ${XEXT_LIBS} ${XPM_LIBS} ${XINERAMA_LIBS} -lX11])
3857   ])
3858
3859   dnl for All OSes
3860   VLC_ADD_CXXFLAGS([skins2],[-O2 -fno-rtti])
3861
3862   dnl we need freetype
3863   AS_IF([test "${have_freetype}" != "yes"], [
3864     have_skins_deps="no"
3865   ])
3866
3867   AS_IF([test "${have_skins_deps}" = "no"], [
3868     AS_IF([test "x${enable_skins2}" = "x"], [
3869       AC_MSG_WARN([Skins2 interface disabled due to missing dependencies.])
3870     ], [
3871       AC_MSG_ERROR([Skins2 interface requires FreeType, libxpm, libxext and libxinerama])
3872     ])
3873     enable_skins2="no"
3874   ], [
3875     VLC_ADD_PLUGIN([skins2])
3876     ALIASES="${ALIASES} svlc"
3877     enable_skins2="yes"
3878   ])
3879 ])
3880 AM_CONDITIONAL(BUILD_SKINS, [test "${enable_skins2}" = "yes"])
3881
3882 AC_ARG_ENABLE(libtar,
3883   [  --enable-libtar         libtar support for skins2 (default auto)])
3884 AS_IF([test "${enable_skins2}" = "yes" && test "${enable_libtar}" != "no"], [
3885   AC_CHECK_HEADERS(libtar.h, [
3886     VLC_ADD_LIBS([skins2],[-ltar])
3887   ])
3888 ])
3889
3890 dnl
3891 dnl  MacOS X gui module
3892 dnl
3893 AC_ARG_ENABLE(macosx,
3894   [  --enable-macosx         Mac OS X gui support (default enabled on Mac OS X)])
3895 if test "x${enable_macosx}" != "xno" -a "${SYS}" = "darwin"
3896 then
3897   VLC_ADD_PLUGIN([macosx])
3898
3899   if test ! -d ${CONTRIB_DIR}/BGHUDAppKit.framework
3900   then
3901     AC_MSG_ERROR([BGHUDAppKit framework is required and was not found in ${CONTRIB_DIR}])
3902   fi
3903 fi
3904 AM_CONDITIONAL(ENABLE_MACOSX_UI, [test "$enable_macosx" != "no"])
3905
3906 dnl
3907 dnl  MacOS X sparkle update support
3908 dnl
3909 AC_ARG_ENABLE(sparkle,
3910   [  --enable-sparkle        Sparkle update support for OS X (default enabled on Mac OS X)])
3911 if test "x${enable_sparkle}" != "xno" -a "${HAVE_OSX}" = "1"
3912 then
3913   if test ! -d ${CONTRIB_DIR}/Sparkle.framework
3914   then
3915     AC_MSG_ERROR([Sparkle framework is required and was not found in ${CONTRIB_DIR}])
3916   fi
3917
3918   AC_DEFINE([HAVE_SPARKLE], [1], [Define to 1 if sparkle is enabled.])
3919 fi
3920 AM_CONDITIONAL(HAVE_SPARKLE, [test "$enable_sparkle" != "no"])
3921
3922
3923 dnl
3924 dnl  Minimal Mac OS X module
3925 dnl
3926 AC_ARG_ENABLE(minimal-macosx,
3927   [  --enable-minimal-macosx Minimal Mac OS X support (default disabled)])
3928 if test "${enable_minimal_macosx}" = "yes" -a "${SYS}" = "darwin"
3929 then
3930   VLC_ADD_PLUGIN([minimal_macosx])
3931 fi
3932
3933 dnl
3934 dnl  VideoToolbox plugins
3935 AC_CHECK_HEADERS(VideoToolbox/VideoToolbox.h, [
3936     VLC_ADD_PLUGIN([videotoolbox])
3937     VLC_ADD_PLUGIN([cvpx_i420])
3938   ])
3939
3940 dnl
3941 dnl  ncurses module
3942 dnl
3943 AC_ARG_ENABLE(ncurses,
3944 [AS_HELP_STRING([--disable-ncurses],[ncurses text-based interface (default auto)])])
3945 have_ncurses="no"
3946 AS_IF([test "${enable_ncurses}" != "no"] ,[
3947   PKG_CHECK_MODULES([NCURSES], [ncursesw], [
3948     have_ncurses="yes"
3949     ALIASES="${ALIASES} nvlc"
3950   ], [
3951     AS_IF([test -n "${enable_ncurses}"], [
3952       AC_MSG_ERROR([${NCURSES_PKG_ERRORS}.])
3953     ])
3954   ])
3955 ])
3956 AM_CONDITIONAL([HAVE_NCURSES], [test "${have_ncurses}" = "yes"])
3957
3958 dnl
3959 dnl  Lirc plugin
3960 dnl
3961 AC_ARG_ENABLE(lirc,
3962   [  --enable-lirc           lirc support (default disabled)])
3963 have_lirc="no"
3964 AS_IF([test "${enable_lirc}" = "yes"], [
3965   AC_CHECK_HEADER(lirc/lirc_client.h, [
3966     AC_CHECK_LIB(lirc_client, lirc_init, [
3967       have_lirc="true"
3968     ])
3969   ])
3970 ])
3971 AM_CONDITIONAL([HAVE_LIRC], [test "${have_lirc}" = "yes"])
3972
3973 EXTEND_HELP_STRING([Visualisations and Video filter plugins:])
3974 dnl
3975 dnl  goom visualization plugin
3976 dnl
3977 PKG_ENABLE_MODULES_VLC([GOOM], [], [libgoom2], [goom visualization plugin], [auto])
3978
3979 dnl
3980 dnl libprojectM visualization plugin
3981 dnl
3982 AC_ARG_ENABLE(projectm,
3983   [  --enable-projectm       projectM visualization plugin (default enabled)])
3984 AS_IF([test "${enable_projectm}" != "no"],
3985   [
3986     PKG_CHECK_MODULES(PROJECTM, libprojectM,
3987     [
3988       VLC_ADD_PLUGIN([projectm])
3989       PKG_CHECK_EXISTS([libprojectM >= 2.0.0],
3990         [ AC_DEFINE([HAVE_PROJECTM2], 1, [Define to 1 if using libprojectM 2.x]) ],
3991         [ AC_MSG_WARN( [Using libprojectM version 1] )
3992       ])
3993     ],[
3994       AC_MSG_WARN([${PROJECTM_PKG_ERRORS}.])
3995     ])
3996   ])
3997
3998 dnl
3999 dnl Vovoid VSXu visualization plugin
4000 dnl
4001 AC_ARG_ENABLE(vsxu,
4002   [  --enable-vsxu           Vovoid VSXu visualization plugin (default auto)])
4003 AS_IF([test "${enable_vsxu}" != "no"],
4004   [
4005     PKG_CHECK_MODULES(VSXU, libvsxu,
4006     [
4007       VLC_ADD_PLUGIN([vsxu])
4008     ],[
4009       AC_MSG_WARN([${VSXU_PKG_ERRORS}.])
4010     ])
4011   ])
4012
4013 EXTEND_HELP_STRING([Service Discovery plugins:])
4014 dnl
4015 dnl  Avahi-Zeroconf services discovery
4016 PKG_ENABLE_MODULES_VLC([AVAHI], [], [avahi-client >= 0.6], [Zeroconf services discovery], [auto])
4017
4018 dnl
4019 dnl  libudev services discovery
4020 PKG_ENABLE_MODULES_VLC([UDEV], [], [libudev >= 142], [Linux udev services discovery], [auto])
4021
4022 dnl
4023 dnl MTP devices services discovery
4024 PKG_ENABLE_MODULES_VLC([MTP], [mtp access_mtp], [libmtp >= 1.0.0], [MTP devices support], [auto])
4025
4026 dnl
4027 dnl UPnP Plugin (Intel SDK)
4028 dnl
4029 PKG_ENABLE_MODULES_VLC([UPNP], [upnp], [libupnp], [Intel UPNP SDK],[auto])
4030
4031 dnl
4032 dnl mDNS using libmicrodns
4033 dnl
4034 PKG_ENABLE_MODULES_VLC([MICRODNS], [], [microdns], [mDNS services discovery], [auto])
4035
4036
4037 EXTEND_HELP_STRING([Misc options:])
4038
4039 dnl
4040 dnl  libxml2 module
4041 dnl
4042 PKG_ENABLE_MODULES_VLC([LIBXML2], [xml], [libxml-2.0 >= 2.5], [libxml2 support],[auto])
4043
4044
4045 dnl
4046 dnl libgcrypt
4047 dnl
4048 AC_ARG_ENABLE(libgcrypt,
4049   [  --disable-libgcrypt     gcrypt support (default enabled)])
4050 # require libgcrypt >= 1.6.0
4051 AS_IF([test "${enable_libgcrypt}" != "no"], [
4052   AC_TRY_COMPILE([
4053 #include <gcrypt.h>
4054 #if GCRYPT_VERSION_NUMBER < 0x010600
4055 #error
4056 #endif],
4057   [], [
4058     have_libgcrypt="yes"
4059     AC_DEFINE([HAVE_GCRYPT], 1, [Defined if having gcrypt])
4060     GCRYPT_CFLAGS="`libgcrypt-config --cflags`"
4061     GCRYPT_LIBS="`libgcrypt-config --libs`"
4062   ], [
4063     AS_IF([test "${enable_libgcrypt}" == "yes"], [
4064       AC_MSG_ERROR([libgcrypt version 1.6.0 or higher not found. Install libgcrypt or pass --disable-libgcrypt.])
4065     ])
4066   ])
4067 ])
4068
4069 AC_SUBST(GCRYPT_CFLAGS)
4070 AC_SUBST(GCRYPT_LIBS)
4071 AM_CONDITIONAL([HAVE_GCRYPT], [test "${have_libgcrypt}" = "yes"])
4072
4073 dnl
4074 dnl TLS/SSL
4075 dnl
4076 AC_ARG_ENABLE(gnutls,
4077   [  --enable-gnutls         GNU TLS TLS/SSL support (default enabled)])
4078 AS_IF([test "${enable_gnutls}" != "no"], [
4079   PKG_CHECK_MODULES(GNUTLS, [gnutls >= 3.2.0], [
4080     VLC_ADD_PLUGIN([gnutls])
4081   ], [
4082     AS_IF([test -n "${enable_gnutls}"], [
4083       AC_MSG_ERROR([${GNUTLS_PKG_ERRORS}.)])
4084     ])
4085   ])
4086 ])
4087
4088
4089 dnl
4090 dnl Taglib plugin
4091 dnl
4092 AC_ARG_ENABLE(taglib,
4093   [AS_HELP_STRING([--disable-taglib],
4094     [do not use TagLib (default enabled)])])
4095 AS_IF([test "${enable_taglib}" != "no"], [
4096   PKG_CHECK_MODULES(TAGLIB, taglib >= 1.9, [
4097     VLC_ADD_PLUGIN([taglib])
4098   ], [
4099     AC_MSG_WARN([${TAGLIB_PKG_ERRORS}.])])
4100 ])
4101
4102 dnl
4103 dnl  libsecret
4104 dnl
4105 PKG_ENABLE_MODULES_VLC([SECRET], [], [libsecret-1], [use libsecret for keystore], [auto])
4106
4107 dnl
4108 dnl  kwallet
4109 dnl
4110 AC_ARG_ENABLE(kwallet,
4111   [AS_HELP_STRING([--enable-kwallet],
4112     [use KWallet for keystore (default auto)])])
4113 have_kwallet="no"
4114 KWALLET_CXXFLAGS=""
4115 KWALLET_LIBS=""
4116 AS_IF([test "${SYS}" != "mingw32" -a "${SYS}" != "darwin" \
4117          -a "${enable_qt}" != "no" -a "${KDE4_CONFIG}" != "no" \
4118          -a "${enable_kwallet}" != "no" ], [
4119   VLC_SAVE_FLAGS
4120   AC_LANG_PUSH([C++])
4121   KWALLET_CXXFLAGS="$QT_CFLAGS $CXXFLAGS_qt4 -I`$KDE4_CONFIG --path include`"
4122   CPPFLAGS="$CPPFLAGS $KWALLET_CXXFLAGS"
4123   AC_CHECK_HEADER([kwallet.h], [
4124     KWALLET_LIBS="$QT_LIBS -L`$KDE4_CONFIG --install lib` -lkdeui"
4125     LDFLAGS="$LDFLAGS $KWALLET_LIBS"
4126     AC_LINK_IFELSE([AC_LANG_PROGRAM([#include <kwallet.h>], [
4127 KWallet::Wallet::LocalWallet();
4128     ])], [
4129       have_kwallet="yes"
4130     ])
4131   ])
4132   AC_LANG_POP([C++])
4133   VLC_RESTORE_FLAGS
4134 ])
4135 AS_IF([test "$enable_kwallet" = "yes" -a "$have_kwallet" = "no" ], [
4136   AC_MSG_ERROR([KWallet headers or so not found])
4137 ])
4138 AC_SUBST(KWALLET_CXXFLAGS)
4139 AC_SUBST(KWALLET_LIBS)
4140 AM_CONDITIONAL([HAVE_KWALLET], [test "${have_kwallet}" = "yes"])
4141
4142 dnl
4143 dnl  Developers helper modules (should be hidden from configure help)
4144 dnl
4145 AC_ARG_ENABLE(devtools, [], [], [enable_devtools="no"])
4146 AS_IF([test "${enable_devtools}" != "no"], [
4147   VLC_ADD_PLUGIN([accesstweaks])
4148 ])
4149
4150 dnl
4151 dnl update checking system
4152 dnl
4153 AC_ARG_ENABLE(update-check,
4154   [  --enable-update-check   update checking system (default disabled)])
4155 if test "${enable_update_check}" = "yes"
4156 then
4157   if test "${have_libgcrypt}" != "yes"
4158   then
4159     AC_MSG_ERROR([libgcrypt is required for update checking system])
4160   fi
4161   VLC_ADD_LIBS([libvlccore], [${GCRYPT_LIBS}])
4162   VLC_ADD_CFLAGS([libvlccore], [${GCRYPT_CFLAGS}])
4163   AC_DEFINE([UPDATE_CHECK], 1, [Define if you want to use the VLC update mechanism])
4164 fi
4165
4166 dnl
4167 dnl OS X notification plugin
4168 dnl
4169 AC_ARG_ENABLE(osx_notifications,
4170   [  --enable-osx-notifications          osx notification plugin (default disabled)],,
4171   [enable_osx_notifications=no])
4172 AS_IF([test "${enable_osx_notifications}" != "no"], [
4173     AC_CHECK_HEADERS(${CONTRIB_DIR}/Growl.framework/Versions/A/Headers/Growl.h, [
4174       VLC_ADD_PLUGIN([osx_notifications])
4175       VLC_ADD_LIBS([osx_notificat