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