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