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