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