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