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