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