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