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