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