egl: add Wayland extended platform support
[vlc.git] / configure.ac
1 dnl Autoconf settings for vlc
2
3 AC_COPYRIGHT([Copyright 2002-2014 VLC authors and VideoLAN])
4
5 AC_INIT(vlc, 3.0.0-git)
6 VERSION_MAJOR=3
7 VERSION_MINOR=0
8 VERSION_REVISION=0
9 VERSION_EXTRA=0
10 VERSION_DEV=git
11
12 PKGDIR="vlc"
13 AC_SUBST(PKGDIR)
14
15 CONFIGURE_LINE="`echo "$0 $ac_configure_args" | sed -e 's/\\\/\\\\\\\/g'`"
16 CODENAME="Vetinari"
17 COPYRIGHT_YEARS="1996-2014"
18
19 AC_CONFIG_SRCDIR(src/libvlc.c)
20 AC_CONFIG_AUX_DIR(autotools)
21 AC_CONFIG_MACRO_DIR(m4)
22 AC_CONFIG_LIBOBJ_DIR(compat)
23 AC_CANONICAL_BUILD
24 AC_CANONICAL_HOST
25 AC_PRESERVE_HELP_ORDER
26
27 AM_INIT_AUTOMAKE(tar-ustar color-tests foreign)
28 AC_CONFIG_HEADERS([config.h])
29
30 # Disable with "./configure --disable-silent-rules" or "make V=1"
31 AM_SILENT_RULES([yes])
32
33 dnl Too many people are not aware of maintainer mode:
34 dnl If you want to use it, you definitely know what you are doing, so
35 dnl you can specify "--disable-maintainer-mode". But if you want the default
36 dnl automake behavior, you've likely never heard of maintainer mode, so we
37 dnl can't expect you to enable it manually.
38 AS_IF([test "x${enable_maintainer_mode}" != "xno"],
39     [enable_maintainer_mode="yes"])
40 AM_MAINTAINER_MODE
41
42 dnl
43 dnl Directories
44 dnl
45 dnl vlcincludedir="\${includedir}/\${PKGDIR}"
46 dnl AC_SUBST(vlcincludedir)
47 vlcdatadir="\${datadir}/\${PKGDIR}"
48 AC_SUBST(vlcdatadir)
49 vlclibdir="\${libdir}/\${PKGDIR}"
50 AC_SUBST(vlclibdir)
51
52 dnl
53 dnl Check for tools
54 dnl
55 AC_PROG_CC_C99
56 AC_USE_SYSTEM_EXTENSIONS
57 AC_DEFINE([_FORTIFY_SOURCE], 2, [Define to 2 to get glibc warnings.])
58 AC_DEFINE([_FILE_OFFSET_BITS], 64, [Define to 64 for large files support.])
59 AH_TOP([
60 #ifndef _REENTRANT
61 # define _REENTRANT
62 #endif
63 ])
64 AC_DEFINE([_THREAD_SAFE],, [Same as _REENTANT for some other OSes.])
65 AC_DEFINE([__LIBVLC__],, [Define within the LibVLC source code tree.])
66 AC_DEFINE([WIN32_LEAN_AND_MEAN],, [Define to limit the scope of <windows.h>.])
67
68 AM_PROG_CC_C_O
69 AC_PROG_CXX
70 AC_PROG_CPP
71 AC_PROG_OBJC
72 _AM_DEPENDENCIES([OBJC])
73 AC_PROG_EGREP
74 AC_PROG_MAKE_SET
75 AC_PROG_INSTALL
76 AM_PROG_AS
77
78 AC_ARG_VAR([DESKTOP_FILE_VALIDATE], [Validator for desktop entry files])
79 AC_CHECK_PROGS(DESKTOP_FILE_VALIDATE, [${DESKTOP_FILE_VALIDATE} desktop-file-validate], :)
80 AC_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 pthread_cond_timedwait_monotonic_np pthread_condattr_setclock])
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   AS_IF([test "${have_egl}" = "yes"], [
3210     PKG_CHECK_MODULES([WAYLAND_EGL], [wayland-egl], [
3211       have_wayland_egl="yes"
3212     ], [
3213       AS_IF([test -n "${enable_wayland}"], [
3214         AC_MSG_ERROR([${WAYLAND_EGL_PKG_ERRORS}.])
3215       ])
3216     ])
3217   ])
3218 ])
3219 AM_CONDITIONAL([HAVE_WAYLAND], [test "${have_wayland}" = "yes"])
3220 AM_CONDITIONAL([HAVE_WAYLAND_EGL], [test "${have_wayland_egl}" = "yes"])
3221
3222
3223 dnl
3224 dnl  SDL module
3225 dnl
3226 AC_ARG_ENABLE(sdl,
3227   [  --enable-sdl            SDL support (default enabled)])
3228 AC_ARG_ENABLE(sdl-image,
3229   [  --enable-sdl-image      SDL image support (default enabled)])
3230 if test "${enable_sdl}" != "no"
3231 then
3232    PKG_CHECK_MODULES(SDL, [sdl >= 1.2.10], [
3233       # SDL on Darwin is heavily patched and can only run SDL_image
3234       if test "${SYS}" != "darwin"; then
3235         VLC_ADD_PLUGIN([vout_sdl])
3236       fi
3237
3238       # SDL_image
3239       AS_IF([ test "${enable_sdl_image}" != "no"],[
3240         PKG_CHECK_MODULES(SDL_IMAGE, [SDL_image >= 1.2.10], [
3241           VLC_ADD_PLUGIN([sdl_image])],
3242           [ AC_MSG_WARN([${SDL_IMAGE_PKG_ERRORS}. You should install it alongside your SDL package.])
3243           ])
3244       ])
3245    ],[
3246      AC_MSG_WARN([${SDL_PKG_ERRORS}.])
3247    ])
3248 fi
3249
3250 dnl
3251 dnl  freetype module
3252 dnl
3253 AC_ARG_ENABLE(freetype,
3254   [  --enable-freetype       freetype support   (default auto)])
3255 AC_ARG_ENABLE(fribidi,
3256   [  --enable-fribidi        fribidi support    (default auto)])
3257 AC_ARG_ENABLE(fontconfig,
3258   [  --enable-fontconfig     fontconfig support (default auto)])
3259
3260 AC_ARG_WITH([default-font],
3261     AS_HELP_STRING([--with-default-font=PATH],
3262         [Path to the default font]),
3263         [AC_DEFINE_UNQUOTED([DEFAULT_FONT_FILE],
3264             "$withval", [Default font])])
3265 AC_ARG_WITH([default-monospace-font],
3266     AS_HELP_STRING([--with-default-monospace-font=PATH],
3267         [Path to the default font]),
3268         [AC_DEFINE_UNQUOTED([DEFAULT_MONOSPACE_FONT_FILE],
3269             "$withval", [Default monospace font])])
3270
3271 AC_ARG_WITH([default-font-family],
3272     AS_HELP_STRING([--with-default-font-family=NAME],
3273         [Path to the default font family]),
3274         [AC_DEFINE_UNQUOTED([DEFAULT_FAMILY],
3275             "$withval", [Default font family])])
3276 AC_ARG_WITH([default-monospace-font-family],
3277     AS_HELP_STRING([--with-default-monospace-font-family=NAME],
3278         [Path to the default font family]),
3279         [AC_DEFINE_UNQUOTED([DEFAULT_MONOSPACE_FAMILY],
3280             "$withval", [Default monospace font family])])
3281
3282 if test "${enable_freetype}" != "no"; then
3283    PKG_CHECK_MODULES(FREETYPE, freetype2, [
3284       have_freetype=yes
3285       VLC_ADD_PLUGIN([freetype])
3286       VLC_ADD_CPPFLAGS([freetype skins2],[${FREETYPE_CFLAGS}])
3287       if test "${SYS}" = "mingw32"; then
3288         VLC_ADD_LIBS([freetype],[-liconv -lz])
3289       fi
3290       VLC_ADD_LIBS([freetype skins2],[${FREETYPE_LIBS}])
3291
3292       AC_CHECK_HEADERS(Carbon/Carbon.h,
3293                        [VLC_ADD_LIBS([freetype],[-Wl,-framework,Carbon])])
3294
3295       dnl fontconfig support
3296       if test "${SYS}" != "mingw32"; then
3297           if test "${enable_fontconfig}" != "no"; then
3298             AC_CHECK_HEADERS(fontconfig/fontconfig.h, [
3299               VLC_ADD_CPPFLAGS([freetype],[-DHAVE_FONTCONFIG])
3300               VLC_ADD_LIBS([freetype],[-lfontconfig])
3301             ],[AC_MSG_WARN([library fontconfig not found. Styles will be disabled in freetype])])
3302           fi
3303       else
3304           VLC_ADD_LIBS([freetype],[-lgdi32])
3305       fi
3306
3307       dnl fribidi support
3308       if test "${enable_fribidi}" != "no"; then
3309         PKG_CHECK_MODULES(FRIBIDI, fribidi, [
3310           VLC_ADD_CPPFLAGS([freetype skins2], [${FRIBIDI_CFLAGS} -DHAVE_FRIBIDI])
3311           VLC_ADD_LIBS([freetype skins2], [${FRIBIDI_LIBS}])
3312         ],[AC_MSG_WARN([${FRIBIDI_PKG_ERRORS}. Bidirectional support will be disabled in FreeType.])])
3313       fi
3314
3315   ],[
3316   have_freetype=no
3317   AS_IF([test -n "${enable_freetype}"],[
3318     AC_MSG_ERROR([${FREETYPE_PKG_ERRORS}. Install FreeType2 development or configure with --disable-freetype.])
3319     ])
3320   ])
3321 fi
3322
3323
3324 dnl
3325 dnl  QuartzText vout module (iOS/Mac OS)
3326 dnl
3327 AC_ARG_ENABLE(macosx-quartztext,
3328   [  --enable-macosx-quartztext   Mac OS X quartz text module (default enabled on Mac OS X)])
3329 if test "x${enable_macosx_quartztext}" != "xno" &&
3330   (test "${SYS}" = "darwin" || test "${enable_macosx_quartztext}" = "yes")
3331 then
3332   VLC_ADD_PLUGIN([quartztext])
3333   VLC_ADD_LIBS([quartztext],[-Wl,-framework,ApplicationServices])
3334 fi
3335
3336 dnl
3337 dnl  SVG module (text rendering and image decoding)
3338 dnl
3339 PKG_ENABLE_MODULES_VLC([SVG], [], [librsvg-2.0 >= 2.9.0], [SVG rendering library],[auto])
3340 PKG_ENABLE_MODULES_VLC([SVGDEC], [], [librsvg-2.0 >= 2.9.0 cairo >= 1.13.1], [SVG image decoder library],[auto])
3341
3342 dnl
3343 dnl  android surface module
3344 dnl
3345 AC_ARG_ENABLE(android-surface,
3346   [  --enable-android-surface   Android Surface video output module (default disabled)])
3347 if test "${enable_android_surface}" = "yes"; then
3348      VLC_ADD_PLUGIN([android_surface])
3349      VLC_ADD_PLUGIN([android_opaque])
3350 fi
3351
3352 dnl
3353 dnl  Windows DirectX module
3354 dnl
3355
3356 AC_ARG_ENABLE(directx,
3357   [AS_HELP_STRING([--enable-directx],
3358     [Microsoft DirectX support (default enabled on Windows)])],, [
3359   AS_IF([test "${SYS}" = "mingw32"], [
3360     enable_directx="yes"
3361   ], [
3362     enable_directx="no"
3363   ])
3364 ])
3365 have_directx="no"
3366 AS_IF([test "${enable_directx}" != "no"], [
3367   dnl DirectDraw
3368   AC_CHECK_HEADERS(ddraw.h, [
3369     have_directx="yes"
3370   ], [
3371     AC_MSG_ERROR([Cannot find DirectX headers!])
3372   ])
3373
3374   dnl OpenGL
3375   AC_CHECK_HEADERS(GL/wglew.h, [
3376     VLC_ADD_PLUGIN([glwin32])
3377   ],, [
3378     #include <windows.h>
3379     #include <GL/gl.h>
3380   ])
3381
3382   dnl Direct3D
3383   AC_CHECK_HEADERS(d3d9.h, [
3384     VLC_ADD_PLUGIN([direct3d])
3385   ])
3386
3387   dnl Direct2D
3388   AC_CHECK_HEADERS(d2d1.h, [
3389     VLC_ADD_PLUGIN([direct2d])
3390   ])
3391 ])
3392 AM_CONDITIONAL([HAVE_DIRECTX], [test "$have_directx" = "yes"])
3393
3394 dnl
3395 dnl  Linux framebuffer module
3396 dnl
3397 AC_CHECK_HEADER([linux/fb.h], [
3398   VLC_ADD_PLUGIN([fb])
3399 ])
3400
3401
3402 dnl
3403 dnl  DirectFB module
3404 dnl  try to find using: 1 - given location; 2 - directfb-config; 3 - pkg-config
3405 dnl  TODO: support for static linking
3406 dnl
3407 AC_ARG_ENABLE(directfb,
3408   [  --enable-directfb       DirectFB support (default disabled)])
3409 AC_ARG_WITH(directfb,
3410   [  --with-directfb=PATH    path to DirectFB headers and libraries])
3411
3412 if test "${enable_directfb}" = "yes"; then
3413     have_directfb="false"
3414     CPPFLAGS_mydirectfb=
3415     LIBS_mydirectfb=
3416     if test "${with_directfb}" != "no" -a -n "${with_directfb}"; then
3417         dnl Trying the given location
3418         VLC_SAVE_FLAGS
3419
3420         CPPFLAGS_new="-I${with_directfb}/include -D_REENTRANT -D_GNU_SOURCE"
3421         LIBS_new="-L${with_directfb}/lib/fusion/.libs/ -L${with_directfb}/lib/direct/.libs/ -L${with_directfb}/src/.libs/"
3422
3423         CPPFLAGS="${CPPFLAGS} ${CPPFLAGS_new}"
3424         LIBS="${LIBS} ${LIBS_new}"
3425
3426         dnl FIXME: too obscure
3427         AC_CHECK_HEADER([directfb.h], [
3428             AC_CHECK_LIB([direct],[direct_initialize], [
3429                 AC_CHECK_LIB([fusion], [fusion_enter], [
3430                     AC_CHECK_LIB([directfb], [DirectFBInit], have_directfb="true", have_directfb="false")
3431                 ], have_directfb="false")
3432             ], have_directfb="false")
3433         ], have_directfb="false")
3434
3435         VLC_RESTORE_FLAGS
3436
3437         if test "${have_directfb}" = "true"; then
3438             LIBS_mydirectfb="${LIBS_new} -lz $LIBDL -ldirectfb -lfusion -ldirect -lpthread"
3439             CPPFLAGS_mydirectfb="${CPPFLAGS_new}"
3440         fi
3441     else
3442         dnl Look for directfb-config
3443         AC_PATH_PROG(DIRECTFB_CONFIG, directfb-config, no, ${PATH})
3444         if test "${DIRECTFB_CONFIG}" != "no"; then
3445             CPPFLAGS_mydirectfb="`${DIRECTFB_CONFIG} --cflags`"
3446             LIBS_mydirectfb="`${DIRECTFB_CONFIG} --libs`"
3447             have_directfb="true"
3448         else
3449             dnl Trying with pkg-config
3450             PKG_CHECK_MODULES(DIRECTFB, directfb, [
3451                 CPPFLAGS_mydirectfb="${DIRECTFB_CFLAGS}"
3452                 LIBS_mydirectfb="${DIRECTFB_LIBS}"
3453                 have_directfb="true"
3454                 ], [have_directfb="false"])
3455         fi
3456     fi
3457     if test "${have_directfb}" = "true"; then
3458         VLC_ADD_PLUGIN([directfb])
3459         VLC_ADD_CPPFLAGS([directfb],[${CPPFLAGS_mydirectfb}])
3460         VLC_ADD_LIBS([directfb],[${LIBS_mydirectfb}])
3461     else
3462         AC_MSG_ERROR([${DIRECTFB_PKG_ERRORS}.])
3463     fi
3464 fi
3465
3466 dnl
3467 dnl  AA plugin
3468 dnl
3469 AC_ARG_ENABLE(aa,
3470   [  --enable-aa             aalib output (default disabled)])
3471 if test "${enable_aa}" = "yes"
3472 then
3473   AC_CHECK_HEADER(aalib.h,have_aa="true",have_aa="false")
3474   if test "${have_aa}" = "true"
3475   then
3476     VLC_ADD_PLUGIN([aa])
3477   fi
3478 fi
3479
3480 dnl
3481 dnl  libcaca plugin
3482 dnl
3483 PKG_ENABLE_MODULES_VLC([CACA], [], [caca >= 0.99.beta14], [libcaca output],[auto])
3484
3485 dnl
3486 dnl  OS/2 KVA plugin
3487 dnl
3488 AC_ARG_ENABLE(kva,
3489   [AS_HELP_STRING([--enable-kva],
3490     [support the K Video Accelerator KVA (default enabled on OS/2)])],, [
3491   AS_IF([test "$SYS" = "os2"], [
3492     enable_kva="yes"
3493   ])
3494 ])
3495 have_kva="no"
3496 KVA_LIBS=""
3497 AS_IF([test "$enable_kva" != "no"], [
3498   AC_CHECK_HEADERS([kva.h], [
3499     have_kva="yes"
3500     AC_CHECK_LIB(kva, main, [
3501       KVA_LIBS="-lkva"
3502     ])
3503   ])
3504 ])
3505 AC_SUBST(KVA_LIBS)
3506 AM_CONDITIONAL([HAVE_KVA], [test "${have_kva}" = "yes"])
3507
3508 dnl
3509 dnl MMAL plugin
3510 dnl
3511 AC_ARG_ENABLE(mmal,
3512   AS_HELP_STRING([--enable-mmal],
3513     [Multi-Media Abstraction Layer (MMAL) hardware plugin (default enable)]))
3514 if test "${enable_mmal}" != "no"; then
3515   VLC_SAVE_FLAGS
3516   LDFLAGS="${LDFLAGS} -L/opt/vc/lib"
3517   CPPFLAGS="${CPPFLAGS} -I/opt/vc/include -I/opt/vc/include/interface/vcos/pthreads -I/opt/vc/include/interface/vmcs_host/linux"
3518   AC_CHECK_HEADERS(interface/mmal/mmal.h,
3519     [ AC_CHECK_LIB(bcm_host, vc_tv_unregister_callback_full, [
3520         have_mmal="yes"
3521         VLC_ADD_PLUGIN([mmal])
3522         VLC_ADD_LDFLAGS([mmal],[ -L/opt/vc/lib ])
3523         VLC_ADD_CFLAGS([mmal],[ -I/opt/vc/include -I/opt/vc/include/interface/vcos/pthreads -I/opt/vc/include/interface/vmcs_host/linux ])
3524         VLC_ADD_LIBS([mmal],[ -lbcm_host -lmmal ]) ], [
3525           AS_IF([test "${enable_mmal}" = "yes"],
3526             [ AC_MSG_ERROR([Cannot find bcm library...]) ],
3527             [ AC_MSG_WARN([Cannot find bcm library...]) ])
3528           ],
3529         [])
3530     ] , [ AS_IF([test "${enable_mmal}" = "yes"],
3531       [ AC_MSG_ERROR([Cannot find development headers for mmal...]) ],
3532       [ AC_MSG_WARN([Cannot find development headers for mmal...]) ]) ])
3533   VLC_RESTORE_FLAGS
3534 fi
3535 AM_CONDITIONAL([HAVE_MMAL], [test "${have_mmal}" = "yes"])
3536
3537 dnl
3538 dnl  Audio plugins
3539 dnl
3540
3541 EXTEND_HELP_STRING([Audio plugins:])
3542
3543 dnl
3544 dnl  Pulseaudio module
3545 dnl
3546 AC_ARG_ENABLE(pulse,
3547   [AS_HELP_STRING([--enable-pulse],
3548     [use the PulseAudio client library (default auto)])])
3549 have_pulse="no"
3550 AS_IF([test "${enable_pulse}" != "no"], [
3551   PKG_CHECK_MODULES([PULSE], [libpulse >= 1.0], [
3552     have_pulse="yes"
3553   ], [
3554     AS_IF([test "x${enable_pulse}" != "x"], [
3555       AC_MSG_ERROR([$PULSE_PKG_ERRORS. PulseAudio 1.0 or later required.])
3556     ])
3557   ])
3558 ])
3559 AM_CONDITIONAL([HAVE_PULSE], [test "${have_pulse}" = "yes"])
3560
3561 dnl
3562 dnl  ALSA module
3563 dnl
3564 AC_ARG_ENABLE(alsa,
3565   [AS_HELP_STRING([--enable-alsa],
3566     [support the Advanced Linux Sound Architecture (default auto)])],, [
3567   AS_IF([test "$SYS" = "linux" -a "${have_pulse}" = "no"], [
3568     enable_alsa="yes"
3569   ])
3570 ])
3571 have_alsa="no"
3572 AS_IF([test "${enable_alsa}" != "no"], [
3573   PKG_CHECK_MODULES([ALSA], [alsa >= 1.0.24], [
3574     have_alsa="yes"
3575   ], [
3576     AS_IF([test "x${enable_alsa}" != "x"], [
3577       AC_MSG_ERROR([$ALSA_PKG_ERRORS. alsa-lib 1.0.24 or later required.])
3578     ])
3579   ])
3580 ])
3581 AM_CONDITIONAL([HAVE_ALSA], [test "${have_alsa}" = "yes"])
3582
3583 dnl
3584 dnl  Open Sound System module
3585 dnl
3586 AC_ARG_ENABLE(oss,
3587   [AS_HELP_STRING([--enable-oss],
3588     [support the Open Sound System OSS (default enabled on FreeBSD/NetBSD/DragonFlyBSD)])],, [
3589   AS_IF([test "$SYS" = "mingw32" -o "$SYS" = "linux" -o "$SYS" = "openbsd"], [
3590     enable_oss="no"
3591   ])
3592 ])
3593 have_oss="no"
3594 OSS_LIBS=""
3595 AS_IF([test "$enable_oss" != "no"], [
3596   AC_CHECK_HEADERS([soundcard.h sys/soundcard.h], [
3597     have_oss="yes"
3598     AC_CHECK_LIB(ossaudio, main, [
3599       OSS_LIBS="-lossaudio"
3600     ])
3601   ])
3602 ])
3603 AC_SUBST(OSS_LIBS)
3604 AM_CONDITIONAL([HAVE_OSS], [test "${have_oss}" = "yes"])
3605
3606 dnl
3607 dnl  OpenBSD sndio module
3608 dnl
3609 AC_ARG_ENABLE([sndio],
3610   [AS_HELP_STRING([--disable-sndio],
3611     [support the OpenBSD sndio (default auto)])],, [
3612   AS_IF([test "$SYS" = "openbsd"], [
3613     enable_sndio="yes"
3614   ])
3615 ])
3616 have_sndio="no"
3617 AS_IF([test "$enable_sndio" != "no"], [
3618   AC_CHECK_HEADER([sndio.h], [
3619     have_sndio="yes"
3620   ])
3621 ])
3622 AM_CONDITIONAL([HAVE_SNDIO], [test "${have_sndio}" = "yes"])
3623
3624 dnl
3625 dnl  Windows Audio Session plugin
3626 dnl
3627 AC_ARG_ENABLE([wasapi],
3628   [AS_HELP_STRING([--enable-wasapi],
3629     [use the Windows Audio Session API (default auto)])
3630 ])
3631 have_wasapi="no"
3632 AS_IF([test "$enable_wasapi" != "no"], [
3633   AC_CHECK_HEADER([audioclient.h], [
3634     have_wasapi="yes"
3635   ], [
3636     AS_IF([test "x${enable_wasapi}" != "x"], [
3637       AC_MSG_ERROR([Windows Audio Session API not found.])
3638     ])
3639   ])
3640 ])
3641 AM_CONDITIONAL([HAVE_WASAPI], [test "${have_wasapi}" = "yes"])
3642
3643 dnl
3644 dnl  AudioQueue plugin
3645 dnl
3646 AC_ARG_ENABLE(audioqueue,
3647   [  --enable-audioqueue     AudioQueue audio module (default disabled)])
3648 if test "${enable_audioqueue}" = "yes"
3649 then
3650   VLC_ADD_PLUGIN([audioqueue])
3651 fi
3652
3653 dnl
3654 dnl  JACK modules
3655 dnl
3656 AC_ARG_ENABLE(jack,
3657   [AS_HELP_STRING([--disable-jack],
3658     [do not use jack (default auto)])])
3659 have_jack="no"
3660 AS_IF([test "${enable_jack}" != "no"], [
3661     PKG_CHECK_MODULES(JACK, jack >= 1.9.7,
3662       [ have_jack=yes ],
3663       [
3664       AC_MSG_WARN([${JACK_PKG_ERRORS}, trying jack1 instead])
3665
3666       PKG_CHECK_MODULES(JACK, jack >= 0.120.1 jack < 1.0,
3667       [ have_jack=yes ],
3668       [
3669       AS_IF([test -n "${enable_jack}"],
3670          [AC_MSG_ERROR([${JACK_PKG_ERRORS}.])],
3671          [AC_MSG_WARN([${JACK_PKG_ERRORS}.])])
3672       ])
3673     ])
3674 ])
3675 AM_CONDITIONAL([HAVE_JACK], [test "${have_jack}" != "no"])
3676
3677 dnl
3678 dnl  OpenSLES Android
3679 dnl
3680 AC_ARG_ENABLE(opensles,
3681   [  --enable-opensles       Android OpenSL ES audio module (default disabled)])
3682 if test "${HAVE_ANDROID}" = "1"; then
3683   if test "${enable_opensles}" = "yes"; then
3684       AC_CHECK_HEADERS(SLES/OpenSLES.h,
3685         [ VLC_ADD_PLUGIN([opensles_android]) ],
3686         [ AC_MSG_ERROR([cannot find OpenSLES headers])] )
3687   fi
3688 fi
3689
3690 dnl
3691 dnl libsamplerate plugin
3692 dnl
3693 PKG_ENABLE_MODULES_VLC([SAMPLERATE], [], [samplerate], [Resampler with libsamplerate], [auto])
3694
3695 dnl
3696 dnl  OS/2 KAI plugin
3697 dnl
3698 AC_ARG_ENABLE(kai,
3699   [AS_HELP_STRING([--enable-kai],
3700     [support the K Audio Interface KAI (default enabled on OS/2)])],, [
3701   AS_IF([test "$SYS" = "os2"], [
3702     enable_kai="yes"
3703   ])
3704 ])
3705 have_kai="no"
3706 KAI_LIBS=""
3707 AS_IF([test "$enable_kai" != "no"], [
3708   AC_CHECK_HEADERS([kai.h], [
3709     have_kai="yes"
3710     AC_CHECK_LIB(kai, main, [
3711       KAI_LIBS="-lkai"
3712     ])
3713   ])
3714 ])
3715 AC_SUBST(KAI_LIBS)
3716 AM_CONDITIONAL([HAVE_KAI], [test "${have_kai}" = "yes"])
3717
3718 dnl
3719 dnl  chromaprint audio track fingerprinter
3720 dnl
3721 m4_pushdef([libchromaprint_version], 0.6.0)
3722 PKG_WITH_MODULES([CHROMAPRINT],[libchromaprint >= libchromaprint_version],
3723     VLC_ADD_PLUGIN([stream_out_chromaprint])
3724     VLC_ADD_CFLAGS([stream_out_chromaprint],[${CHROMAPRINT_CFLAGS}] [-I./webservices -I../stream_out])
3725     VLC_ADD_LIBS([stream_out_chromaprint],[${CHROMAPRINT_LIBS}]),
3726     AS_IF([test "${enable_chromaprint}" = "yes"],
3727         [AC_MSG_ERROR(Library [libchromaprint >= libchromaprint_version] needed for [chromaprint] was not found)],
3728         [AC_MSG_WARN(Library [libchromaprint >= libchromaprint_version] needed for [chromaprint] was not found)]
3729          ),
3730     [(Chromaprint based audio fingerprinter)],[auto])
3731 m4_popdef([libchromaprint_version])
3732
3733 dnl
3734 dnl  Chromecast streaming support
3735 dnl
3736 m4_pushdef([protobuf_lite_version], 2.5.0)
3737 PKG_WITH_MODULES([CHROMECAST],[protobuf-lite >= protobuf_lite_version], [
3738     AC_CHECK_PROGS(PROTOC, protoc)
3739     AS_IF([test "${PROTOC}" = "protoc"], [
3740         VLC_ADD_PLUGIN([stream_out_chromecast])
3741         VLC_ADD_CXXFLAGS([stream_out_chromecast],[${CHROMECAST_CFLAGS}] [-I./chromecast])
3742         VLC_ADD_LIBS([stream_out_chromecast],[${CHROMECAST_LIBS}])
3743         build_chromecast="yes"
3744     ], [
3745     AC_MSG_ERROR(protoc compiler needed for [chromecast] was not found)
3746     ])
3747 ], [
3748     AS_IF([test "${enable_chromecast}" = "yes"],
3749         AC_MSG_ERROR(Library [protobuf-lite >= protobuf_lite_version] needed for [chromecast] was not found),
3750         AC_MSG_WARN(Library [protobuf-lite >= protobuf_lite_version] needed for [chromecast] was not found)
3751     )
3752     enable_chromecast="no"
3753 ], [(Chromecast streaming support)], [auto])
3754 AM_CONDITIONAL([BUILD_CHROMECAST], [test "${build_chromecast}" = "yes"])
3755 m4_popdef([protobuf_lite_version])
3756
3757 dnl
3758 dnl  Interface plugins
3759 dnl
3760
3761 EXTEND_HELP_STRING([Interface plugins:])
3762
3763 dnl
3764 dnl QT
3765 dnl
3766 AC_ARG_ENABLE(qt, [
3767   AS_HELP_STRING([--disable-qt], [Qt UI support (default enabled)])],, [
3768   AS_IF([test "${SYS}" = "darwin"], [
3769     enable_qt="no"
3770   ])
3771 ])
3772 AS_IF([test "${enable_qt}" != "no"], [
3773   PKG_CHECK_MODULES([QT], [Qt5Core >= 5.1.0 Qt5Widgets Qt5Gui], [
3774       PKG_CHECK_MODULES([QTX11], [Qt5X11Extras], [
3775           VLC_ADD_LIBS([qt4],[${QTX11_LIBS}])
3776           VLC_ADD_CXXFLAGS([qt4],[${QTX11_CFLAGS} -DQT5_HAS_X11])
3777       ],[
3778           AC_MSG_WARN([Not building Qt Interface with X11 helpers.])
3779       ])
3780       QT_PATH="$(eval $PKG_CONFIG --variable=exec_prefix Qt5Core)"
3781       QT_HOST_PATH="$(eval $PKG_CONFIG --variable=host_bins Qt5Core)"
3782       AC_PATH_PROGS(MOC, [moc-qt5 moc], moc, [${QT_HOST_PATH} ${QT_PATH}/bin ${CONTRIB_DIR}/bin])
3783       AC_PATH_PROGS(RCC, [rcc-qt5 rcc], rcc, [${QT_HOST_PATH} ${QT_PATH}/bin ${CONTRIB_DIR}/bin])
3784       AC_PATH_PROGS(UIC, [uic-qt5 uic], uic, [${QT_HOST_PATH} ${QT_PATH}/bin ${CONTRIB_DIR}/bin])
3785     ], [
3786       PKG_CHECK_MODULES([QT], [QtCore QtGui >= 4.6.0],, [
3787         AS_IF([test -n "${enable_qt}"],[
3788           AC_MSG_ERROR([${QT_PKG_ERRORS}.])
3789         ],[
3790           AC_MSG_WARN([${QT_PKG_ERRORS}.])
3791         ])
3792         enable_qt="no"
3793       ])
3794       QT_PATH="$(eval $PKG_CONFIG --variable=exec_prefix QtCore)"
3795       AC_PATH_PROGS(MOC, [moc-qt4 moc], moc, [${QT_PATH}/bin ${CONTRIB_DIR}/bin])
3796       AC_PATH_PROG(RCC, rcc, rcc, [${QT_PATH}/bin ${CONTRIB_DIR}/bin])
3797       AC_PATH_PROGS(UIC, [uic-qt4 uic], uic, [${QT_PATH}/bin ${CONTRIB_DIR}/bin])
3798     ])
3799 ])
3800 AS_IF([test "${enable_qt}" != "no"], [
3801   VLC_ADD_PLUGIN([qt4])
3802   ALIASES="${ALIASES} qvlc"
3803 ])
3804 AM_CONDITIONAL(ENABLE_QT4, [test "$enable_qt" != "no"])
3805
3806 dnl
3807 dnl Simple test for skins2 dependency
3808 dnl
3809 AS_IF([test "$enable_qt" = "no"], [
3810   AS_IF([test "${enable_skins2}" = "yes"], [
3811     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.])
3812   ], [
3813     enable_skins2="no"
3814     AC_MSG_WARN([The skins2 module depends on the Qt4 interface, Qt4 is not built so skins2 is disabled.])
3815   ])
3816 ])
3817
3818 dnl
3819 dnl Skins2 module
3820 dnl
3821 AC_ARG_ENABLE(skins2,
3822   [AS_HELP_STRING([--enable-skins2], [skins interface module (default auto)])])
3823 AS_IF([test "${enable_skins2}" != "no"], [
3824   have_skins_deps="yes"
3825
3826   dnl Win32
3827   AS_IF([test "${SYS}" = "mingw32"], [
3828     VLC_ADD_CPPFLAGS([skins2],[-U_OFF_T_ -U_off_t -DWIN32_SKINS])
3829     VLC_ADD_LIBS([skins2],[-lgdi32 -lole32 -luuid -lmsimg32])
3830   dnl MacOS
3831   ], [test "${SYS}" = "darwin"], [
3832     VLC_ADD_CPPFLAGS([skins2],[ -DMACOSX_SKINS])
3833     VLC_ADD_LIBS([skins2],[-Wl,-framework,Carbon])
3834   dnl OS/2
3835   ], [test "${SYS}" = "os2"], [
3836     VLC_ADD_CPPFLAGS([skins2],[ -DOS2_SKINS])
3837   dnl Linux/Unix
3838   ], [
3839     PKG_CHECK_MODULES([XPM], [xpm],, [have_skins_deps="no"])
3840     PKG_CHECK_MODULES([XINERAMA], [xinerama],, [have_skins_deps="no"])
3841     PKG_CHECK_MODULES([XEXT], [xext],, [have_skins_deps="no"])
3842     VLC_ADD_CPPFLAGS([skins2],[${X_CFLAGS} ${XEXT_CFLAGS} ${XPM_CFLAGS} -DX11_SKINS])
3843     VLC_ADD_LIBS([skins2],[${X_LIBS} ${X_PRE_LIBS} ${XEXT_LIBS} ${XPM_LIBS} ${XINERAMA_LIBS} -lX11])
3844   ])
3845
3846   dnl for All OSes
3847   VLC_ADD_CXXFLAGS([skins2],[-O2 -fno-rtti])
3848
3849   dnl we need freetype
3850   AS_IF([test "${have_freetype}" != "yes"], [
3851     have_skins_deps="no"
3852   ])
3853
3854   AS_IF([test "${have_skins_deps}" = "no"], [
3855     AS_IF([test "x${enable_skins2}" = "x"], [
3856       AC_MSG_WARN([Skins2 interface disabled due to missing dependencies.])
3857     ], [
3858       AC_MSG_ERROR([Skins2 interface requires FreeType, libxpm, libxext and libxinerama])
3859     ])
3860     enable_skins2="no"
3861   ], [
3862     VLC_ADD_PLUGIN([skins2])
3863     ALIASES="${ALIASES} svlc"
3864     enable_skins2="yes"
3865   ])
3866 ])
3867 AM_CONDITIONAL(BUILD_SKINS, [test "${enable_skins2}" = "yes"])
3868
3869 AC_ARG_ENABLE(libtar,
3870   [  --enable-libtar         libtar support for skins2 (default auto)])
3871 AS_IF([test "${enable_skins2}" = "yes" && test "${enable_libtar}" != "no"], [
3872   AC_CHECK_HEADERS(libtar.h, [
3873     VLC_ADD_LIBS([skins2],[-ltar])
3874   ])
3875 ])
3876
3877 dnl
3878 dnl  MacOS X gui module
3879 dnl
3880 AC_ARG_ENABLE(macosx,
3881   [  --enable-macosx         Mac OS X gui support (default enabled on Mac OS X)])
3882 if test "x${enable_macosx}" != "xno" -a "${SYS}" = "darwin"
3883 then
3884   VLC_ADD_LIBS([macosx], [-Wl,-framework,Cocoa -Wl,-framework,Carbon -Wl,-framework,CoreServices])
3885   VLC_ADD_OBJCFLAGS([macosx], [-fobjc-exceptions] )
3886   VLC_ADD_PLUGIN([macosx])
3887
3888   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])
3889
3890   if test ! -d ${CONTRIB_DIR}/Sparkle.framework
3891   then
3892     AC_MSG_ERROR([Sparkle framework is required and was not found in ${CONTRIB_DIR}])
3893   fi
3894   VLC_ADD_LIBS([macosx], [-F${CONTRIB_DIR} -Wl,-framework,Sparkle])
3895   VLC_ADD_OBJCFLAGS([macosx], [-F${CONTRIB_DIR}])
3896
3897   if test ! -d ${CONTRIB_DIR}/BGHUDAppKit.framework
3898   then
3899     AC_MSG_ERROR([BGHUDAppKit framework is required and was not found in ${CONTRIB_DIR}])
3900   fi
3901   VLC_ADD_LIBS([macosx], [-F${CONTRIB_DIR} -Wl,-framework,BGHUDAppKit])
3902   VLC_ADD_OBJCFLAGS([macosx], [-F${CONTRIB_DIR}])
3903 fi
3904 AM_CONDITIONAL(ENABLE_MACOSX_UI, [test "$enable_macosx" != "no"])
3905
3906 dnl
3907 dnl  Minimal Mac OS X module
3908 dnl
3909 AC_ARG_ENABLE(minimal-macosx,
3910   [  --enable-minimal-macosx Minimal Mac OS X support (default disabled)])
3911 if test "${enable_minimal_macosx}" = "yes" -a "${SYS}" = "darwin"
3912 then
3913   VLC_ADD_LIBS([minimal_macosx], [-Wl,-framework,Cocoa])
3914   VLC_ADD_OBJCFLAGS([minimal_macosx], [-fobjc-exceptions] )
3915   VLC_ADD_PLUGIN([minimal_macosx])
3916 fi
3917 AM_CONDITIONAL(ENABLE_MINIMAL_MACOSX, [test "$enable_minimal_macosx" != "no"])
3918
3919 dnl
3920 dnl  MacOS X dialog provider
3921 dnl
3922 AC_ARG_ENABLE(macosx-dialog-provider,
3923   [  --enable-macosx-dialog-provider Mac OS X dialog module (default enabled on Mac OS X)])
3924 if test "x${enable_macosx_dialog_provider}" != "xno" &&
3925   (test "${SYS}" = "darwin" || test "${enable_macosx_dialog_provider}" = "yes")
3926 then
3927   VLC_ADD_LIBS([macosx_dialog_provider],[-Wl,-framework,Cocoa])
3928   VLC_ADD_PLUGIN([macosx_dialog_provider])
3929 fi
3930 AM_CONDITIONAL(ENABLE_MACOSX_DIALOG_PROVIDER, [test "$enable_macosx_dialog_provider" != "no"])
3931
3932 dnl
3933 dnl  ncurses module
3934 dnl
3935 AC_ARG_ENABLE(ncurses,
3936 [AS_HELP_STRING([--disable-ncurses],[ncurses text-based interface (default auto)])])
3937 AS_IF([test "${enable_ncurses}" != "no"] ,[
3938   PKG_CHECK_MODULES([NCURSES], [ncursesw], [
3939     VLC_ADD_PLUGIN([ncurses])
3940     VLC_ADD_CFLAGS([ncurses],[${NCURSES_CFLAGS}])
3941     VLC_ADD_LIBS([ncurses],[${NCURSES_LIBS}])
3942     ALIASES="${ALIASES} nvlc"
3943   ], [
3944     AS_IF([test -n "${enable_ncurses}"], [
3945       AC_MSG_ERROR([${NCURSES_PKG_ERRORS}.])
3946     ])
3947   ])
3948 ])
3949
3950 dnl
3951 dnl  Lirc plugin
3952 dnl
3953 AC_ARG_ENABLE(lirc,
3954   [  --enable-lirc           lirc support (default disabled)])
3955 if test "${enable_lirc}" = "yes"
3956 then
3957   AC_CHECK_HEADER(lirc/lirc_client.h, AC_CHECK_LIB(lirc_client, lirc_init, have_lirc="true", have_lirc="false"),have_lirc="false")
3958   if test "${have_lirc}" = "true"
3959   then
3960     VLC_ADD_PLUGIN([lirc])
3961     VLC_ADD_LIBS([lirc],[-llirc_client])
3962   fi
3963 fi
3964
3965 EXTEND_HELP_STRING([Visualisations and Video filter plugins:])
3966 dnl
3967 dnl  goom visualization plugin
3968 dnl
3969 PKG_ENABLE_MODULES_VLC([GOOM], [], [libgoom2], [goom visualization plugin], [auto])
3970
3971 dnl
3972 dnl libprojectM visualization plugin
3973 dnl
3974 AC_ARG_ENABLE(projectm,
3975   [  --enable-projectm       projectM visualization plugin (default enabled)])
3976 AS_IF([test "${enable_projectm}" != "no"],
3977   [
3978     PKG_CHECK_MODULES(PROJECTM, libprojectM,
3979     [
3980       VLC_ADD_PLUGIN([projectm])
3981       PKG_CHECK_EXISTS([libprojectM >= 2.0.0],
3982         [ AC_DEFINE([HAVE_PROJECTM2], 1, [Define to 1 if using libprojectM 2.x]) ],
3983         [ AC_MSG_WARN( [Using libprojectM version 1] )
3984       ])
3985     ],[
3986       AC_MSG_WARN([${PROJECTM_PKG_ERRORS}.])
3987     ])
3988   ])
3989
3990 dnl
3991 dnl Vovoid VSXu visualization plugin
3992 dnl
3993 AC_ARG_ENABLE(vsxu,
3994   [  --enable-vsxu           Vovoid VSXu visualization plugin (default auto)])
3995 AS_IF([test "${enable_vsxu}" != "no"],
3996   [
3997     PKG_CHECK_MODULES(VSXU, libvsxu,
3998     [
3999       VLC_ADD_PLUGIN([vsxu])
4000       VLC_ADD_CXXFLAGS([vsxu],[$VSXU_CFLAGS])
4001       VLC_ADD_LIBS([vsxu],[$VSXU_LIBS])
4002     ],[
4003       AC_MSG_WARN([${VSXU_PKG_ERRORS}.])
4004     ])
4005   ])
4006
4007 dnl
4008 dnl  AtmoLight (homemade Philips Ambilight clone)
4009 dnl
4010 AC_ARG_ENABLE(atmo,
4011 AS_HELP_STRING([--disable-atmo],[AtmoLight (homemade Philips Ambilight clone)
4012                 (default enabled)]),, [enable_atmo="yes"])
4013 AS_IF([test "${enable_atmo}" != no], [
4014   AS_IF([test "${SYS}" = "mingw32" -o "${SYS}" = "linux"], [
4015     AC_LANG_PUSH(C++)
4016     VLC_ADD_PLUGIN([atmo])
4017     AC_LANG_POP(C++)
4018   ])
4019 ])
4020
4021 dnl
4022 dnl  glSpectrum
4023 dnl
4024 AC_ARG_ENABLE(glspectrum,
4025   [  --enable-glspectrum    3D OpenGL spectrum visualization (default auto)])
4026 if test "${enable_glspectrum}" != "no" && test "${have_gl}" = "yes"
4027 then
4028     VLC_ADD_PLUGIN([glspectrum])
4029     VLC_ADD_LIBS([glspectrum],[$GL_LIBS])
4030 fi
4031
4032 EXTEND_HELP_STRING([Service Discovery plugins:])
4033 dnl
4034 dnl  Bonjour services discovery
4035 PKG_ENABLE_MODULES_VLC([BONJOUR], [], [avahi-client >= 0.6], [Bonjour services discovery], [auto])
4036
4037 dnl
4038 dnl  libudev services discovery
4039 PKG_ENABLE_MODULES_VLC([UDEV], [], [libudev >= 142], [Linux udev services discovery], [auto])
4040
4041 dnl
4042 dnl MTP devices services discovery
4043 PKG_ENABLE_MODULES_VLC([MTP], [mtp access_mtp], [libmtp >= 1.0.0], [MTP devices support], [auto])
4044
4045 dnl
4046 dnl UPnP Plugin (Intel SDK)
4047 dnl
4048 PKG_ENABLE_MODULES_VLC([UPNP], [upnp], [libupnp], [Intel UPNP SDK],[auto])
4049
4050 EXTEND_HELP_STRING([Misc options:])
4051
4052 dnl
4053 dnl  libxml2 module
4054 dnl
4055 PKG_ENABLE_MODULES_VLC([LIBXML2], [xml], [libxml-2.0 >= 2.5], [libxml2 support],[auto])
4056
4057
4058 dnl
4059 dnl libgcrypt
4060 dnl
4061 AC_ARG_ENABLE(libgcrypt,
4062   [  --disable-libgcrypt     gcrypt support (default enabled)])
4063 AS_IF([test "${enable_libgcrypt}" != "no"], [
4064   AC_CHECK_DECL([GCRYCTL_SET_THREAD_CBS], [
4065     libgcrypt-config --version >/dev/null || \
4066         AC_MSG_ERROR([gcrypt.h present but libgcrypt-config could not be found])
4067     AC_CHECK_LIB(gcrypt, gcry_control, [
4068       have_libgcrypt="yes"
4069       GCRYPT_CFLAGS="`libgcrypt-config --cflags`"
4070       GCRYPT_LIBS="`libgcrypt-config --libs`"
4071     ], [
4072       AC_MSG_ERROR([libgcrypt not found. Install libgcrypt or pass --disable-libgcrypt.])
4073     ], [`libgcrypt-config --libs`])
4074   ], [
4075     AC_MSG_ERROR([libgcrypt version 1.1.94 or higher not found. Install libgcrypt or pass --disable-libgcrypt.])
4076   ], [#include <gcrypt.h>]
4077   )
4078 ])
4079
4080 AC_SUBST(GCRYPT_CFLAGS)
4081 AC_SUBST(GCRYPT_LIBS)
4082 AM_CONDITIONAL([HAVE_GCRYPT], [test "${have_libgcrypt}" = "yes"])
4083
4084 dnl
4085 dnl TLS/SSL
4086 dnl
4087 AC_ARG_ENABLE(gnutls,
4088   [  --enable-gnutls         GNU TLS TLS/SSL support (default enabled)])
4089 AS_IF([test "${enable_gnutls}" != "no"], [
4090   PKG_CHECK_MODULES(GNUTLS, [gnutls >= 3.2.0], [
4091     VLC_ADD_PLUGIN([gnutls])
4092   ], [
4093     AS_IF([test -n "${enable_gnutls}"], [
4094       AC_MSG_ERROR([${GNUTLS_PKG_ERRORS}.)])
4095     ])
4096   ])
4097 ])
4098
4099
4100 dnl
4101 dnl Taglib plugin
4102 dnl
4103 AC_ARG_ENABLE(taglib,
4104   [AS_HELP_STRING([--disable-taglib],
4105     [do not use TagLib (default enabled)])])
4106 AS_IF([test "${enable_taglib}" != "no"], [
4107   PKG_CHECK_MODULES(TAGLIB, taglib >= 1.9, [
4108     VLC_ADD_PLUGIN([taglib])
4109   ], [
4110     AC_MSG_WARN([${TAGLIB_PKG_ERRORS}.])])
4111 ])
4112
4113
4114 dnl
4115 dnl update checking system
4116 dnl
4117 AC_ARG_ENABLE(update-check,
4118   [  --enable-update-check   update checking system (default disabled)])
4119 if test "${enable_update_check}" = "yes"
4120 then
4121   if test "${have_libgcrypt}" != "yes"
4122   then
4123     AC_MSG_ERROR([libgcrypt is required for update checking system])
4124   fi
4125   VLC_ADD_LIBS([libvlccore], [${GCRYPT_LIBS}])
4126   VLC_ADD_CFLAGS([libvlccore], [${GCRYPT_CFLAGS}])
4127   AC_DEFINE([UPDATE_CHECK], 1, [Define if you want to use the VLC update mechanism])
4128 fi
4129
4130 dnl
4131 dnl Growl notification plugin
4132 dnl
4133 AC_ARG_ENABLE(growl,
4134   [  --enable-growl          growl notification plugin (default disabled)],,
4135   [enable_growl=no])
4136 AS_IF([test "${enable_growl}" != "no"], [
4137     AC_CHECK_HEADERS(${CONTRIB_DIR}/Growl.framework/Versions/A/Headers/Growl.h, [
4138       VLC_ADD_PLUGIN([growl])
4139       VLC_ADD_LIBS([growl], [-F${CONTRIB_DIR} -Wl,-framework,Growl,-framework,Foundation])
4140       VLC_ADD_OBJCFLAGS([growl], [-F${CONTRIB_DIR}])
4141       VLC_ADD_OBJCFLAGS([growl], [-fobjc-exceptions] )
4142     ])
4143   ]
4144 )
4145
4146 dnl
4147 dnl Libnotify notification plugin
4148 dnl
4149 PKG_ENABLE_MODULES_VLC([NOTIFY], [], [libnotify gtk+-2.0], [libnotify notification], [auto])
4150
4151 dnl
4152 dnl  Endianness check
4153 dnl
4154 AC_C_BIGENDIAN
4155 AS_IF([test "${ac_cv_c_bigendian}" = "yes"], [
4156   DEFS_BIGENDIAN="-DWORDS_BIGENDIAN=1"
4157 ], [
4158   DEFS_BIGENDIAN=""
4159 ])
4160 AC_SUBST(DEFS_BIGENDIAN)
4161
4162 dnl
4163 dnl Where to install KDE solid .desktop
4164 dnl
4165 AC_ARG_VAR([KDE4_CONFIG], [kde4-config utility])
4166 AS_IF([test "x$KDE4_CONFIG" = "x"], [
4167   KDE4_CONFIG="kde4-config"
4168 ])
4169
4170 AC_ARG_WITH(kde-solid,
4171   AS_HELP_STRING([--with-kde-solid=PATH],
4172                  [KDE Solid actions directory (auto)]),, [
4173
4174 if test "${SYS}" != "mingw32" -a "${SYS}" != "darwin" ; then
4175   with_kde_solid="yes"
4176 fi
4177 ])
4178 soliddatadir=""
4179 AS_IF([test "${with_kde_solid}" != "no"], [
4180   AS_IF([test "${with_kde_solid}" = "yes"], [
4181     kde4datadir="`${KDE4_CONFIG} --install data`"
4182     AS_IF([test "x$kde4datadir" = "x"], [kde4datadir='${datadir}/kde4/apps'])
4183     soliddatadir="${kde4datadir}/solid/actions"
4184   ], [
4185     soliddatadir="${with_kde_solid}"
4186   ])
4187 ])
4188 AC_SUBST(soliddatadir)
4189 AM_CONDITIONAL(KDE_SOLID, [test "x${soliddatadir}" != "x"])
4190
4191 EXTEND_HELP_STRING([Components:])
4192
4193 dnl
4194 dnl  the VLC binary
4195 dnl
4196 AC_ARG_ENABLE(vlc,
4197   [  --enable-vlc            build the VLC media player (default enabled)])
4198 AM_CONDITIONAL(BUILD_VLC, [test "${enable_vlc}" != "no"])
4199
4200 AC_ARG_ENABLE(macosx-vlc-app,
4201   [  --enable-macosx-vlc-app build the VLC media player (default enabled on Mac OS X)])
4202 AM_CONDITIONAL(BUILD_MACOSX_VLC_APP, [test "${enable_macosx_vlc_app}" != "no" &&
4203     (test "${SYS}" = "darwin" || test "${enable_macosx_vlc_app}" = "yes") ])
4204
4205 dnl
4206 dnl  Stuff used by the program
4207 dnl
4208 VERSION_MESSAGE="${VERSION} ${CODENAME}"
4209 COPYRIGHT_MESSAGE="Copyright © ${COPYRIGHT_YEARS} the VideoLAN team"
4210 AC_DEFINE_UNQUOTED(VERSION_MESSAGE, "${VERSION_MESSAGE}", [Simple version string])
4211 AC_DEFINE_UNQUOTED(COPYRIGHT_MESSAGE, "${COPYRIGHT_MESSAGE}", [Copyright string])
4212 AC_DEFINE_UNQUOTED(COPYRIGHT_YEARS, "${COPYRIGHT_YEARS}", [The copyright years])
4213 AC_DEFINE_UNQUOTED(CONFIGURE_LINE, "${CONFIGURE_LINE}", [The ./configure command line])
4214 AC_DEFINE_UNQUOTED(PACKAGE_VERSION_MAJOR,${VERSION_MAJOR}, [version major number])
4215 AC_DEFINE_UNQUOTED(PACKAGE_VERSION_MINOR,${VERSION_MINOR}, [version minor number])
4216 AC_DEFINE_UNQUOTED(PACKAGE_VERSION_REVISION,${VERSION_REVISION}, [version revision number])
4217 AC_DEFINE_UNQUOTED(PACKAGE_VERSION_EXTRA,${VERSION_EXTRA}, [version extra number])
4218 AC_DEFINE_UNQUOTED(PACKAGE_VERSION_DEV,"${VERSION_DEV}", [version development string])
4219 AC_SUBST(COPYRIGHT_MESSAGE)
4220 AC_SUBST(VERSION_MESSAGE)
4221 AC_SUBST(VERSION_MAJOR)
4222 AC_SUBST(VERSION_MINOR)
4223 AC_SUBST(VERSION_REVISION)
4224 AC_SUBST(VERSION_EXTRA)
4225 AC_SUBST(COPYRIGHT_YEARS)
4226 AC_DEFINE_UNQUOTED(VLC_COMPILE_BY, "`whoami|sed -e 's/\\\/\\\\\\\/g'`", [user who ran configure])
4227 AC_DEFINE_UNQUOTED(VLC_COMPILE_HOST, "`hostname -f 2>/dev/null || hostname`", [host which ran configure])
4228 AC_DEFINE_UNQUOTED(VLC_COMPILER, "`$CC -v 2>&1 | tail -n 1 | sed -e 's/ *$//'`", [compiler])
4229 dnl
4230 dnl  Handle substvars that use $(top_srcdir)
4231 dnl
4232 CPPFLAGS="-I\$(top_srcdir)/include -I\$(top_builddir)/include ${CPPFLAGS}"
4233
4234 dnl
4235 dnl  Configuration is finished
4236 dnl
4237 AC_SUBST(SYS)
4238 AC_SUBST(ARCH)
4239 AC_SUBST(ALIASES)
4240 AC_SUBST(ASM)
4241 AC_SUBST(MOC)
4242 AC_SUBST(RCC)
4243 AC_SUBST(UIC)
4244 AC_SUBST(WINDRES)
4245 AC_SUBST(WINE_SDK_PATH)
4246 AC_SUBST(LIBEXT)
4247 AC_SUBST(AM_CPPFLAGS)
4248 AC_SUBST(MACOSX_DEPLOYMENT_TARGET)
4249 AC_SUBST(FILE_LIBVLCCORE_DLL)
4250 AC_SUBST(FILE_LIBVLC_DLL)
4251
4252 AC_CONFIG_FILES([
4253   Makefile
4254   doc/Makefile
4255   modules/Makefile
4256   m4/Makefile
4257   po/Makefile.in
4258   share/Makefile
4259   compat/Makefile
4260   src/Makefile
4261   lib/Makefile
4262   bin/Makefile
4263   test/Makefile
4264   modules/access_output/Makefile
4265   modules/audio_filter/Makefile
4266   modules/control/Makefile
4267   modules/gui/Makefile
4268   modules/gui/ios_dialog_provider/Makefile
4269   modules/gui/macosx/Makefile
4270   modules/gui/minimal_macosx/Makefile
4271   modules/gui/macosx_dialog_provider/Makefile
4272   modules/gui/qt4/Makefile
4273   modules/gui/skins2/Makefile
4274   modules/mux/Makefile
4275   modules/packetizer/Makefile
4276   modules/stream_out/Makefile
4277   modules/text_renderer/Makefile
4278   modules/video_filter/Makefile
4279   modules/visualization/Makefile
4280   modules/hw/mmal/Makefile
4281 ])
4282
4283 AM_COND_IF([HAVE_WIN32], [
4284   AC_CONFIG_FILES([
4285     extras/package/win32/NSIS/spad.nsi
4286     extras/package/win32/NSIS/vlc.win32.nsi
4287     extras/package/win32/msi/config.wxi
4288   ])
4289 ])
4290
4291 AM_COND_IF([HAVE_DARWIN], [
4292   AC_CONFIG_FILES([
4293     extras/package/macosx/Info.plist
4294     extras/package/macosx/Resources/English.lproj/InfoPlist.strings
4295   ])
4296 ])
4297
4298 dnl Generate makefiles
4299 AC_OUTPUT
4300
4301 dnl Do we have to use make or gmake ?
4302 if make --version 2>&1|grep -q GNU
4303 then
4304     # GNU make, all seems good
4305     MAKE=make
4306 else
4307     # Known GNU make alias (on BSD)
4308     MAKE=gmake
4309 fi
4310 dnl Shortcut to nice compile message
4311 if test -n $SHELL; then
4312   SHELL=${CONFIG_SHELL-/bin/sh}
4313 fi
4314 rm -f compile
4315 compile_top_srcdir=`sed -ne "s/^top_srcdir *= *//p" < Makefile`
4316 echo "#! $SHELL
4317 rm -f .error\$\$
4318 ERROR=0
4319 export PATH=\"$PATH\" LANG=C
4320 ($MAKE V=1 \$@ 2>&1 || touch .error\$\$)| $compile_top_srcdir/extras/buildsystem/make.pl
4321 test -f .error\$\$ && ERROR=1
4322 rm -f .error\$\$
4323 exit \$ERROR" >compile
4324 chmod a+x compile
4325
4326 echo "
4327 libvlc configuration
4328 --------------------
4329 version               : ${VERSION}
4330 system                : ${SYS}
4331 architecture          : ${ARCH}
4332 optimizations         : ${enable_optimizations}"
4333 if test "${enable_vlc}" != "no"; then
4334 echo "vlc aliases           :${ALIASES}"
4335 else
4336 echo "build vlc executable  : no"
4337 fi
4338 echo "
4339 To build vlc and its plugins, type \`$MAKE', or \`./compile' if you like nice colors."