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