contribs: fix libvpx build, only specify cross prefix for win32
[vlc.git] / configure.ac
1 dnl Autoconf settings for vlc
2
3 AC_COPYRIGHT([Copyright 2002-2010 the VideoLAN team])
4
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)
12
13 CONFIGURE_LINE="`echo "$0 $ac_configure_args" | sed -e 's/\\\/\\\\\\\/g'`"
14 CODENAME="Twoflower"
15 COPYRIGHT_YEARS="1996-2010"
16
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
24
25 AM_INIT_AUTOMAKE(tar-ustar color-tests)
26 AM_CONFIG_HEADER(config.h)
27
28 # Disable with "./configure --disable-silent-rules" or "make V=1"
29 AM_SILENT_RULES([yes])
30
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
39
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)
49
50 dnl
51 dnl  Save *FLAGS
52 dnl
53 VLC_SAVE_FLAGS
54
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.])
61
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
71
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, :)
78
79 dnl Check for compiler properties
80 AC_C_CONST
81 AC_C_INLINE
82 AC_C_RESTRICT
83
84 dnl Extend the --help string at the current spot.
85 AC_DEFUN([EXTEND_HELP_STRING], [m4_divert_once([HELP_ENABLE], [$1])])
86
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])
95 ])
96
97
98 dnl
99 dnl  Check for the contrib directory
100 dnl
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"
137
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     fi
142   ],[
143     AC_MSG_RESULT([no])
144     CONTRIB_DIR=""
145   ])
146 ])
147
148 dnl
149 dnl  Set default values
150 dnl
151 LDFLAGS_vlc="${LDFLAGS}"
152
153 dnl
154 dnl  Check the operating system
155 dnl
156 HAVE_WIN64="0"
157 case "${host_os}" in
158   "")
159     SYS=unknown
160     ;;
161   linux*)
162     SYS=linux
163     ;;
164   bsdi*)
165     SYS=bsdi
166     CFLAGS_save="${CFLAGS_save} -pthread"; CFLAGS="${CFLAGS_save}"
167     VLC_ADD_LIBS([vcd cdda vcdx],[-ldvd])
168     ;;
169   *bsd*)
170     SYS="${host_os}"
171     CFLAGS_save="${CFLAGS_save} -pthread"; CFLAGS="${CFLAGS_save}"
172     case "${host_os}" in
173       freebsd*)
174         CPPFLAGS_save="${CPPFLAGS_save} -I/usr/local/include"
175         CPPFLAGS="${CPPFLAGS_save}"
176         LDFLAGS_save="${LDFLAGS_save} -L/usr/local/lib"
177         LDFLAGS="${LDFLAGS_save}"
178         ;;
179       openbsd*)
180         CPPFLAGS_save="${CPPFLAGS_save} -I/usr/local/include -I/usr/X11R6/include"
181         CPPFLAGS="${CPPFLAGS_save}"
182         LDFLAGS_save="${LDFLAGS_save} -L/usr/local/lib -L/usr/X11R6/lib/"
183         LDFLAGS="${LDFLAGS_save}"
184         ;;
185     esac
186     ;;
187   darwin*)
188
189     dnl Force gcc "-arch" flag
190     ARCH_flag=""
191     case "${host}" in
192       i386*)
193         ARCH_flag="-arch i386"
194       ;;
195       ppc64*)
196         ARCH_flag="-arch ppc64"
197       ;;
198       ppc*)
199         ARCH_flag="-arch ppc"
200       ;;
201       x86_64*)
202         ARCH_flag="-arch x86_64"
203       ;;
204     esac
205
206     SYS=darwin
207     CFLAGS_save="${CFLAGS_save} -D_INTL_REDIRECT_MACROS ${ARCH_flag}"; CFLAGS="${CFLAGS_save}"
208     CXXFLAGS_save="${CXXFLAGS_save} -D_INTL_REDIRECT_MACROS ${ARCH_flag}"; CXXFLAGS="${CXXFLAGS_save}"
209     CPPFLAGS_save="${CPPFLAGS_save} ${ARCH_flag}"; CPPFLAGS="${CPPFLAGS_save}"
210     OBJCFLAGS_save="${OBJCFLAGS_save} -D_INTL_REDIRECT_MACROS -std=gnu99 ${ARCH_flag}"; OBJCFLAGS="${OBJCFLAGS_save}"
211     LDFLAGS_save="${LDFLAGS_save} -Wl,-headerpad_max_install_names ${ARCH_flag}"; LDFLAGS="${LDFLAGS_save}"
212     VLC_ADD_LDFLAGS([mkv mp4 motion], [-Wl,-framework,IOKit,-framework,CoreFoundation])
213     VLC_ADD_LDFLAGS([libvlc vlc],[-Wl,-undefined,dynamic_lookup])
214     VLC_ADD_LDFLAGS([avcodec avformat access_avio swscale postproc i420_rgb_mmx x264],[-Wl,-read_only_relocs,suppress])
215     VLC_ADD_CFLAGS([motion],[-fconstant-cfstrings])
216     VLC_ADD_LDFLAGS([libvlccore],[-Wl,-framework,CoreFoundation])
217     AC_ARG_ENABLE(macosx-defaults,
218       AS_HELP_STRING([--enable-macosx-defaults],[Build the default configuration on Mac OS X (default enabled)]))
219     if test "x${enable_macosx_defaults}" != "xno"
220     then
221         echo ""
222         echo "Building with Mac OS X defaults:"
223         with_macosx_version_min="10.5"
224         echo "  Assuming --with-macosx-version-min=10.5"
225         with_macosx_sdk="/Developer/SDKs/MacOSX${with_macosx_version_min}.sdk"
226         echo "  Assuming --with-macosx-sdk=/Developer/SDKs/MacOSX${with_macosx_version_min}.sdk"
227         build_dir=`pwd`
228         echo "  Assuming --prefix=${build_dir}/vlc_install_dir"
229         ac_default_prefix="${build_dir}/vlc_install_dir"
230         enable_faad="yes"
231         echo "  Assuming --enable-faad"
232         enable_flac="yes"
233         echo "  Assuming --enable-flac"
234         enable_theora="yes"
235         echo "  Assuming --enable-theora"
236         enable_shout="yes"
237         echo "  Assuming --enable-shout"
238         enable_vcdx="yes"
239         echo "  Assuming --enable-vcdx"
240         enable_caca="yes"
241         echo "  Assuming --enable-caca"
242         enable_ncurses="yes"
243         echo "  Assuming --enable-ncurses"
244         enable_twolame="yes"
245         echo "  Assuming --enable-twolame"
246         enable_realrtsp="yes"
247         echo "  Assuming --enable-realrtsp"
248         enable_libass="yes"
249         echo "  Assuming --enable-libass"
250
251         enable_skins2="no"
252         echo "  Assuming --disable-skins2"
253         enable_xcb="no"
254         echo "  Assuming --disable-xcb"
255     fi
256     dnl
257     dnl  Check for Mac OS X SDK settings
258     dnl
259     AC_ARG_WITH(macosx-sdk,
260        [  --with-macosx-sdk=DIR   compile using the SDK in DIR])
261     if test "${with_macosx_sdk}" != "" ; then
262         CPP="${CPP} -isysroot ${with_macosx_sdk}"
263         CC="${CC} -isysroot ${with_macosx_sdk}"
264         CXX="${CXX} -isysroot ${with_macosx_sdk}"
265         OBJC="${OBJC} -isysroot ${with_macosx_sdk}"
266         LD="${LD} -syslibroot ${with_macosx_sdk}"
267     fi
268     AC_ARG_WITH(macosx-version-min,
269        [  --with-macosx-version-min=VERSION compile for MacOSX VERSION and above])
270     if test "${with_macosx_version_min}" != "" ; then
271         CPP="${CPP} -mmacosx-version-min=${with_macosx_version_min}"
272         CC="${CC} -mmacosx-version-min=${with_macosx_version_min}"
273         CXX="${CXX} -mmacosx-version-min=${with_macosx_version_min}"
274         OBJC="${OBJC} -mmacosx-version-min=${with_macosx_version_min}"
275         LD="${LD} -macosx_version_min=${with_macosx_version_min}"
276         CFLAGS_save="${CFLAGS_save} -DMACOSX_DEPLOYMENT_TARGET=${with_macosx_version_min}"; CFLAGS="${CFLAGS_save}"
277         CXXFLAGS_save="${CXXFLAGS_save} -DMACOSX_DEPLOYMENT_TARGET=${with_macosx_version_min}"; CXXFLAGS="${CXXFLAGS_save}"
278         OBJCFLAGS_save="${OBJCFLAGS_save} -DMACOSX_DEPLOYMENT_TARGET=${with_macosx_version_min}"; OBJCFLAGS="${OBJCFLAGS_save}"
279         MACOSX_DEPLOYMENT_TARGET=${with_macosx_version_min}
280         export MACOSX_DEPLOYMENT_TARGET
281     fi
282     ;;
283   *mingw32* | *cygwin* | *wince* | *mingwce*)
284     AC_CHECK_TOOL(WINDRES, windres, :)
285     AC_CHECK_TOOL(OBJCOPY, objcopy, :)
286
287     case "${host_os}" in
288       *wince* | *mingwce* | *mingw32ce*)
289         SYS=mingwce
290         dnl Sadly CeGCC still needs non-wince macros
291         AC_DEFINE([_WIN32_WINNT], 0x0501, [Define to '0x0500' for Windows 2000 APIs.])
292         ;;
293       *mingw32*)
294         SYS=mingw32
295         AC_DEFINE([_WIN32_WINNT], 0x0501, [Define to '0x0500' for Windows XP APIs.])
296         ;;
297       *cygwin*)
298         dnl Check if we are using the mno-cygwin mode in which case we are
299         dnl actually dealing with a mingw32 compiler.
300         AC_DEFINE([_WIN32_WINNT], 0x0501, [Define to '0x0501' for Windows XP APIs.])
301         AC_EGREP_CPP(yes,
302             [#ifdef WIN32
303              yes
304              #endif],
305             SYS=mingw32, AC_MSG_ERROR([VLC requires -mno-cygwin]))
306         ;;
307     esac
308
309     if test "${SYS}" = "mingw32"; then
310         # add ws2_32 for closesocket, select, recv
311         VLC_ADD_LIBS([libvlccore],[-lws2_32 -lnetapi32 -lwinmm])
312         VLC_ADD_LDFLAGS([vlc],[-mwindows])
313         VLC_ADD_LIBS([win32text],[-lgdi32])
314         VLC_ADD_LIBS([cdda vcdx sdl_image aout_sdl vout_sdl],[-lwinmm])
315         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])
316         VLC_ADD_LIBS([filesystem], [-lshlwapi])
317         dnl
318         dnl DEP and ASLR options
319         dnl
320         AC_ARG_ENABLE(peflags,
321           [  --enable-peflags        peflags use (default enabled on Windows)])
322         if test "${enable_peflags}" != "no" ; then
323           AC_CHECK_TOOL(PEFLAGS, peflags, :)
324         fi
325         AC_CHECK_PROGS(U2D, [unix2dos todos], unix2dos)
326         ac_default_prefix="`pwd`/_win32"
327         DESTDIR="`pwd`/_win32/"
328
329         dnl
330         dnl NSIS Installer prefix and WIN64
331         dnl
332         case "${host}" in
333             amd64*|i686-w64*|x86_64*)
334                 HAVE_WIN64="1"
335                 PROGRAMFILES="PROGRAMFILES64"
336             ;;
337             *)
338                 PROGRAMFILES="PROGRAMFILES"
339             ;;
340         esac
341         AC_SUBST(PROGRAMFILES)
342
343     fi
344     if test "${SYS}" = "mingwce"; then
345         # add ws2 for closesocket, select, recv
346         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])
347         VLC_ADD_LIBS([libvlccore],[-lmmtimer])
348         AC_CHECK_PROGS(U2D, [unix2dos todos], unix2dos)
349         ac_default_prefix="`pwd`/_wince"
350         DESTDIR="`pwd`/_wince/"
351     fi
352     ;;
353   *nto*)
354     SYS=nto
355     ;;
356   solaris*)
357     SYS=solaris
358     ;;
359   hpux*)
360     SYS=hpux
361     ;;
362   *)
363     SYS="${host_os}"
364     ;;
365 esac
366 AM_CONDITIONAL(HAVE_DARWIN, test "${SYS}" = "darwin")
367 AM_CONDITIONAL(HAVE_LINUX, [test "${SYS}" = "linux"])
368 AM_CONDITIONAL(HAVE_WIN32, test "${SYS}" = "mingw32")
369 AM_CONDITIONAL(HAVE_WIN64, test "${HAVE_WIN64}" = "1")
370 AM_CONDITIONAL(HAVE_WINCE, test "${SYS}" = "mingwce")
371 AM_CONDITIONAL(USE_PEFLAGS, [test "${enable_peflags}" = "yes"])
372
373 dnl
374 dnl Sadly autoconf doesn't think about testing foo.exe when ask to test
375 dnl for program foo on win32
376
377 case "${build_os}" in
378     cygwin|msys)
379         ac_executable_extensions=".exe"
380     ;;
381     *)
382     ;;
383 esac
384
385 dnl
386 dnl  Libtool
387 dnl  It's very bad, but our former custom system was worst
388 dnl  -- Courmisch
389 dnl
390
391 dnl override platform specific check for dependent libraries
392 dnl otherwise libtool linking of shared libraries will
393 dnl fail on anything other than pass_all.
394 AC_CACHE_VAL(lt_cv_deplibs_check_method,
395     [lt_cv_deplibs_check_method=pass_all])
396
397 AC_DISABLE_STATIC
398 dnl AC_DISABLE_FAST_INSTALL
399 AC_LIBTOOL_DLOPEN
400 AC_LIBTOOL_WIN32_DLL
401 m4_undefine([AC_PROG_F77])
402 m4_defun([AC_PROG_F77],[])
403 AC_PROG_LIBTOOL
404
405 m4_undefine([AC_DEPLIBS_CHECK_METHOD])
406 m4_defun([AC_DEPLIBS_CHECK_METHOD],[])
407
408 lt_cv_deplibs_check_method=pass_all
409
410 AS_IF([test "${enable_shared}" = "no"], [
411   AC_MSG_ERROR([VLC is based on plugins. Shared libraries cannot be disabled.])
412 ])
413
414 dnl
415 dnl Gettext stuff
416 dnl
417 AM_GNU_GETTEXT_VERSION([0.18.1])
418 AM_GNU_GETTEXT([external])
419 VLC_ADD_LIBS([libvlccore vlc], [${LTLIBINTL}])
420
421 dnl
422 dnl Iconv stuff
423 dnl
424 AM_ICONV
425 VLC_ADD_CFLAGS([libvlccore],[${INCICONV}])
426 VLC_ADD_LIBS([libvlccore],[${LTLIBICONV}])
427
428 dnl Check for broken versions of mingw-runtime compatability library
429 AS_IF([test "${SYS}" = "mingw32" -o "${SYS}" = "mingwce"], [
430     AC_MSG_CHECKING(for broken mingw-runtime)
431     AC_PREPROC_IFELSE([
432 #include <_mingw.h>
433 #if (__MINGW32_MAJOR_VERSION == 3) && (__MINGW32_MINOR_VERSION < 15)
434 #ifndef __MINGW64_VERSION_MAJOR
435 # error Attempting to use mingw-runtime with broken vsnprintf support
436 #endif
437 #endif
438     ], [
439         AC_MSG_RESULT([ok])
440     ], [
441         AC_MSG_RESULT([present])
442         AC_MSG_ERROR([LibVLC requires mingw-runtime version 3.15 or higher!])
443     ])
444     dnl force use of mingw provided c99 *printf over msvcrt
445     CPPFLAGS="${CPPFLAGS} -D__USE_MINGW_ANSI_STDIO=1"
446     CPPFLAGS_save="${CPPFLAGS_save} -D__USE_MINGW_ANSI_STDIO=1"
447 ])
448
449 dnl Check for the need to include the mingwex lib for mingw32
450 if test "${SYS}" = "mingw32" ; then
451     AC_CHECK_LIB(mingwex,opendir,
452         AC_CHECK_LIB(mingw32,opendir,,
453             [VLC_ADD_LIBS([libvlccore],[-lmingwex])])
454     )
455 fi
456
457 dnl Check for fnative-struct or mms-bitfields support for mingw32
458 if test "${SYS}" = "mingw32" ; then
459     AC_CACHE_CHECK([if \$CC accepts -mms-bitfields],
460         [ac_cv_c_mms_bitfields],
461         [CFLAGS="${CFLAGS_save} -mms-bitfields"
462          AC_TRY_COMPILE([],,ac_cv_c_mms_bitfields=yes, ac_cv_c_mms_bitfields=no)])
463     if test "${ac_cv_c_mms_bitfields}" != "no"; then
464         CFLAGS_save="${CFLAGS_save} -mms-bitfields";
465         CXXFLAGS_save="${CXXFLAGS_save} -mms-bitfields";
466     else
467         AC_CACHE_CHECK([if \$CC accepts -fnative-struct],
468             [ac_cv_c_fnative_struct],
469             [CFLAGS="${CFLAGS_save} -fnative-struct"
470              AC_TRY_COMPILE([],,ac_cv_c_fnative_struct=yes, ac_cv_c_fnative_struct=no)])
471         if test "${ac_cv_c_fnative_struct}" != "no"; then
472             CFLAGS_save="${CFLAGS_save} -fnative-struct";
473             CXXFLAGS_save="${CXXFLAGS_save} -fnative-struct";
474         fi
475     fi
476
477     CFLAGS="${CFLAGS_save}"; CXXFLAGS="${CXXFLAGS_save}"
478 fi
479
480 dnl Check for fvtable-thunks support for mingw32
481 if test "${SYS}" = "mingw32" -a "${CXX}" != "" ; then
482     AC_LANG_PUSH(C++)
483     AC_CACHE_CHECK([if \$CXX accepts -fvtable-thunks],
484         [ac_cv_cxx_fvtable_thunks],
485         [CXXFLAGS="${CXXFLAGS_save} -Wall -Werror -fvtable-thunks"
486          AC_TRY_COMPILE([],,ac_cv_cxx_fvtable_thunks=yes,
487                         ac_cv_cxx_fvtable_thunks=no)])
488     if test "${ac_cv_cxx_fvtable_thunks}" = "yes"; then
489         CXXFLAGS_mingw32_special="-fvtable-thunks"
490     fi
491
492     CXXFLAGS_save="${CXXFLAGS_save} ${CXXFLAGS_mingw32_special}"; CXXFLAGS="${CXXFLAGS_save}"
493     AC_LANG_POP(C++)
494 fi
495
496 dnl
497 dnl Buggy glibc prevention. Purposedly not cached.
498 dnl See sourceware.org bugs 5058 and 5443.
499 dnl Ubuntu alone has 20 bug numbers for this...
500 dnl
501 AC_MSG_CHECKING(for buggy GNU/libc versions)
502 AC_PREPROC_IFELSE([
503 #include <limits.h>
504 #if defined (__GLIBC__) && (__GLIBC__ == 2) \
505   && (__GLIBC_MINOR__ >= 5) && (__GLIBC_MINOR__ <= 7)
506 # error GNU/libc with dcgettext killer bug!
507 #endif
508 ], [
509   AC_MSG_RESULT([not present])
510 ], [
511   AC_MSG_RESULT([found])
512   AS_IF([test "x${enable_nls}" != "xno"], [
513     AC_MSG_ERROR([Buggy GNU/libc (version 2.5 - 2.7) present. VLC would crash; there is no viable
514 work-around for this. Check with your distribution vendor on how to update the
515 glibc run-time. Alternatively, build with --disable-nls.])
516   ], [
517     AC_DEFINE(DISABLE_BUGGY_GLIBC_CHECK, 1, [Disables runtime check for buggy glibc.])
518   ])
519 ])
520
521 dnl Plugin compilation stuff
522
523 VLC_LIBRARY_SUFFIX
524
525 dnl The -DSYS_FOO flag
526 CPPFLAGS_save="${CPPFLAGS_save} -DSYS_`echo ${SYS} | sed -e 's/-.*//' | tr 'abcdefghijklmnopqrstuvwxyz.' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ_'`"; CPPFLAGS="${CPPFLAGS_save}"
527
528 dnl Check for system libs needed
529 need_libc=false
530
531 dnl Check for usual libc functions
532 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])
533 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])
534 AC_CHECK_FUNCS(fdatasync,,
535   [AC_DEFINE(fdatasync, fsync, [Alias fdatasync() to fsync() if missing.])
536 ])
537
538 dnl Check for non-standard system calls
539 AC_CHECK_FUNCS([accept4 dup3 eventfd vmsplice sched_getaffinity])
540
541 AH_BOTTOM([#include <vlc_fixups.h>])
542
543 AC_CHECK_FUNCS(mmap, [VLC_ADD_PLUGIN([access_mmap])])
544
545 SOCKET_LIBS=""
546 AC_CHECK_FUNCS(connect,,[
547   AC_CHECK_LIB(socket,connect,[
548     VLC_ADD_LIBS([libvlccore cdda],-lsocket)
549     SOCKET_LIBS="-lsocket"
550   ])
551 ])
552 AC_SUBST(SOCKET_LIBS)
553
554 AC_CHECK_FUNCS(send,,[
555   AC_CHECK_LIB(socket,send,[
556     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])
557   ])
558 ])
559
560
561 dnl Check for socklen_t
562 AH_TEMPLATE(socklen_t, [Define to `int' if <sys/socket.h> does not define.])
563 AC_CACHE_CHECK([for socklen_t in sys/socket.h],
564 ac_cv_type_socklen_t,
565 [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([
566 [#include <sys/types.h>
567 #ifdef WIN32
568 # include <winsock2.h>
569 # include <ws2tcpip.h>
570 #else
571 # include <sys/socket.h>
572 #endif]], [[socklen_t len; len = 0;]])],
573 ac_cv_type_socklen_t=yes,
574 ac_cv_type_socklen_t=no)])
575 AS_IF([test "$ac_cv_type_socklen_t" = no],
576  [AC_DEFINE(socklen_t, int)])
577
578 dnl Check for struct sockaddr_storage
579 AH_TEMPLATE(sockaddr_storage, [Define to `sockaddr' if <sys/socket.h> does not define.])
580 AH_TEMPLATE(ss_family, [Define to `sa_family' if <sys/socket.h> does not define.])
581 AC_CACHE_CHECK([for struct sockaddr_storage], ac_cv_struct_sockaddr_storage,
582   [AC_TRY_COMPILE(
583     [#include <sys/types.h>
584      #if defined( UNDER_CE )
585      # include <winsock2.h>
586      #elif defined( WIN32 )
587      # include <winsock2.h>
588      #else
589      # include <sys/socket.h>
590      #endif], [struct sockaddr_storage addr;],
591      ac_cv_struct_sockaddr_storage=yes,
592      ac_cv_struct_sockaddr_storage=no)])
593 AS_IF([test "${ac_cv_struct_sockaddr_storage}" = no], [
594   AC_DEFINE(sockaddr_storage, sockaddr)
595   AC_DEFINE(ss_family, sa_family)
596 ])
597
598 dnl getaddrinfo, getnameinfo and gai_strerror check
599 dnl  -lnsl and -lsocket are needed on Solaris;
600 dnl  we purposedly make the test fail on Windows
601 LIBS_save="${LIBS}"
602 AC_SEARCH_LIBS([getaddrinfo], [nsl],,, [${SOCKET_LIBS}])
603 LIBS="${LIBS_save}"
604
605 dnl Check for va_copy
606 AC_CACHE_CHECK([for va_copy], ac_cv_c_va_copy,
607   AC_TRY_LINK(
608     [#include <stdarg.h>],
609     [va_list ap1, ap2; va_copy(ap1,ap2);],
610     [ac_cv_c_va_copy="yes"],
611     [ac_cv_c_va_copy="no"]))
612 if test "${ac_cv_c_va_copy}" = "yes"; then
613   AC_DEFINE(HAVE_VA_COPY, 1, [Define if <stdarg.h> defines va_copy.])
614 fi
615 AC_CACHE_CHECK([for __va_copy], ac_cv_c___va_copy,
616   AC_TRY_LINK(
617     [#include <stdarg.h>],
618     [va_list ap1, ap2; __va_copy(ap1,ap2);],
619     [ac_cv_c___va_copy="yes"],
620     [ac_cv_c___va_copy="no"]))
621 if test "${ac_cv_c___va_copy}" = "yes"; then
622   AC_DEFINE(HAVE___VA_COPY, 1, [Define if <stdarg.h> defines __va_copy.])
623 fi
624
625 AC_CHECK_FUNCS(inet_aton,,[
626   AC_CHECK_LIB(resolv,inet_aton,[
627     VLC_ADD_LIBS([libvlccore],[-lresolv])
628   ])
629 ])
630
631 dnl FreeBSD has a gnugetopt library for this:
632 GNUGETOPT_LIBS=""
633 AC_CHECK_FUNC(getopt_long,, [
634   AC_CHECK_LIB([gnugetopt],[getopt_long], [
635     GNUGETOPT_LIBS="-lgnugetopt"
636   ])
637 ])
638 AC_SUBST(GNUGETOPT_LIBS)
639
640 if test "${SYS}" != "mingw32" -a "${SYS}" != "mingwce"; then
641 AC_CHECK_LIB(m,cos,[
642   VLC_ADD_LIBS([adjust wave ripple psychedelic gradient a52tofloat32 dtstofloat32 x264 goom visual panoramix rotate noise grain scene kate flac lua chorus_flanger],[-lm])
643 ])
644 AC_CHECK_LIB(m,pow,[
645   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])
646 ])
647 AC_CHECK_LIB(m,sqrt,[
648   VLC_ADD_LIBS([compressor headphone_channel_mixer normvol audiobargraph_a speex mono colorthres extract ball],[-lm])
649 ])
650 AC_CHECK_LIB(m,ceil,[
651   VLC_ADD_LIBS([access_imem hotkeys mosaic swscale_omap],[-lm])
652 ])
653 AC_CHECK_LIB(m,exp,[
654   VLC_ADD_LIBS([gaussianblur],[-lm])
655 ])
656 AC_CHECK_LIB(m,round,[
657   VLC_ADD_LIBS([dbus],[-lm])
658 ])
659 AC_CHECK_LIB(m,sqrtf,[
660   VLC_ADD_LIBS([x264],[-lm])
661 ])
662 fi # end "${SYS}" != "mingw32" -a "${SYS}" != "mingwce"
663
664 AC_CHECK_LIB(m,lrintf, [
665   AC_DEFINE(HAVE_LRINTF, 1, [Define to 1 if you have the lrintf function])
666   VLC_ADD_LIBS([skins2],[-lm])
667 ])
668
669 dnl Check for dynamic plugins
670 ac_cv_have_plugins=no
671
672 # HP-UX style
673 if test "${ac_cv_have_plugins}" = "no"; then
674   AC_CHECK_HEADERS(dl.h)
675   ac_cv_my_have_shl_load=no
676   AC_CHECK_FUNC(shl_load,
677    [ac_cv_my_have_shl_load=yes,
678     AC_CHECK_LIB(dld, shl_load,
679      [ac_cv_my_have_shl_load=yes
680       VLC_ADD_LIBS([libvlccore],[-ldld])])])
681   if test "${ac_cv_my_have_shl_load}" = "yes"; then
682     AC_DEFINE(HAVE_DL_SHL_LOAD, 1, [Define if you have the shl_load API])
683     ac_cv_have_plugins=yes
684   fi
685 fi
686
687 # Win32 style
688 if test "${ac_cv_have_plugins}" = "no"; then
689   if test "${SYS}" = "mingw32" ; then
690     AC_CHECK_LIB(kernel32, main,
691      [VLC_ADD_LIBS([libvlccore],[-lkernel32])
692       AC_DEFINE(HAVE_DL_WINDOWS, 1, [Define if you have Windows' LoadLibrary])
693       ac_cv_have_plugins=yes])
694   fi
695 fi
696
697 # WinCE style
698 if test "${ac_cv_have_plugins}" = "no"; then
699   if test "${SYS}" = "mingwce"; then
700     AC_DEFINE(HAVE_DL_WINDOWS, 1, [Define if you have Windows' LoadLibrary])
701     ac_cv_have_plugins=yes
702   fi
703 fi
704
705 # Only test for dlopen() if the others didn't work
706 LIBDL=""
707 if test "${ac_cv_have_plugins}" = "no" -o "${SYS}" = "darwin"; then
708   AC_CHECK_HEADERS(dlfcn.h sys/dl.h)
709   ac_cv_my_have_dlopen=no
710   AC_CHECK_FUNC(dlopen, [
711     ac_cv_my_have_dlopen=yes
712   ], [
713     AC_CHECK_LIB(dl, dlopen, [
714       ac_cv_my_have_dlopen=yes
715       LIBDL="-ldl"
716     ], [
717       AC_CHECK_LIB(svld, dlopen, [
718         ac_cv_my_have_dlopen=yes
719         LIBDL="-lsvld"
720       ])
721     ])
722   ])
723   if test "${ac_cv_my_have_dlopen}" = "yes"; then
724     AC_DEFINE(HAVE_DL_DLOPEN, 1, [Define if you have the dlopen API])
725     ac_cv_have_plugins=yes
726     VLC_ADD_LIBS([libvlccore realvideo lua],[$LIBDL])
727   fi
728 fi
729 AC_SUBST(LIBDL)
730
731 if test "${SYS}" != "mingw32" -a "${SYS}" != "mingwce"; then
732   dnl Check for pthreads - borrowed from XMMS
733   THREAD_LIB=error
734   if test "${THREAD_LIB}" = "error"; then
735     AC_CHECK_LIB(pthread,main,THREAD_LIB="-lpthread")
736   fi
737   if test "${THREAD_LIB}" = "error"; then
738     AC_CHECK_LIB(pthreads,main,THREAD_LIB="-lpthreads")
739   fi
740   if test "${THREAD_LIB}" = "error"; then
741     AC_CHECK_LIB(c_r,main,THREAD_LIB="-lc_r")
742   fi
743   if test "${THREAD_LIB}" = "error"; then
744     AC_CHECK_FUNCS(pthread_mutex_lock)
745     THREAD_LIB=""
746   fi
747
748   VLC_ADD_LIBS([libvlccore libvlc vlc plugin],[${THREAD_LIB}])
749
750   AC_CHECK_LIB(rt, clock_nanosleep, [
751     VLC_ADD_LIBS([libvlccore],[-lrt])
752     AC_DEFINE(HAVE_CLOCK_NANOSLEEP, 1, [Define to 1 if you have clock_nanosleep.])
753   ], [
754     dnl HP/UX port
755     AC_CHECK_LIB(rt,sem_init, [VLC_ADD_LIBS([libvlccore],[-lrt])])
756   ])
757
758   have_nanosleep=false
759   AC_CHECK_FUNCS(nanosleep,have_nanosleep=:,[
760     AC_CHECK_LIB(rt,nanosleep,
761       [VLC_ADD_LIBS([libvlccore],[-lrt]) have_nanosleep=:],
762       [AC_CHECK_LIB(posix4,nanosleep,
763           [VLC_ADD_LIBS([libvlccore],[-lposix4]) have_nanosleep=:])]
764     )
765   ])
766   if ${have_nanosleep}; then
767     AC_DEFINE(HAVE_NANOSLEEP, 1, [Define if nanosleep is available.])
768   fi
769 fi # end "${SYS}" != "mingw32" -a "${SYS}" != "mingwce"
770
771 dnl Check for misc headers
772 AC_MSG_CHECKING(for strncasecmp in strings.h)
773 AC_EGREP_HEADER(strncasecmp,strings.h,[
774   AC_MSG_RESULT(yes)
775   AC_DEFINE(STRNCASECMP_IN_STRINGS_H, 1,
776             Define if <strings.h> defines strncasecmp.)],[
777   AC_MSG_RESULT(no)])
778
779 dnl Check for headers
780 AC_CHECK_HEADERS(getopt.h strings.h locale.h xlocale.h)
781 AC_CHECK_HEADERS(fcntl.h sys/time.h sys/ioctl.h sys/stat.h)
782 AC_CHECK_HEADERS([arpa/inet.h netinet/in.h netinet/udplite.h sys/eventfd.h])
783 AC_CHECK_HEADERS([net/if.h], [], [],
784   [
785     #include <sys/types.h>
786     #include <sys/socket.h>
787   ])
788 AC_CHECK_HEADERS([sys/mount.h], [], [],
789   [
790     #include <sys/param.h>
791   ])
792
793 if test "${SYS}" != "mingw32" -a "${SYS}" != "mingwce"; then
794   AC_CHECK_HEADERS(machine/param.h sys/shm.h)
795   AC_CHECK_HEADERS([linux/version.h linux/dccp.h scsi/scsi.h linux/magic.h])
796   AC_CHECK_HEADERS(syslog.h)
797 fi # end "${SYS}" != "mingw32" -a "${SYS}" != "mingwce"
798
799 dnl LP64 and LLP64 architectures had better define ssize_t by themselves...
800 AH_TEMPLATE(ssize_t, [Define to `int' if <stddef.h> does not define.])
801 AC_CHECK_TYPE(ssize_t,, [
802   AC_DEFINE(ssize_t, int)
803 ])
804
805 dnl Check for poll
806 AC_SEARCH_LIBS(poll, [poll], [AC_DEFINE(HAVE_POLL, 1, [Define to 1 if the OS is usabl... err, has poll().])], [
807 if test ${SYS} != "mingw32" -a ${SYS} != "mingwce"
808 then
809     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])
810 fi
811 ])
812
813 dnl Mac OS X and other OSes don't have declaration for nanosleep
814 if test "${SYS}" != "mingw32" -a "${SYS}" != "mingwce"; then
815   AC_MSG_CHECKING(for nanosleep in time.h)
816   AC_EGREP_HEADER(nanosleep,time.h,[
817     AC_MSG_RESULT(yes)
818     AC_DEFINE(HAVE_DECL_NANOSLEEP, 1,
819               Define if <time.h> defines nanosleep.)
820   ],[
821     AC_MSG_RESULT(no)
822   ])
823 fi # end "${SYS}" != "mingw32" -a "${SYS}" != "mingwce"
824
825 dnl Make sure we have timespecs
826 AC_MSG_CHECKING(for timespec in sys/time.h)
827 AC_EGREP_HEADER(timespec,sys/time.h,[
828   AC_MSG_RESULT(yes)
829   AC_DEFINE(HAVE_STRUCT_TIMESPEC, 1,
830             Define if <sys/time.h> defines struct timespec.)
831 ],[
832   AC_MSG_RESULT(no)
833 ])
834
835 dnl Check for threads library
836 if test "${SYS}" != "mingw32" -a "${SYS}" != "mingwce"; then
837   AC_CHECK_HEADERS(pthread.h)
838 fi # end "${SYS}" != "mingw32" -a "${SYS}" != "mingwce"
839
840 dnl It seems that autoconf detects pkg-config only during the first
841 dnl PKG_CHECK_MODULES from configure.ac - which makes sense. But in our case,
842 dnl it is nested within a conditional block, so it was not working right.
843 dnl Make PKG_CONFIG_PATH precious so that it appears in the help and get saved
844 AC_ARG_VAR(PKG_CONFIG_PATH,
845        [Paths where to find .pc not at the default location])
846 PKG_PROG_PKG_CONFIG()
847
848 dnl On some OS we need static linking 
849 AS_IF([test -n "${PKG_CONFIG}" ],[
850     AS_IF([test "${SYS}" = "mingw32" -o "${SYS}" = "mingwce" -o "${SYS}" = "darwin" ],[
851         PKG_CONFIG="${PKG_CONFIG} --static"
852     ])
853 ])
854
855
856 dnl
857 dnl Check for zlib.h and -lz along with system -lminizip if available
858 dnl
859 AC_CHECK_HEADERS(zlib.h, [ have_zlib=yes ], [ have_zlib=no ])
860 AM_CONDITIONAL(HAVE_ZLIB, [ test "${have_zlib}" = "yes" ])
861 if test "${have_zlib}" = "yes"
862 then
863   VLC_ADD_LIBS([access_http mp4 skins2 sap mkv unzip zip],[-lz])
864   PKG_CHECK_MODULES([MINIZIP], [minizip] , [ have_minizip=yes ], [
865     AC_CHECK_HEADERS([unzip.h], [ 
866       have_minizip=yes
867       MINIZIP_LIBS="-lminizip -lz"
868     ], [
869       have_minizip=no
870       MINIZIP_CFLAGS="-I\\\${top_srcdir}/libs/unzip"
871       MINIZIP_LIBS="\\\${top_builddir}/libs/unzip/libunzip.la"
872     ])
873   ])
874   VLC_ADD_CPPFLAGS([skins2],[$MINIZIP_CFLAGS])
875   VLC_ADD_CFLAGS([zip],[$MINIZIP_CFLAGS])
876   VLC_ADD_LIBS([skins2 zip],[$MINIZIP_LIBS])
877   VLC_ADD_PLUGIN([unzip zip])
878 fi
879 AM_CONDITIONAL(HAVE_MINIZIP, [ test "${have_minizip}" = "yes" ])
880
881
882 dnl Manual switch for UTF-8
883 AC_ARG_ENABLE(non-utf8,
884   [  --enable-non-utf8       Legacy non-UTF-8 systems support (default disabled)],, [
885   AS_IF([test "${SYS}" = "mingw32" -o "${SYS}" = "mingwce"], [
886     enable_non_utf8="no"
887   ])
888 ])
889 AS_IF([test "${enable_non_utf8}" != "no"], [
890   AC_DEFINE([ASSUME_UTF8], [1],
891             [Define to 1 if the operating system uses UTF-8 internally])
892 ])
893
894
895 dnl Check for dbus
896 AC_ARG_ENABLE(dbus,
897   [  --enable-dbus           Linux D-BUS message bus system (default enabled)])
898 case "${SYS}" in
899     linux*|*bsd*)
900 if test "${enable_dbus}" != "no" -a "${SYS}" != "mingw32" -a "${SYS}" != "mingwce"
901 then
902   dnl api stable dbus
903   PKG_CHECK_MODULES(DBUS, dbus-1 >= 1.0.0,
904     [ AC_DEFINE( HAVE_DBUS, 1, [Define if you have the D-BUS library] )
905       VLC_ADD_LIBS([libvlccore],[$DBUS_LIBS])
906       VLC_ADD_CFLAGS([libvlccore],[$DBUS_CFLAGS])
907       dnl Check for dbus control interface
908         AC_ARG_ENABLE(dbus-control, [  --disable-dbus-control  D-BUS control interface (default enabled)])
909         if test "${enable_dbus_control}" != "no"
910         then
911           VLC_ADD_PLUGIN([dbus])
912           VLC_ADD_LIBS([dbus],[$DBUS_LIBS])
913           VLC_ADD_CFLAGS([dbus],[$DBUS_CFLAGS])
914         fi
915       dnl Check for Telepathy
916         AC_ARG_ENABLE(telepathy,
917           AS_HELP_STRING([--enable-telepathy],[Telepathy Presence plugin through DBus(default enabled)]))
918         if test "${enable_telepathy}" != "no"; then
919           VLC_ADD_PLUGIN([telepathy])
920           VLC_ADD_LIBS([telepathy],[$DBUS_LIBS])
921           VLC_ADD_CFLAGS([telepathy],[$DBUS_CFLAGS])
922         fi
923         dnl Power Management Inhibiter
924         VLC_ADD_PLUGIN([inhibit])
925         VLC_ADD_LIBS([inhibit],[$DBUS_LIBS])
926         VLC_ADD_CFLAGS([inhibit],[$DBUS_CFLAGS])
927     ],
928     [AC_MSG_ERROR([Couldn't find DBus >= 1.0.0, install libdbus-dev ?])]
929   )
930 fi
931 ;;
932 esac
933
934 dnl Check for ntohl, etc.
935 AC_CACHE_CHECK([for ntohl in sys/param.h],
936     [ac_cv_c_ntohl_sys_param_h],
937     [CFLAGS="${CFLAGS_save} -Wall -Werror"
938      AC_TRY_COMPILE([#include <sys/param.h>],
939         [int meuh; ntohl(meuh);],
940         ac_cv_c_ntohl_sys_param_h=yes, ac_cv_c_ntohl_sys_param_h=no)])
941 if test "${ac_cv_c_ntohl_sys_param_h}" != "no"; then
942     AC_DEFINE(NTOHL_IN_SYS_PARAM_H, 1, Define if <sys/param.h> defines ntohl.)
943 fi
944 CFLAGS="${CFLAGS_save}"
945
946 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])
947 RDC_PROG_CC_FLAGS([-pipe])
948
949 dnl Check for various optimization flags
950 AC_CACHE_CHECK([if \$CC accepts -Os],
951     [ac_cv_c_os],
952     [CFLAGS="${CFLAGS_save} -Os"
953      AC_TRY_COMPILE([],,ac_cv_c_os=yes, ac_cv_c_os=no)])
954 if test "${ac_cv_c_os}" != "no"; then
955     CFLAGS_OPTIM_SIZE="${CFLAGS_OPTIM_SIZE} -Os"
956 else
957     AC_CACHE_CHECK([if \$CC accepts -O],
958         [ac_cv_c_o],
959         [CFLAGS="${CFLAGS_save} -O"
960          AC_TRY_COMPILE([],,ac_cv_c_o=yes, ac_cv_c_o=no)])
961     if test "${ac_cv_c_o}" != "no"; then
962         if test "${ac_cv_c_o3}" = "no"; then
963             CFLAGS_OPTIM_SIZE="${CFLAGS_OPTIM_SIZE} -O"
964         fi
965     fi
966 fi
967
968 AC_CACHE_CHECK([if \$CC accepts -O4],
969     [ac_cv_c_o4],
970     [CFLAGS="${CFLAGS_save} -O4"
971      AC_TRY_COMPILE([],,ac_cv_c_o4=yes, ac_cv_c_o4=no)])
972 if test "${ac_cv_c_o4}" != "no" -a "x${enable_debug}" = "xno"; then
973     CFLAGS_OPTIM_SPEED="${CFLAGS_OPTIM_SPEED} -O4"
974 else
975     AC_CACHE_CHECK([if \$CC accepts -O3],
976         [ac_cv_c_o3],
977         [CFLAGS="${CFLAGS_save} -O3"
978          AC_TRY_COMPILE([],,ac_cv_c_o3=yes, ac_cv_c_o3=no)])
979     if test "${ac_cv_c_o3}" != "no" -a "x${enable_debug}" = "xno"; then
980         CFLAGS_OPTIM_SPEED="${CFLAGS_OPTIM_SPEED} -O3"
981     else
982         AC_CACHE_CHECK([if \$CC accepts -O2],
983             [ac_cv_c_o2],
984             [CFLAGS="${CFLAGS_save} -O2"
985              AC_TRY_COMPILE([],,ac_cv_c_o2=yes, ac_cv_c_o2=no)])
986         if test "${ac_cv_c_o2}" != "no"; then
987             CFLAGS_OPTIM_SPEED="${CFLAGS_OPTIM_SPEED} -O2"
988         else
989             AC_CACHE_CHECK([if \$CC accepts -O],
990                 [ac_cv_c_o],
991                 [CFLAGS="${CFLAGS_save} -O"
992                  AC_TRY_COMPILE([],,ac_cv_c_o=yes, ac_cv_c_o=no)])
993             if test "${ac_cv_c_o}" != "no"; then
994                 CFLAGS_OPTIM_SPEED="${CFLAGS_OPTIM_SPEED} -O"
995             fi
996         fi
997     fi
998 fi
999
1000 AC_CACHE_CHECK([if \$CC accepts -O0],
1001     [ac_cv_c_o0],
1002     [CFLAGS="${CFLAGS_save} -O0"
1003      AC_TRY_COMPILE([],,ac_cv_c_o0=yes, ac_cv_c_o0=no)])
1004 if test "${ac_cv_c_o0}" != "no"; then
1005     CFLAGS_NOOPTIM="${CFLAGS_NOOPTIM} -O0"
1006 fi
1007
1008 dnl Check for -ffast-math
1009 AC_CACHE_CHECK([if \$CC accepts -ffast-math],
1010     [ac_cv_c_fast_math],
1011     [CFLAGS="${CFLAGS_save} -ffast-math"
1012      AC_TRY_COMPILE([],,ac_cv_c_fast_math=yes, ac_cv_c_fast_math=no)])
1013 if test "${ac_cv_c_fast_math}" != "no"; then
1014     CFLAGS_OPTIM_SPEED="${CFLAGS_OPTIM_SPEED} -ffast-math"
1015 fi
1016
1017 dnl Check for -funroll-loops
1018 AC_CACHE_CHECK([if \$CC accepts -funroll-loops],
1019     [ac_cv_c_unroll_loops],
1020     [CFLAGS="${CFLAGS_save} -funroll-loops"
1021      AC_TRY_COMPILE([],,ac_cv_c_unroll_loops=yes, ac_cv_c_unroll_loops=no)])
1022 if test "${ac_cv_c_unroll_loops}" != "no"; then
1023     CFLAGS_OPTIM_SPEED="${CFLAGS_OPTIM_SPEED} -funroll-loops"
1024 fi
1025
1026 dnl Check for -fomit-frame-pointer
1027 AC_CACHE_CHECK([if \$CC accepts -fomit-frame-pointer],
1028     [ac_cv_c_omit_frame_pointer],
1029     [CFLAGS="${CFLAGS_save} -fomit-frame-pointer"
1030      AC_TRY_COMPILE([],,ac_cv_c_omit_frame_pointer=yes, ac_cv_c_omit_frame_pointer=no)])
1031 if test "${ac_cv_c_omit_frame_pointer}" != "no"; then
1032  if test "${SYS}" != "darwin"; then
1033     CFLAGS_OPTIM_NODEBUG="${CFLAGS_OPTIM_NODEBUG} -fomit-frame-pointer"
1034  else
1035     dnl On darwin we explicitely disable it.
1036     CFLAGS_OPTIM_NODEBUG="${CFLAGS_OPTIM_NODEBUG} -fno-omit-frame-pointer"
1037  fi
1038 fi
1039
1040 dnl Check for Darwin plugin linking flags
1041 AC_CACHE_CHECK([if \$CC accepts -bundle -undefined error],
1042     [ac_cv_ld_darwin],
1043     [CFLAGS="${CFLAGS_save} -bundle -undefined error"
1044      AC_TRY_COMPILE([],,ac_cv_ld_darwin=yes, ac_cv_ld_darwin=no)])
1045 if test "${ac_cv_ld_darwin}" != "no"; then
1046     VLC_ADD_LDFLAGS([plugin],[-bundle -undefined error])
1047 fi
1048
1049 dnl Checks for __attribute__(aligned()) directive
1050 AC_CACHE_CHECK([__attribute__ ((aligned ())) support],
1051     [ac_cv_c_attribute_aligned],
1052     [ac_cv_c_attribute_aligned=0
1053         CFLAGS="${CFLAGS_save} -Werror"
1054     for ac_cv_c_attr_align_try in 2 4 8 16 32 64; do
1055         AC_TRY_COMPILE([],
1056         [static char c __attribute__ ((aligned(${ac_cv_c_attr_align_try}))) = 0; return c;],
1057         [ac_cv_c_attribute_aligned="${ac_cv_c_attr_align_try}"])
1058     done
1059         CFLAGS="${CFLAGS_save}"])
1060 if test "${ac_cv_c_attribute_aligned}" != "0"; then
1061     AC_DEFINE_UNQUOTED([ATTRIBUTE_ALIGNED_MAX],
1062         [${ac_cv_c_attribute_aligned}],[Maximum supported data alignment])
1063 fi
1064
1065 dnl Check for __attribute__((packed))
1066 AC_CACHE_CHECK([for __attribute__((packed))],
1067   [ac_cv_c_attribute_packed],
1068   [ac_cv_c_attribute_packed=no
1069    AC_TRY_COMPILE(, [struct __attribute__((__packed__)) foo { int a; } b; (void)b;],
1070                     [ac_cv_c_attribute_packed=yes])])
1071 if test "${ac_cv_c_attribute_packed}" != "no"; then
1072   AC_DEFINE(HAVE_ATTRIBUTE_PACKED, 1, Support for __attribute__((packed)) for structs)
1073 fi
1074
1075 dnl
1076 dnl  Check the CPU
1077 dnl
1078 case "${host_cpu}" in
1079   "")
1080     ARCH=unknown
1081     ;;
1082   *)
1083     ARCH="${host_cpu}"
1084     ;;
1085 esac
1086
1087 dnl Check for backtrace() support
1088 AC_CHECK_HEADERS(execinfo.h)
1089 AC_CHECK_FUNCS(backtrace)
1090
1091 dnl
1092 dnl  Enable profiling
1093 dnl
1094 AC_ARG_ENABLE(gprof,
1095 [  --enable-gprof          gprof profiling (default disabled)])
1096 AC_ARG_ENABLE(cprof,
1097 [  --enable-cprof          cprof profiling (default disabled)])
1098 test "${enable_gprof}" != "yes" && enable_gprof="no"
1099 test "${enable_cprof}" != "yes" && enable_cprof="no"
1100
1101 dnl
1102 dnl  default modules
1103 dnl
1104 ALIASES="${ALIASES} cvlc rvlc"
1105
1106 dnl
1107 dnl Some plugins aren't useful on some platforms
1108 dnl
1109 if test "${SYS}" != "mingw32" -a "${SYS}" != "mingwce"; then
1110     VLC_ADD_PLUGIN([dynamicoverlay])
1111 elif test "${SYS}" != "mingwce"; then
1112     VLC_ADD_PLUGIN([access_smb dmo globalhotkeys])
1113     VLC_ADD_LIBS([dmo],[-lole32 -luuid])
1114 fi
1115 if test "${SYS}" = "darwin"; then
1116     VLC_ADD_LDFLAGS([quartztext],[-Wl,-framework,ApplicationServices])
1117 fi
1118
1119 dnl
1120 dnl  Accelerated modules
1121 dnl
1122 EXTEND_HELP_STRING([Optimization options:])
1123
1124 dnl  Check for fully working MMX intrinsics
1125 dnl  We need support for -mmmx, we need <mmintrin.h>, and we also need a
1126 dnl  working compiler (http://gcc.gnu.org/bugzilla/show_bug.cgi?id=23963)
1127 AC_ARG_ENABLE(mmx,
1128 [  --disable-mmx           disable MMX optimizations (default auto)],,[
1129   case "${host_cpu}" in
1130     i?86|x86_64)
1131       enable_mmx="yes"
1132       ;;
1133     *)
1134       enable_mmx="no"
1135       ;;
1136   esac
1137 ])
1138 have_mmx="no"
1139 have_mmxext="no"
1140 AS_IF([test "${enable_mmx}" != "no"], [
1141   ARCH="${ARCH} mmx"
1142
1143   AC_CACHE_CHECK([if $CC groks MMX intrinsics],
1144     [ac_cv_c_mmx_intrinsics],
1145     [CFLAGS="${CFLAGS_save} -O -mmmx"
1146      AC_TRY_COMPILE([#include <mmintrin.h>
1147                      #include <stdint.h>
1148                      uint64_t frobzor;],
1149                     [__m64 a, b, c;
1150                      a = b = c = (__m64)frobzor;
1151                      a = _mm_slli_pi16(a, 3);
1152                      a = _mm_adds_pi16(a, b);
1153                      c = _mm_srli_pi16(c, 8);
1154                      c = _mm_slli_pi16(c, 3);
1155                      b = _mm_adds_pi16(b, c);
1156                      a = _mm_unpacklo_pi8(a, b);
1157                      frobzor = (uint64_t)a;],
1158                     [ac_cv_c_mmx_intrinsics=yes],
1159                     [ac_cv_c_mmx_intrinsics=no])])
1160   AS_IF([test "${ac_cv_c_mmx_intrinsics}" != "no"], [
1161     AC_DEFINE(HAVE_MMX_INTRINSICS, 1,
1162               [Define to 1 if MMX intrinsics are available.])
1163     MMX_CFLAGS="-mmmx"
1164   ])
1165
1166   AC_CACHE_CHECK([if $CC groks MMX inline assembly],
1167     [ac_cv_mmx_inline],
1168     [CFLAGS="${CFLAGS_save}"
1169      AC_TRY_COMPILE(,[void *p;asm volatile("packuswb %%mm1,%%mm2"::"r"(p));],
1170                     ac_cv_mmx_inline=yes, ac_cv_mmx_inline=no)])
1171   AS_IF([test "${ac_cv_mmx_inline}" != "no"], [
1172     AC_DEFINE(CAN_COMPILE_MMX, 1,
1173               [Define to 1 inline MMX assembly is available.])
1174     have_mmx="yes"
1175   ])
1176
1177   AC_CACHE_CHECK([if $CC groks MMX EXT inline assembly],
1178     [ac_cv_mmxext_inline],
1179     [CFLAGS="${CFLAGS_save}"
1180      AC_TRY_COMPILE(,[void *p;asm volatile("maskmovq %%mm1,%%mm2"::"r"(p));],
1181                     ac_cv_mmxext_inline=yes, ac_cv_mmxext_inline=no)])
1182   AS_IF([test "${ac_cv_mmxext_inline}" != "no"], [
1183     AC_DEFINE(CAN_COMPILE_MMXEXT, 1,
1184               [Define to 1 if MMX EXT inline assembly is available.])
1185     have_mmxext="yes"
1186   ])
1187 ])
1188 AC_SUBST(MMX_CFLAGS)
1189 AM_CONDITIONAL([HAVE_MMX], [test "${have_mmx}" = "yes"])
1190 AM_CONDITIONAL([HAVE_MMXEXT], [test "${have_mmxext}" = "yes"])
1191
1192 dnl  Check for fully workin SSE2 intrinsics
1193 dnl  We need support for -mmmx, we need <emmintrin.h>, and we also need a
1194 dnl  working compiler (http://gcc.gnu.org/bugzilla/show_bug.cgi?id=23963)
1195 AC_ARG_ENABLE(sse,
1196 [  --disable-sse           disable SSE (1, 2, 3 and 4) optimizations (default auto)],
1197 , [
1198   case "${host_cpu}" in
1199     i686|x86_64)
1200       enable_sse=yes
1201       ;;
1202     *)
1203       enable_sse=no
1204       ;;
1205   esac
1206 ])
1207 have_sse2="no"
1208 AS_IF([test "${enable_sse}" != "no"], [
1209   ARCH="${ARCH} sse sse2"
1210
1211   AC_CACHE_CHECK([if $CC groks SSE2 intrinsics],
1212     [ac_cv_c_sse2_intrinsics],
1213     [CFLAGS="${CFLAGS_save} -O -msse2"
1214      AC_TRY_COMPILE([#include <emmintrin.h>
1215                      #include <stdint.h>
1216                      uint64_t frobzor;],
1217                     [__m128i a, b, c;
1218                      a = b = c = _mm_set1_epi64((__m64)frobzor);
1219                      a = _mm_slli_epi16(a, 3);
1220                      a = _mm_adds_epi16(a, b);
1221                      c = _mm_srli_epi16(c, 8);
1222                      c = _mm_slli_epi16(c, 3);
1223                      b = _mm_adds_epi16(b, c);
1224                      a = _mm_unpacklo_epi8(a, b);
1225                      frobzor = (uint64_t)_mm_movepi64_pi64(a);],
1226                     [ac_cv_c_sse2_intrinsics=yes],
1227                     [ac_cv_c_sse2_intrinsics=no])])
1228   AS_IF([test "${ac_cv_c_sse2_intrinsics}" != "no"], [
1229     AC_DEFINE(HAVE_SSE2_INTRINSICS, 1,
1230               [Define to 1 if SSE2 intrinsics are available.])
1231     SSE2_CFLAGS="-msse2"
1232   ])
1233
1234   AC_CACHE_CHECK([if $CC groks SSE inline assembly],
1235     [ac_cv_sse_inline],
1236     [CFLAGS="${CFLAGS_save}"
1237      AC_TRY_COMPILE(,[void *p;asm volatile("xorps %%xmm1,%%xmm2"::"r"(p));],
1238                     ac_cv_sse_inline=yes, ac_cv_sse_inline=no)])
1239   AS_IF([test "${ac_cv_sse_inline}" != "no" -a "${SYS}" != "solaris"], [
1240     AC_DEFINE(CAN_COMPILE_SSE, 1,
1241               [Define to 1 if SSE inline assembly is available.])
1242   ])
1243
1244   AC_CACHE_CHECK([if $CC groks SSE2 inline assembly],
1245     [ac_cv_sse2_inline],
1246     [CFLAGS="${CFLAGS_save}"
1247      AC_TRY_COMPILE(,[void *p;asm volatile("punpckhqdq %%xmm1,%%xmm2"::"r"(p));],
1248                     ac_cv_sse2_inline=yes, ac_cv_sse2_inline=no)])
1249   AS_IF([test "${ac_cv_sse2_inline}" != "no" -a "${SYS}" != "solaris"], [
1250     AC_DEFINE(CAN_COMPILE_SSE2, 1,
1251               [Define to 1 if SSE2 inline assembly is available.])
1252     have_sse2="yes"
1253   ])
1254
1255   # SSE3
1256   AC_CACHE_CHECK([if $CC groks SSE3 inline assembly],
1257     [ac_cv_sse3_inline],
1258     [CFLAGS="${CFLAGS_save}"
1259      AC_TRY_COMPILE(,[void *p;asm volatile("movsldup %%xmm1,%%xmm0"::"r"(p));],
1260                     ac_cv_sse3_inline=yes, ac_cv_sse3_inline=no)])
1261   AS_IF([test "${ac_cv_sse3_inline}" != "no"], [
1262     AC_DEFINE(CAN_COMPILE_SSE3, 1,
1263               [Define to 1 if SSE3 inline assembly is available.]) ])
1264   # SSSE3
1265   AC_CACHE_CHECK([if $CC groks SSSE3 inline assembly],
1266     [ac_cv_ssse3_inline],
1267     [CFLAGS="${CFLAGS_save}"
1268      AC_TRY_COMPILE(,[void *p;asm volatile("pabsw %%xmm0,%%xmm0"::"r"(p));],
1269                     ac_cv_ssse3_inline=yes, ac_cv_ssse3_inline=no)])
1270   AS_IF([test "${ac_cv_ssse3_inline}" != "no"], [
1271     AC_DEFINE(CAN_COMPILE_SSSE3, 1,
1272               [Define to 1 if SSSE3 inline assembly is available.]) ])
1273
1274   # SSE4.1
1275   AC_CACHE_CHECK([if $CC groks SSE4.1 inline assembly],
1276     [ac_cv_sse4_1_inline],
1277     [CFLAGS="${CFLAGS_save}"
1278      AC_TRY_COMPILE(,[void *p;asm volatile("pmaxsb %%xmm1,%%xmm0"::"r"(p));],
1279                     ac_cv_sse4_1_inline=yes, ac_cv_sse4_1_inline=no)])
1280   AS_IF([test "${ac_cv_sse4_1_inline}" != "no"], [
1281     AC_DEFINE(CAN_COMPILE_SSE4_1, 1,
1282               [Define to 1 if SSE4_1 inline assembly is available.]) ])
1283
1284   # SSE4.2
1285   AC_CACHE_CHECK([if $CC groks SSE4.2 inline assembly],
1286     [ac_cv_sse4_2_inline],
1287     [CFLAGS="${CFLAGS_save}"
1288      AC_TRY_COMPILE(,[void *p;asm volatile("pcmpgtq %%xmm1,%%xmm0"::"r"(p));],
1289                     ac_cv_sse4_2_inline=yes, ac_cv_sse4_2_inline=no)])
1290   AS_IF([test "${ac_cv_sse4_2_inline}" != "no"], [
1291     AC_DEFINE(CAN_COMPILE_SSE4_2, 1,
1292               [Define to 1 if SSE4_2 inline assembly is available.]) ])
1293
1294   # SSE4A
1295   AC_CACHE_CHECK([if $CC groks SSE4A inline assembly],
1296     [ac_cv_sse4a_inline],
1297     [CFLAGS="${CFLAGS_save}"
1298      AC_TRY_COMPILE(,[void *p;asm volatile("insertq %%xmm1,%%xmm0"::"r"(p));],
1299                     ac_cv_sse4a_inline=yes, ac_cv_sse4a_inline=no)])
1300   AS_IF([test "${ac_cv_sse4a_inline}" != "no"], [
1301     AC_DEFINE(CAN_COMPILE_SSE4A, 1,
1302               [Define to 1 if SSE4A inline assembly is available.]) ])
1303 ])
1304 AC_SUBST(SSE2_CFLAGS)
1305 AM_CONDITIONAL([HAVE_SSE2], [test "$have_sse2" = "yes"])
1306
1307 have_3dnow="no"
1308 AC_CACHE_CHECK([if $CC groks 3D Now! inline assembly],
1309     [ac_cv_3dnow_inline],
1310     [CFLAGS="${CFLAGS_save}"
1311      AC_TRY_COMPILE(,[void *p;asm volatile("pfadd %%mm1,%%mm2"::"r"(p));],
1312                     ac_cv_3dnow_inline=yes, ac_cv_3dnow_inline=no)])
1313 AS_IF([test "${ac_cv_3dnow_inline}" != "no"], [
1314   AC_DEFINE(CAN_COMPILE_3DNOW, 1,
1315             [Define to 1 if 3D Now! inline assembly is available.])
1316   have_3dnow="yes"
1317 ])
1318 AM_CONDITIONAL([HAVE_3DNOW], [test "$have_3dnow" = "yes"])
1319
1320
1321 AC_ARG_ENABLE(neon,
1322 [  --disable-neon          disable NEON optimizations (default auto)],, [
1323   AS_IF([test "${host_cpu}" = "arm"], [enable_neon="yes"] ,[enable_neon="no"])
1324 ])
1325 AS_IF([test "${enable_neon}" != "no"], [
1326   AC_CACHE_CHECK([if $CC groks NEON inline assembly], [ac_cv_neon_inline], [
1327     CFLAGS="${CFLAGS_save} -mfpu=neon"
1328     AC_COMPILE_IFELSE([
1329       AC_LANG_PROGRAM(,[[
1330 asm volatile("vqmovun.s64 d0, q1":::"d0");
1331 asm volatile("ssat r0, #1, r0":::"r0"); /* assume ARMv6 */
1332 ]])
1333     ], [
1334       ac_cv_neon_inline="-mfpu=neon"
1335     ], [
1336       ac_cv_neon_inline="no"
1337     ])
1338     CFLAGS="${CFLAGS_save}"
1339   ])
1340   ARM_NEON_CFLAGS="$ac_cv_neon_inline"
1341 ], [
1342   ac_cv_neon_inline="no"
1343 ])
1344 AC_SUBST(ARM_NEON_CFLAGS)
1345 AM_CONDITIONAL(HAVE_ARM_NEON, [test "${ac_cv_neon_inline}" != "no"])
1346
1347
1348 AC_ARG_ENABLE(altivec,
1349 [  --disable-altivec       disable AltiVec optimizations (default auto)],, [
1350   AS_IF([test "${host_cpu}" = "powerpc"],
1351         [enable_altivec=yes], [enable_altivec=no])
1352 ])
1353 have_altivec="no"
1354 AS_IF([test "${enable_altivec}" = "yes"], [
1355   ARCH="${ARCH} altivec";
1356   AC_CACHE_CHECK([if $CC groks AltiVec inline assembly],
1357     [ac_cv_altivec_inline],
1358     [CFLAGS="${CFLAGS_save}"
1359      AC_TRY_COMPILE(,[asm volatile("vperm 0,1,2,3");],
1360          ac_cv_altivec_inline="yes",
1361          [CFLAGS="${CFLAGS_save} -Wa,-m7400"
1362           AC_TRY_COMPILE(,[asm volatile("vperm 0,1,2,3");],
1363             [ac_cv_altivec_inline="-Wa,-m7400"],
1364             ac_cv_altivec_inline=no)
1365          ])])
1366   AS_IF([test "${ac_cv_altivec_inline}" != "no"], [
1367     AC_DEFINE(CAN_COMPILE_ALTIVEC, 1,
1368               [Define to 1 if AltiVec inline assembly is available.])
1369     AS_IF([test "${ac_cv_altivec_inline}" != "yes"], [
1370       VLC_ADD_CFLAGS([idctaltivec],[${ac_cv_altivec_inline}])
1371       VLC_ADD_CFLAGS([motionaltivec],[${ac_cv_altivec_inline}])
1372       VLC_ADD_CFLAGS([memcpyaltivec],[${ac_cv_altivec_inline}])
1373       VLC_ADD_CFLAGS([i420_yuy2_altivec],[${ac_cv_altivec_inline}])
1374       VLC_ADD_CFLAGS([libvlccore],[${ac_cv_altivec_inline}])
1375     ])
1376     have_altivec="yes"
1377   ])
1378
1379 dnl The AltiVec C extensions
1380 dnl
1381 dnl There are several possible cases:
1382 dnl - OS X PPC, gcc 4.x: use -mpim-altivec -force_cpusubtype_ALL, don't
1383 dnl                      need <altivec.h>
1384 dnl - OS X PPC, gcc 3.x: need -faltivec, don't need <altivec.h>
1385 dnl - Linux PPC, gcc 3.4, 4.x: need <altivec.h> which requires -maltivec
1386 dnl - Linux PPC, gcc 3.3: need <altivec.h> and -maltivec -mabi=altivec
1387 dnl - Linux PPC, gcc 3.x: need <altivec.h> and -fvec
1388 dnl - Others: test should fail
1389   AC_CACHE_CHECK([if \$CC groks AltiVec C extensions],
1390   [ac_cv_c_altivec],
1391   [# OS X/PPC test (gcc 4.x)
1392    CFLAGS="${CFLAGS_save} -mpim-altivec -force_cpusubtype_ALL"
1393    AC_TRY_COMPILE([vector unsigned char foo;],
1394      [vec_ld(0, (unsigned char *)0);],
1395      [ac_cv_c_altivec="-mpim-altivec -force_cpusubtype_ALL"],
1396      [# OS X/PPC test (gcc 3.x)
1397       CFLAGS="${CFLAGS_save} -faltivec"
1398       AC_TRY_COMPILE([vector unsigned char foo;],
1399         [vec_ld(1 * sizeof(vector float), (unsigned char *)0);],
1400         [ac_cv_c_altivec="-faltivec"],
1401         dnl Below this are the Linux tests
1402         [# Linux/PPC test (gcc 4.x)
1403          CFLAGS="${CFLAGS_save} -maltivec"
1404          AC_TRY_COMPILE([#include <altivec.h>],
1405            [vec_ld(0, (unsigned char *)0);],
1406            [ac_cv_c_altivec="-maltivec"],
1407            [# Linux/PPC test (gcc 3.3)
1408             CFLAGS="${CFLAGS_save} -maltivec -mabi=altivec"
1409             AC_TRY_COMPILE([#include <altivec.h>],
1410               [vec_ld(0, (unsigned char *)0);],
1411               [ac_cv_c_altivec=""
1412                ac_cv_c_altivec_abi="-maltivec -mabi=altivec"],
1413               [# Linux/PPC test (gcc 3.3)
1414                CFLAGS="${CFLAGS_save} -fvec"
1415                AC_TRY_COMPILE([#include <altivec.h>],
1416                  [vec_ld(0, (unsigned char *)0);],
1417                  [ac_cv_c_altivec="-fvec"],
1418                  [ac_cv_c_altivec=no])
1419               ])
1420            ])
1421         ])
1422      ])
1423    CFLAGS="${CFLAGS_save}"
1424   ])
1425   AS_IF([test "${ac_cv_c_altivec}" != "no"], [
1426     CPPFLAGS="${CPPFLAGS_save} ${ac_cv_c_altivec}"
1427   ])
1428
1429   AC_CHECK_HEADERS(altivec.h)
1430   CPPFLAGS="${CPPFLAGS_save}"
1431
1432   AS_IF([test "${ac_cv_c_altivec}" != "no"], [
1433     AC_DEFINE(CAN_COMPILE_C_ALTIVEC, 1,
1434               [Define to 1 if C AltiVec extensions are available.])
1435     VLC_ADD_CFLAGS([libvlccore],[${ac_cv_c_altivec}])
1436     VLC_ADD_CFLAGS([idctaltivec motionaltivec],[${ac_cv_c_altivec}])
1437     VLC_ADD_CFLAGS([i420_yuy2_altivec memcpyaltivec deinterlace],[${ac_cv_c_altivec} ${ac_cv_c_altivec_abi}])
1438     have_altivec="yes"
1439   ])
1440
1441   AC_CACHE_CHECK([if linker needs -framework vecLib],
1442     [ac_cv_ld_altivec],
1443     [LDFLAGS="${LDFLAGS_vlc} -Wl,-framework,vecLib"
1444      AC_TRY_LINK([],,ac_cv_ld_altivec=yes,ac_cv_ld_altivec=no)
1445      LDFLAGS="${LDFLAGS_save}"
1446     ])
1447   AS_IF([test "${ac_cv_ld_altivec}" != "no"], [
1448     VLC_ADD_LDFLAGS([libvlccore idctaltivec motionaltivec memcpyaltivec],[-Wl,-framework,vecLib])
1449   ])
1450 ])
1451 AM_CONDITIONAL([HAVE_ALTIVEC], [test "$have_altivec" = "yes"])
1452
1453 dnl
1454 dnl  Special arch tuning
1455 dnl
1456 AC_ARG_WITH(tuning,
1457 [  --with-tuning=ARCH      enable special tuning for an architecture
1458                           (default Pentium 2 on IA-32 and G4 on PPC)])
1459 if test -n "${with_tuning}"; then
1460     if test "${with_tuning}" != "no"; then
1461         CFLAGS_TUNING="-mtune=${with_tuning}"
1462     fi
1463 else
1464     if test "${SYS}" = "darwin" -a "${host_cpu}" != "powerpc"; then
1465         CFLAGS_TUNING="-march=prescott -mtune=generic"
1466     elif test "${host_cpu}" = "i686" -o "${host_cpu}" = "i586" -o "${host_cpu}" = "i486" -o "${host_cpu}" = "i386"; then
1467         CFLAGS_TUNING="-mtune=pentium2"
1468     elif test "${host_cpu}" = "x86_64"; then
1469         CFLAGS_TUNING="-mtune=athlon64"
1470     elif test "${host_cpu}" = "powerpc"; then
1471         CFLAGS_TUNING="-mtune=G4";
1472     fi
1473 fi
1474
1475 dnl NOTE: this can't be cached cleanly
1476 AS_IF([test "${CFLAGS_TUNING}"],
1477    [CFLAGS_save="${CFLAGS}"
1478     CFLAGS="${CFLAGS} ${CFLAGS_TUNING}"
1479
1480     AC_MSG_CHECKING([whether $CC accepts ${CFLAGS_TUNING}])
1481     AC_COMPILE_IFELSE([ ],
1482                       [tuning="yes"],
1483                       [CFLAGS_TUNING=""; tuning="no"
1484                        AS_IF([test "${with_tuning}"],
1485                              [AC_MSG_ERROR([requested tuning not supported])])])
1486
1487     AC_MSG_RESULT([$tuning])
1488     CFLAGS="${CFLAGS_save}"
1489 ])
1490
1491 dnl
1492 dnl  Memory usage
1493 dnl
1494 AC_ARG_ENABLE(optimize-memory,
1495 [  --enable-optimize-memory optimize memory usage over performance])
1496 if test "${enable_optimize_memory}" = "yes"; then
1497   AC_DEFINE(OPTIMIZE_MEMORY, 1, Define if you want to optimize memory usage over performance)
1498 fi
1499
1500 dnl
1501 dnl  Enable/disable optimizations
1502 dnl
1503 AC_ARG_ENABLE(optimizations,
1504 [  --disable-optimizations disable compiler optimizations (default enabled)])
1505 if test "${enable_optimizations}" != "no"; then
1506    if test "${enable_optimize_memory}" = "yes"; then
1507       enable_optimizations="size"
1508    else
1509       enable_optimizations="speed"
1510    fi
1511 fi
1512
1513 dnl
1514 dnl  Debugging mode
1515 dnl
1516 AC_ARG_ENABLE(debug,
1517 [  --enable-debug          debug mode (default disabled)])
1518 test "${enable_debug}" != "yes" && enable_debug="no"
1519 AH_TEMPLATE(NDEBUG,
1520             [Define to 1 if debug code should NOT be compiled])
1521 AS_IF([test "x${enable_debug}" = "xno"], [
1522   AC_DEFINE(NDEBUG)
1523 ], [
1524   AC_CHECK_HEADERS([valgrind/valgrind.h])
1525 ])
1526
1527 dnl
1528 dnl Allow running as root (useful for people running on embedded platforms)
1529 dnl
1530 AC_ARG_ENABLE(run-as-root,
1531 [  --enable-run-as-root    allow running VLC as root (default disabled)])
1532 AS_IF([test "${enable_run_as_root}" = "yes"],[
1533     AC_DEFINE(ALLOW_RUN_AS_ROOT, 1,
1534               [Define to 1 to allow running VLC as root (uid 0).])
1535 ])
1536
1537 dnl
1538 dnl  Test coverage
1539 dnl
1540 AC_ARG_ENABLE(coverage,
1541         [  --enable-coverage       build for test coverage (default disabled)],,
1542         [enable_coverage="no"])
1543 AS_IF([test "${enable_coverage}" != "no"], [
1544         CFLAGS="-fprofile-arcs -ftest-coverage ${CFLAGS}"
1545         CXXFLAGS="-fprofile-arcs -ftest-coverage ${CXXFLAGS}"
1546         LDFLAGS="-lgcov ${LDFLAGS}"
1547         dnl ugly...
1548         CFLAGS_save="${CFLAGS}"
1549         CXXFLAGS_save="${CXXFLAGS}"
1550         LDFLAGS_save="${LDFLAGS}"
1551 ])
1552
1553 dnl
1554 dnl Stream output
1555 dnl
1556 AC_ARG_ENABLE(sout,
1557   [  --enable-sout           Stream output modules (default enabled)])
1558 AS_IF([test "${enable_sout}" != "no"], [
1559   AC_DEFINE(ENABLE_SOUT, 1, [Define to 1 for stream output support.])
1560 ])
1561 AM_CONDITIONAL(ENABLE_SOUT, [test "${enable_sout}" != "no"])
1562
1563 dnl Lua modules
1564 AC_ARG_ENABLE(lua,
1565   AS_HELP_STRING([--enable-lua],[lua playlist, metafetcher and interface
1566                   plugins (default enabled)]))
1567 if test "${enable_lua}" != "no"
1568 then
1569   PKG_CHECK_MODULES(LUA, lua5.1,
1570     [ have_lua=yes ],
1571     [
1572     AC_MSG_WARN([lua5.1 not found, trying lua >= 5.1 instead])
1573     PKG_CHECK_MODULES(LUA, lua >= 5.1,
1574       [ have_lua=yes ],
1575       [
1576         have_lua=yes
1577         AC_CHECK_HEADERS([lua.h lauxlib.h lualib.h],
1578           [],
1579           [ have_lua=no ] )
1580         AC_CHECK_LIB(  lua5.1 , luaL_newstate,
1581           [LUA_LIBS="-llua5.1"],
1582           AC_CHECK_LIB( lua51 , luaL_newstate,
1583             [LUA_LIBS="-llua51"],
1584             AC_CHECK_LIB( lua , luaL_newstate,
1585               [LUA_LIBS="-llua"],
1586               [ have_lua=no
1587               ], [-lm])
1588           )
1589         )
1590       ])
1591     ])
1592   if test "x${have_lua}" = "xyes" ;  then
1593      VLC_ADD_LIBS([lua],[$LUA_LIBS])
1594      VLC_ADD_CFLAGS([lua],[$LUA_CFLAGS])
1595   else
1596       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.])
1597   fi
1598   AC_ARG_VAR([LUAC], [LUA byte compiler])
1599   AC_PATH_PROGS(LUAC,[${LUAC} luac], [false])
1600   AS_IF([test "${LUAC}" = "false"], [
1601     AC_MSG_ERROR([Could not find the LUA byte compiler.])
1602   ])
1603 fi
1604 AM_CONDITIONAL(BUILD_LUA, [test "${have_lua}" = "yes"])
1605
1606 dnl
1607 dnl HTTP daemon
1608 dnl
1609 AC_ARG_ENABLE(httpd,
1610   [  --enable-httpd          HTTP daemon (default enabled)])
1611 if test "${enable_httpd}" != "no"
1612 then
1613   VLC_ADD_PLUGIN([oldhttp])
1614   AC_DEFINE(ENABLE_HTTPD, 1, Define if you want the HTTP dameon support)
1615 fi
1616 AM_CONDITIONAL(BUILD_HTTPD, [test "${enable_httpd}" != "no"])
1617
1618 dnl
1619 dnl libproxy support
1620 dnl
1621 AC_ARG_ENABLE(libproxy,
1622   [  --enable-libproxy       libproxy support (default auto)])
1623 AS_IF([test "${enable_libproxy}" != "no"], [
1624   PKG_CHECK_MODULES(LIBPROXY, libproxy-1.0, [
1625     AC_DEFINE(HAVE_LIBPROXY, 1, [Define if libproxy is available])
1626     VLC_ADD_CFLAGS([access_http],[$LIBPROXY_CFLAGS])
1627     VLC_ADD_LIBS([access_http],[$LIBPROXY_LIBS])
1628   ], [
1629     AS_IF([test "x${enable_libproxy}" != "x"], [
1630       AC_MSG_ERROR([libproxy could not be found on your system])
1631     ])
1632   ])
1633 ])
1634
1635
1636 dnl
1637 dnl VideoLAN manager
1638 dnl
1639 AC_ARG_ENABLE(vlm,
1640   [  --enable-vlm            VideoLAN manager (default enabled)],,
1641   [enable_vlm="${enable_sout}"])
1642 AS_IF([test "${enable_vlm}" != "no"], [
1643   AS_IF([test "${enable_sout}" = "no"], [
1644     AC_MSG_ERROR([VLM requires the stream output. Do not use --disable-sout.])
1645   ])
1646   AC_DEFINE(ENABLE_VLM, 1, [Define if you want the VideoLAN manager support])
1647 ])
1648 AM_CONDITIONAL([ENABLE_VLM], [test "${enable_vlm}" != "no"])
1649
1650 dnl
1651 dnl Growl notification plugin
1652 dnl
1653 AC_ARG_ENABLE(growl,
1654   [  --enable-growl          growl notification plugin (default disabled)],,
1655   [enable_growl=no])
1656 AS_IF([test "${enable_growl}" != "no"], [
1657     VLC_ADD_PLUGIN([growl_udp])
1658     AC_CHECK_HEADERS(Growl/GrowlDefines.h, [
1659       VLC_ADD_PLUGIN([growl])
1660       VLC_ADD_LDFLAGS([growl], [-Wl,-framework,Growl,-framework,AppKit])
1661       VLC_ADD_OBJCFLAGS([growl], [-fobjc-exceptions] )
1662     ])
1663   ]
1664 )
1665
1666 dnl
1667 dnl Libnotify notification plugin
1668 dnl
1669 PKG_ENABLE_MODULES_VLC([NOTIFY], [], [libnotify], [libnotify notification], [auto])
1670
1671 dnl
1672 dnl Taglibplugin
1673 dnl
1674 AC_ARG_ENABLE(taglib,
1675   [  --disable-taglib        Taglib support (default enabled) ])
1676   AS_IF([test "${enable_taglib}" != "no"],[
1677     PKG_CHECK_MODULES(TAGLIB, taglib >= 1.5,
1678       [ VLC_ADD_PLUGIN([taglib])
1679         VLC_ADD_LIBS([taglib],[$TAGLIB_LIBS -lz])
1680         VLC_ADD_CXXFLAGS([taglib],[$TAGLIB_CFLAGS])
1681         AC_LANG_PUSH(C++)
1682         AC_CHECK_HEADERS(taglib/mp4coverart.h)
1683         AC_LANG_POP(C++)
1684       ],
1685       [AC_MSG_WARN(TagLib library not found)])
1686   ])
1687
1688 dnl
1689 dnl  Input plugins
1690 dnl
1691
1692 EXTEND_HELP_STRING([Input plugins:])
1693
1694 dnl  live555 input
1695 dnl
1696 AC_ARG_ENABLE(live555,
1697 [  --enable-live555        live555 RTSP input plugin (default enabled)])
1698 if test "${enable_live555}" != "no"; then
1699   AC_ARG_WITH(live555-tree,
1700     [  --with-live555-tree=PATH live.com tree for static linking])
1701
1702   dnl
1703   dnl test for --with-live555-tree
1704   dnl
1705   if test -z "${with_live555_tree}" -a "${CXX}" != ""; then
1706     AC_LANG_PUSH(C++)
1707     CPPFLAGS_save="${CPPFLAGS}"
1708     if test -z "${CONTRIB_DIR}"; then
1709         CPPFLAGS_live555="-I/usr/include/liveMedia -I/usr/include/groupsock -I/usr/include/BasicUsageEnvironment -I/usr/include/UsageEnvironment"
1710     else
1711         CPPFLAGS_live555="-I${CONTRIB_DIR}/include/liveMedia -I${CONTRIB_DIR}/include/groupsock -I${CONTRIB_DIR}/include/BasicUsageEnvironment -I${CONTRIB_DIR}/include/UsageEnvironment"
1712     fi
1713     if test "${SYS}" = "solaris"; then
1714       CPPFLAGS_live555="${CPPFLAGS_live555} -DSOLARIS"
1715     fi
1716     CPPFLAGS="${CPPFLAGS} ${CPPFLAGS_live555}"
1717
1718     AC_CHECK_HEADERS(liveMedia_version.hh, [
1719       AC_MSG_CHECKING(for liveMedia version >= 1275091200 )
1720       AC_EGREP_CPP(yes,
1721         [#include <liveMedia_version.hh>
1722          #ifdef LIVEMEDIA_LIBRARY_VERSION_INT
1723          #if LIVEMEDIA_LIBRARY_VERSION_INT < 1275091200
1724          yes
1725          #endif
1726          #endif],
1727         [AC_MSG_RESULT([no])
1728           AC_MSG_WARN([The installed liveMedia version is too old:
1729 Version 2010.05.29 or later is required to proceed.
1730 You can get an updated one from http://www.live555.com/liveMedia .])
1731           AS_IF([test "${enable_live555}" == "yes"], [
1732             AC_MSG_ERROR([Update live555 or pass --disable-live555 to disable the plugin.])
1733           ])
1734         ],[
1735           AC_MSG_RESULT([yes])
1736           other_libs="-lgroupsock -lBasicUsageEnvironment -lUsageEnvironment"
1737           other_libs_pic="-lgroupsock_pic -lBasicUsageEnvironment_pic -lUsageEnvironment_pic"
1738           if test "${SYS}" = "mingw32"; then
1739             # add ws2_32 for closesocket, select, recv
1740             other_libs="$other_libs -lws2_32"
1741           elif test "${SYS}" = "mingwce"; then
1742             # add ws2 for closesocket, select, recv
1743             other_libs="$other_libs -lws2"
1744           fi
1745
1746           dnl We need to check for pic because live555 don't provide shared libs
1747           dnl and we want to build a plugins so we need -fPIC on some arch.
1748           VLC_ADD_CXXFLAGS([live555], [${CPPFLAGS_live555}])
1749           AC_CHECK_LIB(liveMedia_pic, main, [
1750             VLC_ADD_PLUGIN([live555])
1751             VLC_ADD_LIBS([live555], [-lliveMedia_pic ${other_libs_pic}])
1752           ],[
1753             AC_CHECK_LIB(liveMedia, main, [
1754             VLC_ADD_PLUGIN([live555])
1755             VLC_ADD_LIBS([live555], [-lliveMedia ${other_libs}])
1756           ],[],[${other_libs}]) ],[${other_libs_pic}])
1757
1758           CPPFLAGS="${CPPFLAGS_save}"
1759           AC_LANG_POP(C++)
1760         ])
1761       ])
1762   else
1763     AC_MSG_CHECKING(for liveMedia/libliveMedia.a in ${with_live555_tree})
1764     real_live555_tree="`cd ${with_live555_tree} 2>/dev/null && pwd`"
1765     if test -z "${real_live555_tree}"; then
1766       dnl  The given directory can't be found
1767       AC_MSG_RESULT(no)
1768       AC_MSG_ERROR([cannot cd to ${with_live555_tree}])
1769     fi
1770     if test -f "${real_live555_tree}/liveMedia/libliveMedia.a"; then
1771       AC_MSG_RESULT(${real_live555_tree}/liveMedia/libliveMedia.a)
1772
1773       AC_CHECK_HEADERS(${real_live555_tree}/liveMedia/include/liveMedia_version.hh,[
1774         AC_MSG_CHECKING(for liveMedia version >= 1275091200 )
1775         AC_EGREP_CPP(yes,
1776           [#include "${real_live555_tree}/liveMedia/include/liveMedia_version.hh"
1777            #ifdef LIVEMEDIA_LIBRARY_VERSION_INT
1778            #if LIVEMEDIA_LIBRARY_VERSION_INT < 1275091200
1779            yes
1780            #endif
1781            #endif],
1782           [AC_MSG_RESULT([no])
1783            AC_MSG_ERROR([Your version of liveMedia is too old: you may get a more recent one from http://www.live555.com/liveMedia.
1784 lternatively you can use --disable-live555 to disable the liveMedia plugin.])
1785         ],[
1786            AC_MSG_RESULT([yes])
1787            ])
1788       ])
1789
1790       VLC_ADD_PLUGIN([live555])
1791
1792       if test "${SYS}" = "mingw32"; then
1793         # add ws2_32 for closesocket, select, recv
1794         VLC_ADD_LIBS([live555],[-lws2_32])
1795       fi
1796
1797       VLC_ADD_LIBS([live555],[-L${real_live555_tree}/UsageEnvironment -lUsageEnvironment])
1798       VLC_ADD_LIBS([live555],[-L${real_live555_tree}/BasicUsageEnvironment -lBasicUsageEnvironment])
1799       VLC_ADD_LIBS([live555],[-L${real_live555_tree}/groupsock -lgroupsock])
1800       VLC_ADD_LIBS([live555],[-L${real_live555_tree}/liveMedia -lliveMedia])
1801
1802       VLC_ADD_CXXFLAGS([live555],[-I${real_live555_tree}/BasicUsageEnvironment/include])
1803       VLC_ADD_CXXFLAGS([live555],[-I${real_live555_tree}/groupsock/include])
1804       VLC_ADD_CXXFLAGS([live555],[-I${real_live555_tree}/liveMedia/include])
1805       VLC_ADD_CXXFLAGS([live555],[-I${real_live555_tree}/UsageEnvironment/include ])
1806       if test "${SYS}" = "solaris"; then
1807         VLC_ADD_CXXFLAGS([live555],[-DSOLARIS])
1808       fi
1809     else
1810       dnl  The given live555 wasn't built
1811         AC_MSG_RESULT(no)
1812       if test "${enable_live555}" = "yes"; then
1813         AC_MSG_ERROR([cannot find ${real_live555_tree}/liveMedia/libliveMedia.a, make sure you compiled live555 in ${with_live555_tree}])
1814       fi        
1815     fi
1816   fi
1817 fi
1818
1819 dnl
1820 dnl - special access module for dc1394 input
1821 dnl - dv module: digital video module check for libraw1394
1822 dnl
1823 PKG_ENABLE_MODULES_VLC([DC1394], [], [libraw1394 >= 2.0.1 libdc1394-2 >= 2.1.0], [dc1394 access module], [auto])
1824 PKG_ENABLE_MODULES_VLC([DV], [access_dv], [libraw1394 >= 2.0.1 libavc1394 >= 0.5.3], [DV input module], [auto])
1825
1826 dnl
1827 dnl dvdread module: check for libdvdread
1828 dnl
1829 dnl prepend -ldvdcss on OS that need it
1830 AS_CASE(["${SYS}"], [mingw32|darwin], [VLC_ADD_LIBS([dvdread], [-ldvdcss])])
1831 PKG_ENABLE_MODULES_VLC([DVDREAD], [], [dvdread], [dvdread input module], [auto])
1832
1833 dnl
1834 dnl libdvdnav plugin
1835 dnl
1836 AC_ARG_ENABLE(dvdnav,
1837   [  --enable-dvdnav         dvdnav input module (default enabled)])
1838 if test "${enable_dvdnav}" != "no"
1839 then
1840   dnl prepend -ldvdcss on OS that need it
1841   AS_CASE(["${SYS}"], [mingw32|darwin], [VLC_ADD_LIBS([dvdnav], [-ldvdcss])])
1842
1843   DVDNAV_PATH="${PATH}"
1844   AC_ARG_WITH(dvdnav-config-path,
1845     [  --with-dvdnav-config-path=PATH dvdnav-config path (default search in \$PATH)],
1846     [ if test "${with_dvdnav_config_path}" != "no"
1847       then
1848         DVDNAV_PATH="${with_dvdnav_config_path}:${PATH}"
1849       fi ])
1850   AC_PATH_PROG(DVDNAV_CONFIG, dvdnav-config, no, ${DVDNAV_PATH})
1851   if test "${DVDNAV_CONFIG}" != "no"
1852   then
1853     VLC_ADD_PLUGIN([dvdnav])
1854     VLC_ADD_CFLAGS([dvdnav],[`${DVDNAV_CONFIG} --cflags`])
1855     VLC_ADD_LIBS([dvdnav],[`${DVDNAV_CONFIG} --libs`])
1856     AC_CHECK_LIB(dvdnav, dvdnav_get_video_resolution,
1857                 AC_DEFINE(HAVE_DVDNAV_GET_VIDEO_RESOLUTION, 1, [Define if you have dvdnav_get_video_resolution.]),
1858                 [], [${LIBS_dvdnav}])
1859     AC_CHECK_LIB(dvdnav, dvdnav_describe_title_chapters,
1860                 AC_DEFINE(HAVE_DVDNAV_DESCRIBE_TITLE_CHAPTERS, 1, [Define if you have dvdnav_describe_title_chapters.]),
1861                 [], [${LIBS_dvdnav}])
1862   fi
1863 fi
1864
1865 dnl
1866 dnl  Windows DirectShow access module
1867 dnl
1868 AC_ARG_ENABLE(dshow,
1869   [  --enable-dshow          Win32 DirectShow support (default enabled on Win32)])
1870 if test "${enable_dshow}" != "no"
1871 then
1872   if test "${SYS}" = "mingw32"
1873   then
1874     AC_LANG_PUSH(C++)
1875       AC_CHECK_HEADERS(dshow.h,
1876       [ VLC_ADD_PLUGIN([dshow])
1877         VLC_ADD_CXXFLAGS([dshow],[])
1878         VLC_ADD_LIBS([dshow],[-lole32 -loleaut32 -luuid]) ])
1879     AC_LANG_POP(C++)
1880   fi
1881 fi
1882
1883 dnl
1884 dnl  Windows DirectShow BDA access module
1885 dnl
1886 AC_ARG_ENABLE(bda,
1887   AS_HELP_STRING([--enable-bda],[Win32 DirectShow BDA support (default
1888                   enabled on Win32)]))
1889 if test "${enable_bda}" != "no"
1890 then
1891   if test "${SYS}" = "mingw32"
1892   then
1893       AC_CHECK_HEADERS(dshow.h,
1894       [ VLC_ADD_PLUGIN([bda])
1895         VLC_ADD_CXXFLAGS([bda],[])
1896         VLC_ADD_LIBS([bda],[-lstrmiids -lole32 -loleaut32 -luuid]) ])
1897   fi
1898 fi
1899
1900
1901 dnl
1902 dnl  Blu-ray Disc Support with libbluray
1903 dnl
1904 PKG_ENABLE_MODULES_VLC([BLURAY], [libbluray], [libbluray], (libbluray for Blu-ray disc support ) )
1905
1906 dnl
1907 dnl  OpenCV wrapper and example filters
1908 dnl
1909 PKG_ENABLE_MODULES_VLC([OPENCV], [opencv_example], [opencv], (OpenCV (computer vision) filter), [off])
1910
1911
1912 dnl
1913 dnl  libsmbclient plugin
1914 dnl
1915 AC_ARG_ENABLE(smb,
1916   [  --enable-smb            smb input module (default enabled)])
1917 if test "${enable_smb}" != "no"; then
1918   AC_CHECK_HEADERS(libsmbclient.h,
1919     [ VLC_ADD_PLUGIN([access_smb])
1920       VLC_ADD_LIBS([access_smb],[-lsmbclient]) ],
1921     [ if test -n "${enable_smb}"; then
1922         AC_MSG_ERROR([cannot find libsmbclient headers])
1923      fi ])
1924 fi
1925
1926
1927 dnl
1928 dnl sftp access support
1929 dnl
1930 AC_ARG_ENABLE(sftp,
1931   [  --enable-sftp           sftp input access module (default disable)])
1932 if test "${enable_sftp}" = "yes"; then
1933   AC_CHECK_HEADERS(libssh2.h, [
1934     VLC_ADD_PLUGIN([access_sftp])
1935     VLC_ADD_LIBS([access_sftp], [-lssh2])
1936   ])
1937 fi
1938
1939 dnl
1940 dnl  libdvbpsi ts demux/mux
1941 dnl
1942 AC_ARG_ENABLE(dvbpsi,
1943   [  --enable-dvbpsi         dvbpsi ts mux and demux module (default enabled)])
1944 have_dvbpsi=no
1945 if test "${enable_dvbpsi}" != "no"
1946 then
1947   AC_ARG_WITH(dvbpsi,
1948   [  --with-dvbpsi=PATH      libdvbpsi headers and libraries])
1949   AC_ARG_WITH(dvbpsi,
1950   [  --with-dvbpsi-tree=PATH libdvbpsi tree for static linking])
1951   case "${with_dvbpsi}" in
1952   ""|yes)
1953     if test -z "${with_dvbpsi_tree}"
1954     then
1955       AC_CHECK_HEADERS(dvbpsi/dr.h,
1956         [ VLC_ADD_PLUGIN([ts])
1957           if test "${enable_sout}" != "no"; then
1958             VLC_ADD_PLUGIN([mux_ts])
1959           fi
1960           VLC_ADD_LIBS([mux_ts ts dvb],[-ldvbpsi])
1961           have_dvbpsi=yes],
1962         [  AC_MSG_WARN([cannot find libdvbpsi headers]) ],
1963         [#if defined( HAVE_STDINT_H )
1964 #   include <stdint.h>
1965 #elif defined( HAVE_INTTYPES_H )
1966 #   include <inttypes.h>
1967 #endif
1968 #include <dvbpsi/dvbpsi.h>
1969 #include <dvbpsi/descriptor.h>
1970 #include <dvbpsi/pat.h>
1971 #include <dvbpsi/pmt.h>])
1972     else
1973       AC_MSG_CHECKING(for libdvbpsi.a in ${with_dvbpsi_tree})
1974       real_dvbpsi_tree="`cd ${with_dvbpsi_tree} 2>/dev/null && pwd`"
1975       if test -z "${real_dvbpsi_tree}"
1976       then
1977         dnl  The given directory can't be found
1978         AC_MSG_RESULT(no)
1979         AC_MSG_ERROR([cannot cd to ${with_dvbpsi_tree}])
1980       fi
1981       if test -f "${real_dvbpsi_tree}/src/.libs/libdvbpsi.a"
1982       then
1983         dnl  Use a custom libdvbpsi
1984         AC_MSG_RESULT(${real_dvbpsi_tree}/src/.libs/libdvbpsi.a)
1985         VLC_ADD_PLUGIN([ts])
1986         if test "${enable_sout}" != "no"; then
1987           VLC_ADD_PLUGIN([mux_ts])
1988         fi
1989         VLC_ADD_CPPFLAGS([mux_ts ts dvb],[-I${real_dvbpsi_tree}/src])
1990         VLC_ADD_LIBS([mux_ts ts dvb],[${real_dvbpsi_tree}/src/.libs/libdvbpsi.a])
1991         have_dvbpsi=yes
1992       else
1993         dnl  The given libdvbpsi wasn't built
1994         AC_MSG_RESULT(no)
1995         AC_MSG_ERROR([cannot find ${real_dvbpsi_tree}/src/.libs/libdvbpsi.a, make sure you compiled libdvbpsi in ${with_dvbpsi_tree}])
1996       fi
1997     fi
1998   ;;
1999   no)
2000     dnl  Compile without dvbpsi
2001   ;;
2002   *)
2003     AC_MSG_CHECKING(for dvbpsi headers in ${with_dvbpsi})
2004     if test -z "${with_dvbpsi}"
2005     then
2006       LDFLAGS_test=""
2007       CPPFLAGS_test=""
2008     else
2009       LDFLAGS_test="-L${with_dvbpsi}/lib"
2010       CPPFLAGS_test="-I${with_dvbpsi}/include"
2011     fi
2012     CPPFLAGS="${CPPFLAGS_save} ${CPPFLAGS_test}"
2013     AC_CHECK_HEADERS([dvbpsi/dr.h],[
2014       VLC_ADD_PLUGIN([ts])
2015       if test "${enable_sout}" != "no"; then
2016         AC_CHECK_LIB(dvbpsi, dvbpsi_SDTServiceAddDescriptor,
2017            [VLC_ADD_PLUGIN([mux_ts])], [], [${LDFLAGS_test} -ldvbpsi])
2018       fi
2019       VLC_ADD_CPPFLAGS([mux_ts ts dvb],[${CPPFLAGS_test}])
2020       VLC_ADD_LIBS([mux_ts ts dvb],[${LDFLAGS_test} -ldvbpsi])
2021       have_dvbpsi=yes
2022     ],[
2023       if test -n "${enable_dvbpsi}"
2024       then
2025         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])
2026       fi
2027     ],
2028     [#if defined( HAVE_STDINT_H )
2029 #   include <stdint.h>
2030 #elif defined( HAVE_INTTYPES_H )
2031 #   include <inttypes.h>
2032 #endif
2033 #include <dvbpsi/dvbpsi.h>
2034 #include <dvbpsi/descriptor.h>
2035 #include <dvbpsi/pat.h>
2036 #include <dvbpsi/pmt.h>])
2037     CPPFLAGS="${CPPFLAGS_save}"
2038   ;;
2039   esac
2040   AC_CHECK_LIB(dvbpsi, dvbpsi_GenSDTSections, [
2041     AC_DEFINE(HAVE_DVBPSI_SDT, 1, [Define if you have dvbpsi_GenSDTSections.])
2042   ], [], [${LIBS_ts}])
2043
2044 fi
2045
2046 dnl
2047 dnl  Video4Linux2 plugin
2048 dnl
2049 AC_ARG_ENABLE(v4l2,
2050   [  --enable-v4l2           Video4Linux2 input support (default enabled)])
2051 if test "${enable_v4l2}" != "no"
2052 then
2053   AC_ARG_WITH(v4l2,
2054     [  --with-v4l2=PATH        path to a v4l2-enabled kernel tree],[],[])
2055   if test "${with_v4l2}" != "no" -a -n "${with_v4l2}"
2056   then
2057     VLC_ADD_CPPFLAGS([v4l2],[-I${with_v4l2}/include])
2058   fi
2059
2060   CPPFLAGS="${CPPFLAGS_save} ${CPPFLAGS_v4l2}"
2061   AC_CHECK_HEADERS(linux/videodev2.h sys/videoio.h, [
2062     VLC_ADD_PLUGIN([v4l2])
2063   ],[])
2064   CPPFLAGS="${CPPFLAGS_save}"
2065 fi
2066
2067 dnl
2068 dnl libv4l2 support for video4linux.
2069 dnl
2070 AC_ARG_ENABLE( libv4l2,
2071   [  --enable-libv4l2        Libv4l2 Video4Linux2 support (default enabled)])
2072 if test "${enable_libv4l2}" != "no" -a "${enable_v4l2}" != "no"
2073 then
2074     PKG_CHECK_MODULES( LIBV4L2, libv4l2, [
2075       VLC_ADD_LDFLAGS([v4l2],[${LIBV4L2_LIBS}])
2076       VLC_ADD_CFLAGS([v4l2],[${LIBV4L2_CFLAGS}])
2077       AC_DEFINE(HAVE_LIBV4L2, 1, Define if libv4l2 is available)],
2078       AC_MSG_WARN([LibV4L2 support disabled because libv4l2 development headers were not found])
2079     )
2080 fi
2081
2082 dnl
2083 dnl  special access module for Hauppauge PVR cards
2084 dnl
2085 AC_ARG_ENABLE(pvr,
2086   [  --enable-pvr            PVR cards access module (default disabled)])
2087 if test "${enable_pvr}" = "yes"
2088 then
2089   VLC_ADD_PLUGIN([pvr])
2090   AC_ARG_WITH(videodev2,
2091     [  --with-videodev2=FILE   Location of videodev2.h file (default /usr/include/linux/videodev2.h)],[],[])
2092   if test "${with_videodev2}" != "no" -a -n "${with_videodev2}"
2093   then
2094     AC_DEFINE_UNQUOTED(VIDEODEV2_H_FILE, "${with_videodev2}", [Location of videodev2.h])
2095   fi
2096
2097   AC_CACHE_CHECK([for new linux/videodev2.h],
2098       [ac_cv_new_linux_videodev2_h],
2099       [AC_TRY_COMPILE([
2100           #include <sys/types.h>
2101           #   ifdef VIDEODEV2_H_FILE
2102           #   include VIDEODEV2_H_FILE
2103           #   else
2104           #   include <linux/videodev2.h>
2105           #   endif
2106           ],
2107           [struct v4l2_ext_controls ctrls; ctrls.ctrl_class = V4L2_CTRL_CLASS_MPEG; ],
2108           ac_cv_new_linux_videodev2_h=yes,
2109           ac_cv_new_linux_videodev2_h=no)])
2110   if test "${ac_cv_new_linux_videodev2_h}" != "no"; then
2111     AC_DEFINE(HAVE_NEW_LINUX_VIDEODEV2_H, 1, [Define if new linux/videodev2.h present])
2112   fi
2113 fi
2114
2115 dnl
2116 dnl special access module for Blackmagic SDI cards
2117 dnl
2118 AC_ARG_ENABLE(decklink,
2119   [  --enable-decklink       Blackmagic DeckLink SDI access module (default enabled)])
2120 if test "${enable_decklink}" != "no"
2121 then
2122   AC_ARG_WITH(decklink_sdk,
2123     [  --with-decklink-sdk=DIR      Location of Blackmagic DeckLink SDI SDK],[],[])
2124   if test "${with_decklink_sdk}" != "no" -a -n "${with_decklink_sdk}"
2125   then
2126     VLC_ADD_CPPFLAGS([decklink],[-I${with_decklink_sdk}/include])
2127   fi
2128   CPPFLAGS="${CPPFLAGS_save} ${CPPFLAGS_decklink}"
2129   AC_LANG_PUSH(C++)
2130   AC_CHECK_HEADERS(DeckLinkAPIDispatch.cpp, [
2131     VLC_ADD_PLUGIN([decklink])
2132   ],[AC_MSG_WARN(Blackmagic DeckLink SDI include files not found, decklink disabled)])
2133   AC_LANG_POP(C++)
2134   CPPFLAGS="${CPPFLAGS_save}"
2135 fi
2136
2137
2138 dnl
2139 dnl  gnomeVFS access module
2140 dnl
2141 PKG_ENABLE_MODULES_VLC([GNOMEVFS], [access_gnomevfs], [gnome-vfs-2.0], [GnomeVFS access module], [auto])
2142
2143 dnl
2144 dnl  VCDX modules
2145 dnl
2146 AC_ARG_ENABLE(vcdx,
2147   [  --enable-vcdx           VCD with navigation via libvcdinfo (default disabled)])
2148
2149 if test "${enable_vcdx}" = "yes"
2150 then
2151         PKG_CHECK_MODULES(LIBCDIO, [libcdio >= 0.78.2 libiso9660 >= 0.72],
2152           [VLC_ADD_LIBS([vcdx],[$LIBCDIO_LIBS])
2153                  VLC_ADD_CFLAGS([vcdx],[$LIBCDIO_CFLAGS])],
2154                 [AC_MSG_ERROR([vcdx plugin requires libcdio >= 0.78.2 and libiso9660 >= 0.72])])
2155         PKG_CHECK_MODULES(LIBVCDINFO, libvcdinfo >= 0.7.22,
2156                 [VLC_ADD_LIBS([vcdx],[$LIBVCDINFO_LIBS])
2157                  VLC_ADD_CFLAGS([vcdx],[$LIBVCDINFO_CFLAGS])],
2158           [AC_MSG_ERROR([vcdx plugin requires libvcdinfo library >= 0.7.22])])
2159         VLC_ADD_PLUGIN([vcdx])
2160 fi
2161
2162 dnl
2163 dnl  Built-in CD-DA and VCD module
2164 dnl
2165 AC_ARG_ENABLE(vcd,
2166   [  --enable-vcd            built-in VCD and CD-DA (default enabled)])
2167
2168 AC_ARG_ENABLE(libcddb,
2169   [  --enable-libcddb        CDDB support for libcdio audio CD (default enabled)])
2170
2171 if test "${enable_vcd}" != "no"
2172 then
2173   AC_MSG_CHECKING(for cdrom_msf0 in linux/cdrom.h)
2174   AC_EGREP_HEADER(cdrom_msf0,linux/cdrom.h,[
2175     AC_MSG_RESULT(yes)
2176     VLC_ADD_PLUGIN([vcd cdda])
2177   ],[
2178     AC_MSG_RESULT(no)
2179   ])
2180
2181   AC_MSG_CHECKING(for scsireq in sys/scsiio.h)
2182   AC_EGREP_HEADER(scsireq,sys/scsiio.h,[
2183     AC_MSG_RESULT(yes)
2184     VLC_ADD_PLUGIN([vcd cdda])
2185     AC_DEFINE(HAVE_SCSIREQ_IN_SYS_SCSIIO_H, 1, For NetBSD VCD support)
2186   ],[
2187     AC_MSG_RESULT(no)
2188   ])
2189
2190   AC_MSG_CHECKING(for ioc_toc_header in sys/cdio.h)
2191   AC_EGREP_HEADER(ioc_toc_header ,sys/cdio.h,[
2192     AC_MSG_RESULT(yes)
2193     VLC_ADD_PLUGIN([vcd cdda])
2194     AC_DEFINE(HAVE_IOC_TOC_HEADER_IN_SYS_CDIO_H, 1, For FreeBSD VCD support)
2195   ],[
2196     AC_MSG_RESULT(no)
2197   ])
2198
2199   if test "${SYS}" = "bsdi" -o "${SYS}" = "mingw32"
2200   then
2201     VLC_ADD_PLUGIN([vcd cdda])
2202   fi
2203
2204   if test "${SYS}" = "darwin"
2205   then
2206     VLC_ADD_PLUGIN([vcd cdda])
2207     VLC_ADD_LDFLAGS([vcd vcdx cdda],[-Wl,-framework,IOKit,-framework,CoreFoundation])
2208     VLC_ADD_LIBS([vcdx cdda],[-liconv])
2209   fi
2210
2211   if test "$enable_libcddb" != "no"; then
2212     PKG_CHECK_MODULES(LIBCDDB, libcddb >= 0.9.5, [
2213       HAVE_LIBCDDB=yes
2214       AC_DEFINE(HAVE_LIBCDDB, 1, [Define this if you have libcddb installed])
2215       VLC_ADD_LIBS([cdda],[$LIBCDDB_LIBS])
2216       VLC_ADD_CFLAGS([cdda],[$LIBCDDB_CFLAGS])
2217       ],:
2218       [AC_MSG_WARN(new enough libcddb not found. CDDB access disabled)
2219       HAVE_LIBCDDB=no])
2220   fi
2221 fi
2222
2223 dnl
2224 dnl  DVB-S/DVB-T/DVB-C satellite/teresterial/cable input using v4l2
2225 dnl
2226 AC_ARG_ENABLE(dvb,
2227   [  --enable-dvb            DVB-S/T/C card support (default enabled)])
2228
2229 if test "${enable_dvb}" != "no"
2230 then
2231     AS_IF([test "${have_dvbpsi}" = "yes" ],[
2232     AC_ARG_WITH(dvb,
2233      [  --with-dvb=PATH         path to a dvb- and v4l2-enabled kernel tree],[],[])
2234      if test "${with_dvb}" != "no" -a -n "${with_dvb}"
2235      then
2236        VLC_ADD_CFLAGS([dvb],[-I${with_dvb}/include])
2237      fi
2238      CPPFLAGS="${CPPFLAGS_save} -I${with_dvb}/include"
2239      AC_CHECK_HEADERS(linux/dvb/version.h linux/dvb/frontend.h, [
2240      VLC_ADD_PLUGIN([dvb])
2241      ],[AC_MSG_WARN(linux-dvb headers not found, dvb disabled)])
2242      CPPFLAGS="${CPPFLAGS_save}"
2243    ],[
2244      AC_MSG_WARN([the dvb access module requires libdvbpsi])
2245     ])
2246 fi
2247
2248 dnl
2249 dnl  Screen capture module
2250 dnl
2251 AC_ARG_ENABLE(screen,
2252   [  --enable-screen         Screen capture support (default enabled)])
2253 if test "${enable_screen}" != "no"; then
2254   if test "${SYS}" = "darwin"; then
2255     AC_CHECK_HEADERS(OpenGL/gl.h, [
2256       AC_CHECK_HEADERS(ApplicationServices/ApplicationServices.h, [
2257         VLC_ADD_PLUGIN([screen])
2258         VLC_ADD_LDFLAGS([screen],[-Wl,-framework,OpenGL,-framework,ApplicationServices])
2259       ])
2260     ])
2261   elif test "${SYS}" = "mingw32"; then
2262     VLC_ADD_PLUGIN([screen])
2263     VLC_ADD_LIBS([screen],[-lgdi32])
2264   elif test "${SYS}" = "mingwce"; then
2265     CPPFLAGS="${CPPFLAGS_save}"
2266   fi
2267 fi
2268
2269 dnl
2270 dnl  ipv6 plugin
2271 dnl
2272 have_ipv6=no
2273 AC_CHECK_FUNCS(inet_pton,[have_ipv6=yes],[
2274   AC_CHECK_LIB(nsl,inet_pton, [have_ipv6=yes])
2275 ])
2276
2277 AS_IF([test "${have_ipv6}" = "yes"], [
2278   AC_DEFINE(HAVE_INET_PTON, 1, [Define to 1 if you have inet_pton().])])
2279
2280
2281 AC_CHECK_FUNCS(inet_ntop,[
2282   AC_DEFINE(HAVE_INET_NTOP, 1, [Define to 1 if you have inet_ntop().])])
2283
2284
2285 dnl
2286 dnl  GME demux plugin
2287 dnl
2288 AC_ARG_ENABLE(gme,
2289   [  --enable-gme            Game Music Emu support (default auto)])
2290 AS_IF([test "${enable_gme}" != "no"], [
2291   AC_CHECK_HEADER([gme/gme.h], [
2292     VLC_ADD_LIBS([gme], [-lgme])
2293     VLC_ADD_PLUGIN([gme])
2294   ], [
2295     AS_IF([test "x${enable_gme}" != "x"], [
2296       AC_MSG_ERROR([GME cannot be found. Please install the development files.])
2297     ])
2298   ])
2299 ])
2300
2301
2302 dnl
2303 dnl  ogg demux plugin
2304 dnl
2305 PKG_ENABLE_MODULES_VLC([OGG], [], [ogg >= 1.0], [Ogg demux support], [auto])
2306 if test "${enable_sout}" != "no"; then
2307     PKG_ENABLE_MODULES_VLC([MUX_OGG], [], [ogg >= 1.0], [Ogg mux support], [auto])
2308 fi
2309
2310 if test "${enable_sout}" != "no"; then
2311 dnl Check for libshout
2312 PKG_ENABLE_MODULES_VLC([SHOUT], [access_output_shout], [shout >= 2.1], [libshout output plugin], [auto])
2313 fi
2314
2315 dnl
2316 dnl  matroska demux plugin
2317 dnl
2318 AC_ARG_ENABLE(mkv,
2319   [  --enable-mkv            Matroska demux support (default enabled)])
2320 if test "${enable_mkv}" != "no" -a "${CXX}" != ""; then
2321   AC_LANG_PUSH(C++)
2322   AC_CHECK_HEADERS(ebml/EbmlVersion.h, [
2323     AC_MSG_CHECKING(for libebml version >= 1.0.0)
2324     AC_EGREP_CPP(yes,
2325       [#include <ebml/EbmlVersion.h>
2326        #ifdef LIBEBML_VERSION
2327        #if LIBEBML_VERSION >= 0x010000
2328        yes
2329        #endif
2330        #endif],
2331       [AC_MSG_RESULT([yes])
2332         AC_CHECK_HEADERS(matroska/KaxVersion.h, [
2333           AC_MSG_CHECKING(for libmatroska version >= 1.0.0)
2334           AC_EGREP_CPP(yes,
2335             [#include <matroska/KaxVersion.h>
2336              #ifdef LIBMATROSKA_VERSION
2337              #if LIBMATROSKA_VERSION >= 0x010000
2338              yes
2339              #endif
2340              #endif],
2341             [AC_MSG_RESULT([yes])
2342               AC_CHECK_HEADERS(matroska/KaxAttachments.h)
2343               VLC_ADD_CXXFLAGS([mkv],[])
2344               if test "${SYS}" = "darwin"; then
2345                 VLC_ADD_CXXFLAGS([mkv],[-O1])
2346               fi
2347               AC_CHECK_LIB(ebml_pic, main, [
2348                 VLC_ADD_PLUGIN([mkv])
2349                 VLC_ADD_LIBS([mkv],[-lmatroska -lebml_pic])
2350               ],
2351                 AC_CHECK_LIB(ebml, main, [
2352                   VLC_ADD_PLUGIN([mkv])
2353                   VLC_ADD_LIBS([mkv],[-lmatroska -lebml])
2354                 ])
2355       )
2356             ],
2357             [AC_MSG_RESULT([no])
2358               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.])
2359           ])
2360         ])
2361       ],
2362       [AC_MSG_RESULT([no])
2363         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.])
2364     ])
2365   ])
2366   AC_LANG_POP(C++)
2367 fi
2368
2369 dnl
2370 dnl  modplug demux plugin
2371 dnl
2372 AC_ARG_ENABLE(mod,
2373   [  --enable-mod            Mod demux support (default auto)])
2374 if test "${enable_mod}" != "no" ; then
2375     PKG_CHECK_MODULES(LIBMODPLUG, [libmodplug >= 0.8.4 libmodplug != 0.8.8], [
2376           VLC_ADD_PLUGIN([mod])
2377           VLC_ADD_CXXFLAGS([mod],[$LIBMODPLUG_CFLAGS])
2378           VLC_ADD_LIBS([mod],[$LIBMODPLUG_LIBS])
2379     ],[
2380        AS_IF([test x"${enable_mod}" = "xyes"],
2381          [AC_MSG_ERROR(libmodplug not found or a broken version (0.8.8.0) was found!)],
2382          [AC_MSG_WARN(libmodplug not found or a broken version (0.8.8.0) was found!)])
2383     ])
2384 fi
2385
2386 dnl
2387 dnl  mpc demux plugin
2388 dnl
2389 AC_ARG_ENABLE(mpc,
2390   [  --enable-mpc            Mpc demux support (default enabled)])
2391 if test "${enable_mpc}" != "no"
2392 then
2393   AC_CHECK_HEADERS([mpc/mpcdec.h], [
2394     VLC_ADD_PLUGIN([mpc])
2395     VLC_ADD_LIBS([mpc],[-lmpcdec])],
2396     [AC_CHECK_HEADERS([mpcdec/mpcdec.h], [
2397     VLC_ADD_PLUGIN([mpc])
2398     VLC_ADD_LIBS([mpc],[-lmpcdec])])])
2399 fi
2400
2401 dnl
2402 dnl  Codec plugins
2403 dnl
2404
2405 EXTEND_HELP_STRING([Codec plugins:])
2406
2407 dnl
2408 dnl wmafixed plugin
2409 dnl
2410 AC_ARG_ENABLE(wma-fixed,
2411   [  --enable-wma-fixed      libwma-fixed module (default disabled)])
2412 if test "${enable_wma_fixed}" = "yes"
2413 then
2414   VLC_ADD_PLUGIN([wma_fixed])
2415 fi
2416
2417 dnl
2418 dnl shine fixed point mp3 encoder
2419 dnl
2420 AC_ARG_ENABLE(shine,
2421   [  --enable-shine          shine mp3 encoding module (default disabled)])
2422 if test "${enable_shine}" = "yes"
2423 then
2424   VLC_ADD_PLUGIN([shine])
2425 fi
2426
2427 dnl
2428 dnl openmax il codec plugin
2429 dnl
2430 AC_ARG_ENABLE(omxil,
2431   [  --enable-omxil          openmax il codec module (default disabled)])
2432 if test "${enable_omxil}" = "yes"
2433 then
2434   VLC_ADD_PLUGIN([omxil])
2435   VLC_ADD_LIBS([omxil], [$LIBDL])
2436 fi
2437
2438 dnl
2439 dnl  mad plugin
2440 dnl
2441 AC_ARG_ENABLE(mad,
2442   [  --enable-mad            libmad module (default enabled)])
2443 if test "${enable_mad}" != "no"
2444 then
2445   AC_ARG_WITH(mad,
2446     [  --with-mad=PATH         path to libmad],[],[])
2447   if test "${with_mad}" != "no" -a -n "${with_mad}"
2448   then
2449     VLC_ADD_CPPFLAGS([mpgatofixed32],[-I${with_mad}/include])
2450     VLC_ADD_LIBS([mpgatofixed32],[-L${with_mad}/lib])
2451   fi
2452
2453   AC_ARG_WITH(mad-tree,
2454     [  --with-mad-tree=PATH    mad tree for static linking],[],[])
2455   if test "${with_mad_tree}" != "no" -a -n "${with_mad_tree}"
2456   then
2457     real_mad_tree="`cd ${with_mad_tree} 2>/dev/null && pwd`"
2458     if test -z "${real_mad_tree}"
2459     then
2460       dnl  The given directory can't be found
2461       AC_MSG_RESULT(no)
2462       AC_MSG_ERROR([${with_mad_tree} directory doesn't exist])
2463     fi
2464     dnl  Use a custom libmad
2465     AC_MSG_CHECKING(for mad.h in ${real_mad_tree})
2466     if test -f ${real_mad_tree}/mad.h
2467     then
2468       AC_MSG_RESULT(yes)
2469       VLC_ADD_CPPFLAGS([mpgatofixed32],[-I${real_mad_tree}])
2470       VLC_ADD_LIBS([mpgatofixed32],[-L${real_mad_tree}/.libs])
2471       LDFLAGS="${LDFLAGS_save} ${LIBS_mpgatofixed32}"
2472       AC_CHECK_LIB(mad, mad_bit_init, [
2473         VLC_ADD_PLUGIN([mpgatofixed32])
2474         VLC_ADD_LIBS([mpgatofixed32],[-lmad])
2475         ],[ AC_MSG_ERROR([the specified tree hasn't been compiled ])
2476       ],[])
2477       LDFLAGS="${LDFLAGS_save}"
2478     else
2479       AC_MSG_RESULT(no)
2480       AC_MSG_ERROR([the specified tree doesn't have mad.h])
2481     fi
2482   else
2483     CPPFLAGS="${CPPFLAGS_save} ${CPPFLAGS_mpgatofixed32}"
2484     LDFLAGS="${LDFLAGS_save} ${LIBS_mpgatofixed32}"
2485     AC_CHECK_HEADERS(mad.h, ,
2486       [ 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.]) ])
2487     AC_CHECK_LIB(mad, mad_bit_init, [
2488       VLC_ADD_PLUGIN([mpgatofixed32])
2489       VLC_ADD_LIBS([mpgatofixed32],[-lmad])],
2490       [ AC_MSG_ERROR([Cannot find libmad library...]) ])
2491     CPPFLAGS="${CPPFLAGS_save}"
2492     LDFLAGS="${LDFLAGS_save}"
2493   fi
2494 fi
2495
2496
2497 AC_ARG_ENABLE(merge-ffmpeg,
2498 [  --enable-merge-ffmpeg   merge FFmpeg-based plugins (default disabled)],, [
2499   enable_merge_ffmpeg="no"
2500 ])
2501 AM_CONDITIONAL([MERGE_FFMPEG], [test "$enable_merge_ffmpeg" != "no"])
2502
2503 AC_CACHE_CHECK([if linker supports -Bsymbolic],
2504   [ac_cv_ld_bsymbolic],
2505   [LDFLAGS="${LDFLAGS_vlc} -Wl,-Bsymbolic"
2506     AC_TRY_LINK([],,ac_cv_ld_bsymbolic=yes,ac_cv_ld_bsymbolic=no)
2507     LDFLAGS="${LDFLAGS_save}"
2508   ])
2509
2510 dnl
2511 dnl  avcodec decoder/encoder plugin
2512 dnl
2513 AC_ARG_ENABLE(avcodec,
2514 [  --enable-avcodec        libavcodec codec (default enabled)])
2515 AS_IF([test "${enable_avcodec}" != "no"], [
2516   PKG_CHECK_MODULES(AVCODEC,[libavcodec >= 52.25.0 libavutil],
2517     [
2518       VLC_SAVE_FLAGS
2519       CPPFLAGS="${CPPFLAGS} ${AVCODEC_CFLAGS}"
2520       CFLAGS="${CFLAGS} ${AVCODEC_CFLAGS}"
2521       AC_CHECK_HEADERS(libavcodec/avcodec.h ffmpeg/avcodec.h)
2522       AC_CHECK_HEADERS(libavutil/avutil.h ffmpeg/avutil.h)
2523       VLC_ADD_PLUGIN([avcodec])
2524       VLC_ADD_LIBS([avcodec],[$AVCODEC_LIBS])
2525       AS_IF([test "${ac_cv_ld_bsymbolic}" != "no"], [
2526         VLC_ADD_LDFLAGS([avcodec],[-Wl,-Bsymbolic])
2527       ])
2528       VLC_ADD_CFLAGS([avcodec],[$AVCODEC_CFLAGS])
2529       VLC_RESTORE_FLAGS
2530       have_avcodec="yes"
2531     ],[
2532       AC_MSG_ERROR([Could not find libavcodec or libavutil. Use --disable-avcodec to ignore this error.])
2533   ])
2534 ], [
2535   have_avcodec="no"
2536 ])
2537
2538 dnl
2539 dnl libva needs avcodec
2540 dnl
2541 AC_ARG_ENABLE(libva,
2542   [  --enable-libva          libva VAAPI support (default auto)])
2543
2544 AS_IF([test "${enable_libva}" != "no"], [
2545   AS_IF([test "x${have_avcodec}" = "xyes"], [
2546     PKG_CHECK_MODULES(LIBVA, [libva libva-x11],
2547       [
2548         VLC_SAVE_FLAGS
2549         CPPFLAGS="${CPPFLAGS} ${AVCODEC_CFLAGS}"
2550         CFLAGS="${CFLAGS} ${AVCODEC_CFLAGS}"
2551         AC_CHECK_HEADERS(libavcodec/vaapi.h, [
2552            VLC_ADD_LIBS([avcodec],[$LIBVA_LIBS ${X_LIBS} ${X_PRE_LIBS} -lX11])
2553            VLC_ADD_CFLAGS([avcodec],[$LIBVA_CFLAGS ${X_CFLAGS}])
2554            AC_DEFINE(HAVE_AVCODEC_VAAPI, 1, [Define if avcodec has to be built with VAAPI support.])
2555            echo "VAAPI acceleration activated"
2556         ],[
2557         AS_IF([test "${enable_libva}" == "yes"],
2558               [AC_MSG_ERROR([libva is present but libavcodec/vaapi.h is missing])],
2559               [AC_MSG_WARN([libva is present but libavcodec/vaapi.h is missing ])])
2560         ])
2561         VLC_RESTORE_FLAGS
2562       ],[
2563         AS_IF([test "${enable_libva}" == "yes"],
2564               [AC_MSG_ERROR([Could not find required libva.])],
2565               [AC_MSG_WARN([libva not found  ])])
2566       ])
2567   ],[
2568     AS_IF([test "x${enable_libva}" != "x"], [
2569       AC_MSG_ERROR([--enable-libva and --disable-avcodec options are mutually exclusive.])
2570     ])
2571   ])
2572 ])
2573
2574 dnl
2575 dnl dxva2 needs avcodec
2576 dnl
2577 AC_ARG_ENABLE(dxva2,
2578   [  --enable-dxva2          DxVA2  support (default auto)])
2579
2580 AS_IF([test "${enable_dxva2}" != "no"], [
2581   if test "${SYS}" = "mingw32"; then
2582   AS_IF([test "x${have_avcodec}" = "xyes"], [
2583     AC_CHECK_HEADERS(dxva2api.h, 
2584       [
2585         AC_CHECK_HEADERS(libavcodec/dxva2.h, [
2586            VLC_ADD_LIBS([avcodec],[-lole32 -lshlwapi -luuid])
2587            AC_DEFINE(HAVE_AVCODEC_DXVA2, 1, [Define if avcodec has to be built with DxVA2 support.])
2588            echo "DxVA2 acceleration activated"
2589         ],[
2590         AS_IF([test "${enable_dxva2}" == "yes"],
2591               [AC_MSG_ERROR([dxva2 is present but libavcodec/dxva2.h is missing])],
2592               [AC_MSG_WARN([dxva2 is present but libavcodec/dxva2.h is missing ])])
2593         ])
2594       ],[
2595         AS_IF([test "${enable_dxva2}" == "yes"],
2596               [AC_MSG_ERROR([Could not find required dxva2api.h])],
2597               [AC_MSG_WARN([dxva2api.h not found])])
2598       ])
2599   ],[
2600     AS_IF([test "x${enable_dxva2}" != "x"], [
2601       AC_MSG_ERROR([--enable-dxva2 and --disable-avcodec options are mutually exclusive.])
2602     ])
2603   ])
2604   fi
2605 ])
2606
2607
2608 dnl
2609 dnl stream_out switcher needs libavcodec
2610 dnl
2611 AC_ARG_ENABLE(switcher,
2612   [  --enable-switcher       Stream-out switcher plugin (default disabled)])
2613 AS_IF([test "${enable_switcher}" = "yes"], [
2614   AS_IF([test "x${have_avcodec}" = "xyes"], [
2615     VLC_ADD_PLUGIN([stream_out_switcher])
2616     VLC_ADD_LIBS([stream_out_switcher],[$AVCODEC_LIBS $AVUTIL_LIBS])
2617     VLC_ADD_CFLAGS([stream_out_switcher],[$AVCODEC_CFLAGS $AVUTIL_CFLAGS])
2618   ],[AC_MSG_ERROR([Stream_out switcher depends on avcodec])
2619   ])
2620 ])
2621
2622
2623 dnl
2624 dnl  avformat demuxer/muxer plugin
2625 dnl
2626
2627 AC_ARG_ENABLE(avformat,
2628 [  --enable-avformat       libavformat containers (default enabled)],, [
2629   enable_avformat="${have_avcodec}"
2630 ])
2631 if test "${enable_avformat}" != "no"
2632 then
2633   PKG_CHECK_MODULES(AVFORMAT,[libavformat > 52.30.0 libavcodec libavutil],
2634     [
2635       VLC_SAVE_FLAGS
2636       CPPFLAGS="${CPPFLAGS} ${AVFORMAT_CFLAGS}"
2637       CFLAGS="${CFLAGS} ${AVFORMAT_CFLAGS}"
2638       AC_CHECK_HEADERS(libavformat/avformat.h ffmpeg/avformat.h)
2639       AC_CHECK_HEADERS(libavutil/avutil.h ffmpeg/avutil.h)
2640       AS_IF([test "$enable_merge_ffmpeg" = "no"], [
2641         VLC_ADD_PLUGIN([avformat access_avio])
2642         VLC_ADD_LIBS([avformat access_avio],[$AVFORMAT_LIBS $AVUTIL_LIBS])
2643         VLC_ADD_CFLAGS([avformat access_avio],[$AVFORMAT_CFLAGS $AVUTIL_CFLAGS])
2644         AS_IF([test "${ac_cv_ld_bsymbolic}" != "no"], [
2645           VLC_ADD_LDFLAGS([avformat access_avio],[-Wl,-Bsymbolic])
2646         ])
2647       ], [
2648         VLC_ADD_LIBS([avcodec],[$AVFORMAT_LIBS $AVUTIL_LIBS])
2649         VLC_ADD_CFLAGS([avcodec],[$AVFORMAT_CFLAGS $AVUTIL_CFLAGS])
2650       ])
2651       VLC_RESTORE_FLAGS
2652     ],[
2653       AC_MSG_ERROR([Could not find libavformat or libavutil. Use --disable-avformat to ignore this error.])
2654   ])
2655 fi
2656
2657 dnl
2658 dnl  swscale image scaling and conversion plugin
2659 dnl
2660
2661 AC_ARG_ENABLE(swscale,
2662   AS_HELP_STRING([--enable-swscale],[libswscale image scaling and conversion
2663                   (default enabled)]))
2664 if test "${enable_swscale}" != "no"
2665 then
2666   PKG_CHECK_MODULES(SWSCALE,[libswscale],
2667     [
2668       VLC_SAVE_FLAGS
2669       CPPFLAGS="${CPPFLAGS} ${SWSCALE_CFLAGS}"
2670       CFLAGS="${CFLAGS} ${SWSCALE_CFLAGS}"
2671       AC_CHECK_HEADERS(libswscale/swscale.h ffmpeg/swscale.h)
2672       VLC_ADD_PLUGIN([swscale])
2673       VLC_ADD_LIBS([swscale],[$SWSCALE_LIBS])
2674       VLC_ADD_CFLAGS([swscale],[$SWSCALE_CFLAGS])
2675       AS_IF([test "${ac_cv_ld_bsymbolic}" != "no"], [
2676         VLC_ADD_LDFLAGS([swscale],[-Wl,-Bsymbolic])
2677       ])
2678       VLC_RESTORE_FLAGS
2679     ],[
2680       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.])
2681   ])
2682 fi
2683
2684 dnl
2685 dnl  postproc plugin
2686 dnl
2687
2688 AC_ARG_ENABLE(postproc,
2689 [  --enable-postproc       libpostproc image post-processing (default enabled)])
2690 if test "${enable_postproc}" != "no"
2691 then
2692   PKG_CHECK_MODULES(POSTPROC,[libpostproc libavutil],
2693     [
2694       VLC_SAVE_FLAGS
2695       CPPFLAGS="${CPPFLAGS} ${POSTPROC_CFLAGS}"
2696       CFLAGS="${CFLAGS} ${POSTPROC_CFLAGS}"
2697       AC_CHECK_HEADERS(postproc/postprocess.h)
2698       VLC_ADD_PLUGIN([postproc])
2699       VLC_ADD_LIBS([postproc],[$POSTPROC_LIBS $AVUTIL_LIBS])
2700       VLC_ADD_CFLAGS([postproc],[$POSTPROC_CFLAGS $AVUTIL_CFLAGS])
2701       VLC_RESTORE_FLAGS
2702     ],[
2703       AC_MSG_ERROR([Could not find libpostproc. Use --disable-postproc to ignore this error.])
2704   ])
2705 fi
2706
2707 dnl
2708 dnl  faad decoder plugin
2709 dnl
2710 AC_ARG_ENABLE(faad,
2711 [  --enable-faad           faad codec (default disabled)])
2712 if test "${enable_faad}" = "yes"
2713 then
2714   AC_ARG_WITH(faad-tree,
2715   [  --with-faad-tree=PATH   faad tree for static linking])
2716   if test -n "${with_faad_tree}"
2717   then
2718     AC_MSG_CHECKING(for libfaad.a in ${with_faad_tree})
2719     real_faad_tree="`cd ${with_faad_tree} 2>/dev/null && pwd`"
2720     if test -z "${real_faad_tree}"
2721     then
2722       dnl  The given directory can't be found
2723       AC_MSG_RESULT(no)
2724       AC_MSG_ERROR([cannot cd to ${with_faad_tree}])
2725     fi
2726     if test -f "${real_faad_tree}/libfaad/.libs/libfaad.a"
2727     then
2728       dnl  Use a custom faad
2729       AC_MSG_RESULT(${real_faad_tree}/libfaad/.libs/libfaad.a)
2730       VLC_ADD_PLUGIN([faad])
2731       VLC_ADD_LIBS([faad],[${real_faad_tree}/libfaad/.libs/libfaad.a])
2732       VLC_ADD_CPPFLAGS([faad],[-I${real_faad_tree}/include])
2733     else
2734       dnl  The given libfaad wasn't built
2735       AC_MSG_RESULT(no)
2736       AC_MSG_ERROR([cannot find ${real_faad_tree}/libfaad/.libs/libfaad.a, make sure you compiled libfaad in ${with_faad_tree}])
2737     fi
2738   else
2739     CPPFLAGS="${CPPFLAGS_save} ${CPPFLAGS_faad}"
2740     LDFLAGS="${LDFLAGS_save} ${LIBS_faad}"
2741     AC_CHECK_HEADERS(faad.h, ,
2742       [ AC_MSG_ERROR([Cannot find development headers for libfaad...]) ])
2743     AC_CHECK_LIB(faad, faacDecOpen, [
2744       VLC_ADD_PLUGIN([faad])
2745       VLC_ADD_LIBS([faad],[-lfaad]) ],
2746       AC_CHECK_LIB(faad, NeAACDecOpen, [
2747         VLC_ADD_PLUGIN([faad])
2748         VLC_ADD_LIBS([faad],[-lfaad]) ],
2749         [ AC_MSG_ERROR([Cannot find libfaad library...]) ]))
2750     LDFLAGS="${LDFLAGS_save}"
2751     CPPFLAGS="${CPPFLAGS_save}"
2752   fi
2753 fi
2754
2755 dnl
2756 dnl twolame encoder plugin
2757 dnl
2758 PKG_ENABLE_MODULES_VLC([TWOLAME], [], [twolame], [MPEG Audio Layer 2 encoder], [auto], [], [], [ -DLIBTWOLAME_STATIC])
2759
2760 dnl
2761 dnl  QuickTime plugin
2762 dnl
2763 AC_ARG_ENABLE(quicktime,
2764   [  --enable-quicktime      QuickTime module (deprecated)])
2765 if test "${enable_quicktime}" = "yes"; then
2766   if test "${SYS}" = "mingw32"; then
2767     VLC_ADD_PLUGIN([quicktime])
2768   else
2769   AC_CHECK_HEADERS(QuickTime/QuickTime.h,
2770     [ VLC_ADD_PLUGIN([quicktime])
2771       VLC_ADD_LDFLAGS([quicktime],[-Wl,-framework,QuickTime,-framework,Carbon])
2772     ], [ AC_MSG_ERROR([cannot find QuickTime headers]) ])
2773   fi
2774 fi
2775
2776 dnl
2777 dnl  Real plugin
2778 dnl
2779 AC_ARG_ENABLE(real,
2780   [  --enable-real           Real media module (default disabled)])
2781 if test "${enable_real}" = "yes"; then
2782   VLC_ADD_PLUGIN([realvideo])
2783 fi
2784
2785 dnl
2786 dnl  Real RTSP plugin
2787 dnl
2788 AC_ARG_ENABLE(realrtsp,
2789   [  --enable-realrtsp       Real RTSP module (default disabled)])
2790 if test "${enable_realrtsp}" = "yes"; then
2791   VLC_ADD_PLUGIN([access_realrtsp])
2792 fi
2793
2794 dnl
2795 dnl skins2 module
2796 dnl
2797 AC_ARG_ENABLE(libtar,
2798   [  --enable-libtar         libtar support for skins2 (default enabled)])
2799
2800 AS_IF([test "${enable_libtar}" != "no"],[
2801   AC_CHECK_HEADERS(libtar.h, [
2802     VLC_ADD_LIBS([skins2],[-ltar])
2803   ] )
2804 ])
2805
2806 dnl
2807 dnl A52/AC3 decoder plugin
2808 dnl
2809 AC_ARG_ENABLE(a52,
2810   [  --enable-a52            A/52 support with liba52 (default enabled)])
2811 if test "${enable_a52}" != "no"
2812 then
2813   AC_ARG_WITH(a52,
2814     [  --with-a52=PATH         a52 headers and libraries])
2815   AC_ARG_WITH(a52-tree,
2816     [  --with-a52-tree=PATH    a52dec tree for static linking ],[],[])
2817   if test "${with_a52_tree}" != "no" -a -n "${with_a52_tree}"
2818   then
2819     real_a52_tree="`cd ${with_a52_tree} 2>/dev/null && pwd`"
2820     if test -z "${real_a52_tree}"
2821     then
2822       dnl  The given directory can't be found
2823       AC_MSG_RESULT(no)
2824       AC_MSG_ERROR([${with_a52_tree} directory doesn't exist])
2825     fi
2826     dnl  Use a custom a52dec
2827     AC_MSG_CHECKING(for a52.h in ${real_a52_tree}/include)
2828     if test -f ${real_a52_tree}/include/a52.h
2829     then
2830       AC_MSG_RESULT(yes)
2831       VLC_ADD_CPPFLAGS([a52tofloat32],[-I${real_a52_tree}])
2832       VLC_ADD_LIBS([a52tofloat32],[-L${real_a52_tree}/liba52/.libs])
2833       LDFLAGS="${LDFLAGS_save} ${LIBS_a52tofloat32}"
2834       AC_CHECK_LIB(a52, a52_free, [
2835         VLC_ADD_PLUGIN([a52tofloat32])
2836         VLC_ADD_CPPFLAGS([a52tofloat32],[-DUSE_A52DEC_TREE])
2837         VLC_ADD_LIBS([a52tofloat32],[-la52])
2838         ],[
2839         if test -f ${real_a52_tree}/liba52/.libs/liba52.a
2840         then
2841           AC_MSG_ERROR([make sure you have at least a52dec-0.7.3 ($real_a52_tree)])
2842         else
2843           AC_MSG_ERROR([the specified tree hasn't been compiled])
2844         fi
2845       ])
2846       LDFLAGS="${LDFLAGS_save}"
2847     else
2848       AC_MSG_RESULT(no)
2849       AC_MSG_ERROR([the specified tree doesn't have a52.h])
2850     fi
2851   else
2852     if test -z "${with_a52}"
2853     then
2854       LDFLAGS_test=""
2855       CPPFLAGS_test=""
2856     else
2857       LDFLAGS_test="-L${with_a52}/lib"
2858       CPPFLAGS_test="-I${with_a52}/include"
2859     fi
2860     CPPFLAGS="${CPPFLAGS_save} ${CPPFLAGS_test} ${CPPFLAGS_a52tofloat32}"
2861     LDFLAGS="${LDFLAGS_save} ${LDFLAGS_test} ${LIBS_a52tofloat32}"
2862     AC_CHECK_HEADERS(a52dec/a52.h, [
2863       AC_CHECK_LIB(a52, a52_free, [
2864         VLC_ADD_PLUGIN([a52tofloat32])
2865         VLC_ADD_LIBS([a52tofloat32],[${LDFLAGS_test} -la52])
2866         VLC_ADD_CPPFLAGS([a52tofloat32],[${CPPFLAGS_test}])
2867       ],[
2868         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.])
2869         ])
2870     ],[
2871       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.])
2872     ])
2873     CPPFLAGS="${CPPFLAGS_save}"
2874     LDFLAGS="${LDFLAGS_save}"
2875   fi
2876 fi
2877
2878 AC_ARG_WITH(a52-fixed,
2879       [  --with-a52-fixed        specify if liba52 has been compiled with fixed point support],
2880       [
2881         VLC_ADD_CPPFLAGS([a52tofloat32],[-DLIBA52_FIXED]) ])
2882
2883 dnl
2884 dnl DTS Coherent Acoustics decoder plugin
2885 dnl
2886 PKG_ENABLE_MODULES_VLC([DCA], [dtstofloat32], [libdca >= 0.0.5], [DTS Coherent Acoustics support with libdca], [auto])
2887
2888 dnl
2889 dnl  Flac plugin
2890 dnl
2891 PKG_ENABLE_MODULES_VLC([FLAC], [], [flac], [libflac decoder/encoder support], [auto])
2892
2893 dnl
2894 dnl  Libmpeg2 plugin
2895 dnl
2896 PKG_ENABLE_MODULES_VLC([LIBMPEG2], [], [libmpeg2 > 0.3.2], [libmpeg2 decoder support], [auto])
2897
2898 dnl
2899 dnl  Vorbis plugin
2900 dnl
2901 PKG_ENABLE_MODULES_VLC([VORBIS], [], [ogg vorbis >= 1.1 vorbisenc >= 1.1], [Vorbis decoder and encoder], [auto])
2902
2903 dnl
2904 dnl  Tremor plugin
2905 dnl
2906 AC_ARG_ENABLE(tremor,
2907   [  --enable-tremor         Tremor decoder support (default disabled)])
2908 if test "${enable_tremor}" = "yes"
2909 then
2910   AC_CHECK_HEADERS(tremor/ivorbiscodec.h, [
2911     VLC_ADD_PLUGIN([tremor])
2912     VLC_ADD_LIBS([tremor],[-lvorbisidec -logg])
2913    ],[])
2914 fi
2915
2916 dnl
2917 dnl  Speex plugin
2918 dnl
2919 PKG_ENABLE_MODULES_VLC([SPEEX], [], [ogg speex >= 1.0.5], [Speex decoder support], [auto])
2920
2921 dnl
2922 dnl  theora decoder plugin
2923 dnl
2924 PKG_ENABLE_MODULES_VLC([THEORA], [], [ogg theora >= 1.0], [experimental theora codec], [auto])
2925
2926 dnl
2927 dnl  dirac encoder plugin
2928 dnl
2929 PKG_ENABLE_MODULES_VLC([DIRAC], [], [dirac >= 0.10.0], [dirac encoder], [auto])
2930
2931 dnl
2932 dnl  schroedinger decoder plugin (for dirac format video)
2933 dnl
2934 PKG_ENABLE_MODULES_VLC([SCHROEDINGER], [], [schroedinger-1.0 >= 1.0.6], [dirac decoder using schroedinger], [auto])
2935
2936 dnl
2937 dnl  PNG decoder module
2938 dnl
2939 AC_ARG_ENABLE(png,
2940   [  --enable-png            PNG support (default enabled)])
2941 if test "${enable_png}" != "no"; then
2942 AC_CHECK_HEADERS(png.h, [
2943   LDFLAGS="${LDFLAGS_save} -lz"
2944   AC_CHECK_LIB(png, png_set_rows, [
2945     VLC_ADD_LIBS([png],[-lpng -lz])
2946     VLC_ADD_PLUGIN([png osdmenu osd_parser])],
2947     [],[-lz])
2948     LDFLAGS="${LDFLAGS_save}"
2949   ])
2950 fi
2951 AM_CONDITIONAL(BUILD_OSDMENU, [test "${enable_png}" != "no"])
2952
2953 dnl
2954 dnl H264 encoder plugin (using libx264)
2955 dnl
2956 AC_ARG_ENABLE(x264,
2957   [  --enable-x264           H264 encoding support with libx264 (default enabled)])
2958 if test "${enable_x264}" != "no"; then
2959   AC_ARG_WITH(x264-tree,
2960     [  --with-x264-tree=PATH   x264 tree for static linking ],[],[])
2961   if test "${with_x264_tree}" != "no" -a -n "${with_x264_tree}"
2962   then
2963     real_x264_tree="`cd ${with_x264_tree} 2>/dev/null && pwd`"
2964     if test -z "${real_x264_tree}"
2965     then
2966       dnl  The given directory can't be found
2967       AC_MSG_RESULT(no)
2968       AC_MSG_ERROR([${with_x264_tree} directory doesn't exist])
2969     fi
2970     dnl  Use a custom libx264
2971     AC_MSG_CHECKING(for x264.h in ${real_x264_tree})
2972     if test -f ${real_x264_tree}/x264.h
2973     then
2974       AC_MSG_RESULT(yes)
2975       VLC_ADD_CPPFLAGS([x264],[-I${real_x264_tree}])
2976       VLC_ADD_LIBS([x264],[-L${real_x264_tree}])
2977       PKG_CHECK_MODULES(X264,x264, [
2978         VLC_ADD_PLUGIN([x264])
2979         VLC_ADD_LDFLAGS([x264],[${X264_LIBS}])
2980         VLC_ADD_CFLAGS([x264],[${X264_CFLAGS}])
2981         if echo ${X264_LIBS} |grep -q 'pthreadGC2'; then
2982           VLC_ADD_CFLAGS([x264], [-DPTW32_STATIC_LIB])
2983         fi
2984       ],[
2985         AC_MSG_ERROR([the specified tree hasn't been compiled])
2986       ])
2987       LDFLAGS="${LDFLAGS_save}"
2988     else
2989       AC_MSG_RESULT(no)
2990       AC_MSG_ERROR([the specified tree doesn't have x264.h])
2991     fi
2992   else
2993       PKG_CHECK_MODULES(X264,x264 >= 0.86, [
2994         VLC_ADD_PLUGIN([x264])
2995         VLC_ADD_LDFLAGS([x264],[${X264_LIBS}])
2996
2997         AS_IF([test "${ac_cv_ld_bsymbolic}" != "no"], [
2998           VLC_ADD_LDFLAGS([x264],[-Wl,-Bsymbolic])
2999         ])
3000
3001         VLC_ADD_CFLAGS([x264],[${X264_CFLAGS}])
3002         if echo ${X264_LIBS} |grep -q 'pthreadGC2'; then
3003           VLC_ADD_CFLAGS([x264], [-DPTW32_STATIC_LIB])
3004         fi
3005       ],[
3006         if test "${enable_x264}" = "yes"; then
3007             AC_MSG_ERROR([Could not find libx264 >= 0.86 on your system: you may get it from http://www.videolan.org/x264.html])
3008           fi
3009       ])
3010     LDFLAGS="${LDFLAGS_save}"
3011   fi
3012 fi
3013
3014 dnl
3015 dnl libfluidsynth (MIDI synthetizer) plugin
3016 dnl
3017 PKG_ENABLE_MODULES_VLC([FLUIDSYNTH], [], [fluidsynth], [MIDI synthetiser with libfluidsynth], [auto])
3018
3019 dnl
3020 dnl Teletext Modules
3021 dnl vbi decoder plugin (using libzbvi)
3022 dnl telx module
3023 dnl uncompatible
3024 dnl
3025 AC_ARG_ENABLE(zvbi,
3026   AS_HELP_STRING([--enable-zvbi],[VBI (inc. Teletext) decoding support with
3027                   libzvbi (default enabled)]))
3028 AC_ARG_ENABLE(telx,
3029   AS_HELP_STRING([--enable-telx],[Teletext decoding module (conflicting with
3030                   zvbi) (default enabled if zvbi is absent)]))
3031
3032 AS_IF( [test "${enable_zvbi}" != "no"],[
3033     PKG_CHECK_MODULES(ZVBI,
3034         zvbi-0.2 >= 0.2.28,
3035         [
3036           VLC_ADD_LIBS([zvbi],[$ZVBI_LIBS])
3037           if test "${SYS}" = "mingw32"; then
3038               VLC_ADD_LIBS([zvbi],[ -lpthreadGC2])
3039           fi
3040           VLC_ADD_CFLAGS([zvbi],[$ZVBI_CFLAGS])
3041           VLC_ADD_PLUGIN([zvbi])
3042           AC_DEFINE(ZVBI_COMPILED, 1, [Define if the zvbi module is built])
3043           AS_IF( [test "${enable_telx}" = "yes"],[
3044                   AC_MSG_WARN([The zvbi and telx modules are uncompatibles.
3045                                Using zvbi.])
3046                   ])
3047         ],[
3048           AC_MSG_WARN(ZVBI library not found. Enabling the telx module instead)
3049         ])
3050     ])
3051 AS_IF( [test "${enable_telx}" != "no" ],[
3052   VLC_ADD_PLUGIN([telx])
3053   ])
3054
3055 dnl
3056 dnl libass subtitle rendering module
3057 dnl
3058 AC_ARG_ENABLE(libass,
3059   [  --enable-libass         Subtitle support using libass (default enabled)])
3060 AS_IF( [test "${enable_libass}" != "no"], [
3061   PKG_CHECK_MODULES(LIBASS, libass >= 0.9.6,
3062       [
3063         VLC_ADD_LIBS([libass],[$LIBASS_LIBS])
3064         VLC_ADD_CFLAGS([libass],[$LIBASS_CFLAGS])
3065         VLC_ADD_PLUGIN([libass])
3066
3067         AC_CHECK_HEADERS(fontconfig/fontconfig.h,
3068           [VLC_ADD_CPPFLAGS([libass],[-DHAVE_FONTCONFIG])
3069            VLC_ADD_LIBS([libass],[-lfontconfig])
3070        ])
3071       ],[
3072         AC_MSG_WARN([LIBASS library not found])
3073       ])
3074   ])
3075
3076 dnl
3077 dnl  kate decoder plugin
3078 dnl
3079 AC_ARG_ENABLE(kate,
3080 [  --enable-kate           kate codec (default enabled)])
3081 AS_IF([test "${enable_kate}" != "no"], [
3082   PKG_CHECK_MODULES(KATE,[kate >= 0.1.5], [
3083       VLC_ADD_PLUGIN([kate])
3084       VLC_ADD_CFLAGS([kate],[$KATE_CFLAGS])
3085       VLC_ADD_LIBS([kate],[$KATE_LIBS]) ],[
3086         AC_CHECK_HEADERS(kate/kate.h, [
3087           AC_CHECK_LIB(kate, kate_decode_init, [
3088             VLC_ADD_PLUGIN([kate])
3089             kate_libs="-lkate -logg"
3090             VLC_ADD_LDFLAGS([kate],[${kate_libs}]) ],[
3091             AS_IF([test "x${enable_kate}" != "x"], [
3092               AC_MSG_ERROR([libkate doesn't appear to be installed on your system.
3093               You also need to check that you have a libogg posterior to the 1.0 release.])
3094             ])
3095           ], [-lkate -logg])
3096         ],[
3097           AS_IF([test "x${enable_kate}" != "x"], [
3098             AC_MSG_ERROR([libkate headers do not appear to be installed on your system.
3099             You also need to check that you have a libogg posterior to the 1.0 release.])
3100           ])
3101         ])
3102   ])
3103 ])
3104
3105
3106 dnl
3107 dnl  tiger rendering for kate decoder plugin
3108 dnl
3109 AC_ARG_ENABLE(tiger,
3110 [  --enable-tiger          Tiger rendering library for Kate streams (default enabled)])
3111 AS_IF([test "${enable_tiger}" != "no"], [
3112   PKG_CHECK_MODULES(TIGER,[tiger >= 0.3.1], [
3113       AC_DEFINE(HAVE_TIGER, 1, [Define if libtiger is available.])
3114       VLC_ADD_CFLAGS([kate],[$TIGER_CFLAGS])
3115       VLC_ADD_LIBS([kate],[$TIGER_LIBS]) ],[
3116         AS_IF([test "x${enable_tiger}" != "x"], [
3117           AC_MSG_ERROR([libtiger does not appear to be installed on your system.])
3118         ])
3119   ])
3120 ])
3121
3122
3123
3124 dnl
3125 dnl  Video plugins
3126 dnl
3127
3128 EXTEND_HELP_STRING([Video plugins:])
3129
3130 dnl
3131 dnl  Xlib
3132 dnl
3133
3134 AC_PATH_XTRA()
3135 AC_CHECK_HEADERS(X11/Xlib.h)
3136
3137 dnl
3138 dnl  X C Bindings modules
3139 dnl
3140 AC_ARG_ENABLE(xcb,
3141   [  --enable-xcb            X11 support with XCB (default enabled)],, [
3142   AS_IF([test "${SYS}" != "mingw32" -a "${SYS}" != "mingwce" -a "${SYS}" != "darwin"], [
3143     enable_xcb="yes"
3144   ], [
3145     enable_xcb="no"
3146   ])
3147 ])
3148 AC_ARG_ENABLE(xvideo,
3149   [  --enable-xvideo         XVideo support (default enabled)],, [
3150     enable_xvideo="$enable_xcb"
3151 ])
3152
3153 need_xid_provider="no"
3154 have_xcb="no"
3155 AS_IF([test "${enable_xcb}" != "no"], [
3156   dnl libxcb
3157   PKG_CHECK_MODULES(XCB, [xcb])
3158   have_xcb="yes"
3159   PKG_CHECK_MODULES(XCB_SHM, [xcb-shm])
3160
3161   AS_IF([test "${enable_xvideo}" != "no"], [
3162     PKG_CHECK_MODULES(XCB_XV, [xcb-xv >= 1.1.90.1], [
3163       VLC_ADD_PLUGIN([xcb_xv])
3164     ], [
3165       PKG_CHECK_MODULES(XCB_XV, [xcb-xv], [
3166         VLC_ADD_PLUGIN([xcb_xv])
3167         VLC_ADD_CFLAGS([xcb_xv], [-DXCB_XV_OLD])
3168       ])
3169     ])
3170   ])
3171
3172   PKG_CHECK_MODULES(XCB_RANDR, [xcb-randr >= 1.3], [
3173     VLC_ADD_PLUGIN([panoramix])
3174     VLC_ADD_LIBS([panoramix],[${XCB_RANDR_LIBS} ${XCB_LIBS}])
3175     VLC_ADD_CFLAGS([panoramix],[${XCB_RANDR_CFLAGS} ${XCB_CFLAGS}])
3176   ], [
3177     AC_MSG_WARN([libxcb-randr not found. Panoramix filter will not be supported.])
3178   ])
3179
3180   dnl xcb-utils
3181   PKG_CHECK_MODULES(XCB_KEYSYMS, [xcb-keysyms >= 0.3.4], [
3182     have_xcb_keysyms="yes"
3183   ], [
3184     PKG_CHECK_MODULES(XCB_KEYSYMS, [xcb-keysyms], [
3185       have_xcb_keysyms="yes"
3186       VLC_ADD_CFLAGS([globalhotkeys], [-DXCB_KEYSYM_OLD_API])
3187     ], [
3188       have_xcb_keysyms="no"
3189       need_xid_provider="yes"
3190       AC_MSG_WARN([libxcb-keysyms not found. Hotkeys will not be supported.])
3191     ])
3192   ])
3193
3194   AS_IF([test "${have_xcb_keysyms}" = "yes"], [
3195     PKG_CHECK_MODULES(XPROTO, [xproto])
3196     VLC_ADD_PLUGIN([globalhotkeys])
3197     VLC_ADD_CFLAGS([globalhotkeys], [${XCB_KEYSYMS_CFLAGS} ${XCB_CFLAGS}])
3198     VLC_ADD_LIBS([globalhotkeys], [${XCB_KEYSYMS_LIBS} ${XCB_LIBS}])
3199     VLC_ADD_CFLAGS([xcb_window], [-DHAVE_XCB_KEYSYMS])
3200   ])
3201 ])
3202 AM_CONDITIONAL([HAVE_XCB], [test "${have_xcb}" = "yes"])
3203
3204 AC_ARG_ENABLE(glx,
3205   [  --enable-glx            X11 OpenGL (GLX) support (default enabled)],, [
3206   enable_glx="$enable_xcb"
3207 ])
3208 AS_IF([test "${enable_glx}" != "no"], [
3209   PKG_CHECK_MODULES(XLIB_XCB, [x11-xcb])
3210   PKG_CHECK_MODULES(GL, [gl],, [
3211     AC_CHECK_HEADER([GL/gl.h], [
3212       GL_CFLAGS=""
3213       GL_LIBS="-lGL"
3214     ], [
3215       AC_MSG_ERROR([GLX (libGL) cannot be found. If you do not need OpenGL with X11, use --disable-glx.])
3216     ])
3217   ])
3218   VLC_ADD_PLUGIN([xcb_glx])
3219 ])
3220 AC_SUBST([GL_CFLAGS])
3221 AC_SUBST([GL_LIBS])
3222
3223 dnl
3224 dnl  SDL module
3225 dnl
3226 AC_ARG_ENABLE(sdl,
3227   [  --enable-sdl            SDL support (default enabled)])
3228 AC_ARG_ENABLE(sdl-image,
3229   [  --enable-sdl-image      SDL image support (default enabled)])
3230 if test "${enable_sdl}" != "no"
3231 then
3232    PKG_CHECK_MODULES(SDL, [sdl >= 1.2.10], [
3233       # SDL on Darwin is heavily patched and can only run SDL_image
3234       if test "${SYS}" != "darwin"; then
3235         VLC_ADD_PLUGIN([vout_sdl aout_sdl])
3236       fi
3237       if test "${SYS}" != "mingw32"; then
3238         VLC_ADD_LIBS([vout_sdl],[${X_LIBS} ${X_PRE_LIBS} -lX11])
3239       fi
3240       VLC_ADD_CFLAGS([vout_sdl aout_sdl],[${SDL_CFLAGS}])
3241       VLC_ADD_LIBS([vout_sdl aout_sdl],[${SDL_LIBS}])
3242
3243       # SDL_image
3244       AS_IF([ test "${enable_sdl_image}" != "no"],[
3245         PKG_CHECK_MODULES(SDL_IMAGE, [SDL_image >= 1.2.10], [
3246           VLC_ADD_PLUGIN([sdl_image])
3247           VLC_ADD_LIBS([sdl_image],[${SDL_IMAGE_LIBS}])
3248           VLC_ADD_CFLAGS([sdl_image], [${SDL_IMAGE_CFLAGS}])],
3249           [ AC_MSG_WARN([The development package for SDL_image is not installed.
3250     You should install it alongside your SDL package.])
3251           ])
3252       ])
3253    ],[
3254      AC_MSG_WARN([The development package for SDL is not present or too old.
3255                   You need 1.2.10. Alternatively you can also configure with
3256                   --disable-sdl.])
3257    ])
3258 fi
3259
3260 dnl
3261 dnl  freetype module
3262 dnl
3263 AC_ARG_ENABLE(freetype,
3264   [  --enable-freetype       freetype support (default enabled)])
3265 AC_ARG_ENABLE(fribidi,
3266   [  --enable-fribidi        fribidi support (default enabled)])
3267 AC_ARG_ENABLE(fontconfig,
3268   [  --enable-fontconfig     fontconfig support (default enabled)])
3269 if test "${enable_freetype}" != "no"
3270 then
3271    PKG_CHECK_MODULES(FREETYPE, freetype2,[
3272       VLC_ADD_PLUGIN([freetype])
3273       have_freetype=yes
3274       VLC_ADD_CPPFLAGS([freetype skins2],[${FREETYPE_CFLAGS}])
3275       if test "${SYS}" = "mingw32"; then
3276         VLC_ADD_LIBS([freetype],[-liconv -lz])
3277       fi
3278       VLC_ADD_LIBS([freetype skins2],[${FREETYPE_LIBS}])
3279       if test "${enable_fontconfig}" != "no"
3280       then
3281         AC_CHECK_HEADERS(fontconfig/fontconfig.h,
3282           [VLC_ADD_CPPFLAGS([freetype],[-DHAVE_FONTCONFIG])
3283            VLC_ADD_LIBS([freetype],[-lfontconfig])])
3284         AC_CHECK_HEADERS(Carbon/Carbon.h,
3285           [VLC_ADD_LDFLAGS([freetype],[-Wl,-framework,Carbon])])
3286       fi
3287
3288      dnl fribidi support
3289       if test "${enable_fribidi}" != "no"
3290       then
3291         PKG_CHECK_MODULES(FRIBIDI, fribidi, [
3292           VLC_ADD_CPPFLAGS([freetype skins2], [${FRIBIDI_CFLAGS} -DHAVE_FRIBIDI])
3293           VLC_ADD_LIBS([freetype skins2], [${FRIBIDI_LIBS}])
3294         ])
3295       fi
3296
3297   ],[
3298   have_freetype=no
3299   AS_IF([ test "${enable_freetype}" =  "yes"],[
3300     AC_MSG_ERROR([I couldn't find the freetype package. You can download libfreetype2
3301 from http://www.freetype.org/, or configure with --disable-freetype. Have a nice day.
3302       ])
3303     ])
3304   ])
3305
3306 fi
3307
3308 dnl
3309 dnl  libxml2 module
3310 dnl
3311 PKG_ENABLE_MODULES_VLC([LIBXML2], [xml], [libxml-2.0 >= 2.5], [libxml2 support],[auto])
3312
3313 dnl
3314 dnl  SVG module
3315 dnl
3316 PKG_ENABLE_MODULES_VLC([SVG], [], [librsvg-2.0 >= 2.9.0], [SVG rendering library],[auto])
3317
3318 dnl
3319 dnl Snapshot vout module (with cache)
3320 dnl
3321 AC_ARG_ENABLE(snapshot,
3322   [  --enable-snapshot       snapshot module (default disabled)])
3323 if test "${enable_snapshot}" = "yes"
3324 then
3325   VLC_ADD_PLUGIN([snapshot])
3326 fi
3327
3328 dnl
3329 dnl  iOS vout module
3330 dnl
3331 AC_ARG_ENABLE(ios-vout,
3332   [  --enable-ios-vout    iOS video output module (default disabled)])
3333 if test "${enable_ios_vout}" = "yes"
3334 then
3335   VLC_ADD_PLUGIN([vout_ios])
3336   VLC_ADD_LDFLAGS([vout_ios], [-Wl,-framework,OpenGLES,-framework,QuartzCore,-framework,UIKit,-framework,Foundation])
3337 fi
3338
3339 dnl
3340 dnl  QuartzText vout module (iOS/Mac OS)
3341 dnl
3342 AC_ARG_ENABLE(macosx-quartztext,
3343   [  --enable-macosx-quartztext   Mac OS X quartz text module (default enabled on Mac OS X)])
3344 if test "x${enable_macosx_quartztext}" != "xno" &&
3345   (test "${SYS}" = "darwin" || test "${enable_macosx_quartztext}" = "yes")
3346 then
3347   VLC_ADD_PLUGIN([quartztext])
3348   VLC_ADD_LDFLAGS([quartztext],[-Wl,-framework,ApplicationServices])
3349 fi
3350
3351 dnl
3352 dnl  Windows DirectX module
3353 dnl
3354
3355 if test "${SYS}" = "mingw32" -o "${SYS}" = "mingwce"
3356 then
3357   VLC_ADD_PLUGIN([panoramix])
3358 fi
3359
3360 AC_ARG_ENABLE(directx,
3361   [  --enable-directx        Win32 DirectX support (default enabled on Win32)])
3362 if test "${enable_directx}" != "no"
3363 then
3364   if test "${SYS}" = "mingw32" -o "${SYS}" = "mingwce"
3365   then
3366       AC_CHECK_HEADERS(ddraw.h,
3367       [ VLC_ADD_PLUGIN([directx aout_directx])
3368         VLC_ADD_LIBS([directx],[-lgdi32])
3369       ],[AC_MSG_ERROR([Cannot find DirectX headers!])]
3370       )
3371       AC_CHECK_HEADERS(GL/gl.h,
3372       [ VLC_ADD_PLUGIN([glwin32])
3373         VLC_ADD_LIBS([glwin32],[-lopengl32 -lgdi32])
3374       ])
3375       AC_CHECK_HEADERS(d3d9.h,
3376       [ VLC_ADD_PLUGIN([direct3d])
3377         VLC_ADD_LIBS([direct3d],[-lgdi32])
3378       ])
3379       VLC_ADD_LIBS([direct3d directx glwin32],[-lole32])
3380   fi
3381 fi
3382
3383 dnl
3384 dnl  Windows Direct2D plugin
3385 dnl
3386 AC_ARG_ENABLE(direct2d,
3387   [  --enable-direct2d         Win7/VistaPU Direct2D support (default auto on Win32)])
3388 if test "${enable_direct2d}" != "no"; then
3389   if test "${SYS}" = "mingw32" -o "${SYS}" = "mingwce"
3390   then
3391     AC_CHECK_HEADERS(d2d1.h,
3392       [
3393         VLC_ADD_PLUGIN([direct2d])
3394         VLC_ADD_LIBS([direct2d],[-lgdi32 -lole32])
3395       ], [AC_MSG_WARN([Cannot find Direct2D headers!])]
3396     )
3397   fi
3398 fi
3399
3400 dnl
3401 dnl  win32 GDI plugin
3402 dnl
3403 AC_ARG_ENABLE(wingdi,
3404   [  --enable-wingdi         Win32 GDI module (default enabled on Win32)])
3405 if test "${enable_wingdi}" != "no"; then
3406   if test "${SYS}" = "mingw32"; then
3407     VLC_ADD_PLUGIN([wingdi])
3408     VLC_ADD_LIBS([wingdi],[-lgdi32 -lole32])
3409   fi
3410   if test "${SYS}" = "mingwce"; then
3411     VLC_ADD_PLUGIN([wingdi wingapi])
3412     VLC_ADD_LIBS([wingdi],[-laygshell])
3413     VLC_ADD_LIBS([wingapi],[-laygshell])
3414   fi
3415 fi
3416
3417
3418 dnl
3419 dnl  Linux framebuffer module
3420 dnl
3421 AC_ARG_ENABLE(fb,
3422   [  --enable-fb             Linux framebuffer support (default enabled on Linux)])
3423     if test "${enable_fb}" != "no"
3424     then
3425       AC_CHECK_HEADERS(linux/fb.h, [
3426         VLC_ADD_PLUGIN([fb])
3427       ])
3428     fi
3429
3430 dnl
3431 dnl  DirectFB module
3432 dnl  try to find using: 1 - given location; 2 - directfb-config; 3 - pkg-config
3433 dnl  TODO: support for static linking
3434 dnl
3435 AC_ARG_ENABLE(directfb,
3436   [  --enable-directfb       DirectFB support (default disabled)])
3437 AC_ARG_WITH(directfb,
3438   [  --with-directfb=PATH    path to DirectFB headers and libraries])
3439
3440 if test "${enable_directfb}" = "yes"; then
3441     have_directfb="false"
3442     CPPFLAGS_mydirectfb=
3443     LIBS_mydirectfb=
3444     if test "${with_directfb}" != "no" -a -n "${with_directfb}"; then
3445         dnl Trying the given location
3446         CPPFLAGS_save="${CPPFLAGS}"
3447         LIBS_save="${LIBS}"
3448
3449         CPPFLAGS_new="-I${with_directfb}/include -D_REENTRANT -D_GNU_SOURCE"
3450         LIBS_new="-L${with_directfb}/lib/fusion/.libs/ -L${with_directfb}/lib/direct/.libs/"
3451         LIBS_new="${LIBS_new} -L${with_directfb}/src/.libs/"
3452
3453         CPPFLAGS="${CPPFLAGS} ${CPPFLAGS_new}"
3454         LIBS="${LIBS} ${LIBS_new}"
3455
3456         dnl FIXME: too obscure
3457         AC_CHECK_HEADER([directfb.h], [
3458             AC_CHECK_LIB([direct],[direct_initialize], [
3459                 AC_CHECK_LIB([fusion], [fusion_enter], [
3460                     AC_CHECK_LIB([directfb], [DirectFBInit], have_directfb="true", have_directfb="false")
3461                 ], have_directfb="false")
3462             ], have_directfb="false")
3463         ], have_directfb="false")
3464
3465         dnl Restore flags
3466         CPPFLAGS="${CPPFLAGS_save}"
3467         LIBS="${LIBS_save}"
3468
3469         if test "${have_directfb}" = "true"; then
3470             LIBS_mydirectfb="${LIBS_new} -lz $LIBDL -ldirectfb -lfusion -ldirect -lpthread"
3471             CPPFLAGS_mydirectfb="${CPPFLAGS_new}"
3472         fi
3473     else
3474         dnl Look for directfb-config
3475         AC_PATH_PROG(DIRECTFB_CONFIG, directfb-config, no, ${PATH})
3476         if test "${DIRECTFB_CONFIG}" != "no"; then
3477             CPPFLAGS_mydirectfb="`${DIRECTFB_CONFIG} --cflags`"
3478             LIBS_mydirectfb="`${DIRECTFB_CONFIG} --libs`"
3479             have_directfb="true"
3480         else
3481             dnl Trying with pkg-config
3482             PKG_CHECK_MODULES(DIRECTFB, directfb, [
3483                 CPPFLAGS_mydirectfb="${DIRECTFB_CFLAGS}"
3484                 LIBS_mydirectfb="${DIRECTFB_LIBS}"
3485                 have_directfb="true"
3486                 ], [have_directfb="false"])
3487         fi
3488     fi
3489     if test "${have_directfb}" = "true"; then
3490         VLC_ADD_PLUGIN([directfb])
3491         VLC_ADD_CPPFLAGS([directfb],[${CPPFLAGS_mydirectfb}])
3492         VLC_ADD_LIBS([directfb],[${LIBS_mydirectfb}])
3493     else
3494         AC_MSG_ERROR([cannot find directfb headers and/or libraries ])
3495     fi
3496 fi
3497
3498 dnl
3499 dnl  AA plugin
3500 dnl
3501 AC_ARG_ENABLE(aa,
3502   [  --enable-aa             aalib output (default disabled)])
3503 if test "${enable_aa}" = "yes"
3504 then
3505   AC_CHECK_HEADER(aalib.h,have_aa="true",have_aa="false")
3506   if test "${have_aa}" = "true"
3507   then
3508     VLC_ADD_PLUGIN([aa])
3509     VLC_ADD_LIBS([aa],[-laa])
3510     if test "${SYS}" != "mingw32"; then
3511       VLC_ADD_LIBS([aa],[${X_LIBS} ${X_PRE_LIBS} -lX11])
3512     fi
3513   fi
3514 fi
3515
3516 dnl
3517 dnl  libcaca plugin
3518 dnl
3519 PKG_ENABLE_MODULES_VLC([CACA], [], [caca >= 0.99.beta14], [libcaca output],[auto])
3520
3521 dnl
3522 dnl  Audio plugins
3523 dnl
3524
3525 EXTEND_HELP_STRING([Audio plugins:])
3526
3527 dnl
3528 dnl  OSS /dev/dsp module (enabled by default except on win32)
3529 dnl
3530 AC_ARG_ENABLE(oss,
3531   [  --enable-oss            Open Sound System OSS support (default enabled)])
3532
3533 if test "${enable_oss}" != "no" &&
3534   (test "${SYS}" != "mingw32" -a "${SYS}" != "mingwce" ||
3535    test "${enable_oss}" = "yes")
3536 then
3537   AC_CHECK_HEADERS([soundcard.h sys/soundcard.h], [
3538     VLC_ADD_PLUGIN([oss access_oss])
3539     AC_CHECK_LIB(ossaudio,main,[VLC_ADD_LIBS([oss access_oss],[-lossaudio])])
3540   ])
3541 fi
3542
3543 dnl
3544 dnl  Pulseaudio module
3545 dnl
3546 PKG_ENABLE_MODULES_VLC([PULSE], [], [libpulse >= 0.9.22], [Pulseaudio support], [auto])
3547
3548 dnl
3549 dnl  Portaudio module
3550 dnl
3551 PKG_ENABLE_MODULES_VLC([PORTAUDIO], [], [portaudio-2.0], [Portaudio library support], [auto])
3552
3553 dnl
3554 dnl  ALSA module
3555 dnl
3556 AC_ARG_ENABLE(alsa,
3557   [  --enable-alsa           Advanced Linux Sound Architecture (default auto)])
3558 have_alsa="no"
3559 AS_IF([test "${enable_alsa}" != "no"], [
3560   PKG_CHECK_MODULES([ALSA], [alsa >= 1.0.0], [
3561     have_alsa="yes"
3562   ], [
3563     AS_IF([test "x${enable_alsa}" != "x"], [
3564       AC_MSG_ERROR([alsa-lib not found])
3565     ])
3566   ])
3567 ])
3568 AM_CONDITIONAL([HAVE_ALSA], [test "${have_alsa}" = "yes"])
3569
3570 dnl
3571 dnl  win32 waveOut plugin
3572 dnl
3573 AC_ARG_ENABLE(waveout,
3574   [  --enable-waveout        Win32 waveOut module (default enabled on Win32)])
3575 if test "${enable_waveout}" != "no"; then
3576   if test "${SYS}" = "mingw32"; then
3577     VLC_ADD_PLUGIN([waveout])
3578     VLC_ADD_LIBS([waveout],[-lwinmm])
3579   fi
3580   if test "${SYS}" = "mingwce"; then
3581     VLC_ADD_PLUGIN([waveout])
3582   fi
3583 fi
3584
3585 dnl
3586 dnl  CoreAudio plugin
3587 dnl
3588 AC_ARG_ENABLE(macosx-audio,
3589   [  --enable-macosx-audio   Mac OS X audio module (default enabled on MacOS X)])
3590 if test "x${enable_macosx_audio}" != "xno" &&
3591   (test "${SYS}" = "darwin" || test "${enable_macosx_audio}" = "yes")
3592 then
3593   AC_CHECK_HEADERS(CoreAudio/CoreAudio.h,
3594     [ VLC_ADD_PLUGIN([auhal])
3595       VLC_ADD_LDFLAGS([auhal],[-Wl,-framework,CoreAudio,-framework,AudioUnit,-framework,AudioToolbox,-framework,Carbon])
3596     ], [ AC_MSG_ERROR([cannot find CoreAudio headers]) ])
3597 fi
3598
3599 dnl
3600 dnl  AudioQueue plugin
3601 dnl
3602 AC_ARG_ENABLE(audioqueue,
3603   [  --enable-audioqueue       AudioQueue audio module (default disabled)])
3604 if test "${enable_audioqueue}" = "yes"
3605 then
3606   VLC_ADD_PLUGIN([audioqueue])
3607   VLC_ADD_LDFLAGS([audioqueue], [-Wl,-framework,AudioToolbox,-framework,CoreFoundation])
3608 fi
3609
3610 dnl
3611 dnl  Roku HD1000 audio
3612 dnl
3613 AC_ARG_ENABLE(hd1000a,
3614   [  --enable-hd1000a        HD1000 audio module (default enabled on HD1000)])
3615 if test "${enable_hd1000a}" != "no" -a "${CXX}" != "" &&
3616   (test "${SYS}" != "mingw32" -a "${SYS}" != "mingwce" ||
3617    test "${enable_hd1000a}" = "yes")
3618 then
3619   AC_LANG_PUSH([C++])
3620   AC_CHECK_HEADERS(deschutes/libraries/hdmachinex225/PCMAudioPlayer.h, [
3621     VLC_ADD_PLUGIN([hd1000a])
3622     AC_CHECK_LIB(HDMachineX225,main,VLC_ADD_LIBS([hd1000a],[-lHDMachineX225]))  ])
3623   AC_LANG_POP([C++])
3624 fi
3625
3626 dnl
3627 dnl  JACK modules
3628 dnl
3629 PKG_ENABLE_MODULES_VLC([JACK], [jack access_jack], [jack], [JACK audio I/O modules],[auto])
3630
3631 dnl
3632 dnl UPnP Plugin (Intel SDK)
3633 dnl
3634 PKG_ENABLE_MODULES_VLC([UPNP], [upnp_intel], [libupnp], [Intel UPnp SDK],[auto])
3635 VLC_ADD_CXXFLAGS([upnp_intel],[${UPNP_CFLAGS}])
3636
3637 dnl
3638 dnl  Interface plugins
3639 dnl
3640
3641 EXTEND_HELP_STRING([Interface plugins:])
3642
3643 dnl
3644 dnl Skins2 module
3645 dnl
3646 AC_ARG_ENABLE(skins2,
3647   [AS_HELP_STRING([--enable-skins2],[Skins2 interface module (default
3648    enabled except on MacOSX and WinCE)])])
3649 if test "${enable_skins2}" != "no" ||
3650   (test "${SYS}" != "darwin" &&
3651    test "${SYS}" != "mingwce" && test "${enable_skins2}" == "yes"); then
3652
3653   dnl test for the required libraries
3654   skins2_missing_lib="no"
3655
3656   dnl freetype
3657   if test "${have_freetype}" != "yes"; then
3658     skins2_missing_lib="yes"
3659     if test "${enable_skins2}" = "yes"; then
3660       AC_MSG_ERROR([Could not find freetype (required for skins2)])
3661     fi
3662   fi
3663
3664   if test "${skins2_missing_lib}" = "no" && (test "${SYS}" = "mingw32"); then
3665     VLC_ADD_PLUGIN([skins2])
3666     ALIASES="${ALIASES} svlc"
3667     VLC_ADD_CPPFLAGS([skins2],[-U_OFF_T_ -U_off_t -Imodules/gui/skins2 -DWIN32_SKINS])
3668     VLC_ADD_CXXFLAGS([skins2],[-O2 -fno-rtti])
3669     VLC_ADD_LIBS([skins2],[-loleaut32 -lwinspool -lwinmm -lshell32 -lctl3d32 -ladvapi32 -lwsock32 -lgdi32 -lcomdlg32 -lole32 -luuid -lcomctl32])
3670
3671   else if test "${skins2_missing_lib}" = "no" && (test "${SYS}" = "darwin"); then
3672     VLC_ADD_PLUGIN([skins2])
3673     ALIASES="${ALIASES} svlc"
3674     VLC_ADD_CPPFLAGS([skins2],[-Imodules/gui/skins2 -DMACOSX_SKINS])
3675     VLC_ADD_CXXFLAGS([skins2],[-O2 -fno-rtti])
3676     VLC_ADD_LDFLAGS([skins2],[-Wl,-framework,Carbon])
3677
3678   else if test "${skins2_missing_lib}" = "no"; then
3679     VLC_ADD_PLUGIN([skins2])
3680     ALIASES="${ALIASES} svlc"
3681     VLC_ADD_CPPFLAGS([skins2],[-Imodules/gui/skins2 ${X_CFLAGS} -DX11_SKINS])
3682     VLC_ADD_CXXFLAGS([skins2],[-O2 -fno-rtti])
3683     VLC_ADD_LIBS([skins2],[${X_LIBS} ${X_PRE_LIBS} -lXext -lXpm -lX11])
3684     need_xid_provider="no"
3685   fi fi fi
3686 fi
3687 AM_CONDITIONAL(BUILD_SKINS, [test "${enable_skins2}" = "yes" ||
3688          (test "${SYS}" != "darwin" &&
3689           test "${SYS}" != "mingwce" && test "${enable_skins2}" != "no")])
3690
3691 dnl
3692 dnl Hildon UI
3693 dnl
3694 AC_ARG_ENABLE(hildon,
3695   [  --enable-hildon         Hildon touchscreen UI (default disabled)])
3696 AS_IF([test "${enable_hildon}" = "yes"], [
3697   PKG_CHECK_MODULES(HILDON, [hildon-1], [
3698     PKG_CHECK_MODULES(HILDON_FM, hildon-fm-2, [
3699       VLC_ADD_CFLAGS([hildon],[${HILDON_FM_CFLAGS} -DHAVE_HILDON_FM])
3700       VLC_ADD_LIBS([hildon],[${HILDON_FM_LIBS}])
3701     ], [
3702       AC_MSG_WARN(hildon-fm-2 not found)
3703     ])
3704     VLC_ADD_CFLAGS([hildon],[${HILDON_CFLAGS} ${X_CFLAGS}])
3705     VLC_ADD_LIBS([hildon],[${HILDON_LIBS} ${X_LIBS} ${X_PRE_LIBS} -lX11])
3706     VLC_ADD_PLUGIN([hildon])
3707     ALIASES="${ALIASES} mvlc"
3708     need_xid_provider="no"
3709   ], [
3710     AS_IF([test "${enable_hildon}" = "yes"],[
3711       AC_MSG_ERROR([Hildon libraries not found])
3712     ])
3713     enable_hildon="no"
3714   ])
3715 ])
3716 AM_CONDITIONAL(BUILD_HILDON, [test "${enable_hildon}" = "yes"])
3717
3718 dnl
3719 dnl QT 4
3720 dnl
3721 AC_ARG_ENABLE(qt4,
3722   [  --enable-qt4            Qt 4 support (default enabled) ],, [
3723   AS_IF([test "${SYS}" = "darwin"], [enable_qt4=no])
3724 ])
3725 AS_IF([test "${enable_qt4}" != "no"], [
3726   PKG_CHECK_MODULES(QT4, [QtCore QtGui >= 4.4.0], [
3727     VLC_ADD_PLUGIN([qt4])
3728     VLC_ADD_LIBS([qt4],[${QT4_LIBS}])
3729     VLC_ADD_CXXFLAGS([qt4],[${QT4_CFLAGS}])
3730     ALIASES="${ALIASES} qvlc"
3731
3732     AC_LANG_PUSH([C++])
3733     CPPFLAGS_save="${CPPFLAGS}"
3734
3735     AC_MSG_CHECKING([whether Qt uses X11])
3736     CPPFLAGS="${CPPFLAGS} ${QT4_CFLAGS}"
3737     AC_PREPROC_IFELSE([
3738 #include <QWidget>
3739 #if !defined (Q_WS_X11)
3740 # error Fail
3741 #endif
3742     ], [
3743       AC_MSG_RESULT([yes])
3744       VLC_ADD_LIBS([qt4],[${X_LIBS} ${X_PRE_LIBS} -lX11])
3745       need_xid_provider="no"
3746       VLC_ADD_CXXFLAGS([qt4],[${X_CFLAGS}])
3747     ], [
3748       AC_MSG_RESULT([no])
3749     ])
3750
3751     CPPFLAGS="${CPPFLAGS_save}"
3752     AC_LANG_POP([C++])
3753
3754     AS_IF([test "${SYS}" = "mingw32" -o "${SYS}" = "mingwce"], [
3755         VLC_ADD_LIBS([qt4],[-lole32])
3756     ])
3757     AC_PATH_PROGS(MOC, [moc-qt4 moc], moc,`eval $PKG_CONFIG --variable=exec_prefix QtCore`/bin)
3758     AC_PATH_PROG(RCC, rcc, rcc,`eval $PKG_CONFIG --variable=exec_prefix QtCore`/bin)
3759     AC_PATH_PROGS(UIC, [uic-qt4 uic], uic,`eval $PKG_CONFIG --variable=exec_prefix QtCore`/bin)
3760   ], [
3761     AS_IF([test "${enable_qt4}" = "yes"],[
3762       AC_MSG_ERROR([Qt 4 library not found])
3763     ],[
3764       AC_MSG_WARN([Qt 4 library not found])
3765     ])
3766     enable_qt4="no"
3767   ])
3768 ])
3769 AM_CONDITIONAL(ENABLE_QT4, [test "x$enable_qt4" != "xno"])
3770
3771 dnl
3772 dnl Simple test for skins2 dependency
3773 dnl
3774 AS_IF([test "${enable_skins2}" != "no" && test "x$enable_qt4" = "xno"], [
3775   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.])
3776 ])
3777
3778 dnl
3779 dnl  MacOS X video output/gui modules
3780 dnl
3781 AC_ARG_ENABLE(macosx,
3782   [  --enable-macosx         Mac OS X gui support (default enabled on Mac OS X)])
3783 if test "x${enable_macosx}" = "xyes"
3784 then
3785   VLC_ADD_LDFLAGS([macosx minimal_macosx],[-Wl,-framework,Cocoa])
3786   VLC_ADD_LDFLAGS([macosx minimal_macosx],[-Wl,-framework,OpenGL])
3787   VLC_ADD_LDFLAGS([macosx minimal_macosx],            [-Wl,-framework,Carbon])
3788   VLC_ADD_LDFLAGS([macosx minimal_macosx],            [-Wl,-framework,CoreServices])
3789   VLC_ADD_LDFLAGS([macosx minimal_macosx],            [-Wl,-framework,AGL])
3790   VLC_ADD_LDFLAGS([macosx],                           [-Wl,-framework,IOKit])
3791   VLC_ADD_LDFLAGS([macosx],                           [-F${CONTRIB_DIR}/Sparkle -Wl,-framework,Sparkle])
3792   VLC_ADD_OBJCFLAGS([macosx],                         [-F${CONTRIB_DIR}/Sparkle])
3793   dnl For bug report
3794   VLC_ADD_LDFLAGS([macosx],                           [-Wl,-framework,AddressBook])
3795   VLC_ADD_LDFLAGS([macosx],                           [-Wl,-framework,WebKit])
3796   VLC_ADD_OBJCFLAGS([macosx minimal_macosx], [-fobjc-exceptions] )
3797
3798   VLC_ADD_PLUGIN([macosx minimal_macosx])
3799 fi
3800
3801 dnl
3802 dnl  MacOS X related modules
3803 dnl
3804
3805 AC_ARG_ENABLE(macosx-vout,
3806   [  --enable-macosx-vout    Mac OS X video output module (default enabled on Mac OS X)])
3807 if test "x${enable_macosx_vout}" != "xno" &&
3808   (test "${SYS}" = "darwin" || test "${enable_macosx_vout}" = "yes")
3809 then
3810   VLC_ADD_LDFLAGS([vout_macosx],[-Wl,-framework,Cocoa])
3811   VLC_ADD_LDFLAGS([vout_macosx],[-Wl,-framework,OpenGL])
3812   VLC_ADD_PLUGIN([vout_macosx])
3813 fi
3814
3815 AC_ARG_ENABLE(macosx-dialog-provider,
3816   [  --enable-macosx-dialog-provider Mac OS X dialog module (default enabled on Mac OS X)])
3817 if test "x${enable_macosx_dialog_provider}" != "xno" &&
3818   (test "${SYS}" = "darwin" || test "${enable_macosx_dialog_provider}" = "yes")
3819 then
3820   VLC_ADD_LDFLAGS([macosx_dialog_provider],[-Wl,-framework,Cocoa])
3821   VLC_ADD_PLUGIN([macosx_dialog_provider])
3822 fi
3823
3824 AC_ARG_ENABLE(macosx-qtcapture,
3825   [  --enable-macosx-qtcapture Mac OS X qtcapture (iSight) module (default enabled on Mac OS X)])
3826 if test "x${enable_macosx_qtcapture}" != "xno" &&
3827   (test "${SYS}" = "darwin" || test "${enable_macosx_qtcapture}" = "yes")
3828 then
3829   VLC_ADD_LDFLAGS([qtcapture], [-Wl,-framework,Cocoa])
3830   VLC_ADD_LDFLAGS([qtcapture], [-Wl,-framework,QTKit])
3831   VLC_ADD_LDFLAGS([qtcapture], [-Wl,-framework,CoreAudio])
3832   VLC_ADD_LDFLAGS([qtcapture], [-Wl,-framework,QuartzCore])
3833   VLC_ADD_LDFLAGS([qtcapture], [-Wl,-framework,CoreVideo])
3834   VLC_ADD_PLUGIN([qtcapture])
3835 fi
3836
3837 AC_ARG_ENABLE(macosx-eyetv,
3838   [  --enable-macosx-eyetv   Mac OS X EyeTV (TNT Tuner) module (default enabled on Mac OS X)])
3839 if test "x${enable_macosx_eyetv}" != "xno" &&
3840   (test "${SYS}" = "darwin" || test "${enable_macosx_eyetv}" = "yes")
3841 then
3842   VLC_ADD_LDFLAGS([access_eyetv], [-Wl,-framework,Foundation])
3843   VLC_ADD_PLUGIN([access_eyetv])
3844 fi
3845
3846 AC_ARG_ENABLE(macosx-vlc-app,
3847   [  --enable-macosx-vlc-app build the VLC media player (default enabled on Mac OS X)])
3848 AM_CONDITIONAL(BUILD_MACOSX_VLC_APP, [test "${enable_macosx_vlc_app}" != "no" &&
3849     (test "${SYS}" = "darwin" || test "${enable_macosx_vlc_app}" = "yes") ])
3850
3851
3852 dnl
3853 dnl  ncurses module
3854 dnl
3855 AC_ARG_ENABLE(ncurses,
3856   [  --disable-ncurses       ncurses interface support (default disabled)],
3857   [if test "${enable_ncurses}" != "no"; then
3858     AC_CHECK_HEADER(ncurses.h,
3859       [AC_CHECK_LIB(ncursesw, mvprintw,
3860         [VLC_ADD_PLUGIN([ncurses])
3861         VLC_ADD_LIBS([ncurses],[-lncursesw])
3862         ALIASES="${ALIASES} nvlc"
3863         AC_CHECK_LIB(ncursesw, tgetent, [],
3864           AC_CHECK_LIB(tinfow, tgetent, [VLC_ADD_LIBS([ncurses],[-ltinfow])],
3865             [AC_CHECK_LIB(tinfo, tgetent, [VLC_ADD_LIBS([ncurses],[-ltinfo])],
3866               [AS_IF([test "${enable_ncurses}" = "yes"],
3867                 [AC_MSG_ERROR([tgetent not found in ncursesw tinfow tinfo]
3868                )])])
3869             ]
3870           )
3871         )
3872         ],
3873           [AS_IF([test "${enable_ncurses}" = "yes"], [
3874             AC_MSG_ERROR([libncursesw not found])])]
3875         )],
3876         [AS_IF([test "${enable_ncurses}" = "yes"], [
3877           AC_MSG_ERROR([ncurses.h not found])])]
3878         )
3879   fi]
3880 )
3881
3882 dnl
3883 dnl  XOSD plugin
3884 dnl
3885 AC_ARG_ENABLE(xosd,
3886   [  --enable-xosd           xosd interface support (default disabled)])
3887 if test "${enable_xosd}" = "yes"
3888 then
3889   AC_CHECK_HEADERS(xosd.h,
3890     AC_CHECK_LIB(xosd, xosd_set_horizontal_offset, [
3891       VLC_ADD_PLUGIN([xosd])
3892       VLC_ADD_LIBS([xosd],[-lxosd])
3893     ])
3894   )
3895 fi
3896
3897 dnl
3898 dnl Framebuffer (overlay) plugin
3899 dnl
3900 AC_ARG_ENABLE(fbosd,
3901   [  --enable-fbosd          fbosd interface support (default disabled)])
3902 if test "${enable_fbosd}" = "yes"
3903 then
3904   AC_CHECK_HEADERS(linux/fb.h, [
3905     VLC_ADD_PLUGIN([fbosd])
3906  ])
3907 fi
3908
3909 dnl
3910 dnl Post-interface configuration checks
3911 dnl
3912 AS_IF([test "$need_xid_provider" = "yes"], [
3913   AC_MSG_ERROR([X11 video outputs need a window provider (Qt4, Skins2, Hildon or xcb-utils), but none were found. Please install xcb-keysyms.])
3914 ])
3915
3916 dnl
3917 dnl Visualisation plugin
3918 dnl
3919 AC_ARG_ENABLE(visual,
3920   [  --enable-visual         visualisation plugin (default enabled)])
3921 if test "${enable_visual}" != "no"
3922 then
3923     VLC_ADD_PLUGIN([visual])
3924 fi
3925
3926 dnl
3927 dnl  goom visualization plugin
3928 dnl
3929 PKG_ENABLE_MODULES_VLC([GOOM], [], [libgoom2], [goom visualization plugin], [auto])
3930
3931 dnl
3932 dnl libprojectM visualization plugin
3933 dnl
3934 AC_ARG_ENABLE(projectm,
3935   [  --enable-projectm          projectM visualization plugin (default enabled)])
3936 AS_IF([test "${enable_projectm}" != "no"],
3937   [
3938     PKG_CHECK_MODULES(PROJECTM, libprojectM,
3939     [
3940       VLC_ADD_PLUGIN([projectm])
3941       VLC_ADD_CXXFLAGS([projectm],[$PROJECTM_CFLAGS])
3942       VLC_ADD_LIBS([projectm],[$PROJECTM_LIBS])
3943       PKG_CHECK_MODULES(PROJECTM2, [libprojectM >= 2.0.0],
3944         [ AC_DEFINE([HAVE_PROJECTM2], 1, [Define to 1 if using libprojectM 2.x]) ],
3945         [ AC_MSG_WARN( [Using libprojectM version 1] )
3946       ])
3947     ],[
3948       AC_MSG_WARN([libprojectM library not found])
3949     ])
3950   ])
3951
3952 dnl
3953 dnl  AtmoLight (homemade Philips Ambilight clone)
3954 dnl
3955 AC_ARG_ENABLE(atmo,
3956 AS_HELP_STRING([--disable-atmo],[AtmoLight (homemade Philips Ambilight clone)
3957                 (default enabled)]),, [enable_atmo="yes"])
3958 AS_IF([test "${enable_atmo}" != no], [
3959   AS_IF([test "${SYS}" = "mingw32" -o "${SYS}" = "linux"], [
3960     AC_LANG_PUSH(C++)
3961     VLC_ADD_PLUGIN([atmo])
3962     AC_LANG_POP(C++)
3963   ])
3964 ])
3965
3966 dnl
3967 dnl  Bonjour services discovery
3968 PKG_ENABLE_MODULES_VLC([BONJOUR], [], [avahi-client >= 0.6], [Bonjour services discovery], [auto])
3969
3970 dnl
3971 dnl  libudev services discovery
3972 PKG_ENABLE_MODULES_VLC([UDEV], [], [libudev >= 142], [Linux udev services discovery], [auto])
3973
3974 dnl
3975 dnl MTP devices services discovery
3976 PKG_ENABLE_MODULES_VLC([MTP], [mtp access_mtp], [libmtp >= 1.0.0], [MTP devices support], [auto])
3977
3978 dnl
3979 dnl  Lirc plugin
3980 dnl
3981 AC_ARG_ENABLE(lirc,
3982   [  --enable-lirc           lirc support (default disabled)])
3983 if test "${enable_lirc}" = "yes"
3984 then
3985   AC_CHECK_HEADER(lirc/lirc_client.h, AC_CHECK_LIB(lirc_client, lirc_init, have_lirc="true", have_lirc="false"),have_lirc="false")
3986   if test "${have_lirc}" = "true"
3987   then
3988     VLC_ADD_PLUGIN([lirc])
3989     VLC_ADD_LIBS([lirc],[-llirc_client])
3990   fi
3991 fi
3992
3993 EXTEND_HELP_STRING([Misc options:])
3994
3995 dnl
3996 dnl libgcrypt
3997 dnl
3998 AC_ARG_ENABLE(libgcrypt,
3999   [  --disable-libgcrypt     gcrypt support (default enabled)])
4000 AS_IF([test "${enable_libgcrypt}" != "no"], [
4001   AC_CHECK_DECL([GCRYCTL_SET_THREAD_CBS], [
4002     libgcrypt-config --version >/dev/null || \
4003         AC_MSG_ERROR([gcrypt.h present but libgcrypt-config could not be found])
4004     AC_CHECK_LIB(gcrypt, gcry_control, [
4005       have_libgcrypt="yes"
4006       GCRYPT_CFLAGS="`libgcrypt-config --cflags`"
4007       GCRYPT_LIBS="`libgcrypt-config --libs`"
4008     ], [
4009       AC_MSG_ERROR([libgcrypt not found. Install libgcrypt or use --disable-libgcrypt. Have a nice day.])
4010     ], [`libgcrypt-config --libs`])
4011   ], [
4012     AC_MSG_ERROR([libgcrypt version 1.1.94 or higher not found. Install libgcrypt or use --disable-libgcrypt. Have a nice day.])
4013   ], [#include <gcrypt.h>]
4014   )
4015 ])
4016
4017 if test "${SYS}" = "mingw32" -o "${SYS}" = "mingwce"; then
4018   AS_IF([test "${have_libgcrypt}" = "yes"],[
4019     VLC_ADD_LIBS([rtp stream_out_rtp], [${GCRYPT_LIBS}])
4020   ])
4021 fi
4022 AC_SUBST(GCRYPT_CFLAGS)
4023 AC_SUBST(GCRYPT_LIBS)
4024 AM_CONDITIONAL([HAVE_GCRYPT], [test "${have_libgcrypt}" = "yes"])
4025
4026 dnl
4027 dnl TLS/SSL
4028 dnl
4029 AC_ARG_ENABLE(gnutls,
4030   [  --enable-gnutls         gnutls TLS/SSL support (default enabled)])
4031
4032 AS_IF([test "${have_libgcrypt}" != "yes"], [
4033   AS_IF([test "${enable_gnutls}" = "yes"], [
4034     AC_MSG_ERROR([--enable-gnutls and --disable-libgcrypt are mutually exclusive.])
4035   ])
4036   enable_gnutls="no"
4037 ])
4038 AS_IF([test "${enable_gnutls}" != "no"], [
4039   PKG_CHECK_MODULES(GNUTLS, [gnutls >= 1.7.4], [
4040     VLC_ADD_PLUGIN([gnutls])
4041     VLC_ADD_CFLAGS([gnutls], [$GNUTLS_CFLAGS])