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