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