Bluray: correctly select the main title
[vlc/asuraparaju-public.git] / configure.ac
blobd227aa36d8cfd265976adc3bc2d2bf6523e2e8a1
1 dnl Autoconf settings for vlc
3 AC_COPYRIGHT([Copyright 2002-2010 the VideoLAN team])
5 AC_INIT(vlc, 1.2.0-git)
6 VERSION_MAJOR="1"
7 VERSION_MINOR="2"
8 VERSION_REVISION="0"
9 VERSION_EXTRA="-git"
10 PKGDIR="vlc"
11 AC_SUBST(PKGDIR)
13 CONFIGURE_LINE="`echo "$0 $ac_configure_args" | sed -e 's/\\\/\\\\\\\/g'`"
14 CODENAME="Twoflower"
15 COPYRIGHT_YEARS="1996-2010"
17 AC_CONFIG_SRCDIR(src/libvlc.c)
18 AC_CONFIG_AUX_DIR(autotools)
19 AC_CONFIG_MACRO_DIR(m4)
20 AC_CONFIG_LIBOBJ_DIR(compat)
21 AC_CANONICAL_BUILD
22 AC_CANONICAL_HOST
23 AC_PRESERVE_HELP_ORDER
25 AM_INIT_AUTOMAKE(tar-ustar color-tests)
26 AM_CONFIG_HEADER(config.h)
28 # Disable with "./configure --disable-silent-rules" or "make V=1"
29 AM_SILENT_RULES([yes])
31 dnl Too many people are not aware of maintainer mode:
32 dnl If you want to use it, you definitely know what you are doing, so
33 dnl you can specify "--disable-maintainer-mode". But if you want the default
34 dnl automake behavior, you've likely never heard of maintainer mode, so we
35 dnl can't expect you to enable it manually.
36 AS_IF([test "x${enable_maintainer_mode}" != "xno"],
37     [enable_maintainer_mode="yes"])
38 AM_MAINTAINER_MODE
40 dnl
41 dnl Directories
42 dnl
43 dnl vlcincludedir="\${includedir}/\${PKGDIR}"
44 dnl AC_SUBST(vlcincludedir)
45 vlcdatadir="\${datadir}/\${PKGDIR}"
46 AC_SUBST(vlcdatadir)
47 vlclibdir="\${libdir}/\${PKGDIR}"
48 AC_SUBST(vlclibdir)
50 dnl
51 dnl  Save *FLAGS
52 dnl
53 VLC_SAVE_FLAGS
55 dnl
56 dnl Check for tools
57 dnl
58 AC_PROG_CC_C99
59 AC_USE_SYSTEM_EXTENSIONS
60 AC_DEFINE([_FORTIFY_SOURCE], 2, [Define to '2' to get glibc warnings.])
62 AM_PROG_CC_C_O
63 AC_PROG_CXX
64 AC_PROG_CPP
65 AC_PROG_OBJC
66 _AM_DEPENDENCIES([OBJC])
67 AC_PROG_EGREP
68 AC_PROG_MAKE_SET
69 AC_PROG_INSTALL
70 AM_PROG_AS
72 dnl Find the right ranlib, even when cross-compiling
73 AC_CHECK_TOOL(RANLIB, ranlib, :)
74 AC_CHECK_TOOL(STRIP, strip, :)
75 AC_CHECK_TOOL(AR, ar, :)
76 AC_CHECK_TOOL(LD, ld, :)
77 AC_CHECK_TOOL(DLLTOOL, dlltool, :)
79 dnl Check for compiler properties
80 AC_C_CONST
81 AC_C_INLINE
82 AC_C_RESTRICT
84 dnl Extend the --help string at the current spot.
85 AC_DEFUN([EXTEND_HELP_STRING], [m4_divert_once([HELP_ENABLE], [$1])])
87 dnl Allow binary package maintainer to pass a custom string to avoid
88 dnl cache problem
89 AC_ARG_WITH(binary-version,
90     AS_HELP_STRING([--with-binary-version=STRING],
91          [To avoid plugins cache problem between binary version]),[],[])
92 AS_IF([test -n "${with_binary_version}"],[
93     AC_DEFINE_UNQUOTED([DISTRO_VERSION],["${with_binary_version}"],
94          [Binary specific version])
98 dnl
99 dnl  Check for the contrib directory
101 AC_ARG_WITH(contrib,
102     [  --without-contrib       do not use the libraries in CONTRIB_DIR],[],[])
103 AC_ARG_VAR([CONTRIB_DIR], [directory containing pre-built contrib, overriding extras/contrib])
104 AS_IF([test "${with_contrib}" != "no"],[
105   AS_IF([test -z "$CONTRIB_DIR"], [
106       topdir="`dirname $0`"
107       if test "`echo \"$topdir\" | cut -c 1`" != "/"; then
108          topdir="`pwd`/$topdir"
109       fi
110       CONTRIB_DIR="${topdir}/extras/contrib/hosts/${host}"
111       if ! test -d "$CONTRIB_DIR"
112       then
113         gccmachine=`$CC -dumpmachine`
114         CONTRIB_DIR="${topdir}/extras/contrib/hosts/${gccmachine}"
115       fi
116   ])
117   AC_MSG_CHECKING([for libs in ${CONTRIB_DIR}])
118   AS_IF([test -d "${CONTRIB_DIR}/lib"],[
119     AC_MSG_RESULT([yes])
120     AC_SUBST(CONTRIB_DIR)
121     export PATH=${CONTRIB_DIR}/bin:$PATH
122     CPPFLAGS="${CPPFLAGS} -I${CONTRIB_DIR}/include"
123     CPPFLAGS_save="${CPPFLAGS_save} -I${CONTRIB_DIR}/include"
124     CFLAGS="${CFLAGS} -I${CONTRIB_DIR}/include"
125     CFLAGS_save="${CFLAGS_save} -I${CONTRIB_DIR}/include"
126     CXXFLAGS="${CXXFLAGS} -I${CONTRIB_DIR}/include"
127     CXXFLAGS_save="${CXXFLAGS_save} -I${CONTRIB_DIR}/include"
128     OBJCFLAGS="${OBJCFLAGS} -I${CONTRIB_DIR}/include"
129     OBJCFLAGS_save="${OBJCFLAGS_save} -I${CONTRIB_DIR}/include"
130     if test "$build" = "$host" -o "$PKG_CONFIG_LIBDIR"; then
131         export PKG_CONFIG_PATH="${CONTRIB_DIR}/lib/pkgconfig:$PKG_CONFIG_PATH"
132     else
133         export PKG_CONFIG_LIBDIR="${CONTRIB_DIR}/lib/pkgconfig"
134     fi
135     LDFLAGS="${LDFLAGS} -L${CONTRIB_DIR}/lib"
136     LDFLAGS_save="${LDFLAGS_save} -L${CONTRIB_DIR}/lib"
138     if test "${SYS}" = "darwin"; then
139       export LD_LIBRARY_PATH="${CONTRIB_DIR}/lib:$LD_LIBRARY_PATH"
140       export DYLD_LIBRARY_PATH="${CONTRIB_DIR}/lib:$DYLD_LIBRARY_PATH"
141     elif test "${SYS}" = "beos"; then
142       export LIBRARY_PATH="${CONTRIB_DIR}/lib:$LIBRARY_PATH"
143       export BELIBRARIES="${CONTRIB_DIR}/lib:$BELIBRARIES"
144     fi
145   ],[
146     AC_MSG_RESULT([no])
147     CONTRIB_DIR=""
148   ])
152 dnl  Set default values
154 LDFLAGS_vlc="${LDFLAGS}"
157 dnl  Check the operating system
159 case "${host_os}" in
160   "")
161     SYS=unknown
162     ;;
163   linux*)
164     SYS=linux
165     ;;
166   bsdi*)
167     SYS=bsdi
168     CFLAGS_save="${CFLAGS_save} -pthread"; CFLAGS="${CFLAGS_save}"
169     VLC_ADD_LIBS([vcd cdda vcdx],[-ldvd])
170     ;;
171   *bsd*)
172     SYS="${host_os}"
173     CFLAGS_save="${CFLAGS_save} -pthread"; CFLAGS="${CFLAGS_save}"
174     case "${host_os}" in
175       freebsd*)
176         CPPFLAGS_save="${CPPFLAGS_save} -I/usr/local/include"
177         CPPFLAGS="${CPPFLAGS_save}"
178         LDFLAGS_save="${LDFLAGS_save} -L/usr/local/lib"
179         LDFLAGS="${LDFLAGS_save}"
180         ;;
181       openbsd*)
182         CPPFLAGS_save="${CPPFLAGS_save} -I/usr/local/include -I/usr/X11R6/include"
183         CPPFLAGS="${CPPFLAGS_save}"
184         LDFLAGS_save="${LDFLAGS_save} -L/usr/local/lib -L/usr/X11R6/lib/"
185         LDFLAGS="${LDFLAGS_save}"
186         ;;
187     esac
188     ;;
189   darwin*)
191     dnl Force gcc "-arch" flag
192     ARCH_flag=""
193     case "${host}" in
194       i386*)
195         ARCH_flag="-arch i386"
196       ;;
197       ppc64*)
198         ARCH_flag="-arch ppc64"
199       ;;
200       ppc*)
201         ARCH_flag="-arch ppc"
202       ;;
203       x86_64*)
204         ARCH_flag="-arch x86_64"
205       ;;
206     esac
208     SYS=darwin
209     CFLAGS_save="${CFLAGS_save} -D_INTL_REDIRECT_MACROS ${ARCH_flag}"; CFLAGS="${CFLAGS_save}"
210     CXXFLAGS_save="${CXXFLAGS_save} -D_INTL_REDIRECT_MACROS ${ARCH_flag}"; CXXFLAGS="${CXXFLAGS_save}"
211     CPPFLAGS_save="${CPPFLAGS_save} ${ARCH_flag}"; CPPFLAGS="${CPPFLAGS_save}"
212     OBJCFLAGS_save="${OBJCFLAGS_save} -D_INTL_REDIRECT_MACROS -std=gnu99 ${ARCH_flag}"; OBJCFLAGS="${OBJCFLAGS_save}"
213     LDFLAGS_save="${LDFLAGS_save} -Wl,-headerpad_max_install_names ${ARCH_flag}"; LDFLAGS="${LDFLAGS_save}"
214     VLC_ADD_LDFLAGS([mkv mp4 motion], [-Wl,-framework,IOKit,-framework,CoreFoundation])
215     VLC_ADD_LDFLAGS([libvlc vlc],[-Wl,-undefined,dynamic_lookup])
216     VLC_ADD_LDFLAGS([avcodec avformat access_avio swscale postproc i420_rgb_mmx x264],[-Wl,-read_only_relocs,suppress])
217     VLC_ADD_CFLAGS([motion],[-fconstant-cfstrings])
218     VLC_ADD_LDFLAGS([libvlccore],[-Wl,-framework,CoreFoundation])
219     AC_ARG_ENABLE(macosx-defaults,
220       AS_HELP_STRING([--enable-macosx-defaults],[Build the default configuration on Mac OS X (default enabled)]))
221     if test "x${enable_macosx_defaults}" != "xno"
222     then
223         echo ""
224         echo "Building with Mac OS X defaults:"
225         with_macosx_version_min="10.5"
226         echo "  Assuming --with-macosx-version-min=10.5"
227         with_macosx_sdk="/Developer/SDKs/MacOSX${with_macosx_version_min}.sdk"
228         echo "  Assuming --with-macosx-sdk=/Developer/SDKs/MacOSX${with_macosx_version_min}.sdk"
229         build_dir=`pwd`
230         echo "  Assuming --prefix=${build_dir}/vlc_install_dir"
231         ac_default_prefix="${build_dir}/vlc_install_dir"
232         enable_faad="yes"
233         echo "  Assuming --enable-faad"
234         enable_flac="yes"
235         echo "  Assuming --enable-flac"
236         enable_theora="yes"
237         echo "  Assuming --enable-theora"
238         enable_shout="yes"
239         echo "  Assuming --enable-shout"
240         enable_vcdx="yes"
241         echo "  Assuming --enable-vcdx"
242         enable_caca="yes"
243         echo "  Assuming --enable-caca"
244         enable_ncurses="yes"
245         echo "  Assuming --enable-ncurses"
246         enable_twolame="yes"
247         echo "  Assuming --enable-twolame"
248         enable_realrtsp="yes"
249         echo "  Assuming --enable-realrtsp"
250         enable_libass="yes"
251         echo "  Assuming --enable-libass"
253         enable_skins2="no"
254         echo "  Assuming --disable-skins2"
255         enable_xcb="no"
256         echo "  Assuming --disable-xcb"
257     fi
258     dnl
259     dnl  Check for Mac OS X SDK settings
260     dnl
261     AC_ARG_WITH(macosx-sdk,
262        [  --with-macosx-sdk=DIR   compile using the SDK in DIR])
263     if test "${with_macosx_sdk}" != "" ; then
264         CPP="${CPP} -isysroot ${with_macosx_sdk}"
265         CC="${CC} -isysroot ${with_macosx_sdk}"
266         CXX="${CXX} -isysroot ${with_macosx_sdk}"
267         OBJC="${OBJC} -isysroot ${with_macosx_sdk}"
268         LD="${LD} -syslibroot ${with_macosx_sdk}"
269     fi
270     AC_ARG_WITH(macosx-version-min,
271        [  --with-macosx-version-min=VERSION compile for MacOSX VERSION and above])
272     if test "${with_macosx_version_min}" != "" ; then
273         CPP="${CPP} -mmacosx-version-min=${with_macosx_version_min}"
274         CC="${CC} -mmacosx-version-min=${with_macosx_version_min}"
275         CXX="${CXX} -mmacosx-version-min=${with_macosx_version_min}"
276         OBJC="${OBJC} -mmacosx-version-min=${with_macosx_version_min}"
277         LD="${LD} -macosx_version_min=${with_macosx_version_min}"
278         CFLAGS_save="${CFLAGS_save} -DMACOSX_DEPLOYMENT_TARGET=${with_macosx_version_min}"; CFLAGS="${CFLAGS_save}"
279         CXXFLAGS_save="${CXXFLAGS_save} -DMACOSX_DEPLOYMENT_TARGET=${with_macosx_version_min}"; CXXFLAGS="${CXXFLAGS_save}"
280         OBJCFLAGS_save="${OBJCFLAGS_save} -DMACOSX_DEPLOYMENT_TARGET=${with_macosx_version_min}"; OBJCFLAGS="${OBJCFLAGS_save}"
281         MACOSX_DEPLOYMENT_TARGET=${with_macosx_version_min}
282         export MACOSX_DEPLOYMENT_TARGET
283     fi
284     ;;
285   *mingw32* | *cygwin* | *wince* | *mingwce*)
286     AC_CHECK_TOOL(WINDRES, windres, :)
287     AC_CHECK_TOOL(OBJCOPY, objcopy, :)
289     case "${host_os}" in
290       *wince* | *mingwce* | *mingw32ce*)
291         SYS=mingwce
292         dnl Sadly CeGCC still needs non-wince macros
293         AC_DEFINE([_WIN32_WINNT], 0x0501, [Define to '0x0500' for Windows 2000 APIs.])
294         ;;
295       *mingw32*)
296         SYS=mingw32
297         AC_DEFINE([_WIN32_WINNT], 0x0501, [Define to '0x0500' for Windows XP APIs.])
298         ;;
299       *cygwin*)
300         dnl Check if we are using the mno-cygwin mode in which case we are
301         dnl actually dealing with a mingw32 compiler.
302         AC_DEFINE([_WIN32_WINNT], 0x0501, [Define to '0x0501' for Windows XP APIs.])
303         AC_EGREP_CPP(yes,
304             [#ifdef WIN32
305              yes
306              #endif],
307             SYS=mingw32, AC_MSG_ERROR([VLC requires -mno-cygwin]))
308         ;;
309     esac
311     if test "${SYS}" = "mingw32"; then
312         # add ws2_32 for closesocket, select, recv
313         VLC_ADD_LIBS([libvlccore],[-lws2_32 -lnetapi32 -lwinmm])
314         VLC_ADD_LDFLAGS([vlc],[-mwindows])
315         VLC_ADD_LIBS([activex win32text],[-lgdi32])
316         VLC_ADD_LIBS([cdda vcdx sdl_image aout_sdl vout_sdl],[-lwinmm])
317         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 oldhttp stream_out_standard stream_out_rtp stream_out_raop vod_rtsp access_realrtsp rtp oldrc netsync gnutls growl_udp flac ts audioscrobbler lua remoteosd zvbi audiobargraph_a netsync],[-lws2_32])
318         VLC_ADD_LIBS([filesystem], [-lshlwapi])
319         dnl
320         dnl DEP and ASLR options
321         dnl
322         AC_ARG_ENABLE(peflags,
323           [  --enable-peflags        peflags use (default enabled on Windows)])
324         if test "${enable_peflags}" != "no" ; then
325           AC_CHECK_TOOL(PEFLAGS, peflags, :)
326         fi
327         AC_CHECK_PROGS(U2D, [unix2dos todos], unix2dos)
328         ac_default_prefix="`pwd`/_win32"
329         DESTDIR="`pwd`/_win32/"
331         dnl
332         dnl NSIS Installer prefix
333         dnl
334         case "${host}" in
335             amd64*|i686-w64*|x86_64*)
336                 PROGRAMFILES="PROGRAMFILES64"
337             ;;
338             *)
339                 PROGRAMFILES="PROGRAMFILES"
340             ;;
341         esac
342         AC_SUBST(PROGRAMFILES)
344     fi
345     if test "${SYS}" = "mingwce"; then
346         # add ws2 for closesocket, select, recv
347         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_standard stream_out_rtp remoteosd ts audiobargraph_a netsync],[-lws2])
348         VLC_ADD_LIBS([libvlccore],[-lmmtimer])
349         AC_CHECK_PROGS(U2D, [unix2dos todos], unix2dos)
350         ac_default_prefix="`pwd`/_wince"
351         DESTDIR="`pwd`/_wince/"
352     fi
353     ;;
354   *nto*)
355     SYS=nto
356     ;;
357   solaris*)
358     SYS=solaris
359     ;;
360   hpux*)
361     SYS=hpux
362     ;;
363   beos)
364     SYS=beos
365     CFLAGS_save="${CFLAGS_save} -Wno-multichar"; CFLAGS="${CFLAGS_save}"
366     CXXFLAGS_save="${CXXFLAGS_save} -Wno-multichar"; CXXFLAGS="${CXXFLAGS_save}"
367     VLC_ADD_CXXFLAGS([beos],[])
368     VLC_ADD_LIBS([vlc libvlccore logger],[-lbe])
369     VLC_ADD_LIBS([dvdnav dvdread],[-ldl])
370     VLC_ADD_LIBS([filesystem],[-lpoll])
371     LDFLAGS_save="${LDFLAGS_save} -lintl"; LDFLAGS="${LDFLAGS_save}"
372     dnl Check for BONE
373     if test -f /boot/beos/system/lib/libbind.so; then
374         VLC_ADD_LIBS([filesystem access_ftp access_mms access_output_udp netsync sap libvlccore growl_udp],[-lbind -lsocket])
375     else
376         VLC_ADD_LIBS([filesystem access_ftp access_mms access_output_udp netsync sap libvlccore growl_udp],[-lnet])
377     fi
378     ;;
379   *)
380     SYS="${host_os}"
381     ;;
382 esac
383 AM_CONDITIONAL(HAVE_BEOS, test "${SYS}" = "beos")
384 AM_CONDITIONAL(HAVE_DARWIN, test "${SYS}" = "darwin")
385 AM_CONDITIONAL(HAVE_LINUX, [test "${SYS}" = "linux"])
386 AM_CONDITIONAL(HAVE_WIN32, test "${SYS}" = "mingw32")
387 AM_CONDITIONAL(HAVE_WINCE, test "${SYS}" = "mingwce")
388 AM_CONDITIONAL(USE_PEFLAGS, [test "${enable_peflags}" = "yes"])
391 dnl Sadly autoconf doesn't think about testing foo.exe when ask to test
392 dnl for program foo on win32
394 case "${build_os}" in
395     cygwin|msys)
396         ac_executable_extensions=".exe"
397     ;;
398     *)
399     ;;
400 esac
403 dnl  Libtool
404 dnl  It's very bad, but our former custom system was worst
405 dnl  -- Courmisch
408 dnl override platform specific check for dependent libraries
409 dnl otherwise libtool linking of shared libraries will
410 dnl fail on anything other than pass_all.
411 AC_CACHE_VAL(lt_cv_deplibs_check_method,
412     [lt_cv_deplibs_check_method=pass_all])
414 AC_DISABLE_STATIC
415 dnl AC_DISABLE_FAST_INSTALL
416 AC_LIBTOOL_DLOPEN
417 AC_LIBTOOL_WIN32_DLL
418 m4_undefine([AC_PROG_F77])
419 m4_defun([AC_PROG_F77],[])
420 AC_PROG_LIBTOOL
422 m4_undefine([AC_DEPLIBS_CHECK_METHOD])
423 m4_defun([AC_DEPLIBS_CHECK_METHOD],[])
425 lt_cv_deplibs_check_method=pass_all
427 AS_IF([test "${enable_shared}" = "no"], [
428   AC_MSG_ERROR([VLC is based on plugins. Shared libraries cannot be disabled.])
432 dnl Gettext stuff
434 AM_GNU_GETTEXT_VERSION([0.18.1])
435 AM_GNU_GETTEXT([external])
436 VLC_ADD_LIBS([libvlccore vlc], [${LTLIBINTL}])
439 dnl Iconv stuff
441 AM_ICONV
442 VLC_ADD_CFLAGS([libvlccore],[${INCICONV}])
443 VLC_ADD_LIBS([libvlccore],[${LTLIBICONV}])
445 dnl Check for broken versions of mingw-runtime compatability library
446 AS_IF([test "${SYS}" = "mingw32" -o "${SYS}" = "mingwce"], [
447     AC_MSG_CHECKING(for broken mingw-runtime)
448     AC_PREPROC_IFELSE([
449 #include <_mingw.h>
450 #if (__MINGW32_MAJOR_VERSION == 3) && (__MINGW32_MINOR_VERSION < 15)
451 #ifndef __MINGW64_VERSION_MAJOR
452 # error Attempting to use mingw-runtime with broken vsnprintf support
453 #endif
454 #endif
455     ], [
456         AC_MSG_RESULT([ok])
457     ], [
458         AC_MSG_RESULT([present])
459         AC_MSG_ERROR([LibVLC requires mingw-runtime version 3.15 or higher!])
460     ])
461     dnl force use of mingw provided c99 *printf over msvcrt
462     CPPFLAGS="${CPPFLAGS} -D__USE_MINGW_ANSI_STDIO=1"
463     CPPFLAGS_save="${CPPFLAGS_save} -D__USE_MINGW_ANSI_STDIO=1"
466 dnl Check for the need to include the mingwex lib for mingw32
467 if test "${SYS}" = "mingw32" ; then
468     AC_CHECK_LIB(mingwex,opendir,
469         AC_CHECK_LIB(mingw32,opendir,,
470             [VLC_ADD_LIBS([libvlccore],[-lmingwex])])
471     )
474 dnl Check for fnative-struct or mms-bitfields support for mingw32
475 if test "${SYS}" = "mingw32" ; then
476     AC_CACHE_CHECK([if \$CC accepts -mms-bitfields],
477         [ac_cv_c_mms_bitfields],
478         [CFLAGS="${CFLAGS_save} -mms-bitfields"
479          AC_TRY_COMPILE([],,ac_cv_c_mms_bitfields=yes, ac_cv_c_mms_bitfields=no)])
480     if test "${ac_cv_c_mms_bitfields}" != "no"; then
481         CFLAGS_save="${CFLAGS_save} -mms-bitfields";
482         CXXFLAGS_save="${CXXFLAGS_save} -mms-bitfields";
483     else
484         AC_CACHE_CHECK([if \$CC accepts -fnative-struct],
485             [ac_cv_c_fnative_struct],
486             [CFLAGS="${CFLAGS_save} -fnative-struct"
487              AC_TRY_COMPILE([],,ac_cv_c_fnative_struct=yes, ac_cv_c_fnative_struct=no)])
488         if test "${ac_cv_c_fnative_struct}" != "no"; then
489             CFLAGS_save="${CFLAGS_save} -fnative-struct";
490             CXXFLAGS_save="${CXXFLAGS_save} -fnative-struct";
491         fi
492     fi
494     CFLAGS="${CFLAGS_save}"; CXXFLAGS="${CXXFLAGS_save}"
497 dnl Check for fvtable-thunks support for mingw32
498 if test "${SYS}" = "mingw32" -a "${CXX}" != "" ; then
499     AC_LANG_PUSH(C++)
500     AC_CACHE_CHECK([if \$CXX accepts -fvtable-thunks],
501         [ac_cv_cxx_fvtable_thunks],
502         [CXXFLAGS="${CXXFLAGS_save} -Wall -Werror -fvtable-thunks"
503          AC_TRY_COMPILE([],,ac_cv_cxx_fvtable_thunks=yes,
504                         ac_cv_cxx_fvtable_thunks=no)])
505     if test "${ac_cv_cxx_fvtable_thunks}" = "yes"; then
506         CXXFLAGS_mingw32_special="-fvtable-thunks"
507     fi
509     CXXFLAGS_save="${CXXFLAGS_save} ${CXXFLAGS_mingw32_special}"; CXXFLAGS="${CXXFLAGS_save}"
510     AC_LANG_POP(C++)
514 dnl Buggy glibc prevention. Purposedly not cached.
515 dnl See sourceware.org bugs 5058 and 5443.
516 dnl Ubuntu alone has 20 bug numbers for this...
518 AC_MSG_CHECKING(for buggy GNU/libc versions)
519 AC_PREPROC_IFELSE([
520 #include <limits.h>
521 #if defined (__GLIBC__) && (__GLIBC__ == 2) \
522   && (__GLIBC_MINOR__ >= 5) && (__GLIBC_MINOR__ <= 7)
523 # error GNU/libc with dcgettext killer bug!
524 #endif
525 ], [
526   AC_MSG_RESULT([not present])
527 ], [
528   AC_MSG_RESULT([found])
529   AS_IF([test "x${enable_nls}" != "xno"], [
530     AC_MSG_ERROR([Buggy GNU/libc (version 2.5 - 2.7) present. VLC would crash; there is no viable
531 work-around for this. Check with your distribution vendor on how to update the
532 glibc run-time. Alternatively, build with --disable-nls.])
533   ], [
534     AC_DEFINE(DISABLE_BUGGY_GLIBC_CHECK, 1, [Disables runtime check for buggy glibc.])
535   ])
538 dnl Plugin compilation stuff
540 VLC_LIBRARY_SUFFIX
542 dnl The -DSYS_FOO flag
543 CPPFLAGS_save="${CPPFLAGS_save} -DSYS_`echo ${SYS} | sed -e 's/-.*//' | tr 'abcdefghijklmnopqrstuvwxyz.' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ_'`"; CPPFLAGS="${CPPFLAGS_save}"
545 dnl Check for system libs needed
546 need_libc=false
548 dnl Check for usual libc functions
549 AC_CHECK_FUNCS([daemon fcntl fdopendir fstatvfs fork getenv getpwuid_r gettimeofday isatty lstat memalign openat posix_fadvise posix_madvise posix_memalign setenv setlocale stricmp strnicmp tdestroy uselocale])
550 AC_REPLACE_FUNCS([asprintf atof atoll getcwd getdelim getpid gmtime_r lldiv localtime_r nrand48 rewind strcasecmp strcasestr strdup strlcpy strncasecmp strndup strnlen strsep strtof strtok_r strtoll swab vasprintf])
551 AC_CHECK_FUNCS(fdatasync,,
552   [AC_DEFINE(fdatasync, fsync, [Alias fdatasync() to fsync() if missing.])
555 dnl Check for non-standard system calls
556 AC_CHECK_FUNCS([accept4 dup3 eventfd vmsplice sched_getaffinity])
558 AH_BOTTOM([#include <vlc_fixups.h>])
560 AC_CHECK_FUNCS(mmap, [VLC_ADD_PLUGIN([access_mmap])])
562 SOCKET_LIBS=""
563 AC_CHECK_FUNCS(connect,,[
564   AC_CHECK_LIB(socket,connect,[
565     VLC_ADD_LIBS([libvlccore cdda],-lsocket)
566     SOCKET_LIBS="-lsocket"
567   ])
569 AC_SUBST(SOCKET_LIBS)
571 AC_CHECK_FUNCS(send,,[
572   AC_CHECK_LIB(socket,send,[
573     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 netsync],[-lsocket])
574   ])
578 dnl Check for socklen_t
579 AH_TEMPLATE(socklen_t, [Define to `int' if <sys/socket.h> does not define.])
580 AC_CACHE_CHECK([for socklen_t in sys/socket.h],
581 ac_cv_type_socklen_t,
582 [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([
583 [#include <sys/types.h>
584 #ifdef WIN32
585 # include <winsock2.h>
586 # include <ws2tcpip.h>
587 #else
588 # include <sys/socket.h>
589 #endif]], [[socklen_t len; len = 0;]])],
590 ac_cv_type_socklen_t=yes,
591 ac_cv_type_socklen_t=no)])
592 AS_IF([test "$ac_cv_type_socklen_t" = no],
593  [AC_DEFINE(socklen_t, int)])
595 dnl Check for struct sockaddr_storage
596 AH_TEMPLATE(sockaddr_storage, [Define to `sockaddr' if <sys/socket.h> does not define.])
597 AH_TEMPLATE(ss_family, [Define to `sa_family' if <sys/socket.h> does not define.])
598 AC_CACHE_CHECK([for struct sockaddr_storage], ac_cv_struct_sockaddr_storage,
599   [AC_TRY_COMPILE(
600     [#include <sys/types.h>
601      #if defined( UNDER_CE )
602      # include <winsock2.h>
603      #elif defined( WIN32 )
604      # include <winsock2.h>
605      #else
606      # include <sys/socket.h>
607      #endif], [struct sockaddr_storage addr;],
608      ac_cv_struct_sockaddr_storage=yes,
609      ac_cv_struct_sockaddr_storage=no)])
610 AS_IF([test "${ac_cv_struct_sockaddr_storage}" = no], [
611   AC_DEFINE(sockaddr_storage, sockaddr)
612   AC_DEFINE(ss_family, sa_family)
615 dnl getaddrinfo, getnameinfo and gai_strerror check
616 dnl  -lnsl and -lsocket are needed on Solaris;
617 dnl  we purposedly make the test fail on Windows
618 LIBS_save="${LIBS}"
619 AC_SEARCH_LIBS([getaddrinfo], [nsl],,, [${SOCKET_LIBS}])
620 LIBS="${LIBS_save}"
622 dnl Check for va_copy
623 AC_CACHE_CHECK([for va_copy], ac_cv_c_va_copy,
624   AC_TRY_LINK(
625     [#include <stdarg.h>],
626     [va_list ap1, ap2; va_copy(ap1,ap2);],
627     [ac_cv_c_va_copy="yes"],
628     [ac_cv_c_va_copy="no"]))
629 if test "${ac_cv_c_va_copy}" = "yes"; then
630   AC_DEFINE(HAVE_VA_COPY, 1, [Define if <stdarg.h> defines va_copy.])
632 AC_CACHE_CHECK([for __va_copy], ac_cv_c___va_copy,
633   AC_TRY_LINK(
634     [#include <stdarg.h>],
635     [va_list ap1, ap2; __va_copy(ap1,ap2);],
636     [ac_cv_c___va_copy="yes"],
637     [ac_cv_c___va_copy="no"]))
638 if test "${ac_cv_c___va_copy}" = "yes"; then
639   AC_DEFINE(HAVE___VA_COPY, 1, [Define if <stdarg.h> defines __va_copy.])
642 AC_CHECK_FUNCS(inet_aton,,[
643   AC_CHECK_LIB(resolv,inet_aton,[
644     VLC_ADD_LIBS([libvlccore],[-lresolv])
645   ])
648 dnl FreeBSD has a gnugetopt library for this:
649 GNUGETOPT_LIBS=""
650 AC_CHECK_FUNC(getopt_long,, [
651   AC_CHECK_LIB([gnugetopt],[getopt_long], [
652     GNUGETOPT_LIBS="-lgnugetopt"
653   ])
655 AC_SUBST(GNUGETOPT_LIBS)
657 if test "${SYS}" != "mingw32" -a "${SYS}" != "mingwce"; then
658 AC_CHECK_LIB(m,cos,[
659   VLC_ADD_LIBS([adjust wave ripple psychedelic gradient a52tofloat32 dtstofloat32 x264 goom visual panoramix rotate noise grain scene kate flac lua chorus_flanger],[-lm])
661 AC_CHECK_LIB(m,pow,[
662   VLC_ADD_LIBS([avcodec avformat access_avio swscale postproc ffmpegaltivec i420_rgb faad twolame equalizer spatializer param_eq libvlccore freetype mod mpc dmo quicktime realvideo qt4],[-lm])
664 AC_CHECK_LIB(m,sqrt,[
665   VLC_ADD_LIBS([compressor headphone_channel_mixer normvol audiobargraph_a speex mono colorthres extract ball],[-lm])
667 AC_CHECK_LIB(m,ceil,[
668   VLC_ADD_LIBS([access_imem hotkeys mosaic swscale_omap],[-lm])
670 AC_CHECK_LIB(m,exp,[
671   VLC_ADD_LIBS([gaussianblur],[-lm])
673 AC_CHECK_LIB(m,round,[
674   VLC_ADD_LIBS([dbus],[-lm])
676 AC_CHECK_LIB(m,sqrtf,[
677   VLC_ADD_LIBS([x264],[-lm])
679 fi # end "${SYS}" != "mingw32" -a "${SYS}" != "mingwce"
681 AC_CHECK_LIB(m,lrintf, [
682   AC_DEFINE(HAVE_LRINTF, 1, [Define to 1 if you have the lrintf function])
683   VLC_ADD_LIBS([skins2],[-lm])
686 dnl Check for dynamic plugins
687 ac_cv_have_plugins=no
689 # HP-UX style
690 if test "${ac_cv_have_plugins}" = "no"; then
691   AC_CHECK_HEADERS(dl.h)
692   ac_cv_my_have_shl_load=no
693   AC_CHECK_FUNC(shl_load,
694    [ac_cv_my_have_shl_load=yes,
695     AC_CHECK_LIB(dld, shl_load,
696      [ac_cv_my_have_shl_load=yes
697       VLC_ADD_LIBS([libvlccore],[-ldld])])])
698   if test "${ac_cv_my_have_shl_load}" = "yes"; then
699     AC_DEFINE(HAVE_DL_SHL_LOAD, 1, [Define if you have the shl_load API])
700     ac_cv_have_plugins=yes
701   fi
704 # Win32 style
705 if test "${ac_cv_have_plugins}" = "no"; then
706   if test "${SYS}" = "mingw32" ; then
707     AC_CHECK_LIB(kernel32, main,
708      [VLC_ADD_LIBS([libvlccore],[-lkernel32])
709       AC_DEFINE(HAVE_DL_WINDOWS, 1, [Define if you have Windows' LoadLibrary])
710       ac_cv_have_plugins=yes])
711   fi
714 # WinCE style
715 if test "${ac_cv_have_plugins}" = "no"; then
716   if test "${SYS}" = "mingwce"; then
717     AC_DEFINE(HAVE_DL_WINDOWS, 1, [Define if you have Windows' LoadLibrary])
718     ac_cv_have_plugins=yes
719   fi
722 # BeOS style
723 if test "${ac_cv_have_plugins}" = "no"; then
724   AC_CHECK_HEADERS(image.h)
725   AC_CHECK_FUNCS(load_add_on,
726    [AC_DEFINE(HAVE_DL_BEOS, 1, [Define if you have the BeOS dl])
727     ac_cv_have_plugins=yes])
730 # Only test for dlopen() if the others didn't work
731 LIBDL=""
732 if test "${ac_cv_have_plugins}" = "no" -o "${SYS}" = "darwin"; then
733   AC_CHECK_HEADERS(dlfcn.h sys/dl.h)
734   ac_cv_my_have_dlopen=no
735   AC_CHECK_FUNC(dlopen, [
736     ac_cv_my_have_dlopen=yes
737   ], [
738     AC_CHECK_LIB(dl, dlopen, [
739       ac_cv_my_have_dlopen=yes
740       LIBDL="-ldl"
741     ], [
742       AC_CHECK_LIB(svld, dlopen, [
743         ac_cv_my_have_dlopen=yes
744         LIBDL="-lsvld"
745       ])
746     ])
747   ])
748   if test "${ac_cv_my_have_dlopen}" = "yes"; then
749     AC_DEFINE(HAVE_DL_DLOPEN, 1, [Define if you have the dlopen API])
750     ac_cv_have_plugins=yes
751     VLC_ADD_LIBS([libvlccore realvideo lua],[$LIBDL])
752   fi
754 AC_SUBST(LIBDL)
756 if test "${SYS}" != "mingw32" -a "${SYS}" != "mingwce"; then
757   dnl Check for pthreads - borrowed from XMMS
758   THREAD_LIB=error
759   if test "${THREAD_LIB}" = "error"; then
760     AC_CHECK_LIB(pthread,main,THREAD_LIB="-lpthread")
761   fi
762   if test "${THREAD_LIB}" = "error"; then
763     AC_CHECK_LIB(pthreads,main,THREAD_LIB="-lpthreads")
764   fi
765   if test "${THREAD_LIB}" = "error"; then
766     AC_CHECK_LIB(c_r,main,THREAD_LIB="-lc_r")
767   fi
768   if test "${THREAD_LIB}" = "error"; then
769     AC_CHECK_FUNCS(pthread_mutex_lock)
770     THREAD_LIB=""
771   fi
773   VLC_ADD_LIBS([libvlccore libvlc vlc plugin],[${THREAD_LIB}])
775   AC_CHECK_LIB(rt, clock_nanosleep, [
776     VLC_ADD_LIBS([libvlccore],[-lrt])
777     AC_DEFINE(HAVE_CLOCK_NANOSLEEP, 1, [Define to 1 if you have clock_nanosleep.])
778   ], [
779     dnl HP/UX port
780     AC_CHECK_LIB(rt,sem_init, [VLC_ADD_LIBS([libvlccore],[-lrt])])
781   ])
783   have_nanosleep=false
784   AC_CHECK_FUNCS(nanosleep,have_nanosleep=:,[
785     AC_CHECK_LIB(rt,nanosleep,
786       [VLC_ADD_LIBS([libvlccore],[-lrt]) have_nanosleep=:],
787       [AC_CHECK_LIB(posix4,nanosleep,
788           [VLC_ADD_LIBS([libvlccore],[-lposix4]) have_nanosleep=:])]
789     )
790   ])
791   if ${have_nanosleep}; then
792     AC_DEFINE(HAVE_NANOSLEEP, 1, [Define if nanosleep is available.])
793   fi
794 fi # end "${SYS}" != "mingw32" -a "${SYS}" != "mingwce"
796 dnl Check for misc headers
797 AC_MSG_CHECKING(for strncasecmp in strings.h)
798 AC_EGREP_HEADER(strncasecmp,strings.h,[
799   AC_MSG_RESULT(yes)
800   AC_DEFINE(STRNCASECMP_IN_STRINGS_H, 1,
801             Define if <strings.h> defines strncasecmp.)],[
802   AC_MSG_RESULT(no)])
804 dnl Check for headers
805 AC_CHECK_HEADERS(getopt.h strings.h locale.h xlocale.h)
806 AC_CHECK_HEADERS(fcntl.h sys/time.h sys/ioctl.h sys/stat.h)
807 AC_CHECK_HEADERS([arpa/inet.h netinet/in.h netinet/udplite.h sys/eventfd.h])
808 AC_CHECK_HEADERS([net/if.h], [], [],
809   [
810     #include <sys/types.h>
811     #include <sys/socket.h>
812   ])
813 AC_CHECK_HEADERS([sys/mount.h], [], [],
814   [
815     #include <sys/param.h>
816   ])
818 if test "${SYS}" != "mingw32" -a "${SYS}" != "mingwce"; then
819   AC_CHECK_HEADERS(machine/param.h sys/shm.h)
820   AC_CHECK_HEADERS([linux/version.h linux/dccp.h scsi/scsi.h linux/magic.h])
821   AC_CHECK_HEADERS(syslog.h)
822 fi # end "${SYS}" != "mingw32" -a "${SYS}" != "mingwce"
824 dnl LP64 and LLP64 architectures had better define ssize_t by themselves...
825 AH_TEMPLATE(ssize_t, [Define to `int' if <stddef.h> does not define.])
826 AC_CHECK_TYPE(ssize_t,, [
827   AC_DEFINE(ssize_t, int)
830 dnl Check for poll
831 AC_SEARCH_LIBS(poll, [poll], [AC_DEFINE(HAVE_POLL, 1, [Define to 1 if the OS is usabl... err, has poll().])], [
832 if test ${SYS} != "mingw32" -a ${SYS} != "mingwce"
833 then
834     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])
838 dnl Mac OS X and other OSes don't have declaration for nanosleep
839 if test "${SYS}" != "mingw32" -a "${SYS}" != "mingwce"; then
840   AC_MSG_CHECKING(for nanosleep in time.h)
841   AC_EGREP_HEADER(nanosleep,time.h,[
842     AC_MSG_RESULT(yes)
843     AC_DEFINE(HAVE_DECL_NANOSLEEP, 1,
844               Define if <time.h> defines nanosleep.)
845   ],[
846     AC_MSG_RESULT(no)
847   ])
848 fi # end "${SYS}" != "mingw32" -a "${SYS}" != "mingwce"
850 dnl Make sure we have timespecs
851 AC_MSG_CHECKING(for timespec in sys/time.h)
852 AC_EGREP_HEADER(timespec,sys/time.h,[
853   AC_MSG_RESULT(yes)
854   AC_DEFINE(HAVE_STRUCT_TIMESPEC, 1,
855             Define if <sys/time.h> defines struct timespec.)
857   AC_MSG_RESULT(no)
860 dnl Check for threads library
861 if test "${SYS}" != "mingw32" -a "${SYS}" != "mingwce"; then
862   AC_CHECK_HEADERS(pthread.h)
863 fi # end "${SYS}" != "mingw32" -a "${SYS}" != "mingwce"
865 dnl It seems that autoconf detects pkg-config only during the first
866 dnl PKG_CHECK_MODULES from configure.ac - which makes sense. But in our case,
867 dnl it is nested within a conditional block, so it was not working right.
868 dnl Make PKG_CONFIG_PATH precious so that it appears in the help and get saved
869 AC_ARG_VAR(PKG_CONFIG_PATH,
870        [Paths where to find .pc not at the default location])
871 PKG_PROG_PKG_CONFIG()
873 dnl On some OS we need static linking 
874 AS_IF([test -n "${PKG_CONFIG}" ],[
875     AS_IF([test "${SYS}" = "mingw32" -o "${SYS}" = "mingwce" -o "${SYS}" = "darwin" ],[
876         PKG_CONFIG="${PKG_CONFIG} --static"
877     ])
882 dnl Check for zlib.h and -lz along with system -lminizip if available
884 AC_CHECK_HEADERS(zlib.h, [ have_zlib=yes ], [ have_zlib=no ])
885 AM_CONDITIONAL(HAVE_ZLIB, [ test "${have_zlib}" = "yes" ])
886 if test "${have_zlib}" = "yes"
887 then
888   VLC_ADD_LIBS([access_http gme mp4 skins2 sap mkv unzip zip],[-lz])
889   PKG_CHECK_MODULES([MINIZIP], [minizip] , [ have_minizip=yes ], [
890     AC_CHECK_HEADERS([unzip.h], [ 
891       have_minizip=yes
892       MINIZIP_LIBS="-lminizip -lz"
893     ], [
894       have_minizip=no
895       MINIZIP_CFLAGS="-I\\\${top_srcdir}/libs/unzip"
896       MINIZIP_LIBS="\\\${top_builddir}/libs/unzip/libunzip.la"
897     ])
898   ])
899   VLC_ADD_CPPFLAGS([skins2],[$MINIZIP_CFLAGS])
900   VLC_ADD_CFLAGS([zip],[$MINIZIP_CFLAGS])
901   VLC_ADD_LIBS([skins2 zip],[$MINIZIP_LIBS])
902   VLC_ADD_PLUGIN([unzip zip])
904 AM_CONDITIONAL(HAVE_MINIZIP, [ test "${have_minizip}" = "yes" ])
907 dnl Manual switch for UTF-8
908 AC_ARG_ENABLE(non-utf8,
909   [  --enable-non-utf8       Legacy non-UTF-8 systems support (default disabled)],, [
910   AS_IF([test "${SYS}" = "mingw32" -o "${SYS}" = "mingwce"], [
911     enable_non_utf8="no"
912   ])
914 AS_IF([test "${enable_non_utf8}" != "no"], [
915   AC_DEFINE([ASSUME_UTF8], [1],
916             [Define to 1 if the operating system uses UTF-8 internally])
920 dnl Check for dbus
921 AC_ARG_ENABLE(dbus,
922   [  --enable-dbus           Linux D-BUS message bus system (default enabled)])
923 case "${SYS}" in
924     linux*|*bsd*)
925 if test "${enable_dbus}" != "no" -a "${SYS}" != "mingw32" -a "${SYS}" != "mingwce"
926 then
927   dnl api stable dbus
928   PKG_CHECK_MODULES(DBUS, dbus-1 >= 1.0.0,
929     [ AC_DEFINE( HAVE_DBUS, 1, [Define if you have the D-BUS library] )
930       VLC_ADD_LIBS([libvlccore],[$DBUS_LIBS])
931       VLC_ADD_CFLAGS([libvlccore],[$DBUS_CFLAGS])
932       dnl Check for dbus control interface
933         AC_ARG_ENABLE(dbus-control, [  --disable-dbus-control  D-BUS control interface (default enabled)])
934         if test "${enable_dbus_control}" != "no"
935         then
936           VLC_ADD_PLUGIN([dbus])
937           VLC_ADD_LIBS([dbus],[$DBUS_LIBS])
938           VLC_ADD_CFLAGS([dbus],[$DBUS_CFLAGS])
939         fi
940       dnl Check for Telepathy
941         AC_ARG_ENABLE(telepathy,
942           AS_HELP_STRING([--enable-telepathy],[Telepathy Presence plugin through DBus(default enabled)]))
943         if test "${enable_telepathy}" != "no"; then
944           VLC_ADD_PLUGIN([telepathy])
945           VLC_ADD_LIBS([telepathy],[$DBUS_LIBS])
946           VLC_ADD_CFLAGS([telepathy],[$DBUS_CFLAGS])
947         fi
948         dnl Power Management Inhibiter
949         VLC_ADD_PLUGIN([inhibit])
950         VLC_ADD_LIBS([inhibit],[$DBUS_LIBS])
951         VLC_ADD_CFLAGS([inhibit],[$DBUS_CFLAGS])
952     ],
953     [AC_MSG_ERROR([Couldn't find DBus >= 1.0.0, install libdbus-dev ?])]
954   )
957 esac
959 dnl Check for ntohl, etc.
960 AC_CACHE_CHECK([for ntohl in sys/param.h],
961     [ac_cv_c_ntohl_sys_param_h],
962     [CFLAGS="${CFLAGS_save} -Wall -Werror"
963      AC_TRY_COMPILE([#include <sys/param.h>],
964         [int meuh; ntohl(meuh);],
965         ac_cv_c_ntohl_sys_param_h=yes, ac_cv_c_ntohl_sys_param_h=no)])
966 if test "${ac_cv_c_ntohl_sys_param_h}" != "no"; then
967     AC_DEFINE(NTOHL_IN_SYS_PARAM_H, 1, Define if <sys/param.h> defines ntohl.)
969 CFLAGS="${CFLAGS_save}"
971 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])
972 RDC_PROG_CC_FLAGS([-pipe])
974 dnl Check for various optimization flags
975 AC_CACHE_CHECK([if \$CC accepts -Os],
976     [ac_cv_c_os],
977     [CFLAGS="${CFLAGS_save} -Os"
978      AC_TRY_COMPILE([],,ac_cv_c_os=yes, ac_cv_c_os=no)])
979 if test "${ac_cv_c_os}" != "no"; then
980     CFLAGS_OPTIM_SIZE="${CFLAGS_OPTIM_SIZE} -Os"
981 else
982     AC_CACHE_CHECK([if \$CC accepts -O],
983         [ac_cv_c_o],
984         [CFLAGS="${CFLAGS_save} -O"
985          AC_TRY_COMPILE([],,ac_cv_c_o=yes, ac_cv_c_o=no)])
986     if test "${ac_cv_c_o}" != "no"; then
987         if test "${ac_cv_c_o3}" = "no"; then
988             CFLAGS_OPTIM_SIZE="${CFLAGS_OPTIM_SIZE} -O"
989         fi
990     fi
993 AC_CACHE_CHECK([if \$CC accepts -O4],
994     [ac_cv_c_o4],
995     [CFLAGS="${CFLAGS_save} -O4"
996      AC_TRY_COMPILE([],,ac_cv_c_o4=yes, ac_cv_c_o4=no)])
997 if test "${ac_cv_c_o4}" != "no" -a "x${enable_debug}" = "xno"; then
998     CFLAGS_OPTIM_SPEED="${CFLAGS_OPTIM_SPEED} -O4"
999 else
1000     AC_CACHE_CHECK([if \$CC accepts -O3],
1001         [ac_cv_c_o3],
1002         [CFLAGS="${CFLAGS_save} -O3"
1003          AC_TRY_COMPILE([],,ac_cv_c_o3=yes, ac_cv_c_o3=no)])
1004     if test "${ac_cv_c_o3}" != "no" -a "x${enable_debug}" = "xno"; then
1005         CFLAGS_OPTIM_SPEED="${CFLAGS_OPTIM_SPEED} -O3"
1006     else
1007         AC_CACHE_CHECK([if \$CC accepts -O2],
1008             [ac_cv_c_o2],
1009             [CFLAGS="${CFLAGS_save} -O2"
1010              AC_TRY_COMPILE([],,ac_cv_c_o2=yes, ac_cv_c_o2=no)])
1011         if test "${ac_cv_c_o2}" != "no"; then
1012             CFLAGS_OPTIM_SPEED="${CFLAGS_OPTIM_SPEED} -O2"
1013         else
1014             AC_CACHE_CHECK([if \$CC accepts -O],
1015                 [ac_cv_c_o],
1016                 [CFLAGS="${CFLAGS_save} -O"
1017                  AC_TRY_COMPILE([],,ac_cv_c_o=yes, ac_cv_c_o=no)])
1018             if test "${ac_cv_c_o}" != "no"; then
1019                 CFLAGS_OPTIM_SPEED="${CFLAGS_OPTIM_SPEED} -O"
1020             fi
1021         fi
1022     fi
1025 AC_CACHE_CHECK([if \$CC accepts -O0],
1026     [ac_cv_c_o0],
1027     [CFLAGS="${CFLAGS_save} -O0"
1028      AC_TRY_COMPILE([],,ac_cv_c_o0=yes, ac_cv_c_o0=no)])
1029 if test "${ac_cv_c_o0}" != "no"; then
1030     CFLAGS_NOOPTIM="${CFLAGS_NOOPTIM} -O0"
1033 dnl Check for -ffast-math
1034 AC_CACHE_CHECK([if \$CC accepts -ffast-math],
1035     [ac_cv_c_fast_math],
1036     [CFLAGS="${CFLAGS_save} -ffast-math"
1037      AC_TRY_COMPILE([],,ac_cv_c_fast_math=yes, ac_cv_c_fast_math=no)])
1038 if test "${ac_cv_c_fast_math}" != "no"; then
1039     CFLAGS_OPTIM_SPEED="${CFLAGS_OPTIM_SPEED} -ffast-math"
1042 dnl Check for -funroll-loops
1043 dnl Disabled on BeOS because BeOS' gcc is buggy and may crash with it
1044 if test "${SYS}" != "beos"
1045 then
1046   AC_CACHE_CHECK([if \$CC accepts -funroll-loops],
1047       [ac_cv_c_unroll_loops],
1048       [CFLAGS="${CFLAGS_save} -funroll-loops"
1049        AC_TRY_COMPILE([],,ac_cv_c_unroll_loops=yes, ac_cv_c_unroll_loops=no)])
1050   if test "${ac_cv_c_unroll_loops}" != "no"; then
1051       CFLAGS_OPTIM_SPEED="${CFLAGS_OPTIM_SPEED} -funroll-loops"
1052   fi
1055 dnl Check for -fomit-frame-pointer
1056 AC_CACHE_CHECK([if \$CC accepts -fomit-frame-pointer],
1057     [ac_cv_c_omit_frame_pointer],
1058     [CFLAGS="${CFLAGS_save} -fomit-frame-pointer"
1059      AC_TRY_COMPILE([],,ac_cv_c_omit_frame_pointer=yes, ac_cv_c_omit_frame_pointer=no)])
1060 if test "${ac_cv_c_omit_frame_pointer}" != "no"; then
1061  if test "${SYS}" != "darwin"; then
1062     CFLAGS_OPTIM_NODEBUG="${CFLAGS_OPTIM_NODEBUG} -fomit-frame-pointer"
1063  else
1064     dnl On darwin we explicitely disable it.
1065     CFLAGS_OPTIM_NODEBUG="${CFLAGS_OPTIM_NODEBUG} -fno-omit-frame-pointer"
1066  fi
1069 dnl Check for Darwin plugin linking flags
1070 AC_CACHE_CHECK([if \$CC accepts -bundle -undefined error],
1071     [ac_cv_ld_darwin],
1072     [CFLAGS="${CFLAGS_save} -bundle -undefined error"
1073      AC_TRY_COMPILE([],,ac_cv_ld_darwin=yes, ac_cv_ld_darwin=no)])
1074 if test "${ac_cv_ld_darwin}" != "no"; then
1075     VLC_ADD_LDFLAGS([plugin],[-bundle -undefined error])
1078 dnl Checks for __attribute__(aligned()) directive
1079 AC_CACHE_CHECK([__attribute__ ((aligned ())) support],
1080     [ac_cv_c_attribute_aligned],
1081     [ac_cv_c_attribute_aligned=0
1082         CFLAGS="${CFLAGS_save} -Werror"
1083     for ac_cv_c_attr_align_try in 2 4 8 16 32 64; do
1084         AC_TRY_COMPILE([],
1085         [static char c __attribute__ ((aligned(${ac_cv_c_attr_align_try}))) = 0; return c;],
1086         [ac_cv_c_attribute_aligned="${ac_cv_c_attr_align_try}"])
1087     done
1088         CFLAGS="${CFLAGS_save}"])
1089 if test "${ac_cv_c_attribute_aligned}" != "0"; then
1090     AC_DEFINE_UNQUOTED([ATTRIBUTE_ALIGNED_MAX],
1091         [${ac_cv_c_attribute_aligned}],[Maximum supported data alignment])
1094 dnl Check for __attribute__((packed))
1095 AC_CACHE_CHECK([for __attribute__((packed))],
1096   [ac_cv_c_attribute_packed],
1097   [ac_cv_c_attribute_packed=no
1098    AC_TRY_COMPILE(, [struct __attribute__((__packed__)) foo { int a; } b; (void)b;],
1099                     [ac_cv_c_attribute_packed=yes])])
1100 if test "${ac_cv_c_attribute_packed}" != "no"; then
1101   AC_DEFINE(HAVE_ATTRIBUTE_PACKED, 1, Support for __attribute__((packed)) for structs)
1105 dnl  Check the CPU
1107 case "${host_cpu}" in
1108   "")
1109     ARCH=unknown
1110     ;;
1111   *)
1112     ARCH="${host_cpu}"
1113     ;;
1114 esac
1116 dnl Check for backtrace() support
1117 AC_CHECK_HEADERS(execinfo.h)
1118 AC_CHECK_FUNCS(backtrace)
1121 dnl  Enable profiling
1123 AC_ARG_ENABLE(gprof,
1124 [  --enable-gprof          gprof profiling (default disabled)])
1125 AC_ARG_ENABLE(cprof,
1126 [  --enable-cprof          cprof profiling (default disabled)])
1127 test "${enable_gprof}" != "yes" && enable_gprof="no"
1128 test "${enable_cprof}" != "yes" && enable_cprof="no"
1131 dnl  default modules
1133 ALIASES="${ALIASES} cvlc rvlc"
1136 dnl Some plugins aren't useful on some platforms
1138 if test "${SYS}" != "mingw32" -a "${SYS}" != "mingwce"; then
1139     VLC_ADD_PLUGIN([dynamicoverlay])
1140 elif test "${SYS}" != "mingwce"; then
1141     VLC_ADD_PLUGIN([access_smb dmo globalhotkeys])
1142     VLC_ADD_LIBS([dmo],[-lole32 -luuid])
1144 if test "${SYS}" = "darwin"; then
1145     VLC_ADD_LDFLAGS([quartztext],[-Wl,-framework,ApplicationServices])
1149 dnl  Accelerated modules
1151 EXTEND_HELP_STRING([Optimization options:])
1153 dnl  Check for fully working MMX intrinsics
1154 dnl  We need support for -mmmx, we need <mmintrin.h>, and we also need a
1155 dnl  working compiler (http://gcc.gnu.org/bugzilla/show_bug.cgi?id=23963)
1156 AC_ARG_ENABLE(mmx,
1157 [  --disable-mmx           disable MMX optimizations (default auto)],,[
1158   case "${host_cpu}" in
1159     i?86|x86_64)
1160       enable_mmx="yes"
1161       ;;
1162     *)
1163       enable_mmx="no"
1164       ;;
1165   esac
1167 have_mmx="no"
1168 have_mmxext="no"
1169 AS_IF([test "${enable_mmx}" != "no"], [
1170   ARCH="${ARCH} mmx"
1172   AC_CACHE_CHECK([if $CC groks MMX intrinsics],
1173     [ac_cv_c_mmx_intrinsics],
1174     [CFLAGS="${CFLAGS_save} -O -mmmx"
1175      AC_TRY_COMPILE([#include <mmintrin.h>
1176                      #include <stdint.h>
1177                      uint64_t frobzor;],
1178                     [__m64 a, b, c;
1179                      a = b = c = (__m64)frobzor;
1180                      a = _mm_slli_pi16(a, 3);
1181                      a = _mm_adds_pi16(a, b);
1182                      c = _mm_srli_pi16(c, 8);
1183                      c = _mm_slli_pi16(c, 3);
1184                      b = _mm_adds_pi16(b, c);
1185                      a = _mm_unpacklo_pi8(a, b);
1186                      frobzor = (uint64_t)a;],
1187                     [ac_cv_c_mmx_intrinsics=yes],
1188                     [ac_cv_c_mmx_intrinsics=no])])
1189   AS_IF([test "${ac_cv_c_mmx_intrinsics}" != "no"], [
1190     AC_DEFINE(HAVE_MMX_INTRINSICS, 1,
1191               [Define to 1 if MMX intrinsics are available.])
1192     MMX_CFLAGS="-mmmx"
1193   ])
1195   AC_CACHE_CHECK([if $CC groks MMX inline assembly],
1196     [ac_cv_mmx_inline],
1197     [CFLAGS="${CFLAGS_save}"
1198      AC_TRY_COMPILE(,[void *p;asm volatile("packuswb %%mm1,%%mm2"::"r"(p));],
1199                     ac_cv_mmx_inline=yes, ac_cv_mmx_inline=no)])
1200   AS_IF([test "${ac_cv_mmx_inline}" != "no"], [
1201     AC_DEFINE(CAN_COMPILE_MMX, 1,
1202               [Define to 1 inline MMX assembly is available.])
1203     have_mmx="yes"
1204   ])
1206   AC_CACHE_CHECK([if $CC groks MMX EXT inline assembly],
1207     [ac_cv_mmxext_inline],
1208     [CFLAGS="${CFLAGS_save}"
1209      AC_TRY_COMPILE(,[void *p;asm volatile("maskmovq %%mm1,%%mm2"::"r"(p));],
1210                     ac_cv_mmxext_inline=yes, ac_cv_mmxext_inline=no)])
1211   AS_IF([test "${ac_cv_mmxext_inline}" != "no"], [
1212     AC_DEFINE(CAN_COMPILE_MMXEXT, 1,
1213               [Define to 1 if MMX EXT inline assembly is available.])
1214     have_mmxext="yes"
1215   ])
1217 AC_SUBST(MMX_CFLAGS)
1218 AM_CONDITIONAL([HAVE_MMX], [test "${have_mmx}" = "yes"])
1219 AM_CONDITIONAL([HAVE_MMXEXT], [test "${have_mmxext}" = "yes"])
1221 dnl  Check for fully workin SSE2 intrinsics
1222 dnl  We need support for -mmmx, we need <emmintrin.h>, and we also need a
1223 dnl  working compiler (http://gcc.gnu.org/bugzilla/show_bug.cgi?id=23963)
1224 AC_ARG_ENABLE(sse,
1225 [  --disable-sse           disable SSE (1, 2, 3 and 4) optimizations (default auto)],
1226 , [
1227   case "${host_cpu}" in
1228     i686|x86_64)
1229       enable_sse=yes
1230       ;;
1231     *)
1232       enable_sse=no
1233       ;;
1234   esac
1236 have_sse2="no"
1237 AS_IF([test "${enable_sse}" != "no"], [
1238   ARCH="${ARCH} sse sse2"
1240   AC_CACHE_CHECK([if $CC groks SSE2 intrinsics],
1241     [ac_cv_c_sse2_intrinsics],
1242     [CFLAGS="${CFLAGS_save} -O -msse2"
1243      AC_TRY_COMPILE([#include <emmintrin.h>
1244                      #include <stdint.h>
1245                      uint64_t frobzor;],
1246                     [__m128i a, b, c;
1247                      a = b = c = _mm_set1_epi64((__m64)frobzor);
1248                      a = _mm_slli_epi16(a, 3);
1249                      a = _mm_adds_epi16(a, b);
1250                      c = _mm_srli_epi16(c, 8);
1251                      c = _mm_slli_epi16(c, 3);
1252                      b = _mm_adds_epi16(b, c);
1253                      a = _mm_unpacklo_epi8(a, b);
1254                      frobzor = (uint64_t)_mm_movepi64_pi64(a);],
1255                     [ac_cv_c_sse2_intrinsics=yes],
1256                     [ac_cv_c_sse2_intrinsics=no])])
1257   AS_IF([test "${ac_cv_c_sse2_intrinsics}" != "no"], [
1258     AC_DEFINE(HAVE_SSE2_INTRINSICS, 1,
1259               [Define to 1 if SSE2 intrinsics are available.])
1260     SSE2_CFLAGS="-msse2"
1261   ])
1263   AC_CACHE_CHECK([if $CC groks SSE inline assembly],
1264     [ac_cv_sse_inline],
1265     [CFLAGS="${CFLAGS_save}"
1266      AC_TRY_COMPILE(,[void *p;asm volatile("xorps %%xmm1,%%xmm2"::"r"(p));],
1267                     ac_cv_sse_inline=yes, ac_cv_sse_inline=no)])
1268   AS_IF([test "${ac_cv_sse_inline}" != "no" -a "${SYS}" != "solaris"], [
1269     AC_DEFINE(CAN_COMPILE_SSE, 1,
1270               [Define to 1 if SSE inline assembly is available.])
1271   ])
1273   AC_CACHE_CHECK([if $CC groks SSE2 inline assembly],
1274     [ac_cv_sse2_inline],
1275     [CFLAGS="${CFLAGS_save}"
1276      AC_TRY_COMPILE(,[void *p;asm volatile("punpckhqdq %%xmm1,%%xmm2"::"r"(p));],
1277                     ac_cv_sse2_inline=yes, ac_cv_sse2_inline=no)])
1278   AS_IF([test "${ac_cv_sse2_inline}" != "no" -a "${SYS}" != "solaris"], [
1279     AC_DEFINE(CAN_COMPILE_SSE2, 1,
1280               [Define to 1 if SSE2 inline assembly is available.])
1281     have_sse2="yes"
1282   ])
1284   # SSE3
1285   AC_CACHE_CHECK([if $CC groks SSE3 inline assembly],
1286     [ac_cv_sse3_inline],
1287     [CFLAGS="${CFLAGS_save}"
1288      AC_TRY_COMPILE(,[void *p;asm volatile("movsldup %%xmm1,%%xmm0"::"r"(p));],
1289                     ac_cv_sse3_inline=yes, ac_cv_sse3_inline=no)])
1290   AS_IF([test "${ac_cv_sse3_inline}" != "no"], [
1291     AC_DEFINE(CAN_COMPILE_SSE3, 1,
1292               [Define to 1 if SSE3 inline assembly is available.]) ])
1293   # SSSE3
1294   AC_CACHE_CHECK([if $CC groks SSSE3 inline assembly],
1295     [ac_cv_ssse3_inline],
1296     [CFLAGS="${CFLAGS_save}"
1297      AC_TRY_COMPILE(,[void *p;asm volatile("pabsw %%xmm0,%%xmm0"::"r"(p));],
1298                     ac_cv_ssse3_inline=yes, ac_cv_ssse3_inline=no)])
1299   AS_IF([test "${ac_cv_ssse3_inline}" != "no"], [
1300     AC_DEFINE(CAN_COMPILE_SSSE3, 1,
1301               [Define to 1 if SSSE3 inline assembly is available.]) ])
1303   # SSE4.1
1304   AC_CACHE_CHECK([if $CC groks SSE4.1 inline assembly],
1305     [ac_cv_sse4_1_inline],
1306     [CFLAGS="${CFLAGS_save}"
1307      AC_TRY_COMPILE(,[void *p;asm volatile("pmaxsb %%xmm1,%%xmm0"::"r"(p));],
1308                     ac_cv_sse4_1_inline=yes, ac_cv_sse4_1_inline=no)])
1309   AS_IF([test "${ac_cv_sse4_1_inline}" != "no"], [
1310     AC_DEFINE(CAN_COMPILE_SSE4_1, 1,
1311               [Define to 1 if SSE4_1 inline assembly is available.]) ])
1313   # SSE4.2
1314   AC_CACHE_CHECK([if $CC groks SSE4.2 inline assembly],
1315     [ac_cv_sse4_2_inline],
1316     [CFLAGS="${CFLAGS_save}"
1317      AC_TRY_COMPILE(,[void *p;asm volatile("pcmpgtq %%xmm1,%%xmm0"::"r"(p));],
1318                     ac_cv_sse4_2_inline=yes, ac_cv_sse4_2_inline=no)])
1319   AS_IF([test "${ac_cv_sse4_2_inline}" != "no"], [
1320     AC_DEFINE(CAN_COMPILE_SSE4_2, 1,
1321               [Define to 1 if SSE4_2 inline assembly is available.]) ])
1323   # SSE4A
1324   AC_CACHE_CHECK([if $CC groks SSE4A inline assembly],
1325     [ac_cv_sse4a_inline],
1326     [CFLAGS="${CFLAGS_save}"
1327      AC_TRY_COMPILE(,[void *p;asm volatile("insertq %%xmm1,%%xmm0"::"r"(p));],
1328                     ac_cv_sse4a_inline=yes, ac_cv_sse4a_inline=no)])
1329   AS_IF([test "${ac_cv_sse4a_inline}" != "no"], [
1330     AC_DEFINE(CAN_COMPILE_SSE4A, 1,
1331               [Define to 1 if SSE4A inline assembly is available.]) ])
1333 AC_SUBST(SSE2_CFLAGS)
1334 AM_CONDITIONAL([HAVE_SSE2], [test "$have_sse2" = "yes"])
1336 have_3dnow="no"
1337 AC_CACHE_CHECK([if $CC groks 3D Now! inline assembly],
1338     [ac_cv_3dnow_inline],
1339     [CFLAGS="${CFLAGS_save}"
1340      AC_TRY_COMPILE(,[void *p;asm volatile("pfadd %%mm1,%%mm2"::"r"(p));],
1341                     ac_cv_3dnow_inline=yes, ac_cv_3dnow_inline=no)])
1342 AS_IF([test "${ac_cv_3dnow_inline}" != "no"], [
1343   AC_DEFINE(CAN_COMPILE_3DNOW, 1,
1344             [Define to 1 if 3D Now! inline assembly is available.])
1345   have_3dnow="yes"
1347 AM_CONDITIONAL([HAVE_3DNOW], [test "$have_3dnow" = "yes"])
1350 AC_ARG_ENABLE(neon,
1351 [  --disable-neon          disable NEON optimizations (default auto)],, [
1352   AS_IF([test "${host_cpu}" = "arm"], [enable_neon="yes"] ,[enable_neon="no"])
1354 AS_IF([test "${enable_neon}" != "no"], [
1355   AC_CACHE_CHECK([if $CC groks NEON inline assembly], [ac_cv_neon_inline], [
1356     CFLAGS="${CFLAGS_save} -mfpu=neon"
1357     AC_COMPILE_IFELSE([
1358       AC_LANG_PROGRAM(,[[
1359 asm volatile("vqmovun.s64 d0, q1":::"d0");
1360 asm volatile("ssat r0, #1, r0":::"r0"); /* assume ARMv6 */
1362     ], [
1363       ac_cv_neon_inline="-mfpu=neon"
1364     ], [
1365       ac_cv_neon_inline="no"
1366     ])
1367     CFLAGS="${CFLAGS_save}"
1368   ])
1369   ARM_NEON_CFLAGS="$ac_cv_neon_inline"
1370 ], [
1371   ac_cv_neon_inline="no"
1373 AC_SUBST(ARM_NEON_CFLAGS)
1374 AM_CONDITIONAL(HAVE_ARM_NEON, [test "${ac_cv_neon_inline}" != "no"])
1377 AC_ARG_ENABLE(altivec,
1378 [  --disable-altivec       disable AltiVec optimizations (default auto)],, [
1379   AS_IF([test "${host_cpu}" = "powerpc"],
1380         [enable_altivec=yes], [enable_altivec=no])
1382 have_altivec="no"
1383 AS_IF([test "${enable_altivec}" = "yes"], [
1384   ARCH="${ARCH} altivec";
1385   AC_CACHE_CHECK([if $CC groks AltiVec inline assembly],
1386     [ac_cv_altivec_inline],
1387     [CFLAGS="${CFLAGS_save}"
1388      AC_TRY_COMPILE(,[asm volatile("vperm 0,1,2,3");],
1389          ac_cv_altivec_inline="yes",
1390          [CFLAGS="${CFLAGS_save} -Wa,-m7400"
1391           AC_TRY_COMPILE(,[asm volatile("vperm 0,1,2,3");],
1392             [ac_cv_altivec_inline="-Wa,-m7400"],
1393             ac_cv_altivec_inline=no)
1394          ])])
1395   AS_IF([test "${ac_cv_altivec_inline}" != "no"], [
1396     AC_DEFINE(CAN_COMPILE_ALTIVEC, 1,
1397               [Define to 1 if AltiVec inline assembly is available.])
1398     AS_IF([test "${ac_cv_altivec_inline}" != "yes"], [
1399       VLC_ADD_CFLAGS([idctaltivec],[${ac_cv_altivec_inline}])
1400       VLC_ADD_CFLAGS([motionaltivec],[${ac_cv_altivec_inline}])
1401       VLC_ADD_CFLAGS([memcpyaltivec],[${ac_cv_altivec_inline}])
1402       VLC_ADD_CFLAGS([i420_yuy2_altivec],[${ac_cv_altivec_inline}])
1403       VLC_ADD_CFLAGS([libvlccore],[${ac_cv_altivec_inline}])
1404     ])
1405     have_altivec="yes"
1406   ])
1408 dnl The AltiVec C extensions
1410 dnl There are several possible cases:
1411 dnl - OS X PPC, gcc 4.x: use -mpim-altivec -force_cpusubtype_ALL, don't
1412 dnl                      need <altivec.h>
1413 dnl - OS X PPC, gcc 3.x: need -faltivec, don't need <altivec.h>
1414 dnl - Linux PPC, gcc 3.4, 4.x: need <altivec.h> which requires -maltivec
1415 dnl - Linux PPC, gcc 3.3: need <altivec.h> and -maltivec -mabi=altivec
1416 dnl - Linux PPC, gcc 3.x: need <altivec.h> and -fvec
1417 dnl - Others: test should fail
1418   AC_CACHE_CHECK([if \$CC groks AltiVec C extensions],
1419   [ac_cv_c_altivec],
1420   [# OS X/PPC test (gcc 4.x)
1421    CFLAGS="${CFLAGS_save} -mpim-altivec -force_cpusubtype_ALL"
1422    AC_TRY_COMPILE([vector unsigned char foo;],
1423      [vec_ld(0, (unsigned char *)0);],
1424      [ac_cv_c_altivec="-mpim-altivec -force_cpusubtype_ALL"],
1425      [# OS X/PPC test (gcc 3.x)
1426       CFLAGS="${CFLAGS_save} -faltivec"
1427       AC_TRY_COMPILE([vector unsigned char foo;],
1428         [vec_ld(1 * sizeof(vector float), (unsigned char *)0);],
1429         [ac_cv_c_altivec="-faltivec"],
1430         dnl Below this are the Linux tests
1431         [# Linux/PPC test (gcc 4.x)
1432          CFLAGS="${CFLAGS_save} -maltivec"
1433          AC_TRY_COMPILE([#include <altivec.h>],
1434            [vec_ld(0, (unsigned char *)0);],
1435            [ac_cv_c_altivec="-maltivec"],
1436            [# Linux/PPC test (gcc 3.3)
1437             CFLAGS="${CFLAGS_save} -maltivec -mabi=altivec"
1438             AC_TRY_COMPILE([#include <altivec.h>],
1439               [vec_ld(0, (unsigned char *)0);],
1440               [ac_cv_c_altivec=""
1441                ac_cv_c_altivec_abi="-maltivec -mabi=altivec"],
1442               [# Linux/PPC test (gcc 3.3)
1443                CFLAGS="${CFLAGS_save} -fvec"
1444                AC_TRY_COMPILE([#include <altivec.h>],
1445                  [vec_ld(0, (unsigned char *)0);],
1446                  [ac_cv_c_altivec="-fvec"],
1447                  [ac_cv_c_altivec=no])
1448               ])
1449            ])
1450         ])
1451      ])
1452    CFLAGS="${CFLAGS_save}"
1453   ])
1454   AS_IF([test "${ac_cv_c_altivec}" != "no"], [
1455     CPPFLAGS="${CPPFLAGS_save} ${ac_cv_c_altivec}"
1456   ])
1458   AC_CHECK_HEADERS(altivec.h)
1459   CPPFLAGS="${CPPFLAGS_save}"
1461   AS_IF([test "${ac_cv_c_altivec}" != "no"], [
1462     AC_DEFINE(CAN_COMPILE_C_ALTIVEC, 1,
1463               [Define to 1 if C AltiVec extensions are available.])
1464     VLC_ADD_CFLAGS([libvlccore],[${ac_cv_c_altivec}])
1465     VLC_ADD_CFLAGS([idctaltivec motionaltivec],[${ac_cv_c_altivec}])
1466     VLC_ADD_CFLAGS([i420_yuy2_altivec memcpyaltivec deinterlace],[${ac_cv_c_altivec} ${ac_cv_c_altivec_abi}])
1467     have_altivec="yes"
1468   ])
1470   AC_CACHE_CHECK([if linker needs -framework vecLib],
1471     [ac_cv_ld_altivec],
1472     [LDFLAGS="${LDFLAGS_vlc} -Wl,-framework,vecLib"
1473      AC_TRY_LINK([],,ac_cv_ld_altivec=yes,ac_cv_ld_altivec=no)
1474      LDFLAGS="${LDFLAGS_save}"
1475     ])
1476   AS_IF([test "${ac_cv_ld_altivec}" != "no"], [
1477     VLC_ADD_LDFLAGS([libvlccore idctaltivec motionaltivec memcpyaltivec],[-Wl,-framework,vecLib])
1478   ])
1480 AM_CONDITIONAL([HAVE_ALTIVEC], [test "$have_altivec" = "yes"])
1483 dnl  Special arch tuning
1485 AC_ARG_WITH(tuning,
1486 [  --with-tuning=ARCH      enable special tuning for an architecture
1487                           (default Pentium 2 on IA-32 and G4 on PPC)])
1488 if test -n "${with_tuning}"; then
1489     if test "${with_tuning}" != "no"; then
1490         CFLAGS_TUNING="-mtune=${with_tuning}"
1491     fi
1492 else
1493     if test "${SYS}" = "darwin" -a "${host_cpu}" != "powerpc"; then
1494         CFLAGS_TUNING="-march=prescott -mtune=generic"
1495     elif test "${host_cpu}" = "i686" -o "${host_cpu}" = "i586" -o "${host_cpu}" = "i486" -o "${host_cpu}" = "i386"; then
1496         CFLAGS_TUNING="-mtune=pentium2"
1497     elif test "${host_cpu}" = "x86_64"; then
1498         CFLAGS_TUNING="-mtune=athlon64"
1499     elif test "${host_cpu}" = "powerpc"; then
1500         CFLAGS_TUNING="-mtune=G4";
1501     fi
1504 dnl NOTE: this can't be cached cleanly
1505 AS_IF([test "${CFLAGS_TUNING}"],
1506    [CFLAGS_save="${CFLAGS}"
1507     CFLAGS="${CFLAGS} ${CFLAGS_TUNING}"
1509     AC_MSG_CHECKING([whether $CC accepts ${CFLAGS_TUNING}])
1510     AC_COMPILE_IFELSE([ ],
1511                       [tuning="yes"],
1512                       [CFLAGS_TUNING=""; tuning="no"
1513                        AS_IF([test "${with_tuning}"],
1514                              [AC_MSG_ERROR([requested tuning not supported])])])
1516     AC_MSG_RESULT([$tuning])
1517     CFLAGS="${CFLAGS_save}"
1521 dnl  Memory usage
1523 AC_ARG_ENABLE(optimize-memory,
1524 [  --enable-optimize-memory optimize memory usage over performance])
1525 if test "${enable_optimize_memory}" = "yes"; then
1526   AC_DEFINE(OPTIMIZE_MEMORY, 1, Define if you want to optimize memory usage over performance)
1530 dnl  Enable/disable optimizations
1532 AC_ARG_ENABLE(optimizations,
1533 [  --disable-optimizations disable compiler optimizations (default enabled)])
1534 if test "${enable_optimizations}" != "no"; then
1535    if test "${enable_optimize_memory}" = "yes"; then
1536       enable_optimizations="size"
1537    else
1538       enable_optimizations="speed"
1539    fi
1543 dnl  Debugging mode
1545 AC_ARG_ENABLE(debug,
1546 [  --enable-debug          debug mode (default disabled)])
1547 test "${enable_debug}" != "yes" && enable_debug="no"
1548 AH_TEMPLATE(NDEBUG,
1549             [Define to 1 if debug code should NOT be compiled])
1550 AS_IF([test "x${enable_debug}" = "xno"], [
1551   AC_DEFINE(NDEBUG)
1552 ], [
1553   AC_CHECK_HEADERS([valgrind/valgrind.h])
1557 dnl Allow running as root (useful for people running on embedded platforms)
1559 AC_ARG_ENABLE(run-as-root,
1560 [  --enable-run-as-root    allow running VLC as root (default disabled)])
1561 AS_IF([test "${enable_run_as_root}" = "yes"],[
1562     AC_DEFINE(ALLOW_RUN_AS_ROOT, 1,
1563               [Define to 1 to allow running VLC as root (uid 0).])
1567 dnl  Test coverage
1569 AC_ARG_ENABLE(coverage,
1570         [  --enable-coverage       build for test coverage (default disabled)],,
1571         [enable_coverage="no"])
1572 AS_IF([test "${enable_coverage}" != "no"], [
1573         CFLAGS="-fprofile-arcs -ftest-coverage ${CFLAGS}"
1574         CXXFLAGS="-fprofile-arcs -ftest-coverage ${CXXFLAGS}"
1575         LDFLAGS="-lgcov ${LDFLAGS}"
1576         dnl ugly...
1577         CFLAGS_save="${CFLAGS}"
1578         CXXFLAGS_save="${CXXFLAGS}"
1579         LDFLAGS_save="${LDFLAGS}"
1583 dnl Stream output
1585 AC_ARG_ENABLE(sout,
1586   [  --enable-sout           Stream output modules (default enabled)])
1587 AS_IF([test "${enable_sout}" != "no"], [
1588   AC_DEFINE(ENABLE_SOUT, 1, [Define to 1 for stream output support.])
1590 AM_CONDITIONAL(ENABLE_SOUT, [test "${enable_sout}" != "no"])
1592 dnl Lua modules
1593 AC_ARG_ENABLE(lua,
1594   AS_HELP_STRING([--enable-lua],[lua playlist, metafetcher and interface
1595                   plugins (default enabled)]))
1596 if test "${enable_lua}" != "no"
1597 then
1598   PKG_CHECK_MODULES(LUA, lua5.1,
1599     [ have_lua=yes ],
1600     [
1601     AC_MSG_WARN([lua5.1 not found, trying lua >= 5.1 instead])
1602     PKG_CHECK_MODULES(LUA, lua >= 5.1,
1603       [ have_lua=yes ],
1604       [
1605         have_lua=yes
1606         AC_CHECK_HEADERS([lua.h lauxlib.h lualib.h],
1607           [],
1608           [ have_lua=no ] )
1609         AC_CHECK_LIB(  lua5.1 , luaL_newstate,
1610           [LUA_LIBS="-llua5.1"],
1611           AC_CHECK_LIB( lua51 , luaL_newstate,
1612             [LUA_LIBS="-llua51"],
1613             AC_CHECK_LIB( lua , luaL_newstate,
1614               [LUA_LIBS="-llua"],
1615               [ have_lua=no
1616               ], [-lm])
1617           )
1618         )
1619       ])
1620     ])
1621   if test "x${have_lua}" = "xyes" ;  then
1622      VLC_ADD_LIBS([lua],[$LUA_LIBS])
1623      VLC_ADD_CFLAGS([lua],[$LUA_CFLAGS])
1624   else
1625       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.])
1626   fi
1627   AC_ARG_VAR([LUAC], [LUA byte compiler])
1628   AC_PATH_PROGS(LUAC,[${LUAC} luac], [false])
1629   AS_IF([test "${LUAC}" = "false"], [
1630     AC_MSG_ERROR([Could not find the LUA byte compiler.])
1631   ])
1633 AM_CONDITIONAL(BUILD_LUA, [test "${have_lua}" = "yes"])
1636 dnl HTTP daemon
1638 AC_ARG_ENABLE(httpd,
1639   [  --enable-httpd          HTTP daemon (default enabled)])
1640 if test "${enable_httpd}" != "no"
1641 then
1642   VLC_ADD_PLUGIN([oldhttp])
1643   AC_DEFINE(ENABLE_HTTPD, 1, Define if you want the HTTP dameon support)
1645 AM_CONDITIONAL(BUILD_HTTPD, [test "${enable_httpd}" != "no"])
1648 dnl libproxy support
1650 AC_ARG_ENABLE(libproxy,
1651   [  --enable-libproxy       libproxy support (default auto)])
1652 AS_IF([test "${enable_libproxy}" != "no"], [
1653   PKG_CHECK_MODULES(LIBPROXY, libproxy-1.0, [
1654     AC_DEFINE(HAVE_LIBPROXY, 1, [Define if libproxy is available])
1655     VLC_ADD_CFLAGS([access_http],[$LIBPROXY_CFLAGS])
1656     VLC_ADD_LIBS([access_http],[$LIBPROXY_LIBS])
1657   ], [
1658     AS_IF([test "x${enable_libproxy}" != "x"], [
1659       AC_MSG_ERROR([libproxy could not be found on your system])
1660     ])
1661   ])
1666 dnl VideoLAN manager
1668 AC_ARG_ENABLE(vlm,
1669   [  --enable-vlm            VideoLAN manager (default enabled)],,
1670   [enable_vlm="${enable_sout}"])
1671 AS_IF([test "${enable_vlm}" != "no"], [
1672   AS_IF([test "${enable_sout}" = "no"], [
1673     AC_MSG_ERROR([VLM requires the stream output. Do not use --disable-sout.])
1674   ])
1675   AC_DEFINE(ENABLE_VLM, 1, [Define if you want the VideoLAN manager support])
1677 AM_CONDITIONAL([ENABLE_VLM], [test "${enable_vlm}" != "no"])
1680 dnl Growl notification plugin
1682 AC_ARG_ENABLE(growl,
1683   [  --enable-growl          growl notification plugin (default disabled)],,
1684   [enable_growl=no])
1685 AS_IF([test "${enable_growl}" != "no"], [
1686     VLC_ADD_PLUGIN([growl_udp])
1687     AC_CHECK_HEADERS(Growl/GrowlDefines.h, [
1688       VLC_ADD_PLUGIN([growl])
1689       VLC_ADD_LDFLAGS([growl], [-Wl,-framework,Growl,-framework,AppKit])
1690       VLC_ADD_OBJCFLAGS([growl], [-fobjc-exceptions] )
1691     ])
1692   ]
1696 dnl Libnotify notification plugin
1698 PKG_ENABLE_MODULES_VLC([NOTIFY], [], [libnotify], [libnotify notification], [auto])
1701 dnl Taglibplugin
1703 AC_ARG_ENABLE(taglib,
1704   [  --disable-taglib        Taglib support (default enabled) ])
1705   AS_IF([test "${enable_taglib}" != "no"],[
1706     PKG_CHECK_MODULES(TAGLIB, taglib >= 1.5,
1707       [ VLC_ADD_PLUGIN([taglib])
1708         VLC_ADD_LIBS([taglib],[$TAGLIB_LIBS -lz])
1709         VLC_ADD_CXXFLAGS([taglib],[$TAGLIB_CFLAGS])
1710         AC_LANG_PUSH(C++)
1711         AC_CHECK_HEADERS(taglib/mp4coverart.h)
1712         AC_LANG_POP(C++)
1713       ],
1714       [AC_MSG_WARN(TagLib library not found)])
1715   ])
1718 dnl  Input plugins
1721 EXTEND_HELP_STRING([Input plugins:])
1723 dnl  live555 input
1725 AC_ARG_ENABLE(live555,
1726 [  --enable-live555        live555 RTSP input plugin (default enabled)])
1727 if test "${enable_live555}" != "no"; then
1728   AC_ARG_WITH(live555-tree,
1729     [  --with-live555-tree=PATH live.com tree for static linking])
1731   dnl
1732   dnl test for --with-live555-tree
1733   dnl
1734   if test -z "${with_live555_tree}" -a "${CXX}" != ""; then
1735     AC_LANG_PUSH(C++)
1736     CPPFLAGS_save="${CPPFLAGS}"
1737     if test -z "${CONTRIB_DIR}"; then
1738         CPPFLAGS_live555="-I/usr/include/liveMedia -I/usr/include/groupsock -I/usr/include/BasicUsageEnvironment -I/usr/include/UsageEnvironment"
1739     else
1740         CPPFLAGS_live555="-I${CONTRIB_DIR}/include/liveMedia -I${CONTRIB_DIR}/include/groupsock -I${CONTRIB_DIR}/include/BasicUsageEnvironment -I${CONTRIB_DIR}/include/UsageEnvironment"
1741     fi
1742     if test "${SYS}" = "solaris"; then
1743       CPPFLAGS_live555="${CPPFLAGS_live555} -DSOLARIS"
1744     fi
1745     CPPFLAGS="${CPPFLAGS} ${CPPFLAGS_live555}"
1747     AC_CHECK_HEADERS(liveMedia_version.hh, [
1748       AC_MSG_CHECKING(for liveMedia version >= 1275091200 )
1749       AC_EGREP_CPP(yes,
1750         [#include <liveMedia_version.hh>
1751          #ifdef LIVEMEDIA_LIBRARY_VERSION_INT
1752          #if LIVEMEDIA_LIBRARY_VERSION_INT < 1275091200
1753          yes
1754          #endif
1755          #endif],
1756         [AC_MSG_RESULT([no])
1757           AC_MSG_WARN([The installed liveMedia version is too old:
1758 Version 2010.05.29 or later is required to proceed.
1759 You can get an updated one from http://www.live555.com/liveMedia .])
1760           AS_IF([test "${enable_live555}" == "yes"], [
1761             AC_MSG_ERROR([Update live555 or pass --disable-live555 to disable the plugin.])
1762           ])
1763         ],[
1764           AC_MSG_RESULT([yes])
1765           other_libs="-lgroupsock -lBasicUsageEnvironment -lUsageEnvironment"
1766           other_libs_pic="-lgroupsock_pic -lBasicUsageEnvironment_pic -lUsageEnvironment_pic"
1767           if test "${SYS}" = "mingw32"; then
1768             # add ws2_32 for closesocket, select, recv
1769             other_libs="$other_libs -lws2_32"
1770           elif test "${SYS}" = "mingwce"; then
1771             # add ws2 for closesocket, select, recv
1772             other_libs="$other_libs -lws2"
1773           fi
1775           dnl We need to check for pic because live555 don't provide shared libs
1776           dnl and we want to build a plugins so we need -fPIC on some arch.
1777           VLC_ADD_CXXFLAGS([live555], [${CPPFLAGS_live555}])
1778           AC_CHECK_LIB(liveMedia_pic, main, [
1779             VLC_ADD_PLUGIN([live555])
1780             VLC_ADD_LIBS([live555], [-lliveMedia_pic ${other_libs_pic}])
1781           ],[
1782             AC_CHECK_LIB(liveMedia, main, [
1783             VLC_ADD_PLUGIN([live555])
1784             VLC_ADD_LIBS([live555], [-lliveMedia ${other_libs}])
1785           ],[],[${other_libs}]) ],[${other_libs_pic}])
1787           CPPFLAGS="${CPPFLAGS_save}"
1788           AC_LANG_POP(C++)
1789         ])
1790       ])
1791   else
1792     AC_MSG_CHECKING(for liveMedia/libliveMedia.a in ${with_live555_tree})
1793     real_live555_tree="`cd ${with_live555_tree} 2>/dev/null && pwd`"
1794     if test -z "${real_live555_tree}"; then
1795       dnl  The given directory can't be found
1796       AC_MSG_RESULT(no)
1797       AC_MSG_ERROR([cannot cd to ${with_live555_tree}])
1798     fi
1799     if test -f "${real_live555_tree}/liveMedia/libliveMedia.a"; then
1800       AC_MSG_RESULT(${real_live555_tree}/liveMedia/libliveMedia.a)
1802       AC_CHECK_HEADERS(${real_live555_tree}/liveMedia/include/liveMedia_version.hh,[
1803         AC_MSG_CHECKING(for liveMedia version >= 1275091200 )
1804         AC_EGREP_CPP(yes,
1805           [#include "${real_live555_tree}/liveMedia/include/liveMedia_version.hh"
1806            #ifdef LIVEMEDIA_LIBRARY_VERSION_INT
1807            #if LIVEMEDIA_LIBRARY_VERSION_INT < 1275091200
1808            yes
1809            #endif
1810            #endif],
1811           [AC_MSG_RESULT([no])
1812            AC_MSG_ERROR([Your version of liveMedia is too old: you may get a more recent one from http://www.live555.com/liveMedia.
1813 lternatively you can use --disable-live555 to disable the liveMedia plugin.])
1814         ],[
1815            AC_MSG_RESULT([yes])
1816            ])
1817       ])
1819       VLC_ADD_PLUGIN([live555])
1821       if test "${SYS}" = "mingw32"; then
1822         # add ws2_32 for closesocket, select, recv
1823         VLC_ADD_LIBS([live555],[-lws2_32])
1824       fi
1826       VLC_ADD_LIBS([live555],[-L${real_live555_tree}/UsageEnvironment -lUsageEnvironment])
1827       VLC_ADD_LIBS([live555],[-L${real_live555_tree}/BasicUsageEnvironment -lBasicUsageEnvironment])
1828       VLC_ADD_LIBS([live555],[-L${real_live555_tree}/groupsock -lgroupsock])
1829       VLC_ADD_LIBS([live555],[-L${real_live555_tree}/liveMedia -lliveMedia])
1831       VLC_ADD_CXXFLAGS([live555],[-I${real_live555_tree}/BasicUsageEnvironment/include])
1832       VLC_ADD_CXXFLAGS([live555],[-I${real_live555_tree}/groupsock/include])
1833       VLC_ADD_CXXFLAGS([live555],[-I${real_live555_tree}/liveMedia/include])
1834       VLC_ADD_CXXFLAGS([live555],[-I${real_live555_tree}/UsageEnvironment/include ])
1835       if test "${SYS}" = "solaris"; then
1836         VLC_ADD_CXXFLAGS([live555],[-DSOLARIS])
1837       fi
1838     else
1839       dnl  The given live555 wasn't built
1840         AC_MSG_RESULT(no)
1841       if test "${enable_live555}" = "yes"; then
1842         AC_MSG_ERROR([cannot find ${real_live555_tree}/liveMedia/libliveMedia.a, make sure you compiled live555 in ${with_live555_tree}])
1843       fi        
1844     fi
1845   fi
1849 dnl - special access module for dc1394 input
1850 dnl - dv module: digital video module check for libraw1394
1852 PKG_ENABLE_MODULES_VLC([DC1394], [], [libraw1394 >= 2.0.1 libdc1394-2 >= 2.1.0], [dc1394 access module], [auto])
1853 PKG_ENABLE_MODULES_VLC([DV], [access_dv], [libraw1394 >= 2.0.1 libavc1394 >= 0.5.3], [DV input module], [auto])
1856 dnl dvdread module: check for libdvdread
1858 dnl prepend -ldvdcss on OS that need it
1859 AS_CASE(["${SYS}"], [mingw32|darwin|beos], [VLC_ADD_LIBS([dvdread], [-ldvdcss])])
1860 PKG_ENABLE_MODULES_VLC([DVDREAD], [], [dvdread], [dvdread input module], [auto])
1863 dnl libdvdnav plugin
1865 AC_ARG_ENABLE(dvdnav,
1866   [  --enable-dvdnav         dvdnav input module (default enabled)])
1867 if test "${enable_dvdnav}" != "no"
1868 then
1869   dnl prepend -ldvdcss on OS that need it
1870   AS_CASE(["${SYS}"], [mingw32|darwin|beos], [VLC_ADD_LIBS([dvdnav], [-ldvdcss])])
1872   DVDNAV_PATH="${PATH}"
1873   AC_ARG_WITH(dvdnav-config-path,
1874     [  --with-dvdnav-config-path=PATH dvdnav-config path (default search in \$PATH)],
1875     [ if test "${with_dvdnav_config_path}" != "no"
1876       then
1877         DVDNAV_PATH="${with_dvdnav_config_path}:${PATH}"
1878       fi ])
1879   AC_PATH_PROG(DVDNAV_CONFIG, dvdnav-config, no, ${DVDNAV_PATH})
1880   if test "${DVDNAV_CONFIG}" != "no"
1881   then
1882     VLC_ADD_PLUGIN([dvdnav])
1883     VLC_ADD_CFLAGS([dvdnav],[`${DVDNAV_CONFIG} --cflags`])
1884     VLC_ADD_LIBS([dvdnav],[`${DVDNAV_CONFIG} --libs`])
1885     AC_CHECK_LIB(dvdnav, dvdnav_get_video_resolution,
1886                 AC_DEFINE(HAVE_DVDNAV_GET_VIDEO_RESOLUTION, 1, [Define if you have dvdnav_get_video_resolution.]),
1887                 [], [${LIBS_dvdnav}])
1888     AC_CHECK_LIB(dvdnav, dvdnav_describe_title_chapters,
1889                 AC_DEFINE(HAVE_DVDNAV_DESCRIBE_TITLE_CHAPTERS, 1, [Define if you have dvdnav_describe_title_chapters.]),
1890                 [], [${LIBS_dvdnav}])
1891   fi
1895 dnl  Windows DirectShow access module
1897 AC_ARG_ENABLE(dshow,
1898   [  --enable-dshow          Win32 DirectShow support (default enabled on Win32)])
1899 if test "${enable_dshow}" != "no"
1900 then
1901   if test "${SYS}" = "mingw32"
1902   then
1903     AC_LANG_PUSH(C++)
1904       AC_CHECK_HEADERS(dshow.h,
1905       [ VLC_ADD_PLUGIN([dshow])
1906         VLC_ADD_CXXFLAGS([dshow],[])
1907         VLC_ADD_LIBS([dshow],[-lole32 -loleaut32 -luuid]) ])
1908     AC_LANG_POP(C++)
1909   fi
1913 dnl  Windows DirectShow BDA access module
1915 AC_ARG_ENABLE(bda,
1916   AS_HELP_STRING([--enable-bda],[Win32 DirectShow BDA support (default
1917                   enabled on Win32)]))
1918 if test "${enable_bda}" != "no"
1919 then
1920   if test "${SYS}" = "mingw32"
1921   then
1922       AC_CHECK_HEADERS(dshow.h,
1923       [ VLC_ADD_PLUGIN([bda])
1924         VLC_ADD_CXXFLAGS([bda],[])
1925         VLC_ADD_LIBS([bda],[-lstrmiids -lole32 -loleaut32 -luuid]) ])
1926   fi
1931 dnl  Blu-ray Disc Support with libbluray
1933 PKG_ENABLE_MODULES_VLC([BLURAY], [libbluray], [libbluray], (libbluray for Blu-ray disc support ) )
1936 dnl  OpenCV wrapper and example filters
1938 PKG_ENABLE_MODULES_VLC([OPENCV], [opencv_example], [opencv], (OpenCV (computer vision) filter), [off])
1942 dnl  libsmbclient plugin
1944 AC_ARG_ENABLE(smb,
1945   [  --enable-smb            smb input module (default enabled)])
1946 if test "${enable_smb}" != "no"; then
1947   AC_CHECK_HEADERS(libsmbclient.h,
1948     [ VLC_ADD_PLUGIN([access_smb])
1949       VLC_ADD_LIBS([access_smb],[-lsmbclient]) ],
1950     [ if test -n "${enable_smb}"; then
1951         AC_MSG_ERROR([cannot find libsmbclient headers])
1952      fi ])
1957 dnl sftp access support
1959 AC_ARG_ENABLE(sftp,
1960   [  --enable-sftp           sftp input access module (default disable)])
1961 if test "${enable_sftp}" = "yes"; then
1962   AC_CHECK_HEADERS(libssh2.h, [
1963     VLC_ADD_PLUGIN([access_sftp])
1964     VLC_ADD_LIBS([access_sftp], [-lssh2])
1965   ])
1969 dnl  libdvbpsi ts demux/mux
1971 AC_ARG_ENABLE(dvbpsi,
1972   [  --enable-dvbpsi         dvbpsi ts mux and demux module (default enabled)])
1973 have_dvbpsi=no
1974 if test "${enable_dvbpsi}" != "no"
1975 then
1976   AC_ARG_WITH(dvbpsi,
1977   [  --with-dvbpsi=PATH      libdvbpsi headers and libraries])
1978   AC_ARG_WITH(dvbpsi,
1979   [  --with-dvbpsi-tree=PATH libdvbpsi tree for static linking])
1980   case "${with_dvbpsi}" in
1981   ""|yes)
1982     if test -z "${with_dvbpsi_tree}"
1983     then
1984       AC_CHECK_HEADERS(dvbpsi/dr.h,
1985         [ VLC_ADD_PLUGIN([ts])
1986           if test "${enable_sout}" != "no"; then
1987             VLC_ADD_PLUGIN([mux_ts])
1988           fi
1989           VLC_ADD_LIBS([mux_ts ts dvb],[-ldvbpsi])
1990           have_dvbpsi=yes],
1991         [  AC_MSG_WARN([cannot find libdvbpsi headers]) ],
1992         [#if defined( HAVE_STDINT_H )
1993 #   include <stdint.h>
1994 #elif defined( HAVE_INTTYPES_H )
1995 #   include <inttypes.h>
1996 #endif
1997 #include <dvbpsi/dvbpsi.h>
1998 #include <dvbpsi/descriptor.h>
1999 #include <dvbpsi/pat.h>
2000 #include <dvbpsi/pmt.h>])
2001     else
2002       AC_MSG_CHECKING(for libdvbpsi.a in ${with_dvbpsi_tree})
2003       real_dvbpsi_tree="`cd ${with_dvbpsi_tree} 2>/dev/null && pwd`"
2004       if test -z "${real_dvbpsi_tree}"
2005       then
2006         dnl  The given directory can't be found
2007         AC_MSG_RESULT(no)
2008         AC_MSG_ERROR([cannot cd to ${with_dvbpsi_tree}])
2009       fi
2010       if test -f "${real_dvbpsi_tree}/src/.libs/libdvbpsi.a"
2011       then
2012         dnl  Use a custom libdvbpsi
2013         AC_MSG_RESULT(${real_dvbpsi_tree}/src/.libs/libdvbpsi.a)
2014         VLC_ADD_PLUGIN([ts])
2015         if test "${enable_sout}" != "no"; then
2016           VLC_ADD_PLUGIN([mux_ts])
2017         fi
2018         VLC_ADD_CPPFLAGS([mux_ts ts dvb],[-I${real_dvbpsi_tree}/src])
2019         VLC_ADD_LIBS([mux_ts ts dvb],[${real_dvbpsi_tree}/src/.libs/libdvbpsi.a])
2020         have_dvbpsi=yes
2021       else
2022         dnl  The given libdvbpsi wasn't built
2023         AC_MSG_RESULT(no)
2024         AC_MSG_ERROR([cannot find ${real_dvbpsi_tree}/src/.libs/libdvbpsi.a, make sure you compiled libdvbpsi in ${with_dvbpsi_tree}])
2025       fi
2026     fi
2027   ;;
2028   no)
2029     dnl  Compile without dvbpsi
2030   ;;
2031   *)
2032     AC_MSG_CHECKING(for dvbpsi headers in ${with_dvbpsi})
2033     if test -z "${with_dvbpsi}"
2034     then
2035       LDFLAGS_test=""
2036       CPPFLAGS_test=""
2037     else
2038       LDFLAGS_test="-L${with_dvbpsi}/lib"
2039       CPPFLAGS_test="-I${with_dvbpsi}/include"
2040     fi
2041     CPPFLAGS="${CPPFLAGS_save} ${CPPFLAGS_test}"
2042     AC_CHECK_HEADERS([dvbpsi/dr.h],[
2043       VLC_ADD_PLUGIN([ts])
2044       if test "${enable_sout}" != "no"; then
2045         AC_CHECK_LIB(dvbpsi, dvbpsi_SDTServiceAddDescriptor,
2046            [VLC_ADD_PLUGIN([mux_ts])], [], [${LDFLAGS_test} -ldvbpsi])
2047       fi
2048       VLC_ADD_CPPFLAGS([mux_ts ts dvb],[${CPPFLAGS_test}])
2049       VLC_ADD_LIBS([mux_ts ts dvb],[${LDFLAGS_test} -ldvbpsi])
2050       have_dvbpsi=yes
2051     ],[
2052       if test -n "${enable_dvbpsi}"
2053       then
2054         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])
2055       fi
2056     ],
2057     [#if defined( HAVE_STDINT_H )
2058 #   include <stdint.h>
2059 #elif defined( HAVE_INTTYPES_H )
2060 #   include <inttypes.h>
2061 #endif
2062 #include <dvbpsi/dvbpsi.h>
2063 #include <dvbpsi/descriptor.h>
2064 #include <dvbpsi/pat.h>
2065 #include <dvbpsi/pmt.h>])
2066     CPPFLAGS="${CPPFLAGS_save}"
2067   ;;
2068   esac
2069   AC_CHECK_LIB(dvbpsi, dvbpsi_GenSDTSections, [
2070     AC_DEFINE(HAVE_DVBPSI_SDT, 1, [Define if you have dvbpsi_GenSDTSections.])
2071   ], [], [${LIBS_ts}])
2076 dnl  Video4Linux2 plugin
2078 AC_ARG_ENABLE(v4l2,
2079   [  --enable-v4l2           Video4Linux2 input support (default enabled)])
2080 if test "${enable_v4l2}" != "no"
2081 then
2082   AC_ARG_WITH(v4l2,
2083     [  --with-v4l2=PATH        path to a v4l2-enabled kernel tree],[],[])
2084   if test "${with_v4l2}" != "no" -a -n "${with_v4l2}"
2085   then
2086     VLC_ADD_CPPFLAGS([v4l2],[-I${with_v4l2}/include])
2087   fi
2089   CPPFLAGS="${CPPFLAGS_save} ${CPPFLAGS_v4l2}"
2090   AC_CHECK_HEADERS(linux/videodev2.h sys/videoio.h, [
2091     VLC_ADD_PLUGIN([v4l2])
2092   ],[])
2093   CPPFLAGS="${CPPFLAGS_save}"
2097 dnl libv4l2 support for video4linux.
2099 AC_ARG_ENABLE( libv4l2,
2100   [  --enable-libv4l2        Libv4l2 Video4Linux2 support (default enabled)])
2101 if test "${enable_libv4l2}" != "no" -a "${enable_v4l2}" != "no"
2102 then
2103     PKG_CHECK_MODULES( LIBV4L2, libv4l2, [
2104       VLC_ADD_LDFLAGS([v4l2],[${LIBV4L2_LIBS}])
2105       VLC_ADD_CFLAGS([v4l2],[${LIBV4L2_CFLAGS}])
2106       AC_DEFINE(HAVE_LIBV4L2, 1, Define if libv4l2 is available)],
2107       AC_MSG_WARN([LibV4L2 support disabled because libv4l2 development headers were not found])
2108     )
2112 dnl  special access module for Hauppauge PVR cards
2114 AC_ARG_ENABLE(pvr,
2115   [  --enable-pvr            PVR cards access module (default disabled)])
2116 if test "${enable_pvr}" = "yes"
2117 then
2118   VLC_ADD_PLUGIN([pvr])
2119   AC_ARG_WITH(videodev2,
2120     [  --with-videodev2=FILE   Location of videodev2.h file (default /usr/include/linux/videodev2.h)],[],[])
2121   if test "${with_videodev2}" != "no" -a -n "${with_videodev2}"
2122   then
2123     AC_DEFINE_UNQUOTED(VIDEODEV2_H_FILE, "${with_videodev2}", [Location of videodev2.h])
2124   fi
2126   AC_CACHE_CHECK([for new linux/videodev2.h],
2127       [ac_cv_new_linux_videodev2_h],
2128       [AC_TRY_COMPILE([
2129           #include <sys/types.h>
2130           #   ifdef VIDEODEV2_H_FILE
2131           #   include VIDEODEV2_H_FILE
2132           #   else
2133           #   include <linux/videodev2.h>
2134           #   endif
2135           ],
2136           [struct v4l2_ext_controls ctrls; ctrls.ctrl_class = V4L2_CTRL_CLASS_MPEG; ],
2137           ac_cv_new_linux_videodev2_h=yes,
2138           ac_cv_new_linux_videodev2_h=no)])
2139   if test "${ac_cv_new_linux_videodev2_h}" != "no"; then
2140     AC_DEFINE(HAVE_NEW_LINUX_VIDEODEV2_H, 1, [Define if new linux/videodev2.h present])
2141   fi
2145 dnl  gnomeVFS access module
2147 PKG_ENABLE_MODULES_VLC([GNOMEVFS], [access_gnomevfs], [gnome-vfs-2.0], [GnomeVFS access module], [auto])
2150 dnl  VCDX modules
2152 AC_ARG_ENABLE(vcdx,
2153   [  --enable-vcdx           VCD with navigation via libvcdinfo (default disabled)])
2155 if test "${enable_vcdx}" = "yes"
2156 then
2157         PKG_CHECK_MODULES(LIBCDIO, [libcdio >= 0.78.2 libiso9660 >= 0.72],
2158           [VLC_ADD_LIBS([vcdx],[$LIBCDIO_LIBS])
2159                  VLC_ADD_CFLAGS([vcdx],[$LIBCDIO_CFLAGS])],
2160                 [AC_MSG_ERROR([vcdx plugin requires libcdio >= 0.78.2 and libiso9660 >= 0.72])])
2161         PKG_CHECK_MODULES(LIBVCDINFO, libvcdinfo >= 0.7.22,
2162                 [VLC_ADD_LIBS([vcdx],[$LIBVCDINFO_LIBS])
2163                  VLC_ADD_CFLAGS([vcdx],[$LIBVCDINFO_CFLAGS])],
2164           [AC_MSG_ERROR([vcdx plugin requires libvcdinfo library >= 0.7.22])])
2165         VLC_ADD_PLUGIN([vcdx])
2169 dnl  Built-in CD-DA and VCD module
2171 AC_ARG_ENABLE(vcd,
2172   [  --enable-vcd            built-in VCD and CD-DA (default enabled)])
2174 AC_ARG_ENABLE(libcddb,
2175   [  --enable-libcddb        CDDB support for libcdio audio CD (default enabled)])
2177 if test "${enable_vcd}" != "no"
2178 then
2179   AC_MSG_CHECKING(for cdrom_msf0 in linux/cdrom.h)
2180   AC_EGREP_HEADER(cdrom_msf0,linux/cdrom.h,[
2181     AC_MSG_RESULT(yes)
2182     VLC_ADD_PLUGIN([vcd cdda])
2183   ],[
2184     AC_MSG_RESULT(no)
2185   ])
2187   AC_MSG_CHECKING(for scsireq in sys/scsiio.h)
2188   AC_EGREP_HEADER(scsireq,sys/scsiio.h,[
2189     AC_MSG_RESULT(yes)
2190     VLC_ADD_PLUGIN([vcd cdda])
2191     AC_DEFINE(HAVE_SCSIREQ_IN_SYS_SCSIIO_H, 1, For NetBSD VCD support)
2192   ],[
2193     AC_MSG_RESULT(no)
2194   ])
2196   AC_MSG_CHECKING(for ioc_toc_header in sys/cdio.h)
2197   AC_EGREP_HEADER(ioc_toc_header ,sys/cdio.h,[
2198     AC_MSG_RESULT(yes)
2199     VLC_ADD_PLUGIN([vcd cdda])
2200     AC_DEFINE(HAVE_IOC_TOC_HEADER_IN_SYS_CDIO_H, 1, For FreeBSD VCD support)
2201   ],[
2202     AC_MSG_RESULT(no)
2203   ])
2205   if test "${SYS}" = "bsdi" -o "${SYS}" = "mingw32"
2206   then
2207     VLC_ADD_PLUGIN([vcd cdda])
2208   fi
2210   if test "${SYS}" = "darwin"
2211   then
2212     VLC_ADD_PLUGIN([vcd cdda])
2213     VLC_ADD_LDFLAGS([vcd vcdx cdda],[-Wl,-framework,IOKit,-framework,CoreFoundation])
2214     VLC_ADD_LIBS([vcdx cdda],[-liconv])
2215   fi
2217   if test "$enable_libcddb" != "no"; then
2218     PKG_CHECK_MODULES(LIBCDDB, libcddb >= 0.9.5, [
2219       HAVE_LIBCDDB=yes
2220       AC_DEFINE(HAVE_LIBCDDB, 1, [Define this if you have libcddb installed])
2221       VLC_ADD_LIBS([cdda],[$LIBCDDB_LIBS])
2222       VLC_ADD_CFLAGS([cdda],[$LIBCDDB_CFLAGS])
2223       ],:
2224       [AC_MSG_WARN(new enough libcddb not found. CDDB access disabled)
2225       HAVE_LIBCDDB=no])
2226   fi
2230 dnl  DVB-S/DVB-T/DVB-C satellite/teresterial/cable input using v4l2
2232 AC_ARG_ENABLE(dvb,
2233   [  --enable-dvb            DVB-S/T/C card support (default enabled)])
2235 if test "${enable_dvb}" != "no"
2236 then
2237     AS_IF([test "${have_dvbpsi}" = "yes" ],[
2238     AC_ARG_WITH(dvb,
2239      [  --with-dvb=PATH         path to a dvb- and v4l2-enabled kernel tree],[],[])
2240      if test "${with_dvb}" != "no" -a -n "${with_dvb}"
2241      then
2242        VLC_ADD_CFLAGS([dvb],[-I${with_dvb}/include])
2243      fi
2244      CPPFLAGS="${CPPFLAGS_save} -I${with_dvb}/include"
2245      AC_CHECK_HEADERS(linux/dvb/version.h linux/dvb/frontend.h, [
2246      VLC_ADD_PLUGIN([dvb])
2247      ],[AC_MSG_WARN(linux-dvb headers not found, dvb disabled)])
2248      CPPFLAGS="${CPPFLAGS_save}"
2249    ],[
2250      AC_MSG_WARN([the dvb access module requires libdvbpsi])
2251     ])
2255 dnl  Screen capture module
2257 AC_ARG_ENABLE(screen,
2258   [  --enable-screen         Screen capture support (default enabled)])
2259 if test "${enable_screen}" != "no"; then
2260   if test "${SYS}" = "darwin"; then
2261     AC_CHECK_HEADERS(OpenGL/gl.h, [
2262       AC_CHECK_HEADERS(ApplicationServices/ApplicationServices.h, [
2263         VLC_ADD_PLUGIN([screen])
2264         VLC_ADD_LDFLAGS([screen],[-Wl,-framework,OpenGL,-framework,ApplicationServices])
2265       ])
2266     ])
2267   elif test "${SYS}" = "mingw32"; then
2268     VLC_ADD_PLUGIN([screen])
2269     VLC_ADD_LIBS([screen],[-lgdi32])
2270   elif test "${SYS}" = "mingwce"; then
2271     CPPFLAGS="${CPPFLAGS_save}"
2272   elif test "${SYS}" = "beos"; then
2273     VLC_ADD_PLUGIN([screen])
2274     VLC_ADD_CXXFLAGS([screen],[])
2275     VLC_ADD_LIBS([screen],[-lbe])
2276   fi
2280 dnl  ipv6 plugin
2282 have_ipv6=no
2283 AC_CHECK_FUNCS(inet_pton,[have_ipv6=yes],[
2284   AC_CHECK_LIB(nsl,inet_pton, [have_ipv6=yes])
2287 AS_IF([test "${have_ipv6}" = "yes"], [
2288   AC_DEFINE(HAVE_INET_PTON, 1, [Define to 1 if you have inet_pton().])])
2291 AC_CHECK_FUNCS(inet_ntop,[
2292   AC_DEFINE(HAVE_INET_NTOP, 1, [Define to 1 if you have inet_ntop().])])
2296 dnl  ogg demux plugin
2298 PKG_ENABLE_MODULES_VLC([OGG], [], [ogg >= 1.0], [Ogg demux support], [auto])
2299 if test "${enable_sout}" != "no"; then
2300     PKG_ENABLE_MODULES_VLC([MUX_OGG], [], [ogg >= 1.0], [Ogg mux support], [auto])
2303 if test "${enable_sout}" != "no"; then
2304 dnl Check for libshout
2305 PKG_ENABLE_MODULES_VLC([SHOUT], [access_output_shout], [shout >= 2.1], [libshout output plugin], [auto])
2309 dnl  matroska demux plugin
2311 AC_ARG_ENABLE(mkv,
2312   [  --enable-mkv            Matroska demux support (default enabled)])
2313 if test "${enable_mkv}" != "no" -a "${CXX}" != ""; then
2314   AC_LANG_PUSH(C++)
2315   AC_CHECK_HEADERS(ebml/EbmlVersion.h, [
2316     AC_MSG_CHECKING(for libebml version >= 1.0.0)
2317     AC_EGREP_CPP(yes,
2318       [#include <ebml/EbmlVersion.h>
2319        #ifdef LIBEBML_VERSION
2320        #if LIBEBML_VERSION >= 0x010000
2321        yes
2322        #endif
2323        #endif],
2324       [AC_MSG_RESULT([yes])
2325         AC_CHECK_HEADERS(matroska/KaxVersion.h, [
2326           AC_MSG_CHECKING(for libmatroska version >= 1.0.0)
2327           AC_EGREP_CPP(yes,
2328             [#include <matroska/KaxVersion.h>
2329              #ifdef LIBMATROSKA_VERSION
2330              #if LIBMATROSKA_VERSION >= 0x010000
2331              yes
2332              #endif
2333              #endif],
2334             [AC_MSG_RESULT([yes])
2335               AC_CHECK_HEADERS(matroska/KaxAttachments.h)
2336               VLC_ADD_CXXFLAGS([mkv],[])
2337               if test "${SYS}" = "darwin"; then
2338                 VLC_ADD_CXXFLAGS([mkv],[-O1])
2339               fi
2340               AC_CHECK_LIB(ebml_pic, main, [
2341                 VLC_ADD_PLUGIN([mkv])
2342                 VLC_ADD_LIBS([mkv],[-lmatroska -lebml_pic])
2343               ],
2344                 AC_CHECK_LIB(ebml, main, [
2345                   VLC_ADD_PLUGIN([mkv])
2346                   VLC_ADD_LIBS([mkv],[-lmatroska -lebml])
2347                 ])
2348       )
2349             ],
2350             [AC_MSG_RESULT([no])
2351               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.])
2352           ])
2353         ])
2354       ],
2355       [AC_MSG_RESULT([no])
2356         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.])
2357     ])
2358   ])
2359   AC_LANG_POP(C++)
2363 dnl  modplug demux plugin
2365 AC_ARG_ENABLE(mod,
2366   [  --enable-mod            Mod demux support (default auto)])
2367 if test "${enable_mod}" != "no" ; then
2368     PKG_CHECK_MODULES(LIBMODPLUG, [libmodplug >= 0.8.4 libmodplug != 0.8.8], [
2369           VLC_ADD_PLUGIN([mod])
2370           VLC_ADD_CXXFLAGS([mod],[$LIBMODPLUG_CFLAGS])
2371           VLC_ADD_LIBS([mod],[$LIBMODPLUG_LIBS])
2372     ],[
2373        AS_IF([test x"${enable_mod}" = "xyes"],
2374          [AC_MSG_ERROR(libmodplug not found or a broken version (0.8.8.0) was found!)],
2375          [AC_MSG_WARN(libmodplug not found or a broken version (0.8.8.0) was found!)])
2376     ])
2380 dnl  mpc demux plugin
2382 AC_ARG_ENABLE(mpc,
2383   [  --enable-mpc            Mpc demux support (default enabled)])
2384 if test "${enable_mpc}" != "no"
2385 then
2386   AC_CHECK_HEADERS([mpc/mpcdec.h], [
2387     VLC_ADD_PLUGIN([mpc])
2388     VLC_ADD_LIBS([mpc],[-lmpcdec])],
2389     [AC_CHECK_HEADERS([mpcdec/mpcdec.h], [
2390     VLC_ADD_PLUGIN([mpc])
2391     VLC_ADD_LIBS([mpc],[-lmpcdec])])])
2395 dnl  game music emu demux plugin
2397 AC_ARG_ENABLE(gme,
2398   [  --enable-gme            Game Music Emu demux support (default enabled)])
2399 if test "${enable_gme}" != "no" -a "${CXX}" != "";
2400 then
2401   AC_LANG_PUSH(C++)
2402   AC_ARG_WITH(gme-tree,
2403   [  --with-gme-tree=PATH    gme tree for static linking])
2404   if test -n "${with_gme_tree}"
2405   then
2406     AC_MSG_CHECKING(for libgme.a in ${with_mod_tree})
2407     real_gme_tree="`cd ${with_gme_tree} 2>/dev/null && pwd`"
2408     if test -z "${real_gme_tree}"
2409     then
2410       dnl  The given directory can't be found
2411       AC_MSG_RESULT(no)
2412       AC_MSG_ERROR([cannot cd to ${with_gme_tree}])
2413     fi
2414     if test -f "${real_gme_tree}/gme/libgme.a"
2415     then
2416       dnl  Use a custom gme
2417       AC_MSG_RESULT(${real_gme_tree}/gme/libgme.a)
2418       VLC_ADD_PLUGIN([gme])
2419       VLC_ADD_LIBS([gme],[${real_gme_tree}/gme/libgme.a])
2420       VLC_ADD_CXXFLAGS([gme],[-I${real_gme_tree}/gme])
2421     else
2422       dnl  The given gme wasn't built
2423       AC_MSG_RESULT(no)
2424       AC_MSG_ERROR([cannot find ${real_mod_tree}/gme/libgme.a, make sure you compiled gme in ${with_gme_tree}])
2425     fi
2426   else
2427       AC_MSG_WARN([only static linking is available, you must provide a gme-tree])
2428   fi
2429   AC_LANG_POP(C++)
2433 dnl  Codec plugins
2436 EXTEND_HELP_STRING([Codec plugins:])
2439 dnl wmafixed plugin
2441 AC_ARG_ENABLE(wma-fixed,
2442   [  --enable-wma-fixed      libwma-fixed module (default disabled)])
2443 if test "${enable_wma_fixed}" = "yes"
2444 then
2445   VLC_ADD_PLUGIN([wma_fixed])
2449 dnl shine fixed point mp3 encoder
2451 AC_ARG_ENABLE(shine,
2452   [  --enable-shine          shine mp3 encoding module (default disabled)])
2453 if test "${enable_shine}" = "yes"
2454 then
2455   VLC_ADD_PLUGIN([shine])
2459 dnl openmax il codec plugin
2461 AC_ARG_ENABLE(omxil,
2462   [  --enable-omxil          openmax il codec module (default disabled)])
2463 if test "${enable_omxil}" = "yes"
2464 then
2465   VLC_ADD_PLUGIN([omxil])
2466   VLC_ADD_LIBS([omxil], [$LIBDL])
2470 dnl  mad plugin
2472 AC_ARG_ENABLE(mad,
2473   [  --enable-mad            libmad module (default enabled)])
2474 if test "${enable_mad}" != "no"
2475 then
2476   AC_ARG_WITH(mad,
2477     [  --with-mad=PATH         path to libmad],[],[])
2478   if test "${with_mad}" != "no" -a -n "${with_mad}"
2479   then
2480     VLC_ADD_CPPFLAGS([mpgatofixed32],[-I${with_mad}/include])
2481     VLC_ADD_LIBS([mpgatofixed32],[-L${with_mad}/lib])
2482   fi
2484   AC_ARG_WITH(mad-tree,
2485     [  --with-mad-tree=PATH    mad tree for static linking],[],[])
2486   if test "${with_mad_tree}" != "no" -a -n "${with_mad_tree}"
2487   then
2488     real_mad_tree="`cd ${with_mad_tree} 2>/dev/null && pwd`"
2489     if test -z "${real_mad_tree}"
2490     then
2491       dnl  The given directory can't be found
2492       AC_MSG_RESULT(no)
2493       AC_MSG_ERROR([${with_mad_tree} directory doesn't exist])
2494     fi
2495     dnl  Use a custom libmad
2496     AC_MSG_CHECKING(for mad.h in ${real_mad_tree})
2497     if test -f ${real_mad_tree}/mad.h
2498     then
2499       AC_MSG_RESULT(yes)
2500       VLC_ADD_CPPFLAGS([mpgatofixed32],[-I${real_mad_tree}])
2501       VLC_ADD_LIBS([mpgatofixed32],[-L${real_mad_tree}/.libs])
2502       LDFLAGS="${LDFLAGS_save} ${LIBS_mpgatofixed32}"
2503       AC_CHECK_LIB(mad, mad_bit_init, [
2504         VLC_ADD_PLUGIN([mpgatofixed32])
2505         VLC_ADD_LIBS([mpgatofixed32],[-lmad])
2506         ],[ AC_MSG_ERROR([the specified tree hasn't been compiled ])
2507       ],[])
2508       LDFLAGS="${LDFLAGS_save}"
2509     else
2510       AC_MSG_RESULT(no)
2511       AC_MSG_ERROR([the specified tree doesn't have mad.h])
2512     fi
2513   else
2514     CPPFLAGS="${CPPFLAGS_save} ${CPPFLAGS_mpgatofixed32}"
2515     LDFLAGS="${LDFLAGS_save} ${LIBS_mpgatofixed32}"
2516     AC_CHECK_HEADERS(mad.h, ,
2517       [ 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.]) ])
2518     AC_CHECK_LIB(mad, mad_bit_init, [
2519       VLC_ADD_PLUGIN([mpgatofixed32])
2520       VLC_ADD_LIBS([mpgatofixed32],[-lmad])],
2521       [ AC_MSG_ERROR([Cannot find libmad library...]) ])
2522     CPPFLAGS="${CPPFLAGS_save}"
2523     LDFLAGS="${LDFLAGS_save}"
2524   fi
2528 AC_ARG_ENABLE(merge-ffmpeg,
2529 [  --enable-merge-ffmpeg   merge FFmpeg-based plugins (default disabled)],, [
2530   enable_merge_ffmpeg="no"
2532 AM_CONDITIONAL([MERGE_FFMPEG], [test "$enable_merge_ffmpeg" != "no"])
2534 AC_CACHE_CHECK([if linker supports -Bsymbolic],
2535   [ac_cv_ld_bsymbolic],
2536   [LDFLAGS="${LDFLAGS_vlc} -Wl,-Bsymbolic"
2537     AC_TRY_LINK([],,ac_cv_ld_bsymbolic=yes,ac_cv_ld_bsymbolic=no)
2538     LDFLAGS="${LDFLAGS_save}"
2539   ])
2542 dnl  avcodec decoder/encoder plugin
2544 AC_ARG_ENABLE(avcodec,
2545 [  --enable-avcodec        libavcodec codec (default enabled)])
2546 AS_IF([test "${enable_avcodec}" != "no"], [
2547   PKG_CHECK_MODULES(AVCODEC,[libavcodec >= 52.25.0 libavutil],
2548     [
2549       VLC_SAVE_FLAGS
2550       CPPFLAGS="${CPPFLAGS} ${AVCODEC_CFLAGS}"
2551       CFLAGS="${CFLAGS} ${AVCODEC_CFLAGS}"
2552       AC_CHECK_HEADERS(libavcodec/avcodec.h ffmpeg/avcodec.h)
2553       AC_CHECK_HEADERS(libavutil/avutil.h ffmpeg/avutil.h)
2554       VLC_ADD_PLUGIN([avcodec])
2555       VLC_ADD_LIBS([avcodec],[$AVCODEC_LIBS])
2556       AS_IF([test "${ac_cv_ld_bsymbolic}" != "no"], [
2557         VLC_ADD_LDFLAGS([avcodec],[-Wl,-Bsymbolic])
2558       ])
2559       VLC_ADD_CFLAGS([avcodec],[$AVCODEC_CFLAGS])
2560       VLC_RESTORE_FLAGS
2561       have_avcodec="yes"
2562     ],[
2563       AC_MSG_ERROR([Could not find libavcodec or libavutil. Use --disable-avcodec to ignore this error.])
2564   ])
2565 ], [
2566   have_avcodec="no"
2570 dnl libva needs avcodec
2572 AC_ARG_ENABLE(libva,
2573   [  --enable-libva          libva VAAPI support (default auto)])
2575 AS_IF([test "${enable_libva}" != "no"], [
2576   AS_IF([test "x${have_avcodec}" = "xyes"], [
2577     PKG_CHECK_MODULES(LIBVA, [libva libva-x11],
2578       [
2579         VLC_SAVE_FLAGS
2580         CPPFLAGS="${CPPFLAGS} ${AVCODEC_CFLAGS}"
2581         CFLAGS="${CFLAGS} ${AVCODEC_CFLAGS}"
2582         AC_CHECK_HEADERS(libavcodec/vaapi.h, [
2583            VLC_ADD_LIBS([avcodec],[$LIBVA_LIBS ${X_LIBS} ${X_PRE_LIBS} -lX11])
2584            VLC_ADD_CFLAGS([avcodec],[$LIBVA_CFLAGS ${X_CFLAGS}])
2585            AC_DEFINE(HAVE_AVCODEC_VAAPI, 1, [Define if avcodec has to be built with VAAPI support.])
2586            echo "VAAPI acceleration activated"
2587         ],[
2588         AS_IF([test "${enable_libva}" == "yes"],
2589               [AC_MSG_ERROR([libva is present but libavcodec/vaapi.h is missing])],
2590               [AC_MSG_WARN([libva is present but libavcodec/vaapi.h is missing ])])
2591         ])
2592         VLC_RESTORE_FLAGS
2593       ],[
2594         AS_IF([test "${enable_libva}" == "yes"],
2595               [AC_MSG_ERROR([Could not find required libva.])],
2596               [AC_MSG_WARN([libva not found  ])])
2597       ])
2598   ],[
2599     AS_IF([test "x${enable_libva}" != "x"], [
2600       AC_MSG_ERROR([--enable-libva and --disable-avcodec options are mutually exclusive.])
2601     ])
2602   ])
2606 dnl dxva2 needs avcodec
2608 AC_ARG_ENABLE(dxva2,
2609   [  --enable-dxva2          DxVA2  support (default auto)])
2611 AS_IF([test "${enable_dxva2}" != "no"], [
2612   if test "${SYS}" = "mingw32"; then
2613   AS_IF([test "x${have_avcodec}" = "xyes"], [
2614     AC_CHECK_HEADERS(dxva2api.h, 
2615       [
2616         AC_CHECK_HEADERS(libavcodec/dxva2.h, [
2617            VLC_ADD_LIBS([avcodec],[-lole32 -lshlwapi -luuid])
2618            AC_DEFINE(HAVE_AVCODEC_DXVA2, 1, [Define if avcodec has to be built with DxVA2 support.])
2619            echo "DxVA2 acceleration activated"
2620         ],[
2621         AS_IF([test "${enable_dxva2}" == "yes"],
2622               [AC_MSG_ERROR([dxva2 is present but libavcodec/dxva2.h is missing])],
2623               [AC_MSG_WARN([dxva2 is present but libavcodec/dxva2.h is missing ])])
2624         ])
2625       ],[
2626         AS_IF([test "${enable_dxva2}" == "yes"],
2627               [AC_MSG_ERROR([Could not find required dxva2api.h])],
2628               [AC_MSG_WARN([dxva2api.h not found])])
2629       ])
2630   ],[
2631     AS_IF([test "x${enable_dxva2}" != "x"], [
2632       AC_MSG_ERROR([--enable-dxva2 and --disable-avcodec options are mutually exclusive.])
2633     ])
2634   ])
2635   fi
2640 dnl stream_out switcher needs libavcodec
2642 AC_ARG_ENABLE(switcher,
2643   [  --enable-switcher       Stream-out switcher plugin (default disabled)])
2644 AS_IF([test "${enable_switcher}" = "yes"], [
2645   AS_IF([test "x${have_avcodec}" = "xyes"], [
2646     VLC_ADD_PLUGIN([stream_out_switcher])
2647     VLC_ADD_LIBS([stream_out_switcher],[$AVCODEC_LIBS $AVUTIL_LIBS])
2648     VLC_ADD_CFLAGS([stream_out_switcher],[$AVCODEC_CFLAGS $AVUTIL_CFLAGS])
2649   ],[AC_MSG_ERROR([Stream_out switcher depends on avcodec])
2650   ])
2655 dnl  avformat demuxer/muxer plugin
2658 AC_ARG_ENABLE(avformat,
2659 [  --enable-avformat       libavformat containers (default enabled)],, [
2660   enable_avformat="${have_avcodec}"
2662 if test "${enable_avformat}" != "no"
2663 then
2664   PKG_CHECK_MODULES(AVFORMAT,[libavformat > 52.30.0 libavcodec libavutil],
2665     [
2666       VLC_SAVE_FLAGS
2667       CPPFLAGS="${CPPFLAGS} ${AVFORMAT_CFLAGS}"
2668       CFLAGS="${CFLAGS} ${AVFORMAT_CFLAGS}"
2669       AC_CHECK_HEADERS(libavformat/avformat.h ffmpeg/avformat.h)
2670       AC_CHECK_HEADERS(libavutil/avutil.h ffmpeg/avutil.h)
2671       AS_IF([test "$enable_merge_ffmpeg" = "no"], [
2672         VLC_ADD_PLUGIN([avformat access_avio])
2673         VLC_ADD_LIBS([avformat access_avio],[$AVFORMAT_LIBS $AVUTIL_LIBS])
2674         VLC_ADD_CFLAGS([avformat access_avio],[$AVFORMAT_CFLAGS $AVUTIL_CFLAGS])
2675         AS_IF([test "${ac_cv_ld_bsymbolic}" != "no"], [
2676           VLC_ADD_LDFLAGS([avformat access_avio],[-Wl,-Bsymbolic])
2677         ])
2678       ], [
2679         VLC_ADD_LIBS([avcodec],[$AVFORMAT_LIBS $AVUTIL_LIBS])
2680         VLC_ADD_CFLAGS([avcodec],[$AVFORMAT_CFLAGS $AVUTIL_CFLAGS])
2681       ])
2682       VLC_RESTORE_FLAGS
2683     ],[
2684       AC_MSG_ERROR([Could not find libavformat or libavutil. Use --disable-avformat to ignore this error.])
2685   ])
2689 dnl  swscale image scaling and conversion plugin
2692 AC_ARG_ENABLE(swscale,
2693   AS_HELP_STRING([--enable-swscale],[libswscale image scaling and conversion
2694                   (default enabled)]))
2695 if test "${enable_swscale}" != "no"
2696 then
2697   PKG_CHECK_MODULES(SWSCALE,[libswscale],
2698     [
2699       VLC_SAVE_FLAGS
2700       CPPFLAGS="${CPPFLAGS} ${SWSCALE_CFLAGS}"
2701       CFLAGS="${CFLAGS} ${SWSCALE_CFLAGS}"
2702       AC_CHECK_HEADERS(libswscale/swscale.h ffmpeg/swscale.h)
2703       VLC_ADD_PLUGIN([swscale])
2704       VLC_ADD_LIBS([swscale],[$SWSCALE_LIBS])
2705       VLC_ADD_CFLAGS([swscale],[$SWSCALE_CFLAGS])
2706       AS_IF([test "${ac_cv_ld_bsymbolic}" != "no"], [
2707         VLC_ADD_LDFLAGS([swscale],[-Wl,-Bsymbolic])
2708       ])
2709       VLC_RESTORE_FLAGS
2710     ],[
2711       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.])
2712   ])
2716 dnl  postproc plugin
2719 AC_ARG_ENABLE(postproc,
2720 [  --enable-postproc       libpostproc image post-processing (default enabled)])
2721 if test "${enable_postproc}" != "no"
2722 then
2723   PKG_CHECK_MODULES(POSTPROC,[libpostproc libavutil],
2724     [
2725       VLC_SAVE_FLAGS
2726       CPPFLAGS="${CPPFLAGS} ${POSTPROC_CFLAGS}"
2727       CFLAGS="${CFLAGS} ${POSTPROC_CFLAGS}"
2728       AC_CHECK_HEADERS(postproc/postprocess.h)
2729       VLC_ADD_PLUGIN([postproc])
2730       VLC_ADD_LIBS([postproc],[$POSTPROC_LIBS $AVUTIL_LIBS])
2731       VLC_ADD_CFLAGS([postproc],[$POSTPROC_CFLAGS $AVUTIL_CFLAGS])
2732       VLC_RESTORE_FLAGS
2733     ],[
2734       AC_MSG_ERROR([Could not find libpostproc. Use --disable-postproc to ignore this error.])
2735   ])
2739 dnl  faad decoder plugin
2741 AC_ARG_ENABLE(faad,
2742 [  --enable-faad           faad codec (default disabled)])
2743 if test "${enable_faad}" = "yes"
2744 then
2745   AC_ARG_WITH(faad-tree,
2746   [  --with-faad-tree=PATH   faad tree for static linking])
2747   if test -n "${with_faad_tree}"
2748   then
2749     AC_MSG_CHECKING(for libfaad.a in ${with_faad_tree})
2750     real_faad_tree="`cd ${with_faad_tree} 2>/dev/null && pwd`"
2751     if test -z "${real_faad_tree}"
2752     then
2753       dnl  The given directory can't be found
2754       AC_MSG_RESULT(no)
2755       AC_MSG_ERROR([cannot cd to ${with_faad_tree}])
2756     fi
2757     if test -f "${real_faad_tree}/libfaad/.libs/libfaad.a"
2758     then
2759       dnl  Use a custom faad
2760       AC_MSG_RESULT(${real_faad_tree}/libfaad/.libs/libfaad.a)
2761       VLC_ADD_PLUGIN([faad])
2762       VLC_ADD_LIBS([faad],[${real_faad_tree}/libfaad/.libs/libfaad.a])
2763       VLC_ADD_CPPFLAGS([faad],[-I${real_faad_tree}/include])
2764     else
2765       dnl  The given libfaad wasn't built
2766       AC_MSG_RESULT(no)
2767       AC_MSG_ERROR([cannot find ${real_faad_tree}/libfaad/.libs/libfaad.a, make sure you compiled libfaad in ${with_faad_tree}])
2768     fi
2769   else
2770     CPPFLAGS="${CPPFLAGS_save} ${CPPFLAGS_faad}"
2771     LDFLAGS="${LDFLAGS_save} ${LIBS_faad}"
2772     AC_CHECK_HEADERS(faad.h, ,
2773       [ AC_MSG_ERROR([Cannot find development headers for libfaad...]) ])
2774     AC_CHECK_LIB(faad, faacDecOpen, [
2775       VLC_ADD_PLUGIN([faad])
2776       VLC_ADD_LIBS([faad],[-lfaad]) ],
2777       AC_CHECK_LIB(faad, NeAACDecOpen, [
2778         VLC_ADD_PLUGIN([faad])
2779         VLC_ADD_LIBS([faad],[-lfaad]) ],
2780         [ AC_MSG_ERROR([Cannot find libfaad library...]) ]))
2781     LDFLAGS="${LDFLAGS_save}"
2782     CPPFLAGS="${CPPFLAGS_save}"
2783   fi
2787 dnl twolame encoder plugin
2789 PKG_ENABLE_MODULES_VLC([TWOLAME], [], [twolame], [MPEG Audio Layer 2 encoder], [auto], [], [], [ -DLIBTWOLAME_STATIC])
2792 dnl  QuickTime plugin
2794 AC_ARG_ENABLE(quicktime,
2795   [  --enable-quicktime      QuickTime module (deprecated)])
2796 if test "${enable_quicktime}" = "yes"; then
2797   if test "${SYS}" = "mingw32"; then
2798     VLC_ADD_PLUGIN([quicktime])
2799   else
2800   AC_CHECK_HEADERS(QuickTime/QuickTime.h,
2801     [ VLC_ADD_PLUGIN([quicktime])
2802       VLC_ADD_LDFLAGS([quicktime],[-Wl,-framework,QuickTime,-framework,Carbon])
2803     ], [ AC_MSG_ERROR([cannot find QuickTime headers]) ])
2804   fi
2808 dnl  Real plugin
2810 AC_ARG_ENABLE(real,
2811   [  --enable-real           Real media module (default disabled)])
2812 if test "${enable_real}" = "yes"; then
2813   VLC_ADD_PLUGIN([realvideo])
2817 dnl  Real RTSP plugin
2819 AC_ARG_ENABLE(realrtsp,
2820   [  --enable-realrtsp       Real RTSP module (default disabled)])
2821 if test "${enable_realrtsp}" = "yes"; then
2822   VLC_ADD_PLUGIN([access_realrtsp])
2826 dnl skins2 module
2828 AC_ARG_ENABLE(libtar,
2829   [  --enable-libtar         libtar support for skins2 (default enabled)])
2831 AS_IF([test "${enable_libtar}" != "no"],[
2832   AC_CHECK_HEADERS(libtar.h, [
2833     VLC_ADD_LIBS([skins2],[-ltar])
2834   ] )
2838 dnl A52/AC3 decoder plugin
2840 AC_ARG_ENABLE(a52,
2841   [  --enable-a52            A/52 support with liba52 (default enabled)])
2842 if test "${enable_a52}" != "no"
2843 then
2844   AC_ARG_WITH(a52,
2845     [  --with-a52=PATH         a52 headers and libraries])
2846   AC_ARG_WITH(a52-tree,
2847     [  --with-a52-tree=PATH    a52dec tree for static linking ],[],[])
2848   if test "${with_a52_tree}" != "no" -a -n "${with_a52_tree}"
2849   then
2850     real_a52_tree="`cd ${with_a52_tree} 2>/dev/null && pwd`"
2851     if test -z "${real_a52_tree}"
2852     then
2853       dnl  The given directory can't be found
2854       AC_MSG_RESULT(no)
2855       AC_MSG_ERROR([${with_a52_tree} directory doesn't exist])
2856     fi
2857     dnl  Use a custom a52dec
2858     AC_MSG_CHECKING(for a52.h in ${real_a52_tree}/include)
2859     if test -f ${real_a52_tree}/include/a52.h
2860     then
2861       AC_MSG_RESULT(yes)
2862       VLC_ADD_CPPFLAGS([a52tofloat32],[-I${real_a52_tree}])
2863       VLC_ADD_LIBS([a52tofloat32],[-L${real_a52_tree}/liba52/.libs])
2864       LDFLAGS="${LDFLAGS_save} ${LIBS_a52tofloat32}"
2865       AC_CHECK_LIB(a52, a52_free, [
2866         VLC_ADD_PLUGIN([a52tofloat32])
2867         VLC_ADD_CPPFLAGS([a52tofloat32],[-DUSE_A52DEC_TREE])
2868         VLC_ADD_LIBS([a52tofloat32],[-la52])
2869         ],[
2870         if test -f ${real_a52_tree}/liba52/.libs/liba52.a
2871         then
2872           AC_MSG_ERROR([make sure you have at least a52dec-0.7.3 ($real_a52_tree)])
2873         else
2874           AC_MSG_ERROR([the specified tree hasn't been compiled])
2875         fi
2876       ])
2877       LDFLAGS="${LDFLAGS_save}"
2878     else
2879       AC_MSG_RESULT(no)
2880       AC_MSG_ERROR([the specified tree doesn't have a52.h])
2881     fi
2882   else
2883     if test -z "${with_a52}"
2884     then
2885       LDFLAGS_test=""
2886       CPPFLAGS_test=""
2887     else
2888       LDFLAGS_test="-L${with_a52}/lib"
2889       CPPFLAGS_test="-I${with_a52}/include"
2890     fi
2891     CPPFLAGS="${CPPFLAGS_save} ${CPPFLAGS_test} ${CPPFLAGS_a52tofloat32}"
2892     LDFLAGS="${LDFLAGS_save} ${LDFLAGS_test} ${LIBS_a52tofloat32}"
2893     AC_CHECK_HEADERS(a52dec/a52.h, [
2894       AC_CHECK_LIB(a52, a52_free, [
2895         VLC_ADD_PLUGIN([a52tofloat32])
2896         VLC_ADD_LIBS([a52tofloat32],[${LDFLAGS_test} -la52])
2897         VLC_ADD_CPPFLAGS([a52tofloat32],[${CPPFLAGS_test}])
2898       ],[
2899         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.])
2900         ])
2901     ],[
2902       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.])
2903     ])
2904     CPPFLAGS="${CPPFLAGS_save}"
2905     LDFLAGS="${LDFLAGS_save}"
2906   fi
2909 AC_ARG_WITH(a52-fixed,
2910       [  --with-a52-fixed        specify if liba52 has been compiled with fixed point support],
2911       [
2912         VLC_ADD_CPPFLAGS([a52tofloat32],[-DLIBA52_FIXED]) ])
2915 dnl DTS Coherent Acoustics decoder plugin
2917 PKG_ENABLE_MODULES_VLC([DCA], [dtstofloat32], [libdca >= 0.0.5], [DTS Coherent Acoustics support with libdca], [auto])
2920 dnl  Flac plugin
2922 PKG_ENABLE_MODULES_VLC([FLAC], [], [flac], [libflac decoder/encoder support], [auto])
2925 dnl  Libmpeg2 plugin
2927 PKG_ENABLE_MODULES_VLC([LIBMPEG2], [], [libmpeg2 > 0.3.2], [libmpeg2 decoder support], [auto])
2930 dnl  Vorbis plugin
2932 PKG_ENABLE_MODULES_VLC([VORBIS], [], [ogg vorbis >= 1.1 vorbisenc >= 1.1], [Vorbis decoder and encoder], [auto])
2935 dnl  Tremor plugin
2937 AC_ARG_ENABLE(tremor,
2938   [  --enable-tremor         Tremor decoder support (default disabled)])
2939 if test "${enable_tremor}" = "yes"
2940 then
2941   AC_CHECK_HEADERS(tremor/ivorbiscodec.h, [
2942     VLC_ADD_PLUGIN([tremor])
2943     VLC_ADD_LIBS([tremor],[-lvorbisidec -logg])
2944    ],[])
2948 dnl  Speex plugin
2950 PKG_ENABLE_MODULES_VLC([SPEEX], [], [ogg speex >= 1.0.5], [Speex decoder support], [auto])
2953 dnl  theora decoder plugin
2955 PKG_ENABLE_MODULES_VLC([THEORA], [], [ogg theora >= 1.0], [experimental theora codec], [auto])
2958 dnl  dirac encoder plugin
2960 PKG_ENABLE_MODULES_VLC([DIRAC], [], [dirac >= 0.10.0], [dirac encoder], [auto])
2963 dnl  schroedinger decoder plugin (for dirac format video)
2965 PKG_ENABLE_MODULES_VLC([SCHROEDINGER], [], [schroedinger-1.0 >= 1.0.6], [dirac decoder using schroedinger], [auto])
2968 dnl  PNG decoder module
2970 AC_ARG_ENABLE(png,
2971   [  --enable-png            PNG support (default enabled)])
2972 if test "${enable_png}" != "no"; then
2973 AC_CHECK_HEADERS(png.h, [
2974   LDFLAGS="${LDFLAGS_save} -lz"
2975   AC_CHECK_LIB(png, png_set_rows, [
2976     VLC_ADD_LIBS([png],[-lpng -lz])
2977     VLC_ADD_PLUGIN([png osdmenu osd_parser])],
2978     [],[-lz])
2979     LDFLAGS="${LDFLAGS_save}"
2980   ])
2982 AM_CONDITIONAL(BUILD_OSDMENU, [test "${enable_png}" != "no"])
2985 dnl H264 encoder plugin (using libx264)
2987 AC_ARG_ENABLE(x264,
2988   [  --enable-x264           H264 encoding support with libx264 (default enabled)])
2989 if test "${enable_x264}" != "no"; then
2990   AC_ARG_WITH(x264-tree,
2991     [  --with-x264-tree=PATH   x264 tree for static linking ],[],[])
2992   if test "${with_x264_tree}" != "no" -a -n "${with_x264_tree}"
2993   then
2994     real_x264_tree="`cd ${with_x264_tree} 2>/dev/null && pwd`"
2995     if test -z "${real_x264_tree}"
2996     then
2997       dnl  The given directory can't be found
2998       AC_MSG_RESULT(no)
2999       AC_MSG_ERROR([${with_x264_tree} directory doesn't exist])
3000     fi
3001     dnl  Use a custom libx264
3002     AC_MSG_CHECKING(for x264.h in ${real_x264_tree})
3003     if test -f ${real_x264_tree}/x264.h
3004     then
3005       AC_MSG_RESULT(yes)
3006       VLC_ADD_CPPFLAGS([x264],[-I${real_x264_tree}])
3007       VLC_ADD_LIBS([x264],[-L${real_x264_tree}])
3008       PKG_CHECK_MODULES(X264,x264, [
3009         VLC_ADD_PLUGIN([x264])
3010         VLC_ADD_LDFLAGS([x264],[${X264_LIBS}])
3011         VLC_ADD_CFLAGS([x264],[${X264_CFLAGS}])
3012         if echo ${X264_LIBS} |grep -q 'pthreadGC2'; then
3013           VLC_ADD_CFLAGS([x264], [-DPTW32_STATIC_LIB])
3014         fi
3015       ],[
3016         AC_MSG_ERROR([the specified tree hasn't been compiled])
3017       ])
3018       LDFLAGS="${LDFLAGS_save}"
3019     else
3020       AC_MSG_RESULT(no)
3021       AC_MSG_ERROR([the specified tree doesn't have x264.h])
3022     fi
3023   else
3024       PKG_CHECK_MODULES(X264,x264 >= 0.86, [
3025         VLC_ADD_PLUGIN([x264])
3026         VLC_ADD_LDFLAGS([x264],[${X264_LIBS}])
3028         AS_IF([test "${ac_cv_ld_bsymbolic}" != "no"], [
3029           VLC_ADD_LDFLAGS([x264],[-Wl,-Bsymbolic])
3030         ])
3032         VLC_ADD_CFLAGS([x264],[${X264_CFLAGS}])
3033         if echo ${X264_LIBS} |grep -q 'pthreadGC2'; then
3034           VLC_ADD_CFLAGS([x264], [-DPTW32_STATIC_LIB])
3035         fi
3036       ],[
3037         if test "${enable_x264}" = "yes"; then
3038             AC_MSG_ERROR([Could not find libx264 >= 0.86 on your system: you may get it from http://www.videolan.org/x264.html])
3039           fi
3040       ])
3041     LDFLAGS="${LDFLAGS_save}"
3042   fi
3046 dnl libfluidsynth (MIDI synthetizer) plugin
3048 PKG_ENABLE_MODULES_VLC([FLUIDSYNTH], [], [fluidsynth], [MIDI synthetiser with libfluidsynth], [auto])
3051 dnl Teletext Modules
3052 dnl vbi decoder plugin (using libzbvi)
3053 dnl telx module
3054 dnl uncompatible
3056 AC_ARG_ENABLE(zvbi,
3057   AS_HELP_STRING([--enable-zvbi],[VBI (inc. Teletext) decoding support with
3058                   libzvbi (default enabled)]))
3059 AC_ARG_ENABLE(telx,
3060   AS_HELP_STRING([--enable-telx],[Teletext decoding module (conflicting with
3061                   zvbi) (default enabled if zvbi is absent)]))
3063 AS_IF( [test "${enable_zvbi}" != "no"],[
3064     PKG_CHECK_MODULES(ZVBI,
3065         zvbi-0.2 >= 0.2.28,
3066         [
3067           VLC_ADD_LIBS([zvbi],[$ZVBI_LIBS])
3068           if test "${SYS}" = "mingw32"; then
3069               VLC_ADD_LIBS([zvbi],[ -lpthreadGC2])
3070           fi
3071           VLC_ADD_CFLAGS([zvbi],[$ZVBI_CFLAGS])
3072           VLC_ADD_PLUGIN([zvbi])
3073           AC_DEFINE(ZVBI_COMPILED, 1, [Define if the zvbi module is built])
3074           AS_IF( [test "${enable_telx}" = "yes"],[
3075                   AC_MSG_WARN([The zvbi and telx modules are uncompatibles.
3076                                Using zvbi.])
3077                   ])
3078         ],[
3079           AC_MSG_WARN(ZVBI library not found. Enabling the telx module instead)
3080         ])
3081     ])
3082 AS_IF( [test "${enable_telx}" != "no" ],[
3083   VLC_ADD_PLUGIN([telx])
3084   ])
3087 dnl libass subtitle rendering module
3089 AC_ARG_ENABLE(libass,
3090   [  --enable-libass         Subtitle support using libass (default enabled)])
3091 AS_IF( [test "${enable_libass}" != "no"], [
3092   PKG_CHECK_MODULES(LIBASS, libass >= 0.9.6,
3093       [
3094         VLC_ADD_LIBS([libass],[$LIBASS_LIBS])
3095         VLC_ADD_CFLAGS([libass],[$LIBASS_CFLAGS])
3096         VLC_ADD_PLUGIN([libass])
3098         AC_CHECK_HEADERS(fontconfig/fontconfig.h,
3099           [VLC_ADD_CPPFLAGS([libass],[-DHAVE_FONTCONFIG])
3100            VLC_ADD_LIBS([libass],[-lfontconfig])
3101        ])
3102       ],[
3103         AC_MSG_WARN([LIBASS library not found])
3104       ])
3105   ])
3108 dnl  kate decoder plugin
3110 AC_ARG_ENABLE(kate,
3111 [  --enable-kate           kate codec (default enabled)])
3112 AS_IF([test "${enable_kate}" != "no"], [
3113   PKG_CHECK_MODULES(KATE,[kate >= 0.1.5], [
3114       VLC_ADD_PLUGIN([kate])
3115       VLC_ADD_CFLAGS([kate],[$KATE_CFLAGS])
3116       VLC_ADD_LIBS([kate],[$KATE_LIBS]) ],[
3117         AC_CHECK_HEADERS(kate/kate.h, [
3118           AC_CHECK_LIB(kate, kate_decode_init, [
3119             VLC_ADD_PLUGIN([kate])
3120             kate_libs="-lkate -logg"
3121             VLC_ADD_LDFLAGS([kate],[${kate_libs}]) ],[
3122             AS_IF([test "x${enable_kate}" != "x"], [
3123               AC_MSG_ERROR([libkate doesn't appear to be installed on your system.
3124               You also need to check that you have a libogg posterior to the 1.0 release.])
3125             ])
3126           ], [-lkate -logg])
3127         ],[
3128           AS_IF([test "x${enable_kate}" != "x"], [
3129             AC_MSG_ERROR([libkate headers do not appear to be installed on your system.
3130             You also need to check that you have a libogg posterior to the 1.0 release.])
3131           ])
3132         ])
3133   ])
3138 dnl  tiger rendering for kate decoder plugin
3140 AC_ARG_ENABLE(tiger,
3141 [  --enable-tiger          Tiger rendering library for Kate streams (default enabled)])
3142 AS_IF([test "${enable_tiger}" != "no"], [
3143   PKG_CHECK_MODULES(TIGER,[tiger >= 0.3.1], [
3144       AC_DEFINE(HAVE_TIGER, 1, [Define if libtiger is available.])
3145       VLC_ADD_CFLAGS([kate],[$TIGER_CFLAGS])
3146       VLC_ADD_LIBS([kate],[$TIGER_LIBS]) ],[
3147         AS_IF([test "x${enable_tiger}" != "x"], [
3148           AC_MSG_ERROR([libtiger does not appear to be installed on your system.])
3149         ])
3150   ])
3156 dnl  Video plugins
3159 EXTEND_HELP_STRING([Video plugins:])
3162 dnl  Xlib
3165 AC_PATH_XTRA()
3166 AC_CHECK_HEADERS(X11/Xlib.h)
3169 dnl  X C Bindings modules
3171 AC_ARG_ENABLE(xcb,
3172   [  --enable-xcb            X11 support with XCB (default enabled)],, [
3173   AS_IF([test "${SYS}" != "mingw32" -a "${SYS}" != "mingwce" -a "${SYS}" != "darwin"], [
3174     enable_xcb="yes"
3175   ], [
3176     enable_xcb="no"
3177   ])
3179 AC_ARG_ENABLE(xvideo,
3180   [  --enable-xvideo         XVideo support (default enabled)],, [
3181     enable_xvideo="$enable_xcb"
3184 need_xid_provider="no"
3185 AS_IF([test "${enable_xcb}" != "no"], [
3186   dnl libxcb
3187   PKG_CHECK_MODULES(XCB, [xcb])
3188   PKG_CHECK_MODULES(XCB_SHM, [xcb-shm])
3189   VLC_ADD_PLUGIN([screensaver xcb_x11 xcb_window xcb_screen xcb_apps])
3191   AS_IF([test "${enable_xvideo}" != "no"], [
3192     PKG_CHECK_MODULES(XCB_XV, [xcb-xv >= 1.1.90.1], [
3193       VLC_ADD_PLUGIN([xcb_xv])
3194     ], [
3195       PKG_CHECK_MODULES(XCB_XV, [xcb-xv], [
3196         VLC_ADD_PLUGIN([xcb_xv])
3197         VLC_ADD_CFLAGS([xcb_xv], [-DXCB_XV_OLD])
3198       ])
3199     ])
3200   ])
3202   PKG_CHECK_MODULES(XCB_RANDR, [xcb-randr >= 1.3], [
3203     VLC_ADD_PLUGIN([panoramix])
3204     VLC_ADD_LIBS([panoramix],[${XCB_RANDR_LIBS} ${XCB_LIBS}])
3205     VLC_ADD_CFLAGS([panoramix],[${XCB_RANDR_CFLAGS} ${XCB_CFLAGS}])
3206   ], [
3207     AC_MSG_WARN([libxcb-randr not found. Panoramix filter will not be supported.])
3208   ])
3210   dnl xcb-utils
3211   PKG_CHECK_MODULES(XCB_KEYSYMS, [xcb-keysyms >= 0.3.4], [
3212     have_xcb_keysyms="yes"
3213   ], [
3214     PKG_CHECK_MODULES(XCB_KEYSYMS, [xcb-keysyms], [
3215       have_xcb_keysyms="yes"
3216       VLC_ADD_CFLAGS([globalhotkeys], [-DXCB_KEYSYM_OLD_API])
3217     ], [
3218       have_xcb_keysyms="no"
3219       need_xid_provider="yes"
3220       AC_MSG_WARN([libxcb-keysyms not found. Hotkeys will not be supported.])
3221     ])
3222   ])
3224   AS_IF([test "${have_xcb_keysyms}" = "yes"], [
3225     PKG_CHECK_MODULES(XPROTO, [xproto])
3226     VLC_ADD_PLUGIN([globalhotkeys])
3227     VLC_ADD_CFLAGS([globalhotkeys], [${XCB_KEYSYMS_CFLAGS} ${XCB_CFLAGS}])
3228     VLC_ADD_LIBS([globalhotkeys], [${XCB_KEYSYMS_LIBS} ${XCB_LIBS}])
3229     VLC_ADD_CFLAGS([xcb_window], [-DHAVE_XCB_KEYSYMS])
3230   ])
3231   VLC_ADD_PLUGIN([xdg_screensaver])
3234 AC_ARG_ENABLE(glx,
3235   [  --enable-glx            X11 OpenGL (GLX) support (default enabled)],, [
3236   enable_glx="$enable_xcb"
3238 AS_IF([test "${enable_glx}" != "no"], [
3239   PKG_CHECK_MODULES(XLIB_XCB, [x11-xcb])
3240   PKG_CHECK_MODULES(GL, [gl],, [
3241     AC_CHECK_HEADER([GL/gl.h], [
3242       GL_CFLAGS=""
3243       GL_LIBS="-lGL"
3244     ], [
3245       AC_MSG_ERROR([GLX (libGL) cannot be found. If you do not need OpenGL with X11, use --disable-glx.])
3246     ])
3247   ])
3248   VLC_ADD_PLUGIN([xcb_glx])
3250 AC_SUBST([GL_CFLAGS])
3251 AC_SUBST([GL_LIBS])
3254 dnl  SDL module
3256 AC_ARG_ENABLE(sdl,
3257   [  --enable-sdl            SDL support (default enabled)])
3258 AC_ARG_ENABLE(sdl-image,
3259   [  --enable-sdl-image      SDL image support (default enabled)])
3260 if test "${enable_sdl}" != "no"
3261 then
3262    PKG_CHECK_MODULES(SDL, [sdl >= 1.2.10], [
3263       # SDL on Darwin is heavily patched and can only run SDL_image
3264       if test "${SYS}" != "darwin"; then
3265         VLC_ADD_PLUGIN([vout_sdl aout_sdl])
3266       fi
3267       if test "${SYS}" != "mingw32"; then
3268         VLC_ADD_LIBS([vout_sdl],[${X_LIBS} ${X_PRE_LIBS} -lX11])
3269       fi
3270       VLC_ADD_CFLAGS([vout_sdl aout_sdl],[${SDL_CFLAGS}])
3271       VLC_ADD_LIBS([vout_sdl aout_sdl],[${SDL_LIBS}])
3273       # SDL_image
3274       AS_IF([ test "${enable_sdl_image}" != "no"],[
3275         PKG_CHECK_MODULES(SDL_IMAGE, [SDL_image >= 1.2.10], [
3276           VLC_ADD_PLUGIN([sdl_image])
3277           VLC_ADD_LIBS([sdl_image],[${SDL_IMAGE_LIBS}])
3278           VLC_ADD_CFLAGS([sdl_image], [${SDL_IMAGE_CFLAGS}])],
3279           [ AC_MSG_WARN([The development package for SDL_image is not installed.
3280     You should install it alongside your SDL package.])
3281           ])
3282       ])
3283    ],[
3284      AC_MSG_WARN([The development package for SDL is not present or too old.
3285                   You need 1.2.10. Alternatively you can also configure with
3286                   --disable-sdl.])
3287    ])
3291 dnl  freetype module
3293 AC_ARG_ENABLE(freetype,
3294   [  --enable-freetype       freetype support (default enabled)])
3295 AC_ARG_ENABLE(fribidi,
3296   [  --enable-fribidi        fribidi support (default enabled)])
3297 AC_ARG_ENABLE(fontconfig,
3298   [  --enable-fontconfig     fontconfig support (default enabled)])
3299 if test "${enable_freetype}" != "no"
3300 then
3301    PKG_CHECK_MODULES(FREETYPE, freetype2,[
3302       VLC_ADD_PLUGIN([freetype])
3303       have_freetype=yes
3304       VLC_ADD_CPPFLAGS([freetype skins2],[${FREETYPE_CFLAGS}])
3305       if test "${SYS}" = "mingw32"; then
3306         VLC_ADD_LIBS([freetype],[-liconv -lz])
3307       fi
3308       VLC_ADD_LIBS([freetype skins2],[${FREETYPE_LIBS}])
3309       if test "${enable_fontconfig}" != "no"
3310       then
3311         AC_CHECK_HEADERS(fontconfig/fontconfig.h,
3312           [VLC_ADD_CPPFLAGS([freetype],[-DHAVE_FONTCONFIG])
3313            VLC_ADD_LIBS([freetype],[-lfontconfig])])
3314         AC_CHECK_HEADERS(Carbon/Carbon.h,
3315           [VLC_ADD_LDFLAGS([freetype],[-Wl,-framework,Carbon])])
3316       fi
3318      dnl fribidi support
3319       if test "${enable_fribidi}" != "no"
3320       then
3321         PKG_CHECK_MODULES(FRIBIDI, fribidi, [
3322           VLC_ADD_CPPFLAGS([freetype skins2], [${FRIBIDI_CFLAGS} -DHAVE_FRIBIDI])
3323           VLC_ADD_LIBS([freetype skins2], [${FRIBIDI_LIBS}])
3324         ])
3325       fi
3327   ],[
3328   have_freetype=no
3329   AS_IF([ test "${enable_freetype}" =  "yes"],[
3330     AC_MSG_ERROR([I couldn't find the freetype package. You can download libfreetype2
3331 from http://www.freetype.org/, or configure with --disable-freetype. Have a nice day.
3332       ])
3333     ])
3334   ])
3339 dnl  libxml2 module
3341 PKG_ENABLE_MODULES_VLC([LIBXML2], [xml], [libxml-2.0 >= 2.5], [libxml2 support],[auto])
3344 dnl  SVG module
3346 PKG_ENABLE_MODULES_VLC([SVG], [], [librsvg-2.0 >= 2.9.0], [SVG rendering library],[auto])
3349 dnl Snapshot vout module (with cache)
3351 AC_ARG_ENABLE(snapshot,
3352   [  --enable-snapshot       snapshot module (default disabled)])
3353 if test "${enable_snapshot}" = "yes"
3354 then
3355   VLC_ADD_PLUGIN([snapshot])
3359 dnl  Windows DirectX module
3362 if test "${SYS}" = "mingw32" -o "${SYS}" = "mingwce"
3363 then
3364   VLC_ADD_PLUGIN([panoramix])
3367 AC_ARG_ENABLE(directx,
3368   [  --enable-directx        Win32 DirectX support (default enabled on Win32)])
3369 if test "${enable_directx}" != "no"
3370 then
3371   if test "${SYS}" = "mingw32" -o "${SYS}" = "mingwce"
3372   then
3373       AC_CHECK_HEADERS(ddraw.h,
3374       [ VLC_ADD_PLUGIN([directx aout_directx])
3375         VLC_ADD_LIBS([directx],[-lgdi32])
3376       ],[AC_MSG_ERROR([Cannot find DirectX headers!])]
3377       )
3378       AC_CHECK_HEADERS(GL/gl.h,
3379       [ VLC_ADD_PLUGIN([glwin32])
3380         VLC_ADD_LIBS([glwin32],[-lopengl32 -lgdi32])
3381       ])
3382       AC_CHECK_HEADERS(d3d9.h,
3383       [ VLC_ADD_PLUGIN([direct3d])
3384         VLC_ADD_LIBS([direct3d],[-lgdi32])
3385       ])
3386       VLC_ADD_LIBS([direct3d directx glwin32],[-lole32])
3387   fi
3391 dnl  Windows Direct2D plugin
3393 AC_ARG_ENABLE(direct2d,
3394   [  --enable-direct2d         Win7/VistaPU Direct2D support (default auto on Win32)])
3395 if test "${enable_direct2d}" != "no"; then
3396   if test "${SYS}" = "mingw32" -o "${SYS}" = "mingwce"
3397   then
3398     AC_CHECK_HEADERS(d2d1.h,
3399       [
3400         VLC_ADD_PLUGIN([direct2d])
3401         VLC_ADD_LIBS([direct2d],[-lgdi32 -lole32])
3402       ], [AC_MSG_WARN([Cannot find Direct2D headers!])]
3403     )
3404   fi
3408 dnl  win32 GDI plugin
3410 AC_ARG_ENABLE(wingdi,
3411   [  --enable-wingdi         Win32 GDI module (default enabled on Win32)])
3412 if test "${enable_wingdi}" != "no"; then
3413   if test "${SYS}" = "mingw32"; then
3414     VLC_ADD_PLUGIN([wingdi])
3415     VLC_ADD_LIBS([wingdi],[-lgdi32 -lole32])
3416   fi
3417   if test "${SYS}" = "mingwce"; then
3418     VLC_ADD_PLUGIN([wingdi wingapi])
3419     VLC_ADD_LIBS([wingdi],[-laygshell])
3420     VLC_ADD_LIBS([wingapi],[-laygshell])
3421   fi
3426 dnl  Linux framebuffer module
3428 AC_ARG_ENABLE(fb,
3429   [  --enable-fb             Linux framebuffer support (default enabled on Linux)])
3430     if test "${enable_fb}" != "no"
3431     then
3432       AC_CHECK_HEADERS(linux/fb.h, [
3433         VLC_ADD_PLUGIN([fb])
3434       ])
3435     fi
3438 dnl  DirectFB module
3439 dnl  try to find using: 1 - given location; 2 - directfb-config; 3 - pkg-config
3440 dnl  TODO: support for static linking
3442 AC_ARG_ENABLE(directfb,
3443   [  --enable-directfb       DirectFB support (default disabled)])
3444 AC_ARG_WITH(directfb,
3445   [  --with-directfb=PATH    path to DirectFB headers and libraries])
3447 if test "${enable_directfb}" = "yes"; then
3448     have_directfb="false"
3449     CPPFLAGS_mydirectfb=
3450     LIBS_mydirectfb=
3451     if test "${with_directfb}" != "no" -a -n "${with_directfb}"; then
3452         dnl Trying the given location
3453         CPPFLAGS_save="${CPPFLAGS}"
3454         LIBS_save="${LIBS}"
3456         CPPFLAGS_new="-I${with_directfb}/include -D_REENTRANT -D_GNU_SOURCE"
3457         LIBS_new="-L${with_directfb}/lib/fusion/.libs/ -L${with_directfb}/lib/direct/.libs/"
3458         LIBS_new="${LIBS_new} -L${with_directfb}/src/.libs/"
3460         CPPFLAGS="${CPPFLAGS} ${CPPFLAGS_new}"
3461         LIBS="${LIBS} ${LIBS_new}"
3463         dnl FIXME: too obscure
3464         AC_CHECK_HEADER([directfb.h], [
3465             AC_CHECK_LIB([direct],[direct_initialize], [
3466                 AC_CHECK_LIB([fusion], [fusion_enter], [
3467                     AC_CHECK_LIB([directfb], [DirectFBInit], have_directfb="true", have_directfb="false")
3468                 ], have_directfb="false")
3469             ], have_directfb="false")
3470         ], have_directfb="false")
3472         dnl Restore flags
3473         CPPFLAGS="${CPPFLAGS_save}"
3474         LIBS="${LIBS_save}"
3476         if test "${have_directfb}" = "true"; then
3477             LIBS_mydirectfb="${LIBS_new} -lz $LIBDL -ldirectfb -lfusion -ldirect -lpthread"
3478             CPPFLAGS_mydirectfb="${CPPFLAGS_new}"
3479         fi
3480     else
3481         dnl Look for directfb-config
3482         AC_PATH_PROG(DIRECTFB_CONFIG, directfb-config, no, ${PATH})
3483         if test "${DIRECTFB_CONFIG}" != "no"; then
3484             CPPFLAGS_mydirectfb="`${DIRECTFB_CONFIG} --cflags`"
3485             LIBS_mydirectfb="`${DIRECTFB_CONFIG} --libs`"
3486             have_directfb="true"
3487         else
3488             dnl Trying with pkg-config
3489             PKG_CHECK_MODULES(DIRECTFB, directfb, [
3490                 CPPFLAGS_mydirectfb="${DIRECTFB_CFLAGS}"
3491                 LIBS_mydirectfb="${DIRECTFB_LIBS}"
3492                 have_directfb="true"
3493                 ], [have_directfb="false"])
3494         fi
3495     fi
3496     if test "${have_directfb}" = "true"; then
3497         VLC_ADD_PLUGIN([directfb])
3498         VLC_ADD_CPPFLAGS([directfb],[${CPPFLAGS_mydirectfb}])
3499         VLC_ADD_LIBS([directfb],[${LIBS_mydirectfb}])
3500     else
3501         AC_MSG_ERROR([cannot find directfb headers and/or libraries ])
3502     fi
3506 dnl  AA plugin
3508 AC_ARG_ENABLE(aa,
3509   [  --enable-aa             aalib output (default disabled)])
3510 if test "${enable_aa}" = "yes"
3511 then
3512   AC_CHECK_HEADER(aalib.h,have_aa="true",have_aa="false")
3513   if test "${have_aa}" = "true"
3514   then
3515     VLC_ADD_PLUGIN([aa])
3516     VLC_ADD_LIBS([aa],[-laa])
3517     if test "${SYS}" != "mingw32"; then
3518       VLC_ADD_LIBS([aa],[${X_LIBS} ${X_PRE_LIBS} -lX11])
3519     fi
3520   fi
3524 dnl  libcaca plugin
3526 PKG_ENABLE_MODULES_VLC([CACA], [], [caca >= 0.99.beta14], [libcaca output],[auto])
3529 dnl  Audio plugins
3532 EXTEND_HELP_STRING([Audio plugins:])
3535 dnl  OSS /dev/dsp module (enabled by default except on win32)
3537 AC_ARG_ENABLE(oss,
3538   [  --enable-oss            Open Sound System OSS support (default enabled)])
3540 if test "${enable_oss}" != "no" &&
3541   (test "${SYS}" != "mingw32" -a "${SYS}" != "mingwce" ||
3542    test "${enable_oss}" = "yes")
3543 then
3544   AC_CHECK_HEADERS([soundcard.h sys/soundcard.h], [
3545     VLC_ADD_PLUGIN([oss access_oss])
3546     AC_CHECK_LIB(ossaudio,main,[VLC_ADD_LIBS([oss access_oss],[-lossaudio])])
3547   ])
3551 dnl  Pulseaudio module
3553 AS_IF([test "${no_x}" = "yes"], [
3554   AS_IF([test "${enable_pulse}" = "yes"], [
3555     AC_MSG_ERROR([Xlib is required for VLC PulseAudio support
3556 (see http://www.pulseaudio.org/ticket/799 for further reference).])
3557   ])
3558 ], [
3559   PKG_ENABLE_MODULES_VLC([PULSE], [], [libpulse >= 0.9.11], [Pulseaudio support], [auto])
3560   VLC_ADD_LIBS([pulse], [${X_LIBS} ${X_PRE_LIBS} -lX11])
3564 dnl  Portaudio module
3566 PKG_ENABLE_MODULES_VLC([PORTAUDIO], [], [portaudio-2.0], [Portaudio library support], [auto])
3569 dnl  ALSA module
3571 AC_ARG_ENABLE(alsa,
3572   [  --enable-alsa           Advanced Linux Sound Architecture (default auto)])
3573 have_alsa="no"
3574 AS_IF([test "${enable_alsa}" != "no"], [
3575   PKG_CHECK_MODULES([ALSA], [alsa >= 1.0.0], [
3576     have_alsa="yes"
3577   ], [
3578     AS_IF([test "x${enable_alsa}" != "x"], [
3579       AC_MSG_ERROR([alsa-lib not found])
3580     ])
3581   ])
3583 AM_CONDITIONAL([HAVE_ALSA], [test "${have_alsa}" = "yes"])
3586 dnl  win32 waveOut plugin
3588 AC_ARG_ENABLE(waveout,
3589   [  --enable-waveout        Win32 waveOut module (default enabled on Win32)])
3590 if test "${enable_waveout}" != "no"; then
3591   if test "${SYS}" = "mingw32"; then
3592     VLC_ADD_PLUGIN([waveout])
3593     VLC_ADD_LIBS([waveout],[-lwinmm])
3594   fi
3595   if test "${SYS}" = "mingwce"; then
3596     VLC_ADD_PLUGIN([waveout])
3597   fi
3601 dnl  CoreAudio plugin
3603 AC_ARG_ENABLE(macosx-audio,
3604   [  --enable-macosx-audio   Mac OS X audio module (default enabled on MacOS X)])
3605 if test "x${enable_macosx_audio}" != "xno" &&
3606   (test "${SYS}" = "darwin" || test "${enable_macosx_audio}" = "yes")
3607 then
3608   AC_CHECK_HEADERS(CoreAudio/CoreAudio.h,
3609     [ VLC_ADD_PLUGIN([auhal])
3610       VLC_ADD_LDFLAGS([auhal],[-Wl,-framework,CoreAudio,-framework,AudioUnit,-framework,AudioToolbox,-framework,Carbon])
3611     ], [ AC_MSG_ERROR([cannot find CoreAudio headers]) ])
3615 dnl  AudioQueue plugin
3617 AC_ARG_ENABLE(audioqueue,
3618   [  --enable-audioqueue       AudioQueue audio module (default disabled)])
3619 if test "${enable_audioqueue}" = "yes"
3620 then
3621   VLC_ADD_PLUGIN([audioqueue])
3622   VLC_ADD_LDFLAGS([audioqueue], [-Wl,-framework,AudioToolbox,-framework,CoreFoundation])
3626 dnl  Roku HD1000 audio
3628 AC_ARG_ENABLE(hd1000a,
3629   [  --enable-hd1000a        HD1000 audio module (default enabled on HD1000)])
3630 if test "${enable_hd1000a}" != "no" -a "${CXX}" != "" &&
3631   (test "${SYS}" != "mingw32" -a "${SYS}" != "mingwce" ||
3632    test "${enable_hd1000a}" = "yes")
3633 then
3634   AC_LANG_PUSH([C++])
3635   AC_CHECK_HEADERS(deschutes/libraries/hdmachinex225/PCMAudioPlayer.h, [
3636     VLC_ADD_PLUGIN([hd1000a])
3637     AC_CHECK_LIB(HDMachineX225,main,VLC_ADD_LIBS([hd1000a],[-lHDMachineX225]))  ])
3638   AC_LANG_POP([C++])
3642 dnl  JACK modules
3644 PKG_ENABLE_MODULES_VLC([JACK], [jack access_jack], [jack], [JACK audio I/O modules],[auto])
3647 dnl UPnP Plugin (Intel SDK)
3649 PKG_ENABLE_MODULES_VLC([UPNP], [upnp_intel], [libupnp], [Intel UPnp SDK],[auto])
3650 VLC_ADD_CXXFLAGS([upnp_intel],[${UPNP_CFLAGS}])
3653 dnl  Interface plugins
3656 EXTEND_HELP_STRING([Interface plugins:])
3659 dnl Skins2 module
3661 AC_ARG_ENABLE(skins2,
3662   [AS_HELP_STRING([--enable-skins2],[Skins2 interface module (default
3663    enabled except on MacOSX, BeOS and WinCE)])])
3664 if test "${enable_skins2}" = "yes" ||
3665   (test "${SYS}" != "darwin" && test "${SYS}" != "beos" &&
3666    test "${SYS}" != "mingwce" && test "${enable_skins2}" != "no"); then
3668   dnl test for the required libraries
3669   skins2_missing_lib="no"
3671   dnl freetype
3672   if test "${have_freetype}" != "yes"; then
3673     skins2_missing_lib="yes"
3674     if test "${enable_skins2}" = "yes"; then
3675       AC_MSG_ERROR([Could not find freetype (required for skins2)])
3676     fi
3677   fi
3679   if test "${skins2_missing_lib}" = "no" && (test "${SYS}" = "mingw32"); then
3680     VLC_ADD_PLUGIN([skins2])
3681     ALIASES="${ALIASES} svlc"
3682     VLC_ADD_CPPFLAGS([skins2],[-U_OFF_T_ -U_off_t -Imodules/gui/skins2 -DWIN32_SKINS])
3683     VLC_ADD_CXXFLAGS([skins2],[-O2 -fno-rtti])
3684     VLC_ADD_LIBS([skins2],[-loleaut32 -lwinspool -lwinmm -lshell32 -lctl3d32 -ladvapi32 -lwsock32 -lgdi32 -lcomdlg32 -lole32 -luuid -lcomctl32])
3686   else if test "${skins2_missing_lib}" = "no" && (test "${SYS}" = "darwin"); then
3687     VLC_ADD_PLUGIN([skins2])
3688     ALIASES="${ALIASES} svlc"
3689     VLC_ADD_CPPFLAGS([skins2],[-Imodules/gui/skins2 -DMACOSX_SKINS])
3690     VLC_ADD_CXXFLAGS([skins2],[-O2 -fno-rtti])
3691     VLC_ADD_LDFLAGS([skins2],[-Wl,-framework,Carbon])
3693   else if test "${skins2_missing_lib}" = "no"; then
3694     VLC_ADD_PLUGIN([skins2])
3695     ALIASES="${ALIASES} svlc"
3696     VLC_ADD_CPPFLAGS([skins2],[-Imodules/gui/skins2 ${X_CFLAGS} -DX11_SKINS])
3697     VLC_ADD_CXXFLAGS([skins2],[-O2 -fno-rtti])
3698     VLC_ADD_LIBS([skins2],[${X_LIBS} ${X_PRE_LIBS} -lXext -lXpm -lX11])
3699     need_xid_provider="no"
3700   fi fi fi
3702 AM_CONDITIONAL(BUILD_SKINS, [test "${enable_skins2}" = "yes" ||
3703          (test "${SYS}" != "darwin" && test "${SYS}" != "beos" &&
3704           test "${SYS}" != "mingwce" && test "${enable_skins2}" != "no")])
3707 dnl Hildon UI
3709 AC_ARG_ENABLE(hildon,
3710   [  --enable-hildon         Hildon touchscreen UI (default disabled)])
3711 AS_IF([test "${enable_hildon}" = "yes"], [
3712   PKG_CHECK_MODULES(HILDON, [hildon-1], [
3713     PKG_CHECK_MODULES(HILDON_FM, hildon-fm-2, [
3714       VLC_ADD_CFLAGS([hildon],[${HILDON_FM_CFLAGS} -DHAVE_HILDON_FM])
3715       VLC_ADD_LIBS([hildon],[${HILDON_FM_LIBS}])
3716     ], [
3717       AC_MSG_WARN(hildon-fm-2 not found)
3718     ])
3719     VLC_ADD_CFLAGS([hildon],[${HILDON_CFLAGS} ${X_CFLAGS}])
3720     VLC_ADD_LIBS([hildon],[${HILDON_LIBS} ${X_LIBS} ${X_PRE_LIBS} -lX11])
3721     VLC_ADD_PLUGIN([hildon])
3722     ALIASES="${ALIASES} mvlc"
3723     need_xid_provider="no"
3724   ], [
3725     AS_IF([test "${enable_hildon}" = "yes"],[
3726       AC_MSG_ERROR([Hildon libraries not found])
3727     ])
3728     enable_hildon="no"
3729   ])
3731 AM_CONDITIONAL(BUILD_HILDON, [test "${enable_hildon}" = "yes"])
3734 dnl QT 4
3736 AC_ARG_ENABLE(qt4,
3737   [  --enable-qt4            Qt 4 support (default enabled) ],, [
3738   AS_IF([test "${SYS}" = "darwin"], [enable_qt4=no])
3740 AS_IF([test "${enable_qt4}" != "no"], [
3741   PKG_CHECK_MODULES(QT4, [QtCore QtGui >= 4.4.0], [
3742     VLC_ADD_PLUGIN([qt4])
3743     VLC_ADD_LIBS([qt4],[${QT4_LIBS}])
3744     VLC_ADD_CXXFLAGS([qt4],[${QT4_CFLAGS}])
3745     ALIASES="${ALIASES} qvlc"
3747     AC_LANG_PUSH([C++])
3748     CPPFLAGS_save="${CPPFLAGS}"
3750     AC_MSG_CHECKING([whether Qt uses X11])
3751     CPPFLAGS="${CPPFLAGS} ${QT4_CFLAGS}"
3752     AC_PREPROC_IFELSE([
3753 #include <QWidget>
3754 #if !defined (Q_WS_X11)
3755 # error Fail
3756 #endif
3757     ], [
3758       AC_MSG_RESULT([yes])
3759       VLC_ADD_LIBS([qt4],[${X_LIBS} ${X_PRE_LIBS} -lX11])
3760       need_xid_provider="no"
3761       VLC_ADD_CXXFLAGS([qt4],[${X_CFLAGS}])
3762     ], [
3763       AC_MSG_RESULT([no])
3764     ])
3766     CPPFLAGS="${CPPFLAGS_save}"
3767     AC_LANG_POP([C++])
3769     AS_IF([test "${SYS}" = "mingw32" -o "${SYS}" = "mingwce"], [
3770         VLC_ADD_LIBS([qt4],[-lole32])
3771     ])
3772     AC_PATH_PROGS(MOC, [moc-qt4 moc], moc,`eval $PKG_CONFIG --variable=exec_prefix QtCore`/bin)
3773     AC_PATH_PROG(RCC, rcc, rcc,`eval $PKG_CONFIG --variable=exec_prefix QtCore`/bin)
3774     AC_PATH_PROGS(UIC, [uic-qt4 uic], uic,`eval $PKG_CONFIG --variable=exec_prefix QtCore`/bin)
3775   ], [
3776     AS_IF([test "${enable_qt4}" = "yes"],[
3777       AC_MSG_ERROR([Qt 4 library not found])
3778     ],[
3779       AC_MSG_WARN([Qt 4 library not found])
3780     ])
3781     enable_qt4="no"
3782   ])
3784 AM_CONDITIONAL(ENABLE_QT4, [test "x$enable_qt4" != "xno"])
3787 dnl Simple test for skins2 dependency
3789 AS_IF([test "${enable_skins2}" != "no" && test "x$enable_qt4" = "xno"], [
3790   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.])
3794 dnl  MacOS X video output/gui modules
3796 AC_ARG_ENABLE(macosx,
3797   [  --enable-macosx         Mac OS X gui support (default enabled on Mac OS X)])
3798 if test "x${enable_macosx}" = "xyes"
3799 then
3800   VLC_ADD_LDFLAGS([macosx minimal_macosx],[-Wl,-framework,Cocoa])
3801   VLC_ADD_LDFLAGS([macosx minimal_macosx],[-Wl,-framework,OpenGL])
3802   VLC_ADD_LDFLAGS([macosx minimal_macosx],            [-Wl,-framework,Carbon])
3803   VLC_ADD_LDFLAGS([macosx minimal_macosx],            [-Wl,-framework,CoreServices])
3804   VLC_ADD_LDFLAGS([macosx minimal_macosx],            [-Wl,-framework,AGL])
3805   VLC_ADD_LDFLAGS([macosx],                           [-Wl,-framework,IOKit])
3806   VLC_ADD_LDFLAGS([macosx],                           [-F${CONTRIB_DIR}/Sparkle -Wl,-framework,Sparkle])
3807   VLC_ADD_OBJCFLAGS([macosx],                         [-F${CONTRIB_DIR}/Sparkle])
3808   dnl For bug report
3809   VLC_ADD_LDFLAGS([macosx],                           [-Wl,-framework,AddressBook])
3810   VLC_ADD_LDFLAGS([macosx],                           [-Wl,-framework,WebKit])
3811   VLC_ADD_OBJCFLAGS([macosx minimal_macosx], [-fobjc-exceptions] )
3813   VLC_ADD_PLUGIN([macosx minimal_macosx])
3817 dnl  MacOS X related modules
3820 AC_ARG_ENABLE(macosx-vout,
3821   [  --enable-macosx-vout    Mac OS X video output module (default enabled on Mac OS X)])
3822 if test "x${enable_macosx_vout}" != "xno" &&
3823   (test "${SYS}" = "darwin" || test "${enable_macosx_vout}" = "yes")
3824 then
3825   VLC_ADD_LDFLAGS([vout_macosx],[-Wl,-framework,Cocoa])
3826   VLC_ADD_LDFLAGS([vout_macosx],[-Wl,-framework,OpenGL])
3827   VLC_ADD_PLUGIN([vout_macosx])
3830 AC_ARG_ENABLE(macosx-dialog-provider,
3831   [  --enable-macosx-dialog-provider Mac OS X dialog module (default enabled on Mac OS X)])
3832 if test "x${enable_macosx_dialog_provider}" != "xno" &&
3833   (test "${SYS}" = "darwin" || test "${enable_macosx_dialog_provider}" = "yes")
3834 then
3835   VLC_ADD_LDFLAGS([macosx_dialog_provider],[-Wl,-framework,Cocoa])
3836   VLC_ADD_PLUGIN([macosx_dialog_provider])
3839 AC_ARG_ENABLE(macosx-qtcapture,
3840   [  --enable-macosx-qtcapture Mac OS X qtcapture (iSight) module (default enabled on Mac OS X)])
3841 if test "x${enable_macosx_qtcapture}" != "xno" &&
3842   (test "${SYS}" = "darwin" || test "${enable_macosx_qtcapture}" = "yes")
3843 then
3844   VLC_ADD_LDFLAGS([qtcapture], [-Wl,-framework,Cocoa])
3845   VLC_ADD_LDFLAGS([qtcapture], [-Wl,-framework,QTKit])
3846   VLC_ADD_LDFLAGS([qtcapture], [-Wl,-framework,CoreAudio])
3847   VLC_ADD_LDFLAGS([qtcapture], [-Wl,-framework,QuartzCore])
3848   VLC_ADD_LDFLAGS([qtcapture], [-Wl,-framework,CoreVideo])
3849   VLC_ADD_PLUGIN([qtcapture])
3852 AC_ARG_ENABLE(macosx-eyetv,
3853   [  --enable-macosx-eyetv   Mac OS X EyeTV (TNT Tuner) module (default enabled on Mac OS X)])
3854 if test "x${enable_macosx_eyetv}" != "xno" &&
3855   (test "${SYS}" = "darwin" || test "${enable_macosx_eyetv}" = "yes")
3856 then
3857   VLC_ADD_LDFLAGS([access_eyetv], [-Wl,-framework,Foundation])
3858   VLC_ADD_PLUGIN([access_eyetv])
3861 AC_ARG_ENABLE(macosx-vlc-app,
3862   [  --enable-macosx-vlc-app build the VLC media player (default enabled on Mac OS X)])
3863 AM_CONDITIONAL(BUILD_MACOSX_VLC_APP, [test "${enable_macosx_vlc_app}" != "no" &&
3864     (test "${SYS}" = "darwin" || test "${enable_macosx_vlc_app}" = "yes") ])
3868 dnl  ncurses module
3870 AC_ARG_ENABLE(ncurses,
3871   [  --disable-ncurses       ncurses interface support (default disabled)],
3872   [if test "${enable_ncurses}" != "no"; then
3873     AC_CHECK_HEADER(ncurses.h,
3874       [AC_CHECK_LIB(ncursesw, mvprintw,
3875         [VLC_ADD_PLUGIN([ncurses])
3876         VLC_ADD_LIBS([ncurses],[-lncursesw])
3877         ALIASES="${ALIASES} nvlc"
3878         AC_DEFINE([HAVE_NCURSESW], 1, [Define to 1 if you have libncursesw.])
3879         AC_CHECK_LIB(ncursesw, tgetent, [],
3880           AC_CHECK_LIB(tinfow, tgetent, [VLC_ADD_LIBS([ncurses],[-ltinfow])],
3881             [AC_CHECK_LIB(tinfo, tgetent, [VLC_ADD_LIBS([ncurses],[-ltinfo])],
3882               [AS_IF([test "x${enable_ncurses}" != "x"],
3883                 [AC_MSG_ERROR([tgetent not found in ncursesw tinfow tinfo]
3884                )])])
3885             ]
3886           )
3887         )
3888         ],
3889         [AC_CHECK_LIB( ncurses, mvprintw,
3890           [VLC_ADD_PLUGIN([ncurses])
3891           ALIASES="${ALIASES} nvlc"
3892           VLC_ADD_LIBS([ncurses],[-lncurses])
3893           AC_CHECK_LIB(ncurses, tgetent, [],
3894             [AC_CHECK_LIB(tinfo, tgetent, [VLC_ADD_LIBS([ncurses],[-ltinfo])],
3895               [AS_IF([test "x${enable_ncurses}" != "x"],
3896                 [AC_MSG_ERROR([tgetent not found in ncurses tinfo])])]
3897             )]
3898           )],
3899           [AS_IF([test "x${enable_ncurses}" != "x"], [
3900             AC_MSG_ERROR([libncurses not found])])]
3901         )]
3902       )]
3903     )
3904   fi]
3908 dnl  XOSD plugin
3910 AC_ARG_ENABLE(xosd,
3911   [  --enable-xosd           xosd interface support (default disabled)])
3912 if test "${enable_xosd}" = "yes"
3913 then
3914   AC_CHECK_HEADERS(xosd.h,
3915     AC_CHECK_LIB(xosd, xosd_set_horizontal_offset, [
3916       VLC_ADD_PLUGIN([xosd])
3917       VLC_ADD_LIBS([xosd],[-lxosd])
3918     ])
3919   )
3923 dnl Framebuffer (overlay) plugin
3925 AC_ARG_ENABLE(fbosd,
3926   [  --enable-fbosd          fbosd interface support (default disabled)])
3927 if test "${enable_fbosd}" = "yes"
3928 then
3929   AC_CHECK_HEADERS(linux/fb.h, [
3930     VLC_ADD_PLUGIN([fbosd])
3931  ])
3935 dnl Post-interface configuration checks
3937 AS_IF([test "$need_xid_provider" = "yes"], [
3938   AC_MSG_ERROR([X11 video outputs need a window provider (Qt4, Skins2, Hildon or xcb-utils), but none were found. Please install xcb-keysyms.])
3942 dnl Visualisation plugin
3944 AC_ARG_ENABLE(visual,
3945   [  --enable-visual         visualisation plugin (default enabled)])
3946 if test "${enable_visual}" != "no"
3947 then
3948     VLC_ADD_PLUGIN([visual])
3952 dnl  goom visualization plugin
3954 PKG_ENABLE_MODULES_VLC([GOOM], [], [libgoom2], [goom visualization plugin], [auto])
3957 dnl libprojectM visualization plugin
3959 AC_ARG_ENABLE(projectm,
3960   [  --enable-projectm          projectM visualization plugin (default enabled)])
3961 AS_IF([test "${enable_projectm}" != "no"],
3962   [
3963     PKG_CHECK_MODULES(PROJECTM, libprojectM,
3964     [
3965       VLC_ADD_PLUGIN([projectm])
3966       VLC_ADD_CXXFLAGS([projectm],[$PROJECTM_CFLAGS])
3967       VLC_ADD_LIBS([projectm],[$PROJECTM_LIBS])
3968       PKG_CHECK_MODULES(PROJECTM2, [libprojectM >= 2.0.0],
3969         [ AC_DEFINE([HAVE_PROJECTM2], 1, [Define to 1 if using libprojectM 2.x]) ],
3970         [ AC_MSG_WARN( [Using libprojectM version 1] )
3971       ])
3972     ],[
3973       AC_MSG_WARN([libprojectM library not found])
3974     ])
3975   ])
3978 dnl  AtmoLight (homemade Philips Ambilight clone)
3980 AC_ARG_ENABLE(atmo,
3981 AS_HELP_STRING([--disable-atmo],[AtmoLight (homemade Philips Ambilight clone)
3982                 (default enabled)]),, [enable_atmo="yes"])
3983 AS_IF([test "${enable_atmo}" != no], [
3984   AS_IF([test "${SYS}" = "mingw32" -o "${SYS}" = "linux"], [
3985     AC_LANG_PUSH(C++)
3986     VLC_ADD_PLUGIN([atmo])
3987     AC_LANG_POP(C++)
3988   ])
3992 dnl  Bonjour services discovery
3993 PKG_ENABLE_MODULES_VLC([BONJOUR], [], [avahi-client >= 0.6], [Bonjour services discovery], [auto])
3996 dnl  libudev services discovery
3997 PKG_ENABLE_MODULES_VLC([UDEV], [], [libudev >= 142], [Linux udev services discovery], [auto])
4000 dnl MTP devices services discovery
4001 PKG_ENABLE_MODULES_VLC([MTP], [mtp access_mtp], [libmtp >= 1.0.0], [MTP devices support], [auto])
4004 dnl  Lirc plugin
4006 AC_ARG_ENABLE(lirc,
4007   [  --enable-lirc           lirc support (default disabled)])
4008 if test "${enable_lirc}" = "yes"
4009 then
4010   AC_CHECK_HEADER(lirc/lirc_client.h, AC_CHECK_LIB(lirc_client, lirc_init, have_lirc="true", have_lirc="false"),have_lirc="false")
4011   if test "${have_lirc}" = "true"
4012   then
4013     VLC_ADD_PLUGIN([lirc])
4014     VLC_ADD_LIBS([lirc],[-llirc_client])
4015   fi
4018 EXTEND_HELP_STRING([Misc options:])
4021 dnl libgcrypt
4023 AC_ARG_ENABLE(libgcrypt,
4024   [  --disable-libgcrypt     gcrypt support (default enabled)])
4025 AS_IF([test "${enable_libgcrypt}" != "no"], [
4026   AC_CHECK_DECL([GCRYCTL_SET_THREAD_CBS], [
4027     libgcrypt-config --version >/dev/null || \
4028         AC_MSG_ERROR([gcrypt.h present but libgcrypt-config could not be found])
4029     AC_CHECK_LIB(gcrypt, gcry_control, [
4030       have_libgcrypt="yes"
4031       GCRYPT_CFLAGS="`libgcrypt-config --cflags`"
4032       GCRYPT_LIBS="`libgcrypt-config --libs`"
4033     ], [
4034       AC_MSG_ERROR([libgcrypt not found. Install libgcrypt or use --disable-libgcrypt. Have a nice day.])
4035     ], [`libgcrypt-config --libs`])
4036   ], [
4037     AC_MSG_ERROR([libgcrypt version 1.1.94 or higher not found. Install libgcrypt or use --disable-libgcrypt. Have a nice day.])
4038   ], [#include <gcrypt.h>]
4039   )
4042 if test "${SYS}" = "mingw32" -o "${SYS}" = "mingwce"; then
4043   AS_IF([test "${have_libgcrypt}" = "yes"],[
4044     VLC_ADD_LIBS([rtp stream_out_rtp], [${GCRYPT_LIBS}])
4045   ])
4047 AC_SUBST(GCRYPT_CFLAGS)
4048 AC_SUBST(GCRYPT_LIBS)
4049 AM_CONDITIONAL([HAVE_GCRYPT], [test "${have_libgcrypt}" = "yes"])
4052 dnl TLS/SSL
4054 AC_ARG_ENABLE(gnutls,
4055   [  --enable-gnutls         gnutls TLS/SSL support (default enabled)])
4057 AS_IF([test "${have_libgcrypt}" != "yes"], [
4058   AS_IF([test "${enable_gnutls}" = "yes"], [
4059     AC_MSG_ERROR([--enable-gnutls and --disable-libgcrypt are mutually exclusive.])
4060   ])
4061   enable_gnutls="no"
4063 AS_IF([test "${enable_gnutls}" != "no"], [
4064   PKG_CHECK_MODULES(GNUTLS, [gnutls >= 1.7.4], [
4065     VLC_ADD_PLUGIN([gnutls])
4066     VLC_ADD_CFLAGS([gnutls], [$GNUTLS_CFLAGS])
4067     AS_IF([test "${SYS}" = "mingw32"], [
4068       dnl pkg-config --libs gnutls omits these
4069       VLC_ADD_LIBS([gnutls], [-lz ${LTLIBINTL}])
4070     ])
4071     dnl The GnuTLS plugin invokes gcry_control directly.
4072     AS_IF([test "${have_libgcrypt}" = "yes"],[
4073       VLC_ADD_LIBS([gnutls], [${GCRYPT_LIBS}])
4074       VLC_ADD_CFLAGS([gnutls], [${GCRYPT_CFLAGS}])
4075     ])
4076     VLC_ADD_LIBS([gnutls], [$GNUTLS_LIBS])
4077   ], [
4078     AS_IF([test "${enable_gnutls}" = "yes"], [
4079       AC_MSG_ERROR([gnutls not present or too old (version 1.7.4 required)])
4080     ])
4081   ])
4086 dnl RemoteOSD plugin (VNC client as video filter)
4088 AC_ARG_ENABLE(remoteosd,
4089   [  --disable-remoteosd     RemoteOSD plugin (default enabled)])
4091 AS_IF([test "${enable_remoteosd}" != "no"], [
4092   AS_IF([test "${have_libgcrypt}" = "yes"],[
4093     VLC_ADD_PLUGIN([remoteosd])
4094     VLC_ADD_LIBS([remoteosd], ${GCRYPT_LIBS})
4095     VLC_ADD_CFLAGS([remoteosd], ${GCRYPT_CFLAGS})
4096   ], [
4097     AC_MSG_ERROR([libgcrypt support required for RemoteOSD plugin])
4098   ])
4103 dnl RAOP plugin
4105 AC_MSG_CHECKING([whether to enable RAOP plugin])
4106 AS_IF([test "${have_libgcrypt}" = "yes"], [
4107   AC_MSG_RESULT(yes)
4108   VLC_ADD_PLUGIN([stream_out_raop])
4109   VLC_ADD_LIBS([stream_out_raop], [${GCRYPT_LIBS} -lgpg-error])
4110   VLC_ADD_CFLAGS([stream_out_raop], [${GCRYPT_CFLAGS}])
4111 ], [
4112   AC_MSG_RESULT(no)
4113   AC_MSG_WARN([libgcrypt support required for RAOP plugin])
4118 dnl OSSO (Maemo screen blanking) plugin
4120 PKG_ENABLE_MODULES_VLC([OSSO_SCREENSAVER], [], [libosso], [Maemo support], [auto])
4122 AS_IF([test -f "/etc/maemo_version"], [
4123   AC_DEFINE([HAVE_MAEMO], 1, [Define to 1 if building for the Maemo platform.])
4128 dnl update checking system
4130 AC_ARG_ENABLE(update-check,
4131   [  --enable-update-check   update checking system (default disabled)])
4132 if test "${enable_update_check}" = "yes"
4133 then
4134   if test "${have_libgcrypt}" != "yes"
4135   then
4136     AC_MSG_ERROR([libgcrypt is required for update checking system])
4137   fi
4138   VLC_ADD_LIBS([libvlccore], [${GCRYPT_LIBS}])
4139   VLC_ADD_CFLAGS([libvlccore], [${GCRYPT_CFLAGS}])
4140   AC_DEFINE([UPDATE_CHECK], 1, [Define if you want to use the VLC update mechanism])
4144 dnl SQLite
4146 AC_ARG_WITH(sqlite,
4147   [  --with-sqlite=PATH      sqlite path linking])
4148 if test "${SYS}" != "darwin"; then
4149   PKG_ENABLE_MODULES_VLC([SQLITE], [], [sqlite3 >= 3.6.0], [sqlite3], [auto])
4150 else
4151   if test "${enable_sqlite}" != "no"
4152   then
4153     AC_CHECK_HEADERS(sqlite3.h, [
4154         VLC_ADD_PLUGIN([sqlite])
4155         if test "${with_sqlite}" != "no" -a -n "${with_sqlite}"; then
4156           AC_MSG_CHECKING(existence of sqlite directory in ${with_sqlite})
4157           real_sqlite="`cd ${with_sqlite} 2>/dev/null && pwd`"
4158           if test -z "${real_sqlite}"
4159           then
4160             dnl  The given directory can't be found
4161             AC_MSG_RESULT(no)
4162             AC_MSG_ERROR([cannot cd to ${with_sqlite}])
4163           fi
4164           VLC_ADD_CFLAGS([sqlite],[-I${with_sqlite}/include])
4165           VLC_ADD_LIBS([sqlite], [-L${with_sqlite}/lib -lsqlite3])
4166           AC_MSG_RESULT(yes)
4167         else
4168           VLC_ADD_LIBS([sqlite], [-lsqlite3])
4169         fi
4170         AC_DEFINE([SQLITE_MODULE], 1, [Define if you want to use SQLite module]) ],
4171         AC_MSG_ERROR([sqlite3 is required for sqlite module]) )
4172   fi
4174 AM_CONDITIONAL([HAVE_SQLITE], [test "${enable_sqlite}" != "no"])
4178 dnl  Endianness check
4180 AC_C_BIGENDIAN
4181 AS_IF([test "${ac_cv_c_bigendian}" = "yes"], [
4182   DEFS_BIGENDIAN="-DWORDS_BIGENDIAN=1"
4183 ], [
4184   DEFS_BIGENDIAN=""
4186 AC_SUBST(DEFS_BIGENDIAN)
4189 dnl Where to install KDE solid .desktop
4191 AC_ARG_VAR([KDE4_CONFIG], [kde4-config utility])
4192 AS_IF([test "x$KDE4_CONFIG" = "x"], [
4193   KDE4_CONFIG="kde4-config"
4196 AC_ARG_WITH(kde-solid,
4197   AS_HELP_STRING([--with-kde-solid=PATH],
4198                  [KDE Solid actions directory (auto)]),, [
4200 if test "${SYS}" != "mingw32" -a "${SYS}" != "mingwce" ; then
4201   with_kde_solid="yes"
4204 soliddatadir=""
4205 AS_IF([test "${with_kde_solid}" != "no"], [
4206   AS_IF([test "${with_kde_solid}" = "yes"], [
4207     kde4datadir="`${KDE4_CONFIG} --install data`"
4208     AS_IF([test "x$kde4datadir" = "x"], [kde4datadir='${datadir}/kde4/apps'])
4209     soliddatadir="${kde4datadir}/solid/actions"
4210   ], [
4211     soliddatadir="${with_kde_solid}"
4212   ])
4214 AC_SUBST(soliddatadir)
4215 AM_CONDITIONAL(KDE_SOLID, [test "x${soliddatadir}" != "x"])
4218 dnl  DLL loader copied from MPlayer copied from somewhere else (WINE ?)
4220 loader=false
4221 AC_ARG_ENABLE(loader,
4222   AS_HELP_STRING([--enable-loader],[build DLL loader for ELF i386 platforms
4223                   (default disabled)]))
4224 AM_CONDITIONAL(LOADER, [test "${enable_loader}" = "yes"])
4225 AS_IF([test "${enable_loader}" = "yes"],
4226   [ VLC_ADD_PLUGIN([dmo])
4227     VLC_ADD_CPPFLAGS([dmo quicktime realvideo],[-I\\\${top_srcdir}/libs/loader])
4228     VLC_ADD_LIBS([dmo quicktime realvideo],[\\\${top_builddir}/libs/loader/libloader.la])
4229     VLC_ADD_CPPFLAGS([realvideo], [-DLOADER])
4230     VLC_ADD_LIBS([dmo quicktime], [-lpthread])
4231   ])
4233 EXTEND_HELP_STRING([Components:])
4236 dnl  the VLC binary
4238 AC_ARG_ENABLE(vlc,
4239   [  --enable-vlc            build the VLC media player (default enabled)])
4240 AM_CONDITIONAL(BUILD_VLC, [test "${enable_vlc}" != "no"])
4243 dnl  Microsoft ActiveX support
4245 activex=false
4246 AC_ARG_ENABLE(activex,
4247   AS_HELP_STRING([--enable-activex],[build a vlc-based ActiveX control
4248                   (default enabled on Win32)]))
4249 AC_ARG_WITH(wine-sdk-path,
4250   [  --with-wine-sdk-path=PATH path to wine sdk])
4251 if test "${enable_activex}" != "no"
4252 then
4253   if test "${SYS}" = "mingw32"
4254   then
4255     AC_CHECK_PROGS(MIDL, [midl], no)
4256     if test "${with_wine_sdk_path}" != ""
4257     then
4258        WINE_SDK_PATH=${with_wine_sdk_path}
4259        AC_PATH_PROG(WIDL, widl, no, [$WINE_SDK_PATH/bin:$WINE_SDK_PATH/tools/widl])
4260     else
4261        WIDL=no
4262     fi
4263     AC_LANG_PUSH(C++)
4264     AC_CHECK_HEADERS(ole2.h,
4265       [AC_CHECK_HEADERS(olectl.h,
4266         [ VLC_ADD_CPPFLAGS([activex],[-DUNICODE -D_UNICODE -D_MIDL_USE_GUIDDEF_])
4267           VLC_ADD_CXXFLAGS([activex],[-fno-exceptions])
4268           VLC_ADD_LIBS([activex],[-lole32 -loleaut32 -luuid -lshlwapi])
4269           AC_CHECK_HEADERS(objsafe.h,
4270             VLC_ADD_CXXFLAGS([activex],[-DHAVE_OBJSAFE_HEADER]),,
4271             [
4272              #if HAVE_OLE2_H
4273              #   include <ole2.h>
4274              #endif
4275             ]
4276           )
4277           activex=:
4278           PLUGINS_BINDINGS="${PLUGINS_BINDINGS} activex"
4279         ],
4280         [ AC_MSG_ERROR([required OLE headers are missing from your system]) ]
4281       )],
4282       [ AC_MSG_ERROR([required OLE headers are missing from your system]) ]
4283     )
4284     AC_LANG_POP(C++)
4285   fi
4287 AC_ARG_VAR(MIDL, [Microsoft IDL compiler (Win32 platform only)])
4288 AM_CONDITIONAL(HAS_MIDL_COMPILER, test "${MIDL}" != "no")
4289 AC_ARG_VAR(WIDL, [Wine IDL compiler (requires Wine SDK)])
4290 AM_CONDITIONAL(HAS_WIDL_COMPILER, test "${WIDL}" != "no")
4291 AM_CONDITIONAL(BUILD_ACTIVEX,${activex})
4295 dnl  Plugin and builtin checks
4297 plugin_support=yes
4299 dnl Automagically disable plugins if there is no system support for
4300 dnl dynamically loadable files (.so, .dll, .dylib).
4301 dnl don't forget vlc-win32 still can load .dll as plugins
4302 AS_IF([test "${ac_cv_have_plugins}" = "no"], [
4303   AC_MSG_WARN([*** No plugin support! Building statically! ***])
4304   plugin_support=no
4307 AS_IF([test "${plugin_support}" != "no"], [
4308   AC_DEFINE(HAVE_DYNAMIC_PLUGINS, 1, [Define if dynamic plugins are supported])
4312 dnl Pic and shared libvlc stuff
4314 AS_IF([test "${SYS}" = "mingw32"], [
4315   FILE_LIBVLCCORE_DLL="!define LIBVLCCORE_DLL libvlccore.dll"
4316   FILE_LIBVLC_DLL="!define LIBVLC_DLL libvlc.dll"
4320 dnl  Stuff used by the program
4322 VERSION_MESSAGE="${VERSION} ${CODENAME}"
4323 COPYRIGHT_MESSAGE="Copyright © ${COPYRIGHT_YEARS} the VideoLAN team"
4324 AC_DEFINE_UNQUOTED(VERSION_MESSAGE, "${VERSION_MESSAGE}", [Simple version string])
4325 AC_DEFINE_UNQUOTED(COPYRIGHT_MESSAGE, "${COPYRIGHT_MESSAGE}", [Copyright string])
4326 AC_DEFINE_UNQUOTED(COPYRIGHT_YEARS, "${COPYRIGHT_YEARS}", [The copyright years])
4327 AC_DEFINE_UNQUOTED(CONFIGURE_LINE, "${CONFIGURE_LINE}", [The ./configure command line])
4328 AC_DEFINE_UNQUOTED(PACKAGE_VERSION_MAJOR,"${VERSION_MAJOR}", [version major number])
4329 AC_DEFINE_UNQUOTED(PACKAGE_VERSION_MINOR,"${VERSION_MINOR}", [version minor number])
4330 AC_DEFINE_UNQUOTED(PACKAGE_VERSION_REVISION,"${VERSION_REVISION}", [version minor number])
4331 AC_DEFINE_UNQUOTED(PACKAGE_VERSION_EXTRA,"${VERSION_EXTRA}", [version minor number])
4332 AC_SUBST(COPYRIGHT_MESSAGE)
4333 AC_SUBST(VERSION_MESSAGE)
4334 AC_SUBST(VERSION_MAJOR)
4335 AC_SUBST(VERSION_MINOR)
4336 AC_SUBST(VERSION_REVISION)
4337 AC_SUBST(VERSION_EXTRA)
4338 AC_SUBST(COPYRIGHT_YEARS)
4339 AC_DEFINE_UNQUOTED(VLC_COMPILE_BY, "`whoami`", [user who ran configure])
4340 AC_DEFINE_UNQUOTED(VLC_COMPILE_HOST, "`hostname -f 2>/dev/null || hostname`", [host which ran configure])
4341 AC_DEFINE_UNQUOTED(VLC_COMPILER, "`$CC -v 2>&1 | tail -n 1`", [compiler])
4342 dnl Win32 need s a numerical version_extra.
4343 case $( echo ${VERSION_EXTRA}|wc -m ) in
4344        "1") VERSION_EXTRA_RC="0";;
4345        "2") VERSION_EXTRA_RC=$( echo ${VERSION_EXTRA}|tr "abcdefghi" "123456789") ;;
4346        *) VERSION_EXTRA_RC="99"
4347 esac
4348 AC_SUBST(VERSION_EXTRA_RC)
4350 dnl  Handle substvars that use $(top_srcdir)
4352 VLC_CONFIG="top_srcdir=\"\$(top_srcdir)\" top_builddir=\"\$(top_builddir)\" \$(top_builddir)/vlc-config"
4353 AC_SUBST(VLC_CONFIG)
4354 CPPFLAGS_save="-I\$(top_srcdir)/include -I\$(top_builddir)/include ${CPPFLAGS_save}"
4357 dnl  Restore *FLAGS
4359 VLC_RESTORE_FLAGS
4362 dnl Sort the modules list
4364 PLUGINS=$( (for i in `echo $PLUGINS`; do echo $i; done)|sort|xargs )
4367 dnl  Create the vlc-config script
4369 LDFLAGS_libvlc="${LDFLAGS_libvlc} ${LDFLAGS_builtin}"
4372 dnl  Configuration is finished
4374 AC_SUBST(SYS)
4375 AC_SUBST(ARCH)
4376 AC_SUBST(ALIASES)
4377 AC_SUBST(ASM)
4378 AC_SUBST(MOC)
4379 AC_SUBST(RCC)
4380 AC_SUBST(UIC)
4381 AC_SUBST(WINDRES)
4382 AC_SUBST(WINE_SDK_PATH)
4383 AC_SUBST(LIBEXT)
4384 AC_SUBST(AM_CPPFLAGS)
4385 AC_SUBST(MACOSX_DEPLOYMENT_TARGET)
4386 AC_SUBST(FILE_LIBVLCCORE_DLL)
4387 AC_SUBST(FILE_LIBVLC_DLL)
4389 dnl Create vlc-config.in
4390 VLC_OUTPUT_VLC_CONFIG_IN
4392 AC_CONFIG_FILES([
4393   Makefile
4394   projects/activex/Makefile
4395   doc/Makefile
4396   libs/loader/Makefile
4397   libs/srtp/Makefile
4398   libs/unzip/Makefile
4399   modules/Makefile
4400   m4/Makefile
4401   po/Makefile.in
4402   share/Makefile
4403   compat/Makefile
4404   src/Makefile
4405   src/test/Makefile
4406   bin/Makefile
4407   test/Makefile
4408   modules/access/Makefile
4409   modules/access/bd/Makefile
4410   modules/access/bda/Makefile
4411   modules/access/dshow/Makefile
4412   modules/access/dvb/Makefile
4413   modules/access/mms/Makefile
4414   modules/access/rtp/Makefile
4415   modules/access/rtsp/Makefile
4416   modules/access/vcd/Makefile
4417   modules/access/vcdx/Makefile
4418   modules/access/screen/Makefile
4419   modules/access/zip/Makefile
4420   modules/access_output/Makefile
4421   modules/audio_filter/Makefile
4422   modules/audio_filter/channel_mixer/Makefile
4423   modules/audio_filter/converter/Makefile
4424   modules/audio_filter/resampler/Makefile
4425   modules/audio_filter/spatializer/Makefile
4426   modules/audio_mixer/Makefile
4427   modules/audio_output/Makefile
4428   modules/codec/Makefile
4429   modules/codec/avcodec/Makefile
4430   modules/codec/dmo/Makefile
4431   modules/codec/omxil/Makefile
4432   modules/codec/shine/Makefile
4433   modules/codec/spudec/Makefile
4434   modules/codec/wmafixed/Makefile
4435   modules/control/Makefile
4436   modules/control/http/Makefile
4437   modules/control/dbus/Makefile
4438   modules/control/globalhotkeys/Makefile
4439   modules/demux/Makefile
4440   modules/demux/asf/Makefile
4441   modules/demux/avformat/Makefile
4442   modules/demux/avi/Makefile
4443   modules/demux/mkv/Makefile
4444   modules/demux/mp4/Makefile
4445   modules/demux/mpeg/Makefile
4446   modules/demux/playlist/Makefile
4447   modules/gui/Makefile
4448   modules/gui/macosx/Makefile
4449   modules/gui/hildon/Makefile
4450   modules/gui/minimal_macosx/Makefile
4451   modules/gui/macosx_dialog_provider/Makefile
4452   modules/gui/qt4/Makefile
4453   modules/gui/skins2/Makefile
4454   modules/meta_engine/Makefile
4455   modules/misc/Makefile
4456   modules/misc/dummy/Makefile
4457   modules/misc/lua/Makefile
4458   modules/misc/notify/Makefile
4459   modules/misc/playlist/Makefile
4460   modules/misc/osd/Makefile
4461   modules/misc/stats/Makefile
4462   modules/misc/xml/Makefile
4463   modules/mux/Makefile
4464   modules/mux/mpeg/Makefile
4465   modules/packetizer/Makefile
4466   modules/services_discovery/Makefile
4467   modules/stream_filter/Makefile
4468   modules/stream_out/Makefile
4469   modules/stream_out/transcode/Makefile
4470   modules/video_chroma/Makefile
4471   modules/video_filter/Makefile
4472   modules/video_filter/dynamicoverlay/Makefile
4473   modules/video_output/Makefile
4474   modules/video_output/msw/Makefile
4475   modules/visualization/Makefile
4476   modules/visualization/visual/Makefile
4477   modules/mmx/Makefile
4478   modules/mmxext/Makefile
4479   modules/3dnow/Makefile
4480   modules/sse2/Makefile
4481   modules/altivec/Makefile
4482   modules/arm_neon/Makefile
4485 AM_COND_IF([HAVE_WIN32], [
4486   AC_CONFIG_FILES([
4487     extras/package/win32/spad.nsi
4488     extras/package/win32/vlc.win32.nsi
4489   ])
4490   AM_COND_IF([BUILD_ACTIVEX], [
4491     AC_CONFIG_FILES([
4492       projects/activex/axvlc.inf
4493       projects/activex/axvlc_rc.rc
4494     ])
4495   ])
4498 AM_COND_IF([HAVE_DARWIN], [
4499   AC_CONFIG_FILES([
4500     extras/package/macosx/Info.plist
4501     extras/package/macosx/Resources/English.lproj/InfoPlist.strings
4502   ])
4505 dnl Generate makefiles
4506 AC_OUTPUT
4508 # Cannot use AC_CONFIG_FILES([vlc-config]) as is automatically built,
4509 # not provided with the source
4510 ${SHELL} ./config.status --file=vlc-config
4511 chmod 0755 vlc-config
4513 /bin/echo -n "Enabled modules: "
4514 ./vlc-config --list plugin
4516 dnl Do we have to use make or gmake ?
4517 USE_MAKE_OR_GMAKE=`case "${SYS}" in openbsd*) echo "gmake";; *) echo "make";; esac`
4518 dnl Shortcut to nice compile message
4519 rm -f compile
4520 if test -n $SHELL; then
4521   SHELL=${CONFIG_SHELL-/bin/sh}
4523 echo '#! '$SHELL >compile
4524 echo rm -f .error\$\$ >>compile
4525 echo ERROR=0 >>compile
4526 echo export PATH=$PATH LANG=C >>compile
4527 echo "($USE_MAKE_OR_GMAKE V=1 \$@ 2>&1 || touch .error\$\$)| \\" >>compile
4528 echo '`sed -ne "s/^top_srcdir *= *//p" < Makefile`/extras/buildsystem/make.pl' >>compile
4529 echo test -f .error\$\$ \&\& ERROR=1 >>compile
4530 echo rm -f .error\$\$ >>compile
4531 echo exit \$ERROR >>compile
4532 chmod a+x compile
4534 printf "
4535 libvlc configuration
4536 --------------------
4537 version               : ${VERSION}
4538 system                : ${SYS}
4539 architecture          : ${ARCH}
4540 build flavour         : "
4541 test "${enable_debug}" = "yes" && printf "debug "
4542 test "${enable_cprof}" = "yes" && printf "cprof "
4543 test "${enable_gprof}" = "yes" && printf "gprof "
4544 test "${enable_optimizations}" = "yes" && printf "optim "
4545 echo ""
4546 if test "${enable_vlc}" != "no"; then
4547 echo "vlc aliases           :${ALIASES}"
4548 else
4549 echo "build vlc executable  : no"
4551 echo "plugins/bindings      :${PLUGINS_BINDINGS}
4553 You can tune the compiler flags in vlc-config.
4554 To build vlc and its plugins, type \`./compile' or \`$USE_MAKE_OR_GMAKE'.
4556 if test "x$ac_ld_does_not_support_text_reloc" = "xyes"; then
4557    echo ""
4558    echo "Warning: Due to a bug in ld, mmx/sse support has been"
4559    echo "         turned off."
4560    echo "         FFmpeg will be REALLY slow."
4561    echo "         VLC WILL NOT PERFORM AS EXPECTED."
4562    echo ""