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