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