]> git.sesse.net Git - vlc/blob - configure.ac
Don't force fno-omit-frame-pointer on darwin
[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 AS_IF([test "${enable_optimizations}" != "no"], [
980   enable_optimizations="speed"
981 ])
982
983 dnl Check for various optimization flags
984 AS_IF([test "${enable_optimizations}" != "no"], [
985
986   C_O=""
987   dnl -O4 and -O3 only in production builds
988   AS_IF([test "{enable_debug}" = "no"], [
989     AC_CACHE_CHECK([if $CC accepts -O4], [ac_cv_c_o4], [
990       CFLAGS="${CFLAGS_save} -O4"
991       AC_COMPILE_IFELSE([AC_LANG_PROGRAM()], [
992         ac_cv_c_o4=yes
993       ], [
994         ac_cv_c_o4=no
995       ])
996     ])
997     AS_IF([test "${ac_cv_c_o4}" != "no"], [
998       C_O="-O4"
999     ], [
1000       AC_CACHE_CHECK([if $CC accepts -O3],  [ac_cv_c_o3], [
1001         CFLAGS="${CFLAGS_save} -O3"
1002         AC_COMPILE_IFELSE([AC_LANG_PROGRAM()], [
1003           ac_cv_c_o3=yes
1004         ], [
1005           ac_cv_c_o3=no
1006         ])
1007       ])
1008       AS_IF([test "${ac_cv_c_o3}" != "no"], [
1009         C_O="-O3"
1010       ])
1011     ])
1012   ])
1013
1014   VLC_RESTORE_FLAGS
1015   CFLAGS="${CFLAGS} ${C_O}"
1016   CXXFLAGS="${CXXFLAGS} ${C_O}"
1017   OBJCFLAGS="${OBJCFLAGS} ${C_O}"
1018   VLC_SAVE_FLAGS
1019
1020   dnl Check for -ffast-math
1021   AC_CACHE_CHECK([if $CC accepts -ffast-math], [ac_cv_c_fast_math], [
1022     CFLAGS="${CFLAGS_save} -ffast-math"
1023     AC_COMPILE_IFELSE([AC_LANG_PROGRAM()], [
1024       ac_cv_c_fast_math=yes
1025     ], [
1026       ac_cv_c_fast_math=no
1027     ])
1028   ])
1029   AS_IF([test "${ac_cv_c_fast_math}" != "no"], [
1030     VLC_RESTORE_FLAGS
1031     CFLAGS="${CFLAGS} -ffast-math"
1032     CXXFLAGS="${CXXFLAGS} -ffast-math"
1033     OBJCFLAGS="${OBJCFLAGS} -ffast-math"
1034     VLC_SAVE_FLAGS
1035   ])
1036
1037   dnl Check for -funroll-loops
1038   AC_CACHE_CHECK([if $CC accepts -funroll-loops], [ac_cv_c_unroll_loops], [
1039     CFLAGS="${CFLAGS_save} -funroll-loops"
1040     AC_COMPILE_IFELSE([AC_LANG_PROGRAM()], [
1041       ac_cv_c_unroll_loops=yes
1042     ], [
1043       ac_cv_c_unroll_loops=no
1044     ])
1045   ])
1046   AS_IF([test "${ac_cv_c_unroll_loops}" != "no"], [
1047     VLC_RESTORE_FLAGS
1048     CFLAGS="${CFLAGS} -funroll-loops"
1049     CXXFLAGS="${CXXFLAGS} -funroll-loops"
1050     OBJCFLAGS="${OBJCFLAGS} -funroll-loops"
1051     VLC_SAVE_FLAGS
1052   ])
1053
1054   AS_IF([test "$enable_debug" = "no"], [
1055     dnl Check for -fomit-frame-pointer
1056     AC_CACHE_CHECK([if $CC accepts -fomit-frame-pointer],
1057       [ac_cv_c_omit_frame_pointer], [
1058       CFLAGS="${CFLAGS_save} -fomit-frame-pointer"
1059       AC_COMPILE_IFELSE([AC_LANG_PROGRAM()], [
1060         ac_cv_c_omit_frame_pointer=yes
1061       ], [
1062         ac_cv_c_omit_frame_pointer=no
1063       ])
1064     ])
1065     AS_IF([test "${ac_cv_c_omit_frame_pointer}" != "no"], [
1066       VLC_RESTORE_FLAGS
1067         CFLAGS="${CFLAGS} -fomit-frame-pointer"
1068         CXXFLAGS="${CXXFLAGS} -fomit-frame-pointer"
1069         OBJCFLAGS="${OBJCFLAGS} -fomit-frame-pointer"
1070       VLC_SAVE_FLAGS
1071     ])
1072   ])
1073 ])
1074
1075 dnl Check for Darwin plugin linking flags
1076 AS_IF([test "${SYS}" = "darwin"], [
1077   AC_CACHE_CHECK([if $CC accepts -bundle -undefined error],
1078     [ac_cv_ld_darwin], [
1079     CFLAGS="${CFLAGS_save} -bundle -undefined error"
1080     AC_COMPILE_IFELSE([AC_LANG_PROGRAM()], [
1081       ac_cv_ld_darwin=yes
1082     ], [
1083       ac_cv_ld_darwin=no
1084     ])
1085   ])
1086   AS_IF([test "${ac_cv_ld_darwin}" != "no"], [
1087     VLC_ADD_LDFLAGS([plugin],[-bundle -undefined error])
1088   ])
1089 ])
1090
1091 dnl Checks for __attribute__(aligned()) directive
1092 AC_CACHE_CHECK([__attribute__ ((aligned ())) support],
1093     [ac_cv_c_attribute_aligned],
1094     [ac_cv_c_attribute_aligned=0
1095         CFLAGS="${CFLAGS_save} -Werror"
1096     for ac_cv_c_attr_align_try in 2 4 8 16 32 64; do
1097         AC_TRY_COMPILE([],
1098         [static char c __attribute__ ((aligned(${ac_cv_c_attr_align_try}))) = 0; return c;],
1099         [ac_cv_c_attribute_aligned="${ac_cv_c_attr_align_try}"])
1100     done
1101         CFLAGS="${CFLAGS_save}"])
1102 if test "${ac_cv_c_attribute_aligned}" != "0"; then
1103     AC_DEFINE_UNQUOTED([ATTRIBUTE_ALIGNED_MAX],
1104         [${ac_cv_c_attribute_aligned}],[Maximum supported data alignment])
1105 fi
1106
1107 dnl Check for __attribute__((packed))
1108 AC_CACHE_CHECK([for __attribute__((packed))],
1109   [ac_cv_c_attribute_packed],
1110   [ac_cv_c_attribute_packed=no
1111    AC_TRY_COMPILE(, [struct __attribute__((__packed__)) foo { int a; } b; (void)b;],
1112                     [ac_cv_c_attribute_packed=yes])])
1113 if test "${ac_cv_c_attribute_packed}" != "no"; then
1114   AC_DEFINE(HAVE_ATTRIBUTE_PACKED, 1, Support for __attribute__((packed)) for structs)
1115 fi
1116
1117 dnl
1118 dnl  Check the CPU
1119 dnl
1120 case "${host_cpu}" in
1121   "")
1122     ARCH=unknown
1123     ;;
1124   *)
1125     ARCH="${host_cpu}"
1126     ;;
1127 esac
1128
1129 dnl Check for backtrace() support
1130 AC_CHECK_HEADERS(execinfo.h)
1131 AC_CHECK_FUNCS(backtrace)
1132
1133 dnl
1134 dnl  default modules
1135 dnl
1136 ALIASES="${ALIASES} cvlc rvlc"
1137
1138 dnl
1139 dnl Some plugins aren't useful on some platforms
1140 dnl
1141 if test "${SYS}" = "os2"; then
1142     VLC_ADD_PLUGIN([dynamicoverlay])
1143 elif test "${SYS}" != "mingw32" -a "${SYS}" != "mingwce"; then
1144     VLC_ADD_PLUGIN([dynamicoverlay access_shm])
1145 elif test "${SYS}" != "mingwce"; then
1146     VLC_ADD_PLUGIN([access_smb dmo globalhotkeys])
1147     VLC_ADD_LIBS([dmo],[-lole32 -luuid])
1148 fi
1149 if test "${SYS}" = "darwin"; then
1150     VLC_ADD_LIBS([quartztext],[-Wl,-framework,ApplicationServices])
1151 fi
1152
1153 dnl
1154 dnl  Accelerated modules
1155 dnl
1156
1157 dnl  Check for fully working MMX intrinsics
1158 dnl  We need support for -mmmx, we need <mmintrin.h>, and we also need a
1159 dnl  working compiler (http://gcc.gnu.org/bugzilla/show_bug.cgi?id=23963)
1160 AC_ARG_ENABLE(mmx,
1161   [AS_HELP_STRING([--disable-mmx],
1162     [disable MMX optimizations (default auto)])],,[
1163   case "${host_cpu}" in
1164     i?86|x86_64)
1165       enable_mmx="yes"
1166       ;;
1167     *)
1168       enable_mmx="no"
1169       ;;
1170   esac
1171 ])
1172 have_mmx="no"
1173 have_mmxext="no"
1174 AS_IF([test "${enable_mmx}" != "no"], [
1175   ARCH="${ARCH} mmx"
1176
1177   AC_CACHE_CHECK([if $CC groks MMX intrinsics], [ac_cv_c_mmx_intrinsics], [
1178     CFLAGS="${CFLAGS_save} -O -mmmx"
1179     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([
1180 [#include <mmintrin.h>
1181 #include <stdint.h>
1182 uint64_t frobzor;]], [
1183 [__m64 a, b, c;
1184 a = b = c = (__m64)frobzor;
1185 a = _mm_slli_pi16(a, 3);
1186 a = _mm_adds_pi16(a, b);
1187 c = _mm_srli_pi16(c, 8);
1188 c = _mm_slli_pi16(c, 3);
1189 b = _mm_adds_pi16(b, c);
1190 a = _mm_unpacklo_pi8(a, b);
1191 frobzor = (uint64_t)a;]])], [
1192       ac_cv_c_mmx_intrinsics=yes
1193     ], [
1194       ac_cv_c_mmx_intrinsics=no
1195     ])
1196     CFLAGS="${CFLAGS_save}"
1197   ])
1198   AS_IF([test "${ac_cv_c_mmx_intrinsics}" != "no"], [
1199     AC_DEFINE(HAVE_MMX_INTRINSICS, 1,
1200               [Define to 1 if MMX intrinsics are available.])
1201   ])
1202
1203   AC_CACHE_CHECK([if $CC groks MMX inline assembly], [ac_cv_mmx_inline], [
1204     CFLAGS="${CFLAGS_save} -mmmx"
1205     AC_COMPILE_IFELSE([AC_LANG_PROGRAM(,[[
1206 void *p;
1207 asm volatile("packuswb %%mm1,%%mm2"::"r"(p):"mm1", "mm2");
1208 ]])
1209     ], [
1210       ac_cv_mmx_inline=yes
1211     ], [
1212       ac_cv_mmx_inline=no
1213     ])
1214     CFLAGS="${CFLAGS_save}"
1215   ])
1216   AS_IF([test "${ac_cv_mmx_inline}" != "no"], [
1217     AC_DEFINE(CAN_COMPILE_MMX, 1,
1218               [Define to 1 inline MMX assembly is available.])
1219     have_mmx="yes"
1220   ])
1221
1222   AC_CACHE_CHECK([if $CC groks MMX EXT inline assembly],
1223                  [ac_cv_mmxext_inline], [
1224     CFLAGS="${CFLAGS_save} -mmmx"
1225     AC_COMPILE_IFELSE([AC_LANG_PROGRAM(,[[
1226 void *p;
1227 asm volatile("maskmovq %%mm1,%%mm2"::"r"(p):"mm1", "mm2");
1228 ]])
1229     ], [
1230       ac_cv_mmxext_inline=yes
1231     ], [
1232       ac_cv_mmxext_inline=no
1233     ])
1234     CFLAGS="${CFLAGS_save}"
1235   ])
1236   AS_IF([test "${ac_cv_mmxext_inline}" != "no"], [
1237     AC_DEFINE(CAN_COMPILE_MMXEXT, 1,
1238               [Define to 1 if MMX EXT inline assembly is available.])
1239     have_mmxext="yes"
1240   ])
1241 ])
1242 AM_CONDITIONAL([HAVE_MMX], [test "${have_mmx}" = "yes"])
1243 AM_CONDITIONAL([HAVE_MMXEXT], [test "${have_mmxext}" = "yes"])
1244
1245 dnl  Check for fully workin SSE2 intrinsics
1246 dnl  We need support for -mmmx, we need <emmintrin.h>, and we also need a
1247 dnl  working compiler (http://gcc.gnu.org/bugzilla/show_bug.cgi?id=23963)
1248 AC_ARG_ENABLE(sse,
1249   [AS_HELP_STRING([--disable-sse],
1250     [disable SSE (1-4) optimizations (default auto)])],, [
1251   case "${host_cpu}" in
1252     i?86|x86_64)
1253       enable_sse=yes
1254       ;;
1255     *)
1256       enable_sse=no
1257       ;;
1258   esac
1259 ])
1260 have_sse2="no"
1261 AS_IF([test "${enable_sse}" != "no"], [
1262   ARCH="${ARCH} sse sse2"
1263
1264   AC_CACHE_CHECK([if $CC groks SSE2 intrinsics], [ac_cv_c_sse2_intrinsics], [
1265     CFLAGS="${CFLAGS_save} -O -msse2"
1266     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([
1267 [#include <emmintrin.h>
1268 #include <stdint.h>
1269 uint64_t frobzor;]], [
1270 [__m128i a, b, c;
1271 a = b = c = _mm_set1_epi64((__m64)frobzor);
1272 a = _mm_slli_epi16(a, 3);
1273 a = _mm_adds_epi16(a, b);
1274 c = _mm_srli_epi16(c, 8);
1275 c = _mm_slli_epi16(c, 3);
1276 b = _mm_adds_epi16(b, c);
1277 a = _mm_unpacklo_epi8(a, b);
1278 frobzor = (uint64_t)_mm_movepi64_pi64(a);]])], [
1279       ac_cv_c_sse2_intrinsics=yes
1280     ], [
1281       ac_cv_c_sse2_intrinsics=no
1282     ])
1283     CFLAGS="${CFLAGS_save}"
1284 ])
1285   AS_IF([test "${ac_cv_c_sse2_intrinsics}" != "no"], [
1286     AC_DEFINE(HAVE_SSE2_INTRINSICS, 1,
1287               [Define to 1 if SSE2 intrinsics are available.])
1288   ])
1289
1290   AC_CACHE_CHECK([if $CC groks SSE inline assembly], [ac_cv_sse_inline], [
1291     CFLAGS="${CFLAGS_save} -msse"
1292     AC_COMPILE_IFELSE([AC_LANG_PROGRAM(,[[
1293 void *p;
1294 asm volatile("xorps %%xmm1,%%xmm2"::"r"(p):"xmm1", "xmm2");
1295 ]])
1296     ], [
1297       ac_cv_sse_inline=yes
1298     ], [
1299       ac_cv_sse_inline=no
1300     ])
1301     CFLAGS="${CFLAGS_save}"
1302   ])
1303   AS_IF([test "${ac_cv_sse_inline}" != "no" -a "${SYS}" != "solaris"], [
1304     AC_DEFINE(CAN_COMPILE_SSE, 1,
1305               [Define to 1 if SSE inline assembly is available.])
1306   ])
1307
1308   AC_CACHE_CHECK([if $CC groks SSE2 inline assembly], [ac_cv_sse2_inline], [
1309     CFLAGS="${CFLAGS_save} -msse"
1310     AC_COMPILE_IFELSE([AC_LANG_PROGRAM(,[[
1311 void *p;
1312 asm volatile("punpckhqdq %%xmm1,%%xmm2"::"r"(p):"xmm1", "xmm2");
1313 ]])
1314     ], [
1315       ac_cv_sse2_inline=yes
1316     ], [
1317       ac_cv_sse2_inline=no
1318     ])
1319     CFLAGS="${CFLAGS_save}"
1320   ])
1321   AS_IF([test "${ac_cv_sse2_inline}" != "no" -a "${SYS}" != "solaris"], [
1322     AC_DEFINE(CAN_COMPILE_SSE2, 1,
1323               [Define to 1 if SSE2 inline assembly is available.])
1324     have_sse2="yes"
1325   ])
1326
1327   # SSE3
1328   AC_CACHE_CHECK([if $CC groks SSE3 inline assembly], [ac_cv_sse3_inline], [
1329     CFLAGS="${CFLAGS_save} -msse"
1330     AC_COMPILE_IFELSE([AC_LANG_PROGRAM(,[[
1331 void *p;
1332 asm volatile("movsldup %%xmm1,%%xmm0"::"r"(p):"xmm0", "xmm1");
1333 ]])
1334     ], [
1335       ac_cv_sse3_inline=yes
1336     ], [
1337       ac_cv_sse3_inline=no
1338     ])
1339     CFLAGS="${CFLAGS_save}"
1340   ])
1341   AS_IF([test "${ac_cv_sse3_inline}" != "no"], [
1342     AC_DEFINE(CAN_COMPILE_SSE3, 1,
1343               [Define to 1 if SSE3 inline assembly is available.]) ])
1344   # SSSE3
1345   AC_CACHE_CHECK([if $CC groks SSSE3 inline assembly], [ac_cv_ssse3_inline], [
1346     CFLAGS="${CFLAGS_save} -msse"
1347     AC_COMPILE_IFELSE([AC_LANG_PROGRAM(,[[
1348 void *p;
1349 asm volatile("pabsw %%xmm0,%%xmm0"::"r"(p):"xmm0");
1350 ]])
1351     ], [
1352       ac_cv_ssse3_inline=yes
1353     ], [
1354       ac_cv_ssse3_inline=no
1355     ])
1356     CFLAGS="${CFLAGS_save}"
1357   ])
1358   AS_IF([test "${ac_cv_ssse3_inline}" != "no"], [
1359     AC_DEFINE(CAN_COMPILE_SSSE3, 1,
1360               [Define to 1 if SSSE3 inline assembly is available.]) ])
1361
1362   # SSE4.1
1363   AC_CACHE_CHECK([if $CC groks SSE4.1 inline assembly],
1364                  [ac_cv_sse4_1_inline], [
1365     CFLAGS="${CFLAGS_save} -msse"
1366     AC_COMPILE_IFELSE([AC_LANG_PROGRAM(,[[
1367 void *p;
1368 asm volatile("pmaxsb %%xmm1,%%xmm0"::"r"(p):"xmm0", "xmm1");
1369 ]])
1370     ], [
1371       ac_cv_sse4_1_inline=yes
1372     ], [
1373       ac_cv_sse4_1_inline=no
1374     ])
1375     CFLAGS="${CFLAGS_save}"
1376   ])
1377   AS_IF([test "${ac_cv_sse4_1_inline}" != "no"], [
1378     AC_DEFINE(CAN_COMPILE_SSE4_1, 1,
1379               [Define to 1 if SSE4_1 inline assembly is available.]) ])
1380
1381   # SSE4.2
1382   AC_CACHE_CHECK([if $CC groks SSE4.2 inline assembly],
1383                  [ac_cv_sse4_2_inline], [
1384     CFLAGS="${CFLAGS_save} -msse"
1385     AC_COMPILE_IFELSE([AC_LANG_PROGRAM(,[[
1386 void *p;
1387 asm volatile("pcmpgtq %%xmm1,%%xmm0"::"r"(p):"xmm0", "xmm1");
1388 ]])
1389     ], [
1390       ac_cv_sse4_2_inline=yes
1391     ], [
1392       ac_cv_sse4_2_inline=no
1393     ])
1394     CFLAGS="${CFLAGS_save}"
1395   ])
1396   AS_IF([test "${ac_cv_sse4_2_inline}" != "no"], [
1397     AC_DEFINE(CAN_COMPILE_SSE4_2, 1,
1398               [Define to 1 if SSE4_2 inline assembly is available.]) ])
1399
1400   # SSE4A
1401   AC_CACHE_CHECK([if $CC groks SSE4A inline assembly], [ac_cv_sse4a_inline], [
1402     CFLAGS="${CFLAGS_save} -msse"
1403     AC_COMPILE_IFELSE([AC_LANG_PROGRAM(,[[
1404 void *p;
1405 asm volatile("insertq %%xmm1,%%xmm0"::"r"(p):"xmm0", "xmm1");
1406 ]])
1407     ], [
1408       ac_cv_sse4a_inline=yes
1409     ], [
1410       ac_cv_sse4a_inline=no
1411     ])
1412     CFLAGS="${CFLAGS_save}"
1413   ])
1414   AS_IF([test "${ac_cv_sse4a_inline}" != "no"], [
1415     AC_DEFINE(CAN_COMPILE_SSE4A, 1,
1416               [Define to 1 if SSE4A inline assembly is available.]) ])
1417 ])
1418 AM_CONDITIONAL([HAVE_SSE2], [test "$have_sse2" = "yes"])
1419
1420 have_3dnow="no"
1421 AC_CACHE_CHECK([if $CC groks 3D Now! inline assembly], [ac_cv_3dnow_inline], [
1422   CFLAGS="${CFLAGS_save} -mmmx"
1423   AC_COMPILE_IFELSE([AC_LANG_PROGRAM(,[[
1424 void *p;
1425 asm volatile("pfadd %%mm1,%%mm2"::"r"(p):"mm1", "mm2");
1426 ]])
1427   ], [
1428     ac_cv_3dnow_inline=yes
1429   ], [
1430     ac_cv_3dnow_inline=no
1431   ])
1432   CFLAGS="${CFLAGS_save}"
1433 ])
1434 AS_IF([test "${ac_cv_3dnow_inline}" != "no"], [
1435   AC_DEFINE(CAN_COMPILE_3DNOW, 1,
1436             [Define to 1 if 3D Now! inline assembly is available.])
1437   have_3dnow="yes"
1438 ])
1439 AM_CONDITIONAL([HAVE_3DNOW], [test "$have_3dnow" = "yes"])
1440
1441
1442 AC_ARG_ENABLE(neon,
1443   [AS_HELP_STRING([--disable-neon],
1444     [disable NEON optimizations (default auto)])],, [
1445   AS_IF([test "${host_cpu}" = "arm"], [enable_neon="yes"] ,[enable_neon="no"])
1446 ])
1447 AS_IF([test "${enable_neon}" != "no"], [
1448   AC_CACHE_CHECK([if $CC groks NEON inline assembly], [ac_cv_neon_inline], [
1449     CFLAGS="${CFLAGS_save} -mfpu=neon"
1450     AC_COMPILE_IFELSE([
1451       AC_LANG_PROGRAM(,[[
1452 asm volatile("vqmovun.s64 d0, q1":::"d0");
1453 asm volatile("ssat r0, #1, r0":::"r0"); /* assume ARMv6 */
1454 ]])
1455     ], [
1456       ac_cv_neon_inline="-mfpu=neon"
1457     ], [
1458       ac_cv_neon_inline="no"
1459     ])
1460     CFLAGS="${CFLAGS_save}"
1461   ])
1462   AS_IF([test "$ac_cv_neon_inline" != "no"], [
1463     NEON_CFLAGS="$ac_cv_neon_inline"
1464     AC_DEFINE([CAN_COMPILE_NEON], 1,
1465       [Define to 1 if NEON (and ARMv6) assembly is available with NEON_CFLAGS.])
1466   ])
1467 ], [
1468   ac_cv_neon_inline="no"
1469 ])
1470 AC_SUBST(NEON_CFLAGS)
1471 AM_CONDITIONAL(HAVE_NEON, [test "${ac_cv_neon_inline}" != "no"])
1472
1473
1474 AC_ARG_ENABLE(altivec,
1475   [AS_HELP_STRING([--disable-altivec],
1476     [disable AltiVec optimizations (default auto)])],, [
1477   AS_IF([test "${host_cpu}" = "powerpc"],
1478         [enable_altivec=yes], [enable_altivec=no])
1479 ])
1480 have_altivec="no"
1481 AS_IF([test "${enable_altivec}" = "yes"], [
1482   ARCH="${ARCH} altivec";
1483   AC_CACHE_CHECK([if $CC groks AltiVec inline assembly],
1484     [ac_cv_altivec_inline],
1485     [CFLAGS="${CFLAGS_save}"
1486      AC_TRY_COMPILE(,[asm volatile("vperm 0,1,2,3");],
1487          ac_cv_altivec_inline="yes",
1488          [CFLAGS="${CFLAGS_save} -Wa,-m7400"
1489           AC_TRY_COMPILE(,[asm volatile("vperm 0,1,2,3");],
1490             [ac_cv_altivec_inline="-Wa,-m7400"],
1491             ac_cv_altivec_inline=no)
1492          ])])
1493   AS_IF([test "${ac_cv_altivec_inline}" != "no"], [
1494     AC_DEFINE(CAN_COMPILE_ALTIVEC, 1,
1495               [Define to 1 if AltiVec inline assembly is available.])
1496     AS_IF([test "${ac_cv_altivec_inline}" != "yes"], [
1497       VLC_ADD_CFLAGS([memcpyaltivec],[${ac_cv_altivec_inline}])
1498       VLC_ADD_CFLAGS([i420_yuy2_altivec],[${ac_cv_altivec_inline}])
1499       VLC_ADD_CFLAGS([libvlccore],[${ac_cv_altivec_inline}])
1500     ])
1501     have_altivec="yes"
1502   ])
1503
1504 dnl The AltiVec C extensions
1505 dnl
1506 dnl There are several possible cases:
1507 dnl - OS X PPC, gcc 4.x: use -mpim-altivec -force_cpusubtype_ALL, don't
1508 dnl                      need <altivec.h>
1509 dnl - OS X PPC, gcc 3.x: need -faltivec, don't need <altivec.h>
1510 dnl - Linux PPC, gcc 3.4, 4.x: need <altivec.h> which requires -maltivec
1511 dnl - Linux PPC, gcc 3.3: need <altivec.h> and -maltivec -mabi=altivec
1512 dnl - Linux PPC, gcc 3.x: need <altivec.h> and -fvec
1513 dnl - Others: test should fail
1514   AC_CACHE_CHECK([if \$CC groks AltiVec C extensions],
1515   [ac_cv_c_altivec],
1516   [# OS X/PPC test (gcc 4.x)
1517    CFLAGS="${CFLAGS_save} -mpim-altivec -force_cpusubtype_ALL"
1518    AC_TRY_COMPILE([vector unsigned char foo;],
1519      [vec_ld(0, (unsigned char *)0);],
1520      [ac_cv_c_altivec="-mpim-altivec -force_cpusubtype_ALL"],
1521      [# OS X/PPC test (gcc 3.x)
1522       CFLAGS="${CFLAGS_save} -faltivec"
1523       AC_TRY_COMPILE([vector unsigned char foo;],
1524         [vec_ld(1 * sizeof(vector float), (unsigned char *)0);],
1525         [ac_cv_c_altivec="-faltivec"],
1526         dnl Below this are the Linux tests
1527         [# Linux/PPC test (gcc 4.x)
1528          CFLAGS="${CFLAGS_save} -maltivec"
1529          AC_TRY_COMPILE([#include <altivec.h>],
1530            [vec_ld(0, (unsigned char *)0);],
1531            [ac_cv_c_altivec="-maltivec"],
1532            [# Linux/PPC test (gcc 3.3)
1533             CFLAGS="${CFLAGS_save} -maltivec -mabi=altivec"
1534             AC_TRY_COMPILE([#include <altivec.h>],
1535               [vec_ld(0, (unsigned char *)0);],
1536               [ac_cv_c_altivec=""
1537                ac_cv_c_altivec_abi="-maltivec -mabi=altivec"],
1538               [# Linux/PPC test (gcc 3.3)
1539                CFLAGS="${CFLAGS_save} -fvec"
1540                AC_TRY_COMPILE([#include <altivec.h>],
1541                  [vec_ld(0, (unsigned char *)0);],
1542                  [ac_cv_c_altivec="-fvec"],
1543                  [ac_cv_c_altivec=no])
1544               ])
1545            ])
1546         ])
1547      ])
1548    CFLAGS="${CFLAGS_save}"
1549   ])
1550   AS_IF([test "${ac_cv_c_altivec}" != "no"], [
1551     CPPFLAGS="${CPPFLAGS_save} ${ac_cv_c_altivec}"
1552   ])
1553
1554   AC_CHECK_HEADERS(altivec.h)
1555   CPPFLAGS="${CPPFLAGS_save}"
1556
1557   AS_IF([test "${ac_cv_c_altivec}" != "no"], [
1558     AC_DEFINE(CAN_COMPILE_C_ALTIVEC, 1,
1559               [Define to 1 if C AltiVec extensions are available.])
1560     VLC_ADD_CFLAGS([libvlccore],[${ac_cv_c_altivec}])
1561     VLC_ADD_CFLAGS([i420_yuy2_altivec memcpyaltivec deinterlace],[${ac_cv_c_altivec} ${ac_cv_c_altivec_abi}])
1562     have_altivec="yes"
1563   ])
1564
1565   AC_CACHE_CHECK([if linker needs -framework vecLib],
1566     [ac_cv_ld_altivec],
1567     [LDFLAGS="${LDFLAGS_vlc} -Wl,-framework,vecLib"
1568      AC_TRY_LINK([],,ac_cv_ld_altivec=yes,ac_cv_ld_altivec=no)
1569      LDFLAGS="${LDFLAGS_save}"
1570     ])
1571   AS_IF([test "${ac_cv_ld_altivec}" != "no"], [
1572     VLC_ADD_LIBS([libvlccore memcpyaltivec],[-Wl,-framework,vecLib])
1573   ])
1574 ])
1575 AM_CONDITIONAL([HAVE_ALTIVEC], [test "$have_altivec" = "yes"])
1576
1577 dnl
1578 dnl  Special arch tuning
1579 dnl
1580 AC_ARG_WITH(tuning,
1581   [AS_HELP_STRING([--with-tuning=ARCH],
1582     [tune compilation for an architecture (default varies)])])
1583 if test -n "${with_tuning}"; then
1584     if test "${with_tuning}" != "no"; then
1585         CFLAGS_TUNING="-mtune=${with_tuning}"
1586     fi
1587 else
1588     if test "${SYS}" = "darwin" -a "${host_cpu}" = "i686"; then
1589         CFLAGS_TUNING="-march=prescott -mtune=generic"
1590     elif test "${SYS}" = "darwin" -a "${host_cpu}" = "x86_64"; then
1591         CFLAGS_TUNING="-march=core2 -mtune=core2"
1592     elif test "${host_cpu}" = "i686" -o "${host_cpu}" = "i586" -o "${host_cpu}" = "i486" -o "${host_cpu}" = "i386"; then
1593         CFLAGS_TUNING="-mtune=pentium2"
1594     elif test "${host_cpu}" = "x86_64"; then
1595         CFLAGS_TUNING="-mtune=athlon64"
1596     elif test "${host_cpu}" = "powerpc"; then
1597         CFLAGS_TUNING="-mtune=G4";
1598     fi
1599 fi
1600
1601 dnl NOTE: this can't be cached cleanly
1602 AS_IF([test -n "${CFLAGS_TUNING}"], [
1603   AC_MSG_CHECKING([whether $CC accepts ${CFLAGS_TUNING}])
1604   CFLAGS="${CFLAGS_save} ${CFLAGS_TUNING}"
1605   AC_COMPILE_IFELSE([AC_LANG_SOURCE([])], [
1606     tuning="yes"
1607   ], [
1608     CFLAGS_TUNING=""; tuning="no"
1609     AS_IF([test "${with_tuning}"], [
1610       AC_MSG_ERROR([requested tuning not supported])
1611     ])
1612   ])
1613   CFLAGS="${CFLAGS_save}"
1614   AC_MSG_RESULT([$tuning])
1615   VLC_RESTORE_FLAGS
1616   CFLAGS="${CFLAGS} ${CFLAGS_TUNING}"
1617   VLC_SAVE_FLAGS
1618 ])
1619
1620 dnl
1621 dnl  Memory usage
1622 dnl
1623 AC_ARG_ENABLE(optimize-memory,
1624   [AS_HELP_STRING([--enable-optimize-memory],
1625     [optimize memory usage over performance])])
1626 if test "${enable_optimize_memory}" = "yes"; then
1627   AC_DEFINE(OPTIMIZE_MEMORY, 1, Define if you want to optimize memory usage over performance)
1628 fi
1629
1630 dnl
1631 dnl Allow running as root (useful for people running on embedded platforms)
1632 dnl
1633 AC_ARG_ENABLE(run-as-root,
1634   [AS_HELP_STRING([--enable-run-as-root],
1635     [allow running VLC as root (default disabled)])])
1636 AS_IF([test "${enable_run_as_root}" = "yes"],[
1637     AC_DEFINE(ALLOW_RUN_AS_ROOT, 1,
1638               [Define to 1 to allow running VLC as root (uid 0).])
1639 ])
1640
1641 dnl
1642 dnl Stream output
1643 dnl
1644 AC_ARG_ENABLE(sout,
1645   [AS_HELP_STRING([--disable-sout],
1646     [disable streaming output (default enabled)])])
1647 AS_IF([test "${enable_sout}" != "no"], [
1648   AC_DEFINE(ENABLE_SOUT, 1, [Define to 1 for stream output support.])
1649 ])
1650 AM_CONDITIONAL(ENABLE_SOUT, [test "${enable_sout}" != "no"])
1651
1652 dnl Lua modules
1653 AC_ARG_ENABLE(lua,
1654   [AS_HELP_STRING([--disable-lua],
1655     [disable LUA scripting support (default enabled)])])
1656 if test "${enable_lua}" != "no"
1657 then
1658   PKG_CHECK_MODULES(LUA, lua5.1,
1659     [ have_lua=yes ],
1660     [
1661     AC_MSG_WARN([${LUA_PKG_ERRORS}, trying lua >= 5.1 instead])
1662     PKG_CHECK_MODULES(LUA, lua >= 5.1,
1663       [ have_lua=yes ],
1664       [
1665         AC_MSG_WARN([${LUA_PKG_ERRORS}, trying manual detection instead])
1666         have_lua=yes
1667         AC_CHECK_HEADERS([lua.h lauxlib.h lualib.h],
1668           [],
1669           [ have_lua=no ] )
1670         AC_CHECK_LIB(  lua5.1 , luaL_newstate,
1671           [LUA_LIBS="-llua5.1"],
1672           AC_CHECK_LIB( lua51 , luaL_newstate,
1673             [LUA_LIBS="-llua51"],
1674             AC_CHECK_LIB( lua , luaL_newstate,
1675               [LUA_LIBS="-llua"],
1676               [ have_lua=no
1677               ], [-lm])
1678           )
1679         )
1680       ])
1681     ])
1682   if test "x${have_lua}" = "xyes" ;  then
1683      VLC_ADD_LIBS([lua],[$LUA_LIBS])
1684      VLC_ADD_CFLAGS([lua],[$LUA_CFLAGS])
1685   else
1686       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.])
1687   fi
1688   AC_ARG_VAR([LUAC], [LUA byte compiler])
1689   AC_PATH_PROGS(LUAC,[${LUAC} luac], [false])
1690   AS_IF([test "${LUAC}" = "false"], [
1691     AC_MSG_ERROR([Could not find the LUA byte compiler.])
1692   ])
1693 fi
1694 AM_CONDITIONAL(BUILD_LUA, [test "${have_lua}" = "yes"])
1695
1696
1697 dnl
1698 dnl HTTP daemon
1699 dnl
1700 AC_ARG_ENABLE(httpd,
1701   [AS_HELP_STRING([--disable-httpd],
1702     [disable the built-in HTTP server (default enabled)])])
1703 if test "${enable_httpd}" != "no"
1704 then
1705   AC_DEFINE(ENABLE_HTTPD, 1, Define if you want the HTTP daemon support)
1706 fi
1707 AM_CONDITIONAL(BUILD_HTTPD, [test "${enable_httpd}" != "no"])
1708
1709
1710 dnl
1711 dnl VideoLAN manager
1712 dnl
1713 AC_ARG_ENABLE(vlm,
1714   [AS_HELP_STRING([--disable-vlm],
1715     [disable the stream manager (default enabled)])],,
1716   [enable_vlm="${enable_sout}"])
1717 AS_IF([test "${enable_vlm}" != "no"], [
1718   AS_IF([test "${enable_sout}" = "no"], [
1719     AC_MSG_ERROR([VLM requires the stream output. Do not use --disable-sout.])
1720   ])
1721   AC_DEFINE(ENABLE_VLM, 1, [Define if you want the VideoLAN manager support])
1722 ])
1723 AM_CONDITIONAL([ENABLE_VLM], [test "${enable_vlm}" != "no"])
1724
1725
1726 dnl
1727 dnl  Input plugins
1728 dnl
1729
1730 EXTEND_HELP_STRING([Input plugins:])
1731
1732 dnl
1733 dnl libproxy support
1734 dnl
1735 AC_ARG_ENABLE(libproxy,
1736   [AS_HELP_STRING([--enable-libproxy],[support libproxy (default auto)])])
1737 AS_IF([test "${enable_libproxy}" != "no"], [
1738   PKG_CHECK_MODULES(LIBPROXY, libproxy-1.0, [
1739     AC_DEFINE(HAVE_LIBPROXY, 1, [Define if libproxy is available])
1740     VLC_ADD_CFLAGS([access_http],[$LIBPROXY_CFLAGS])
1741     VLC_ADD_LIBS([access_http],[$LIBPROXY_LIBS])
1742   ], [
1743     AS_IF([test -n "${enable_libproxy}"], [
1744       AC_MSG_ERROR([${LIBPROXY_PKG_ERRORS}.])
1745     ])
1746   ])
1747 ])
1748
1749 dnl
1750 dnl  live555 input
1751 dnl
1752 AC_ARG_ENABLE(live555,
1753   [AS_HELP_STRING([--enable-live555],
1754     [enable RTSP input through live555 (default enabled)])])
1755 AS_IF([test "${enable_live555}" != "no" -a -n "${CXX}"], [
1756   AC_LANG_PUSH(C++)
1757   CPPFLAGS_save="${CPPFLAGS}"
1758   AS_IF([test -z "${CONTRIB_DIR}"], [
1759     CPPFLAGS_live555="-I/usr/include/liveMedia -I/usr/include/groupsock -I/usr/include/BasicUsageEnvironment -I/usr/include/UsageEnvironment"
1760   ], [
1761     CPPFLAGS_live555="-I${CONTRIB_DIR}/include/liveMedia -I${CONTRIB_DIR}/include/groupsock -I${CONTRIB_DIR}/include/BasicUsageEnvironment -I${CONTRIB_DIR}/include/UsageEnvironment"
1762   ])
1763   AS_IF([test "${SYS}" = "solaris"], [
1764     CPPFLAGS_live555="${CPPFLAGS_live555} -DSOLARIS"
1765   ])
1766   CPPFLAGS="${CPPFLAGS} ${CPPFLAGS_live555}"
1767
1768   AC_CACHE_CHECK([for live555 version 1275091200 or later], [ac_cv_live555], [
1769     AC_PREPROC_IFELSE([AC_LANG_PROGRAM([
1770 [#include <liveMedia_version.hh>
1771 #if !defined (LIVEMEDIA_LIBRARY_VERSION_INT) || (LIVEMEDIA_LIBRARY_VERSION_INT < 1275091200)
1772 # error BOOM
1773 #endif]])
1774     ], [
1775       ac_cv_live555="yes"
1776     ], [
1777       ac_cv_live555="no"
1778     ])
1779   ])
1780   AS_IF([test "$ac_cv_live555" = "no"], [
1781     AC_MSG_WARN([liveMedia is missing or its installed version is too old:
1782 Version 2010.05.29 or later is required to proceed.
1783 You can get an updated one from http://www.live555.com/liveMedia .])
1784     AS_IF([test -n "${enable_live555}"], [
1785       AC_MSG_ERROR([Update live555 or pass --disable-live555 to disable RTSP input support.])
1786     ])
1787     ac_cv_live555_usable=""
1788   ], [
1789     dnl Check that live555 is patched correctly.
1790     AC_CACHE_CHECK([for live555 usability], [ac_cv_live555_usable], [
1791       AC_COMPILE_IFELSE([AC_LANG_PROGRAM([
1792 [#include <locale.h>
1793 #ifdef __APPLE__
1794 # include <xlocale.h>
1795 #endif
1796 #undef LC_ALL
1797 #define LC_ALL BOOM
1798 #ifdef LC_ALL_MASK
1799 #include <Locale.hh>
1800 #endif
1801 #include <GroupsockHelper.hh>]], [
1802 [struct in_addr addr;
1803 our_inet_ntoa(addr, NULL);]])
1804       ], [
1805         ac_cv_live555_usable="yes"
1806       ], [
1807         ac_cv_live555_usable="no"
1808       ])
1809     ])
1810     AS_IF([test "$ac_cv_live555_usable" = "no"], [
1811       AC_MSG_ERROR([liveMedia lacks patches and is not usable.
1812 Please apply our patches from the VLC contrib (contrib/src/live555/).
1813 You can also disable RTSP input with --disable-live555. You were warned.])
1814     ])
1815     other_libs="-lgroupsock -lBasicUsageEnvironment -lUsageEnvironment"
1816     other_libs_pic="-lgroupsock_pic -lBasicUsageEnvironment_pic -lUsageEnvironment_pic"
1817     AS_IF([test "${SYS}" = "mingw32"], [
1818       # add ws2_32 for closesocket, select, recv
1819       other_libs="$other_libs -lws2_32"
1820     ], [test "${SYS}" = "mingwce"], [
1821       # add ws2 for closesocket, select, recv
1822       other_libs="$other_libs -lws2"
1823     ])
1824
1825     dnl We need to check for pic because live555 don't provide shared libs
1826     dnl and we want to build a plugins so we need -fPIC on some arch.
1827     VLC_ADD_CXXFLAGS([live555], [${CPPFLAGS_live555}])
1828     AC_CHECK_LIB(liveMedia_pic, main, [
1829       VLC_ADD_PLUGIN([live555])
1830       VLC_ADD_LIBS([live555], [-lliveMedia_pic ${other_libs_pic}])
1831     ],[
1832       AC_CHECK_LIB(liveMedia, main, [
1833         VLC_ADD_PLUGIN([live555])
1834         VLC_ADD_LIBS([live555], [-lliveMedia ${other_libs}])
1835       ],[],[${other_libs}])],[${other_libs_pic}])
1836   ])
1837   CPPFLAGS="${CPPFLAGS_save}"
1838   AC_LANG_POP(C++)
1839 ])
1840
1841 dnl
1842 dnl - special access module for dc1394 input
1843 dnl - dv module: digital video module check for libraw1394
1844 dnl - linsys modules: access module check for libzvbi
1845 dnl
1846 PKG_ENABLE_MODULES_VLC([DC1394], [], [libraw1394 >= 2.0.1 libdc1394-2 >= 2.1.0], [dc1394 access module], [auto])
1847 PKG_ENABLE_MODULES_VLC([DV], [access_dv], [libraw1394 >= 2.0.1 libavc1394 >= 0.5.3], [DV input module], [auto])
1848
1849 AC_ARG_ENABLE(linsys,
1850   [AS_HELP_STRING([--enable-linsys],
1851     [Linux Linear Systems Ltd. SDI and HD-SDI input cards (default enabled)])])
1852 if test "$SYS" = "linux" -a "${enable_linsys}" != "no"; then
1853   VLC_ADD_PLUGIN([linsys_hdsdi])
1854   PKG_CHECK_MODULES(LINSYS_SDI, [zvbi-0.2 >= 0.2.28],
1855     [ VLC_ADD_LIBS([linsys_sdi],[$LINSYS_SDI_LIBS])
1856       VLC_ADD_CFLAGS([linsys_sdi],[$LINSYS_SDI_CFLAGS])
1857       VLC_ADD_PLUGIN([linsys_sdi]) ],
1858     [AC_MSG_WARN([${LINSYS_SDI_PKG_ERRORS}.])]
1859   )
1860 fi
1861
1862 dnl
1863 dnl dvdread module: check for libdvdread
1864 dnl
1865 dnl prepend -ldvdcss on OS that need it
1866 AS_CASE(["${SYS}"], [mingw32|darwin], [VLC_ADD_LIBS([dvdread], [-ldvdcss])])
1867 PKG_ENABLE_MODULES_VLC([DVDREAD], [], [dvdread], [dvdread input module], [auto])
1868
1869 dnl
1870 dnl libdvdnav plugin
1871 dnl
1872 AC_ARG_ENABLE(dvdnav,
1873   [AS_HELP_STRING([--disable-dvdnav],
1874     [disable DVD navigation with libdvdnav (default auto)])])
1875 if test "${enable_dvdnav}" != "no"
1876 then
1877   dnl prepend -ldvdcss on OS that need it
1878   AS_CASE(["${SYS}"], [mingw32|darwin], [VLC_ADD_LIBS([dvdnav], [-ldvdcss])])
1879
1880   PKG_CHECK_MODULES(DVDNAV, dvdnav, [
1881     VLC_ADD_PLUGIN([dvdnav])
1882     VLC_ADD_CFLAGS([dvdnav],[${DVDNAV_CFLAGS}])
1883     VLC_ADD_LIBS([dvdnav],[${DVDNAV_LIBS}])
1884     AC_CHECK_LIB(dvdnav, dvdnav_get_video_resolution,
1885       AC_DEFINE(HAVE_DVDNAV_GET_VIDEO_RESOLUTION, 1, [Define if you have dvdnav_get_video_resolution.]),
1886         [], [${LIBS_dvdnav}])
1887     AC_CHECK_LIB(dvdnav, dvdnav_describe_title_chapters,
1888       AC_DEFINE(HAVE_DVDNAV_DESCRIBE_TITLE_CHAPTERS, 1, [Define if you have dvdnav_describe_title_chapters.]),
1889         [], [${LIBS_dvdnav}])],
1890       [AC_MSG_WARN([${DVDNAV_PKG_ERRORS}.])])
1891 fi
1892
1893 dnl
1894 dnl  Windows DirectShow access module
1895 dnl
1896 AC_ARG_ENABLE(dshow,
1897   [AS_HELP_STRING([--disable-dshow],
1898     [support DirectShow (default auto)])])
1899 if test "${enable_dshow}" != "no"
1900 then
1901   if test "${SYS}" = "mingw32"
1902   then
1903     AC_LANG_PUSH(C++)
1904       AC_CHECK_HEADERS(dshow.h,
1905       [ VLC_ADD_PLUGIN([dshow])
1906         VLC_ADD_CXXFLAGS([dshow],[])
1907         VLC_ADD_LIBS([dshow],[-lole32 -loleaut32 -luuid]) ])
1908     AC_LANG_POP(C++)
1909   fi
1910 fi
1911
1912 dnl
1913 dnl  Blu-ray Disc Support with libbluray
1914 dnl
1915 PKG_ENABLE_MODULES_VLC([BLURAY], [libbluray], [libbluray >= 0.2 libxml-2.0 >= 2.6 ], (libbluray for Blu-ray disc support ) )
1916
1917 dnl
1918 dnl  OpenCV wrapper and example filters
1919 dnl
1920 PKG_ENABLE_MODULES_VLC([OPENCV], [opencv_example opencv_wrapper], [opencv], (OpenCV (computer vision) filter), [off])
1921
1922
1923 dnl
1924 dnl  libsmbclient plugin
1925 dnl
1926 AC_ARG_ENABLE(smb,
1927   [AS_HELP_STRING([--disable-smb], [disable SMB/CIFS support (default auto)])])
1928 if test "${enable_smb}" != "no"; then
1929   AC_CHECK_HEADERS(libsmbclient.h,
1930     [ VLC_ADD_PLUGIN([access_smb])
1931       VLC_ADD_LIBS([access_smb],[-lsmbclient]) ],
1932     [ if test -n "${enable_smb}"; then
1933         AC_MSG_ERROR([cannot find libsmbclient headers])
1934      fi ])
1935 fi
1936
1937
1938 dnl
1939 dnl sftp access support
1940 dnl
1941 AC_ARG_ENABLE(sftp,
1942   [AS_HELP_STRING([--enable-sftp],
1943     [support SFTP file transfer via libssh2 (default disabled)])])
1944 if test "${enable_sftp}" = "yes"; then
1945   AC_CHECK_HEADERS(libssh2.h, [
1946     VLC_ADD_PLUGIN([access_sftp])
1947     VLC_ADD_LIBS([access_sftp], [-lssh2])
1948   ])
1949 fi
1950
1951 dnl
1952 dnl  Video4Linux 2
1953 dnl
1954 AC_ARG_ENABLE(libv4l2, [AS_HELP_STRING([--disable-libv4l2],
1955   [disable userspace V4L2 library (default auto)])])
1956 AC_ARG_ENABLE(pvr, [AS_HELP_STRING([--enable-pvr],
1957   [support PVR V4L2 cards (default disabled)])])
1958 have_v4l2="no"
1959 AC_CHECK_HEADERS([linux/videodev2.h sys/videoio.h], [
1960   have_v4l2="yes"
1961 ])
1962 AS_IF([test "$have_v4l2" = "yes"], [
1963   AS_IF([test "${enable_libv4l2}" != "no"], [
1964     PKG_CHECK_MODULES(LIBV4L2, libv4l2, [
1965       AC_DEFINE(HAVE_LIBV4L2, 1, [Define to 1 if libv4l2 is available])
1966     ], [
1967       AC_MSG_WARN([${LIBV4L2_PKG_ERRORS}.])
1968     ])
1969   ])
1970   AS_IF([test "${enable_pvr}" = "yes"], [
1971     VLC_ADD_PLUGIN([pvr])
1972   ])
1973 ])
1974 AM_CONDITIONAL(HAVE_V4L2, [test "${have_v4l2}" != "no"])
1975
1976 dnl
1977 dnl special access module for Blackmagic SDI cards
1978 dnl
1979 AC_ARG_ENABLE(decklink,
1980   [AS_HELP_STRING([--disable-decklink],
1981     [disable Blackmagic DeckLink SDI input (default auto)])])
1982 AC_ARG_WITH(decklink_sdk,
1983   [AS_HELP_STRING[--with-decklink-sdk=DIR],
1984     [                        location of Blackmagic DeckLink SDI SDK])])
1985 if test "${enable_decklink}" != "no"
1986 then
1987   if test "${with_decklink_sdk}" != "no" -a -n "${with_decklink_sdk}"
1988   then
1989     VLC_ADD_CPPFLAGS([decklink],[-I${with_decklink_sdk}/include])
1990   fi
1991   CPPFLAGS="${CPPFLAGS_save} ${CPPFLAGS_decklink}"
1992   AC_LANG_PUSH(C++)
1993   AC_CHECK_HEADERS(DeckLinkAPIDispatch.cpp, [
1994     VLC_ADD_PLUGIN([decklink])
1995   ],[AC_MSG_WARN(Blackmagic DeckLink SDI include files not found, decklink disabled)])
1996   AC_LANG_POP(C++)
1997   CPPFLAGS="${CPPFLAGS_save}"
1998 fi
1999
2000
2001 dnl
2002 dnl  gnomeVFS access module
2003 dnl
2004 PKG_ENABLE_MODULES_VLC([GNOMEVFS], [access_gnomevfs], [gnome-vfs-2.0], [GnomeVFS access module], [auto])
2005
2006 dnl
2007 dnl  VCDX modules
2008 dnl
2009 AC_ARG_ENABLE(vcdx,
2010   [AS_HELP_STRING([--enable-vcdx],
2011     [navigate VCD with libvcdinfo (default disabled)])])
2012 if test "${enable_vcdx}" = "yes"
2013 then
2014     PKG_CHECK_MODULES(LIBCDIO, [libcdio >= 0.78.2 libiso9660 >= 0.72],
2015       [VLC_ADD_LIBS([vcdx],[$LIBCDIO_LIBS])
2016          VLC_ADD_CFLAGS([vcdx],[$LIBCDIO_CFLAGS])],
2017         [AC_MSG_ERROR([${LIBCDIO_PKG_ERRORS} (required for vcdx plugin).])])
2018     PKG_CHECK_MODULES(LIBVCDINFO, libvcdinfo >= 0.7.22,
2019         [VLC_ADD_LIBS([vcdx],[$LIBVCDINFO_LIBS])
2020          VLC_ADD_CFLAGS([vcdx],[$LIBVCDINFO_CFLAGS])],
2021       [AC_MSG_ERROR([${LIBVCDINFO_PKG_ERRORS} (required for vcdx plugin).])])
2022     VLC_ADD_PLUGIN([vcdx])
2023 fi
2024
2025 dnl
2026 dnl  Built-in CD-DA and VCD module
2027 dnl
2028 AC_ARG_ENABLE(vcd,
2029   [AS_HELP_STRING([--disable-vcd],
2030     [disable built-in VCD and CD-DA support (default enabled)])])
2031
2032 AC_ARG_ENABLE(libcddb,
2033   [AS_HELP_STRING([--disable-libcddb],
2034     [disable CDDB for Audio CD (default enabled)])])
2035
2036 if test "${enable_vcd}" != "no"
2037 then
2038   AC_MSG_CHECKING(for cdrom_msf0 in linux/cdrom.h)
2039   AC_EGREP_HEADER(cdrom_msf0,linux/cdrom.h,[
2040     AC_MSG_RESULT(yes)
2041     VLC_ADD_PLUGIN([vcd cdda])
2042   ],[
2043     AC_MSG_RESULT(no)
2044   ])
2045
2046   AC_MSG_CHECKING(for scsireq in sys/scsiio.h)
2047   AC_EGREP_HEADER(scsireq,sys/scsiio.h,[
2048     AC_MSG_RESULT(yes)
2049     VLC_ADD_PLUGIN([vcd cdda])
2050     AC_DEFINE(HAVE_SCSIREQ_IN_SYS_SCSIIO_H, 1, For NetBSD VCD support)
2051   ],[
2052     AC_MSG_RESULT(no)
2053   ])
2054
2055   AC_MSG_CHECKING(for ioc_toc_header in sys/cdio.h)
2056   AC_EGREP_HEADER(ioc_toc_header ,sys/cdio.h,[
2057     AC_MSG_RESULT(yes)
2058     VLC_ADD_PLUGIN([vcd cdda])
2059     AC_DEFINE(HAVE_IOC_TOC_HEADER_IN_SYS_CDIO_H, 1, For FreeBSD VCD support)
2060   ],[
2061     AC_MSG_RESULT(no)
2062   ])
2063
2064   if test "${SYS}" = "bsdi" -o "${SYS}" = "mingw32" -o "${SYS}" = "os2"
2065   then
2066     VLC_ADD_PLUGIN([vcd cdda])
2067   fi
2068
2069   if test "${SYS}" = "darwin"
2070   then
2071     VLC_ADD_PLUGIN([vcd cdda])
2072     VLC_ADD_LIBS([vcd vcdx cdda],[-Wl,-framework,IOKit,-framework,CoreFoundation])
2073     VLC_ADD_LIBS([vcdx cdda],[-liconv])
2074   fi
2075
2076   if test "$enable_libcddb" != "no"; then
2077     PKG_CHECK_MODULES(LIBCDDB, [libcddb >= 0.9.5], [
2078       HAVE_LIBCDDB=yes
2079       AC_DEFINE(HAVE_LIBCDDB, 1, [Define this if you have libcddb installed])
2080       VLC_ADD_LIBS([cdda],[$LIBCDDB_LIBS])
2081       VLC_ADD_CFLAGS([cdda],[$LIBCDDB_CFLAGS])
2082       ],:
2083       [AC_MSG_WARN([${LIBCDDB_PKG_ERRORS}: CDDB access disabled.])
2084       HAVE_LIBCDDB=no])
2085   fi
2086 fi
2087
2088 dnl
2089 dnl Linux DVB
2090 dnl
2091 AC_CACHE_CHECK([for Linux DVB version 5], [ac_cv_linux_s2api], [
2092   AC_PREPROC_IFELSE([AC_LANG_PROGRAM([
2093 [#include <linux/dvb/version.h>
2094 #if (DVB_API_VERSION < 5)
2095 EXPLODE
2096 #endif]])], [
2097   ac_cv_linux_s2api=yes
2098 ], [
2099   ac_cv_linux_s2api=no
2100 ])])
2101 AM_CONDITIONAL([HAVE_LINUX_DVB], [test "$ac_cv_linux_s2api" = "yes"])
2102
2103 dnl
2104 dnl  Screen capture module
2105 dnl
2106 AC_ARG_ENABLE(screen,
2107   [AS_HELP_STRING([--enable-screen],
2108     [disable screen capture (default enabled)])])
2109 if test "${enable_screen}" != "no"; then
2110   if test "${SYS}" = "darwin"; then
2111     AC_CHECK_HEADERS(OpenGL/gl.h, [
2112       AC_CHECK_HEADERS(ApplicationServices/ApplicationServices.h, [
2113         VLC_ADD_PLUGIN([screen])
2114         VLC_ADD_LIBS([screen],[-Wl,-framework,OpenGL,-framework,ApplicationServices])
2115       ])
2116     ])
2117   elif test "${SYS}" = "mingw32"; then
2118     VLC_ADD_PLUGIN([screen])
2119     VLC_ADD_LIBS([screen],[-lgdi32])
2120   elif test "${SYS}" = "mingwce"; then
2121     CPPFLAGS="${CPPFLAGS_save}"
2122   fi
2123 fi
2124
2125 dnl
2126 dnl  Real RTSP plugin
2127 dnl
2128 AC_ARG_ENABLE(realrtsp,
2129   [  --enable-realrtsp       Real RTSP module (default disabled)])
2130 if test "${enable_realrtsp}" = "yes"; then
2131   VLC_ADD_PLUGIN([access_realrtsp])
2132 fi
2133
2134 dnl
2135 dnl MacOS eyeTV
2136 AC_ARG_ENABLE(macosx-eyetv,
2137   [  --enable-macosx-eyetv   Mac OS X EyeTV (TNT Tuner) module (default enabled on Mac OS X)])
2138 if test "x${enable_macosx_eyetv}" != "xno" &&
2139   (test "${SYS}" = "darwin" || test "${enable_macosx_eyetv}" = "yes")
2140 then
2141   VLC_ADD_LIBS([access_eyetv], [-Wl,-framework,Foundation])
2142   VLC_ADD_PLUGIN([access_eyetv])
2143 fi
2144
2145 dnl
2146 dnl QTKit
2147 AC_ARG_ENABLE(macosx-qtkit,
2148   [  --enable-macosx-qtkit Mac OS X qtcapture (video) and qtsound (audio) module (default enabled on Mac OS X)])
2149 if test "x${enable_macosx_qtkit}" != "xno" &&
2150   (test "${SYS}" = "darwin" || test "${enable_macosx_qtkit}" = "yes")
2151 then
2152   VLC_ADD_PLUGIN([qtcapture])
2153   VLC_ADD_PLUGIN([qtsound])
2154 fi
2155 AM_CONDITIONAL(HAVE_QTKIT, [test "${SYS}" = "darwin" && "x${enable_macosx_qtkit}" != "xno"])
2156
2157
2158 dnl
2159 dnl  Demux plugins
2160 dnl
2161
2162 EXTEND_HELP_STRING([Mux/Demux plugins:])
2163
2164 dnl
2165 dnl  libdvbpsi check for ts mux/demux
2166 dnl
2167 have_dvbpsi="no"
2168 PKG_WITH_MODULES([DVBPSI], [libdvbpsi], [have_dvbpsi="yes"])
2169 AM_CONDITIONAL(HAVE_DVBPSI, [test "${have_dvbpsi}" = "yes"])
2170
2171
2172 dnl
2173 dnl  GME demux plugin
2174 dnl
2175 AC_ARG_ENABLE(gme,
2176   [AS_HELP_STRING([--enable-gme],
2177     [use Game Music Emu (default auto)])])
2178 AS_IF([test "${enable_gme}" != "no"], [
2179   AC_CHECK_HEADER([gme/gme.h], [
2180     VLC_ADD_LIBS([gme], [-lgme])
2181     VLC_ADD_PLUGIN([gme])
2182   ], [
2183     AS_IF([test "x${enable_gme}" != "x"], [
2184       AC_MSG_ERROR([GME cannot be found. Please install the development files.])
2185     ])
2186   ])
2187 ])
2188
2189
2190 dnl
2191 dnl  SIDPlay plugin
2192 dnl
2193 AC_ARG_ENABLE(sid,
2194     [AS_HELP_STRING([--enable-sid],[C64 sid demux support (default auto)])])
2195 AS_IF([test "${enable_sid}" != "no"], [
2196     PKG_CHECK_MODULES(SID, [libsidplay2], [
2197         AC_LANG_PUSH(C++)
2198         oldCPPFLAGS="$CPPFLAGS"
2199         CPPFLAGS="$CPPFLAGS $SID_CFLAGS"
2200         AC_CHECK_HEADER([sidplay/builders/resid.h], [
2201             VLC_ADD_PLUGIN([sid])
2202             VLC_ADD_CFLAGS([sid], [$SID_CFLAGS])
2203             VLC_ADD_LIBS([sid], [$SID_LIBS] [-lresid-builder])
2204         ], [
2205             AS_IF([test -n "${enable_sid}"],
2206                 [AC_MSG_ERROR([${SID_PKG_ERRORS} (required for sid).])],
2207                 [AC_MSG_WARN([${SID_PKG_ERRORS} (required for sid).])]
2208                 )
2209         ])
2210         CPPFLAGS="$oldCPPFLAGS"
2211         AC_LANG_POP(C++)
2212     ], [
2213         AS_IF([test "x${enable_sid}" = "xyes"],
2214             [AC_MSG_ERROR([${SID_PKG_ERRORS} (required for sid).])],
2215             [AC_MSG_WARN([${SID_PKG_ERRORS} (required for sid).])]
2216             )
2217     ])
2218 ])
2219
2220
2221 dnl
2222 dnl  ogg demux plugin
2223 dnl
2224 PKG_ENABLE_MODULES_VLC([OGG], [], [ogg >= 1.0], [Ogg demux support], [auto])
2225 if test "${enable_sout}" != "no"; then
2226     PKG_ENABLE_MODULES_VLC([MUX_OGG], [], [ogg >= 1.0], [Ogg mux support], [auto])
2227 dnl Check for libshout
2228     PKG_ENABLE_MODULES_VLC([SHOUT], [access_output_shout], [shout >= 2.1], [libshout output plugin], [auto])
2229 fi
2230
2231 dnl
2232 dnl  matroska demux plugin
2233 dnl
2234 AC_ARG_ENABLE(mkv,
2235   [AS_HELP_STRING([--disable-mkv],
2236     [do not use libmatroska (default auto)])])
2237 if test "${enable_mkv}" != "no" -a "${CXX}" != ""; then
2238   AC_LANG_PUSH(C++)
2239   AC_CHECK_HEADERS(ebml/EbmlVersion.h, [
2240     AC_MSG_CHECKING(for libebml version >= 1.0.0)
2241     AC_EGREP_CPP(yes,
2242       [#include <ebml/EbmlVersion.h>
2243        #ifdef LIBEBML_VERSION
2244        #if LIBEBML_VERSION >= 0x010000
2245        yes
2246        #endif
2247        #endif],
2248       [AC_MSG_RESULT([yes])
2249         AC_CHECK_HEADERS(matroska/KaxVersion.h, [
2250           AC_MSG_CHECKING(for libmatroska version >= 1.0.0)
2251           AC_EGREP_CPP(yes,
2252             [#include <matroska/KaxVersion.h>
2253              #ifdef LIBMATROSKA_VERSION
2254              #if LIBMATROSKA_VERSION >= 0x010000
2255              yes
2256              #endif
2257              #endif],
2258             [AC_MSG_RESULT([yes])
2259               AC_CHECK_HEADERS(matroska/KaxAttachments.h)
2260               VLC_ADD_CXXFLAGS([mkv],[])
2261               if test "${SYS}" = "darwin"; then
2262                 VLC_ADD_CXXFLAGS([mkv],[-O1])
2263               fi
2264               AC_CHECK_LIB(ebml_pic, main, [
2265                 VLC_ADD_PLUGIN([mkv])
2266                 VLC_ADD_LIBS([mkv],[-lmatroska -lebml_pic])
2267               ],[
2268                 AC_CHECK_LIB(ebml, main, [
2269                   VLC_ADD_PLUGIN([mkv])
2270                   VLC_ADD_LIBS([mkv],[-lmatroska -lebml])
2271                 ])
2272               ])
2273             ], [
2274               AC_MSG_RESULT([no])
2275               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.])
2276           ])
2277         ])
2278       ],
2279       [AC_MSG_RESULT([no])
2280         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.])
2281     ])
2282   ])
2283   AC_LANG_POP(C++)
2284 fi
2285
2286 dnl
2287 dnl  modplug demux plugin
2288 dnl
2289 AC_ARG_ENABLE(mod,
2290   [AS_HELP_STRING([--disable-mod],
2291     [do not use libmodplug (default auto)])])
2292 if test "${enable_mod}" != "no" ; then
2293     PKG_CHECK_MODULES(LIBMODPLUG, [libmodplug >= 0.8.4 libmodplug != 0.8.8], [
2294           VLC_ADD_PLUGIN([mod])
2295           VLC_ADD_CXXFLAGS([mod],[$LIBMODPLUG_CFLAGS])
2296           VLC_ADD_LIBS([mod],[$LIBMODPLUG_LIBS])
2297     ],[
2298        AS_IF([test -n "${enable_mod}"],
2299          [AC_MSG_ERROR([${LIBMODPLUG_PKG_ERRORS}.])],
2300          [AC_MSG_WARN([${LIBMODPLUG_PKG_ERRORS}.])])
2301     ])
2302 fi
2303
2304 dnl
2305 dnl  mpc demux plugin
2306 dnl
2307 AC_ARG_ENABLE(mpc,
2308   [AS_HELP_STRING([--disable-mpc], [do not use libmpcdec (default auto)])])
2309 if test "${enable_mpc}" != "no"
2310 then
2311   AC_CHECK_HEADERS([mpc/mpcdec.h], [
2312     VLC_ADD_PLUGIN([mpc])
2313     VLC_ADD_LIBS([mpc],[-lmpcdec])],
2314     [AC_CHECK_HEADERS([mpcdec/mpcdec.h], [
2315     VLC_ADD_PLUGIN([mpc])
2316     VLC_ADD_LIBS([mpc],[-lmpcdec])])])
2317 fi
2318
2319 dnl
2320 dnl  Codec plugins
2321 dnl
2322
2323 EXTEND_HELP_STRING([Codec plugins:])
2324
2325 dnl
2326 dnl wmafixed plugin
2327 dnl
2328 AC_ARG_ENABLE(wma-fixed,
2329   [  --enable-wma-fixed      libwma-fixed module (default disabled)])
2330 if test "${enable_wma_fixed}" = "yes"
2331 then
2332   VLC_ADD_PLUGIN([wma_fixed])
2333 fi
2334
2335 dnl
2336 dnl shine fixed point mp3 encoder
2337 dnl
2338 AC_ARG_ENABLE(shine,
2339   [  --enable-shine          shine mp3 encoding module (default disabled)])
2340 if test "${enable_shine}" = "yes"
2341 then
2342   VLC_ADD_PLUGIN([shine])
2343 fi
2344
2345 dnl
2346 dnl openmax il codec plugin
2347 dnl
2348 AC_ARG_ENABLE(omxil,
2349   [  --enable-omxil          openmax il codec module (default disabled)])
2350 if test "${enable_omxil}" = "yes"
2351 then
2352   VLC_ADD_PLUGIN([omxil])
2353   VLC_ADD_LIBS([omxil], [$LIBDL])
2354 fi
2355
2356 dnl
2357 dnl iomx codec plugin
2358 dnl
2359 AC_ARG_ENABLE(iomx,
2360   [  --enable-iomx           iomx codec module (default disabled)])
2361 if test "${enable_iomx}" = "yes"
2362 then
2363   CPPFLAGS_save="${CPPFLAGS}"
2364   CPPFLAGS="${CPPFLAGS} -I${srcdir}/modules/codec/omxil" # For the OMX headers
2365   AC_LANG_PUSH([C++])
2366   AC_CHECK_HEADER(media/stagefright/OMXClient.h, [
2367     VLC_ADD_PLUGIN([iomx])
2368     VLC_ADD_CXXFLAGS([iomx], [-fno-exceptions -fno-rtti])
2369     VLC_ADD_LIBS([iomx], [-lstagefright -lmedia -lutils -lbinder])
2370   ], [
2371     AC_MSG_ERROR("Could not find IOMX headers")
2372   ])
2373   AC_LANG_POP([C++])
2374   CPPFLAGS="${CPPFLAGS_save}"
2375 fi
2376
2377 dnl
2378 dnl CrystalHD codec plugin
2379 dnl
2380 AC_ARG_ENABLE(crystalhd,
2381   [  --enable-crystalhd      crystalhd codec plugin (default auto)])
2382 if test "${enable_crystalhd}" != "no"; then
2383     AC_CHECK_HEADER(libcrystalhd/libcrystalhd_if.h, [
2384       VLC_ADD_PLUGIN([crystalhd])
2385       VLC_ADD_LIBS([crystalhd], [-lcrystalhd])
2386     ],[
2387       if test "${SYS}" = "mingw32" ; then
2388         AC_CHECK_HEADERS(libcrystalhd/bc_dts_defs.h, [
2389           VLC_ADD_PLUGIN([crystalhd])
2390           AC_CHECK_HEADERS(libcrystalhd/bc_drv_if.h, [
2391             VLC_ADD_LIBS([crystalhd], [-lbcmDIL])
2392             ])
2393         ],[
2394           AS_IF([test x"${enable_crystalhd}" = "xyes"],
2395                 [AC_MSG_ERROR("Could not find CrystalHD development headers")],
2396                 [AC_MSG_WARN("Could not find CrystalHD development headers")])
2397         ],[#define __LINUX_USER__
2398                #include <libcrystalhd/bc_dts_types.h>
2399         ])
2400       fi
2401     ],[
2402        #include <libcrystalhd/bc_dts_types.h>
2403       ])
2404 fi
2405
2406 dnl
2407 dnl  mad plugin
2408 dnl
2409 AC_ARG_ENABLE(mad,
2410   [  --enable-mad            libmad module (default enabled)])
2411 if test "${enable_mad}" != "no"
2412 then
2413   AC_ARG_WITH(mad,
2414     [  --with-mad=PATH         path to libmad],[],[])
2415   if test "${with_mad}" != "no" -a -n "${with_mad}"
2416   then
2417     VLC_ADD_CPPFLAGS([mpgatofixed32],[-I${with_mad}/include])
2418     VLC_ADD_LIBS([mpgatofixed32],[-L${with_mad}/lib])
2419   fi
2420
2421   AC_ARG_WITH(mad-tree,
2422     [  --with-mad-tree=PATH    mad tree for static linking],[],[])
2423   if test "${with_mad_tree}" != "no" -a -n "${with_mad_tree}"
2424   then
2425     real_mad_tree="`cd ${with_mad_tree} 2>/dev/null && pwd`"
2426     if test -z "${real_mad_tree}"
2427     then
2428       dnl  The given directory can't be found
2429       AC_MSG_RESULT(no)
2430       AC_MSG_ERROR([${with_mad_tree} directory does not exist])
2431     fi
2432     dnl  Use a custom libmad
2433     AC_MSG_CHECKING(for mad.h in ${real_mad_tree})
2434     if test -f ${real_mad_tree}/mad.h
2435     then
2436       AC_MSG_RESULT(yes)
2437       VLC_ADD_CPPFLAGS([mpgatofixed32],[-I${real_mad_tree}])
2438       VLC_ADD_LIBS([mpgatofixed32],[-L${real_mad_tree}/.libs])
2439       LDFLAGS="${LDFLAGS_save} ${LIBS_mpgatofixed32}"
2440       AC_CHECK_LIB(mad, mad_bit_init, [
2441         VLC_ADD_PLUGIN([mpgatofixed32])
2442         VLC_ADD_LIBS([mpgatofixed32],[-lmad])
2443         ],[ AC_MSG_ERROR([the specified tree has not been compiled ])
2444       ],[])
2445       LDFLAGS="${LDFLAGS_save}"
2446     else
2447       AC_MSG_RESULT(no)
2448       AC_MSG_ERROR([the specified tree does not have mad.h])
2449     fi
2450   else
2451     CPPFLAGS="${CPPFLAGS_save} ${CPPFLAGS_mpgatofixed32}"
2452     LDFLAGS="${LDFLAGS_save} ${LIBS_mpgatofixed32}"
2453     AC_CHECK_HEADERS(mad.h, ,
2454       [ 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.]) ])
2455     AC_CHECK_LIB(mad, mad_bit_init, [
2456       VLC_ADD_PLUGIN([mpgatofixed32])
2457       VLC_ADD_LIBS([mpgatofixed32],[-lmad])],
2458       [ AC_MSG_ERROR([Cannot find libmad library...]) ])
2459     CPPFLAGS="${CPPFLAGS_save}"
2460     LDFLAGS="${LDFLAGS_save}"
2461   fi
2462 fi
2463
2464
2465 AC_ARG_ENABLE(merge-ffmpeg,
2466 [  --enable-merge-ffmpeg   merge FFmpeg-based plugins (default disabled)],, [
2467   enable_merge_ffmpeg="no"
2468 ])
2469 AM_CONDITIONAL([MERGE_FFMPEG], [test "$enable_merge_ffmpeg" != "no"])
2470
2471 AC_CACHE_CHECK([if linker supports -Bsymbolic],
2472   [ac_cv_ld_bsymbolic],
2473   [LDFLAGS="${LDFLAGS_vlc} -Wl,-Bsymbolic"
2474     AC_TRY_LINK([],,ac_cv_ld_bsymbolic=yes,ac_cv_ld_bsymbolic=no)
2475     LDFLAGS="${LDFLAGS_save}"
2476   ])
2477
2478 dnl
2479 dnl  avcodec decoder/encoder plugin
2480 dnl
2481 AC_ARG_ENABLE(avcodec,
2482 [  --enable-avcodec        libavcodec codec (default enabled)])
2483 AS_IF([test "${enable_avcodec}" != "no"], [
2484   PKG_CHECK_MODULES(AVCODEC,[libavcodec >= 52.25.0 libavutil],
2485     [
2486       VLC_SAVE_FLAGS
2487       CPPFLAGS="${CPPFLAGS} ${AVCODEC_CFLAGS}"
2488       CFLAGS="${CFLAGS} ${AVCODEC_CFLAGS}"
2489       AC_CHECK_HEADERS(libavcodec/avcodec.h)
2490       AC_CHECK_HEADERS(libavutil/avutil.h)
2491       VLC_ADD_PLUGIN([avcodec])
2492       VLC_ADD_LIBS([avcodec],[$AVCODEC_LIBS])
2493       AS_IF([test "${ac_cv_ld_bsymbolic}" != "no"], [
2494         VLC_ADD_LIBS([avcodec],[-Wl,-Bsymbolic])
2495       ])
2496       VLC_ADD_CFLAGS([avcodec],[$AVCODEC_CFLAGS])
2497       VLC_RESTORE_FLAGS
2498       have_avcodec="yes"
2499     ],[
2500       AC_MSG_ERROR([${AVCODEC_PKG_ERRORS}. Pass --disable-avcodec to ignore this error.])
2501   ])
2502 ], [
2503   have_avcodec="no"
2504 ])
2505
2506 dnl
2507 dnl libva needs avcodec
2508 dnl
2509 AC_ARG_ENABLE(libva,
2510   [  --enable-libva          VAAPI GPU decoding support (libVA) (default auto)])
2511
2512 AS_IF([test "${enable_libva}" = "yes" -a "${have_avcodec}" != "yes" ], [
2513   AC_MSG_ERROR([--enable-libva and --disable-avcodec options are mutually exclusive. Use --enable-avcodec.])
2514 ])
2515 AS_IF([test "${enable_libva}" != "no"], [
2516   PKG_CHECK_MODULES(LIBVA, [libva libva-x11], [
2517     VLC_SAVE_FLAGS
2518     CPPFLAGS="${CPPFLAGS} ${AVCODEC_CFLAGS}"
2519     CFLAGS="${CFLAGS} ${AVCODEC_CFLAGS}"
2520     AC_CHECK_HEADERS(libavcodec/vaapi.h, [
2521       VLC_ADD_LIBS([avcodec],[$LIBVA_LIBS ${X_LIBS} ${X_PRE_LIBS} -lX11])
2522       VLC_ADD_CFLAGS([avcodec],[$LIBVA_CFLAGS ${X_CFLAGS}])
2523       AC_DEFINE(HAVE_AVCODEC_VAAPI, 1, [Define if avcodec has to be built with VAAPI support.])
2524       AC_MSG_NOTICE([VAAPI acceleration activated])
2525     ],[
2526       AS_IF([test -n "${enable_libva}"], [
2527         AC_MSG_ERROR([libva is present but libavcodec/vaapi.h is missing])
2528       ], [
2529         AC_MSG_WARN([libva is present but libavcodec/vaapi.h is missing ])
2530       ])
2531     ])
2532     VLC_RESTORE_FLAGS
2533   ],[
2534     AS_IF([test -n "${enable_libva}"], [
2535       AC_MSG_ERROR([${LIBVA_PKG_ERRORS}.])
2536     ], [
2537       AC_MSG_WARN([${LIBVA_PKG_ERRORS}.])
2538     ])
2539   ])
2540 ])
2541
2542 dnl
2543 dnl dxva2 needs avcodec
2544 dnl
2545 AC_ARG_ENABLE(dxva2,
2546   [  --enable-dxva2          DxVA2 GPU decoding support (default auto)])
2547
2548 AS_IF([test "${enable_dxva2}" != "no"], [
2549   if test "${SYS}" = "mingw32"; then
2550   AS_IF([test "x${have_avcodec}" = "xyes"], [
2551     AC_CHECK_HEADERS(dxva2api.h,
2552       [
2553         AC_CHECK_HEADERS(libavcodec/dxva2.h, [
2554            VLC_ADD_LIBS([avcodec],[-lole32 -lshlwapi -luuid])
2555            AC_DEFINE(HAVE_AVCODEC_DXVA2, 1, [Define if avcodec has to be built with DxVA2 support.])
2556            echo "DxVA2 acceleration activated"
2557         ],[
2558     AS_IF([test "${enable_dxva2}" = "yes"],
2559           [AC_MSG_ERROR([dxva2 is present but libavcodec/dxva2.h is missing])],
2560               [AC_MSG_WARN([dxva2 is present but libavcodec/dxva2.h is missing ])])
2561         ])
2562       ],[
2563     AS_IF([test "${enable_dxva2}" = "yes"],
2564               [AC_MSG_ERROR([Could not find required dxva2api.h])],
2565               [AC_MSG_WARN([dxva2api.h not found])])
2566       ])
2567   ],[
2568     AS_IF([test "x${enable_dxva2}" != "x"], [
2569       AC_MSG_ERROR([--enable-dxva2 and --disable-avcodec options are mutually exclusive.])
2570     ])
2571   ])
2572   fi
2573 ])
2574
2575
2576 dnl
2577 dnl stream_out switcher needs libavcodec
2578 dnl
2579 AC_ARG_ENABLE(switcher,
2580   [  --enable-switcher       Stream-out switcher plugin (default disabled)])
2581 AS_IF([test "${enable_switcher}" = "yes"], [
2582   AS_IF([test "x${have_avcodec}" = "xyes"], [
2583     VLC_ADD_PLUGIN([stream_out_switcher])
2584     VLC_ADD_LIBS([stream_out_switcher],[$AVCODEC_LIBS $AVUTIL_LIBS])
2585     VLC_ADD_CFLAGS([stream_out_switcher],[$AVCODEC_CFLAGS $AVUTIL_CFLAGS])
2586   ],[AC_MSG_ERROR([Stream_out switcher depends on avcodec])
2587   ])
2588 ])
2589
2590
2591 dnl
2592 dnl  avformat demuxer/muxer plugin
2593 dnl
2594
2595 AC_ARG_ENABLE(avformat,
2596 [  --enable-avformat       libavformat containers (default enabled)],, [
2597   enable_avformat="${have_avcodec}"
2598 ])
2599 if test "${enable_avformat}" != "no"
2600 then
2601   PKG_CHECK_MODULES(AVFORMAT,[libavformat > 52.30.0 libavcodec libavutil],
2602     [
2603       VLC_SAVE_FLAGS
2604       CPPFLAGS="${CPPFLAGS} ${AVFORMAT_CFLAGS}"
2605       CFLAGS="${CFLAGS} ${AVFORMAT_CFLAGS}"
2606       AC_CHECK_HEADERS(libavformat/avformat.h libavformat/avio.h)
2607       AC_CHECK_HEADERS(libavutil/avutil.h)
2608       AS_IF([test "$enable_merge_ffmpeg" = "no"], [
2609         VLC_ADD_PLUGIN([avformat access_avio])
2610         VLC_ADD_LIBS([avformat access_avio],[$AVFORMAT_LIBS $AVUTIL_LIBS])
2611         VLC_ADD_CFLAGS([avformat access_avio],[$AVFORMAT_CFLAGS $AVUTIL_CFLAGS])
2612         AS_IF([test "${ac_cv_ld_bsymbolic}" != "no"], [
2613           VLC_ADD_LIBS([avformat access_avio],[-Wl,-Bsymbolic])
2614         ])
2615       ], [
2616         VLC_ADD_LIBS([avcodec],[$AVFORMAT_LIBS $AVUTIL_LIBS])
2617         VLC_ADD_CFLAGS([avcodec],[$AVFORMAT_CFLAGS $AVUTIL_CFLAGS])
2618       ])
2619       VLC_RESTORE_FLAGS
2620     ],[
2621       AC_MSG_ERROR([${AVFORMAT_PKG_ERRORS}. Pass --disable-avformat to ignore this error.])
2622   ])
2623 fi
2624
2625 dnl
2626 dnl  swscale image scaling and conversion plugin
2627 dnl
2628
2629 AC_ARG_ENABLE(swscale,
2630   AS_HELP_STRING([--enable-swscale],[libswscale image scaling and conversion
2631           (default enabled)]))
2632 if test "${enable_swscale}" != "no"
2633 then
2634   PKG_CHECK_MODULES(SWSCALE,[libswscale],
2635     [
2636       VLC_SAVE_FLAGS
2637       CPPFLAGS="${CPPFLAGS} ${SWSCALE_CFLAGS}"
2638       CFLAGS="${CFLAGS} ${SWSCALE_CFLAGS}"
2639       AC_CHECK_HEADERS(libswscale/swscale.h)
2640       VLC_ADD_PLUGIN([swscale])
2641       VLC_ADD_LIBS([swscale],[$SWSCALE_LIBS])
2642       VLC_ADD_CFLAGS([swscale],[$SWSCALE_CFLAGS])
2643       AS_IF([test "${ac_cv_ld_bsymbolic}" != "no"], [
2644         VLC_ADD_LIBS([swscale],[-Wl,-Bsymbolic])
2645       ])
2646       VLC_RESTORE_FLAGS
2647     ],[
2648       AC_MSG_ERROR([${SWSCALE_PKG_ERRORS}. Pass --disable-swscale to ignore this error. Proper software scaling and some video chroma conversion will be missing.])
2649   ])
2650 fi
2651
2652 dnl
2653 dnl  postproc plugin
2654 dnl
2655
2656 AC_ARG_ENABLE(postproc,
2657 [  --enable-postproc       libpostproc image post-processing (default enabled)])
2658 if test "${enable_postproc}" != "no"
2659 then
2660   PKG_CHECK_MODULES(POSTPROC,[libpostproc libavutil],
2661     [
2662       VLC_SAVE_FLAGS
2663       CPPFLAGS="${CPPFLAGS} ${POSTPROC_CFLAGS}"
2664       CFLAGS="${CFLAGS} ${POSTPROC_CFLAGS}"
2665       AC_CHECK_HEADERS(postproc/postprocess.h)
2666       VLC_ADD_PLUGIN([postproc])
2667       VLC_ADD_LIBS([postproc],[$POSTPROC_LIBS $AVUTIL_LIBS])
2668       VLC_ADD_CFLAGS([postproc],[$POSTPROC_CFLAGS $AVUTIL_CFLAGS])
2669       VLC_RESTORE_FLAGS
2670     ],[
2671       AC_MSG_ERROR([${POSTPROC_PKG_ERRORS}. Pass --disable-postproc to ignore this error.])
2672   ])
2673 fi
2674
2675 dnl
2676 dnl  faad decoder plugin
2677 dnl
2678 AC_ARG_ENABLE(faad,
2679 [  --enable-faad           faad codec (default disabled)])
2680 if test "${enable_faad}" = "yes"
2681 then
2682   AC_ARG_WITH(faad-tree,
2683   [  --with-faad-tree=PATH   faad tree for static linking])
2684   if test -n "${with_faad_tree}"
2685   then
2686     AC_MSG_CHECKING(for libfaad.a in ${with_faad_tree})
2687     real_faad_tree="`cd ${with_faad_tree} 2>/dev/null && pwd`"
2688     if test -z "${real_faad_tree}"
2689     then
2690       dnl  The given directory can't be found
2691       AC_MSG_RESULT(no)
2692       AC_MSG_ERROR([cannot cd to ${with_faad_tree}])
2693     fi
2694     if test -f "${real_faad_tree}/libfaad/.libs/libfaad.a"
2695     then
2696       dnl  Use a custom faad
2697       AC_MSG_RESULT(${real_faad_tree}/libfaad/.libs/libfaad.a)
2698       VLC_ADD_PLUGIN([faad])
2699       VLC_ADD_LIBS([faad],[${real_faad_tree}/libfaad/.libs/libfaad.a])
2700       VLC_ADD_CPPFLAGS([faad],[-I${real_faad_tree}/include])
2701     else
2702       dnl  The given libfaad wasn't built
2703       AC_MSG_RESULT(no)
2704       AC_MSG_ERROR([cannot find ${real_faad_tree}/libfaad/.libs/libfaad.a, make sure you compiled libfaad in ${with_faad_tree}])
2705     fi
2706   else
2707     CPPFLAGS="${CPPFLAGS_save} ${CPPFLAGS_faad}"
2708     LDFLAGS="${LDFLAGS_save} ${LIBS_faad}"
2709     AC_CHECK_HEADERS(faad.h, ,
2710       [ AC_MSG_ERROR([Cannot find development headers for libfaad...]) ])
2711     AC_CHECK_LIB(faad, faacDecOpen, [
2712       VLC_ADD_PLUGIN([faad])
2713       VLC_ADD_LIBS([faad],[-lfaad]) ],
2714       AC_CHECK_LIB(faad, NeAACDecOpen, [
2715         VLC_ADD_PLUGIN([faad])
2716         VLC_ADD_LIBS([faad],[-lfaad]) ],
2717         [ AC_MSG_ERROR([Cannot find libfaad library...]) ]))
2718     LDFLAGS="${LDFLAGS_save}"
2719     CPPFLAGS="${CPPFLAGS_save}"
2720   fi
2721 fi
2722
2723 dnl
2724 dnl twolame encoder plugin
2725 dnl
2726 PKG_ENABLE_MODULES_VLC([TWOLAME], [], [twolame], [MPEG Audio Layer 2 encoder], [auto], [], [], [ -DLIBTWOLAME_STATIC])
2727
2728 dnl
2729 dnl  QuickTime plugin
2730 dnl
2731 AC_ARG_ENABLE(quicktime,
2732   [  --enable-quicktime      QuickTime module (deprecated)])
2733 if test "${enable_quicktime}" = "yes"; then
2734   if test "${SYS}" = "mingw32"; then
2735     VLC_ADD_PLUGIN([quicktime])
2736   else
2737   AC_CHECK_HEADERS(QuickTime/QuickTime.h,
2738     [ VLC_ADD_PLUGIN([quicktime])
2739       VLC_ADD_LIBS([quicktime],[-Wl,-framework,QuickTime,-framework,Carbon])
2740     ], [ AC_MSG_ERROR([cannot find QuickTime headers]) ])
2741   fi
2742 fi
2743
2744 dnl
2745 dnl  Real plugin
2746 dnl
2747 AC_ARG_ENABLE(real,
2748   [  --enable-real           Real video decoder module (default disabled)])
2749 if test "${enable_real}" = "yes"; then
2750   VLC_ADD_PLUGIN([realvideo])
2751 fi
2752
2753 dnl
2754 dnl A52/AC3 decoder plugin
2755 dnl
2756 AC_ARG_ENABLE(a52,
2757   [  --enable-a52            A/52 support with liba52 (default enabled)])
2758 if test "${enable_a52}" != "no"
2759 then
2760   AC_ARG_WITH(a52,
2761     [  --with-a52=PATH         a52 headers and libraries])
2762   AC_ARG_WITH(a52-tree,
2763     [  --with-a52-tree=PATH    a52dec tree for static linking ],[],[])
2764   if test "${with_a52_tree}" != "no" -a -n "${with_a52_tree}"
2765   then
2766     real_a52_tree="`cd ${with_a52_tree} 2>/dev/null && pwd`"
2767     if test -z "${real_a52_tree}"
2768     then
2769       dnl  The given directory can't be found
2770       AC_MSG_RESULT(no)
2771       AC_MSG_ERROR([${with_a52_tree} directory does not exist])
2772     fi
2773     dnl  Use a custom a52dec
2774     AC_MSG_CHECKING(for a52.h in ${real_a52_tree}/include)
2775     if test -f ${real_a52_tree}/include/a52.h
2776     then
2777       AC_MSG_RESULT(yes)
2778       VLC_ADD_CPPFLAGS([a52tofloat32],[-I${real_a52_tree}])
2779       VLC_ADD_LIBS([a52tofloat32],[-L${real_a52_tree}/liba52/.libs])
2780       LDFLAGS="${LDFLAGS_save} ${LIBS_a52tofloat32}"
2781       AC_CHECK_LIB(a52, a52_free, [
2782         VLC_ADD_PLUGIN([a52tofloat32])
2783         VLC_ADD_CPPFLAGS([a52tofloat32],[-DUSE_A52DEC_TREE])
2784         VLC_ADD_LIBS([a52tofloat32],[-la52])
2785         ],[
2786         if test -f ${real_a52_tree}/liba52/.libs/liba52.a
2787         then
2788           AC_MSG_ERROR([make sure you have at least a52dec-0.7.3 ($real_a52_tree)])
2789         else
2790           AC_MSG_ERROR([the specified tree has not been compiled])
2791         fi
2792       ])
2793       LDFLAGS="${LDFLAGS_save}"
2794     else
2795       AC_MSG_RESULT(no)
2796       AC_MSG_ERROR([the specified tree does not have a52.h])
2797     fi
2798   else
2799     if test -z "${with_a52}"
2800     then
2801       LDFLAGS_test=""
2802       CPPFLAGS_test=""
2803     else
2804       LDFLAGS_test="-L${with_a52}/lib"
2805       CPPFLAGS_test="-I${with_a52}/include"
2806     fi
2807     CPPFLAGS="${CPPFLAGS_save} ${CPPFLAGS_test} ${CPPFLAGS_a52tofloat32}"
2808     LDFLAGS="${LDFLAGS_save} ${LDFLAGS_test} ${LIBS_a52tofloat32}"
2809     AC_CHECK_HEADERS(a52dec/a52.h, [
2810       AC_CHECK_LIB(a52, a52_free, [
2811         VLC_ADD_PLUGIN([a52tofloat32])
2812         VLC_ADD_LIBS([a52tofloat32],[${LDFLAGS_test} -la52])
2813         VLC_ADD_CPPFLAGS([a52tofloat32],[${CPPFLAGS_test}])
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         ], [$LIBM])
2817     ],[
2818       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.])
2819     ])
2820     CPPFLAGS="${CPPFLAGS_save}"
2821     LDFLAGS="${LDFLAGS_save}"
2822   fi
2823 fi
2824
2825 AC_ARG_WITH(a52-fixed,
2826       [  --with-a52-fixed        specify if liba52 has been compiled with fixed point support],
2827       [
2828         VLC_ADD_CPPFLAGS([a52tofloat32],[-DLIBA52_FIXED]) ])
2829
2830 dnl
2831 dnl DTS Coherent Acoustics decoder plugin
2832 dnl
2833 PKG_ENABLE_MODULES_VLC([DCA], [dtstofloat32], [libdca >= 0.0.5], [DTS Coherent Acoustics support with libdca], [auto])
2834
2835 dnl
2836 dnl  Flac plugin
2837 dnl
2838 PKG_ENABLE_MODULES_VLC([FLAC], [], [flac], [libflac decoder/encoder support], [auto])
2839
2840 dnl
2841 dnl  Libmpeg2 plugin
2842 dnl
2843 PKG_ENABLE_MODULES_VLC([LIBMPEG2], [], [libmpeg2 > 0.3.2], [libmpeg2 decoder support], [auto])
2844
2845 dnl
2846 dnl  Vorbis plugin
2847 dnl
2848 PKG_ENABLE_MODULES_VLC([VORBIS], [], [ogg vorbis >= 1.1 vorbisenc >= 1.1], [Vorbis decoder and encoder], [auto])
2849
2850 dnl
2851 dnl  Tremor plugin
2852 dnl
2853 AC_ARG_ENABLE(tremor,
2854   [  --enable-tremor         Tremor decoder support (default disabled)])
2855 if test "${enable_tremor}" = "yes"
2856 then
2857   AC_CHECK_HEADERS(tremor/ivorbiscodec.h, [
2858     VLC_ADD_PLUGIN([tremor])
2859     VLC_ADD_LIBS([tremor],[-lvorbisidec -logg])
2860    ],[])
2861 fi
2862
2863 dnl
2864 dnl  Speex plugins
2865 dnl
2866 PKG_ENABLE_MODULES_VLC([SPEEX], [], [ogg speex >= 1.0.5], [Speex support], [auto])
2867 have_speexdsp="no"
2868 AS_IF([test "${enable_speex}" != "no"], [
2869   PKG_CHECK_MODULES([SPEEXDSP], [speexdsp], [
2870     have_speexdsp="yes"
2871   ], [
2872     AS_IF([test -n "${enable_speex}"], [
2873       AC_MSG_ERROR([${SPEEXDSP_PKG_ERRORS}.])
2874     ], [
2875       AC_MSG_WARN([${SPEEXDSP_PKG_ERRORS}.])
2876     ])
2877   ])
2878 ])
2879 AM_CONDITIONAL([HAVE_SPEEXDSP], [test "$have_speexdsp" = "yes"])
2880
2881 dnl
2882 dnl  theora decoder plugin
2883 dnl
2884 PKG_ENABLE_MODULES_VLC([THEORA], [], [ogg theora >= 1.0], [experimental theora codec], [auto])
2885
2886 dnl
2887 dnl  dirac encoder plugin
2888 dnl
2889 PKG_ENABLE_MODULES_VLC([DIRAC], [], [dirac >= 0.10.0], [dirac encoder], [auto])
2890
2891 dnl
2892 dnl  schroedinger decoder plugin (for dirac format video)
2893 dnl
2894 PKG_ENABLE_MODULES_VLC([SCHROEDINGER], [], [schroedinger-1.0 >= 1.0.10], [dirac decoder and encoder using schroedinger], [auto])
2895
2896 dnl
2897 dnl  PNG decoder module
2898 dnl
2899 AC_ARG_ENABLE(png,
2900   [  --enable-png            PNG support (default enabled)])
2901 if test "${enable_png}" != "no"; then
2902 AC_CHECK_HEADERS(png.h, [
2903   LDFLAGS="${LDFLAGS_save} -lz"
2904   AC_CHECK_LIB(png, png_set_rows, [
2905     VLC_ADD_LIBS([png],[-lpng -lz -lm])
2906     VLC_ADD_PLUGIN([png osdmenu osd_parser])],
2907     [],[-lz])
2908     LDFLAGS="${LDFLAGS_save}"
2909   ])
2910 fi
2911 AM_CONDITIONAL(BUILD_OSDMENU, [test "${enable_png}" != "no"])
2912
2913 dnl
2914 dnl H264 encoder plugin (using libx264)
2915 dnl
2916 AC_ARG_ENABLE(x264,
2917   [  --enable-x264           H264 encoding support with libx264 (default enabled)])
2918 if test "${enable_x264}" != "no"; then
2919   AC_ARG_WITH(x264-tree,
2920     [  --with-x264-tree=PATH   x264 tree for static linking ],[],[])
2921   if test "${with_x264_tree}" != "no" -a -n "${with_x264_tree}"
2922   then
2923     real_x264_tree="`cd ${with_x264_tree} 2>/dev/null && pwd`"
2924     if test -z "${real_x264_tree}"
2925     then
2926       dnl  The given directory can't be found
2927       AC_MSG_RESULT(no)
2928       AC_MSG_ERROR([${with_x264_tree} directory does not exist])
2929     fi
2930     dnl  Use a custom libx264
2931     AC_MSG_CHECKING(for x264.h in ${real_x264_tree})
2932     if test -f ${real_x264_tree}/x264.h
2933     then
2934       AC_MSG_RESULT(yes)
2935       VLC_ADD_CPPFLAGS([x264],[-I${real_x264_tree}])
2936       VLC_ADD_LIBS([x264],[-L${real_x264_tree}])
2937       PKG_CHECK_MODULES(X264,x264, [
2938         VLC_ADD_PLUGIN([x264])
2939         VLC_ADD_LIBS([x264],[${X264_LIBS}])
2940         VLC_ADD_CFLAGS([x264],[${X264_CFLAGS}])
2941         if echo ${X264_LIBS} |grep -q 'pthreadGC2'; then
2942           VLC_ADD_CFLAGS([x264], [-DPTW32_STATIC_LIB])
2943         fi
2944       ],[
2945         AC_MSG_ERROR([the specified tree has not been compiled])
2946       ])
2947       LDFLAGS="${LDFLAGS_save}"
2948     else
2949       AC_MSG_RESULT(no)
2950       AC_MSG_ERROR([the specified tree does not have x264.h])
2951     fi
2952   else
2953       PKG_CHECK_MODULES(X264,x264 >= 0.86, [
2954         VLC_ADD_PLUGIN([x264])
2955         VLC_ADD_LDFLAGS([x264],[${X264_LIBS}])
2956
2957         AS_IF([test "${ac_cv_ld_bsymbolic}" != "no"], [
2958           VLC_ADD_LIBS([x264],[-Wl,-Bsymbolic])
2959         ])
2960
2961         VLC_ADD_CFLAGS([x264],[${X264_CFLAGS}])
2962         if echo ${X264_LIBS} |grep -q 'pthreadGC2'; then
2963           VLC_ADD_CFLAGS([x264], [-DPTW32_STATIC_LIB])
2964         fi
2965       ],[
2966         if test "${enable_x264}" = "yes"; then
2967             AC_MSG_ERROR([${X264_PKG_ERRORS}: you may get it from http://www.videolan.org/x264.html])
2968           fi
2969       ])
2970     LDFLAGS="${LDFLAGS_save}"
2971   fi
2972 fi
2973
2974 dnl
2975 dnl libfluidsynth (MIDI synthetizer) plugin
2976 dnl
2977 PKG_ENABLE_MODULES_VLC([FLUIDSYNTH], [], [fluidsynth], [MIDI synthetiser with libfluidsynth], [auto])
2978
2979 dnl
2980 dnl Teletext Modules
2981 dnl vbi decoder plugin (using libzbvi)
2982 dnl telx module
2983 dnl uncompatible
2984 dnl
2985 AC_ARG_ENABLE(zvbi,
2986   AS_HELP_STRING([--enable-zvbi],[VBI (inc. Teletext) decoding support with
2987                   libzvbi (default enabled)]))
2988 AC_ARG_ENABLE(telx,
2989   AS_HELP_STRING([--enable-telx],[Teletext decoding module (conflicting with
2990                   zvbi) (default enabled if zvbi is absent)]))
2991
2992 AS_IF( [test "${enable_zvbi}" != "no"],[
2993     PKG_CHECK_MODULES(ZVBI, [zvbi-0.2 >= 0.2.28],
2994         [
2995           VLC_ADD_LIBS([zvbi],[$ZVBI_LIBS])
2996           if test "${SYS}" = "mingw32"; then
2997               VLC_ADD_LIBS([zvbi],[ -lpthreadGC2])
2998           fi
2999           VLC_ADD_CFLAGS([zvbi],[$ZVBI_CFLAGS])
3000           VLC_ADD_PLUGIN([zvbi])
3001           AC_DEFINE(ZVBI_COMPILED, 1, [Define if the zvbi module is built])
3002           AS_IF( [test "${enable_telx}" = "yes"],[
3003                   AC_MSG_WARN([The zvbi and telx modules are incompatible. Using zvbi.])
3004                   ])
3005         ],[
3006           AC_MSG_WARN([${ZVBI_PKG_ERRORS}. Enabling the telx module instead.])
3007         ])
3008     ])
3009 AS_IF( [test "${enable_telx}" != "no" ],[
3010   VLC_ADD_PLUGIN([telx])
3011   ])
3012
3013 dnl
3014 dnl libass subtitle rendering module
3015 dnl
3016 AC_ARG_ENABLE(libass,
3017   [  --enable-libass         Subtitle support using libass (default enabled)])
3018 AS_IF( [test "${enable_libass}" != "no"], [
3019   PKG_CHECK_MODULES(LIBASS, [libass >= 0.9.8],
3020       [
3021         VLC_ADD_LIBS([libass],[$LIBASS_LIBS])
3022         VLC_ADD_CFLAGS([libass],[$LIBASS_CFLAGS])
3023         VLC_ADD_PLUGIN([libass])
3024
3025         AC_CHECK_HEADERS(fontconfig/fontconfig.h,
3026           [VLC_ADD_CPPFLAGS([libass],[-DHAVE_FONTCONFIG])
3027            VLC_ADD_LIBS([libass],[-lfontconfig])
3028        ])
3029       ],[
3030         AC_MSG_WARN([${LIBASS_PKG_ERRORS}.])
3031       ])
3032   ])
3033
3034 dnl
3035 dnl  kate decoder plugin
3036 dnl
3037 PKG_ENABLE_MODULES_VLC([KATE], [], [kate >= 0.3.0], [kate codec], [auto])
3038
3039 dnl
3040 dnl  tiger rendering for kate decoder plugin
3041 dnl
3042 AC_ARG_ENABLE(tiger,
3043 [  --enable-tiger          Tiger rendering library for Kate streams (default auto)])
3044 AS_IF([test "${enable_tiger}" != "no"], [
3045   PKG_CHECK_MODULES(TIGER,[tiger >= 0.3.1], [
3046       AC_DEFINE(HAVE_TIGER, 1, [Define if libtiger is available.])
3047       VLC_ADD_CFLAGS([kate],[$TIGER_CFLAGS])
3048       VLC_ADD_LIBS([kate],[$TIGER_LIBS]) ],[
3049         AS_IF([test -n "${enable_tiger}"], [
3050           AC_MSG_ERROR([${TIGER_PKG_ERRORS}.])
3051         ])
3052   ])
3053 ])
3054
3055
3056 dnl
3057 dnl  Video plugins
3058 dnl
3059
3060 EXTEND_HELP_STRING([Video plugins:])
3061
3062 dnl
3063 dnl  OpenGL
3064 dnl
3065 PKG_CHECK_MODULES([GL], [gl], [
3066   have_gl="yes"
3067 ], [
3068   AC_CHECK_HEADER([GL/gl.h], [
3069     have_gl="yes"
3070     GL_CFLAGS=""
3071     GL_LIBS="-lGL"
3072   ], [
3073     have_gl="no"
3074   ])
3075 ])
3076
3077 dnl OpenGL ES 2: depends on EGL 1.1 and is currently unfinished
3078 dnl PKG_ENABLE_MODULES_VLC([GLES2], [], [glesv2], [OpenGL ES v2 support], [auto])
3079 dnl OpenGL ES 1: depends on EGL 1.0 and is currently broken
3080 dnl PKG_ENABLE_MODULES_VLC([GLES1], [], [glesv1_cm], [OpenGL ES v1 support], [auto])
3081
3082 AC_ARG_ENABLE(egl,
3083   [  --enable-egl            OpenGL support through EGL (default disabled)],, [
3084   enable_egl="no"
3085 ])
3086 AS_IF([test "$enable_egl" != "no"], [
3087   PKG_CHECK_MODULES([EGL], [egl], [
3088     VLC_ADD_PLUGIN([gl])
3089     VLC_ADD_PLUGIN([egl])
3090   ])
3091 ])
3092
3093 dnl
3094 dnl  Xlib
3095 dnl
3096
3097 AC_PATH_XTRA()
3098 AC_CHECK_HEADERS(X11/Xlib.h)
3099
3100 dnl
3101 dnl  X C Bindings modules
3102 dnl
3103 AC_ARG_ENABLE(xcb,
3104   [  --enable-xcb            X11 support with XCB (default enabled)],, [
3105   AS_IF([test "${SYS}" != "mingw32" -a "${SYS}" != "mingwce" -a "${SYS}" != "darwin" -a "${SYS}" != "symbian"], [
3106     enable_xcb="yes"
3107   ], [
3108     enable_xcb="no"
3109   ])
3110 ])
3111 AC_ARG_ENABLE(xvideo,
3112   [  --enable-xvideo         XVideo support (default enabled)],, [
3113     enable_xvideo="$enable_xcb"
3114 ])
3115 AC_ARG_ENABLE(glx,
3116   [  --enable-glx            OpenGL support through GLX (default enabled)],, [
3117   enable_glx="$enable_xcb"
3118 ])
3119
3120 have_xcb="no"
3121 AS_IF([test "${enable_xcb}" != "no"], [
3122   dnl libxcb
3123   PKG_CHECK_MODULES(XCB, [xcb >= 1.6])
3124   have_xcb="yes"
3125   PKG_CHECK_MODULES(XCB_SHM, [xcb-shm])
3126   PKG_CHECK_MODULES(XCB_COMPOSITE, [xcb-composite])
3127
3128   AS_IF([test "${enable_xvideo}" != "no"], [
3129     PKG_CHECK_MODULES(XCB_XV, [xcb-xv >= 1.1.90.1], [
3130       VLC_ADD_PLUGIN([xcb_xv])
3131     ])
3132   ])
3133
3134   PKG_CHECK_MODULES(XCB_RANDR, [xcb-randr >= 1.3], [
3135     VLC_ADD_PLUGIN([panoramix])
3136     VLC_ADD_LIBS([panoramix],[${XCB_RANDR_LIBS} ${XCB_LIBS}])
3137     VLC_ADD_CFLAGS([panoramix],[${XCB_RANDR_CFLAGS} ${XCB_CFLAGS}])
3138   ], [
3139     AC_MSG_WARN([${XCB_RANDR_PKG_ERRORS}. Panoramix filter will not be supported.])
3140   ])
3141
3142   dnl xcb-utils
3143   PKG_CHECK_MODULES(XCB_KEYSYMS, [xcb-keysyms >= 0.3.4], [
3144     PKG_CHECK_MODULES(XPROTO, [xproto])
3145     VLC_ADD_PLUGIN([globalhotkeys])
3146     VLC_ADD_CFLAGS([globalhotkeys], [${XCB_KEYSYMS_CFLAGS} ${XCB_CFLAGS}])
3147     VLC_ADD_LIBS([globalhotkeys], [${XCB_KEYSYMS_LIBS} ${XCB_LIBS}])
3148     VLC_ADD_CFLAGS([xcb_window], [-DHAVE_XCB_KEYSYMS])
3149   ], [
3150     AC_MSG_WARN([${XCB_KEYSYMS_PKG_ERRORS}. Hotkeys will not work.])
3151   ])
3152
3153   AS_IF([test "${enable_glx}" != "no"], [
3154     AS_IF([test "${have_gl}" != "yes"], [
3155       AC_MSG_ERROR([${GL_PKG_ERRORS}. Pass --disable-glx if you do not need OpenGL X11 support.])
3156     ])
3157     PKG_CHECK_MODULES(XLIB_XCB, [x11-xcb], [
3158       VLC_ADD_PLUGIN([xcb_glx])
3159     ], [
3160       AC_MSG_ERROR([${XLIB_XCB_PKG_ERRORS}. Pass --disable-glx if you do not need OpenGL X11 support.])
3161     ])
3162   ])
3163 ])
3164 AM_CONDITIONAL([HAVE_XCB], [test "${have_xcb}" = "yes"])
3165
3166 dnl
3167 dnl  SDL module
3168 dnl
3169 AC_ARG_ENABLE(sdl,
3170   [  --enable-sdl            SDL support (default enabled)])
3171 AC_ARG_ENABLE(sdl-image,
3172   [  --enable-sdl-image      SDL image support (default enabled)])
3173 if test "${enable_sdl}" != "no"
3174 then
3175    PKG_CHECK_MODULES(SDL, [sdl >= 1.2.10], [
3176       # SDL on Darwin is heavily patched and can only run SDL_image
3177       if test "${SYS}" != "darwin"; then
3178         VLC_ADD_PLUGIN([vout_sdl])
3179       fi
3180       if test "${SYS}" != "mingw32" -a "${SYS}" != "os2"; then
3181         VLC_ADD_LIBS([vout_sdl],[${X_LIBS} ${X_PRE_LIBS} -lX11])
3182       fi
3183       VLC_ADD_CFLAGS([vout_sdl],[${SDL_CFLAGS}])
3184       VLC_ADD_LIBS([vout_sdl],[${SDL_LIBS}])
3185
3186       # SDL_image
3187       AS_IF([ test "${enable_sdl_image}" != "no"],[
3188         PKG_CHECK_MODULES(SDL_IMAGE, [SDL_image >= 1.2.10], [
3189           VLC_ADD_PLUGIN([sdl_image])
3190           VLC_ADD_LIBS([sdl_image],[${SDL_IMAGE_LIBS}])
3191           VLC_ADD_CFLAGS([sdl_image], [${SDL_IMAGE_CFLAGS}])],
3192           [ AC_MSG_WARN([${SDL_IMAGE_PKG_ERRORS}. You should install it alongside your SDL package.])
3193           ])
3194       ])
3195    ],[
3196      AC_MSG_WARN([${SDL_PKG_ERRORS}.])
3197    ])
3198 fi
3199
3200
3201 dnl
3202 dnl Mac Vout
3203 AC_ARG_ENABLE(macosx-vout,
3204   [  --enable-macosx-vout    Mac OS X video output module (default enabled on Mac OS X)])
3205 if test "x${enable_macosx_vout}" != "xno" &&
3206   (test "${SYS}" = "darwin" || test "${enable_macosx_vout}" = "yes")
3207 then
3208   VLC_ADD_LIBS([vout_macosx],[-Wl,-framework,Cocoa])
3209   VLC_ADD_LIBS([vout_macosx],[-Wl,-framework,OpenGL])
3210   VLC_ADD_PLUGIN([vout_macosx])
3211 fi
3212
3213
3214 dnl
3215 dnl  freetype module
3216 dnl
3217 AC_ARG_ENABLE(freetype,
3218   [  --enable-freetype       freetype support   (default auto)])
3219 AC_ARG_ENABLE(fribidi,
3220   [  --enable-fribidi        fribidi support    (default auto)])
3221 AC_ARG_ENABLE(fontconfig,
3222   [  --enable-fontconfig     fontconfig support (default auto)])
3223
3224 if test "${enable_freetype}" != "no"; then
3225    PKG_CHECK_MODULES(FREETYPE, freetype2, [
3226       have_freetype=yes
3227       VLC_ADD_PLUGIN([freetype])
3228       VLC_ADD_CPPFLAGS([freetype skins2],[${FREETYPE_CFLAGS}])
3229       if test "${SYS}" = "mingw32"; then
3230         VLC_ADD_LIBS([freetype],[-liconv -lz])
3231       fi
3232       VLC_ADD_LIBS([freetype skins2],[${FREETYPE_LIBS}])
3233
3234       AC_CHECK_HEADERS(Carbon/Carbon.h,
3235                        [VLC_ADD_LIBS([freetype],[-Wl,-framework,Carbon])])
3236
3237       dnl fontconfig support
3238       if test "${SYS}" != "mingw32"; then
3239           if test "${enable_fontconfig}" != "no"; then
3240             AC_CHECK_HEADERS(fontconfig/fontconfig.h, [
3241               VLC_ADD_CPPFLAGS([freetype],[-DHAVE_FONTCONFIG])
3242               VLC_ADD_LIBS([freetype],[-lfontconfig])
3243             ],[AC_MSG_WARN([library fontconfig not found. Styles will be disabled in freetype])])
3244           fi
3245       else
3246           VLC_ADD_LIBS([freetype],[-lgdi32])
3247       fi
3248
3249       dnl fribidi support
3250       if test "${enable_fribidi}" != "no"; then
3251         PKG_CHECK_MODULES(FRIBIDI, fribidi, [
3252           VLC_ADD_CPPFLAGS([freetype skins2], [${FRIBIDI_CFLAGS} -DHAVE_FRIBIDI])
3253           VLC_ADD_LIBS([freetype skins2], [${FRIBIDI_LIBS}])
3254         ],[AC_MSG_WARN([${FRIBIDI_PKG_ERRORS}. Bidirectional support will be disabled in FreeType.])])
3255       fi
3256
3257   ],[
3258   have_freetype=no
3259   AS_IF([test -n "${enable_freetype}"],[
3260     AC_MSG_ERROR([${FREETYPE_PKG_ERRORS}. Install FreeType2 development or configure with --disable-freetype.])
3261     ])
3262   ])
3263 fi
3264
3265
3266 dnl
3267 dnl  QuartzText vout module (iOS/Mac OS)
3268 dnl
3269 AC_ARG_ENABLE(macosx-quartztext,
3270   [  --enable-macosx-quartztext   Mac OS X quartz text module (default enabled on Mac OS X)])
3271 if test "x${enable_macosx_quartztext}" != "xno" &&
3272   (test "${SYS}" = "darwin" || test "${enable_macosx_quartztext}" = "yes")
3273 then
3274   VLC_ADD_PLUGIN([quartztext])
3275   VLC_ADD_LIBS([quartztext],[-Wl,-framework,ApplicationServices])
3276 fi
3277
3278 dnl
3279 dnl  SVG module
3280 dnl
3281 PKG_ENABLE_MODULES_VLC([SVG], [], [librsvg-2.0 >= 2.9.0], [SVG rendering library],[auto])
3282
3283 dnl
3284 dnl  android surface module
3285 dnl
3286 AC_ARG_ENABLE(android-surface,
3287   [  --enable-android-surface   Android Surface video output module (default disabled)])
3288 if test "${enable_android_surface}" = "yes"; then
3289   if test "${HAVE_ANDROID}" = "1"; then
3290      VLC_ADD_PLUGIN([android_surface])
3291      VLC_ADD_LDFLAGS([android_surface], [-ldl])
3292   fi
3293 fi
3294
3295
3296 dnl
3297 dnl  iOS vout module
3298 dnl
3299 AC_ARG_ENABLE(ios-vout,
3300   [  --enable-ios-vout    iOS video output module (default disabled)])
3301 if test "${enable_ios_vout}" = "yes"
3302 then
3303   VLC_ADD_PLUGIN([vout_ios])
3304   VLC_ADD_CFLAGS([vout_ios], [-DUSE_OPENGL_ES=1])
3305   VLC_ADD_LIBS([vout_ios], [-Wl,-framework,OpenGLES,-framework,QuartzCore,-framework,UIKit,-framework,Foundation])
3306 fi
3307
3308 dnl
3309 dnl  Windows DirectX module
3310 dnl
3311
3312 if test "${SYS}" = "mingw32" -o "${SYS}" = "mingwce"
3313 then
3314   VLC_ADD_PLUGIN([panoramix])
3315 fi
3316
3317 AC_ARG_ENABLE(directx,
3318   [  --enable-directx        Win32 DirectX support (default enabled on Win32)])
3319 if test "${enable_directx}" != "no"; then
3320   if test "${SYS}" = "mingw32" -o "${SYS}" = "mingwce"; then
3321       dnl DDraw
3322       AC_CHECK_HEADERS(ddraw.h,
3323       [ VLC_ADD_PLUGIN([directx aout_directx])
3324         VLC_ADD_LIBS([directx],[-luser32 -lgdi32])
3325       ],[AC_MSG_ERROR([Cannot find DirectX headers!])]
3326       )
3327
3328       dnl OpenGL
3329       AC_CHECK_HEADERS(GL/wglew.h,
3330       [ VLC_ADD_PLUGIN([glwin32])
3331         VLC_ADD_LIBS([glwin32],[-lopengl32 -lgdi32])
3332       ],[],[
3333         #include <windows.h>
3334         #include <GL/gl.h>
3335       ])
3336
3337       dnl Direct3D
3338       AC_CHECK_HEADERS(d3d9.h,
3339       [ VLC_ADD_PLUGIN([direct3d])
3340         VLC_ADD_LIBS([direct3d],[-lgdi32])
3341       ])
3342       VLC_ADD_LIBS([direct3d directx glwin32],[-lole32])
3343   fi
3344 fi
3345
3346 dnl
3347 dnl  Windows Direct2D plugin
3348 dnl
3349 AC_ARG_ENABLE(direct2d,
3350   [  --enable-direct2d       Win7/VistaPU Direct2D support (default auto on Win32)],, [
3351   AS_IF([test "${SYS}" != "mingw32" -a "${SYS}" != "mingwce"], [
3352     enable_direct2d="no"
3353   ])
3354 ])
3355 AS_IF([test "${enable_direct2d}" != "no"], [
3356   AC_CHECK_HEADERS(d2d1.h, [
3357     VLC_ADD_PLUGIN([direct2d])
3358     VLC_ADD_LIBS([direct2d],[-lgdi32 -lole32])
3359   ], [
3360     AC_MSG_WARN([Cannot find Direct2D headers!])
3361   ])
3362 ])
3363
3364 dnl
3365 dnl  win32 GDI plugin
3366 dnl
3367 AC_ARG_ENABLE(wingdi,
3368   [  --enable-wingdi         Win32 GDI module (default enabled on Win32)])
3369 if test "${enable_wingdi}" != "no"; then
3370   if test "${SYS}" = "mingw32"; then
3371     VLC_ADD_PLUGIN([wingdi])
3372     VLC_ADD_LIBS([wingdi],[-lgdi32 -lole32])
3373   fi
3374   if test "${SYS}" = "mingwce"; then
3375     VLC_ADD_PLUGIN([wingdi wingapi])
3376     VLC_ADD_LIBS([wingdi],[-laygshell])
3377     VLC_ADD_LIBS([wingapi],[-laygshell])
3378   fi
3379 fi
3380
3381
3382 dnl
3383 dnl  Linux framebuffer module
3384 dnl
3385 AC_CHECK_HEADER([linux/fb.h], [
3386   VLC_ADD_PLUGIN([fb])
3387 ])
3388
3389
3390 dnl
3391 dnl  DirectFB module
3392 dnl  try to find using: 1 - given location; 2 - directfb-config; 3 - pkg-config
3393 dnl  TODO: support for static linking
3394 dnl
3395 AC_ARG_ENABLE(directfb,
3396   [  --enable-directfb       DirectFB support (default disabled)])
3397 AC_ARG_WITH(directfb,
3398   [  --with-directfb=PATH    path to DirectFB headers and libraries])
3399
3400 if test "${enable_directfb}" = "yes"; then
3401     have_directfb="false"
3402     CPPFLAGS_mydirectfb=
3403     LIBS_mydirectfb=
3404     if test "${with_directfb}" != "no" -a -n "${with_directfb}"; then
3405         dnl Trying the given location
3406         CPPFLAGS_save="${CPPFLAGS}"
3407         LIBS_save="${LIBS}"
3408
3409         CPPFLAGS_new="-I${with_directfb}/include -D_REENTRANT -D_GNU_SOURCE"
3410         LIBS_new="-L${with_directfb}/lib/fusion/.libs/ -L${with_directfb}/lib/direct/.libs/"
3411         LIBS_new="${LIBS_new} -L${with_directfb}/src/.libs/"
3412
3413         CPPFLAGS="${CPPFLAGS} ${CPPFLAGS_new}"
3414         LIBS="${LIBS} ${LIBS_new}"
3415
3416         dnl FIXME: too obscure
3417         AC_CHECK_HEADER([directfb.h], [
3418             AC_CHECK_LIB([direct],[direct_initialize], [
3419                 AC_CHECK_LIB([fusion], [fusion_enter], [
3420                     AC_CHECK_LIB([directfb], [DirectFBInit], have_directfb="true", have_directfb="false")
3421                 ], have_directfb="false")
3422             ], have_directfb="false")
3423         ], have_directfb="false")
3424
3425         dnl Restore flags
3426         CPPFLAGS="${CPPFLAGS_save}"
3427         LIBS="${LIBS_save}"
3428
3429         if test "${have_directfb}" = "true"; then
3430             LIBS_mydirectfb="${LIBS_new} -lz $LIBDL -ldirectfb -lfusion -ldirect -lpthread"
3431             CPPFLAGS_mydirectfb="${CPPFLAGS_new}"
3432         fi
3433     else
3434         dnl Look for directfb-config
3435         AC_PATH_PROG(DIRECTFB_CONFIG, directfb-config, no, ${PATH})
3436         if test "${DIRECTFB_CONFIG}" != "no"; then
3437             CPPFLAGS_mydirectfb="`${DIRECTFB_CONFIG} --cflags`"
3438             LIBS_mydirectfb="`${DIRECTFB_CONFIG} --libs`"
3439             have_directfb="true"
3440         else
3441             dnl Trying with pkg-config
3442             PKG_CHECK_MODULES(DIRECTFB, directfb, [
3443                 CPPFLAGS_mydirectfb="${DIRECTFB_CFLAGS}"
3444                 LIBS_mydirectfb="${DIRECTFB_LIBS}"
3445                 have_directfb="true"
3446                 ], [have_directfb="false"])
3447         fi
3448     fi
3449     if test "${have_directfb}" = "true"; then
3450         VLC_ADD_PLUGIN([directfb])
3451         VLC_ADD_CPPFLAGS([directfb],[${CPPFLAGS_mydirectfb}])
3452         VLC_ADD_LIBS([directfb],[${LIBS_mydirectfb}])
3453     else
3454         AC_MSG_ERROR([${DIRECTFB_PKG_ERRORS}.])
3455     fi
3456 fi
3457
3458 dnl
3459 dnl  AA plugin
3460 dnl
3461 AC_ARG_ENABLE(aa,
3462   [  --enable-aa             aalib output (default disabled)])
3463 if test "${enable_aa}" = "yes"
3464 then
3465   AC_CHECK_HEADER(aalib.h,have_aa="true",have_aa="false")
3466   if test "${have_aa}" = "true"
3467   then
3468     VLC_ADD_PLUGIN([aa])
3469     VLC_ADD_LIBS([aa],[-laa])
3470     if test "${SYS}" != "mingw32"; then
3471       VLC_ADD_LIBS([aa],[${X_LIBS} ${X_PRE_LIBS} -lX11])
3472     fi
3473   fi
3474 fi
3475
3476 dnl
3477 dnl  libcaca plugin
3478 dnl
3479 PKG_ENABLE_MODULES_VLC([CACA], [], [caca >= 0.99.beta14], [libcaca output],[auto])
3480
3481 dnl
3482 dnl  Audio plugins
3483 dnl
3484
3485 EXTEND_HELP_STRING([Audio plugins:])
3486
3487 dnl
3488 dnl  Pulseaudio module
3489 dnl
3490 AC_ARG_ENABLE(pulse,
3491   [AS_HELP_STRING([--enable-pulse],
3492     [use the PulseAudio client library (default auto)])])
3493 have_pulse="no"
3494 AS_IF([test "${enable_pulse}" != "no"], [
3495   PKG_CHECK_MODULES([PULSE], [libpulse >= 0.9.22], [
3496     have_pulse="yes"
3497   ], [
3498     PKG_CHECK_MODULES([PULSE], [libpulse >= 0.9.16], [
3499       AS_IF([test "${no_x}" != "yes"], [
3500         have_pulse="yes"
3501         PULSE_LIBS="$PULSE_LIBS ${X_LIBS} ${X_PRE_LIBS} -lX11"
3502       ], [
3503         AS_IF([test "${enable_pulse}" = "yes"], [
3504           AC_MSG_ERROR([Xlib is required with PulseAudio pre-0.9.22 versions
3505 (see http://www.pulseaudio.org/ticket/799 for further reference).])
3506         ])
3507       ])
3508     ], [
3509       AS_IF([test "x${enable_pulse}" != "x"], [
3510         AC_MSG_ERROR([$PULSE_PKG_ERRORS. PulseAudio 0.9.22 or later required.])
3511       ])
3512     ])
3513   ])
3514 ])
3515 AM_CONDITIONAL([HAVE_PULSE], [test "${have_pulse}" = "yes"])
3516
3517 dnl
3518 dnl  ALSA module
3519 dnl
3520 AC_ARG_ENABLE(alsa,
3521   [AS_HELP_STRING([--enable-alsa],
3522     [support the Advanced Linux Sound Architecture (default auto)])],, [
3523   AS_IF([test "$SYS" = "linux" -a "${have_pulse}" = "no"], [
3524     enable_alsa="yes"
3525   ])
3526 ])
3527 have_alsa="no"
3528 AS_IF([test "${enable_alsa}" != "no"], [
3529   PKG_CHECK_MODULES([ALSA], [alsa >= 1.0.16], [
3530     have_alsa="yes"
3531   ], [
3532     AS_IF([test "x${enable_alsa}" != "x"], [
3533       AC_MSG_ERROR([$ALSA_PKG_ERRORS. alsa-lib 1.0.16 or later required.])
3534     ])
3535   ])
3536 ])
3537 AM_CONDITIONAL([HAVE_ALSA], [test "${have_alsa}" = "yes"])
3538
3539 dnl
3540 dnl  Open Sound System module
3541 dnl
3542 AC_ARG_ENABLE(oss,
3543   [AS_HELP_STRING([--enable-oss],
3544     [support the Open Sound System OSS (default enabled on BSD)])],, [
3545   AS_IF([test "$SYS" = "mingw32" -o "$SYS" = "mingwce" -o "$SYS" = "linux"], [
3546     enable_oss="no"
3547   ])
3548 ])
3549 have_oss="no"
3550 OSS_LIBS=""
3551 AS_IF([test "$enable_oss" != "no"], [
3552   AC_CHECK_HEADERS([soundcard.h sys/soundcard.h], [
3553     have_oss="yes"
3554     AC_CHECK_LIB(ossaudio, main, [
3555       OSS_LIBS="-lossaudio"
3556     ])
3557   ])
3558 ])
3559 AC_SUBST(OSS_LIBS)
3560 AM_CONDITIONAL([HAVE_OSS], [test "${have_oss}" = "yes"])
3561
3562 dnl
3563 dnl  Portaudio module
3564 dnl
3565 PKG_ENABLE_MODULES_VLC([PORTAUDIO], [], [portaudio-2.0], [Portaudio library support], [auto])
3566
3567 dnl
3568 dnl  win32 waveOut plugin
3569 dnl
3570 AC_ARG_ENABLE(waveout,
3571   [  --enable-waveout        Win32 waveOut module (default enabled on Win32)])
3572 if test "${enable_waveout}" != "no"; then
3573   if test "${SYS}" = "mingw32"; then
3574     VLC_ADD_PLUGIN([waveout])
3575     VLC_ADD_LIBS([waveout],[-lwinmm])
3576   fi
3577   if test "${SYS}" = "mingwce"; then
3578     VLC_ADD_PLUGIN([waveout])
3579   fi
3580 fi
3581
3582 dnl
3583 dnl  CoreAudio plugin
3584 dnl
3585 AC_ARG_ENABLE(macosx-audio,
3586   [  --enable-macosx-audio   Mac OS X audio module (default enabled on MacOS X)])
3587 if test "x${enable_macosx_audio}" != "xno" &&
3588   (test "${SYS}" = "darwin" || test "${enable_macosx_audio}" = "yes")
3589 then
3590   AC_CHECK_HEADERS(CoreAudio/CoreAudio.h,
3591     [ VLC_ADD_PLUGIN([auhal])
3592       VLC_ADD_LIBS([auhal],[-Wl,-framework,CoreAudio,-framework,AudioUnit,-framework,AudioToolbox,-framework,Carbon])
3593     ], [ AC_MSG_ERROR([cannot find CoreAudio headers]) ])
3594 fi
3595
3596 dnl
3597 dnl  AudioQueue plugin
3598 dnl
3599 AC_ARG_ENABLE(audioqueue,
3600   [  --enable-audioqueue     AudioQueue audio module (default disabled)])
3601 if test "${enable_audioqueue}" = "yes"
3602 then
3603   VLC_ADD_PLUGIN([audioqueue])
3604   VLC_ADD_LIBS([audioqueue], [-Wl,-framework,AudioToolbox,-framework,CoreFoundation])
3605 fi
3606
3607 dnl
3608 dnl  JACK modules
3609 dnl
3610 PKG_ENABLE_MODULES_VLC([JACK], [jack access_jack], [jack], [JACK audio I/O modules],[auto])
3611
3612 dnl
3613 dnl  OpenSLES Android
3614 dnl
3615 AC_ARG_ENABLE(opensles,
3616   [  --enable-opensles       Android OpenSL ES audio module (default disabled)])
3617 if test "${HAVE_ANDROID}" = "1"; then
3618   if test "${enable_opensles}" = "yes"; then
3619       AC_CHECK_HEADERS(SLES/OpenSLES.h,
3620         [ VLC_ADD_PLUGIN([opensles_android]) ],
3621         [ AC_MSG_ERROR([cannot find OpenSLES headers])] )
3622   fi
3623 fi
3624
3625 dnl
3626 dnl libsamplerate plugin
3627 dnl
3628 PKG_ENABLE_MODULES_VLC([SAMPLERATE], [], [samplerate], [Resampler with libsamplerate], [auto])
3629
3630 dnl
3631 dnl  OS/2 KAI plugin
3632 dnl
3633 AC_ARG_ENABLE(kai,
3634   [AS_HELP_STRING([--enable-kai],
3635     [support the K Audio Interface KAI (default enabled on OS/2)])],, [
3636   AS_IF([test "$SYS" = "os2"], [
3637     enable_kai="yes"
3638   ])
3639 ])
3640 have_kai="no"
3641 KAI_LIBS=""
3642 AS_IF([test "$enable_kai" != "no"], [
3643   AC_CHECK_HEADERS([kai.h], [
3644     have_kai="yes"
3645     AC_CHECK_LIB(kai, main, [
3646       KAI_LIBS="-lkai"
3647     ])
3648   ])
3649 ])
3650 AC_SUBST(KAI_LIBS)
3651 AM_CONDITIONAL([HAVE_KAI], [test "${have_kai}" = "yes"])
3652
3653 dnl
3654 dnl  Interface plugins
3655 dnl
3656
3657 EXTEND_HELP_STRING([Interface plugins:])
3658
3659 dnl
3660 dnl Skins2 module
3661 dnl
3662 AC_ARG_ENABLE(skins2,
3663   [AS_HELP_STRING([--enable-skins2], [skins interface module (default auto)])])
3664 AS_IF([test "${enable_skins2}" != "no"], [
3665   have_skins_deps="yes"
3666   AS_IF([test "${SYS}" = "mingw32"], [
3667     VLC_ADD_CPPFLAGS([skins2],[-U_OFF_T_ -U_off_t -Imodules/gui/skins2 -DWIN32_SKINS])
3668     VLC_ADD_CXXFLAGS([skins2],[-O2 -fno-rtti])
3669     VLC_ADD_LIBS([skins2],[-lgdi32 -lole32 -luuid -lmsimg32])
3670
3671   ], [test "${SYS}" = "darwin"], [
3672     VLC_ADD_CPPFLAGS([skins2],[-Imodules/gui/skins2 -DMACOSX_SKINS])
3673     VLC_ADD_CXXFLAGS([skins2],[-O2 -fno-rtti])
3674     VLC_ADD_LIBS([skins2],[-Wl,-framework,Carbon])
3675
3676   ], [
3677     PKG_CHECK_MODULES([XPM], [xpm],, [have_skins_deps="no"])
3678     PKG_CHECK_MODULES([XINERAMA], [xinerama],, [have_skins_deps="no"])
3679     PKG_CHECK_MODULES([XEXT], [xext],, [have_skins_deps="no"])
3680     VLC_ADD_CPPFLAGS([skins2],[-Imodules/gui/skins2 ${X_CFLAGS} ${XEXT_CFLAGS} ${XPM_CFLAGS} -DX11_SKINS])
3681     VLC_ADD_CXXFLAGS([skins2],[-O2 -fno-rtti])
3682     VLC_ADD_LIBS([skins2],[${X_LIBS} ${X_PRE_LIBS} ${XEXT_LIBS} ${XPM_LIBS} ${XINERAMA_LIBS} -lX11])
3683
3684   ])
3685   AS_IF([test "${have_freetype}" != "yes"], [
3686     have_skins_deps="no"
3687   ])
3688
3689   AS_IF([test "${have_skins_deps}" = "no"], [
3690     AS_IF([test "x${enable_skins2}" = "x"], [
3691       AC_MSG_WARN([Skins2 interface disabled due to missing dependencies.])
3692     ], [
3693       AC_MSG_ERROR([Skins2 interface requires FreeType, libxpm, libxext and libxinerama])
3694     ])
3695     enable_skins2="no"
3696   ], [
3697     VLC_ADD_PLUGIN([skins2])
3698     ALIASES="${ALIASES} svlc"
3699   ])
3700 ])
3701 AM_CONDITIONAL(BUILD_SKINS, [test "${enable_skins2}" = "yes"])
3702
3703 AC_ARG_ENABLE(libtar,
3704   [  --enable-libtar         libtar support for skins2 (default auto)])
3705 AS_IF([test "${enable_skins2}" = "yes" && test "${enable_libtar}" != "no"], [
3706   AC_CHECK_HEADERS(libtar.h, [
3707     VLC_ADD_LIBS([skins2],[-ltar])
3708   ])
3709 ])
3710
3711 dnl
3712 dnl Hildon UI
3713 dnl
3714 AC_ARG_ENABLE(hildon,
3715   [  --enable-hildon         Hildon touchscreen UI (default disabled)])
3716 AS_IF([test "${enable_hildon}" = "yes"], [
3717   PKG_CHECK_MODULES(HILDON, [hildon-1], [
3718     PKG_CHECK_MODULES(HILDON_FM, hildon-fm-2, [
3719       VLC_ADD_CFLAGS([hildon],[${HILDON_FM_CFLAGS} -DHAVE_HILDON_FM])
3720       VLC_ADD_LIBS([hildon],[${HILDON_FM_LIBS}])
3721     ], [
3722       AC_MSG_WARN([${HILDON_FM_PKG_ERRORS}.])
3723     ])
3724     VLC_ADD_CFLAGS([hildon],[${HILDON_CFLAGS} ${X_CFLAGS}])
3725     VLC_ADD_LIBS([hildon],[${HILDON_LIBS} ${X_LIBS} ${X_PRE_LIBS} -lX11])
3726     VLC_ADD_PLUGIN([hildon])
3727     ALIASES="${ALIASES} mvlc"
3728   ], [
3729     AS_IF([test "${enable_hildon}" = "yes"],[
3730       AC_MSG_ERROR([${HILDON_PKG_ERRORS}.])
3731     ])
3732     enable_hildon="no"
3733   ])
3734 ])
3735 AM_CONDITIONAL(BUILD_HILDON, [test "${enable_hildon}" = "yes"])
3736
3737 dnl
3738 dnl QT 4
3739 dnl
3740 AC_ARG_ENABLE(qt4,
3741   [  --enable-qt4            Qt 4 support (default enabled) ],, [
3742   AS_IF([test "${SYS}" = "darwin"], [enable_qt4=no])
3743 ])
3744 AS_IF([test "${enable_qt4}" != "no"], [
3745   PKG_CHECK_MODULES(QT4, [QtCore QtGui >= 4.6.0], [
3746     VLC_ADD_PLUGIN([qt4])
3747     VLC_ADD_LIBS([qt4],[${QT4_LIBS}])
3748     VLC_ADD_CXXFLAGS([qt4],[${QT4_CFLAGS}])
3749     ALIASES="${ALIASES} qvlc"
3750
3751     AC_LANG_PUSH([C++])
3752     CPPFLAGS_save="${CPPFLAGS}"
3753
3754     AC_MSG_CHECKING([whether Qt uses X11])
3755     CPPFLAGS="${CPPFLAGS} ${QT4_CFLAGS}"
3756     AC_PREPROC_IFELSE([AC_LANG_SOURCE([
3757 #include <QWidget>
3758 #if !defined (Q_WS_X11)
3759 # error Fail
3760 #endif
3761     ])], [
3762       AC_MSG_RESULT([yes])
3763       VLC_ADD_LIBS([qt4],[${X_LIBS} ${X_PRE_LIBS} -lX11])
3764       VLC_ADD_CXXFLAGS([qt4],[${X_CFLAGS}])
3765     ], [
3766       AC_MSG_RESULT([no])
3767     ])
3768
3769     CPPFLAGS="${CPPFLAGS_save}"
3770     AC_LANG_POP([C++])
3771
3772     AS_IF([test "${SYS}" = "mingw32" -o "${SYS}" = "mingwce"], [
3773         VLC_ADD_LIBS([qt4],[-lole32])
3774     ])
3775     AS_IF([test "${SYS}" = "darwin" ],[
3776          VLC_ADD_LIBS([qt4], [-Wl,-framework,Cocoa])
3777     ])
3778     AC_PATH_PROGS(MOC, [moc-qt4 moc], moc,`eval $PKG_CONFIG --variable=exec_prefix QtCore`/bin)
3779     AC_PATH_PROG(RCC, rcc, rcc,`eval $PKG_CONFIG --variable=exec_prefix QtCore`/bin)
3780     AC_PATH_PROGS(UIC, [uic-qt4 uic], uic,`eval $PKG_CONFIG --variable=exec_prefix QtCore`/bin)
3781   ], [
3782     AS_IF([test -n "${enable_qt4}"],[
3783       AC_MSG_ERROR([${QT4_PKG_ERRORS}.])
3784     ],[
3785       AC_MSG_WARN([${QT4_PKG_ERRORS}.])
3786     ])
3787     enable_qt4="no"
3788   ])
3789 ])
3790 AM_CONDITIONAL(ENABLE_QT4, [test "x$enable_qt4" != "xno"])
3791
3792 dnl
3793 dnl Simple test for skins2 dependency
3794 dnl
3795 AS_IF([test "${enable_skins2}" != "no" && test "x$enable_qt4" = "xno"], [
3796   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.])
3797 ])
3798
3799 dnl
3800 dnl  MacOS X gui module
3801 dnl
3802 AC_ARG_ENABLE(macosx,
3803   [  --enable-macosx         Mac OS X gui support (default enabled on Mac OS X)])
3804 if test "x${enable_macosx}" != "xno" &&
3805 (test "${SYS}" = "darwin" || test "${enable_macosx}" = "yes")
3806 then
3807   VLC_ADD_LIBS([macosx minimal_macosx],[-Wl,-framework,Cocoa])
3808   VLC_ADD_LIBS([macosx minimal_macosx],[-Wl,-framework,OpenGL])
3809   VLC_ADD_LIBS([macosx minimal_macosx],            [-Wl,-framework,Carbon])
3810   VLC_ADD_LIBS([macosx minimal_macosx],            [-Wl,-framework,CoreServices])
3811   VLC_ADD_LIBS([macosx minimal_macosx],            [-Wl,-framework,AGL])
3812   VLC_ADD_LIBS([macosx],                           [-Wl,-framework,QTKit])
3813   VLC_ADD_LIBS([macosx],                           [-Wl,-framework,IOKit])
3814   VLC_ADD_LIBS([macosx],                           [-F${CONTRIB_DIR}/Sparkle -Wl,-framework,Sparkle])
3815   VLC_ADD_OBJCFLAGS([macosx],                         [-F${CONTRIB_DIR}/Sparkle])
3816   VLC_ADD_LIBS([macosx],                           [-F${CONTRIB_DIR}/BGHUDAppKit -Wl,-framework,BGHUDAppKit])
3817   VLC_ADD_OBJCFLAGS([macosx],                         [-F${CONTRIB_DIR}/BGHUDAppKit])
3818   dnl For bug report
3819   VLC_ADD_LIBS([macosx],                           [-Wl,-framework,AddressBook])
3820   VLC_ADD_LIBS([macosx],                           [-Wl,-framework,WebKit])
3821   VLC_ADD_OBJCFLAGS([macosx minimal_macosx], [-fobjc-exceptions] )
3822
3823   VLC_ADD_PLUGIN([macosx minimal_macosx])
3824 fi
3825
3826 dnl
3827 dnl  MacOS X dialor provider
3828 dnl
3829 AC_ARG_ENABLE(macosx-dialog-provider,
3830   [  --enable-macosx-dialog-provider Mac OS X dialog module (default enabled on Mac OS X)])
3831 if test "x${enable_macosx_dialog_provider}" != "xno" &&
3832   (test "${SYS}" = "darwin" || test "${enable_macosx_dialog_provider}" = "yes")
3833 then
3834   VLC_ADD_LIBS([macosx_dialog_provider],[-Wl,-framework,Cocoa])
3835   VLC_ADD_PLUGIN([macosx_dialog_provider])
3836 fi
3837
3838 dnl
3839 dnl  ncurses module
3840 dnl
3841 AC_ARG_ENABLE(ncurses,
3842   [  --disable-ncurses       ncurses interface support (default disabled)],
3843   [if test "${enable_ncurses}" != "no"; then
3844     AC_CHECK_HEADER(ncurses.h,
3845       [AC_CHECK_LIB(ncursesw, mvprintw,
3846         [VLC_ADD_PLUGIN([ncurses])
3847         VLC_ADD_LIBS([ncurses],[-lncursesw])
3848         ALIASES="${ALIASES} nvlc"
3849         AC_CHECK_LIB(ncursesw, tgetent, [],
3850           AC_CHECK_LIB(tinfow, tgetent, [VLC_ADD_LIBS([ncurses],[-ltinfow])],
3851             [AC_CHECK_LIB(tinfo, tgetent, [VLC_ADD_LIBS([ncurses],[-ltinfo])],
3852               [AS_IF([test "${enable_ncurses}" = "yes"],
3853                 [AC_MSG_ERROR([tgetent not found in ncursesw tinfow tinfo]
3854                )])])
3855             ]
3856           )
3857         )
3858         ],
3859           [AS_IF([test "${enable_ncurses}" = "yes"], [
3860             AC_MSG_ERROR([libncursesw not found])])]
3861         )],
3862         [AS_IF([test "${enable_ncurses}" = "yes"], [
3863           AC_MSG_ERROR([ncurses.h not found])])]
3864         )
3865   fi]
3866 )
3867
3868 dnl
3869 dnl  XOSD plugin
3870 dnl
3871 AC_ARG_ENABLE(xosd,
3872   [  --enable-xosd           xosd interface support (default disabled)])
3873 if test "${enable_xosd}" = "yes"
3874 then
3875   AC_CHECK_HEADERS(xosd.h,
3876     AC_CHECK_LIB(xosd, xosd_set_horizontal_offset, [
3877       VLC_ADD_PLUGIN([xosd])
3878       VLC_ADD_LIBS([xosd],[-lxosd])
3879     ])
3880   )
3881 fi
3882
3883 dnl
3884 dnl Framebuffer (overlay) plugin
3885 dnl
3886 AC_ARG_ENABLE(fbosd,
3887   [  --enable-fbosd          fbosd interface support (default disabled)])
3888 if test "${enable_fbosd}" = "yes"
3889 then
3890   AC_CHECK_HEADERS(linux/fb.h, [
3891     VLC_ADD_PLUGIN([fbosd])
3892  ])
3893 fi
3894
3895 dnl
3896 dnl  Lirc plugin
3897 dnl
3898 AC_ARG_ENABLE(lirc,
3899   [  --enable-lirc           lirc support (default disabled)])
3900 if test "${enable_lirc}" = "yes"
3901 then
3902   AC_CHECK_HEADER(lirc/lirc_client.h, AC_CHECK_LIB(lirc_client, lirc_init, have_lirc="true", have_lirc="false"),have_lirc="false")
3903   if test "${have_lirc}" = "true"
3904   then
3905     VLC_ADD_PLUGIN([lirc])
3906     VLC_ADD_LIBS([lirc],[-llirc_client])
3907   fi
3908 fi
3909
3910 EXTEND_HELP_STRING([Visualisations and Video filter plugins:])
3911 dnl
3912 dnl Visualisation plugin
3913 dnl
3914 AC_ARG_ENABLE(visual,
3915   [  --enable-visual         visualisation plugin (default enabled)])
3916 if test "${enable_visual}" != "no"
3917 then
3918     VLC_ADD_PLUGIN([visual])
3919 fi
3920
3921 dnl
3922 dnl  goom visualization plugin
3923 dnl
3924 PKG_ENABLE_MODULES_VLC([GOOM], [], [libgoom2], [goom visualization plugin], [auto])
3925
3926 dnl
3927 dnl libprojectM visualization plugin
3928 dnl
3929 AC_ARG_ENABLE(projectm,
3930   [  --enable-projectm       projectM visualization plugin (default enabled)])
3931 AS_IF([test "${enable_projectm}" != "no"],
3932   [
3933     PKG_CHECK_MODULES(PROJECTM, libprojectM,
3934     [
3935       VLC_ADD_PLUGIN([projectm])
3936       VLC_ADD_CXXFLAGS([projectm],[$PROJECTM_CFLAGS])
3937       VLC_ADD_LIBS([projectm],[$PROJECTM_LIBS])
3938       PKG_CHECK_MODULES(PROJECTM2, [libprojectM >= 2.0.0],
3939         [ AC_DEFINE([HAVE_PROJECTM2], 1, [Define to 1 if using libprojectM 2.x]) ],
3940         [ AC_MSG_WARN( [Using libprojectM version 1] )
3941       ])
3942     ],[
3943       AC_MSG_WARN([${PROJECTM_PKG_ERRORS}.])
3944     ])
3945   ])
3946
3947 dnl
3948 dnl  AtmoLight (homemade Philips Ambilight clone)
3949 dnl
3950 AC_ARG_ENABLE(atmo,
3951 AS_HELP_STRING([--disable-atmo],[AtmoLight (homemade Philips Ambilight clone)
3952                 (default enabled)]),, [enable_atmo="yes"])
3953 AS_IF([test "${enable_atmo}" != no], [
3954   AS_IF([test "${SYS}" = "mingw32" -o "${SYS}" = "linux"], [
3955     AC_LANG_PUSH(C++)
3956     VLC_ADD_PLUGIN([atmo])
3957     AC_LANG_POP(C++)
3958   ])
3959 ])
3960
3961 EXTEND_HELP_STRING([Service Discovery plugins:])
3962 dnl
3963 dnl  Bonjour services discovery
3964 PKG_ENABLE_MODULES_VLC([BONJOUR], [], [avahi-client >= 0.6], [Bonjour services discovery], [auto])
3965
3966 dnl
3967 dnl  libudev services discovery
3968 PKG_ENABLE_MODULES_VLC([UDEV], [], [libudev >= 142], [Linux udev services discovery], [auto])
3969
3970 dnl
3971 dnl MTP devices services discovery
3972 PKG_ENABLE_MODULES_VLC([MTP], [mtp access_mtp], [libmtp >= 1.0.0], [MTP devices support], [auto])
3973
3974 dnl
3975 dnl UPnP Plugin (Intel SDK)
3976 dnl
3977 PKG_ENABLE_MODULES_VLC([UPNP], [upnp], [libupnp], [Intel UPNP SDK],[auto])
3978 VLC_ADD_CXXFLAGS([upnp],[${UPNP_CFLAGS}])
3979
3980 EXTEND_HELP_STRING([Misc options:])
3981
3982 dnl
3983 dnl  libxml2 module
3984 dnl
3985 PKG_ENABLE_MODULES_VLC([LIBXML2], [xml], [libxml-2.0 >= 2.5], [libxml2 support],[auto])
3986
3987
3988 dnl
3989 dnl libgcrypt
3990 dnl
3991 AC_ARG_ENABLE(libgcrypt,
3992   [  --disable-libgcrypt     gcrypt support (default enabled)])
3993 AS_IF([test "${enable_libgcrypt}" != "no"], [
3994   AC_CHECK_DECL([GCRYCTL_SET_THREAD_CBS], [
3995     libgcrypt-config --version >/dev/null || \
3996         AC_MSG_ERROR([gcrypt.h present but libgcrypt-config could not be found])
3997     AC_CHECK_LIB(gcrypt, gcry_control, [
3998       have_libgcrypt="yes"
3999       GCRYPT_CFLAGS="`libgcrypt-config --cflags`"
4000       GCRYPT_LIBS="`libgcrypt-config --libs`"
4001     ], [
4002       AC_MSG_ERROR([libgcrypt not found. Install libgcrypt or use --disable-libgcrypt. Have a nice day.])
4003     ], [`libgcrypt-config --libs`])
4004   ], [
4005     AC_MSG_ERROR([libgcrypt version 1.1.94 or higher not found. Install libgcrypt or use --disable-libgcrypt. Have a nice day.])
4006   ], [#include <gcrypt.h>]
4007   )
4008 ])
4009
4010 if test "${SYS}" = "mingw32" -o "${SYS}" = "mingwce"; then
4011   AS_IF([test "${have_libgcrypt}" = "yes"],[
4012     VLC_ADD_LIBS([rtp stream_out_rtp], [${GCRYPT_LIBS}])
4013   ])
4014 fi
4015 AC_SUBST(GCRYPT_CFLAGS)
4016 AC_SUBST(GCRYPT_LIBS)
4017 AM_CONDITIONAL([HAVE_GCRYPT], [test "${have_libgcrypt}" = "yes"])
4018
4019 dnl
4020 dnl TLS/SSL
4021 dnl
4022 AC_ARG_ENABLE(gnutls,
4023   [  --enable-gnutls         GNU TLS TLS/SSL support (default enabled)])
4024
4025 AS_IF([test "${have_libgcrypt}" != "yes"], [
4026   AS_IF([test "${enable_gnutls}" = "yes"], [
4027     AC_MSG_ERROR([--enable-gnutls and --disable-libgcrypt are mutually exclusive.])
4028   ])
4029   enable_gnutls="no"
4030 ])
4031 AS_IF([test "${enable_gnutls}" != "no"], [
4032   PKG_CHECK_MODULES(GNUTLS, [gnutls >= 2.0.0], [
4033     VLC_ADD_PLUGIN([gnutls])
4034     VLC_ADD_CFLAGS([gnutls], [$GNUTLS_CFLAGS])
4035     AS_IF([test "${SYS}" = "mingw32"], [
4036       dnl pkg-config --libs gnutls omits these
4037       VLC_ADD_LIBS([gnutls], [-lz ${LTLIBINTL} -lcrypt32])
4038     ])
4039     VLC_ADD_LIBS([gnutls], [${GCRYPT_LIBS}])
4040     VLC_ADD_CFLAGS([gnutls], [${GCRYPT_CFLAGS}])
4041     VLC_ADD_LIBS([gnutls], [$GNUTLS_LIBS])
4042   ], [
4043     AS_IF([test -n "${enable_gnutls}"], [
4044       AC_MSG_ERROR([${GNUTLS_PKG_ERRORS}.)])
4045     ])
4046   ])
4047 ])
4048
4049
4050 dnl
4051 dnl RemoteOSD plugin (VNC client as video filter)
4052 dnl
4053 AC_MSG_CHECKING([whether to enable the RemoteOSD plugin])
4054 AS_IF([test "${have_libgcrypt}" = "yes"],[
4055   AC_MSG_RESULT(yes)
4056   VLC_ADD_PLUGIN([remoteosd])
4057   VLC_ADD_LIBS([remoteosd], ${GCRYPT_LIBS})
4058   VLC_ADD_CFLAGS([remoteosd], ${GCRYPT_CFLAGS})
4059 ], [
4060   AC_MSG_RESULT(no)
4061   AC_MSG_WARN([libgcrypt support required for RemoteOSD plugin])
4062 ])
4063
4064
4065 dnl
4066 dnl RAOP plugin
4067 dnl
4068 AC_MSG_CHECKING([whether to enable the RAOP plugin])
4069 AS_IF([test "${have_libgcrypt}" = "yes"], [
4070   AC_MSG_RESULT(yes)
4071   VLC_ADD_PLUGIN([stream_out_raop])
4072   VLC_ADD_LIBS([stream_out_raop], [${GCRYPT_LIBS} -lgpg-error])
4073   VLC_ADD_CFLAGS([stream_out_raop], [${GCRYPT_CFLAGS}])
4074 ], [
4075   AC_MSG_RESULT(no)
4076   AC_MSG_WARN([libgcrypt support required for RAOP plugin])
4077 ])
4078
4079
4080 dnl
4081 dnl Nokia MCE plugin (Maemo screen unblanking)
4082 dnl
4083 PKG_CHECK_MODULES([MCE], [dbus-1 mce], [VLC_ADD_PLUGIN([mce])], [true])
4084
4085
4086 AS_IF([test -f "/etc/maemo_version"], [
4087   AC_DEFINE([HAVE_MAEMO], 1, [Define to 1 if building for the Maemo platform.])
4088 ])
4089
4090
4091 dnl
4092 dnl Taglib plugin
4093 dnl
4094 AC_ARG_ENABLE(taglib,
4095   [AS_HELP_STRING([--disable-taglib],
4096     [do not use TagLib (default enabled)])])
4097 AS_IF([test "${enable_taglib}" != "no"], [
4098   PKG_CHECK_MODULES(TAGLIB, taglib >= 1.5, [
4099     VLC_ADD_PLUGIN([taglib])
4100     VLC_ADD_LIBS([taglib],[$TAGLIB_LIBS -lz])
4101     VLC_ADD_CXXFLAGS([taglib],[$TAGLIB_CFLAGS])
4102   ], [
4103     AC_MSG_WARN([${TAGLIB_PKG_ERRORS}.])])
4104 ])
4105
4106
4107 dnl
4108 dnl update checking system
4109 dnl
4110 AC_ARG_ENABLE(update-check,
4111   [  --enable-update-check   update checking system (default disabled)])
4112 if test "${enable_update_check}" = "yes"
4113 then
4114   if test "${have_libgcrypt}" != "yes"
4115   then
4116     AC_MSG_ERROR([libgcrypt is required for update checking system])
4117   fi
4118   VLC_ADD_LIBS([libvlccore], [${GCRYPT_LIBS}])
4119   VLC_ADD_CFLAGS([libvlccore], [${GCRYPT_CFLAGS}])
4120   AC_DEFINE([UPDATE_CHECK], 1, [Define if you want to use the VLC update mechanism])
4121 fi
4122
4123 dnl
4124 dnl Growl notification plugin
4125 dnl
4126 AC_ARG_ENABLE(growl,
4127   [  --enable-growl          growl notification plugin (default disabled)],,
4128   [enable_growl=no])
4129 AS_IF([test "${enable_growl}" != "no"], [
4130     AC_CHECK_HEADERS(${CONTRIB_DIR}/Growl/Growl.framework/Versions/A/Headers/GrowlDefines.h, [
4131       VLC_ADD_PLUGIN([growl])
4132       VLC_ADD_LIBS([growl], [-F${CONTRIB_DIR}/Growl -Wl,-framework,Growl,-framework,CoreFoundation])
4133       VLC_ADD_OBJCFLAGS([growl], [-F${CONTRIB_DIR}/Growl])
4134       VLC_ADD_OBJCFLAGS([growl], [-fobjc-exceptions] )
4135     ])
4136   ]
4137 )
4138
4139 dnl
4140 dnl Libnotify notification plugin
4141 dnl
4142 PKG_ENABLE_MODULES_VLC([NOTIFY], [], [libnotify gtk+-2.0], [libnotify notification], [auto])
4143
4144 dnl
4145 dnl media library
4146 dnl
4147 AC_ARG_ENABLE(media-library,
4148     [  --enable-media-library  media library (default disabled)])
4149 AS_IF([test "${enable_media_library}" = "yes"], [
4150   AC_DEFINE([MEDIA_LIBRARY], 1, [Define if you want to use the VLC media library])
4151   VLC_ADD_CPPFLAGS([qt4],"-DMEDIA_LIBRARY")
4152   VLC_ADD_PLUGIN([media_library])
4153
4154 dnl
4155 dnl SQLite
4156 dnl
4157   AS_IF([test "${SYS}" != "darwin"], [
4158     PKG_ENABLE_MODULES_VLC([SQLITE], [], [sqlite3 >= 3.6.0], [sqlite3], [auto])
4159   ], [
4160     AS_IF([test "${enable_sqlite}" != "no"], [
4161       AC_CHECK_HEADERS(sqlite3.h, [
4162         VLC_ADD_PLUGIN([sqlite])
4163         VLC_ADD_LIBS([sqlite], [-lsqlite3])
4164       ], [
4165         AC_MSG_ERROR([sqlite3 is required for the media library])
4166       ])
4167     ])
4168   ])
4169 ])
4170
4171
4172 dnl
4173 dnl  Endianness check
4174 dnl
4175 AC_C_BIGENDIAN
4176 AS_IF([test "${ac_cv_c_bigendian}" = "yes"], [
4177   DEFS_BIGENDIAN="-DWORDS_BIGENDIAN=1"
4178 ], [
4179   DEFS_BIGENDIAN=""
4180 ])
4181 AC_SUBST(DEFS_BIGENDIAN)
4182
4183 dnl
4184 dnl Where to install KDE solid .desktop
4185 dnl
4186 AC_ARG_VAR([KDE4_CONFIG], [kde4-config utility])
4187 AS_IF([test "x$KDE4_CONFIG" = "x"], [
4188   KDE4_CONFIG="kde4-config"
4189 ])
4190
4191 AC_ARG_WITH(kde-solid,
4192   AS_HELP_STRING([--with-kde-solid=PATH],
4193                  [KDE Solid actions directory (auto)]),, [
4194
4195 if test "${SYS}" != "mingw32" -a "${SYS}" != "mingwce" ; then
4196   with_kde_solid="yes"
4197 fi
4198 ])
4199 soliddatadir=""
4200 AS_IF([test "${with_kde_solid}" != "no"], [
4201   AS_IF([test "${with_kde_solid}" = "yes"], [
4202     kde4datadir="`${KDE4_CONFIG} --install data`"
4203     AS_IF([test "x$kde4datadir" = "x"], [kde4datadir='${datadir}/kde4/apps'])
4204     soliddatadir="${kde4datadir}/solid/actions"
4205   ], [
4206     soliddatadir="${with_kde_solid}"
4207   ])
4208 ])
4209 AC_SUBST(soliddatadir)
4210 AM_CONDITIONAL(KDE_SOLID, [test "x${soliddatadir}" != "x"])
4211
4212 dnl
4213 dnl  DLL loader copied from MPlayer copied from somewhere else (WINE ?)
4214 dnl
4215 loader=false
4216 AC_ARG_ENABLE(loader,
4217   AS_HELP_STRING([--enable-loader],[build DLL loader for ELF i386 platforms
4218           (default disabled)]))
4219 AM_CONDITIONAL(LOADER, [test "${enable_loader}" = "yes"])
4220 AS_IF([test "${enable_loader}" = "yes"],
4221   [ VLC_ADD_PLUGIN([dmo])
4222     VLC_ADD_CPPFLAGS([dmo quicktime realvideo],[-I\\\${top_srcdir}/modules/codec/loader])
4223     VLC_ADD_LIBS([dmo quicktime realvideo],[\\\${top_builddir}/modules/codec/loader/libloader.la])
4224     VLC_ADD_CPPFLAGS([realvideo], [-DLOADER])
4225     VLC_ADD_LIBS([dmo quicktime], [-lpthread])
4226   ])
4227
4228 EXTEND_HELP_STRING([Components:])
4229
4230 dnl
4231 dnl  the VLC binary
4232 dnl
4233 AC_ARG_ENABLE(vlc,
4234   [  --enable-vlc            build the VLC media player (default enabled)])
4235 AM_CONDITIONAL(BUILD_VLC, [test "${enable_vlc}" != "no"])
4236
4237 AC_ARG_ENABLE(macosx-vlc-app,
4238   [  --enable-macosx-vlc-app build the VLC media player (default enabled on Mac OS X)])
4239 AM_CONDITIONAL(BUILD_MACOSX_VLC_APP, [test "${enable_macosx_vlc_app}" != "no" &&
4240     (test "${SYS}" = "darwin" || test "${enable_macosx_vlc_app}" = "yes") ])
4241
4242 dnl
4243 dnl  Stuff used by the program
4244 dnl
4245 VERSION_MESSAGE="${VERSION} ${CODENAME}"
4246 COPYRIGHT_MESSAGE="Copyright © ${COPYRIGHT_YEARS} the VideoLAN team"
4247 AC_DEFINE_UNQUOTED(VERSION_MESSAGE, "${VERSION_MESSAGE}", [Simple version string])
4248 AC_DEFINE_UNQUOTED(COPYRIGHT_MESSAGE, "${COPYRIGHT_MESSAGE}", [Copyright string])
4249 AC_DEFINE_UNQUOTED(COPYRIGHT_YEARS, "${COPYRIGHT_YEARS}", [The copyright years])
4250 AC_DEFINE_UNQUOTED(CONFIGURE_LINE, "${CONFIGURE_LINE}", [The ./configure command line])
4251 AC_DEFINE_UNQUOTED(PACKAGE_VERSION_MAJOR,${VERSION_MAJOR}, [version major number])
4252 AC_DEFINE_UNQUOTED(PACKAGE_VERSION_MINOR,${VERSION_MINOR}, [version minor number])
4253 AC_DEFINE_UNQUOTED(PACKAGE_VERSION_REVISION,${VERSION_REVISION}, [version revision number])
4254 AC_DEFINE_UNQUOTED(PACKAGE_VERSION_EXTRA,${VERSION_EXTRA}, [version extra number])
4255 AC_DEFINE_UNQUOTED(PACKAGE_VERSION_DEV,"${VERSION_DEV}", [version development string])
4256 AC_SUBST(COPYRIGHT_MESSAGE)
4257 AC_SUBST(VERSION_MESSAGE)
4258 AC_SUBST(VERSION_MAJOR)
4259 AC_SUBST(VERSION_MINOR)
4260 AC_SUBST(VERSION_REVISION)
4261 AC_SUBST(VERSION_EXTRA)
4262 AC_SUBST(COPYRIGHT_YEARS)
4263 AC_DEFINE_UNQUOTED(VLC_COMPILE_BY, "`whoami`", [user who ran configure])
4264 AC_DEFINE_UNQUOTED(VLC_COMPILE_HOST, "`hostname -f 2>/dev/null || hostname`", [host which ran configure])
4265 AC_DEFINE_UNQUOTED(VLC_COMPILER, "`$CC -v 2>&1 | tail -n 1`", [compiler])
4266 dnl
4267 dnl  Handle substvars that use $(top_srcdir)
4268 dnl
4269 CPPFLAGS_save="-I\$(top_srcdir)/include -I\$(top_builddir)/include ${CPPFLAGS_save}"
4270
4271 dnl
4272 dnl  Restore *FLAGS
4273 dnl
4274 VLC_RESTORE_FLAGS
4275
4276 dnl
4277 dnl Sort the modules list
4278 dnl
4279 PLUGINS=$( (for i in `echo $PLUGINS`; do echo $i; done)|sort|xargs )
4280
4281 dnl
4282 dnl  Configuration is finished
4283 dnl
4284 AC_SUBST(SYS)
4285 AC_SUBST(ARCH)
4286 AC_SUBST(ALIASES)
4287 AC_SUBST(ASM)
4288 AC_SUBST(MOC)
4289 AC_SUBST(RCC)
4290 AC_SUBST(UIC)
4291 AC_SUBST(WINDRES)
4292 AC_SUBST(WINE_SDK_PATH)
4293 AC_SUBST(LIBEXT)
4294 AC_SUBST(AM_CPPFLAGS)
4295 AC_SUBST(MACOSX_DEPLOYMENT_TARGET)
4296 AC_SUBST(FILE_LIBVLCCORE_DLL)
4297 AC_SUBST(FILE_LIBVLC_DLL)
4298
4299 AC_CONFIG_FILES([
4300   Makefile
4301   doc/Makefile
4302   modules/Makefile
4303   m4/Makefile
4304   po/Makefile.in
4305   share/Makefile
4306   compat/Makefile
4307   src/Makefile
4308   src/test/Makefile
4309   lib/Makefile
4310   bin/Makefile
4311   test/Makefile
4312   modules/access/Makefile
4313   modules/access/bd/Makefile
4314   modules/access/dshow/Makefile
4315   modules/access/mms/Makefile
4316   modules/access/rtp/Makefile
4317   modules/access/rtsp/Makefile
4318   modules/access/vcd/Makefile
4319   modules/access/vcdx/Makefile
4320   modules/access/screen/Makefile
4321   modules/access/zip/Makefile
4322   modules/access/zip/unzip/Makefile
4323   modules/access_output/Makefile
4324   modules/audio_filter/Makefile
4325   modules/audio_mixer/Makefile
4326   modules/audio_output/Makefile
4327   modules/codec/Makefile
4328   modules/codec/avcodec/Makefile
4329   modules/codec/dmo/Makefile
4330   modules/codec/loader/Makefile
4331   modules/codec/omxil/Makefile
4332   modules/codec/shine/Makefile
4333   modules/codec/spudec/Makefile
4334   modules/codec/wmafixed/Makefile
4335   modules/control/Makefile
4336   modules/control/dbus/Makefile
4337   modules/control/globalhotkeys/Makefile
4338   modules/demux/Makefile
4339   modules/demux/asf/Makefile
4340   modules/demux/avformat/Makefile
4341   modules/demux/avi/Makefile
4342   modules/demux/mkv/Makefile
4343   modules/demux/mp4/Makefile
4344   modules/demux/mpeg/Makefile
4345   modules/demux/playlist/Makefile
4346   modules/gui/Makefile
4347   modules/gui/macosx/Makefile
4348   modules/gui/hildon/Makefile
4349   modules/gui/minimal_macosx/Makefile
4350   modules/gui/macosx_dialog_provider/Makefile
4351   modules/gui/qt4/Makefile
4352   modules/gui/skins2/Makefile
4353   modules/lua/Makefile
4354   modules/meta_engine/Makefile
4355   modules/misc/Makefile
4356   modules/misc/playlist/Makefile
4357   modules/misc/osd/Makefile
4358   modules/misc/stats/Makefile
4359   modules/media_library/Makefile
4360   modules/mux/Makefile
4361   modules/mux/mpeg/Makefile
4362   modules/notify/Makefile
4363   modules/packetizer/Makefile
4364   modules/services_discovery/Makefile
4365   modules/stream_filter/Makefile
4366   modules/stream_filter/dash/Makefile
4367   modules/stream_out/Makefile
4368   modules/stream_out/transcode/Makefile
4369   modules/text_renderer/Makefile
4370   modules/video_chroma/Makefile
4371   modules/video_filter/Makefile
4372   modules/video_filter/dynamicoverlay/Makefile
4373   modules/video_output/Makefile
4374   modules/video_output/msw/Makefile
4375   modules/visualization/Makefile
4376   modules/visualization/visual/Makefile
4377   modules/mmx/Makefile
4378   modules/mmxext/Makefile
4379   modules/3dnow/Makefile
4380   modules/sse2/Makefile
4381   modules/altivec/Makefile
4382   modules/arm_neon/Makefile
4383 ])
4384
4385 AM_COND_IF([HAVE_WIN32], [
4386   AC_CONFIG_FILES([
4387     extras/package/win32/spad.nsi
4388     extras/package/win32/vlc.win32.nsi
4389   ])
4390 ])
4391
4392 AM_COND_IF([HAVE_DARWIN], [
4393   AC_CONFIG_FILES([
4394     extras/package/macosx/Info.plist
4395     extras/package/macosx/Resources/English.lproj/InfoPlist.strings
4396   ])
4397 ])
4398
4399 dnl Generate makefiles
4400 AC_OUTPUT
4401
4402 dnl Do we have to use make or gmake ?
4403 USE_MAKE_OR_GMAKE=`case "${SYS}" in openbsd*) echo "gmake";; *) echo "make";; esac`
4404 dnl Shortcut to nice compile message
4405 rm -f compile
4406 if test -n $SHELL; then
4407   SHELL=${CONFIG_SHELL-/bin/sh}
4408 fi
4409 echo '#! '$SHELL >compile
4410 echo rm -f .error\$\$ >>compile
4411 echo ERROR=0 >>compile
4412 echo export PATH=$PATH LANG=C >>compile
4413 echo "($USE_MAKE_OR_GMAKE V=1 \$@ 2>&1 || touch .error\$\$)| \\" >>compile
4414 echo '`sed -ne "s/^top_srcdir *= *//p" < Makefile`/extras/buildsystem/make.pl' >>compile
4415 echo test -f .error\$\$ \&\& ERROR=1 >>compile
4416 echo rm -f .error\$\$ >>compile
4417 echo exit \$ERROR >>compile
4418 chmod a+x compile
4419
4420 printf "
4421 libvlc configuration
4422 --------------------
4423 version               : ${VERSION}
4424 system                : ${SYS}
4425 architecture          : ${ARCH}
4426 build flavour         : "
4427 test "${enable_optimizations}" != "no" && printf ${enable_optimizations}
4428 echo ""
4429 if test "${enable_vlc}" != "no"; then
4430 echo "vlc aliases           :${ALIASES}"
4431 else
4432 echo "build vlc executable  : no"
4433 fi
4434 echo "
4435 To build vlc and its plugins, type \`./compile' or \`$USE_MAKE_OR_GMAKE'."