rtp sout: add missing caching option
[vlc.git] / configure.ac
1 dnl Autoconf settings for vlc
2
3 AC_COPYRIGHT([Copyright 2002-2009 the VideoLAN team])
4
5 AC_INIT(vlc, 1.1.0-git)
6 VERSION_MAJOR="1"
7 VERSION_MINOR="1"
8 VERSION_REVISION="0"
9 VERSION_EXTRA="-git"
10 PKGDIR="vlc"
11 AC_SUBST(PKGDIR)
12
13 CONFIGURE_LINE="`echo "$0 $ac_configure_args" | sed -e 's/\\\/\\\\\\\/g'`"
14 CODENAME="Yellow Bastard"
15 COPYRIGHT_YEARS="1996-2009"
16
17 AC_PREREQ(2.59c)
18 AC_CONFIG_SRCDIR(src/libvlc.c)
19 AC_CONFIG_AUX_DIR(autotools)
20 AC_CONFIG_MACRO_DIR(m4)
21 AC_CONFIG_LIBOBJ_DIR(compat)
22 AC_CANONICAL_BUILD
23 AC_CANONICAL_HOST
24
25 AM_INIT_AUTOMAKE(tar-ustar)
26 AM_CONFIG_HEADER(config.h)
27
28 # Disable with "./configure --disable-silent-rules" or "make V=1"
29 m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])])
30
31
32 dnl Too many people are not aware of maintainer mode:
33 dnl If you want to use it, you definitely know what you are doing, so
34 dnl you can specify "--disable-maintainer-mode". But if you want the default
35 dnl automake behavior, you've likely never heard of maintainer mode, so we
36 dnl can't expect you to enable it manually.
37
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  Deprecated options
54 dnl  to notify packagers that stuff has changed
55 dnl
56 AC_ARG_ENABLE(python-bindings,
57   [  --enable-python-bindings Always fails for historical reasons)],,
58   [enable_python_bindings="no"])
59 AS_IF([test "${enable_python_bindings}" != "no"], [
60   AC_MSG_ERROR([Python bindings are now built from a separate source package])
61 ])
62
63 AC_ARG_ENABLE(java-bindings,
64   [  --enable-java-bindings  Always fails for historical reasons],,
65   [enable_java_bindings="no"])
66 AS_IF([test "${enable_java_bindings}" != "no"], [
67   AC_MSG_ERROR([Java bindings are now built from a separate source package])
68 ])
69
70 dnl
71 dnl  Save *FLAGS
72 dnl
73 VLC_SAVE_FLAGS
74
75 dnl
76 dnl Check for tools
77 dnl
78 AC_PROG_CC_C99
79 AC_USE_SYSTEM_EXTENSIONS
80 AC_DEFINE([_FORTIFY_SOURCE], 2, [Define to '2' to get glibc warnings.])
81
82 AM_PROG_CC_C_O
83 AC_PROG_CXX
84 AC_PROG_CPP
85 AC_PROG_OBJC
86 _AM_DEPENDENCIES([OBJC])
87 AC_PROG_EGREP
88 AC_PROG_MAKE_SET
89 AC_PROG_INSTALL
90 AM_PROG_AS
91
92 dnl Find the right ranlib, even when cross-compiling
93 AC_CHECK_TOOL(RANLIB, ranlib, :)
94 AC_CHECK_TOOL(STRIP, strip, :)
95 AC_CHECK_TOOL(AR, ar, :)
96 AC_CHECK_TOOL(LD, ld, :)
97 AC_CHECK_TOOL(DLLTOOL, dlltool, :)
98
99 dnl Check for compiler properties
100 AC_C_CONST
101 AC_C_INLINE
102 AC_C_RESTRICT
103
104 dnl Allow binary package maintainer to pass a custom string to avoid
105 dnl cache problem
106 AC_ARG_WITH(binary-version,
107         AS_HELP_STRING([--with-binary-version=STRING],
108              [To avoid plugins cache problem between binary version]),[],[])
109 AS_IF([test -n "${with_binary_version}"],[
110       AC_DEFINE_UNQUOTED([DISTRO_VERSION],["${with_binary_version}"],
111                          [Binary specific version])
112       ])
113
114
115 dnl
116 dnl  Check for the contrib directory
117 dnl
118 AC_ARG_WITH(contrib,
119     [  --without-contrib       do not use the libraries in CONTRIB_DIR],[],[])
120   AS_IF([test "${with_contrib}" != "no"],[
121     AC_ARG_VAR([CONTRIB_DIR], [directory containing pre-built contrib, overriding extras/contrib])
122     if test -z "$CONTRIB_DIR"
123     then
124       topdir="`dirname $0`"
125       if test "`echo \"$topdir\" | cut -c 1`" != "/"; then
126          topdir="`pwd`/$topdir"
127       fi
128       CONTRIB_DIR=${topdir}/extras/contrib
129     fi
130     AC_MSG_CHECKING([for libs in ${CONTRIB_DIR}])
131   AS_IF([test -d ${CONTRIB_DIR}/lib],[
132    AS_IF([test "`grep HOST ${CONTRIB_DIR}/config.mak 2>/dev/null|awk '{print $3}'`" != "`$CC -dumpmachine`"],[
133       if test "${with_contrib}" = "yes"; then
134         AC_MSG_RESULT([no])
135         AC_MSG_ERROR([ not using the libs in extras/contrib as it is not the same host])
136       else
137         AC_MSG_RESULT([no])
138         AC_MSG_WARN([ not using the libs in extras/contrib as it is not the same host])
139       fi
140      ],[
141     AC_MSG_RESULT([yes])
142     export PATH=${CONTRIB_DIR}/bin:$PATH
143     CPPFLAGS="${CPPFLAGS} -I${CONTRIB_DIR}/include"
144     CPPFLAGS_save="${CPPFLAGS_save} -I${CONTRIB_DIR}/include"
145     CFLAGS="${CFLAGS} -I${CONTRIB_DIR}/include"
146     CFLAGS_save="${CFLAGS_save} -I${CONTRIB_DIR}/include"
147     CXXFLAGS="${CXXFLAGS} -I${CONTRIB_DIR}/include"
148     CXXFLAGS_save="${CXXFLAGS_save} -I${CONTRIB_DIR}/include"
149     OBJCFLAGS="${OBJCFLAGS} -I${CONTRIB_DIR}/include"
150     OBJCFLAGS_save="${OBJCFLAGS_save} -I${CONTRIB_DIR}/include"
151     if test $build = $host -o "$PKG_CONFIG_LIBDIR"; then
152         export PKG_CONFIG_PATH=${CONTRIB_DIR}/lib/pkgconfig:$PKG_CONFIG_PATH
153     else
154         export PKG_CONFIG_LIBDIR=${CONTRIB_DIR}/lib/pkgconfig
155     fi
156     LDFLAGS="${LDFLAGS} -L${CONTRIB_DIR}/lib"
157     LDFLAGS_save="${LDFLAGS_save} -L${CONTRIB_DIR}/lib"
158
159     if test -z $with_mozilla_sdk_path; then
160        with_mozilla_sdk_path=${CONTRIB_DIR}/gecko-sdk
161     fi
162     if test -z $with_cyberlink_tree; then
163        with_cyberlink_tree=${CONTRIB_DIR}/src/clinkcc
164     fi
165
166     if test ".`uname -s`" = ".Darwin"; then
167       export LD_LIBRARY_PATH=${CONTRIB_DIR}/lib:$LD_LIBRARY_PATH
168       export DYLD_LIBRARY_PATH=${CONTRIB_DIR}/lib:$DYLD_LIBRARY_PATH
169     elif test ".`uname -s`" = ".BeOS"; then
170       export LIBRARY_PATH=${CONTRIB_DIR}/lib:$LIBRARY_PATH
171       export BELIBRARIES=${CONTRIB_DIR}/lib:$BELIBRARIES
172     fi
173     ])
174   ],[
175     AC_MSG_RESULT([no])
176   ])
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 case "${host_os}" in
187   "")
188     SYS=unknown
189     ;;
190   linux*)
191     SYS=linux
192     ;;
193   bsdi*)
194     SYS=bsdi
195     CFLAGS_save="${CFLAGS_save} -pthread"; CFLAGS="${CFLAGS_save}"
196     VLC_ADD_LIBS([dvd dvdcss vcd cdda vcdx cddax],[-ldvd])
197     ;;
198   *bsd*)
199     SYS="${host_os}"
200     CFLAGS_save="${CFLAGS_save} -pthread"; CFLAGS="${CFLAGS_save}"
201     case "${host_os}" in
202       freebsd*)
203         CPPFLAGS_save="${CPPFLAGS_save} -I/usr/local/include"
204         CPPFLAGS="${CPPFLAGS_save}"
205         LDFLAGS_save="${LDFLAGS_save} -L/usr/local/lib"
206         LDFLAGS="${LDFLAGS_save}"
207         ;;
208       openbsd*)
209         CPPFLAGS_save="${CPPFLAGS_save} -I/usr/local/include -I/usr/X11R6/include"
210         CPPFLAGS="${CPPFLAGS_save}"
211         LDFLAGS_save="${LDFLAGS_save} -L/usr/local/lib -L/usr/X11R6/lib/"
212         LDFLAGS="${LDFLAGS_save}"
213         ;;
214     esac
215     ;;
216   darwin*)
217     SYS=darwin
218     CFLAGS_save="${CFLAGS_save} -D_INTL_REDIRECT_MACROS"; CFLAGS="${CFLAGS_save}"
219     CXXFLAGS_save="${CXXFLAGS_save} -D_INTL_REDIRECT_MACROS"; CXXFLAGS="${CXXFLAGS_save}"
220     OBJCFLAGS_save="${OBJCFLAGS_save} -D_INTL_REDIRECT_MACROS -std=gnu99"; OBJCFLAGS="${OBJCFLAGS_save}"
221     LDFLAGS_save="${LDFLAGS_save} -Wl,-headerpad_max_install_names"; LDFLAGS="${LDFLAGS_save}"
222     VLC_ADD_LDFLAGS([mp4], [-Wl,-framework,IOKit,-framework,CoreFoundation])
223     VLC_ADD_LDFLAGS([mkv mp4], [-Wl,-framework,IOKit,-framework,CoreFoundation])
224     VLC_ADD_LDFLAGS([vlc],[-Wl,-undefined,dynamic_lookup])
225     VLC_ADD_LDFLAGS([libvlc],[-Wl,-undefined,dynamic_lookup])
226     VLC_ADD_LDFLAGS([avcodec avformat swscale postproc i420_rgb_mmx x264],[-Wl,-read_only_relocs,suppress])
227     VLC_ADD_CFLAGS([motion],[-fconstant-cfstrings])
228     VLC_ADD_LDFLAGS([libvlccore],[-Wl,-framework,CoreFoundation])
229     VLC_ADD_LDFLAGS([motion],[-Wl,-framework,IOKit,-framework,CoreFoundation])
230     AC_ARG_ENABLE(macosx-defaults,
231       AS_HELP_STRING([--enable-macosx-defaults],[Build the default configuration on Mac OS X (default enabled)]))
232     if test "x${enable_macosx_defaults}" != "xno"
233     then
234         echo ""
235         echo "Building with Mac OS X defaults:"
236         with_macosx_version_min="10.5"
237         echo "  Assuming --with-macosx-version-min=10.5"
238         with_macosx_sdk="/Developer/SDKs/MacOSX${with_macosx_version_min}.sdk"
239         echo "  Assuming --with-macosx-sdk=/Developer/SDKs/MacOSX${with_macosx_version_min}.sdk"
240         build_dir=`pwd`
241         echo "  Assuming --prefix=${build_dir}/vlc_install_dir"
242         ac_default_prefix="${build_dir}/vlc_install_dir"
243         enable_macosx="yes"
244         echo "  Assuming --enable-macosx"
245         enable_faad="yes"
246         echo "  Assuming --enable-faad"
247         enable_flac="yes"
248         echo "  Assuming --enable-flac"
249         enable_theora="yes"
250         echo "  Assuming --enable-theora"
251         enable_shout="yes"
252         echo "  Assuming --enable-shout"
253         enable_cddax="yes"
254         echo "  Assuming --enable-cddax"
255         enable_vcdx="yes"
256         echo "  Assuming --enable-vcdx"
257         enable_caca="yes"
258         echo "  Assuming --enable-caca"
259         enable_ncurses="yes"
260         echo "  Assuming --enable-ncurses"
261         enable_twolame="yes"
262         echo "  Assuming --enable-twolame"
263         enable_realrtsp="yes"
264         echo "  Assuming --enable-realrtsp"
265         enable_libass="yes"
266         echo "  Assuming --enable-libass"
267         enable_asademux="yes"
268         echo "  Assuming --enable-asademux"
269
270         enable_skins2="no"
271         echo "  Assuming --disable-skins2"
272         enable_x11="no"
273         echo "  Assuming --disable-x11"
274         enable_xcb="no"
275         echo "  Assuming --disable-xcb"
276         enable_glx="no"
277         echo "  Assuming --disable-glx"
278         enable_xvideo="no"
279         echo "  Assuming --disable-xvideo"
280     fi
281     dnl
282     dnl  Check for Mac OS X SDK settings
283     dnl
284     AC_ARG_WITH(macosx-sdk,
285        [  --with-macosx-sdk=DIR   compile using the SDK in DIR])
286     if test "${with_macosx_sdk}" != "" ; then
287         CPP="${CPP} -isysroot ${with_macosx_sdk}"
288         CC="${CC} -isysroot ${with_macosx_sdk}"
289         CXX="${CXX} -isysroot ${with_macosx_sdk}"
290         OBJC="${OBJC} -isysroot ${with_macosx_sdk}"
291         LD="${LD} -syslibroot ${with_macosx_sdk}"
292     fi
293     AC_ARG_WITH(macosx-version-min,
294        [  --with-macosx-version-min=VERSION  compile for MacOSX VERSION and above])
295     if test "${with_macosx_version_min}" != "" ; then
296         CPP="${CPP} -mmacosx-version-min=${with_macosx_version_min}"
297         CC="${CC} -mmacosx-version-min=${with_macosx_version_min}"
298         CXX="${CXX} -mmacosx-version-min=${with_macosx_version_min}"
299         OBJC="${OBJC} -mmacosx-version-min=${with_macosx_version_min}"
300         LD="${LD} -macosx_version_min=${with_macosx_version_min}"
301         CFLAGS_save="${CFLAGS_save} -DMACOSX_DEPLOYMENT_TARGET=${with_macosx_version_min}"; CFLAGS="${CFLAGS_save}"
302         CXXFLAGS_save="${CXXFLAGS_save} -DMACOSX_DEPLOYMENT_TARGET=${with_macosx_version_min}"; CXXFLAGS="${CXXFLAGS_save}"
303         OBJCFLAGS_save="${OBJCFLAGS_save} -DMACOSX_DEPLOYMENT_TARGET=${with_macosx_version_min}"; OBJCFLAGS="${OBJCFLAGS_save}"
304         MACOSX_DEPLOYMENT_TARGET=${with_macosx_version_min}
305         export MACOSX_DEPLOYMENT_TARGET
306     fi
307     ;;
308   darwin9*)
309     if (test ".`uname -p`" = ".i386"); then
310         dnl Due to a ld(64) bug in 10.5 we cannot use our mmx code
311         dnl without hacking it a lot, we disable mmx and sse.
312         dnl (that bug is about ld being unable to handle
313         dnl text relocation)
314         save_cflags="$CFLAGS"
315         CFLAGS="$CFLAGS -dynamiclib -single_module -read_only_relocs suppress"
316         AC_TRY_LINK(
317             [int a;], [asm("movq _a,%mm0\n");],
318             ac_ld_does_not_support_text_reloc=no,
319             ac_ld_does_not_support_text_reloc=yes)
320         CFLAGS="$save_cflags"
321
322         if test "x$ac_ld_does_not_support_text_reloc" = "xyes"; then
323             enable_mmx="no"
324             echo "  Assuming --disable-mmx (due to a bug in ld)"
325             enable_sse="no"
326             echo "  Assuming --disable-sse (due to a bug in ld)"
327         fi
328     fi
329     ;;
330   *mingw32* | *cygwin* | *wince* | *mingwce*)
331     AC_CHECK_TOOL(WINDRES, windres, :)
332     AC_CHECK_TOOL(OBJCOPY, objcopy, :)
333
334     case "${host_os}" in
335       *wince* | *mingwce* | *mingw32ce*)
336         SYS=mingwce
337         dnl Sadly CeGCC still needs non-wince macros
338         AC_DEFINE([_WIN32_WINNT], 0x0501, [Define to '0x0500' for Windows 2000 APIs.])
339         ;;
340       *mingw32*)
341         SYS=mingw32
342         AC_DEFINE([_WIN32_WINNT], 0x0500, [Define to '0x0500' for Windows 2000 APIs.])
343         ;;
344       *cygwin*)
345         dnl Check if we are using the mno-cygwin mode in which case we are
346         dnl actually dealing with a mingw32 compiler.
347         AC_DEFINE([_WIN32_WINNT], 0x0500, [Define to '0x0500' for Windows 2000 APIs.])
348         AC_EGREP_CPP(yes,
349             [#ifdef WIN32
350              yes
351              #endif],
352             SYS=mingw32, AC_MSG_ERROR([VLC requires -mno-cygwin]))
353         ;;
354     esac
355
356     if test "${SYS}" = "mingw32"; then
357         # add ws2_32 for closesocket, select, recv
358         VLC_ADD_LIBS([libvlccore],[-lws2_32 -lnetapi32 -lwinmm])
359         VLC_ADD_LDFLAGS([vlc],[-mwindows])
360         VLC_ADD_LIBS([activex mozilla],[-lgdi32])
361         VLC_ADD_LIBS([cdda vcdx cddax sdl_image aout_sdl vout_sdl],[-lwinmm])
362         VLC_ADD_LIBS([access_http access_mms access_udp access_tcp access_ftp access_rtmp access_output_udp access_output_shout access_output_rtmp sap slp http stream_out_standard stream_out_rtp stream_out_raop vod_rtsp access_realrtsp rtp telnet rc netsync gnutls growl_udp flac ts audioscrobbler lua remoteosd zvbi audiobargraph_a],[-lws2_32])
363         VLC_ADD_LIBS([access_file], [-lshlwapi])
364         dnl
365         dnl DEP and ASLR options
366         dnl
367         AC_ARG_ENABLE(peflags,
368           [  --enable-peflags          peflags use (default enabled)])
369         if test "${enable_peflags}" != "no"
370         then
371           AC_CHECK_TOOL(PEFLAGS, peflags, :)
372         fi
373     fi
374     if test "${SYS}" = "mingwce"; then
375         # add ws2 for closesocket, select, recv
376         VLC_ADD_LIBS([libvlccore access_http access_mms access_udp access_tcp access_ftp access_rtmp access_output_udp access_output_rtmp sap http netsync audioscrobbler growl rtp stream_out_rtp remoteosd ts telnet audiobargraph_a],[-lws2])
377         VLC_ADD_LIBS([libvlccore],[-lmmtimer])
378    fi
379     ;;
380   *nto*)
381     SYS=nto
382     ;;
383   solaris*)
384     SYS=solaris
385     ;;
386   hpux*)
387     SYS=hpux
388     ;;
389   beos)
390     SYS=beos
391     CFLAGS_save="${CFLAGS_save} -Wno-multichar"; CFLAGS="${CFLAGS_save}"
392     CXXFLAGS_save="${CXXFLAGS_save} -Wno-multichar"; CXXFLAGS="${CXXFLAGS_save}"
393     VLC_ADD_CXXFLAGS([beos],[])
394     VLC_ADD_LIBS([vlc libvlccore logger],[-lbe])
395     VLC_ADD_LIBS([beos],[-lbe -lmedia -ltranslation -ltracker -lgame])
396     VLC_ADD_LIBS([dvdnav dvdread],[-ldl])
397     VLC_ADD_LIBS([access_file],[-lpoll])
398     LDFLAGS_save="${LDFLAGS_save} -lintl"; LDFLAGS="${LDFLAGS_save}"
399     dnl Check for BONE
400     if test -f /boot/beos/system/lib/libbind.so; then
401         VLC_ADD_LIBS([access_file access_ftp access_mms access_output_udp telnet netsync sap libvlccore growl_udp],[-lbind -lsocket])
402     else
403         VLC_ADD_LIBS([access_file access_ftp access_mms access_output_udp telnet netsync sap libvlccore growl_udp],[-lnet])
404     fi
405
406     dnl Ugly check for Zeta
407     if test -f /boot/beos/system/lib/libzeta.so; then
408         VLC_ADD_LIBS([beos],[-lzeta])
409     fi
410     ;;
411   *)
412     SYS="${host_os}"
413     ;;
414 esac
415 AM_CONDITIONAL(HAVE_BEOS, test "${SYS}" = "beos")
416 AM_CONDITIONAL(HAVE_DARWIN, test "${SYS}" = "darwin")
417 AM_CONDITIONAL(HAVE_LINUX, [test "${SYS}" = "linux"])
418 AM_CONDITIONAL(HAVE_WIN32, test "${SYS}" = "mingw32")
419 AM_CONDITIONAL(HAVE_WINCE, test "${SYS}" = "mingwce")
420 AM_CONDITIONAL(USE_PEFLAGS, [test "${enable_peflags}" = "yes"])
421
422 dnl
423 dnl Sadly autoconf doesn't think about testing foo.exe when ask to test
424 dnl for program foo on win32
425
426 case "${build_os}" in
427     cygwin|msys)
428         ac_executable_extensions=".exe"
429     ;;
430     *)
431     ;;
432 esac
433
434 dnl
435 dnl  Libtool
436 dnl  It's very bad, but our former custom system was worst
437 dnl  -- Courmisch
438 dnl
439
440 dnl override platform specific check for dependent libraries
441 dnl otherwise libtool linking of shared libraries will
442 dnl fail on anything other than pass_all.
443 AC_CACHE_VAL(lt_cv_deplibs_check_method,
444     [lt_cv_deplibs_check_method=pass_all])
445
446 AC_DISABLE_STATIC
447 dnl AC_DISABLE_FAST_INSTALL
448 AC_LIBTOOL_DLOPEN
449 AC_LIBTOOL_WIN32_DLL
450 m4_undefine([AC_PROG_F77])
451 m4_defun([AC_PROG_F77],[])
452 AC_PROG_LIBTOOL
453
454 m4_undefine([AC_DEPLIBS_CHECK_METHOD])
455 m4_defun([AC_DEPLIBS_CHECK_METHOD],[])
456
457 lt_cv_deplibs_check_method=pass_all
458
459 AS_IF([test "${enable_shared}" = "no"], [
460   AC_MSG_ERROR([VLC is based on plugins. Shared libraries cannot be disabled.])
461 ])
462
463 dnl
464 dnl Gettext stuff
465 dnl
466 AM_GNU_GETTEXT_VERSION([0.17])
467 AM_GNU_GETTEXT([external])
468 VLC_ADD_LIBS([libvlccore vlc], [${LTLIBINTL}])
469
470 dnl
471 dnl Iconv stuff
472 dnl
473 AM_ICONV
474 VLC_ADD_CFLAGS([libvlccore],[${INCICONV}])
475 VLC_ADD_LIBS([libvlccore],[${LTLIBICONV}])
476
477 dnl Check for broken versions of mingw-runtime compatability library
478 AS_IF([test "${SYS}" = "mingw32" -o "${SYS}" = "mingwce"], [
479     AC_MSG_CHECKING(for broken mingw-runtime)
480     AC_PREPROC_IFELSE([
481 #include <_mingw.h>
482 #if (__MINGW32_MAJOR_VERSION == 3) && (__MINGW32_MINOR_VERSION < 15)
483 # error Attempting to use mingw-runtime with broken vsnprintf support
484 #endif
485 ], [
486         AC_MSG_RESULT([ok])
487 ], [
488         AC_MSG_RESULT([present])
489         AC_MSG_ERROR([LibVLC requires mingw-runtime version 3.15 or higher!])
490 ])
491     dnl force use of mingw provided c99 *printf over msvcrt
492     CPPFLAGS="${CPPFLAGS} -D__USE_MINGW_ANSI_STDIO=1"
493     CPPFLAGS_save="${CPPFLAGS_save} -D__USE_MINGW_ANSI_STDIO=1"
494 ])
495
496 dnl Check for the need to include the mingwex lib for mingw32
497 if test "${SYS}" = "mingw32"
498 then
499     AC_CHECK_LIB(mingwex,opendir,
500         AC_CHECK_LIB(mingw32,opendir,,
501             [VLC_ADD_LIBS([libvlccore],[-lmingwex])])
502     )
503 fi
504
505 dnl Check for fnative-struct or mms-bitfields support for mingw32
506 if test "${SYS}" = "mingw32"
507 then
508     AC_CACHE_CHECK([if \$CC accepts -mms-bitfields],
509         [ac_cv_c_mms_bitfields],
510         [CFLAGS="${CFLAGS_save} -mms-bitfields"
511          AC_TRY_COMPILE([],,ac_cv_c_mms_bitfields=yes, ac_cv_c_mms_bitfields=no)])
512     if test "${ac_cv_c_mms_bitfields}" != "no"; then
513         CFLAGS_save="${CFLAGS_save} -mms-bitfields";
514         CXXFLAGS_save="${CXXFLAGS_save} -mms-bitfields";
515     else
516         AC_CACHE_CHECK([if \$CC accepts -fnative-struct],
517             [ac_cv_c_fnative_struct],
518             [CFLAGS="${CFLAGS_save} -fnative-struct"
519              AC_TRY_COMPILE([],,ac_cv_c_fnative_struct=yes, ac_cv_c_fnative_struct=no)])
520         if test "${ac_cv_c_fnative_struct}" != "no"; then
521             CFLAGS_save="${CFLAGS_save} -fnative-struct";
522             CXXFLAGS_save="${CXXFLAGS_save} -fnative-struct";
523         fi
524     fi
525
526     CFLAGS="${CFLAGS_save}"; CXXFLAGS="${CXXFLAGS_save}"
527 fi
528
529 dnl Check for fvtable-thunks support for mingw32
530 if test "${SYS}" = "mingw32" -a "${CXX}" != ""
531 then
532 AC_LANG_PUSH(C++)
533     AC_CACHE_CHECK([if \$CXX accepts -fvtable-thunks],
534         [ac_cv_cxx_fvtable_thunks],
535         [CXXFLAGS="${CXXFLAGS_save} -Wall -Werror -fvtable-thunks"
536          AC_TRY_COMPILE([],,ac_cv_cxx_fvtable_thunks=yes,
537                         ac_cv_cxx_fvtable_thunks=no)])
538     if test "${ac_cv_cxx_fvtable_thunks}" = "yes"; then
539         CXXFLAGS_mingw32_special="-fvtable-thunks"
540     fi
541
542     CXXFLAGS_save="${CXXFLAGS_save} ${CXXFLAGS_mingw32_special}"; CXXFLAGS="${CXXFLAGS_save}"
543 AC_LANG_POP(C++)
544 fi
545
546 dnl
547 dnl Buggy glibc prevention. Purposedly not cached.
548 dnl See sourceware.org bugs 5058 and 5443.
549 dnl Ubuntu alone has 20 bug numbers for this...
550 dnl
551 AC_MSG_CHECKING(for buggy GNU/libc versions)
552 AC_PREPROC_IFELSE([
553 #include <limits.h>
554 #if defined (__GLIBC__) && (__GLIBC__ == 2) \
555   && (__GLIBC_MINOR__ >= 5) && (__GLIBC_MINOR__ <= 7)
556 # error GNU/libc with dcgettext killer bug!
557 #endif
558 ], [
559   AC_MSG_RESULT([not present])
560 ], [
561   AC_MSG_RESULT([found])
562   AS_IF([test "x${enable_nls}" != "xno" || test "x${enable_mozilla}" != "xno"], [
563     AC_MSG_ERROR([Buggy GNU/libc (version 2.5 - 2.7) present. VLC would crash; there is no viable
564 work-around for this. Check with your distribution vendor on how to update the
565 glibc run-time. Alternatively, build with --disable-nls --disable-mozilla and
566 be sure to not use LibVLC from other applications/wrappers.])
567   ], [
568     AC_DEFINE(DISABLE_BUGGY_GLIBC_CHECK, 1, [Disables runtime check for buggy glibc.])
569   ])
570 ])
571
572 dnl Plugin compilation stuff
573
574 VLC_LIBRARY_SUFFIX
575
576 dnl The -DSYS_FOO flag
577 CPPFLAGS_save="${CPPFLAGS_save} -DSYS_`echo ${SYS} | sed -e 's/-.*//' | tr 'abcdefghijklmnopqrstuvwxyz.' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ_'`"; CPPFLAGS="${CPPFLAGS_save}"
578
579 dnl Check for system libs needed
580 need_libc=false
581
582 dnl Check for usual libc functions
583 AC_CHECK_FUNCS([gettimeofday isatty sigrelse getpwuid_r memalign posix_memalign if_nametoindex getenv putenv setenv ctime_r daemon fork lstat posix_fadvise posix_madvise uselocale])
584 AC_CHECK_FUNCS(fcntl)
585 AC_REPLACE_FUNCS([asprintf atof atoll getcwd getpid gmtime_r lldiv localtime_r rewind strcasecmp strcasestr strdup strlcpy strncasecmp strndup strnlen strsep strtof strtok_r strtoll vasprintf swab tdestroy])
586 AC_CHECK_FUNCS([stricmp strnicmp])
587 AC_CHECK_FUNCS(fdatasync,,
588   [AC_DEFINE(fdatasync, fsync, [Alias fdatasync() to fsync() if missing.])
589 ])
590
591 dnl Check for non-standard system calls
592 AC_CHECK_FUNCS([vmsplice eventfd fstatfs accept4])
593
594 AH_BOTTOM([#include <vlc_fixups.h>])
595
596 AC_CHECK_FUNCS(mmap, [VLC_ADD_PLUGIN([access_mmap])])
597
598 dnl Check for setlocal and langinfo
599 AC_CHECK_FUNCS(setlocale)
600 AC_CHECK_HEADERS(langinfo.h)
601 AC_CHECK_FUNCS(nl_langinfo)
602
603 AC_CACHE_CHECK([for nl_langinfo and CODESET], ac_cv_langinfo_codeset,
604   [AC_TRY_LINK([#include <langinfo.h>],
605     [char* cs = nl_langinfo(CODESET);],
606     ac_cv_langinfo_codeset=yes,
607     ac_cv_langinfo_codeset=no)
608   ])
609 if test ${ac_cv_langinfo_codeset} = yes; then
610   AC_DEFINE(HAVE_LANGINFO_CODESET, 1,
611     [Define if you have <langinfo.h> and nl_langinfo(CODESET).])
612 fi
613
614 SOCKET_LIBS=""
615 AC_CHECK_FUNCS(connect,,[
616   AC_CHECK_LIB(socket,connect,[
617     VLC_ADD_LIBS([libvlccore cdda cddax],-lsocket)
618     SOCKET_LIBS="-lsocket"
619   ])
620 ])
621 AC_SUBST(SOCKET_LIBS)
622
623 AC_CHECK_FUNCS(send,,[
624   AC_CHECK_LIB(socket,send,[
625     VLC_ADD_LIBS([access_http access_mms access_udp access_tcp access_ftp access_rtmp sap access_output_udp access_output_rtmp stream_out_standard growl_udp remoteosd],[-lsocket])
626   ])
627 ])
628
629
630 dnl Check for socklen_t
631 AH_TEMPLATE(socklen_t, [Define to `int' if <sys/socket.h> does not define.])
632 AC_CACHE_CHECK([for socklen_t in sys/socket.h],
633 ac_cv_type_socklen_t,
634 [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([
635 [#include <sys/types.h>
636 #ifdef WIN32
637 # include <winsock2.h>
638 # include <ws2tcpip.h>
639 #else
640 # include <sys/socket.h>
641 #endif]], [[socklen_t len; len = 0;]])],
642 ac_cv_type_socklen_t=yes,
643 ac_cv_type_socklen_t=no)])
644 AS_IF([test "$ac_cv_type_socklen_t" = no],
645  [AC_DEFINE(socklen_t, int)])
646
647 dnl Check for struct sockaddr_storage
648 AH_TEMPLATE(sockaddr_storage, [Define to `sockaddr' if <sys/socket.h> does not define.])
649 AH_TEMPLATE(ss_family, [Define to `sa_family' if <sys/socket.h> does not define.])
650 AC_CACHE_CHECK([for struct sockaddr_storage], ac_cv_struct_sockaddr_storage,
651   [AC_TRY_COMPILE(
652     [#include <sys/types.h>
653      #if defined( UNDER_CE )
654      # include <winsock2.h>
655      #elif defined( WIN32 )
656      # include <winsock2.h>
657      #else
658      # include <sys/socket.h>
659      #endif], [struct sockaddr_storage addr;],
660      ac_cv_struct_sockaddr_storage=yes,
661      ac_cv_struct_sockaddr_storage=no)])
662 AS_IF([test "${ac_cv_struct_sockaddr_storage}" = no], [
663   AC_DEFINE(sockaddr_storage, sockaddr)
664   AC_DEFINE(ss_family, sa_family)
665 ])
666
667 dnl getaddrinfo, getnameinfo and gai_strerror check
668 dnl  -lnsl and -lsocket are needed on Solaris;
669 dnl  we purposedly make the test fail on Windows
670 LIBS_save="${LIBS}"
671 AH_TEMPLATE(HAVE_GETADDRINFO, [Define to 1 if you have the `getaddrinfo' function.])
672 AC_SEARCH_LIBS([getaddrinfo], [nsl], [AC_DEFINE(HAVE_GETADDRINFO)],, [${SOCKET_LIBS}])
673
674 dnl NOTE: we assume getaddrinfo will be present if getnameinfo or gai_strerro
675 dnl are
676 LIBS="${LIBS_gai}"
677 AC_CHECK_FUNCS([getnameinfo gai_strerror])
678 LIBS="${LIBS_save}"
679
680 AH_TEMPLATE(HAVE_ADDRINFO, [Define to 1 if <netdb.h> defines `struct addrinfo'.])
681 AC_CHECK_TYPES([struct addrinfo],[AC_DEFINE(HAVE_ADDRINFO)],,
682 [#include <sys/types.h>
683 #if defined( WIN32 ) || defined( UNDER_CE )
684 # if defined(UNDER_CE) && defined(sockaddr_storage)
685 #  undef sockaddr_storage
686 # endif
687 # include <winsock2.h>
688 # include <ws2tcpip.h>
689 #else
690 # include <netdb.h>
691 #endif])
692
693 dnl Check for va_copy
694 AC_CACHE_CHECK([for va_copy], ac_cv_c_va_copy,
695   AC_TRY_LINK(
696     [#include <stdarg.h>],
697     [va_list ap1, ap2; va_copy(ap1,ap2);],
698     [ac_cv_c_va_copy="yes"],
699     [ac_cv_c_va_copy="no"]))
700 if test "${ac_cv_c_va_copy}" = "yes"; then
701   AC_DEFINE(HAVE_VA_COPY, 1, [Define if <stdarg.h> defines va_copy.])
702 fi
703 AC_CACHE_CHECK([for __va_copy], ac_cv_c___va_copy,
704   AC_TRY_LINK(
705     [#include <stdarg.h>],
706     [va_list ap1, ap2; __va_copy(ap1,ap2);],
707     [ac_cv_c___va_copy="yes"],
708     [ac_cv_c___va_copy="no"]))
709 if test "${ac_cv_c___va_copy}" = "yes"; then
710   AC_DEFINE(HAVE___VA_COPY, 1, [Define if <stdarg.h> defines __va_copy.])
711 fi
712
713 AC_CHECK_FUNCS(inet_aton,,[
714   AC_CHECK_LIB(resolv,inet_aton,[
715     VLC_ADD_LIBS([libvlccore],[-lresolv])
716   ])
717 ])
718
719 dnl Check for getopt (always use builtin one on win32)
720 if test "${SYS}" = "mingw32" -o "${SYS}" = "mingwce"; then
721 need_getopt=:
722 else
723 need_getopt=false
724 AC_CHECK_FUNCS(getopt_long,[AC_DEFINE(HAVE_GETOPT_LONG,1,long getopt support)],
725 [ # FreeBSD has a gnugetopt library for this:
726   AC_CHECK_LIB([gnugetopt],[getopt_long],
727     [AC_DEFINE(HAVE_GETOPT_LONG,1,getopt support)
728      VLC_ADD_LIBS([libvlccore],[-lgnugetopt])],
729     [need_getopt=:])])
730 fi
731 AM_CONDITIONAL(BUILD_GETOPT, ${need_getopt})
732
733 if test "${SYS}" != "mingw32" -a "${SYS}" != "mingwce"; then
734 AC_TYPE_SIGNAL
735 AC_CHECK_LIB(m,cos,[
736   VLC_ADD_LIBS([adjust wave ripple psychedelic gradient a52tofloat32 dtstofloat32 x264 goom visual panoramix rotate noise grain scene kate flac lua chorus_flanger],[-lm])
737 ])
738 AC_CHECK_LIB(m,pow,[
739   VLC_ADD_LIBS([avcodec avformat swscale postproc ffmpegaltivec i420_rgb faad twolame equalizer spatializer param_eq libvlccore freetype mod mpc dmo quicktime realaudio realvideo opengl],[-lm])
740 ])
741 AC_CHECK_LIB(m,sqrt,[
742   VLC_ADD_LIBS([headphone_channel_mixer normvol audiobargraph_a speex mono colorthres extract],[-lm])
743 ])
744 AC_CHECK_LIB(m,ceil,[
745   VLC_ADD_LIBS([access_imem hotkeys mosaic swscale_omap],[-lm])
746 ])
747 AC_CHECK_LIB(m,exp,[
748   VLC_ADD_LIBS([gaussianblur],[-lm])
749 ])
750 AC_CHECK_LIB(m,round,[
751   VLC_ADD_LIBS([dbus],[-lm])
752 ])
753 AC_CHECK_LIB(m,sqrtf,[
754   VLC_ADD_LIBS([x264],[-lm])
755 ])
756 fi # end "${SYS}" != "mingw32" -a "${SYS}" != "mingwce"
757
758 AC_CHECK_LIB(m,lrintf, [
759   AC_DEFINE(HAVE_LRINTF, 1, [Define to 1 if you have the lrintf function])
760   VLC_ADD_LIBS([skins2],[-lm])
761 ])
762
763 dnl Check for dynamic plugins
764 ac_cv_have_plugins=no
765
766 # HP-UX style
767 if test "${ac_cv_have_plugins}" = "no"; then
768   AC_CHECK_HEADERS(dl.h)
769   ac_cv_my_have_shl_load=no
770   AC_CHECK_FUNC(shl_load,
771    [ac_cv_my_have_shl_load=yes,
772     AC_CHECK_LIB(dld, shl_load,
773      [ac_cv_my_have_shl_load=yes
774       VLC_ADD_LIBS([libvlccore],[-ldld])])])
775   if test "${ac_cv_my_have_shl_load}" = "yes"; then
776     AC_DEFINE(HAVE_DL_SHL_LOAD, 1, [Define if you have the shl_load API])
777     ac_cv_have_plugins=yes
778   fi
779 fi
780
781 # Win32 style
782 if test "${ac_cv_have_plugins}" = "no"; then
783   if test "${SYS}" = "mingw32" ; then
784     AC_CHECK_LIB(kernel32, main,
785      [VLC_ADD_LIBS([libvlccore],[-lkernel32])
786       AC_DEFINE(HAVE_DL_WINDOWS, 1, [Define if you have Windows' LoadLibrary])
787       ac_cv_have_plugins=yes])
788   fi
789 fi
790
791 # WinCE style
792 if test "${ac_cv_have_plugins}" = "no"; then
793   if test "${SYS}" = "mingwce"; then
794     AC_DEFINE(HAVE_DL_WINDOWS, 1, [Define if you have Windows' LoadLibrary])
795     ac_cv_have_plugins=yes
796   fi
797 fi
798
799 # BeOS style
800 if test "${ac_cv_have_plugins}" = "no"; then
801   AC_CHECK_HEADERS(image.h)
802   AC_CHECK_FUNCS(load_add_on,
803    [AC_DEFINE(HAVE_DL_BEOS, 1, [Define if you have the BeOS dl])
804     ac_cv_have_plugins=yes])
805 fi
806
807 # Only test for dlopen() if the others didn't work
808 if test "${ac_cv_have_plugins}" = "no" -o "${SYS}" = "darwin"; then
809   AC_CHECK_HEADERS(dlfcn.h sys/dl.h)
810   ac_cv_my_have_dlopen=no
811   AC_CHECK_FUNC(dlopen,
812     ac_cv_my_have_dlopen=yes,
813     AC_CHECK_LIB(dl, dlopen,
814       ac_cv_my_have_dlopen=yes
815       VLC_ADD_LIBS([libvlccore realaudio realvideo lua],[-ldl]),
816       AC_CHECK_LIB(svld, dlopen,
817         ac_cv_my_have_dlopen=yes
818         VLC_ADD_LIBS([libvlccore],[-lsvld]))))
819   if test "${ac_cv_my_have_dlopen}" = "yes"; then
820     AC_DEFINE(HAVE_DL_DLOPEN, 1, [Define if you have the dlopen API])
821     ac_cv_have_plugins=yes
822   fi
823 fi
824
825 if test "${SYS}" != "mingw32" -a "${SYS}" != "mingwce"; then
826 dnl Check for pthreads - borrowed from XMMS
827 THREAD_LIB=error
828 if test "${THREAD_LIB}" = "error"; then
829   AC_CHECK_LIB(pthread,main,THREAD_LIB="-lpthread")
830 fi
831 if test "${THREAD_LIB}" = "error"; then
832   AC_CHECK_LIB(pthreads,main,THREAD_LIB="-lpthreads")
833 fi
834 if test "${THREAD_LIB}" = "error"; then
835   AC_CHECK_LIB(c_r,main,THREAD_LIB="-lc_r")
836 fi
837 if test "${THREAD_LIB}" = "error"; then
838   AC_CHECK_FUNCS(pthread_mutex_lock)
839   THREAD_LIB=""
840 fi
841
842 VLC_ADD_LIBS([libvlccore libvlc plugin],[${THREAD_LIB}])
843
844 AC_CHECK_LIB(rt, clock_nanosleep, [
845   VLC_ADD_LIBS([libvlccore],[-lrt])
846   AC_DEFINE(HAVE_CLOCK_NANOSLEEP, 1, [Define to 1 if you have clock_nanosleep.])
847 ], [
848   dnl HP/UX port
849   AC_CHECK_LIB(rt,sem_init, [VLC_ADD_LIBS([libvlccore],[-lrt])])
850 ])
851
852 have_nanosleep=false
853 AC_CHECK_FUNCS(nanosleep,have_nanosleep=:,[
854   AC_CHECK_LIB(rt,nanosleep,
855     [VLC_ADD_LIBS([libvlccore],[-lrt]) have_nanosleep=:],
856     [AC_CHECK_LIB(posix4,nanosleep,
857         [VLC_ADD_LIBS([libvlccore],[-lposix4]) have_nanosleep=:])]
858   )
859 ])
860 if ${have_nanosleep}; then
861   AC_DEFINE(HAVE_NANOSLEEP, 1, [Define if nanosleep is available.])
862 fi
863 fi # end "${SYS}" != "mingw32" -a "${SYS}" != "mingwce"
864
865 dnl Check for misc headers
866 AC_MSG_CHECKING(for strncasecmp in strings.h)
867 AC_EGREP_HEADER(strncasecmp,strings.h,[
868   AC_MSG_RESULT(yes)
869   AC_DEFINE(STRNCASECMP_IN_STRINGS_H, 1,
870             Define if <strings.h> defines strncasecmp.)],[
871   AC_MSG_RESULT(no)])
872
873 dnl Check for headers
874 AC_CHECK_HEADERS(getopt.h strings.h locale.h xlocale.h)
875 AC_CHECK_HEADERS(fcntl.h sys/types.h sys/time.h sys/times.h sys/ioctl.h sys/stat.h sys/mount.h)
876 AC_CHECK_HEADERS([arpa/inet.h netinet/in.h netinet/udplite.h sys/eventfd.h])
877 AC_CHECK_HEADERS([net/if.h], [], [],
878   [
879     #include <sys/types.h>
880     #include <sys/socket.h>
881   ])
882 if test "${SYS}" != "mingw32" -a "${SYS}" != "mingwce"; then
883 AC_CHECK_HEADERS(machine/param.h sys/shm.h)
884 AC_CHECK_HEADERS([linux/version.h linux/dccp.h scsi/scsi.h linux/magic.h])
885 AC_CHECK_HEADERS(syslog.h)
886 fi # end "${SYS}" != "mingw32" -a "${SYS}" != "mingwce"
887
888 AC_HEADER_TIME
889
890 dnl LP64 adn LLP64 architectures had better define ssize_t by themselves...
891 AH_TEMPLATE(ssize_t, [Define to `int' if <stddef.h> does not define.])
892 AC_CHECK_TYPE(ssize_t,, [
893   AC_DEFINE(ssize_t, int)
894 ])
895
896 dnl Check for poll
897 AC_SEARCH_LIBS(poll, [poll], [AC_DEFINE(HAVE_POLL, 1, [Define to 1 if the OS is usabl... err, has poll().])], [
898 if test ${SYS} != "mingw32" -a ${SYS} != "mingwce"
899 then
900     AC_MSG_WARN([Your platform does not support poll(). VLC has it's own poll() implementation, but it is only intended to be used on Windows. VLC might crash or be insecure when you see this message. Either switch to an OS with a proper poll() implementation, or implement one for your OS in VLC])
901 fi
902 ])
903
904 dnl Check for dirent
905 need_dirent=false
906 AC_CHECK_HEADERS(dirent.h,,[need_dirent=:])
907 AM_CONDITIONAL(BUILD_DIRENT, ${need_dirent})
908
909 dnl Mac OS X and other OSes don't have declaration for nanosleep
910 if test "${SYS}" != "mingw32" -a "${SYS}" != "mingwce"; then
911 AC_MSG_CHECKING(for nanosleep in time.h)
912 AC_EGREP_HEADER(nanosleep,time.h,[
913   AC_MSG_RESULT(yes)
914   AC_DEFINE(HAVE_DECL_NANOSLEEP, 1,
915             Define if <time.h> defines nanosleep.)
916 ],[
917   AC_MSG_RESULT(no)
918 ])
919 fi # end "${SYS}" != "mingw32" -a "${SYS}" != "mingwce"
920
921 dnl Make sure we have timespecs
922 AC_MSG_CHECKING(for timespec in sys/time.h)
923 AC_EGREP_HEADER(timespec,sys/time.h,[
924   AC_MSG_RESULT(yes)
925   AC_DEFINE(HAVE_STRUCT_TIMESPEC, 1,
926             Define if <sys/time.h> defines struct timespec.)
927 ],[
928   AC_MSG_RESULT(no)
929 ])
930
931 dnl Check for threads library
932 if test "${SYS}" != "mingw32" -a "${SYS}" != "mingwce"; then
933 AC_CHECK_HEADERS(pthread.h)
934 fi # end "${SYS}" != "mingw32" -a "${SYS}" != "mingwce"
935
936 dnl It seems that autoconf detects pkg-config only during the first
937 dnl PKG_CHECK_MODULES from configure.ac - which makes sense. But in our case,
938 dnl it is nested within a conditional block, so it was not working right.
939 dnl Make PKG_CONFIG_PATH precious so that it appears in the help and get saved
940 AC_ARG_VAR(PKG_CONFIG_PATH,
941            [Paths where to find .pc not at the default location])
942 PKG_PROG_PKG_CONFIG()
943
944 dnl On some OS we need static linking 
945        AS_IF([test -n "${PKG_CONFIG}" ],[
946               AS_IF([test "${SYS}" = "mingw32" -o "${SYS}" = "mingwce" -o "${SYS}" = "darwin" ],[
947                   PKG_CONFIG="${PKG_CONFIG} --static"
948               ])
949        ])
950
951
952 dnl
953 dnl Check for zlib.h and -lz along with system -lminizip if available
954 dnl 
955 AC_CHECK_HEADERS(zlib.h, [ have_zlib=yes ], [ have_zlib=no ])
956 AM_CONDITIONAL(HAVE_ZLIB, [ test "${have_zlib}" = "yes" ])
957 if test "${have_zlib}" = "yes"
958 then
959   VLC_ADD_LIBS([access_http gme mp4 skins2 sap mkv unzip zip],[-lz])
960   PKG_CHECK_MODULES([MINIZIP], [minizip] , [ have_minizip=yes ], [
961     AC_CHECK_HEADERS([unzip.h], [ 
962       have_minizip=yes
963       MINIZIP_LIBS="-lminizip -lz"
964     ], [
965       have_minizip=no
966       MINIZIP_CFLAGS="-I\\\${top_srcdir}/libs/unzip"
967       MINIZIP_LIBS="\\\${top_builddir}/libs/unzip/libunzip.la"
968     ])
969   ])
970   VLC_ADD_CPPFLAGS([skins2],[$MINIZIP_CFLAGS])
971   VLC_ADD_CFLAGS([zip],[$MINIZIP_CFLAGS])
972   VLC_ADD_LIBS([skins2 zip],[$MINIZIP_LIBS])
973   VLC_ADD_PLUGIN([unzip])
974   VLC_ADD_PLUGIN([zip])
975 fi
976 AM_CONDITIONAL(HAVE_MINIZIP, [ test "${have_minizip}" = "yes" ])
977
978
979 dnl Check for dbus
980 AC_ARG_ENABLE(dbus,
981   [  --enable-dbus           Linux D-BUS message bus system (default enabled)])
982 case "${SYS}" in
983     linux*|*bsd*)
984 if test "${enable_dbus}" != "no" -a "${SYS}" != "mingw32" -a "${SYS}" != "mingwce"
985 then
986   dnl api stable dbus
987   PKG_CHECK_MODULES(DBUS, dbus-1 >= 1.0.0,
988     [ AC_DEFINE( HAVE_DBUS, 1, [Define if you have the D-BUS library] )
989       VLC_ADD_LIBS([libvlccore],[$DBUS_LIBS])
990       VLC_ADD_CFLAGS([libvlccore],[$DBUS_CFLAGS])
991       dnl Check for dbus control interface
992         AC_ARG_ENABLE(dbus-control, [  --disable-dbus-control  D-BUS control interface (default enabled)])
993         if test "${enable_dbus_control}" != "no"
994         then
995           VLC_ADD_PLUGIN([dbus])
996           VLC_ADD_LIBS([dbus],[$DBUS_LIBS])
997           VLC_ADD_CFLAGS([dbus],[$DBUS_CFLAGS])
998         fi
999       dnl Check for Telepathy
1000         AC_ARG_ENABLE(telepathy,
1001           AS_HELP_STRING([--enable-telepathy],[Telepathy Presence plugin through DBus(default enabled)]))
1002         if test "${enable_telepathy}" != "no"; then
1003           VLC_ADD_PLUGIN([telepathy])
1004           VLC_ADD_LIBS([telepathy],[$DBUS_LIBS])
1005           VLC_ADD_CFLAGS([telepathy],[$DBUS_CFLAGS])
1006         fi
1007         dnl Power Management Inhibiter
1008         VLC_ADD_PLUGIN([inhibit])
1009         VLC_ADD_LIBS([inhibit],[$DBUS_LIBS])
1010         VLC_ADD_CFLAGS([inhibit],[$DBUS_CFLAGS])
1011     ],
1012     [AC_MSG_ERROR([Couldn't find DBus >= 1.0.0, install libdbus-dev ?])]
1013   )
1014 fi
1015 ;;
1016 esac
1017
1018 dnl build the qte plugin ?
1019 NEED_QTE_MAIN=no
1020
1021 dnl Check for ntohl, etc.
1022 AC_CACHE_CHECK([for ntohl in sys/param.h],
1023     [ac_cv_c_ntohl_sys_param_h],
1024     [CFLAGS="${CFLAGS_save} -Wall -Werror"
1025      AC_TRY_COMPILE([#include <sys/param.h>],
1026         [int meuh; ntohl(meuh);],
1027         ac_cv_c_ntohl_sys_param_h=yes, ac_cv_c_ntohl_sys_param_h=no)])
1028 if test "${ac_cv_c_ntohl_sys_param_h}" != "no"; then
1029     AC_DEFINE(NTOHL_IN_SYS_PARAM_H, 1, Define if <sys/param.h> defines ntohl.)
1030 fi
1031 CFLAGS="${CFLAGS_save}"
1032
1033 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])
1034 RDC_PROG_CC_FLAGS([-pipe])
1035
1036 AC_ARG_ENABLE(warnings-as-error,
1037       AS_HELP_STRING([--enable-warnings-as-error],[Treat acceptable warnings as error (default disabled)]),, [enable_warnings_as_error="no"])
1038 AS_IF([test "${enable_warnings_as_error}" = "yes"], [
1039     RDC_PROG_CC_WERRORFLAGS([unused-function unused-label unused-value unused-parameter unused-variable unused \
1040      missing-braces nonnull parentheses uninitialized address enum-compare undef comment switch \
1041      bad-function-cast implicit sequence-point strict-aliasing array-bounds missing-parameter-type \
1042      overflow int-to-pointer-cast pointer-to-int-cast div-by-zero overflow ignored])
1043 ])
1044 AC_SUBST(CFLAGS_WERROR)
1045
1046 dnl Check for various optimization flags
1047 AC_CACHE_CHECK([if \$CC accepts -Os],
1048     [ac_cv_c_os],
1049     [CFLAGS="${CFLAGS_save} -Os"
1050      AC_TRY_COMPILE([],,ac_cv_c_os=yes, ac_cv_c_os=no)])
1051 if test "${ac_cv_c_os}" != "no"; then
1052     CFLAGS_OPTIM_SIZE="${CFLAGS_OPTIM_SIZE} -Os"
1053 else
1054     AC_CACHE_CHECK([if \$CC accepts -O],
1055         [ac_cv_c_o],
1056         [CFLAGS="${CFLAGS_save} -O"
1057          AC_TRY_COMPILE([],,ac_cv_c_o=yes, ac_cv_c_o=no)])
1058     if test "${ac_cv_c_o}" != "no"; then
1059         if test "${ac_cv_c_o3}" = "no"; then
1060             CFLAGS_OPTIM_SIZE="${CFLAGS_OPTIM_SIZE} -O"
1061         fi
1062     fi
1063 fi
1064
1065 AC_CACHE_CHECK([if \$CC accepts -O4],
1066     [ac_cv_c_o4],
1067     [CFLAGS="${CFLAGS_save} -O4"
1068      AC_TRY_COMPILE([],,ac_cv_c_o4=yes, ac_cv_c_o4=no)])
1069 if test "${ac_cv_c_o4}" != "no" -a "x${enable_debug}" = "xno"; then
1070     CFLAGS_OPTIM_SPEED="${CFLAGS_OPTIM_SPEED} -O4"
1071 else
1072     AC_CACHE_CHECK([if \$CC accepts -O3],
1073         [ac_cv_c_o3],
1074         [CFLAGS="${CFLAGS_save} -O3"
1075          AC_TRY_COMPILE([],,ac_cv_c_o3=yes, ac_cv_c_o3=no)])
1076     if test "${ac_cv_c_o3}" != "no" -a "x${enable_debug}" = "xno"; then
1077         CFLAGS_OPTIM_SPEED="${CFLAGS_OPTIM_SPEED} -O3"
1078     else
1079         AC_CACHE_CHECK([if \$CC accepts -O2],
1080             [ac_cv_c_o2],
1081             [CFLAGS="${CFLAGS_save} -O2"
1082              AC_TRY_COMPILE([],,ac_cv_c_o2=yes, ac_cv_c_o2=no)])
1083         if test "${ac_cv_c_o2}" != "no"; then
1084             CFLAGS_OPTIM_SPEED="${CFLAGS_OPTIM_SPEED} -O2"
1085         else
1086             AC_CACHE_CHECK([if \$CC accepts -O],
1087                 [ac_cv_c_o],
1088                 [CFLAGS="${CFLAGS_save} -O"
1089                  AC_TRY_COMPILE([],,ac_cv_c_o=yes, ac_cv_c_o=no)])
1090             if test "${ac_cv_c_o}" != "no"; then
1091                 CFLAGS_OPTIM_SPEED="${CFLAGS_OPTIM_SPEED} -O"
1092             fi
1093         fi
1094     fi
1095 fi
1096
1097 AC_CACHE_CHECK([if \$CC accepts -O0],
1098     [ac_cv_c_o0],
1099     [CFLAGS="${CFLAGS_save} -O0"
1100      AC_TRY_COMPILE([],,ac_cv_c_o0=yes, ac_cv_c_o0=no)])
1101 if test "${ac_cv_c_o0}" != "no"; then
1102     CFLAGS_NOOPTIM="${CFLAGS_NOOPTIM} -O0"
1103 fi
1104
1105 dnl Check for -ffast-math
1106 AC_CACHE_CHECK([if \$CC accepts -ffast-math],
1107     [ac_cv_c_fast_math],
1108     [CFLAGS="${CFLAGS_save} -ffast-math"
1109      AC_TRY_COMPILE([],,ac_cv_c_fast_math=yes, ac_cv_c_fast_math=no)])
1110 if test "${ac_cv_c_fast_math}" != "no"; then
1111     CFLAGS_OPTIM_SPEED="${CFLAGS_OPTIM_SPEED} -ffast-math"
1112 fi
1113
1114 dnl Check for -funroll-loops
1115 dnl Disabled on BeOS because BeOS' gcc is buggy and may crash with it
1116 if test "${SYS}" != "beos"
1117 then
1118   AC_CACHE_CHECK([if \$CC accepts -funroll-loops],
1119       [ac_cv_c_unroll_loops],
1120       [CFLAGS="${CFLAGS_save} -funroll-loops"
1121        AC_TRY_COMPILE([],,ac_cv_c_unroll_loops=yes, ac_cv_c_unroll_loops=no)])
1122   if test "${ac_cv_c_unroll_loops}" != "no"; then
1123       CFLAGS_OPTIM_SPEED="${CFLAGS_OPTIM_SPEED} -funroll-loops"
1124   fi
1125 fi
1126
1127 dnl Check for -fomit-frame-pointer
1128 AC_CACHE_CHECK([if \$CC accepts -fomit-frame-pointer],
1129     [ac_cv_c_omit_frame_pointer],
1130     [CFLAGS="${CFLAGS_save} -fomit-frame-pointer"
1131      AC_TRY_COMPILE([],,ac_cv_c_omit_frame_pointer=yes, ac_cv_c_omit_frame_pointer=no)])
1132 if test "${ac_cv_c_omit_frame_pointer}" != "no"; then
1133  if test "${SYS}" != "darwin"; then
1134     CFLAGS_OPTIM_NODEBUG="${CFLAGS_OPTIM_NODEBUG} -fomit-frame-pointer"
1135  else
1136     dnl On darwin we explicitely disable it.
1137     CFLAGS_OPTIM_NODEBUG="${CFLAGS_OPTIM_NODEBUG} -fno-omit-frame-pointer"
1138  fi
1139 fi
1140
1141 dnl Check for Darwin plugin linking flags
1142 AC_CACHE_CHECK([if \$CC accepts -bundle -undefined error],
1143     [ac_cv_ld_darwin],
1144     [CFLAGS="${CFLAGS_save} -bundle -undefined error"
1145      AC_TRY_COMPILE([],,ac_cv_ld_darwin=yes, ac_cv_ld_darwin=no)])
1146 if test "${ac_cv_ld_darwin}" != "no"; then
1147     VLC_ADD_LDFLAGS([plugin],[-bundle -undefined error])
1148 fi
1149
1150 dnl Checks for __attribute__(aligned()) directive
1151 AC_CACHE_CHECK([__attribute__ ((aligned ())) support],
1152     [ac_cv_c_attribute_aligned],
1153     [ac_cv_c_attribute_aligned=0
1154         CFLAGS="${CFLAGS_save} -Werror"
1155     for ac_cv_c_attr_align_try in 2 4 8 16 32 64; do
1156         AC_TRY_COMPILE([],
1157         [static char c __attribute__ ((aligned(${ac_cv_c_attr_align_try}))) = 0; return c;],
1158         [ac_cv_c_attribute_aligned="${ac_cv_c_attr_align_try}"])
1159     done
1160         CFLAGS="${CFLAGS_save}"])
1161 if test "${ac_cv_c_attribute_aligned}" != "0"; then
1162     AC_DEFINE_UNQUOTED([ATTRIBUTE_ALIGNED_MAX],
1163         [${ac_cv_c_attribute_aligned}],[Maximum supported data alignment])
1164 fi
1165
1166 dnl Check for __attribute__((packed))
1167 AC_CACHE_CHECK([for __attribute__((packed))],
1168   [ac_cv_c_attribute_packed],
1169   [ac_cv_c_attribute_packed=no
1170    AC_TRY_COMPILE(, [struct __attribute__((__packed__)) foo { int a; } b; (void)b;],
1171                     [ac_cv_c_attribute_packed=yes])])
1172 if test "${ac_cv_c_attribute_packed}" != "no"; then
1173   AC_DEFINE(HAVE_ATTRIBUTE_PACKED, 1, Support for __attribute__((packed)) for structs)
1174 fi
1175
1176 dnl
1177 dnl  Check the CPU
1178 dnl
1179 case "${host_cpu}" in
1180   "")
1181     ARCH=unknown
1182     ;;
1183   *)
1184     ARCH="${host_cpu}"
1185     ;;
1186 esac
1187
1188 dnl Check for backtrace() support
1189 AC_CHECK_HEADERS(execinfo.h)
1190 AC_CHECK_FUNCS(backtrace)
1191
1192 dnl
1193 dnl  Enable profiling
1194 dnl
1195 AC_ARG_ENABLE(gprof,
1196 [  --enable-gprof          gprof profiling (default disabled)])
1197 AC_ARG_ENABLE(cprof,
1198 [  --enable-cprof          cprof profiling (default disabled)])
1199 test "${enable_gprof}" != "yes" && enable_gprof="no"
1200 test "${enable_cprof}" != "yes" && enable_cprof="no"
1201
1202 dnl
1203 dnl  default modules
1204 dnl
1205 dnl Video filters:
1206 VLC_ADD_PLUGIN([deinterlace])
1207 VLC_ADD_PLUGIN([yuvp])
1208 VLC_ADD_PLUGIN([invert])
1209 VLC_ADD_PLUGIN([mirror])
1210 VLC_ADD_PLUGIN([adjust])
1211 VLC_ADD_PLUGIN([transform])
1212 VLC_ADD_PLUGIN([wave])
1213 VLC_ADD_PLUGIN([ripple])
1214 VLC_ADD_PLUGIN([psychedelic])
1215 VLC_ADD_PLUGIN([gradient])
1216 VLC_ADD_PLUGIN([motionblur])
1217 VLC_ADD_PLUGIN([rv32])
1218 VLC_ADD_PLUGIN([rotate])
1219 VLC_ADD_PLUGIN([noise])
1220 VLC_ADD_PLUGIN([grain])
1221 VLC_ADD_PLUGIN([extract])
1222 VLC_ADD_PLUGIN([sharpen])
1223 VLC_ADD_PLUGIN([croppadd])
1224 VLC_ADD_PLUGIN([canvas])
1225 VLC_ADD_PLUGIN([blendbench])
1226 VLC_ADD_PLUGIN([blend])
1227 VLC_ADD_PLUGIN([scale])
1228 VLC_ADD_PLUGIN([vmem])
1229 VLC_ADD_PLUGIN([logo])
1230 VLC_ADD_PLUGIN([audiobargraph_v])
1231 VLC_ADD_PLUGIN([magnify])
1232 VLC_ADD_PLUGIN([puzzle])
1233 VLC_ADD_PLUGIN([colorthres])
1234 VLC_ADD_PLUGIN([scene])
1235 VLC_ADD_PLUGIN([yuv])
1236
1237 ALIASES="${ALIASES} cvlc"
1238
1239 dnl
1240 dnl default modules that need g++
1241 dnl
1242 AC_LANG_PUSH(C++)
1243 VLC_ADD_PLUGIN([spatializer])
1244 AC_LANG_POP(C++)
1245
1246 if test "${SYS}" != "mingwce"; then
1247   VLC_ADD_PLUGIN([gestures])
1248   VLC_ADD_PLUGIN([rc])
1249   VLC_ADD_PLUGIN([hotkeys])
1250   VLC_ADD_PLUGIN([showintf])
1251   VLC_ADD_PLUGIN([marq])
1252   VLC_ADD_PLUGIN([podcast])
1253   VLC_ADD_PLUGIN([shout])
1254   VLC_ADD_PLUGIN([sap])
1255   VLC_ADD_PLUGIN([mediadirs])
1256   VLC_ADD_PLUGIN([fake])
1257   VLC_ADD_PLUGIN([folder])
1258   VLC_ADD_PLUGIN([rss])
1259   VLC_ADD_PLUGIN([mosaic])
1260   VLC_ADD_PLUGIN([wall])
1261   VLC_ADD_PLUGIN([motiondetect])
1262   VLC_ADD_PLUGIN([clone])
1263   VLC_ADD_PLUGIN([crop])
1264   VLC_ADD_PLUGIN([erase])
1265   VLC_ADD_PLUGIN([bluescreen])
1266   VLC_ADD_PLUGIN([alphamask])
1267   VLC_ADD_PLUGIN([gaussianblur])
1268   VLC_ADD_PLUGIN([i420_yuy2])
1269   VLC_ADD_PLUGIN([i422_yuy2])
1270   VLC_ADD_PLUGIN([i420_ymga])
1271   VLC_ADD_PLUGIN([i422_i420])
1272   VLC_ADD_PLUGIN([yuy2_i422])
1273   VLC_ADD_PLUGIN([yuy2_i420])
1274   VLC_ADD_PLUGIN([chain])
1275   VLC_ADD_PLUGIN([aout_file])
1276   VLC_ADD_PLUGIN([linear_resampler])
1277   VLC_ADD_PLUGIN([bandlimited_resampler])
1278   VLC_ADD_PLUGIN([float32_mixer])
1279   VLC_ADD_PLUGIN([spdif_mixer])
1280   VLC_ADD_PLUGIN([simple_channel_mixer])
1281   VLC_ADD_PLUGIN([dolby_surround_decoder])
1282   VLC_ADD_PLUGIN([headphone_channel_mixer])
1283   VLC_ADD_PLUGIN([normvol])
1284   VLC_ADD_PLUGIN([audiobargraph_a])
1285   VLC_ADD_PLUGIN([equalizer])
1286   VLC_ADD_PLUGIN([param_eq])
1287   VLC_ADD_PLUGIN([scaletempo])
1288   VLC_ADD_PLUGIN([a52tospdif])
1289   VLC_ADD_PLUGIN([dtstospdif])
1290   ALIASES="${ALIASES} rvlc"
1291 fi
1292
1293 if test "${SYS}" = "mingwce"; then
1294   VLC_ADD_PLUGIN([chain])
1295   VLC_ADD_PLUGIN([aout_file])
1296   VLC_ADD_PLUGIN([linear_resampler])
1297   VLC_ADD_PLUGIN([bandlimited_resampler])
1298   VLC_ADD_PLUGIN([float32_mixer])
1299   VLC_ADD_PLUGIN([spdif_mixer])
1300   VLC_ADD_PLUGIN([simple_channel_mixer])
1301   VLC_ADD_PLUGIN([headphone_channel_mixer])
1302   VLC_ADD_PLUGIN([normvol])
1303   VLC_ADD_PLUGIN([audiobargraph_a])
1304   VLC_ADD_PLUGIN([a52tospdif])
1305   VLC_ADD_PLUGIN([dtstospdif])
1306   VLC_ADD_PLUGIN([i420_yuy2])
1307   VLC_ADD_PLUGIN([i422_yuy2])
1308   VLC_ADD_PLUGIN([i420_ymga])
1309   VLC_ADD_PLUGIN([i422_i420])
1310   VLC_ADD_PLUGIN([yuy2_i422])
1311   VLC_ADD_PLUGIN([yuy2_i420])
1312 fi
1313
1314 dnl
1315 dnl Some plugins aren't useful on some platforms
1316 dnl
1317 if test "${SYS}" != "mingw32" -a "${SYS}" != "mingwce"; then
1318     VLC_ADD_PLUGIN([screensaver])
1319     VLC_ADD_PLUGIN([motion])
1320     VLC_ADD_PLUGIN([dynamicoverlay])
1321     VLC_ADD_PLUGIN([signals])
1322 elif test "${SYS}" != "mingwce"; then
1323     VLC_ADD_PLUGIN([ntservice])
1324     VLC_ADD_PLUGIN([access_smb])
1325     VLC_ADD_PLUGIN([dmo])
1326     VLC_ADD_PLUGIN([msn])
1327     VLC_ADD_LIBS([dmo],[-lole32 -luuid])
1328     VLC_ADD_PLUGIN([globalhotkeys])
1329 else
1330     VLC_ADD_PLUGIN([win32text])
1331 fi
1332 if test "${SYS}" = "darwin"; then
1333     VLC_ADD_PLUGIN([quartztext])
1334     VLC_ADD_LDFLAGS([quartztext],[-Wl,-framework,ApplicationServices])
1335 fi
1336
1337 dnl
1338 dnl  Accelerated modules
1339 dnl
1340 AC_ARG_WITH(,[])
1341 AC_ARG_WITH(,[Optimization options:])
1342
1343 dnl  Check for fully working MMX intrinsics
1344 dnl  We need support for -mmmx, we need <mmintrin.h>, and we also need a
1345 dnl  working compiler (http://gcc.gnu.org/bugzilla/show_bug.cgi?id=23963)
1346 AC_ARG_ENABLE(mmx,
1347 [  --disable-mmx           disable MMX optimizations (default auto)],,[
1348   case "${host_cpu}" in
1349     i?86|x86_64)
1350       enable_mmx="yes"
1351       ;;
1352     *)
1353       enable_mmx="no"
1354       ;;
1355   esac
1356 ])
1357 AS_IF([test "${enable_mmx}" != "no"], [
1358   ARCH="${ARCH} mmx"
1359
1360   AC_CACHE_CHECK([if $CC groks MMX intrinsics],
1361     [ac_cv_c_mmx_intrinsics],
1362     [CFLAGS="${CFLAGS_save} -O -mmmx"
1363      AC_TRY_COMPILE([#include <mmintrin.h>
1364                      #include <stdint.h>
1365                      uint64_t frobzor;],
1366                     [__m64 a, b, c;
1367                      a = b = c = (__m64)frobzor;
1368                      a = _mm_slli_pi16(a, 3);
1369                      a = _mm_adds_pi16(a, b);
1370                      c = _mm_srli_pi16(c, 8);
1371                      c = _mm_slli_pi16(c, 3);
1372                      b = _mm_adds_pi16(b, c);
1373                      a = _mm_unpacklo_pi8(a, b);
1374                      frobzor = (uint64_t)a;],
1375                     [ac_cv_c_mmx_intrinsics=yes],
1376                     [ac_cv_c_mmx_intrinsics=no])])
1377   AS_IF([test "${ac_cv_c_mmx_intrinsics}" != "no"], [
1378     AC_DEFINE(HAVE_MMX_INTRINSICS, 1,
1379               [Define to 1 if MMX intrinsics are available.])
1380     VLC_ADD_CFLAGS([memcpymmx i420_rgb_mmx i420_yuy2_mmx i422_yuy2_mmx i420_ymga_mmx],[-mmmx])
1381   ])
1382
1383   AC_CACHE_CHECK([if $CC groks MMX inline assembly],
1384     [ac_cv_mmx_inline],
1385     [CFLAGS="${CFLAGS_save}"
1386      AC_TRY_COMPILE(,[void *p;asm volatile("packuswb %%mm1,%%mm2"::"r"(p));],
1387                     ac_cv_mmx_inline=yes, ac_cv_mmx_inline=no)])
1388   AS_IF([test "${ac_cv_mmx_inline}" != "no"], [
1389     AC_DEFINE(CAN_COMPILE_MMX, 1,
1390               [Define to 1 inline MMX assembly is available.])
1391     VLC_ADD_PLUGIN([memcpymmx])
1392     VLC_ADD_PLUGIN([i420_rgb_mmx])
1393     VLC_ADD_PLUGIN([i420_yuy2_mmx])
1394     VLC_ADD_PLUGIN([i422_yuy2_mmx])
1395     VLC_ADD_PLUGIN([i420_ymga_mmx])
1396   ])
1397
1398   AC_CACHE_CHECK([if $CC groks MMX EXT inline assembly],
1399     [ac_cv_mmxext_inline],
1400     [CFLAGS="${CFLAGS_save}"
1401      AC_TRY_COMPILE(,[void *p;asm volatile("maskmovq %%mm1,%%mm2"::"r"(p));],
1402                     ac_cv_mmxext_inline=yes, ac_cv_mmxext_inline=no)])
1403   AS_IF([test "${ac_cv_mmxext_inline}" != "no"], [
1404     AC_DEFINE(CAN_COMPILE_MMXEXT, 1,
1405               [Define to 1 if MMX EXT inline assembly is available.])
1406     VLC_ADD_PLUGIN([memcpymmxext])
1407   ])
1408 ])
1409
1410 dnl  Check for fully workin SSE2 intrinsics
1411 dnl  We need support for -mmmx, we need <emmintrin.h>, and we also need a
1412 dnl  working compiler (http://gcc.gnu.org/bugzilla/show_bug.cgi?id=23963)
1413 AC_ARG_ENABLE(sse,
1414 [  --disable-sse           disable SSE (1, 2, 3 and 4) optimizations (default auto)]
1415 ,, [
1416   case "${host_cpu}" in
1417     i686|x86_64)
1418       enable_sse=yes
1419       ;;
1420     *)
1421       enable_sse=no
1422       ;;
1423   esac
1424 ])
1425 AS_IF([test "${enable_sse}" != "no"], [
1426   ARCH="${ARCH} sse sse2"
1427
1428   AC_CACHE_CHECK([if $CC groks SSE2 intrinsics],
1429     [ac_cv_c_sse2_intrinsics],
1430     [CFLAGS="${CFLAGS_save} -O -msse2"
1431      AC_TRY_COMPILE([#include <emmintrin.h>
1432                      #include <stdint.h>
1433                      uint64_t frobzor;],
1434                     [__m128i a, b, c;
1435                      a = b = c = _mm_set1_epi64((__m64)frobzor);
1436                      a = _mm_slli_epi16(a, 3);
1437                      a = _mm_adds_epi16(a, b);
1438                      c = _mm_srli_epi16(c, 8);
1439                      c = _mm_slli_epi16(c, 3);
1440                      b = _mm_adds_epi16(b, c);
1441                      a = _mm_unpacklo_epi8(a, b);
1442                      frobzor = (uint64_t)_mm_movepi64_pi64(a);],
1443                     [ac_cv_c_sse2_intrinsics=yes],
1444                     [ac_cv_c_sse2_intrinsics=no])])
1445   AS_IF([test "${ac_cv_c_sse2_intrinsics}" != "no"], [
1446     AC_DEFINE(HAVE_SSE2_INTRINSICS, 1,
1447               [Define to 1 if SSE2 intrinsics are available.])
1448     VLC_ADD_CFLAGS([i420_rgb_sse2 i420_yuy2_sse2 i422_yuy2_sse2],[-msse2])
1449   ])
1450
1451   AC_CACHE_CHECK([if $CC groks SSE inline assembly],
1452     [ac_cv_sse_inline],
1453     [CFLAGS="${CFLAGS_save}"
1454      AC_TRY_COMPILE(,[void *p;asm volatile("xorps %%xmm1,%%xmm2"::"r"(p));],
1455                     ac_cv_sse_inline=yes, ac_cv_sse_inline=no)])
1456   AS_IF([test "${ac_cv_sse_inline}" != "no" -a "${SYS}" != "solaris"], [
1457     AC_DEFINE(CAN_COMPILE_SSE, 1,
1458               [Define to 1 if SSE inline assembly is available.])
1459   ])
1460
1461   AC_CACHE_CHECK([if $CC groks SSE2 inline assembly],
1462     [ac_cv_sse2_inline],
1463     [CFLAGS="${CFLAGS_save}"
1464      AC_TRY_COMPILE(,[void *p;asm volatile("punpckhqdq %%xmm1,%%xmm2"::"r"(p));],
1465                     ac_cv_sse2_inline=yes, ac_cv_sse2_inline=no)])
1466   AS_IF([test "${ac_cv_sse2_inline}" != "no" -a "${SYS}" != "solaris"], [
1467     AC_DEFINE(CAN_COMPILE_SSE2, 1,
1468               [Define to 1 if SSE2 inline assembly is available.])
1469     VLC_ADD_PLUGIN([i420_rgb_sse2])
1470     VLC_ADD_PLUGIN([i420_yuy2_sse2])
1471     VLC_ADD_PLUGIN([i422_yuy2_sse2])
1472   ])
1473
1474   # SSE3
1475   AC_CACHE_CHECK([if $CC groks SSE3 inline assembly],
1476     [ac_cv_sse3_inline],
1477     [CFLAGS="${CFLAGS_save}"
1478      AC_TRY_COMPILE(,[void *p;asm volatile("movsldup %%xmm1,%%xmm0"::"r"(p));],
1479                     ac_cv_sse3_inline=yes, ac_cv_sse3_inline=no)])
1480   AS_IF([test "${ac_cv_sse3_inline}" != "no"], [
1481     AC_DEFINE(CAN_COMPILE_SSE3, 1,
1482               [Define to 1 if SSE3 inline assembly is available.]) ])
1483   # SSSE3
1484   AC_CACHE_CHECK([if $CC groks SSSE3 inline assembly],
1485     [ac_cv_ssse3_inline],
1486     [CFLAGS="${CFLAGS_save}"
1487      AC_TRY_COMPILE(,[void *p;asm volatile("pabsw %%xmm0,%%xmm0"::"r"(p));],
1488                     ac_cv_ssse3_inline=yes, ac_cv_ssse3_inline=no)])
1489   AS_IF([test "${ac_cv_ssse3_inline}" != "no"], [
1490     AC_DEFINE(CAN_COMPILE_SSSE3, 1,
1491               [Define to 1 if SSSE3 inline assembly is available.]) ])
1492
1493   # SSE4.1
1494   AC_CACHE_CHECK([if $CC groks SSE4.1 inline assembly],
1495     [ac_cv_sse4_1_inline],
1496     [CFLAGS="${CFLAGS_save}"
1497      AC_TRY_COMPILE(,[void *p;asm volatile("pmaxsb %%xmm1,%%xmm0"::"r"(p));],
1498                     ac_cv_sse4_1_inline=yes, ac_cv_sse4_1_inline=no)])
1499   AS_IF([test "${ac_cv_sse4_1_inline}" != "no"], [
1500     AC_DEFINE(CAN_COMPILE_SSE4_1, 1,
1501               [Define to 1 if SSE4_1 inline assembly is available.]) ])
1502
1503   # SSE4.2
1504   AC_CACHE_CHECK([if $CC groks SSE4.2 inline assembly],
1505     [ac_cv_sse4_2_inline],
1506     [CFLAGS="${CFLAGS_save}"
1507      AC_TRY_COMPILE(,[void *p;asm volatile("pcmpgtq %%xmm1,%%xmm0"::"r"(p));],
1508                     ac_cv_sse4_2_inline=yes, ac_cv_sse4_2_inline=no)])
1509   AS_IF([test "${ac_cv_sse4_2_inline}" != "no"], [
1510     AC_DEFINE(CAN_COMPILE_SSE4_2, 1,
1511               [Define to 1 if SSE4_2 inline assembly is available.]) ])
1512
1513   # SSE4A
1514   AC_CACHE_CHECK([if $CC groks SSE4A inline assembly],
1515     [ac_cv_sse4a_inline],
1516     [CFLAGS="${CFLAGS_save}"
1517      AC_TRY_COMPILE(,[void *p;asm volatile("insertq %%xmm1,%%xmm0"::"r"(p));],
1518                     ac_cv_sse4a_inline=yes, ac_cv_sse4a_inline=no)])
1519   AS_IF([test "${ac_cv_sse4a_inline}" != "no"], [
1520     AC_DEFINE(CAN_COMPILE_SSE4A, 1,
1521               [Define to 1 if SSE4A inline assembly is available.]) ])
1522 ])
1523
1524 AC_CACHE_CHECK([if $CC groks 3D Now! inline assembly],
1525     [ac_cv_3dnow_inline],
1526     [CFLAGS="${CFLAGS_save}"
1527      AC_TRY_COMPILE(,[void *p;asm volatile("pfadd %%mm1,%%mm2"::"r"(p));],
1528                     ac_cv_3dnow_inline=yes, ac_cv_3dnow_inline=no)])
1529 AS_IF([test "${ac_cv_3dnow_inline}" != "no"], [
1530   AC_DEFINE(CAN_COMPILE_3DNOW, 1,
1531             [Define to 1 if 3D Now! inline assembly is available.])
1532   VLC_ADD_PLUGIN([memcpy3dn])
1533 ])
1534
1535
1536 AC_ARG_ENABLE(neon,
1537 [ --disable-neon           disable NEON optimizations (default auto)],, [
1538   AS_IF([test "${host_cpu}" = "arm"], [enable_neon="yes"] ,[enable_neon="no"])
1539 ])
1540 AS_IF([test "${enable_neon}" != "no"], [
1541   AC_CACHE_CHECK([if $CC groks NEON inline assembly], [ac_cv_neon_inline], [
1542     AC_COMPILE_IFELSE([
1543       AC_LANG_PROGRAM(,[[asm volatile("vqmovun.s64 d0, q1":::"d0");]])
1544     ], [
1545       ac_cv_neon_inline="yes"
1546     ], [
1547       ac_cv_neon_inline="no"
1548     ])
1549   ])
1550 ])
1551 AM_CONDITIONAL(HAVE_NEON, [test "${ac_cv_neon_inline}" = "yes"])
1552
1553 AC_ARG_ENABLE(altivec,
1554 [  --disable-altivec       disable AltiVec optimizations (default auto)],, [
1555   AS_IF([test "${host_cpu}" = "powerpc"],
1556         [enable_altivec=yes], [enable_altivec=no])
1557 ])
1558 AS_IF([test "${enable_altivec}" = "yes"], [
1559   ARCH="${ARCH} altivec";
1560   AC_CACHE_CHECK([if $CC groks AltiVec inline assembly],
1561     [ac_cv_altivec_inline],
1562     [CFLAGS="${CFLAGS_save}"
1563      AC_TRY_COMPILE(,[asm volatile("vperm 0,1,2,3");],
1564          ac_cv_altivec_inline="yes",
1565          [CFLAGS="${CFLAGS_save} -Wa,-m7400"
1566           AC_TRY_COMPILE(,[asm volatile("vperm 0,1,2,3");],
1567             [ac_cv_altivec_inline="-Wa,-m7400"],
1568             ac_cv_altivec_inline=no)
1569          ])])
1570   AS_IF([test "${ac_cv_altivec_inline}" != "no"], [
1571     AC_DEFINE(CAN_COMPILE_ALTIVEC, 1,
1572               [Define to 1 if AltiVec inline assembly is available.])
1573     AS_IF([test "${ac_cv_altivec_inline}" != "yes"], [
1574       VLC_ADD_CFLAGS([idctaltivec],[${ac_cv_altivec_inline}])
1575       VLC_ADD_CFLAGS([motionaltivec],[${ac_cv_altivec_inline}])
1576       VLC_ADD_CFLAGS([memcpyaltivec],[${ac_cv_altivec_inline}])
1577       VLC_ADD_CFLAGS([i420_yuy2_altivec],[${ac_cv_altivec_inline}])
1578       VLC_ADD_CFLAGS([libvlccore],[${ac_cv_altivec_inline}])
1579     ])
1580     VLC_ADD_PLUGIN([memcpyaltivec])
1581     VLC_ADD_PLUGIN([i420_yuy2_altivec])
1582   ])
1583
1584 dnl The AltiVec C extensions
1585 dnl
1586 dnl There are several possible cases:
1587 dnl - OS X PPC, gcc 4.x: use -mpim-altivec -force_cpusubtype_ALL, don't
1588 dnl                      need <altivec.h>
1589 dnl - OS X PPC, gcc 3.x: need -faltivec, don't need <altivec.h>
1590 dnl - Linux PPC, gcc 3.4, 4.x: need <altivec.h> which requires -maltivec
1591 dnl - Linux PPC, gcc 3.3: need <altivec.h> and -maltivec -mabi=altivec
1592 dnl - Linux PPC, gcc 3.x: need <altivec.h> and -fvec
1593 dnl - Others: test should fail
1594   AC_CACHE_CHECK([if \$CC groks AltiVec C extensions],
1595   [ac_cv_c_altivec],
1596   [# OS X/PPC test (gcc 4.x)
1597    CFLAGS="${CFLAGS_save} -mpim-altivec -force_cpusubtype_ALL"
1598    AC_TRY_COMPILE([vector unsigned char foo;],
1599      [vec_ld(0, (unsigned char *)0);],
1600      [ac_cv_c_altivec="-mpim-altivec -force_cpusubtype_ALL"],
1601      [# OS X/PPC test (gcc 3.x)
1602       CFLAGS="${CFLAGS_save} -faltivec"
1603       AC_TRY_COMPILE([vector unsigned char foo;],
1604         [vec_ld(1 * sizeof(vector float), (unsigned char *)0);],
1605         [ac_cv_c_altivec="-faltivec"],
1606         dnl Below this are the Linux tests
1607         [# Linux/PPC test (gcc 4.x)
1608          CFLAGS="${CFLAGS_save} -maltivec"
1609          AC_TRY_COMPILE([#include <altivec.h>],
1610            [vec_ld(0, (unsigned char *)0);],
1611            [ac_cv_c_altivec="-maltivec"],
1612            [# Linux/PPC test (gcc 3.3)
1613             CFLAGS="${CFLAGS_save} -maltivec -mabi=altivec"
1614             AC_TRY_COMPILE([#include <altivec.h>],
1615               [vec_ld(0, (unsigned char *)0);],
1616               [ac_cv_c_altivec=""
1617                ac_cv_c_altivec_abi="-maltivec -mabi=altivec"],
1618               [# Linux/PPC test (gcc 3.3)
1619                CFLAGS="${CFLAGS_save} -fvec"
1620                AC_TRY_COMPILE([#include <altivec.h>],
1621                  [vec_ld(0, (unsigned char *)0);],
1622                  [ac_cv_c_altivec="-fvec"],
1623                  [ac_cv_c_altivec=no])
1624               ])
1625            ])
1626         ])
1627      ])
1628    CFLAGS="${CFLAGS_save}"
1629   ])
1630   AS_IF([test "${ac_cv_c_altivec}" != "no"], [
1631     CPPFLAGS="${CPPFLAGS_save} ${ac_cv_c_altivec}"
1632   ])
1633
1634   AC_CHECK_HEADERS(altivec.h)
1635   CPPFLAGS="${CPPFLAGS_save}"
1636
1637   AS_IF([test "${ac_cv_c_altivec}" != "no"], [
1638     AC_DEFINE(CAN_COMPILE_C_ALTIVEC, 1,
1639               [Define to 1 if C AltiVec extensions are available.])
1640     VLC_ADD_CFLAGS([libvlccore],[${ac_cv_c_altivec}])
1641     VLC_ADD_CFLAGS([idctaltivec motionaltivec],[${ac_cv_c_altivec}])
1642     VLC_ADD_CFLAGS([i420_yuy2_altivec memcpyaltivec deinterlace],[${ac_cv_c_altivec} ${ac_cv_c_altivec_abi}])
1643     VLC_ADD_PLUGIN([memcpyaltivec])
1644     VLC_ADD_PLUGIN([i420_yuy2_altivec])
1645   ])
1646
1647   AC_CACHE_CHECK([if linker needs -framework vecLib],
1648     [ac_cv_ld_altivec],
1649     [LDFLAGS="${LDFLAGS_vlc} -Wl,-framework,vecLib"
1650      AC_TRY_LINK([],,ac_cv_ld_altivec=yes,ac_cv_ld_altivec=no)
1651      LDFLAGS="${LDFLAGS_save}"
1652     ])
1653   AS_IF([test "${ac_cv_ld_altivec}" != "no"], [
1654     VLC_ADD_LDFLAGS([libvlccore idctaltivec motionaltivec memcpyaltivec],[-Wl,-framework,vecLib])
1655   ])
1656 ])
1657
1658 dnl
1659 dnl  Special arch tuning
1660 dnl
1661 AC_ARG_WITH(tuning,
1662 [  --with-tuning=ARCH      enable special tuning for an architecture
1663                           (default Pentium 2 on IA-32 and G4 on PPC)])
1664 if test -n "${with_tuning}"; then
1665     if test "${with_tuning}" != "no"; then
1666         CFLAGS_TUNING="-mtune=${with_tuning}"
1667     fi
1668 else
1669     if test "${SYS}" = "darwin" -a "${host_cpu}" != "powerpc"; then
1670         CFLAGS_TUNING="-march=prescott -mtune=generic"
1671     elif test "${host_cpu}" = "i686" -o "${host_cpu}" = "i586" -o "${host_cpu}" = "i486" -o "${host_cpu}" = "i386"; then
1672         CFLAGS_TUNING="-mtune=pentium2"
1673     elif test "${host_cpu}" = "x86_64"; then
1674         CFLAGS_TUNING="-mtune=athlon64"
1675     elif test "${host_cpu}" = "powerpc"; then
1676         CFLAGS_TUNING="-mtune=G4";
1677     fi
1678 fi
1679
1680 dnl NOTE: this can't be cached cleanly
1681 AS_IF([test "${CFLAGS_TUNING}"],
1682    [CFLAGS_save="${CFLAGS}"
1683     CFLAGS="${CFLAGS} ${CFLAGS_TUNING}"
1684
1685     AC_MSG_CHECKING([whether $CC accepts ${CFLAGS_TUNING}])
1686     AC_COMPILE_IFELSE([ ],
1687                       [tuning="yes"],
1688                       [CFLAGS_TUNING=""; tuning="no"
1689                        AS_IF([test "${with_tuning}"],
1690                              [AC_MSG_ERROR([requested tuning not supported])])])
1691
1692     AC_MSG_RESULT([$tuning])
1693     CFLAGS="${CFLAGS_save}"
1694 ])
1695
1696 dnl
1697 dnl  Memory usage
1698 dnl
1699 AC_ARG_ENABLE(optimize-memory,
1700 [  --enable-optimize-memory optimize memory usage over performance])
1701 if test "${enable_optimize_memory}" = "yes"; then
1702   AC_DEFINE(OPTIMIZE_MEMORY, 1, Define if you want to optimize memory usage over performance)
1703 fi
1704
1705 dnl
1706 dnl  Enable/disable optimizations
1707 dnl
1708 AC_ARG_ENABLE(optimizations,
1709 [  --disable-optimizations disable compiler optimizations (default enabled)])
1710 if test "${enable_optimizations}" != "no"; then
1711    if test "${enable_optimize_memory}" = "yes"; then
1712       enable_optimizations="size"
1713    else
1714       enable_optimizations="speed"
1715    fi
1716 fi
1717
1718 dnl
1719 dnl  Debugging mode
1720 dnl
1721 AC_ARG_ENABLE(debug,
1722 [  --enable-debug          debug mode (default disabled)])
1723 test "${enable_debug}" != "yes" && enable_debug="no"
1724 AH_TEMPLATE(NDEBUG,
1725             [Define to 1 if debug code should NOT be compiled])
1726 AS_IF([test "x${enable_debug}" = "xno"], [
1727   AC_DEFINE(NDEBUG)
1728 ], [
1729   AC_CHECK_HEADERS([valgrind/valgrind.h])
1730 ])
1731
1732 dnl
1733 dnl Allow runing as root (usefull for people runing on embedded platforms)
1734 dnl
1735 AC_ARG_ENABLE(run-as-root,
1736 [  --enable-run-as-root    allow runing VLC as root (default disabled)])
1737 AS_IF([test "${enable_run_as_root}" = "yes"],[
1738     AC_DEFINE(ALLOW_RUN_AS_ROOT, 1,
1739               [Define to 1 to allow runing VLC as root (uid 0).])
1740 ])
1741
1742 dnl
1743 dnl  Test coverage
1744 dnl
1745 AC_ARG_ENABLE(coverage,
1746         [  --enable-coverage       build for test coverage (default disabled)],,
1747         [enable_coverage="no"])
1748 AS_IF([test "${enable_coverage}" != "no"], [
1749         CFLAGS="-fprofile-arcs -ftest-coverage ${CFLAGS}"
1750         CXXFLAGS="-fprofile-arcs -ftest-coverage ${CXXFLAGS}"
1751         LDFLAGS="-lgcov ${LDFLAGS}"
1752         dnl ugly...
1753         CFLAGS_save="${CFLAGS}"
1754         CXXFLAGS_save="${CXXFLAGS}"
1755         LDFLAGS_save="${LDFLAGS}"
1756 ])
1757
1758 dnl
1759 dnl  Enable release-specific flags
1760 dnl
1761 AC_ARG_ENABLE(release,
1762 [  --enable-release        activate extra optimizations (default disabled)])
1763 test "${enable_release}" != "yes" && enable_release="no"
1764
1765 dnl
1766 dnl Stream output
1767 dnl
1768 AC_ARG_ENABLE(sout,
1769   [  --enable-sout           Stream output modules (default enabled)])
1770 AS_IF([test "${enable_sout}" != "no"], [
1771   AC_DEFINE(ENABLE_SOUT, 1, [Define to 1 for stream output support.])
1772 ])
1773 AM_CONDITIONAL(ENABLE_SOUT, [test "${enable_sout}" != "no"])
1774
1775 dnl Lua modules
1776 AC_ARG_ENABLE(lua,
1777   AS_HELP_STRING([--enable-lua],[lua playlist, metafetcher and interface
1778                   plugins (default enabled)]))
1779 if test "${enable_lua}" != "no"
1780 then
1781   PKG_CHECK_MODULES(LUA, lua5.1,
1782     [ have_lua=yes ],
1783     [
1784     AC_MSG_WARN([lua5.1 not found, trying lua >= 5.1 instead])
1785     PKG_CHECK_MODULES(LUA, lua >= 5.1,
1786       [ have_lua=yes ],
1787       [
1788         have_lua=yes
1789         AC_CHECK_HEADERS([lua.h lauxlib.h lualib.h],
1790           [],
1791           [ have_lua=no ] )
1792         AC_CHECK_LIB(  lua5.1 , luaL_newstate,
1793           [LUA_LIBS="-llua5.1"],
1794           AC_CHECK_LIB( lua51 , luaL_newstate,
1795             [LUA_LIBS="-llua51"],
1796             AC_CHECK_LIB( lua , luaL_newstate,
1797               [LUA_LIBS="-llua"],
1798               [ have_lua=no
1799                 AS_IF([test "x${enable_lua}" = "xyes"],
1800                   [AC_MSG_ERROR([lua >= 5.1 not found!])],
1801                   [AC_MSG_WARN([lua >= 5.1 not found!])])
1802               ], [-lm])
1803           )
1804         )
1805       ])
1806     ])
1807   if test "x${have_lua}" = "xyes" ;  then
1808      VLC_ADD_LIBS([lua],[$LUA_LIBS])
1809      VLC_ADD_CFLAGS([lua],[$LUA_CFLAGS])
1810   fi
1811 fi
1812 AM_CONDITIONAL(BUILD_LUA, [test "${have_lua}" = "yes"])
1813
1814 dnl
1815 dnl HTTP daemon
1816 dnl
1817 AC_ARG_ENABLE(httpd,
1818   [  --enable-httpd          HTTP daemon (default enabled)])
1819 if test "${enable_httpd}" != "no"
1820 then
1821   VLC_ADD_PLUGIN([http])
1822   AC_DEFINE(ENABLE_HTTPD, 1, Define if you want the HTTP dameon support)
1823 fi
1824 AM_CONDITIONAL(BUILD_HTTPD, [test "${enable_httpd}" != "no"])
1825
1826 dnl
1827 dnl libproxy support
1828 dnl
1829 AC_ARG_ENABLE(libproxy,
1830   [  --enable-libproxy       libproxy support (default auto)])
1831 AS_IF([test "${enable_libproxy}" != "no"], [
1832   PKG_CHECK_MODULES(LIBPROXY, libproxy-1.0, [
1833     AC_DEFINE(HAVE_LIBPROXY, 1, [Define if libproxy is available])
1834     VLC_ADD_CFLAGS([access_http],[$LIBPROXY_CFLAGS])
1835     VLC_ADD_LIBS([access_http],[$LIBPROXY_LIBS])
1836   ], [
1837     AS_IF([test "x${enable_libproxy}" != "x"], [
1838       AC_MSG_ERROR([libproxy could not be found on your system])
1839     ])
1840   ])
1841 ])
1842
1843
1844 dnl
1845 dnl VideoLAN manager
1846 dnl
1847 AC_ARG_ENABLE(vlm,
1848   [  --enable-vlm            VideoLAN manager (default enabled)],,
1849   [enable_vlm="${enable_sout}"])
1850 AS_IF([test "${enable_vlm}" != "no"], [
1851   AS_IF([test "${enable_sout}" = "no"], [
1852     AC_MSG_ERROR([VLM requires the stream output. Do not use --disable-sout.])
1853   ])
1854   AC_DEFINE(ENABLE_VLM, 1, [Define if you want the VideoLAN manager support])
1855   VLC_ADD_PLUGIN([telnet])
1856 ])
1857 AM_CONDITIONAL([ENABLE_VLM], [test "${enable_vlm}" != "no"])
1858
1859 dnl
1860 dnl Growl notification plugin
1861 dnl
1862 AC_ARG_ENABLE(growl,
1863   [  --enable-growl          growl notification plugin (default disabled)],,
1864   [enable_growl=no])
1865 AS_IF([test "${enable_growl}" != "no"], [
1866     VLC_ADD_PLUGIN([growl_udp])
1867     AC_CHECK_HEADERS(Growl/GrowlDefines.h, [
1868       VLC_ADD_PLUGIN([growl])
1869       VLC_ADD_LDFLAGS([growl], [-Wl,-framework,Growl,-framework,AppKit])
1870     ])
1871   ]
1872 )
1873
1874 dnl
1875 dnl Libnotify notification plugin
1876 dnl
1877 PKG_ENABLE_MODULES_VLC([NOTIFY], [], [libnotify], [libnotify notification], [auto])
1878
1879 dnl
1880 dnl Audioscrobbler plugin
1881 dnl
1882
1883 AC_ARG_ENABLE(audioscrobbler,
1884   [  --disable-audioscrobbler Last.fm submission plugin (default enabled)])
1885 AS_IF([test "${enable_audioscrobbler}" != "no"], [
1886         VLC_ADD_PLUGIN([audioscrobbler])
1887   ])
1888
1889 dnl
1890 dnl Taglibplugin
1891 dnl
1892 AC_ARG_ENABLE(taglib,
1893   [  --disable-taglib        Taglib support (default enabled) ])
1894   AS_IF([test "${enable_taglib}" != "no"],[
1895     PKG_CHECK_MODULES(TAGLIB, taglib >= 1.5,
1896       [ VLC_ADD_PLUGIN([taglib])
1897         VLC_ADD_LIBS([taglib],[$TAGLIB_LIBS -lz])
1898        VLC_ADD_CXXFLAGS([taglib],[$TAGLIB_CFLAGS]) ],
1899       [AC_MSG_WARN(TagLib library not found)])
1900   ])
1901
1902 dnl
1903 dnl  Input plugins
1904 dnl
1905
1906 AC_ARG_WITH(,[Input plugins:])
1907
1908 dnl  live555 input
1909 dnl
1910 if test "${enable_livedotcom}"
1911 then
1912   AC_MSG_WARN(--{en|dis}able-livedotcom is deprecated. Use --{en|dis}able-live555 instead.)
1913 fi
1914 if test "${enable_livedotcom}" = "no"
1915 then
1916   enable_live555="no"
1917 fi
1918
1919 AC_ARG_ENABLE(live555,
1920 [  --enable-live555        live555 RTSP input plugin (default enabled)])
1921 if test "${enable_live555}" != "no"; then
1922   AC_ARG_WITH(live555-tree,
1923     [    --with-live555-tree=PATH live.com tree for static linking])
1924
1925   dnl
1926   dnl test for --with-live555-tree
1927   dnl
1928   if test "${with_livedotcom_tree}"
1929   then
1930     AC_MSG_WARN(--with-livedotcom-tree is deprecated. Use --with-live555-tree instead.)
1931   with_live555_tree="${with_livedotcom_tree}"
1932   fi
1933
1934   if test -z "${with_live555_tree}" -a "${CXX}" != ""; then
1935     AC_LANG_PUSH(C++)
1936     CPPFLAGS_save="${CPPFLAGS}"
1937     CPPFLAGS_live555="-I/usr/include/liveMedia -I/usr/include/groupsock -I/usr/include/BasicUsageEnvironment -I/usr/include/UsageEnvironment"
1938     if test "${SYS}" = "solaris"; then
1939       CPPFLAGS_live555="${CPPFLAGS_live555} -DSOLARIS"
1940     fi
1941     CPPFLAGS="${CPPFLAGS} ${CPPFLAGS_live555}"
1942
1943     AC_CHECK_HEADERS(liveMedia_version.hh, [
1944       AC_MSG_CHECKING(for liveMedia version >= 1214895600 )
1945       AC_EGREP_CPP(yes,
1946         [#include <liveMedia_version.hh>
1947          #ifdef LIVEMEDIA_LIBRARY_VERSION_INT
1948          #if LIVEMEDIA_LIBRARY_VERSION_INT < 1214895600
1949          yes
1950          #endif
1951          #endif],
1952         [AC_MSG_RESULT([no])
1953          AC_MSG_ERROR([Your version of liveMedia is too old: you may get a more recent one from http://www.live555.com/liveMedia.
1954 lternatively you can use --disable-live555 to disable the liveMedia plugin.])
1955       ],[
1956          AC_MSG_RESULT([yes])
1957          ])
1958     ])
1959      other_libs="-lgroupsock -lBasicUsageEnvironment -lUsageEnvironment"
1960      other_libs_pic="-lgroupsock_pic -lBasicUsageEnvironment_pic -lUsageEnvironment_pic"
1961       if test "${SYS}" = "mingw32"; then
1962         # add ws2_32 for closesocket, select, recv
1963         other_libs="$other_libs -lws2_32"
1964       elif test "${SYS}" = "mingwce"; then
1965         # add ws2 for closesocket, select, recv
1966         other_libs="$other_libs -lws2"
1967       fi
1968     dnl We need to check for pic because live555 don't provide shared libs
1969     dnl and we want to build a plugins so we need -fPIC on some arch.
1970     AC_CHECK_HEADERS(liveMedia.hh, [
1971       VLC_ADD_CXXFLAGS([live555], [${CPPFLAGS_live555}])
1972         AC_CHECK_LIB(liveMedia_pic, main, [
1973           VLC_ADD_PLUGIN([live555])
1974          VLC_ADD_LIBS([live555], [-lliveMedia_pic ${other_libs_pic}])
1975          ],[
1976         AC_CHECK_LIB(liveMedia, main, [
1977           VLC_ADD_PLUGIN([live555])
1978           VLC_ADD_LIBS([live555], [-lliveMedia ${other_libs}])
1979         ],[],[${other_libs}]) ],[${other_libs_pic}])
1980     ],[
1981        AC_MSG_WARN([The development files for liveMedia (live555) can't be found])
1982     ])
1983     CPPFLAGS="${CPPFLAGS_save}"
1984     AC_LANG_POP(C++)
1985   else
1986     AC_MSG_CHECKING(for liveMedia/libliveMedia.a in ${with_live555_tree})
1987     real_live555_tree="`cd ${with_live555_tree} 2>/dev/null && pwd`"
1988     if test -z "${real_live555_tree}"; then
1989       dnl  The given directory can't be found
1990       AC_MSG_RESULT(no)
1991       AC_MSG_ERROR([cannot cd to ${with_live555_tree}])
1992     fi
1993     if test -f "${real_live555_tree}/liveMedia/libliveMedia.a"; then
1994       AC_MSG_RESULT(${real_live555_tree}/liveMedia/libliveMedia.a)
1995
1996       AC_CHECK_HEADERS(${real_live555_tree}/liveMedia/include/liveMedia_version.hh,[
1997         AC_MSG_CHECKING(for liveMedia version >= 1214895600 )
1998         AC_EGREP_CPP(yes,
1999           [#include "${real_live555_tree}/liveMedia/include/liveMedia_version.hh"
2000            #ifdef LIVEMEDIA_LIBRARY_VERSION_INT
2001            #if LIVEMEDIA_LIBRARY_VERSION_INT < 1214895600
2002            yes
2003            #endif
2004            #endif],
2005           [AC_MSG_RESULT([no])
2006            AC_MSG_ERROR([Your version of liveMedia is too old: you may get a more recent one from http://www.live555.com/liveMedia.
2007 lternatively you can use --disable-live555 to disable the liveMedia plugin.])
2008         ],[
2009            AC_MSG_RESULT([yes])
2010            ])
2011       ])
2012
2013       VLC_ADD_PLUGIN([live555])
2014
2015       if test "${SYS}" = "mingw32"; then
2016         # add ws2_32 for closesocket, select, recv
2017         VLC_ADD_LIBS([live555],[-lws2_32])
2018       fi
2019
2020       VLC_ADD_LIBS([live555],[-L${real_live555_tree}/UsageEnvironment -lUsageEnvironment])
2021       VLC_ADD_LIBS([live555],[-L${real_live555_tree}/BasicUsageEnvironment -lBasicUsageEnvironment])
2022       VLC_ADD_LIBS([live555],[-L${real_live555_tree}/groupsock -lgroupsock])
2023       VLC_ADD_LIBS([live555],[-L${real_live555_tree}/liveMedia -lliveMedia])
2024
2025       VLC_ADD_CXXFLAGS([live555],[-I${real_live555_tree}/BasicUsageEnvironment/include])
2026       VLC_ADD_CXXFLAGS([live555],[-I${real_live555_tree}/groupsock/include])
2027       VLC_ADD_CXXFLAGS([live555],[-I${real_live555_tree}/liveMedia/include])
2028       VLC_ADD_CXXFLAGS([live555],[-I${real_live555_tree}/UsageEnvironment/include ])
2029       if test "${SYS}" = "solaris"; then
2030         VLC_ADD_CXXFLAGS([live555],[-DSOLARIS])
2031       fi
2032     else
2033       dnl  The given live555 wasn't built
2034         AC_MSG_RESULT(no)
2035       if test "${enable_live555}" = "yes"; then
2036         AC_MSG_ERROR([cannot find ${real_live555_tree}/liveMedia/libliveMedia.a, make sure you compiled live555 in ${with_live555_tree}])
2037       fi        
2038     fi
2039   fi
2040 fi
2041
2042 dnl
2043 dnl - special access module for dc1394 input
2044 dnl - dv module: digital video module check for libraw1394
2045 dnl
2046 PKG_ENABLE_MODULES_VLC([DC1394], [], [libraw1394 >= 2.0.1 libdc1394-2 >= 2.1.0], [dc1394 access module], [auto])
2047 PKG_ENABLE_MODULES_VLC([DV], [access_dv], [libraw1394 >= 2.0.1 libavc1394 >= 0.5.3], [DV input module], [auto])
2048
2049 dnl
2050 dnl dvdread module: check for libdvdread
2051 dnl
2052 AC_ARG_ENABLE(dvdread,
2053 [  --enable-dvdread        dvdread input module (default disabled)])
2054 if test "${enable_dvdread}" != "no"
2055 then
2056   AC_ARG_WITH(dvdread,
2057   [    --with-dvdread=PATH   libdvdread headers and libraries])
2058   AC_ARG_WITH(dvdread-tree,
2059   [    --with-dvdread-tree=PATH libdvdread tree for static linking])
2060
2061   dnl Temporary hack (yeah, sure ;)
2062   if test "${SYS}" = "mingw32" || test "${SYS}" = "darwin" || test "${SYS}" = "beos" ; then
2063       VLC_ADD_LIBS([dvdread],[-ldvdcss])
2064   fi
2065
2066   if test -z "${with_dvdread}"
2067   then
2068     if test -z "${with_dvdread_tree}"
2069     then
2070       AC_CHECK_HEADERS(dvdread/dvd_reader.h,
2071         [ VLC_ADD_PLUGIN([dvdread])
2072           VLC_ADD_LIBS([dvdread],[-ldvdread ${LIBS_dvdcss}])
2073         ],[
2074           AC_CHECK_HEADERS(libdvdread/dvd_reader.h,
2075             [ VLC_ADD_PLUGIN([dvdread])
2076               VLC_ADD_LIBS([dvdread],[-ldvdread ${LIBS_dvdcss}])
2077             ],[
2078               if test -n "${enable_dvdread}"
2079               then
2080               AC_MSG_ERROR([cannot find libdvdread headers])
2081              fi
2082            ])
2083         ])
2084     else
2085       AC_MSG_CHECKING(for libdvdread.a in ${with_dvdread_tree})
2086       real_dvdread_tree="`cd ${with_dvdread_tree} 2>/dev/null && pwd`"
2087       if test -z "${real_dvdread_tree}"
2088       then
2089         dnl  The given directory can't be found
2090         AC_MSG_RESULT(no)
2091         AC_MSG_ERROR([cannot cd to ${with_dvdread_tree}])
2092       fi
2093       if test -f "${real_dvdread_tree}/dvdread/.libs/libdvdread.a"
2094       then
2095         dnl  Use a custom libdvdread
2096         AC_MSG_RESULT(${real_dvdread_tree}/dvdread/.libs/libdvdread.a)
2097         VLC_ADD_PLUGIN([dvdread])
2098         VLC_ADD_LIBS([dvdread],[-L${real_dvdread_tree}/dvdread/.libs -ldvdread ${LIBS_dvdcss}])
2099         VLC_ADD_CPPFLAGS([dvdread],[-I${real_dvdread_tree}])
2100       else
2101         dnl  The given libdvdread wasn't built
2102         AC_MSG_RESULT(no)
2103         AC_MSG_ERROR([cannot find ${real_dvdread_tree}/dvdread/.libs/libdvdread.a, make sure you compiled libdvdread in ${with_dvdread_tree}])
2104       fi
2105     fi
2106   else
2107     AC_MSG_CHECKING(for dvdread headers in ${with_dvdread})
2108     if test -f ${with_dvdread}/include/dvdread/dvd_reader.h
2109     then
2110       dnl  Use ${with_dvdread}/include/dvdread/dvd_reader.h
2111       AC_MSG_RESULT(yes)
2112       VLC_ADD_PLUGIN([dvdread])
2113       VLC_ADD_LIBS([dvdread],[-L${with_dvdread}/lib -ldvdread ${LIBS_dvdcss}])
2114       VLC_ADD_CPPFLAGS([dvdread],[-I${with_dvdread}/include])
2115     else
2116       dnl  No libdvdread could be found, sorry
2117       AC_MSG_RESULT(no)
2118       AC_MSG_ERROR([cannot find ${with_dvdread}/include/dvdread/dvd_reader.h])
2119     fi
2120   fi
2121 fi
2122
2123 dnl
2124 dnl  libdvdnav plugin
2125 dnl
2126 AC_ARG_ENABLE(dvdnav,
2127   [  --enable-dvdnav         dvdnav input module (default enabled)])
2128 if test "${enable_dvdnav}" != "no"
2129 then
2130   dnl Same hack than dvdread
2131   if test "${SYS}" = "mingw32" || test "${SYS}" = "darwin" || test "${SYS}" = "beos" ; then
2132       VLC_ADD_LIBS([dvdnav],[-ldvdcss])
2133   fi
2134
2135   DVDNAV_PATH="${PATH}"
2136   AC_ARG_WITH(dvdnav-config-path,
2137     [    --with-dvdnav-config-path=PATH dvdnav-config path (default search in \$PATH)],
2138     [ if test "${with_dvdnav_config_path}" != "no"
2139       then
2140         DVDNAV_PATH="${with_dvdnav_config_path}:${PATH}"
2141       fi ])
2142   AC_PATH_PROG(DVDNAV_CONFIG, dvdnav-config, no, ${DVDNAV_PATH})
2143   if test "${DVDNAV_CONFIG}" != "no"
2144   then
2145     VLC_ADD_PLUGIN([dvdnav])
2146     VLC_ADD_CFLAGS([dvdnav],[`${DVDNAV_CONFIG} --cflags`])
2147     VLC_ADD_LIBS([dvdnav],[`${DVDNAV_CONFIG} --libs`])
2148   fi
2149 fi
2150
2151 dnl
2152 dnl  Windows DirectShow access module
2153 dnl
2154 AC_ARG_ENABLE(dshow,
2155   [  --enable-dshow          Win32 DirectShow support (default enabled on Win32)])
2156 if test "${enable_dshow}" != "no"
2157 then
2158   if test "${SYS}" = "mingw32"
2159   then
2160     AC_LANG_PUSH(C++)
2161       AC_CHECK_HEADERS(dshow.h,
2162       [ VLC_ADD_PLUGIN([dshow])
2163         VLC_ADD_CXXFLAGS([dshow],[])
2164         VLC_ADD_LIBS([dshow],[-lole32 -loleaut32 -luuid]) ])
2165     AC_LANG_POP(C++)
2166   fi
2167 fi
2168
2169 dnl
2170 dnl  Windows DirectShow BDA access module
2171 dnl
2172 AC_ARG_ENABLE(bda,
2173   AS_HELP_STRING([--enable-bda],[Win32 DirectShow BDA support (default
2174                   enabled on Win32)]))
2175 if test "${enable_bda}" != "no"
2176 then
2177   if test "${SYS}" = "mingw32"
2178   then
2179       AC_CHECK_HEADERS(dshow.h,
2180       [ VLC_ADD_PLUGIN([bda])
2181         VLC_ADD_CXXFLAGS([bda],[])
2182         VLC_ADD_LIBS([bda],[-lstrmiids -lole32 -loleaut32 -luuid]) ])
2183   fi
2184 fi
2185
2186
2187 dnl
2188 dnl  OpenCV wrapper and example filters
2189 dnl
2190 AC_ARG_ENABLE(opencv,
2191   [  --enable-opencv         OpenCV (computer vision) filter (default disabled)])
2192 if test "${enable_opencv}" = "yes" -a "${CXX}" != "";
2193 then
2194   AC_ARG_WITH(opencv-tree,
2195   [    --with-opencv-tree=PATH opencv tree for linking])
2196     if test "${SYS}" = "mingw32"
2197     then
2198       test -z "${with_opencv_tree}" && AC_MSG_ERROR([You have to specify --with-opencv-tree])
2199       AC_MSG_CHECKING(for opencv in ${with_opencv_tree})
2200       if test -f ${with_opencv_tree}/cv/include/cv.h -a -f ${with_opencv_tree}/cxcore/include/cxcore.h \
2201         -a -f ${with_opencv_tree}/cvaux/include/cvaux.h -a -f ${with_opencv_tree}/otherlibs/highgui/highgui.h
2202       then
2203         AC_MSG_RESULT(yes)
2204         VLC_ADD_PLUGIN([opencv_wrapper])
2205         VLC_ADD_LIBS([opencv_wrapper],[-L${with_opencv_tree}/lib -lcv -lcxcore -lcvaux -lhighgui])
2206         VLC_ADD_CFLAGS([opencv_wrapper],[-I${with_opencv_tree}/cv/include -I${with_opencv_tree}/cxcore/include -I${with_opencv_tree}/cvaux/include -I${with_opencv_tree}/otherlibs/highgui])
2207         AC_LANG_PUSH(C++)
2208         VLC_ADD_PLUGIN([opencv_example])
2209         VLC_ADD_LIBS([opencv_example],[-L${with_opencv_tree}/lib -lcv -lcxcore -lcvaux -lhighgui])
2210         VLC_ADD_CXXFLAGS([opencv_example],[-I${with_opencv_tree}/cv/include -I${with_opencv_tree}/cxcore/include -I${with_opencv_tree}/cvaux/include -I${with_opencv_tree}/otherlibs/highgui])
2211         AC_LANG_POP(C++)
2212       else
2213         dnl  No opencv could be found, sorry
2214         AC_MSG_RESULT(no)
2215         AC_MSG_ERROR([cannot find opencv in ${with_opencv_tree}])
2216       fi
2217     else
2218       PKG_CHECK_MODULES(OPENCV, opencv,
2219         [
2220           VLC_ADD_PLUGIN([opencv_example])
2221           VLC_ADD_PLUGIN([opencv_wrapper])
2222           VLC_ADD_LIBS([opencv_example opencv_wrapper],[${OPENCV_LIBS}])
2223           VLC_ADD_CFLAGS([opencv_wrapper],[${OPENCV_CFLAGS}])
2224           VLC_ADD_CXXFLAGS([opencv_example],[${OPENCV_CFLAGS}])
2225         ],
2226         [AC_MSG_ERROR([libopencv not found!])]
2227       )
2228     fi
2229 fi
2230
2231
2232 dnl
2233 dnl  libsmbclient plugin
2234 dnl
2235 AC_ARG_ENABLE(smb,
2236   [  --enable-smb            smb input module (default enabled)])
2237 if test "${enable_smb}" != "no"; then
2238   AC_CHECK_HEADERS(libsmbclient.h,
2239     [ VLC_ADD_PLUGIN([access_smb])
2240       VLC_ADD_LIBS([access_smb],[-lsmbclient]) ],
2241     [ if test -n "${enable_smb}"; then
2242         AC_MSG_ERROR([cannot find libsmbclient headers])
2243      fi ])
2244 fi
2245
2246
2247 dnl
2248 dnl sftp access support
2249 dnl
2250 AC_ARG_ENABLE(sftp,
2251   [  --enable-sftp           sftp input access module (default disable)])
2252 if test "${enable_sftp}" = "yes"; then
2253   AC_CHECK_HEADERS(libssh2.h, [
2254     VLC_ADD_PLUGIN([access_sftp])
2255     VLC_ADD_LIBS([access_sftp], [-lssh2])
2256   ])
2257 fi
2258
2259 dnl
2260 dnl  libdvbpsi ts demux/mux
2261 dnl
2262 AC_ARG_ENABLE(dvbpsi,
2263   [  --enable-dvbpsi         dvbpsi ts mux and demux module (default enabled)])
2264 have_dvbpsi=no
2265 if test "${enable_dvbpsi}" != "no"
2266 then
2267   AC_ARG_WITH(dvbpsi,
2268   [    --with-dvbpsi=PATH    libdvbpsi headers and libraries])
2269   AC_ARG_WITH(dvbpsi,
2270   [    --with-dvbpsi-tree=PATH libdvbpsi tree for static linking])
2271   case "${with_dvbpsi}" in
2272   ""|yes)
2273     if test -z "${with_dvbpsi_tree}"
2274     then
2275       AC_CHECK_HEADERS(dvbpsi/dr.h,
2276         [ VLC_ADD_PLUGIN([ts])
2277           if test "${enable_sout}" != "no"; then
2278             VLC_ADD_PLUGIN([mux_ts])
2279           fi
2280           VLC_ADD_LIBS([mux_ts ts dvb],[-ldvbpsi])
2281           have_dvbpsi=yes],
2282         [  AC_MSG_WARN([cannot find libdvbpsi headers]) ],
2283         [#if defined( HAVE_STDINT_H )
2284 #   include <stdint.h>
2285 #elif defined( HAVE_INTTYPES_H )
2286 #   include <inttypes.h>
2287 #endif
2288 #include <dvbpsi/dvbpsi.h>
2289 #include <dvbpsi/descriptor.h>
2290 #include <dvbpsi/pat.h>
2291 #include <dvbpsi/pmt.h>])
2292     else
2293       AC_MSG_CHECKING(for libdvbpsi.a in ${with_dvbpsi_tree})
2294       real_dvbpsi_tree="`cd ${with_dvbpsi_tree} 2>/dev/null && pwd`"
2295       if test -z "${real_dvbpsi_tree}"
2296       then
2297         dnl  The given directory can't be found
2298         AC_MSG_RESULT(no)
2299         AC_MSG_ERROR([cannot cd to ${with_dvbpsi_tree}])
2300       fi
2301       if test -f "${real_dvbpsi_tree}/src/.libs/libdvbpsi.a"
2302       then
2303         dnl  Use a custom libdvbpsi
2304         AC_MSG_RESULT(${real_dvbpsi_tree}/src/.libs/libdvbpsi.a)
2305         VLC_ADD_PLUGIN([ts])
2306         if test "${enable_sout}" != "no"; then
2307           VLC_ADD_PLUGIN([mux_ts])
2308         fi
2309         VLC_ADD_CPPFLAGS([mux_ts ts dvb],[-I${real_dvbpsi_tree}/src])
2310         VLC_ADD_LIBS([mux_ts ts dvb],[${real_dvbpsi_tree}/src/.libs/libdvbpsi.a])
2311         have_dvbpsi=yes
2312       else
2313         dnl  The given libdvbpsi wasn't built
2314         AC_MSG_RESULT(no)
2315         AC_MSG_ERROR([cannot find ${real_dvbpsi_tree}/src/.libs/libdvbpsi.a, make sure you compiled libdvbpsi in ${with_dvbpsi_tree}])
2316       fi
2317     fi
2318   ;;
2319   no)
2320     dnl  Compile without dvbpsi
2321   ;;
2322   *)
2323     AC_MSG_CHECKING(for dvbpsi headers in ${with_dvbpsi})
2324     if test -z "${with_dvbpsi}"
2325     then
2326       LDFLAGS_test=""
2327       CPPFLAGS_test=""
2328     else
2329       LDFLAGS_test="-L${with_dvbpsi}/lib"
2330       CPPFLAGS_test="-I${with_dvbpsi}/include"
2331     fi
2332     CPPFLAGS="${CPPFLAGS_save} ${CPPFLAGS_test}"
2333     AC_CHECK_HEADERS([dvbpsi/dr.h],[
2334       VLC_ADD_PLUGIN([ts])
2335       if test "${enable_sout}" != "no"; then
2336         VLC_ADD_PLUGIN([mux_ts])
2337       fi
2338       VLC_ADD_CPPFLAGS([mux_ts ts dvb],[${CPPFLAGS_test}])
2339       VLC_ADD_LIBS([mux_ts ts dvb],[${LDFLAGS_test} -ldvbpsi])
2340       have_dvbpsi=yes
2341     ],[
2342       if test -n "${enable_dvbpsi}"
2343       then
2344         AC_MSG_ERROR([Could not find libdvbpsi on your system: you may get it from www.videolan.org, you'll need at least version 0.1.1])
2345       fi
2346     ],
2347     [#if defined( HAVE_STDINT_H )
2348 #   include <stdint.h>
2349 #elif defined( HAVE_INTTYPES_H )
2350 #   include <inttypes.h>
2351 #endif
2352 #include <dvbpsi/dvbpsi.h>
2353 #include <dvbpsi/descriptor.h>
2354 #include <dvbpsi/pat.h>
2355 #include <dvbpsi/pmt.h>])
2356     CPPFLAGS="${CPPFLAGS_save}"
2357   ;;
2358   esac
2359   AC_CHECK_LIB(dvbpsi, dvbpsi_GenSDTSections, [
2360     AC_DEFINE(HAVE_DVBPSI_SDT, 1, [Define if you have dvbpsi_GenSDTSections.])
2361   ], [], [${LIBS_ts}])
2362
2363 fi
2364
2365 dnl
2366 dnl  Video4Linux plugin
2367 dnl
2368 AC_ARG_ENABLE(v4l,
2369   [  --enable-v4l            Video4Linux input support (default disabled)])
2370 if test "${enable_v4l}" = "yes"
2371 then
2372   AC_ARG_WITH(v4l,
2373     [    --with-v4l=PATH       path to a v4l-enabled kernel tree],[],[])
2374   if test "${with_v4l}" != "no" -a -n "${with_v4l}"
2375   then
2376     VLC_ADD_CPPFLAGS([v4l],[-I${with_v4l}/include])
2377   fi
2378
2379   CPPFLAGS="${CPPFLAGS_save} ${CPPFLAGS_v4l}"
2380   AC_CHECK_HEADERS(linux/videodev.h, [
2381     VLC_ADD_PLUGIN([v4l])
2382   ],[])
2383   CPPFLAGS="${CPPFLAGS_save}"
2384 fi
2385
2386 dnl
2387 dnl libv4l1 support for video4linux.
2388 dnl
2389 AC_ARG_ENABLE( libv4l,
2390   [  --enable-libv4l        Libv4l Video4Linux support (default enabled)])
2391 if test "${enable_libv4l}" != "no" -a "${enable_v4l}" != "no"
2392 then
2393     PKG_CHECK_MODULES( LIBV4L, libv4l1, [
2394       VLC_ADD_LDFLAGS([v4l],[${LIBV4L_LIBS}])
2395       VLC_ADD_CFLAGS([v4l],[${LIBV4L_CFLAGS}])
2396       AC_DEFINE(HAVE_LIBV4L1, 1, Define if libv4l is available)],
2397       AC_MSG_WARN([LibV4L support disabled because libv4l development headers were not found])
2398     )
2399 fi
2400
2401 dnl
2402 dnl  Video4Linux2 plugin
2403 dnl
2404 AC_ARG_ENABLE(v4l2,
2405   [  --enable-v4l2           Video4Linux2 input support (default enabled)])
2406 if test "${enable_v4l2}" != "no"
2407 then
2408   AC_ARG_WITH(v4l2,
2409     [    --with-v4l2=PATH       path to a v4l2-enabled kernel tree],[],[])
2410   if test "${with_v4l2}" != "no" -a -n "${with_v4l2}"
2411   then
2412     VLC_ADD_CPPFLAGS([v4l2],[-I${with_v4l2}/include])
2413   fi
2414
2415   CPPFLAGS="${CPPFLAGS_save} ${CPPFLAGS_v4l2}"
2416   AC_CHECK_HEADERS(linux/videodev2.h, [
2417     VLC_ADD_PLUGIN([v4l2])
2418   ],[])
2419   CPPFLAGS="${CPPFLAGS_save}"
2420 fi
2421
2422 dnl
2423 dnl libv4l2 support for video4linux.
2424 dnl
2425 AC_ARG_ENABLE( libv4l2,
2426   [  --enable-libv4l2        Libv4l2 Video4Linux2 support (default enabled)])
2427 if test "${enable_libv4l2}" != "no" -a "${enable_v4l2}" != "no"
2428 then
2429     PKG_CHECK_MODULES( LIBV4L2, libv4l2, [
2430       VLC_ADD_LDFLAGS([v4l2],[${LIBV4L2_LIBS}])
2431       VLC_ADD_CFLAGS([v4l2],[${LIBV4L2_CFLAGS}])
2432       AC_DEFINE(HAVE_LIBV4L2, 1, Define if libv4l2 is available)],
2433       AC_MSG_WARN([LibV4L2 support disabled because libv4l2 development headers were not found])
2434     )
2435 fi
2436
2437 dnl
2438 dnl  special access module for Hauppauge PVR cards
2439 dnl
2440 AC_ARG_ENABLE(pvr,
2441   [  --enable-pvr            PVR cards access module (default disabled)])
2442 if test "${enable_pvr}" = "yes"
2443 then
2444   VLC_ADD_PLUGIN([pvr])
2445   AC_ARG_WITH(videodev2,
2446     [  --with-videodev2=FILE   Location of videodev2.h file (default /usr/include/linux/videodev2.h)],[],[])
2447   if test "${with_videodev2}" != "no" -a -n "${with_videodev2}"
2448   then
2449     AC_DEFINE_UNQUOTED(VIDEODEV2_H_FILE, "${with_videodev2}", [Location of videodev2.h])
2450   fi
2451
2452   AC_CACHE_CHECK([for new linux/videodev2.h],
2453       [ac_cv_new_linux_videodev2_h],
2454       [AC_TRY_COMPILE([
2455           #include <sys/types.h>
2456           #   ifdef VIDEODEV2_H_FILE
2457           #   include VIDEODEV2_H_FILE
2458           #   else
2459           #   include <linux/videodev2.h>
2460           #   endif
2461           ],
2462           [struct v4l2_ext_controls ctrls; ctrls.ctrl_class = V4L2_CTRL_CLASS_MPEG; ],
2463           ac_cv_new_linux_videodev2_h=yes,
2464           ac_cv_new_linux_videodev2_h=no)])
2465   if test "${ac_cv_new_linux_videodev2_h}" != "no"; then
2466     AC_DEFINE(HAVE_NEW_LINUX_VIDEODEV2_H, 1, [Define if new linux/videodev2.h present])
2467   fi
2468 fi
2469
2470 dnl
2471 dnl  gnomeVFS access module
2472 dnl
2473 PKG_ENABLE_MODULES_VLC([GNOMEVFS], [access_gnomevfs], [gnome-vfs-2.0], [GnomeVFS access module], [auto])
2474
2475
2476 dnl Need to test libcdio and libvcdinfo for a number of things. Do it now.
2477 AC_ARG_ENABLE(libcdio,
2478   [  --enable-libcdio        CD input and control library support (default enabled)])
2479
2480 AC_ARG_ENABLE(vcdinfo,
2481   [  --enable-vcdinfo        VCD information library support (default enabled)])
2482
2483 have_libcdio=no
2484 have_libvcdinfo=no
2485 if test "${enable_libcdio}" != "no"
2486 then
2487   PKG_CHECK_MODULES(LIBCDIO, libcdio >= 0.78.2,
2488      have_libcdio=yes
2489      AC_DEFINE(HAVE_LIBCDIO, 1,
2490      [Define if you have libcdio 0.78.2 or greater installed]),
2491      [AC_MSG_WARN(CD Reading and information library not found)])
2492
2493   if test "${enable_vcdinfo}" != "no"
2494   then
2495     PKG_CHECK_MODULES(VCDINFO, libvcdinfo >= 0.7.22,
2496        [have_libvcdinfo=yes],
2497        [AC_MSG_WARN(VCD information library not found)])
2498   fi
2499 fi
2500
2501 dnl
2502 dnl  VCDX and CDDAX modules
2503 dnl
2504 AC_ARG_ENABLE(cddax,
2505   AS_HELP_STRING([--enable-cddax],[audio CD plugin with CD Text and CD paranoia
2506                   via libcdio (default disabled)]))
2507
2508 AC_ARG_ENABLE(libcddb,
2509   [  --enable-libcddb        CDDB support for libcdio audio CD (default enabled)])
2510
2511 if test "${enable_cddax}" = "yes"
2512 then
2513   if test "$have_libcdio" = "yes"
2514   then
2515     AC_DEFINE(HAVE_CDDAX, 1, [Define for the audio CD plugin using libcdio])
2516     VLC_ADD_LIBS([cddax],[$LIBCDIO_LIBS])
2517     VLC_ADD_CFLAGS([cddax],[$LIBCDIO_CFLAGS])
2518     VLC_ADD_PLUGIN([cddax])
2519     PKG_CHECK_MODULES(LIBCDIO_PARANOIA, libcdio_paranoia >= 0.72, [
2520     VLC_ADD_LIBS([cddax],[$LIBCDIO_CDDA_LIBS $LIBCDIO_CDDA_LIBS $LIBCDIO_PARANOIA_LIBS])],
2521     AC_MSG_WARN([CD Paranoia support disabled because no libcdio >= 0.72 found]))
2522   else
2523     AC_MSG_WARN([cddax plugin disabled because ok libcdio library not found or disabled])
2524     HAVE_CDDAX=no
2525   fi
2526
2527   if test "$enable_libcddb" != "no"; then
2528     PKG_CHECK_MODULES(LIBCDDB, libcddb >= 0.9.5, [
2529       HAVE_LIBCDDB=yes
2530       AC_DEFINE(HAVE_LIBCDDB, 1, [Define this if you have libcddb installed])
2531       VLC_ADD_LIBS([cddax],[$LIBCDDB_LIBS])
2532       VLC_ADD_CFLAGS([cddax],[$LIBCDDB_CFLAGS])
2533       ],
2534       [AC_MSG_WARN(new enough libcddb not found. CDDB access disabled)
2535       HAVE_LIBCDDB=no])
2536   fi
2537
2538 fi
2539
2540 AC_ARG_ENABLE(vcdx,
2541   [  --enable-vcdx           VCD with navigation via libvcdinfo (default disabled)])
2542
2543 if test "${enable_vcdx}" = "yes"
2544 then
2545   if test "${have_libvcdinfo}" = "yes"
2546   then
2547     VLC_ADD_LIBS([vcdx],[$VCDINFO_LIBS])
2548     VLC_ADD_CFLAGS([vcdx],[$VCDINFO_CFLAGS])
2549   else
2550     AC_MSG_WARN([vcdx plugin disabled because ok libvcdinfo library not found or disabled])
2551     HAVE_VCDX=no
2552   fi
2553
2554   PKG_CHECK_MODULES(LIBCDIO, libiso9660 >= 0.72,
2555    [VLC_ADD_LIBS([vcdx],[$LIBISO9660_LIBS])
2556     VLC_ADD_CFLAGS([vcdx],[$LIBISO9660_CFLAGS])],
2557     [AC_MSG_WARN([vcdx plugin disabled because ok libiso9660 library not found])
2558     HAVE_VCDX=no])
2559
2560   if test "$have_libvcdinfo" = "yes"
2561   then
2562     AC_DEFINE(HAVE_VCDX, 1,
2563     [Define for the VCD plugin using libcdio/libvcdinfo])
2564     VLC_ADD_LIBS([vcdx],[$VCDINFO_LIBS])
2565     VLC_ADD_CFLAGS([vcdx],[$VCDINFO_CFLAGS])
2566     VLC_ADD_PLUGIN([vcdx])
2567   else
2568     AC_MSG_WARN([vcdx plugin disabled because ok libvcdinfo library not found])
2569     HAVE_VCDX=no
2570   fi
2571 fi
2572
2573 dnl
2574 dnl  Built-in CD-DA and VCD module
2575 dnl
2576 AC_ARG_ENABLE(cdda,
2577   [  --enable-cdda           audio CD via built-in VCD (default enabled)])
2578
2579 AC_ARG_ENABLE(vcd,
2580   [  --enable-vcd            built-in VCD (default enabled)])
2581
2582 if test "${enable_vcd}" != "no"
2583 then
2584   AC_MSG_CHECKING(for cdrom_msf0 in linux/cdrom.h)
2585   AC_EGREP_HEADER(cdrom_msf0,linux/cdrom.h,[
2586     AC_MSG_RESULT(yes)
2587     VLC_ADD_PLUGIN([vcd])
2588     VLC_ADD_PLUGIN([cdda])
2589   ],[
2590     AC_MSG_RESULT(no)
2591   ])
2592
2593   AC_MSG_CHECKING(for scsireq in sys/scsiio.h)
2594   AC_EGREP_HEADER(scsireq,sys/scsiio.h,[
2595     AC_MSG_RESULT(yes)
2596     VLC_ADD_PLUGIN([vcd])
2597     VLC_ADD_PLUGIN([cdda])
2598     AC_DEFINE(HAVE_SCSIREQ_IN_SYS_SCSIIO_H, 1, For NetBSD VCD support)
2599   ],[
2600     AC_MSG_RESULT(no)
2601   ])
2602
2603   AC_MSG_CHECKING(for ioc_toc_header in sys/cdio.h)
2604   AC_EGREP_HEADER(ioc_toc_header ,sys/cdio.h,[
2605     AC_MSG_RESULT(yes)
2606     VLC_ADD_PLUGIN([vcd])
2607     VLC_ADD_PLUGIN([cdda])
2608     AC_DEFINE(HAVE_IOC_TOC_HEADER_IN_SYS_CDIO_H, 1, For FreeBSD VCD support)
2609   ],[
2610     AC_MSG_RESULT(no)
2611   ])
2612
2613   if test "${SYS}" = "bsdi" -o "${SYS}" = "mingw32"
2614   then
2615     VLC_ADD_PLUGIN([vcd])
2616     VLC_ADD_PLUGIN([cdda])
2617   fi
2618
2619   if test "${SYS}" = "darwin"
2620   then
2621     VLC_ADD_PLUGIN([vcd])
2622     VLC_ADD_PLUGIN([cdda])
2623     VLC_ADD_LDFLAGS([vcd vcdx cdda cddax],[-Wl,-framework,IOKit,-framework,CoreFoundation])
2624     VLC_ADD_LIBS([vcdx cddax cdda],[-liconv])
2625   fi
2626
2627   if test "$enable_libcddb" != "no"; then
2628     PKG_CHECK_MODULES(LIBCDDB, libcddb >= 0.9.5, [
2629       HAVE_LIBCDDB=yes
2630       AC_DEFINE(HAVE_LIBCDDB, 1, [Define this if you have libcddb installed])
2631       VLC_ADD_LIBS([cdda],[$LIBCDDB_LIBS])
2632       VLC_ADD_CFLAGS([cdda],[$LIBCDDB_CFLAGS])
2633       ],:
2634       [AC_MSG_WARN(new enough libcddb not found. CDDB access disabled)
2635       HAVE_LIBCDDB=no])
2636   fi
2637 fi
2638
2639 dnl
2640 dnl  DVB-S/DVB-T/DVB-C satellite/teresterial/cable input using v4l2
2641 dnl
2642 AC_ARG_ENABLE(dvb,
2643   [  --enable-dvb            DVB-S/T/C card support (default enabled)])
2644
2645 if test "${enable_dvb}" != "no"
2646 then
2647     AS_IF([test "${have_dvbpsi}" = "yes" ],[
2648     AC_ARG_WITH(dvb,
2649      [    --with-dvb=PATH       path to a dvb- and v4l2-enabled kernel tree],[],[])
2650      if test "${with_dvb}" != "no" -a -n "${with_dvb}"
2651      then
2652        VLC_ADD_CFLAGS([dvb],[-I${with_dvb}/include])
2653      fi
2654      CPPFLAGS="${CPPFLAGS_save} -I${with_dvb}/include"
2655      AC_CHECK_HEADERS(linux/dvb/version.h linux/dvb/frontend.h, [
2656      VLC_ADD_PLUGIN([dvb])
2657      ],[AC_MSG_WARN(linux-dvb headers not found, dvb disabled)])
2658      CPPFLAGS="${CPPFLAGS_save}"
2659    ],[
2660      AC_MSG_WARN([the dvb access module requires libdvbpsi])
2661     ])
2662 fi
2663
2664 dnl
2665 dnl  Screen capture module
2666 dnl
2667 AC_ARG_ENABLE(screen,
2668   [  --enable-screen         Screen capture support (default enabled)])
2669 if test "${enable_screen}" != "no"; then
2670   if test "${SYS}" = "darwin"; then
2671     AC_CHECK_HEADERS(OpenGL/gl.h, [
2672       AC_CHECK_HEADERS(ApplicationServices/ApplicationServices.h, [
2673         VLC_ADD_PLUGIN([screen])
2674         VLC_ADD_LDFLAGS([screen],[-Wl,-framework,OpenGL,-framework,ApplicationServices])
2675       ])
2676     ])
2677   elif test "${SYS}" = "mingw32"; then
2678     VLC_ADD_PLUGIN([screen])
2679     VLC_ADD_LIBS([screen],[-lgdi32])
2680   elif test "${SYS}" = "mingwce"; then
2681     CPPFLAGS="${CPPFLAGS_save}"
2682   elif test "${SYS}" = "beos"; then
2683     VLC_ADD_PLUGIN([screen])
2684     VLC_ADD_CXXFLAGS([screen],[])
2685     VLC_ADD_LIBS([screen],[-lbe])
2686   fi
2687 fi
2688
2689 dnl
2690 dnl  ipv6 plugin - not for QNX yet
2691 dnl
2692 have_ipv6=no
2693 AC_CHECK_FUNCS(inet_pton,[have_ipv6=yes],[
2694   AC_CHECK_LIB(nsl,inet_pton, [have_ipv6=yes])
2695 ])
2696
2697 AS_IF([test "${have_ipv6}" = "yes"], [
2698   AC_DEFINE(HAVE_INET_PTON, 1, [Define to 1 if you have inet_pton().])])
2699
2700
2701 AC_CHECK_FUNCS(inet_ntop,[
2702   AC_DEFINE(HAVE_INET_NTOP, 1, [Define to 1 if you have inet_ntop().])])
2703
2704
2705 dnl
2706 dnl  ogg demux plugin
2707 dnl
2708 PKG_ENABLE_MODULES_VLC([OGG], [], [ogg >= 1.0], [Ogg demux support], [auto])
2709 if test "${enable_sout}" != "no"; then
2710     PKG_ENABLE_MODULES_VLC([MUX_OGG], [], [ogg >= 1.0], [Ogg demux support], [auto])
2711 fi
2712
2713 if test "${enable_sout}" != "no"; then
2714 dnl Check for libshout
2715 PKG_ENABLE_MODULES_VLC([SHOUT], [access_output_shout], [shout >= 2.1], [libshout output plugin], [auto])
2716 fi
2717
2718 dnl
2719 dnl  matroska demux plugin
2720 dnl
2721 AC_ARG_ENABLE(mkv,
2722   [  --enable-mkv            Matroska demux support (default enabled)])
2723 if test "${enable_mkv}" != "no" -a "${CXX}" != ""; then
2724   AC_LANG_PUSH(C++)
2725   AC_CHECK_HEADERS(ebml/EbmlVersion.h, [
2726     AC_MSG_CHECKING(for libebml version >= 0.7.7)
2727     AC_EGREP_CPP(yes,
2728       [#include <ebml/EbmlVersion.h>
2729        #ifdef LIBEBML_VERSION
2730        #if LIBEBML_VERSION >= 0x000706
2731        yes
2732        #endif
2733        #endif],
2734       [AC_MSG_RESULT([yes])
2735         AC_CHECK_HEADERS(matroska/KaxVersion.h, [
2736           AC_MSG_CHECKING(for libmatroska version >= 0.8.0)
2737           AC_EGREP_CPP(yes,
2738             [#include <matroska/KaxVersion.h>
2739              #ifdef LIBMATROSKA_VERSION
2740              #if LIBMATROSKA_VERSION >= 0x000705
2741              yes
2742              #endif
2743              #endif],
2744             [AC_MSG_RESULT([yes])
2745               AC_CHECK_HEADERS(matroska/KaxAttachments.h)
2746               VLC_ADD_CXXFLAGS([mkv],[])
2747               if test "${SYS}" = "darwin"; then
2748                 VLC_ADD_CXXFLAGS([mkv],[-O1])
2749               fi
2750               AC_CHECK_LIB(ebml_pic, main, [
2751                 VLC_ADD_PLUGIN([mkv])
2752                 VLC_ADD_LIBS([mkv],[-lmatroska -lebml_pic])
2753               ],
2754                 AC_CHECK_LIB(ebml, main, [
2755                   VLC_ADD_PLUGIN([mkv])
2756                   VLC_ADD_LIBS([mkv],[-lmatroska -lebml])
2757                 ])
2758               )
2759             ],
2760             [AC_MSG_RESULT([no])
2761               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.])
2762           ])
2763         ])
2764       ],
2765       [AC_MSG_RESULT([no])
2766         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.])
2767     ])
2768   ])
2769   AC_LANG_POP(C++)
2770 fi
2771
2772 dnl
2773 dnl  modplug demux plugin
2774 dnl
2775 AC_ARG_ENABLE(mod,
2776   [  --enable-mod            Mod demux support (default enabled)])
2777 if test "${enable_mod}" != "no"
2778 then
2779   AC_ARG_WITH(mod-tree,
2780   [    --with-mod-tree=PATH mod tree for static linking])
2781   if test -n "${with_mod_tree}"
2782   then
2783     AC_MSG_CHECKING(for libmodplug.a in ${with_mod_tree})
2784     real_mod_tree="`cd ${with_mod_tree} 2>/dev/null && pwd`"
2785     if test -z "${real_mod_tree}"
2786     then
2787       dnl  The given directory can't be found
2788       AC_MSG_RESULT(no)
2789       AC_MSG_ERROR([cannot cd to ${with_mod_tree}])
2790     fi
2791     if test -f "${real_mod_tree}/src/.libs/libmodplug.a"
2792     then
2793       dnl  Use a custom mod
2794       AC_MSG_RESULT(${real_mod_tree}/src/.libs/libmodplug.a)
2795       VLC_ADD_PLUGIN([mod])
2796       VLC_ADD_LIBS([mod],[${real_mod_tree}/src/.libs/libmodplug.a -lstdc++])
2797       VLC_ADD_CXXFLAGS([mod],[-I${real_mod_tree}/include])
2798     else
2799       dnl  The given mod wasn't built
2800       AC_MSG_RESULT(no)
2801       AC_MSG_ERROR([cannot find ${real_mod_tree}/src/.libs/libmodplug.a, make sure you compiled mod in ${with_mod_tree}])
2802     fi
2803   else
2804     AC_CHECK_HEADERS(libmodplug/modplug.h, [
2805       VLC_ADD_PLUGIN([mod])
2806       VLC_ADD_CXXFLAGS([mod],[])
2807       VLC_ADD_LIBS([mod],[-lmodplug -lstdc++])])
2808   fi
2809 fi
2810
2811 dnl
2812 dnl  mpc demux plugin
2813 dnl
2814 AC_ARG_ENABLE(mpc,
2815   [  --enable-mpc            Mpc demux support (default enabled)])
2816 if test "${enable_mpc}" != "no"
2817 then
2818   AC_CHECK_HEADERS([mpc/mpcdec.h], [
2819     VLC_ADD_PLUGIN([mpc])
2820     VLC_ADD_LIBS([mpc],[-lmpcdec])],
2821     [AC_CHECK_HEADERS([mpcdec/mpcdec.h], [
2822     VLC_ADD_PLUGIN([mpc])
2823     VLC_ADD_LIBS([mpc],[-lmpcdec])])])
2824 fi
2825
2826 dnl
2827 dnl  game music emu demux plugin
2828 dnl
2829 AC_ARG_ENABLE(gme,
2830   [  --enable-gme            Game Music Emu demux support (default enabled)])
2831 if test "${enable_gme}" != "no" -a "${CXX}" != "";
2832 then
2833   AC_LANG_PUSH(C++)
2834   AC_ARG_WITH(gme-tree,
2835   [    --with-gme-tree=PATH gme tree for static linking])
2836   if test -n "${with_gme_tree}"
2837   then
2838     AC_MSG_CHECKING(for libgme.a in ${with_mod_tree})
2839     real_gme_tree="`cd ${with_gme_tree} 2>/dev/null && pwd`"
2840     if test -z "${real_gme_tree}"
2841     then
2842       dnl  The given directory can't be found
2843       AC_MSG_RESULT(no)
2844       AC_MSG_ERROR([cannot cd to ${with_gme_tree}])
2845     fi
2846     if test -f "${real_gme_tree}/gme/libgme.a"
2847     then
2848       dnl  Use a custom gme
2849       AC_MSG_RESULT(${real_gme_tree}/gme/libgme.a)
2850       VLC_ADD_PLUGIN([gme])
2851       VLC_ADD_LIBS([gme],[${real_gme_tree}/gme/libgme.a])
2852       VLC_ADD_CXXFLAGS([gme],[-I${real_gme_tree}/gme])
2853     else
2854       dnl  The given gme wasn't built
2855       AC_MSG_RESULT(no)
2856       AC_MSG_ERROR([cannot find ${real_mod_tree}/gme/libgme.a, make sure you compiled gme in ${with_gme_tree}])
2857     fi
2858   else
2859       AC_MSG_WARN([only static linking is available, you must provide a gme-tree])
2860   fi
2861   AC_LANG_POP(C++)
2862 fi
2863
2864 dnl
2865 dnl  Codec plugins
2866 dnl
2867
2868 AC_ARG_WITH(,[Codec plugins:])
2869
2870 dnl
2871 dnl wmafixed plugin
2872 dnl
2873 AC_ARG_ENABLE(wma-fixed,
2874   [  --enable-wma-fixed      libwma-fixed module (default disabled)])
2875 if test "${enable_wma_fixed}" = "yes"
2876 then
2877   VLC_ADD_PLUGIN([wma_fixed])
2878 fi
2879
2880 dnl
2881 dnl shine fixed point mp3 encoder
2882 dnl
2883 AC_ARG_ENABLE(shine,
2884   [  --enable-shine          shine mp3 encoding module (default disabled)])
2885 if test "${enable_shine}" = "yes"
2886 then
2887   VLC_ADD_PLUGIN([shine])
2888 fi
2889
2890 dnl
2891 dnl  mad plugin
2892 dnl
2893 AC_ARG_ENABLE(mad,
2894   [  --enable-mad            libmad module (default enabled)])
2895 if test "${enable_mad}" != "no"
2896 then
2897   AC_ARG_WITH(mad,
2898     [    --with-mad=PATH       path to libmad],[],[])
2899   if test "${with_mad}" != "no" -a -n "${with_mad}"
2900   then
2901     VLC_ADD_CPPFLAGS([mpgatofixed32],[-I${with_mad}/include])
2902     VLC_ADD_LIBS([mpgatofixed32],[-L${with_mad}/lib])
2903   fi
2904
2905   AC_ARG_WITH(mad-tree,
2906     [    --with-mad-tree=PATH   mad tree for static linking],[],[])
2907   if test "${with_mad_tree}" != "no" -a -n "${with_mad_tree}"
2908   then
2909     real_mad_tree="`cd ${with_mad_tree} 2>/dev/null && pwd`"
2910     if test -z "${real_mad_tree}"
2911     then
2912       dnl  The given directory can't be found
2913       AC_MSG_RESULT(no)
2914       AC_MSG_ERROR([${with_mad_tree} directory doesn't exist])
2915     fi
2916     dnl  Use a custom libmad
2917     AC_MSG_CHECKING(for mad.h in ${real_mad_tree})
2918     if test -f ${real_mad_tree}/mad.h
2919     then
2920       AC_MSG_RESULT(yes)
2921       VLC_ADD_CPPFLAGS([mpgatofixed32],[-I${real_mad_tree}])
2922       VLC_ADD_LIBS([mpgatofixed32],[-L${real_mad_tree}/.libs])
2923       LDFLAGS="${LDFLAGS_save} ${LIBS_mpgatofixed32}"
2924       AC_CHECK_LIB(mad, mad_bit_init, [
2925         VLC_ADD_PLUGIN([mpgatofixed32])
2926         VLC_ADD_LIBS([mpgatofixed32],[-lmad])
2927         ],[ AC_MSG_ERROR([the specified tree hasn't been compiled ])
2928       ],[])
2929       LDFLAGS="${LDFLAGS_save}"
2930     else
2931       AC_MSG_RESULT(no)
2932       AC_MSG_ERROR([the specified tree doesn't have mad.h])
2933     fi
2934   else
2935     CPPFLAGS="${CPPFLAGS_save} ${CPPFLAGS_mpgatofixed32}"
2936     LDFLAGS="${LDFLAGS_save} ${LIBS_mpgatofixed32}"
2937     AC_CHECK_HEADERS(mad.h, ,
2938       [ 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.]) ])
2939     AC_CHECK_LIB(mad, mad_bit_init, [
2940       VLC_ADD_PLUGIN([mpgatofixed32])
2941       VLC_ADD_LIBS([mpgatofixed32],[-lmad])],
2942       [ AC_MSG_ERROR([Cannot find libmad library...]) ])
2943     CPPFLAGS="${CPPFLAGS_save}"
2944     LDFLAGS="${LDFLAGS_save}"
2945   fi
2946 fi
2947
2948 dnl
2949 dnl   libid3tag support (FIXME!!! doesn't work with new input)
2950 dnl
2951 AC_ARG_ENABLE( id3tag,
2952 [  --disable-id3tag        id3tag metadata reader plugin (default disabled)])
2953 AS_IF([test "${enable_id3tag}" = "yes"], [
2954   AC_CHECK_HEADERS(id3tag.h, [
2955       AS_IF([test "${have_zlib}" = "yes"],[
2956           VLC_ADD_LIBS([id3tag],[-lid3tag -lz])
2957           VLC_ADD_PLUGIN([id3tag])
2958        ])
2959     ])
2960 ])
2961
2962 AC_ARG_ENABLE(merge-ffmpeg,
2963 [  --enable-merge-ffmpeg  merge FFmpeg-based plugins (default disabled)],, [
2964   enable_merge_ffmpeg="no"
2965 ])
2966 AM_CONDITIONAL([MERGE_FFMPEG], [test "$enable_merge_ffmpeg" != "no"])
2967
2968 dnl
2969 dnl  avcodec decoder/encoder plugin
2970 dnl
2971
2972 if test "${with_ffmpeg_tree}"
2973 then
2974   AC_MSG_WARN([--with-ffmpeg-tree is deprecated. Use PKG_CONFIG_PATH instead.])
2975 fi
2976
2977 AC_ARG_ENABLE(avcodec,
2978 [  --enable-avcodec        libavcodec codec (default enabled)])
2979 if test "${enable_avcodec}" != "no"
2980 then
2981   PKG_CHECK_MODULES(AVCODEC,[libavcodec >= 51.48.0 libavutil],
2982     [
2983       VLC_SAVE_FLAGS
2984       CPPFLAGS="${CPPFLAGS} ${AVCODEC_CFLAGS}"
2985       CFLAGS="${CFLAGS} ${AVCODEC_CFLAGS}"
2986       AC_CHECK_HEADERS(libavcodec/avcodec.h ffmpeg/avcodec.h)
2987       AC_CHECK_HEADERS(libavutil/avutil.h ffmpeg/avutil.h)
2988       VLC_ADD_PLUGIN([avcodec])
2989       VLC_ADD_LIBS([avcodec],[$AVCODEC_LIBS])
2990       VLC_ADD_CFLAGS([avcodec],[$AVCODEC_CFLAGS])
2991       VLC_RESTORE_FLAGS
2992       have_avcodec="yes"
2993     ],[
2994       AC_MSG_ERROR([Could not find libavcodec or libavutil. Use --disable-avcodec to ignore this error.])
2995   ])
2996 fi
2997
2998 dnl
2999 dnl libva needs avcodec
3000 dnl
3001 AC_ARG_ENABLE(libva,
3002   [  --enable-libva         libva VAAPI support (default disabled)])
3003 AS_IF([test "${enable_libva}" = "yes"], [
3004   AS_IF([test "x${have_avcodec}" = "xyes"], [
3005     PKG_CHECK_MODULES(LIBVA, [libva libva-x11],
3006       [
3007         VLC_ADD_LIBS([avcodec],[$LIBVA_LIBS])
3008         VLC_ADD_CFLAGS([avcodec],[$LIBVA_CFLAGS])
3009         AC_DEFINE(HAVE_AVCODEC_VAAPI, 1, [Define if avcodec has to be built with VAAPI support.])
3010       ],[
3011         AC_MSG_ERROR([Could not find libva.])
3012     ])
3013   ],[
3014     AC_MSG_ERROR([libva VAAPI support depends on libavcodec.])
3015   ])
3016 ])
3017
3018 dnl
3019 dnl stream_out switcher needs libavcodec
3020 dnl
3021 AC_ARG_ENABLE(switcher,
3022   [  --enable-switcher       Stream-out switcher plugin (default disabled)])
3023 AS_IF([test "${enable_switcher}" = "yes"], [
3024   AS_IF([test "x${have_avcodec}" = "xyes"], [
3025     VLC_ADD_PLUGIN([stream_out_switcher])
3026     VLC_ADD_LIBS([stream_out_switcher],[$AVCODEC_LIBS $AVUTIL_LIBS])
3027     VLC_ADD_CFLAGS([stream_out_switcher],[$AVCODEC_CFLAGS $AVUTIL_CFLAGS])
3028   ],[AC_MSG_ERROR([Stream_out switcher depends on avcodec])
3029   ])
3030 ])
3031
3032
3033 dnl
3034 dnl  avformat demuxer/muxer plugin
3035 dnl
3036
3037 AC_ARG_ENABLE(avformat,
3038 [  --enable-avformat       libavformat containers (default enabled)])
3039 if test "${enable_avformat}" != "no"
3040 then
3041   PKG_CHECK_MODULES(AVFORMAT,[libavformat libavutil],
3042     [
3043       VLC_SAVE_FLAGS
3044       CPPFLAGS="${CPPFLAGS} ${AVFORMAT_CFLAGS}"
3045       CFLAGS="${CFLAGS} ${AVFORMAT_CFLAGS}"
3046       AC_CHECK_HEADERS(libavformat/avformat.h ffmpeg/avformat.h)
3047       AC_CHECK_HEADERS(libavutil/avutil.h ffmpeg/avutil.h)
3048       AS_IF([test "$enable_merge_ffmpeg" = "no"], [
3049         VLC_ADD_PLUGIN([avformat])
3050         VLC_ADD_LIBS([avformat],[$AVFORMAT_LIBS $AVUTIL_LIBS])
3051         VLC_ADD_CFLAGS([avformat],[$AVFORMAT_CFLAGS $AVUTIL_CFLAGS])
3052       ], [
3053         VLC_ADD_LIBS([avcodec],[$AVFORMAT_LIBS $AVUTIL_LIBS])
3054         VLC_ADD_CFLAGS([avcodec],[$AVFORMAT_CFLAGS $AVUTIL_CFLAGS])
3055       ])
3056       VLC_RESTORE_FLAGS
3057     ],[
3058       AC_MSG_ERROR([Could not find libavformat or libavutil. Use --disable-avformat to ignore this error.])
3059   ])
3060 fi
3061
3062 dnl
3063 dnl  swscale image scaling and conversion plugin
3064 dnl
3065
3066 AC_ARG_ENABLE(swscale,
3067   AS_HELP_STRING([--enable-swscale],[libswscale image scaling and conversion
3068                   (default enabled)]))
3069 if test "${enable_swscale}" != "no"
3070 then
3071   PKG_CHECK_MODULES(SWSCALE,[libswscale],
3072     [
3073       VLC_SAVE_FLAGS
3074       CPPFLAGS="${CPPFLAGS} ${SWSCALE_CFLAGS}"
3075       CFLAGS="${CFLAGS} ${SWSCALE_CFLAGS}"
3076       AC_CHECK_HEADERS(libswscale/swscale.h ffmpeg/swscale.h)
3077       VLC_ADD_PLUGIN([swscale])
3078       VLC_ADD_LIBS([swscale],[$SWSCALE_LIBS])
3079       VLC_ADD_CFLAGS([swscale],[$SWSCALE_CFLAGS])
3080       VLC_RESTORE_FLAGS
3081     ],[
3082       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.])
3083   ])
3084 fi
3085
3086 dnl
3087 dnl  postproc plugin
3088 dnl
3089
3090 AC_ARG_ENABLE(postproc,
3091 [  --enable-postproc       libpostproc image post-processing (default enabled)])
3092 if test "${enable_postproc}" != "no"
3093 then
3094   PKG_CHECK_MODULES(POSTPROC,[libpostproc libavutil],
3095     [
3096       VLC_SAVE_FLAGS
3097       CPPFLAGS="${CPPFLAGS} ${POSTPROC_CFLAGS}"
3098       CFLAGS="${CFLAGS} ${POSTPROC_CFLAGS}"
3099       AC_CHECK_HEADERS(postproc/postprocess.h)
3100       VLC_ADD_PLUGIN([postproc])
3101       VLC_ADD_LIBS([postproc],[$POSTPROC_LIBS $AVUTIL_LIBS])
3102       VLC_ADD_CFLAGS([postproc],[$POSTPROC_CFLAGS $AVUTIL_CFLAGS])
3103       VLC_RESTORE_FLAGS
3104     ],[
3105       AC_MSG_ERROR([Could not find libpostproc. Use --disable-postproc to ignore this error.])
3106   ])
3107 fi
3108
3109 dnl
3110 dnl  faad decoder plugin
3111 dnl
3112 AC_ARG_ENABLE(faad,
3113 [  --enable-faad           faad codec (default disabled)])
3114 if test "${enable_faad}" = "yes"
3115 then
3116   AC_ARG_WITH(faad-tree,
3117   [    --with-faad-tree=PATH faad tree for static linking])
3118   if test -n "${with_faad_tree}"
3119   then
3120     AC_MSG_CHECKING(for libfaad.a in ${with_faad_tree})
3121     real_faad_tree="`cd ${with_faad_tree} 2>/dev/null && pwd`"
3122     if test -z "${real_faad_tree}"
3123     then
3124       dnl  The given directory can't be found
3125       AC_MSG_RESULT(no)
3126       AC_MSG_ERROR([cannot cd to ${with_faad_tree}])
3127     fi
3128     if test -f "${real_faad_tree}/libfaad/.libs/libfaad.a"
3129     then
3130       dnl  Use a custom faad
3131       AC_MSG_RESULT(${real_faad_tree}/libfaad/.libs/libfaad.a)
3132       VLC_ADD_PLUGIN([faad])
3133       VLC_ADD_LIBS([faad],[${real_faad_tree}/libfaad/.libs/libfaad.a])
3134       VLC_ADD_CPPFLAGS([faad],[-I${real_faad_tree}/include])
3135     else
3136       dnl  The given libfaad wasn't built
3137       AC_MSG_RESULT(no)
3138       AC_MSG_ERROR([cannot find ${real_faad_tree}/libfaad/.libs/libfaad.a, make sure you compiled libfaad in ${with_faad_tree}])
3139     fi
3140   else
3141     CPPFLAGS="${CPPFLAGS_save} ${CPPFLAGS_faad}"
3142     LDFLAGS="${LDFLAGS_save} ${LIBS_faad}"
3143     AC_CHECK_HEADERS(faad.h, ,
3144       [ AC_MSG_ERROR([Cannot find development headers for libfaad...]) ])
3145     AC_CHECK_LIB(faad, faacDecOpen, [
3146       VLC_ADD_PLUGIN([faad])
3147       VLC_ADD_LIBS([faad],[-lfaad]) ],
3148       AC_CHECK_LIB(faad, NeAACDecOpen, [
3149         VLC_ADD_PLUGIN([faad])
3150         VLC_ADD_LIBS([faad],[-lfaad]) ],
3151         [ AC_MSG_ERROR([Cannot find libfaad library...]) ]))
3152     LDFLAGS="${LDFLAGS_save}"
3153     CPPFLAGS="${CPPFLAGS_save}"
3154   fi
3155 fi
3156
3157 dnl
3158 dnl twolame encoder plugin
3159 dnl
3160 PKG_ENABLE_MODULES_VLC([TWOLAME], [], [twolame], [MPEG Audio Layer 2 encoder], [auto], [], [], [ -DLIBTWOLAME_STATIC])
3161
3162 dnl
3163 dnl  QuickTime plugin
3164 dnl
3165 AC_ARG_ENABLE(quicktime,
3166   [  --enable-quicktime      QuickTime module (deprecated)])
3167 if test "${enable_quicktime}" = "yes"; then
3168   if test "${SYS}" = "mingw32"; then
3169     VLC_ADD_PLUGIN([quicktime])
3170   else
3171   AC_CHECK_HEADERS(QuickTime/QuickTime.h,
3172     [ VLC_ADD_PLUGIN([quicktime])
3173       VLC_ADD_LDFLAGS([quicktime],[-Wl,-framework,QuickTime,-framework,Carbon])
3174     ], [ AC_MSG_ERROR([cannot find QuickTime headers]) ])
3175   fi
3176 fi
3177
3178 dnl
3179 dnl  Real plugin
3180 dnl
3181 AC_ARG_ENABLE(real,
3182   [  --enable-real           Real media module (default disabled)])
3183 if test "${enable_real}" = "yes"; then
3184   VLC_ADD_PLUGIN([realaudio])
3185   VLC_ADD_PLUGIN([realvideo])
3186 fi
3187
3188 dnl
3189 dnl  Real RTSP plugin
3190 dnl
3191 AC_ARG_ENABLE(realrtsp,
3192   [  --enable-realrtsp       Real RTSP module (default disabled)])
3193 if test "${enable_realrtsp}" = "yes"; then
3194   VLC_ADD_PLUGIN([access_realrtsp])
3195 fi
3196
3197 AC_ARG_ENABLE(libsysfs,
3198   [  --enable-libsysfs       Get user key from firewire connected iPod via libsysfs (default enabled)])
3199
3200 AS_IF([test "${enable_libsysfs}" != "no"],[
3201   AC_CHECK_HEADERS(sysfs/libsysfs.h, [
3202     VLC_ADD_LIBS([mp4 mkv],[-lsysfs])
3203   ] )
3204 ])
3205
3206 dnl
3207 dnl skins2 module
3208 dnl
3209 AC_ARG_ENABLE(libtar,
3210   [  --enable-libtar         libtar support for skins2 (default enabled)])
3211
3212 AS_IF([test "${enable_libtar}" != "no"],[
3213   AC_CHECK_HEADERS(libtar.h, [
3214     VLC_ADD_LIBS([skins2],[-ltar])
3215   ] )
3216 ])
3217
3218 dnl
3219 dnl A52/AC3 decoder plugin
3220 dnl
3221 AC_ARG_ENABLE(a52,
3222   [  --enable-a52            A/52 support with liba52 (default enabled)])
3223 if test "${enable_a52}" != "no"
3224 then
3225   AC_ARG_WITH(a52,
3226     [    --with-a52=PATH       a52 headers and libraries])
3227   AC_ARG_WITH(a52-tree,
3228     [    --with-a52-tree=PATH  a52dec tree for static linking ],[],[])
3229   if test "${with_a52_tree}" != "no" -a -n "${with_a52_tree}"
3230   then
3231     real_a52_tree="`cd ${with_a52_tree} 2>/dev/null && pwd`"
3232     if test -z "${real_a52_tree}"
3233     then
3234       dnl  The given directory can't be found
3235       AC_MSG_RESULT(no)
3236       AC_MSG_ERROR([${with_a52_tree} directory doesn't exist])
3237     fi
3238     dnl  Use a custom a52dec
3239     AC_MSG_CHECKING(for a52.h in ${real_a52_tree}/include)
3240     if test -f ${real_a52_tree}/include/a52.h
3241     then
3242       AC_MSG_RESULT(yes)
3243       VLC_ADD_CPPFLAGS([a52tofloat32],[-I${real_a52_tree}])
3244       VLC_ADD_LIBS([a52tofloat32],[-L${real_a52_tree}/liba52/.libs])
3245       LDFLAGS="${LDFLAGS_save} ${LIBS_a52tofloat32}"
3246       AC_CHECK_LIB(a52, a52_free, [
3247         VLC_ADD_PLUGIN([a52tofloat32])
3248         VLC_ADD_CPPFLAGS([a52tofloat32],[-DUSE_A52DEC_TREE])
3249         VLC_ADD_LIBS([a52tofloat32],[-la52])
3250         ],[
3251         if test -f ${real_a52_tree}/liba52/.libs/liba52.a
3252         then
3253           AC_MSG_ERROR([make sure you have at least a52dec-0.7.3 ($real_a52_tree)])
3254         else
3255           AC_MSG_ERROR([the specified tree hasn't been compiled])
3256         fi
3257       ])
3258       LDFLAGS="${LDFLAGS_save}"
3259     else
3260       AC_MSG_RESULT(no)
3261       AC_MSG_ERROR([the specified tree doesn't have a52.h])
3262     fi
3263   else
3264     if test -z "${with_a52}"
3265     then
3266       LDFLAGS_test=""
3267       CPPFLAGS_test=""
3268     else
3269       LDFLAGS_test="-L${with_a52}/lib"
3270       CPPFLAGS_test="-I${with_a52}/include"
3271     fi
3272     CPPFLAGS="${CPPFLAGS_save} ${CPPFLAGS_test} ${CPPFLAGS_a52tofloat32}"
3273     LDFLAGS="${LDFLAGS_save} ${LDFLAGS_test} ${LIBS_a52tofloat32}"
3274     AC_CHECK_HEADERS(a52dec/a52.h, [
3275       AC_CHECK_LIB(a52, a52_free, [
3276         VLC_ADD_PLUGIN([a52tofloat32])
3277         VLC_ADD_LIBS([a52tofloat32],[${LDFLAGS_test} -la52])
3278         VLC_ADD_CPPFLAGS([a52tofloat32],[${CPPFLAGS_test}])
3279       ],[
3280         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.])
3281         ])
3282     ],[
3283       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.])
3284     ])
3285     CPPFLAGS="${CPPFLAGS_save}"
3286     LDFLAGS="${LDFLAGS_save}"
3287   fi
3288 fi
3289
3290 AC_ARG_WITH(a52-fixed,
3291       [    --with-a52-fixed      specify if liba52 has been compiled with fixed point support],
3292       [
3293         VLC_ADD_CPPFLAGS([a52tofloat32],[-DLIBA52_FIXED]) ])
3294
3295 dnl
3296 dnl DTS Coherent Acoustics decoder plugin
3297 dnl
3298 AS_IF([test "x${enable_dts}" != "x"], [
3299   AC_MSG_ERROR([--enable-dts is obsolete. Please use libdca and --enable-dca.])
3300 ])
3301 PKG_ENABLE_MODULES_VLC([DCA], [dtstofloat32], [libdca >= 0.0.5], [DTS Coherent Acoustics support with libdca], [auto])
3302
3303 dnl
3304 dnl  Flac plugin
3305 dnl
3306 PKG_ENABLE_MODULES_VLC([FLAC], [], [flac], [libflac decoder/encoder support], [auto])
3307
3308 dnl
3309 dnl  Libmpeg2 plugin
3310 dnl
3311 PKG_ENABLE_MODULES_VLC([LIBMPEG2], [], [libmpeg2 > 0.3.2], [libmpeg2 decoder support], [auto])
3312
3313 dnl
3314 dnl  Vorbis plugin
3315 dnl
3316 PKG_ENABLE_MODULES_VLC([VORBIS], [], [ogg vorbis >= 1.1 vorbisenc >= 1.1], [Vorbis decoder and encoder], [auto])
3317
3318 dnl
3319 dnl  Tremor plugin
3320 dnl
3321 AC_ARG_ENABLE(tremor,
3322   [  --enable-tremor         Tremor decoder support (default disabled)])
3323 if test "${enable_tremor}" = "yes"
3324 then
3325   AC_CHECK_HEADERS(tremor/ivorbiscodec.h, [
3326     VLC_ADD_PLUGIN([tremor])
3327     VLC_ADD_LIBS([tremor],[-lvorbisidec -logg])
3328    ],[])
3329 fi
3330
3331 dnl
3332 dnl  Speex plugin
3333 dnl
3334 PKG_ENABLE_MODULES_VLC([SPEEX], [], [ogg speex >= 1.0.5], [Speex decoder support], [auto])
3335
3336 dnl
3337 dnl  tarkin decoder plugin
3338 dnl
3339 AC_ARG_ENABLE(tarkin,
3340 [  --enable-tarkin         experimental tarkin codec (default disabled)])
3341 if test "${enable_tarkin}" = "yes"
3342 then
3343   AC_ARG_WITH(tarkin-tree,
3344   [    --with-tarkin-tree=PATH tarkin tree for static linking])
3345   if test -n "${with_tarkin_tree}"
3346   then
3347     AC_MSG_CHECKING(for tarkin.o in ${with_tarkin_tree})
3348     real_tarkin_tree="`cd ${with_tarkin_tree} 2>/dev/null && pwd`"
3349     if test -f "${real_tarkin_tree}/tarkin.o"
3350     then
3351       VLC_ADD_PLUGIN([tarkin])
3352       VLC_ADD_CPPFLAGS([tarkin],[-I${real_tarkin_tree}])
3353       VLC_ADD_LIBS([tarkin],[${real_tarkin_tree}/mem.o ${real_tarkin_tree}/pnm.o ${real_tarkin_tree}/wavelet.o ${real_tarkin_tree}/wavelet_xform.o ${real_tarkin_tree}/wavelet_coeff.o ${real_tarkin_tree}/yuv.o ${real_tarkin_tree}/tarkin.o ${real_tarkin_tree}/info.o -logg])
3354       AC_MSG_RESULT(yes)
3355     else
3356       dnl  The given tarkin tree wasn't built
3357       AC_MSG_RESULT(no)
3358       AC_MSG_ERROR([cannot find ${real_tarkin_tree}/tarkin.o,
3359                     make sure you compiled tarkin in ${with_tarkin_tree}])
3360     fi
3361   fi
3362 fi
3363
3364 dnl
3365 dnl  theora decoder plugin
3366 dnl
3367 PKG_ENABLE_MODULES_VLC([THEORA], [], [ogg theora >= 1.0], [experimental theora codec], [auto])
3368
3369 dnl
3370 dnl  dirac encoder plugin
3371 dnl
3372 PKG_ENABLE_MODULES_VLC([DIRAC], [], [dirac >= 0.10.0], [dirac encoder], [auto])
3373
3374 dnl
3375 dnl  schroedinger decoder plugin (for dirac format video)
3376 dnl
3377 PKG_ENABLE_MODULES_VLC([SCHROEDINGER], [], [schroedinger-1.0 >= 1.0.6], [dirac decoder using schroedinger], [auto])
3378
3379 dnl
3380 dnl  PNG decoder module
3381 dnl
3382 AC_ARG_ENABLE(png,
3383   [  --enable-png            PNG support (default enabled)])
3384 if test "${enable_png}" != "no"; then
3385 AC_CHECK_HEADERS(png.h, [
3386   LDFLAGS="${LDFLAGS_save} -lz"
3387   AC_CHECK_LIB(png, png_set_rows, [
3388     VLC_ADD_LIBS([png],[-lpng -lz])
3389     VLC_ADD_PLUGIN([png])
3390     VLC_ADD_PLUGIN([osdmenu])
3391     VLC_ADD_PLUGIN([osd_parser])],
3392     [],[-lz])
3393     LDFLAGS="${LDFLAGS_save}"
3394   ])
3395 fi
3396 AM_CONDITIONAL(BUILD_OSDMENU, [test "${enable_png}" != "no"])
3397
3398 dnl
3399 dnl H264 encoder plugin (using libx264)
3400 dnl
3401 AC_ARG_ENABLE(x264,
3402   [  --enable-x264           H264 encoding support with libx264 (default enabled)])
3403 if test "${enable_x264}" != "no"; then
3404   AC_ARG_WITH(x264-tree,
3405     [    --with-x264-tree=PATH x264 tree for static linking ],[],[])
3406   if test "${with_x264_tree}" != "no" -a -n "${with_x264_tree}"
3407   then
3408     real_x264_tree="`cd ${with_x264_tree} 2>/dev/null && pwd`"
3409     if test -z "${real_x264_tree}"
3410     then
3411       dnl  The given directory can't be found
3412       AC_MSG_RESULT(no)
3413       AC_MSG_ERROR([${with_x264_tree} directory doesn't exist])
3414     fi
3415     dnl  Use a custom libx264
3416     AC_MSG_CHECKING(for x264.h in ${real_x264_tree})
3417     if test -f ${real_x264_tree}/x264.h
3418     then
3419       AC_MSG_RESULT(yes)
3420       VLC_ADD_CPPFLAGS([x264],[-I${real_x264_tree}])
3421       VLC_ADD_LIBS([x264],[-L${real_x264_tree}])
3422       PKG_CHECK_MODULES(X264,x264, [
3423         VLC_ADD_PLUGIN([x264])
3424         VLC_ADD_LDFLAGS([x264],[${X264_LIBS}])
3425         VLC_ADD_CFLAGS([x264],[${X264_CFLAGS}])
3426         if echo ${X264_LIBS} |grep -q 'pthreadGC2'; then
3427           VLC_ADD_CFLAGS([x264], [-DPTW32_STATIC_LIB])
3428         fi
3429       ],[
3430         AC_MSG_ERROR([the specified tree hasn't been compiled])
3431       ])
3432       LDFLAGS="${LDFLAGS_save}"
3433     else
3434       AC_MSG_RESULT(no)
3435       AC_MSG_ERROR([the specified tree doesn't have x264.h])
3436     fi
3437   else
3438       PKG_CHECK_MODULES(X264,x264 >= 0.76, [
3439         VLC_ADD_PLUGIN([x264])
3440         VLC_ADD_LDFLAGS([x264],[${X264_LIBS}])
3441
3442         AC_CACHE_CHECK([if linker supports -Bsymbolic],
3443           [ac_cv_ld_bsymbolic],
3444           [LDFLAGS="${LDFLAGS_vlc} -Wl,-Bsymbolic"
3445             AC_TRY_LINK([],,ac_cv_ld_bsymbolic=yes,ac_cv_ld_bsymbolic=no)
3446             LDFLAGS="${LDFLAGS_save}"
3447           ])
3448         AS_IF([test "${ac_cv_ld_bsymbolic}" != "no"], [
3449           VLC_ADD_LDFLAGS([x264],[-Wl,-Bsymbolic])
3450         ])
3451
3452         VLC_ADD_CFLAGS([x264],[${X264_CFLAGS}])
3453         if echo ${X264_LIBS} |grep -q 'pthreadGC2'; then
3454           VLC_ADD_CFLAGS([x264], [-DPTW32_STATIC_LIB])
3455         fi
3456       ],[
3457         if test "${enable_x264}" = "yes"; then
3458             AC_MSG_ERROR([Could not find libx264 >= 0.76 on your system: you may get it from http://www.videolan.org/x264.html])
3459           fi
3460       ])
3461     LDFLAGS="${LDFLAGS_save}"
3462   fi
3463 fi
3464
3465 dnl
3466 dnl libfluidsynth (MIDI synthetizer) plugin
3467 dnl
3468 PKG_ENABLE_MODULES_VLC([FLUIDSYNTH], [], [fluidsynth], [MIDI synthetiser with libfluidsynth], [auto])
3469
3470 dnl
3471 dnl Teletext Modules
3472 dnl vbi decoder plugin (using libzbvi)
3473 dnl telx module
3474 dnl uncompatible
3475 dnl
3476 AC_ARG_ENABLE(zvbi,
3477   AS_HELP_STRING([--enable-zvbi],[VBI (inc. Teletext) decoding support with
3478                   libzvbi (default enabled)]))
3479 AC_ARG_ENABLE(telx,
3480   AS_HELP_STRING([--enable-telx],[Teletext decoding module (conflicting with
3481                   zvbi) (default enabled if zvbi is absent)]))
3482
3483 AS_IF( [test "${enable_zvbi}" != "no"],[
3484     PKG_CHECK_MODULES(ZVBI,
3485         zvbi-0.2 >= 0.2.25,
3486         [
3487           VLC_ADD_LIBS([zvbi],[$ZVBI_LIBS])
3488           if test "${SYS}" = "mingw32"; then
3489               VLC_ADD_LIBS([zvbi],[ -lpthreadGC2])
3490           fi
3491           VLC_ADD_CFLAGS([zvbi],[$ZVBI_CFLAGS])
3492           VLC_ADD_PLUGIN([zvbi])
3493           AC_DEFINE(ZVBI_COMPILED, 1, [Define if the zvbi module is built])
3494           AS_IF( [test "${enable_telx}" = "yes"],[
3495                   AC_MSG_WARN([The zvbi and telx modules are uncompatibles.
3496                                Using zvbi.])
3497                   ])
3498         ],[
3499           AC_MSG_WARN(ZVBI library not found. Enabling the telx module instead)
3500         ])
3501     ])
3502 AS_IF( [test "${enable_telx}" != "no" ],[
3503   VLC_ADD_PLUGIN([telx])
3504   ])
3505
3506 dnl
3507 dnl libass subtitle rendering module
3508 dnl
3509 AC_ARG_ENABLE(libass,
3510   [  --enable-libass         Subtitle support using libass (default enabled)])
3511 AS_IF( [test "${enable_libass}" != "no"], [
3512   PKG_CHECK_MODULES(LIBASS, libass >= 0.9.6,
3513       [
3514         VLC_ADD_LIBS([libass],[$LIBASS_LIBS])
3515         VLC_ADD_CFLAGS([libass],[$LIBASS_CFLAGS])
3516         VLC_ADD_PLUGIN([libass])
3517
3518         AC_CHECK_HEADERS(fontconfig/fontconfig.h,
3519           [VLC_ADD_CPPFLAGS([libass],[-DHAVE_FONTCONFIG])
3520            VLC_ADD_LIBS([libass],[-lfontconfig])
3521        ])
3522       ],[
3523         AC_MSG_WARN([LIBASS library not found])
3524       ])
3525   ])
3526
3527 dnl
3528 dnl asa demuxer
3529 dnl
3530 AC_ARG_ENABLE(asademux,
3531   [  --enable-asademux       asa subtitle demuxing (default disabled)])
3532 AS_IF( [test "${enable_asademux}" = "yes"], [
3533   PKG_CHECK_MODULES(PCRE,
3534       libpcre >= 6.5,
3535       [
3536         VLC_ADD_LDFLAGS([asademux],[$PCRE_LIBS])
3537         VLC_ADD_CFLAGS([asademux],[$PCRE_CFLAGS])
3538         if test "${SYS}" = "mingw32"; then
3539             VLC_ADD_CPPFLAGS([asademux],[-DPCRE_STATIC])
3540         fi
3541         VLC_ADD_PLUGIN([asademux])
3542       ],[
3543         AC_MSG_WARN([PCRE library not found (required for asademux)])
3544       ])
3545   ])
3546
3547 dnl
3548 dnl  CMML plugin
3549 dnl
3550 AC_ARG_ENABLE(cmml,
3551   [  --enable-cmml           CMML support (default enabled)])
3552 if test "${enable_cmml}" != "no"
3553 then
3554   VLC_ADD_PLUGIN([cmml])
3555 fi
3556
3557 dnl
3558 dnl  kate decoder plugin
3559 dnl
3560 AC_ARG_ENABLE(kate,
3561 [  --enable-kate           kate codec (default enabled)])
3562 AS_IF([test "${enable_kate}" != "no"], [
3563   PKG_CHECK_MODULES(KATE,[kate >= 0.1.5], [
3564       VLC_ADD_PLUGIN([kate])
3565       VLC_ADD_CFLAGS([kate],[$KATE_CFLAGS])
3566       VLC_ADD_LIBS([kate],[$KATE_LIBS]) ],[
3567         AC_CHECK_HEADERS(kate/kate.h, [
3568           AC_CHECK_LIB(kate, kate_decode_init, [
3569             VLC_ADD_PLUGIN([kate])
3570             kate_libs="-lkate -logg"
3571             VLC_ADD_LDFLAGS([kate],[${kate_libs}]) ],[
3572             AS_IF([test "x${enable_kate}" != "x"], [
3573               AC_MSG_ERROR([libkate doesn't appear to be installed on your system.
3574               You also need to check that you have a libogg posterior to the 1.0 release.])
3575             ])
3576           ], [-lkate -logg])
3577         ],[
3578           AS_IF([test "x${enable_kate}" != "x"], [
3579             AC_MSG_ERROR([libkate headers do not appear to be installed on your system.
3580             You also need to check that you have a libogg posterior to the 1.0 release.])
3581           ])
3582         ])
3583   ])
3584 ])
3585
3586
3587 dnl
3588 dnl  tiger rendering for kate decoder plugin
3589 dnl
3590 AC_ARG_ENABLE(tiger,
3591 [  --enable-tiger          Tiger rendering library for Kate streams (default enabled)])
3592 AS_IF([test "${enable_tiger}" != "no"], [
3593   PKG_CHECK_MODULES(TIGER,[tiger >= 0.3.1], [
3594       AC_DEFINE(HAVE_TIGER, 1, [Define if libtiger is available.])
3595       VLC_ADD_CFLAGS([kate],[$TIGER_CFLAGS])
3596       VLC_ADD_LIBS([kate],[$TIGER_LIBS]) ],[
3597         AS_IF([test "x${enable_tiger}" != "x"], [
3598           AC_MSG_ERROR([libtiger does not appear to be installed on your system.])
3599         ])
3600   ])
3601 ])
3602
3603
3604
3605 dnl
3606 dnl  Video plugins
3607 dnl
3608
3609 AC_ARG_WITH(,[Video plugins:])
3610
3611 dnl
3612 dnl  Xlib
3613 dnl
3614
3615 AC_PATH_XTRA()
3616 AC_ARG_ENABLE(x11,
3617   [  --enable-x11            X11 support with Xlib (default enabled)],, [
3618   AS_IF([test "${SYS}" != "mingw32" -a "${SYS}" != "mingwce"], [
3619     enable_x11="yes"
3620   ], [
3621     enable_x11="no"
3622   ])
3623 ])
3624
3625 CPPFLAGS="${CPPFLAGS_save} ${X_CFLAGS}"
3626
3627 AS_IF([test "${enable_x11}" != "no"], [
3628   AC_CHECK_HEADERS(X11/Xlib.h)
3629
3630 dnl Check for DPMS
3631   AC_CHECK_HEADERS(X11/extensions/dpms.h, [
3632     AC_MSG_CHECKING(for DPMSInfo in X11/extensions/dpms.h)
3633     AC_EGREP_HEADER(DPMSInfo,X11/extensions/dpms.h,[
3634       AC_MSG_RESULT(yes)
3635       AC_DEFINE(DPMSINFO_IN_DPMS_H, 1,
3636                 Define if <X11/extensions/dpms.h> defines DPMSInfo.)
3637     ],[
3638       AC_MSG_RESULT(no)
3639     ])
3640   ],,[
3641     #include <X11/Xlib.h>
3642   ])
3643 ])
3644
3645 dnl
3646 dnl  GLX module
3647 dnl  (enabled by default except on win32)
3648 dnl
3649 AC_ARG_ENABLE(glx,
3650   [  --enable-glx            X11 OpenGL (GLX) support (default enabled)],, [
3651   enable_glx="$enable_x11"
3652 ])
3653 AS_IF([test "${enable_glx}" != "no"], [
3654   AC_CHECK_HEADERS(X11/Xlib.h GL/glu.h GL/glx.h)
3655   AC_COMPILE_IFELSE(AC_LANG_PROGRAM(
3656     [[#if !defined(HAVE_X11_XLIB_H) || !defined(HAVE_GL_GLU_H) || !defined(HAVE_GL_GLX_H)
3657     choke me
3658     #endif]]),
3659     [
3660       VLC_ADD_PLUGIN([glx])
3661       VLC_ADD_LIBS([glx],[${X_LIBS} ${X_PRE_LIBS} -lX11 -lXext -lGL -lGLU])
3662       VLC_ADD_CPPFLAGS([glx],[${X_CFLAGS}])
3663     ],[AC_MSG_ERROR([Please install GL development package. Alternatively you can also configure with --disable-glx.])])
3664 ])
3665
3666 dnl End of Xlib tests
3667 CPPFLAGS="${CPPFLAGS_save}"
3668
3669
3670 dnl
3671 dnl  X C Bindings modules
3672 dnl
3673 AC_ARG_ENABLE(xcb,
3674   [  --enable-xcb            X11 support with XCB (default enabled)],, [
3675   AS_IF([test "${SYS}" != "mingw32" -a "${SYS}" != "mingwce"], [
3676     enable_xcb="yes"
3677   ], [
3678     enable_xcb="no"
3679   ])
3680 ])
3681 AC_ARG_ENABLE(xvideo,
3682   [  --enable-xvideo         XVideo support (default enabled)],, [
3683     enable_xvideo="$enable_xcb"
3684 ])
3685
3686 need_xid_provider="no"
3687 AS_IF([test "${enable_xcb}" != "no"], [
3688   dnl libxcb
3689   PKG_CHECK_MODULES(XCB, [xcb])
3690   PKG_CHECK_MODULES(XCB_SHM, [xcb-shm])
3691   VLC_ADD_PLUGIN([xcb_x11])
3692   VLC_ADD_PLUGIN([xcb_screen])
3693   VLC_ADD_PLUGIN([xcb_apps])
3694   VLC_SET_CFLAGS_WERROR([xcb_screen], [-Wno-error=uninitialized]) # some gcc report a warning which doesn't reveal an error
3695
3696   AS_IF([test "${enable_xvideo}" != "no"], [
3697     PKG_CHECK_MODULES(XCB_XV, [xcb-xv >= 1.1.90.1], [
3698       VLC_ADD_PLUGIN([xcb_xv])
3699     ], [
3700       PKG_CHECK_MODULES(XCB_XV, [xcb-xv], [
3701         VLC_ADD_PLUGIN([xcb_xv])
3702         VLC_ADD_CFLAGS([xcb_xv], [-DXCB_XV_OLD])
3703       ])
3704     ])
3705   ])
3706
3707   PKG_CHECK_MODULES(XCB_RANDR, [xcb-randr >= 1.3], [
3708     VLC_ADD_PLUGIN([panoramix])
3709     VLC_ADD_LIBS([panoramix],[${XCB_RANDR_LIBS} ${XCB_LIBS}])
3710     VLC_ADD_CFLAGS([panoramix],[${XCB_RANDR_CFLAGS} ${XCB_CFLAGS}])
3711   ], [true])
3712
3713   dnl xcb-utils
3714   PKG_CHECK_MODULES(XCB_KEYSYMS, [xcb-keysyms >= 0.3.4], [
3715     have_xcb_keysyms="yes"
3716   ], [
3717     PKG_CHECK_MODULES(XCB_KEYSYMS, [xcb-keysyms], [
3718       have_xcb_keysyms="yes"
3719       VLC_ADD_CFLAGS([globalhotkeys], [-DXCB_KEYSYM_OLD_API])
3720     ], [
3721       have_xcb_keysyms="no"
3722       need_xid_provider="yes"
3723     ])
3724   ])
3725
3726   AS_IF([test "${have_xcb_keysyms}" = "yes"], [
3727     PKG_CHECK_MODULES(XPROTO, [xproto])
3728     VLC_ADD_PLUGIN([xcb_window])
3729     VLC_ADD_PLUGIN([globalhotkeys])
3730     VLC_ADD_CFLAGS([globalhotkeys], [${XCB_KEYSYMS_CFLAGS} ${XCB_CFLAGS}])
3731     VLC_ADD_LIBS([globalhotkeys], [${XCB_KEYSYMS_LIBS} ${XCB_LIBS}])
3732   ])
3733   VLC_ADD_PLUGIN([xdg_screensaver])
3734 ])
3735
3736
3737 dnl
3738 dnl  OpenGL module
3739 dnl  (enabled by default except on beos)
3740 dnl
3741 AC_ARG_ENABLE(opengl,
3742   [  --enable-opengl         OpenGL support (default enabled)])
3743 if test "${enable_opengl}" != "no" &&
3744    test "${SYS}" != "beos" -a "${SYS}" != "mingwce"; then
3745   if test "${SYS}" != "darwin"; then
3746     AC_CHECK_HEADERS(GL/gl.h GL/glu.h, [
3747       VLC_ADD_PLUGIN([opengl])
3748       if test "${SYS}" != "mingw32"; then
3749         VLC_ADD_LIBS([opengl],[${X_LIBS} -lGL -lGLU])
3750       else
3751         VLC_ADD_LIBS([opengl],[-lopengl32 -lglu32])
3752       fi
3753     ])
3754   else
3755     dnl OS X special case (no GL/gl.h but OpenGL/gl.h)
3756     VLC_ADD_PLUGIN([opengl])
3757     VLC_ADD_LIBS([opengl],[-Wl,-framework,OpenGL])
3758   fi
3759 fi
3760
3761 dnl
3762 dnl  SDL module
3763 dnl
3764 AC_ARG_ENABLE(sdl,
3765   [  --enable-sdl            SDL support (default enabled)])
3766 AC_ARG_ENABLE(sdl-image,
3767   [  --enable-sdl-image      SDL image support (default enabled)])
3768 if test "${enable_sdl}" != "no"
3769 then
3770   SDL_PATH="${PATH}"