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