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