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