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