]> git.sesse.net Git - vlc/blob - configure.ac
Qt: kill a warning
[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" ],[
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"], [
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}" != "mingw32" -a "${SYS}" != "mingwce"; then
1168     VLC_ADD_PLUGIN([dynamicoverlay access_shm])
1169 elif test "${SYS}" != "mingwce"; then
1170     VLC_ADD_PLUGIN([access_smb dmo globalhotkeys])
1171     VLC_ADD_LIBS([dmo],[-lole32 -luuid])
1172 fi
1173 if test "${SYS}" = "darwin"; then
1174     VLC_ADD_LIBS([quartztext],[-Wl,-framework,ApplicationServices])
1175 fi
1176
1177 dnl
1178 dnl  Accelerated modules
1179 dnl
1180
1181 dnl  Check for fully working MMX intrinsics
1182 dnl  We need support for -mmmx, we need <mmintrin.h>, and we also need a
1183 dnl  working compiler (http://gcc.gnu.org/bugzilla/show_bug.cgi?id=23963)
1184 AC_ARG_ENABLE(mmx,
1185   [AS_HELP_STRING([--disable-mmx],
1186     [disable MMX optimizations (default auto)])],,[
1187   case "${host_cpu}" in
1188     i?86|x86_64)
1189       enable_mmx="yes"
1190       ;;
1191     *)
1192       enable_mmx="no"
1193       ;;
1194   esac
1195 ])
1196 have_mmx="no"
1197 have_mmxext="no"
1198 AS_IF([test "${enable_mmx}" != "no"], [
1199   ARCH="${ARCH} mmx"
1200
1201   AC_CACHE_CHECK([if $CC groks MMX intrinsics],
1202     [ac_cv_c_mmx_intrinsics],
1203     [CFLAGS="${CFLAGS_save} -O -mmmx"
1204      AC_TRY_COMPILE([#include <mmintrin.h>
1205                      #include <stdint.h>
1206                      uint64_t frobzor;],
1207                     [__m64 a, b, c;
1208                      a = b = c = (__m64)frobzor;
1209                      a = _mm_slli_pi16(a, 3);
1210                      a = _mm_adds_pi16(a, b);
1211                      c = _mm_srli_pi16(c, 8);
1212                      c = _mm_slli_pi16(c, 3);
1213                      b = _mm_adds_pi16(b, c);
1214                      a = _mm_unpacklo_pi8(a, b);
1215                      frobzor = (uint64_t)a;],
1216                     [ac_cv_c_mmx_intrinsics=yes],
1217                     [ac_cv_c_mmx_intrinsics=no])])
1218   AS_IF([test "${ac_cv_c_mmx_intrinsics}" != "no"], [
1219     AC_DEFINE(HAVE_MMX_INTRINSICS, 1,
1220               [Define to 1 if MMX intrinsics are available.])
1221   ])
1222
1223   AC_CACHE_CHECK([if $CC groks MMX inline assembly],
1224     [ac_cv_mmx_inline],
1225     [CFLAGS="${CFLAGS_save}"
1226      AC_TRY_COMPILE(,[void *p;asm volatile("packuswb %%mm1,%%mm2"::"r"(p));],
1227                     ac_cv_mmx_inline=yes, ac_cv_mmx_inline=no)])
1228   AS_IF([test "${ac_cv_mmx_inline}" != "no"], [
1229     AC_DEFINE(CAN_COMPILE_MMX, 1,
1230               [Define to 1 inline MMX assembly is available.])
1231     have_mmx="yes"
1232   ])
1233
1234   AC_CACHE_CHECK([if $CC groks MMX EXT inline assembly],
1235     [ac_cv_mmxext_inline],
1236     [CFLAGS="${CFLAGS_save}"
1237      AC_TRY_COMPILE(,[void *p;asm volatile("maskmovq %%mm1,%%mm2"::"r"(p));],
1238                     ac_cv_mmxext_inline=yes, ac_cv_mmxext_inline=no)])
1239   AS_IF([test "${ac_cv_mmxext_inline}" != "no"], [
1240     AC_DEFINE(CAN_COMPILE_MMXEXT, 1,
1241               [Define to 1 if MMX EXT inline assembly is available.])
1242     have_mmxext="yes"
1243   ])
1244 ])
1245 AM_CONDITIONAL([HAVE_MMX], [test "${have_mmx}" = "yes"])
1246 AM_CONDITIONAL([HAVE_MMXEXT], [test "${have_mmxext}" = "yes"])
1247
1248 dnl  Check for fully workin SSE2 intrinsics
1249 dnl  We need support for -mmmx, we need <emmintrin.h>, and we also need a
1250 dnl  working compiler (http://gcc.gnu.org/bugzilla/show_bug.cgi?id=23963)
1251 AC_ARG_ENABLE(sse,
1252   [AS_HELP_STRING([--disable-sse],
1253     [disable SSE (1-4) optimizations (default auto)])],, [
1254   case "${host_cpu}" in
1255     i?86|x86_64)
1256       enable_sse=yes
1257       ;;
1258     *)
1259       enable_sse=no
1260       ;;
1261   esac
1262 ])
1263 have_sse2="no"
1264 AS_IF([test "${enable_sse}" != "no"], [
1265   ARCH="${ARCH} sse sse2"
1266
1267   AC_CACHE_CHECK([if $CC groks SSE2 intrinsics],
1268     [ac_cv_c_sse2_intrinsics],
1269     [CFLAGS="${CFLAGS_save} -O -msse2"
1270      AC_TRY_COMPILE([#include <emmintrin.h>
1271                      #include <stdint.h>
1272                      uint64_t frobzor;],
1273                     [__m128i a, b, c;
1274                      a = b = c = _mm_set1_epi64((__m64)frobzor);
1275                      a = _mm_slli_epi16(a, 3);
1276                      a = _mm_adds_epi16(a, b);
1277                      c = _mm_srli_epi16(c, 8);
1278                      c = _mm_slli_epi16(c, 3);
1279                      b = _mm_adds_epi16(b, c);
1280                      a = _mm_unpacklo_epi8(a, b);
1281                      frobzor = (uint64_t)_mm_movepi64_pi64(a);],
1282                     [ac_cv_c_sse2_intrinsics=yes],
1283                     [ac_cv_c_sse2_intrinsics=no])])
1284   AS_IF([test "${ac_cv_c_sse2_intrinsics}" != "no"], [
1285     AC_DEFINE(HAVE_SSE2_INTRINSICS, 1,
1286               [Define to 1 if SSE2 intrinsics are available.])
1287   ])
1288
1289   AC_CACHE_CHECK([if $CC groks SSE inline assembly],
1290     [ac_cv_sse_inline],
1291     [CFLAGS="${CFLAGS_save}"
1292      AC_TRY_COMPILE(,[void *p;asm volatile("xorps %%xmm1,%%xmm2"::"r"(p));],
1293                     ac_cv_sse_inline=yes, ac_cv_sse_inline=no)])
1294   AS_IF([test "${ac_cv_sse_inline}" != "no" -a "${SYS}" != "solaris"], [
1295     AC_DEFINE(CAN_COMPILE_SSE, 1,
1296               [Define to 1 if SSE inline assembly is available.])
1297   ])
1298
1299   AC_CACHE_CHECK([if $CC groks SSE2 inline assembly],
1300     [ac_cv_sse2_inline],
1301     [CFLAGS="${CFLAGS_save}"
1302      AC_TRY_COMPILE(,[void *p;asm volatile("punpckhqdq %%xmm1,%%xmm2"::"r"(p));],
1303                     ac_cv_sse2_inline=yes, ac_cv_sse2_inline=no)])
1304   AS_IF([test "${ac_cv_sse2_inline}" != "no" -a "${SYS}" != "solaris"], [
1305     AC_DEFINE(CAN_COMPILE_SSE2, 1,
1306               [Define to 1 if SSE2 inline assembly is available.])
1307     have_sse2="yes"
1308   ])
1309
1310   # SSE3
1311   AC_CACHE_CHECK([if $CC groks SSE3 inline assembly],
1312     [ac_cv_sse3_inline],
1313     [CFLAGS="${CFLAGS_save}"
1314      AC_TRY_COMPILE(,[void *p;asm volatile("movsldup %%xmm1,%%xmm0"::"r"(p));],
1315                     ac_cv_sse3_inline=yes, ac_cv_sse3_inline=no)])
1316   AS_IF([test "${ac_cv_sse3_inline}" != "no"], [
1317     AC_DEFINE(CAN_COMPILE_SSE3, 1,
1318               [Define to 1 if SSE3 inline assembly is available.]) ])
1319   # SSSE3
1320   AC_CACHE_CHECK([if $CC groks SSSE3 inline assembly],
1321     [ac_cv_ssse3_inline],
1322     [CFLAGS="${CFLAGS_save}"
1323      AC_TRY_COMPILE(,[void *p;asm volatile("pabsw %%xmm0,%%xmm0"::"r"(p));],
1324                     ac_cv_ssse3_inline=yes, ac_cv_ssse3_inline=no)])
1325   AS_IF([test "${ac_cv_ssse3_inline}" != "no"], [
1326     AC_DEFINE(CAN_COMPILE_SSSE3, 1,
1327               [Define to 1 if SSSE3 inline assembly is available.]) ])
1328
1329   # SSE4.1
1330   AC_CACHE_CHECK([if $CC groks SSE4.1 inline assembly],
1331     [ac_cv_sse4_1_inline],
1332     [CFLAGS="${CFLAGS_save}"
1333      AC_TRY_COMPILE(,[void *p;asm volatile("pmaxsb %%xmm1,%%xmm0"::"r"(p));],
1334                     ac_cv_sse4_1_inline=yes, ac_cv_sse4_1_inline=no)])
1335   AS_IF([test "${ac_cv_sse4_1_inline}" != "no"], [
1336     AC_DEFINE(CAN_COMPILE_SSE4_1, 1,
1337               [Define to 1 if SSE4_1 inline assembly is available.]) ])
1338
1339   # SSE4.2
1340   AC_CACHE_CHECK([if $CC groks SSE4.2 inline assembly],
1341     [ac_cv_sse4_2_inline],
1342     [CFLAGS="${CFLAGS_save}"
1343      AC_TRY_COMPILE(,[void *p;asm volatile("pcmpgtq %%xmm1,%%xmm0"::"r"(p));],
1344                     ac_cv_sse4_2_inline=yes, ac_cv_sse4_2_inline=no)])
1345   AS_IF([test "${ac_cv_sse4_2_inline}" != "no"], [
1346     AC_DEFINE(CAN_COMPILE_SSE4_2, 1,
1347               [Define to 1 if SSE4_2 inline assembly is available.]) ])
1348
1349   # SSE4A
1350   AC_CACHE_CHECK([if $CC groks SSE4A inline assembly],
1351     [ac_cv_sse4a_inline],
1352     [CFLAGS="${CFLAGS_save}"
1353      AC_TRY_COMPILE(,[void *p;asm volatile("insertq %%xmm1,%%xmm0"::"r"(p));],
1354                     ac_cv_sse4a_inline=yes, ac_cv_sse4a_inline=no)])
1355   AS_IF([test "${ac_cv_sse4a_inline}" != "no"], [
1356     AC_DEFINE(CAN_COMPILE_SSE4A, 1,
1357               [Define to 1 if SSE4A inline assembly is available.]) ])
1358 ])
1359 AM_CONDITIONAL([HAVE_SSE2], [test "$have_sse2" = "yes"])
1360
1361 have_3dnow="no"
1362 AC_CACHE_CHECK([if $CC groks 3D Now! inline assembly],
1363     [ac_cv_3dnow_inline],
1364     [CFLAGS="${CFLAGS_save}"
1365      AC_TRY_COMPILE(,[void *p;asm volatile("pfadd %%mm1,%%mm2"::"r"(p));],
1366                     ac_cv_3dnow_inline=yes, ac_cv_3dnow_inline=no)])
1367 AS_IF([test "${ac_cv_3dnow_inline}" != "no"], [
1368   AC_DEFINE(CAN_COMPILE_3DNOW, 1,
1369             [Define to 1 if 3D Now! inline assembly is available.])
1370   have_3dnow="yes"
1371 ])
1372 AM_CONDITIONAL([HAVE_3DNOW], [test "$have_3dnow" = "yes"])
1373
1374
1375 AC_ARG_ENABLE(neon,
1376   [AS_HELP_STRING([--disable-neon],
1377     [disable NEON optimizations (default auto)])],, [
1378   AS_IF([test "${host_cpu}" = "arm"], [enable_neon="yes"] ,[enable_neon="no"])
1379 ])
1380 AS_IF([test "${enable_neon}" != "no"], [
1381   AC_CACHE_CHECK([if $CC groks NEON inline assembly], [ac_cv_neon_inline], [
1382     CFLAGS="${CFLAGS_save} -mfpu=neon"
1383     AC_COMPILE_IFELSE([
1384       AC_LANG_PROGRAM(,[[
1385 asm volatile("vqmovun.s64 d0, q1":::"d0");
1386 asm volatile("ssat r0, #1, r0":::"r0"); /* assume ARMv6 */
1387 ]])
1388     ], [
1389       ac_cv_neon_inline="-mfpu=neon"
1390     ], [
1391       ac_cv_neon_inline="no"
1392     ])
1393     CFLAGS="${CFLAGS_save}"
1394   ])
1395   AS_IF([test "$ac_cv_neon_inline" != "no"], [
1396     NEON_CFLAGS="$ac_cv_neon_inline"
1397     AC_DEFINE([CAN_COMPILE_NEON], 1,
1398       [Define to 1 if NEON (and ARMv6) assembly is available with NEON_CFLAGS.])
1399   ])
1400 ], [
1401   ac_cv_neon_inline="no"
1402 ])
1403 AC_SUBST(NEON_CFLAGS)
1404 AM_CONDITIONAL(HAVE_NEON, [test "${ac_cv_neon_inline}" != "no"])
1405
1406
1407 AC_ARG_ENABLE(altivec,
1408   [AS_HELP_STRING([--disable-altivec],
1409     [disable AltiVec optimizations (default auto)])],, [
1410   AS_IF([test "${host_cpu}" = "powerpc"],
1411         [enable_altivec=yes], [enable_altivec=no])
1412 ])
1413 have_altivec="no"
1414 AS_IF([test "${enable_altivec}" = "yes"], [
1415   ARCH="${ARCH} altivec";
1416   AC_CACHE_CHECK([if $CC groks AltiVec inline assembly],
1417     [ac_cv_altivec_inline],
1418     [CFLAGS="${CFLAGS_save}"
1419      AC_TRY_COMPILE(,[asm volatile("vperm 0,1,2,3");],
1420          ac_cv_altivec_inline="yes",
1421          [CFLAGS="${CFLAGS_save} -Wa,-m7400"
1422           AC_TRY_COMPILE(,[asm volatile("vperm 0,1,2,3");],
1423             [ac_cv_altivec_inline="-Wa,-m7400"],
1424             ac_cv_altivec_inline=no)
1425          ])])
1426   AS_IF([test "${ac_cv_altivec_inline}" != "no"], [
1427     AC_DEFINE(CAN_COMPILE_ALTIVEC, 1,
1428               [Define to 1 if AltiVec inline assembly is available.])
1429     AS_IF([test "${ac_cv_altivec_inline}" != "yes"], [
1430       VLC_ADD_CFLAGS([memcpyaltivec],[${ac_cv_altivec_inline}])
1431       VLC_ADD_CFLAGS([i420_yuy2_altivec],[${ac_cv_altivec_inline}])
1432       VLC_ADD_CFLAGS([libvlccore],[${ac_cv_altivec_inline}])
1433     ])
1434     have_altivec="yes"
1435   ])
1436
1437 dnl The AltiVec C extensions
1438 dnl
1439 dnl There are several possible cases:
1440 dnl - OS X PPC, gcc 4.x: use -mpim-altivec -force_cpusubtype_ALL, don't
1441 dnl                      need <altivec.h>
1442 dnl - OS X PPC, gcc 3.x: need -faltivec, don't need <altivec.h>
1443 dnl - Linux PPC, gcc 3.4, 4.x: need <altivec.h> which requires -maltivec
1444 dnl - Linux PPC, gcc 3.3: need <altivec.h> and -maltivec -mabi=altivec
1445 dnl - Linux PPC, gcc 3.x: need <altivec.h> and -fvec
1446 dnl - Others: test should fail
1447   AC_CACHE_CHECK([if \$CC groks AltiVec C extensions],
1448   [ac_cv_c_altivec],
1449   [# OS X/PPC test (gcc 4.x)
1450    CFLAGS="${CFLAGS_save} -mpim-altivec -force_cpusubtype_ALL"
1451    AC_TRY_COMPILE([vector unsigned char foo;],
1452      [vec_ld(0, (unsigned char *)0);],
1453      [ac_cv_c_altivec="-mpim-altivec -force_cpusubtype_ALL"],
1454      [# OS X/PPC test (gcc 3.x)
1455       CFLAGS="${CFLAGS_save} -faltivec"
1456       AC_TRY_COMPILE([vector unsigned char foo;],
1457         [vec_ld(1 * sizeof(vector float), (unsigned char *)0);],
1458         [ac_cv_c_altivec="-faltivec"],
1459         dnl Below this are the Linux tests
1460         [# Linux/PPC test (gcc 4.x)
1461          CFLAGS="${CFLAGS_save} -maltivec"
1462          AC_TRY_COMPILE([#include <altivec.h>],
1463            [vec_ld(0, (unsigned char *)0);],
1464            [ac_cv_c_altivec="-maltivec"],
1465            [# Linux/PPC test (gcc 3.3)
1466             CFLAGS="${CFLAGS_save} -maltivec -mabi=altivec"
1467             AC_TRY_COMPILE([#include <altivec.h>],
1468               [vec_ld(0, (unsigned char *)0);],
1469               [ac_cv_c_altivec=""
1470                ac_cv_c_altivec_abi="-maltivec -mabi=altivec"],
1471               [# Linux/PPC test (gcc 3.3)
1472                CFLAGS="${CFLAGS_save} -fvec"
1473                AC_TRY_COMPILE([#include <altivec.h>],
1474                  [vec_ld(0, (unsigned char *)0);],
1475                  [ac_cv_c_altivec="-fvec"],
1476                  [ac_cv_c_altivec=no])
1477               ])
1478            ])
1479         ])
1480      ])
1481    CFLAGS="${CFLAGS_save}"
1482   ])
1483   AS_IF([test "${ac_cv_c_altivec}" != "no"], [
1484     CPPFLAGS="${CPPFLAGS_save} ${ac_cv_c_altivec}"
1485   ])
1486
1487   AC_CHECK_HEADERS(altivec.h)
1488   CPPFLAGS="${CPPFLAGS_save}"
1489
1490   AS_IF([test "${ac_cv_c_altivec}" != "no"], [
1491     AC_DEFINE(CAN_COMPILE_C_ALTIVEC, 1,
1492               [Define to 1 if C AltiVec extensions are available.])
1493     VLC_ADD_CFLAGS([libvlccore],[${ac_cv_c_altivec}])
1494     VLC_ADD_CFLAGS([i420_yuy2_altivec memcpyaltivec deinterlace],[${ac_cv_c_altivec} ${ac_cv_c_altivec_abi}])
1495     have_altivec="yes"
1496   ])
1497
1498   AC_CACHE_CHECK([if linker needs -framework vecLib],
1499     [ac_cv_ld_altivec],
1500     [LDFLAGS="${LDFLAGS_vlc} -Wl,-framework,vecLib"
1501      AC_TRY_LINK([],,ac_cv_ld_altivec=yes,ac_cv_ld_altivec=no)
1502      LDFLAGS="${LDFLAGS_save}"
1503     ])
1504   AS_IF([test "${ac_cv_ld_altivec}" != "no"], [
1505     VLC_ADD_LIBS([libvlccore memcpyaltivec],[-Wl,-framework,vecLib])
1506   ])
1507 ])
1508 AM_CONDITIONAL([HAVE_ALTIVEC], [test "$have_altivec" = "yes"])
1509
1510 dnl
1511 dnl  Special arch tuning
1512 dnl
1513 AC_ARG_WITH(tuning,
1514   [AS_HELP_STRING([--with-tuning=ARCH],
1515     [tune compilation for an architecture (default varies)])])
1516 if test -n "${with_tuning}"; then
1517     if test "${with_tuning}" != "no"; then
1518         CFLAGS_TUNING="-mtune=${with_tuning}"
1519     fi
1520 else
1521     if test "${SYS}" = "darwin" -a "${host_cpu}" = "i686"; then
1522         CFLAGS_TUNING="-march=prescott -mtune=generic"
1523     elif test "${SYS}" = "darwin" -a "${host_cpu}" = "x86_64"; then
1524         CFLAGS_TUNING="-march=core2 -mtune=core2"
1525     elif test "${host_cpu}" = "i686" -o "${host_cpu}" = "i586" -o "${host_cpu}" = "i486" -o "${host_cpu}" = "i386"; then
1526         CFLAGS_TUNING="-mtune=pentium2"
1527     elif test "${host_cpu}" = "x86_64"; then
1528         CFLAGS_TUNING="-mtune=athlon64"
1529     elif test "${host_cpu}" = "powerpc"; then
1530         CFLAGS_TUNING="-mtune=G4";
1531     fi
1532 fi
1533
1534 dnl NOTE: this can't be cached cleanly
1535 AS_IF([test "${CFLAGS_TUNING}"],
1536    [CFLAGS_save="${CFLAGS}"
1537     CFLAGS="${CFLAGS} ${CFLAGS_TUNING}"
1538
1539     AC_MSG_CHECKING([whether $CC accepts ${CFLAGS_TUNING}])
1540     AC_COMPILE_IFELSE([AC_LANG_SOURCE([])],
1541                       [tuning="yes"],
1542                       [CFLAGS_TUNING=""; tuning="no"
1543                        AS_IF([test "${with_tuning}"],
1544                              [AC_MSG_ERROR([requested tuning not supported])])])
1545
1546     AC_MSG_RESULT([$tuning])
1547     CFLAGS="${CFLAGS_save}"
1548 ])
1549
1550 dnl
1551 dnl  Memory usage
1552 dnl
1553 AC_ARG_ENABLE(optimize-memory,
1554   [AS_HELP_STRING([--enable-optimize-memory],
1555     [optimize memory usage over performance])])
1556 if test "${enable_optimize_memory}" = "yes"; then
1557   AC_DEFINE(OPTIMIZE_MEMORY, 1, Define if you want to optimize memory usage over performance)
1558 fi
1559
1560 dnl
1561 dnl Allow running as root (useful for people running on embedded platforms)
1562 dnl
1563 AC_ARG_ENABLE(run-as-root,
1564   [AS_HELP_STRING([--enable-run-as-root],
1565     [allow running VLC as root (default disabled)])])
1566 AS_IF([test "${enable_run_as_root}" = "yes"],[
1567     AC_DEFINE(ALLOW_RUN_AS_ROOT, 1,
1568               [Define to 1 to allow running VLC as root (uid 0).])
1569 ])
1570
1571 dnl
1572 dnl Stream output
1573 dnl
1574 AC_ARG_ENABLE(sout,
1575   [AS_HELP_STRING([--disable-sout],
1576     [disable streaming output (default enabled)])])
1577 AS_IF([test "${enable_sout}" != "no"], [
1578   AC_DEFINE(ENABLE_SOUT, 1, [Define to 1 for stream output support.])
1579 ])
1580 AM_CONDITIONAL(ENABLE_SOUT, [test "${enable_sout}" != "no"])
1581
1582 dnl Lua modules
1583 AC_ARG_ENABLE(lua,
1584   [AS_HELP_STRING([--disable-lua],
1585     [disable LUA scripting support (default enabled)])])
1586 if test "${enable_lua}" != "no"
1587 then
1588   PKG_CHECK_MODULES(LUA, lua5.1,
1589     [ have_lua=yes ],
1590     [
1591     AC_MSG_WARN([lua5.1 not found, trying lua >= 5.1 instead])
1592     PKG_CHECK_MODULES(LUA, lua >= 5.1,
1593       [ have_lua=yes ],
1594       [
1595         have_lua=yes
1596         AC_CHECK_HEADERS([lua.h lauxlib.h lualib.h],
1597           [],
1598           [ have_lua=no ] )
1599         AC_CHECK_LIB(  lua5.1 , luaL_newstate,
1600           [LUA_LIBS="-llua5.1"],
1601           AC_CHECK_LIB( lua51 , luaL_newstate,
1602             [LUA_LIBS="-llua51"],
1603             AC_CHECK_LIB( lua , luaL_newstate,
1604               [LUA_LIBS="-llua"],
1605               [ have_lua=no
1606               ], [-lm])
1607           )
1608         )
1609       ])
1610     ])
1611   if test "x${have_lua}" = "xyes" ;  then
1612      VLC_ADD_LIBS([lua],[$LUA_LIBS])
1613      VLC_ADD_CFLAGS([lua],[$LUA_CFLAGS])
1614   else
1615       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.])
1616   fi
1617   AC_ARG_VAR([LUAC], [LUA byte compiler])
1618   AC_PATH_PROGS(LUAC,[${LUAC} luac], [false])
1619   AS_IF([test "${LUAC}" = "false"], [
1620     AC_MSG_ERROR([Could not find the LUA byte compiler.])
1621   ])
1622 fi
1623 AM_CONDITIONAL(BUILD_LUA, [test "${have_lua}" = "yes"])
1624
1625
1626 dnl
1627 dnl HTTP daemon
1628 dnl
1629 AC_ARG_ENABLE(httpd,
1630   [AS_HELP_STRING([--disable-httpd],
1631     [disable the built-in HTTP server (default enabled)])])
1632 if test "${enable_httpd}" != "no"
1633 then
1634   AC_DEFINE(ENABLE_HTTPD, 1, Define if you want the HTTP dameon support)
1635 fi
1636 AM_CONDITIONAL(BUILD_HTTPD, [test "${enable_httpd}" != "no"])
1637
1638
1639 dnl
1640 dnl VideoLAN manager
1641 dnl
1642 AC_ARG_ENABLE(vlm,
1643   [AS_HELP_STRING([--disable-vlm],
1644     [disable the stream manager (default enabled)])],,
1645   [enable_vlm="${enable_sout}"])
1646 AS_IF([test "${enable_vlm}" != "no"], [
1647   AS_IF([test "${enable_sout}" = "no"], [
1648     AC_MSG_ERROR([VLM requires the stream output. Do not use --disable-sout.])
1649   ])
1650   AC_DEFINE(ENABLE_VLM, 1, [Define if you want the VideoLAN manager support])
1651 ])
1652 AM_CONDITIONAL([ENABLE_VLM], [test "${enable_vlm}" != "no"])
1653
1654
1655 dnl
1656 dnl  ipv6 support
1657 dnl
1658 have_ipv6=no
1659 AC_CHECK_FUNCS(inet_pton,[have_ipv6=yes],[
1660   AC_CHECK_LIB(nsl,inet_pton, [have_ipv6=yes])
1661 ])
1662
1663 AS_IF([test "${have_ipv6}" = "yes"], [
1664   AC_DEFINE(HAVE_INET_PTON, 1, [Define to 1 if you have inet_pton().])])
1665
1666
1667 AC_CHECK_FUNCS(inet_ntop,[
1668   AC_DEFINE(HAVE_INET_NTOP, 1, [Define to 1 if you have inet_ntop().])])
1669
1670
1671 dnl
1672 dnl  Input plugins
1673 dnl
1674
1675 EXTEND_HELP_STRING([Input plugins:])
1676
1677 dnl
1678 dnl libproxy support
1679 dnl
1680 AC_ARG_ENABLE(libproxy,
1681   [AS_HELP_STRING([--enable-libproxy],[support libproxy (default auto)])])
1682 AS_IF([test "${enable_libproxy}" != "no"], [
1683   PKG_CHECK_MODULES(LIBPROXY, libproxy-1.0, [
1684     AC_DEFINE(HAVE_LIBPROXY, 1, [Define if libproxy is available])
1685     VLC_ADD_CFLAGS([access_http],[$LIBPROXY_CFLAGS])
1686     VLC_ADD_LIBS([access_http],[$LIBPROXY_LIBS])
1687   ], [
1688     AS_IF([test "x${enable_libproxy}" != "x"], [
1689       AC_MSG_ERROR([libproxy could not be found on your system])
1690     ])
1691   ])
1692 ])
1693
1694 dnl
1695 dnl  live555 input
1696 dnl
1697 AC_ARG_ENABLE(live555,
1698   [AS_HELP_STRING([--enable-live555],
1699     [enable RTSP input through live555 (default enabled)])])
1700 AC_ARG_WITH(live555-tree,
1701   [AS_HELP_STRING([--with-live555-tree=PATH],
1702     [live555 tree for static linking])])
1703 if test "${enable_live555}" != "no"; then
1704
1705   dnl
1706   dnl test for --with-live555-tree
1707   dnl
1708   if test -z "${with_live555_tree}" -a "${CXX}" != ""; then
1709     AC_LANG_PUSH(C++)
1710     CPPFLAGS_save="${CPPFLAGS}"
1711     if test -z "${CONTRIB_DIR}"; then
1712         CPPFLAGS_live555="-I/usr/include/liveMedia -I/usr/include/groupsock -I/usr/include/BasicUsageEnvironment -I/usr/include/UsageEnvironment"
1713     else
1714         CPPFLAGS_live555="-I${CONTRIB_DIR}/include/liveMedia -I${CONTRIB_DIR}/include/groupsock -I${CONTRIB_DIR}/include/BasicUsageEnvironment -I${CONTRIB_DIR}/include/UsageEnvironment"
1715     fi
1716     if test "${SYS}" = "solaris"; then
1717       CPPFLAGS_live555="${CPPFLAGS_live555} -DSOLARIS"
1718     fi
1719     CPPFLAGS="${CPPFLAGS} ${CPPFLAGS_live555}"
1720
1721     AC_CHECK_HEADERS(liveMedia_version.hh, [
1722       AC_MSG_CHECKING(for liveMedia version >= 1275091200 )
1723       AC_EGREP_CPP(yes,
1724         [#include <liveMedia_version.hh>
1725          #ifdef LIVEMEDIA_LIBRARY_VERSION_INT
1726          #if LIVEMEDIA_LIBRARY_VERSION_INT < 1275091200
1727          yes
1728          #endif
1729          #endif],
1730         [AC_MSG_RESULT([no])
1731           AC_MSG_WARN([The installed liveMedia version is too old:
1732 Version 2010.05.29 or later is required to proceed.
1733 You can get an updated one from http://www.live555.com/liveMedia .])
1734           AS_IF([test "${enable_live555}" = "yes"], [
1735             AC_MSG_ERROR([Update live555 or pass --disable-live555 to disable the plugin.])
1736           ])
1737         ],[
1738           AC_MSG_RESULT([yes])
1739           other_libs="-lgroupsock -lBasicUsageEnvironment -lUsageEnvironment"
1740           other_libs_pic="-lgroupsock_pic -lBasicUsageEnvironment_pic -lUsageEnvironment_pic"
1741           if test "${SYS}" = "mingw32"; then
1742             # add ws2_32 for closesocket, select, recv
1743             other_libs="$other_libs -lws2_32"
1744           elif test "${SYS}" = "mingwce"; then
1745             # add ws2 for closesocket, select, recv
1746             other_libs="$other_libs -lws2"
1747           fi
1748
1749           dnl We need to check for pic because live555 don't provide shared libs
1750           dnl and we want to build a plugins so we need -fPIC on some arch.
1751           VLC_ADD_CXXFLAGS([live555], [${CPPFLAGS_live555}])
1752           AC_CHECK_LIB(liveMedia_pic, main, [
1753             VLC_ADD_PLUGIN([live555])
1754             VLC_ADD_LIBS([live555], [-lliveMedia_pic ${other_libs_pic}])
1755           ],[
1756             AC_CHECK_LIB(liveMedia, main, [
1757             VLC_ADD_PLUGIN([live555])
1758             VLC_ADD_LIBS([live555], [-lliveMedia ${other_libs}])
1759           ],[],[${other_libs}]) ],[${other_libs_pic}])
1760
1761           CPPFLAGS="${CPPFLAGS_save}"
1762           AC_LANG_POP(C++)
1763         ])
1764       ])
1765   else
1766     AC_MSG_CHECKING(for liveMedia/libliveMedia.a in ${with_live555_tree})
1767     real_live555_tree="`cd ${with_live555_tree} 2>/dev/null && pwd`"
1768     if test -z "${real_live555_tree}"; then
1769       dnl  The given directory can't be found
1770       AC_MSG_RESULT(no)
1771       AC_MSG_ERROR([cannot cd to ${with_live555_tree}])
1772     fi
1773     if test -f "${real_live555_tree}/liveMedia/libliveMedia.a"; then
1774       AC_MSG_RESULT(${real_live555_tree}/liveMedia/libliveMedia.a)
1775
1776       AC_CHECK_HEADERS(${real_live555_tree}/liveMedia/include/liveMedia_version.hh,[
1777         AC_MSG_CHECKING(for liveMedia version >= 1275091200 )
1778         AC_EGREP_CPP(yes,
1779           [#include "${real_live555_tree}/liveMedia/include/liveMedia_version.hh"
1780            #ifdef LIVEMEDIA_LIBRARY_VERSION_INT
1781            #if LIVEMEDIA_LIBRARY_VERSION_INT < 1275091200
1782            yes
1783            #endif
1784            #endif],
1785           [AC_MSG_RESULT([no])
1786            AC_MSG_ERROR([Your version of liveMedia is too old: you may get a more recent one from http://www.live555.com/liveMedia.
1787 lternatively you can use --disable-live555 to disable the liveMedia plugin.])
1788         ],[
1789        AC_MSG_RESULT([yes])
1790        ])
1791       ])
1792
1793       VLC_ADD_PLUGIN([live555])
1794
1795       if test "${SYS}" = "mingw32"; then
1796         # add ws2_32 for closesocket, select, recv
1797         VLC_ADD_LIBS([live555],[-lws2_32])
1798       fi
1799
1800       VLC_ADD_LIBS([live555],[-L${real_live555_tree}/UsageEnvironment -lUsageEnvironment])
1801       VLC_ADD_LIBS([live555],[-L${real_live555_tree}/BasicUsageEnvironment -lBasicUsageEnvironment])
1802       VLC_ADD_LIBS([live555],[-L${real_live555_tree}/groupsock -lgroupsock])
1803       VLC_ADD_LIBS([live555],[-L${real_live555_tree}/liveMedia -lliveMedia])
1804
1805       VLC_ADD_CXXFLAGS([live555],[-I${real_live555_tree}/BasicUsageEnvironment/include])
1806       VLC_ADD_CXXFLAGS([live555],[-I${real_live555_tree}/groupsock/include])
1807       VLC_ADD_CXXFLAGS([live555],[-I${real_live555_tree}/liveMedia/include])
1808       VLC_ADD_CXXFLAGS([live555],[-I${real_live555_tree}/UsageEnvironment/include ])
1809       if test "${SYS}" = "solaris"; then
1810         VLC_ADD_CXXFLAGS([live555],[-DSOLARIS])
1811       fi
1812     else
1813       dnl  The given live555 wasn't built
1814         AC_MSG_RESULT(no)
1815       if test "${enable_live555}" = "yes"; then
1816         AC_MSG_ERROR([cannot find ${real_live555_tree}/liveMedia/libliveMedia.a, make sure you compiled live555 in ${with_live555_tree}])
1817       fi
1818     fi
1819   fi
1820 fi
1821
1822 dnl
1823 dnl - special access module for dc1394 input
1824 dnl - dv module: digital video module check for libraw1394
1825 dnl - linsys modules: access module check for libzvbi
1826 dnl
1827 PKG_ENABLE_MODULES_VLC([DC1394], [], [libraw1394 >= 2.0.1 libdc1394-2 >= 2.1.0], [dc1394 access module], [auto])
1828 PKG_ENABLE_MODULES_VLC([DV], [access_dv], [libraw1394 >= 2.0.1 libavc1394 >= 0.5.3], [DV input module], [auto])
1829
1830 AC_ARG_ENABLE(linsys,
1831   [AS_HELP_STRING([--enable-linsys],
1832     [Linux Linear Systems Ltd. SDI and HD-SDI input cards (default enabled)])])
1833 if test "$SYS" = "linux" -a "${enable_linsys}" != "no"; then
1834   VLC_ADD_PLUGIN([linsys_hdsdi])
1835   PKG_CHECK_MODULES(LINSYS_SDI, zvbi-0.2 >= 0.2.28,
1836     [ VLC_ADD_LIBS([linsys_sdi],[$LINSYS_SDI_LIBS])
1837       VLC_ADD_CFLAGS([linsys_sdi],[$LINSYS_SDI_CFLAGS])
1838       VLC_ADD_PLUGIN([linsys_sdi]) ],
1839     [AC_MSG_WARN([Could not find zvbi >= 0.2.28, install libzvbi-dev ?])]
1840   )
1841 fi
1842
1843 dnl
1844 dnl dvdread module: check for libdvdread
1845 dnl
1846 dnl prepend -ldvdcss on OS that need it
1847 AS_CASE(["${SYS}"], [mingw32|darwin], [VLC_ADD_LIBS([dvdread], [-ldvdcss])])
1848 PKG_ENABLE_MODULES_VLC([DVDREAD], [], [dvdread], [dvdread input module], [auto])
1849
1850 dnl
1851 dnl libdvdnav plugin
1852 dnl
1853 AC_ARG_ENABLE(dvdnav,
1854   [AS_HELP_STRING([--disable-dvdnav],
1855     [disable DVD navigation with libdvdnav (default auto)])])
1856 if test "${enable_dvdnav}" != "no"
1857 then
1858   dnl prepend -ldvdcss on OS that need it
1859   AS_CASE(["${SYS}"], [mingw32|darwin], [VLC_ADD_LIBS([dvdnav], [-ldvdcss])])
1860
1861   PKG_CHECK_MODULES(DVDNAV, dvdnav, [
1862     VLC_ADD_PLUGIN([dvdnav])
1863     VLC_ADD_CFLAGS([dvdnav],[${DVDNAV_CFLAGS}])
1864     VLC_ADD_LIBS([dvdnav],[${DVDNAV_LIBS}])
1865     AC_CHECK_LIB(dvdnav, dvdnav_get_video_resolution,
1866       AC_DEFINE(HAVE_DVDNAV_GET_VIDEO_RESOLUTION, 1, [Define if you have dvdnav_get_video_resolution.]),
1867         [], [${LIBS_dvdnav}])
1868     AC_CHECK_LIB(dvdnav, dvdnav_describe_title_chapters,
1869       AC_DEFINE(HAVE_DVDNAV_DESCRIBE_TITLE_CHAPTERS, 1, [Define if you have dvdnav_describe_title_chapters.]),
1870         [], [${LIBS_dvdnav}])],
1871       [AC_MSG_WARN(dvdnav library not found)])
1872 fi
1873
1874 dnl
1875 dnl  Windows DirectShow access module
1876 dnl
1877 AC_ARG_ENABLE(dshow,
1878   [AS_HELP_STRING([--disable-dshow],
1879     [support DirectShow (default auto)])])
1880 if test "${enable_dshow}" != "no"
1881 then
1882   if test "${SYS}" = "mingw32"
1883   then
1884     AC_LANG_PUSH(C++)
1885       AC_CHECK_HEADERS(dshow.h,
1886       [ VLC_ADD_PLUGIN([dshow])
1887         VLC_ADD_CXXFLAGS([dshow],[])
1888         VLC_ADD_LIBS([dshow],[-lole32 -loleaut32 -luuid]) ])
1889     AC_LANG_POP(C++)
1890   fi
1891 fi
1892
1893 dnl
1894 dnl  Blu-ray Disc Support with libbluray
1895 dnl
1896 PKG_ENABLE_MODULES_VLC([BLURAY], [libbluray], [libbluray >= 0.2 libxml-2.0 >= 2.6 ], (libbluray for Blu-ray disc support ) )
1897
1898 dnl
1899 dnl  OpenCV wrapper and example filters
1900 dnl
1901 PKG_ENABLE_MODULES_VLC([OPENCV], [opencv_example opencv_wrapper], [opencv], (OpenCV (computer vision) filter), [off])
1902
1903
1904 dnl
1905 dnl  libsmbclient plugin
1906 dnl
1907 AC_ARG_ENABLE(smb,
1908   [AS_HELP_STRING([--disable-smb], [disable SMB/CIFS support (default auto)])])
1909 if test "${enable_smb}" != "no"; then
1910   AC_CHECK_HEADERS(libsmbclient.h,
1911     [ VLC_ADD_PLUGIN([access_smb])
1912       VLC_ADD_LIBS([access_smb],[-lsmbclient]) ],
1913     [ if test -n "${enable_smb}"; then
1914         AC_MSG_ERROR([cannot find libsmbclient headers])
1915      fi ])
1916 fi
1917
1918
1919 dnl
1920 dnl sftp access support
1921 dnl
1922 AC_ARG_ENABLE(sftp,
1923   [AS_HELP_STRING([--enable-sftp],
1924     [support SFTP file transfer via libssh2 (default disabled)])])
1925 if test "${enable_sftp}" = "yes"; then
1926   AC_CHECK_HEADERS(libssh2.h, [
1927     VLC_ADD_PLUGIN([access_sftp])
1928     VLC_ADD_LIBS([access_sftp], [-lssh2])
1929   ])
1930 fi
1931
1932 dnl
1933 dnl  Video4Linux 2
1934 dnl
1935 AC_ARG_ENABLE(libv4l2, [AS_HELP_STRING([--disable-libv4l2],
1936   [disable userspace V4L2 library (default auto)])])
1937 AC_ARG_ENABLE(pvr, [AS_HELP_STRING([--enable-pvr],
1938   [support PVR V4L2 cards (default disabled)])])
1939 have_v4l2="no"
1940 AC_CHECK_HEADERS([linux/videodev2.h sys/videoio.h], [
1941   have_v4l2="yes"
1942 ])
1943 AS_IF([test "$have_v4l2" = "yes"], [
1944   AS_IF([test "${enable_libv4l2}" != "no"], [
1945     PKG_CHECK_MODULES(LIBV4L2, libv4l2, [
1946       AC_DEFINE(HAVE_LIBV4L2, 1, [Define to 1 if libv4l2 is available])
1947     ], [
1948       AC_MSG_WARN([${LIBV4L2_PKG_ERRORS}])
1949     ])
1950   ])
1951   AS_IF([test "${enable_pvr}" = "yes"], [
1952     VLC_ADD_PLUGIN([pvr])
1953   ])
1954 ])
1955 AM_CONDITIONAL(HAVE_V4L2, [test "${have_v4l2}" != "no"])
1956
1957 dnl
1958 dnl special access module for Blackmagic SDI cards
1959 dnl
1960 AC_ARG_ENABLE(decklink,
1961   [AS_HELP_STRING([--disable-decklink],
1962     [disable Blackmagic DeckLink SDI input (default auto)])])
1963 AC_ARG_WITH(decklink_sdk,
1964   [AS_HELP_STRING[--with-decklink-sdk=DIR],
1965     [                        location of Blackmagic DeckLink SDI SDK])])
1966 if test "${enable_decklink}" != "no"
1967 then
1968   if test "${with_decklink_sdk}" != "no" -a -n "${with_decklink_sdk}"
1969   then
1970     VLC_ADD_CPPFLAGS([decklink],[-I${with_decklink_sdk}/include])
1971   fi
1972   CPPFLAGS="${CPPFLAGS_save} ${CPPFLAGS_decklink}"
1973   AC_LANG_PUSH(C++)
1974   AC_CHECK_HEADERS(DeckLinkAPIDispatch.cpp, [
1975     VLC_ADD_PLUGIN([decklink])
1976   ],[AC_MSG_WARN(Blackmagic DeckLink SDI include files not found, decklink disabled)])
1977   AC_LANG_POP(C++)
1978   CPPFLAGS="${CPPFLAGS_save}"
1979 fi
1980
1981
1982 dnl
1983 dnl  gnomeVFS access module
1984 dnl
1985 PKG_ENABLE_MODULES_VLC([GNOMEVFS], [access_gnomevfs], [gnome-vfs-2.0], [GnomeVFS access module], [auto])
1986
1987 dnl
1988 dnl  VCDX modules
1989 dnl
1990 AC_ARG_ENABLE(vcdx,
1991   [AS_HELP_STRING([--enable-vcdx],
1992     [navigate VCD with libvcdinfo (default disabled)])])
1993 if test "${enable_vcdx}" = "yes"
1994 then
1995     PKG_CHECK_MODULES(LIBCDIO, [libcdio >= 0.78.2 libiso9660 >= 0.72],
1996       [VLC_ADD_LIBS([vcdx],[$LIBCDIO_LIBS])
1997          VLC_ADD_CFLAGS([vcdx],[$LIBCDIO_CFLAGS])],
1998         [AC_MSG_ERROR([vcdx plugin requires libcdio >= 0.78.2 and libiso9660 >= 0.72])])
1999     PKG_CHECK_MODULES(LIBVCDINFO, libvcdinfo >= 0.7.22,
2000         [VLC_ADD_LIBS([vcdx],[$LIBVCDINFO_LIBS])
2001          VLC_ADD_CFLAGS([vcdx],[$LIBVCDINFO_CFLAGS])],
2002       [AC_MSG_ERROR([vcdx plugin requires libvcdinfo library >= 0.7.22])])
2003         VLC_ADD_PLUGIN([vcdx])
2004 fi
2005
2006 dnl
2007 dnl  Built-in CD-DA and VCD module
2008 dnl
2009 AC_ARG_ENABLE(vcd,
2010   [AS_HELP_STRING([--disable-vcd],
2011     [disable built-in VCD and CD-DA support (default enabled)])])
2012
2013 AC_ARG_ENABLE(libcddb,
2014   [AS_HELP_STRING([--disable-libcddb],
2015     [disable CDDB for Audio CD (default enabled)])])
2016
2017 if test "${enable_vcd}" != "no"
2018 then
2019   AC_MSG_CHECKING(for cdrom_msf0 in linux/cdrom.h)
2020   AC_EGREP_HEADER(cdrom_msf0,linux/cdrom.h,[
2021     AC_MSG_RESULT(yes)
2022     VLC_ADD_PLUGIN([vcd cdda])
2023   ],[
2024     AC_MSG_RESULT(no)
2025   ])
2026
2027   AC_MSG_CHECKING(for scsireq in sys/scsiio.h)
2028   AC_EGREP_HEADER(scsireq,sys/scsiio.h,[
2029     AC_MSG_RESULT(yes)
2030     VLC_ADD_PLUGIN([vcd cdda])
2031     AC_DEFINE(HAVE_SCSIREQ_IN_SYS_SCSIIO_H, 1, For NetBSD VCD support)
2032   ],[
2033     AC_MSG_RESULT(no)
2034   ])
2035
2036   AC_MSG_CHECKING(for ioc_toc_header in sys/cdio.h)
2037   AC_EGREP_HEADER(ioc_toc_header ,sys/cdio.h,[
2038     AC_MSG_RESULT(yes)
2039     VLC_ADD_PLUGIN([vcd cdda])
2040     AC_DEFINE(HAVE_IOC_TOC_HEADER_IN_SYS_CDIO_H, 1, For FreeBSD VCD support)
2041   ],[
2042     AC_MSG_RESULT(no)
2043   ])
2044
2045   if test "${SYS}" = "bsdi" -o "${SYS}" = "mingw32"
2046   then
2047     VLC_ADD_PLUGIN([vcd cdda])
2048   fi
2049
2050   if test "${SYS}" = "darwin"
2051   then
2052     VLC_ADD_PLUGIN([vcd cdda])
2053     VLC_ADD_LIBS([vcd vcdx cdda],[-Wl,-framework,IOKit,-framework,CoreFoundation])
2054     VLC_ADD_LIBS([vcdx cdda],[-liconv])
2055   fi
2056
2057   if test "$enable_libcddb" != "no"; then
2058     PKG_CHECK_MODULES(LIBCDDB, libcddb >= 0.9.5, [
2059       HAVE_LIBCDDB=yes
2060       AC_DEFINE(HAVE_LIBCDDB, 1, [Define this if you have libcddb installed])
2061       VLC_ADD_LIBS([cdda],[$LIBCDDB_LIBS])
2062       VLC_ADD_CFLAGS([cdda],[$LIBCDDB_CFLAGS])
2063       ],:
2064       [AC_MSG_WARN(new enough libcddb not found. CDDB access disabled)
2065       HAVE_LIBCDDB=no])
2066   fi
2067 fi
2068
2069 dnl
2070 dnl Linux DVB
2071 dnl
2072 AC_CACHE_CHECK([for Linux DVB version 5], [ac_cv_linux_s2api], [
2073   AC_PREPROC_IFELSE([AC_LANG_PROGRAM([
2074 [#include <linux/dvb/version.h>
2075 #if (DVB_API_VERSION < 5)
2076 EXPLODE
2077 #endif]])], [
2078   ac_cv_linux_s2api=yes
2079 ], [
2080   ac_cv_linux_s2api=no
2081 ])])
2082 AM_CONDITIONAL([HAVE_LINUX_DVB], [test "$ac_cv_linux_s2api" = "yes"])
2083
2084 dnl
2085 dnl  Screen capture module
2086 dnl
2087 AC_ARG_ENABLE(screen,
2088   [AS_HELP_STRING([--enable-screen],
2089     [disable screen capture (default enabled)])])
2090 if test "${enable_screen}" != "no"; then
2091   if test "${SYS}" = "darwin"; then
2092     AC_CHECK_HEADERS(OpenGL/gl.h, [
2093       AC_CHECK_HEADERS(ApplicationServices/ApplicationServices.h, [
2094         VLC_ADD_PLUGIN([screen])
2095         VLC_ADD_LIBS([screen],[-Wl,-framework,OpenGL,-framework,ApplicationServices])
2096       ])
2097     ])
2098   elif test "${SYS}" = "mingw32"; then
2099     VLC_ADD_PLUGIN([screen])
2100     VLC_ADD_LIBS([screen],[-lgdi32])
2101   elif test "${SYS}" = "mingwce"; then
2102     CPPFLAGS="${CPPFLAGS_save}"
2103   fi
2104 fi
2105
2106 dnl
2107 dnl  Real RTSP plugin
2108 dnl
2109 AC_ARG_ENABLE(realrtsp,
2110   [  --enable-realrtsp       Real RTSP module (default disabled)])
2111 if test "${enable_realrtsp}" = "yes"; then
2112   VLC_ADD_PLUGIN([access_realrtsp])
2113 fi
2114
2115 dnl
2116 dnl MacOS eyeTV
2117 AC_ARG_ENABLE(macosx-eyetv,
2118   [  --enable-macosx-eyetv   Mac OS X EyeTV (TNT Tuner) module (default enabled on Mac OS X)])
2119 if test "x${enable_macosx_eyetv}" != "xno" &&
2120   (test "${SYS}" = "darwin" || test "${enable_macosx_eyetv}" = "yes")
2121 then
2122   VLC_ADD_LIBS([access_eyetv], [-Wl,-framework,Foundation])
2123   VLC_ADD_PLUGIN([access_eyetv])
2124 fi
2125
2126 dnl
2127 dnl QTCapture
2128 AC_ARG_ENABLE(macosx-qtcapture,
2129   [  --enable-macosx-qtcapture Mac OS X qtcapture (iSight) module (default enabled on Mac OS X)])
2130 if test "x${enable_macosx_qtcapture}" != "xno" &&
2131   (test "${SYS}" = "darwin" || test "${enable_macosx_qtcapture}" = "yes")
2132 then
2133   VLC_ADD_LIBS([qtcapture], [-Wl,-framework,Cocoa])
2134   VLC_ADD_LIBS([qtcapture], [-Wl,-framework,QTKit])
2135   VLC_ADD_LIBS([qtcapture], [-Wl,-framework,CoreAudio])
2136   VLC_ADD_LIBS([qtcapture], [-Wl,-framework,QuartzCore])
2137   VLC_ADD_LIBS([qtcapture], [-Wl,-framework,CoreVideo])
2138   VLC_ADD_PLUGIN([qtcapture])
2139 fi
2140
2141
2142 dnl
2143 dnl  Demux plugins
2144 dnl
2145
2146 EXTEND_HELP_STRING([Mux/Demux plugins:])
2147
2148 dnl
2149 dnl  libdvbpsi check for ts mux/demux
2150 dnl
2151 have_dvbpsi="no"
2152 PKG_WITH_MODULES([DVBPSI], [libdvbpsi], [have_dvbpsi="yes"])
2153 AM_CONDITIONAL(HAVE_DVBPSI, [test "${have_dvbpsi}" = "yes"])
2154
2155
2156 dnl
2157 dnl  GME demux plugin
2158 dnl
2159 AC_ARG_ENABLE(gme,
2160   [AS_HELP_STRING([--enable-gme],
2161     [use Game Music Emu (default auto)])])
2162 AS_IF([test "${enable_gme}" != "no"], [
2163   AC_CHECK_HEADER([gme/gme.h], [
2164     VLC_ADD_LIBS([gme], [-lgme])
2165     VLC_ADD_PLUGIN([gme])
2166   ], [
2167     AS_IF([test "x${enable_gme}" != "x"], [
2168       AC_MSG_ERROR([GME cannot be found. Please install the development files.])
2169     ])
2170   ])
2171 ])
2172
2173
2174 dnl
2175 dnl  SIDPlay plugin
2176 dnl
2177 AC_ARG_ENABLE(sid,
2178     [AS_HELP_STRING([--enable-sid],[C64 sid demux support (default auto)])])
2179 AS_IF([test "${enable_sid}" != "no"], [
2180     PKG_CHECK_MODULES(SID, [libsidplay2], [
2181         AC_LANG_PUSH(C++)
2182         oldCPPFLAGS="$CPPFLAGS"
2183         CPPFLAGS="$CPPFLAGS $SID_CFLAGS"
2184         AC_CHECK_HEADER([sidplay/builders/resid.h], [
2185             VLC_ADD_PLUGIN([sid])
2186             VLC_ADD_CFLAGS([sid], [$SID_CFLAGS])
2187             VLC_ADD_LIBS([sid], [$SID_LIBS] [-lresid-builder])
2188         ], [
2189             AS_IF([test "x${enable_sid}" = "xyes"],
2190                 [AC_MSG_ERROR(Library libresid-builder needed for sid was not found)],
2191                 [AC_MSG_WARN(Library libresid-builder needed for sid was not found)]
2192                 )
2193         ])
2194         CPPFLAGS="$oldCPPFLAGS"
2195         AC_LANG_POP(C++)
2196     ], [
2197         AS_IF([test "x${enable_sid}" = "xyes"],
2198             [AC_MSG_ERROR(Library libsidplay2 needed for sid was not found)],
2199             [AC_MSG_WARN(Library libsidplay2 needed for sid was not found)]
2200             )
2201     ])
2202 ])
2203
2204
2205 dnl
2206 dnl  ogg demux plugin
2207 dnl
2208 PKG_ENABLE_MODULES_VLC([OGG], [], [ogg >= 1.0], [Ogg demux support], [auto])
2209 if test "${enable_sout}" != "no"; then
2210     PKG_ENABLE_MODULES_VLC([MUX_OGG], [], [ogg >= 1.0], [Ogg mux support], [auto])
2211 dnl Check for libshout
2212     PKG_ENABLE_MODULES_VLC([SHOUT], [access_output_shout], [shout >= 2.1], [libshout output plugin], [auto])
2213 fi
2214
2215 dnl
2216 dnl  matroska demux plugin
2217 dnl
2218 AC_ARG_ENABLE(mkv,
2219   [AS_HELP_STRING([--disable-mkv],
2220     [do not use libmatroska (default auto)])])
2221 if test "${enable_mkv}" != "no" -a "${CXX}" != ""; then
2222   AC_LANG_PUSH(C++)
2223   AC_CHECK_HEADERS(ebml/EbmlVersion.h, [
2224     AC_MSG_CHECKING(for libebml version >= 1.0.0)
2225     AC_EGREP_CPP(yes,
2226       [#include <ebml/EbmlVersion.h>
2227        #ifdef LIBEBML_VERSION
2228        #if LIBEBML_VERSION >= 0x010000
2229        yes
2230        #endif
2231        #endif],
2232       [AC_MSG_RESULT([yes])
2233         AC_CHECK_HEADERS(matroska/KaxVersion.h, [
2234           AC_MSG_CHECKING(for libmatroska version >= 1.0.0)
2235           AC_EGREP_CPP(yes,
2236             [#include <matroska/KaxVersion.h>
2237              #ifdef LIBMATROSKA_VERSION
2238              #if LIBMATROSKA_VERSION >= 0x010000
2239              yes
2240              #endif
2241              #endif],
2242             [AC_MSG_RESULT([yes])
2243               AC_CHECK_HEADERS(matroska/KaxAttachments.h)
2244               VLC_ADD_CXXFLAGS([mkv],[])
2245               if test "${SYS}" = "darwin"; then
2246                 VLC_ADD_CXXFLAGS([mkv],[-O1])
2247               fi
2248               AC_CHECK_LIB(ebml_pic, main, [
2249                 VLC_ADD_PLUGIN([mkv])
2250                 VLC_ADD_LIBS([mkv],[-lmatroska -lebml_pic])
2251               ],[
2252                 AC_CHECK_LIB(ebml, main, [
2253                   VLC_ADD_PLUGIN([mkv])
2254                   VLC_ADD_LIBS([mkv],[-lmatroska -lebml])
2255                 ])
2256               ])
2257             ], [
2258               AC_MSG_RESULT([no])
2259               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.])
2260           ])
2261         ])
2262       ],
2263       [AC_MSG_RESULT([no])
2264         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.])
2265     ])
2266   ])
2267   AC_LANG_POP(C++)
2268 fi
2269
2270 dnl
2271 dnl  modplug demux plugin
2272 dnl
2273 AC_ARG_ENABLE(mod,
2274   [AS_HELP_STRING([--disable-mod],
2275     [do not use libmodplug (default auto)])])
2276 if test "${enable_mod}" != "no" ; then
2277     PKG_CHECK_MODULES(LIBMODPLUG, [libmodplug >= 0.8.4 libmodplug != 0.8.8], [
2278           VLC_ADD_PLUGIN([mod])
2279           VLC_ADD_CXXFLAGS([mod],[$LIBMODPLUG_CFLAGS])
2280           VLC_ADD_LIBS([mod],[$LIBMODPLUG_LIBS])
2281     ],[
2282        AS_IF([test x"${enable_mod}" = "xyes"],
2283          [AC_MSG_ERROR(libmodplug not found or a broken version (0.8.8.0) was found!)],
2284          [AC_MSG_WARN(libmodplug not found or a broken version (0.8.8.0) was found!)])
2285     ])
2286 fi
2287
2288 dnl
2289 dnl  mpc demux plugin
2290 dnl
2291 AC_ARG_ENABLE(mpc,
2292   [AS_HELP_STRING([--disable-mpc], [do not use libmpcdec (default auto)])])
2293 if test "${enable_mpc}" != "no"
2294 then
2295   AC_CHECK_HEADERS([mpc/mpcdec.h], [
2296     VLC_ADD_PLUGIN([mpc])
2297     VLC_ADD_LIBS([mpc],[-lmpcdec])],
2298     [AC_CHECK_HEADERS([mpcdec/mpcdec.h], [
2299     VLC_ADD_PLUGIN([mpc])
2300     VLC_ADD_LIBS([mpc],[-lmpcdec])])])
2301 fi
2302
2303 dnl
2304 dnl  Codec plugins
2305 dnl
2306
2307 EXTEND_HELP_STRING([Codec plugins:])
2308
2309 dnl
2310 dnl wmafixed plugin
2311 dnl
2312 AC_ARG_ENABLE(wma-fixed,
2313   [  --enable-wma-fixed      libwma-fixed module (default disabled)])
2314 if test "${enable_wma_fixed}" = "yes"
2315 then
2316   VLC_ADD_PLUGIN([wma_fixed])
2317 fi
2318
2319 dnl
2320 dnl shine fixed point mp3 encoder
2321 dnl
2322 AC_ARG_ENABLE(shine,
2323   [  --enable-shine          shine mp3 encoding module (default disabled)])
2324 if test "${enable_shine}" = "yes"
2325 then
2326   VLC_ADD_PLUGIN([shine])
2327 fi
2328
2329 dnl
2330 dnl openmax il codec plugin
2331 dnl
2332 AC_ARG_ENABLE(omxil,
2333   [  --enable-omxil          openmax il codec module (default disabled)])
2334 if test "${enable_omxil}" = "yes"
2335 then
2336   VLC_ADD_PLUGIN([omxil])
2337   VLC_ADD_LIBS([omxil], [$LIBDL])
2338 fi
2339
2340 dnl
2341 dnl iomx codec plugin
2342 dnl
2343 AC_ARG_ENABLE(iomx,
2344   [  --enable-iomx           iomx codec module (default disabled)])
2345 if test "${enable_iomx}" = "yes"
2346 then
2347   CPPFLAGS_save="${CPPFLAGS}"
2348   CPPFLAGS="${CPPFLAGS} -I${srcdir}/modules/codec/omxil" # For the OMX headers
2349   AC_LANG_PUSH([C++])
2350   AC_CHECK_HEADER(media/stagefright/OMXClient.h, [
2351     VLC_ADD_PLUGIN([iomx])
2352     VLC_ADD_CXXFLAGS([iomx], [-fno-exceptions -fno-rtti])
2353     VLC_ADD_LIBS([iomx], [-lstagefright -lmedia -lutils -lbinder])
2354   ], [
2355     AC_MSG_ERROR("Could not find IOMX headers")
2356   ])
2357   AC_LANG_POP([C++])
2358   CPPFLAGS="${CPPFLAGS_save}"
2359 fi
2360
2361 dnl
2362 dnl CrystalHD codec plugin
2363 dnl
2364 AC_ARG_ENABLE(crystalhd,
2365   [  --enable-crystalhd      crystalhd codec plugin (default auto)])
2366 if test "${enable_crystalhd}" != "no"; then
2367     AC_CHECK_HEADER(libcrystalhd/libcrystalhd_if.h, [
2368       VLC_ADD_PLUGIN([crystalhd])
2369       VLC_ADD_LIBS([crystalhd], [-lcrystalhd])
2370     ],[
2371       if test "${SYS}" = "mingw32" ; then
2372         AC_CHECK_HEADERS(libcrystalhd/bc_dts_defs.h, [
2373           VLC_ADD_PLUGIN([crystalhd])
2374           AC_CHECK_HEADERS(libcrystalhd/bc_drv_if.h, [
2375             VLC_ADD_LIBS([crystalhd], [-lbcmDIL])
2376             ])
2377         ],[
2378           AS_IF([test x"${enable_crystalhd}" = "xyes"],
2379                 [AC_MSG_ERROR("Could not find CrystalHD development headers")],
2380                 [AC_MSG_WARN("Could not find CrystalHD development headers")])
2381         ],[#define __LINUX_USER__
2382                #include <libcrystalhd/bc_dts_types.h>
2383         ])
2384       fi
2385     ],[
2386        #include <libcrystalhd/bc_dts_types.h>
2387       ])
2388 fi
2389
2390 dnl
2391 dnl  mad plugin
2392 dnl
2393 AC_ARG_ENABLE(mad,
2394   [  --enable-mad            libmad module (default enabled)])
2395 if test "${enable_mad}" != "no"
2396 then
2397   AC_ARG_WITH(mad,
2398     [  --with-mad=PATH         path to libmad],[],[])
2399   if test "${with_mad}" != "no" -a -n "${with_mad}"
2400   then
2401     VLC_ADD_CPPFLAGS([mpgatofixed32],[-I${with_mad}/include])
2402     VLC_ADD_LIBS([mpgatofixed32],[-L${with_mad}/lib])
2403   fi
2404
2405   AC_ARG_WITH(mad-tree,
2406     [  --with-mad-tree=PATH    mad tree for static linking],[],[])
2407   if test "${with_mad_tree}" != "no" -a -n "${with_mad_tree}"
2408   then
2409     real_mad_tree="`cd ${with_mad_tree} 2>/dev/null && pwd`"
2410     if test -z "${real_mad_tree}"
2411     then
2412       dnl  The given directory can't be found
2413       AC_MSG_RESULT(no)
2414       AC_MSG_ERROR([${with_mad_tree} directory doesn't exist])
2415     fi
2416     dnl  Use a custom libmad
2417     AC_MSG_CHECKING(for mad.h in ${real_mad_tree})
2418     if test -f ${real_mad_tree}/mad.h
2419     then
2420       AC_MSG_RESULT(yes)
2421       VLC_ADD_CPPFLAGS([mpgatofixed32],[-I${real_mad_tree}])
2422       VLC_ADD_LIBS([mpgatofixed32],[-L${real_mad_tree}/.libs])
2423       LDFLAGS="${LDFLAGS_save} ${LIBS_mpgatofixed32}"
2424       AC_CHECK_LIB(mad, mad_bit_init, [
2425         VLC_ADD_PLUGIN([mpgatofixed32])
2426         VLC_ADD_LIBS([mpgatofixed32],[-lmad])
2427         ],[ AC_MSG_ERROR([the specified tree hasn't been compiled ])
2428       ],[])
2429       LDFLAGS="${LDFLAGS_save}"
2430     else
2431       AC_MSG_RESULT(no)
2432       AC_MSG_ERROR([the specified tree doesn't have mad.h])
2433     fi
2434   else
2435     CPPFLAGS="${CPPFLAGS_save} ${CPPFLAGS_mpgatofixed32}"
2436     LDFLAGS="${LDFLAGS_save} ${LIBS_mpgatofixed32}"
2437     AC_CHECK_HEADERS(mad.h, ,
2438       [ 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.]) ])
2439     AC_CHECK_LIB(mad, mad_bit_init, [
2440       VLC_ADD_PLUGIN([mpgatofixed32])
2441       VLC_ADD_LIBS([mpgatofixed32],[-lmad])],
2442       [ AC_MSG_ERROR([Cannot find libmad library...]) ])
2443     CPPFLAGS="${CPPFLAGS_save}"
2444     LDFLAGS="${LDFLAGS_save}"
2445   fi
2446 fi
2447
2448
2449 AC_ARG_ENABLE(merge-ffmpeg,
2450 [  --enable-merge-ffmpeg   merge FFmpeg-based plugins (default disabled)],, [
2451   enable_merge_ffmpeg="no"
2452 ])
2453 AM_CONDITIONAL([MERGE_FFMPEG], [test "$enable_merge_ffmpeg" != "no"])
2454
2455 AC_CACHE_CHECK([if linker supports -Bsymbolic],
2456   [ac_cv_ld_bsymbolic],
2457   [LDFLAGS="${LDFLAGS_vlc} -Wl,-Bsymbolic"
2458     AC_TRY_LINK([],,ac_cv_ld_bsymbolic=yes,ac_cv_ld_bsymbolic=no)
2459     LDFLAGS="${LDFLAGS_save}"
2460   ])
2461
2462 dnl
2463 dnl  avcodec decoder/encoder plugin
2464 dnl
2465 AC_ARG_ENABLE(avcodec,
2466 [  --enable-avcodec        libavcodec codec (default enabled)])
2467 AS_IF([test "${enable_avcodec}" != "no"], [
2468   PKG_CHECK_MODULES(AVCODEC,[libavcodec >= 52.25.0 libavutil],
2469     [
2470       VLC_SAVE_FLAGS
2471       CPPFLAGS="${CPPFLAGS} ${AVCODEC_CFLAGS}"
2472       CFLAGS="${CFLAGS} ${AVCODEC_CFLAGS}"
2473       AC_CHECK_HEADERS(libavcodec/avcodec.h)
2474       AC_CHECK_HEADERS(libavutil/avutil.h)
2475       VLC_ADD_PLUGIN([avcodec])
2476       VLC_ADD_LIBS([avcodec],[$AVCODEC_LIBS])
2477       AS_IF([test "${ac_cv_ld_bsymbolic}" != "no"], [
2478         VLC_ADD_LIBS([avcodec],[-Wl,-Bsymbolic])
2479       ])
2480       VLC_ADD_CFLAGS([avcodec],[$AVCODEC_CFLAGS])
2481       VLC_RESTORE_FLAGS
2482       have_avcodec="yes"
2483     ],[
2484       AC_MSG_ERROR([Could not find libavcodec or libavutil. Use --disable-avcodec to ignore this error.])
2485   ])
2486 ], [
2487   have_avcodec="no"
2488 ])
2489
2490 dnl
2491 dnl libva needs avcodec
2492 dnl
2493 AC_ARG_ENABLE(libva,
2494   [  --enable-libva          VAAPI GPU decoding support (libVA) (default auto)])
2495
2496 AS_IF([test "${enable_libva}" != "no"], [
2497   AS_IF([test "x${have_avcodec}" = "xyes"], [
2498     PKG_CHECK_MODULES(LIBVA, [libva libva-x11],
2499       [
2500         VLC_SAVE_FLAGS
2501         CPPFLAGS="${CPPFLAGS} ${AVCODEC_CFLAGS}"
2502         CFLAGS="${CFLAGS} ${AVCODEC_CFLAGS}"
2503         AC_CHECK_HEADERS(libavcodec/vaapi.h, [
2504            VLC_ADD_LIBS([avcodec],[$LIBVA_LIBS ${X_LIBS} ${X_PRE_LIBS} -lX11])
2505            VLC_ADD_CFLAGS([avcodec],[$LIBVA_CFLAGS ${X_CFLAGS}])
2506            AC_DEFINE(HAVE_AVCODEC_VAAPI, 1, [Define if avcodec has to be built with VAAPI support.])
2507            echo "VAAPI acceleration activated"
2508         ],[
2509     AS_IF([test "${enable_libva}" = "yes"],
2510           [AC_MSG_ERROR([libva is present but libavcodec/vaapi.h is missing])],
2511               [AC_MSG_WARN([libva is present but libavcodec/vaapi.h is missing ])])
2512         ])
2513         VLC_RESTORE_FLAGS
2514       ],[
2515     AS_IF([test "${enable_libva}" = "yes"],
2516               [AC_MSG_ERROR([Could not find required libva.])],
2517               [AC_MSG_WARN([libva not found  ])])
2518       ])
2519   ],[
2520     AS_IF([test "x${enable_libva}" != "x"], [
2521       AC_MSG_ERROR([--enable-libva and --disable-avcodec options are mutually exclusive.])
2522     ])
2523   ])
2524 ])
2525
2526 dnl
2527 dnl dxva2 needs avcodec
2528 dnl
2529 AC_ARG_ENABLE(dxva2,
2530   [  --enable-dxva2          DxVA2 GPU decoding support (default auto)])
2531
2532 AS_IF([test "${enable_dxva2}" != "no"], [
2533   if test "${SYS}" = "mingw32"; then
2534   AS_IF([test "x${have_avcodec}" = "xyes"], [
2535     AC_CHECK_HEADERS(dxva2api.h,
2536       [
2537         AC_CHECK_HEADERS(libavcodec/dxva2.h, [
2538            VLC_ADD_LIBS([avcodec],[-lole32 -lshlwapi -luuid])
2539            AC_DEFINE(HAVE_AVCODEC_DXVA2, 1, [Define if avcodec has to be built with DxVA2 support.])
2540            echo "DxVA2 acceleration activated"
2541         ],[
2542     AS_IF([test "${enable_dxva2}" = "yes"],
2543           [AC_MSG_ERROR([dxva2 is present but libavcodec/dxva2.h is missing])],
2544               [AC_MSG_WARN([dxva2 is present but libavcodec/dxva2.h is missing ])])
2545         ])
2546       ],[
2547     AS_IF([test "${enable_dxva2}" = "yes"],
2548               [AC_MSG_ERROR([Could not find required dxva2api.h])],
2549               [AC_MSG_WARN([dxva2api.h not found])])
2550       ])
2551   ],[
2552     AS_IF([test "x${enable_dxva2}" != "x"], [
2553       AC_MSG_ERROR([--enable-dxva2 and --disable-avcodec options are mutually exclusive.])
2554     ])
2555   ])
2556   fi
2557 ])
2558
2559
2560 dnl
2561 dnl stream_out switcher needs libavcodec
2562 dnl
2563 AC_ARG_ENABLE(switcher,
2564   [  --enable-switcher       Stream-out switcher plugin (default disabled)])
2565 AS_IF([test "${enable_switcher}" = "yes"], [
2566   AS_IF([test "x${have_avcodec}" = "xyes"], [
2567     VLC_ADD_PLUGIN([stream_out_switcher])
2568     VLC_ADD_LIBS([stream_out_switcher],[$AVCODEC_LIBS $AVUTIL_LIBS])
2569     VLC_ADD_CFLAGS([stream_out_switcher],[$AVCODEC_CFLAGS $AVUTIL_CFLAGS])
2570   ],[AC_MSG_ERROR([Stream_out switcher depends on avcodec])
2571   ])
2572 ])
2573
2574
2575 dnl
2576 dnl  avformat demuxer/muxer plugin
2577 dnl
2578
2579 AC_ARG_ENABLE(avformat,
2580 [  --enable-avformat       libavformat containers (default enabled)],, [
2581   enable_avformat="${have_avcodec}"
2582 ])
2583 if test "${enable_avformat}" != "no"
2584 then
2585   PKG_CHECK_MODULES(AVFORMAT,[libavformat > 52.30.0 libavcodec libavutil],
2586     [
2587       VLC_SAVE_FLAGS
2588       CPPFLAGS="${CPPFLAGS} ${AVFORMAT_CFLAGS}"
2589       CFLAGS="${CFLAGS} ${AVFORMAT_CFLAGS}"
2590       AC_CHECK_HEADERS(libavformat/avformat.h libavformat/avio.h)
2591       AC_CHECK_HEADERS(libavutil/avutil.h)
2592       AS_IF([test "$enable_merge_ffmpeg" = "no"], [
2593         VLC_ADD_PLUGIN([avformat access_avio])
2594         VLC_ADD_LIBS([avformat access_avio],[$AVFORMAT_LIBS $AVUTIL_LIBS])
2595         VLC_ADD_CFLAGS([avformat access_avio],[$AVFORMAT_CFLAGS $AVUTIL_CFLAGS])
2596         AS_IF([test "${ac_cv_ld_bsymbolic}" != "no"], [
2597           VLC_ADD_LIBS([avformat access_avio],[-Wl,-Bsymbolic])
2598         ])
2599       ], [
2600         VLC_ADD_LIBS([avcodec],[$AVFORMAT_LIBS $AVUTIL_LIBS])
2601         VLC_ADD_CFLAGS([avcodec],[$AVFORMAT_CFLAGS $AVUTIL_CFLAGS])
2602       ])
2603       VLC_RESTORE_FLAGS
2604     ],[
2605       AC_MSG_ERROR([Could not find libavformat or libavutil. Use --disable-avformat to ignore this error.])
2606   ])
2607 fi
2608
2609 dnl
2610 dnl  swscale image scaling and conversion plugin
2611 dnl
2612
2613 AC_ARG_ENABLE(swscale,
2614   AS_HELP_STRING([--enable-swscale],[libswscale image scaling and conversion
2615           (default enabled)]))
2616 if test "${enable_swscale}" != "no"
2617 then
2618   PKG_CHECK_MODULES(SWSCALE,[libswscale],
2619     [
2620       VLC_SAVE_FLAGS
2621       CPPFLAGS="${CPPFLAGS} ${SWSCALE_CFLAGS}"
2622       CFLAGS="${CFLAGS} ${SWSCALE_CFLAGS}"
2623       AC_CHECK_HEADERS(libswscale/swscale.h)
2624       VLC_ADD_PLUGIN([swscale])
2625       VLC_ADD_LIBS([swscale],[$SWSCALE_LIBS])
2626       VLC_ADD_CFLAGS([swscale],[$SWSCALE_CFLAGS])
2627       AS_IF([test "${ac_cv_ld_bsymbolic}" != "no"], [
2628         VLC_ADD_LIBS([swscale],[-Wl,-Bsymbolic])
2629       ])
2630       VLC_RESTORE_FLAGS
2631     ],[
2632       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.])
2633   ])
2634 fi
2635
2636 dnl
2637 dnl  postproc plugin
2638 dnl
2639
2640 AC_ARG_ENABLE(postproc,
2641 [  --enable-postproc       libpostproc image post-processing (default enabled)])
2642 if test "${enable_postproc}" != "no"
2643 then
2644   PKG_CHECK_MODULES(POSTPROC,[libpostproc libavutil],
2645     [
2646       VLC_SAVE_FLAGS
2647       CPPFLAGS="${CPPFLAGS} ${POSTPROC_CFLAGS}"
2648       CFLAGS="${CFLAGS} ${POSTPROC_CFLAGS}"
2649       AC_CHECK_HEADERS(postproc/postprocess.h)
2650       VLC_ADD_PLUGIN([postproc])
2651       VLC_ADD_LIBS([postproc],[$POSTPROC_LIBS $AVUTIL_LIBS])
2652       VLC_ADD_CFLAGS([postproc],[$POSTPROC_CFLAGS $AVUTIL_CFLAGS])
2653       VLC_RESTORE_FLAGS
2654     ],[
2655       AC_MSG_ERROR([Could not find libpostproc. Use --disable-postproc to ignore this error.])
2656   ])
2657 fi
2658
2659 dnl
2660 dnl  faad decoder plugin
2661 dnl
2662 AC_ARG_ENABLE(faad,
2663 [  --enable-faad           faad codec (default disabled)])
2664 if test "${enable_faad}" = "yes"
2665 then
2666   AC_ARG_WITH(faad-tree,
2667   [  --with-faad-tree=PATH   faad tree for static linking])
2668   if test -n "${with_faad_tree}"
2669   then
2670     AC_MSG_CHECKING(for libfaad.a in ${with_faad_tree})
2671     real_faad_tree="`cd ${with_faad_tree} 2>/dev/null && pwd`"
2672     if test -z "${real_faad_tree}"
2673     then
2674       dnl  The given directory can't be found
2675       AC_MSG_RESULT(no)
2676       AC_MSG_ERROR([cannot cd to ${with_faad_tree}])
2677     fi
2678     if test -f "${real_faad_tree}/libfaad/.libs/libfaad.a"
2679     then
2680       dnl  Use a custom faad
2681       AC_MSG_RESULT(${real_faad_tree}/libfaad/.libs/libfaad.a)
2682       VLC_ADD_PLUGIN([faad])
2683       VLC_ADD_LIBS([faad],[${real_faad_tree}/libfaad/.libs/libfaad.a])
2684       VLC_ADD_CPPFLAGS([faad],[-I${real_faad_tree}/include])
2685     else
2686       dnl  The given libfaad wasn't built
2687       AC_MSG_RESULT(no)
2688       AC_MSG_ERROR([cannot find ${real_faad_tree}/libfaad/.libs/libfaad.a, make sure you compiled libfaad in ${with_faad_tree}])
2689     fi
2690   else
2691     CPPFLAGS="${CPPFLAGS_save} ${CPPFLAGS_faad}"
2692     LDFLAGS="${LDFLAGS_save} ${LIBS_faad}"
2693     AC_CHECK_HEADERS(faad.h, ,
2694       [ AC_MSG_ERROR([Cannot find development headers for libfaad...]) ])
2695     AC_CHECK_LIB(faad, faacDecOpen, [
2696       VLC_ADD_PLUGIN([faad])
2697       VLC_ADD_LIBS([faad],[-lfaad]) ],
2698       AC_CHECK_LIB(faad, NeAACDecOpen, [
2699         VLC_ADD_PLUGIN([faad])
2700         VLC_ADD_LIBS([faad],[-lfaad]) ],
2701         [ AC_MSG_ERROR([Cannot find libfaad library...]) ]))
2702     LDFLAGS="${LDFLAGS_save}"
2703     CPPFLAGS="${CPPFLAGS_save}"
2704   fi
2705 fi
2706
2707 dnl
2708 dnl twolame encoder plugin
2709 dnl
2710 PKG_ENABLE_MODULES_VLC([TWOLAME], [], [twolame], [MPEG Audio Layer 2 encoder], [auto], [], [], [ -DLIBTWOLAME_STATIC])
2711
2712 dnl
2713 dnl  QuickTime plugin
2714 dnl
2715 AC_ARG_ENABLE(quicktime,
2716   [  --enable-quicktime      QuickTime module (deprecated)])
2717 if test "${enable_quicktime}" = "yes"; then
2718   if test "${SYS}" = "mingw32"; then
2719     VLC_ADD_PLUGIN([quicktime])
2720   else
2721   AC_CHECK_HEADERS(QuickTime/QuickTime.h,
2722     [ VLC_ADD_PLUGIN([quicktime])
2723       VLC_ADD_LIBS([quicktime],[-Wl,-framework,QuickTime,-framework,Carbon])
2724     ], [ AC_MSG_ERROR([cannot find QuickTime headers]) ])
2725   fi
2726 fi
2727
2728 dnl
2729 dnl  Real plugin
2730 dnl
2731 AC_ARG_ENABLE(real,
2732   [  --enable-real           Real video decoder module (default disabled)])
2733 if test "${enable_real}" = "yes"; then
2734   VLC_ADD_PLUGIN([realvideo])
2735 fi
2736
2737 dnl
2738 dnl A52/AC3 decoder plugin
2739 dnl
2740 AC_ARG_ENABLE(a52,
2741   [  --enable-a52            A/52 support with liba52 (default enabled)])
2742 if test "${enable_a52}" != "no"
2743 then
2744   AC_ARG_WITH(a52,
2745     [  --with-a52=PATH         a52 headers and libraries])
2746   AC_ARG_WITH(a52-tree,
2747     [  --with-a52-tree=PATH    a52dec tree for static linking ],[],[])
2748   if test "${with_a52_tree}" != "no" -a -n "${with_a52_tree}"
2749   then
2750     real_a52_tree="`cd ${with_a52_tree} 2>/dev/null && pwd`"
2751     if test -z "${real_a52_tree}"
2752     then
2753       dnl  The given directory can't be found
2754       AC_MSG_RESULT(no)
2755       AC_MSG_ERROR([${with_a52_tree} directory doesn't exist])
2756     fi
2757     dnl  Use a custom a52dec
2758     AC_MSG_CHECKING(for a52.h in ${real_a52_tree}/include)
2759     if test -f ${real_a52_tree}/include/a52.h
2760     then
2761       AC_MSG_RESULT(yes)
2762       VLC_ADD_CPPFLAGS([a52tofloat32],[-I${real_a52_tree}])
2763       VLC_ADD_LIBS([a52tofloat32],[-L${real_a52_tree}/liba52/.libs])
2764       LDFLAGS="${LDFLAGS_save} ${LIBS_a52tofloat32}"
2765       AC_CHECK_LIB(a52, a52_free, [
2766         VLC_ADD_PLUGIN([a52tofloat32])
2767         VLC_ADD_CPPFLAGS([a52tofloat32],[-DUSE_A52DEC_TREE])
2768         VLC_ADD_LIBS([a52tofloat32],[-la52])
2769         ],[
2770         if test -f ${real_a52_tree}/liba52/.libs/liba52.a
2771         then
2772           AC_MSG_ERROR([make sure you have at least a52dec-0.7.3 ($real_a52_tree)])
2773         else
2774           AC_MSG_ERROR([the specified tree hasn't been compiled])
2775         fi
2776       ])
2777       LDFLAGS="${LDFLAGS_save}"
2778     else
2779       AC_MSG_RESULT(no)
2780       AC_MSG_ERROR([the specified tree doesn't have a52.h])
2781     fi
2782   else
2783     if test -z "${with_a52}"
2784     then
2785       LDFLAGS_test=""
2786       CPPFLAGS_test=""
2787     else
2788       LDFLAGS_test="-L${with_a52}/lib"
2789       CPPFLAGS_test="-I${with_a52}/include"
2790     fi
2791     CPPFLAGS="${CPPFLAGS_save} ${CPPFLAGS_test} ${CPPFLAGS_a52tofloat32}"
2792     LDFLAGS="${LDFLAGS_save} ${LDFLAGS_test} ${LIBS_a52tofloat32}"
2793     AC_CHECK_HEADERS(a52dec/a52.h, [
2794       AC_CHECK_LIB(a52, a52_free, [
2795         VLC_ADD_PLUGIN([a52tofloat32])
2796         VLC_ADD_LIBS([a52tofloat32],[${LDFLAGS_test} -la52])
2797         VLC_ADD_CPPFLAGS([a52tofloat32],[${CPPFLAGS_test}])
2798       ],[
2799         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.])
2800         ])
2801     ],[
2802       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.])
2803     ])
2804     CPPFLAGS="${CPPFLAGS_save}"
2805     LDFLAGS="${LDFLAGS_save}"
2806   fi
2807 fi
2808
2809 AC_ARG_WITH(a52-fixed,
2810       [  --with-a52-fixed        specify if liba52 has been compiled with fixed point support],
2811       [
2812         VLC_ADD_CPPFLAGS([a52tofloat32],[-DLIBA52_FIXED]) ])
2813
2814 dnl
2815 dnl DTS Coherent Acoustics decoder plugin
2816 dnl
2817 PKG_ENABLE_MODULES_VLC([DCA], [dtstofloat32], [libdca >= 0.0.5], [DTS Coherent Acoustics support with libdca], [auto])
2818
2819 dnl
2820 dnl  Flac plugin
2821 dnl
2822 PKG_ENABLE_MODULES_VLC([FLAC], [], [flac], [libflac decoder/encoder support], [auto])
2823
2824 dnl
2825 dnl  Libmpeg2 plugin
2826 dnl
2827 PKG_ENABLE_MODULES_VLC([LIBMPEG2], [], [libmpeg2 > 0.3.2], [libmpeg2 decoder support], [auto])
2828
2829 dnl
2830 dnl  Vorbis plugin
2831 dnl
2832 PKG_ENABLE_MODULES_VLC([VORBIS], [], [ogg vorbis >= 1.1 vorbisenc >= 1.1], [Vorbis decoder and encoder], [auto])
2833
2834 dnl
2835 dnl  Tremor plugin
2836 dnl
2837 AC_ARG_ENABLE(tremor,
2838   [  --enable-tremor         Tremor decoder support (default disabled)])
2839 if test "${enable_tremor}" = "yes"
2840 then
2841   AC_CHECK_HEADERS(tremor/ivorbiscodec.h, [
2842     VLC_ADD_PLUGIN([tremor])
2843     VLC_ADD_LIBS([tremor],[-lvorbisidec -logg])
2844    ],[])
2845 fi
2846
2847 dnl
2848 dnl  Speex plugin
2849 dnl
2850 PKG_ENABLE_MODULES_VLC([SPEEX], [], [ogg speex >= 1.0.5], [Speex decoder support], [auto])
2851
2852 dnl
2853 dnl  theora decoder plugin
2854 dnl
2855 PKG_ENABLE_MODULES_VLC([THEORA], [], [ogg theora >= 1.0], [experimental theora codec], [auto])
2856
2857 dnl
2858 dnl  dirac encoder plugin
2859 dnl
2860 PKG_ENABLE_MODULES_VLC([DIRAC], [], [dirac >= 0.10.0], [dirac encoder], [auto])
2861
2862 dnl
2863 dnl  schroedinger decoder plugin (for dirac format video)
2864 dnl
2865 PKG_ENABLE_MODULES_VLC([SCHROEDINGER], [], [schroedinger-1.0 >= 1.0.10], [dirac decoder and encoder using schroedinger], [auto])
2866
2867 dnl
2868 dnl  PNG decoder module
2869 dnl
2870 AC_ARG_ENABLE(png,
2871   [  --enable-png            PNG support (default enabled)])
2872 if test "${enable_png}" != "no"; then
2873 AC_CHECK_HEADERS(png.h, [
2874   LDFLAGS="${LDFLAGS_save} -lz"
2875   AC_CHECK_LIB(png, png_set_rows, [
2876     VLC_ADD_LIBS([png],[-lpng -lz -lm])
2877     VLC_ADD_PLUGIN([png osdmenu osd_parser])],
2878     [],[-lz])
2879     LDFLAGS="${LDFLAGS_save}"
2880   ])
2881 fi
2882 AM_CONDITIONAL(BUILD_OSDMENU, [test "${enable_png}" != "no"])
2883
2884 dnl
2885 dnl H264 encoder plugin (using libx264)
2886 dnl
2887 AC_ARG_ENABLE(x264,
2888   [  --enable-x264           H264 encoding support with libx264 (default enabled)])
2889 if test "${enable_x264}" != "no"; then
2890   AC_ARG_WITH(x264-tree,
2891     [  --with-x264-tree=PATH   x264 tree for static linking ],[],[])
2892   if test "${with_x264_tree}" != "no" -a -n "${with_x264_tree}"
2893   then
2894     real_x264_tree="`cd ${with_x264_tree} 2>/dev/null && pwd`"
2895     if test -z "${real_x264_tree}"
2896     then
2897       dnl  The given directory can't be found
2898       AC_MSG_RESULT(no)
2899       AC_MSG_ERROR([${with_x264_tree} directory doesn't exist])
2900     fi
2901     dnl  Use a custom libx264
2902     AC_MSG_CHECKING(for x264.h in ${real_x264_tree})
2903     if test -f ${real_x264_tree}/x264.h
2904     then
2905       AC_MSG_RESULT(yes)
2906       VLC_ADD_CPPFLAGS([x264],[-I${real_x264_tree}])
2907       VLC_ADD_LIBS([x264],[-L${real_x264_tree}])
2908       PKG_CHECK_MODULES(X264,x264, [
2909         VLC_ADD_PLUGIN([x264])
2910         VLC_ADD_LIBS([x264],[${X264_LIBS}])
2911         VLC_ADD_CFLAGS([x264],[${X264_CFLAGS}])
2912         if echo ${X264_LIBS} |grep -q 'pthreadGC2'; then
2913           VLC_ADD_CFLAGS([x264], [-DPTW32_STATIC_LIB])
2914         fi
2915       ],[
2916         AC_MSG_ERROR([the specified tree hasn't been compiled])
2917       ])
2918       LDFLAGS="${LDFLAGS_save}"
2919     else
2920       AC_MSG_RESULT(no)
2921       AC_MSG_ERROR([the specified tree doesn't have x264.h])
2922     fi
2923   else
2924       PKG_CHECK_MODULES(X264,x264 >= 0.86, [
2925         VLC_ADD_PLUGIN([x264])
2926         VLC_ADD_LDFLAGS([x264],[${X264_LIBS}])
2927
2928         AS_IF([test "${ac_cv_ld_bsymbolic}" != "no"], [
2929           VLC_ADD_LIBS([x264],[-Wl,-Bsymbolic])
2930         ])
2931
2932         VLC_ADD_CFLAGS([x264],[${X264_CFLAGS}])
2933         if echo ${X264_LIBS} |grep -q 'pthreadGC2'; then
2934           VLC_ADD_CFLAGS([x264], [-DPTW32_STATIC_LIB])
2935         fi
2936       ],[
2937         if test "${enable_x264}" = "yes"; then
2938             AC_MSG_ERROR([Could not find libx264 >= 0.86 on your system: you may get it from http://www.videolan.org/x264.html])
2939           fi
2940       ])
2941     LDFLAGS="${LDFLAGS_save}"
2942   fi
2943 fi
2944
2945 dnl
2946 dnl libfluidsynth (MIDI synthetizer) plugin
2947 dnl
2948 PKG_ENABLE_MODULES_VLC([FLUIDSYNTH], [], [fluidsynth], [MIDI synthetiser with libfluidsynth], [auto])
2949
2950 dnl
2951 dnl Teletext Modules
2952 dnl vbi decoder plugin (using libzbvi)
2953 dnl telx module
2954 dnl uncompatible
2955 dnl
2956 AC_ARG_ENABLE(zvbi,
2957   AS_HELP_STRING([--enable-zvbi],[VBI (inc. Teletext) decoding support with
2958                   libzvbi (default enabled)]))
2959 AC_ARG_ENABLE(telx,
2960   AS_HELP_STRING([--enable-telx],[Teletext decoding module (conflicting with
2961                   zvbi) (default enabled if zvbi is absent)]))
2962
2963 AS_IF( [test "${enable_zvbi}" != "no"],[
2964     PKG_CHECK_MODULES(ZVBI,
2965         zvbi-0.2 >= 0.2.28,
2966         [
2967           VLC_ADD_LIBS([zvbi],[$ZVBI_LIBS])
2968           if test "${SYS}" = "mingw32"; then
2969               VLC_ADD_LIBS([zvbi],[ -lpthreadGC2])
2970           fi
2971           VLC_ADD_CFLAGS([zvbi],[$ZVBI_CFLAGS])
2972           VLC_ADD_PLUGIN([zvbi])
2973           AC_DEFINE(ZVBI_COMPILED, 1, [Define if the zvbi module is built])
2974           AS_IF( [test "${enable_telx}" = "yes"],[
2975                   AC_MSG_WARN([The zvbi and telx modules are uncompatibles.
2976                                Using zvbi.])
2977                   ])
2978         ],[
2979           AC_MSG_WARN(ZVBI library not found. Enabling the telx module instead)
2980         ])
2981     ])
2982 AS_IF( [test "${enable_telx}" != "no" ],[
2983   VLC_ADD_PLUGIN([telx])
2984   ])
2985
2986 dnl
2987 dnl libass subtitle rendering module
2988 dnl
2989 AC_ARG_ENABLE(libass,
2990   [  --enable-libass         Subtitle support using libass (default enabled)])
2991 AS_IF( [test "${enable_libass}" != "no"], [
2992   PKG_CHECK_MODULES(LIBASS, libass >= 0.9.8,
2993       [
2994         VLC_ADD_LIBS([libass],[$LIBASS_LIBS])
2995         VLC_ADD_CFLAGS([libass],[$LIBASS_CFLAGS])
2996         VLC_ADD_PLUGIN([libass])
2997
2998         AC_CHECK_HEADERS(fontconfig/fontconfig.h,
2999           [VLC_ADD_CPPFLAGS([libass],[-DHAVE_FONTCONFIG])
3000            VLC_ADD_LIBS([libass],[-lfontconfig])
3001        ])
3002       ],[
3003         AC_MSG_WARN([LIBASS library not found])
3004       ])
3005   ])
3006
3007 dnl
3008 dnl  kate decoder plugin
3009 dnl
3010 PKG_ENABLE_MODULES_VLC([KATE], [], [kate >= 0.3.0], [kate codec], [auto])
3011
3012 dnl
3013 dnl  tiger rendering for kate decoder plugin
3014 dnl
3015 AC_ARG_ENABLE(tiger,
3016 [  --enable-tiger          Tiger rendering library for Kate streams (default auto)])
3017 AS_IF([test "${enable_tiger}" != "no"], [
3018   PKG_CHECK_MODULES(TIGER,[tiger >= 0.3.1], [
3019       AC_DEFINE(HAVE_TIGER, 1, [Define if libtiger is available.])
3020       VLC_ADD_CFLAGS([kate],[$TIGER_CFLAGS])
3021       VLC_ADD_LIBS([kate],[$TIGER_LIBS]) ],[
3022         AS_IF([test "x${enable_tiger}" != "x"], [
3023           AC_MSG_ERROR([libtiger does not appear to be installed on your system.])
3024         ])
3025   ])
3026 ])
3027
3028
3029 dnl
3030 dnl  Video plugins
3031 dnl
3032
3033 EXTEND_HELP_STRING([Video plugins:])
3034
3035 dnl
3036 dnl  Xlib
3037 dnl
3038
3039 AC_PATH_XTRA()
3040 AC_CHECK_HEADERS(X11/Xlib.h)
3041
3042 dnl
3043 dnl  X C Bindings modules
3044 dnl
3045 AC_ARG_ENABLE(xcb,
3046   [  --enable-xcb            X11 support with XCB (default enabled)],, [
3047   AS_IF([test "${SYS}" != "mingw32" -a "${SYS}" != "mingwce" -a "${SYS}" != "darwin" -a "${SYS}" != "symbian"], [
3048     enable_xcb="yes"
3049   ], [
3050     enable_xcb="no"
3051   ])
3052 ])
3053 AC_ARG_ENABLE(xvideo,
3054   [  --enable-xvideo         XVideo support (default enabled)],, [
3055     enable_xvideo="$enable_xcb"
3056 ])
3057
3058 have_xcb="no"
3059 AS_IF([test "${enable_xcb}" != "no"], [
3060   dnl libxcb
3061   PKG_CHECK_MODULES(XCB, [xcb >= 1.6])
3062   have_xcb="yes"
3063   PKG_CHECK_MODULES(XCB_SHM, [xcb-shm])
3064   PKG_CHECK_MODULES(XCB_COMPOSITE, [xcb-composite])
3065
3066   AS_IF([test "${enable_xvideo}" != "no"], [
3067     PKG_CHECK_MODULES(XCB_XV, [xcb-xv >= 1.1.90.1], [
3068       VLC_ADD_PLUGIN([xcb_xv])
3069     ])
3070   ])
3071
3072   PKG_CHECK_MODULES(XCB_RANDR, [xcb-randr >= 1.3], [
3073     VLC_ADD_PLUGIN([panoramix])
3074     VLC_ADD_LIBS([panoramix],[${XCB_RANDR_LIBS} ${XCB_LIBS}])
3075     VLC_ADD_CFLAGS([panoramix],[${XCB_RANDR_CFLAGS} ${XCB_CFLAGS}])
3076   ], [
3077     AC_MSG_WARN([libxcb-randr not found. Panoramix filter will not be supported.])
3078   ])
3079
3080   dnl xcb-utils
3081   PKG_CHECK_MODULES(XCB_KEYSYMS, [xcb-keysyms >= 0.3.4], [
3082     PKG_CHECK_MODULES(XPROTO, [xproto])
3083     VLC_ADD_PLUGIN([globalhotkeys])
3084     VLC_ADD_CFLAGS([globalhotkeys], [${XCB_KEYSYMS_CFLAGS} ${XCB_CFLAGS}])
3085     VLC_ADD_LIBS([globalhotkeys], [${XCB_KEYSYMS_LIBS} ${XCB_LIBS}])
3086     VLC_ADD_CFLAGS([xcb_window], [-DHAVE_XCB_KEYSYMS])
3087   ], [
3088     AC_MSG_WARN([libxcb-keysyms (0.3.4 or later) not found. Hotkeys will not work.])
3089   ])
3090 ])
3091 AM_CONDITIONAL([HAVE_XCB], [test "${have_xcb}" = "yes"])
3092
3093 AC_ARG_ENABLE(glx,
3094   [  --enable-glx            X11 OpenGL (GLX) support (default enabled)],, [
3095   enable_glx="$enable_xcb"
3096 ])
3097 AS_IF([test "${enable_glx}" != "no"], [
3098   PKG_CHECK_MODULES(XLIB_XCB, [x11-xcb])
3099   PKG_CHECK_MODULES(GL, [gl],, [
3100     AC_CHECK_HEADER([GL/gl.h], [
3101       GL_CFLAGS=""
3102       GL_LIBS="-lGL"
3103     ], [
3104       AC_MSG_ERROR([GLX (libGL) cannot be found. If you do not need OpenGL with X11, use --disable-glx.])
3105     ])
3106   ])
3107   VLC_ADD_PLUGIN([xcb_glx])
3108 ])
3109
3110 dnl
3111 dnl  OpenGL
3112 dnl
3113 PKG_ENABLE_MODULES_VLC([GL], [], [gl], [OpenGL support], [auto])
3114 PKG_ENABLE_MODULES_VLC([GLES1], [], [glesv1_cm], [OpenGL ES v1 support], [auto])
3115 PKG_ENABLE_MODULES_VLC([GLES2], [], [glesv2], [OpenGL ES v2 support], [auto])
3116 PKG_ENABLE_MODULES_VLC([EGL], [], [egl], [EGL support], [auto])
3117
3118 dnl
3119 dnl  SDL module
3120 dnl
3121 AC_ARG_ENABLE(sdl,
3122   [  --enable-sdl            SDL support (default enabled)])
3123 AC_ARG_ENABLE(sdl-image,
3124   [  --enable-sdl-image      SDL image support (default enabled)])
3125 if test "${enable_sdl}" != "no"
3126 then
3127    PKG_CHECK_MODULES(SDL, [sdl >= 1.2.10], [
3128       # SDL on Darwin is heavily patched and can only run SDL_image
3129       if test "${SYS}" != "darwin"; then
3130         VLC_ADD_PLUGIN([vout_sdl])
3131       fi
3132       if test "${SYS}" != "mingw32"; then
3133         VLC_ADD_LIBS([vout_sdl],[${X_LIBS} ${X_PRE_LIBS} -lX11])
3134       fi
3135       VLC_ADD_CFLAGS([vout_sdl],[${SDL_CFLAGS}])
3136       VLC_ADD_LIBS([vout_sdl],[${SDL_LIBS}])
3137
3138       # SDL_image
3139       AS_IF([ test "${enable_sdl_image}" != "no"],[
3140         PKG_CHECK_MODULES(SDL_IMAGE, [SDL_image >= 1.2.10], [
3141           VLC_ADD_PLUGIN([sdl_image])
3142           VLC_ADD_LIBS([sdl_image],[${SDL_IMAGE_LIBS}])
3143           VLC_ADD_CFLAGS([sdl_image], [${SDL_IMAGE_CFLAGS}])],
3144           [ AC_MSG_WARN([The development package for SDL_image is not installed.
3145     You should install it alongside your SDL package.])
3146           ])
3147       ])
3148    ],[
3149      AC_MSG_WARN([The development package for SDL is not present or too old.
3150                   You need 1.2.10. Alternatively you can also configure with
3151                   --disable-sdl.])
3152    ])
3153 fi
3154
3155
3156 dnl
3157 dnl Mac Vout
3158 AC_ARG_ENABLE(macosx-vout,
3159   [  --enable-macosx-vout    Mac OS X video output module (default enabled on Mac OS X)])
3160 if test "x${enable_macosx_vout}" != "xno" &&
3161   (test "${SYS}" = "darwin" || test "${enable_macosx_vout}" = "yes")
3162 then
3163   VLC_ADD_LIBS([vout_macosx],[-Wl,-framework,Cocoa])
3164   VLC_ADD_LIBS([vout_macosx],[-Wl,-framework,OpenGL])
3165   VLC_ADD_PLUGIN([vout_macosx])
3166 fi
3167
3168
3169 dnl
3170 dnl  freetype module
3171 dnl
3172 AC_ARG_ENABLE(freetype,
3173   [  --enable-freetype       freetype support   (default auto)])
3174 AC_ARG_ENABLE(fribidi,
3175   [  --enable-fribidi        fribidi support    (default auto)])
3176 AC_ARG_ENABLE(fontconfig,
3177   [  --enable-fontconfig     fontconfig support (default auto)])
3178
3179 if test "${enable_freetype}" != "no"; then
3180    PKG_CHECK_MODULES(FREETYPE, freetype2, [
3181       have_freetype=yes
3182       VLC_ADD_PLUGIN([freetype])
3183       VLC_ADD_CPPFLAGS([freetype skins2],[${FREETYPE_CFLAGS}])
3184       if test "${SYS}" = "mingw32"; then
3185         VLC_ADD_LIBS([freetype],[-liconv -lz])
3186       fi
3187       VLC_ADD_LIBS([freetype skins2],[${FREETYPE_LIBS}])
3188
3189       AC_CHECK_HEADERS(Carbon/Carbon.h,
3190                        [VLC_ADD_LIBS([freetype],[-Wl,-framework,Carbon])])
3191
3192       dnl fontconfig support
3193       if test "${SYS}" != "mingw32"; then
3194           if test "${enable_fontconfig}" != "no"; then
3195             AC_CHECK_HEADERS(fontconfig/fontconfig.h, [
3196               VLC_ADD_CPPFLAGS([freetype],[-DHAVE_FONTCONFIG])
3197               VLC_ADD_LIBS([freetype],[-lfontconfig])
3198             ],[AC_MSG_WARN([library fontconfig not found. Styles will be disabled in freetype])])
3199           fi
3200       else
3201           VLC_ADD_LIBS([freetype],[-lgdi32])
3202       fi
3203
3204       dnl fribidi support
3205       if test "${enable_fribidi}" != "no"; then
3206         PKG_CHECK_MODULES(FRIBIDI, fribidi, [
3207           VLC_ADD_CPPFLAGS([freetype skins2], [${FRIBIDI_CFLAGS} -DHAVE_FRIBIDI])
3208           VLC_ADD_LIBS([freetype skins2], [${FRIBIDI_LIBS}])
3209         ],[AC_MSG_WARN([library fribidi not found. Bidirectional support will be disabled in freetype])])
3210       fi
3211
3212   ],[
3213   have_freetype=no
3214   AS_IF([ test "${enable_freetype}" = "yes"],[
3215     AC_MSG_ERROR([Freetype2 package cannot be detected. Install Freetype2 development or configure with --disable-freetype.])
3216     ])
3217   ])
3218 fi
3219
3220
3221 dnl
3222 dnl  QuartzText vout module (iOS/Mac OS)
3223 dnl
3224 AC_ARG_ENABLE(macosx-quartztext,
3225   [  --enable-macosx-quartztext   Mac OS X quartz text module (default enabled on Mac OS X)])
3226 if test "x${enable_macosx_quartztext}" != "xno" &&
3227   (test "${SYS}" = "darwin" || test "${enable_macosx_quartztext}" = "yes")
3228 then
3229   VLC_ADD_PLUGIN([quartztext])
3230   VLC_ADD_LIBS([quartztext],[-Wl,-framework,ApplicationServices])
3231 fi
3232
3233 dnl
3234 dnl  SVG module
3235 dnl
3236 PKG_ENABLE_MODULES_VLC([SVG], [], [librsvg-2.0 >= 2.9.0], [SVG rendering library],[auto])
3237
3238 dnl
3239 dnl  android surface module
3240 dnl
3241 AC_ARG_ENABLE(android-surface,
3242   [  --enable-android-surface   Android Surface video output module (default disabled)])
3243 if test "${enable_android_surface}" = "yes"; then
3244   if test "${HAVE_ANDROID}" = "1"; then
3245      VLC_ADD_PLUGIN([android_surface])
3246      VLC_ADD_LDFLAGS([android_surface], [-ldl])
3247   fi
3248 fi
3249
3250
3251 dnl
3252 dnl  iOS vout module
3253 dnl
3254 AC_ARG_ENABLE(ios-vout,
3255   [  --enable-ios-vout    iOS video output module (default disabled)])
3256 if test "${enable_ios_vout}" = "yes"
3257 then
3258   VLC_ADD_PLUGIN([vout_ios])
3259   VLC_ADD_CFLAGS([vout_ios], [-DUSE_OPENGL_ES=1])
3260   VLC_ADD_LIBS([vout_ios], [-Wl,-framework,OpenGLES,-framework,QuartzCore,-framework,UIKit,-framework,Foundation])
3261 fi
3262
3263 dnl
3264 dnl  Windows DirectX module
3265 dnl
3266
3267 if test "${SYS}" = "mingw32" -o "${SYS}" = "mingwce"
3268 then
3269   VLC_ADD_PLUGIN([panoramix])
3270 fi
3271
3272 AC_ARG_ENABLE(directx,
3273   [  --enable-directx        Win32 DirectX support (default enabled on Win32)])
3274 if test "${enable_directx}" != "no"; then
3275   if test "${SYS}" = "mingw32" -o "${SYS}" = "mingwce"; then
3276       dnl DDraw
3277       AC_CHECK_HEADERS(ddraw.h,
3278       [ VLC_ADD_PLUGIN([directx aout_directx])
3279         VLC_ADD_LIBS([directx],[-luser32 -lgdi32])
3280       ],[AC_MSG_ERROR([Cannot find DirectX headers!])]
3281       )
3282
3283       dnl OpenGL
3284       AC_CHECK_HEADERS(GL/glext.h,
3285       [ VLC_ADD_PLUGIN([glwin32])
3286         VLC_ADD_LIBS([glwin32],[-lopengl32 -lgdi32])
3287       ],[],[
3288         #include <GL/gl.h>
3289       ])
3290
3291       dnl Direct3D
3292       AC_CHECK_HEADERS(d3d9.h,
3293       [ VLC_ADD_PLUGIN([direct3d])
3294         VLC_ADD_LIBS([direct3d],[-lgdi32])
3295       ])
3296       VLC_ADD_LIBS([direct3d directx glwin32],[-lole32])
3297   fi
3298 fi
3299
3300 dnl
3301 dnl  Windows Direct2D plugin
3302 dnl
3303 AC_ARG_ENABLE(direct2d,
3304   [  --enable-direct2d       Win7/VistaPU Direct2D support (default auto on Win32)],, [
3305   AS_IF([test "${SYS}" != "mingw32" -a "${SYS}" != "mingwce"], [
3306     enable_direct2d="no"
3307   ])
3308 ])
3309 AS_IF([test "${enable_direct2d}" != "no"], [
3310   AC_CHECK_HEADERS(d2d1.h, [
3311     VLC_ADD_PLUGIN([direct2d])
3312     VLC_ADD_LIBS([direct2d],[-lgdi32 -lole32])
3313   ], [
3314     AC_MSG_WARN([Cannot find Direct2D headers!])
3315   ])
3316 ])
3317
3318 dnl
3319 dnl  win32 GDI plugin
3320 dnl
3321 AC_ARG_ENABLE(wingdi,
3322   [  --enable-wingdi         Win32 GDI module (default enabled on Win32)])
3323 if test "${enable_wingdi}" != "no"; then
3324   if test "${SYS}" = "mingw32"; then
3325     VLC_ADD_PLUGIN([wingdi])
3326     VLC_ADD_LIBS([wingdi],[-lgdi32 -lole32])
3327   fi
3328   if test "${SYS}" = "mingwce"; then
3329     VLC_ADD_PLUGIN([wingdi wingapi])
3330     VLC_ADD_LIBS([wingdi],[-laygshell])
3331     VLC_ADD_LIBS([wingapi],[-laygshell])
3332   fi
3333 fi
3334
3335
3336 dnl
3337 dnl  Linux framebuffer module
3338 dnl
3339 AC_CHECK_HEADER([linux/fb.h], [
3340   VLC_ADD_PLUGIN([fb])
3341 ])
3342
3343
3344 dnl
3345 dnl  DirectFB module
3346 dnl  try to find using: 1 - given location; 2 - directfb-config; 3 - pkg-config
3347 dnl  TODO: support for static linking
3348 dnl
3349 AC_ARG_ENABLE(directfb,
3350   [  --enable-directfb       DirectFB support (default disabled)])
3351 AC_ARG_WITH(directfb,
3352   [  --with-directfb=PATH    path to DirectFB headers and libraries])
3353
3354 if test "${enable_directfb}" = "yes"; then
3355     have_directfb="false"
3356     CPPFLAGS_mydirectfb=
3357     LIBS_mydirectfb=
3358     if test "${with_directfb}" != "no" -a -n "${with_directfb}"; then
3359         dnl Trying the given location
3360         CPPFLAGS_save="${CPPFLAGS}"
3361         LIBS_save="${LIBS}"
3362
3363         CPPFLAGS_new="-I${with_directfb}/include -D_REENTRANT -D_GNU_SOURCE"
3364         LIBS_new="-L${with_directfb}/lib/fusion/.libs/ -L${with_directfb}/lib/direct/.libs/"
3365         LIBS_new="${LIBS_new} -L${with_directfb}/src/.libs/"
3366
3367         CPPFLAGS="${CPPFLAGS} ${CPPFLAGS_new}"
3368         LIBS="${LIBS} ${LIBS_new}"
3369
3370         dnl FIXME: too obscure
3371         AC_CHECK_HEADER([directfb.h], [
3372             AC_CHECK_LIB([direct],[direct_initialize], [
3373                 AC_CHECK_LIB([fusion], [fusion_enter], [
3374                     AC_CHECK_LIB([directfb], [DirectFBInit], have_directfb="true", have_directfb="false")
3375                 ], have_directfb="false")
3376             ], have_directfb="false")
3377         ], have_directfb="false")
3378
3379         dnl Restore flags
3380         CPPFLAGS="${CPPFLAGS_save}"
3381         LIBS="${LIBS_save}"
3382
3383         if test "${have_directfb}" = "true"; then
3384             LIBS_mydirectfb="${LIBS_new} -lz $LIBDL -ldirectfb -lfusion -ldirect -lpthread"
3385             CPPFLAGS_mydirectfb="${CPPFLAGS_new}"
3386         fi
3387     else
3388         dnl Look for directfb-config
3389         AC_PATH_PROG(DIRECTFB_CONFIG, directfb-config, no, ${PATH})
3390         if test "${DIRECTFB_CONFIG}" != "no"; then
3391             CPPFLAGS_mydirectfb="`${DIRECTFB_CONFIG} --cflags`"
3392             LIBS_mydirectfb="`${DIRECTFB_CONFIG} --libs`"
3393             have_directfb="true"
3394         else
3395             dnl Trying with pkg-config
3396             PKG_CHECK_MODULES(DIRECTFB, directfb, [
3397                 CPPFLAGS_mydirectfb="${DIRECTFB_CFLAGS}"
3398                 LIBS_mydirectfb="${DIRECTFB_LIBS}"
3399                 have_directfb="true"
3400                 ], [have_directfb="false"])
3401         fi
3402     fi
3403     if test "${have_directfb}" = "true"; then
3404         VLC_ADD_PLUGIN([directfb])
3405         VLC_ADD_CPPFLAGS([directfb],[${CPPFLAGS_mydirectfb}])
3406         VLC_ADD_LIBS([directfb],[${LIBS_mydirectfb}])
3407     else
3408         AC_MSG_ERROR([cannot find directfb headers and/or libraries ])
3409     fi
3410 fi
3411
3412 dnl
3413 dnl  AA plugin
3414 dnl
3415 AC_ARG_ENABLE(aa,
3416   [  --enable-aa             aalib output (default disabled)])
3417 if test "${enable_aa}" = "yes"
3418 then
3419   AC_CHECK_HEADER(aalib.h,have_aa="true",have_aa="false")
3420   if test "${have_aa}" = "true"
3421   then
3422     VLC_ADD_PLUGIN([aa])
3423     VLC_ADD_LIBS([aa],[-laa])
3424     if test "${SYS}" != "mingw32"; then
3425       VLC_ADD_LIBS([aa],[${X_LIBS} ${X_PRE_LIBS} -lX11])
3426     fi
3427   fi
3428 fi
3429
3430 dnl
3431 dnl  libcaca plugin
3432 dnl
3433 PKG_ENABLE_MODULES_VLC([CACA], [], [caca >= 0.99.beta14], [libcaca output],[auto])
3434
3435 dnl
3436 dnl  Audio plugins
3437 dnl
3438
3439 EXTEND_HELP_STRING([Audio plugins:])
3440
3441 dnl
3442 dnl  Pulseaudio module
3443 dnl
3444 AC_ARG_ENABLE(pulse,
3445   [AS_HELP_STRING([--enable-pulse],
3446     [use the PulseAudio client library (default auto)])])
3447 have_pulse="no"
3448 AS_IF([test "${enable_pulse}" != "no"], [
3449   PKG_CHECK_MODULES([PULSE], [libpulse >= 0.9.22], [
3450     have_pulse="yes"
3451   ], [
3452     PKG_CHECK_MODULES([PULSE], [libpulse >= 0.9.16], [
3453       AS_IF([test "${no_x}" != "yes"], [
3454         have_pulse="yes"
3455         PULSE_LIBS="$PULSE_LIBS ${X_LIBS} ${X_PRE_LIBS} -lX11"
3456       ], [
3457         AS_IF([test "${enable_pulse}" = "yes"], [
3458           AC_MSG_ERROR([Xlib is required with PulseAudio pre-0.9.22 versions
3459 (see http://www.pulseaudio.org/ticket/799 for further reference).])
3460         ])
3461       ])
3462     ], [
3463       AS_IF([test "x${enable_pulse}" != "x"], [
3464         AC_MSG_ERROR([$PULSE_PKG_ERRORS. PulseAudio 0.9.22 or later required.])
3465       ])
3466     ])
3467   ])
3468 ])
3469 AM_CONDITIONAL([HAVE_PULSE], [test "${have_pulse}" = "yes"])
3470
3471 dnl
3472 dnl  ALSA module
3473 dnl
3474 AC_ARG_ENABLE(alsa,
3475   [AS_HELP_STRING([--enable-alsa],
3476     [support the Advanced Linux Sound Architecture (default auto)])],, [
3477   AS_IF([test "$SYS" = "linux" -a "${have_pulse}" = "no"], [
3478     enable_alsa="yes"
3479   ])
3480 ])
3481 have_alsa="no"
3482 AS_IF([test "${enable_alsa}" != "no"], [
3483   PKG_CHECK_MODULES([ALSA], [alsa >= 1.0.16], [
3484     have_alsa="yes"
3485   ], [
3486     AS_IF([test "x${enable_alsa}" != "x"], [
3487       AC_MSG_ERROR([$ALSA_PKG_ERRORS. alsa-lib 1.0.16 or later required.])
3488     ])
3489   ])
3490 ])
3491 AM_CONDITIONAL([HAVE_ALSA], [test "${have_alsa}" = "yes"])
3492
3493 dnl
3494 dnl  Open Sound System module
3495 dnl
3496 AC_ARG_ENABLE(oss,
3497   [AS_HELP_STRING([--enable-oss],
3498     [support the Open Sound System OSS (default enabled on BSD)])],, [
3499   AS_IF([test "$SYS" = "mingw32" -o "$SYS" = "mingwce" -o "$SYS" = "linux"], [
3500     enable_oss="no"
3501   ])
3502 ])
3503 have_oss="no"
3504 OSS_LIBS=""
3505 AS_IF([test "$enable_oss" != "no"], [
3506   AC_CHECK_HEADERS([soundcard.h sys/soundcard.h], [
3507     have_oss="yes"
3508     AC_CHECK_LIB(ossaudio, main, [
3509       OSS_LIBS="-lossaudio"
3510     ])
3511   ])
3512 ])
3513 AC_SUBST(OSS_LIBS)
3514 AM_CONDITIONAL([HAVE_OSS], [test "${have_oss}" = "yes"])
3515
3516 dnl
3517 dnl  Portaudio module
3518 dnl
3519 PKG_ENABLE_MODULES_VLC([PORTAUDIO], [], [portaudio-2.0], [Portaudio library support], [auto])
3520
3521 dnl
3522 dnl  win32 waveOut plugin
3523 dnl
3524 AC_ARG_ENABLE(waveout,
3525   [  --enable-waveout        Win32 waveOut module (default enabled on Win32)])
3526 if test "${enable_waveout}" != "no"; then
3527   if test "${SYS}" = "mingw32"; then
3528     VLC_ADD_PLUGIN([waveout])
3529     VLC_ADD_LIBS([waveout],[-lwinmm])
3530   fi
3531   if test "${SYS}" = "mingwce"; then
3532     VLC_ADD_PLUGIN([waveout])
3533   fi
3534 fi
3535
3536 dnl
3537 dnl  CoreAudio plugin
3538 dnl
3539 AC_ARG_ENABLE(macosx-audio,
3540   [  --enable-macosx-audio   Mac OS X audio module (default enabled on MacOS X)])
3541 if test "x${enable_macosx_audio}" != "xno" &&
3542   (test "${SYS}" = "darwin" || test "${enable_macosx_audio}" = "yes")
3543 then
3544   AC_CHECK_HEADERS(CoreAudio/CoreAudio.h,
3545     [ VLC_ADD_PLUGIN([auhal])
3546       VLC_ADD_LIBS([auhal],[-Wl,-framework,CoreAudio,-framework,AudioUnit,-framework,AudioToolbox,-framework,Carbon])
3547     ], [ AC_MSG_ERROR([cannot find CoreAudio headers]) ])
3548 fi
3549
3550 dnl
3551 dnl  AudioQueue plugin
3552 dnl
3553 AC_ARG_ENABLE(audioqueue,
3554   [  --enable-audioqueue     AudioQueue audio module (default disabled)])
3555 if test "${enable_audioqueue}" = "yes"
3556 then
3557   VLC_ADD_PLUGIN([audioqueue])
3558   VLC_ADD_LIBS([audioqueue], [-Wl,-framework,AudioToolbox,-framework,CoreFoundation])
3559 fi
3560
3561 dnl
3562 dnl  JACK modules
3563 dnl
3564 PKG_ENABLE_MODULES_VLC([JACK], [jack access_jack], [jack], [JACK audio I/O modules],[auto])
3565
3566 dnl
3567 dnl  OpenSLES Android
3568 dnl
3569 AC_ARG_ENABLE(opensles,
3570   [  --enable-opensles       Android OpenSL ES audio module (default disabled)])
3571 if test "${HAVE_ANDROID}" = "1"; then
3572   if test "${enable_opensles}" = "yes"; then
3573       AC_CHECK_HEADERS(SLES/OpenSLES.h,
3574         [ VLC_ADD_PLUGIN([opensles_android]) ],
3575         [ AC_MSG_ERROR([cannot find OpenSLES headers])] )
3576   fi
3577 fi
3578
3579 dnl
3580 dnl libsamplerate plugin
3581 dnl
3582 PKG_ENABLE_MODULES_VLC([SAMPLERATE], [], [samplerate], [Resampler with libsamplerate], [auto])
3583
3584 dnl
3585 dnl  Interface plugins
3586 dnl
3587
3588 EXTEND_HELP_STRING([Interface plugins:])
3589
3590 dnl
3591 dnl Skins2 module
3592 dnl
3593 AC_ARG_ENABLE(skins2,
3594   [AS_HELP_STRING([--enable-skins2], [skins interface module (default auto)])])
3595 AS_IF([test "${enable_skins2}" != "no"], [
3596   have_skins_deps="yes"
3597   AS_IF([test "${SYS}" = "mingw32"], [
3598     VLC_ADD_CPPFLAGS([skins2],[-U_OFF_T_ -U_off_t -Imodules/gui/skins2 -DWIN32_SKINS])
3599     VLC_ADD_CXXFLAGS([skins2],[-O2 -fno-rtti])
3600     VLC_ADD_LIBS([skins2],[-loleaut32 -lwinspool -lwinmm -lshell32 -ladvapi32 -lwsock32 -lgdi32 -lcomdlg32 -lole32 -luuid -lcomctl32  -lmsimg32 -luser32])
3601
3602   ], [test "${SYS}" = "darwin"], [
3603     VLC_ADD_CPPFLAGS([skins2],[-Imodules/gui/skins2 -DMACOSX_SKINS])
3604     VLC_ADD_CXXFLAGS([skins2],[-O2 -fno-rtti])
3605     VLC_ADD_LIBS([skins2],[-Wl,-framework,Carbon])
3606
3607   ], [
3608     PKG_CHECK_MODULES([XPM], [xpm],, [have_skins_deps="no"])
3609     PKG_CHECK_MODULES([XINERAMA], [xinerama],, [have_skins_deps="no"])
3610     PKG_CHECK_MODULES([XEXT], [xext],, [have_skins_deps="no"])
3611     VLC_ADD_CPPFLAGS([skins2],[-Imodules/gui/skins2 ${X_CFLAGS} ${XEXT_CFLAGS} ${XPM_CFLAGS} -DX11_SKINS])
3612     VLC_ADD_CXXFLAGS([skins2],[-O2 -fno-rtti])
3613     VLC_ADD_LIBS([skins2],[${X_LIBS} ${X_PRE_LIBS} ${XEXT_LIBS} ${XPM_LIBS} ${XINERAMA_LIBS} -lX11])
3614
3615   ])
3616   AS_IF([test "${have_freetype}" != "yes"], [
3617     have_skins_deps="no"
3618   ])
3619
3620   AS_IF([test "${have_skins_deps}" = "no"], [
3621     AS_IF([test "x${enable_skins2}" = "x"], [
3622       AC_MSG_WARN([Skins2 interface disabled due to missing dependencies.])
3623     ], [
3624       AC_MSG_ERROR([Skins2 interface requires FreeType, libxpm, libxext and libxinerama])
3625     ])
3626     enable_skins2="no"
3627   ], [
3628     VLC_ADD_PLUGIN([skins2])
3629     ALIASES="${ALIASES} svlc"
3630   ])
3631 ])
3632 AM_CONDITIONAL(BUILD_SKINS, [test "${enable_skins2}" = "yes"])
3633
3634 AC_ARG_ENABLE(libtar,
3635   [  --enable-libtar         libtar support for skins2 (default auto)])
3636 AS_IF([test "${enable_skins2}" = "yes" && test "${enable_libtar}" != "no"], [
3637   AC_CHECK_HEADERS(libtar.h, [
3638     VLC_ADD_LIBS([skins2],[-ltar])
3639   ])
3640 ])
3641
3642 dnl
3643 dnl Hildon UI
3644 dnl
3645 AC_ARG_ENABLE(hildon,
3646   [  --enable-hildon         Hildon touchscreen UI (default disabled)])
3647 AS_IF([test "${enable_hildon}" = "yes"], [
3648   PKG_CHECK_MODULES(HILDON, [hildon-1], [
3649     PKG_CHECK_MODULES(HILDON_FM, hildon-fm-2, [
3650       VLC_ADD_CFLAGS([hildon],[${HILDON_FM_CFLAGS} -DHAVE_HILDON_FM])
3651       VLC_ADD_LIBS([hildon],[${HILDON_FM_LIBS}])
3652     ], [
3653       AC_MSG_WARN(hildon-fm-2 not found)
3654     ])
3655     VLC_ADD_CFLAGS([hildon],[${HILDON_CFLAGS} ${X_CFLAGS}])
3656     VLC_ADD_LIBS([hildon],[${HILDON_LIBS} ${X_LIBS} ${X_PRE_LIBS} -lX11])
3657     VLC_ADD_PLUGIN([hildon])
3658     ALIASES="${ALIASES} mvlc"
3659   ], [
3660     AS_IF([test "${enable_hildon}" = "yes"],[
3661       AC_MSG_ERROR([Hildon libraries not found])
3662     ])
3663     enable_hildon="no"
3664   ])
3665 ])
3666 AM_CONDITIONAL(BUILD_HILDON, [test "${enable_hildon}" = "yes"])
3667
3668 dnl
3669 dnl QT 4
3670 dnl
3671 AC_ARG_ENABLE(qt4,
3672   [  --enable-qt4            Qt 4 support (default enabled) ],, [
3673   AS_IF([test "${SYS}" = "darwin"], [enable_qt4=no])
3674 ])
3675 AS_IF([test "${enable_qt4}" != "no"], [
3676   PKG_CHECK_MODULES(QT4, [QtCore QtGui >= 4.6.0], [
3677     VLC_ADD_PLUGIN([qt4])
3678     VLC_ADD_LIBS([qt4],[${QT4_LIBS}])
3679     VLC_ADD_CXXFLAGS([qt4],[${QT4_CFLAGS}])
3680     ALIASES="${ALIASES} qvlc"
3681
3682     AC_LANG_PUSH([C++])
3683     CPPFLAGS_save="${CPPFLAGS}"
3684
3685     AC_MSG_CHECKING([whether Qt uses X11])
3686     CPPFLAGS="${CPPFLAGS} ${QT4_CFLAGS}"
3687     AC_PREPROC_IFELSE([AC_LANG_SOURCE([
3688 #include <QWidget>
3689 #if !defined (Q_WS_X11)
3690 # error Fail
3691 #endif
3692     ])], [
3693       AC_MSG_RESULT([yes])
3694       VLC_ADD_LIBS([qt4],[${X_LIBS} ${X_PRE_LIBS} -lX11])
3695       VLC_ADD_CXXFLAGS([qt4],[${X_CFLAGS}])
3696     ], [
3697       AC_MSG_RESULT([no])
3698     ])
3699
3700     CPPFLAGS="${CPPFLAGS_save}"
3701     AC_LANG_POP([C++])
3702
3703     AS_IF([test "${SYS}" = "mingw32" -o "${SYS}" = "mingwce"], [
3704         VLC_ADD_LIBS([qt4],[-lole32])
3705     ])
3706     AS_IF([test "${SYS}" = "darwin" ],[
3707          VLC_ADD_LIBS([qt4], [-Wl,-framework,Cocoa])
3708     ])
3709     AC_PATH_PROGS(MOC, [moc-qt4 moc], moc,`eval $PKG_CONFIG --variable=exec_prefix QtCore`/bin)
3710     AC_PATH_PROG(RCC, rcc, rcc,`eval $PKG_CONFIG --variable=exec_prefix QtCore`/bin)
3711     AC_PATH_PROGS(UIC, [uic-qt4 uic], uic,`eval $PKG_CONFIG --variable=exec_prefix QtCore`/bin)
3712   ], [
3713     AS_IF([test "${enable_qt4}" = "yes"],[
3714       AC_MSG_ERROR([Qt 4 library not found])
3715     ],[
3716       AC_MSG_WARN([Qt 4 library not found])
3717     ])
3718     enable_qt4="no"
3719   ])
3720 ])
3721 AM_CONDITIONAL(ENABLE_QT4, [test "x$enable_qt4" != "xno"])
3722
3723 dnl
3724 dnl Simple test for skins2 dependency
3725 dnl
3726 AS_IF([test "${enable_skins2}" != "no" && test "x$enable_qt4" = "xno"], [
3727   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.])
3728 ])
3729
3730 dnl
3731 dnl  MacOS X gui module
3732 dnl
3733 AC_ARG_ENABLE(macosx,
3734   [  --enable-macosx         Mac OS X gui support (default enabled on Mac OS X)])
3735 if test "x${enable_macosx}" != "xno" &&
3736 (test "${SYS}" = "darwin" || test "${enable_macosx}" = "yes")
3737 then
3738   VLC_ADD_LIBS([macosx minimal_macosx],[-Wl,-framework,Cocoa])
3739   VLC_ADD_LIBS([macosx minimal_macosx],[-Wl,-framework,OpenGL])
3740   VLC_ADD_LIBS([macosx minimal_macosx],            [-Wl,-framework,Carbon])
3741   VLC_ADD_LIBS([macosx minimal_macosx],            [-Wl,-framework,CoreServices])
3742   VLC_ADD_LIBS([macosx minimal_macosx],            [-Wl,-framework,AGL])
3743   VLC_ADD_LIBS([macosx],                           [-Wl,-framework,QTKit])
3744   VLC_ADD_LIBS([macosx],                           [-Wl,-framework,IOKit])
3745   VLC_ADD_LIBS([macosx],                           [-F${CONTRIB_DIR}/Sparkle -Wl,-framework,Sparkle])
3746   VLC_ADD_OBJCFLAGS([macosx],                         [-F${CONTRIB_DIR}/Sparkle])
3747   VLC_ADD_LIBS([macosx],                           [-F${CONTRIB_DIR}/BGHUDAppKit -Wl,-framework,BGHUDAppKit])
3748   VLC_ADD_OBJCFLAGS([macosx],                         [-F${CONTRIB_DIR}/BGHUDAppKit])
3749   dnl For bug report
3750   VLC_ADD_LIBS([macosx],                           [-Wl,-framework,AddressBook])
3751   VLC_ADD_LIBS([macosx],                           [-Wl,-framework,WebKit])
3752   VLC_ADD_OBJCFLAGS([macosx minimal_macosx], [-fobjc-exceptions] )
3753
3754   VLC_ADD_PLUGIN([macosx minimal_macosx])
3755 fi
3756
3757 dnl
3758 dnl  MacOS X dialor provider
3759 dnl
3760 AC_ARG_ENABLE(macosx-dialog-provider,
3761   [  --enable-macosx-dialog-provider Mac OS X dialog module (default enabled on Mac OS X)])
3762 if test "x${enable_macosx_dialog_provider}" != "xno" &&
3763   (test "${SYS}" = "darwin" || test "${enable_macosx_dialog_provider}" = "yes")
3764 then
3765   VLC_ADD_LIBS([macosx_dialog_provider],[-Wl,-framework,Cocoa])
3766   VLC_ADD_PLUGIN([macosx_dialog_provider])
3767 fi
3768
3769 dnl
3770 dnl  ncurses module
3771 dnl
3772 AC_ARG_ENABLE(ncurses,
3773   [  --disable-ncurses       ncurses interface support (default disabled)],
3774   [if test "${enable_ncurses}" != "no"; then
3775     AC_CHECK_HEADER(ncurses.h,
3776       [AC_CHECK_LIB(ncursesw, mvprintw,
3777         [VLC_ADD_PLUGIN([ncurses])
3778         VLC_ADD_LIBS([ncurses],[-lncursesw])
3779         ALIASES="${ALIASES} nvlc"
3780         AC_CHECK_LIB(ncursesw, tgetent, [],
3781           AC_CHECK_LIB(tinfow, tgetent, [VLC_ADD_LIBS([ncurses],[-ltinfow])],
3782             [AC_CHECK_LIB(tinfo, tgetent, [VLC_ADD_LIBS([ncurses],[-ltinfo])],
3783               [AS_IF([test "${enable_ncurses}" = "yes"],
3784                 [AC_MSG_ERROR([tgetent not found in ncursesw tinfow tinfo]
3785                )])])
3786             ]
3787           )
3788         )
3789         ],
3790           [AS_IF([test "${enable_ncurses}" = "yes"], [
3791             AC_MSG_ERROR([libncursesw not found])])]
3792         )],
3793         [AS_IF([test "${enable_ncurses}" = "yes"], [
3794           AC_MSG_ERROR([ncurses.h not found])])]
3795         )
3796   fi]
3797 )
3798
3799 dnl
3800 dnl  XOSD plugin
3801 dnl
3802 AC_ARG_ENABLE(xosd,
3803   [  --enable-xosd           xosd interface support (default disabled)])
3804 if test "${enable_xosd}" = "yes"
3805 then
3806   AC_CHECK_HEADERS(xosd.h,
3807     AC_CHECK_LIB(xosd, xosd_set_horizontal_offset, [
3808       VLC_ADD_PLUGIN([xosd])
3809       VLC_ADD_LIBS([xosd],[-lxosd])
3810     ])
3811   )
3812 fi
3813
3814 dnl
3815 dnl Framebuffer (overlay) plugin
3816 dnl
3817 AC_ARG_ENABLE(fbosd,
3818   [  --enable-fbosd          fbosd interface support (default disabled)])
3819 if test "${enable_fbosd}" = "yes"
3820 then
3821   AC_CHECK_HEADERS(linux/fb.h, [
3822     VLC_ADD_PLUGIN([fbosd])
3823  ])
3824 fi
3825
3826 dnl
3827 dnl  Lirc plugin
3828 dnl
3829 AC_ARG_ENABLE(lirc,
3830   [  --enable-lirc           lirc support (default disabled)])
3831 if test "${enable_lirc}" = "yes"
3832 then
3833   AC_CHECK_HEADER(lirc/lirc_client.h, AC_CHECK_LIB(lirc_client, lirc_init, have_lirc="true", have_lirc="false"),have_lirc="false")
3834   if test "${have_lirc}" = "true"
3835   then
3836     VLC_ADD_PLUGIN([lirc])
3837     VLC_ADD_LIBS([lirc],[-llirc_client])
3838   fi
3839 fi
3840
3841 EXTEND_HELP_STRING([Visualisations and Video filter plugins:])
3842 dnl
3843 dnl Visualisation plugin
3844 dnl
3845 AC_ARG_ENABLE(visual,
3846   [  --enable-visual         visualisation plugin (default enabled)])
3847 if test "${enable_visual}" != "no"
3848 then
3849     VLC_ADD_PLUGIN([visual])
3850 fi
3851
3852 dnl
3853 dnl  goom visualization plugin
3854 dnl
3855 PKG_ENABLE_MODULES_VLC([GOOM], [], [libgoom2], [goom visualization plugin], [auto])
3856
3857 dnl
3858 dnl libprojectM visualization plugin
3859 dnl
3860 AC_ARG_ENABLE(projectm,
3861   [  --enable-projectm       projectM visualization plugin (default enabled)])
3862 AS_IF([test "${enable_projectm}" != "no"],
3863   [
3864     PKG_CHECK_MODULES(PROJECTM, libprojectM,
3865     [
3866       VLC_ADD_PLUGIN([projectm])
3867       VLC_ADD_CXXFLAGS([projectm],[$PROJECTM_CFLAGS])
3868       VLC_ADD_LIBS([projectm],[$PROJECTM_LIBS])
3869       PKG_CHECK_MODULES(PROJECTM2, [libprojectM >= 2.0.0],
3870         [ AC_DEFINE([HAVE_PROJECTM2], 1, [Define to 1 if using libprojectM 2.x]) ],
3871         [ AC_MSG_WARN( [Using libprojectM version 1] )
3872       ])
3873     ],[
3874       AC_MSG_WARN([libprojectM library not found])
3875     ])
3876   ])
3877
3878 dnl
3879 dnl  AtmoLight (homemade Philips Ambilight clone)
3880 dnl
3881 AC_ARG_ENABLE(atmo,
3882 AS_HELP_STRING([--disable-atmo],[AtmoLight (homemade Philips Ambilight clone)
3883                 (default enabled)]),, [enable_atmo="yes"])
3884 AS_IF([test "${enable_atmo}" != no], [
3885   AS_IF([test "${SYS}" = "mingw32" -o "${SYS}" = "linux"], [
3886     AC_LANG_PUSH(C++)
3887     VLC_ADD_PLUGIN([atmo])
3888     AC_LANG_POP(C++)
3889   ])
3890 ])
3891
3892 EXTEND_HELP_STRING([Service Discovery plugins:])
3893 dnl
3894 dnl  Bonjour services discovery
3895 PKG_ENABLE_MODULES_VLC([BONJOUR], [], [avahi-client >= 0.6], [Bonjour services discovery], [auto])
3896
3897 dnl
3898 dnl  libudev services discovery
3899 PKG_ENABLE_MODULES_VLC([UDEV], [], [libudev >= 142], [Linux udev services discovery], [auto])
3900
3901 dnl
3902 dnl MTP devices services discovery
3903 PKG_ENABLE_MODULES_VLC([MTP], [mtp access_mtp], [libmtp >= 1.0.0], [MTP devices support], [auto])
3904
3905 dnl
3906 dnl UPnP Plugin (Intel SDK)
3907 dnl
3908 PKG_ENABLE_MODULES_VLC([UPNP], [upnp], [libupnp], [Intel UPNP SDK],[auto])
3909 VLC_ADD_CXXFLAGS([upnp],[${UPNP_CFLAGS}])
3910
3911 EXTEND_HELP_STRING([Misc options:])
3912
3913 dnl
3914 dnl  libxml2 module
3915 dnl
3916 PKG_ENABLE_MODULES_VLC([LIBXML2], [xml], [libxml-2.0 >= 2.5], [libxml2 support],[auto])
3917
3918
3919 dnl
3920 dnl libgcrypt
3921 dnl
3922 AC_ARG_ENABLE(libgcrypt,
3923   [  --disable-libgcrypt     gcrypt support (default enabled)])
3924 AS_IF([test "${enable_libgcrypt}" != "no"], [
3925   AC_CHECK_DECL([GCRYCTL_SET_THREAD_CBS], [
3926     libgcrypt-config --version >/dev/null || \
3927         AC_MSG_ERROR([gcrypt.h present but libgcrypt-config could not be found])
3928     AC_CHECK_LIB(gcrypt, gcry_control, [
3929       have_libgcrypt="yes"
3930       GCRYPT_CFLAGS="`libgcrypt-config --cflags`"
3931       GCRYPT_LIBS="`libgcrypt-config --libs`"
3932     ], [
3933       AC_MSG_ERROR([libgcrypt not found. Install libgcrypt or use --disable-libgcrypt. Have a nice day.])
3934     ], [`libgcrypt-config --libs`])
3935   ], [
3936     AC_MSG_ERROR([libgcrypt version 1.1.94 or higher not found. Install libgcrypt or use --disable-libgcrypt. Have a nice day.])
3937   ], [#include <gcrypt.h>]
3938   )
3939 ])
3940
3941 if test "${SYS}" = "mingw32" -o "${SYS}" = "mingwce"; then
3942   AS_IF([test "${have_libgcrypt}" = "yes"],[
3943     VLC_ADD_LIBS([rtp stream_out_rtp], [${GCRYPT_LIBS}])
3944   ])
3945 fi
3946 AC_SUBST(GCRYPT_CFLAGS)
3947 AC_SUBST(GCRYPT_LIBS)
3948 AM_CONDITIONAL([HAVE_GCRYPT], [test "${have_libgcrypt}" = "yes"])
3949
3950 dnl
3951 dnl TLS/SSL
3952 dnl
3953 AC_ARG_ENABLE(gnutls,
3954   [  --enable-gnutls         GNU TLS TLS/SSL support (default enabled)])
3955
3956 AS_IF([test "${have_libgcrypt}" != "yes"], [
3957   AS_IF([test "${enable_gnutls}" = "yes"], [
3958     AC_MSG_ERROR([--enable-gnutls and --disable-libgcrypt are mutually exclusive.])
3959   ])
3960   enable_gnutls="no"
3961 ])
3962 AS_IF([test "${enable_gnutls}" != "no"], [
3963   PKG_CHECK_MODULES(GNUTLS, [gnutls >= 2.0.0], [
3964     VLC_ADD_PLUGIN([gnutls])
3965     VLC_ADD_CFLAGS([gnutls], [$GNUTLS_CFLAGS])
3966     AS_IF([test "${SYS}" = "mingw32"], [
3967       dnl pkg-config --libs gnutls omits these
3968       VLC_ADD_LIBS([gnutls], [-lz ${LTLIBINTL} -lcrypt32])
3969     ])
3970     VLC_ADD_LIBS([gnutls], [${GCRYPT_LIBS}])
3971     VLC_ADD_CFLAGS([gnutls], [${GCRYPT_CFLAGS}])
3972     VLC_ADD_LIBS([gnutls], [$GNUTLS_LIBS])
3973   ], [
3974     AS_IF([test "${enable_gnutls}" = "yes"], [
3975       AC_MSG_ERROR([GNU TLS not present or too old (version 2.0.0 required)])
3976     ])
3977   ])
3978 ])
3979
3980
3981 dnl
3982 dnl RemoteOSD plugin (VNC client as video filter)
3983 dnl
3984 AC_MSG_CHECKING([whether to enable the RemoteOSD plugin])
3985 AS_IF([test "${have_libgcrypt}" = "yes"],[
3986   AC_MSG_RESULT(yes)
3987   VLC_ADD_PLUGIN([remoteosd])
3988   VLC_ADD_LIBS([remoteosd], ${GCRYPT_LIBS})
3989   VLC_ADD_CFLAGS([remoteosd], ${GCRYPT_CFLAGS})
3990 ], [
3991   AC_MSG_RESULT(no)
3992   AC_MSG_WARN([libgcrypt support required for RemoteOSD plugin])
3993 ])
3994
3995
3996 dnl
3997 dnl RAOP plugin
3998 dnl
3999 AC_MSG_CHECKING([whether to enable the RAOP plugin])
4000 AS_IF([test "${have_libgcrypt}" = "yes"], [
4001   AC_MSG_RESULT(yes)
4002   VLC_ADD_PLUGIN([stream_out_raop])
4003   VLC_ADD_LIBS([stream_out_raop], [${GCRYPT_LIBS} -lgpg-error])
4004   VLC_ADD_CFLAGS([stream_out_raop], [${GCRYPT_CFLAGS}])
4005 ], [
4006   AC_MSG_RESULT(no)
4007   AC_MSG_WARN([libgcrypt support required for RAOP plugin])
4008 ])
4009
4010
4011 dnl
4012 dnl Nokia MCE plugin (Maemo screen unblanking)
4013 dnl
4014 PKG_CHECK_MODULES([MCE], [dbus-1 mce], [VLC_ADD_PLUGIN([mce])], [true])
4015
4016
4017 AS_IF([test -f "/etc/maemo_version"], [
4018   AC_DEFINE([HAVE_MAEMO], 1, [Define to 1 if building for the Maemo platform.])
4019 ])
4020
4021
4022 dnl
4023 dnl Taglib plugin
4024 dnl
4025 AC_ARG_ENABLE(taglib,
4026   [AS_HELP_STRING([--disable-taglib],
4027     [do not use TagLib (default enabled)])])
4028 AS_IF([test "${enable_taglib}" != "no"], [
4029   PKG_CHECK_MODULES(TAGLIB, taglib >= 1.5, [
4030     VLC_ADD_PLUGIN([taglib])
4031     VLC_ADD_LIBS([taglib],[$TAGLIB_LIBS -lz])
4032     VLC_ADD_CXXFLAGS([taglib],[$TAGLIB_CFLAGS])
4033   ], [
4034     AC_MSG_WARN(TagLib library not found)])
4035 ])
4036
4037
4038 dnl
4039 dnl update checking system
4040 dnl
4041 AC_ARG_ENABLE(update-check,
4042   [  --enable-update-check   update checking system (default disabled)])
4043 if test "${enable_update_check}" = "yes"
4044 then
4045   if test "${have_libgcrypt}" != "yes"
4046   then
4047     AC_MSG_ERROR([libgcrypt is required for update checking system])
4048   fi
4049   VLC_ADD_LIBS([libvlccore], [${GCRYPT_LIBS}])
4050   VLC_ADD_CFLAGS([libvlccore], [${GCRYPT_CFLAGS}])
4051   AC_DEFINE([UPDATE_CHECK], 1, [Define if you want to use the VLC update mechanism])
4052 fi
4053
4054 dnl
4055 dnl SQLite
4056 dnl
4057 AC_ARG_WITH(sqlite,
4058   [  --with-sqlite=PATH      sqlite path linking])
4059 if test "${SYS}" != "darwin"; then
4060   PKG_ENABLE_MODULES_VLC([SQLITE], [], [sqlite3 >= 3.6.0], [sqlite3], [auto])
4061 else
4062   if test "${enable_sqlite}" != "no"
4063   then
4064     AC_CHECK_HEADERS(sqlite3.h, [
4065         VLC_ADD_PLUGIN([sqlite])
4066         if test "${with_sqlite}" != "no" -a -n "${with_sqlite}"; then
4067           AC_MSG_CHECKING(existence of sqlite directory in ${with_sqlite})
4068           real_sqlite="`cd ${with_sqlite} 2>/dev/null && pwd`"
4069           if test -z "${real_sqlite}"
4070           then
4071             dnl  The given directory can't be found
4072             AC_MSG_RESULT(no)
4073             AC_MSG_ERROR([cannot cd to ${with_sqlite}])
4074           fi
4075           VLC_ADD_CFLAGS([sqlite],[-I${with_sqlite}/include])
4076           VLC_ADD_LIBS([sqlite], [-L${with_sqlite}/lib -lsqlite3])
4077           AC_MSG_RESULT(yes)
4078         else
4079           VLC_ADD_LIBS([sqlite], [-lsqlite3])
4080         fi
4081         AC_DEFINE([SQLITE_MODULE], 1, [Define if you want to use SQLite module]) ],
4082         AC_MSG_ERROR([sqlite3 is required for sqlite module]) )
4083   fi
4084 fi
4085 AM_CONDITIONAL([HAVE_SQLITE], [test "${enable_sqlite}" != "no"])
4086
4087 dnl
4088 dnl Growl notification plugin
4089 dnl
4090 AC_ARG_ENABLE(growl,
4091   [  --enable-growl          growl notification plugin (default disabled)],,
4092   [enable_growl=no])
4093 AS_IF([test "${enable_growl}" != "no"], [
4094     AC_CHECK_HEADERS(${CONTRIB_DIR}/Growl/Growl.framework/Versions/A/Headers/GrowlDefines.h, [
4095       VLC_ADD_PLUGIN([growl])
4096       VLC_ADD_LIBS([growl], [-F${CONTRIB_DIR}/Growl -Wl,-framework,Growl,-framework,CoreFoundation])
4097       VLC_ADD_OBJCFLAGS([growl], [-F${CONTRIB_DIR}/Growl])
4098       VLC_ADD_OBJCFLAGS([growl], [-fobjc-exceptions] )
4099     ])
4100   ]
4101 )
4102
4103 dnl
4104 dnl Libnotify notification plugin
4105 dnl
4106 PKG_ENABLE_MODULES_VLC([NOTIFY], [], [libnotify gtk+-2.0], [libnotify notification], [auto])
4107
4108 dnl
4109 dnl media library
4110 dnl
4111 AC_ARG_ENABLE(media-library,
4112     [  --enable-media-library  media library (default disabled)])
4113 if test "${enable_media_library}" = "yes"; then
4114     if test "${enable_sqlite}" != "yes"; then
4115        AC_MSG_ERROR([SQLite module is required for the media library])
4116     else
4117        AC_DEFINE([MEDIA_LIBRARY], 1, [Define if you want to use the VLC media library])
4118        VLC_ADD_CPPFLAGS([qt4],"-DMEDIA_LIBRARY")
4119        VLC_ADD_PLUGIN([media_library])
4120     fi
4121 fi
4122 AM_CONDITIONAL([ENABLE_MEDIA_LIBRARY], [test "${enable_media_library}" = "yes"])
4123
4124 dnl
4125 dnl  Endianness check
4126 dnl
4127 AC_C_BIGENDIAN
4128 AS_IF([test "${ac_cv_c_bigendian}" = "yes"], [
4129   DEFS_BIGENDIAN="-DWORDS_BIGENDIAN=1"
4130 ], [
4131   DEFS_BIGENDIAN=""
4132 ])
4133 AC_SUBST(DEFS_BIGENDIAN)
4134
4135 dnl
4136 dnl Where to install KDE solid .desktop
4137 dnl
4138 AC_ARG_VAR([KDE4_CONFIG], [kde4-config utility])
4139 AS_IF([test "x$KDE4_CONFIG" = "x"], [
4140   KDE4_CONFIG="kde4-config"
4141 ])
4142
4143 AC_ARG_WITH(kde-solid,
4144   AS_HELP_STRING([--with-kde-solid=PATH],
4145                  [KDE Solid actions directory (auto)]),, [
4146
4147 if test "${SYS}" != "mingw32" -a "${SYS}" != "mingwce" ; then
4148   with_kde_solid="yes"
4149 fi
4150 ])
4151 soliddatadir=""
4152 AS_IF([test "${with_kde_solid}" != "no"], [
4153   AS_IF([test "${with_kde_solid}" = "yes"], [
4154     kde4datadir="`${KDE4_CONFIG} --install data`"
4155     AS_IF([test "x$kde4datadir" = "x"], [kde4datadir='${datadir}/kde4/apps'])
4156     soliddatadir="${kde4datadir}/solid/actions"
4157   ], [
4158     soliddatadir="${with_kde_solid}"
4159   ])
4160 ])
4161 AC_SUBST(soliddatadir)
4162 AM_CONDITIONAL(KDE_SOLID, [test "x${soliddatadir}" != "x"])
4163
4164 dnl
4165 dnl  DLL loader copied from MPlayer copied from somewhere else (WINE ?)
4166 dnl
4167 loader=false
4168 AC_ARG_ENABLE(loader,
4169   AS_HELP_STRING([--enable-loader],[build DLL loader for ELF i386 platforms
4170           (default disabled)]))
4171 AM_CONDITIONAL(LOADER, [test "${enable_loader}" = "yes"])
4172 AS_IF([test "${enable_loader}" = "yes"],
4173   [ VLC_ADD_PLUGIN([dmo])
4174     VLC_ADD_CPPFLAGS([dmo quicktime realvideo],[-I\\\${top_srcdir}/modules/codec/loader])
4175     VLC_ADD_LIBS([dmo quicktime realvideo],[\\\${top_builddir}/modules/codec/loader/libloader.la])
4176     VLC_ADD_CPPFLAGS([realvideo], [-DLOADER])
4177     VLC_ADD_LIBS([dmo quicktime], [-lpthread])
4178   ])
4179
4180 EXTEND_HELP_STRING([Components:])
4181
4182 dnl
4183 dnl  the VLC binary
4184 dnl
4185 AC_ARG_ENABLE(vlc,
4186   [  --enable-vlc            build the VLC media player (default enabled)])
4187 AM_CONDITIONAL(BUILD_VLC, [test "${enable_vlc}" != "no"])
4188
4189 AC_ARG_ENABLE(macosx-vlc-app,
4190   [  --enable-macosx-vlc-app build the VLC media player (default enabled on Mac OS X)])
4191 AM_CONDITIONAL(BUILD_MACOSX_VLC_APP, [test "${enable_macosx_vlc_app}" != "no" &&
4192     (test "${SYS}" = "darwin" || test "${enable_macosx_vlc_app}" = "yes") ])
4193
4194
4195 dnl
4196 dnl Pic and shared libvlc stuff
4197 dnl
4198 AS_IF([test "${SYS}" = "mingw32"], [
4199   FILE_LIBVLCCORE_DLL="!define LIBVLCCORE_DLL libvlccore.dll"
4200   FILE_LIBVLC_DLL="!define LIBVLC_DLL libvlc.dll"
4201 ])
4202
4203 dnl
4204 dnl  Stuff used by the program
4205 dnl
4206 VERSION_MESSAGE="${VERSION} ${CODENAME}"
4207 COPYRIGHT_MESSAGE="Copyright © ${COPYRIGHT_YEARS} the VideoLAN team"
4208 AC_DEFINE_UNQUOTED(VERSION_MESSAGE, "${VERSION_MESSAGE}", [Simple version string])
4209 AC_DEFINE_UNQUOTED(COPYRIGHT_MESSAGE, "${COPYRIGHT_MESSAGE}", [Copyright string])
4210 AC_DEFINE_UNQUOTED(COPYRIGHT_YEARS, "${COPYRIGHT_YEARS}", [The copyright years])
4211 AC_DEFINE_UNQUOTED(CONFIGURE_LINE, "${CONFIGURE_LINE}", [The ./configure command line])
4212 AC_DEFINE_UNQUOTED(PACKAGE_VERSION_MAJOR,${VERSION_MAJOR}, [version major number])
4213 AC_DEFINE_UNQUOTED(PACKAGE_VERSION_MINOR,${VERSION_MINOR}, [version minor number])
4214 AC_DEFINE_UNQUOTED(PACKAGE_VERSION_REVISION,${VERSION_REVISION}, [version revision number])
4215 AC_DEFINE_UNQUOTED(PACKAGE_VERSION_EXTRA,${VERSION_EXTRA}, [version extra number])
4216 AC_DEFINE_UNQUOTED(PACKAGE_VERSION_DEV,"${VERSION_DEV}", [version development string])
4217 AC_SUBST(COPYRIGHT_MESSAGE)
4218 AC_SUBST(VERSION_MESSAGE)
4219 AC_SUBST(VERSION_MAJOR)
4220 AC_SUBST(VERSION_MINOR)
4221 AC_SUBST(VERSION_REVISION)
4222 AC_SUBST(VERSION_EXTRA)
4223 AC_SUBST(COPYRIGHT_YEARS)
4224 AC_DEFINE_UNQUOTED(VLC_COMPILE_BY, "`whoami`", [user who ran configure])
4225 AC_DEFINE_UNQUOTED(VLC_COMPILE_HOST, "`hostname -f 2>/dev/null || hostname`", [host which ran configure])
4226 AC_DEFINE_UNQUOTED(VLC_COMPILER, "`$CC -v 2>&1 | tail -n 1`", [compiler])
4227 dnl
4228 dnl  Handle substvars that use $(top_srcdir)
4229 dnl
4230 CPPFLAGS_save="-I\$(top_srcdir)/include -I\$(top_builddir)/include ${CPPFLAGS_save}"
4231
4232 dnl
4233 dnl  Restore *FLAGS
4234 dnl
4235 VLC_RESTORE_FLAGS
4236
4237 dnl
4238 dnl Sort the modules list
4239 dnl
4240 PLUGINS=$( (for i in `echo $PLUGINS`; do echo $i; done)|sort|xargs )
4241
4242 dnl
4243 dnl  Configuration is finished
4244 dnl
4245 AC_SUBST(SYS)
4246 AC_SUBST(ARCH)
4247 AC_SUBST(ALIASES)
4248 AC_SUBST(ASM)
4249 AC_SUBST(MOC)
4250 AC_SUBST(RCC)
4251 AC_SUBST(UIC)
4252 AC_SUBST(WINDRES)
4253 AC_SUBST(WINE_SDK_PATH)
4254 AC_SUBST(LIBEXT)
4255 AC_SUBST(AM_CPPFLAGS)
4256 AC_SUBST(MACOSX_DEPLOYMENT_TARGET)
4257 AC_SUBST(FILE_LIBVLCCORE_DLL)
4258 AC_SUBST(FILE_LIBVLC_DLL)
4259
4260 AC_CONFIG_FILES([
4261   Makefile
4262   doc/Makefile
4263   modules/Makefile
4264   m4/Makefile
4265   po/Makefile.in
4266   share/Makefile
4267   compat/Makefile
4268   src/Makefile
4269   src/test/Makefile
4270   lib/Makefile
4271   bin/Makefile
4272   test/Makefile
4273   modules/access/Makefile
4274   modules/access/bd/Makefile
4275   modules/access/dshow/Makefile
4276   modules/access/mms/Makefile
4277   modules/access/rtp/Makefile
4278   modules/access/rtsp/Makefile
4279   modules/access/vcd/Makefile
4280   modules/access/vcdx/Makefile
4281   modules/access/screen/Makefile
4282   modules/access/zip/Makefile
4283   modules/access/zip/unzip/Makefile
4284   modules/access_output/Makefile
4285   modules/audio_filter/Makefile
4286   modules/audio_mixer/Makefile
4287   modules/audio_output/Makefile
4288   modules/codec/Makefile
4289   modules/codec/avcodec/Makefile
4290   modules/codec/dmo/Makefile
4291   modules/codec/loader/Makefile
4292   modules/codec/omxil/Makefile
4293   modules/codec/shine/Makefile
4294   modules/codec/spudec/Makefile
4295   modules/codec/wmafixed/Makefile
4296   modules/control/Makefile
4297   modules/control/dbus/Makefile
4298   modules/control/globalhotkeys/Makefile
4299   modules/demux/Makefile
4300   modules/demux/asf/Makefile
4301   modules/demux/avformat/Makefile
4302   modules/demux/avi/Makefile
4303   modules/demux/mkv/Makefile
4304   modules/demux/mp4/Makefile
4305   modules/demux/mpeg/Makefile
4306   modules/demux/playlist/Makefile
4307   modules/gui/Makefile
4308   modules/gui/macosx/Makefile
4309   modules/gui/hildon/Makefile
4310   modules/gui/minimal_macosx/Makefile
4311   modules/gui/macosx_dialog_provider/Makefile
4312   modules/gui/qt4/Makefile
4313   modules/gui/skins2/Makefile
4314   modules/lua/Makefile
4315   modules/meta_engine/Makefile
4316   modules/misc/Makefile
4317   modules/misc/playlist/Makefile
4318   modules/misc/osd/Makefile
4319   modules/misc/stats/Makefile
4320   modules/media_library/Makefile
4321   modules/mux/Makefile
4322   modules/mux/mpeg/Makefile
4323   modules/notify/Makefile
4324   modules/packetizer/Makefile
4325   modules/services_discovery/Makefile
4326   modules/stream_filter/Makefile
4327   modules/stream_out/Makefile
4328   modules/stream_out/transcode/Makefile
4329   modules/text_renderer/Makefile
4330   modules/video_chroma/Makefile
4331   modules/video_filter/Makefile
4332   modules/video_filter/dynamicoverlay/Makefile
4333   modules/video_output/Makefile
4334   modules/video_output/msw/Makefile
4335   modules/visualization/Makefile
4336   modules/visualization/visual/Makefile
4337   modules/mmx/Makefile
4338   modules/mmxext/Makefile
4339   modules/3dnow/Makefile
4340   modules/sse2/Makefile
4341   modules/altivec/Makefile
4342   modules/arm_neon/Makefile
4343 ])
4344
4345 AM_COND_IF([HAVE_WIN32], [
4346   AC_CONFIG_FILES([
4347     extras/package/win32/spad.nsi
4348     extras/package/win32/vlc.win32.nsi
4349   ])
4350 ])
4351
4352 AM_COND_IF([HAVE_DARWIN], [
4353   AC_CONFIG_FILES([
4354     extras/package/macosx/Info.plist
4355     extras/package/macosx/Resources/English.lproj/InfoPlist.strings
4356   ])
4357 ])
4358
4359 dnl Generate makefiles
4360 AC_OUTPUT
4361
4362 /bin/echo -n "Enabled modules: ${PLUGINS}"
4363
4364 dnl Do we have to use make or gmake ?
4365 USE_MAKE_OR_GMAKE=`case "${SYS}" in openbsd*) echo "gmake";; *) echo "make";; esac`
4366 dnl Shortcut to nice compile message
4367 rm -f compile
4368 if test -n $SHELL; then
4369   SHELL=${CONFIG_SHELL-/bin/sh}
4370 fi
4371 echo '#! '$SHELL >compile
4372 echo rm -f .error\$\$ >>compile
4373 echo ERROR=0 >>compile
4374 echo export PATH=$PATH LANG=C >>compile
4375 echo "($USE_MAKE_OR_GMAKE V=1 \$@ 2>&1 || touch .error\$\$)| \\" >>compile
4376 echo '`sed -ne "s/^top_srcdir *= *//p" < Makefile`/extras/buildsystem/make.pl' >>compile
4377 echo test -f .error\$\$ \&\& ERROR=1 >>compile
4378 echo rm -f .error\$\$ >>compile
4379 echo exit \$ERROR >>compile
4380 chmod a+x compile
4381
4382 printf "
4383 libvlc configuration
4384 --------------------
4385 version               : ${VERSION}
4386 system                : ${SYS}
4387 architecture          : ${ARCH}
4388 build flavour         : "
4389 test "${enable_optimizations}" != "no" && printf ${enable_optimizations}
4390 echo ""
4391 if test "${enable_vlc}" != "no"; then
4392 echo "vlc aliases           :${ALIASES}"
4393 else
4394 echo "build vlc executable  : no"
4395 fi
4396 echo "
4397 To build vlc and its plugins, type \`./compile' or \`$USE_MAKE_OR_GMAKE'."