Win32: fix previous build commit
[vlc.git] / 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         VLC_ADD_LIBS([win32text],[-lgdi32])
263         AC_CHECK_PROGS(U2D, [unix2dos todos], unix2dos)
264         ac_default_prefix="`pwd`/_win32"
265         DESTDIR="`pwd`/_win32/"
266
267         dnl
268         dnl NSIS/MSI Installer prefix and WIN64
269         dnl
270         case "${host}" in
271             amd64*|x86_64*)
272                 HAVE_WIN64="1"
273                 WINDOWS_ARCH="x64"
274                 PROGRAMFILES="PROGRAMFILES64"
275                 YASMFLAGS="-f win64"
276             ;;
277             *)
278                 WINDOWS_ARCH="x86"
279                 PROGRAMFILES="PROGRAMFILES"
280                 YASMFLAGS="-f win32"
281             ;;
282         esac
283         AC_SUBST(WINDOWS_ARCH)
284         AC_SUBST(PROGRAMFILES)
285
286     fi
287     ;;
288   *nto*)
289     SYS=nto
290     ;;
291   solaris*)
292     SYS=solaris
293     ;;
294   hpux*)
295     SYS=hpux
296     ;;
297   symbian*)
298     SYS=symbian
299     ;;
300   *os2*)
301     SYS=os2
302     LDFLAGS="${LDFLAGS} -Zomf -Zbin-files -Zargs-wild -Zhigh-mem"
303     ;;
304   *)
305     SYS="${host_os}"
306     ;;
307 esac
308 AM_CONDITIONAL(HAVE_DARWIN,  test "${SYS}" = "darwin")
309 AM_CONDITIONAL(HAVE_LINUX,   test "${SYS}" = "linux")
310 AM_CONDITIONAL(HAVE_OS2,     test "${SYS}" = "os2")
311 AM_CONDITIONAL(HAVE_WIN32,   test "${SYS}" = "mingw32")
312 AM_CONDITIONAL(HAVE_WIN64,   test "${HAVE_WIN64}" = "1")
313 AM_CONDITIONAL(HAVE_SYMBIAN, test "${SYS}" = "symbian")
314 AM_CONDITIONAL(HAVE_IOS,   test "${HAVE_IOS}" = "1")
315 AM_CONDITIONAL(HAVE_OSX,   test "${HAVE_OSX}" = "1")
316
317 AC_SUBST(YASMFLAGS)
318
319 dnl
320 dnl Sadly autoconf does not think about testing foo.exe when ask to test
321 dnl for program foo on win32
322 case "${build_os}" in
323     cygwin|msys)
324         ac_executable_extensions=".exe"
325     ;;
326     *)
327     ;;
328 esac
329
330 dnl Android is linux, but a bit different
331 AS_IF([test "$SYS" = linux],[
332     AC_MSG_CHECKING([for an Android system])
333     AC_PREPROC_IFELSE([AC_LANG_PROGRAM(
334         [[#ifndef __ANDROID__
335          # error Not Android
336          #endif
337         ]],[[;]])
338     ],[
339       HAVE_ANDROID="1"
340       AC_MSG_RESULT([yes])
341     ],[
342       AC_MSG_RESULT([no])
343     ])
344 ])
345 AM_CONDITIONAL(HAVE_ANDROID, test "${HAVE_ANDROID}" = "1")
346
347
348 dnl
349 dnl  Check for the contrib directory
350 dnl
351 AC_ARG_WITH(contrib,
352   [AS_HELP_STRING([--with-contrib[=DIR]],
353     [search for 3rd party libraries in DIR/include and DIR/lib])
354 ])
355 AC_MSG_CHECKING([for 3rd party libraries path])
356 AS_IF([test -z "${with_contrib}" || test "${with_contrib}" = "yes"], [
357   CONTRIB_DIR="${srcdir}/contrib/${host}"
358   AS_IF([test ! -d "${CONTRIB_DIR}"], [
359     echo "${CONTRIB_DIR} not found" >&AS_MESSAGE_LOG_FD
360     CONTRIB_DIR="${srcdir}/contrib/`$CC -dumpmachine`"
361     AS_IF([test ! -d "${CONTRIB_DIR}"], [
362       echo "${CONTRIB_DIR} not found" >&AS_MESSAGE_LOG_FD
363       CONTRIB_DIR="${srcdir}/extras/contrib/hosts/${host}"
364       AS_IF([test ! -d "${CONTRIB_DIR}"], [
365         echo "${CONTRIB_DIR} not found" >&AS_MESSAGE_LOG_FD
366         CONTRIB_DIR="${srcdir}/extras/contrib/hosts/`$CC -dumpmachine`"
367         AS_IF([test ! -d "${CONTRIB_DIR}"], [
368           echo "${CONTRIB_DIR} not found" >&AS_MESSAGE_LOG_FD
369           CONTRIB_DIR=""
370           AC_MSG_RESULT([not found])
371         ])
372       ])
373     ])
374   ])
375 ], [
376   AS_IF([test "${with_contrib}" != "no"], [
377     CONTRIB_DIR="${with_contrib}"
378   ], [
379     CONTRIB_DIR=""
380     AC_MSG_RESULT([disabled])
381   ])
382 ])
383 AS_IF([test -n "${CONTRIB_DIR}"], [
384   AS_IF([test -d "${CONTRIB_DIR}/lib"],[
385     CONTRIB_DIR=`cd "${CONTRIB_DIR}" && pwd`
386   ], [
387     echo "${CONTRIB_DIR}/lib not found" >&AS_MESSAGE_LOG_FD
388     CONTRIB_DIR=""
389     AC_MSG_RESULT([not usable])
390   ])
391
392 ])
393 AS_IF([test -n "${CONTRIB_DIR}"], [
394   AC_MSG_RESULT([${CONTRIB_DIR}])
395   export PATH=${CONTRIB_DIR}/bin:$PATH
396   CPPFLAGS="${CPPFLAGS} -I${CONTRIB_DIR}/include"
397   CFLAGS="${CFLAGS} -I${CONTRIB_DIR}/include"
398   CXXFLAGS="${CXXFLAGS} -I${CONTRIB_DIR}/include"
399   OBJCFLAGS="${OBJCFLAGS} -I${CONTRIB_DIR}/include"
400   export PKG_CONFIG_PATH="${CONTRIB_DIR}/lib/pkgconfig:$PKG_CONFIG_PATH"
401   LDFLAGS="${LDFLAGS} -L${CONTRIB_DIR}/lib"
402
403   AS_IF([test "${SYS}" = "darwin"], [
404     export LD_LIBRARY_PATH="${CONTRIB_DIR}/lib:$LD_LIBRARY_PATH"
405     export DYLD_LIBRARY_PATH="${CONTRIB_DIR}/lib:$DYLD_LIBRARY_PATH"
406   ])
407 ], [
408   AS_IF([test -n "${with_contrib}" && test "${with_contrib}" != "no"], [
409     AC_MSG_ERROR([Third party libraries not found!])
410   ])
411 ])
412 AC_SUBST(CONTRIB_DIR)
413
414 dnl Add extras/tools to the PATH
415 TOOLS_DIR="${srcdir}/extras/tools/build/bin"
416 AS_IF([test -d "${TOOLS_DIR}"], [
417     TOOLS_DIR=`cd "${TOOLS_DIR}" && pwd`
418     export PATH="${TOOLS_DIR}":$PATH
419 ])
420
421 dnl
422 dnl  Libtool
423 dnl  It's very bad, but our former custom system was worst
424 dnl  -- Courmisch
425 dnl
426
427 dnl override platform specific check for dependent libraries
428 dnl otherwise libtool linking of shared libraries will
429 dnl fail on anything other than pass_all.
430 AC_CACHE_VAL(lt_cv_deplibs_check_method,
431     [lt_cv_deplibs_check_method=pass_all])
432
433 LT_INIT([dlopen win32-dll shared disable-static])
434 LT_LANG([C++])
435 LT_LANG([Windows Resource])
436
437 DOLT
438
439 lt_cv_deplibs_check_method=pass_all
440
441 AS_IF([test "${enable_shared}" = "no" -a "${enable_vlc}" != "no"], [
442   AC_MSG_ERROR([VLC is based on plugins. Shared libraries cannot be disabled.])
443 ])
444
445 dnl
446 dnl Gettext stuff
447 dnl
448 AM_GNU_GETTEXT_VERSION([0.19.2])
449 AM_GNU_GETTEXT([external], [need-ngettext])
450
451 dnl
452 dnl Iconv stuff
453 dnl
454 AM_ICONV
455
456 dnl
457 dnl checks for mingw
458 AS_IF([test "${SYS}" = "mingw32"], [
459 dnl Check for broken versions of mingw-runtime compatability library
460     AC_MSG_CHECKING(for broken mingw-runtime)
461     AC_PREPROC_IFELSE([AC_LANG_SOURCE([
462 #include <_mingw.h>
463 #if defined(__MINGW64_VERSION_MAJOR)
464 # if __MINGW64_VERSION_MAJOR < 3
465 #  error Attempting to use mingw-runtime with broken vsnprintf and direct2d support
466 # endif
467 #elif __MINGW32_MAJOR_VERSION == 3 && __MINGW32_MINOR_VERSION < 15
468 # error Attempting to use mingw-runtime with broken vsnprintf support
469 #endif
470     ])], [
471         AC_MSG_RESULT([ok])
472     ], [
473         AC_MSG_RESULT([present])
474         AC_MSG_ERROR([LibVLC requires mingw-runtime version 3.15 or higher, or mingw-w64 version 3.0 or higher!])
475     ])
476     dnl force use of mingw provided c99 *printf over msvcrt
477     CPPFLAGS="${CPPFLAGS} -D__USE_MINGW_ANSI_STDIO=1"
478
479 dnl Check for the need to include the mingwex lib for mingw32
480     VLC_SAVE_FLAGS
481     AC_CHECK_LIB(mingwex,opendir,
482         AC_CHECK_LIB(mingw32,opendir,,
483             [VLC_ADD_LIBS([libvlccore],[-lmingwex])])
484     )
485     VLC_RESTORE_FLAGS
486
487 dnl Check for fnative-struct or mms-bitfields support for mingw32
488     VLC_SAVE_FLAGS
489     CFLAGS="${CFLAGS} -mms-bitfields"
490     CXXFLAGS="${CXXFLAGS} -mms-bitfields"
491     AC_CACHE_CHECK([if \$CC accepts -mms-bitfields],
492         [ac_cv_c_mms_bitfields],
493         [AC_TRY_COMPILE([],,ac_cv_c_mms_bitfields=yes, ac_cv_c_mms_bitfields=no)])
494     if test "${ac_cv_c_mms_bitfields}" = "no"; then
495         VLC_RESTORE_FLAGS
496         CFLAGS="${CFLAGS} -fnative-struct"
497         CXXFLAGS="${CXXFLAGS} -fnative-struct"
498         AC_CACHE_CHECK([if \$CC accepts -fnative-struct],
499             [ac_cv_c_fnative_struct],
500             [AC_TRY_COMPILE([],,ac_cv_c_fnative_struct=yes, ac_cv_c_fnative_struct=no)])
501         "${ac_cv_c_fnative_struct}" = "no" && VLC_RESTORE_FLAGS
502     fi
503 ])
504
505 AC_ARG_ENABLE(winstore_app,
506      AS_HELP_STRING([--enable-winstore-app],
507                     [Build targetted for Windows Store apps (default disabled)]))
508
509 vlc_winstore_app=0
510 AS_IF([test "${SYS}" = "mingw32"],[
511   AS_IF([test "${enable_winstore_app}" = "yes"], [
512     vlc_winstore_app=1
513      VLC_ADD_LIBS([libvlccore], [-lole32 -lruntimeobject])
514     ],[
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           VLC_ADD_LIBS([freetype],[-lgdi32])
3313       fi
3314
3315       dnl fribidi support
3316       if test "${enable_fribidi}" != "no"; then
3317         PKG_CHECK_MODULES(FRIBIDI, fribidi, [
3318           VLC_ADD_CPPFLAGS([freetype skins2], [${FRIBIDI_CFLAGS} -DHAVE_FRIBIDI])
3319           VLC_ADD_LIBS([freetype skins2], [${FRIBIDI_LIBS}])
3320         ],[AC_MSG_WARN([${FRIBIDI_PKG_ERRORS}. Bidirectional support will be disabled in FreeType.])])
3321       fi
3322
3323   ],[
3324   have_freetype=no
3325   AS_IF([test -n "${enable_freetype}"],[
3326     AC_MSG_ERROR([${FREETYPE_PKG_ERRORS}. Install FreeType2 development or configure with --disable-freetype.])
3327     ])
3328   ])
3329 fi
3330
3331
3332 dnl
3333 dnl  QuartzText vout module (iOS/Mac OS)
3334 dnl
3335 AC_ARG_ENABLE(macosx-quartztext,
3336   [  --enable-macosx-quartztext   Mac OS X quartz text module (default enabled on Mac OS X)])
3337 if test "x${enable_macosx_quartztext}" != "xno" &&
3338   (test "${SYS}" = "darwin" || test "${enable_macosx_quartztext}" = "yes")
3339 then
3340   VLC_ADD_PLUGIN([quartztext])
3341   VLC_ADD_LIBS([quartztext],[-Wl,-framework,ApplicationServices])
3342 fi
3343
3344 dnl
3345 dnl  SVG module (text rendering and image decoding)
3346 dnl
3347 PKG_ENABLE_MODULES_VLC([SVG], [], [librsvg-2.0 >= 2.9.0], [SVG rendering library],[auto])
3348 PKG_ENABLE_MODULES_VLC([SVGDEC], [], [librsvg-2.0 >= 2.9.0 cairo >= 1.13.1], [SVG image decoder library],[auto])
3349
3350 dnl
3351 dnl  android surface module
3352 dnl
3353 AC_ARG_ENABLE(android-surface,
3354   [  --enable-android-surface   Android Surface video output module (default disabled)])
3355 if test "${enable_android_surface}" = "yes"; then
3356      VLC_ADD_PLUGIN([android_surface])
3357      VLC_ADD_PLUGIN([android_window])
3358 fi
3359
3360 dnl
3361 dnl  Windows DirectX module
3362 dnl
3363
3364 AC_ARG_ENABLE(directx,
3365   [AS_HELP_STRING([--enable-directx],
3366     [Microsoft DirectX support (default enabled on Windows)])],, [
3367   AS_IF([test "${SYS}" = "mingw32"], [
3368     enable_directx="yes"
3369   ], [
3370     enable_directx="no"
3371   ])
3372 ])
3373 have_directx="no"
3374 AS_IF([test "${enable_directx}" != "no"], [
3375   dnl DirectDraw
3376   AC_CHECK_HEADERS(ddraw.h, [
3377     have_directx="yes"
3378   ], [
3379     AC_MSG_ERROR([Cannot find DirectX headers!])
3380   ])
3381
3382   dnl OpenGL
3383   AC_CHECK_HEADERS(GL/wglew.h, [
3384     VLC_ADD_PLUGIN([glwin32])
3385   ],, [
3386     #include <windows.h>
3387     #include <GL/gl.h>
3388   ])
3389
3390   dnl Direct3D
3391   AC_CHECK_HEADERS(d3d9.h, [
3392     VLC_ADD_PLUGIN([direct3d])
3393   ])
3394
3395   dnl Direct2D
3396   AC_CHECK_HEADERS(d2d1.h, [
3397     VLC_ADD_PLUGIN([direct2d])
3398   ])
3399 ])
3400 AM_CONDITIONAL([HAVE_DIRECTX], [test "$have_directx" = "yes"])
3401
3402 dnl
3403 dnl  Linux framebuffer module
3404 dnl
3405 AC_CHECK_HEADER([linux/fb.h], [
3406   VLC_ADD_PLUGIN([fb])
3407 ])
3408
3409
3410 dnl
3411 dnl  DirectFB module
3412 dnl  try to find using: 1 - given location; 2 - directfb-config; 3 - pkg-config
3413 dnl  TODO: support for static linking
3414 dnl
3415 AC_ARG_ENABLE(directfb,
3416   [  --enable-directfb       DirectFB support (default disabled)])
3417 AC_ARG_WITH(directfb,
3418   [  --with-directfb=PATH    path to DirectFB headers and libraries])
3419
3420 if test "${enable_directfb}" = "yes"; then
3421     have_directfb="false"
3422     CPPFLAGS_mydirectfb=
3423     LIBS_mydirectfb=
3424     if test "${with_directfb}" != "no" -a -n "${with_directfb}"; then
3425         dnl Trying the given location
3426         VLC_SAVE_FLAGS
3427
3428         CPPFLAGS_new="-I${with_directfb}/include -D_REENTRANT -D_GNU_SOURCE"
3429         LIBS_new="-L${with_directfb}/lib/fusion/.libs/ -L${with_directfb}/lib/direct/.libs/ -L${with_directfb}/src/.libs/"
3430
3431         CPPFLAGS="${CPPFLAGS} ${CPPFLAGS_new}"
3432         LIBS="${LIBS} ${LIBS_new}"
3433
3434         dnl FIXME: too obscure
3435         AC_CHECK_HEADER([directfb.h], [
3436             AC_CHECK_LIB([direct],[direct_initialize], [
3437                 AC_CHECK_LIB([fusion], [fusion_enter], [
3438                     AC_CHECK_LIB([directfb], [DirectFBInit], have_directfb="true", have_directfb="false")
3439                 ], have_directfb="false")
3440             ], have_directfb="false")
3441         ], have_directfb="false")
3442
3443         VLC_RESTORE_FLAGS
3444
3445         if test "${have_directfb}" = "true"; then
3446             LIBS_mydirectfb="${LIBS_new} -lz $LIBDL -ldirectfb -lfusion -ldirect -lpthread"
3447             CPPFLAGS_mydirectfb="${CPPFLAGS_new}"
3448         fi
3449     else
3450         dnl Look for directfb-config
3451         AC_PATH_PROG(DIRECTFB_CONFIG, directfb-config, no, ${PATH})
3452         if test "${DIRECTFB_CONFIG}" != "no"; then
3453             CPPFLAGS_mydirectfb="`${DIRECTFB_CONFIG} --cflags`"
3454             LIBS_mydirectfb="`${DIRECTFB_CONFIG} --libs`"
3455             have_directfb="true"
3456         else
3457             dnl Trying with pkg-config
3458             PKG_CHECK_MODULES(DIRECTFB, directfb, [
3459                 CPPFLAGS_mydirectfb="${DIRECTFB_CFLAGS}"
3460                 LIBS_mydirectfb="${DIRECTFB_LIBS}"
3461                 have_directfb="true"
3462                 ], [have_directfb="false"])
3463         fi
3464     fi
3465     if test "${have_directfb}" = "true"; then
3466         VLC_ADD_PLUGIN([directfb])
3467         VLC_ADD_CPPFLAGS([directfb],[${CPPFLAGS_mydirectfb}])
3468         VLC_ADD_LIBS([directfb],[${LIBS_mydirectfb}])
3469     else
3470         AC_MSG_ERROR([${DIRECTFB_PKG_ERRORS}.])
3471     fi
3472 fi
3473
3474 dnl
3475 dnl  AA plugin
3476 dnl
3477 AC_ARG_ENABLE(aa,
3478   [  --enable-aa             aalib output (default disabled)])
3479 if test "${enable_aa}" = "yes"
3480 then
3481   AC_CHECK_HEADER(aalib.h,have_aa="true",have_aa="false")
3482   if test "${have_aa}" = "true"
3483   then
3484     VLC_ADD_PLUGIN([aa])
3485   fi
3486 fi
3487
3488 dnl
3489 dnl  libcaca plugin
3490 dnl
3491 PKG_ENABLE_MODULES_VLC([CACA], [], [caca >= 0.99.beta14], [libcaca output],[auto])
3492
3493 dnl
3494 dnl  OS/2 KVA plugin
3495 dnl
3496 AC_ARG_ENABLE(kva,
3497   [AS_HELP_STRING([--enable-kva],
3498     [support the K Video Accelerator KVA (default enabled on OS/2)])],, [
3499   AS_IF([test "$SYS" = "os2"], [
3500     enable_kva="yes"
3501   ])
3502 ])
3503 have_kva="no"
3504 KVA_LIBS=""
3505 AS_IF([test "$enable_kva" != "no"], [
3506   AC_CHECK_HEADERS([kva.h], [
3507     have_kva="yes"
3508     AC_CHECK_LIB(kva, main, [
3509       KVA_LIBS="-lkva"
3510     ])
3511   ])
3512 ])
3513 AC_SUBST(KVA_LIBS)
3514 AM_CONDITIONAL([HAVE_KVA], [test "${have_kva}" = "yes"])
3515
3516 dnl
3517 dnl MMAL plugin
3518 dnl
3519 AC_ARG_ENABLE(mmal,
3520   AS_HELP_STRING([--enable-mmal],
3521     [Multi-Media Abstraction Layer (MMAL) hardware plugin (default enable)]))
3522 if test "${enable_mmal}" != "no"; then
3523   VLC_SAVE_FLAGS
3524   LDFLAGS="${LDFLAGS} -L/opt/vc/lib"
3525   CPPFLAGS="${CPPFLAGS} -I/opt/vc/include -I/opt/vc/include/interface/vcos/pthreads -I/opt/vc/include/interface/vmcs_host/linux"
3526   AC_CHECK_HEADERS(interface/mmal/mmal.h,
3527     [ AC_CHECK_LIB(bcm_host, vc_tv_unregister_callback_full, [
3528         have_mmal="yes"
3529         VLC_ADD_PLUGIN([mmal])
3530         VLC_ADD_LDFLAGS([mmal],[ -L/opt/vc/lib ])
3531         VLC_ADD_CFLAGS([mmal],[ -I/opt/vc/include -I/opt/vc/include/interface/vcos/pthreads -I/opt/vc/include/interface/vmcs_host/linux ])
3532         VLC_ADD_LIBS([mmal],[ -lbcm_host -lmmal ]) ], [
3533           AS_IF([test "${enable_mmal}" = "yes"],
3534             [ AC_MSG_ERROR([Cannot find bcm library...]) ],
3535             [ AC_MSG_WARN([Cannot find bcm library...]) ])
3536           ],
3537         [])
3538     ] , [ AS_IF([test "${enable_mmal}" = "yes"],
3539       [ AC_MSG_ERROR([Cannot find development headers for mmal...]) ],
3540       [ AC_MSG_WARN([Cannot find development headers for mmal...]) ]) ])
3541   VLC_RESTORE_FLAGS
3542 fi
3543 AM_CONDITIONAL([HAVE_MMAL], [test "${have_mmal}" = "yes"])
3544
3545 dnl
3546 dnl  Audio plugins
3547 dnl
3548
3549 EXTEND_HELP_STRING([Audio plugins:])
3550
3551 dnl
3552 dnl  Pulseaudio module
3553 dnl
3554 AC_ARG_ENABLE(pulse,
3555   [AS_HELP_STRING([--enable-pulse],
3556     [use the PulseAudio client library (default auto)])])
3557 have_pulse="no"
3558 AS_IF([test "${enable_pulse}" != "no"], [
3559   PKG_CHECK_MODULES([PULSE], [libpulse >= 1.0], [
3560     have_pulse="yes"
3561   ], [
3562     AS_IF([test "x${enable_pulse}" != "x"], [
3563       AC_MSG_ERROR([$PULSE_PKG_ERRORS. PulseAudio 1.0 or later required.])
3564     ])
3565   ])
3566 ])
3567 AM_CONDITIONAL([HAVE_PULSE], [test "${have_pulse}" = "yes"])
3568
3569 dnl
3570 dnl  ALSA module
3571 dnl
3572 AC_ARG_ENABLE(alsa,
3573   [AS_HELP_STRING([--enable-alsa],
3574     [support the Advanced Linux Sound Architecture (default auto)])],, [
3575   AS_IF([test "$SYS" = "linux" -a "${have_pulse}" = "no"], [
3576     enable_alsa="yes"
3577   ])
3578 ])
3579 have_alsa="no"
3580 AS_IF([test "${enable_alsa}" != "no"], [
3581   PKG_CHECK_MODULES([ALSA], [alsa >= 1.0.24], [
3582     have_alsa="yes"
3583   ], [
3584     AS_IF([test "x${enable_alsa}" != "x"], [
3585       AC_MSG_ERROR([$ALSA_PKG_ERRORS. alsa-lib 1.0.24 or later required.])
3586     ])
3587   ])
3588 ])
3589 AM_CONDITIONAL([HAVE_ALSA], [test "${have_alsa}" = "yes"])
3590
3591 dnl
3592 dnl  Open Sound System module
3593 dnl
3594 AC_ARG_ENABLE(oss,
3595   [AS_HELP_STRING([--enable-oss],
3596     [support the Open Sound System OSS (default enabled on FreeBSD/NetBSD/DragonFlyBSD)])],, [
3597   AS_IF([test "$SYS" = "mingw32" -o "$SYS" = "linux" -o "$SYS" = "openbsd"], [
3598     enable_oss="no"
3599   ])
3600 ])
3601 have_oss="no"
3602 OSS_LIBS=""
3603 AS_IF([test "$enable_oss" != "no"], [
3604   AC_CHECK_HEADERS([soundcard.h sys/soundcard.h], [
3605     have_oss="yes"
3606     AC_CHECK_LIB(ossaudio, main, [
3607       OSS_LIBS="-lossaudio"
3608     ])
3609   ])
3610 ])
3611 AC_SUBST(OSS_LIBS)
3612 AM_CONDITIONAL([HAVE_OSS], [test "${have_oss}" = "yes"])
3613
3614 dnl
3615 dnl  OpenBSD sndio module
3616 dnl
3617 AC_ARG_ENABLE([sndio],
3618   [AS_HELP_STRING([--disable-sndio],
3619     [support the OpenBSD sndio (default auto)])],, [
3620   AS_IF([test "$SYS" = "openbsd"], [
3621     enable_sndio="yes"
3622   ])
3623 ])
3624 have_sndio="no"
3625 AS_IF([test "$enable_sndio" != "no"], [
3626   AC_CHECK_HEADER([sndio.h], [
3627     have_sndio="yes"
3628   ])
3629 ])
3630 AM_CONDITIONAL([HAVE_SNDIO], [test "${have_sndio}" = "yes"])
3631
3632 dnl
3633 dnl  Windows Audio Session plugin
3634 dnl
3635 AC_ARG_ENABLE([wasapi],
3636   [AS_HELP_STRING([--enable-wasapi],
3637     [use the Windows Audio Session API (default auto)])
3638 ])
3639 have_wasapi="no"
3640 AS_IF([test "$enable_wasapi" != "no"], [
3641   AC_CHECK_HEADER([audioclient.h], [
3642     have_wasapi="yes"
3643   ], [
3644     AS_IF([test "x${enable_wasapi}" != "x"], [
3645       AC_MSG_ERROR([Windows Audio Session API not found.])
3646     ])
3647   ])
3648 ])
3649 AM_CONDITIONAL([HAVE_WASAPI], [test "${have_wasapi}" = "yes"])
3650
3651 dnl
3652 dnl  AudioQueue plugin
3653 dnl
3654 AC_ARG_ENABLE(audioqueue,
3655   [  --enable-audioqueue     AudioQueue audio module (default disabled)])
3656 if test "${enable_audioqueue}" = "yes"
3657 then
3658   VLC_ADD_PLUGIN([audioqueue])
3659 fi
3660
3661 dnl
3662 dnl  JACK modules
3663 dnl
3664 AC_ARG_ENABLE(jack,
3665   [AS_HELP_STRING([--disable-jack],
3666     [do not use jack (default auto)])])
3667 have_jack="no"
3668 AS_IF([test "${enable_jack}" != "no"], [
3669     PKG_CHECK_MODULES(JACK, jack >= 1.9.7,
3670       [ have_jack=yes ],
3671       [
3672       AC_MSG_WARN([${JACK_PKG_ERRORS}, trying jack1 instead])
3673
3674       PKG_CHECK_MODULES(JACK, jack >= 0.120.1 jack < 1.0,
3675       [ have_jack=yes ],
3676       [
3677       AS_IF([test -n "${enable_jack}"],
3678          [AC_MSG_ERROR([${JACK_PKG_ERRORS}.])],
3679          [AC_MSG_WARN([${JACK_PKG_ERRORS}.])])
3680       ])
3681     ])
3682 ])
3683 AM_CONDITIONAL([HAVE_JACK], [test "${have_jack}" != "no"])
3684
3685 dnl
3686 dnl  OpenSLES Android
3687 dnl
3688 AC_ARG_ENABLE(opensles,
3689   [  --enable-opensles       Android OpenSL ES audio module (default disabled)])
3690 if test "${HAVE_ANDROID}" = "1"; then
3691   if test "${enable_opensles}" = "yes"; then
3692       AC_CHECK_HEADERS(SLES/OpenSLES.h,
3693         [ VLC_ADD_PLUGIN([opensles_android]) ],
3694         [ AC_MSG_ERROR([cannot find OpenSLES headers])] )
3695   fi
3696 fi
3697
3698 dnl
3699 dnl libsamplerate plugin
3700 dnl
3701 PKG_ENABLE_MODULES_VLC([SAMPLERATE], [], [samplerate], [Resampler with libsamplerate], [auto])
3702
3703 dnl
3704 dnl  OS/2 KAI plugin
3705 dnl
3706 AC_ARG_ENABLE(kai,
3707   [AS_HELP_STRING([--enable-kai],
3708     [support the K Audio Interface KAI (default enabled on OS/2)])],, [
3709   AS_IF([test "$SYS" = "os2"], [
3710     enable_kai="yes"
3711   ])
3712 ])
3713 have_kai="no"
3714 KAI_LIBS=""
3715 AS_IF([test "$enable_kai" != "no"], [
3716   AC_CHECK_HEADERS([kai.h], [
3717     have_kai="yes"
3718     AC_CHECK_LIB(kai, main, [
3719       KAI_LIBS="-lkai"
3720     ])
3721   ])
3722 ])
3723 AC_SUBST(KAI_LIBS)
3724 AM_CONDITIONAL([HAVE_KAI], [test "${have_kai}" = "yes"])
3725
3726 dnl
3727 dnl  chromaprint audio track fingerprinter
3728 dnl
3729 m4_pushdef([libchromaprint_version], 0.6.0)
3730 PKG_WITH_MODULES([CHROMAPRINT],[libchromaprint >= libchromaprint_version],
3731     VLC_ADD_PLUGIN([stream_out_chromaprint])
3732     VLC_ADD_CFLAGS([stream_out_chromaprint],[${CHROMAPRINT_CFLAGS}] [-I./webservices -I../stream_out])
3733     VLC_ADD_LIBS([stream_out_chromaprint],[${CHROMAPRINT_LIBS}]),
3734     AS_IF([test "${enable_chromaprint}" = "yes"],
3735         [AC_MSG_ERROR(Library [libchromaprint >= libchromaprint_version] needed for [chromaprint] was not found)],
3736         [AC_MSG_WARN(Library [libchromaprint >= libchromaprint_version] needed for [chromaprint] was not found)]
3737          ),
3738     [(Chromaprint based audio fingerprinter)],[auto])
3739 m4_popdef([libchromaprint_version])
3740
3741 dnl
3742 dnl  Chromecast streaming support
3743 dnl
3744 m4_pushdef([protobuf_lite_version], 2.5.0)
3745 AC_ARG_VAR(PROTOC, [protobuf compiler])
3746 AC_PATH_PROGS(PROTOC, protoc, no)
3747 PKG_WITH_MODULES([CHROMECAST],[protobuf-lite >= protobuf_lite_version], [
3748     AS_IF([test "x${PROTOC}" != "xno"], [
3749         VLC_ADD_PLUGIN([stream_out_chromecast])
3750         VLC_ADD_CXXFLAGS([stream_out_chromecast],[${CHROMECAST_CFLAGS}] [-I./chromecast])
3751         VLC_ADD_LIBS([stream_out_chromecast],[${CHROMECAST_LIBS}])
3752         build_chromecast="yes"
3753     ], [
3754     AC_MSG_ERROR(protoc compiler needed for [chromecast] was not found)
3755     ])
3756 ], [
3757     AS_IF([test "${enable_chromecast}" = "yes"],
3758         AC_MSG_ERROR(Library [protobuf-lite >= protobuf_lite_version] needed for [chromecast] was not found),
3759         AC_MSG_WARN(Library [protobuf-lite >= protobuf_lite_version] needed for [chromecast] was not found)
3760     )
3761     enable_chromecast="no"
3762 ], [(Chromecast streaming support)], [auto])
3763 AM_CONDITIONAL([BUILD_CHROMECAST], [test "${build_chromecast}" = "yes"])
3764 m4_popdef([protobuf_lite_version])
3765
3766 dnl
3767 dnl  Interface plugins
3768 dnl
3769
3770 EXTEND_HELP_STRING([Interface plugins:])
3771
3772 dnl
3773 dnl QT
3774 dnl
3775 AC_ARG_ENABLE(qt, [
3776   AS_HELP_STRING([--disable-qt], [Qt UI support (default enabled)])],, [
3777   AS_IF([test "${SYS}" = "darwin"], [
3778     enable_qt="no"
3779   ])
3780 ])
3781 AS_IF([test "${enable_qt}" != "no"], [
3782   PKG_CHECK_MODULES([QT], [Qt5Core >= 5.1.0 Qt5Widgets Qt5Gui], [
3783       PKG_CHECK_MODULES([QTX11], [Qt5X11Extras], [
3784           VLC_ADD_LIBS([qt4],[${QTX11_LIBS}])
3785           VLC_ADD_CXXFLAGS([qt4],[${QTX11_CFLAGS} -DQT5_HAS_X11])
3786       ],[
3787           AC_MSG_WARN([Not building Qt Interface with X11 helpers.])
3788       ])
3789       QT_PATH="$(eval $PKG_CONFIG --variable=exec_prefix Qt5Core)"
3790       QT_HOST_PATH="$(eval $PKG_CONFIG --variable=host_bins Qt5Core)"
3791       AC_PATH_PROGS(MOC, [moc-qt5 moc], moc, ["${QT_HOST_PATH}" "${QT_PATH}/bin" "${CONTRIB_DIR}/bin"])
3792       AC_PATH_PROGS(RCC, [rcc-qt5 rcc], rcc, ["${QT_HOST_PATH}" "${QT_PATH}/bin" "${CONTRIB_DIR}/bin"])
3793       AC_PATH_PROGS(UIC, [uic-qt5 uic], uic, ["${QT_HOST_PATH}" "${QT_PATH}/bin" "${CONTRIB_DIR}/bin"])
3794     ], [
3795       PKG_CHECK_MODULES([QT], [QtCore QtGui >= 4.6.0],, [
3796         AS_IF([test -n "${enable_qt}"],[
3797           AC_MSG_ERROR([${QT_PKG_ERRORS}.])
3798         ],[
3799           AC_MSG_WARN([${QT_PKG_ERRORS}.])
3800         ])
3801         enable_qt="no"
3802       ])
3803       QT_PATH="$(eval $PKG_CONFIG --variable=exec_prefix QtCore)"
3804       AC_PATH_PROGS(MOC, [moc-qt4 moc], moc, ["${QT_PATH}/bin" "${CONTRIB_DIR}/bin"])
3805       AC_PATH_PROG(RCC, rcc, rcc, [${QT_PATH}/bin ${CONTRIB_DIR}/bin])
3806       AC_PATH_PROGS(UIC, [uic-qt4 uic], uic, ["${QT_PATH}/bin" "${CONTRIB_DIR}/bin"])
3807     ])
3808 ])
3809 AS_IF([test "${enable_qt}" != "no"], [
3810   VLC_ADD_PLUGIN([qt4])
3811   ALIASES="${ALIASES} qvlc"
3812 ])
3813 AM_CONDITIONAL(ENABLE_QT4, [test "$enable_qt" != "no"])
3814
3815 dnl
3816 dnl Simple test for skins2 dependency
3817 dnl
3818 AS_IF([test "$enable_qt" = "no"], [
3819   AS_IF([test "${enable_skins2}" = "yes"], [
3820     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.])
3821   ], [
3822     enable_skins2="no"
3823     AC_MSG_WARN([The skins2 module depends on the Qt4 interface, Qt4 is not built so skins2 is disabled.])
3824   ])
3825 ])
3826
3827 dnl
3828 dnl Skins2 module
3829 dnl
3830 AC_ARG_ENABLE(skins2,
3831   [AS_HELP_STRING([--enable-skins2], [skins interface module (default auto)])])
3832 AS_IF([test "${enable_skins2}" != "no"], [
3833   have_skins_deps="yes"
3834
3835   dnl Win32
3836   AS_IF([test "${SYS}" = "mingw32"], [
3837     VLC_ADD_CPPFLAGS([skins2],[-U_OFF_T_ -U_off_t -DWIN32_SKINS])
3838     VLC_ADD_LIBS([skins2],[-lgdi32 -lole32 -luuid -lmsimg32])
3839   dnl MacOS
3840   ], [test "${SYS}" = "darwin"], [
3841     VLC_ADD_CPPFLAGS([skins2],[ -DMACOSX_SKINS])
3842     VLC_ADD_LIBS([skins2],[-Wl,-framework,Carbon])
3843   dnl OS/2
3844   ], [test "${SYS}" = "os2"], [
3845     VLC_ADD_CPPFLAGS([skins2],[ -DOS2_SKINS])
3846   dnl Linux/Unix
3847   ], [
3848     PKG_CHECK_MODULES([XPM], [xpm],, [have_skins_deps="no"])
3849     PKG_CHECK_MODULES([XINERAMA], [xinerama],, [have_skins_deps="no"])
3850     PKG_CHECK_MODULES([XEXT], [xext],, [have_skins_deps="no"])
3851     VLC_ADD_CPPFLAGS([skins2],[${X_CFLAGS} ${XEXT_CFLAGS} ${XPM_CFLAGS} -DX11_SKINS])
3852     VLC_ADD_LIBS([skins2],[${X_LIBS} ${X_PRE_LIBS} ${XEXT_LIBS} ${XPM_LIBS} ${XINERAMA_LIBS} -lX11])
3853   ])
3854
3855   dnl for All OSes
3856   VLC_ADD_CXXFLAGS([skins2],[-O2 -fno-rtti])
3857
3858   dnl we need freetype
3859   AS_IF([test "${have_freetype}" != "yes"], [
3860     have_skins_deps="no"
3861   ])
3862
3863   AS_IF([test "${have_skins_deps}" = "no"], [
3864     AS_IF([test "x${enable_skins2}" = "x"], [
3865       AC_MSG_WARN([Skins2 interface disabled due to missing dependencies.])
3866     ], [
3867       AC_MSG_ERROR([Skins2 interface requires FreeType, libxpm, libxext and libxinerama])
3868     ])
3869     enable_skins2="no"
3870   ], [
3871     VLC_ADD_PLUGIN([skins2])
3872     ALIASES="${ALIASES} svlc"
3873     enable_skins2="yes"
3874   ])
3875 ])
3876 AM_CONDITIONAL(BUILD_SKINS, [test "${enable_skins2}" = "yes"])
3877
3878 AC_ARG_ENABLE(libtar,
3879   [  --enable-libtar         libtar support for skins2 (default auto)])
3880 AS_IF([test "${enable_skins2}" = "yes" && test "${enable_libtar}" != "no"], [
3881   AC_CHECK_HEADERS(libtar.h, [
3882     VLC_ADD_LIBS([skins2],[-ltar])
3883   ])
3884 ])
3885
3886 dnl
3887 dnl  MacOS X gui module
3888 dnl
3889 AC_ARG_ENABLE(macosx,
3890   [  --enable-macosx         Mac OS X gui support (default enabled on Mac OS X)])
3891 if test "x${enable_macosx}" != "xno" -a "${SYS}" = "darwin"
3892 then
3893   VLC_ADD_LIBS([macosx], [-Wl,-framework,Cocoa -Wl,-framework,Carbon -Wl,-framework,CoreServices])
3894   VLC_ADD_OBJCFLAGS([macosx], [-fobjc-exceptions] )
3895   VLC_ADD_PLUGIN([macosx])
3896
3897   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])
3898
3899   if test ! -d ${CONTRIB_DIR}/Sparkle.framework
3900   then
3901     AC_MSG_ERROR([Sparkle framework is required and was not found in ${CONTRIB_DIR}])
3902   fi
3903   VLC_ADD_LIBS([macosx], [-F${CONTRIB_DIR} -Wl,-framework,Sparkle])
3904   VLC_ADD_OBJCFLAGS([macosx], [-F${CONTRIB_DIR}])
3905
3906   if test ! -d ${CONTRIB_DIR}/BGHUDAppKit.framework
3907   then
3908     AC_MSG_ERROR([BGHUDAppKit framework is required and was not found in ${CONTRIB_DIR}])
3909   fi
3910   VLC_ADD_LIBS([macosx], [-F${CONTRIB_DIR} -Wl,-framework,BGHUDAppKit])
3911   VLC_ADD_OBJCFLAGS([macosx], [-F${CONTRIB_DIR}])
3912 fi
3913 AM_CONDITIONAL(ENABLE_MACOSX_UI, [test "$enable_macosx" != "no"])
3914
3915 dnl
3916 dnl  Minimal Mac OS X module
3917 dnl
3918 AC_ARG_ENABLE(minimal-macosx,
3919   [  --enable-minimal-macosx Minimal Mac OS X support (default disabled)])
3920 if test "${enable_minimal_macosx}" = "yes" -a "${SYS}" = "darwin"
3921 then
3922   VLC_ADD_LIBS([minimal_macosx], [-Wl,-framework,Cocoa])
3923   VLC_ADD_OBJCFLAGS([minimal_macosx], [-fobjc-exceptions] )
3924   VLC_ADD_PLUGIN([minimal_macosx])
3925 fi
3926 AM_CONDITIONAL(ENABLE_MINIMAL_MACOSX, [test "$enable_minimal_macosx" != "no"])
3927
3928 dnl
3929 dnl  MacOS X dialog provider
3930 dnl
3931 AC_ARG_ENABLE(macosx-dialog-provider,
3932   [  --enable-macosx-dialog-provider Mac OS X dialog module (default enabled on Mac OS X)])
3933 if test "x${enable_macosx_dialog_provider}" != "xno" &&
3934   (test "${SYS}" = "darwin" || test "${enable_macosx_dialog_provider}" = "yes")
3935 then
3936   VLC_ADD_LIBS([macosx_dialog_provider],[-Wl,-framework,Cocoa])
3937   VLC_ADD_PLUGIN([macosx_dialog_provider])
3938 fi
3939 AM_CONDITIONAL(ENABLE_MACOSX_DIALOG_PROVIDER, [test "$enable_macosx_dialog_provider" != "no"])
3940
3941 dnl
3942 dnl  ncurses module
3943 dnl
3944 AC_ARG_ENABLE(ncurses,
3945 [AS_HELP_STRING([--disable-ncurses],[ncurses text-based interface (default auto)])])
3946 AS_IF([test "${enable_ncurses}" != "no"] ,[
3947   PKG_CHECK_MODULES([NCURSES], [ncursesw], [
3948     VLC_ADD_PLUGIN([ncurses])
3949     VLC_ADD_CFLAGS([ncurses],[${NCURSES_CFLAGS}])
3950     VLC_ADD_LIBS([ncurses],[${NCURSES_LIBS}])
3951     ALIASES="${ALIASES} nvlc"
3952   ], [
3953     AS_IF([test -n "${enable_ncurses}"], [
3954       AC_MSG_ERROR([${NCURSES_PKG_ERRORS}.])
3955     ])
3956   ])
3957 ])
3958
3959 dnl
3960 dnl  Lirc plugin
3961 dnl
3962 AC_ARG_ENABLE(lirc,
3963   [  --enable-lirc           lirc support (default disabled)])
3964 if test "${enable_lirc}" = "yes"
3965 then
3966   AC_CHECK_HEADER(lirc/lirc_client.h, AC_CHECK_LIB(lirc_client, lirc_init, have_lirc="true", have_lirc="false"),have_lirc="false")
3967   if test "${have_lirc}" = "true"
3968   then
3969     VLC_ADD_PLUGIN([lirc])
3970     VLC_ADD_LIBS([lirc],[-llirc_client])
3971   fi
3972 fi
3973
3974 EXTEND_HELP_STRING([Visualisations and Video filter plugins:])
3975 dnl
3976 dnl  goom visualization plugin
3977 dnl
3978 PKG_ENABLE_MODULES_VLC([GOOM], [], [libgoom2], [goom visualization plugin], [auto])
3979
3980 dnl
3981 dnl libprojectM visualization plugin
3982 dnl
3983 AC_ARG_ENABLE(projectm,
3984   [  --enable-projectm       projectM visualization plugin (default enabled)])
3985 AS_IF([test "${enable_projectm}" != "no"],
3986   [
3987     PKG_CHECK_MODULES(PROJECTM, libprojectM,
3988     [
3989       VLC_ADD_PLUGIN([projectm])
3990       PKG_CHECK_EXISTS([libprojectM >= 2.0.0],
3991         [ AC_DEFINE([HAVE_PROJECTM2], 1, [Define to 1 if using libprojectM 2.x]) ],
3992         [ AC_MSG_WARN( [Using libprojectM version 1] )
3993       ])
3994     ],[
3995       AC_MSG_WARN([${PROJECTM_PKG_ERRORS}.])
3996     ])
3997   ])
3998
3999 dnl
4000 dnl Vovoid VSXu visualization plugin
4001 dnl
4002 AC_ARG_ENABLE(vsxu,
4003   [  --enable-vsxu           Vovoid VSXu visualization plugin (default auto)])
4004 AS_IF([test "${enable_vsxu}" != "no"],
4005   [
4006     PKG_CHECK_MODULES(VSXU, libvsxu,
4007     [
4008       VLC_ADD_PLUGIN([vsxu])
4009       VLC_ADD_CXXFLAGS([vsxu],[$VSXU_CFLAGS])
4010       VLC_ADD_LIBS([vsxu],[$VSXU_LIBS])
4011     ],[
4012       AC_MSG_WARN([${VSXU_PKG_ERRORS}.])
4013     ])
4014   ])
4015
4016 dnl
4017 dnl  AtmoLight (homemade Philips Ambilight clone)
4018 dnl
4019 AC_ARG_ENABLE(atmo,
4020 AS_HELP_STRING([--disable-atmo],[AtmoLight (homemade Philips Ambilight clone)
4021                 (default enabled)]),, [enable_atmo="yes"])
4022 AS_IF([test "${enable_atmo}" != no], [
4023   AS_IF([test "${SYS}" = "mingw32" -o "${SYS}" = "linux"], [
4024     AC_LANG_PUSH(C++)
4025     VLC_ADD_PLUGIN([atmo])
4026     AC_LANG_POP(C++)
4027   ])
4028 ])
4029
4030 dnl
4031 dnl  glSpectrum
4032 dnl
4033 AC_ARG_ENABLE(glspectrum,
4034   [  --enable-glspectrum    3D OpenGL spectrum visualization (default auto)])
4035 if test "${enable_glspectrum}" != "no" && test "${have_gl}" = "yes"
4036 then
4037     VLC_ADD_PLUGIN([glspectrum])
4038     VLC_ADD_LIBS([glspectrum],[$GL_LIBS])
4039 fi
4040
4041 EXTEND_HELP_STRING([Service Discovery plugins:])
4042 dnl
4043 dnl  Bonjour services discovery
4044 PKG_ENABLE_MODULES_VLC([BONJOUR], [], [avahi-client >= 0.6], [Bonjour services discovery], [auto])
4045
4046 dnl
4047 dnl  libudev services discovery
4048 PKG_ENABLE_MODULES_VLC([UDEV], [], [libudev >= 142], [Linux udev services discovery], [auto])
4049
4050 dnl
4051 dnl MTP devices services discovery
4052 PKG_ENABLE_MODULES_VLC([MTP], [mtp access_mtp], [libmtp >= 1.0.0], [MTP devices support], [auto])
4053
4054 dnl
4055 dnl UPnP Plugin (Intel SDK)
4056 dnl
4057 PKG_ENABLE_MODULES_VLC([UPNP], [upnp], [libupnp], [Intel UPNP SDK],[auto])
4058
4059 EXTEND_HELP_STRING([Misc options:])
4060
4061 dnl
4062 dnl  libxml2 module
4063 dnl
4064 PKG_ENABLE_MODULES_VLC([LIBXML2], [xml], [libxml-2.0 >= 2.5], [libxml2 support],[auto])
4065
4066
4067 dnl
4068 dnl libgcrypt
4069 dnl
4070 AC_ARG_ENABLE(libgcrypt,
4071   [  --disable-libgcrypt     gcrypt support (default enabled)])
4072 AS_IF([test "${enable_libgcrypt}" != "no"], [
4073   AC_CHECK_DECL([GCRYCTL_SET_THREAD_CBS], [
4074     libgcrypt-config --version >/dev/null || \
4075         AC_MSG_ERROR([gcrypt.h present but libgcrypt-config could not be found])
4076     AC_CHECK_LIB(gcrypt, gcry_control, [
4077       have_libgcrypt="yes"
4078       GCRYPT_CFLAGS="`libgcrypt-config --cflags`"
4079       GCRYPT_LIBS="`libgcrypt-config --libs`"
4080     ], [
4081       AC_MSG_ERROR([libgcrypt not found. Install libgcrypt or pass --disable-libgcrypt.])
4082     ], [`libgcrypt-config --libs`])
4083   ], [
4084     AC_MSG_ERROR([libgcrypt version 1.1.94 or higher not found. Install libgcrypt or pass --disable-libgcrypt.])
4085   ], [#include <gcrypt.h>]
4086   )
4087 ])
4088
4089 AC_SUBST(GCRYPT_CFLAGS)
4090 AC_SUBST(GCRYPT_LIBS)
4091 AM_CONDITIONAL([HAVE_GCRYPT], [test "${have_libgcrypt}" = "yes"])
4092
4093 dnl
4094 dnl TLS/SSL
4095 dnl
4096 AC_ARG_ENABLE(gnutls,
4097   [  --enable-gnutls         GNU TLS TLS/SSL support (default enabled)])
4098 AS_IF([test "${enable_gnutls}" != "no"], [
4099   PKG_CHECK_MODULES(GNUTLS, [gnutls >= 3.2.0], [
4100     VLC_ADD_PLUGIN([gnutls])
4101   ], [
4102     AS_IF([test -n "${enable_gnutls}"], [
4103       AC_MSG_ERROR([${GNUTLS_PKG_ERRORS}.)])
4104     ])
4105   ])
4106 ])
4107
4108
4109 dnl
4110 dnl Taglib plugin
4111 dnl
4112 AC_ARG_ENABLE(taglib,
4113   [AS_HELP_STRING([--disable-taglib],
4114     [do not use TagLib (default enabled)])])
4115 AS_IF([test "${enable_taglib}" != "no"], [
4116   PKG_CHECK_MODULES(TAGLIB, taglib >= 1.9, [
4117     VLC_ADD_PLUGIN([taglib])
4118   ], [
4119     AC_MSG_WARN([${TAGLIB_PKG_ERRORS}.])])
4120 ])
4121
4122
4123 dnl
4124 dnl update checking system
4125 dnl
4126 AC_ARG_ENABLE(update-check,
4127   [  --enable-update-check   update checking system (default disabled)])
4128 if test "${enable_update_check}" = "yes"
4129 then
4130   if test "${have_libgcrypt}" != "yes"
4131   then
4132     AC_MSG_ERROR([libgcrypt is required for update checking system])
4133   fi
4134   VLC_ADD_LIBS([libvlccore], [${GCRYPT_LIBS}])
4135   VLC_ADD_CFLAGS([libvlccore], [${GCRYPT_CFLAGS}])
4136   AC_DEFINE([UPDATE_CHECK], 1, [Define if you want to use the VLC update mechanism])
4137 fi
4138
4139 dnl
4140 dnl Growl notification plugin
4141 dnl
4142 AC_ARG_ENABLE(growl,
4143   [  --enable-growl          growl notification plugin (default disabled)],,
4144   [enable_growl=no])
4145 AS_IF([test "${enable_growl}" != "no"], [
4146     AC_CHECK_HEADERS(${CONTRIB_DIR}/Growl.framework/Versions/A/Headers/Growl.h, [
4147       VLC_ADD_PLUGIN([growl])
4148       VLC_ADD_LIBS([growl], [-F${CONTRIB_DIR} -Wl,-framework,Growl,-framework,Foundation])
4149       VLC_ADD_OBJCFLAGS([growl], [-F${CONTRIB_DIR}])
4150       VLC_ADD_OBJCFLAGS([growl], [-fobjc-exceptions] )
4151     ])
4152   ]
4153 )
4154
4155 dnl
4156 dnl Libnotify notification plugin
4157 dnl
4158 PKG_ENABLE_MODULES_VLC([NOTIFY], [], [libnotify gtk+-2.0], [libnotify notification], [auto])
4159
4160 dnl
4161 dnl  Endianness check
4162 dnl
4163 AC_C_BIGENDIAN
4164 AS_IF([test "${ac_cv_c_bigendian}" = "yes"], [
4165   DEFS_BIGENDIAN="-DWORDS_BIGENDIAN=1"
4166 ], [
4167   DEFS_BIGENDIAN=""
4168 ])
4169 AC_SUBST(DEFS_BIGENDIAN)
4170
4171 dnl
4172 dnl Where to install KDE solid .desktop
4173 dnl
4174 AC_ARG_VAR([KDE4_CONFIG], [kde4-config utility])
4175 AS_IF([test "x$KDE4_CONFIG" = "x"], [
4176   KDE4_CONFIG="kde4-config"
4177 ])
4178
4179 AC_ARG_WITH(kde-solid,
4180   AS_HELP_STRING([--with-kde-solid=PATH],
4181                  [KDE Solid actions directory (auto)]),, [
4182
4183 if test "${SYS}" != "mingw32" -a "${SYS}" != "darwin" ; then
4184   with_kde_solid="yes"
4185 fi
4186 ])
4187 soliddatadir=""
4188 AS_IF([test "${with_kde_solid}" != "no"], [
4189   AS_IF([test "${with_kde_solid}" = "yes"], [
4190     kde4datadir="`${KDE4_CONFIG} --install data`"
4191     AS_IF([test "x$kde4datadir" = "x"], [kde4datadir='${datadir}/kde4/apps'])
4192     soliddatadir="${kde4datadir}/solid/actions"
4193   ], [
4194     soliddatadir="${with_kde_solid}"
4195   ])
4196 ])
4197 AC_SUBST(soliddatadir)
4198 AM_CONDITIONAL(KDE_SOLID, [test "x${soliddatadir}" != "x"])
4199
4200 EXTEND_HELP_STRING([Components:])
4201
4202 dnl
4203 dnl  the VLC binary
4204 dnl
4205 AC_ARG_ENABLE(vlc,
4206   [  --enable-vlc            build the VLC media player (default enabled)])
4207 AM_CONDITIONAL(BUILD_VLC, [test "${enable_vlc}" != "no"])
4208
4209 AC_ARG_ENABLE(macosx-vlc-app,
4210   [  --enable-macosx-vlc-app build the VLC media player (default enabled on Mac OS X)])
4211 AM_CONDITIONAL(BUILD_MACOSX_VLC_APP, [test "${enable_macosx_vlc_app}" != "no" &&
4212     (test "${SYS}" = "darwin" || test "${enable_macosx_vlc_app}" = "yes") ])
4213
4214 dnl
4215 dnl  Stuff used by the program
4216 dnl
4217 VERSION_MESSAGE="${VERSION} ${CODENAME}"
4218 COPYRIGHT_MESSAGE="Copyright © ${COPYRIGHT_YEARS} the VideoLAN team"
4219 AC_DEFINE_UNQUOTED(VERSION_MESSAGE, "${VERSION_MESSAGE}", [Simple version string])
4220 AC_DEFINE_UNQUOTED(COPYRIGHT_MESSAGE, "${COPYRIGHT_MESSAGE}", [Copyright string])
4221 AC_DEFINE_UNQUOTED(COPYRIGHT_YEARS, "${COPYRIGHT_YEARS}", [The copyright years])
4222 AC_DEFINE_UNQUOTED(CONFIGURE_LINE, "${CONFIGURE_LINE}", [The ./configure command line])
4223 AC_DEFINE_UNQUOTED(PACKAGE_VERSION_MAJOR,${VERSION_MAJOR}, [version major number])
4224 AC_DEFINE_UNQUOTED(PACKAGE_VERSION_MINOR,${VERSION_MINOR}, [version minor number])
4225 AC_DEFINE_UNQUOTED(PACKAGE_VERSION_REVISION,${VERSION_REVISION}, [version revision number])
4226 AC_DEFINE_UNQUOTED(PACKAGE_VERSION_EXTRA,${VERSION_EXTRA}, [version extra number])
4227 AC_DEFINE_UNQUOTED(PACKAGE_VERSION_DEV,"${VERSION_DEV}", [version development string])
4228 AC_SUBST(COPYRIGHT_MESSAGE)
4229 AC_SUBST(VERSION_MESSAGE)
4230 AC_SUBST(VERSION_MAJOR)
4231 AC_SUBST(VERSION_MINOR)
4232 AC_SUBST(VERSION_REVISION)
4233 AC_SUBST(VERSION_EXTRA)
4234 AC_SUBST(COPYRIGHT_YEARS)
4235 AC_DEFINE_UNQUOTED(VLC_COMPILE_BY, "`whoami|sed -e 's/\\\/\\\\\\\/g'`", [user who ran configure])
4236 AC_DEFINE_UNQUOTED(VLC_COMPILE_HOST, "`hostname -f 2>/dev/null || hostname`", [host which ran configure])
4237 AC_DEFINE_UNQUOTED(VLC_COMPILER, "`$CC -v 2>&1 | tail -n 1 | sed -e 's/ *$//'`", [compiler])
4238 dnl
4239 dnl  Handle substvars that use $(top_srcdir)
4240 dnl
4241 CPPFLAGS="-I\$(top_srcdir)/include -I\$(top_builddir)/include ${CPPFLAGS}"
4242
4243 dnl
4244 dnl  Configuration is finished
4245 dnl
4246 AC_SUBST(SYS)
4247 AC_SUBST(ARCH)
4248 AC_SUBST(ALIASES)
4249 AC_SUBST(ASM)
4250 AC_SUBST(MOC)
4251 AC_SUBST(RCC)
4252 AC_SUBST(UIC)
4253 AC_SUBST(WINDRES)
4254 AC_SUBST(WINE_SDK_PATH)
4255 AC_SUBST(LIBEXT)
4256 AC_SUBST(AM_CPPFLAGS)
4257 AC_SUBST(MACOSX_DEPLOYMENT_TARGET)
4258 AC_SUBST(FILE_LIBVLCCORE_DLL)
4259 AC_SUBST(FILE_LIBVLC_DLL)
4260
4261 AC_CONFIG_FILES([
4262   Makefile
4263   doc/Makefile
4264   modules/Makefile
4265   m4/Makefile
4266   po/Makefile.in
4267   share/Makefile
4268   compat/Makefile
4269   src/Makefile
4270   lib/Makefile
4271   bin/Makefile
4272   test/Makefile
4273   modules/access_output/Makefile
4274   modules/audio_filter/Makefile
4275   modules/control/Makefile
4276   modules/gui/Makefile
4277   modules/gui/ios_dialog_provider/Makefile
4278   modules/gui/macosx/Makefile
4279   modules/gui/minimal_macosx/Makefile
4280   modules/gui/macosx_dialog_provider/Makefile
4281   modules/gui/qt4/Makefile
4282   modules/gui/skins2/Makefile
4283   modules/mux/Makefile
4284   modules/packetizer/Makefile
4285   modules/stream_out/Makefile
4286   modules/text_renderer/Makefile
4287   modules/video_filter/Makefile
4288   modules/visualization/Makefile
4289   modules/hw/mmal/Makefile
4290 ])
4291
4292 AM_COND_IF([HAVE_WIN32], [
4293   AC_CONFIG_FILES([
4294     extras/package/win32/NSIS/spad.nsi
4295     extras/package/win32/NSIS/vlc.win32.nsi
4296     extras/package/win32/msi/config.wxi
4297   ])
4298 ])
4299
4300 AM_COND_IF([HAVE_DARWIN], [
4301   AC_CONFIG_FILES([
4302     extras/package/macosx/Info.plist
4303     extras/package/macosx/Resources/English.lproj/InfoPlist.strings
4304   ])
4305 ])
4306
4307 dnl Generate makefiles
4308 AC_OUTPUT
4309
4310 dnl Do we have to use make or gmake ?
4311 if make --version 2>&1|grep -q GNU
4312 then
4313     # GNU make, all seems good
4314     MAKE=make
4315 else
4316     # Known GNU make alias (on BSD)
4317     MAKE=gmake
4318 fi
4319 dnl Shortcut to nice compile message
4320 if test -n $SHELL; then
4321   SHELL=${CONFIG_SHELL-/bin/sh}
4322 fi
4323 rm -f compile
4324 compile_top_srcdir=`sed -ne "s/^top_srcdir *= *//p" < Makefile`
4325 echo "#! $SHELL
4326 rm -f .error\$\$
4327 ERROR=0
4328 export PATH=\"$PATH\" LANG=C
4329 ($MAKE V=1 \$@ 2>&1 || touch .error\$\$)| $compile_top_srcdir/extras/buildsystem/make.pl
4330 test -f .error\$\$ && ERROR=1
4331 rm -f .error\$\$
4332 exit \$ERROR" >compile
4333 chmod a+x compile
4334
4335 echo "
4336 libvlc configuration
4337 --------------------
4338 version               : ${VERSION}
4339 system                : ${SYS}
4340 architecture          : ${ARCH}
4341 optimizations         : ${enable_optimizations}"
4342 if test "${enable_vlc}" != "no"; then
4343 echo "vlc aliases           :${ALIASES}"
4344 else
4345 echo "build vlc executable  : no"
4346 fi
4347 echo "
4348 To build vlc and its plugins, type \`$MAKE', or \`./compile' if you like nice colors."