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