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