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