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