]> git.sesse.net Git - vlc/blob - configure.ac
contrib: speexdsp: disable examples
[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_CHECK_PROGS(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_LIBS([libvlccore],[-lwinmm])
262         VLC_ADD_LDFLAGS([vlc],[-mwindows])
263         VLC_ADD_LIBS([win32text],[-lgdi32])
264         AC_CHECK_PROGS(U2D, [unix2dos todos], unix2dos)
265         ac_default_prefix="`pwd`/_win32"
266         DESTDIR="`pwd`/_win32/"
267
268         dnl
269         dnl NSIS/MSI Installer prefix and WIN64
270         dnl
271         case "${host}" in
272             amd64*|x86_64*)
273                 HAVE_WIN64="1"
274                 WINDOWS_ARCH="x64"
275                 PROGRAMFILES="PROGRAMFILES64"
276                 YASMFLAGS="-f win64"
277             ;;
278             *)
279                 WINDOWS_ARCH="x86"
280                 PROGRAMFILES="PROGRAMFILES"
281                 YASMFLAGS="-f win32"
282             ;;
283         esac
284         AC_SUBST(WINDOWS_ARCH)
285         AC_SUBST(PROGRAMFILES)
286
287     fi
288     ;;
289   *nto*)
290     SYS=nto
291     ;;
292   solaris*)
293     SYS=solaris
294     ;;
295   hpux*)
296     SYS=hpux
297     ;;
298   symbian*)
299     SYS=symbian
300     ;;
301   *os2*)
302     SYS=os2
303     LDFLAGS="${LDFLAGS} -Zomf -Zbin-files -Zargs-wild -Zhigh-mem"
304     ;;
305   *)
306     SYS="${host_os}"
307     ;;
308 esac
309 AM_CONDITIONAL(HAVE_DARWIN,  test "${SYS}" = "darwin")
310 AM_CONDITIONAL(HAVE_LINUX,   test "${SYS}" = "linux")
311 AM_CONDITIONAL(HAVE_OS2,     test "${SYS}" = "os2")
312 AM_CONDITIONAL(HAVE_WIN32,   test "${SYS}" = "mingw32")
313 AM_CONDITIONAL(HAVE_WIN64,   test "${HAVE_WIN64}" = "1")
314 AM_CONDITIONAL(HAVE_SYMBIAN, test "${SYS}" = "symbian")
315 AM_CONDITIONAL(HAVE_IOS,   test "${HAVE_IOS}" = "1")
316 AM_CONDITIONAL(HAVE_OSX,   test "${HAVE_OSX}" = "1")
317
318 AC_SUBST(YASMFLAGS)
319
320 dnl
321 dnl Sadly autoconf does not think about testing foo.exe when ask to test
322 dnl for program foo on win32
323 case "${build_os}" in
324     cygwin|msys)
325         ac_executable_extensions=".exe"
326     ;;
327     *)
328     ;;
329 esac
330
331 dnl Android is linux, but a bit different
332 AS_IF([test "$SYS" = linux],[
333     AC_MSG_CHECKING([for an Android system])
334     AC_PREPROC_IFELSE([AC_LANG_PROGRAM(
335         [[#ifndef __ANDROID__
336          # error Not Android
337          #endif
338         ]],[[;]])
339     ],[
340       HAVE_ANDROID="1"
341       AC_MSG_RESULT([yes])
342     ],[
343       AC_MSG_RESULT([no])
344     ])
345 ])
346 AM_CONDITIONAL(HAVE_ANDROID, test "${HAVE_ANDROID}" = "1")
347
348
349 dnl
350 dnl  Check for the contrib directory
351 dnl
352 AC_ARG_WITH(contrib,
353   [AS_HELP_STRING([--with-contrib[=DIR]],
354     [search for 3rd party libraries in DIR/include and DIR/lib])
355 ])
356 AC_MSG_CHECKING([for 3rd party libraries path])
357 AS_IF([test -z "${with_contrib}" || test "${with_contrib}" = "yes"], [
358   CONTRIB_DIR="${srcdir}/contrib/${host}"
359   AS_IF([test ! -d "${CONTRIB_DIR}"], [
360     echo "${CONTRIB_DIR} not found" >&AS_MESSAGE_LOG_FD
361     CONTRIB_DIR="${srcdir}/contrib/`$CC -dumpmachine`"
362     AS_IF([test ! -d "${CONTRIB_DIR}"], [
363       echo "${CONTRIB_DIR} not found" >&AS_MESSAGE_LOG_FD
364       CONTRIB_DIR="${srcdir}/extras/contrib/hosts/${host}"
365       AS_IF([test ! -d "${CONTRIB_DIR}"], [
366         echo "${CONTRIB_DIR} not found" >&AS_MESSAGE_LOG_FD
367         CONTRIB_DIR="${srcdir}/extras/contrib/hosts/`$CC -dumpmachine`"
368         AS_IF([test ! -d "${CONTRIB_DIR}"], [
369           echo "${CONTRIB_DIR} not found" >&AS_MESSAGE_LOG_FD
370           CONTRIB_DIR=""
371           AC_MSG_RESULT([not found])
372         ])
373       ])
374     ])
375   ])
376 ], [
377   AS_IF([test "${with_contrib}" != "no"], [
378     CONTRIB_DIR="${with_contrib}"
379   ], [
380     CONTRIB_DIR=""
381     AC_MSG_RESULT([disabled])
382   ])
383 ])
384 AS_IF([test -n "${CONTRIB_DIR}"], [
385   AS_IF([test -d "${CONTRIB_DIR}/lib"],[
386     CONTRIB_DIR=`cd "${CONTRIB_DIR}" && pwd`
387   ], [
388     echo "${CONTRIB_DIR}/lib not found" >&AS_MESSAGE_LOG_FD
389     CONTRIB_DIR=""
390     AC_MSG_RESULT([not usable])
391   ])
392
393 ])
394 AS_IF([test -n "${CONTRIB_DIR}"], [
395   AC_MSG_RESULT([${CONTRIB_DIR}])
396   export PATH=${CONTRIB_DIR}/bin:$PATH
397   CPPFLAGS="${CPPFLAGS} -I${CONTRIB_DIR}/include"
398   CFLAGS="${CFLAGS} -I${CONTRIB_DIR}/include"
399   CXXFLAGS="${CXXFLAGS} -I${CONTRIB_DIR}/include"
400   OBJCFLAGS="${OBJCFLAGS} -I${CONTRIB_DIR}/include"
401   export PKG_CONFIG_PATH="${CONTRIB_DIR}/lib/pkgconfig:$PKG_CONFIG_PATH"
402   LDFLAGS="${LDFLAGS} -L${CONTRIB_DIR}/lib"
403
404   AS_IF([test "${SYS}" = "darwin"], [
405     export LD_LIBRARY_PATH="${CONTRIB_DIR}/lib:$LD_LIBRARY_PATH"
406     export DYLD_LIBRARY_PATH="${CONTRIB_DIR}/lib:$DYLD_LIBRARY_PATH"
407   ])
408 ], [
409   AS_IF([test -n "${with_contrib}" && test "${with_contrib}" != "no"], [
410     AC_MSG_ERROR([Third party libraries not found!])
411   ])
412 ])
413 AC_SUBST(CONTRIB_DIR)
414
415 dnl
416 dnl  Libtool
417 dnl  It's very bad, but our former custom system was worst
418 dnl  -- Courmisch
419 dnl
420
421 dnl override platform specific check for dependent libraries
422 dnl otherwise libtool linking of shared libraries will
423 dnl fail on anything other than pass_all.
424 AC_CACHE_VAL(lt_cv_deplibs_check_method,
425     [lt_cv_deplibs_check_method=pass_all])
426
427 LT_INIT([dlopen win32-dll shared disable-static])
428 LT_LANG([C++])
429 LT_LANG([Windows Resource])
430
431 DOLT
432
433 lt_cv_deplibs_check_method=pass_all
434
435 AS_IF([test "${enable_shared}" = "no" -a "${enable_vlc}" != "no"], [
436   AC_MSG_ERROR([VLC is based on plugins. Shared libraries cannot be disabled.])
437 ])
438
439 dnl
440 dnl Gettext stuff
441 dnl
442 AM_GNU_GETTEXT_VERSION([0.19.2])
443 AM_GNU_GETTEXT([external], [need-ngettext])
444
445 dnl
446 dnl Iconv stuff
447 dnl
448 AM_ICONV
449
450 dnl
451 dnl checks for mingw
452 AS_IF([test "${SYS}" = "mingw32"], [
453 dnl Check for broken versions of mingw-runtime compatability library
454     AC_MSG_CHECKING(for broken mingw-runtime)
455     AC_PREPROC_IFELSE([AC_LANG_SOURCE([
456 #include <_mingw.h>
457 #if defined(__MINGW64_VERSION_MAJOR)
458 # if __MINGW64_VERSION_MAJOR < 3
459 #  error Attempting to use mingw-runtime with broken vsnprintf and direct2d support
460 # endif
461 #elif __MINGW32_MAJOR_VERSION == 3 && __MINGW32_MINOR_VERSION < 15
462 # error Attempting to use mingw-runtime with broken vsnprintf support
463 #endif
464     ])], [
465         AC_MSG_RESULT([ok])
466     ], [
467         AC_MSG_RESULT([present])
468         AC_MSG_ERROR([LibVLC requires mingw-runtime version 3.15 or higher, or mingw-w64 version 3.0 or higher!])
469     ])
470     dnl force use of mingw provided c99 *printf over msvcrt
471     CPPFLAGS="${CPPFLAGS} -D__USE_MINGW_ANSI_STDIO=1"
472
473 dnl Check for the need to include the mingwex lib for mingw32
474     VLC_SAVE_FLAGS
475     AC_CHECK_LIB(mingwex,opendir,
476         AC_CHECK_LIB(mingw32,opendir,,
477             [VLC_ADD_LIBS([libvlccore],[-lmingwex])])
478     )
479     VLC_RESTORE_FLAGS
480
481 dnl Check for fnative-struct or mms-bitfields support for mingw32
482     VLC_SAVE_FLAGS
483     CFLAGS="${CFLAGS} -mms-bitfields"
484     CXXFLAGS="${CXXFLAGS} -mms-bitfields"
485     AC_CACHE_CHECK([if \$CC accepts -mms-bitfields],
486         [ac_cv_c_mms_bitfields],
487         [AC_TRY_COMPILE([],,ac_cv_c_mms_bitfields=yes, ac_cv_c_mms_bitfields=no)])
488     if test "${ac_cv_c_mms_bitfields}" = "no"; then
489         VLC_RESTORE_FLAGS
490         CFLAGS="${CFLAGS} -fnative-struct"
491         CXXFLAGS="${CXXFLAGS} -fnative-struct"
492         AC_CACHE_CHECK([if \$CC accepts -fnative-struct],
493             [ac_cv_c_fnative_struct],
494             [AC_TRY_COMPILE([],,ac_cv_c_fnative_struct=yes, ac_cv_c_fnative_struct=no)])
495         "${ac_cv_c_fnative_struct}" = "no" && VLC_RESTORE_FLAGS
496     fi
497 ])
498
499 AC_ARG_ENABLE(winstore_app,
500      AS_HELP_STRING([--enable-winstore-app],
501                     [Build targetted for Windows Store apps (default disabled)]))
502
503 vlc_winstore_app=0
504 AS_IF([test "${SYS}" = "mingw32" -a "${enable_winstore_app}" = "yes"], [
505     vlc_winstore_app=1
506     VLC_ADD_LIBS([libvlccore], [-lole32 -lruntimeobject])
507     ])
508 AC_DEFINE_UNQUOTED(VLC_WINSTORE_APP, ${vlc_winstore_app}, [Define to 1 if you want to build for Windows Store apps])
509 AM_CONDITIONAL([HAVE_WINSTORE], [test "$vlc_winstore_app" = "1"])
510
511
512 dnl
513 dnl Buggy glibc prevention. Purposedly not cached.
514 dnl See sourceware.org bugs 5058 and 5443.
515 dnl Ubuntu alone has 20 bug numbers for this...
516 dnl
517 AC_MSG_CHECKING(for buggy GNU/libc versions)
518 AC_PREPROC_IFELSE([AC_LANG_SOURCE([
519 #include <limits.h>
520 #if defined (__GLIBC__) && (__GLIBC__ == 2) \
521   && (__GLIBC_MINOR__ >= 5) && (__GLIBC_MINOR__ <= 7)
522 # error GNU/libc with dcgettext killer bug!
523 #endif
524 ])], [
525   AC_MSG_RESULT([not present])
526 ], [
527   AC_MSG_RESULT([found])
528   AS_IF([test "x${enable_nls}" != "xno"], [
529     AC_MSG_ERROR([Buggy GNU/libc (version 2.5 - 2.7) present. VLC would crash; there is no viable
530 work-around for this. Check with your distribution vendor on how to update the
531 glibc run-time. Alternatively, build with --disable-nls.])
532   ])
533 ])
534
535 dnl Plugin compilation stuff
536
537 VLC_LIBRARY_SUFFIX
538
539 dnl Check for system libs needed
540 need_libc=false
541
542 dnl Check for usual libc functions
543 AC_CHECK_DECLS([nanosleep],,,[#include <time.h>])
544 AC_CHECK_FUNCS([daemon fcntl fstatvfs fork getenv getpwuid_r isatty lstat memalign mmap openat pread posix_fadvise posix_madvise setlocale stricmp strnicmp strptime uselocale])
545 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])
546 AC_CHECK_FUNCS(fdatasync,,
547   [AC_DEFINE(fdatasync, fsync, [Alias fdatasync() to fsync() if missing.])
548 ])
549
550 dnl mingw64 implements those as static inline, not functions with C linkage
551 AC_LINK_IFELSE([
552     AC_LANG_PROGRAM([#include <stdio.h>], [
553         char *c;
554         if (asprintf(&c, "%s %d", "string", 1) == -1)
555             c = NULL;
556     ])],[AC_DEFINE([HAVE_ASPRINTF],[1],[Define to 1 if you have asprintf function])],[AC_LIBOBJ([asprintf])])
557 AC_LINK_IFELSE([
558     AC_LANG_PROGRAM([#include <stdio.h>
559                      #include <stdarg.h>], [
560         char *c;
561         va_list ap;
562         if (vasprintf(&c, "%s %d", ap) == -1)
563             c = NULL;
564     ])],[AC_DEFINE([HAVE_VASPRINTF],[1],[Define to 1 if you have asprintf function])],[AC_LIBOBJ([vasprintf])])
565
566 dnl C11 static_assert()
567 AC_MSG_CHECKING([for static_assert in assert.h])
568 AC_LINK_IFELSE([AC_LANG_PROGRAM([#include <assert.h>], [
569 static_assert(1, "The impossible happened.");
570 ])], [
571   AC_MSG_RESULT([yes])
572   AC_DEFINE([HAVE_STATIC_ASSERT], [1], [Define to 1 if <assert.h> defines static_assert.])
573 ], [
574   AC_MSG_RESULT([no])
575 ])
576
577 # Windows CE does not have strcoll()
578 AC_FUNC_STRCOLL
579
580 dnl Check for non-standard system calls
581 case "$SYS" in
582   "linux")
583     AC_CHECK_FUNCS([accept4 pipe2 eventfd vmsplice sched_getaffinity])
584     ;;
585   "mingw32")
586     AC_CHECK_FUNCS([_lock_file])
587     ;;
588 esac
589
590 AH_BOTTOM([#include <vlc_fixups.h>])
591
592 dnl Check for struct pollfd
593 AC_CHECK_TYPES([struct pollfd],,,
594 [#include <sys/types.h>
595 #if HAVE_POLL
596 # include <poll.h>
597 #elif defined (_WIN32)
598 # include <winsock2.h>
599 #endif
600 ])
601
602 dnl Checks for socket stuff
603 VLC_SAVE_FLAGS
604 SOCKET_LIBS=""
605 AC_SEARCH_LIBS(connect, [socket], [
606   AS_IF([test "$ac_cv_search_connect" != "none required"], [
607     SOCKET_LIBS="$ac_cv_search_connect"
608   ])
609 ], [
610   AS_IF([test "${SYS}" = "mingw32"], [
611     SOCKET_LIBS="-lws2_32"
612   ])
613 ])
614
615 AC_SEARCH_LIBS([inet_pton], [nsl], [
616  AS_IF([test "$ac_cv_search_getaddrinfo" != "none required"], [
617     SOCKET_LIBS="$ac_cv_search_getaddrinfo $SOCKET_LIBS"
618   ])
619 ],, [${SOCKET_LIBS}])
620
621 LIBS="${LIBS} ${SOCKET_LIBS}"
622 AC_LINK_IFELSE([
623     AC_LANG_PROGRAM([#ifdef _WIN32
624         # if _WIN32_WINNT < 0x600
625         #  error Needs vista+
626         # endif
627         #include <ws2tcpip.h>
628         #else
629         #include <sys/socket.h>
630         #include <arpa/inet.h>
631         #endif], [
632         char dst[[sizeof(struct in_addr)]];
633         inet_pton(AF_INET, "127.0.0.1", dst);
634     ])],[AC_DEFINE([HAVE_INET_PTON],[1],[Define to 1 if you have inet_pton function])],[AC_LIBOBJ([inet_pton])])
635 AC_CHECK_FUNCS([if_nameindex if_nametoindex])
636 VLC_RESTORE_FLAGS
637
638 AS_IF([test -n "$SOCKET_LIBS"], [
639   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}])
640 ])
641 AC_SUBST(SOCKET_LIBS)
642
643 dnl Check for socklen_t
644 AH_TEMPLATE(socklen_t, [Define to `int' if <sys/socket.h> does not define.])
645 AC_CACHE_CHECK([for socklen_t in sys/socket.h], dnl ` (fix VIM syntax highlight
646 ac_cv_type_socklen_t,
647 [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([
648 [#include <sys/types.h>
649 #ifdef _WIN32
650 # include <winsock2.h>
651 # include <ws2tcpip.h>
652 #else
653 # include <sys/socket.h>
654 #endif]], [[socklen_t len; len = 0;]])],
655 ac_cv_type_socklen_t=yes,
656 ac_cv_type_socklen_t=no)])
657 AS_IF([test "$ac_cv_type_socklen_t" = no],
658  [AC_DEFINE(socklen_t, int)])
659
660 dnl Check for struct sockaddr_storage
661 AH_TEMPLATE(sockaddr_storage, [Define to `sockaddr' if <sys/socket.h> does not define.]) dnl ` (fix VIM syntax highlight
662 AH_TEMPLATE(ss_family, [Define to `sa_family' if <sys/socket.h> does not define.]) dnl ` (fix VIM syntax highlight
663 AC_CACHE_CHECK([for struct sockaddr_storage], ac_cv_struct_sockaddr_storage,
664   [AC_TRY_COMPILE(
665     [#include <sys/types.h>
666      #if defined( _WIN32 )
667      # include <winsock2.h>
668      #else
669      # include <sys/socket.h>
670      #endif], [struct sockaddr_storage addr;],
671      ac_cv_struct_sockaddr_storage=yes,
672      ac_cv_struct_sockaddr_storage=no)])
673 AS_IF([test "${ac_cv_struct_sockaddr_storage}" = no], [
674   AC_DEFINE(sockaddr_storage, sockaddr)
675   AC_DEFINE(ss_family, sa_family)
676 ])
677
678 dnl FreeBSD has a gnugetopt library for this:
679 GNUGETOPT_LIBS=""
680 AC_CHECK_FUNC(getopt_long,, [
681   AC_CHECK_LIB([gnugetopt],[getopt_long], [
682     GNUGETOPT_LIBS="-lgnugetopt"
683   ])
684 ])
685 AC_SUBST(GNUGETOPT_LIBS)
686
687 AC_CHECK_LIB(m,cos,[
688   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],[-lm])
689   LIBM="-lm"
690 ], [
691   LIBM=""
692 ])
693 AC_SUBST(LIBM)
694
695 AC_CHECK_LIB(m,lrintf, [
696   AC_DEFINE(HAVE_LRINTF, 1, [Define to 1 if you have the lrintf function])
697   VLC_ADD_LIBS([skins2],[-lm])
698 ])
699 AC_CHECK_LIB(m,nanf,
700   AC_DEFINE(HAVE_NANF, 1, [Define to 1 if you have the NANF function])
701 )
702
703 dnl Check for dynamic plugins
704 LIBDL=""
705 have_dynamic_objects="no"
706 VLC_SAVE_FLAGS
707 AC_SEARCH_LIBS(dlsym, [dl svld], [
708   AS_IF([test "$ac_cv_search_dlsym" != "none required"], [
709     LIBDL="$ac_cv_search_dlsym"
710   ])
711   have_dynamic_objects="yes"
712 ])
713 VLC_RESTORE_FLAGS
714
715 # Windows
716 AS_IF([test "${SYS}" = "mingw32"], [
717   LIBDL=""
718   have_dynamic_objects="yes" #assume we can use shared objects
719 ])
720
721 AS_IF([test "${enable_shared}" = "no"], [
722   have_dynamic_objects=no
723 ])
724 AM_CONDITIONAL(HAVE_DYNAMIC_PLUGINS, [test "${have_dynamic_objects}" != "no"])
725
726 AC_SUBST(LIBDL)
727
728 dnl Check for thread library
729 LIBPTHREAD=""
730 AS_IF([test "${SYS}" != "mingw32"], [
731   VLC_SAVE_FLAGS
732   LIBS=""
733   AC_SEARCH_LIBS(pthread_rwlock_init, pthread pthreads c_r, [
734     AS_IF([test "$ac_cv_search_pthread_rwlock_init" != "none required"], [
735       LIBPTHREAD="$ac_cv_search_pthread_rwlock_init"
736     ])
737   ])
738   VLC_RESTORE_FLAGS
739
740   AC_CHECK_LIB(rt, clock_nanosleep, [
741     VLC_ADD_LIBS([libvlccore],[-lrt])
742   ], [
743     AC_CHECK_FUNC(nanosleep,,[
744       AC_CHECK_LIB(rt,nanosleep, [
745         VLC_ADD_LIBS([libvlccore],[-lrt])
746       ], [
747         AC_CHECK_LIB(posix4,nanosleep, [
748           VLC_ADD_LIBS([libvlccore],[-lposix4])
749         ])
750       ])
751     ])
752     dnl HP/UX port
753     AC_CHECK_LIB(rt,sem_init, [VLC_ADD_LIBS([libvlccore],[-lrt])])
754   ])
755 ])
756 AC_SUBST(LIBPTHREAD)
757
758 dnl Check for headers
759 dnl  POSIX
760 AC_CHECK_HEADERS([arpa/inet.h pthread.h search.h syslog.h sys/shm.h sys/socket.h])
761 AC_CHECK_HEADERS([net/if.h], [], [],
762 [
763 #include <sys/types.h>
764 #include <sys/socket.h>
765 ])
766 dnl  BSD
767 AC_CHECK_HEADERS([netinet/udplite.h sys/param.h sys/mount.h])
768 dnl  GNU/Linux
769 AC_CHECK_HEADERS([getopt.h linux/dccp.h linux/magic.h mntent.h sys/eventfd.h])
770 dnl  MacOS
771 AC_CHECK_HEADERS([xlocale.h])
772
773 dnl LP64 and LLP64 architectures had better define ssize_t by themselves...
774 AH_TEMPLATE(ssize_t, [Define to `int' if <stddef.h> does not define.]) dnl ` (fix VIM syntax highlight
775 AC_CHECK_TYPE(ssize_t,, [
776   AC_DEFINE(ssize_t, int)
777 ])
778
779 dnl It seems that autoconf detects pkg-config only during the first
780 dnl PKG_CHECK_MODULES from configure.ac - which makes sense. But in our case,
781 dnl it is nested within a conditional block, so it was not working right.
782 dnl Make PKG_CONFIG_PATH precious so that it appears in the help and get saved
783 AC_ARG_VAR(PKG_CONFIG_PATH,
784        [Paths where to find .pc not at the default location])
785 PKG_PROG_PKG_CONFIG()
786
787 dnl On some OS we need static linking
788 AS_IF([test -n "${PKG_CONFIG}" ],[
789     AS_IF([test "${SYS}" = "mingw32" -o "${SYS}" = "darwin" -o "${SYS}" = "os2" ],[
790         PKG_CONFIG="${PKG_CONFIG} --static"
791     ])
792 ])
793
794
795 dnl
796 dnl Check for zlib.h and -lz along with system -lminizip if available
797 dnl
798 AC_CHECK_HEADERS(zlib.h, [ have_zlib=yes ], [ have_zlib=no ])
799 AM_CONDITIONAL(HAVE_ZLIB, [ test "${have_zlib}" = "yes" ])
800 if test "${have_zlib}" = "yes"
801 then
802   VLC_ADD_LIBS([skins2 sap unzip zip],[-lz])
803   PKG_CHECK_MODULES([MINIZIP], [minizip] , [ have_minizip=yes ], [
804     AC_CHECK_HEADERS([unzip.h], [
805       have_minizip=yes
806       MINIZIP_LIBS="-lminizip -lz"
807     ], [
808       VLC_ADD_CPPFLAGS([skins2], [-I\\\$(top_srcdir)/modules/access/zip/unzip])
809       VLC_ADD_LIBS([skins2], [\\\$(top_builddir)/modules/libunzip.la])
810       have_minizip=no
811     ])
812   ])
813   VLC_ADD_CPPFLAGS([skins2],[$MINIZIP_CFLAGS])
814   VLC_ADD_LIBS([skins2],[$MINIZIP_LIBS])
815 fi
816 AM_CONDITIONAL(HAVE_MINIZIP, [ test "${have_minizip}" = "yes" ])
817
818
819 dnl
820 dnl Domain name i18n support via GNU libidn
821 dnl
822 PKG_CHECK_MODULES([IDN], [libidn], [
823   have_libidn="yes"
824   AC_DEFINE([HAVE_IDN], 1, [Define to 1 if you have GNU libidn.])
825 ], [
826   have_libidn="no"
827 ])
828
829
830 dnl Check for dbus
831 AC_ARG_ENABLE(dbus,
832   [AS_HELP_STRING([--enable-dbus],
833     [compile D-Bus message bus support (default enabled)])])
834 have_dbus="no"
835 AS_IF([test "${enable_dbus}" != "no"], [
836   PKG_CHECK_MODULES(DBUS, [dbus-1 >= 1.6.0], [
837     have_dbus="yes"
838   ], [
839     AS_IF([test -n "${enable_dbus}"], [
840       AC_MSG_ERROR([${DBUS_PKG_ERRORS}.])
841     ], [
842       AC_MSG_WARN([${DBUS_PKG_ERRORS}.])
843     ])
844   ])
845 ])
846 AM_CONDITIONAL([HAVE_DBUS], [test "${have_dbus}" = "yes"])
847
848 dnl Check for ntohl, etc.
849 VLC_SAVE_FLAGS
850 CFLAGS="${CFLAGS} -Wall -Werror"
851 AC_CACHE_CHECK([for ntohl in sys/param.h],
852     [ac_cv_c_ntohl_sys_param_h],
853     [     AC_TRY_COMPILE([#include <sys/param.h>],
854         [int meuh; ntohl(meuh);],
855         ac_cv_c_ntohl_sys_param_h=yes, ac_cv_c_ntohl_sys_param_h=no)])
856 if test "${ac_cv_c_ntohl_sys_param_h}" != "no"; then
857     AC_DEFINE(NTOHL_IN_SYS_PARAM_H, 1, Define if <sys/param.h> defines ntohl.)
858 fi
859 VLC_RESTORE_FLAGS
860
861 EXTEND_HELP_STRING([Optimization options:])
862 dnl
863 dnl  Compiler warnings
864 dnl
865
866 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])
867 RDC_PROG_CC_FLAGS([-pipe])
868 AC_LANG_PUSH([C++])
869 RDC_PROG_CXX_WFLAGS([all extra sign-compare undef pointer-arith volatile-register-var])
870 AC_LANG_POP([C++])
871
872 dnl
873 dnl  Debugging mode
874 dnl
875 AC_ARG_ENABLE(debug,
876   [AS_HELP_STRING([--enable-debug],
877     [build with run-time assertions (default disabled)])],,
878   [enable_debug="no"])
879 AH_TEMPLATE(NDEBUG,
880             [Define to 1 if debug code should NOT be compiled])
881 AS_IF([test "${enable_debug}" != "no"], [
882   AC_CHECK_HEADERS([valgrind/valgrind.h])
883 ], [
884   AC_DEFINE(NDEBUG)
885 ])
886
887 dnl
888 dnl  Profiling
889 dnl
890 AC_ARG_ENABLE(gprof,
891   [AS_HELP_STRING([--enable-gprof],[profile with gprof (default disabled)])],,
892   [enable_gprof="no"])
893 AS_IF([test "${enable_gprof}" != "no"], [
894   CFLAGS="${CFLAGS} -pg"
895   CXXFLAGS="${CXXFLAGS} -pg"
896   OBJCFLAGS="${OBJCFLAGS} -pg"
897   LDFLAGS="${LDFLAGS} -pg"
898 ])
899
900 AC_ARG_ENABLE(cprof,
901   [AS_HELP_STRING([--enable-cprof],[profile with cprof (default disabled)])],,
902   [enable_cprof="no"])
903 AS_IF([test "${enable_gprof}" != "no"], [
904   CFLAGS="${CFLAGS} -finstrument-functions"
905   CXXFLAGS="${CXXFLAGS} -finstrument-functions"
906   OBJCFLAGS="${OBJCFLAGS} -finstrument-functions"
907   LDFLAGS="${LDFLAGS} -finstrument-functions"
908 ])
909
910 dnl
911 dnl  Test coverage
912 dnl
913 AC_ARG_ENABLE(coverage,
914   [AS_HELP_STRING([--enable-coverage],
915     [build for test coverage (default disabled)])],,
916   [enable_coverage="no"])
917 AS_IF([test "${enable_coverage}" != "no"], [
918   CFLAGS="-fprofile-arcs -ftest-coverage ${CFLAGS}"
919   CXXFLAGS="-fprofile-arcs -ftest-coverage ${CXXFLAGS}"
920   LDFLAGS="-lgcov ${LDFLAGS}"
921 ])
922
923 AS_IF([test "${SYS}" != "mingw32" -a "${SYS}" != "os2"], [
924   VLC_SAVE_FLAGS
925   CFLAGS="${CFLAGS} -fvisibility=hidden"
926   CXXFLAGS="${CXXFLAGS} -fvisibility=hidden"
927   OBJCFLAGS="${OBJCFLAGS} -fvisibility=hidden"
928   AC_CACHE_CHECK([if $CC accepts -fvisibility=hidden],
929                  [ac_cv_c_visibility_hidden], [
930     AC_COMPILE_IFELSE([AC_LANG_PROGRAM()], [
931       ac_cv_c_visibility_hidden=yes
932     ], [
933       ac_cv_c_visibility_hidden=no
934     ])
935   ])
936   AS_IF([test "${ac_cv_c_visibility_hidden}" = "no"], [VLC_RESTORE_FLAGS])
937 ])
938
939
940 dnl
941 dnl  Enable/disable optimizations
942 dnl
943 AC_ARG_ENABLE(optimizations,
944   [AS_HELP_STRING([--disable-optimizations],
945     [disable compiler optimizations (default enabled)])],,
946   [enable_optimizations="yes"])
947
948 dnl Check for various optimization flags
949 AS_IF([test "${enable_optimizations}" != "no"], [
950
951   dnl -O4 and -O3 only in production builds
952   AS_IF([test "${enable_debug}" = "no"], [
953     VLC_SAVE_FLAGS
954     CFLAGS="${CFLAGS} -O4"
955     CXXFLAGS="${CXXFLAGS} -O4"
956     OBJCFLAGS="${OBJCFLAGS} -O4"
957     AC_CACHE_CHECK([if $CC accepts -O4], [ac_cv_c_o4], [
958       AC_COMPILE_IFELSE([AC_LANG_PROGRAM()], [
959         ac_cv_c_o4=yes
960       ], [
961         ac_cv_c_o4=no
962       ])
963     ])
964     AS_IF([test "${ac_cv_c_o4}" = "no"], [
965       VLC_RESTORE_FLAGS
966       CFLAGS="${CFLAGS} -O3"
967       CXXFLAGS="${CXXFLAGS} -O3"
968       OBJCFLAGS="${OBJCFLAGS} -O3"
969       AC_CACHE_CHECK([if $CC accepts -O3],  [ac_cv_c_o3], [
970         AC_COMPILE_IFELSE([AC_LANG_PROGRAM()], [
971           ac_cv_c_o3=yes
972         ], [
973           ac_cv_c_o3=no
974         ])
975       ])
976       AS_IF([test "${ac_cv_c_o3}" = "no"], [VLC_RESTORE_FLAGS])
977     ])
978   ])
979
980   dnl Check for -ffast-math
981   VLC_SAVE_FLAGS
982   CFLAGS="${CFLAGS} -ffast-math"
983   CXXFLAGS="${CXXFLAGS} -ffast-math"
984   OBJCFLAGS="${OBJCFLAGS} -ffast-math"
985   AC_CACHE_CHECK([if $CC accepts -ffast-math], [ac_cv_c_fast_math], [
986     AC_COMPILE_IFELSE([AC_LANG_PROGRAM()], [
987       ac_cv_c_fast_math=yes
988     ], [
989       ac_cv_c_fast_math=no
990     ])
991   ])
992   AS_IF([test "${ac_cv_c_fast_math}" = "no"], [VLC_RESTORE_FLAGS])
993   AH_BOTTOM([
994 #ifndef __FAST_MATH__
995 # pragma STDC FENV_ACCESS OFF
996 # pragma STDC FP_CONTRACT ON
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       VLC_ADD_PLUGIN([swscale])
2491       VLC_ADD_LIBS([swscale],[$SWSCALE_LIBS])
2492       VLC_ADD_CFLAGS([swscale],[$SWSCALE_CFLAGS])
2493       AS_IF([test -n "${ac_cv_ld_bsymbolic}"], [
2494         VLC_ADD_LIBS([swscale],[${ac_cv_ld_bsymbolic}])
2495       ])
2496       VLC_RESTORE_FLAGS
2497     ],[
2498       AC_MSG_ERROR([${SWSCALE_PKG_ERRORS}. Pass --disable-swscale to ignore this error. Proper software scaling and some video chroma conversion will be missing.])
2499   ])
2500 fi
2501
2502 dnl
2503 dnl  postproc plugin
2504 dnl
2505
2506 AC_ARG_ENABLE(postproc,
2507 [  --enable-postproc       libpostproc image post-processing (default auto)])
2508 if test "${enable_postproc}" != "no"
2509 then
2510   PKG_CHECK_MODULES(POSTPROC,[libpostproc libavutil],
2511     [
2512       VLC_SAVE_FLAGS
2513       CPPFLAGS="${CPPFLAGS} ${POSTPROC_CFLAGS}"
2514       CFLAGS="${CFLAGS} ${POSTPROC_CFLAGS}"
2515       AC_CHECK_HEADERS(postproc/postprocess.h)
2516       VLC_ADD_PLUGIN([postproc])
2517       VLC_ADD_LIBS([postproc],[$POSTPROC_LIBS $AVUTIL_LIBS])
2518       VLC_ADD_CFLAGS([postproc],[$POSTPROC_CFLAGS $AVUTIL_CFLAGS])
2519       VLC_RESTORE_FLAGS
2520     ],[
2521       AC_MSG_WARN([${POSTPROC_PKG_ERRORS}.])
2522   ])
2523 fi
2524
2525 dnl
2526 dnl  faad decoder plugin
2527 dnl
2528 AC_ARG_ENABLE(faad,
2529 [  --enable-faad           faad codec (default auto)])
2530 if test "${enable_faad}" != "no"; then
2531   AC_ARG_WITH(faad-tree,  [  --with-faad-tree=PATH   faad tree for static linking])
2532   if test -n "${with_faad_tree}"; then
2533     AC_MSG_CHECKING(for libfaad.a in ${with_faad_tree})
2534     real_faad_tree="`cd ${with_faad_tree} 2>/dev/null && pwd`"
2535     if test -z "${real_faad_tree}"; then
2536       dnl  The given directory can't be found
2537       AC_MSG_RESULT(no)
2538       AC_MSG_ERROR([cannot cd to ${with_faad_tree}])
2539     fi
2540     if test -f "${real_faad_tree}/libfaad/.libs/libfaad.a"; then
2541       dnl  Use the custom faad
2542       AC_MSG_RESULT(${real_faad_tree}/libfaad/.libs/libfaad.a)
2543       VLC_ADD_PLUGIN([faad])
2544       VLC_ADD_LIBS([faad],[${real_faad_tree}/libfaad/.libs/libfaad.a])
2545       VLC_ADD_CPPFLAGS([faad],[-I${real_faad_tree}/include])
2546     else
2547       dnl  The given libfaad wasn't built
2548       AC_MSG_RESULT(no)
2549       AC_MSG_ERROR([cannot find ${real_faad_tree}/libfaad/.libs/libfaad.a, make sure you compiled libfaad in ${with_faad_tree}])
2550     fi
2551   else
2552     VLC_SAVE_FLAGS
2553     CPPFLAGS="${CPPFLAGS} ${CPPFLAGS_faad}"
2554     LDFLAGS="${LDFLAGS} ${LIBS_faad}"
2555     AC_CHECK_HEADERS(faad.h,
2556       [ AC_CHECK_LIB(faad, faacDecOpen, [
2557           VLC_ADD_PLUGIN([faad])
2558           VLC_ADD_LIBS([faad],[-lfaad]) ], [
2559             AC_CHECK_LIB(faad, NeAACDecOpen, [
2560               VLC_ADD_PLUGIN([faad])
2561               VLC_ADD_LIBS([faad],[-lfaad]) ], [
2562                 AS_IF([test "${enable_faad}" = "yes"],
2563                 [ AC_MSG_ERROR([Cannot find libfaad library...]) ],
2564                 [ AC_MSG_WARN([Cannot find libfaad library...]) ]) ]) ])
2565       ] , [ AS_IF([test "${enable_faad}" = "yes"],
2566         [ AC_MSG_ERROR([Cannot find development headers for libfaad...]) ],
2567         [ AC_MSG_WARN([Cannot find development headers for libfaad...]) ]) ])
2568     VLC_RESTORE_FLAGS
2569   fi
2570 fi
2571
2572 dnl
2573 dnl libvpx decoder plugin
2574 dnl
2575 AC_ARG_ENABLE(vpx,
2576     AS_HELP_STRING([--enable-vpx],[libvpx VP8/VP9 decoder (default auto)]))
2577 AS_IF([test "${enable_vpx}" != "no"],[
2578     PKG_CHECK_MODULES([VPX], [vpx] , [
2579         VLC_ADD_PLUGIN([vpx])
2580         VLC_ADD_CPPFLAGS([vpx], [${VPX_CFLAGS}])
2581         VLC_ADD_LIBS([vpx], [${VPX_LIBS}])
2582         AC_CHECK_LIB([vpx],[vpx_codec_vp8_dx], [
2583             VLC_ADD_CPPFLAGS([vpx], [-DENABLE_VP8_DECODER])
2584         ], [], [${VPX_LIBS}])
2585         AC_CHECK_LIB([vpx],[vpx_codec_vp9_dx], [
2586             VLC_ADD_CPPFLAGS([vpx], [-DENABLE_VP9_DECODER])
2587         ], [], [${VPX_LIBS}])
2588     ], [
2589     AS_IF([test "${enable_vpx}" = "yes"],[
2590         AC_MSG_ERROR([libvpx was not found])
2591     ])])
2592 ])
2593
2594 dnl
2595 dnl twolame encoder plugin
2596 dnl
2597 PKG_ENABLE_MODULES_VLC([TWOLAME], [], [twolame], [MPEG Audio Layer 2 encoder], [auto], [], [], [ -DLIBTWOLAME_STATIC])
2598
2599 dnl
2600 dnl fdk-aac encoder plugin
2601 dnl
2602 PKG_ENABLE_MODULES_VLC([FDKAAC], [], [fdk-aac], [FDK-AAC encoder], [disabled])
2603
2604 dnl
2605 dnl  QuickTime plugin
2606 dnl
2607 AC_ARG_ENABLE(quicktime,
2608   [  --enable-quicktime      QuickTime module (deprecated)])
2609 if test "${enable_quicktime}" = "yes"; then
2610   if test "${SYS}" = "mingw32"; then
2611     VLC_ADD_PLUGIN([quicktime])
2612   else
2613   AC_CHECK_HEADERS(QuickTime/QuickTime.h,
2614     [ VLC_ADD_PLUGIN([quicktime])
2615       VLC_ADD_LIBS([quicktime],[-Wl,-framework,QuickTime,-framework,Carbon])
2616     ], [ AC_MSG_ERROR([cannot find QuickTime headers]) ])
2617   fi
2618 fi
2619
2620 dnl
2621 dnl A52/AC3 decoder plugin
2622 dnl
2623 AC_ARG_ENABLE(a52,
2624   [  --enable-a52            A/52 support with liba52 (default enabled)])
2625 if test "${enable_a52}" != "no"
2626 then
2627   AC_ARG_WITH(a52,
2628     [  --with-a52=PATH         a52 headers and libraries])
2629   AC_ARG_WITH(a52-tree,
2630     [  --with-a52-tree=PATH    a52dec tree for static linking ],[],[])
2631   if test "${with_a52_tree}" != "no" -a -n "${with_a52_tree}"
2632   then
2633     real_a52_tree="`cd ${with_a52_tree} 2>/dev/null && pwd`"
2634     if test -z "${real_a52_tree}"
2635     then
2636       dnl  The given directory can't be found
2637       AC_MSG_RESULT(no)
2638       AC_MSG_ERROR([${with_a52_tree} directory does not exist])
2639     fi
2640     dnl  Use a custom a52dec
2641     AC_MSG_CHECKING(for a52.h in ${real_a52_tree}/include)
2642     if test -f ${real_a52_tree}/include/a52.h
2643     then
2644       AC_MSG_RESULT(yes)
2645       VLC_ADD_CPPFLAGS([a52tofloat32],[-I${real_a52_tree}])
2646       VLC_ADD_LIBS([a52tofloat32],[-L${real_a52_tree}/liba52/.libs])
2647       VLC_SAVE_FLAGS
2648       LDFLAGS="${LDFLAGS} ${LIBS_a52tofloat32}"
2649       AC_CHECK_LIB(a52, a52_free, [
2650         VLC_ADD_PLUGIN([a52tofloat32])
2651         VLC_ADD_CPPFLAGS([a52tofloat32],[-DUSE_A52DEC_TREE])
2652         VLC_ADD_LIBS([a52tofloat32],[-la52])
2653         ],[
2654         if test -f ${real_a52_tree}/liba52/.libs/liba52.a
2655         then
2656           AC_MSG_ERROR([make sure you have at least a52dec-0.7.3 ($real_a52_tree)])
2657         else
2658           AC_MSG_ERROR([the specified tree has not been compiled])
2659         fi
2660       ])
2661     else
2662       AC_MSG_RESULT(no)
2663       AC_MSG_ERROR([the specified tree does not have a52.h])
2664     fi
2665   else
2666     if test -z "${with_a52}"
2667     then
2668       LDFLAGS_test=""
2669       CPPFLAGS_test=""
2670     else
2671       LDFLAGS_test="-L${with_a52}/lib"
2672       CPPFLAGS_test="-I${with_a52}/include"
2673     fi
2674     VLC_SAVE_FLAGS
2675     CPPFLAGS="${CPPFLAGS} ${CPPFLAGS_test} ${CPPFLAGS_a52tofloat32}"
2676     LDFLAGS="${LDFLAGS} ${LDFLAGS_test} ${LIBS_a52tofloat32}"
2677     AC_CHECK_HEADERS(a52dec/a52.h, [
2678       AC_CHECK_LIB(a52, a52_free, [
2679         VLC_ADD_PLUGIN([a52tofloat32])
2680         VLC_ADD_LIBS([a52tofloat32],[${LDFLAGS_test} -la52])
2681         VLC_ADD_CPPFLAGS([a52tofloat32],[${CPPFLAGS_test}])
2682       ],[
2683         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.])
2684         ], [$LIBM])
2685     ],[
2686       AC_MSG_ERROR([Could not find liba52 on your system: you may get it from http://liba52.sf.net/. Alternatively you can use --disable-a52 to disable the a52 plugin.])
2687     ])
2688     VLC_RESTORE_FLAGS
2689   fi
2690 fi
2691
2692 dnl
2693 dnl DTS Coherent Acoustics decoder plugin
2694 dnl
2695 PKG_ENABLE_MODULES_VLC([DCA], [dtstofloat32], [libdca >= 0.0.5], [DTS Coherent Acoustics support with libdca], [auto])
2696
2697 dnl
2698 dnl  Flac plugin
2699 dnl
2700 PKG_ENABLE_MODULES_VLC([FLAC], [], [flac], [libflac decoder/encoder support], [auto])
2701
2702 dnl
2703 dnl  Libmpeg2 plugin
2704 dnl
2705 PKG_ENABLE_MODULES_VLC([LIBMPEG2], [], [libmpeg2 > 0.3.2], [libmpeg2 decoder support], [auto])
2706
2707 dnl
2708 dnl  Vorbis plugin
2709 dnl
2710 PKG_ENABLE_MODULES_VLC([VORBIS], [], [ogg vorbis >= 1.1 vorbisenc >= 1.1], [Vorbis decoder and encoder], [auto])
2711
2712 dnl
2713 dnl  Tremor plugin
2714 dnl
2715 AC_ARG_ENABLE(tremor,
2716   [  --enable-tremor         Tremor decoder support (default disabled)])
2717 if test "${enable_tremor}" = "yes"
2718 then
2719   AC_CHECK_HEADERS(tremor/ivorbiscodec.h, [
2720     VLC_ADD_PLUGIN([tremor])
2721    ],[])
2722 fi
2723
2724 dnl
2725 dnl  Speex plugins
2726 dnl
2727 PKG_ENABLE_MODULES_VLC([SPEEX], [], [ogg speex >= 1.0.5], [Speex support], [auto])
2728 have_speexdsp="no"
2729 AS_IF([test "${enable_speex}" != "no"], [
2730   PKG_CHECK_MODULES([SPEEXDSP], [speexdsp], [
2731     have_speexdsp="yes"
2732   ], [
2733     AC_MSG_WARN([${SPEEXDSP_PKG_ERRORS}.])
2734   ])
2735 ])
2736 AM_CONDITIONAL([HAVE_SPEEXDSP], [test "$have_speexdsp" = "yes"])
2737
2738 dnl
2739 dnl  Opus plugin
2740 dnl
2741 PKG_ENABLE_MODULES_VLC([OPUS], [], [ogg opus >= 1.0.3], [Opus support], [auto])
2742
2743 dnl
2744 dnl  theora decoder plugin
2745 dnl
2746 PKG_ENABLE_MODULES_VLC([THEORA], [], [ogg theoradec >= 1.0 theoraenc], [experimental theora codec], [auto])
2747
2748 dnl
2749 dnl  Daala decoder plugin
2750 dnl
2751 PKG_ENABLE_MODULES_VLC([DAALA], [], [ogg daaladec daalaenc], [experimental daala codec], [disabled])
2752
2753 dnl
2754 dnl  schroedinger decoder plugin (for dirac format video)
2755 dnl
2756 PKG_ENABLE_MODULES_VLC([SCHROEDINGER], [], [schroedinger-1.0 >= 1.0.10], [dirac decoder and encoder using schroedinger], [auto])
2757
2758 dnl
2759 dnl  PNG decoder module
2760 dnl
2761 AC_ARG_ENABLE(png,
2762   [  --enable-png            PNG support (default enabled)])
2763 AS_IF([test "${enable_png}" != "no"], [
2764 AC_CHECK_HEADERS(png.h, [
2765   VLC_SAVE_FLAGS
2766   LDFLAGS="${LDFLAGS} -lz $LIBM"
2767   AC_CHECK_LIB(png, png_set_rows, [
2768     VLC_ADD_PLUGIN([png])
2769   ], [], [-lz $LIBM])
2770   VLC_RESTORE_FLAGS
2771   ])
2772 ])
2773
2774 dnl
2775 dnl  JPEG decoder module
2776 dnl
2777 AC_ARG_ENABLE(jpeg,
2778   [  --enable-jpeg           JPEG support (default enabled)])
2779 AS_IF([test "${enable_jpeg}" != "no"], [
2780 AC_CHECK_HEADERS(jpeglib.h, [
2781   VLC_ADD_PLUGIN([jpeg])
2782   ])
2783 ])
2784
2785 dnl
2786 dnl H262 encoder plugin (lib262)
2787 dnl
2788 AC_ARG_ENABLE(x262,
2789   [  --enable-x262           H262 encoding support with static libx262 (default disabled)])
2790 if test "${enable_x262}" != "no"; then
2791 AC_ARG_WITH(x262-tree,
2792   [ --with-x262-tree=PATH      H262 encoding module with libx262 (static linking)],[],[])
2793   if test "${with_x262_tree}" != "no" -a -n "${with_x262_tree}"
2794   then
2795     real_x262_tree="̧`cd ${with_x262_tree} 2>/dev/null && pwd`"
2796     if test -z "${real_x262_tree}"
2797     then
2798       AC_MSG_RESULT(no)
2799       AC_MSG_ERROR([${with_x262_tree} directory does not exist])
2800     fi
2801     AC_MSG_CHECKING(for x262.h in ${real_x262_tree})
2802     if test -f ${with_x262_tree}/x262_config.h
2803     then
2804       VLC_ADD_PLUGIN([x262])
2805       VLC_ADD_CFLAGS([x262],[-I${with_x262_tree}])
2806       VLC_ADD_LIBS([x262],[-L${with_x262_tree} -lm -lpthread -lx262])
2807     else
2808       AC_MSG_RESULT(no)
2809       AC_MSG_ERROR([${with_x262_tree} doesnt have x262_config.h])
2810     fi
2811   else
2812     PKG_CHECK_MODULES(X262, x262, [
2813         VLC_ADD_PLUGIN([x262])
2814         VLC_ADD_LDFLAGS([x262],[${X262_LIBS}])
2815         AS_IF([test -n "${ac_cv_ld_bsymbolic}"], [
2816           VLC_ADD_LIBS([x262],[${av_cv_ld_bsymbolic}])
2817         ])
2818         VLC_ADD_CFLAGS([x262],[${X262_CFLAGS}])
2819         if echo ${X262_LIBS} |grep -q 'pthreadGC2'; then
2820           VLC_ADD_CFLAGS([x262], [-DPTW32_STATIC_LIB])
2821         fi
2822     ], [
2823        if test "${enable_x262}" = "yes"; then
2824         AC_MSG_ERROR([x262 module doesn't work without staticly compiled libx262.a])
2825        fi
2826     ])
2827   fi
2828 fi
2829
2830 dnl x265 encoder
2831 PKG_ENABLE_MODULES_VLC([X265],, [x265], [HEVC/H.265 encoder], [auto])
2832
2833 dnl
2834 dnl H264 encoder plugin (10-bit lib264)
2835 dnl
2836 AC_ARG_ENABLE(x26410b,
2837   [  --enable-x26410b           H264 10-bit encoding support with static libx264 (default disabled)])
2838 if test "${enable_x26410b}" != "no"; then
2839 AC_ARG_WITH(x26410b-tree,
2840   [ --with-x26410b-tree=PATH      H264 10-bit encoding module with libx264 (static linking)],[],[])
2841   if test "${with_x26410b_tree}" != "no" -a -n "${with_x26410b_tree}"
2842   then
2843     real_x26410b_tree="̧`cd ${with_x26410b_tree} 2>/dev/null && pwd`"
2844     if test -z "${real_x26410b_tree}"
2845     then
2846       AC_MSG_RESULT(no)
2847       AC_MSG_ERROR([${with_x26410b_tree} directory does not exist])
2848     fi
2849     AC_MSG_CHECKING(for x264.h in ${real_x26410b_tree})
2850     if test -f ${with_x26410b_tree}/x264_config.h
2851     then
2852       AC_MSG_RESULT(yes)
2853       AC_MSG_CHECKING(for 10-bit build of x264)
2854       if grep -q "BIT_DEPTH.*10"  ${with_x26410b_tree}/x264_config.h ;then
2855         AC_MSG_RESULT(yes)
2856         VLC_ADD_PLUGIN([x26410b])
2857         VLC_ADD_CFLAGS([x26410b],[-I${with_x26410b_tree}])
2858         VLC_ADD_LIBS([x26410b],[-L${with_x26410b_tree} -lm -lpthread -lx264])
2859       else
2860         AC_MSG_RESULT(no)
2861         AC_MSG_ERROR([${with_x26410b_tree} isnt build 10-bit])
2862       fi
2863     else
2864       AC_MSG_RESULT(no)
2865       AC_MSG_ERROR([${with_x26410b_tree} doesnt have x264_config.h])
2866     fi
2867   else
2868     PKG_CHECK_MODULES(X26410B, x26410b, [
2869         VLC_ADD_PLUGIN([x26410b])
2870         VLC_ADD_LIBS([x26410b],[${X26410B_LIBS}])
2871         AS_IF([test -n "${ac_cv_ld_bsymbolic}"], [
2872           VLC_ADD_LDFLAGS([x26410b],[${ac_cv_ld_bsymbolic}])
2873         ])
2874         VLC_ADD_CFLAGS([x26410b],[${X26410B_CFLAGS}])
2875         if echo ${X26410B_LIBS} |grep -q 'pthreadGC2'; then
2876           VLC_ADD_CFLAGS([x26410b], [-DPTW32_STATIC_LIB])
2877         fi
2878     ], [
2879        if test "${enable_x26410b}" = "yes"; then
2880         AC_MSG_ERROR([x26410b module doesn't work without staticly compiled libx264.a])
2881        fi
2882     ])
2883   fi
2884 fi
2885
2886
2887 dnl
2888 dnl H264 encoder plugin (using libx264)
2889 dnl
2890 AC_ARG_ENABLE(x264,
2891   [  --enable-x264           H264 encoding support with libx264 (default enabled)])
2892 if test "${enable_x264}" != "no"; then
2893   AC_ARG_WITH(x264-tree,
2894     [  --with-x264-tree=PATH   x264 tree for static linking ],[],[])
2895   if test "${with_x264_tree}" != "no" -a -n "${with_x264_tree}"
2896   then
2897     real_x264_tree="`cd ${with_x264_tree} 2>/dev/null && pwd`"
2898     if test -z "${real_x264_tree}"
2899     then
2900       dnl  The given directory can't be found
2901       AC_MSG_RESULT(no)
2902       AC_MSG_ERROR([${with_x264_tree} directory does not exist])
2903     fi
2904     dnl  Use a custom libx264
2905     AC_MSG_CHECKING(for x264.h in ${real_x264_tree})
2906     if test -f ${real_x264_tree}/x264.h
2907     then
2908       AC_MSG_RESULT(yes)
2909       VLC_ADD_CPPFLAGS([x264],[-I${real_x264_tree}])
2910       VLC_ADD_LIBS([x264],[-L${real_x264_tree}])
2911       PKG_CHECK_MODULES(X264,x264, [
2912         VLC_ADD_PLUGIN([x264])
2913         VLC_ADD_LIBS([x264],[${X264_LIBS}])
2914         VLC_ADD_CFLAGS([x264],[${X264_CFLAGS}])
2915         if echo ${X264_LIBS} |grep -q 'pthreadGC2'; then
2916           VLC_ADD_CFLAGS([x264], [-DPTW32_STATIC_LIB])
2917         fi
2918       ],[
2919         AC_MSG_ERROR([the specified tree has not been compiled])
2920       ])
2921     else
2922       AC_MSG_RESULT(no)
2923       AC_MSG_ERROR([the specified tree does not have x264.h])
2924     fi
2925   else
2926       PKG_CHECK_MODULES(X264,x264 >= 0.86, [
2927         VLC_ADD_PLUGIN([x264])
2928         VLC_ADD_LIBS([x264],[${X264_LIBS}])
2929
2930         AS_IF([test -n "${ac_cv_ld_bsymbolic}"], [
2931           VLC_ADD_LDFLAGS([x264],[${ac_cv_ld_bsymbolic}])
2932         ])
2933
2934         VLC_ADD_CFLAGS([x264],[${X264_CFLAGS}])
2935         if echo ${X264_LIBS} |grep -q 'pthreadGC2'; then
2936           VLC_ADD_CFLAGS([x264], [-DPTW32_STATIC_LIB])
2937         fi
2938       ],[
2939         if test "${enable_x264}" = "yes"; then
2940             AC_MSG_ERROR([${X264_PKG_ERRORS}: you may get it from http://www.videolan.org/x264.html])
2941           fi
2942       ])
2943   fi
2944 fi
2945
2946 dnl
2947 dnl Intel QuickSync (aka MediaSDK) H264/H262 encoder
2948 dnl
2949 PKG_ENABLE_MODULES_VLC([MFX], [qsv], [libmfx], [Intel QuickSync MPEG4-Part10/MPEG2 (aka H.264/H.262) encoder], [auto])
2950
2951 dnl
2952 dnl libfluidsynth (MIDI synthetizer) plugin
2953 dnl
2954 PKG_ENABLE_MODULES_VLC([FLUIDSYNTH], [], [fluidsynth >= 1.1.2], [MIDI synthetiser with libfluidsynth], [auto])
2955
2956 dnl
2957 dnl Teletext Modules
2958 dnl vbi decoder plugin (using libzbvi)
2959 dnl telx module
2960 dnl uncompatible
2961 dnl
2962 AC_ARG_ENABLE(zvbi,
2963   AS_HELP_STRING([--enable-zvbi],[VBI (inc. Teletext) decoding support with
2964                   libzvbi (default enabled)]))
2965 AC_ARG_ENABLE(telx,
2966   AS_HELP_STRING([--enable-telx],[Teletext decoding module (conflicting with
2967                   zvbi) (default enabled if zvbi is absent)]))
2968
2969 AS_IF( [test "${enable_zvbi}" != "no"],[
2970     PKG_CHECK_MODULES(ZVBI, [zvbi-0.2 >= 0.2.28],
2971         [
2972           VLC_ADD_PLUGIN([zvbi])
2973           AC_DEFINE(ZVBI_COMPILED, 1, [Define if the zvbi module is built])
2974           AS_IF( [test "${enable_telx}" = "yes"],[
2975                   AC_MSG_WARN([The zvbi and telx modules are incompatible. Using zvbi.])
2976                   ])
2977         ],[
2978           AC_MSG_WARN([${ZVBI_PKG_ERRORS}. Enabling the telx module instead.])
2979         ])
2980     ])
2981 AS_IF( [test "${enable_telx}" != "no" ],[
2982   VLC_ADD_PLUGIN([telx])
2983   ])
2984
2985 dnl
2986 dnl libass subtitle rendering module
2987 dnl
2988 AC_ARG_ENABLE(libass,
2989   [  --enable-libass         Subtitle support using libass (default enabled)])
2990 AS_IF( [test "${enable_libass}" != "no"], [
2991   PKG_CHECK_MODULES(LIBASS, [libass >= 0.9.8],
2992       [
2993         VLC_ADD_PLUGIN([libass])
2994
2995         AC_CHECK_HEADERS(fontconfig/fontconfig.h,
2996           [VLC_ADD_CPPFLAGS([libass],[-DHAVE_FONTCONFIG])
2997            VLC_ADD_LIBS([libass],[-lfontconfig])
2998        ])
2999       ],[
3000         AC_MSG_WARN([${LIBASS_PKG_ERRORS}.])
3001       ])
3002   ])
3003
3004 dnl
3005 dnl ARIB subtitles rendering module
3006 dnl
3007 AC_ARG_ENABLE(aribsub,
3008   [  --enable-aribsub        ARIB Subtitles support (default enabled)])
3009 AS_IF( [test "${enable_aribsub}" != "no" ],[
3010   PKG_CHECK_MODULES(ARIBB24, [aribb24 >= 1.0.1], [
3011       have_aribb24="yes"
3012       VLC_ADD_PLUGIN([aribsub])
3013       VLC_ADD_LIBS([aribsub],[-laribb24])
3014       AC_DEFINE(HAVE_ARIBB24, 1, [Define if libaribb24 is available.])
3015     ],[
3016       AC_MSG_WARN(Library [aribb24] needed for [aribsub] was not found)
3017       have_aribb24="no"
3018   ])
3019   AM_CONDITIONAL([HAVE_ARIBB24], [test "${have_aribb24}" = "yes"])
3020 ])
3021
3022 dnl
3023 dnl  kate decoder plugin
3024 dnl
3025 PKG_ENABLE_MODULES_VLC([KATE], [], [kate >= 0.3.0], [kate codec], [auto])
3026
3027 dnl
3028 dnl  tiger rendering for kate decoder plugin
3029 dnl
3030 AC_ARG_ENABLE(tiger,
3031 [  --enable-tiger          Tiger rendering library for Kate streams (default auto)])
3032 AS_IF([test "${enable_tiger}" != "no"], [
3033   PKG_CHECK_MODULES(TIGER,[tiger >= 0.3.1], [
3034       AC_DEFINE(HAVE_TIGER, 1, [Define if libtiger is available.])],[
3035         AS_IF([test -n "${enable_tiger}"], [
3036           AC_MSG_ERROR([${TIGER_PKG_ERRORS}.])
3037         ])
3038   ])
3039 ])
3040
3041
3042 dnl
3043 dnl  Video plugins
3044 dnl
3045
3046 EXTEND_HELP_STRING([Video plugins:])
3047
3048 dnl
3049 dnl  OpenGL
3050 dnl
3051 PKG_CHECK_MODULES([EGL], [egl], [
3052   have_egl="yes"
3053 ], [
3054   have_egl="no"
3055 ])
3056 AM_CONDITIONAL([HAVE_EGL], [test "${have_egl}" = "yes"])
3057
3058 have_gl="no"
3059 PKG_CHECK_MODULES([GL], [gl], [
3060   have_gl="yes"
3061 ], [
3062   AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
3063 #ifdef _WIN32
3064 # include <GL/glew.h>
3065 #endif
3066 #include <GL/gl.h>
3067 ]], [
3068     [int t0 = GL_TEXTURE0;]])
3069   ], [
3070     GL_CFLAGS=""
3071     have_gl="yes"
3072     AS_IF([test "${SYS}" != "mingw32"], [
3073       GL_LIBS="-lGL"
3074     ], [
3075       GL_LIBS="-lopengl32"
3076     ])
3077   ])
3078 ])
3079 AM_CONDITIONAL([HAVE_GL], [test "${have_gl}" = "yes"])
3080
3081 dnl OpenGL ES 2: depends on EGL 1.1
3082 PKG_ENABLE_MODULES_VLC([GLES2], [], [glesv2], [OpenGL ES v2 support], [disabled])
3083 dnl OpenGL ES 1: depends on EGL 1.0
3084 PKG_ENABLE_MODULES_VLC([GLES1], [], [glesv1_cm], [OpenGL ES v1 support], [disabled])
3085
3086 dnl
3087 dnl  Xlib
3088 dnl
3089
3090 AC_PATH_XTRA()
3091 AC_CHECK_HEADERS(X11/Xlib.h)
3092
3093 dnl
3094 dnl  X C Bindings modules
3095 dnl
3096 AC_ARG_ENABLE(xcb,
3097   [  --enable-xcb            X11 support with XCB (default enabled)],, [
3098   AS_IF([test "${SYS}" != "mingw32" -a "${SYS}" != "darwin" -a "${SYS}" != "symbian"], [
3099     enable_xcb="yes"
3100   ], [
3101     enable_xcb="no"
3102   ])
3103 ])
3104 AC_ARG_ENABLE(xvideo,
3105   [  --enable-xvideo         XVideo support (default enabled)],, [
3106     enable_xvideo="$enable_xcb"
3107 ])
3108 AC_ARG_ENABLE(glx,
3109   [  --enable-glx            OpenGL support through GLX (default enabled)],, [
3110   enable_glx="$enable_xcb"
3111 ])
3112
3113 have_xcb="no"
3114 have_xcb_keysyms="no"
3115 have_xcb_randr="no"
3116 have_xcb_xvideo="no"
3117 AS_IF([test "${enable_xcb}" != "no"], [
3118   dnl libxcb
3119   PKG_CHECK_MODULES(XCB, [xcb >= 1.6])
3120   have_xcb="yes"
3121   PKG_CHECK_MODULES(XCB_SHM, [xcb-shm])
3122   PKG_CHECK_MODULES(XCB_COMPOSITE, [xcb-composite])
3123   PKG_CHECK_MODULES(XPROTO, [xproto])
3124
3125   AS_IF([test "${enable_xvideo}" != "no"], [
3126     PKG_CHECK_MODULES(XCB_XV, [xcb-xv >= 1.1.90.1], [have_xcb_xvideo="yes"])
3127   ])
3128
3129   PKG_CHECK_MODULES(XCB_RANDR, [xcb-randr >= 1.3], [have_xcb_randr="yes"])
3130
3131   dnl xcb-utils
3132   PKG_CHECK_MODULES(XCB_KEYSYMS, [xcb-keysyms >= 0.3.4], [have_xcb_keysyms="yes"], [
3133     AC_MSG_WARN([${XCB_KEYSYMS_PKG_ERRORS}. Hotkeys will not work.])
3134   ])
3135 ])
3136 AM_CONDITIONAL([HAVE_XCB], [test "${have_xcb}" = "yes"])
3137 AM_CONDITIONAL([HAVE_XCB_KEYSYMS], [test "${have_xcb_keysyms}" = "yes"])
3138 AM_CONDITIONAL([HAVE_XCB_RANDR], [test "${have_xcb_randr}" = "yes"])
3139 AM_CONDITIONAL([HAVE_XCB_XVIDEO], [test "${have_xcb_xvideo}" = "yes"])
3140
3141
3142 dnl
3143 dnl VDPAU needs X11
3144 dnl
3145 AC_ARG_ENABLE(vdpau,
3146   [AS_HELP_STRING([--enable-vdpau], [VDPAU hardware support (default auto)])])
3147 have_vdpau="no"
3148 AS_IF([test "${enable_vdpau}" != "no"], [
3149   PKG_CHECK_MODULES([VDPAU], [vdpau >= 0.6], [
3150     have_vdpau="yes"
3151     AS_IF([test "${no_x}" = "yes"], [
3152       AC_MSG_ERROR([VDPAU requires Xlib (X11).])
3153     ])
3154   ], [
3155     AS_IF([test -n "${enable_vdpau}"], [
3156       AC_MSG_ERROR([${VDPAU_PKG_ERRORS}.])
3157     ])
3158   ])
3159 ])
3160 AM_CONDITIONAL([HAVE_VDPAU], [test "${have_vdpau}" = "yes"])
3161
3162 have_avcodec_vdpau="no"
3163 AS_IF([test "${have_vdpau}" = "yes" -a "${have_avcodec}" = "yes"], [
3164   case "${avfork}" in
3165     libav) av_vdpau_ver="55.26.0" ;;
3166     ffmpeg) av_vdpau_ver="55.42.100" ;;
3167   esac
3168   PKG_CHECK_EXISTS([libavutil >= 52.4.0 libavcodec >= ${av_vdpau_ver}], [
3169     have_avcodec_vdpau="yes"
3170     AC_MSG_NOTICE([VDPAU decoding acceleration activated])
3171   ], [
3172     AS_IF([test -n "${enable_vdpau}"], [
3173       AC_MSG_ERROR([libavutil >= 52.4.0 and libavcodec >= 55.26.0 are required for VDPAU decoding.])
3174     ], [
3175       AC_MSG_WARN([libavutil >= 52.4.0 and libavcodec >= 55.26.0 are required for VDPAU decoding.])
3176     ])
3177   ])
3178 ])
3179 AM_CONDITIONAL([HAVE_AVCODEC_VDPAU], [test "${have_avcodec_vdpau}" = "yes"])
3180
3181
3182 dnl
3183 dnl  Wayland
3184 dnl
3185 AC_ARG_ENABLE(wayland,
3186   [AS_HELP_STRING([--enable-wayland], [Wayland support (default auto)])])
3187 have_wayland="no"
3188 AC_ARG_VAR([WAYLAND_SCANNER], [Wayland scanner utility])
3189
3190 AS_IF([test "${enable_wayland}" != "no"], [
3191   AC_MSG_CHECKING([for the Wayland scanner])
3192   AS_IF([test -z "$WAYLAND_SCANNER"], [
3193     PKG_CHECK_EXISTS([wayland-scanner], [
3194       WAYLAND_SCANNER="$(${PKG_CONFIG} wayland-scanner --variable wayland_scanner)"
3195     ], [
3196       WAYLAND_SCANNER="wayland-scanner"
3197     ])
3198   ])
3199   AC_MSG_RESULT([$WAYLAND_SCANNER])
3200
3201   PKG_CHECK_MODULES([WAYLAND_CLIENT], [wayland-client >= 1.5.91], [
3202     have_wayland="yes"
3203   ], [
3204     AS_IF([test -n "${enable_wayland}"], [
3205       AC_MSG_ERROR([${WAYLAND_CLIENT_PKG_ERRORS}.])
3206     ])
3207   ])
3208 ])
3209 AM_CONDITIONAL([HAVE_WAYLAND], [test "${have_wayland}" = "yes"])
3210
3211
3212 dnl
3213 dnl  SDL module
3214 dnl
3215 AC_ARG_ENABLE(sdl,
3216   [  --enable-sdl            SDL support (default enabled)])
3217 AC_ARG_ENABLE(sdl-image,
3218   [  --enable-sdl-image      SDL image support (default enabled)])
3219 if test "${enable_sdl}" != "no"
3220 then
3221    PKG_CHECK_MODULES(SDL, [sdl >= 1.2.10], [
3222       # SDL on Darwin is heavily patched and can only run SDL_image
3223       if test "${SYS}" != "darwin"; then
3224         VLC_ADD_PLUGIN([vout_sdl])
3225       fi
3226
3227       # SDL_image
3228       AS_IF([ test "${enable_sdl_image}" != "no"],[
3229         PKG_CHECK_MODULES(SDL_IMAGE, [SDL_image >= 1.2.10], [
3230           VLC_ADD_PLUGIN([sdl_image])],
3231           [ AC_MSG_WARN([${SDL_IMAGE_PKG_ERRORS}. You should install it alongside your SDL package.])
3232           ])
3233       ])
3234    ],[
3235      AC_MSG_WARN([${SDL_PKG_ERRORS}.])
3236    ])
3237 fi
3238
3239 dnl
3240 dnl  freetype module
3241 dnl
3242 AC_ARG_ENABLE(freetype,
3243   [  --enable-freetype       freetype support   (default auto)])
3244 AC_ARG_ENABLE(fribidi,
3245   [  --enable-fribidi        fribidi support    (default auto)])
3246 AC_ARG_ENABLE(fontconfig,
3247   [  --enable-fontconfig     fontconfig support (default auto)])
3248
3249 AC_ARG_WITH([default-font],
3250     AS_HELP_STRING([--with-default-font=PATH],
3251         [Path to the default font]),
3252         [AC_DEFINE_UNQUOTED([DEFAULT_FONT_FILE],
3253             "$withval", [Default font])])
3254 AC_ARG_WITH([default-monospace-font],
3255     AS_HELP_STRING([--with-default-monospace-font=PATH],
3256         [Path to the default font]),
3257         [AC_DEFINE_UNQUOTED([DEFAULT_MONOSPACE_FONT_FILE],
3258             "$withval", [Default monospace font])])
3259
3260 AC_ARG_WITH([default-font-family],
3261     AS_HELP_STRING([--with-default-font-family=NAME],
3262         [Path to the default font family]),
3263         [AC_DEFINE_UNQUOTED([DEFAULT_FAMILY],
3264             "$withval", [Default font family])])
3265 AC_ARG_WITH([default-monospace-font-family],
3266     AS_HELP_STRING([--with-default-monospace-font-family=NAME],
3267         [Path to the default font family]),
3268         [AC_DEFINE_UNQUOTED([DEFAULT_MONOSPACE_FAMILY],
3269             "$withval", [Default monospace font family])])
3270
3271 if test "${enable_freetype}" != "no"; then
3272    PKG_CHECK_MODULES(FREETYPE, freetype2, [
3273       have_freetype=yes
3274       VLC_ADD_PLUGIN([freetype])
3275       VLC_ADD_CPPFLAGS([freetype skins2],[${FREETYPE_CFLAGS}])
3276       if test "${SYS}" = "mingw32"; then
3277         VLC_ADD_LIBS([freetype],[-liconv -lz])
3278       fi
3279       VLC_ADD_LIBS([freetype skins2],[${FREETYPE_LIBS}])
3280
3281       AC_CHECK_HEADERS(Carbon/Carbon.h,
3282                        [VLC_ADD_LIBS([freetype],[-Wl,-framework,Carbon])])
3283
3284       dnl fontconfig support
3285       if test "${SYS}" != "mingw32"; then
3286           if test "${enable_fontconfig}" != "no"; then
3287             AC_CHECK_HEADERS(fontconfig/fontconfig.h, [
3288               VLC_ADD_CPPFLAGS([freetype],[-DHAVE_FONTCONFIG])
3289               VLC_ADD_LIBS([freetype],[-lfontconfig])
3290             ],[AC_MSG_WARN([library fontconfig not found. Styles will be disabled in freetype])])
3291           fi
3292       else
3293           VLC_ADD_LIBS([freetype],[-lgdi32])
3294       fi
3295
3296       dnl fribidi support
3297       if test "${enable_fribidi}" != "no"; then
3298         PKG_CHECK_MODULES(FRIBIDI, fribidi, [
3299           VLC_ADD_CPPFLAGS([freetype skins2], [${FRIBIDI_CFLAGS} -DHAVE_FRIBIDI])
3300           VLC_ADD_LIBS([freetype skins2], [${FRIBIDI_LIBS}])
3301         ],[AC_MSG_WARN([${FRIBIDI_PKG_ERRORS}. Bidirectional support will be disabled in FreeType.])])
3302       fi
3303
3304   ],[
3305   have_freetype=no
3306   AS_IF([test -n "${enable_freetype}"],[
3307     AC_MSG_ERROR([${FREETYPE_PKG_ERRORS}. Install FreeType2 development or configure with --disable-freetype.])
3308     ])
3309   ])
3310 fi
3311
3312
3313 dnl
3314 dnl  QuartzText vout module (iOS/Mac OS)
3315 dnl
3316 AC_ARG_ENABLE(macosx-quartztext,
3317   [  --enable-macosx-quartztext   Mac OS X quartz text module (default enabled on Mac OS X)])
3318 if test "x${enable_macosx_quartztext}" != "xno" &&
3319   (test "${SYS}" = "darwin" || test "${enable_macosx_quartztext}" = "yes")
3320 then
3321   VLC_ADD_PLUGIN([quartztext])
3322   VLC_ADD_LIBS([quartztext],[-Wl,-framework,ApplicationServices])
3323 fi
3324
3325 dnl
3326 dnl  SVG module (text rendering and image decoding)
3327 dnl
3328 PKG_ENABLE_MODULES_VLC([SVG], [], [librsvg-2.0 >= 2.9.0], [SVG rendering library],[auto])
3329 PKG_ENABLE_MODULES_VLC([SVGDEC], [], [librsvg-2.0 >= 2.9.0 cairo >= 1.13.1], [SVG image decoder library],[auto])
3330
3331 dnl
3332 dnl  android surface module
3333 dnl
3334 AC_ARG_ENABLE(android-surface,
3335   [  --enable-android-surface   Android Surface video output module (default disabled)])
3336 if test "${enable_android_surface}" = "yes"; then
3337      VLC_ADD_PLUGIN([android_surface])
3338      VLC_ADD_PLUGIN([android_opaque])
3339 fi
3340
3341 dnl
3342 dnl  Windows DirectX module
3343 dnl
3344
3345 AC_ARG_ENABLE(directx,
3346   [AS_HELP_STRING([--enable-directx],
3347     [Microsoft DirectX support (default enabled on Windows)])],, [
3348   AS_IF([test "${SYS}" = "mingw32"], [
3349     enable_directx="yes"
3350   ], [
3351     enable_directx="no"
3352   ])
3353 ])
3354 have_directx="no"
3355 AS_IF([test "${enable_directx}" != "no"], [
3356   dnl DirectDraw
3357   AC_CHECK_HEADERS(ddraw.h, [
3358     have_directx="yes"
3359   ], [
3360     AC_MSG_ERROR([Cannot find DirectX headers!])
3361   ])
3362
3363   dnl OpenGL
3364   AC_CHECK_HEADERS(GL/wglew.h, [
3365     VLC_ADD_PLUGIN([glwin32])
3366   ],, [
3367     #include <windows.h>
3368     #include <GL/gl.h>
3369   ])
3370
3371   dnl Direct3D
3372   AC_CHECK_HEADERS(d3d9.h, [
3373     VLC_ADD_PLUGIN([direct3d])
3374   ])
3375
3376   dnl Direct2D
3377   AC_CHECK_HEADERS(d2d1.h, [
3378     VLC_ADD_PLUGIN([direct2d])
3379   ])
3380 ])
3381 AM_CONDITIONAL([HAVE_DIRECTX], [test "$have_directx" = "yes"])
3382
3383 dnl
3384 dnl  Linux framebuffer module
3385 dnl
3386 AC_CHECK_HEADER([linux/fb.h], [
3387   VLC_ADD_PLUGIN([fb])
3388 ])
3389
3390
3391 dnl
3392 dnl  DirectFB module
3393 dnl  try to find using: 1 - given location; 2 - directfb-config; 3 - pkg-config
3394 dnl  TODO: support for static linking
3395 dnl
3396 AC_ARG_ENABLE(directfb,
3397   [  --enable-directfb       DirectFB support (default disabled)])
3398 AC_ARG_WITH(directfb,
3399   [  --with-directfb=PATH    path to DirectFB headers and libraries])
3400
3401 if test "${enable_directfb}" = "yes"; then
3402     have_directfb="false"
3403     CPPFLAGS_mydirectfb=
3404     LIBS_mydirectfb=
3405     if test "${with_directfb}" != "no" -a -n "${with_directfb}"; then
3406         dnl Trying the given location
3407         VLC_SAVE_FLAGS
3408
3409         CPPFLAGS_new="-I${with_directfb}/include -D_REENTRANT -D_GNU_SOURCE"
3410         LIBS_new="-L${with_directfb}/lib/fusion/.libs/ -L${with_directfb}/lib/direct/.libs/ -L${with_directfb}/src/.libs/"
3411
3412         CPPFLAGS="${CPPFLAGS} ${CPPFLAGS_new}"
3413         LIBS="${LIBS} ${LIBS_new}"
3414
3415         dnl FIXME: too obscure
3416         AC_CHECK_HEADER([directfb.h], [
3417             AC_CHECK_LIB([direct],[direct_initialize], [
3418                 AC_CHECK_LIB([fusion], [fusion_enter], [
3419                     AC_CHECK_LIB([directfb], [DirectFBInit], have_directfb="true", have_directfb="false")
3420                 ], have_directfb="false")
3421             ], have_directfb="false")
3422         ], have_directfb="false")
3423
3424         VLC_RESTORE_FLAGS
3425
3426         if test "${have_directfb}" = "true"; then
3427             LIBS_mydirectfb="${LIBS_new} -lz $LIBDL -ldirectfb -lfusion -ldirect -lpthread"
3428             CPPFLAGS_mydirectfb="${CPPFLAGS_new}"
3429         fi
3430     else
3431         dnl Look for directfb-config
3432         AC_PATH_PROG(DIRECTFB_CONFIG, directfb-config, no, ${PATH})
3433         if test "${DIRECTFB_CONFIG}" != "no"; then
3434             CPPFLAGS_mydirectfb="`${DIRECTFB_CONFIG} --cflags`"
3435             LIBS_mydirectfb="`${DIRECTFB_CONFIG} --libs`"
3436             have_directfb="true"
3437         else
3438             dnl Trying with pkg-config
3439             PKG_CHECK_MODULES(DIRECTFB, directfb, [
3440                 CPPFLAGS_mydirectfb="${DIRECTFB_CFLAGS}"
3441                 LIBS_mydirectfb="${DIRECTFB_LIBS}"
3442                 have_directfb="true"
3443                 ], [have_directfb="false"])
3444         fi
3445     fi
3446     if test "${have_directfb}" = "true"; then
3447         VLC_ADD_PLUGIN([directfb])
3448         VLC_ADD_CPPFLAGS([directfb],[${CPPFLAGS_mydirectfb}])
3449         VLC_ADD_LIBS([directfb],[${LIBS_mydirectfb}])
3450     else
3451         AC_MSG_ERROR([${DIRECTFB_PKG_ERRORS}.])
3452     fi
3453 fi
3454
3455 dnl
3456 dnl  AA plugin
3457 dnl
3458 AC_ARG_ENABLE(aa,
3459   [  --enable-aa             aalib output (default disabled)])
3460 if test "${enable_aa}" = "yes"
3461 then
3462   AC_CHECK_HEADER(aalib.h,have_aa="true",have_aa="false")
3463   if test "${have_aa}" = "true"
3464   then
3465     VLC_ADD_PLUGIN([aa])
3466   fi
3467 fi
3468
3469 dnl
3470 dnl  libcaca plugin
3471 dnl
3472 PKG_ENABLE_MODULES_VLC([CACA], [], [caca >= 0.99.beta14], [libcaca output],[auto])
3473
3474 dnl
3475 dnl  OS/2 KVA plugin
3476 dnl
3477 AC_ARG_ENABLE(kva,
3478   [AS_HELP_STRING([--enable-kva],
3479     [support the K Video Accelerator KVA (default enabled on OS/2)])],, [
3480   AS_IF([test "$SYS" = "os2"], [
3481     enable_kva="yes"
3482   ])
3483 ])
3484 have_kva="no"
3485 KVA_LIBS=""
3486 AS_IF([test "$enable_kva" != "no"], [
3487   AC_CHECK_HEADERS([kva.h], [
3488     have_kva="yes"
3489     AC_CHECK_LIB(kva, main, [
3490       KVA_LIBS="-lkva"
3491     ])
3492   ])
3493 ])
3494 AC_SUBST(KVA_LIBS)
3495 AM_CONDITIONAL([HAVE_KVA], [test "${have_kva}" = "yes"])
3496
3497 dnl
3498 dnl MMAL plugin
3499 dnl
3500 AC_ARG_ENABLE(mmal,
3501   AS_HELP_STRING([--enable-mmal],
3502     [Multi-Media Abstraction Layer (MMAL) hardware plugin (default enable)]))
3503 if test "${enable_mmal}" != "no"; then
3504   VLC_SAVE_FLAGS
3505   LDFLAGS="${LDFLAGS} -L/opt/vc/lib"
3506   CPPFLAGS="${CPPFLAGS} -I/opt/vc/include -I/opt/vc/include/interface/vcos/pthreads -I/opt/vc/include/interface/vmcs_host/linux"
3507   AC_CHECK_HEADERS(interface/mmal/mmal.h,
3508     [ AC_CHECK_LIB(bcm_host, vc_tv_unregister_callback_full, [
3509         have_mmal="yes"
3510         VLC_ADD_PLUGIN([mmal])
3511         VLC_ADD_LDFLAGS([mmal],[ -L/opt/vc/lib ])
3512         VLC_ADD_CFLAGS([mmal],[ -I/opt/vc/include -I/opt/vc/include/interface/vcos/pthreads -I/opt/vc/include/interface/vmcs_host/linux ])
3513         VLC_ADD_LIBS([mmal],[ -lbcm_host -lmmal ]) ], [
3514           AS_IF([test "${enable_mmal}" = "yes"],
3515             [ AC_MSG_ERROR([Cannot find bcm library...]) ],
3516             [ AC_MSG_WARN([Cannot find bcm library...]) ])
3517           ],
3518         [])
3519     ] , [ AS_IF([test "${enable_mmal}" = "yes"],
3520       [ AC_MSG_ERROR([Cannot find development headers for mmal...]) ],
3521       [ AC_MSG_WARN([Cannot find development headers for mmal...]) ]) ])
3522   VLC_RESTORE_FLAGS
3523 fi
3524 AM_CONDITIONAL([HAVE_MMAL], [test "${have_mmal}" = "yes"])
3525
3526 dnl
3527 dnl  Audio plugins
3528 dnl
3529
3530 EXTEND_HELP_STRING([Audio plugins:])
3531
3532 dnl
3533 dnl  Pulseaudio module
3534 dnl
3535 AC_ARG_ENABLE(pulse,
3536   [AS_HELP_STRING([--enable-pulse],
3537     [use the PulseAudio client library (default auto)])])
3538 have_pulse="no"
3539 AS_IF([test "${enable_pulse}" != "no"], [
3540   PKG_CHECK_MODULES([PULSE], [libpulse >= 1.0], [
3541     have_pulse="yes"
3542   ], [
3543     AS_IF([test "x${enable_pulse}" != "x"], [
3544       AC_MSG_ERROR([$PULSE_PKG_ERRORS. PulseAudio 1.0 or later required.])
3545     ])
3546   ])
3547 ])
3548 AM_CONDITIONAL([HAVE_PULSE], [test "${have_pulse}" = "yes"])
3549
3550 dnl
3551 dnl  ALSA module
3552 dnl
3553 AC_ARG_ENABLE(alsa,
3554   [AS_HELP_STRING([--enable-alsa],
3555     [support the Advanced Linux Sound Architecture (default auto)])],, [
3556   AS_IF([test "$SYS" = "linux" -a "${have_pulse}" = "no"], [
3557     enable_alsa="yes"
3558   ])
3559 ])
3560 have_alsa="no"
3561 AS_IF([test "${enable_alsa}" != "no"], [
3562   PKG_CHECK_MODULES([ALSA], [alsa >= 1.0.24], [
3563     have_alsa="yes"
3564   ], [
3565     AS_IF([test "x${enable_alsa}" != "x"], [
3566       AC_MSG_ERROR([$ALSA_PKG_ERRORS. alsa-lib 1.0.24 or later required.])
3567     ])
3568   ])
3569 ])
3570 AM_CONDITIONAL([HAVE_ALSA], [test "${have_alsa}" = "yes"])
3571
3572 dnl
3573 dnl  Open Sound System module
3574 dnl
3575 AC_ARG_ENABLE(oss,
3576   [AS_HELP_STRING([--enable-oss],
3577     [support the Open Sound System OSS (default enabled on FreeBSD/NetBSD/DragonFlyBSD)])],, [
3578   AS_IF([test "$SYS" = "mingw32" -o "$SYS" = "linux" -o "$SYS" = "openbsd"], [
3579     enable_oss="no"
3580   ])
3581 ])
3582 have_oss="no"
3583 OSS_LIBS=""
3584 AS_IF([test "$enable_oss" != "no"], [
3585   AC_CHECK_HEADERS([soundcard.h sys/soundcard.h], [
3586     have_oss="yes"
3587     AC_CHECK_LIB(ossaudio, main, [
3588       OSS_LIBS="-lossaudio"
3589     ])
3590   ])
3591 ])
3592 AC_SUBST(OSS_LIBS)
3593 AM_CONDITIONAL([HAVE_OSS], [test "${have_oss}" = "yes"])
3594
3595 dnl
3596 dnl  OpenBSD sndio module
3597 dnl
3598 AC_ARG_ENABLE([sndio],
3599   [AS_HELP_STRING([--disable-sndio],
3600     [support the OpenBSD sndio (default auto)])],, [
3601   AS_IF([test "$SYS" = "openbsd"], [
3602     enable_sndio="yes"
3603   ])
3604 ])
3605 have_sndio="no"
3606 AS_IF([test "$enable_sndio" != "no"], [
3607   AC_CHECK_HEADER([sndio.h], [
3608     have_sndio="yes"
3609   ])
3610 ])
3611 AM_CONDITIONAL([HAVE_SNDIO], [test "${have_sndio}" = "yes"])
3612
3613 dnl
3614 dnl  Windows Audio Session plugin
3615 dnl
3616 AC_ARG_ENABLE([wasapi],
3617   [AS_HELP_STRING([--enable-wasapi],
3618     [use the Windows Audio Session API (default auto)])
3619 ])
3620 have_wasapi="no"
3621 AS_IF([test "$enable_wasapi" != "no"], [
3622   AC_CHECK_HEADER([audioclient.h], [
3623     have_wasapi="yes"
3624   ], [
3625     AS_IF([test "x${enable_wasapi}" != "x"], [
3626       AC_MSG_ERROR([Windows Audio Session API not found.])
3627     ])
3628   ])
3629 ])
3630 AM_CONDITIONAL([HAVE_WASAPI], [test "${have_wasapi}" = "yes"])
3631
3632 dnl
3633 dnl  AudioQueue plugin
3634 dnl
3635 AC_ARG_ENABLE(audioqueue,
3636   [  --enable-audioqueue     AudioQueue audio module (default disabled)])
3637 if test "${enable_audioqueue}" = "yes"
3638 then
3639   VLC_ADD_PLUGIN([audioqueue])
3640 fi
3641
3642 dnl
3643 dnl  JACK modules
3644 dnl
3645 AC_ARG_ENABLE(jack,
3646   [AS_HELP_STRING([--disable-jack],
3647     [do not use jack (default auto)])])
3648 have_jack="no"
3649 AS_IF([test "${enable_jack}" != "no"], [
3650     PKG_CHECK_MODULES(JACK, jack >= 1.9.7,
3651       [ have_jack=yes ],
3652       [
3653       AC_MSG_WARN([${JACK_PKG_ERRORS}, trying jack1 instead])
3654
3655       PKG_CHECK_MODULES(JACK, jack >= 0.120.1 jack < 1.0,
3656       [ have_jack=yes ],
3657       [
3658       AS_IF([test -n "${enable_jack}"],
3659          [AC_MSG_ERROR([${JACK_PKG_ERRORS}.])],
3660          [AC_MSG_WARN([${JACK_PKG_ERRORS}.])])
3661       ])
3662     ])
3663 ])
3664 AM_CONDITIONAL([HAVE_JACK], [test "${have_jack}" != "no"])
3665
3666 dnl
3667 dnl  OpenSLES Android
3668 dnl
3669 AC_ARG_ENABLE(opensles,
3670   [  --enable-opensles       Android OpenSL ES audio module (default disabled)])
3671 if test "${HAVE_ANDROID}" = "1"; then
3672   if test "${enable_opensles}" = "yes"; then
3673       AC_CHECK_HEADERS(SLES/OpenSLES.h,
3674         [ VLC_ADD_PLUGIN([opensles_android]) ],
3675         [ AC_MSG_ERROR([cannot find OpenSLES headers])] )
3676   fi
3677 fi
3678
3679 dnl
3680 dnl libsamplerate plugin
3681 dnl
3682 PKG_ENABLE_MODULES_VLC([SAMPLERATE], [], [samplerate], [Resampler with libsamplerate], [auto])
3683
3684 dnl
3685 dnl  OS/2 KAI plugin
3686 dnl
3687 AC_ARG_ENABLE(kai,
3688   [AS_HELP_STRING([--enable-kai],
3689     [support the K Audio Interface KAI (default enabled on OS/2)])],, [
3690   AS_IF([test "$SYS" = "os2"], [
3691     enable_kai="yes"
3692   ])
3693 ])
3694 have_kai="no"
3695 KAI_LIBS=""
3696 AS_IF([test "$enable_kai" != "no"], [
3697   AC_CHECK_HEADERS([kai.h], [
3698     have_kai="yes"
3699     AC_CHECK_LIB(kai, main, [
3700       KAI_LIBS="-lkai"
3701     ])
3702   ])
3703 ])
3704 AC_SUBST(KAI_LIBS)
3705 AM_CONDITIONAL([HAVE_KAI], [test "${have_kai}" = "yes"])
3706
3707 dnl
3708 dnl  chromaprint audio track fingerprinter
3709 dnl
3710 m4_pushdef([libchromaprint_version], 0.6.0)
3711 PKG_WITH_MODULES([CHROMAPRINT],[libchromaprint >= libchromaprint_version],
3712     VLC_ADD_PLUGIN([stream_out_chromaprint])
3713     VLC_ADD_CFLAGS([stream_out_chromaprint],[${CHROMAPRINT_CFLAGS}] [-I./webservices -I../stream_out])
3714     VLC_ADD_LIBS([stream_out_chromaprint],[${CHROMAPRINT_LIBS}]),
3715     AS_IF([test "${enable_chromaprint}" = "yes"],
3716         [AC_MSG_ERROR(Library [libchromaprint >= libchromaprint_version] needed for [chromaprint] was not found)],
3717         [AC_MSG_WARN(Library [libchromaprint >= libchromaprint_version] needed for [chromaprint] was not found)]
3718          ),
3719     [(Chromaprint based audio fingerprinter)],[auto])
3720 m4_popdef([libchromaprint_version])
3721
3722 dnl
3723 dnl  Chromecast streaming support
3724 dnl
3725 m4_pushdef([protobuf_lite_version], 2.5.0)
3726 PKG_WITH_MODULES([CHROMECAST],[protobuf-lite >= protobuf_lite_version], [
3727     AC_CHECK_PROGS(PROTOC, protoc)
3728     AS_IF([test "${PROTOC}" = "protoc"], [
3729         VLC_ADD_PLUGIN([stream_out_chromecast])
3730         VLC_ADD_CXXFLAGS([stream_out_chromecast],[${CHROMECAST_CFLAGS}] [-I./chromecast])
3731         VLC_ADD_LIBS([stream_out_chromecast],[${CHROMECAST_LIBS}])
3732         build_chromecast="yes"
3733     ], [
3734     AC_MSG_ERROR(protoc compiler needed for [chromecast] was not found)
3735     ])
3736 ], [
3737     AS_IF([test "${enable_chromecast}" = "yes"],
3738         AC_MSG_ERROR(Library [protobuf-lite >= protobuf_lite_version] needed for [chromecast] was not found),
3739         AC_MSG_WARN(Library [protobuf-lite >= protobuf_lite_version] needed for [chromecast] was not found)
3740     )
3741     enable_chromecast="no"
3742 ], [(Chromecast streaming support)], [auto])
3743 AM_CONDITIONAL([BUILD_CHROMECAST], [test "${build_chromecast}" = "yes"])
3744 m4_popdef([protobuf_lite_version])
3745
3746 dnl
3747 dnl  Interface plugins
3748 dnl
3749
3750 EXTEND_HELP_STRING([Interface plugins:])
3751
3752 dnl
3753 dnl QT
3754 dnl
3755 AC_ARG_ENABLE(qt, [
3756   AS_HELP_STRING([--disable-qt], [Qt UI support (default enabled)])],, [
3757   AS_IF([test "${SYS}" = "darwin"], [
3758     enable_qt="no"
3759   ])
3760 ])
3761 AS_IF([test "${enable_qt}" != "no"], [
3762   PKG_CHECK_MODULES([QT], [Qt5Core >= 5.1.0 Qt5Widgets Qt5Gui], [
3763       PKG_CHECK_MODULES([QTX11], [Qt5X11Extras], [
3764           VLC_ADD_LIBS([qt4],[${QTX11_LIBS}])
3765           VLC_ADD_CXXFLAGS([qt4],[${QTX11_CFLAGS} -DQT5_HAS_X11])
3766       ],[
3767           AC_MSG_WARN([Not building Qt Interface with X11 helpers.])
3768       ])
3769       QT_PATH="$(eval $PKG_CONFIG --variable=exec_prefix Qt5Core)"
3770       QT_HOST_PATH="$(eval $PKG_CONFIG --variable=host_bins Qt5Core)"
3771       AC_PATH_PROGS(MOC, [moc-qt5 moc], moc, [${QT_HOST_PATH} ${QT_PATH}/bin ${CONTRIB_DIR}/bin])
3772       AC_PATH_PROGS(RCC, [rcc-qt5 rcc], rcc, [${QT_HOST_PATH} ${QT_PATH}/bin ${CONTRIB_DIR}/bin])
3773       AC_PATH_PROGS(UIC, [uic-qt5 uic], uic, [${QT_HOST_PATH} ${QT_PATH}/bin ${CONTRIB_DIR}/bin])
3774     ], [
3775       PKG_CHECK_MODULES([QT], [QtCore QtGui >= 4.6.0],, [
3776         AS_IF([test -n "${enable_qt}"],[
3777           AC_MSG_ERROR([${QT_PKG_ERRORS}.])
3778         ],[
3779           AC_MSG_WARN([${QT_PKG_ERRORS}.])
3780         ])
3781         enable_qt="no"
3782       ])
3783       QT_PATH="$(eval $PKG_CONFIG --variable=exec_prefix QtCore)"
3784       AC_PATH_PROGS(MOC, [moc-qt4 moc], moc, [${QT_PATH}/bin ${CONTRIB_DIR}/bin])
3785       AC_PATH_PROG(RCC, rcc, rcc, [${QT_PATH}/bin ${CONTRIB_DIR}/bin])
3786       AC_PATH_PROGS(UIC, [uic-qt4 uic], uic, [${QT_PATH}/bin ${CONTRIB_DIR}/bin])
3787     ])
3788 ])
3789 AS_IF([test "${enable_qt}" != "no"], [
3790   VLC_ADD_PLUGIN([qt4])
3791   ALIASES="${ALIASES} qvlc"
3792 ])
3793 AM_CONDITIONAL(ENABLE_QT4, [test "$enable_qt" != "no"])
3794
3795 dnl
3796 dnl Simple test for skins2 dependency
3797 dnl
3798 AS_IF([test "$enable_qt" = "no"], [
3799   AS_IF([test "${enable_skins2}" = "yes"], [
3800     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.])
3801   ], [
3802     enable_skins2="no"
3803     AC_MSG_WARN([The skins2 module depends on the Qt4 interface, Qt4 is not built so skins2 is disabled.])
3804   ])
3805 ])
3806
3807 dnl
3808 dnl Skins2 module
3809 dnl
3810 AC_ARG_ENABLE(skins2,
3811   [AS_HELP_STRING([--enable-skins2], [skins interface module (default auto)])])
3812 AS_IF([test "${enable_skins2}" != "no"], [
3813   have_skins_deps="yes"
3814
3815   dnl Win32
3816   AS_IF([test "${SYS}" = "mingw32"], [
3817     VLC_ADD_CPPFLAGS([skins2],[-U_OFF_T_ -U_off_t -DWIN32_SKINS])
3818     VLC_ADD_LIBS([skins2],[-lgdi32 -lole32 -luuid -lmsimg32])
3819   dnl MacOS
3820   ], [test "${SYS}" = "darwin"], [
3821     VLC_ADD_CPPFLAGS([skins2],[ -DMACOSX_SKINS])
3822     VLC_ADD_LIBS([skins2],[-Wl,-framework,Carbon])
3823   dnl OS/2
3824   ], [test "${SYS}" = "os2"], [
3825     VLC_ADD_CPPFLAGS([skins2],[ -DOS2_SKINS])
3826   dnl Linux/Unix
3827   ], [
3828     PKG_CHECK_MODULES([XPM], [xpm],, [have_skins_deps="no"])
3829     PKG_CHECK_MODULES([XINERAMA], [xinerama],, [have_skins_deps="no"])
3830     PKG_CHECK_MODULES([XEXT], [xext],, [have_skins_deps="no"])
3831     VLC_ADD_CPPFLAGS([skins2],[${X_CFLAGS} ${XEXT_CFLAGS} ${XPM_CFLAGS} -DX11_SKINS])
3832     VLC_ADD_LIBS([skins2],[${X_LIBS} ${X_PRE_LIBS} ${XEXT_LIBS} ${XPM_LIBS} ${XINERAMA_LIBS} -lX11])
3833   ])
3834
3835   dnl for All OSes
3836   VLC_ADD_CXXFLAGS([skins2],[-O2 -fno-rtti])
3837
3838   dnl we need freetype
3839   AS_IF([test "${have_freetype}" != "yes"], [
3840     have_skins_deps="no"
3841   ])
3842
3843   AS_IF([test "${have_skins_deps}" = "no"], [
3844     AS_IF([test "x${enable_skins2}" = "x"], [
3845       AC_MSG_WARN([Skins2 interface disabled due to missing dependencies.])
3846     ], [
3847       AC_MSG_ERROR([Skins2 interface requires FreeType, libxpm, libxext and libxinerama])
3848     ])
3849     enable_skins2="no"
3850   ], [
3851     VLC_ADD_PLUGIN([skins2])
3852     ALIASES="${ALIASES} svlc"
3853     enable_skins2="yes"
3854   ])
3855 ])
3856 AM_CONDITIONAL(BUILD_SKINS, [test "${enable_skins2}" = "yes"])
3857
3858 AC_ARG_ENABLE(libtar,
3859   [  --enable-libtar         libtar support for skins2 (default auto)])
3860 AS_IF([test "${enable_skins2}" = "yes" && test "${enable_libtar}" != "no"], [
3861   AC_CHECK_HEADERS(libtar.h, [
3862     VLC_ADD_LIBS([skins2],[-ltar])
3863   ])
3864 ])
3865
3866 dnl
3867 dnl  MacOS X gui module
3868 dnl
3869 AC_ARG_ENABLE(macosx,
3870   [  --enable-macosx         Mac OS X gui support (default enabled on Mac OS X)])
3871 if test "x${enable_macosx}" != "xno" -a "${SYS}" = "darwin"
3872 then
3873   VLC_ADD_LIBS([macosx], [-Wl,-framework,Cocoa -Wl,-framework,Carbon -Wl,-framework,CoreServices])
3874   VLC_ADD_OBJCFLAGS([macosx], [-fobjc-exceptions] )
3875   VLC_ADD_PLUGIN([macosx])
3876
3877   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])
3878
3879   if test ! -d ${CONTRIB_DIR}/Sparkle.framework
3880   then
3881     AC_MSG_ERROR([Sparkle framework is required and was not found in ${CONTRIB_DIR}])
3882   fi
3883   VLC_ADD_LIBS([macosx], [-F${CONTRIB_DIR} -Wl,-framework,Sparkle])
3884   VLC_ADD_OBJCFLAGS([macosx], [-F${CONTRIB_DIR}])
3885
3886   if test ! -d ${CONTRIB_DIR}/BGHUDAppKit.framework
3887   then
3888     AC_MSG_ERROR([BGHUDAppKit framework is required and was not found in ${CONTRIB_DIR}])
3889   fi
3890   VLC_ADD_LIBS([macosx], [-F${CONTRIB_DIR} -Wl,-framework,BGHUDAppKit])
3891   VLC_ADD_OBJCFLAGS([macosx], [-F${CONTRIB_DIR}])
3892 fi
3893 AM_CONDITIONAL(ENABLE_MACOSX_UI, [test "$enable_macosx" != "no"])
3894
3895 dnl
3896 dnl  Minimal Mac OS X module
3897 dnl
3898 AC_ARG_ENABLE(minimal-macosx,
3899   [  --enable-minimal-macosx Minimal Mac OS X support (default disabled)])
3900 if test "${enable_minimal_macosx}" = "yes" -a "${SYS}" = "darwin"
3901 then
3902   VLC_ADD_LIBS([minimal_macosx], [-Wl,-framework,Cocoa])
3903   VLC_ADD_OBJCFLAGS([minimal_macosx], [-fobjc-exceptions] )
3904   VLC_ADD_PLUGIN([minimal_macosx])
3905 fi
3906 AM_CONDITIONAL(ENABLE_MINIMAL_MACOSX, [test "$enable_minimal_macosx" != "no"])
3907
3908 dnl
3909 dnl  MacOS X dialog provider
3910 dnl
3911 AC_ARG_ENABLE(macosx-dialog-provider,
3912   [  --enable-macosx-dialog-provider Mac OS X dialog module (default enabled on Mac OS X)])
3913 if test "x${enable_macosx_dialog_provider}" != "xno" &&
3914   (test "${SYS}" = "darwin" || test "${enable_macosx_dialog_provider}" = "yes")
3915 then
3916   VLC_ADD_LIBS([macosx_dialog_provider],[-Wl,-framework,Cocoa])
3917   VLC_ADD_PLUGIN([macosx_dialog_provider])
3918 fi
3919 AM_CONDITIONAL(ENABLE_MACOSX_DIALOG_PROVIDER, [test "$enable_macosx_dialog_provider" != "no"])
3920
3921 dnl
3922 dnl  ncurses module
3923 dnl
3924 AC_ARG_ENABLE(ncurses,
3925 [AS_HELP_STRING([--disable-ncurses],[ncurses text-based interface (default auto)])])
3926 AS_IF([test "${enable_ncurses}" != "no"] ,[
3927   PKG_CHECK_MODULES([NCURSES], [ncursesw], [
3928     VLC_ADD_PLUGIN([ncurses])
3929     VLC_ADD_CFLAGS([ncurses],[${NCURSES_CFLAGS}])
3930     VLC_ADD_LIBS([ncurses],[${NCURSES_LIBS}])
3931     ALIASES="${ALIASES} nvlc"
3932   ], [
3933     AS_IF([test -n "${enable_ncurses}"], [
3934       AC_MSG_ERROR([${NCURSES_PKG_ERRORS}.])
3935     ])
3936   ])
3937 ])
3938
3939 dnl
3940 dnl  Lirc plugin
3941 dnl
3942 AC_ARG_ENABLE(lirc,
3943   [  --enable-lirc           lirc support (default disabled)])
3944 if test "${enable_lirc}" = "yes"
3945 then
3946   AC_CHECK_HEADER(lirc/lirc_client.h, AC_CHECK_LIB(lirc_client, lirc_init, have_lirc="true", have_lirc="false"),have_lirc="false")
3947   if test "${have_lirc}" = "true"
3948   then
3949     VLC_ADD_PLUGIN([lirc])
3950     VLC_ADD_LIBS([lirc],[-llirc_client])
3951   fi
3952 fi
3953
3954 EXTEND_HELP_STRING([Visualisations and Video filter plugins:])
3955 dnl
3956 dnl  goom visualization plugin
3957 dnl
3958 PKG_ENABLE_MODULES_VLC([GOOM], [], [libgoom2], [goom visualization plugin], [auto])
3959
3960 dnl
3961 dnl libprojectM visualization plugin
3962 dnl
3963 AC_ARG_ENABLE(projectm,
3964   [  --enable-projectm       projectM visualization plugin (default enabled)])
3965 AS_IF([test "${enable_projectm}" != "no"],
3966   [
3967     PKG_CHECK_MODULES(PROJECTM, libprojectM,
3968     [
3969       VLC_ADD_PLUGIN([projectm])
3970       PKG_CHECK_EXISTS([libprojectM >= 2.0.0],
3971         [ AC_DEFINE([HAVE_PROJECTM2], 1, [Define to 1 if using libprojectM 2.x]) ],
3972         [ AC_MSG_WARN( [Using libprojectM version 1] )
3973       ])
3974     ],[
3975       AC_MSG_WARN([${PROJECTM_PKG_ERRORS}.])
3976     ])
3977   ])
3978
3979 dnl
3980 dnl Vovoid VSXu visualization plugin
3981 dnl
3982 AC_ARG_ENABLE(vsxu,
3983   [  --enable-vsxu           Vovoid VSXu visualization plugin (default auto)])
3984 AS_IF([test "${enable_vsxu}" != "no"],
3985   [
3986     PKG_CHECK_MODULES(VSXU, libvsxu,
3987     [
3988       VLC_ADD_PLUGIN([vsxu])
3989       VLC_ADD_CXXFLAGS([vsxu],[$VSXU_CFLAGS])
3990       VLC_ADD_LIBS([vsxu],[$VSXU_LIBS])
3991     ],[
3992       AC_MSG_WARN([${VSXU_PKG_ERRORS}.])
3993     ])
3994   ])
3995
3996 dnl
3997 dnl  AtmoLight (homemade Philips Ambilight clone)
3998 dnl
3999 AC_ARG_ENABLE(atmo,
4000 AS_HELP_STRING([--disable-atmo],[AtmoLight (homemade Philips Ambilight clone)
4001                 (default enabled)]),, [enable_atmo="yes"])
4002 AS_IF([test "${enable_atmo}" != no], [
4003   AS_IF([test "${SYS}" = "mingw32" -o "${SYS}" = "linux"], [
4004     AC_LANG_PUSH(C++)
4005     VLC_ADD_PLUGIN([atmo])
4006     AC_LANG_POP(C++)
4007   ])
4008 ])
4009
4010 dnl
4011 dnl  glSpectrum
4012 dnl
4013 AC_ARG_ENABLE(glspectrum,
4014   [  --enable-glspectrum    3D OpenGL spectrum visualization (default auto)])
4015 if test "${enable_glspectrum}" != "no" && test "${have_gl}" = "yes"
4016 then
4017     VLC_ADD_PLUGIN([glspectrum])
4018     VLC_ADD_LIBS([glspectrum],[$GL_LIBS])
4019 fi
4020
4021 EXTEND_HELP_STRING([Service Discovery plugins:])
4022 dnl
4023 dnl  Bonjour services discovery
4024 PKG_ENABLE_MODULES_VLC([BONJOUR], [], [avahi-client >= 0.6], [Bonjour services discovery], [auto])
4025
4026 dnl
4027 dnl  libudev services discovery
4028 PKG_ENABLE_MODULES_VLC([UDEV], [], [libudev >= 142], [Linux udev services discovery], [auto])
4029
4030 dnl
4031 dnl MTP devices services discovery
4032 PKG_ENABLE_MODULES_VLC([MTP], [mtp access_mtp], [libmtp >= 1.0.0], [MTP devices support], [auto])
4033
4034 dnl
4035 dnl UPnP Plugin (Intel SDK)
4036 dnl
4037 PKG_ENABLE_MODULES_VLC([UPNP], [upnp], [libupnp], [Intel UPNP SDK],[auto])
4038
4039 EXTEND_HELP_STRING([Misc options:])
4040
4041 dnl
4042 dnl  libxml2 module
4043 dnl
4044 PKG_ENABLE_MODULES_VLC([LIBXML2], [xml], [libxml-2.0 >= 2.5], [libxml2 support],[auto])
4045
4046
4047 dnl
4048 dnl libgcrypt
4049 dnl
4050 AC_ARG_ENABLE(libgcrypt,
4051   [  --disable-libgcrypt     gcrypt support (default enabled)])
4052 AS_IF([test "${enable_libgcrypt}" != "no"], [
4053   AC_CHECK_DECL([GCRYCTL_SET_THREAD_CBS], [
4054     libgcrypt-config --version >/dev/null || \
4055         AC_MSG_ERROR([gcrypt.h present but libgcrypt-config could not be found])
4056     AC_CHECK_LIB(gcrypt, gcry_control, [
4057       have_libgcrypt="yes"
4058       GCRYPT_CFLAGS="`libgcrypt-config --cflags`"
4059       GCRYPT_LIBS="`libgcrypt-config --libs`"
4060     ], [
4061       AC_MSG_ERROR([libgcrypt not found. Install libgcrypt or pass --disable-libgcrypt.])
4062     ], [`libgcrypt-config --libs`])
4063   ], [
4064     AC_MSG_ERROR([libgcrypt version 1.1.94 or higher not found. Install libgcrypt or pass --disable-libgcrypt.])
4065   ], [#include <gcrypt.h>]
4066   )
4067 ])
4068
4069 AC_SUBST(GCRYPT_CFLAGS)
4070 AC_SUBST(GCRYPT_LIBS)
4071 AM_CONDITIONAL([HAVE_GCRYPT], [test "${have_libgcrypt}" = "yes"])
4072
4073 dnl
4074 dnl TLS/SSL
4075 dnl
4076 AC_ARG_ENABLE(gnutls,
4077   [  --enable-gnutls         GNU TLS TLS/SSL support (default enabled)])
4078 AS_IF([test "${enable_gnutls}" != "no"], [
4079   PKG_CHECK_MODULES(GNUTLS, [gnutls >= 3.2.0], [
4080     VLC_ADD_PLUGIN([gnutls])
4081   ], [
4082     AS_IF([test -n "${enable_gnutls}"], [
4083       AC_MSG_ERROR([${GNUTLS_PKG_ERRORS}.)])
4084     ])
4085   ])
4086 ])
4087
4088
4089 dnl
4090 dnl Taglib plugin
4091 dnl
4092 AC_ARG_ENABLE(taglib,
4093   [AS_HELP_STRING([--disable-taglib],
4094     [do not use TagLib (default enabled)])])
4095 AS_IF([test "${enable_taglib}" != "no"], [
4096   PKG_CHECK_MODULES(TAGLIB, taglib >= 1.9, [
4097     VLC_ADD_PLUGIN([taglib])
4098   ], [
4099     AC_MSG_WARN([${TAGLIB_PKG_ERRORS}.])])
4100 ])
4101
4102
4103 dnl
4104 dnl update checking system
4105 dnl
4106 AC_ARG_ENABLE(update-check,
4107   [  --enable-update-check   update checking system (default disabled)])
4108 if test "${enable_update_check}" = "yes"
4109 then
4110   if test "${have_libgcrypt}" != "yes"
4111   then
4112     AC_MSG_ERROR([libgcrypt is required for update checking system])
4113   fi
4114   VLC_ADD_LIBS([libvlccore], [${GCRYPT_LIBS}])
4115   VLC_ADD_CFLAGS([libvlccore], [${GCRYPT_CFLAGS}])
4116   AC_DEFINE([UPDATE_CHECK], 1, [Define if you want to use the VLC update mechanism])
4117 fi
4118
4119 dnl
4120 dnl Growl notification plugin
4121 dnl
4122 AC_ARG_ENABLE(growl,
4123   [  --enable-growl          growl notification plugin (default disabled)],,
4124   [enable_growl=no])
4125 AS_IF([test "${enable_growl}" != "no"], [
4126     AC_CHECK_HEADERS(${CONTRIB_DIR}/Growl.framework/Versions/A/Headers/Growl.h, [
4127       VLC_ADD_PLUGIN([growl])
4128       VLC_ADD_LIBS([growl], [-F${CONTRIB_DIR} -Wl,-framework,Growl,-framework,Foundation])
4129       VLC_ADD_OBJCFLAGS([growl], [-F${CONTRIB_DIR}])
4130       VLC_ADD_OBJCFLAGS([growl], [-fobjc-exceptions] )
4131     ])
4132   ]
4133 )
4134
4135 dnl
4136 dnl Libnotify notification plugin
4137 dnl
4138 PKG_ENABLE_MODULES_VLC([NOTIFY], [], [libnotify gtk+-2.0], [libnotify notification], [auto])
4139
4140 dnl
4141 dnl  Endianness check
4142 dnl
4143 AC_C_BIGENDIAN
4144 AS_IF([test "${ac_cv_c_bigendian}" = "yes"], [
4145   DEFS_BIGENDIAN="-DWORDS_BIGENDIAN=1"
4146 ], [
4147   DEFS_BIGENDIAN=""
4148 ])
4149 AC_SUBST(DEFS_BIGENDIAN)
4150
4151 dnl
4152 dnl Where to install KDE solid .desktop
4153 dnl
4154 AC_ARG_VAR([KDE4_CONFIG], [kde4-config utility])
4155 AS_IF([test "x$KDE4_CONFIG" = "x"], [
4156   KDE4_CONFIG="kde4-config"
4157 ])
4158
4159 AC_ARG_WITH(kde-solid,
4160   AS_HELP_STRING([--with-kde-solid=PATH],
4161                  [KDE Solid actions directory (auto)]),, [
4162
4163 if test "${SYS}" != "mingw32" -a "${SYS}" != "darwin" ; then
4164   with_kde_solid="yes"
4165 fi
4166 ])
4167 soliddatadir=""
4168 AS_IF([test "${with_kde_solid}" != "no"], [
4169   AS_IF([test "${with_kde_solid}" = "yes"], [
4170     kde4datadir="`${KDE4_CONFIG} --install data`"
4171     AS_IF([test "x$kde4datadir" = "x"], [kde4datadir='${datadir}/kde4/apps'])
4172     soliddatadir="${kde4datadir}/solid/actions"
4173   ], [
4174     soliddatadir="${with_kde_solid}"
4175   ])
4176 ])
4177 AC_SUBST(soliddatadir)
4178 AM_CONDITIONAL(KDE_SOLID, [test "x${soliddatadir}" != "x"])
4179
4180 EXTEND_HELP_STRING([Components:])
4181
4182 dnl
4183 dnl  the VLC binary
4184 dnl
4185 AC_ARG_ENABLE(vlc,
4186   [  --enable-vlc            build the VLC media player (default enabled)])
4187 AM_CONDITIONAL(BUILD_VLC, [test "${enable_vlc}" != "no"])
4188
4189 AC_ARG_ENABLE(macosx-vlc-app,
4190   [  --enable-macosx-vlc-app build the VLC media player (default enabled on Mac OS X)])
4191 AM_CONDITIONAL(BUILD_MACOSX_VLC_APP, [test "${enable_macosx_vlc_app}" != "no" &&
4192     (test "${SYS}" = "darwin" || test "${enable_macosx_vlc_app}" = "yes") ])
4193
4194 dnl
4195 dnl  Stuff used by the program
4196 dnl
4197 VERSION_MESSAGE="${VERSION} ${CODENAME}"
4198 COPYRIGHT_MESSAGE="Copyright © ${COPYRIGHT_YEARS} the VideoLAN team"
4199 AC_DEFINE_UNQUOTED(VERSION_MESSAGE, "${VERSION_MESSAGE}", [Simple version string])
4200 AC_DEFINE_UNQUOTED(COPYRIGHT_MESSAGE, "${COPYRIGHT_MESSAGE}", [Copyright string])
4201 AC_DEFINE_UNQUOTED(COPYRIGHT_YEARS, "${COPYRIGHT_YEARS}", [The copyright years])
4202 AC_DEFINE_UNQUOTED(CONFIGURE_LINE, "${CONFIGURE_LINE}", [The ./configure command line])
4203 AC_DEFINE_UNQUOTED(PACKAGE_VERSION_MAJOR,${VERSION_MAJOR}, [version major number])
4204 AC_DEFINE_UNQUOTED(PACKAGE_VERSION_MINOR,${VERSION_MINOR}, [version minor number])
4205 AC_DEFINE_UNQUOTED(PACKAGE_VERSION_REVISION,${VERSION_REVISION}, [version revision number])
4206 AC_DEFINE_UNQUOTED(PACKAGE_VERSION_EXTRA,${VERSION_EXTRA}, [version extra number])
4207 AC_DEFINE_UNQUOTED(PACKAGE_VERSION_DEV,"${VERSION_DEV}", [version development string])
4208 AC_SUBST(COPYRIGHT_MESSAGE)
4209 AC_SUBST(VERSION_MESSAGE)
4210 AC_SUBST(VERSION_MAJOR)
4211 AC_SUBST(VERSION_MINOR)
4212 AC_SUBST(VERSION_REVISION)
4213 AC_SUBST(VERSION_EXTRA)
4214 AC_SUBST(COPYRIGHT_YEARS)
4215 AC_DEFINE_UNQUOTED(VLC_COMPILE_BY, "`whoami|sed -e 's/\\\/\\\\\\\/g'`", [user who ran configure])
4216 AC_DEFINE_UNQUOTED(VLC_COMPILE_HOST, "`hostname -f 2>/dev/null || hostname`", [host which ran configure])
4217 AC_DEFINE_UNQUOTED(VLC_COMPILER, "`$CC -v 2>&1 | tail -n 1 | sed -e 's/ *$//'`", [compiler])
4218 dnl
4219 dnl  Handle substvars that use $(top_srcdir)
4220 dnl
4221 CPPFLAGS="-I\$(top_srcdir)/include -I\$(top_builddir)/include ${CPPFLAGS}"
4222
4223 dnl
4224 dnl  Configuration is finished
4225 dnl
4226 AC_SUBST(SYS)
4227 AC_SUBST(ARCH)
4228 AC_SUBST(ALIASES)
4229 AC_SUBST(ASM)
4230 AC_SUBST(MOC)
4231 AC_SUBST(RCC)
4232 AC_SUBST(UIC)
4233 AC_SUBST(WINDRES)
4234 AC_SUBST(WINE_SDK_PATH)
4235 AC_SUBST(LIBEXT)
4236 AC_SUBST(AM_CPPFLAGS)
4237 AC_SUBST(MACOSX_DEPLOYMENT_TARGET)
4238 AC_SUBST(FILE_LIBVLCCORE_DLL)
4239 AC_SUBST(FILE_LIBVLC_DLL)
4240
4241 AC_CONFIG_FILES([
4242   Makefile
4243   doc/Makefile
4244   modules/Makefile
4245   m4/Makefile
4246   po/Makefile.in
4247   share/Makefile
4248   compat/Makefile
4249   src/Makefile
4250   lib/Makefile
4251   bin/Makefile
4252   test/Makefile
4253   modules/access_output/Makefile
4254   modules/audio_filter/Makefile
4255   modules/control/Makefile
4256   modules/gui/Makefile
4257   modules/gui/ios_dialog_provider/Makefile
4258   modules/gui/macosx/Makefile
4259   modules/gui/minimal_macosx/Makefile
4260   modules/gui/macosx_dialog_provider/Makefile
4261   modules/gui/qt4/Makefile
4262   modules/gui/skins2/Makefile
4263   modules/mux/Makefile
4264   modules/packetizer/Makefile
4265   modules/stream_out/Makefile
4266   modules/text_renderer/Makefile
4267   modules/video_filter/Makefile
4268   modules/visualization/Makefile
4269   modules/hw/mmal/Makefile
4270 ])
4271
4272 AM_COND_IF([HAVE_WIN32], [
4273   AC_CONFIG_FILES([
4274     extras/package/win32/NSIS/spad.nsi
4275     extras/package/win32/NSIS/vlc.win32.nsi
4276     extras/package/win32/msi/config.wxi
4277   ])
4278 ])
4279
4280 AM_COND_IF([HAVE_DARWIN], [
4281   AC_CONFIG_FILES([
4282     extras/package/macosx/Info.plist
4283     extras/package/macosx/Resources/English.lproj/InfoPlist.strings
4284   ])
4285 ])
4286
4287 dnl Generate makefiles
4288 AC_OUTPUT
4289
4290 dnl Do we have to use make or gmake ?
4291 if make --version 2>&1|grep -q GNU
4292 then
4293     # GNU make, all seems good
4294     MAKE=make
4295 else
4296     # Known GNU make alias (on BSD)
4297     MAKE=gmake
4298 fi
4299 dnl Shortcut to nice compile message
4300 if test -n $SHELL; then
4301   SHELL=${CONFIG_SHELL-/bin/sh}
4302 fi
4303 rm -f compile
4304 compile_top_srcdir=`sed -ne "s/^top_srcdir *= *//p" < Makefile`
4305 echo "#! $SHELL
4306 rm -f .error\$\$
4307 ERROR=0
4308 export PATH=\"$PATH\" LANG=C
4309 ($MAKE V=1 \$@ 2>&1 || touch .error\$\$)| $compile_top_srcdir/extras/buildsystem/make.pl
4310 test -f .error\$\$ && ERROR=1
4311 rm -f .error\$\$
4312 exit \$ERROR" >compile
4313 chmod a+x compile
4314
4315 echo "
4316 libvlc configuration
4317 --------------------
4318 version               : ${VERSION}
4319 system                : ${SYS}
4320 architecture          : ${ARCH}
4321 optimizations         : ${enable_optimizations}"
4322 if test "${enable_vlc}" != "no"; then
4323 echo "vlc aliases           :${ALIASES}"
4324 else
4325 echo "build vlc executable  : no"
4326 fi
4327 echo "
4328 To build vlc and its plugins, type \`$MAKE', or \`./compile' if you like nice colors."