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