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