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