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