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