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