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