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