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