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