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