]> git.sesse.net Git - vlc/blob - configure.ac
file: use the same open() path for directories as for regular files
[vlc] / configure.ac
1 dnl Autoconf settings for vlc
2
3 AC_COPYRIGHT([Copyright 2002-2010 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="The Luggage"
15 COPYRIGHT_YEARS="1996-2010"
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/hosts/${host}
129       if ! test -d "$CONTRIB_DIR"
130       then
131         gccmachine=`$CC -dumpmachine`
132         CONTRIB_DIR=${topdir}/extras/contrib/hosts/${gccmachine}
133       fi
134     fi
135     AC_MSG_CHECKING([for libs in ${CONTRIB_DIR}])
136   AS_IF([test -d ${CONTRIB_DIR}/lib],[
137     AC_MSG_RESULT([yes])
138     AC_SUBST(CONTRIB_DIR)
139     export PATH=${CONTRIB_DIR}/bin:$PATH
140     CPPFLAGS="${CPPFLAGS} -I${CONTRIB_DIR}/include"
141     CPPFLAGS_save="${CPPFLAGS_save} -I${CONTRIB_DIR}/include"
142     CFLAGS="${CFLAGS} -I${CONTRIB_DIR}/include"
143     CFLAGS_save="${CFLAGS_save} -I${CONTRIB_DIR}/include"
144     CXXFLAGS="${CXXFLAGS} -I${CONTRIB_DIR}/include"
145     CXXFLAGS_save="${CXXFLAGS_save} -I${CONTRIB_DIR}/include"
146     OBJCFLAGS="${OBJCFLAGS} -I${CONTRIB_DIR}/include"
147     OBJCFLAGS_save="${OBJCFLAGS_save} -I${CONTRIB_DIR}/include"
148     if test $build = $host -o "$PKG_CONFIG_LIBDIR"; then
149         export PKG_CONFIG_PATH=${CONTRIB_DIR}/lib/pkgconfig:$PKG_CONFIG_PATH
150     else
151         export PKG_CONFIG_LIBDIR=${CONTRIB_DIR}/lib/pkgconfig
152     fi
153     LDFLAGS="${LDFLAGS} -L${CONTRIB_DIR}/lib"
154     LDFLAGS_save="${LDFLAGS_save} -L${CONTRIB_DIR}/lib"
155
156     if test -z $with_mozilla_sdk_path; then
157        with_mozilla_sdk_path=${CONTRIB_DIR}/gecko-sdk
158     fi
159     if test -z $with_cyberlink_tree; then
160        with_cyberlink_tree=${CONTRIB_DIR}/src/clinkcc
161     fi
162
163     if test ".`uname -s`" = ".Darwin"; then
164       export LD_LIBRARY_PATH=${CONTRIB_DIR}/lib:$LD_LIBRARY_PATH
165       export DYLD_LIBRARY_PATH=${CONTRIB_DIR}/lib:$DYLD_LIBRARY_PATH
166     elif test ".`uname -s`" = ".BeOS"; then
167       export LIBRARY_PATH=${CONTRIB_DIR}/lib:$LIBRARY_PATH
168       export BELIBRARIES=${CONTRIB_DIR}/lib:$BELIBRARIES
169     fi
170     ],[
171        AC_MSG_RESULT([no])
172     ])
173 ])
174 dnl
175 dnl  Set default values
176 dnl
177 LDFLAGS_vlc="${LDFLAGS}"
178
179 dnl
180 dnl  Check the operating system
181 dnl
182 case "${host_os}" in
183   "")
184     SYS=unknown
185     ;;
186   linux*)
187     SYS=linux
188     ;;
189   bsdi*)
190     SYS=bsdi
191     CFLAGS_save="${CFLAGS_save} -pthread"; CFLAGS="${CFLAGS_save}"
192     VLC_ADD_LIBS([dvd dvdcss vcd cdda vcdx],[-ldvd])
193     ;;
194   *bsd*)
195     SYS="${host_os}"
196     CFLAGS_save="${CFLAGS_save} -pthread"; CFLAGS="${CFLAGS_save}"
197     case "${host_os}" in
198       freebsd*)
199         CPPFLAGS_save="${CPPFLAGS_save} -I/usr/local/include"
200         CPPFLAGS="${CPPFLAGS_save}"
201         LDFLAGS_save="${LDFLAGS_save} -L/usr/local/lib"
202         LDFLAGS="${LDFLAGS_save}"
203         ;;
204       openbsd*)
205         CPPFLAGS_save="${CPPFLAGS_save} -I/usr/local/include -I/usr/X11R6/include"
206         CPPFLAGS="${CPPFLAGS_save}"
207         LDFLAGS_save="${LDFLAGS_save} -L/usr/local/lib -L/usr/X11R6/lib/"
208         LDFLAGS="${LDFLAGS_save}"
209         ;;
210     esac
211     ;;
212   darwin*)
213     SYS=darwin
214     CFLAGS_save="${CFLAGS_save} -D_INTL_REDIRECT_MACROS"; CFLAGS="${CFLAGS_save}"
215     CXXFLAGS_save="${CXXFLAGS_save} -D_INTL_REDIRECT_MACROS"; CXXFLAGS="${CXXFLAGS_save}"
216     OBJCFLAGS_save="${OBJCFLAGS_save} -D_INTL_REDIRECT_MACROS -std=gnu99"; OBJCFLAGS="${OBJCFLAGS_save}"
217     LDFLAGS_save="${LDFLAGS_save} -Wl,-headerpad_max_install_names"; LDFLAGS="${LDFLAGS_save}"
218     VLC_ADD_LDFLAGS([mp4], [-Wl,-framework,IOKit,-framework,CoreFoundation])
219     VLC_ADD_LDFLAGS([mkv mp4], [-Wl,-framework,IOKit,-framework,CoreFoundation])
220     VLC_ADD_LDFLAGS([vlc],[-Wl,-undefined,dynamic_lookup])
221     VLC_ADD_LDFLAGS([libvlc],[-Wl,-undefined,dynamic_lookup])
222     VLC_ADD_LDFLAGS([avcodec avformat access_avio swscale postproc i420_rgb_mmx x264],[-Wl,-read_only_relocs,suppress])
223     VLC_ADD_CFLAGS([motion],[-fconstant-cfstrings])
224     VLC_ADD_LDFLAGS([libvlccore],[-Wl,-framework,CoreFoundation])
225     VLC_ADD_LDFLAGS([motion],[-Wl,-framework,IOKit,-framework,CoreFoundation])
226     AC_ARG_ENABLE(macosx-defaults,
227       AS_HELP_STRING([--enable-macosx-defaults],[Build the default configuration on Mac OS X (default enabled)]))
228     if test "x${enable_macosx_defaults}" != "xno"
229     then
230         echo ""
231         echo "Building with Mac OS X defaults:"
232         with_macosx_version_min="10.5"
233         echo "  Assuming --with-macosx-version-min=10.5"
234         with_macosx_sdk="/Developer/SDKs/MacOSX${with_macosx_version_min}.sdk"
235         echo "  Assuming --with-macosx-sdk=/Developer/SDKs/MacOSX${with_macosx_version_min}.sdk"
236         build_dir=`pwd`
237         echo "  Assuming --prefix=${build_dir}/vlc_install_dir"
238         ac_default_prefix="${build_dir}/vlc_install_dir"
239         enable_macosx="yes"
240         echo "  Assuming --enable-macosx"
241         enable_faad="yes"
242         echo "  Assuming --enable-faad"
243         enable_flac="yes"
244         echo "  Assuming --enable-flac"
245         enable_theora="yes"
246         echo "  Assuming --enable-theora"
247         enable_shout="yes"
248         echo "  Assuming --enable-shout"
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_xcb="no"
267         echo "  Assuming --disable-xcb"
268     fi
269     dnl
270     dnl  Check for Mac OS X SDK settings
271     dnl
272     AC_ARG_WITH(macosx-sdk,
273        [  --with-macosx-sdk=DIR   compile using the SDK in DIR])
274     if test "${with_macosx_sdk}" != "" ; then
275         CPP="${CPP} -isysroot ${with_macosx_sdk}"
276         CC="${CC} -isysroot ${with_macosx_sdk}"
277         CXX="${CXX} -isysroot ${with_macosx_sdk}"
278         OBJC="${OBJC} -isysroot ${with_macosx_sdk}"
279         LD="${LD} -syslibroot ${with_macosx_sdk}"
280     fi
281     AC_ARG_WITH(macosx-version-min,
282        [  --with-macosx-version-min=VERSION compile for MacOSX VERSION and above])
283     if test "${with_macosx_version_min}" != "" ; then
284         CPP="${CPP} -mmacosx-version-min=${with_macosx_version_min}"
285         CC="${CC} -mmacosx-version-min=${with_macosx_version_min}"
286         CXX="${CXX} -mmacosx-version-min=${with_macosx_version_min}"
287         OBJC="${OBJC} -mmacosx-version-min=${with_macosx_version_min}"
288         LD="${LD} -macosx_version_min=${with_macosx_version_min}"
289         CFLAGS_save="${CFLAGS_save} -DMACOSX_DEPLOYMENT_TARGET=${with_macosx_version_min}"; CFLAGS="${CFLAGS_save}"
290         CXXFLAGS_save="${CXXFLAGS_save} -DMACOSX_DEPLOYMENT_TARGET=${with_macosx_version_min}"; CXXFLAGS="${CXXFLAGS_save}"
291         OBJCFLAGS_save="${OBJCFLAGS_save} -DMACOSX_DEPLOYMENT_TARGET=${with_macosx_version_min}"; OBJCFLAGS="${OBJCFLAGS_save}"
292         MACOSX_DEPLOYMENT_TARGET=${with_macosx_version_min}
293         export MACOSX_DEPLOYMENT_TARGET
294     fi
295     ;;
296   darwin9*)
297     if (test ".`uname -p`" = ".i386"); then
298         dnl Due to a ld(64) bug in 10.5 we cannot use our mmx code
299         dnl without hacking it a lot, we disable mmx and sse.
300         dnl (that bug is about ld being unable to handle
301         dnl text relocation)
302         save_cflags="$CFLAGS"
303         CFLAGS="$CFLAGS -dynamiclib -single_module -read_only_relocs suppress"
304         AC_TRY_LINK(
305             [int a;], [asm("movq _a,%mm0\n");],
306             ac_ld_does_not_support_text_reloc=no,
307             ac_ld_does_not_support_text_reloc=yes)
308         CFLAGS="$save_cflags"
309
310         if test "x$ac_ld_does_not_support_text_reloc" = "xyes"; then
311             enable_mmx="no"
312             echo "  Assuming --disable-mmx (due to a bug in ld)"
313             enable_sse="no"
314             echo "  Assuming --disable-sse (due to a bug in ld)"
315         fi
316     fi
317     ;;
318   *mingw32* | *cygwin* | *wince* | *mingwce*)
319     AC_CHECK_TOOL(WINDRES, windres, :)
320     AC_CHECK_TOOL(OBJCOPY, objcopy, :)
321
322     case "${host_os}" in
323       *wince* | *mingwce* | *mingw32ce*)
324         SYS=mingwce
325         dnl Sadly CeGCC still needs non-wince macros
326         AC_DEFINE([_WIN32_WINNT], 0x0501, [Define to '0x0500' for Windows 2000 APIs.])
327         ;;
328       *mingw32*)
329         SYS=mingw32
330         AC_DEFINE([_WIN32_WINNT], 0x0500, [Define to '0x0500' for Windows 2000 APIs.])
331         ;;
332       *cygwin*)
333         dnl Check if we are using the mno-cygwin mode in which case we are
334         dnl actually dealing with a mingw32 compiler.
335         AC_DEFINE([_WIN32_WINNT], 0x0500, [Define to '0x0500' for Windows 2000 APIs.])
336         AC_EGREP_CPP(yes,
337             [#ifdef WIN32
338              yes
339              #endif],
340             SYS=mingw32, AC_MSG_ERROR([VLC requires -mno-cygwin]))
341         ;;
342     esac
343
344     if test "${SYS}" = "mingw32"; then
345         # add ws2_32 for closesocket, select, recv
346         VLC_ADD_LIBS([libvlccore],[-lws2_32 -lnetapi32 -lwinmm])
347         VLC_ADD_LDFLAGS([vlc],[-mwindows])
348         VLC_ADD_LIBS([activex mozilla],[-lgdi32])
349         VLC_ADD_LIBS([cdda vcdx sdl_image aout_sdl vout_sdl],[-lwinmm])
350         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 oldhttp stream_out_standard stream_out_rtp stream_out_raop vod_rtsp access_realrtsp rtp oldtelnet oldrc netsync gnutls growl_udp flac ts audioscrobbler lua remoteosd zvbi audiobargraph_a],[-lws2_32])
351         VLC_ADD_LIBS([access_file], [-lshlwapi])
352         dnl
353         dnl DEP and ASLR options
354         dnl
355         AC_ARG_ENABLE(peflags,
356           [  --enable-peflags        peflags use (default enabled on Windows)])
357         if test "${enable_peflags}" != "no"
358         then
359           AC_CHECK_TOOL(PEFLAGS, peflags, :)
360         fi
361     fi
362     if test "${SYS}" = "mingwce"; then
363         # add ws2 for closesocket, select, recv
364         VLC_ADD_LIBS([libvlccore access_http access_mms access_udp access_tcp access_ftp access_rtmp access_output_udp access_output_rtmp sap oldhttp netsync audioscrobbler growl rtp stream_out_rtp remoteosd ts oldtelnet audiobargraph_a],[-lws2])
365         VLC_ADD_LIBS([libvlccore],[-lmmtimer])
366    fi
367     ;;
368   *nto*)
369     SYS=nto
370     ;;
371   solaris*)
372     SYS=solaris
373     ;;
374   hpux*)
375     SYS=hpux
376     ;;
377   beos)
378     SYS=beos
379     CFLAGS_save="${CFLAGS_save} -Wno-multichar"; CFLAGS="${CFLAGS_save}"
380     CXXFLAGS_save="${CXXFLAGS_save} -Wno-multichar"; CXXFLAGS="${CXXFLAGS_save}"
381     VLC_ADD_CXXFLAGS([beos],[])
382     VLC_ADD_LIBS([vlc libvlccore logger],[-lbe])
383     VLC_ADD_LIBS([beos],[-lbe -lmedia -ltranslation -ltracker -lgame])
384     VLC_ADD_LIBS([dvdnav dvdread],[-ldl])
385     VLC_ADD_LIBS([access_file],[-lpoll])
386     LDFLAGS_save="${LDFLAGS_save} -lintl"; LDFLAGS="${LDFLAGS_save}"
387     dnl Check for BONE
388     if test -f /boot/beos/system/lib/libbind.so; then
389         VLC_ADD_LIBS([access_file access_ftp access_mms access_output_udp oldtelnet netsync sap libvlccore growl_udp],[-lbind -lsocket])
390     else
391         VLC_ADD_LIBS([access_file access_ftp access_mms access_output_udp oldtelnet netsync sap libvlccore growl_udp],[-lnet])
392     fi
393
394     dnl Ugly check for Zeta
395     if test -f /boot/beos/system/lib/libzeta.so; then
396         VLC_ADD_LIBS([beos],[-lzeta])
397     fi
398     ;;
399   *)
400     SYS="${host_os}"
401     ;;
402 esac
403 AM_CONDITIONAL(HAVE_BEOS, test "${SYS}" = "beos")
404 AM_CONDITIONAL(HAVE_DARWIN, test "${SYS}" = "darwin")
405 AM_CONDITIONAL(HAVE_LINUX, [test "${SYS}" = "linux"])
406 AM_CONDITIONAL(HAVE_WIN32, test "${SYS}" = "mingw32")
407 AM_CONDITIONAL(HAVE_WINCE, test "${SYS}" = "mingwce")
408 AM_CONDITIONAL(USE_PEFLAGS, [test "${enable_peflags}" = "yes"])
409
410 dnl
411 dnl Sadly autoconf doesn't think about testing foo.exe when ask to test
412 dnl for program foo on win32
413
414 case "${build_os}" in
415     cygwin|msys)
416         ac_executable_extensions=".exe"
417     ;;
418     *)
419     ;;
420 esac
421
422 dnl
423 dnl  Libtool
424 dnl  It's very bad, but our former custom system was worst
425 dnl  -- Courmisch
426 dnl
427
428 dnl override platform specific check for dependent libraries
429 dnl otherwise libtool linking of shared libraries will
430 dnl fail on anything other than pass_all.
431 AC_CACHE_VAL(lt_cv_deplibs_check_method,
432     [lt_cv_deplibs_check_method=pass_all])
433
434 AC_DISABLE_STATIC
435 dnl AC_DISABLE_FAST_INSTALL
436 AC_LIBTOOL_DLOPEN
437 AC_LIBTOOL_WIN32_DLL
438 m4_undefine([AC_PROG_F77])
439 m4_defun([AC_PROG_F77],[])
440 AC_PROG_LIBTOOL
441
442 m4_undefine([AC_DEPLIBS_CHECK_METHOD])
443 m4_defun([AC_DEPLIBS_CHECK_METHOD],[])
444
445 lt_cv_deplibs_check_method=pass_all
446
447 AS_IF([test "${enable_shared}" = "no"], [
448   AC_MSG_ERROR([VLC is based on plugins. Shared libraries cannot be disabled.])
449 ])
450
451 dnl
452 dnl Gettext stuff
453 dnl
454 AM_GNU_GETTEXT_VERSION([0.17])
455 AM_GNU_GETTEXT([external])
456 VLC_ADD_LIBS([libvlccore vlc], [${LTLIBINTL}])
457
458 dnl
459 dnl Iconv stuff
460 dnl
461 AM_ICONV
462 VLC_ADD_CFLAGS([libvlccore],[${INCICONV}])
463 VLC_ADD_LIBS([libvlccore],[${LTLIBICONV}])
464
465 dnl Check for broken versions of mingw-runtime compatability library
466 AS_IF([test "${SYS}" = "mingw32" -o "${SYS}" = "mingwce"], [
467     AC_MSG_CHECKING(for broken mingw-runtime)
468     AC_PREPROC_IFELSE([
469 #include <_mingw.h>
470 #if (__MINGW32_MAJOR_VERSION == 3) && (__MINGW32_MINOR_VERSION < 15)
471 # error Attempting to use mingw-runtime with broken vsnprintf support
472 #endif
473 ], [
474         AC_MSG_RESULT([ok])
475 ], [
476         AC_MSG_RESULT([present])
477         AC_MSG_ERROR([LibVLC requires mingw-runtime version 3.15 or higher!])
478 ])
479     dnl force use of mingw provided c99 *printf over msvcrt
480     CPPFLAGS="${CPPFLAGS} -D__USE_MINGW_ANSI_STDIO=1"
481     CPPFLAGS_save="${CPPFLAGS_save} -D__USE_MINGW_ANSI_STDIO=1"
482 ])
483
484 dnl Check for the need to include the mingwex lib for mingw32
485 if test "${SYS}" = "mingw32"
486 then
487     AC_CHECK_LIB(mingwex,opendir,
488         AC_CHECK_LIB(mingw32,opendir,,
489             [VLC_ADD_LIBS([libvlccore],[-lmingwex])])
490     )
491 fi
492
493 dnl Check for fnative-struct or mms-bitfields support for mingw32
494 if test "${SYS}" = "mingw32"
495 then
496     AC_CACHE_CHECK([if \$CC accepts -mms-bitfields],
497         [ac_cv_c_mms_bitfields],
498         [CFLAGS="${CFLAGS_save} -mms-bitfields"
499          AC_TRY_COMPILE([],,ac_cv_c_mms_bitfields=yes, ac_cv_c_mms_bitfields=no)])
500     if test "${ac_cv_c_mms_bitfields}" != "no"; then
501         CFLAGS_save="${CFLAGS_save} -mms-bitfields";
502         CXXFLAGS_save="${CXXFLAGS_save} -mms-bitfields";
503     else
504         AC_CACHE_CHECK([if \$CC accepts -fnative-struct],
505             [ac_cv_c_fnative_struct],
506             [CFLAGS="${CFLAGS_save} -fnative-struct"
507              AC_TRY_COMPILE([],,ac_cv_c_fnative_struct=yes, ac_cv_c_fnative_struct=no)])
508         if test "${ac_cv_c_fnative_struct}" != "no"; then
509             CFLAGS_save="${CFLAGS_save} -fnative-struct";
510             CXXFLAGS_save="${CXXFLAGS_save} -fnative-struct";
511         fi
512     fi
513
514     CFLAGS="${CFLAGS_save}"; CXXFLAGS="${CXXFLAGS_save}"
515 fi
516
517 dnl Check for fvtable-thunks support for mingw32
518 if test "${SYS}" = "mingw32" -a "${CXX}" != ""
519 then
520 AC_LANG_PUSH(C++)
521     AC_CACHE_CHECK([if \$CXX accepts -fvtable-thunks],
522         [ac_cv_cxx_fvtable_thunks],
523         [CXXFLAGS="${CXXFLAGS_save} -Wall -Werror -fvtable-thunks"
524          AC_TRY_COMPILE([],,ac_cv_cxx_fvtable_thunks=yes,
525                         ac_cv_cxx_fvtable_thunks=no)])
526     if test "${ac_cv_cxx_fvtable_thunks}" = "yes"; then
527         CXXFLAGS_mingw32_special="-fvtable-thunks"
528     fi
529
530     CXXFLAGS_save="${CXXFLAGS_save} ${CXXFLAGS_mingw32_special}"; CXXFLAGS="${CXXFLAGS_save}"
531 AC_LANG_POP(C++)
532 fi
533
534 dnl
535 dnl Buggy glibc prevention. Purposedly not cached.
536 dnl See sourceware.org bugs 5058 and 5443.
537 dnl Ubuntu alone has 20 bug numbers for this...
538 dnl
539 AC_MSG_CHECKING(for buggy GNU/libc versions)
540 AC_PREPROC_IFELSE([
541 #include <limits.h>
542 #if defined (__GLIBC__) && (__GLIBC__ == 2) \
543   && (__GLIBC_MINOR__ >= 5) && (__GLIBC_MINOR__ <= 7)
544 # error GNU/libc with dcgettext killer bug!
545 #endif
546 ], [
547   AC_MSG_RESULT([not present])
548 ], [
549   AC_MSG_RESULT([found])
550   AS_IF([test "x${enable_nls}" != "xno" || test "x${enable_mozilla}" != "xno"], [
551     AC_MSG_ERROR([Buggy GNU/libc (version 2.5 - 2.7) present. VLC would crash; there is no viable
552 work-around for this. Check with your distribution vendor on how to update the
553 glibc run-time. Alternatively, build with --disable-nls --disable-mozilla and
554 be sure to not use LibVLC from other applications/wrappers.])
555   ], [
556     AC_DEFINE(DISABLE_BUGGY_GLIBC_CHECK, 1, [Disables runtime check for buggy glibc.])
557   ])
558 ])
559
560 dnl Plugin compilation stuff
561
562 VLC_LIBRARY_SUFFIX
563
564 dnl The -DSYS_FOO flag
565 CPPFLAGS_save="${CPPFLAGS_save} -DSYS_`echo ${SYS} | sed -e 's/-.*//' | tr 'abcdefghijklmnopqrstuvwxyz.' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ_'`"; CPPFLAGS="${CPPFLAGS_save}"
566
567 dnl Check for system libs needed
568 need_libc=false
569
570 dnl Check for usual libc functions
571 AC_CHECK_FUNCS([ctime_r daemon fcntl fdopendir fork getenv getpwuid_r gettimeofday isatty lstat memalign posix_fadvise posix_madvise posix_memalign putenv setenv stricmp strnicmp tdestroy uselocale])
572 AC_REPLACE_FUNCS([asprintf atof atoll getcwd getpid gmtime_r lldiv localtime_r rewind strcasecmp strcasestr strdup strlcpy strncasecmp strndup strnlen strsep strtof strtok_r strtoll swab vasprintf])
573 AC_CHECK_FUNCS(fdatasync,,
574   [AC_DEFINE(fdatasync, fsync, [Alias fdatasync() to fsync() if missing.])
575 ])
576
577 dnl Check for non-standard system calls
578 AC_CHECK_FUNCS([accept4 eventfd fstatfs vmsplice])
579
580 AH_BOTTOM([#include <vlc_fixups.h>])
581
582 AC_CHECK_FUNCS(mmap, [VLC_ADD_PLUGIN([access_mmap])])
583
584 SOCKET_LIBS=""
585 AC_CHECK_FUNCS(connect,,[
586   AC_CHECK_LIB(socket,connect,[
587     VLC_ADD_LIBS([libvlccore cdda],-lsocket)
588     SOCKET_LIBS="-lsocket"
589   ])
590 ])
591 AC_SUBST(SOCKET_LIBS)
592
593 AC_CHECK_FUNCS(send,,[
594   AC_CHECK_LIB(socket,send,[
595     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])
596   ])
597 ])
598
599
600 dnl Check for socklen_t
601 AH_TEMPLATE(socklen_t, [Define to `int' if <sys/socket.h> does not define.])
602 AC_CACHE_CHECK([for socklen_t in sys/socket.h],
603 ac_cv_type_socklen_t,
604 [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([
605 [#include <sys/types.h>
606 #ifdef WIN32
607 # include <winsock2.h>
608 # include <ws2tcpip.h>
609 #else
610 # include <sys/socket.h>
611 #endif]], [[socklen_t len; len = 0;]])],
612 ac_cv_type_socklen_t=yes,
613 ac_cv_type_socklen_t=no)])
614 AS_IF([test "$ac_cv_type_socklen_t" = no],
615  [AC_DEFINE(socklen_t, int)])
616
617 dnl Check for struct sockaddr_storage
618 AH_TEMPLATE(sockaddr_storage, [Define to `sockaddr' if <sys/socket.h> does not define.])
619 AH_TEMPLATE(ss_family, [Define to `sa_family' if <sys/socket.h> does not define.])
620 AC_CACHE_CHECK([for struct sockaddr_storage], ac_cv_struct_sockaddr_storage,
621   [AC_TRY_COMPILE(
622     [#include <sys/types.h>
623      #if defined( UNDER_CE )
624      # include <winsock2.h>
625      #elif defined( WIN32 )
626      # include <winsock2.h>
627      #else
628      # include <sys/socket.h>
629      #endif], [struct sockaddr_storage addr;],
630      ac_cv_struct_sockaddr_storage=yes,
631      ac_cv_struct_sockaddr_storage=no)])
632 AS_IF([test "${ac_cv_struct_sockaddr_storage}" = no], [
633   AC_DEFINE(sockaddr_storage, sockaddr)
634   AC_DEFINE(ss_family, sa_family)
635 ])
636
637 dnl getaddrinfo, getnameinfo and gai_strerror check
638 dnl  -lnsl and -lsocket are needed on Solaris;
639 dnl  we purposedly make the test fail on Windows
640 LIBS_save="${LIBS}"
641 AH_TEMPLATE(HAVE_GETADDRINFO, [Define to 1 if you have the `getaddrinfo' function.])
642 AC_SEARCH_LIBS([getaddrinfo], [nsl], [AC_DEFINE(HAVE_GETADDRINFO)],, [${SOCKET_LIBS}])
643
644 dnl NOTE: we assume getaddrinfo will be present if getnameinfo or gai_strerro
645 dnl are
646 LIBS="${LIBS_gai}"
647 AC_CHECK_FUNCS([getnameinfo gai_strerror])
648 LIBS="${LIBS_save}"
649
650 AH_TEMPLATE(HAVE_ADDRINFO, [Define to 1 if <netdb.h> defines `struct addrinfo'.])
651 AC_CHECK_TYPES([struct addrinfo],[AC_DEFINE(HAVE_ADDRINFO)],,
652 [#include <sys/types.h>
653 #if defined( WIN32 ) || defined( UNDER_CE )
654 # if defined(UNDER_CE) && defined(sockaddr_storage)
655 #  undef sockaddr_storage
656 # endif
657 # include <winsock2.h>
658 # include <ws2tcpip.h>
659 #else
660 # include <netdb.h>
661 #endif])
662
663 dnl Check for va_copy
664 AC_CACHE_CHECK([for va_copy], ac_cv_c_va_copy,
665   AC_TRY_LINK(
666     [#include <stdarg.h>],
667     [va_list ap1, ap2; va_copy(ap1,ap2);],
668     [ac_cv_c_va_copy="yes"],
669     [ac_cv_c_va_copy="no"]))
670 if test "${ac_cv_c_va_copy}" = "yes"; then
671   AC_DEFINE(HAVE_VA_COPY, 1, [Define if <stdarg.h> defines va_copy.])
672 fi
673 AC_CACHE_CHECK([for __va_copy], ac_cv_c___va_copy,
674   AC_TRY_LINK(
675     [#include <stdarg.h>],
676     [va_list ap1, ap2; __va_copy(ap1,ap2);],
677     [ac_cv_c___va_copy="yes"],
678     [ac_cv_c___va_copy="no"]))
679 if test "${ac_cv_c___va_copy}" = "yes"; then
680   AC_DEFINE(HAVE___VA_COPY, 1, [Define if <stdarg.h> defines __va_copy.])
681 fi
682
683 AC_CHECK_FUNCS(inet_aton,,[
684   AC_CHECK_LIB(resolv,inet_aton,[
685     VLC_ADD_LIBS([libvlccore],[-lresolv])
686   ])
687 ])
688
689 dnl Check for getopt (always use builtin one on win32)
690 if test "${SYS}" = "mingw32" -o "${SYS}" = "mingwce"; then
691 need_getopt=:
692 else
693 need_getopt=false
694 AC_CHECK_FUNCS(getopt_long,[AC_DEFINE(HAVE_GETOPT_LONG,1,long getopt support)],
695 [ # FreeBSD has a gnugetopt library for this:
696   AC_CHECK_LIB([gnugetopt],[getopt_long],
697     [AC_DEFINE(HAVE_GETOPT_LONG,1,getopt support)
698      VLC_ADD_LIBS([libvlccore],[-lgnugetopt])],
699     [need_getopt=:])])
700 fi
701 AM_CONDITIONAL(BUILD_GETOPT, ${need_getopt})
702
703 if test "${SYS}" != "mingw32" -a "${SYS}" != "mingwce"; then
704 AC_TYPE_SIGNAL
705 AC_CHECK_LIB(m,cos,[
706   VLC_ADD_LIBS([adjust wave ripple psychedelic gradient a52tofloat32 dtstofloat32 x264 goom visual panoramix rotate noise grain scene kate flac lua chorus_flanger],[-lm])
707 ])
708 AC_CHECK_LIB(m,pow,[
709   VLC_ADD_LIBS([avcodec avformat access_avio swscale postproc ffmpegaltivec i420_rgb faad twolame equalizer spatializer param_eq libvlccore freetype mod mpc dmo quicktime realaudio realvideo opengl],[-lm])
710 ])
711 AC_CHECK_LIB(m,sqrt,[
712   VLC_ADD_LIBS([headphone_channel_mixer normvol audiobargraph_a speex mono colorthres extract ball],[-lm])
713 ])
714 AC_CHECK_LIB(m,ceil,[
715   VLC_ADD_LIBS([access_imem hotkeys mosaic swscale_omap],[-lm])
716 ])
717 AC_CHECK_LIB(m,exp,[
718   VLC_ADD_LIBS([gaussianblur],[-lm])
719 ])
720 AC_CHECK_LIB(m,round,[
721   VLC_ADD_LIBS([dbus],[-lm])
722 ])
723 AC_CHECK_LIB(m,sqrtf,[
724   VLC_ADD_LIBS([x264],[-lm])
725 ])
726 fi # end "${SYS}" != "mingw32" -a "${SYS}" != "mingwce"
727
728 AC_CHECK_LIB(m,lrintf, [
729   AC_DEFINE(HAVE_LRINTF, 1, [Define to 1 if you have the lrintf function])
730   VLC_ADD_LIBS([skins2],[-lm])
731 ])
732
733 dnl Check for dynamic plugins
734 ac_cv_have_plugins=no
735
736 # HP-UX style
737 if test "${ac_cv_have_plugins}" = "no"; then
738   AC_CHECK_HEADERS(dl.h)
739   ac_cv_my_have_shl_load=no
740   AC_CHECK_FUNC(shl_load,
741    [ac_cv_my_have_shl_load=yes,
742     AC_CHECK_LIB(dld, shl_load,
743      [ac_cv_my_have_shl_load=yes
744       VLC_ADD_LIBS([libvlccore],[-ldld])])])
745   if test "${ac_cv_my_have_shl_load}" = "yes"; then
746     AC_DEFINE(HAVE_DL_SHL_LOAD, 1, [Define if you have the shl_load API])
747     ac_cv_have_plugins=yes
748   fi
749 fi
750
751 # Win32 style
752 if test "${ac_cv_have_plugins}" = "no"; then
753   if test "${SYS}" = "mingw32" ; then
754     AC_CHECK_LIB(kernel32, main,
755      [VLC_ADD_LIBS([libvlccore],[-lkernel32])
756       AC_DEFINE(HAVE_DL_WINDOWS, 1, [Define if you have Windows' LoadLibrary])
757       ac_cv_have_plugins=yes])
758   fi
759 fi
760
761 # WinCE style
762 if test "${ac_cv_have_plugins}" = "no"; then
763   if test "${SYS}" = "mingwce"; then
764     AC_DEFINE(HAVE_DL_WINDOWS, 1, [Define if you have Windows' LoadLibrary])
765     ac_cv_have_plugins=yes
766   fi
767 fi
768
769 # BeOS style
770 if test "${ac_cv_have_plugins}" = "no"; then
771   AC_CHECK_HEADERS(image.h)
772   AC_CHECK_FUNCS(load_add_on,
773    [AC_DEFINE(HAVE_DL_BEOS, 1, [Define if you have the BeOS dl])
774     ac_cv_have_plugins=yes])
775 fi
776
777 # Only test for dlopen() if the others didn't work
778 if test "${ac_cv_have_plugins}" = "no" -o "${SYS}" = "darwin"; then
779   AC_CHECK_HEADERS(dlfcn.h sys/dl.h)
780   ac_cv_my_have_dlopen=no
781   AC_CHECK_FUNC(dlopen,
782     ac_cv_my_have_dlopen=yes,
783     AC_CHECK_LIB(dl, dlopen,
784       ac_cv_my_have_dlopen=yes
785       VLC_ADD_LIBS([libvlccore realaudio realvideo lua],[-ldl]),
786       AC_CHECK_LIB(svld, dlopen,
787         ac_cv_my_have_dlopen=yes
788         VLC_ADD_LIBS([libvlccore],[-lsvld]))))
789   if test "${ac_cv_my_have_dlopen}" = "yes"; then
790     AC_DEFINE(HAVE_DL_DLOPEN, 1, [Define if you have the dlopen API])
791     ac_cv_have_plugins=yes
792   fi
793 fi
794
795 if test "${SYS}" != "mingw32" -a "${SYS}" != "mingwce"; then
796 dnl Check for pthreads - borrowed from XMMS
797 THREAD_LIB=error
798 if test "${THREAD_LIB}" = "error"; then
799   AC_CHECK_LIB(pthread,main,THREAD_LIB="-lpthread")
800 fi
801 if test "${THREAD_LIB}" = "error"; then
802   AC_CHECK_LIB(pthreads,main,THREAD_LIB="-lpthreads")
803 fi
804 if test "${THREAD_LIB}" = "error"; then
805   AC_CHECK_LIB(c_r,main,THREAD_LIB="-lc_r")
806 fi
807 if test "${THREAD_LIB}" = "error"; then
808   AC_CHECK_FUNCS(pthread_mutex_lock)
809   THREAD_LIB=""
810 fi
811
812 VLC_ADD_LIBS([libvlccore libvlc plugin],[${THREAD_LIB}])
813
814 AC_CHECK_LIB(rt, clock_nanosleep, [
815   VLC_ADD_LIBS([libvlccore],[-lrt])
816   AC_DEFINE(HAVE_CLOCK_NANOSLEEP, 1, [Define to 1 if you have clock_nanosleep.])
817 ], [
818   dnl HP/UX port
819   AC_CHECK_LIB(rt,sem_init, [VLC_ADD_LIBS([libvlccore],[-lrt])])
820 ])
821
822 have_nanosleep=false
823 AC_CHECK_FUNCS(nanosleep,have_nanosleep=:,[
824   AC_CHECK_LIB(rt,nanosleep,
825     [VLC_ADD_LIBS([libvlccore],[-lrt]) have_nanosleep=:],
826     [AC_CHECK_LIB(posix4,nanosleep,
827         [VLC_ADD_LIBS([libvlccore],[-lposix4]) have_nanosleep=:])]
828   )
829 ])
830 if ${have_nanosleep}; then
831   AC_DEFINE(HAVE_NANOSLEEP, 1, [Define if nanosleep is available.])
832 fi
833 fi # end "${SYS}" != "mingw32" -a "${SYS}" != "mingwce"
834
835 dnl Check for misc headers
836 AC_MSG_CHECKING(for strncasecmp in strings.h)
837 AC_EGREP_HEADER(strncasecmp,strings.h,[
838   AC_MSG_RESULT(yes)
839   AC_DEFINE(STRNCASECMP_IN_STRINGS_H, 1,
840             Define if <strings.h> defines strncasecmp.)],[
841   AC_MSG_RESULT(no)])
842
843 dnl Check for headers
844 AC_CHECK_HEADERS(getopt.h strings.h locale.h xlocale.h)
845 AC_CHECK_HEADERS(fcntl.h sys/types.h sys/time.h sys/ioctl.h sys/stat.h sys/mount.h)
846 AC_CHECK_HEADERS([arpa/inet.h netinet/in.h netinet/udplite.h sys/eventfd.h])
847 AC_CHECK_HEADERS([net/if.h], [], [],
848   [
849     #include <sys/types.h>
850     #include <sys/socket.h>
851   ])
852 if test "${SYS}" != "mingw32" -a "${SYS}" != "mingwce"; then
853 AC_CHECK_HEADERS(machine/param.h sys/shm.h)
854 AC_CHECK_HEADERS([linux/version.h linux/dccp.h scsi/scsi.h linux/magic.h])
855 AC_CHECK_HEADERS(syslog.h)
856 fi # end "${SYS}" != "mingw32" -a "${SYS}" != "mingwce"
857
858 AC_HEADER_TIME
859
860 dnl LP64 adn LLP64 architectures had better define ssize_t by themselves...
861 AH_TEMPLATE(ssize_t, [Define to `int' if <stddef.h> does not define.])
862 AC_CHECK_TYPE(ssize_t,, [
863   AC_DEFINE(ssize_t, int)
864 ])
865
866 dnl Check for poll
867 AC_SEARCH_LIBS(poll, [poll], [AC_DEFINE(HAVE_POLL, 1, [Define to 1 if the OS is usabl... err, has poll().])], [
868 if test ${SYS} != "mingw32" -a ${SYS} != "mingwce"
869 then
870     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])
871 fi
872 ])
873
874 dnl Check for dirent
875 need_dirent=false
876 AC_CHECK_HEADERS(dirent.h,,[need_dirent=:])
877 AM_CONDITIONAL(BUILD_DIRENT, ${need_dirent})
878
879 dnl Mac OS X and other OSes don't have declaration for nanosleep
880 if test "${SYS}" != "mingw32" -a "${SYS}" != "mingwce"; then
881 AC_MSG_CHECKING(for nanosleep in time.h)
882 AC_EGREP_HEADER(nanosleep,time.h,[
883   AC_MSG_RESULT(yes)
884   AC_DEFINE(HAVE_DECL_NANOSLEEP, 1,
885             Define if <time.h> defines nanosleep.)
886 ],[
887   AC_MSG_RESULT(no)
888 ])
889 fi # end "${SYS}" != "mingw32" -a "${SYS}" != "mingwce"
890
891 dnl Make sure we have timespecs
892 AC_MSG_CHECKING(for timespec in sys/time.h)
893 AC_EGREP_HEADER(timespec,sys/time.h,[
894   AC_MSG_RESULT(yes)
895   AC_DEFINE(HAVE_STRUCT_TIMESPEC, 1,
896             Define if <sys/time.h> defines struct timespec.)
897 ],[
898   AC_MSG_RESULT(no)
899 ])
900
901 dnl Check for threads library
902 if test "${SYS}" != "mingw32" -a "${SYS}" != "mingwce"; then
903 AC_CHECK_HEADERS(pthread.h)
904 fi # end "${SYS}" != "mingw32" -a "${SYS}" != "mingwce"
905
906 dnl It seems that autoconf detects pkg-config only during the first
907 dnl PKG_CHECK_MODULES from configure.ac - which makes sense. But in our case,
908 dnl it is nested within a conditional block, so it was not working right.
909 dnl Make PKG_CONFIG_PATH precious so that it appears in the help and get saved
910 AC_ARG_VAR(PKG_CONFIG_PATH,
911            [Paths where to find .pc not at the default location])
912 PKG_PROG_PKG_CONFIG()
913
914 dnl On some OS we need static linking 
915        AS_IF([test -n "${PKG_CONFIG}" ],[
916               AS_IF([test "${SYS}" = "mingw32" -o "${SYS}" = "mingwce" -o "${SYS}" = "darwin" ],[
917                   PKG_CONFIG="${PKG_CONFIG} --static"
918               ])
919        ])
920
921
922 dnl
923 dnl Check for zlib.h and -lz along with system -lminizip if available
924 dnl 
925 AC_CHECK_HEADERS(zlib.h, [ have_zlib=yes ], [ have_zlib=no ])
926 AM_CONDITIONAL(HAVE_ZLIB, [ test "${have_zlib}" = "yes" ])
927 if test "${have_zlib}" = "yes"
928 then
929   VLC_ADD_LIBS([access_http gme mp4 skins2 sap mkv unzip zip],[-lz])
930   PKG_CHECK_MODULES([MINIZIP], [minizip] , [ have_minizip=yes ], [
931     AC_CHECK_HEADERS([unzip.h], [ 
932       have_minizip=yes
933       MINIZIP_LIBS="-lminizip -lz"
934     ], [
935       have_minizip=no
936       MINIZIP_CFLAGS="-I\\\${top_srcdir}/libs/unzip"
937       MINIZIP_LIBS="\\\${top_builddir}/libs/unzip/libunzip.la"
938     ])
939   ])
940   VLC_ADD_CPPFLAGS([skins2],[$MINIZIP_CFLAGS])
941   VLC_ADD_CFLAGS([zip],[$MINIZIP_CFLAGS])
942   VLC_ADD_LIBS([skins2 zip],[$MINIZIP_LIBS])
943   VLC_ADD_PLUGIN([unzip])
944   VLC_ADD_PLUGIN([zip])
945 fi
946 AM_CONDITIONAL(HAVE_MINIZIP, [ test "${have_minizip}" = "yes" ])
947
948
949 dnl Check for dbus
950 AC_ARG_ENABLE(dbus,
951   [  --enable-dbus           Linux D-BUS message bus system (default enabled)])
952 case "${SYS}" in
953     linux*|*bsd*)
954 if test "${enable_dbus}" != "no" -a "${SYS}" != "mingw32" -a "${SYS}" != "mingwce"
955 then
956   dnl api stable dbus
957   PKG_CHECK_MODULES(DBUS, dbus-1 >= 1.0.0,
958     [ AC_DEFINE( HAVE_DBUS, 1, [Define if you have the D-BUS library] )
959       VLC_ADD_LIBS([libvlccore],[$DBUS_LIBS])
960       VLC_ADD_CFLAGS([libvlccore],[$DBUS_CFLAGS])
961       dnl Check for dbus control interface
962         AC_ARG_ENABLE(dbus-control, [  --disable-dbus-control  D-BUS control interface (default enabled)])
963         if test "${enable_dbus_control}" != "no"
964         then
965           VLC_ADD_PLUGIN([dbus])
966           VLC_ADD_LIBS([dbus],[$DBUS_LIBS])
967           VLC_ADD_CFLAGS([dbus],[$DBUS_CFLAGS])
968         fi
969       dnl Check for Telepathy
970         AC_ARG_ENABLE(telepathy,
971           AS_HELP_STRING([--enable-telepathy],[Telepathy Presence plugin through DBus(default enabled)]))
972         if test "${enable_telepathy}" != "no"; then
973           VLC_ADD_PLUGIN([telepathy])
974           VLC_ADD_LIBS([telepathy],[$DBUS_LIBS])
975           VLC_ADD_CFLAGS([telepathy],[$DBUS_CFLAGS])
976         fi
977         dnl Power Management Inhibiter
978         VLC_ADD_PLUGIN([inhibit])
979         VLC_ADD_LIBS([inhibit],[$DBUS_LIBS])
980         VLC_ADD_CFLAGS([inhibit],[$DBUS_CFLAGS])
981     ],
982     [AC_MSG_ERROR([Couldn't find DBus >= 1.0.0, install libdbus-dev ?])]
983   )
984 fi
985 ;;
986 esac
987
988 dnl Check for ntohl, etc.
989 AC_CACHE_CHECK([for ntohl in sys/param.h],
990     [ac_cv_c_ntohl_sys_param_h],
991     [CFLAGS="${CFLAGS_save} -Wall -Werror"
992      AC_TRY_COMPILE([#include <sys/param.h>],
993         [int meuh; ntohl(meuh);],
994         ac_cv_c_ntohl_sys_param_h=yes, ac_cv_c_ntohl_sys_param_h=no)])
995 if test "${ac_cv_c_ntohl_sys_param_h}" != "no"; then
996     AC_DEFINE(NTOHL_IN_SYS_PARAM_H, 1, Define if <sys/param.h> defines ntohl.)
997 fi
998 CFLAGS="${CFLAGS_save}"
999
1000 RDC_PROG_CC_WFLAGS([all extra sign-compare undef pointer-arith bad-function-cast write-strings missing-prototypes volatile-register-var error-implicit-function-declaration])
1001 RDC_PROG_CC_FLAGS([-pipe])
1002
1003 AC_ARG_ENABLE(warnings-as-error,
1004       AS_HELP_STRING([--enable-warnings-as-error],[Treat acceptable warnings as error (default disabled)]),, [enable_warnings_as_error="no"])
1005 AS_IF([test "${enable_warnings_as_error}" = "yes"], [
1006     RDC_PROG_CC_WERRORFLAGS([unused-function unused-label unused-value unused-parameter unused-variable unused \
1007      missing-braces nonnull parentheses uninitialized address enum-compare undef comment switch \
1008      bad-function-cast implicit sequence-point strict-aliasing array-bounds missing-parameter-type \
1009      overflow int-to-pointer-cast pointer-to-int-cast div-by-zero overflow ignored])
1010 ])
1011 AC_SUBST(CFLAGS_WERROR)
1012
1013 dnl Check for various optimization flags
1014 AC_CACHE_CHECK([if \$CC accepts -Os],
1015     [ac_cv_c_os],
1016     [CFLAGS="${CFLAGS_save} -Os"
1017      AC_TRY_COMPILE([],,ac_cv_c_os=yes, ac_cv_c_os=no)])
1018 if test "${ac_cv_c_os}" != "no"; then
1019     CFLAGS_OPTIM_SIZE="${CFLAGS_OPTIM_SIZE} -Os"
1020 else
1021     AC_CACHE_CHECK([if \$CC accepts -O],
1022         [ac_cv_c_o],
1023         [CFLAGS="${CFLAGS_save} -O"
1024          AC_TRY_COMPILE([],,ac_cv_c_o=yes, ac_cv_c_o=no)])
1025     if test "${ac_cv_c_o}" != "no"; then
1026         if test "${ac_cv_c_o3}" = "no"; then
1027             CFLAGS_OPTIM_SIZE="${CFLAGS_OPTIM_SIZE} -O"
1028         fi
1029     fi
1030 fi
1031
1032 AC_CACHE_CHECK([if \$CC accepts -O4],
1033     [ac_cv_c_o4],
1034     [CFLAGS="${CFLAGS_save} -O4"
1035      AC_TRY_COMPILE([],,ac_cv_c_o4=yes, ac_cv_c_o4=no)])
1036 if test "${ac_cv_c_o4}" != "no" -a "x${enable_debug}" = "xno"; then
1037     CFLAGS_OPTIM_SPEED="${CFLAGS_OPTIM_SPEED} -O4"
1038 else
1039     AC_CACHE_CHECK([if \$CC accepts -O3],
1040         [ac_cv_c_o3],
1041         [CFLAGS="${CFLAGS_save} -O3"
1042          AC_TRY_COMPILE([],,ac_cv_c_o3=yes, ac_cv_c_o3=no)])
1043     if test "${ac_cv_c_o3}" != "no" -a "x${enable_debug}" = "xno"; then
1044         CFLAGS_OPTIM_SPEED="${CFLAGS_OPTIM_SPEED} -O3"
1045     else
1046         AC_CACHE_CHECK([if \$CC accepts -O2],
1047             [ac_cv_c_o2],
1048             [CFLAGS="${CFLAGS_save} -O2"
1049              AC_TRY_COMPILE([],,ac_cv_c_o2=yes, ac_cv_c_o2=no)])
1050         if test "${ac_cv_c_o2}" != "no"; then
1051             CFLAGS_OPTIM_SPEED="${CFLAGS_OPTIM_SPEED} -O2"
1052         else
1053             AC_CACHE_CHECK([if \$CC accepts -O],
1054                 [ac_cv_c_o],
1055                 [CFLAGS="${CFLAGS_save} -O"
1056                  AC_TRY_COMPILE([],,ac_cv_c_o=yes, ac_cv_c_o=no)])
1057             if test "${ac_cv_c_o}" != "no"; then
1058                 CFLAGS_OPTIM_SPEED="${CFLAGS_OPTIM_SPEED} -O"
1059             fi
1060         fi
1061     fi
1062 fi
1063
1064 AC_CACHE_CHECK([if \$CC accepts -O0],
1065     [ac_cv_c_o0],
1066     [CFLAGS="${CFLAGS_save} -O0"
1067      AC_TRY_COMPILE([],,ac_cv_c_o0=yes, ac_cv_c_o0=no)])
1068 if test "${ac_cv_c_o0}" != "no"; then
1069     CFLAGS_NOOPTIM="${CFLAGS_NOOPTIM} -O0"
1070 fi
1071
1072 dnl Check for -ffast-math
1073 AC_CACHE_CHECK([if \$CC accepts -ffast-math],
1074     [ac_cv_c_fast_math],
1075     [CFLAGS="${CFLAGS_save} -ffast-math"
1076      AC_TRY_COMPILE([],,ac_cv_c_fast_math=yes, ac_cv_c_fast_math=no)])
1077 if test "${ac_cv_c_fast_math}" != "no"; then
1078     CFLAGS_OPTIM_SPEED="${CFLAGS_OPTIM_SPEED} -ffast-math"
1079 fi
1080
1081 dnl Check for -funroll-loops
1082 dnl Disabled on BeOS because BeOS' gcc is buggy and may crash with it
1083 if test "${SYS}" != "beos"
1084 then
1085   AC_CACHE_CHECK([if \$CC accepts -funroll-loops],
1086       [ac_cv_c_unroll_loops],
1087       [CFLAGS="${CFLAGS_save} -funroll-loops"
1088        AC_TRY_COMPILE([],,ac_cv_c_unroll_loops=yes, ac_cv_c_unroll_loops=no)])
1089   if test "${ac_cv_c_unroll_loops}" != "no"; then
1090       CFLAGS_OPTIM_SPEED="${CFLAGS_OPTIM_SPEED} -funroll-loops"
1091   fi
1092 fi
1093
1094 dnl Check for -fomit-frame-pointer
1095 AC_CACHE_CHECK([if \$CC accepts -fomit-frame-pointer],
1096     [ac_cv_c_omit_frame_pointer],
1097     [CFLAGS="${CFLAGS_save} -fomit-frame-pointer"
1098      AC_TRY_COMPILE([],,ac_cv_c_omit_frame_pointer=yes, ac_cv_c_omit_frame_pointer=no)])
1099 if test "${ac_cv_c_omit_frame_pointer}" != "no"; then
1100  if test "${SYS}" != "darwin"; then
1101     CFLAGS_OPTIM_NODEBUG="${CFLAGS_OPTIM_NODEBUG} -fomit-frame-pointer"
1102  else
1103     dnl On darwin we explicitely disable it.
1104     CFLAGS_OPTIM_NODEBUG="${CFLAGS_OPTIM_NODEBUG} -fno-omit-frame-pointer"
1105  fi
1106 fi
1107
1108 dnl Check for Darwin plugin linking flags
1109 AC_CACHE_CHECK([if \$CC accepts -bundle -undefined error],
1110     [ac_cv_ld_darwin],
1111     [CFLAGS="${CFLAGS_save} -bundle -undefined error"
1112      AC_TRY_COMPILE([],,ac_cv_ld_darwin=yes, ac_cv_ld_darwin=no)])
1113 if test "${ac_cv_ld_darwin}" != "no"; then
1114     VLC_ADD_LDFLAGS([plugin],[-bundle -undefined error])
1115 fi
1116
1117 dnl Checks for __attribute__(aligned()) directive
1118 AC_CACHE_CHECK([__attribute__ ((aligned ())) support],
1119     [ac_cv_c_attribute_aligned],
1120     [ac_cv_c_attribute_aligned=0
1121         CFLAGS="${CFLAGS_save} -Werror"
1122     for ac_cv_c_attr_align_try in 2 4 8 16 32 64; do
1123         AC_TRY_COMPILE([],
1124         [static char c __attribute__ ((aligned(${ac_cv_c_attr_align_try}))) = 0; return c;],
1125         [ac_cv_c_attribute_aligned="${ac_cv_c_attr_align_try}"])
1126     done
1127         CFLAGS="${CFLAGS_save}"])
1128 if test "${ac_cv_c_attribute_aligned}" != "0"; then
1129     AC_DEFINE_UNQUOTED([ATTRIBUTE_ALIGNED_MAX],
1130         [${ac_cv_c_attribute_aligned}],[Maximum supported data alignment])
1131 fi
1132
1133 dnl Check for __attribute__((packed))
1134 AC_CACHE_CHECK([for __attribute__((packed))],
1135   [ac_cv_c_attribute_packed],
1136   [ac_cv_c_attribute_packed=no
1137    AC_TRY_COMPILE(, [struct __attribute__((__packed__)) foo { int a; } b; (void)b;],
1138                     [ac_cv_c_attribute_packed=yes])])
1139 if test "${ac_cv_c_attribute_packed}" != "no"; then
1140   AC_DEFINE(HAVE_ATTRIBUTE_PACKED, 1, Support for __attribute__((packed)) for structs)
1141 fi
1142
1143 dnl
1144 dnl  Check the CPU
1145 dnl
1146 case "${host_cpu}" in
1147   "")
1148     ARCH=unknown
1149     ;;
1150   *)
1151     ARCH="${host_cpu}"
1152     ;;
1153 esac
1154
1155 dnl Check for backtrace() support
1156 AC_CHECK_HEADERS(execinfo.h)
1157 AC_CHECK_FUNCS(backtrace)
1158
1159 dnl
1160 dnl  Enable profiling
1161 dnl
1162 AC_ARG_ENABLE(gprof,
1163 [  --enable-gprof          gprof profiling (default disabled)])
1164 AC_ARG_ENABLE(cprof,
1165 [  --enable-cprof          cprof profiling (default disabled)])
1166 test "${enable_gprof}" != "yes" && enable_gprof="no"
1167 test "${enable_cprof}" != "yes" && enable_cprof="no"
1168
1169 dnl
1170 dnl  default modules
1171 dnl
1172 dnl Video filters:
1173 VLC_ADD_PLUGIN([deinterlace])
1174 VLC_ADD_PLUGIN([yuvp])
1175 VLC_ADD_PLUGIN([invert])
1176 VLC_ADD_PLUGIN([mirror])
1177 VLC_ADD_PLUGIN([adjust])
1178 VLC_ADD_PLUGIN([transform])
1179 VLC_ADD_PLUGIN([wave])
1180 VLC_ADD_PLUGIN([ripple])
1181 VLC_ADD_PLUGIN([psychedelic])
1182 VLC_ADD_PLUGIN([gradient])
1183 VLC_ADD_PLUGIN([ball])
1184 VLC_ADD_PLUGIN([motionblur])
1185 VLC_ADD_PLUGIN([rv32])
1186 VLC_ADD_PLUGIN([rotate])
1187 VLC_ADD_PLUGIN([noise])
1188 VLC_ADD_PLUGIN([grain])
1189 VLC_ADD_PLUGIN([extract])
1190 VLC_ADD_PLUGIN([sharpen])
1191 VLC_ADD_PLUGIN([croppadd])
1192 VLC_ADD_PLUGIN([canvas])
1193 VLC_ADD_PLUGIN([blendbench])
1194 VLC_ADD_PLUGIN([blend])
1195 VLC_ADD_PLUGIN([scale])
1196 VLC_ADD_PLUGIN([vmem])
1197 VLC_ADD_PLUGIN([logo])
1198 VLC_ADD_PLUGIN([audiobargraph_v])
1199 VLC_ADD_PLUGIN([magnify])
1200 VLC_ADD_PLUGIN([puzzle])
1201 VLC_ADD_PLUGIN([colorthres])
1202 VLC_ADD_PLUGIN([scene])
1203 VLC_ADD_PLUGIN([yuv])
1204
1205 ALIASES="${ALIASES} cvlc"
1206
1207 dnl
1208 dnl default modules that need g++
1209 dnl
1210 AC_LANG_PUSH(C++)
1211 VLC_ADD_PLUGIN([spatializer])
1212 AC_LANG_POP(C++)
1213
1214 if test "${SYS}" != "mingwce"; then
1215   VLC_ADD_PLUGIN([gestures])
1216   VLC_ADD_PLUGIN([oldrc])
1217   VLC_ADD_PLUGIN([hotkeys])
1218   VLC_ADD_PLUGIN([showintf])
1219   VLC_ADD_PLUGIN([marq])
1220   VLC_ADD_PLUGIN([podcast])
1221   VLC_ADD_PLUGIN([shout])
1222   VLC_ADD_PLUGIN([sap])
1223   VLC_ADD_PLUGIN([mediadirs])
1224   VLC_ADD_PLUGIN([fake])
1225   VLC_ADD_PLUGIN([folder])
1226   VLC_ADD_PLUGIN([rss])
1227   VLC_ADD_PLUGIN([mosaic])
1228   VLC_ADD_PLUGIN([wall])
1229   VLC_ADD_PLUGIN([motiondetect])
1230   VLC_ADD_PLUGIN([clone])
1231   VLC_ADD_PLUGIN([crop])
1232   VLC_ADD_PLUGIN([erase])
1233   VLC_ADD_PLUGIN([bluescreen])
1234   VLC_ADD_PLUGIN([alphamask])
1235   VLC_ADD_PLUGIN([gaussianblur])
1236   VLC_ADD_PLUGIN([i420_yuy2])
1237   VLC_ADD_PLUGIN([i422_yuy2])
1238   VLC_ADD_PLUGIN([i422_i420])
1239   VLC_ADD_PLUGIN([yuy2_i422])
1240   VLC_ADD_PLUGIN([yuy2_i420])
1241   VLC_ADD_PLUGIN([chain])
1242   VLC_ADD_PLUGIN([aout_file])
1243   VLC_ADD_PLUGIN([linear_resampler])
1244   VLC_ADD_PLUGIN([bandlimited_resampler])
1245   VLC_ADD_PLUGIN([float32_mixer])
1246   VLC_ADD_PLUGIN([spdif_mixer])
1247   VLC_ADD_PLUGIN([simple_channel_mixer])
1248   VLC_ADD_PLUGIN([dolby_surround_decoder])
1249   VLC_ADD_PLUGIN([headphone_channel_mixer])
1250   VLC_ADD_PLUGIN([normvol])
1251   VLC_ADD_PLUGIN([audiobargraph_a])
1252   VLC_ADD_PLUGIN([equalizer])
1253   VLC_ADD_PLUGIN([param_eq])
1254   VLC_ADD_PLUGIN([scaletempo])
1255   VLC_ADD_PLUGIN([a52tospdif])
1256   VLC_ADD_PLUGIN([dtstospdif])
1257   ALIASES="${ALIASES} rvlc"
1258 fi
1259
1260 if test "${SYS}" = "mingwce"; then
1261   VLC_ADD_PLUGIN([chain])
1262   VLC_ADD_PLUGIN([aout_file])
1263   VLC_ADD_PLUGIN([linear_resampler])
1264   VLC_ADD_PLUGIN([bandlimited_resampler])
1265   VLC_ADD_PLUGIN([float32_mixer])
1266   VLC_ADD_PLUGIN([spdif_mixer])
1267   VLC_ADD_PLUGIN([simple_channel_mixer])
1268   VLC_ADD_PLUGIN([headphone_channel_mixer])
1269   VLC_ADD_PLUGIN([normvol])
1270   VLC_ADD_PLUGIN([audiobargraph_a])
1271   VLC_ADD_PLUGIN([a52tospdif])
1272   VLC_ADD_PLUGIN([dtstospdif])
1273   VLC_ADD_PLUGIN([i420_yuy2])
1274   VLC_ADD_PLUGIN([i422_yuy2])
1275   VLC_ADD_PLUGIN([i422_i420])
1276   VLC_ADD_PLUGIN([yuy2_i422])
1277   VLC_ADD_PLUGIN([yuy2_i420])
1278 fi
1279
1280 dnl
1281 dnl Some plugins aren't useful on some platforms
1282 dnl
1283 if test "${SYS}" != "mingw32" -a "${SYS}" != "mingwce"; then
1284     VLC_ADD_PLUGIN([motion])
1285     VLC_ADD_PLUGIN([dynamicoverlay])
1286     VLC_ADD_PLUGIN([signals])
1287 elif test "${SYS}" != "mingwce"; then
1288     VLC_ADD_PLUGIN([ntservice])
1289     VLC_ADD_PLUGIN([access_smb])
1290     VLC_ADD_PLUGIN([dmo])
1291     VLC_ADD_PLUGIN([msn])
1292     VLC_ADD_LIBS([dmo],[-lole32 -luuid])
1293     VLC_ADD_PLUGIN([globalhotkeys])
1294 else
1295     VLC_ADD_PLUGIN([win32text])
1296 fi
1297 if test "${SYS}" = "darwin"; then
1298     VLC_ADD_PLUGIN([quartztext])
1299     VLC_ADD_LDFLAGS([quartztext],[-Wl,-framework,ApplicationServices])
1300 fi
1301
1302 dnl
1303 dnl  Accelerated modules
1304 dnl
1305 AC_ARG_WITH(,[])
1306 AC_ARG_WITH(,[Optimization options:])
1307
1308 dnl  Check for fully working MMX intrinsics
1309 dnl  We need support for -mmmx, we need <mmintrin.h>, and we also need a
1310 dnl  working compiler (http://gcc.gnu.org/bugzilla/show_bug.cgi?id=23963)
1311 AC_ARG_ENABLE(mmx,
1312 [  --disable-mmx           disable MMX optimizations (default auto)],,[
1313   case "${host_cpu}" in
1314     i?86|x86_64)
1315       enable_mmx="yes"
1316       ;;
1317     *)
1318       enable_mmx="no"
1319       ;;
1320   esac
1321 ])
1322 have_mmx="no"
1323 have_mmxext="no"
1324 AS_IF([test "${enable_mmx}" != "no"], [
1325   ARCH="${ARCH} mmx"
1326
1327   AC_CACHE_CHECK([if $CC groks MMX intrinsics],
1328     [ac_cv_c_mmx_intrinsics],
1329     [CFLAGS="${CFLAGS_save} -O -mmmx"
1330      AC_TRY_COMPILE([#include <mmintrin.h>
1331                      #include <stdint.h>
1332                      uint64_t frobzor;],
1333                     [__m64 a, b, c;
1334                      a = b = c = (__m64)frobzor;
1335                      a = _mm_slli_pi16(a, 3);
1336                      a = _mm_adds_pi16(a, b);
1337                      c = _mm_srli_pi16(c, 8);
1338                      c = _mm_slli_pi16(c, 3);
1339                      b = _mm_adds_pi16(b, c);
1340                      a = _mm_unpacklo_pi8(a, b);
1341                      frobzor = (uint64_t)a;],
1342                     [ac_cv_c_mmx_intrinsics=yes],
1343                     [ac_cv_c_mmx_intrinsics=no])])
1344   AS_IF([test "${ac_cv_c_mmx_intrinsics}" != "no"], [
1345     AC_DEFINE(HAVE_MMX_INTRINSICS, 1,
1346               [Define to 1 if MMX intrinsics are available.])
1347     MMX_CFLAGS="-mmmx"
1348   ])
1349
1350   AC_CACHE_CHECK([if $CC groks MMX inline assembly],
1351     [ac_cv_mmx_inline],
1352     [CFLAGS="${CFLAGS_save}"
1353      AC_TRY_COMPILE(,[void *p;asm volatile("packuswb %%mm1,%%mm2"::"r"(p));],
1354                     ac_cv_mmx_inline=yes, ac_cv_mmx_inline=no)])
1355   AS_IF([test "${ac_cv_mmx_inline}" != "no"], [
1356     AC_DEFINE(CAN_COMPILE_MMX, 1,
1357               [Define to 1 inline MMX assembly is available.])
1358     have_mmx="yes"
1359   ])
1360
1361   AC_CACHE_CHECK([if $CC groks MMX EXT inline assembly],
1362     [ac_cv_mmxext_inline],
1363     [CFLAGS="${CFLAGS_save}"
1364      AC_TRY_COMPILE(,[void *p;asm volatile("maskmovq %%mm1,%%mm2"::"r"(p));],
1365                     ac_cv_mmxext_inline=yes, ac_cv_mmxext_inline=no)])
1366   AS_IF([test "${ac_cv_mmxext_inline}" != "no"], [
1367     AC_DEFINE(CAN_COMPILE_MMXEXT, 1,
1368               [Define to 1 if MMX EXT inline assembly is available.])
1369     have_mmxext="yes"
1370   ])
1371 ])
1372 AC_SUBST(MMX_CFLAGS)
1373 AM_CONDITIONAL([HAVE_MMX], [test "${have_mmx}" = "yes"])
1374 AM_CONDITIONAL([HAVE_MMXEXT], [test "${have_mmxext}" = "yes"])
1375
1376 dnl  Check for fully workin SSE2 intrinsics
1377 dnl  We need support for -mmmx, we need <emmintrin.h>, and we also need a
1378 dnl  working compiler (http://gcc.gnu.org/bugzilla/show_bug.cgi?id=23963)
1379 AC_ARG_ENABLE(sse,
1380 [  --disable-sse           disable SSE (1, 2, 3 and 4) optimizations (default auto)],
1381 , [
1382   case "${host_cpu}" in
1383     i686|x86_64)
1384       enable_sse=yes
1385       ;;
1386     *)
1387       enable_sse=no
1388       ;;
1389   esac
1390 ])
1391 have_sse2="no"
1392 AS_IF([test "${enable_sse}" != "no"], [
1393   ARCH="${ARCH} sse sse2"
1394
1395   AC_CACHE_CHECK([if $CC groks SSE2 intrinsics],
1396     [ac_cv_c_sse2_intrinsics],
1397     [CFLAGS="${CFLAGS_save} -O -msse2"
1398      AC_TRY_COMPILE([#include <emmintrin.h>
1399                      #include <stdint.h>
1400                      uint64_t frobzor;],
1401                     [__m128i a, b, c;
1402                      a = b = c = _mm_set1_epi64((__m64)frobzor);
1403                      a = _mm_slli_epi16(a, 3);
1404                      a = _mm_adds_epi16(a, b);
1405                      c = _mm_srli_epi16(c, 8);
1406                      c = _mm_slli_epi16(c, 3);
1407                      b = _mm_adds_epi16(b, c);
1408                      a = _mm_unpacklo_epi8(a, b);
1409                      frobzor = (uint64_t)_mm_movepi64_pi64(a);],
1410                     [ac_cv_c_sse2_intrinsics=yes],
1411                     [ac_cv_c_sse2_intrinsics=no])])
1412   AS_IF([test "${ac_cv_c_sse2_intrinsics}" != "no"], [
1413     AC_DEFINE(HAVE_SSE2_INTRINSICS, 1,
1414               [Define to 1 if SSE2 intrinsics are available.])
1415     SSE2_CFLAGS="-msse2"
1416   ])
1417
1418   AC_CACHE_CHECK([if $CC groks SSE inline assembly],
1419     [ac_cv_sse_inline],
1420     [CFLAGS="${CFLAGS_save}"
1421      AC_TRY_COMPILE(,[void *p;asm volatile("xorps %%xmm1,%%xmm2"::"r"(p));],
1422                     ac_cv_sse_inline=yes, ac_cv_sse_inline=no)])
1423   AS_IF([test "${ac_cv_sse_inline}" != "no" -a "${SYS}" != "solaris"], [
1424     AC_DEFINE(CAN_COMPILE_SSE, 1,
1425               [Define to 1 if SSE inline assembly is available.])
1426   ])
1427
1428   AC_CACHE_CHECK([if $CC groks SSE2 inline assembly],
1429     [ac_cv_sse2_inline],
1430     [CFLAGS="${CFLAGS_save}"
1431      AC_TRY_COMPILE(,[void *p;asm volatile("punpckhqdq %%xmm1,%%xmm2"::"r"(p));],
1432                     ac_cv_sse2_inline=yes, ac_cv_sse2_inline=no)])
1433   AS_IF([test "${ac_cv_sse2_inline}" != "no" -a "${SYS}" != "solaris"], [
1434     AC_DEFINE(CAN_COMPILE_SSE2, 1,
1435               [Define to 1 if SSE2 inline assembly is available.])
1436     have_sse2="yes"
1437   ])
1438
1439   # SSE3
1440   AC_CACHE_CHECK([if $CC groks SSE3 inline assembly],
1441     [ac_cv_sse3_inline],
1442     [CFLAGS="${CFLAGS_save}"
1443      AC_TRY_COMPILE(,[void *p;asm volatile("movsldup %%xmm1,%%xmm0"::"r"(p));],
1444                     ac_cv_sse3_inline=yes, ac_cv_sse3_inline=no)])
1445   AS_IF([test "${ac_cv_sse3_inline}" != "no"], [
1446     AC_DEFINE(CAN_COMPILE_SSE3, 1,
1447               [Define to 1 if SSE3 inline assembly is available.]) ])
1448   # SSSE3
1449   AC_CACHE_CHECK([if $CC groks SSSE3 inline assembly],
1450     [ac_cv_ssse3_inline],
1451     [CFLAGS="${CFLAGS_save}"
1452      AC_TRY_COMPILE(,[void *p;asm volatile("pabsw %%xmm0,%%xmm0"::"r"(p));],
1453                     ac_cv_ssse3_inline=yes, ac_cv_ssse3_inline=no)])
1454   AS_IF([test "${ac_cv_ssse3_inline}" != "no"], [
1455     AC_DEFINE(CAN_COMPILE_SSSE3, 1,
1456               [Define to 1 if SSSE3 inline assembly is available.]) ])
1457
1458   # SSE4.1
1459   AC_CACHE_CHECK([if $CC groks SSE4.1 inline assembly],
1460     [ac_cv_sse4_1_inline],
1461     [CFLAGS="${CFLAGS_save}"
1462      AC_TRY_COMPILE(,[void *p;asm volatile("pmaxsb %%xmm1,%%xmm0"::"r"(p));],
1463                     ac_cv_sse4_1_inline=yes, ac_cv_sse4_1_inline=no)])
1464   AS_IF([test "${ac_cv_sse4_1_inline}" != "no"], [
1465     AC_DEFINE(CAN_COMPILE_SSE4_1, 1,
1466               [Define to 1 if SSE4_1 inline assembly is available.]) ])
1467
1468   # SSE4.2
1469   AC_CACHE_CHECK([if $CC groks SSE4.2 inline assembly],
1470     [ac_cv_sse4_2_inline],
1471     [CFLAGS="${CFLAGS_save}"
1472      AC_TRY_COMPILE(,[void *p;asm volatile("pcmpgtq %%xmm1,%%xmm0"::"r"(p));],
1473                     ac_cv_sse4_2_inline=yes, ac_cv_sse4_2_inline=no)])
1474   AS_IF([test "${ac_cv_sse4_2_inline}" != "no"], [
1475     AC_DEFINE(CAN_COMPILE_SSE4_2, 1,
1476               [Define to 1 if SSE4_2 inline assembly is available.]) ])
1477
1478   # SSE4A
1479   AC_CACHE_CHECK([if $CC groks SSE4A inline assembly],
1480     [ac_cv_sse4a_inline],
1481     [CFLAGS="${CFLAGS_save}"
1482      AC_TRY_COMPILE(,[void *p;asm volatile("insertq %%xmm1,%%xmm0"::"r"(p));],
1483                     ac_cv_sse4a_inline=yes, ac_cv_sse4a_inline=no)])
1484   AS_IF([test "${ac_cv_sse4a_inline}" != "no"], [
1485     AC_DEFINE(CAN_COMPILE_SSE4A, 1,
1486               [Define to 1 if SSE4A inline assembly is available.]) ])
1487 ])
1488 AC_SUBST(SSE2_CFLAGS)
1489 AM_CONDITIONAL([HAVE_SSE2], [test "$have_sse2" = "yes"])
1490
1491 have_3dnow="no"
1492 AC_CACHE_CHECK([if $CC groks 3D Now! inline assembly],
1493     [ac_cv_3dnow_inline],
1494     [CFLAGS="${CFLAGS_save}"
1495      AC_TRY_COMPILE(,[void *p;asm volatile("pfadd %%mm1,%%mm2"::"r"(p));],
1496                     ac_cv_3dnow_inline=yes, ac_cv_3dnow_inline=no)])
1497 AS_IF([test "${ac_cv_3dnow_inline}" != "no"], [
1498   AC_DEFINE(CAN_COMPILE_3DNOW, 1,
1499             [Define to 1 if 3D Now! inline assembly is available.])
1500   have_3dnow="yes"
1501 ])
1502 AM_CONDITIONAL([HAVE_3DNOW], [test "$have_3dnow" = "yes"])
1503
1504
1505 AC_ARG_ENABLE(neon,
1506 [  --disable-neon          disable NEON optimizations (default auto)],, [
1507   AS_IF([test "${host_cpu}" = "arm"], [enable_neon="yes"] ,[enable_neon="no"])
1508 ])
1509 AS_IF([test "${enable_neon}" != "no"], [
1510   AC_CACHE_CHECK([if $CC groks NEON inline assembly], [ac_cv_neon_inline], [
1511     CFLAGS="${CFLAGS_save} -mfpu=neon"
1512     AC_COMPILE_IFELSE([
1513       AC_LANG_PROGRAM(,[[asm volatile("vqmovun.s64 d0, q1":::"d0");]])
1514     ], [
1515       ac_cv_neon_inline="-mfpu=neon"
1516     ], [
1517       ac_cv_neon_inline="no"
1518     ])
1519     CFLAGS="${CFLAGS_save}"
1520   ])
1521   ARM_NEON_CFLAGS="$ac_cv_neon_inline"
1522 ], [
1523   ac_cv_neon_inline="no"
1524 ])
1525 AC_SUBST(ARM_NEON_CFLAGS)
1526 AM_CONDITIONAL(HAVE_ARM_NEON, [test "${ac_cv_neon_inline}" != "no"])
1527
1528
1529 AC_ARG_ENABLE(altivec,
1530 [  --disable-altivec       disable AltiVec optimizations (default auto)],, [
1531   AS_IF([test "${host_cpu}" = "powerpc"],
1532         [enable_altivec=yes], [enable_altivec=no])
1533 ])
1534 have_altivec="no"
1535 AS_IF([test "${enable_altivec}" = "yes"], [
1536   ARCH="${ARCH} altivec";
1537   AC_CACHE_CHECK([if $CC groks AltiVec inline assembly],
1538     [ac_cv_altivec_inline],
1539     [CFLAGS="${CFLAGS_save}"
1540      AC_TRY_COMPILE(,[asm volatile("vperm 0,1,2,3");],
1541          ac_cv_altivec_inline="yes",
1542          [CFLAGS="${CFLAGS_save} -Wa,-m7400"
1543           AC_TRY_COMPILE(,[asm volatile("vperm 0,1,2,3");],
1544             [ac_cv_altivec_inline="-Wa,-m7400"],
1545             ac_cv_altivec_inline=no)
1546          ])])
1547   AS_IF([test "${ac_cv_altivec_inline}" != "no"], [
1548     AC_DEFINE(CAN_COMPILE_ALTIVEC, 1,
1549               [Define to 1 if AltiVec inline assembly is available.])
1550     AS_IF([test "${ac_cv_altivec_inline}" != "yes"], [
1551       VLC_ADD_CFLAGS([idctaltivec],[${ac_cv_altivec_inline}])
1552       VLC_ADD_CFLAGS([motionaltivec],[${ac_cv_altivec_inline}])
1553       VLC_ADD_CFLAGS([memcpyaltivec],[${ac_cv_altivec_inline}])
1554       VLC_ADD_CFLAGS([i420_yuy2_altivec],[${ac_cv_altivec_inline}])
1555       VLC_ADD_CFLAGS([libvlccore],[${ac_cv_altivec_inline}])
1556     ])
1557     have_altivec="yes"
1558   ])
1559
1560 dnl The AltiVec C extensions
1561 dnl
1562 dnl There are several possible cases:
1563 dnl - OS X PPC, gcc 4.x: use -mpim-altivec -force_cpusubtype_ALL, don't
1564 dnl                      need <altivec.h>
1565 dnl - OS X PPC, gcc 3.x: need -faltivec, don't need <altivec.h>
1566 dnl - Linux PPC, gcc 3.4, 4.x: need <altivec.h> which requires -maltivec
1567 dnl - Linux PPC, gcc 3.3: need <altivec.h> and -maltivec -mabi=altivec
1568 dnl - Linux PPC, gcc 3.x: need <altivec.h> and -fvec
1569 dnl - Others: test should fail
1570   AC_CACHE_CHECK([if \$CC groks AltiVec C extensions],
1571   [ac_cv_c_altivec],
1572   [# OS X/PPC test (gcc 4.x)
1573    CFLAGS="${CFLAGS_save} -mpim-altivec -force_cpusubtype_ALL"
1574    AC_TRY_COMPILE([vector unsigned char foo;],
1575      [vec_ld(0, (unsigned char *)0);],
1576      [ac_cv_c_altivec="-mpim-altivec -force_cpusubtype_ALL"],
1577      [# OS X/PPC test (gcc 3.x)
1578       CFLAGS="${CFLAGS_save} -faltivec"
1579       AC_TRY_COMPILE([vector unsigned char foo;],
1580         [vec_ld(1 * sizeof(vector float), (unsigned char *)0);],
1581         [ac_cv_c_altivec="-faltivec"],
1582         dnl Below this are the Linux tests
1583         [# Linux/PPC test (gcc 4.x)
1584          CFLAGS="${CFLAGS_save} -maltivec"
1585          AC_TRY_COMPILE([#include <altivec.h>],
1586            [vec_ld(0, (unsigned char *)0);],
1587            [ac_cv_c_altivec="-maltivec"],
1588            [# Linux/PPC test (gcc 3.3)
1589             CFLAGS="${CFLAGS_save} -maltivec -mabi=altivec"
1590             AC_TRY_COMPILE([#include <altivec.h>],
1591               [vec_ld(0, (unsigned char *)0);],
1592               [ac_cv_c_altivec=""
1593                ac_cv_c_altivec_abi="-maltivec -mabi=altivec"],
1594               [# Linux/PPC test (gcc 3.3)
1595                CFLAGS="${CFLAGS_save} -fvec"
1596                AC_TRY_COMPILE([#include <altivec.h>],
1597                  [vec_ld(0, (unsigned char *)0);],
1598                  [ac_cv_c_altivec="-fvec"],
1599                  [ac_cv_c_altivec=no])
1600               ])
1601            ])
1602         ])
1603      ])
1604    CFLAGS="${CFLAGS_save}"
1605   ])
1606   AS_IF([test "${ac_cv_c_altivec}" != "no"], [
1607     CPPFLAGS="${CPPFLAGS_save} ${ac_cv_c_altivec}"
1608   ])
1609
1610   AC_CHECK_HEADERS(altivec.h)
1611   CPPFLAGS="${CPPFLAGS_save}"
1612
1613   AS_IF([test "${ac_cv_c_altivec}" != "no"], [
1614     AC_DEFINE(CAN_COMPILE_C_ALTIVEC, 1,
1615               [Define to 1 if C AltiVec extensions are available.])
1616     VLC_ADD_CFLAGS([libvlccore],[${ac_cv_c_altivec}])
1617     VLC_ADD_CFLAGS([idctaltivec motionaltivec],[${ac_cv_c_altivec}])
1618     VLC_ADD_CFLAGS([i420_yuy2_altivec memcpyaltivec deinterlace],[${ac_cv_c_altivec} ${ac_cv_c_altivec_abi}])
1619     have_altivec="yes"
1620   ])
1621
1622   AC_CACHE_CHECK([if linker needs -framework vecLib],
1623     [ac_cv_ld_altivec],
1624     [LDFLAGS="${LDFLAGS_vlc} -Wl,-framework,vecLib"
1625      AC_TRY_LINK([],,ac_cv_ld_altivec=yes,ac_cv_ld_altivec=no)
1626      LDFLAGS="${LDFLAGS_save}"
1627     ])
1628   AS_IF([test "${ac_cv_ld_altivec}" != "no"], [
1629     VLC_ADD_LDFLAGS([libvlccore idctaltivec motionaltivec memcpyaltivec],[-Wl,-framework,vecLib])
1630   ])
1631 ])
1632 AM_CONDITIONAL([HAVE_ALTIVEC], [test "$have_altivec" = "yes"])
1633
1634 dnl
1635 dnl  Special arch tuning
1636 dnl
1637 AC_ARG_WITH(tuning,
1638 [  --with-tuning=ARCH      enable special tuning for an architecture
1639                           (default Pentium 2 on IA-32 and G4 on PPC)])
1640 if test -n "${with_tuning}"; then
1641     if test "${with_tuning}" != "no"; then
1642         CFLAGS_TUNING="-mtune=${with_tuning}"
1643     fi
1644 else
1645     if test "${SYS}" = "darwin" -a "${host_cpu}" != "powerpc"; then
1646         CFLAGS_TUNING="-march=prescott -mtune=generic"
1647     elif test "${host_cpu}" = "i686" -o "${host_cpu}" = "i586" -o "${host_cpu}" = "i486" -o "${host_cpu}" = "i386"; then
1648         CFLAGS_TUNING="-mtune=pentium2"
1649     elif test "${host_cpu}" = "x86_64"; then
1650         CFLAGS_TUNING="-mtune=athlon64"
1651     elif test "${host_cpu}" = "powerpc"; then
1652         CFLAGS_TUNING="-mtune=G4";
1653     fi
1654 fi
1655
1656 dnl NOTE: this can't be cached cleanly
1657 AS_IF([test "${CFLAGS_TUNING}"],
1658    [CFLAGS_save="${CFLAGS}"
1659     CFLAGS="${CFLAGS} ${CFLAGS_TUNING}"
1660
1661     AC_MSG_CHECKING([whether $CC accepts ${CFLAGS_TUNING}])
1662     AC_COMPILE_IFELSE([ ],
1663                       [tuning="yes"],
1664                       [CFLAGS_TUNING=""; tuning="no"
1665                        AS_IF([test "${with_tuning}"],
1666                              [AC_MSG_ERROR([requested tuning not supported])])])
1667
1668     AC_MSG_RESULT([$tuning])
1669     CFLAGS="${CFLAGS_save}"
1670 ])
1671
1672 dnl
1673 dnl  Memory usage
1674 dnl
1675 AC_ARG_ENABLE(optimize-memory,
1676 [  --enable-optimize-memory optimize memory usage over performance])
1677 if test "${enable_optimize_memory}" = "yes"; then
1678   AC_DEFINE(OPTIMIZE_MEMORY, 1, Define if you want to optimize memory usage over performance)
1679 fi
1680
1681 dnl
1682 dnl  Enable/disable optimizations
1683 dnl
1684 AC_ARG_ENABLE(optimizations,
1685 [  --disable-optimizations disable compiler optimizations (default enabled)])
1686 if test "${enable_optimizations}" != "no"; then
1687    if test "${enable_optimize_memory}" = "yes"; then
1688       enable_optimizations="size"
1689    else
1690       enable_optimizations="speed"
1691    fi
1692 fi
1693
1694 dnl
1695 dnl  Debugging mode
1696 dnl
1697 AC_ARG_ENABLE(debug,
1698 [  --enable-debug          debug mode (default disabled)])
1699 test "${enable_debug}" != "yes" && enable_debug="no"
1700 AH_TEMPLATE(NDEBUG,
1701             [Define to 1 if debug code should NOT be compiled])
1702 AS_IF([test "x${enable_debug}" = "xno"], [
1703   AC_DEFINE(NDEBUG)
1704 ], [
1705   AC_CHECK_HEADERS([valgrind/valgrind.h])
1706 ])
1707
1708 dnl
1709 dnl Allow runing as root (usefull for people runing on embedded platforms)
1710 dnl
1711 AC_ARG_ENABLE(run-as-root,
1712 [  --enable-run-as-root    allow runing VLC as root (default disabled)])
1713 AS_IF([test "${enable_run_as_root}" = "yes"],[
1714     AC_DEFINE(ALLOW_RUN_AS_ROOT, 1,
1715               [Define to 1 to allow runing VLC as root (uid 0).])
1716 ])
1717
1718 dnl
1719 dnl  Test coverage
1720 dnl
1721 AC_ARG_ENABLE(coverage,
1722         [  --enable-coverage       build for test coverage (default disabled)],,
1723         [enable_coverage="no"])
1724 AS_IF([test "${enable_coverage}" != "no"], [
1725         CFLAGS="-fprofile-arcs -ftest-coverage ${CFLAGS}"
1726         CXXFLAGS="-fprofile-arcs -ftest-coverage ${CXXFLAGS}"
1727         LDFLAGS="-lgcov ${LDFLAGS}"
1728         dnl ugly...
1729         CFLAGS_save="${CFLAGS}"
1730         CXXFLAGS_save="${CXXFLAGS}"
1731         LDFLAGS_save="${LDFLAGS}"
1732 ])
1733
1734 dnl
1735 dnl  Enable release-specific flags
1736 dnl
1737 AC_ARG_ENABLE(release,
1738 [  --enable-release        activate extra optimizations (default disabled)])
1739 test "${enable_release}" != "yes" && enable_release="no"
1740
1741 dnl
1742 dnl Stream output
1743 dnl
1744 AC_ARG_ENABLE(sout,
1745   [  --enable-sout           Stream output modules (default enabled)])
1746 AS_IF([test "${enable_sout}" != "no"], [
1747   AC_DEFINE(ENABLE_SOUT, 1, [Define to 1 for stream output support.])
1748 ])
1749 AM_CONDITIONAL(ENABLE_SOUT, [test "${enable_sout}" != "no"])
1750
1751 dnl Lua modules
1752 AC_ARG_ENABLE(lua,
1753   AS_HELP_STRING([--enable-lua],[lua playlist, metafetcher and interface
1754                   plugins (default enabled)]))
1755 if test "${enable_lua}" != "no"
1756 then
1757   PKG_CHECK_MODULES(LUA, lua5.1,
1758     [ have_lua=yes ],
1759     [
1760     AC_MSG_WARN([lua5.1 not found, trying lua >= 5.1 instead])
1761     PKG_CHECK_MODULES(LUA, lua >= 5.1,
1762       [ have_lua=yes ],
1763       [
1764         have_lua=yes
1765         AC_CHECK_HEADERS([lua.h lauxlib.h lualib.h],
1766           [],
1767           [ have_lua=no ] )
1768         AC_CHECK_LIB(  lua5.1 , luaL_newstate,
1769           [LUA_LIBS="-llua5.1"],
1770           AC_CHECK_LIB( lua51 , luaL_newstate,
1771             [LUA_LIBS="-llua51"],
1772             AC_CHECK_LIB( lua , luaL_newstate,
1773               [LUA_LIBS="-llua"],
1774               [ have_lua=no
1775                 AS_IF([test "x${enable_lua}" = "xyes"],
1776                   [AC_MSG_ERROR([lua >= 5.1 not found!])],
1777                   [AC_MSG_WARN([lua >= 5.1 not found!])])
1778               ], [-lm])
1779           )
1780         )
1781       ])
1782     ])
1783   if test "x${have_lua}" = "xyes" ;  then
1784      VLC_ADD_LIBS([lua],[$LUA_LIBS])
1785      VLC_ADD_CFLAGS([lua],[$LUA_CFLAGS])
1786   else
1787       AC_MSG_ERROR([Could not find lua. Lua is needed for some interfaces (rc, telnet, http) as well as many other custom scripts. Use --disable-lua to ignore this error.])
1788   fi
1789 fi
1790 AM_CONDITIONAL(BUILD_LUA, [test "${have_lua}" = "yes"])
1791
1792 dnl
1793 dnl HTTP daemon
1794 dnl
1795 AC_ARG_ENABLE(httpd,
1796   [  --enable-httpd          HTTP daemon (default enabled)])
1797 if test "${enable_httpd}" != "no"
1798 then
1799   VLC_ADD_PLUGIN([oldhttp])
1800   AC_DEFINE(ENABLE_HTTPD, 1, Define if you want the HTTP dameon support)
1801 fi
1802 AM_CONDITIONAL(BUILD_HTTPD, [test "${enable_httpd}" != "no"])
1803
1804 dnl
1805 dnl libproxy support
1806 dnl
1807 AC_ARG_ENABLE(libproxy,
1808   [  --enable-libproxy       libproxy support (default auto)])
1809 AS_IF([test "${enable_libproxy}" != "no"], [
1810   PKG_CHECK_MODULES(LIBPROXY, libproxy-1.0, [
1811     AC_DEFINE(HAVE_LIBPROXY, 1, [Define if libproxy is available])
1812     VLC_ADD_CFLAGS([access_http],[$LIBPROXY_CFLAGS])
1813     VLC_ADD_LIBS([access_http],[$LIBPROXY_LIBS])
1814   ], [
1815     AS_IF([test "x${enable_libproxy}" != "x"], [
1816       AC_MSG_ERROR([libproxy could not be found on your system])
1817     ])
1818   ])
1819 ])
1820
1821
1822 dnl
1823 dnl VideoLAN manager
1824 dnl
1825 AC_ARG_ENABLE(vlm,
1826   [  --enable-vlm            VideoLAN manager (default enabled)],,
1827   [enable_vlm="${enable_sout}"])
1828 AS_IF([test "${enable_vlm}" != "no"], [
1829   AS_IF([test "${enable_sout}" = "no"], [
1830     AC_MSG_ERROR([VLM requires the stream output. Do not use --disable-sout.])
1831   ])
1832   AC_DEFINE(ENABLE_VLM, 1, [Define if you want the VideoLAN manager support])
1833   VLC_ADD_PLUGIN([oldtelnet])
1834 ])
1835 AM_CONDITIONAL([ENABLE_VLM], [test "${enable_vlm}" != "no"])
1836
1837 dnl
1838 dnl Growl notification plugin
1839 dnl
1840 AC_ARG_ENABLE(growl,
1841   [  --enable-growl          growl notification plugin (default disabled)],,
1842   [enable_growl=no])
1843 AS_IF([test "${enable_growl}" != "no"], [
1844     VLC_ADD_PLUGIN([growl_udp])
1845     AC_CHECK_HEADERS(Growl/GrowlDefines.h, [
1846       VLC_ADD_PLUGIN([growl])
1847       VLC_ADD_LDFLAGS([growl], [-Wl,-framework,Growl,-framework,AppKit])
1848       VLC_ADD_OBJCFLAGS([growl], [-fobjc-exceptions] )
1849     ])
1850   ]
1851 )
1852
1853 dnl
1854 dnl Libnotify notification plugin
1855 dnl
1856 PKG_ENABLE_MODULES_VLC([NOTIFY], [], [libnotify], [libnotify notification], [auto])
1857
1858 dnl
1859 dnl Audioscrobbler plugin
1860 dnl
1861
1862 AC_ARG_ENABLE(audioscrobbler,
1863   [  --disable-audioscrobbler Last.fm submission plugin (default enabled)])
1864 AS_IF([test "${enable_audioscrobbler}" != "no"], [
1865         VLC_ADD_PLUGIN([audioscrobbler])
1866   ])
1867
1868 dnl
1869 dnl Taglibplugin
1870 dnl
1871 AC_ARG_ENABLE(taglib,
1872   [  --disable-taglib        Taglib support (default enabled) ])
1873   AS_IF([test "${enable_taglib}" != "no"],[
1874     PKG_CHECK_MODULES(TAGLIB, taglib >= 1.5,
1875       [ VLC_ADD_PLUGIN([taglib])
1876         VLC_ADD_LIBS([taglib],[$TAGLIB_LIBS -lz])
1877        VLC_ADD_CXXFLAGS([taglib],[$TAGLIB_CFLAGS]) ],
1878       [AC_MSG_WARN(TagLib library not found)])
1879   ])
1880
1881 dnl
1882 dnl  Input plugins
1883 dnl
1884
1885 AC_ARG_WITH(,[Input plugins:])
1886
1887 dnl  live555 input
1888 dnl
1889 if test "${enable_livedotcom}"
1890 then
1891   AC_MSG_WARN(--{en|dis}able-livedotcom is deprecated. Use --{en|dis}able-live555 instead.)
1892 fi
1893 if test "${enable_livedotcom}" = "no"
1894 then
1895   enable_live555="no"
1896 fi
1897
1898 AC_ARG_ENABLE(live555,
1899 [  --enable-live555        live555 RTSP input plugin (default enabled)])
1900 if test "${enable_live555}" != "no"; then
1901   AC_ARG_WITH(live555-tree,
1902     [  --with-live555-tree=PATH live.com tree for static linking])
1903
1904   dnl
1905   dnl test for --with-live555-tree
1906   dnl
1907   if test "${with_livedotcom_tree}"
1908   then
1909     AC_MSG_WARN(--with-livedotcom-tree is deprecated. Use --with-live555-tree instead.)
1910   with_live555_tree="${with_livedotcom_tree}"
1911   fi
1912
1913   if test -z "${with_live555_tree}" -a "${CXX}" != ""; then
1914     AC_LANG_PUSH(C++)
1915     CPPFLAGS_save="${CPPFLAGS}"
1916     CPPFLAGS_live555="-I/usr/include/liveMedia -I/usr/include/groupsock -I/usr/include/BasicUsageEnvironment -I/usr/include/UsageEnvironment"
1917     if test "${SYS}" = "solaris"; then
1918       CPPFLAGS_live555="${CPPFLAGS_live555} -DSOLARIS"
1919     fi
1920     CPPFLAGS="${CPPFLAGS} ${CPPFLAGS_live555}"
1921
1922     AC_CHECK_HEADERS(liveMedia_version.hh, [
1923       AC_MSG_CHECKING(for liveMedia version >= 1214895600 )
1924       AC_EGREP_CPP(yes,
1925         [#include <liveMedia_version.hh>
1926          #ifdef LIVEMEDIA_LIBRARY_VERSION_INT
1927          #if LIVEMEDIA_LIBRARY_VERSION_INT < 1214895600
1928          yes
1929          #endif
1930          #endif],
1931         [AC_MSG_RESULT([no])
1932          AC_MSG_ERROR([Your version of liveMedia is too old: you may get a more recent one from http://www.live555.com/liveMedia.
1933 lternatively you can use --disable-live555 to disable the liveMedia plugin.])
1934       ],[
1935          AC_MSG_RESULT([yes])
1936          ])
1937     ])
1938      other_libs="-lgroupsock -lBasicUsageEnvironment -lUsageEnvironment"
1939      other_libs_pic="-lgroupsock_pic -lBasicUsageEnvironment_pic -lUsageEnvironment_pic"
1940       if test "${SYS}" = "mingw32"; then
1941         # add ws2_32 for closesocket, select, recv
1942         other_libs="$other_libs -lws2_32"
1943       elif test "${SYS}" = "mingwce"; then
1944         # add ws2 for closesocket, select, recv
1945         other_libs="$other_libs -lws2"
1946       fi
1947     dnl We need to check for pic because live555 don't provide shared libs
1948     dnl and we want to build a plugins so we need -fPIC on some arch.
1949     AC_CHECK_HEADERS(liveMedia.hh, [
1950       VLC_ADD_CXXFLAGS([live555], [${CPPFLAGS_live555}])
1951         AC_CHECK_LIB(liveMedia_pic, main, [
1952           VLC_ADD_PLUGIN([live555])
1953          VLC_ADD_LIBS([live555], [-lliveMedia_pic ${other_libs_pic}])
1954          ],[
1955         AC_CHECK_LIB(liveMedia, main, [
1956           VLC_ADD_PLUGIN([live555])
1957           VLC_ADD_LIBS([live555], [-lliveMedia ${other_libs}])
1958         ],[],[${other_libs}]) ],[${other_libs_pic}])
1959     ],[
1960        AC_MSG_WARN([The development files for liveMedia (live555) can't be found])
1961     ])
1962     CPPFLAGS="${CPPFLAGS_save}"
1963     AC_LANG_POP(C++)
1964   else
1965     AC_MSG_CHECKING(for liveMedia/libliveMedia.a in ${with_live555_tree})
1966     real_live555_tree="`cd ${with_live555_tree} 2>/dev/null && pwd`"
1967     if test -z "${real_live555_tree}"; then
1968       dnl  The given directory can't be found
1969       AC_MSG_RESULT(no)
1970       AC_MSG_ERROR([cannot cd to ${with_live555_tree}])
1971     fi
1972     if test -f "${real_live555_tree}/liveMedia/libliveMedia.a"; then
1973       AC_MSG_RESULT(${real_live555_tree}/liveMedia/libliveMedia.a)
1974
1975       AC_CHECK_HEADERS(${real_live555_tree}/liveMedia/include/liveMedia_version.hh,[
1976         AC_MSG_CHECKING(for liveMedia version >= 1214895600 )
1977         AC_EGREP_CPP(yes,
1978           [#include "${real_live555_tree}/liveMedia/include/liveMedia_version.hh"
1979            #ifdef LIVEMEDIA_LIBRARY_VERSION_INT
1980            #if LIVEMEDIA_LIBRARY_VERSION_INT < 1214895600
1981            yes
1982            #endif
1983            #endif],
1984           [AC_MSG_RESULT([no])
1985            AC_MSG_ERROR([Your version of liveMedia is too old: you may get a more recent one from http://www.live555.com/liveMedia.
1986 lternatively you can use --disable-live555 to disable the liveMedia plugin.])
1987         ],[
1988            AC_MSG_RESULT([yes])
1989            ])
1990       ])
1991
1992       VLC_ADD_PLUGIN([live555])
1993
1994       if test "${SYS}" = "mingw32"; then
1995         # add ws2_32 for closesocket, select, recv
1996         VLC_ADD_LIBS([live555],[-lws2_32])
1997       fi
1998
1999       VLC_ADD_LIBS([live555],[-L${real_live555_tree}/UsageEnvironment -lUsageEnvironment])
2000       VLC_ADD_LIBS([live555],[-L${real_live555_tree}/BasicUsageEnvironment -lBasicUsageEnvironment])
2001       VLC_ADD_LIBS([live555],[-L${real_live555_tree}/groupsock -lgroupsock])
2002       VLC_ADD_LIBS([live555],[-L${real_live555_tree}/liveMedia -lliveMedia])
2003
2004       VLC_ADD_CXXFLAGS([live555],[-I${real_live555_tree}/BasicUsageEnvironment/include])
2005       VLC_ADD_CXXFLAGS([live555],[-I${real_live555_tree}/groupsock/include])
2006       VLC_ADD_CXXFLAGS([live555],[-I${real_live555_tree}/liveMedia/include])
2007       VLC_ADD_CXXFLAGS([live555],[-I${real_live555_tree}/UsageEnvironment/include ])
2008       if test "${SYS}" = "solaris"; then
2009         VLC_ADD_CXXFLAGS([live555],[-DSOLARIS])
2010       fi
2011     else
2012       dnl  The given live555 wasn't built
2013         AC_MSG_RESULT(no)
2014       if test "${enable_live555}" = "yes"; then
2015         AC_MSG_ERROR([cannot find ${real_live555_tree}/liveMedia/libliveMedia.a, make sure you compiled live555 in ${with_live555_tree}])
2016       fi        
2017     fi
2018   fi
2019 fi
2020
2021 dnl
2022 dnl - special access module for dc1394 input
2023 dnl - dv module: digital video module check for libraw1394
2024 dnl
2025 PKG_ENABLE_MODULES_VLC([DC1394], [], [libraw1394 >= 2.0.1 libdc1394-2 >= 2.1.0], [dc1394 access module], [auto])
2026 PKG_ENABLE_MODULES_VLC([DV], [access_dv], [libraw1394 >= 2.0.1 libavc1394 >= 0.5.3], [DV input module], [auto])
2027
2028 dnl
2029 dnl dvdread module: check for libdvdread
2030 dnl
2031 AC_ARG_ENABLE(dvdread,
2032 [  --enable-dvdread        dvdread input module (default disabled)])
2033 if test "${enable_dvdread}" != "no"
2034 then
2035   AC_ARG_WITH(dvdread,
2036   [  --with-dvdread=PATH     libdvdread headers and libraries])
2037   AC_ARG_WITH(dvdread-tree,
2038   [  --with-dvdread-tree=PATH libdvdread tree for static linking])
2039
2040   dnl Temporary hack (yeah, sure ;)
2041   if test "${SYS}" = "mingw32" || test "${SYS}" = "darwin" || test "${SYS}" = "beos" ; then
2042       VLC_ADD_LIBS([dvdread],[-ldvdcss])
2043   fi
2044
2045   if test -z "${with_dvdread}"
2046   then
2047     if test -z "${with_dvdread_tree}"
2048     then
2049       AC_CHECK_HEADERS(dvdread/dvd_reader.h,
2050         [ VLC_ADD_PLUGIN([dvdread])
2051           VLC_ADD_LIBS([dvdread],[-ldvdread ${LIBS_dvdcss}])
2052         ],[
2053           AC_CHECK_HEADERS(libdvdread/dvd_reader.h,
2054             [ VLC_ADD_PLUGIN([dvdread])
2055               VLC_ADD_LIBS([dvdread],[-ldvdread ${LIBS_dvdcss}])
2056             ],[
2057               if test -n "${enable_dvdread}"
2058               then
2059               AC_MSG_ERROR([cannot find libdvdread headers])
2060              fi
2061            ])
2062         ])
2063     else
2064       AC_MSG_CHECKING(for libdvdread.a in ${with_dvdread_tree})
2065       real_dvdread_tree="`cd ${with_dvdread_tree} 2>/dev/null && pwd`"
2066       if test -z "${real_dvdread_tree}"
2067       then
2068         dnl  The given directory can't be found
2069         AC_MSG_RESULT(no)
2070         AC_MSG_ERROR([cannot cd to ${with_dvdread_tree}])
2071       fi
2072       if test -f "${real_dvdread_tree}/dvdread/.libs/libdvdread.a"
2073       then
2074         dnl  Use a custom libdvdread
2075         AC_MSG_RESULT(${real_dvdread_tree}/dvdread/.libs/libdvdread.a)
2076         VLC_ADD_PLUGIN([dvdread])
2077         VLC_ADD_LIBS([dvdread],[-L${real_dvdread_tree}/dvdread/.libs -ldvdread ${LIBS_dvdcss}])
2078         VLC_ADD_CPPFLAGS([dvdread],[-I${real_dvdread_tree}])
2079       else
2080         dnl  The given libdvdread wasn't built
2081         AC_MSG_RESULT(no)
2082         AC_MSG_ERROR([cannot find ${real_dvdread_tree}/dvdread/.libs/libdvdread.a, make sure you compiled libdvdread in ${with_dvdread_tree}])
2083       fi
2084     fi
2085   else
2086     AC_MSG_CHECKING(for dvdread headers in ${with_dvdread})
2087     if test -f ${with_dvdread}/include/dvdread/dvd_reader.h
2088     then
2089       dnl  Use ${with_dvdread}/include/dvdread/dvd_reader.h
2090       AC_MSG_RESULT(yes)
2091       VLC_ADD_PLUGIN([dvdread])
2092       VLC_ADD_LIBS([dvdread],[-L${with_dvdread}/lib -ldvdread ${LIBS_dvdcss}])
2093       VLC_ADD_CPPFLAGS([dvdread],[-I${with_dvdread}/include])
2094     else
2095       dnl  No libdvdread could be found, sorry
2096       AC_MSG_RESULT(no)
2097       AC_MSG_ERROR([cannot find ${with_dvdread}/include/dvdread/dvd_reader.h])
2098     fi
2099   fi
2100 fi
2101
2102 dnl
2103 dnl  libdvdnav plugin
2104 dnl
2105 AC_ARG_ENABLE(dvdnav,
2106   [  --enable-dvdnav         dvdnav input module (default enabled)])
2107 if test "${enable_dvdnav}" != "no"
2108 then
2109   dnl Same hack than dvdread
2110   if test "${SYS}" = "mingw32" || test "${SYS}" = "darwin" || test "${SYS}" = "beos" ; then
2111       VLC_ADD_LIBS([dvdnav],[-ldvdcss])
2112   fi
2113
2114   DVDNAV_PATH="${PATH}"
2115   AC_ARG_WITH(dvdnav-config-path,
2116     [  --with-dvdnav-config-path=PATH dvdnav-config path (default search in \$PATH)],
2117     [ if test "${with_dvdnav_config_path}" != "no"
2118       then
2119         DVDNAV_PATH="${with_dvdnav_config_path}:${PATH}"
2120       fi ])
2121   AC_PATH_PROG(DVDNAV_CONFIG, dvdnav-config, no, ${DVDNAV_PATH})
2122   if test "${DVDNAV_CONFIG}" != "no"
2123   then
2124     VLC_ADD_PLUGIN([dvdnav])
2125     VLC_ADD_CFLAGS([dvdnav],[`${DVDNAV_CONFIG} --cflags`])
2126     VLC_ADD_LIBS([dvdnav],[`${DVDNAV_CONFIG} --libs`])
2127   fi
2128 fi
2129
2130 dnl
2131 dnl  Windows DirectShow access module
2132 dnl
2133 AC_ARG_ENABLE(dshow,
2134   [  --enable-dshow          Win32 DirectShow support (default enabled on Win32)])
2135 if test "${enable_dshow}" != "no"
2136 then
2137   if test "${SYS}" = "mingw32"
2138   then
2139     AC_LANG_PUSH(C++)
2140       AC_CHECK_HEADERS(dshow.h,
2141       [ VLC_ADD_PLUGIN([dshow])
2142         VLC_ADD_CXXFLAGS([dshow],[])
2143         VLC_ADD_LIBS([dshow],[-lole32 -loleaut32 -luuid]) ])
2144     AC_LANG_POP(C++)
2145   fi
2146 fi
2147
2148 dnl
2149 dnl  Windows DirectShow BDA access module
2150 dnl
2151 AC_ARG_ENABLE(bda,
2152   AS_HELP_STRING([--enable-bda],[Win32 DirectShow BDA support (default
2153                   enabled on Win32)]))
2154 if test "${enable_bda}" != "no"
2155 then
2156   if test "${SYS}" = "mingw32"
2157   then
2158       AC_CHECK_HEADERS(dshow.h,
2159       [ VLC_ADD_PLUGIN([bda])
2160         VLC_ADD_CXXFLAGS([bda],[])
2161         VLC_ADD_LIBS([bda],[-lstrmiids -lole32 -loleaut32 -luuid]) ])
2162   fi
2163 fi
2164
2165
2166 dnl
2167 dnl  OpenCV wrapper and example filters
2168 dnl
2169 AC_ARG_ENABLE(opencv,
2170   [  --enable-opencv         OpenCV (computer vision) filter (default disabled)])
2171 if test "${enable_opencv}" = "yes" -a "${CXX}" != "";
2172 then
2173   AC_ARG_WITH(opencv-tree,
2174   [  --with-opencv-tree=PATH opencv tree for linking])
2175     if test "${SYS}" = "mingw32"
2176     then
2177       test -z "${with_opencv_tree}" && AC_MSG_ERROR([You have to specify --with-opencv-tree])
2178       AC_MSG_CHECKING(for opencv in ${with_opencv_tree})
2179       if test -f ${with_opencv_tree}/cv/include/cv.h -a -f ${with_opencv_tree}/cxcore/include/cxcore.h \
2180         -a -f ${with_opencv_tree}/cvaux/include/cvaux.h -a -f ${with_opencv_tree}/otherlibs/highgui/highgui.h
2181       then
2182         AC_MSG_RESULT(yes)
2183         VLC_ADD_PLUGIN([opencv_wrapper])
2184         VLC_ADD_LIBS([opencv_wrapper],[-L${with_opencv_tree}/lib -lcv -lcxcore -lcvaux -lhighgui])
2185         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])
2186         AC_LANG_PUSH(C++)
2187         VLC_ADD_PLUGIN([opencv_example])
2188         VLC_ADD_LIBS([opencv_example],[-L${with_opencv_tree}/lib -lcv -lcxcore -lcvaux -lhighgui])
2189         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])
2190         AC_LANG_POP(C++)
2191       else
2192         dnl  No opencv could be found, sorry
2193         AC_MSG_RESULT(no)
2194         AC_MSG_ERROR([cannot find opencv in ${with_opencv_tree}])
2195       fi
2196     else
2197       PKG_CHECK_MODULES(OPENCV, opencv,
2198         [
2199           VLC_ADD_PLUGIN([opencv_example])
2200           VLC_ADD_PLUGIN([opencv_wrapper])
2201           VLC_ADD_LIBS([opencv_example opencv_wrapper],[${OPENCV_LIBS}])
2202           VLC_ADD_CFLAGS([opencv_wrapper],[${OPENCV_CFLAGS}])
2203           VLC_ADD_CXXFLAGS([opencv_example],[${OPENCV_CFLAGS}])
2204         ],
2205         [AC_MSG_ERROR([libopencv not found!])]
2206       )
2207     fi
2208 fi
2209
2210
2211 dnl
2212 dnl  libsmbclient plugin
2213 dnl
2214 AC_ARG_ENABLE(smb,
2215   [  --enable-smb            smb input module (default enabled)])
2216 if test "${enable_smb}" != "no"; then
2217   AC_CHECK_HEADERS(libsmbclient.h,
2218     [ VLC_ADD_PLUGIN([access_smb])
2219       VLC_ADD_LIBS([access_smb],[-lsmbclient]) ],
2220     [ if test -n "${enable_smb}"; then
2221         AC_MSG_ERROR([cannot find libsmbclient headers])
2222      fi ])
2223 fi
2224
2225
2226 dnl
2227 dnl sftp access support
2228 dnl
2229 AC_ARG_ENABLE(sftp,
2230   [  --enable-sftp           sftp input access module (default disable)])
2231 if test "${enable_sftp}" = "yes"; then
2232   AC_CHECK_HEADERS(libssh2.h, [
2233     VLC_ADD_PLUGIN([access_sftp])
2234     VLC_ADD_LIBS([access_sftp], [-lssh2])
2235   ])
2236 fi
2237
2238 dnl
2239 dnl  libdvbpsi ts demux/mux
2240 dnl
2241 AC_ARG_ENABLE(dvbpsi,
2242   [  --enable-dvbpsi         dvbpsi ts mux and demux module (default enabled)])
2243 have_dvbpsi=no
2244 if test "${enable_dvbpsi}" != "no"
2245 then
2246   AC_ARG_WITH(dvbpsi,
2247   [  --with-dvbpsi=PATH      libdvbpsi headers and libraries])
2248   AC_ARG_WITH(dvbpsi,
2249   [  --with-dvbpsi-tree=PATH libdvbpsi tree for static linking])
2250   case "${with_dvbpsi}" in
2251   ""|yes)
2252     if test -z "${with_dvbpsi_tree}"
2253     then
2254       AC_CHECK_HEADERS(dvbpsi/dr.h,
2255         [ VLC_ADD_PLUGIN([ts])
2256           if test "${enable_sout}" != "no"; then
2257             VLC_ADD_PLUGIN([mux_ts])
2258           fi
2259           VLC_ADD_LIBS([mux_ts ts dvb],[-ldvbpsi])
2260           have_dvbpsi=yes],
2261         [  AC_MSG_WARN([cannot find libdvbpsi headers]) ],
2262         [#if defined( HAVE_STDINT_H )
2263 #   include <stdint.h>
2264 #elif defined( HAVE_INTTYPES_H )
2265 #   include <inttypes.h>
2266 #endif
2267 #include <dvbpsi/dvbpsi.h>
2268 #include <dvbpsi/descriptor.h>
2269 #include <dvbpsi/pat.h>
2270 #include <dvbpsi/pmt.h>])
2271     else
2272       AC_MSG_CHECKING(for libdvbpsi.a in ${with_dvbpsi_tree})
2273       real_dvbpsi_tree="`cd ${with_dvbpsi_tree} 2>/dev/null && pwd`"
2274       if test -z "${real_dvbpsi_tree}"
2275       then
2276         dnl  The given directory can't be found
2277         AC_MSG_RESULT(no)
2278         AC_MSG_ERROR([cannot cd to ${with_dvbpsi_tree}])
2279       fi
2280       if test -f "${real_dvbpsi_tree}/src/.libs/libdvbpsi.a"
2281       then
2282         dnl  Use a custom libdvbpsi
2283         AC_MSG_RESULT(${real_dvbpsi_tree}/src/.libs/libdvbpsi.a)
2284         VLC_ADD_PLUGIN([ts])
2285         if test "${enable_sout}" != "no"; then
2286           VLC_ADD_PLUGIN([mux_ts])
2287         fi
2288         VLC_ADD_CPPFLAGS([mux_ts ts dvb],[-I${real_dvbpsi_tree}/src])
2289         VLC_ADD_LIBS([mux_ts ts dvb],[${real_dvbpsi_tree}/src/.libs/libdvbpsi.a])
2290         have_dvbpsi=yes
2291       else
2292         dnl  The given libdvbpsi wasn't built
2293         AC_MSG_RESULT(no)
2294         AC_MSG_ERROR([cannot find ${real_dvbpsi_tree}/src/.libs/libdvbpsi.a, make sure you compiled libdvbpsi in ${with_dvbpsi_tree}])
2295       fi
2296     fi
2297   ;;
2298   no)
2299     dnl  Compile without dvbpsi
2300   ;;
2301   *)
2302     AC_MSG_CHECKING(for dvbpsi headers in ${with_dvbpsi})
2303     if test -z "${with_dvbpsi}"
2304     then
2305       LDFLAGS_test=""
2306       CPPFLAGS_test=""
2307     else
2308       LDFLAGS_test="-L${with_dvbpsi}/lib"
2309       CPPFLAGS_test="-I${with_dvbpsi}/include"
2310     fi
2311     CPPFLAGS="${CPPFLAGS_save} ${CPPFLAGS_test}"
2312     AC_CHECK_HEADERS([dvbpsi/dr.h],[
2313       VLC_ADD_PLUGIN([ts])
2314       if test "${enable_sout}" != "no"; then
2315         AC_CHECK_LIB(dvbpsi, dvbpsi_SDTServiceAddDescriptor,
2316            [VLC_ADD_PLUGIN([mux_ts])], [], [${LDFLAGS_test} -ldvbpsi])
2317       fi
2318       VLC_ADD_CPPFLAGS([mux_ts ts dvb],[${CPPFLAGS_test}])
2319       VLC_ADD_LIBS([mux_ts ts dvb],[${LDFLAGS_test} -ldvbpsi])
2320       have_dvbpsi=yes
2321     ],[
2322       if test -n "${enable_dvbpsi}"
2323       then
2324         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.6])
2325       fi
2326     ],
2327     [#if defined( HAVE_STDINT_H )
2328 #   include <stdint.h>
2329 #elif defined( HAVE_INTTYPES_H )
2330 #   include <inttypes.h>
2331 #endif
2332 #include <dvbpsi/dvbpsi.h>
2333 #include <dvbpsi/descriptor.h>
2334 #include <dvbpsi/pat.h>
2335 #include <dvbpsi/pmt.h>])
2336     CPPFLAGS="${CPPFLAGS_save}"
2337   ;;
2338   esac
2339   AC_CHECK_LIB(dvbpsi, dvbpsi_GenSDTSections, [
2340     AC_DEFINE(HAVE_DVBPSI_SDT, 1, [Define if you have dvbpsi_GenSDTSections.])
2341   ], [], [${LIBS_ts}])
2342
2343 fi
2344
2345 dnl
2346 dnl  Video4Linux plugin
2347 dnl
2348 AC_ARG_ENABLE(v4l,
2349   [  --enable-v4l            Video4Linux input support (default disabled)])
2350 if test "${enable_v4l}" = "yes"
2351 then
2352   AC_ARG_WITH(v4l,
2353     [  --with-v4l=PATH         path to a v4l-enabled kernel tree],[],[])
2354   if test "${with_v4l}" != "no" -a -n "${with_v4l}"
2355   then
2356     VLC_ADD_CPPFLAGS([v4l],[-I${with_v4l}/include])
2357   fi
2358
2359   CPPFLAGS="${CPPFLAGS_save} ${CPPFLAGS_v4l}"
2360   AC_CHECK_HEADERS(linux/videodev.h, [
2361     VLC_ADD_PLUGIN([v4l])
2362   ],[])
2363   CPPFLAGS="${CPPFLAGS_save}"
2364 fi
2365
2366 dnl
2367 dnl libv4l1 support for video4linux.
2368 dnl
2369 AC_ARG_ENABLE( libv4l,
2370   [  --enable-libv4l         Libv4l Video4Linux support (default enabled)])
2371 if test "${enable_libv4l}" != "no" -a "${enable_v4l}" != "no"
2372 then
2373     PKG_CHECK_MODULES( LIBV4L, libv4l1, [
2374       VLC_ADD_LDFLAGS([v4l],[${LIBV4L_LIBS}])
2375       VLC_ADD_CFLAGS([v4l],[${LIBV4L_CFLAGS}])
2376       AC_DEFINE(HAVE_LIBV4L1, 1, Define if libv4l is available)],
2377       AC_MSG_WARN([LibV4L support disabled because libv4l development headers were not found])
2378     )
2379 fi
2380
2381 dnl
2382 dnl  Video4Linux2 plugin
2383 dnl
2384 AC_ARG_ENABLE(v4l2,
2385   [  --enable-v4l2           Video4Linux2 input support (default enabled)])
2386 if test "${enable_v4l2}" != "no"
2387 then
2388   AC_ARG_WITH(v4l2,
2389     [  --with-v4l2=PATH        path to a v4l2-enabled kernel tree],[],[])
2390   if test "${with_v4l2}" != "no" -a -n "${with_v4l2}"
2391   then
2392     VLC_ADD_CPPFLAGS([v4l2],[-I${with_v4l2}/include])
2393   fi
2394
2395   CPPFLAGS="${CPPFLAGS_save} ${CPPFLAGS_v4l2}"
2396   AC_CHECK_HEADERS(linux/videodev2.h, [
2397     VLC_ADD_PLUGIN([v4l2])
2398   ],[])
2399   CPPFLAGS="${CPPFLAGS_save}"
2400 fi
2401
2402 dnl
2403 dnl libv4l2 support for video4linux.
2404 dnl
2405 AC_ARG_ENABLE( libv4l2,
2406   [  --enable-libv4l2        Libv4l2 Video4Linux2 support (default enabled)])
2407 if test "${enable_libv4l2}" != "no" -a "${enable_v4l2}" != "no"
2408 then
2409     PKG_CHECK_MODULES( LIBV4L2, libv4l2, [
2410       VLC_ADD_LDFLAGS([v4l2],[${LIBV4L2_LIBS}])
2411       VLC_ADD_CFLAGS([v4l2],[${LIBV4L2_CFLAGS}])
2412       AC_DEFINE(HAVE_LIBV4L2, 1, Define if libv4l2 is available)],
2413       AC_MSG_WARN([LibV4L2 support disabled because libv4l2 development headers were not found])
2414     )
2415 fi
2416
2417 dnl
2418 dnl  special access module for Hauppauge PVR cards
2419 dnl
2420 AC_ARG_ENABLE(pvr,
2421   [  --enable-pvr            PVR cards access module (default disabled)])
2422 if test "${enable_pvr}" = "yes"
2423 then
2424   VLC_ADD_PLUGIN([pvr])
2425   AC_ARG_WITH(videodev2,
2426     [  --with-videodev2=FILE   Location of videodev2.h file (default /usr/include/linux/videodev2.h)],[],[])
2427   if test "${with_videodev2}" != "no" -a -n "${with_videodev2}"
2428   then
2429     AC_DEFINE_UNQUOTED(VIDEODEV2_H_FILE, "${with_videodev2}", [Location of videodev2.h])
2430   fi
2431
2432   AC_CACHE_CHECK([for new linux/videodev2.h],
2433       [ac_cv_new_linux_videodev2_h],
2434       [AC_TRY_COMPILE([
2435           #include <sys/types.h>
2436           #   ifdef VIDEODEV2_H_FILE
2437           #   include VIDEODEV2_H_FILE
2438           #   else
2439           #   include <linux/videodev2.h>
2440           #   endif
2441           ],
2442           [struct v4l2_ext_controls ctrls; ctrls.ctrl_class = V4L2_CTRL_CLASS_MPEG; ],
2443           ac_cv_new_linux_videodev2_h=yes,
2444           ac_cv_new_linux_videodev2_h=no)])
2445   if test "${ac_cv_new_linux_videodev2_h}" != "no"; then
2446     AC_DEFINE(HAVE_NEW_LINUX_VIDEODEV2_H, 1, [Define if new linux/videodev2.h present])
2447   fi
2448 fi
2449
2450 dnl
2451 dnl  gnomeVFS access module
2452 dnl
2453 PKG_ENABLE_MODULES_VLC([GNOMEVFS], [access_gnomevfs], [gnome-vfs-2.0], [GnomeVFS access module], [auto])
2454
2455
2456 dnl Need to test libcdio and libvcdinfo for a number of things. Do it now.
2457 AC_ARG_ENABLE(libcdio,
2458   [  --enable-libcdio        CD input and control library support (default enabled)])
2459
2460 AC_ARG_ENABLE(libvcdinfo,
2461   [  --enable-libvcdinfo     VCD information library support (default enabled)])
2462
2463 have_libcdio=no
2464 have_libvcdinfo=no
2465 if test "${enable_libcdio}" != "no"
2466 then
2467   PKG_CHECK_MODULES(LIBCDIO, libcdio >= 0.78.2,
2468      have_libcdio=yes
2469      AC_DEFINE(HAVE_LIBCDIO, 1,
2470      [Define if you have libcdio 0.78.2 or greater installed]),
2471      [AC_MSG_WARN(CD Reading and information library not found)])
2472
2473   if test "${enable_libvcdinfo}" != "no"
2474   then
2475     PKG_CHECK_MODULES(LIBVCDINFO, libvcdinfo >= 0.7.22,
2476        [have_libvcdinfo=yes],
2477        [AC_MSG_WARN(VCD information library not found)])
2478   fi
2479 fi
2480
2481 dnl
2482 dnl  VCDX modules
2483 dnl
2484 AC_ARG_ENABLE(vcdx,
2485   [  --enable-vcdx           VCD with navigation via libvcdinfo (default disabled)])
2486
2487 if test "${enable_vcdx}" = "yes"
2488 then
2489   if test "${have_libvcdinfo}" = "yes"
2490   then
2491     VLC_ADD_LIBS([vcdx],[$LIBVCDINFO_LIBS])
2492     VLC_ADD_CFLAGS([vcdx],[$LIBVCDINFO_CFLAGS])
2493   else
2494     AC_MSG_WARN([vcdx plugin disabled because ok libvcdinfo library not found or disabled])
2495     HAVE_VCDX=no
2496   fi
2497
2498   PKG_CHECK_MODULES(LIBCDIO, libiso9660 >= 0.72,
2499    [VLC_ADD_LIBS([vcdx],[$LIBISO9660_LIBS])
2500     VLC_ADD_CFLAGS([vcdx],[$LIBISO9660_CFLAGS])],
2501     [AC_MSG_WARN([vcdx plugin disabled because ok libiso9660 library not found])
2502     HAVE_VCDX=no])
2503
2504   if test "$have_libvcdinfo" = "yes"
2505   then
2506     AC_DEFINE(HAVE_VCDX, 1,
2507     [Define for the VCD plugin using libcdio/libvcdinfo])
2508     VLC_ADD_LIBS([vcdx],[$LIBVCDINFO_LIBS])
2509     VLC_ADD_CFLAGS([vcdx],[$LIBVCDINFO_CFLAGS])
2510     VLC_ADD_PLUGIN([vcdx])
2511   else
2512     AC_MSG_WARN([vcdx plugin disabled because ok libvcdinfo library not found])
2513     HAVE_VCDX=no
2514   fi
2515 fi
2516
2517 dnl
2518 dnl  Built-in CD-DA and VCD module
2519 dnl
2520 AC_ARG_ENABLE(cdda,
2521   [  --enable-cdda           audio CD via built-in VCD (default enabled)])
2522
2523 AC_ARG_ENABLE(vcd,
2524   [  --enable-vcd            built-in VCD (default enabled)])
2525
2526 AC_ARG_ENABLE(libcddb,
2527   [  --enable-libcddb        CDDB support for libcdio audio CD (default enabled)])
2528
2529 if test "${enable_vcd}" != "no"
2530 then
2531   AC_MSG_CHECKING(for cdrom_msf0 in linux/cdrom.h)
2532   AC_EGREP_HEADER(cdrom_msf0,linux/cdrom.h,[
2533     AC_MSG_RESULT(yes)
2534     VLC_ADD_PLUGIN([vcd])
2535     VLC_ADD_PLUGIN([cdda])
2536   ],[
2537     AC_MSG_RESULT(no)
2538   ])
2539
2540   AC_MSG_CHECKING(for scsireq in sys/scsiio.h)
2541   AC_EGREP_HEADER(scsireq,sys/scsiio.h,[
2542     AC_MSG_RESULT(yes)
2543     VLC_ADD_PLUGIN([vcd])
2544     VLC_ADD_PLUGIN([cdda])
2545     AC_DEFINE(HAVE_SCSIREQ_IN_SYS_SCSIIO_H, 1, For NetBSD VCD support)
2546   ],[
2547     AC_MSG_RESULT(no)
2548   ])
2549
2550   AC_MSG_CHECKING(for ioc_toc_header in sys/cdio.h)
2551   AC_EGREP_HEADER(ioc_toc_header ,sys/cdio.h,[
2552     AC_MSG_RESULT(yes)
2553     VLC_ADD_PLUGIN([vcd])
2554     VLC_ADD_PLUGIN([cdda])
2555     AC_DEFINE(HAVE_IOC_TOC_HEADER_IN_SYS_CDIO_H, 1, For FreeBSD VCD support)
2556   ],[
2557     AC_MSG_RESULT(no)
2558   ])
2559
2560   if test "${SYS}" = "bsdi" -o "${SYS}" = "mingw32"
2561   then
2562     VLC_ADD_PLUGIN([vcd])
2563     VLC_ADD_PLUGIN([cdda])
2564   fi
2565
2566   if test "${SYS}" = "darwin"
2567   then
2568     VLC_ADD_PLUGIN([vcd])
2569     VLC_ADD_PLUGIN([cdda])
2570     VLC_ADD_LDFLAGS([vcd vcdx cdda],[-Wl,-framework,IOKit,-framework,CoreFoundation])
2571     VLC_ADD_LIBS([vcdx cdda],[-liconv])
2572   fi
2573
2574   if test "$enable_libcddb" != "no"; then
2575     PKG_CHECK_MODULES(LIBCDDB, libcddb >= 0.9.5, [
2576       HAVE_LIBCDDB=yes
2577       AC_DEFINE(HAVE_LIBCDDB, 1, [Define this if you have libcddb installed])
2578       VLC_ADD_LIBS([cdda],[$LIBCDDB_LIBS])
2579       VLC_ADD_CFLAGS([cdda],[$LIBCDDB_CFLAGS])
2580       ],:
2581       [AC_MSG_WARN(new enough libcddb not found. CDDB access disabled)
2582       HAVE_LIBCDDB=no])
2583   fi
2584 fi
2585
2586 dnl
2587 dnl  DVB-S/DVB-T/DVB-C satellite/teresterial/cable input using v4l2
2588 dnl
2589 AC_ARG_ENABLE(dvb,
2590   [  --enable-dvb            DVB-S/T/C card support (default enabled)])
2591
2592 if test "${enable_dvb}" != "no"
2593 then
2594     AS_IF([test "${have_dvbpsi}" = "yes" ],[
2595     AC_ARG_WITH(dvb,
2596      [  --with-dvb=PATH         path to a dvb- and v4l2-enabled kernel tree],[],[])
2597      if test "${with_dvb}" != "no" -a -n "${with_dvb}"
2598      then
2599        VLC_ADD_CFLAGS([dvb],[-I${with_dvb}/include])
2600      fi
2601      CPPFLAGS="${CPPFLAGS_save} -I${with_dvb}/include"
2602      AC_CHECK_HEADERS(linux/dvb/version.h linux/dvb/frontend.h, [
2603      VLC_ADD_PLUGIN([dvb])
2604      ],[AC_MSG_WARN(linux-dvb headers not found, dvb disabled)])
2605      CPPFLAGS="${CPPFLAGS_save}"
2606    ],[
2607      AC_MSG_WARN([the dvb access module requires libdvbpsi])
2608     ])
2609 fi
2610
2611 dnl
2612 dnl  Screen capture module
2613 dnl
2614 AC_ARG_ENABLE(screen,
2615   [  --enable-screen         Screen capture support (default enabled)])
2616 if test "${enable_screen}" != "no"; then
2617   if test "${SYS}" = "darwin"; then
2618     AC_CHECK_HEADERS(OpenGL/gl.h, [
2619       AC_CHECK_HEADERS(ApplicationServices/ApplicationServices.h, [
2620         VLC_ADD_PLUGIN([screen])
2621         VLC_ADD_LDFLAGS([screen],[-Wl,-framework,OpenGL,-framework,ApplicationServices])
2622       ])
2623     ])
2624   elif test "${SYS}" = "mingw32"; then
2625     VLC_ADD_PLUGIN([screen])
2626     VLC_ADD_LIBS([screen],[-lgdi32])
2627   elif test "${SYS}" = "mingwce"; then
2628     CPPFLAGS="${CPPFLAGS_save}"
2629   elif test "${SYS}" = "beos"; then
2630     VLC_ADD_PLUGIN([screen])
2631     VLC_ADD_CXXFLAGS([screen],[])
2632     VLC_ADD_LIBS([screen],[-lbe])
2633   fi
2634 fi
2635
2636 dnl
2637 dnl  ipv6 plugin
2638 dnl
2639 have_ipv6=no
2640 AC_CHECK_FUNCS(inet_pton,[have_ipv6=yes],[
2641   AC_CHECK_LIB(nsl,inet_pton, [have_ipv6=yes])
2642 ])
2643
2644 AS_IF([test "${have_ipv6}" = "yes"], [
2645   AC_DEFINE(HAVE_INET_PTON, 1, [Define to 1 if you have inet_pton().])])
2646
2647
2648 AC_CHECK_FUNCS(inet_ntop,[
2649   AC_DEFINE(HAVE_INET_NTOP, 1, [Define to 1 if you have inet_ntop().])])
2650
2651
2652 dnl
2653 dnl  ogg demux plugin
2654 dnl
2655 PKG_ENABLE_MODULES_VLC([OGG], [], [ogg >= 1.0], [Ogg demux support], [auto])
2656 if test "${enable_sout}" != "no"; then
2657     PKG_ENABLE_MODULES_VLC([MUX_OGG], [], [ogg >= 1.0], [Ogg demux support], [auto])
2658 fi
2659
2660 if test "${enable_sout}" != "no"; then
2661 dnl Check for libshout
2662 PKG_ENABLE_MODULES_VLC([SHOUT], [access_output_shout], [shout >= 2.1], [libshout output plugin], [auto])
2663 fi
2664
2665 dnl
2666 dnl  matroska demux plugin
2667 dnl
2668 AC_ARG_ENABLE(mkv,
2669   [  --enable-mkv            Matroska demux support (default enabled)])
2670 if test "${enable_mkv}" != "no" -a "${CXX}" != ""; then
2671   AC_LANG_PUSH(C++)
2672   AC_CHECK_HEADERS(ebml/EbmlVersion.h, [
2673     AC_MSG_CHECKING(for libebml version >= 0.7.7)
2674     AC_EGREP_CPP(yes,
2675       [#include <ebml/EbmlVersion.h>
2676        #ifdef LIBEBML_VERSION
2677        #if LIBEBML_VERSION >= 0x000706
2678        yes
2679        #endif
2680        #endif],
2681       [AC_MSG_RESULT([yes])
2682         AC_CHECK_HEADERS(matroska/KaxVersion.h, [
2683           AC_MSG_CHECKING(for libmatroska version >= 0.8.0)
2684           AC_EGREP_CPP(yes,
2685             [#include <matroska/KaxVersion.h>
2686              #ifdef LIBMATROSKA_VERSION
2687              #if LIBMATROSKA_VERSION >= 0x000705
2688              yes
2689              #endif
2690              #endif],
2691             [AC_MSG_RESULT([yes])
2692               AC_CHECK_HEADERS(matroska/KaxAttachments.h)
2693               VLC_ADD_CXXFLAGS([mkv],[])
2694               if test "${SYS}" = "darwin"; then
2695                 VLC_ADD_CXXFLAGS([mkv],[-O1])
2696               fi
2697               AC_CHECK_LIB(ebml_pic, main, [
2698                 VLC_ADD_PLUGIN([mkv])
2699                 VLC_ADD_LIBS([mkv],[-lmatroska -lebml_pic])
2700               ],
2701                 AC_CHECK_LIB(ebml, main, [
2702                   VLC_ADD_PLUGIN([mkv])
2703                   VLC_ADD_LIBS([mkv],[-lmatroska -lebml])
2704                 ])
2705               )
2706             ],
2707             [AC_MSG_RESULT([no])
2708               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.])
2709           ])
2710         ])
2711       ],
2712       [AC_MSG_RESULT([no])
2713         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.])
2714     ])
2715   ])
2716   AC_LANG_POP(C++)
2717 fi
2718
2719 dnl
2720 dnl  modplug demux plugin
2721 dnl
2722 AC_ARG_ENABLE(mod,
2723   [  --enable-mod            Mod demux support (default enabled)])
2724 if test "${enable_mod}" != "no"
2725 then
2726   AC_ARG_WITH(mod-tree,
2727   [  --with-mod-tree=PATH    mod tree for static linking])
2728   if test -n "${with_mod_tree}"
2729   then
2730     AC_MSG_CHECKING(for libmodplug.a in ${with_mod_tree})
2731     real_mod_tree="`cd ${with_mod_tree} 2>/dev/null && pwd`"
2732     if test -z "${real_mod_tree}"
2733     then
2734       dnl  The given directory can't be found
2735       AC_MSG_RESULT(no)
2736       AC_MSG_ERROR([cannot cd to ${with_mod_tree}])
2737     fi
2738     if test -f "${real_mod_tree}/src/.libs/libmodplug.a"
2739     then
2740       dnl  Use a custom mod
2741       AC_MSG_RESULT(${real_mod_tree}/src/.libs/libmodplug.a)
2742       VLC_ADD_PLUGIN([mod])
2743       VLC_ADD_LIBS([mod],[${real_mod_tree}/src/.libs/libmodplug.a -lstdc++])
2744       VLC_ADD_CXXFLAGS([mod],[-I${real_mod_tree}/include])
2745     else
2746       dnl  The given mod wasn't built
2747       AC_MSG_RESULT(no)
2748       AC_MSG_ERROR([cannot find ${real_mod_tree}/src/.libs/libmodplug.a, make sure you compiled mod in ${with_mod_tree}])
2749     fi
2750   else
2751     PKG_CHECK_MODULES(LIBMODPLUG, libmodplug >= 0.8,
2752         [ VLC_ADD_PLUGIN([mod])
2753           VLC_ADD_CXXFLAGS([mod],[$LIBMODPLUG_CFLAGS])
2754           VLC_ADD_LIBS([mod],[$LIBMODPLUG_LIBS])
2755         ],[AC_MSG_WARN([libmodplug not found!])])
2756   fi
2757 fi
2758
2759 dnl
2760 dnl  mpc demux plugin
2761 dnl
2762 AC_ARG_ENABLE(mpc,
2763   [  --enable-mpc            Mpc demux support (default enabled)])
2764 if test "${enable_mpc}" != "no"
2765 then
2766   AC_CHECK_HEADERS([mpc/mpcdec.h], [
2767     VLC_ADD_PLUGIN([mpc])
2768     VLC_ADD_LIBS([mpc],[-lmpcdec])],
2769     [AC_CHECK_HEADERS([mpcdec/mpcdec.h], [
2770     VLC_ADD_PLUGIN([mpc])
2771     VLC_ADD_LIBS([mpc],[-lmpcdec])])])
2772 fi
2773
2774 dnl
2775 dnl  game music emu demux plugin
2776 dnl
2777 AC_ARG_ENABLE(gme,
2778   [  --enable-gme            Game Music Emu demux support (default enabled)])
2779 if test "${enable_gme}" != "no" -a "${CXX}" != "";
2780 then
2781   AC_LANG_PUSH(C++)
2782   AC_ARG_WITH(gme-tree,
2783   [  --with-gme-tree=PATH    gme tree for static linking])
2784   if test -n "${with_gme_tree}"
2785   then
2786     AC_MSG_CHECKING(for libgme.a in ${with_mod_tree})
2787     real_gme_tree="`cd ${with_gme_tree} 2>/dev/null && pwd`"
2788     if test -z "${real_gme_tree}"
2789     then
2790       dnl  The given directory can't be found
2791       AC_MSG_RESULT(no)
2792       AC_MSG_ERROR([cannot cd to ${with_gme_tree}])
2793     fi
2794     if test -f "${real_gme_tree}/gme/libgme.a"
2795     then
2796       dnl  Use a custom gme
2797       AC_MSG_RESULT(${real_gme_tree}/gme/libgme.a)
2798       VLC_ADD_PLUGIN([gme])
2799       VLC_ADD_LIBS([gme],[${real_gme_tree}/gme/libgme.a])
2800       VLC_ADD_CXXFLAGS([gme],[-I${real_gme_tree}/gme])
2801     else
2802       dnl  The given gme wasn't built
2803       AC_MSG_RESULT(no)
2804       AC_MSG_ERROR([cannot find ${real_mod_tree}/gme/libgme.a, make sure you compiled gme in ${with_gme_tree}])
2805     fi
2806   else
2807       AC_MSG_WARN([only static linking is available, you must provide a gme-tree])
2808   fi
2809   AC_LANG_POP(C++)
2810 fi
2811
2812 dnl
2813 dnl  Codec plugins
2814 dnl
2815
2816 AC_ARG_WITH(,[Codec plugins:])
2817
2818 dnl
2819 dnl wmafixed plugin
2820 dnl
2821 AC_ARG_ENABLE(wma-fixed,
2822   [  --enable-wma-fixed      libwma-fixed module (default disabled)])
2823 if test "${enable_wma_fixed}" = "yes"
2824 then
2825   VLC_ADD_PLUGIN([wma_fixed])
2826 fi
2827
2828 dnl
2829 dnl shine fixed point mp3 encoder
2830 dnl
2831 AC_ARG_ENABLE(shine,
2832   [  --enable-shine          shine mp3 encoding module (default disabled)])
2833 if test "${enable_shine}" = "yes"
2834 then
2835   VLC_ADD_PLUGIN([shine])
2836 fi
2837
2838 dnl
2839 dnl  mad plugin
2840 dnl
2841 AC_ARG_ENABLE(mad,
2842   [  --enable-mad            libmad module (default enabled)])
2843 if test "${enable_mad}" != "no"
2844 then
2845   AC_ARG_WITH(mad,
2846     [  --with-mad=PATH         path to libmad],[],[])
2847   if test "${with_mad}" != "no" -a -n "${with_mad}"
2848   then
2849     VLC_ADD_CPPFLAGS([mpgatofixed32],[-I${with_mad}/include])
2850     VLC_ADD_LIBS([mpgatofixed32],[-L${with_mad}/lib])
2851   fi
2852
2853   AC_ARG_WITH(mad-tree,
2854     [  --with-mad-tree=PATH    mad tree for static linking],[],[])
2855   if test "${with_mad_tree}" != "no" -a -n "${with_mad_tree}"
2856   then
2857     real_mad_tree="`cd ${with_mad_tree} 2>/dev/null && pwd`"
2858     if test -z "${real_mad_tree}"
2859     then
2860       dnl  The given directory can't be found
2861       AC_MSG_RESULT(no)
2862       AC_MSG_ERROR([${with_mad_tree} directory doesn't exist])
2863     fi
2864     dnl  Use a custom libmad
2865     AC_MSG_CHECKING(for mad.h in ${real_mad_tree})
2866     if test -f ${real_mad_tree}/mad.h
2867     then
2868       AC_MSG_RESULT(yes)
2869       VLC_ADD_CPPFLAGS([mpgatofixed32],[-I${real_mad_tree}])
2870       VLC_ADD_LIBS([mpgatofixed32],[-L${real_mad_tree}/.libs])
2871       LDFLAGS="${LDFLAGS_save} ${LIBS_mpgatofixed32}"
2872       AC_CHECK_LIB(mad, mad_bit_init, [
2873         VLC_ADD_PLUGIN([mpgatofixed32])
2874         VLC_ADD_LIBS([mpgatofixed32],[-lmad])
2875         ],[ AC_MSG_ERROR([the specified tree hasn't been compiled ])
2876       ],[])
2877       LDFLAGS="${LDFLAGS_save}"
2878     else
2879       AC_MSG_RESULT(no)
2880       AC_MSG_ERROR([the specified tree doesn't have mad.h])
2881     fi
2882   else
2883     CPPFLAGS="${CPPFLAGS_save} ${CPPFLAGS_mpgatofixed32}"
2884     LDFLAGS="${LDFLAGS_save} ${LIBS_mpgatofixed32}"
2885     AC_CHECK_HEADERS(mad.h, ,
2886       [ 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.]) ])
2887     AC_CHECK_LIB(mad, mad_bit_init, [
2888       VLC_ADD_PLUGIN([mpgatofixed32])
2889       VLC_ADD_LIBS([mpgatofixed32],[-lmad])],
2890       [ AC_MSG_ERROR([Cannot find libmad library...]) ])
2891     CPPFLAGS="${CPPFLAGS_save}"
2892     LDFLAGS="${LDFLAGS_save}"
2893   fi
2894 fi
2895
2896 dnl
2897 dnl   libid3tag support (FIXME!!! doesn't work with new input)
2898 dnl
2899 AC_ARG_ENABLE( id3tag,
2900 [  --disable-id3tag        id3tag metadata reader plugin (default disabled)])
2901 AS_IF([test "${enable_id3tag}" = "yes"], [
2902   AC_CHECK_HEADERS(id3tag.h, [
2903       AS_IF([test "${have_zlib}" = "yes"],[
2904           VLC_ADD_LIBS([id3tag],[-lid3tag -lz])
2905           VLC_ADD_PLUGIN([id3tag])
2906        ])
2907     ])
2908 ])
2909
2910 AC_ARG_ENABLE(merge-ffmpeg,
2911 [  --enable-merge-ffmpeg   merge FFmpeg-based plugins (default disabled)],, [
2912   enable_merge_ffmpeg="no"
2913 ])
2914 AM_CONDITIONAL([MERGE_FFMPEG], [test "$enable_merge_ffmpeg" != "no"])
2915
2916 dnl
2917 dnl  avcodec decoder/encoder plugin
2918 dnl
2919
2920 if test "${with_ffmpeg_tree}"
2921 then
2922   AC_MSG_WARN([--with-ffmpeg-tree is deprecated. Use PKG_CONFIG_PATH instead.])
2923 fi
2924
2925 AC_ARG_ENABLE(avcodec,
2926 [  --enable-avcodec        libavcodec codec (default enabled)])
2927 if test "${enable_avcodec}" != "no"
2928 then
2929   PKG_CHECK_MODULES(AVCODEC,[libavcodec >= 51.48.0 libavutil],
2930     [
2931       VLC_SAVE_FLAGS
2932       CPPFLAGS="${CPPFLAGS} ${AVCODEC_CFLAGS}"
2933       CFLAGS="${CFLAGS} ${AVCODEC_CFLAGS}"
2934       AC_CHECK_HEADERS(libavcodec/avcodec.h ffmpeg/avcodec.h)
2935       AC_CHECK_HEADERS(libavutil/avutil.h ffmpeg/avutil.h)
2936       VLC_ADD_PLUGIN([avcodec])
2937       VLC_ADD_LIBS([avcodec],[$AVCODEC_LIBS])
2938       VLC_ADD_CFLAGS([avcodec],[$AVCODEC_CFLAGS])
2939       VLC_RESTORE_FLAGS
2940       have_avcodec="yes"
2941     ],[
2942       AC_MSG_ERROR([Could not find libavcodec or libavutil. Use --disable-avcodec to ignore this error.])
2943   ])
2944 fi
2945
2946 dnl
2947 dnl libva needs avcodec
2948 dnl
2949 AC_ARG_ENABLE(libva,
2950   [  --enable-libva          libva VAAPI support (default auto)])
2951
2952 AS_IF([test "${enable_libva}" != "no"], [
2953   AS_IF([test "x${have_avcodec}" = "xyes"], [
2954     PKG_CHECK_MODULES(LIBVA, [libva libva-x11],
2955       [
2956         AC_CHECK_HEADERS(libavcodec/vaapi.h, [
2957            VLC_ADD_LIBS([avcodec],[$LIBVA_LIBS])
2958            VLC_ADD_CFLAGS([avcodec],[$LIBVA_CFLAGS])
2959            AC_DEFINE(HAVE_AVCODEC_VAAPI, 1, [Define if avcodec has to be built with VAAPI support.])
2960            echo "VAAPI acceleration activated"
2961         ],[
2962         AS_IF([test "${enable_libva}" == "yes"],
2963               [AC_MSG_ERROR([libva is present but libavcodec/vaapi.h is missing])],
2964               [AC_MSG_WARN([libva is present but libavcodec/vaapi.h is missing ])])
2965         ])
2966       ],[
2967         AS_IF([test "${enable_libva}" == "yes"],
2968               [AC_MSG_ERROR([Could not find required libva.])],
2969               [AC_MSG_WARN([libva not found  ])])
2970       ])
2971   ],[
2972     AS_IF([test "x${enable_libva}" != "x"], [
2973       AC_MSG_ERROR([--enable-libva and --disable-avcodec options are mutually exclusive.])
2974     ])
2975   ])
2976 ])
2977
2978 dnl
2979 dnl dxva2 needs avcodec
2980 dnl
2981 AC_ARG_ENABLE(dxva2,
2982   [  --enable-dxva2          DxVA2  support (default auto)])
2983
2984 AS_IF([test "${enable_dxva2}" != "no"], [
2985   if test "${SYS}" = "mingw32"; then
2986   AS_IF([test "x${have_avcodec}" = "xyes"], [
2987     AC_CHECK_HEADERS(dxva2api.h, 
2988       [
2989         AC_CHECK_HEADERS(libavcodec/dxva2.h, [
2990            VLC_ADD_LIBS([avcodec],[-lole32 -lshlwapi -luuid])
2991            AC_DEFINE(HAVE_AVCODEC_DXVA2, 1, [Define if avcodec has to be built with DxVA2 support.])
2992            echo "DxVA2 acceleration activated"
2993         ],[
2994         AS_IF([test "${enable_dxva2}" == "yes"],
2995               [AC_MSG_ERROR([dxva2 is present but libavcodec/dxva2.h is missing])],
2996               [AC_MSG_WARN([dxva2 is present but libavcodec/dxva2.h is missing ])])
2997         ])
2998       ],[
2999         AS_IF([test "${enable_dxva2}" == "yes"],
3000               [AC_MSG_ERROR([Could not find required dxva2api.h])],
3001               [AC_MSG_WARN([dxva2api.h not found])])
3002       ])
3003   ],[
3004     AS_IF([test "x${enable_dxva2}" != "x"], [
3005       AC_MSG_ERROR([--enable-dxva2 and --disable-avcodec options are mutually exclusive.])
3006     ])
3007   ])
3008   fi
3009 ])
3010
3011
3012 dnl
3013 dnl stream_out switcher needs libavcodec
3014 dnl
3015 AC_ARG_ENABLE(switcher,
3016   [  --enable-switcher       Stream-out switcher plugin (default disabled)])
3017 AS_IF([test "${enable_switcher}" = "yes"], [
3018   AS_IF([test "x${have_avcodec}" = "xyes"], [
3019     VLC_ADD_PLUGIN([stream_out_switcher])
3020     VLC_ADD_LIBS([stream_out_switcher],[$AVCODEC_LIBS $AVUTIL_LIBS])
3021     VLC_ADD_CFLAGS([stream_out_switcher],[$AVCODEC_CFLAGS $AVUTIL_CFLAGS])
3022   ],[AC_MSG_ERROR([Stream_out switcher depends on avcodec])
3023   ])
3024 ])
3025
3026
3027 dnl
3028 dnl  avformat demuxer/muxer plugin
3029 dnl
3030
3031 AC_ARG_ENABLE(avformat,
3032 [  --enable-avformat       libavformat containers (default enabled)])
3033 if test "${enable_avformat}" != "no"
3034 then
3035   PKG_CHECK_MODULES(AVFORMAT,[libavformat libavutil],
3036     [
3037       VLC_SAVE_FLAGS
3038       CPPFLAGS="${CPPFLAGS} ${AVFORMAT_CFLAGS}"
3039       CFLAGS="${CFLAGS} ${AVFORMAT_CFLAGS}"
3040       AC_CHECK_HEADERS(libavformat/avformat.h ffmpeg/avformat.h)
3041       AC_CHECK_HEADERS(libavutil/avutil.h ffmpeg/avutil.h)
3042       AS_IF([test "$enable_merge_ffmpeg" = "no"], [
3043         VLC_ADD_PLUGIN([avformat])
3044         VLC_ADD_LIBS([avformat],[$AVFORMAT_LIBS $AVUTIL_LIBS])
3045         VLC_ADD_CFLAGS([avformat],[$AVFORMAT_CFLAGS $AVUTIL_CFLAGS])
3046
3047         VLC_ADD_PLUGIN([access_avio])
3048         VLC_ADD_LIBS([access_avio],[$AVFORMAT_LIBS $AVUTIL_LIBS])
3049         VLC_ADD_CFLAGS([access_avio],[$AVFORMAT_CFLAGS $AVUTIL_CFLAGS])
3050       ], [
3051         VLC_ADD_LIBS([avcodec],[$AVFORMAT_LIBS $AVUTIL_LIBS])
3052         VLC_ADD_CFLAGS([avcodec],[$AVFORMAT_CFLAGS $AVUTIL_CFLAGS])
3053       ])
3054       VLC_RESTORE_FLAGS
3055     ],[
3056       AC_MSG_ERROR([Could not find libavformat or libavutil. Use --disable-avformat to ignore this error.])
3057   ])
3058 fi
3059
3060 dnl
3061 dnl  swscale image scaling and conversion plugin
3062 dnl
3063
3064 AC_ARG_ENABLE(swscale,
3065   AS_HELP_STRING([--enable-swscale],[libswscale image scaling and conversion
3066                   (default enabled)]))
3067 if test "${enable_swscale}" != "no"
3068 then
3069   PKG_CHECK_MODULES(SWSCALE,[libswscale],
3070     [
3071       VLC_SAVE_FLAGS
3072       CPPFLAGS="${CPPFLAGS} ${SWSCALE_CFLAGS}"
3073       CFLAGS="${CFLAGS} ${SWSCALE_CFLAGS}"
3074       AC_CHECK_HEADERS(libswscale/swscale.h ffmpeg/swscale.h)
3075       VLC_ADD_PLUGIN([swscale])
3076       VLC_ADD_LIBS([swscale],[$SWSCALE_LIBS])
3077       VLC_ADD_CFLAGS([swscale],[$SWSCALE_CFLAGS])
3078       VLC_RESTORE_FLAGS
3079     ],[
3080       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.])
3081   ])
3082 fi
3083
3084 dnl
3085 dnl  postproc plugin
3086 dnl
3087
3088 AC_ARG_ENABLE(postproc,
3089 [  --enable-postproc       libpostproc image post-processing (default enabled)])
3090 if test "${enable_postproc}" != "no"
3091 then
3092   PKG_CHECK_MODULES(POSTPROC,[libpostproc libavutil],
3093     [
3094       VLC_SAVE_FLAGS
3095       CPPFLAGS="${CPPFLAGS} ${POSTPROC_CFLAGS}"
3096       CFLAGS="${CFLAGS} ${POSTPROC_CFLAGS}"
3097       AC_CHECK_HEADERS(postproc/postprocess.h)
3098       VLC_ADD_PLUGIN([postproc])
3099       VLC_ADD_LIBS([postproc],[$POSTPROC_LIBS $AVUTIL_LIBS])
3100       VLC_ADD_CFLAGS([postproc],[$POSTPROC_CFLAGS $AVUTIL_CFLAGS])
3101       VLC_RESTORE_FLAGS
3102     ],[
3103       AC_MSG_ERROR([Could not find libpostproc. Use --disable-postproc to ignore this error.])
3104   ])
3105 fi
3106
3107 dnl
3108 dnl  faad decoder plugin
3109 dnl
3110 AC_ARG_ENABLE(faad,
3111 [  --enable-faad           faad codec (default disabled)])
3112 if test "${enable_faad}" = "yes"
3113 then
3114   AC_ARG_WITH(faad-tree,
3115   [  --with-faad-tree=PATH   faad tree for static linking])
3116   if test -n "${with_faad_tree}"
3117   then
3118     AC_MSG_CHECKING(for libfaad.a in ${with_faad_tree})
3119     real_faad_tree="`cd ${with_faad_tree} 2>/dev/null && pwd`"
3120     if test -z "${real_faad_tree}"
3121     then
3122       dnl  The given directory can't be found
3123       AC_MSG_RESULT(no)
3124       AC_MSG_ERROR([cannot cd to ${with_faad_tree}])
3125     fi
3126     if test -f "${real_faad_tree}/libfaad/.libs/libfaad.a"
3127     then
3128       dnl  Use a custom faad
3129       AC_MSG_RESULT(${real_faad_tree}/libfaad/.libs/libfaad.a)
3130       VLC_ADD_PLUGIN([faad])
3131       VLC_ADD_LIBS([faad],[${real_faad_tree}/libfaad/.libs/libfaad.a])
3132       VLC_ADD_CPPFLAGS([faad],[-I${real_faad_tree}/include])
3133     else
3134       dnl  The given libfaad wasn't built
3135       AC_MSG_RESULT(no)
3136       AC_MSG_ERROR([cannot find ${real_faad_tree}/libfaad/.libs/libfaad.a, make sure you compiled libfaad in ${with_faad_tree}])
3137     fi
3138   else
3139     CPPFLAGS="${CPPFLAGS_save} ${CPPFLAGS_faad}"
3140     LDFLAGS="${LDFLAGS_save} ${LIBS_faad}"
3141     AC_CHECK_HEADERS(faad.h, ,
3142       [ AC_MSG_ERROR([Cannot find development headers for libfaad...]) ])
3143     AC_CHECK_LIB(faad, faacDecOpen, [
3144       VLC_ADD_PLUGIN([faad])
3145       VLC_ADD_LIBS([faad],[-lfaad]) ],
3146       AC_CHECK_LIB(faad, NeAACDecOpen, [
3147         VLC_ADD_PLUGIN([faad])
3148         VLC_ADD_LIBS([faad],[-lfaad]) ],
3149         [ AC_MSG_ERROR([Cannot find libfaad library...]) ]))
3150     LDFLAGS="${LDFLAGS_save}"
3151     CPPFLAGS="${CPPFLAGS_save}"
3152   fi
3153 fi
3154
3155 dnl
3156 dnl twolame encoder plugin
3157 dnl
3158 PKG_ENABLE_MODULES_VLC([TWOLAME], [], [twolame], [MPEG Audio Layer 2 encoder], [auto], [], [], [ -DLIBTWOLAME_STATIC])
3159
3160 dnl
3161 dnl  QuickTime plugin
3162 dnl
3163 AC_ARG_ENABLE(quicktime,
3164   [  --enable-quicktime      QuickTime module (deprecated)])
3165 if test "${enable_quicktime}" = "yes"; then
3166   if test "${SYS}" = "mingw32"; then
3167     VLC_ADD_PLUGIN([quicktime])
3168   else
3169   AC_CHECK_HEADERS(QuickTime/QuickTime.h,
3170     [ VLC_ADD_PLUGIN([quicktime])
3171       VLC_ADD_LDFLAGS([quicktime],[-Wl,-framework,QuickTime,-framework,Carbon])
3172     ], [ AC_MSG_ERROR([cannot find QuickTime headers]) ])
3173   fi
3174 fi
3175
3176 dnl
3177 dnl  Real plugin
3178 dnl
3179 AC_ARG_ENABLE(real,
3180   [  --enable-real           Real media module (default disabled)])
3181 if test "${enable_real}" = "yes"; then
3182   VLC_ADD_PLUGIN([realaudio])
3183   VLC_ADD_PLUGIN([realvideo])
3184 fi
3185
3186 dnl
3187 dnl  Real RTSP plugin
3188 dnl
3189 AC_ARG_ENABLE(realrtsp,
3190   [  --enable-realrtsp       Real RTSP module (default disabled)])
3191 if test "${enable_realrtsp}" = "yes"; then
3192   VLC_ADD_PLUGIN([access_realrtsp])
3193 fi
3194
3195 AC_ARG_ENABLE(libsysfs,
3196   [  --enable-libsysfs       Get user key from firewire connected iPod via libsysfs (default enabled)])
3197
3198 AS_IF([test "${enable_libsysfs}" != "no"],[
3199   AC_CHECK_HEADERS(sysfs/libsysfs.h, [
3200     VLC_ADD_LIBS([mp4 mkv],[-lsysfs])
3201   ] )
3202 ])
3203
3204 dnl
3205 dnl skins2 module
3206 dnl
3207 AC_ARG_ENABLE(libtar,
3208   [  --enable-libtar         libtar support for skins2 (default enabled)])
3209
3210 AS_IF([test "${enable_libtar}" != "no"],[
3211   AC_CHECK_HEADERS(libtar.h, [
3212     VLC_ADD_LIBS([skins2],[-ltar])
3213   ] )
3214 ])
3215
3216 dnl
3217 dnl A52/AC3 decoder plugin
3218 dnl
3219 AC_ARG_ENABLE(a52,
3220   [  --enable-a52            A/52 support with liba52 (default enabled)])
3221 if test "${enable_a52}" != "no"
3222 then
3223   AC_ARG_WITH(a52,
3224     [  --with-a52=PATH         a52 headers and libraries])
3225   AC_ARG_WITH(a52-tree,
3226     [  --with-a52-tree=PATH    a52dec tree for static linking ],[],[])
3227   if test "${with_a52_tree}" != "no" -a -n "${with_a52_tree}"
3228   then
3229     real_a52_tree="`cd ${with_a52_tree} 2>/dev/null && pwd`"
3230     if test -z "${real_a52_tree}"
3231     then
3232       dnl  The given directory can't be found
3233       AC_MSG_RESULT(no)
3234       AC_MSG_ERROR([${with_a52_tree} directory doesn't exist])
3235     fi
3236     dnl  Use a custom a52dec
3237     AC_MSG_CHECKING(for a52.h in ${real_a52_tree}/include)
3238     if test -f ${real_a52_tree}/include/a52.h
3239     then
3240       AC_MSG_RESULT(yes)
3241       VLC_ADD_CPPFLAGS([a52tofloat32],[-I${real_a52_tree}])
3242       VLC_ADD_LIBS([a52tofloat32],[-L${real_a52_tree}/liba52/.libs])
3243       LDFLAGS="${LDFLAGS_save} ${LIBS_a52tofloat32}"
3244       AC_CHECK_LIB(a52, a52_free, [
3245         VLC_ADD_PLUGIN([a52tofloat32])
3246         VLC_ADD_CPPFLAGS([a52tofloat32],[-DUSE_A52DEC_TREE])
3247         VLC_ADD_LIBS([a52tofloat32],[-la52])
3248         ],[
3249         if test -f ${real_a52_tree}/liba52/.libs/liba52.a
3250         then
3251           AC_MSG_ERROR([make sure you have at least a52dec-0.7.3 ($real_a52_tree)])
3252         else
3253           AC_MSG_ERROR([the specified tree hasn't been compiled])
3254         fi
3255       ])
3256       LDFLAGS="${LDFLAGS_save}"
3257     else
3258       AC_MSG_RESULT(no)
3259       AC_MSG_ERROR([the specified tree doesn't have a52.h])
3260     fi
3261   else
3262     if test -z "${with_a52}"
3263     then
3264       LDFLAGS_test=""
3265       CPPFLAGS_test=""
3266     else
3267       LDFLAGS_test="-L${with_a52}/lib"
3268       CPPFLAGS_test="-I${with_a52}/include"
3269     fi
3270     CPPFLAGS="${CPPFLAGS_save} ${CPPFLAGS_test} ${CPPFLAGS_a52tofloat32}"
3271     LDFLAGS="${LDFLAGS_save} ${LDFLAGS_test} ${LIBS_a52tofloat32}"
3272     AC_CHECK_HEADERS(a52dec/a52.h, [
3273       AC_CHECK_LIB(a52, a52_free, [
3274         VLC_ADD_PLUGIN([a52tofloat32])
3275         VLC_ADD_LIBS([a52tofloat32],[${LDFLAGS_test} -la52])
3276         VLC_ADD_CPPFLAGS([a52tofloat32],[${CPPFLAGS_test}])
3277       ],[
3278         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.])
3279         ])
3280     ],[
3281       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.])
3282     ])
3283     CPPFLAGS="${CPPFLAGS_save}"
3284     LDFLAGS="${LDFLAGS_save}"
3285   fi
3286 fi
3287
3288 AC_ARG_WITH(a52-fixed,
3289       [  --with-a52-fixed        specify if liba52 has been compiled with fixed point support],
3290       [
3291         VLC_ADD_CPPFLAGS([a52tofloat32],[-DLIBA52_FIXED]) ])
3292
3293 dnl
3294 dnl DTS Coherent Acoustics decoder plugin
3295 dnl
3296 AS_IF([test "x${enable_dts}" != "x"], [
3297   AC_MSG_ERROR([--enable-dts is obsolete. Please use libdca and --enable-dca.])
3298 ])
3299 PKG_ENABLE_MODULES_VLC([DCA], [dtstofloat32], [libdca >= 0.0.5], [DTS Coherent Acoustics support with libdca], [auto])
3300
3301 dnl
3302 dnl  Flac plugin
3303 dnl
3304 PKG_ENABLE_MODULES_VLC([FLAC], [], [flac], [libflac decoder/encoder support], [auto])
3305
3306 dnl
3307 dnl  Libmpeg2 plugin
3308 dnl
3309 PKG_ENABLE_MODULES_VLC([LIBMPEG2], [], [libmpeg2 > 0.3.2], [libmpeg2 decoder support], [auto])
3310
3311 dnl
3312 dnl  Vorbis plugin
3313 dnl
3314 PKG_ENABLE_MODULES_VLC([VORBIS], [], [ogg vorbis >= 1.1 vorbisenc >= 1.1], [Vorbis decoder and encoder], [auto])
3315
3316 dnl
3317 dnl  Tremor plugin
3318 dnl
3319 AC_ARG_ENABLE(tremor,
3320   [  --enable-tremor         Tremor decoder support (default disabled)])
3321 if test "${enable_tremor}" = "yes"
3322 then
3323   AC_CHECK_HEADERS(tremor/ivorbiscodec.h, [
3324     VLC_ADD_PLUGIN([tremor])
3325     VLC_ADD_LIBS([tremor],[-lvorbisidec -logg])
3326    ],[])
3327 fi
3328
3329 dnl
3330 dnl  Speex plugin
3331 dnl
3332 PKG_ENABLE_MODULES_VLC([SPEEX], [], [ogg speex >= 1.0.5], [Speex decoder support], [auto])
3333
3334 dnl
3335 dnl  theora decoder plugin
3336 dnl
3337 PKG_ENABLE_MODULES_VLC([THEORA], [], [ogg theora >= 1.0], [experimental theora codec], [auto])
3338
3339 dnl
3340 dnl  dirac encoder plugin
3341 dnl
3342 PKG_ENABLE_MODULES_VLC([DIRAC], [], [dirac >= 0.10.0], [dirac encoder], [auto])
3343
3344 dnl
3345 dnl  schroedinger decoder plugin (for dirac format video)
3346 dnl
3347 PKG_ENABLE_MODULES_VLC([SCHROEDINGER], [], [schroedinger-1.0 >= 1.0.6], [dirac decoder using schroedinger], [auto])
3348
3349 dnl
3350 dnl  PNG decoder module
3351 dnl
3352 AC_ARG_ENABLE(png,
3353   [  --enable-png            PNG support (default enabled)])
3354 if test "${enable_png}" != "no"; then
3355 AC_CHECK_HEADERS(png.h, [
3356   LDFLAGS="${LDFLAGS_save} -lz"
3357   AC_CHECK_LIB(png, png_set_rows, [
3358     VLC_ADD_LIBS([png],[-lpng -lz])
3359     VLC_ADD_PLUGIN([png])
3360     VLC_ADD_PLUGIN([osdmenu])
3361     VLC_ADD_PLUGIN([osd_parser])],
3362     [],[-lz])
3363     LDFLAGS="${LDFLAGS_save}"
3364   ])
3365 fi
3366 AM_CONDITIONAL(BUILD_OSDMENU, [test "${enable_png}" != "no"])
3367
3368 dnl
3369 dnl H264 encoder plugin (using libx264)
3370 dnl
3371 AC_ARG_ENABLE(x264,
3372   [  --enable-x264           H264 encoding support with libx264 (default enabled)])
3373 if test "${enable_x264}" != "no"; then
3374   AC_ARG_WITH(x264-tree,
3375     [  --with-x264-tree=PATH   x264 tree for static linking ],[],[])
3376   if test "${with_x264_tree}" != "no" -a -n "${with_x264_tree}"
3377   then
3378     real_x264_tree="`cd ${with_x264_tree} 2>/dev/null && pwd`"
3379     if test -z "${real_x264_tree}"
3380     then
3381       dnl  The given directory can't be found
3382       AC_MSG_RESULT(no)
3383       AC_MSG_ERROR([${with_x264_tree} directory doesn't exist])
3384     fi
3385     dnl  Use a custom libx264
3386     AC_MSG_CHECKING(for x264.h in ${real_x264_tree})
3387     if test -f ${real_x264_tree}/x264.h
3388     then
3389       AC_MSG_RESULT(yes)
3390       VLC_ADD_CPPFLAGS([x264],[-I${real_x264_tree}])
3391       VLC_ADD_LIBS([x264],[-L${real_x264_tree}])
3392       PKG_CHECK_MODULES(X264,x264, [
3393         VLC_ADD_PLUGIN([x264])
3394         VLC_ADD_LDFLAGS([x264],[${X264_LIBS}])
3395         VLC_ADD_CFLAGS([x264],[${X264_CFLAGS}])
3396         if echo ${X264_LIBS} |grep -q 'pthreadGC2'; then
3397           VLC_ADD_CFLAGS([x264], [-DPTW32_STATIC_LIB])
3398         fi
3399       ],[
3400         AC_MSG_ERROR([the specified tree hasn't been compiled])
3401       ])
3402       LDFLAGS="${LDFLAGS_save}"
3403     else
3404       AC_MSG_RESULT(no)
3405       AC_MSG_ERROR([the specified tree doesn't have x264.h])
3406     fi
3407   else
3408       PKG_CHECK_MODULES(X264,x264 >= 0.76, [
3409         VLC_ADD_PLUGIN([x264])
3410         VLC_ADD_LDFLAGS([x264],[${X264_LIBS}])
3411
3412         AC_CACHE_CHECK([if linker supports -Bsymbolic],
3413           [ac_cv_ld_bsymbolic],
3414           [LDFLAGS="${LDFLAGS_vlc} -Wl,-Bsymbolic"
3415             AC_TRY_LINK([],,ac_cv_ld_bsymbolic=yes,ac_cv_ld_bsymbolic=no)
3416             LDFLAGS="${LDFLAGS_save}"
3417           ])
3418         AS_IF([test "${ac_cv_ld_bsymbolic}" != "no"], [
3419           VLC_ADD_LDFLAGS([x264],[-Wl,-Bsymbolic])
3420         ])
3421
3422         VLC_ADD_CFLAGS([x264],[${X264_CFLAGS}])
3423         if echo ${X264_LIBS} |grep -q 'pthreadGC2'; then
3424           VLC_ADD_CFLAGS([x264], [-DPTW32_STATIC_LIB])
3425         fi
3426       ],[
3427         if test "${enable_x264}" = "yes"; then
3428             AC_MSG_ERROR([Could not find libx264 >= 0.76 on your system: you may get it from http://www.videolan.org/x264.html])
3429           fi
3430       ])
3431     LDFLAGS="${LDFLAGS_save}"
3432   fi
3433 fi
3434
3435 dnl
3436 dnl libfluidsynth (MIDI synthetizer) plugin
3437 dnl
3438 PKG_ENABLE_MODULES_VLC([FLUIDSYNTH], [], [fluidsynth], [MIDI synthetiser with libfluidsynth], [auto])
3439
3440 dnl
3441 dnl Teletext Modules
3442 dnl vbi decoder plugin (using libzbvi)
3443 dnl telx module
3444 dnl uncompatible
3445 dnl
3446 AC_ARG_ENABLE(zvbi,
3447   AS_HELP_STRING([--enable-zvbi],[VBI (inc. Teletext) decoding support with
3448                   libzvbi (default enabled)]))
3449 AC_ARG_ENABLE(telx,
3450   AS_HELP_STRING([--enable-telx],[Teletext decoding module (conflicting with
3451                   zvbi) (default enabled if zvbi is absent)]))
3452
3453 AS_IF( [test "${enable_zvbi}" != "no"],[
3454     PKG_CHECK_MODULES(ZVBI,
3455         zvbi-0.2 >= 0.2.28,
3456         [
3457           VLC_ADD_LIBS([zvbi],[$ZVBI_LIBS])
3458           if test "${SYS}" = "mingw32"; then
3459               VLC_ADD_LIBS([zvbi],[ -lpthreadGC2])
3460           fi
3461           VLC_ADD_CFLAGS([zvbi],[$ZVBI_CFLAGS])
3462           VLC_ADD_PLUGIN([zvbi])
3463           AC_DEFINE(ZVBI_COMPILED, 1, [Define if the zvbi module is built])
3464           AS_IF( [test "${enable_telx}" = "yes"],[
3465                   AC_MSG_WARN([The zvbi and telx modules are uncompatibles.
3466                                Using zvbi.])
3467                   ])
3468         ],[
3469           AC_MSG_WARN(ZVBI library not found. Enabling the telx module instead)
3470         ])
3471     ])
3472 AS_IF( [test "${enable_telx}" != "no" ],[
3473   VLC_ADD_PLUGIN([telx])
3474   ])
3475
3476 dnl
3477 dnl libass subtitle rendering module
3478 dnl
3479 AC_ARG_ENABLE(libass,
3480   [  --enable-libass         Subtitle support using libass (default enabled)])
3481 AS_IF( [test "${enable_libass}" != "no"], [
3482   PKG_CHECK_MODULES(LIBASS, libass >= 0.9.6,
3483       [
3484         VLC_ADD_LIBS([libass],[$LIBASS_LIBS])
3485         VLC_ADD_CFLAGS([libass],[$LIBASS_CFLAGS])
3486         VLC_ADD_PLUGIN([libass])
3487
3488         AC_CHECK_HEADERS(fontconfig/fontconfig.h,
3489           [VLC_ADD_CPPFLAGS([libass],[-DHAVE_FONTCONFIG])
3490            VLC_ADD_LIBS([libass],[-lfontconfig])
3491        ])
3492       ],[
3493         AC_MSG_WARN([LIBASS library not found])
3494       ])
3495   ])
3496
3497 dnl
3498 dnl asa demuxer
3499 dnl
3500 AC_ARG_ENABLE(asademux,
3501   [  --enable-asademux       asa subtitle demuxing (default disabled)])
3502 AS_IF( [test "${enable_asademux}" = "yes"], [
3503   PKG_CHECK_MODULES(PCRE,
3504       libpcre >= 6.5,
3505       [
3506         VLC_ADD_LDFLAGS([asademux],[$PCRE_LIBS])
3507         VLC_ADD_CFLAGS([asademux],[$PCRE_CFLAGS])
3508         if test "${SYS}" = "mingw32"; then
3509             VLC_ADD_CPPFLAGS([asademux],[-DPCRE_STATIC])
3510         fi
3511         VLC_ADD_PLUGIN([asademux])
3512       ],[
3513         AC_MSG_WARN([PCRE library not found (required for asademux)])
3514       ])
3515   ])
3516
3517 dnl
3518 dnl  kate decoder plugin
3519 dnl
3520 AC_ARG_ENABLE(kate,
3521 [  --enable-kate           kate codec (default enabled)])
3522 AS_IF([test "${enable_kate}" != "no"], [
3523   PKG_CHECK_MODULES(KATE,[kate >= 0.1.5], [
3524       VLC_ADD_PLUGIN([kate])
3525       VLC_ADD_CFLAGS([kate],[$KATE_CFLAGS])
3526       VLC_ADD_LIBS([kate],[$KATE_LIBS]) ],[
3527         AC_CHECK_HEADERS(kate/kate.h, [
3528           AC_CHECK_LIB(kate, kate_decode_init, [
3529             VLC_ADD_PLUGIN([kate])
3530             kate_libs="-lkate -logg"
3531             VLC_ADD_LDFLAGS([kate],[${kate_libs}]) ],[
3532             AS_IF([test "x${enable_kate}" != "x"], [
3533               AC_MSG_ERROR([libkate doesn't appear to be installed on your system.
3534               You also need to check that you have a libogg posterior to the 1.0 release.])
3535             ])
3536           ], [-lkate -logg])
3537         ],[
3538           AS_IF([test "x${enable_kate}" != "x"], [
3539             AC_MSG_ERROR([libkate headers do not appear to be installed on your system.
3540             You also need to check that you have a libogg posterior to the 1.0 release.])
3541           ])
3542         ])
3543   ])
3544 ])
3545
3546
3547 dnl
3548 dnl  tiger rendering for kate decoder plugin
3549 dnl
3550 AC_ARG_ENABLE(tiger,
3551 [  --enable-tiger          Tiger rendering library for Kate streams (default enabled)])
3552 AS_IF([test "${enable_tiger}" != "no"], [
3553   PKG_CHECK_MODULES(TIGER,[tiger >= 0.3.1], [
3554       AC_DEFINE(HAVE_TIGER, 1, [Define if libtiger is available.])
3555       VLC_ADD_CFLAGS([kate],[$TIGER_CFLAGS])
3556       VLC_ADD_LIBS([kate],[$TIGER_LIBS]) ],[
3557         AS_IF([test "x${enable_tiger}" != "x"], [
3558           AC_MSG_ERROR([libtiger does not appear to be installed on your system.])
3559         ])
3560   ])
3561 ])
3562
3563
3564
3565 dnl
3566 dnl  Video plugins
3567 dnl
3568
3569 AC_ARG_WITH(,[Video plugins:])
3570
3571 dnl
3572 dnl  Xlib
3573 dnl
3574
3575 AC_PATH_XTRA()
3576
3577 dnl
3578 dnl  X C Bindings modules
3579 dnl
3580 AC_ARG_ENABLE(xcb,
3581   [  --enable-xcb            X11 support with XCB (default enabled)],, [
3582   AS_IF([test "${SYS}" != "mingw32" -a "${SYS}" != "mingwce" -a "${SYS}" != "darwin"], [
3583     enable_xcb="yes"
3584   ], [
3585     enable_xcb="no"
3586   ])
3587 ])
3588 AC_ARG_ENABLE(xvideo,
3589   [  --enable-xvideo         XVideo support (default enabled)],, [
3590     enable_xvideo="$enable_xcb"
3591 ])
3592
3593 need_xid_provider="no"
3594 AS_IF([test "${enable_xcb}" != "no"], [
3595   dnl libxcb
3596   PKG_CHECK_MODULES(XCB, [xcb])
3597   PKG_CHECK_MODULES(XCB_SHM, [xcb-shm])
3598   VLC_ADD_PLUGIN([screensaver])
3599   VLC_ADD_PLUGIN([xcb_x11])
3600   VLC_ADD_PLUGIN([xcb_screen])
3601   VLC_ADD_PLUGIN([xcb_apps])
3602   VLC_SET_CFLAGS_WERROR([xcb_screen], [-Wno-error=uninitialized]) # some gcc report a warning which doesn't reveal an error
3603
3604   AS_IF([test "${enable_xvideo}" != "no"], [
3605     PKG_CHECK_MODULES(XCB_XV, [xcb-xv >= 1.1.90.1], [
3606       VLC_ADD_PLUGIN([xcb_xv])
3607     ], [
3608       PKG_CHECK_MODULES(XCB_XV, [xcb-xv], [
3609         VLC_ADD_PLUGIN([xcb_xv])
3610         VLC_ADD_CFLAGS([xcb_xv], [-DXCB_XV_OLD])
3611       ])
3612     ])
3613   ])
3614
3615   PKG_CHECK_MODULES(XCB_RANDR, [xcb-randr >= 1.3], [
3616     VLC_ADD_PLUGIN([panoramix])
3617     VLC_ADD_LIBS([panoramix],[${XCB_RANDR_LIBS} ${XCB_LIBS}])
3618     VLC_ADD_CFLAGS([panoramix],[${XCB_RANDR_CFLAGS} ${XCB_CFLAGS}])
3619   ], [true])
3620
3621   dnl xcb-utils
3622   PKG_CHECK_MODULES(XCB_KEYSYMS, [xcb-keysyms >= 0.3.4], [
3623     have_xcb_keysyms="yes"
3624   ], [
3625     PKG_CHECK_MODULES(XCB_KEYSYMS, [xcb-keysyms], [
3626       have_xcb_keysyms="yes"
3627       VLC_ADD_CFLAGS([globalhotkeys], [-DXCB_KEYSYM_OLD_API])
3628     ], [
3629       have_xcb_keysyms="no"
3630       need_xid_provider="yes"
3631     ])
3632   ])
3633
3634   AS_IF([test "${have_xcb_keysyms}" = "yes"], [
3635     PKG_CHECK_MODULES(XPROTO, [xproto])
3636     VLC_ADD_PLUGIN([xcb_window])
3637     VLC_ADD_PLUGIN([globalhotkeys])
3638     VLC_ADD_CFLAGS([globalhotkeys], [${XCB_KEYSYMS_CFLAGS} ${XCB_CFLAGS}])
3639     VLC_ADD_LIBS([globalhotkeys], [${XCB_KEYSYMS_LIBS} ${XCB_LIBS}])
3640   ])
3641   VLC_ADD_PLUGIN([xdg_screensaver])
3642 ])
3643
3644 AC_ARG_ENABLE(glx,
3645   [  --enable-glx            X11 OpenGL (GLX) support (default enabled)],, [
3646   enable_glx="$enable_xcb"
3647 ])
3648 AS_IF([test "${enable_glx}" != "no"], [
3649   PKG_CHECK_MODULES(XLIB_XCB, [x11-xcb])
3650   PKG_CHECK_MODULES(GL, [gl],, [
3651     AC_CHECK_HEADER([GL/gl.h], [
3652       GL_CFLAGS=""
3653       GL_LIBS="-lGL"
3654     ], [
3655       AC_MSG_ERROR([GLX (libGL) cannot be found. If you do not need OpenGL with X11, use --disable-glx.])
3656     ])
3657   ])
3658   VLC_ADD_PLUGIN([xcb_glx])
3659 ])
3660 AC_SUBST([GL_CFLAGS])
3661 AC_SUBST([GL_LIBS])
3662
3663
3664 dnl
3665 dnl  OpenGL module
3666 dnl  (enabled by default except on beos)
3667 dnl
3668 AC_ARG_ENABLE(opengl,
3669   [  --enable-opengl         OpenGL support (default enabled)])
3670 if test "${enable_opengl}" != "no" &&
3671    test "${SYS}" = "darwin"; then
3672     dnl OS X special case (no GL/gl.h but OpenGL/gl.h)
3673     VLC_ADD_PLUGIN([opengl])
3674     VLC_ADD_LIBS([opengl],[-Wl,-framework,OpenGL])
3675 fi
3676
3677 dnl
3678 dnl  SDL module
3679 dnl
3680 AC_ARG_ENABLE(sdl,
3681   [  --enable-sdl            SDL support (default enabled)])
3682 AC_ARG_ENABLE(sdl-image,
3683   [  --enable-sdl-image      SDL image support (default enabled)])
3684 if test "${enable_sdl}" != "no"
3685 then
3686   SDL_PATH="${PATH}"
3687   AC_ARG_WITH(sdl-config-path,
3688     [  --with-sdl-config-path=PATH sdl-config path (default search in \$PATH)],
3689     [ if test "${with_sdl_config_path}" != "no"
3690       then
3691         SDL_PATH="${with_sdl_config_path}:${PATH}"
3692       fi ])
3693   AC_PATH_PROG(SDL_CONFIG, sdl-config, no, ${SDL_PATH})
3694   SDL_HEADER="SDL/SDL.h"
3695   SDL_IMAGE="SDL/SDL_image.h"
3696
3697   if test "${SDL_CONFIG}" != "no";  then
3698      PKG_CHECK_MODULES(SDL, [sdl >= 1.2.10], [
3699         # SDL on Darwin is heavily patched and can only run SDL_image
3700         if test "${SYS}" != "darwin"; then
3701           VLC_ADD_PLUGIN([vout_sdl])
3702           VLC_ADD_PLUGIN([aout_sdl])
3703         fi
3704         VLC_ADD_CFLAGS([vout_sdl aout_sdl sdl_image],[`${SDL_CONFIG} --cflags | sed 's,SDL,,'`])
3705         VLC_ADD_LIBS([vout_sdl aout_sdl sdl_image],[`${SDL_CONFIG} --libs | sed 's,-rdynamic,,'`])
3706
3707         # SDL_image
3708         AS_IF([ test "${enable_sdl_image}" != "no"],[
3709           AC_CHECK_HEADERS("SDL/SDL_image.h", [
3710             VLC_ADD_PLUGIN([sdl_image])
3711             AC_CHECK_LIB(png, png_set_rows, [VLC_ADD_LIBS([sdl_image],[-lpng -lz])],[],[-lz])
3712             AC_CHECK_LIB(jpeg, jpeg_start_decompress, [VLC_ADD_LIBS([sdl_image],[-ljpeg])])
3713             AC_CHECK_LIB(tiff, TIFFClientOpen, [VLC_ADD_LIBS([sdl_image],[-ltiff])])
3714             VLC_ADD_LIBS([sdl_image], [-lSDL_image])],
3715             [ AC_MSG_WARN([The development package for SDL_image is not installed.
3716       You should install it alongside your SDL package.])
3717             ])
3718         ])
3719      ],[
3720        AC_MSG_ERROR([The development package for SDL is too old. You need 1.2.10.
3721                     Alternatively you can also configure with --disable-sdl.])
3722      ])
3723   else if test "${enable_sdl}" =  "yes"; then
3724     AC_MSG_ERROR([I could not find the SDL package. You can download libSDL
3725 from http://www.libsdl.org/, or configure with --disable-sdl. Have a nice day.
3726     ])
3727       fi
3728   fi
3729 fi
3730
3731 dnl
3732 dnl  freetype module
3733 dnl
3734 AC_ARG_ENABLE(freetype,
3735   [  --enable-freetype       freetype support (default enabled)])
3736 AC_ARG_ENABLE(fribidi,
3737   [  --enable-fribidi        fribidi support (default enabled)])
3738 AC_ARG_ENABLE(fontconfig,
3739   [  --enable-fontconfig     fontconfig support (default enabled)])
3740 if test "${enable_freetype}" != "no"
3741 then
3742    PKG_CHECK_MODULES(FREETYPE, freetype2,[
3743       VLC_ADD_PLUGIN([freetype])
3744       have_freetype=yes
3745       VLC_ADD_CPPFLAGS([freetype skins2],[${FREETYPE_CFLAGS}])
3746       if test "${SYS}" = "mingw32"; then
3747         VLC_ADD_LIBS([freetype],[-liconv -lz])
3748       fi
3749       VLC_ADD_LIBS([freetype skins2],[${FREETYPE_LIBS}])
3750       if test "${enable_fontconfig}" != "no"
3751       then
3752         AC_CHECK_HEADERS(fontconfig/fontconfig.h,
3753           [VLC_ADD_CPPFLAGS([freetype],[-DHAVE_FONTCONFIG])
3754            VLC_ADD_LIBS([freetype],[-lfontconfig])])
3755         AC_CHECK_HEADERS(Carbon/Carbon.h,
3756           [VLC_ADD_LDFLAGS([freetype],[-Wl,-framework,Carbon])])
3757       fi
3758
3759      dnl fribidi support
3760       if test "${enable_fribidi}" != "no"
3761       then
3762         PKG_CHECK_MODULES(FRIBIDI, fribidi, [
3763           VLC_ADD_CPPFLAGS([freetype skins2], [${FRIBIDI_CFLAGS} -DHAVE_FRIBIDI])
3764           VLC_ADD_LIBS([freetype skins2], [${FRIBIDI_LIBS}])
3765         ])
3766       fi
3767
3768   ],[
3769   have_freetype=no
3770   AS_IF([ test "${enable_freetype}" =  "yes"],[
3771     AC_MSG_ERROR([I couldn't find the freetype package. You can download libfreetype2
3772 from http://www.freetype.org/, or configure with --disable-freetype. Have a nice day.
3773       ])
3774     ])
3775   ])
3776
3777 fi
3778
3779 dnl
3780 dnl  libxml2 module
3781 dnl
3782 PKG_ENABLE_MODULES_VLC([LIBXML2], [xml], [libxml-2.0 >= 2.5], [libxml2 support],[auto])
3783
3784 dnl
3785 dnl  SVG module
3786 dnl
3787 PKG_ENABLE_MODULES_VLC([SVG], [], [librsvg-2.0 >= 2.9.0], [SVG rendering library],[auto])
3788
3789 dnl
3790 dnl Snapshot vout module (with cache)
3791 dnl
3792 AC_ARG_ENABLE(snapshot,
3793   [  --enable-snapshot       snapshot module (default disabled)])
3794 if test "${enable_snapshot}" = "yes"
3795 then
3796   VLC_ADD_PLUGIN([snapshot])
3797 fi
3798
3799 dnl
3800 dnl Roku HD1000 Video output module
3801 dnl
3802 AC_ARG_ENABLE(hd1000v,
3803   [  --enable-hd1000v        HD1000 Video Output module (default enabled on HD1000)])
3804 if test "${enable_hd1000v}" != "no" -a "${CXX}" != "" &&
3805   (test "${SYS}" != "mingw32" -a "${SYS}" != "mingwce" ||
3806    test "${enable_hd1000v}" = "yes"); then
3807   AC_LANG_PUSH([C++])
3808   AC_CHECK_HEADERS([cascade/graphics/CascadeScreen.h cascade/graphics/CascadeBitmap.h],
3809   [
3810     can_build_roku="yes"
3811   ],
3812   [
3813     can_build_roku="no"
3814     AC_MSG_WARN([Not building Roku HD1000 compatible video output])
3815   ])
3816   if test "$can_build_roku" = "yes"
3817   then
3818     VLC_ADD_PLUGIN([hd1000v])
3819     VLC_ADD_LIBS([hd1000v],[-lCascade -ldvbpsi -lmad])
3820   fi
3821   AC_LANG_POP([C++])
3822 fi
3823
3824 dnl
3825 dnl  Windows DirectX module
3826 dnl
3827
3828 if test "${SYS}" = "mingw32" -o "${SYS}" = "mingwce"
3829 then
3830   VLC_ADD_PLUGIN([panoramix])
3831 fi
3832
3833 AC_ARG_ENABLE(directx,
3834   [  --enable-directx        Win32 DirectX support (default enabled on Win32)])
3835 if test "${enable_directx}" != "no"
3836 then
3837   if test "${SYS}" = "mingw32" -o "${SYS}" = "mingwce"
3838   then
3839       AC_CHECK_HEADERS(ddraw.h,
3840       [ VLC_ADD_PLUGIN([directx])
3841         VLC_ADD_PLUGIN([aout_directx])
3842         VLC_ADD_LIBS([directx],[-lgdi32])
3843       ],[AC_MSG_ERROR([Cannot find DirectX headers!])]
3844       )
3845       AC_CHECK_HEADERS(GL/gl.h,
3846       [ VLC_ADD_PLUGIN([glwin32])
3847         VLC_ADD_LIBS([glwin32],[-lopengl32 -lgdi32])
3848       ])
3849       AC_CHECK_HEADERS(d3d9.h,
3850       [ VLC_ADD_PLUGIN([direct3d])
3851         VLC_ADD_LIBS([direct3d],[-lgdi32])
3852       ])
3853       VLC_ADD_LIBS([direct3d directx glwin32],[-lole32])
3854   fi
3855 fi
3856
3857 dnl
3858 dnl  win32 GDI plugin
3859 dnl
3860 AC_ARG_ENABLE(wingdi,
3861   [  --enable-wingdi         Win32 GDI module (default enabled on Win32)])
3862 if test "${enable_wingdi}" != "no"; then
3863   if test "${SYS}" = "mingw32"; then
3864     VLC_ADD_PLUGIN([wingdi])
3865     VLC_ADD_LIBS([wingdi],[-lgdi32 -lole32])
3866   fi
3867   if test "${SYS}" = "mingwce"; then
3868     VLC_ADD_PLUGIN([wingdi])
3869     VLC_ADD_PLUGIN([wingapi])
3870     VLC_ADD_LIBS([wingdi],[-laygshell])
3871     VLC_ADD_LIBS([wingapi],[-laygshell])
3872   fi
3873 fi
3874
3875
3876 dnl
3877 dnl  Linux framebuffer module
3878 dnl
3879 AC_ARG_ENABLE(fb,
3880   [  --enable-fb             Linux framebuffer support (default enabled on Linux)])
3881     if test "${enable_fb}" != "no"
3882     then
3883       AC_CHECK_HEADERS(linux/fb.h, [
3884         VLC_ADD_PLUGIN([fb])
3885       ])
3886     fi
3887
3888 dnl
3889 dnl  OMAP Framebuffer module
3890 dnl
3891 AC_ARG_ENABLE(omapfb,
3892   [  --enable-omapfb         OMAP framebuffer support (default disabled)])
3893     if test "${enable_omapfb}" = "yes"
3894     then
3895       AC_CHECK_HEADERS(asm/arch-omap/omapfb.h, [
3896         VLC_ADD_PLUGIN([omapfb])
3897         AC_CHECK_HEADERS(X11/Xlib.h, [
3898           VLC_ADD_LIBS([omapfb],[${X_LIBS} ${X_PRE_LIBS} -lX11]) ])
3899       ])
3900       VLC_ADD_PLUGIN([swscale_omap])
3901     fi
3902
3903 dnl
3904 dnl  SVGAlib module
3905 dnl
3906 AC_ARG_ENABLE(svgalib,
3907   [  --enable-svgalib        SVGAlib support (default disabled)])
3908 if test "${enable_svgalib}" = "yes"
3909 then
3910   VLC_ADD_PLUGIN([svgalib])
3911   VLC_ADD_LIBS([svgalib],[-lvgagl -lvga])
3912 fi
3913
3914 dnl
3915 dnl  DirectFB module
3916 dnl  try to find using: 1 - given location; 2 - directfb-config; 3 - pkg-config
3917 dnl  TODO: support for static linking
3918 dnl
3919 AC_ARG_ENABLE(directfb,
3920   [  --enable-directfb       DirectFB support (default disabled)])
3921 AC_ARG_WITH(directfb,
3922   [  --with-directfb=PATH    path to DirectFB headers and libraries])
3923
3924 if test "${enable_directfb}" = "yes"; then
3925     have_directfb="false"
3926     CPPFLAGS_mydirectfb=
3927     LIBS_mydirectfb=
3928     if test "${with_directfb}" != "no" -a -n "${with_directfb}"; then
3929         dnl Trying the given location
3930         CPPFLAGS_save="${CPPFLAGS}"
3931         LIBS_save="${LIBS}"
3932
3933         CPPFLAGS_new="-I${with_directfb}/include -D_REENTRANT -D_GNU_SOURCE"
3934         LIBS_new="-L${with_directfb}/lib/fusion/.libs/ -L${with_directfb}/lib/direct/.libs/"
3935         LIBS_new="${LIBS_new} -L${with_directfb}/src/.libs/"
3936
3937         CPPFLAGS="${CPPFLAGS} ${CPPFLAGS_new}"
3938         LIBS="${LIBS} ${LIBS_new}"
3939
3940         dnl FIXME: too obscure
3941         AC_CHECK_HEADER([directfb.h], [
3942             AC_CHECK_LIB([direct],[direct_initialize], [
3943                 AC_CHECK_LIB([fusion], [fusion_enter], [
3944                     AC_CHECK_LIB([directfb], [DirectFBInit], have_directfb="true", have_directfb="false")
3945                 ], have_directfb="false")
3946             ], have_directfb="false")
3947         ], have_directfb="false")
3948
3949         dnl Restore flags
3950         CPPFLAGS="${CPPFLAGS_save}"
3951         LIBS="${LIBS_save}"
3952
3953         if test "${have_directfb}" = "true"; then
3954             LIBS_mydirectfb="${LIBS_new} -lz -ldl -ldirectfb -lfusion -ldirect -lpthread"
3955             CPPFLAGS_mydirectfb="${CPPFLAGS_new}"
3956         fi
3957     else
3958         dnl Look for directfb-config
3959         AC_PATH_PROG(DIRECTFB_CONFIG, directfb-config, no, ${PATH})
3960         if test "${DIRECTFB_CONFIG}" != "no"; then
3961             CPPFLAGS_mydirectfb="`${DIRECTFB_CONFIG} --cflags`"
3962             LIBS_mydirectfb="`${DIRECTFB_CONFIG} --libs`"
3963             have_directfb="true"
3964         else
3965             dnl Trying with pkg-config
3966             PKG_CHECK_MODULES(DIRECTFB, directfb, [
3967                 CPPFLAGS_mydirectfb="${DIRECTFB_CFLAGS}"
3968                 LIBS_mydirectfb="${DIRECTFB_LIBS}"
3969                 have_directfb="true"
3970                 ], [have_directfb="false"])
3971         fi
3972     fi
3973     if test "${have_directfb}" = "true"; then
3974         VLC_ADD_PLUGIN([directfb])
3975         VLC_ADD_CPPFLAGS([directfb],[${CPPFLAGS_mydirectfb}])
3976         VLC_ADD_LIBS([directfb],[${LIBS_mydirectfb}])
3977     else
3978         AC_MSG_ERROR([cannot find directfb headers and/or libraries ])
3979     fi
3980 fi
3981
3982
3983
3984 dnl
3985 dnl  GGI module
3986 dnl
3987 AC_ARG_ENABLE(ggi,
3988   [  --enable-ggi            GGI support (default disabled)])
3989 if test "${enable_ggi}" = "yes"
3990 then
3991   AC_CHECK_HEADER([ggi/ggi.h],[
3992     VLC_ADD_PLUGIN([ggi])
3993     VLC_ADD_LIBS([ggi],[-lggi])
3994     AC_ARG_WITH(ggi,
3995       [  --with-ggi=PATH         path to libggi],
3996       [ if test "${with_ggi}" != "no" -a -n "${with_ggi}"
3997         then
3998           VLC_ADD_CPPFLAGS([ggi],[-I${with_ggi}/include])
3999           VLC_ADD_LIBS([ggi],[-L${with_ggi}/lib])
4000         fi ])
4001     ],[
4002        AC_MSG_ERROR([LibGGI development files can't be found])
4003     ])
4004 fi
4005
4006 dnl
4007 dnl  AA plugin
4008 dnl
4009 AC_ARG_ENABLE(aa,
4010   [  --enable-aa             aalib output (default disabled)])
4011 if test "${enable_aa}" = "yes"
4012 then
4013   AC_CHECK_HEADER(aalib.h,have_aa="true",have_aa="false")
4014   if test "${have_aa}" = "true"
4015   then
4016     VLC_ADD_PLUGIN([aa])
4017     VLC_ADD_LIBS([aa],[-laa])
4018   fi
4019 fi
4020
4021 dnl
4022 dnl  libcaca plugin
4023 dnl
4024 PKG_ENABLE_MODULES_VLC([CACA], [], [caca >= 0.99.beta14], [libcaca output],[auto])
4025
4026 dnl
4027 dnl  Audio plugins
4028 dnl
4029
4030 AC_ARG_WITH(,[Audio plugins:])
4031
4032 dnl
4033 dnl  OSS /dev/dsp module (enabled by default except on win32)
4034 dnl
4035 AC_ARG_ENABLE(oss,
4036   [  --enable-oss            Linux OSS /dev/dsp support (enabled on Linux)])
4037
4038 if test "${enable_oss}" != "no" &&
4039   (test "${SYS}" != "mingw32" -a "${SYS}" != "mingwce" ||
4040    test "${enable_oss}" = "yes")
4041 then
4042   AC_CHECK_HEADERS([soundcard.h sys/soundcard.h], [
4043     VLC_ADD_PLUGIN([oss])
4044     VLC_ADD_PLUGIN([access_oss])
4045     AC_CHECK_LIB(ossaudio,main,[VLC_ADD_LIBS([oss],[-lossaudio])
4046                                 VLC_ADD_LIBS([access_oss],[-lossaudio])])
4047   ])
4048 fi
4049
4050 dnl
4051 dnl  Pulseaudio module
4052 dnl
4053 PKG_ENABLE_MODULES_VLC([PULSE], [], [libpulse >= 0.9.11], [Pulseaudio support], [auto])
4054
4055 dnl
4056 dnl  Portaudio module
4057 dnl
4058 PKG_ENABLE_MODULES_VLC([PORTAUDIO], [], [portaudio-2.0], [Portaudio library support], [auto])
4059
4060 dnl
4061 dnl  ALSA module
4062 dnl
4063 PKG_ENABLE_MODULES_VLC([ALSA], [], [alsa >= 1.0.0], [Alsa sound support for linux], [auto])
4064 PKG_ENABLE_MODULES_VLC([ACCESS_ALSA], [access_alsa], [alsa >= 1.0.0], [Alsa access for linux], [auto])
4065
4066 dnl
4067 dnl  win32 waveOut plugin
4068 dnl
4069 AC_ARG_ENABLE(waveout,
4070   [  --enable-waveout        Win32 waveOut module (default enabled on Win32)])
4071 if test "${enable_waveout}" != "no"; then
4072   if test "${SYS}" = "mingw32"; then
4073     VLC_ADD_PLUGIN([waveout])
4074     VLC_ADD_LIBS([waveout],[-lwinmm])
4075   fi
4076   if test "${SYS}" = "mingwce"; then
4077     VLC_ADD_PLUGIN([waveout])
4078   fi
4079 fi
4080
4081 dnl
4082 dnl  CoreAudio plugin
4083 dnl
4084 AC_ARG_ENABLE(macosx-audio,
4085   [  --enable-macosx-audio   Mac OS X audio module (default enabled on MacOS X)])
4086 if test "x${enable_macosx_audio}" != "xno" &&
4087   (test "${SYS}" = "darwin" || test "${enable_macosx_audio}" = "yes")
4088 then
4089   AC_CHECK_HEADERS(CoreAudio/CoreAudio.h,
4090     [ VLC_ADD_PLUGIN([auhal])
4091       VLC_ADD_LDFLAGS([auhal],[-Wl,-framework,CoreAudio,-framework,AudioUnit,-framework,AudioToolbox,-framework,Carbon])
4092     ], [ AC_MSG_ERROR([cannot find CoreAudio headers]) ])
4093 fi
4094
4095 dnl
4096 dnl  Roku HD1000 audio
4097 dnl
4098 AC_ARG_ENABLE(hd1000a,
4099   [  --enable-hd1000a        HD1000 audio module (default enabled on HD1000)])
4100 if test "${enable_hd1000a}" != "no" -a "${CXX}" != "" &&
4101   (test "${SYS}" != "mingw32" -a "${SYS}" != "mingwce" ||
4102    test "${enable_hd1000a}" = "yes")
4103 then
4104   AC_LANG_PUSH([C++])
4105   AC_CHECK_HEADERS(deschutes/libraries/hdmachinex225/PCMAudioPlayer.h, [
4106     VLC_ADD_PLUGIN([hd1000a])
4107     AC_CHECK_LIB(HDMachineX225,main,VLC_ADD_LIBS([hd1000a],[-lHDMachineX225]))  ])
4108   AC_LANG_POP([C++])
4109 fi
4110
4111 dnl
4112 dnl  JACK modules
4113 dnl
4114 PKG_ENABLE_MODULES_VLC([JACK], [jack], [jack], [JACK audio I/O modules],[auto])
4115 PKG_ENABLE_MODULES_VLC([JACK], [access_jack], [jack], [JACK audio I/O modules],[auto])
4116
4117
4118 dnl
4119 dnl  CyberLink for C++ UPnP stack
4120 dnl
4121 AC_ARG_ENABLE(cyberlink,
4122   [  --enable-cyberlink      CyberLink for C++ UPnP stack (default disabled)])
4123   AS_IF([test "${enable_cyberlink}" = "yes" ], [
4124   AC_ARG_WITH(cyberlink-tree,
4125     [  --with-cyberlink-tree=PATH CyberLink for C++ tree for static linking])
4126
4127   dnl
4128   dnl test for --with-cyberlink-tree
4129   dnl
4130   AS_IF([test ! -z "${with_cyberlink_tree}" -a "${CXX}" != ""], [
4131     AC_LANG_PUSH(C++)
4132     real_cyberlink_tree="`cd ${with_cyberlink_tree} 2>/dev/null && pwd`"
4133     AS_IF([test -z "${real_cyberlink_tree}"], [
4134       dnl  The given directory can't be found
4135       AC_MSG_RESULT(no)
4136       AC_MSG_ERROR([cannot cd to ${with_cyberlink_tree}])
4137     ])
4138     CPPFLAGS_save="${CPPFLAGS}"
4139     CPPFLAGS_cyberlink="-I${real_cyberlink_tree}/include"
4140     CPPFLAGS="${CPPFLAGS} ${CPPFLAGS_cyberlink}"
4141     AC_CHECK_HEADERS([cybergarage/upnp/MediaServer.h],
4142       [ VLC_ADD_CXXFLAGS([upnp_cc], [${CPPFLAGS_cyberlink}])
4143         VLC_ADD_PLUGIN([upnp_cc])
4144       ],[
4145         AC_MSG_ERROR([cannot find CyberLink for C++ headers])
4146       ])
4147     AC_MSG_CHECKING(for libclink.a in ${with_cyberlink_tree})
4148     AS_IF([test -f "${real_cyberlink_tree}/lib/unix/libclink.a"], [
4149       AC_MSG_RESULT(${real_cyberlink_tree}/lib/unix/libclink.a)
4150       dnl The mere fact that we have to make such an ugly check sucks
4151       AC_MSG_CHECKING(for XML parser to link CyberLink with)
4152       LIBS_save="$LIBS"
4153       LIBS_cclink="no"
4154       for l in "`xml2-config --libs`" -lexpat -lxerces-c; do
4155         LIBS="$LIBS_save ${real_cyberlink_tree}/lib/unix/libclink.a -lpthread $l"
4156         AC_LINK_IFELSE([AC_LANG_PROGRAM([
4157 #include <cybergarage/upnp/media/player/MediaPlayer.h>
4158 using namespace CyberLink;
4159
4160 class testclass : public SearchResponseListener, public MediaPlayer
4161 {
4162     virtual void deviceSearchResponseReceived( SSDPPacket *)
4163     {
4164     }
4165
4166     public:
4167       testclass (void)
4168       {
4169         addSearchResponseListener (this);
4170         start ();
4171       }
4172 };
4173 ],[testclass l;])],[LIBS_cclink="$l"])
4174       done
4175       LIBS="${LIBS_save}"
4176       dnl should not happen - otherwise this needs fixing - hence FAILURE
4177       AS_IF([test "${LIBS_cclink}" = "no"],
4178         [AC_MSG_FAILURE([cannot find XML parser for CyberLink])])
4179       AC_MSG_RESULT([${LIBS_cclink}])
4180       VLC_ADD_LIBS([upnp_cc], [${real_cyberlink_tree}/lib/unix/libclink.a -lpthread ${LIBS_cclink}])
4181     ], [
4182       AC_MSG_RESULT(no)
4183       AC_MSG_ERROR([cannot find ${real_cyberlink_tree}/lib/unix/libclink.a, make sure you compiled CyberLink for C++ in ${with_cyberlink_tree}])
4184     ])
4185     CPPFLAGS="${CPPFLAGS_save}"
4186     AC_LANG_POP([C++])
4187   ])
4188 ])
4189
4190 dnl
4191 dnl UPnP Plugin (Intel SDK)
4192 dnl
4193 PKG_ENABLE_MODULES_VLC([UPNP], [upnp_intel], [libupnp], [Intel UPnp SDK],[auto])
4194
4195
4196 dnl
4197 dnl  Interface plugins
4198 dnl
4199
4200 AC_ARG_WITH(,[Interface plugins:])
4201
4202 dnl special case for BeOS
4203 if test "${SYS}" = "beos"
4204 then
4205     VLC_ADD_PLUGIN([beos])
4206 fi
4207
4208 dnl
4209 dnl Skins2 module
4210 dnl
4211 AC_ARG_ENABLE(skins2,
4212   [AS_HELP_STRING([--enable-skins2],[Skins2 interface module (default
4213    enabled except on MacOSX, BeOS and WinCE)])])
4214 if test "${enable_skins2}" = "yes" ||
4215   (test "${SYS}" != "darwin" && test "${SYS}" != "beos" &&
4216    test "${SYS}" != "mingwce" && test "${enable_skins2}" != "no"); then
4217
4218   dnl test for the required libraries
4219   skins2_missing_lib="no"
4220
4221   dnl freetype
4222   if test "${have_freetype}" != "yes"; then
4223     skins2_missing_lib="yes"
4224     if test "${enable_skins2}" = "yes"; then
4225       AC_MSG_ERROR([Could not find freetype (required for skins2)])
4226     fi
4227   fi
4228
4229   if test "${skins2_missing_lib}" = "no" && (test "${SYS}" = "mingw32"); then
4230     VLC_ADD_PLUGIN([skins2])
4231     ALIASES="${ALIASES} svlc"
4232     VLC_ADD_CPPFLAGS([skins2],[-U_OFF_T_ -U_off_t -Imodules/gui/skins2 -DWIN32_SKINS])
4233     VLC_ADD_CXXFLAGS([skins2],[-O2 -fno-rtti])
4234     VLC_ADD_LIBS([skins2],[-loleaut32 -lwinspool -lwinmm -lshell32 -lctl3d32 -ladvapi32 -lwsock32 -lgdi32 -lcomdlg32 -lole32 -luuid -lcomctl32])
4235
4236   else if test "${skins2_missing_lib}" = "no" && (test "${SYS}" = "darwin"); then
4237     VLC_ADD_PLUGIN([skins2])
4238     ALIASES="${ALIASES} svlc"
4239     VLC_ADD_CPPFLAGS([skins2],[-Imodules/gui/skins2 -DMACOSX_SKINS])
4240     VLC_ADD_CXXFLAGS([skins2],[-O2 -fno-rtti])
4241     VLC_ADD_LDFLAGS([skins2],[-Wl,-framework,Carbon])
4242
4243   else if test "${skins2_missing_lib}" = "no"; then
4244     VLC_ADD_PLUGIN([skins2])
4245     ALIASES="${ALIASES} svlc"
4246     VLC_ADD_CPPFLAGS([skins2],[-Imodules/gui/skins2 ${X_CFLAGS} -DX11_SKINS])
4247     VLC_ADD_CXXFLAGS([skins2],[-O2 -fno-rtti])
4248     VLC_ADD_LIBS([skins2],[${X_LIBS} ${X_PRE_LIBS} -lXext -lX11])
4249     need_xid_provider="no"
4250   fi fi fi
4251 fi
4252 AM_CONDITIONAL(BUILD_SKINS, [test "${enable_skins2}" = "yes" ||
4253          (test "${SYS}" != "darwin" && test "${SYS}" != "beos" &&
4254           test "${SYS}" != "mingwce" && test "${enable_skins2}" != "no")])
4255
4256 dnl
4257 dnl Hildon UI
4258 dnl
4259 AC_ARG_ENABLE(hildon,
4260   [  --enable-hildon         Hildon touchscreen UI (default disabled)])
4261 AS_IF([test "${enable_hildon}" = "yes"], [
4262   PKG_CHECK_MODULES(HILDON, [hildon-1 hildon-fm-2], [
4263     VLC_ADD_CFLAGS([hildon],[${HILDON_CFLAGS}])
4264     VLC_ADD_LIBS([hildon],[${HILDON_LIBS}])
4265     VLC_ADD_PLUGIN([hildon])
4266     ALIASES="${ALIASES} mvlc"
4267     need_xid_provider="no"
4268   ], [
4269     AS_IF([test "${enable_hildon}" = "yes"],[
4270       AC_MSG_ERROR([Hildon libraries not found])
4271     ])
4272     enable_hildon="no"
4273   ])
4274 ])
4275 AM_CONDITIONAL(BUILD_HILDON, [test "${enable_hildon}" = "yes"])
4276
4277 dnl
4278 dnl QT 4
4279 dnl
4280 AC_ARG_ENABLE(qt4,
4281   [  --enable-qt4            Qt 4 support (default enabled) ],, [
4282   AS_IF([test "${SYS}" = "darwin"], [enable_qt4=no])
4283 ])
4284 AS_IF([test "${enable_qt4}" != "no"], [
4285   PKG_CHECK_MODULES(QT4, [QtCore QtGui >= 4.4.0], [
4286     VLC_ADD_PLUGIN([qt4])
4287     ALIASES="${ALIASES} qvlc"
4288     AS_IF([test "${SYS}" != "mingw32" -a "${SYS}" != "mingwce" -a "${SYS}" != "darwin"], [
4289         VLC_ADD_LIBS([qt4],[$QT4_LIBS -lX11])
4290         need_xid_provider="no"
4291     ], [
4292         VLC_ADD_LIBS([qt4],[$QT4_LIBS -lole32])
4293     ])
4294     QT4LOCALEDIR="$(eval $PKG_CONFIG --variable=prefix QtCore)/share/qt4/translations/"
4295     AC_SUBST(QT4LOCALEDIR)
4296     VLC_ADD_CXXFLAGS([qt4],[$QT4_CFLAGS -DQT4LOCALEDIR=\\\\\\\"${QT4LOCALEDIR}\\\\\\\"])
4297     AC_PATH_PROGS(MOC, [moc-qt4 moc], moc,`eval $PKG_CONFIG --variable=exec_prefix QtCore`/bin)
4298     AC_PATH_PROG(RCC, rcc, rcc,`eval $PKG_CONFIG --variable=exec_prefix QtCore`/bin)
4299     AC_PATH_PROGS(UIC, [uic-qt4 uic], uic,`eval $PKG_CONFIG --variable=exec_prefix QtCore`/bin)
4300   ], [
4301     AS_IF([test "${enable_qt4}" = "yes"],[
4302       AC_MSG_ERROR([Qt 4 library not found])
4303     ],[
4304       AC_MSG_WARN([Qt 4 library not found])
4305     ])
4306     enable_qt4="no"
4307   ])
4308 ])
4309 AM_CONDITIONAL(ENABLE_QT4, [test "x$enable_qt4" != "xno"])
4310
4311 dnl
4312 dnl Simple test for skins2 dependency
4313 dnl
4314 AS_IF([test "${enable_skins2}" != "no" && test "x$enable_qt4" = "xno"], [
4315   AC_MSG_ERROR([The skins2 module depends on a the Qt4 development package. Without it you won't be able to open any dialog box from the interface, which makes the skins2 interface rather useless. Install the Qt4 development package or alternatively you can also configure with: --disable-qt4 --disable-skins2.])
4316 ])
4317
4318 dnl
4319 dnl  MacOS X video output/gui modules
4320 dnl
4321 AC_ARG_ENABLE(macosx,
4322   [  --enable-macosx         Mac OS X gui support (default enabled on Mac OS X)])
4323 if test "x${enable_macosx}" = "xyes"
4324 then
4325   VLC_ADD_LDFLAGS([macosx minimal_macosx],[-Wl,-framework,Cocoa])
4326   VLC_ADD_LDFLAGS([macosx minimal_macosx],[-Wl,-framework,OpenGL])
4327   VLC_ADD_LDFLAGS([macosx minimal_macosx],            [-Wl,-framework,Carbon])
4328   VLC_ADD_LDFLAGS([macosx minimal_macosx],            [-Wl,-framework,CoreServices])
4329   VLC_ADD_LDFLAGS([macosx minimal_macosx],            [-Wl,-framework,AGL])
4330   VLC_ADD_LDFLAGS([macosx],                           [-Wl,-framework,IOKit])
4331   VLC_ADD_LDFLAGS([macosx],                           [-F${CONTRIB_DIR}/Sparkle -Wl,-framework,Sparkle])
4332   VLC_ADD_OBJCFLAGS([macosx],                         [-F${CONTRIB_DIR}/Sparkle])
4333   dnl For bug report
4334   VLC_ADD_LDFLAGS([macosx],                           [-Wl,-framework,AddressBook])
4335   VLC_ADD_LDFLAGS([macosx],                           [-Wl,-framework,WebKit])
4336   VLC_ADD_OBJCFLAGS([macosx minimal_macosx], [-fobjc-exceptions] )
4337
4338   VLC_ADD_PLUGIN([macosx])
4339   VLC_ADD_PLUGIN([minimal_macosx])
4340 fi
4341
4342 dnl
4343 dnl  MacOS X related modules
4344 dnl
4345
4346 AC_ARG_ENABLE(macosx-vout,
4347   [  --enable-macosx-vout    Mac OS X video output module (default enabled on Mac OS X)])
4348 if test "x${enable_macosx_vout}" != "xno" &&
4349   (test "${SYS}" = "darwin" || test "${enable_macosx_vout}" = "yes")
4350 then
4351   VLC_ADD_LDFLAGS([vout_macosx],[-Wl,-framework,Cocoa])
4352   VLC_ADD_LDFLAGS([vout_macosx],[-Wl,-framework,OpenGL])
4353   VLC_ADD_PLUGIN([vout_macosx])
4354 fi
4355
4356 AC_ARG_ENABLE(macosx-dialog-provider,
4357   [  --enable-macosx-dialog-provider Mac OS X dialog module (default enabled on Mac OS X)])
4358 if test "x${enable_macosx_dialog_provider}" != "xno" &&
4359   (test "${SYS}" = "darwin" || test "${enable_macosx_dialog_provider}" = "yes")
4360 then
4361   VLC_ADD_LDFLAGS([macosx_dialog_provider],[-Wl,-framework,Cocoa])
4362   VLC_ADD_PLUGIN([macosx_dialog_provider])
4363 fi
4364
4365 AC_ARG_ENABLE(macosx-qtcapture,
4366   [  --enable-macosx-qtcapture Mac OS X qtcapture (iSight) module (default enabled on Mac OS X)])
4367 if test "x${enable_macosx_qtcapture}" != "xno" &&
4368   (test "${SYS}" = "darwin" || test "${enable_macosx_qtcapture}" = "yes")
4369 then
4370   VLC_ADD_LDFLAGS([qtcapture], [-Wl,-framework,Cocoa])
4371   VLC_ADD_LDFLAGS([qtcapture], [-Wl,-framework,QTKit])
4372   VLC_ADD_LDFLAGS([qtcapture], [-Wl,-framework,CoreAudio])
4373   VLC_ADD_LDFLAGS([qtcapture], [-Wl,-framework,QuartzCore])
4374   VLC_ADD_LDFLAGS([qtcapture], [-Wl,-framework,CoreVideo])
4375   VLC_ADD_PLUGIN([qtcapture])
4376 fi
4377
4378 AC_ARG_ENABLE(macosx-eyetv,
4379   [  --enable-macosx-eyetv   Mac OS X EyeTV (TNT Tuner) module (default enabled on Mac OS X)])
4380 if test "x${enable_macosx_eyetv}" != "xno" &&
4381   (test "${SYS}" = "darwin" || test "${enable_macosx_eyetv}" = "yes")
4382 then
4383   VLC_ADD_LDFLAGS([access_eyetv], [-Wl,-framework,Foundation])
4384   VLC_ADD_PLUGIN([access_eyetv])
4385 fi
4386
4387 AC_ARG_ENABLE(macosx-vlc-app,
4388   [  --enable-macosx-vlc-app build the VLC media player (default enabled on Mac OS X)])
4389 AM_CONDITIONAL(BUILD_MACOSX_VLC_APP, [test "${enable_macosx_vlc_app}" != "no" &&
4390     (test "${SYS}" = "darwin" || test "${enable_macosx_vlc_app}" = "yes") ])
4391
4392
4393 dnl
4394 dnl  ncurses module
4395 dnl
4396 AC_ARG_ENABLE(ncurses,
4397   [  --disable-ncurses       ncurses interface support (default enabled)],
4398   [if test "${enable_ncurses}" != "no"; then
4399     AC_CHECK_HEADER(ncurses.h,
4400       [AC_CHECK_LIB(ncursesw, mvprintw,
4401         [VLC_ADD_PLUGIN([ncurses])
4402         VLC_ADD_LIBS([ncurses],[-lncursesw])
4403         ALIASES="${ALIASES} nvlc"
4404         AC_DEFINE([HAVE_NCURSESW], 1, [Define to 1 if you have libncursesw.])
4405         AC_CHECK_LIB(ncursesw, tgetent, [],
4406           AC_CHECK_LIB(tinfow, tgetent, [VLC_ADD_LIBS([ncurses],[-ltinfow])],
4407             [AC_CHECK_LIB(tinfo, tgetent, [VLC_ADD_LIBS([ncurses],[-ltinfo])],
4408               [AS_IF([test "x${enable_ncurses}" != "x"],
4409                 [AC_MSG_ERROR([tgetent not found in ncursesw tinfow tinfo]
4410                )])])
4411             ]
4412           )
4413         )
4414         ],
4415         [AC_CHECK_LIB( ncurses, mvprintw,
4416           [VLC_ADD_PLUGIN([ncurses])
4417           ALIASES="${ALIASES} nvlc"
4418           VLC_ADD_LIBS([ncurses],[-lncurses])
4419           AC_CHECK_LIB(ncurses, tgetent, [],
4420             [AC_CHECK_LIB(tinfo, tgetent, [VLC_ADD_LIBS([ncurses],[-ltinfo])],
4421               [AS_IF([test "x${enable_ncurses}" != "x"],
4422                 [AC_MSG_ERROR([tgetent not found in ncurses tinfo])])]
4423             )]
4424           )],
4425           [AS_IF([test "x${enable_ncurses}" != "x"], [
4426             AC_MSG_ERROR([libncurses not found])])]
4427         )]
4428       )]
4429     )
4430   fi]
4431 )
4432
4433 dnl
4434 dnl  XOSD plugin
4435 dnl
4436 AC_ARG_ENABLE(xosd,
4437   [  --enable-xosd           xosd interface support (default disabled)])
4438 if test "${enable_xosd}" = "yes"
4439 then
4440   AC_CHECK_HEADERS(xosd.h,
4441     AC_CHECK_LIB(xosd, xosd_set_horizontal_offset, [
4442       VLC_ADD_PLUGIN([xosd])
4443       VLC_ADD_LIBS([xosd],[-lxosd])
4444     ])
4445   )
4446 fi
4447
4448 dnl
4449 dnl Framebuffer (overlay) plugin
4450 dnl
4451 AC_ARG_ENABLE(fbosd,
4452   [  --enable-fbosd          fbosd interface support (default disabled)])
4453 if test "${enable_fbosd}" = "yes"
4454 then
4455   AC_CHECK_HEADERS(linux/fb.h, [
4456     VLC_ADD_PLUGIN([fbosd])
4457  ])
4458 fi
4459
4460 dnl
4461 dnl Post-interface configuration checks
4462 dnl
4463 AS_IF([test "$need_xid_provider" = "yes"], [
4464   AC_MSG_ERROR([X11 video outputs need a window provider (Qt4, Skins2, Hildon or xcb-utils), but none were found. Please install xcb-keysyms.])
4465 ])
4466
4467 dnl
4468 dnl Visualisation plugin
4469 dnl
4470 AC_ARG_ENABLE(visual,
4471   [  --enable-visual         visualisation plugin (default enabled)])
4472 if test "${enable_visual}" != "no"
4473 then
4474     VLC_ADD_PLUGIN([visual])
4475 fi
4476
4477 dnl
4478 dnl  goom visualization plugin
4479 dnl
4480 PKG_ENABLE_MODULES_VLC([GOOM], [], [libgoom2], [goom visualization plugin], [auto])
4481
4482 dnl
4483 dnl libprojectM visualization plugin
4484 dnl
4485 PKG_ENABLE_MODULES_VLC([PROJECTM], [], [libprojectM], [projectM visualization plugin], [auto])
4486
4487 dnl
4488 dnl  AtmoLight (homebrew AmbiLight)
4489 dnl
4490 AC_ARG_ENABLE(atmo,
4491 AS_HELP_STRING([--disable-atmo],[AtmoLight (homebrew Philips ambilight)
4492                 (broken, default disabled)]),, [enable_atmo="no"])
4493 AS_IF([test "${enable_atmo}" != no], [
4494   AS_IF([test "${SYS}" = "mingw32" -o "${SYS}" = "linux"], [
4495     AC_LANG_PUSH(C++)
4496     VLC_ADD_PLUGIN([atmo])
4497     AC_LANG_POP(C++)
4498   ])
4499 ])
4500
4501 dnl
4502 dnl  Bonjour services discovery
4503 PKG_ENABLE_MODULES_VLC([BONJOUR], [], [avahi-client >= 0.6], [Bonjour services discovery], [auto])
4504
4505 dnl
4506 dnl  libudev services discovery
4507 PKG_ENABLE_MODULES_VLC([UDEV], [], [libudev >= 142], [Linux udev services discovery], [auto])
4508
4509 dnl
4510 dnl MTP devices services discovery
4511 PKG_ENABLE_MODULES_VLC([MTP], [], [libmtp >= 0.3.0],[MTP devices support],[auto])
4512
4513 dnl
4514 dnl  Lirc plugin
4515 dnl
4516 AC_ARG_ENABLE(lirc,
4517   [  --enable-lirc           lirc support (default disabled)])
4518 if test "${enable_lirc}" = "yes"
4519 then
4520   AC_CHECK_HEADER(lirc/lirc_client.h, AC_CHECK_LIB(lirc_client, lirc_init, have_lirc="true", have_lirc="false"),have_lirc="false")
4521   if test "${have_lirc}" = "true"
4522   then
4523     VLC_ADD_PLUGIN([lirc])
4524     VLC_ADD_LIBS([lirc],[-llirc_client])
4525   fi
4526 fi
4527
4528
4529 AC_ARG_WITH(,[Misc options:])
4530
4531 dnl
4532 dnl libgcrypt
4533 dnl
4534 AC_ARG_ENABLE(libgcrypt,
4535   [  --disable-libgcrypt     gcrypt support (default enabled)])
4536 AS_IF([test "${enable_libgcrypt}" != "no"], [
4537   AC_CHECK_DECL([GCRYCTL_SET_THREAD_CBS], [
4538     libgcrypt-config --version >/dev/null || \
4539         AC_MSG_ERROR([gcrypt.h present but libgcrypt-config could not be found])
4540     AC_CHECK_LIB(gcrypt, gcry_control, [
4541       have_libgcrypt="yes"
4542       GCRYPT_CFLAGS="`libgcrypt-config --cflags`"
4543       GCRYPT_LIBS="`libgcrypt-config --libs`"
4544     ], [
4545       AC_MSG_ERROR([libgcrypt not found. Install libgcrypt or use --disable-libgcrypt. Have a nice day.])
4546     ], [`libgcrypt-config --libs`])
4547   ], [
4548     AC_MSG_ERROR([libgcrypt version 1.1.94 or higher not found. Install libgcrypt or use --disable-libgcrypt. Have a nice day.])
4549   ], [#include <gcrypt.h>]
4550   )
4551 ])
4552
4553 if test "${SYS}" = "mingw32" -o "${SYS}" = "mingwce"; then
4554   AS_IF([test "${have_libgcrypt}" = "yes"],[
4555     VLC_ADD_LIBS([rtp stream_out_rtp], [${GCRYPT_LIBS}])
4556   ])
4557 fi
4558 AC_SUBST(GCRYPT_CFLAGS)
4559 AC_SUBST(GCRYPT_LIBS)
4560 AM_CONDITIONAL([HAVE_GCRYPT], [test "${have_libgcrypt}" = "yes"])
4561
4562 dnl
4563 dnl TLS/SSL
4564 dnl
4565 AC_ARG_ENABLE(gnutls,
4566   [  --enable-gnutls         gnutls TLS/SSL support (default enabled)])
4567
4568 AS_IF([test "${have_libgcrypt}" != "yes"], [
4569   AS_IF([test "${enable_gnutls}" = "yes"], [
4570     AC_MSG_ERROR([--enable-gnutls and --disable-libgcrypt are mutually exclusive.])
4571   ])
4572   enable_gnutls="no"
4573 ])
4574 AS_IF([test "${enable_gnutls}" != "no"], [
4575   PKG_CHECK_MODULES(GNUTLS, [gnutls >= 1.7.4], [
4576     VLC_ADD_PLUGIN([gnutls])
4577     VLC_ADD_CFLAGS([gnutls], [$GNUTLS_CFLAGS])
4578     AS_IF([test "${SYS}" = "mingw32"], [
4579       dnl pkg-config --libs gnutls omits these
4580       VLC_ADD_LIBS([gnutls], [-lz])
4581       VLC_ADD_LIBS([gnutls], [${LTLIBINTL}])
4582     ])
4583     dnl The GnuTLS plugin invokes gcry_control directly.
4584     AS_IF([test "${have_libgcrypt}" = "yes"],[
4585       VLC_ADD_LIBS([gnutls], [${GCRYPT_LIBS}])
4586       VLC_ADD_CFLAGS([gnutls], [${GCRYPT_CFLAGS}])
4587     ])
4588     VLC_ADD_LIBS([gnutls], [$GNUTLS_LIBS])
4589   ], [
4590     AS_IF([test "${enable_gnutls}" = "yes"], [
4591       AC_MSG_ERROR([gnutls not present or too old (version 1.7.4 required)])
4592     ])
4593   ])
4594 ])
4595
4596
4597 dnl
4598 dnl RemoteOSD plugin (VNC client as video filter)
4599 dnl
4600 AC_ARG_ENABLE(remoteosd,
4601   [  --disable-remoteosd     RemoteOSD plugin (default enabled)])
4602
4603 AS_IF([test "${enable_remoteosd}" != "no"], [
4604   AS_IF([test "${have_libgcrypt}" = "yes"],[
4605     VLC_ADD_PLUGIN([remoteosd])
4606     VLC_ADD_LIBS([remoteosd], ${GCRYPT_LIBS})
4607     VLC_ADD_CFLAGS([remoteosd], ${GCRYPT_CFLAGS})
4608   ], [
4609     AC_MSG_ERROR([libgcrypt support required for RemoteOSD plugin])
4610   ])
4611 ])
4612
4613
4614 dnl
4615 dnl RAOP plugin
4616 dnl
4617 AC_MSG_CHECKING([whether to enable RAOP plugin])
4618 AS_IF([test "${have_libgcrypt}" = "yes"], [
4619   AC_MSG_RESULT(yes)
4620   VLC_ADD_PLUGIN([stream_out_raop])
4621   VLC_ADD_LIBS([stream_out_raop], [${GCRYPT_LIBS} -lgpg-error])
4622   VLC_ADD_CFLAGS([stream_out_raop], [${GCRYPT_CFLAGS}])
4623 ], [
4624   AC_MSG_RESULT(no)
4625   AC_MSG_WARN([libgcrypt support required for RAOP plugin])
4626 ])
4627
4628
4629 dnl
4630 dnl OSSO (Maemo screen blanking) plugin
4631 dnl
4632 PKG_ENABLE_MODULES_VLC([OSSO], [], [libosso], [Maemo support], [auto])
4633
4634 AS_IF([test -f "/etc/maemo_version"], [
4635   AC_DEFINE([HAVE_MAEMO], 1, [Define to 1 if building for the Maemo platform.])
4636 ])
4637
4638
4639 dnl
4640 dnl update checking system
4641 dnl
4642 AC_ARG_ENABLE(update-check,
4643   [  --enable-update-check   update checking system (default disabled)])
4644 if test "${enable_update_check}" = "yes"
4645 then
4646   if test "${have_libgcrypt}" != "yes"
4647   then
4648     AC_MSG_ERROR([libgcrypt is required for update checking system])
4649   fi
4650   VLC_ADD_LIBS([libvlccore], [${GCRYPT_LIBS}])
4651   VLC_ADD_CFLAGS([libvlccore], [${GCRYPT_CFLAGS}])
4652   AC_DEFINE([UPDATE_CHECK], 1, [Define if you want to use the VLC update mechanism])
4653 fi
4654
4655 dnl
4656 dnl SQLite
4657 dnl
4658 AC_ARG_WITH(sqlite,
4659   [  --with-sqlite=PATH      sqlite path linking])
4660 if test "${SYS}" != "darwin"; then
4661   PKG_ENABLE_MODULES_VLC([SQLITE], [], [sqlite3 >= 3.6.0], [sqlite3], [auto])
4662 else
4663   if test "${enable_sqlite}" != "no"
4664   then
4665     AC_CHECK_HEADERS(sqlite3.h, [
4666         VLC_ADD_PLUGIN([sqlite])
4667         if test "${with_sqlite}" != "no" -a -n "${with_sqlite}"; then
4668           AC_MSG_CHECKING(existence of sqlite directory in ${with_sqlite})
4669           real_sqlite="`cd ${with_sqlite} 2>/dev/null && pwd`"
4670           if test -z "${real_sqlite}"
4671           then
4672             dnl  The given directory can't be found
4673             AC_MSG_RESULT(no)
4674             AC_MSG_ERROR([cannot cd to ${with_sqlite}])
4675           fi
4676           VLC_ADD_CFLAGS([sqlite],[-I${with_sqlite}/include])
4677           VLC_ADD_LIBS([sqlite], [-L${with_sqlite}/lib -lsqlite3])
4678           AC_MSG_RESULT(yes)
4679         else
4680           VLC_ADD_LIBS([sqlite], [-lsqlite3])
4681         fi
4682         AC_DEFINE([SQLITE_MODULE], 1, [Define if you want to use SQLite module]) ],
4683         AC_MSG_ERROR([sqlite3 is required for sqlite module]) )
4684   fi
4685 fi
4686 AM_CONDITIONAL([HAVE_SQLITE], [test "${enable_sqlite}" != "no"])
4687
4688
4689 dnl
4690 dnl  Endianness check
4691 dnl
4692 AC_C_BIGENDIAN
4693 AS_IF([test "${ac_cv_c_bigendian}" = "yes"], [
4694   DEFS_BIGENDIAN="-DWORDS_BIGENDIAN=1"
4695 ], [
4696   DEFS_BIGENDIAN=""
4697 ])
4698 AC_SUBST(DEFS_BIGENDIAN)
4699
4700 dnl
4701 dnl  DLL loader copied from MPlayer copied from somewhere else (WINE ?)
4702 dnl
4703 loader=false
4704 AC_ARG_ENABLE(loader,
4705   AS_HELP_STRING([--enable-loader],[build DLL loader for ELF i386 platforms
4706                   (default disabled)]))
4707 AM_CONDITIONAL(LOADER, [test "${enable_loader}" = "yes"])
4708 AS_IF([test "${enable_loader}" = "yes"],
4709   [ VLC_ADD_PLUGIN([dmo])
4710     VLC_ADD_CPPFLAGS([dmo],[-I\\\${top_srcdir}/libs/loader])
4711     VLC_ADD_LIBS([dmo],[\\\${top_builddir}/libs/loader/libloader.la -lpthread])
4712     VLC_ADD_CPPFLAGS([quicktime],[-I\\\${top_srcdir}/libs/loader])
4713     VLC_ADD_LIBS([quicktime],[\\\${top_builddir}/libs/loader/libloader.la -lpthread])
4714     VLC_ADD_CPPFLAGS([realaudio],[-I\\\${top_srcdir}/libs/loader -DLOADER])
4715     VLC_ADD_LIBS([realaudio],[\\\${top_builddir}/libs/loader/libloader.la])
4716     VLC_ADD_CPPFLAGS([realvideo],[-I\\\${top_srcdir}/libs/loader -DLOADER])
4717     VLC_ADD_LIBS([realvideo],[\\\${top_builddir}/libs/loader/libloader.la])
4718   ])
4719
4720 AC_ARG_WITH(,[Components:])
4721
4722 dnl
4723 dnl  the VLC binary
4724 dnl
4725 AC_ARG_ENABLE(vlc,
4726   [  --enable-vlc            build the VLC media player (default enabled)])
4727 AM_CONDITIONAL(BUILD_VLC, [test "${enable_vlc}" != "no"])
4728
4729 dnl
4730 dnl  Microsoft ActiveX support
4731 dnl
4732 activex=false
4733 AC_ARG_ENABLE(activex,
4734   AS_HELP_STRING([--enable-activex],[build a vlc-based ActiveX control
4735                   (default enabled on Win32)]))
4736 AC_ARG_WITH(wine-sdk-path,
4737   [  --with-wine-sdk-path=PATH path to wine sdk])
4738 if test "${enable_activex}" != "no"
4739 then
4740   if test "${SYS}" = "mingw32"
4741   then
4742     AC_CHECK_PROGS(MIDL, [midl], no)
4743     if test "${with_wine_sdk_path}" != ""
4744     then
4745        WINE_SDK_PATH=${with_wine_sdk_path}
4746        AC_PATH_PROG(WIDL, widl, no, [$WINE_SDK_PATH/bin:$WINE_SDK_PATH/tools/widl])
4747     else
4748        WIDL=no
4749     fi
4750     AC_LANG_PUSH(C++)
4751     AC_CHECK_HEADERS(ole2.h,
4752       [AC_CHECK_HEADERS(olectl.h,
4753         [ VLC_ADD_CPPFLAGS([activex],[-DUNICODE -D_UNICODE -D_MIDL_USE_GUIDDEF_])
4754           VLC_ADD_CXXFLAGS([activex],[-fno-exceptions])
4755           VLC_ADD_LIBS([activex],[-lole32 -loleaut32 -luuid -lshlwapi])
4756           AC_CHECK_HEADERS(objsafe.h,
4757             VLC_ADD_CXXFLAGS([activex],[-DHAVE_OBJSAFE_HEADER]),,
4758             [
4759              #if HAVE_OLE2_H
4760              #   include <ole2.h>
4761              #endif
4762             ]
4763           )
4764           activex=:
4765           PLUGINS_BINDINGS="${PLUGINS_BINDINGS} activex"
4766         ],
4767         [ AC_MSG_ERROR([required OLE headers are missing from your system]) ]
4768       )],
4769       [ AC_MSG_ERROR([required OLE headers are missing from your system]) ]
4770     )
4771     AC_LANG_POP(C++)
4772   fi
4773 fi
4774 AC_ARG_VAR(MIDL, [Microsoft IDL compiler (Win32 platform only)])
4775 AM_CONDITIONAL(HAS_MIDL_COMPILER, test "${MIDL}" != "no")
4776 AC_ARG_VAR(WIDL, [Wine IDL compiler (requires Wine SDK)])
4777 AM_CONDITIONAL(HAS_WIDL_COMPILER, test "${WIDL}" != "no")
4778 AM_CONDITIONAL(BUILD_ACTIVEX,${activex})
4779
4780 dnl
4781 dnl  Mozilla plugin
4782 dnl
4783 mozilla=false
4784 AC_ARG_ENABLE(mozilla,
4785   AS_HELP_STRING([--enable-mozilla],[build a vlc-based Firefox/Mozilla plugin
4786                   (default disabled)]))
4787 AC_ARG_WITH(mozilla-sdk-path,
4788   [  --with-mozilla-sdk-path=PATH path to mozilla sdk])
4789 AC_ARG_WITH(mozilla-pkg,
4790   [  --with-mozilla-pkg=PKG  look for PKG.pc to build the mozilla plugin.])
4791 AC_LANG_PUSH(C++)
4792 if test "${enable_mozilla}" = "yes"
4793 then
4794   AS_IF([test "${with_mozilla_sdk_path}" = "" -o "${with_mozilla_sdk_path}" = "no"],
4795     [
4796     dnl pkg-config
4797     dnl As we want to do a loop due to the number of name possible for the .pc
4798     dnl we can't use the pkg-config macros.
4799
4800     AC_ARG_VAR([MOZILLA_CFLAGS], [C compiler flags for Mozilla, overriding pkg-config])
4801     AC_ARG_VAR([MOZILLA_LIBS], [linker flags for Mozilla, overriding pkg-config])
4802     AC_MSG_NOTICE([Checking for Mozilla])
4803     found=0
4804     if test -n "$MOZILLA_CFLAGS" -a -n "$MOZILLA_LIBS"
4805     then
4806       found=1
4807     else
4808       if test -n "$PKG_CONFIG"; then
4809         for i in "${with_mozilla_pkg}" libxul {seamonkey,iceape,xulrunner,firefox,iceweasel,mozilla}-plugin; do
4810           echo "Trying to find $i.pc files" >&5
4811           if $PKG_CONFIG --exists --print-errors "$i" 2>&5
4812           then
4813             echo "Using $i.pc files." >&5
4814             echo "Using $i.pc files." >&6
4815             found=1
4816             MOZILLA_CFLAGS=$(eval $PKG_CONFIG --cflags "$i" )
4817             MOZILLA_LIBS=$(eval $PKG_CONFIG --libs "$i" )
4818             break
4819           fi
4820         done
4821       fi
4822     fi
4823     AS_IF( [test $found = 1],[
4824         CPPFLAGS="${CPPFLAGS_save} ${MOZILLA_CFLAGS}"
4825         MOZILLA_REQUIRED_HEADERS=1
4826         AC_CHECK_HEADERS([npfunctions.h])
4827         AC_CHECK_HEADERS(npapi.h,,MOZILLA_REQUIRED_HEADERS=0)
4828         AC_CHECK_HEADERS(npruntime.h,,MOZILLA_REQUIRED_HEADERS=0,
4829           [#if HAVE_NPAPI_H
4830            # include <npapi.h>
4831            #endif
4832           ])
4833         if test "${MOZILLA_REQUIRED_HEADERS}" = "0"; then
4834             AC_MSG_ERROR([Please install the Firefox development tools; mozilla-config.h, plugin/npapi.h and plugin/npruntime.h were not found.])
4835         fi
4836         MOZILLA_REQUIRED_HEADERS=
4837         mozilla=:
4838         AS_IF([ test "${SYS}" != "mingw32" -a "${SYS}" != "mingwce"],[
4839            VLC_ADD_CPPFLAGS([mozilla],[-DXP_UNIX -DOJI])
4840            AS_IF([ test "${SYS}" != "darwin"],[
4841              PKG_CHECK_MODULES(XPM, [xpm xt],[
4842                 VLC_ADD_CPPFLAGS([mozilla],[-DMOZ_X11])
4843              ],[
4844                 AC_MSG_ERROR([Please install the libXpm and libXt development files.])
4845              ])
4846           ])
4847         ])
4848         VLC_ADD_CPPFLAGS([mozilla],[${CPPFLAGS} ${XPM_CFLAGS}])
4849         VLC_ADD_LIBS([mozilla],[${MOZILLA_LIBS} ${XPM_LIBS}])
4850         VLC_ADD_PLUGIN([mozilla])
4851         PLUGINS_BINDINGS="${PLUGINS_BINDINGS} mozilla"
4852         MOZILLA_CONFIG=
4853         CPPFLAGS="${CPPFLAGS_save}"
4854           ],
4855           [
4856             AC_PATH_PROGS(MOZILLA_CONFIG,
4857             [mozilla-config seamonkey-config xulrunner-config],
4858         [no])
4859             test "${MOZILLA_CONFIG}" = "no" && AC_MSG_ERROR([Please install the Mozilla development tools. mozilla-config was not found.])
4860           ]
4861         )
4862     dnl pkg-config failed but we might have found a mozilla-config
4863     AS_IF( [test ! -z "${MOZILLA_CONFIG}"],[
4864       if ${MOZILLA_CONFIG} --defines | grep -q 'MOZ_X11=1'; then
4865         LDFLAGS="${LDFLAGS_save} ${X_LIBS} ${X_PRE_LIBS}"
4866         AC_CHECK_LIB(Xt,XtStrings,
4867          [
4868            VLC_ADD_CPPFLAGS([mozilla],[${X_CFLAGS}])
4869            VLC_ADD_LIBS([mozilla],[${X_LIBS} ${X_PRE_LIBS} -lXt -lX11 -lSM -lICE -lXpm])
4870          ],
4871          [],
4872          [[${X_LIBS} ${X_PRE_LIBS} -lX11 -lSM -lICE -lXpm]
4873         ])
4874         AC_CHECK_HEADERS(X11/xpm.h,,AC_MSG_ERROR([Please install libXpm-devel library for required X11/xpm.h]))
4875         LDFLAGS="${LDFLAGS_save}"
4876       fi
4877
4878       mozilla=:
4879       PLUGINS_BINDINGS="${PLUGINS_BINDINGS} mozilla"
4880       VLC_ADD_CPPFLAGS([mozilla],[[`${MOZILLA_CONFIG} --cflags plugin java`]])
4881       VLC_ADD_LIBS([mozilla],[`${MOZILLA_CONFIG} --libs plugin`])
4882       CPPFLAGS="${CPPFLAGS_save} ${CPPFLAGS_mozilla}"
4883       MOZILLA_REQUIRED_HEADERS=1
4884       AC_CHECK_HEADERS(mozilla-config.h,,MOZILLA_REQUIRED_HEADERS=0)
4885       AC_CHECK_HEADERS(npapi.h,,MOZILLA_REQUIRED_HEADERS=0)
4886       AC_CHECK_HEADERS(npruntime.h,,MOZILLA_REQUIRED_HEADERS=0,
4887         [#if HAVE_NPAPI_H
4888          # include <npapi.h>
4889          #endif
4890         ])
4891       if test "${MOZILLA_REQUIRED_HEADERS}" = "0"
4892       then
4893         AC_MSG_ERROR([Please install the Mozilla development tools, required headers were not found.])
4894       fi
4895       MOZILLA_REQUIRED_HEADERS=
4896       CPPFLAGS="${CPPFLAGS_save}"
4897       MOZILLA_SDK_PATH="`${MOZILLA_CONFIG} --prefix`"
4898     ])
4899     dnl End of moz_sdk = ""
4900   ],[
4901     dnl special case for mingw32
4902     if test "${SYS}" = "mingw32"
4903     then
4904       AC_CHECK_TOOL(CYGPATH, cygpath, "")
4905       dnl latest gecko sdk does not have an xpcom directory
4906       if test -d "${with_mozilla_sdk_path}/xpcom"; then
4907           mozilla_sdk_xpcom="/xpcom"
4908       fi
4909     fi
4910
4911     real_mozilla_sdk="`cd ${with_mozilla_sdk_path} 2>/dev/null && pwd`"
4912     CPPFLAGS="${CPPFLAGS_save} -I${real_mozilla_sdk} -I${real_mozilla_sdk}/include"
4913     MOZILLA_REQUIRED_HEADERS=1
4914     AC_CHECK_HEADERS(mozilla-config.h,,MOZILLA_REQUIRED_HEADERS=0)
4915     AC_CHECK_HEADERS(npapi.h,,MOZILLA_REQUIRED_HEADERS=0)
4916     AC_CHECK_HEADERS(npruntime.h,,MOZILLA_REQUIRED_HEADERS=0,
4917         [#if HAVE_NPAPI_H
4918           #include <npapi.h>
4919           #endif
4920         ])
4921     if test "${MOZILLA_REQUIRED_HEADERS}" = "0"
4922     then
4923         AC_MSG_ERROR([Please install the Mozilla development tools, required headers were not found.])
4924     fi
4925     MOZILLA_REQUIRED_HEADERS=
4926     mozilla=:
4927     PLUGINS_BINDINGS="${PLUGINS_BINDINGS} mozilla"
4928     VLC_ADD_CPPFLAGS([mozilla],[-DXPCOM_GLUE -DHAVE_CPP_MODERN_SPECIALIZE_TEMPLATE_SYNTAX -I${real_mozilla_sdk} -I${real_mozilla_sdk}/include -I${real_mozilla_sdk}/embedstring/include -I${real_mozilla_sdk}/xpcom/include -I${real_mozilla_sdk}/nspr/include -I${real_mozilla_sdk}/string/include -I${real_mozilla_sdk}/plugin/include -I${real_mozilla_sdk}/java/include])
4929     if ${need_xpcom_libs}; then
4930        VLC_ADD_LIBS([mozilla],[-L${real_mozilla_sdk}/embedstring/bin -L${real_mozilla_sdk}/xpcom/bin -L${real_mozilla_sdk}/nspr/bin -L${real_mozilla_sdk}/string/bin -L${real_mozilla_sdk}/lib -lnspr4 -lplds4 -lplc4 -lxpcomglue])
4931       if test "${SYS}" = "mingw32"; then
4932         dnl latest gecko sdk does not have embedstring
4933         if test -d "${real_mozilla_sdk}/embedstring/bin"
4934         then
4935           VLC_ADD_LIBS([mozilla],[-lembedstring])
4936         fi
4937       fi
4938     fi
4939     MOZILLA_SDK_PATH="${real_mozilla_sdk}"
4940
4941     if test -n "${CYGPATH}"; then
4942       real_mozilla_sdk="`${CYGPATH} -w ${real_mozilla_sdk}`"
4943     fi
4944     CPPFLAGS="${CPPFLAGS_save}"
4945  ])
4946 fi
4947 AC_LANG_POP(C++)
4948 AM_CONDITIONAL(BUILD_MOZILLA,${mozilla})
4949
4950 dnl
4951 dnl  test plugins
4952 dnl
4953 AC_ARG_ENABLE(testsuite,
4954   [  --enable-testsuite      build test modules (default disabled)])
4955 if test "${enable_testsuite}" = "yes"
4956 then
4957   TESTS="test1 test2 test3 test4"
4958
4959   dnl  we define those so that bootstrap sets the right linker
4960   VLC_ADD_CXXFLAGS([test2],[])
4961   VLC_ADD_OBJCFLAGS([test3],[])
4962   dnl  this one is needed until automake knows what to do
4963   VLC_ADD_LIBS([test3],[-lobjc])
4964
4965   VLC_ADD_PLUGIN([test1])
4966   VLC_ADD_PLUGIN([test2])
4967   VLC_ADD_PLUGIN([test3])
4968   VLC_ADD_PLUGIN([test4])
4969 fi
4970
4971 dnl
4972 dnl  Plugin and builtin checks
4973 dnl
4974 plugin_support=yes
4975
4976 dnl Automagically disable plugins if there is no system support for
4977 dnl dynamically loadable files (.so, .dll, .dylib).
4978 dnl don't forget vlc-win32 still can load .dll as plugins
4979 AS_IF([test "${ac_cv_have_plugins}" = "no"], [
4980   AC_MSG_WARN([*** No plugin support! Building statically! ***])
4981   plugin_support=no
4982 ])
4983
4984 AS_IF([test "${plugin_support}" != "no"], [
4985   AC_DEFINE(HAVE_DYNAMIC_PLUGINS, 1, [Define if dynamic plugins are supported])
4986 ])
4987
4988 dnl
4989 dnl Pic and shared libvlc stuff
4990 dnl
4991 AS_IF([test "${SYS}" = "mingw32"], [
4992   FILE_LIBVLCCORE_DLL="!define LIBVLCCORE_DLL libvlccore.dll"
4993   FILE_LIBVLC_DLL="!define LIBVLC_DLL libvlc.dll"
4994 ])
4995
4996 dnl
4997 dnl  Stuff used by the program
4998 dnl
4999 VERSION_MESSAGE="${VERSION} ${CODENAME}"
5000 COPYRIGHT_MESSAGE="VLC media player - version ${VERSION_MESSAGE} - (c) ${COPYRIGHT_YEARS} the VideoLAN team"
5001 AC_DEFINE_UNQUOTED(VERSION_MESSAGE, "${VERSION_MESSAGE}", [Simple version string])
5002 AC_DEFINE_UNQUOTED(COPYRIGHT_MESSAGE, "${COPYRIGHT_MESSAGE}", [Copyright string])
5003 AC_DEFINE_UNQUOTED(COPYRIGHT_YEARS, "${COPYRIGHT_YEARS}", [The copyright years])
5004 AC_DEFINE_UNQUOTED(CONFIGURE_LINE, "${CONFIGURE_LINE}", [The ./configure command line])
5005 AC_DEFINE_UNQUOTED(PACKAGE_VERSION_MAJOR,"${VERSION_MAJOR}", [version major number])
5006 AC_DEFINE_UNQUOTED(PACKAGE_VERSION_MINOR,"${VERSION_MINOR}", [version minor number])
5007 AC_DEFINE_UNQUOTED(PACKAGE_VERSION_REVISION,"${VERSION_REVISION}", [version minor number])
5008 AC_DEFINE_UNQUOTED(PACKAGE_VERSION_EXTRA,"${VERSION_EXTRA}", [version minor number])
5009 AC_SUBST(COPYRIGHT_MESSAGE)
5010 AC_SUBST(VERSION_MESSAGE)
5011 AC_SUBST(VERSION_MAJOR)
5012 AC_SUBST(VERSION_MINOR)
5013 AC_SUBST(VERSION_REVISION)
5014 AC_SUBST(VERSION_EXTRA)
5015 AC_SUBST(COPYRIGHT_YEARS)
5016 AC_DEFINE_UNQUOTED(VLC_COMPILE_BY, "`whoami`", [user who ran configure])
5017 AC_DEFINE_UNQUOTED(VLC_COMPILE_HOST, "`hostname -s 2>/dev/null || hostname`", [host which ran configure])
5018 AC_DEFINE_UNQUOTED(VLC_COMPILE_DOMAIN, "`dnsdomainname 2>/dev/null || domainname 2>/dev/null || echo unknown`", [domain of the host which ran configure])
5019 AC_DEFINE_UNQUOTED(VLC_COMPILER, "`$CC -v 2>&1 | tail -n 1`", [compiler])
5020 dnl Win32 need s a numerical version_extra.
5021 case $( echo ${VERSION_EXTRA}|wc -m ) in
5022        "1") VERSION_EXTRA_RC="0";;
5023        "2") VERSION_EXTRA_RC=$( echo ${VERSION_EXTRA}|tr "abcdefghi" "123456789") ;;
5024        *) VERSION_EXTRA_RC="99"
5025 esac
5026 AC_SUBST(VERSION_EXTRA_RC)
5027 dnl
5028 dnl  Handle substvars that use $(top_srcdir)
5029 dnl
5030 VLC_CONFIG="top_srcdir=\"\$(top_srcdir)\" top_builddir=\"\$(top_builddir)\" \$(top_builddir)/vlc-config"
5031 AC_SUBST(VLC_CONFIG)
5032 CPPFLAGS_save="-I\$(top_srcdir)/include -I\$(top_builddir)/include ${CPPFLAGS_save}"
5033
5034 dnl
5035 dnl  Restore *FLAGS
5036 dnl
5037 VLC_RESTORE_FLAGS
5038
5039 dnl
5040 dnl Sort the modules list
5041 dnl
5042 PLUGINS=$( (for i in `echo $PLUGINS`; do echo $i; done)|sort|xargs )
5043
5044 dnl
5045 dnl  Create the vlc-config script
5046 dnl
5047 LDFLAGS_libvlc="${LDFLAGS_libvlc} ${LDFLAGS_builtin}"
5048
5049 dnl
5050 dnl  Configuration is finished
5051 dnl
5052 AC_SUBST(SYS)
5053 AC_SUBST(ARCH)
5054 AC_SUBST(ALIASES)
5055 AC_SUBST(ASM)
5056 AC_SUBST(MOC)
5057 AC_SUBST(RCC)
5058 AC_SUBST(UIC)
5059 AC_SUBST(WINDRES)
5060 AC_SUBST(MOZILLA_SDK_PATH)
5061 AC_SUBST(WINE_SDK_PATH)
5062 AC_SUBST(LIBEXT)
5063 AC_SUBST(AM_CPPFLAGS)
5064 AC_SUBST(MACOSX_DEPLOYMENT_TARGET)
5065 AC_SUBST(FILE_LIBVLCCORE_DLL)
5066 AC_SUBST(FILE_LIBVLC_DLL)
5067
5068 dnl Create vlc-config.in
5069 VLC_OUTPUT_VLC_CONFIG_IN
5070
5071 AC_CONFIG_FILES([
5072   extras/package/win32/spad.nsi
5073   extras/package/win32/vlc.win32.nsi
5074   extras/package/macosx/Info.plist
5075   extras/package/macosx/Resources/English.lproj/InfoPlist.strings
5076   extras/package/macosx/plugin/Info.plist
5077   extras/package/macosx/plugin/InstallerInfo.plist
5078   Makefile
5079   projects/activex/Makefile
5080   projects/activex/axvlc.inf
5081   doc/Makefile
5082   extras/package/ipkg/Makefile
5083   libs/loader/Makefile
5084   libs/srtp/Makefile
5085   libs/unzip/Makefile
5086   modules/Makefile
5087   projects/mozilla/Makefile
5088   m4/Makefile
5089   po/Makefile.in
5090   projects/activex/axvlc_rc.rc
5091   projects/mozilla/npvlc_rc.rc
5092   projects/mozilla/vlc.r
5093   projects/mozilla/install.js
5094   share/Makefile
5095   share/vlc_win32_rc.rc
5096   share/libvlc_win32_rc.rc
5097   compat/Makefile
5098   src/Makefile
5099   src/test/Makefile
5100   bin/Makefile
5101   test/Makefile
5102   modules/access/Makefile
5103   modules/access/bd/Makefile
5104   modules/access/bda/Makefile
5105   modules/access/dshow/Makefile
5106   modules/access/dvb/Makefile
5107   modules/access/mms/Makefile
5108   modules/access/rtp/Makefile
5109   modules/access/rtsp/Makefile
5110   modules/access/vcd/Makefile
5111   modules/access/vcdx/Makefile
5112   modules/access/screen/Makefile
5113   modules/access/zip/Makefile
5114   modules/access_output/Makefile
5115   modules/audio_filter/Makefile
5116   modules/audio_filter/channel_mixer/Makefile
5117   modules/audio_filter/converter/Makefile
5118   modules/audio_filter/resampler/Makefile
5119   modules/audio_filter/spatializer/Makefile
5120   modules/audio_mixer/Makefile
5121   modules/audio_output/Makefile
5122   modules/codec/Makefile
5123   modules/codec/avcodec/Makefile
5124   modules/codec/dmo/Makefile
5125   modules/codec/shine/Makefile
5126   modules/codec/subtitles/Makefile
5127   modules/codec/spudec/Makefile
5128   modules/codec/wmafixed/Makefile
5129   modules/control/Makefile
5130   modules/control/http/Makefile
5131   modules/control/globalhotkeys/Makefile
5132   modules/demux/Makefile
5133   modules/demux/asf/Makefile
5134   modules/demux/avformat/Makefile
5135   modules/demux/avi/Makefile
5136   modules/demux/mkv/Makefile
5137   modules/demux/mp4/Makefile
5138   modules/demux/mpeg/Makefile
5139   modules/demux/playlist/Makefile
5140   modules/gui/Makefile
5141   modules/gui/beos/Makefile
5142   modules/gui/macosx/Makefile
5143   modules/gui/hildon/Makefile
5144   modules/gui/minimal_macosx/Makefile
5145   modules/gui/macosx_dialog_provider/Makefile
5146   modules/gui/qt4/Makefile
5147   modules/gui/skins2/Makefile
5148   modules/meta_engine/Makefile
5149   modules/misc/Makefile
5150   modules/misc/dummy/Makefile
5151   modules/misc/lua/Makefile
5152   modules/misc/notify/Makefile
5153   modules/misc/testsuite/Makefile
5154   modules/misc/playlist/Makefile
5155   modules/misc/osd/Makefile
5156   modules/misc/stats/Makefile
5157   modules/misc/xml/Makefile
5158   modules/mux/Makefile
5159   modules/mux/mpeg/Makefile
5160   modules/packetizer/Makefile
5161   modules/services_discovery/Makefile
5162   modules/stream_filter/Makefile
5163   modules/stream_out/Makefile
5164   modules/stream_out/transcode/Makefile
5165   modules/video_chroma/Makefile
5166   modules/video_filter/Makefile
5167   modules/video_filter/dynamicoverlay/Makefile
5168   modules/video_output/Makefile
5169   modules/video_output/msw/Makefile
5170   modules/visualization/Makefile
5171   modules/visualization/visual/Makefile
5172   modules/mmx/Makefile
5173   modules/mmxext/Makefile
5174   modules/3dnow/Makefile
5175   modules/sse2/Makefile
5176   modules/altivec/Makefile
5177   modules/arm_neon/Makefile
5178 ])
5179
5180 dnl Generate makefiles
5181 AC_OUTPUT
5182
5183 # Cannot use AC_CONFIG_FILES([vlc-config]) as is automatically built,
5184 # not provided with the source
5185 ${SHELL} ./config.status --file=vlc-config
5186 chmod 0755 vlc-config
5187
5188 /bin/echo -n "Enabled modules: "
5189 ./vlc-config --list plugin
5190
5191 dnl Do we have to use make or gmake ?
5192 USE_MAKE_OR_GMAKE=`case "${SYS}" in openbsd*) echo "gmake";; *) echo "make";; esac`
5193 dnl Shortcut to nice compile message
5194 rm -f compile
5195 echo '#! /bin/sh' >compile
5196 echo rm -f .error\$\$ >>compile
5197 echo ERROR=0 >>compile
5198 echo export PATH=$PATH LANG=C >>compile
5199 echo "($USE_MAKE_OR_GMAKE V=1 \$@ 2>&1 || touch .error\$\$)| \\" >>compile
5200 echo '`sed -ne "s/^top_srcdir *= *//p" < Makefile`/extras/buildsystem/make.pl' >>compile
5201 echo test -f .error\$\$ \&\& ERROR=1 >>compile
5202 echo rm -f .error\$\$ >>compile
5203 echo exit \$ERROR >>compile
5204 chmod a+x compile
5205
5206 printf "
5207 libvlc configuration
5208 --------------------
5209 version               : ${VERSION}
5210 system                : ${SYS}
5211 architecture          : ${ARCH}
5212 build flavour         : "
5213 test "${enable_debug}" = "yes" && printf "debug "
5214 test "${enable_cprof}" = "yes" && printf "cprof "
5215 test "${enable_gprof}" = "yes" && printf "gprof "
5216 test "${enable_optimizations}" = "yes" && printf "optim "
5217 test "${enable_release}" = "yes" && printf "release " || printf "devel "
5218 echo ""
5219 if test "${enable_vlc}" != "no"; then
5220 echo "vlc aliases           :${ALIASES}"
5221 else
5222 echo "build vlc executable  : no"
5223 fi
5224 echo "plugins/bindings      :${PLUGINS_BINDINGS}
5225
5226 You can tune the compiler flags in vlc-config.
5227 To build vlc and its plugins, type \`./compile' or \`$USE_MAKE_OR_GMAKE'.
5228 "
5229 if test "x$ac_ld_does_not_support_text_reloc" = "xyes"; then
5230    echo ""
5231    echo "Warning: Due to a bug in ld, mmx/sse support has been"
5232    echo "         turned off."
5233    echo "         FFmpeg will be REALLY slow."
5234    echo "         VLC WILL NOT PERFORM AS EXPECTED."
5235    echo ""
5236 fi