configure: do not add -fvisibility=hidden flag on OS/2
[vlc.git] / configure.ac
blob6ee2a6b86aed956c77fcdcff78b2bad166e1c8a1
1 dnl Autoconf settings for vlc
3 AC_COPYRIGHT([Copyright 2002-2013 VLC authors and VideoLAN])
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
12 PKGDIR="vlc"
13 AC_SUBST(PKGDIR)
15 CONFIGURE_LINE="`echo "$0 $ac_configure_args" | sed -e 's/\\\/\\\\\\\/g'`"
16 CODENAME="Rincewind"
17 COPYRIGHT_YEARS="1996-2013"
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
27 AM_INIT_AUTOMAKE(tar-ustar color-tests foreign)
28 AC_CONFIG_HEADERS([config.h])
30 # Disable with "./configure --disable-silent-rules" or "make V=1"
31 AM_SILENT_RULES([yes])
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
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)
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>.])
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
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], :)
77 dnl Check for compiler properties
78 AC_C_CONST
79 AC_C_INLINE
80 AC_C_RESTRICT
82 dnl Extend the --help string at the current spot.
83 AC_DEFUN([EXTEND_HELP_STRING], [m4_divert_once([HELP_ENABLE], [$1])])
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])
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*)
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         ac_cv_c_bigendian="no"
147         ac_cv_c_attribute_packed="no"
148       ;;
149     esac
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([motion rotate], [-Wl,-framework,IOKit,-framework,CoreFoundation])
158     VLC_ADD_LIBS([libvlc vlc],[-Wl,-undefined,dynamic_lookup,-framework,AppKit])
159     VLC_ADD_LIBS([avcodec access_avio swscale postproc i420_rgb_mmx x264 x26410b],[-Wl,-read_only_relocs,suppress])
160     VLC_ADD_CFLAGS([motion rotate],[-fconstant-cfstrings])
161     VLC_ADD_LIBS([libvlccore],[-Wl,-framework,CoreFoundation])
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])],)
174     dnl
175     dnl  Handle Mac OS X SDK flags
176     dnl
177     AC_ARG_WITH(macosx-sdk,
178       [AS_HELP_STRING([--with-macosx-sdk=DIR],
179         [compile using the SDK in DIR])])
180     if test "${with_macosx_sdk}" != "" ; then
181         test ! -d "${with_macosx_sdk}" && AC_MSG_ERROR([SDK "${with_macosx_sdk}" not found])
182         CPP="${CPP} -isysroot ${with_macosx_sdk}"
183         CC="${CC} -isysroot ${with_macosx_sdk}"
184         CXX="${CXX} -isysroot ${with_macosx_sdk}"
185         OBJC="${OBJC} -isysroot ${with_macosx_sdk}"
186         LD="${LD} -syslibroot ${with_macosx_sdk}"
187     fi
188     AC_ARG_WITH(macosx-version-min,
189       [AS_HELP_STRING([--with-macosx-version-min=VERSION],
190         [compile for Mac OS X VERSION and above])])
191     if test "${with_macosx_version_min}" != "" ; then
192         MACOSX_DEPLOYMENT_TARGET=${with_macosx_version_min}
193         CPP="${CPP} -mmacosx-version-min=${with_macosx_version_min}"
194         CC="${CC} -mmacosx-version-min=${with_macosx_version_min}"
195         CXX="${CXX} -mmacosx-version-min=${with_macosx_version_min}"
196         OBJC="${OBJC} -mmacosx-version-min=${with_macosx_version_min}"
197         LD="${LD} -mmacosx_version_min=${with_macosx_version_min}"
198         CFLAGS="${CFLAGS} -DMACOSX_DEPLOYMENT_TARGET=${with_macosx_version_min}"
199         CXXFLAGS="${CXXFLAGS} -DMACOSX_DEPLOYMENT_TARGET=${with_macosx_version_min}"
200         OBJCFLAGS="${OBJCFLAGS} -DMACOSX_DEPLOYMENT_TARGET=${with_macosx_version_min}"
201         export MACOSX_DEPLOYMENT_TARGET
202     fi
203     ;;
204   *mingw32* | *cygwin* | *wince* | *mingwce*)
205     AC_CHECK_TOOL(WINDRES, windres, :)
206     AC_CHECK_TOOL(OBJCOPY, objcopy, :)
207     AH_TOP([#if defined(WIN32) && !defined(_WIN32_WINNT)])
208     AH_TOP([# define _WIN32_WINNT 0x0502 /* Windows XP SP2 */])
209     AH_TOP([#endif])
210     AC_DEFINE([_WIN32_IE], 0x0600, [Define to '0x0600' for IE 6.0 (and shell) APIs.])
211     AC_DEFINE([_UNICODE], [1], [Define to 1 for Unicode (Wide Chars) APIs.])
212     AC_DEFINE([UNICODE], [1], [Define to 1 for Unicode (Wide Chars) APIs.])
214     case "${host_os}" in
215       *mingw32*)
216         SYS=mingw32
217         ;;
218       *cygwin*)
219         dnl Check if we are using the mno-cygwin mode in which case we are
220         dnl actually dealing with a mingw32 compiler.
221         AC_EGREP_CPP(yes,
222             [#ifdef WIN32
223              yes
224              #endif],
225             SYS=mingw32, AC_MSG_ERROR([VLC requires -mno-cygwin]))
226         ;;
227     esac
229     if test "${SYS}" = "mingw32"; then
230         VLC_ADD_LIBS([libvlccore],[-lwinmm])
231         VLC_ADD_LDFLAGS([vlc],[-mwindows])
232         VLC_ADD_LIBS([win32text],[-lgdi32])
233         VLC_ADD_LIBS([vcdx],[-lwinmm])
234         AC_CHECK_PROGS(U2D, [unix2dos todos], unix2dos)
235         ac_default_prefix="`pwd`/_win32"
236         DESTDIR="`pwd`/_win32/"
238         dnl
239         dnl NSIS Installer prefix and WIN64
240         dnl
241         case "${host}" in
242             amd64*|x86_64*)
243                 HAVE_WIN64="1"
244                 PROGRAMFILES="PROGRAMFILES64"
245             ;;
246             *)
247                 PROGRAMFILES="PROGRAMFILES"
248             ;;
249         esac
250         AC_SUBST(PROGRAMFILES)
252     fi
253     ;;
254   *nto*)
255     SYS=nto
256     ;;
257   solaris*)
258     SYS=solaris
259     ;;
260   hpux*)
261     SYS=hpux
262     ;;
263   symbian*)
264     SYS=symbian
265     ;;
266   *os2*)
267     SYS=os2
268     LDFLAGS="${LDFLAGS} -Zomf -Zbin-files -Zargs-wild"
269     ;;
270   *)
271     SYS="${host_os}"
272     ;;
273 esac
274 AM_CONDITIONAL(HAVE_DARWIN,  test "${SYS}" = "darwin")
275 AM_CONDITIONAL(HAVE_LINUX,   test "${SYS}" = "linux")
276 AM_CONDITIONAL(HAVE_OS2,     test "${SYS}" = "os2")
277 AM_CONDITIONAL(HAVE_WIN32,   test "${SYS}" = "mingw32")
278 AM_CONDITIONAL(HAVE_WIN64,   test "${HAVE_WIN64}" = "1")
279 AM_CONDITIONAL(HAVE_SYMBIAN, test "${SYS}" = "symbian")
282 dnl Sadly autoconf does not think about testing foo.exe when ask to test
283 dnl for program foo on win32
284 case "${build_os}" in
285     cygwin|msys)
286         ac_executable_extensions=".exe"
287     ;;
288     *)
289     ;;
290 esac
292 dnl Android is linux, but a bit different
293 AS_IF([test "$SYS" = linux],[
294     AC_MSG_CHECKING([for an Android system])
295     AC_PREPROC_IFELSE([AC_LANG_PROGRAM(
296         [[#ifndef __ANDROID__
297          # error Not Android
298          #endif
299         ]],[[;]])
300     ],[
301       HAVE_ANDROID="1"
302       AC_MSG_RESULT([yes])
303     ],[
304       AC_MSG_RESULT([no])
305     ])
307 AM_CONDITIONAL(HAVE_ANDROID, test "${HAVE_ANDROID}" = "1")
311 dnl  Check for the contrib directory
313 AC_ARG_WITH(contrib,
314   [AS_HELP_STRING([--with-contrib[=DIR]],
315     [search for 3rd party libraries in DIR/include and DIR/lib])
317 AC_MSG_CHECKING([for 3rd party libraries path])
318 AS_IF([test -z "${with_contrib}" || test "${with_contrib}" = "yes"], [
319   CONTRIB_DIR="${srcdir}/contrib/${host}"
320   AS_IF([test ! -d "${CONTRIB_DIR}"], [
321     echo "${CONTRIB_DIR} not found" >&AS_MESSAGE_LOG_FD
322     CONTRIB_DIR="${srcdir}/contrib/`$CC -dumpmachine`"
323     AS_IF([test ! -d "${CONTRIB_DIR}"], [
324       echo "${CONTRIB_DIR} not found" >&AS_MESSAGE_LOG_FD
325       CONTRIB_DIR="${srcdir}/extras/contrib/hosts/${host}"
326       AS_IF([test ! -d "${CONTRIB_DIR}"], [
327         echo "${CONTRIB_DIR} not found" >&AS_MESSAGE_LOG_FD
328         CONTRIB_DIR="${srcdir}/extras/contrib/hosts/`$CC -dumpmachine`"
329         AS_IF([test ! -d "${CONTRIB_DIR}"], [
330           echo "${CONTRIB_DIR} not found" >&AS_MESSAGE_LOG_FD
331           CONTRIB_DIR=""
332           AC_MSG_RESULT([not found])
333         ])
334       ])
335     ])
336   ])
337 ], [
338   AS_IF([test "${with_contrib}" != "no"], [
339     CONTRIB_DIR="${with_contrib}"
340   ], [
341     CONTRIB_DIR=""
342     AC_MSG_RESULT([disabled])
343   ])
345 AS_IF([test -n "${CONTRIB_DIR}"], [
346   AS_IF([test -d "${CONTRIB_DIR}/lib"],[
347     CONTRIB_DIR=`cd "${CONTRIB_DIR}" && pwd`
348   ], [
349     echo "${CONTRIB_DIR}/lib not found" >&AS_MESSAGE_LOG_FD
350     CONTRIB_DIR=""
351     AC_MSG_RESULT([not usable])
352   ])
355 AS_IF([test -n "${CONTRIB_DIR}"], [
356   AC_MSG_RESULT([${CONTRIB_DIR}])
357   export PATH=${CONTRIB_DIR}/bin:$PATH
358   CPPFLAGS="${CPPFLAGS} -I${CONTRIB_DIR}/include"
359   CFLAGS="${CFLAGS} -I${CONTRIB_DIR}/include"
360   CXXFLAGS="${CXXFLAGS} -I${CONTRIB_DIR}/include"
361   OBJCFLAGS="${OBJCFLAGS} -I${CONTRIB_DIR}/include"
362   AS_IF([test "$build" = "$host" -o "$PKG_CONFIG_LIBDIR"], [
363     export PKG_CONFIG_PATH="${CONTRIB_DIR}/lib/pkgconfig:$PKG_CONFIG_PATH"
364   ], [
365     export PKG_CONFIG_LIBDIR="${CONTRIB_DIR}/lib/pkgconfig"
366   ])
367   LDFLAGS="${LDFLAGS} -L${CONTRIB_DIR}/lib"
369   AS_IF([test "${SYS}" = "darwin"], [
370     export LD_LIBRARY_PATH="${CONTRIB_DIR}/lib:$LD_LIBRARY_PATH"
371     export DYLD_LIBRARY_PATH="${CONTRIB_DIR}/lib:$DYLD_LIBRARY_PATH"
372   ])
373 ], [
374   AS_IF([test -n "${with_contrib}" && test "${with_contrib}" != "no"], [
375     AC_MSG_ERROR([Third party libraries not found!])
376   ])
378 AC_SUBST(CONTRIB_DIR)
381 dnl  Libtool
382 dnl  It's very bad, but our former custom system was worst
383 dnl  -- Courmisch
386 dnl override platform specific check for dependent libraries
387 dnl otherwise libtool linking of shared libraries will
388 dnl fail on anything other than pass_all.
389 AC_CACHE_VAL(lt_cv_deplibs_check_method,
390     [lt_cv_deplibs_check_method=pass_all])
392 LT_INIT([dlopen win32-dll shared disable-static])
393 LT_LANG([C++])
394 LT_LANG([Windows Resource])
396 DOLT
398 m4_undefine([AC_DEPLIBS_CHECK_METHOD])
399 m4_defun([AC_DEPLIBS_CHECK_METHOD],[])
401 lt_cv_deplibs_check_method=pass_all
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.])
408 dnl Gettext stuff
410 AM_GNU_GETTEXT_VERSION([0.18.1])
411 AM_GNU_GETTEXT([external], [need-ngettext])
414 dnl Iconv stuff
416 AM_ICONV
419 dnl checks for mingw
420 AS_IF([test "${SYS}" = "mingw32"], [
421 dnl Check for broken versions of mingw-runtime compatability library
422     AC_MSG_CHECKING(for broken mingw-runtime)
423     AC_PREPROC_IFELSE([AC_LANG_SOURCE([
424 #include <_mingw.h>
425 #if defined(__MINGW64_VERSION_MAJOR)
426 # if __MINGW64_VERSION_MAJOR < 3
427 #  error Attempting to use mingw-runtime with broken vsnprintf and direct2d support
428 # endif
429 #elif __MINGW32_MAJOR_VERSION == 3 && __MINGW32_MINOR_VERSION < 15
430 # error Attempting to use mingw-runtime with broken vsnprintf support
431 #endif
432     ])], [
433         AC_MSG_RESULT([ok])
434     ], [
435         AC_MSG_RESULT([present])
436         AC_MSG_ERROR([LibVLC requires mingw-runtime version 3.15 or higher, or mingw-w64 version 3.0 or higher!])
437     ])
438     dnl force use of mingw provided c99 *printf over msvcrt
439     CPPFLAGS="${CPPFLAGS} -D__USE_MINGW_ANSI_STDIO=1"
441 dnl Check for the need to include the mingwex lib for mingw32
442     AC_CHECK_LIB(mingwex,opendir,
443         AC_CHECK_LIB(mingw32,opendir,,
444             [VLC_ADD_LIBS([libvlccore],[-lmingwex])])
445     )
447 dnl Check for fnative-struct or mms-bitfields support for mingw32
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
465 AC_ARG_ENABLE(winstore_app,
466      AS_HELP_STRING([--enable-winstore-app],
467                     [Build targetted for Windows Store apps (default disabled)]))
469 AS_IF([test "${SYS}" = "mingw32"], [
470     AS_IF([test "${enable_winstore_app}" == "yes"], [
471        AC_DEFINE(WINAPI_FAMILY_APP, 1, [Define if you want to build for Windows Store apps])])
472     ])
476 dnl Buggy glibc prevention. Purposedly not cached.
477 dnl See sourceware.org bugs 5058 and 5443.
478 dnl Ubuntu alone has 20 bug numbers for this...
480 AC_MSG_CHECKING(for buggy GNU/libc versions)
481 AC_PREPROC_IFELSE([AC_LANG_SOURCE([
482 #include <limits.h>
483 #if defined (__GLIBC__) && (__GLIBC__ == 2) \
484   && (__GLIBC_MINOR__ >= 5) && (__GLIBC_MINOR__ <= 7)
485 # error GNU/libc with dcgettext killer bug!
486 #endif
487 ])], [
488   AC_MSG_RESULT([not present])
489 ], [
490   AC_MSG_RESULT([found])
491   AS_IF([test "x${enable_nls}" != "xno"], [
492     AC_MSG_ERROR([Buggy GNU/libc (version 2.5 - 2.7) present. VLC would crash; there is no viable
493 work-around for this. Check with your distribution vendor on how to update the
494 glibc run-time. Alternatively, build with --disable-nls.])
495   ])
498 dnl Plugin compilation stuff
500 VLC_LIBRARY_SUFFIX
502 dnl Check for system libs needed
503 need_libc=false
505 dnl Check for usual libc functions
506 AC_CHECK_DECLS([nanosleep],,,[#include <time.h>])
507 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])
508 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 strndup strnlen strsep strtof strtok_r strtoll swab tdestroy strverscmp])
509 AC_CHECK_FUNCS(fdatasync,,
510   [AC_DEFINE(fdatasync, fsync, [Alias fdatasync() to fsync() if missing.])
513 dnl mingw64 implements those as static inline, not functions with C linkage
514 AC_LINK_IFELSE([
515     AC_LANG_PROGRAM([#include <stdio.h>], [
516         char *c;
517         if (asprintf(&c, "%s %d", "string", 1) == -1)
518             c = NULL;
519     ])],[AC_DEFINE([HAVE_ASPRINTF],[1],[Define to 1 if you have asprintf function])],[AC_LIBOBJ([asprintf])])
520 AC_LINK_IFELSE([
521     AC_LANG_PROGRAM([#include <stdio.h>
522                      #include <stdarg.h>], [
523         char *c;
524         va_list ap;
525         if (vasprintf(&c, "%s %d", ap) == -1)
526             c = NULL;
527     ])],[AC_DEFINE([HAVE_VASPRINTF],[1],[Define to 1 if you have asprintf function])],[AC_LIBOBJ([vasprintf])])
529 dnl C11 static_assert()
530 AC_MSG_CHECKING([for static_assert in assert.h])
531 AC_LINK_IFELSE([AC_LANG_PROGRAM([#include <assert.h>], [
532 static_assert(1, "The impossible happened.");
533 ])], [
534   AC_MSG_RESULT([yes])
535   AC_DEFINE([HAVE_STATIC_ASSERT], [1], [Define to 1 if <assert.h> defines static_assert.])
536 ], [
537   AC_MSG_RESULT([no])
540 # Windows CE does not have strcoll()
541 AC_FUNC_STRCOLL
543 dnl Check for non-standard system calls
544 case "$SYS" in
545   "linux")
546     AC_CHECK_FUNCS([accept4 pipe2 eventfd vmsplice sched_getaffinity])
547     ;;
548   "mingw32")
549     AC_CHECK_FUNCS([_lock_file])
550     ;;
551 esac
553 AH_BOTTOM([#include <vlc_fixups.h>])
555 dnl Check for struct pollfd
556 AC_CHECK_TYPES([struct pollfd],,,
557 [#include <sys/types.h>
558 #if HAVE_POLL
559 # include <poll.h>
560 #elif defined (WIN32)
561 # include <winsock2.h>
562 #endif
565 dnl Checks for socket stuff
566 VLC_SAVE_FLAGS
567 SOCKET_LIBS=""
568 AC_SEARCH_LIBS(connect, [socket], [
569   AS_IF([test "$ac_cv_search_connect" != "none required"], [
570     SOCKET_LIBS="$ac_cv_search_connect"
571   ])
572 ], [
573   AS_IF([test "${SYS}" = "mingw32"], [
574     SOCKET_LIBS="-lws2_32"
575   ])
578 AC_SEARCH_LIBS([getaddrinfo], [nsl], [
579  AS_IF([test "$ac_cv_search_getaddrinfo" != "none required"], [
580     SOCKET_LIBS="$ac_cv_search_getaddrinfo $SOCKET_LIBS"
581   ])
582 ],, [${SOCKET_LIBS}])
584 AC_CHECK_FUNCS([if_nameindex if_nametoindex])
585 VLC_RESTORE_FLAGS
587 AS_IF([test -n "$SOCKET_LIBS"], [
588   VLC_ADD_LIBS([access_http access_udp access_tcp access_ftp access_rtmp access_output_udp access_output_shout sap stream_out_standard stream_out_rtp stream_out_raop vod_rtsp rtp oldrc netsync gnutls flac ts audioscrobbler lua remoteosd zvbi audiobargraph_a],[${SOCKET_LIBS}])
590 AC_SUBST(SOCKET_LIBS)
592 dnl Check for socklen_t
593 AH_TEMPLATE(socklen_t, [Define to `int' if <sys/socket.h> does not define.])
594 AC_CACHE_CHECK([for socklen_t in sys/socket.h], dnl ` (fix VIM syntax highlight
595 ac_cv_type_socklen_t,
596 [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([
597 [#include <sys/types.h>
598 #ifdef WIN32
599 # include <winsock2.h>
600 # include <ws2tcpip.h>
601 #else
602 # include <sys/socket.h>
603 #endif]], [[socklen_t len; len = 0;]])],
604 ac_cv_type_socklen_t=yes,
605 ac_cv_type_socklen_t=no)])
606 AS_IF([test "$ac_cv_type_socklen_t" = no],
607  [AC_DEFINE(socklen_t, int)])
609 dnl Check for struct sockaddr_storage
610 AH_TEMPLATE(sockaddr_storage, [Define to `sockaddr' if <sys/socket.h> does not define.]) dnl ` (fix VIM syntax highlight
611 AH_TEMPLATE(ss_family, [Define to `sa_family' if <sys/socket.h> does not define.]) dnl ` (fix VIM syntax highlight
612 AC_CACHE_CHECK([for struct sockaddr_storage], ac_cv_struct_sockaddr_storage,
613   [AC_TRY_COMPILE(
614     [#include <sys/types.h>
615      #if defined( WIN32 )
616      # include <winsock2.h>
617      #else
618      # include <sys/socket.h>
619      #endif], [struct sockaddr_storage addr;],
620      ac_cv_struct_sockaddr_storage=yes,
621      ac_cv_struct_sockaddr_storage=no)])
622 AS_IF([test "${ac_cv_struct_sockaddr_storage}" = no], [
623   AC_DEFINE(sockaddr_storage, sockaddr)
624   AC_DEFINE(ss_family, sa_family)
627 dnl FreeBSD has a gnugetopt library for this:
628 GNUGETOPT_LIBS=""
629 AC_CHECK_FUNC(getopt_long,, [
630   AC_CHECK_LIB([gnugetopt],[getopt_long], [
631     GNUGETOPT_LIBS="-lgnugetopt"
632   ])
634 AC_SUBST(GNUGETOPT_LIBS)
636 AC_CHECK_LIB(m,cos,[
637   VLC_ADD_LIBS([adjust wave ripple psychedelic gradient a52tofloat32 dtstofloat32 x264 goom panoramix rotate noise grain scene kate flac lua chorus_flanger freetype avcodec access_avio swscale postproc i420_rgb faad twolame equalizer spatializer param_eq samplerate freetype mpc dmo quicktime qt4 compressor headphone_channel_mixer normvol audiobargraph_a speex opus mono colorthres extract ball access_imem hotkeys mosaic gaussianblur x26410b hqdn3d anaglyph oldrc ncurses],[-lm])
638   LIBM="-lm"
639 ], [
640   LIBM=""
642 AC_SUBST(LIBM)
644 AC_CHECK_LIB(m,lrintf, [
645   AC_DEFINE(HAVE_LRINTF, 1, [Define to 1 if you have the lrintf function])
646   VLC_ADD_LIBS([skins2],[-lm])
649 dnl Check for dynamic plugins
650 LIBDL=""
651 have_dynamic_objects="no"
652 VLC_SAVE_FLAGS
653 AC_SEARCH_LIBS(dlopen, [dl svld], [
654   AS_IF([test "$ac_cv_search_dlopen" != "none required"], [
655     LIBDL="$ac_cv_search_dlopen"
656   ])
657   have_dynamic_objects="yes"
659 VLC_RESTORE_FLAGS
661 # Windows
662 AS_IF([test "${SYS}" = "mingw32"], [
663   LIBDL=""
664   have_dynamic_objects="yes" #assume we can use shared objects
667 AS_IF([test "${enable_shared}" = "no"], [
668   have_dynamic_objects=no
670 AM_CONDITIONAL(HAVE_DYNAMIC_PLUGINS, [test "${have_dynamic_objects}" != "no"])
672 AC_SUBST(LIBDL)
673 VLC_ADD_LIBS([lua],[$LIBDL])
675 dnl Check for thread library
676 LIBPTHREAD=""
677 AS_IF([test "${SYS}" != "mingw32"], [
678   VLC_SAVE_FLAGS
679   LIBS=""
680   AC_SEARCH_LIBS(pthread_rwlock_init, pthread pthreads c_r, [
681     AS_IF([test "$ac_cv_search_pthread_rwlock_init" != "none required"], [
682       LIBPTHREAD="$ac_cv_search_pthread_rwlock_init"
683     ])
684   ])
685   VLC_RESTORE_FLAGS
687   AC_CHECK_LIB(rt, clock_nanosleep, [
688     VLC_ADD_LIBS([libvlccore],[-lrt])
689   ], [
690     AC_CHECK_FUNC(nanosleep,,[
691       AC_CHECK_LIB(rt,nanosleep, [
692         VLC_ADD_LIBS([libvlccore],[-lrt])
693       ], [
694         AC_CHECK_LIB(posix4,nanosleep, [
695           VLC_ADD_LIBS([libvlccore],[-lposix4])
696         ])
697       ])
698     ])
699     dnl HP/UX port
700     AC_CHECK_LIB(rt,sem_init, [VLC_ADD_LIBS([libvlccore],[-lrt])])
701   ])
703 AC_SUBST(LIBPTHREAD)
705 dnl Check for headers
706 AC_CHECK_HEADERS([search.h])
707 AC_CHECK_HEADERS(getopt.h locale.h xlocale.h)
708 AC_CHECK_HEADERS([sys/time.h sys/ioctl.h])
709 AC_CHECK_HEADERS([arpa/inet.h netinet/udplite.h sys/eventfd.h])
710 AC_CHECK_HEADERS([net/if.h], [], [],
711   [
712     #include <sys/types.h>
713     #include <sys/socket.h>
714   ])
715 AC_CHECK_HEADERS([sys/mount.h], [], [],
716   [
717     #include <sys/param.h>
718   ])
720 if test "${SYS}" != "mingw32"; then
721   AC_CHECK_HEADERS(machine/param.h sys/shm.h)
722   AC_CHECK_HEADERS([linux/version.h linux/dccp.h scsi/scsi.h linux/magic.h])
723   AC_CHECK_HEADERS(syslog.h mntent.h)
724 fi # end "${SYS}" != "mingw32"
726 dnl LP64 and LLP64 architectures had better define ssize_t by themselves...
727 AH_TEMPLATE(ssize_t, [Define to `int' if <stddef.h> does not define.]) dnl ` (fix VIM syntax highlight
728 AC_CHECK_TYPE(ssize_t,, [
729   AC_DEFINE(ssize_t, int)
732 dnl Check for threads library
733 if test "${SYS}" != "mingw32"; then
734   AC_CHECK_HEADERS(pthread.h)
735 fi # end "${SYS}" != "mingw32"
737 dnl It seems that autoconf detects pkg-config only during the first
738 dnl PKG_CHECK_MODULES from configure.ac - which makes sense. But in our case,
739 dnl it is nested within a conditional block, so it was not working right.
740 dnl Make PKG_CONFIG_PATH precious so that it appears in the help and get saved
741 AC_ARG_VAR(PKG_CONFIG_PATH,
742        [Paths where to find .pc not at the default location])
743 PKG_PROG_PKG_CONFIG()
745 dnl On some OS we need static linking
746 AS_IF([test -n "${PKG_CONFIG}" ],[
747     AS_IF([test "${SYS}" = "mingw32" -o "${SYS}" = "darwin" -o "${SYS}" = "os2" ],[
748         PKG_CONFIG="${PKG_CONFIG} --static"
749     ])
754 dnl Check for zlib.h and -lz along with system -lminizip if available
756 AC_CHECK_HEADERS(zlib.h, [ have_zlib=yes ], [ have_zlib=no ])
757 AM_CONDITIONAL(HAVE_ZLIB, [ test "${have_zlib}" = "yes" ])
758 if test "${have_zlib}" = "yes"
759 then
760   VLC_ADD_LIBS([access_http skins2 sap unzip zip],[-lz])
761   PKG_CHECK_MODULES([MINIZIP], [minizip] , [ have_minizip=yes ], [
762     AC_CHECK_HEADERS([unzip.h], [
763       have_minizip=yes
764       MINIZIP_LIBS="-lminizip -lz"
765     ], [
766       VLC_ADD_CPPFLAGS([skins2], [-I\\\$(top_srcdir)/modules/access/zip/unzip])
767       VLC_ADD_LIBS([skins2], [\\\$(top_builddir)/modules/access/libunzip.la])
768       have_minizip=no
769     ])
770   ])
771   VLC_ADD_CPPFLAGS([skins2],[$MINIZIP_CFLAGS])
772   VLC_ADD_LIBS([skins2],[$MINIZIP_LIBS])
774 AM_CONDITIONAL(HAVE_MINIZIP, [ test "${have_minizip}" = "yes" ])
778 dnl Domain name i18n support via GNU libidn
780 PKG_CHECK_MODULES([IDN], [libidn], [
781   have_libidn="yes"
782   AC_DEFINE([HAVE_IDN], 1, [Define to 1 if you have GNU libidn.])
783 ], [
784   have_libidn="no"
788 dnl Check for dbus
789 AC_ARG_ENABLE(dbus,
790   [AS_HELP_STRING([--enable-dbus],
791     [compile D-Bus message bus support (default enabled)])])
792 have_dbus="no"
793 AS_IF([test "${enable_dbus}" != "no"], [
794   PKG_CHECK_MODULES(DBUS, [dbus-1 >= 1.0.0], [
795     have_dbus="yes"
796   ], [
797     AS_IF([test -n "${enable_dbus}"], [
798       AC_MSG_ERROR([${DBUS_PKG_ERRORS}.])
799     ], [
800       AC_MSG_WARN([${DBUS_PKG_ERRORS}.])
801     ])
802   ])
804 AM_CONDITIONAL([HAVE_DBUS], [test "${have_dbus}" = "yes"])
806 dnl Check for ntohl, etc.
807 VLC_SAVE_FLAGS
808 CFLAGS="${CFLAGS} -Wall -Werror"
809 AC_CACHE_CHECK([for ntohl in sys/param.h],
810     [ac_cv_c_ntohl_sys_param_h],
811     [     AC_TRY_COMPILE([#include <sys/param.h>],
812         [int meuh; ntohl(meuh);],
813         ac_cv_c_ntohl_sys_param_h=yes, ac_cv_c_ntohl_sys_param_h=no)])
814 if test "${ac_cv_c_ntohl_sys_param_h}" != "no"; then
815     AC_DEFINE(NTOHL_IN_SYS_PARAM_H, 1, Define if <sys/param.h> defines ntohl.)
817 VLC_RESTORE_FLAGS
819 EXTEND_HELP_STRING([Optimization options:])
821 dnl  Compiler warnings
824 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])
825 RDC_PROG_CC_FLAGS([-pipe])
826 AC_LANG_PUSH([C++])
827 RDC_PROG_CXX_WFLAGS([all extra sign-compare undef pointer-arith volatile-register-var])
828 AC_LANG_POP([C++])
831 dnl  Debugging mode
833 AC_ARG_ENABLE(debug,
834   [AS_HELP_STRING([--enable-debug],
835     [build with run-time assertions (default disabled)])],,
836   [enable_debug="no"])
837 AH_TEMPLATE(NDEBUG,
838             [Define to 1 if debug code should NOT be compiled])
839 AS_IF([test "${enable_debug}" != "no"], [
840   AC_CHECK_HEADERS([valgrind/valgrind.h])
841 ], [
842   AC_DEFINE(NDEBUG)
846 dnl  Profiling
848 AC_ARG_ENABLE(gprof,
849   [AS_HELP_STRING([--enable-gprof],[profile with gprof (default disabled)])],,
850   [enable_gprof="no"])
851 AS_IF([test "${enable_gprof}" != "no"], [
852   CFLAGS="${CFLAGS} -pg"
853   CXXFLAGS="${CXXFLAGS} -pg"
854   OBJCFLAGS="${OBJCFLAGS} -pg"
855   LDFLAGS="${LDFLAGS} -pg"
858 AC_ARG_ENABLE(cprof,
859   [AS_HELP_STRING([--enable-cprof],[profile with cprof (default disabled)])],,
860   [enable_cprof="no"])
861 AS_IF([test "${enable_gprof}" != "no"], [
862   CFLAGS="${CFLAGS} -finstrument-functions"
863   CXXFLAGS="${CXXFLAGS} -finstrument-functions"
864   OBJCFLAGS="${OBJCFLAGS} -finstrument-functions"
865   LDFLAGS="${LDFLAGS} -finstrument-functions"
869 dnl  Test coverage
871 AC_ARG_ENABLE(coverage,
872   [AS_HELP_STRING([--enable-coverage],
873     [build for test coverage (default disabled)])],,
874   [enable_coverage="no"])
875 AS_IF([test "${enable_coverage}" != "no"], [
876   CFLAGS="-fprofile-arcs -ftest-coverage ${CFLAGS}"
877   CXXFLAGS="-fprofile-arcs -ftest-coverage ${CXXFLAGS}"
878   LDFLAGS="-lgcov ${LDFLAGS}"
881 AS_IF([test "${SYS}" != "mingw32" -a test "${SYS}" != "os2"], [
882   VLC_SAVE_FLAGS
883   CFLAGS="${CFLAGS} -fvisibility=hidden"
884   CXXFLAGS="${CXXFLAGS} -fvisibility=hidden"
885   OBJCFLAGS="${OBJCFLAGS} -fvisibility=hidden"
886   AC_CACHE_CHECK([if $CC accepts -fvisibility=hidden],
887                  [ac_cv_c_visibility_hidden], [
888     AC_COMPILE_IFELSE([AC_LANG_PROGRAM()], [
889       ac_cv_c_visibility_hidden=yes
890     ], [
891       ac_cv_c_visibility_hidden=no
892     ])
893   ])
894   AS_IF([test "${ac_cv_c_visibility_hidden}" = "no"], [VLC_RESTORE_FLAGS])
899 dnl  Enable/disable optimizations
901 AC_ARG_ENABLE(optimizations,
902   [AS_HELP_STRING([--disable-optimizations],
903     [disable compiler optimizations (default enabled)])],,
904   [enable_optimizations="yes"])
906 dnl Check for various optimization flags
907 AS_IF([test "${enable_optimizations}" != "no"], [
909   dnl -O4 and -O3 only in production builds
910   AS_IF([test "{enable_debug}" = "no"], [
911     VLC_SAVE_FLAGS
912     CFLAGS="${CFLAGS} -O4"
913     CXXFLAGS="${CXXFLAGS} -O4"
914     OBJCFLAGS="${OBJCFLAGS} -O4"
915     AC_CACHE_CHECK([if $CC accepts -O4], [ac_cv_c_o4], [
916       AC_COMPILE_IFELSE([AC_LANG_PROGRAM()], [
917         ac_cv_c_o4=yes
918       ], [
919         ac_cv_c_o4=no
920       ])
921     ])
922     AS_IF([test "${ac_cv_c_o4}" = "no"], [
923       VLC_RESTORE_FLAGS
924       CFLAGS="${CFLAGS} -O3"
925       CXXFLAGS="${CXXFLAGS} -O3"
926       OBJCFLAGS="${OBJCFLAGS} -O3"
927       AC_CACHE_CHECK([if $CC accepts -O3],  [ac_cv_c_o3], [
928         AC_COMPILE_IFELSE([AC_LANG_PROGRAM()], [
929           ac_cv_c_o3=yes
930         ], [
931           ac_cv_c_o3=no
932         ])
933       ])
934       AS_IF([test "${ac_cv_c_o3}" = "no"], [VLC_RESTORE_FLAGS])
935     ])
936   ])
938   dnl Check for -ffast-math
939   VLC_SAVE_FLAGS
940   CFLAGS="${CFLAGS} -ffast-math"
941   CXXFLAGS="${CXXFLAGS} -ffast-math"
942   OBJCFLAGS="${OBJCFLAGS} -ffast-math"
943   AC_CACHE_CHECK([if $CC accepts -ffast-math], [ac_cv_c_fast_math], [
944     AC_COMPILE_IFELSE([AC_LANG_PROGRAM()], [
945       ac_cv_c_fast_math=yes
946     ], [
947       ac_cv_c_fast_math=no
948     ])
949   ])
950   AS_IF([test "${ac_cv_c_fast_math}" = "no"], [VLC_RESTORE_FLAGS])
951   AH_BOTTOM([
952 #ifndef __FAST_MATH__
953 # pragma STDC FENV_ACCESS OFF
954 # pragma STDC FP_CONTRACT ON
955 #endif
958   dnl Check for -funroll-loops
959   VLC_SAVE_FLAGS
960   CFLAGS="${CFLAGS} -funroll-loops"
961   CXXFLAGS="${CXXFLAGS} -funroll-loops"
962   OBJCFLAGS="${OBJCFLAGS} -funroll-loops"
963   AC_CACHE_CHECK([if $CC accepts -funroll-loops], [ac_cv_c_unroll_loops], [
964     AC_COMPILE_IFELSE([AC_LANG_PROGRAM()], [
965       ac_cv_c_unroll_loops=yes
966     ], [
967       ac_cv_c_unroll_loops=no
968     ])
969   ])
970   AS_IF([test "${ac_cv_c_unroll_loops}" = "no"], [VLC_RESTORE_FLAGS])
972   AS_IF([test "$enable_debug" = "no"], [
973     dnl Check for -fomit-frame-pointer
974     VLC_SAVE_FLAGS
975     CFLAGS="${CFLAGS} -fomit-frame-pointer"
976     CXXFLAGS="${CXXFLAGS} -fomit-frame-pointer"
977     OBJCFLAGS="${OBJCFLAGS} -fomit-frame-pointer"
978     AC_CACHE_CHECK([if $CC accepts -fomit-frame-pointer],
979       [ac_cv_c_omit_frame_pointer], [
980       AC_COMPILE_IFELSE([AC_LANG_PROGRAM()], [
981         ac_cv_c_omit_frame_pointer=yes
982       ], [
983         ac_cv_c_omit_frame_pointer=no
984       ])
985     ])
986     AS_IF([test "${ac_cv_c_omit_frame_pointer}" = "no"], [VLC_RESTORE_FLAGS])
987   ])
990 dnl Check for Darwin plugin linking flags
991 AS_IF([test "${SYS}" = "darwin"], [
992   VLC_SAVE_FLAGS
993   CFLAGS="${CFLAGS} -bundle -undefined error"
994   AC_CACHE_CHECK([if $CC accepts -bundle -undefined error],
995     [ac_cv_ld_darwin], [
996     AC_COMPILE_IFELSE([AC_LANG_PROGRAM()], [
997       ac_cv_ld_darwin=yes
998     ], [
999       ac_cv_ld_darwin=no
1000     ])
1001   ])
1002   AS_IF([test "${ac_cv_ld_darwin}" != "no"], [
1003     VLC_ADD_LDFLAGS([plugin],[-bundle -undefined error])
1004   ])
1005   VLC_RESTORE_FLAGS
1008 dnl Checks for __attribute__(aligned()) directive
1009 VLC_SAVE_FLAGS
1010 CFLAGS="${CFLAGS} -Werror"
1011 AC_CACHE_CHECK([__attribute__ ((aligned ())) support],
1012     [ac_cv_c_attribute_aligned],
1013     [ac_cv_c_attribute_aligned=0
1014     for ac_cv_c_attr_align_try in 2 4 8 16 32 64; do
1015         AC_TRY_COMPILE([],
1016         [static char c __attribute__ ((aligned(${ac_cv_c_attr_align_try}))) = 0; return c;],
1017         [ac_cv_c_attribute_aligned="${ac_cv_c_attr_align_try}"])
1018     done])
1019 VLC_RESTORE_FLAGS
1020 if test "${ac_cv_c_attribute_aligned}" != "0"; then
1021     AC_DEFINE_UNQUOTED([ATTRIBUTE_ALIGNED_MAX],
1022         [${ac_cv_c_attribute_aligned}],[Maximum supported data alignment])
1025 dnl Check for __attribute__((packed))
1026 AC_CACHE_CHECK([for __attribute__((packed))],
1027   [ac_cv_c_attribute_packed],
1028   [ac_cv_c_attribute_packed=no
1029    AC_TRY_COMPILE(, [struct __attribute__((__packed__)) foo { int a; } b; (void)b;],
1030                     [ac_cv_c_attribute_packed=yes])])
1031 if test "${ac_cv_c_attribute_packed}" != "no"; then
1032   AC_DEFINE(HAVE_ATTRIBUTE_PACKED, 1, Support for __attribute__((packed)) for structs)
1036 dnl  Check the CPU
1038 case "${host_cpu}" in
1039   "")
1040     ARCH=unknown
1041     ;;
1042   *)
1043     ARCH="${host_cpu}"
1044     ;;
1045 esac
1047 dnl Check for backtrace() support
1048 AC_CHECK_HEADERS(execinfo.h)
1049 AC_CHECK_FUNCS(backtrace)
1052 dnl  default modules
1054 ALIASES="${ALIASES} cvlc rvlc"
1057 dnl  Accelerated modules
1060 dnl  Check for fully working MMX intrinsics
1061 dnl  We need support for -mmmx, we need <mmintrin.h>, and we also need a
1062 dnl  working compiler (http://gcc.gnu.org/bugzilla/show_bug.cgi?id=23963)
1063 AC_ARG_ENABLE(mmx,
1064   [AS_HELP_STRING([--disable-mmx],
1065     [disable MMX optimizations (default auto)])],,[
1066   case "${host_cpu}" in
1067     i?86|x86_64)
1068       enable_mmx="yes"
1069       ;;
1070     *)
1071       enable_mmx="no"
1072       ;;
1073   esac
1075 have_mmx="no"
1076 have_mmxext="no"
1077 AS_IF([test "${enable_mmx}" != "no"], [
1078   ARCH="${ARCH} mmx"
1079   VLC_SAVE_FLAGS
1080   CFLAGS="${CFLAGS} -mmmx"
1081   AC_CACHE_CHECK([if $CC groks MMX intrinsics], [ac_cv_c_mmx_intrinsics], [
1082     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([
1083 [#include <mmintrin.h>
1084 #include <stdint.h>
1085 uint64_t frobzor;]], [
1086 [__m64 a, b, c;
1087 a = b = c = (__m64)frobzor;
1088 a = _mm_slli_pi16(a, 3);
1089 a = _mm_adds_pi16(a, b);
1090 c = _mm_srli_pi16(c, 8);
1091 c = _mm_slli_pi16(c, 3);
1092 b = _mm_adds_pi16(b, c);
1093 a = _mm_unpacklo_pi8(a, b);
1094 frobzor = (uint64_t)a;]])], [
1095       ac_cv_c_mmx_intrinsics=yes
1096     ], [
1097       ac_cv_c_mmx_intrinsics=no
1098     ])
1099   ])
1100   VLC_RESTORE_FLAGS
1101   AS_IF([test "${ac_cv_c_mmx_intrinsics}" != "no"], [
1102     AC_DEFINE(HAVE_MMX_INTRINSICS, 1, [Define to 1 if MMX intrinsics are available.])
1103   ])
1105   VLC_SAVE_FLAGS
1106   CFLAGS="${CFLAGS} -mmmx"
1107   AC_CACHE_CHECK([if $CC groks MMX inline assembly], [ac_cv_mmx_inline], [
1108     AC_COMPILE_IFELSE([AC_LANG_PROGRAM(,[[
1109 void *p;
1110 asm volatile("packuswb %%mm1,%%mm2"::"r"(p):"mm1", "mm2");
1112     ], [
1113       ac_cv_mmx_inline=yes
1114     ], [
1115       ac_cv_mmx_inline=no
1116     ])
1117   ])
1118   AS_IF([test "${ac_cv_mmx_inline}" != "no"], [
1119     AC_DEFINE(CAN_COMPILE_MMX, 1, [Define to 1 inline MMX assembly is available.])
1120     have_mmx="yes"
1121   ])
1123   AC_CACHE_CHECK([if $CC groks MMX EXT inline assembly],
1124                  [ac_cv_mmxext_inline], [
1125     AC_COMPILE_IFELSE([AC_LANG_PROGRAM(,[[
1126 void *p;
1127 asm volatile("maskmovq %%mm1,%%mm2"::"r"(p):"mm1", "mm2");
1129     ], [
1130       ac_cv_mmxext_inline=yes
1131     ], [
1132       ac_cv_mmxext_inline=no
1133     ])
1134   ])
1135   VLC_RESTORE_FLAGS
1136   AS_IF([test "${ac_cv_mmxext_inline}" != "no"], [
1137     AC_DEFINE(CAN_COMPILE_MMXEXT, 1, [Define to 1 if MMX EXT inline assembly is available.])
1138     have_mmxext="yes"
1139   ])
1141 AM_CONDITIONAL([HAVE_MMX], [test "${have_mmx}" = "yes"])
1142 AM_CONDITIONAL([HAVE_MMXEXT], [test "${have_mmxext}" = "yes"])
1144 dnl  Check for fully workin SSE2 intrinsics
1145 dnl  We need support for -mmmx, we need <emmintrin.h>, and we also need a
1146 dnl  working compiler (http://gcc.gnu.org/bugzilla/show_bug.cgi?id=23963)
1147 AC_ARG_ENABLE(sse,
1148   [AS_HELP_STRING([--disable-sse],
1149     [disable SSE (1-4) optimizations (default auto)])],, [
1150   case "${host_cpu}" in
1151     i?86|x86_64)
1152       enable_sse=yes
1153       ;;
1154     *)
1155       enable_sse=no
1156       ;;
1157   esac
1159 have_sse2="no"
1160 AS_IF([test "${enable_sse}" != "no"], [
1161   ARCH="${ARCH} sse sse2"
1163   VLC_SAVE_FLAGS
1164   CFLAGS="${CFLAGS} -msse2"
1165   AC_CACHE_CHECK([if $CC groks SSE2 intrinsics], [ac_cv_c_sse2_intrinsics], [
1166     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([
1167 [#include <emmintrin.h>
1168 #include <stdint.h>
1169 uint64_t frobzor;]], [
1170 [__m128i a, b, c;
1171 a = b = c = _mm_set1_epi64((__m64)frobzor);
1172 a = _mm_slli_epi16(a, 3);
1173 a = _mm_adds_epi16(a, b);
1174 c = _mm_srli_epi16(c, 8);
1175 c = _mm_slli_epi16(c, 3);
1176 b = _mm_adds_epi16(b, c);
1177 a = _mm_unpacklo_epi8(a, b);
1178 frobzor = (uint64_t)_mm_movepi64_pi64(a);]])], [
1179       ac_cv_c_sse2_intrinsics=yes
1180     ], [
1181       ac_cv_c_sse2_intrinsics=no
1182     ])
1183   ])
1184   VLC_RESTORE_FLAGS
1185   AS_IF([test "${ac_cv_c_sse2_intrinsics}" != "no"], [
1186     AC_DEFINE(HAVE_SSE2_INTRINSICS, 1, [Define to 1 if SSE2 intrinsics are available.])
1187   ])
1189   VLC_SAVE_FLAGS
1190   CFLAGS="${CFLAGS} -msse"
1191   AC_CACHE_CHECK([if $CC groks SSE inline assembly], [ac_cv_sse_inline], [
1192     AC_COMPILE_IFELSE([AC_LANG_PROGRAM(,[[
1193 void *p;
1194 asm volatile("xorps %%xmm1,%%xmm2"::"r"(p):"xmm1", "xmm2");
1196     ], [
1197       ac_cv_sse_inline=yes
1198     ], [
1199       ac_cv_sse_inline=no
1200     ])
1201   ])
1203   AS_IF([test "${ac_cv_sse_inline}" != "no" -a "${SYS}" != "solaris"], [
1204     AC_DEFINE(CAN_COMPILE_SSE, 1, [Define to 1 if SSE inline assembly is available.])
1205   ])
1207   AC_CACHE_CHECK([if $CC groks SSE2 inline assembly], [ac_cv_sse2_inline], [
1208     AC_COMPILE_IFELSE([AC_LANG_PROGRAM(,[[
1209 void *p;
1210 asm volatile("punpckhqdq %%xmm1,%%xmm2"::"r"(p):"xmm1", "xmm2");
1212     ], [
1213       ac_cv_sse2_inline=yes
1214     ], [
1215       ac_cv_sse2_inline=no
1216     ])
1217   ])
1218   AS_IF([test "${ac_cv_sse2_inline}" != "no" -a "${SYS}" != "solaris"], [
1219     AC_DEFINE(CAN_COMPILE_SSE2, 1, [Define to 1 if SSE2 inline assembly is available.])
1220     have_sse2="yes"
1221   ])
1223   # SSE3
1224   AC_CACHE_CHECK([if $CC groks SSE3 inline assembly], [ac_cv_sse3_inline], [
1225     AC_COMPILE_IFELSE([AC_LANG_PROGRAM(,[[
1226 void *p;
1227 asm volatile("movsldup %%xmm1,%%xmm0"::"r"(p):"xmm0", "xmm1");
1229     ], [
1230       ac_cv_sse3_inline=yes
1231     ], [
1232       ac_cv_sse3_inline=no
1233     ])
1234   ])
1236   AS_IF([test "${ac_cv_sse3_inline}" != "no"], [
1237     AC_DEFINE(CAN_COMPILE_SSE3, 1, [Define to 1 if SSE3 inline assembly is available.]) ])
1238   # SSSE3
1239   AC_CACHE_CHECK([if $CC groks SSSE3 inline assembly], [ac_cv_ssse3_inline], [
1240     AC_COMPILE_IFELSE([AC_LANG_PROGRAM(,[[
1241 void *p;
1242 asm volatile("pabsw %%xmm0,%%xmm0"::"r"(p):"xmm0");
1244     ], [
1245       ac_cv_ssse3_inline=yes
1246     ], [
1247       ac_cv_ssse3_inline=no
1248     ])
1249   ])
1251   AS_IF([test "${ac_cv_ssse3_inline}" != "no"], [
1252     AC_DEFINE(CAN_COMPILE_SSSE3, 1, [Define to 1 if SSSE3 inline assembly is available.]) ])
1254   # SSE4.1
1255   AC_CACHE_CHECK([if $CC groks SSE4.1 inline assembly],
1256                  [ac_cv_sse4_1_inline], [
1257     AC_COMPILE_IFELSE([AC_LANG_PROGRAM(,[[
1258 void *p;
1259 asm volatile("pmaxsb %%xmm1,%%xmm0"::"r"(p):"xmm0", "xmm1");
1261     ], [
1262       ac_cv_sse4_1_inline=yes
1263     ], [
1264       ac_cv_sse4_1_inline=no
1265     ])
1266   ])
1268   AS_IF([test "${ac_cv_sse4_1_inline}" != "no"], [
1269     AC_DEFINE(CAN_COMPILE_SSE4_1, 1, [Define to 1 if SSE4_1 inline assembly is available.]) ])
1271   # SSE4.2
1272   AC_CACHE_CHECK([if $CC groks SSE4.2 inline assembly],
1273                  [ac_cv_sse4_2_inline], [
1274     AC_COMPILE_IFELSE([AC_LANG_PROGRAM(,[[
1275 void *p;
1276 asm volatile("pcmpgtq %%xmm1,%%xmm0"::"r"(p):"xmm0", "xmm1");
1278     ], [
1279       ac_cv_sse4_2_inline=yes
1280     ], [
1281       ac_cv_sse4_2_inline=no
1282     ])
1283   ])
1285   AS_IF([test "${ac_cv_sse4_2_inline}" != "no"], [
1286     AC_DEFINE(CAN_COMPILE_SSE4_2, 1, [Define to 1 if SSE4_2 inline assembly is available.]) ])
1288   # SSE4A
1289   AC_CACHE_CHECK([if $CC groks SSE4A inline assembly], [ac_cv_sse4a_inline], [
1290     AC_COMPILE_IFELSE([AC_LANG_PROGRAM(,[[
1291 void *p;
1292 asm volatile("insertq %%xmm1,%%xmm0"::"r"(p):"xmm0", "xmm1");
1294     ], [
1295       ac_cv_sse4a_inline=yes
1296     ], [
1297       ac_cv_sse4a_inline=no
1298     ])
1299   ])
1300   VLC_RESTORE_FLAGS
1301   AS_IF([test "${ac_cv_sse4a_inline}" != "no"], [
1302     AC_DEFINE(CAN_COMPILE_SSE4A, 1, [Define to 1 if SSE4A inline assembly is available.]) ])
1304 AM_CONDITIONAL([HAVE_SSE2], [test "$have_sse2" = "yes"])
1306 VLC_SAVE_FLAGS
1307 CFLAGS="${CFLAGS} -mmmx"
1308 have_3dnow="no"
1309 AC_CACHE_CHECK([if $CC groks 3D Now! inline assembly], [ac_cv_3dnow_inline], [
1310   AC_COMPILE_IFELSE([AC_LANG_PROGRAM(,[[
1311 void *p;
1312 asm volatile("pfadd %%mm1,%%mm2"::"r"(p):"mm1", "mm2");
1314   ], [
1315     ac_cv_3dnow_inline=yes
1316   ], [
1317     ac_cv_3dnow_inline=no
1318   ])
1320 VLC_RESTORE_FLAGS
1321 AS_IF([test "${ac_cv_3dnow_inline}" != "no"], [
1322   AC_DEFINE(CAN_COMPILE_3DNOW, 1,
1323             [Define to 1 if 3D Now! inline assembly is available.])
1324   have_3dnow="yes"
1326 AM_CONDITIONAL([HAVE_3DNOW], [test "$have_3dnow" = "yes"])
1329 AC_ARG_ENABLE(neon,
1330   [AS_HELP_STRING([--disable-neon],
1331     [disable NEON optimizations (default auto)])],, [
1332   AS_IF([test "${host_cpu}" = "arm"], [enable_neon="yes"] ,[enable_neon="no"])
1334 AS_IF([test "${enable_neon}" != "no"], [
1335   VLC_SAVE_FLAGS
1336   CFLAGS="${CFLAGS} -mfpu=neon -mhard-float"
1337   AC_CACHE_CHECK([if $CCAS groks ARM NEON assembly], [ac_cv_arm_neon], [
1338     AC_COMPILE_IFELSE([
1339       AC_LANG_PROGRAM(,[[
1340 asm volatile("vqmovun.s64 d0, q1":::"d0");
1342     ], [
1343       ac_cv_arm_neon="yes"
1344     ], [
1345       ac_cv_arm_neon="no"
1346     ])
1347   ])
1348   VLC_RESTORE_FLAGS
1350 AM_CONDITIONAL(HAVE_NEON, [test "${ac_cv_arm_neon}" = "yes"])
1353 AC_ARG_ENABLE(altivec,
1354   [AS_HELP_STRING([--disable-altivec],
1355     [disable AltiVec optimizations (default auto)])],, [
1356   AS_IF([test "${host_cpu}" = "powerpc"],
1357         [enable_altivec=yes], [enable_altivec=no])
1359 have_altivec="no"
1360 AS_IF([test "${enable_altivec}" = "yes"], [
1361   ARCH="${ARCH} altivec";
1362   VLC_SAVE_FLAGS
1363   AC_CACHE_CHECK([if $CC groks AltiVec inline assembly],
1364     [ac_cv_altivec_inline],
1365     [AC_TRY_COMPILE(,[asm volatile("vperm 0,1,2,3");],
1366          ac_cv_altivec_inline="yes",
1367          [CFLAGS="${CFLAGS} -Wa,-m7400"
1368           AC_TRY_COMPILE(,[asm volatile("vperm 0,1,2,3");],
1369             [ac_cv_altivec_inline="-Wa,-m7400"],
1370             ac_cv_altivec_inline=no)
1371          ])])
1372   VLC_RESTORE_FLAGS
1373   AS_IF([test "${ac_cv_altivec_inline}" != "no"], [
1374     AC_DEFINE(CAN_COMPILE_ALTIVEC, 1,
1375               [Define to 1 if AltiVec inline assembly is available.])
1376     AS_IF([test "${ac_cv_altivec_inline}" != "yes"], [
1377       VLC_ADD_CFLAGS([memcpyaltivec],[${ac_cv_altivec_inline}])
1378       VLC_ADD_CFLAGS([i420_yuy2_altivec],[${ac_cv_altivec_inline}])
1379       VLC_ADD_CFLAGS([libvlccore],[${ac_cv_altivec_inline}])
1380     ])
1381     have_altivec="yes"
1382   ])
1384 dnl The AltiVec C extensions
1386 dnl There are several possible cases:
1387 dnl - OS X PPC, gcc 4.x: use -mpim-altivec -force_cpusubtype_ALL, don't
1388 dnl                      need <altivec.h>
1389 dnl - OS X PPC, gcc 3.x: need -faltivec, don't need <altivec.h>
1390 dnl - Linux PPC, gcc 3.4, 4.x: need <altivec.h> which requires -maltivec
1391 dnl - Linux PPC, gcc 3.3: need <altivec.h> and -maltivec -mabi=altivec
1392 dnl - Linux PPC, gcc 3.x: need <altivec.h> and -fvec
1393 dnl - Others: test should fail
1394   VLC_SAVE_FLAGS
1395   AC_CACHE_CHECK([if \$CC groks AltiVec C extensions],
1396   [ac_cv_c_altivec],
1397   [# OS X/PPC test (gcc 4.x)
1398    CFLAGS="${CFLAGS} -mpim-altivec -force_cpusubtype_ALL"
1399    AC_TRY_COMPILE([vector unsigned char foo;],
1400      [vec_ld(0, (unsigned char *)0);],
1401      [ac_cv_c_altivec="-mpim-altivec -force_cpusubtype_ALL"],
1402      [# OS X/PPC test (gcc 3.x)
1403       CFLAGS="${CFLAGS} -faltivec"
1404       AC_TRY_COMPILE([vector unsigned char foo;],
1405         [vec_ld(1 * sizeof(vector float), (unsigned char *)0);],
1406         [ac_cv_c_altivec="-faltivec"],
1407         dnl Below this are the Linux tests
1408         [# Linux/PPC test (gcc 4.x)
1409          CFLAGS="${CFLAGS} -maltivec"
1410          AC_TRY_COMPILE([#include <altivec.h>],
1411            [vec_ld(0, (unsigned char *)0);],
1412            [ac_cv_c_altivec="-maltivec"],
1413            [# Linux/PPC test (gcc 3.3)
1414             CFLAGS="${CFLAGS} -maltivec -mabi=altivec"
1415             AC_TRY_COMPILE([#include <altivec.h>],
1416               [vec_ld(0, (unsigned char *)0);],
1417               [ac_cv_c_altivec=""
1418                ac_cv_c_altivec_abi="-maltivec -mabi=altivec"],
1419               [# Linux/PPC test (gcc 3.3)
1420                CFLAGS="${CFLAGS} -fvec"
1421                AC_TRY_COMPILE([#include <altivec.h>],
1422                  [vec_ld(0, (unsigned char *)0);],
1423                  [ac_cv_c_altivec="-fvec"],
1424                  [ac_cv_c_altivec=no])
1425               ])
1426            ])
1427         ])
1428      ])
1429   ])
1431   VLC_RESTORE_FLAGS
1432   AS_IF([test "${ac_cv_c_altivec}" != "no"], [
1433     CPPFLAGS="${CPPFLAGS} ${ac_cv_c_altivec}"
1434     AC_DEFINE(CAN_COMPILE_C_ALTIVEC, 1, [Define to 1 if C AltiVec extensions are available.])
1435     VLC_ADD_CFLAGS([libvlccore],[${ac_cv_c_altivec}])
1436     VLC_ADD_CFLAGS([i420_yuy2_altivec memcpyaltivec deinterlace],[${ac_cv_c_altivec} ${ac_cv_c_altivec_abi}])
1437     have_altivec="yes"
1438   ])
1439   AC_CHECK_HEADERS(altivec.h)
1441   VLC_SAVE_FLAGS
1442   LDFLAGS="${LDFLAGS} -Wl,-framework,vecLib"
1443   AC_CACHE_CHECK([if linker needs -framework vecLib],
1444     [ac_cv_ld_altivec],
1445     [AC_TRY_LINK([],,ac_cv_ld_altivec=yes,ac_cv_ld_altivec=no)])
1446   VLC_RESTORE_FLAGS
1447   AS_IF([test "${ac_cv_ld_altivec}" != "no"], [
1448     VLC_ADD_LIBS([libvlccore memcpyaltivec],[-Wl,-framework,vecLib])
1449   ])
1451 AM_CONDITIONAL([HAVE_ALTIVEC], [test "$have_altivec" = "yes"])
1454 dnl  Memory usage
1456 AC_ARG_ENABLE(optimize-memory,
1457   [AS_HELP_STRING([--enable-optimize-memory],
1458     [optimize memory usage over performance])])
1459 if test "${enable_optimize_memory}" = "yes"; then
1460   AC_DEFINE(OPTIMIZE_MEMORY, 1, Define if you want to optimize memory usage over performance)
1464 dnl Allow running as root (useful for people running on embedded platforms)
1466 AC_ARG_ENABLE(run-as-root,
1467   [AS_HELP_STRING([--enable-run-as-root],
1468     [allow running VLC as root (default disabled)])])
1469 AS_IF([test "${enable_run_as_root}" = "yes"],[
1470     AC_DEFINE(ALLOW_RUN_AS_ROOT, 1,
1471               [Define to 1 to allow running VLC as root (uid 0).])
1475 dnl Stream output
1477 AC_ARG_ENABLE(sout,
1478   [AS_HELP_STRING([--disable-sout],
1479     [disable streaming output (default enabled)])])
1480 AS_IF([test "${enable_sout}" != "no"], [
1481   AC_DEFINE(ENABLE_SOUT, 1, [Define to 1 for stream output support.])
1483 AM_CONDITIONAL(ENABLE_SOUT, [test "${enable_sout}" != "no"])
1485 dnl Lua modules
1486 AC_ARG_ENABLE(lua,
1487   [AS_HELP_STRING([--disable-lua],
1488     [disable LUA scripting support (default enabled)])])
1489 if test "${enable_lua}" != "no"
1490 then
1491   PKG_CHECK_MODULES(LUA, lua5.1,
1492     [ have_lua=yes ],
1493     [
1494     AC_MSG_WARN([${LUA_PKG_ERRORS}, trying lua >= 5.1 instead])
1495     PKG_CHECK_MODULES(LUA, lua >= 5.1,
1496       [ have_lua=yes ],
1497       [
1498         AC_MSG_WARN([${LUA_PKG_ERRORS}, trying manual detection instead])
1499         have_lua=yes
1500         AC_CHECK_HEADERS([lua.h lauxlib.h lualib.h],
1501           [],
1502           [ have_lua=no ] )
1503         AC_CHECK_LIB(  lua5.1 , luaL_newstate,
1504           [LUA_LIBS="-llua5.1"],
1505           AC_CHECK_LIB( lua51 , luaL_newstate,
1506             [LUA_LIBS="-llua51"],
1507             AC_CHECK_LIB( lua , luaL_newstate,
1508               [LUA_LIBS="-llua"],
1509               [ have_lua=no
1510               ], [-lm])
1511           )
1512         )
1513       ])
1514     ])
1515   if test "x${have_lua}" = "xyes" ;  then
1516      VLC_ADD_LIBS([lua],[$LUA_LIBS])
1517      VLC_ADD_CFLAGS([lua],[$LUA_CFLAGS])
1518   else
1519       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.])
1520   fi
1521   AC_ARG_VAR([LUAC], [LUA byte compiler])
1522   AC_PATH_PROGS(LUAC,[${LUAC} luac], [false])
1523   AS_IF([test "${LUAC}" = "false"], [
1524     AC_MSG_ERROR([Could not find the LUA byte compiler.])
1525   ])
1526   AS_IF([test -f ${CONTRIB_DIR}/lib/liblua.a -a `echo|${LUAC} -o - -|od -j 8 -N 2 -t x2|head -n 1|cut -d' ' -f2` != 0404], [
1527     AC_MSG_ERROR([You need 32-bits luac when using using lua from contrib.])
1528   ])
1530 AM_CONDITIONAL(BUILD_LUA, [test "${have_lua}" = "yes"])
1534 dnl HTTP daemon
1536 AC_ARG_ENABLE(httpd,
1537   [AS_HELP_STRING([--disable-httpd],
1538     [disable the built-in HTTP server (default enabled)])])
1539 if test "${enable_httpd}" != "no"
1540 then
1541   AC_DEFINE(ENABLE_HTTPD, 1, Define if you want the HTTP daemon support)
1543 AM_CONDITIONAL(BUILD_HTTPD, [test "${enable_httpd}" != "no"])
1547 dnl VideoLAN manager
1549 AC_ARG_ENABLE(vlm,
1550   [AS_HELP_STRING([--disable-vlm],
1551     [disable the stream manager (default enabled)])],,
1552   [enable_vlm="${enable_sout}"])
1553 AS_IF([test "${enable_vlm}" != "no"], [
1554   AS_IF([test "${enable_sout}" = "no"], [
1555     AC_MSG_ERROR([VLM requires the stream output. Do not use --disable-sout.])
1556   ])
1557   AC_DEFINE(ENABLE_VLM, 1, [Define if you want the VideoLAN manager support])
1559 AM_CONDITIONAL([ENABLE_VLM], [test "${enable_vlm}" != "no"])
1563 dnl  Input plugins
1566 EXTEND_HELP_STRING([Input plugins:])
1569 dnl libproxy support
1571 AC_ARG_ENABLE(libproxy,
1572   [AS_HELP_STRING([--enable-libproxy],[support libproxy (default auto)])])
1573 AS_IF([test "${enable_libproxy}" != "no"], [
1574   PKG_CHECK_MODULES(LIBPROXY, libproxy-1.0, [
1575     AC_DEFINE(HAVE_LIBPROXY, 1, [Define if libproxy is available])
1576     VLC_ADD_CFLAGS([access_http],[$LIBPROXY_CFLAGS])
1577     VLC_ADD_LIBS([access_http],[$LIBPROXY_LIBS])
1578   ], [
1579     AS_IF([test -n "${enable_libproxy}"], [
1580       AC_MSG_ERROR([${LIBPROXY_PKG_ERRORS}.])
1581     ])
1582   ])
1586 dnl  live555 input
1588 AC_ARG_ENABLE(live555,
1589   [AS_HELP_STRING([--enable-live555],
1590     [enable RTSP input through live555 (default enabled)])])
1592 AS_IF([test "${enable_live555}" != "no" -a -n "${CXX}"], [
1593   AC_LANG_PUSH(C++)
1594   VLC_SAVE_FLAGS
1596   dnl detect include paths
1597   AS_IF([test -f "${CONTRIB_DIR}/include/UsageEnvironment.hh"], [
1598     CPPFLAGS_live555="-I${CONTRIB_DIR}/include/liveMedia -I${CONTRIB_DIR}/include/groupsock -I${CONTRIB_DIR}/include/BasicUsageEnvironment -I${CONTRIB_DIR}/include/UsageEnvironment"
1599   ], [
1600     AS_IF([test ${SYS} != "os2"], [
1601       LIVE555_PREFIX=${LIVE555_PREFIX-"/usr"}
1602       CPPFLAGS_live555="-I${LIVE555_PREFIX}/include/liveMedia -I${LIVE555_PREFIX}/include/groupsock -I${LIVE555_PREFIX}/include/BasicUsageEnvironment -I${LIVE555_PREFIX}/include/UsageEnvironment"
1603     ], [
1604       LIVE555_PREFIX=${LIVE555_PREFIX-"/usr/lib/live"}
1605       CPPFLAGS_live555="-I${LIVE555_PREFIX}/liveMedia/include -I${LIVE555_PREFIX}/groupsock/include -I${LIVE555_PREFIX}/BasicUsageEnvironment/include -I${LIVE555_PREFIX}/UsageEnvironment/include"
1606       LDFLAGS_live555="-L${LIVE555_PREFIX}/liveMedia -L${LIVE555_PREFIX}/groupsock -L${LIVE555_PREFIX}/BasicUsageEnvironment -L${LIVE555_PREFIX}/UsageEnvironment"
1607     ])
1608   ])
1610   dnl CPP Flags
1611   AS_IF([test "${SYS}" = "solaris"], [
1612     CPPFLAGS_live555="${CPPFLAGS_live555} -DSOLARIS"
1613   ])
1614   CPPFLAGS="${CPPFLAGS} ${CPPFLAGS_live555}"
1615   LDFLAGS="${LDFLAGS} ${LDFLAGS_live555}"
1617   dnl version check
1618   AC_CACHE_CHECK([for live555 version 1324598400 or later], [ac_cv_live555], [
1619     AC_PREPROC_IFELSE([AC_LANG_PROGRAM([
1620 [#include <liveMedia_version.hh>
1621 #if !defined (LIVEMEDIA_LIBRARY_VERSION_INT) || (LIVEMEDIA_LIBRARY_VERSION_INT < 1324598400)
1622 # error BOOM
1623 #endif]])
1624     ], [
1625       ac_cv_live555="yes"
1626     ], [
1627       ac_cv_live555="no"
1628     ])
1629   ])
1631   AS_IF([test "$ac_cv_live555" = "no"], [
1632     AC_MSG_WARN([liveMedia is missing or its installed version is too old:
1633 Version 2011.12.23 or later is required to proceed.
1634 You can get an updated one from http://www.live555.com/liveMedia .])
1635     AS_IF([test -n "${enable_live555}"], [
1636       AC_MSG_ERROR([Update live555 or pass --disable-live555 to disable RTSP input support.])
1637     ])
1638   ], [
1639     other_libs="-lgroupsock -lBasicUsageEnvironment -lUsageEnvironment"
1640     other_libs_pic="-lgroupsock_pic -lBasicUsageEnvironment_pic -lUsageEnvironment_pic"
1641     AS_IF([test "${SYS}" = "mingw32"], [
1642       # add ws2_32 for closesocket, select, recv
1643       other_libs="$other_libs -lws2_32"
1644     ])
1646     dnl We need to check for pic because live555 don't provide shared libs
1647     dnl and we want to build a plugins so we need -fPIC on some arch.
1648     VLC_ADD_CXXFLAGS([live555], [${CPPFLAGS_live555}])
1649     VLC_ADD_LDFLAGS([live555], [${LDFLAGS_live555}])
1650     AC_CHECK_LIB(liveMedia_pic, main, [
1651       VLC_ADD_PLUGIN([live555])
1652       VLC_ADD_LIBS([live555], [-lliveMedia_pic ${other_libs_pic}])
1653     ],[
1654       AC_CHECK_LIB(liveMedia, main, [
1655         VLC_ADD_PLUGIN([live555])
1656         VLC_ADD_LIBS([live555], [-lliveMedia ${other_libs}])
1657       ],[],[${other_libs}])],[${other_libs_pic}])
1658   ])
1659   VLC_RESTORE_FLAGS
1660   AC_LANG_POP(C++)
1664 dnl IIDC and DV FireWire input modules
1666 PKG_ENABLE_MODULES_VLC([DC1394], [], [libdc1394-2 >= 2.1.0], [IIDC FireWire input module], [auto])
1667 PKG_ENABLE_MODULES_VLC([DV1394], [], [libraw1394 >= 2.0.1 libavc1394 >= 0.5.3], [DV FireWire input module], [auto])
1670 dnl - linsys modules: access module check for libzvbi
1672 AC_ARG_ENABLE(linsys,
1673   [AS_HELP_STRING([--enable-linsys],
1674     [Linux Linear Systems Ltd. SDI and HD-SDI input cards (default enabled)])])
1675 if test "$SYS" = "linux" -a "${enable_linsys}" != "no"; then
1676   VLC_ADD_PLUGIN([linsys_hdsdi])
1677   PKG_CHECK_MODULES(LINSYS_SDI, [zvbi-0.2 >= 0.2.28],
1678     [ VLC_ADD_LIBS([linsys_sdi],[$LINSYS_SDI_LIBS])
1679       VLC_ADD_CFLAGS([linsys_sdi],[$LINSYS_SDI_CFLAGS])
1680       VLC_ADD_PLUGIN([linsys_sdi]) ],
1681     [AC_MSG_WARN([${LINSYS_SDI_PKG_ERRORS}.])]
1682   )
1686 dnl dvdread module: check for libdvdread
1688 PKG_ENABLE_MODULES_VLC([DVDREAD], [], [dvdread], [dvdread input module], [auto])
1691 dnl libdvdnav plugin
1693 AC_ARG_ENABLE(dvdnav,
1694   [AS_HELP_STRING([--disable-dvdnav],
1695     [disable DVD navigation with libdvdnav (default auto)])])
1696 if test "${enable_dvdnav}" != "no"
1697 then
1698   PKG_CHECK_MODULES(DVDNAV, dvdnav, [
1699     VLC_ADD_PLUGIN([dvdnav])
1700     VLC_ADD_CFLAGS([dvdnav],[${DVDNAV_CFLAGS}])
1701     VLC_ADD_LIBS([dvdnav],[${DVDNAV_LIBS}])
1702     AC_CHECK_LIB(dvdnav, dvdnav_get_video_resolution,
1703       AC_DEFINE(HAVE_DVDNAV_GET_VIDEO_RESOLUTION, 1, [Define if you have dvdnav_get_video_resolution.]),
1704         [], [${LIBS_dvdnav}])
1705     AC_CHECK_LIB(dvdnav, dvdnav_describe_title_chapters,
1706       AC_DEFINE(HAVE_DVDNAV_DESCRIBE_TITLE_CHAPTERS, 1, [Define if you have dvdnav_describe_title_chapters.]),
1707         [], [${LIBS_dvdnav}])],
1708       [AC_MSG_WARN([${DVDNAV_PKG_ERRORS}.])])
1712 dnl  Blu-ray Disc Support with libbluray
1714 PKG_ENABLE_MODULES_VLC([BLURAY], [libbluray], [libbluray >= 0.2.1], (libbluray for Blu-ray disc support ) )
1717 dnl  OpenCV wrapper and example filters
1719 PKG_ENABLE_MODULES_VLC([OPENCV], [opencv_example opencv_wrapper], [opencv > 2.0], (OpenCV (computer vision) filter), [auto])
1723 dnl  libsmbclient plugin
1725 AC_ARG_ENABLE(smb,
1726   [AS_HELP_STRING([--disable-smb], [disable SMB/CIFS support (default auto)])])
1727 if test "${enable_smb}" != "no"; then
1728   AC_CHECK_HEADERS(libsmbclient.h,
1729     [ VLC_ADD_PLUGIN([access_smb])
1730       VLC_ADD_LIBS([access_smb],[-lsmbclient]) ],
1731     [ if test -n "${enable_smb}"; then
1732         AC_MSG_ERROR([cannot find libsmbclient headers])
1733      fi ])
1738 dnl sftp access support
1740 PKG_ENABLE_MODULES_VLC([SFTP], [access_sftp], [libssh2], (support SFTP file transfer via libssh2), [auto])
1743 dnl  Video4Linux 2
1745 AC_ARG_ENABLE(v4l2, [AS_HELP_STRING([--disable-v4l2],
1746   [disable Video4Linux version 2 (default auto)])])
1747 have_v4l2="no"
1748 AS_IF([test "$enable_v4l2" != "no"], [
1749   AC_CHECK_HEADERS([linux/videodev2.h sys/videoio.h], [
1750     have_v4l2="yes"
1751   ])
1753 AM_CONDITIONAL(HAVE_V4L2, [test "${have_v4l2}" != "no"])
1756 dnl special access module for Blackmagic SDI cards
1758 AC_ARG_ENABLE(decklink,
1759   [AS_HELP_STRING([--disable-decklink],
1760     [disable Blackmagic DeckLink SDI input (default auto)])])
1761 AC_ARG_WITH(decklink_sdk,
1762   [AS_HELP_STRING[--with-decklink-sdk=DIR],
1763     [                        location of Blackmagic DeckLink SDI SDK])])
1764 have_decklink=no
1765 if test "${enable_decklink}" != "no"
1766 then
1767   if test "${with_decklink_sdk}" != "no" -a -n "${with_decklink_sdk}"
1768   then
1769     VLC_ADD_CXXFLAGS([decklink decklinkoutput],[-I${with_decklink_sdk}/include])
1770   fi
1771   VLC_SAVE_FLAGS
1772   CXXFLAGS="${CXXFLAGS} ${CXXFLAGS_decklink}"
1773   AC_LANG_PUSH(C++)
1774   AC_CHECK_HEADERS(DeckLinkAPIDispatch.cpp, [
1775       have_decklink=yes
1776   ], [
1777       AC_MSG_WARN(Blackmagic DeckLink SDI include files not found, decklink disabled)
1778   ])
1779   AC_LANG_POP(C++)
1780   VLC_RESTORE_FLAGS
1782 AM_CONDITIONAL(HAVE_DECKLINK, [ test "${have_decklink}" != "no" ])
1786 dnl  gnomeVFS access module
1788 PKG_ENABLE_MODULES_VLC([GNOMEVFS], [access_gnomevfs], [gnome-vfs-2.0], [GnomeVFS access module], [auto])
1791 dnl  VCDX modules
1793 PKG_ENABLE_MODULES_VLC([VCDX], [vcdx], [libcdio >= 0.78.2 libiso9660 >= 0.72 libvcdinfo >= 0.7.22], [navigate VCD with libvcdinfo], [no])
1796 dnl  Built-in CD-DA and VCD module
1798 AC_ARG_ENABLE(vcd,
1799   [AS_HELP_STRING([--disable-vcd],
1800     [disable built-in VCD and CD-DA support (default enabled)])])
1802 AC_ARG_ENABLE(libcddb,
1803   [AS_HELP_STRING([--disable-libcddb],
1804     [disable CDDB for Audio CD (default enabled)])])
1806 if test "${enable_vcd}" != "no"
1807 then
1808   AC_MSG_CHECKING(for cdrom_msf0 in linux/cdrom.h)
1809   AC_EGREP_HEADER(cdrom_msf0,linux/cdrom.h,[
1810     AC_MSG_RESULT(yes)
1811     VLC_ADD_PLUGIN([vcd cdda])
1812   ],[
1813     AC_MSG_RESULT(no)
1814   ])
1816   AC_MSG_CHECKING(for scsireq in sys/scsiio.h)
1817   AC_EGREP_HEADER(scsireq,sys/scsiio.h,[
1818     AC_MSG_RESULT(yes)
1819     VLC_ADD_PLUGIN([vcd cdda])
1820     AC_DEFINE(HAVE_SCSIREQ_IN_SYS_SCSIIO_H, 1, For NetBSD VCD support)
1821   ],[
1822     AC_MSG_RESULT(no)
1823   ])
1825   AC_MSG_CHECKING(for ioc_toc_header in sys/cdio.h)
1826   AC_EGREP_HEADER(ioc_toc_header ,sys/cdio.h,[
1827     AC_MSG_RESULT(yes)
1828     VLC_ADD_PLUGIN([vcd cdda])
1829     AC_DEFINE(HAVE_IOC_TOC_HEADER_IN_SYS_CDIO_H, 1, For FreeBSD VCD support)
1830   ],[
1831     AC_MSG_RESULT(no)
1832   ])
1834   if test "${SYS}" = "bsdi" -o "${SYS}" = "mingw32" -o "${SYS}" = "os2"
1835   then
1836     VLC_ADD_PLUGIN([vcd cdda])
1837   fi
1839   if test "${SYS}" = "darwin"
1840   then
1841     VLC_ADD_PLUGIN([vcd cdda])
1842     VLC_ADD_LIBS([vcd vcdx cdda],[-Wl,-framework,IOKit,-framework,CoreFoundation])
1843     VLC_ADD_LIBS([vcdx cdda],[-liconv])
1844   fi
1846   if test "$enable_libcddb" != "no"; then
1847     PKG_CHECK_MODULES(LIBCDDB, [libcddb >= 0.9.5], [
1848       HAVE_LIBCDDB=yes
1849       AC_DEFINE(HAVE_LIBCDDB, 1, [Define this if you have libcddb installed])
1850       VLC_ADD_LIBS([cdda],[$LIBCDDB_LIBS])
1851       VLC_ADD_CFLAGS([cdda],[$LIBCDDB_CFLAGS])
1852       ],:
1853       [AC_MSG_WARN([${LIBCDDB_PKG_ERRORS}: CDDB access disabled.])
1854       HAVE_LIBCDDB=no])
1855   fi
1859 dnl Linux DVB
1861 AC_CACHE_CHECK([for Linux DVB version 5.1], [ac_cv_linux_dvb_5_1], [
1862   AC_PREPROC_IFELSE([AC_LANG_PROGRAM([
1863 [#include <linux/dvb/version.h>
1864 #if (DVB_API_VERSION < 5)
1865 # error Linux DVB API v3.2 and older are not supported.
1866 #endif
1867 #if (DVB_API_VERSION == 5 && DVB_API_VERSION_MINOR < 1)
1868 # error Linux DVB API v5.0 is unsupported. Please update.
1869 #endif
1870 ]])], [
1871   ac_cv_linux_dvb_5_1=yes
1872 ], [
1873   ac_cv_linux_dvb_5_1=no
1874 ])])
1875 AM_CONDITIONAL([HAVE_LINUX_DVB], [test "$ac_cv_linux_dvb_5_1" = "yes"])
1878 dnl  Screen capture module
1880 AC_ARG_ENABLE(screen,
1881   [AS_HELP_STRING([--enable-screen],
1882     [disable screen capture (default enabled)])])
1883 if test "${enable_screen}" != "no"; then
1884   if test "${SYS}" = "darwin"; then
1885     AC_CHECK_HEADERS(OpenGL/gl.h, [
1886       AC_CHECK_HEADERS(ApplicationServices/ApplicationServices.h, [
1887         VLC_ADD_PLUGIN([screen])
1888       ])
1889     ])
1890   fi
1894 dnl  Real RTSP plugin
1896 AC_ARG_ENABLE(realrtsp,
1897   [  --enable-realrtsp       Real RTSP module (default disabled)])
1898 if test "${enable_realrtsp}" = "yes"; then
1899   VLC_ADD_PLUGIN([realrtsp])
1903 dnl MacOS eyeTV
1904 AC_ARG_ENABLE(macosx-eyetv,
1905   [  --enable-macosx-eyetv   Mac OS X EyeTV (TNT Tuner) module (default enabled on Mac OS X)])
1906 if test "x${enable_macosx_eyetv}" != "xno" &&
1907   (test "${SYS}" = "darwin" || test "${enable_macosx_eyetv}" = "yes")
1908 then
1909   VLC_ADD_LIBS([access_eyetv], [-Wl,-framework,Foundation])
1910   VLC_ADD_PLUGIN([access_eyetv])
1914 dnl QTKit
1915 AC_ARG_ENABLE(macosx-qtkit,
1916   [  --enable-macosx-qtkit Mac OS X qtcapture (video) and qtsound (audio) module (default enabled on Mac OS X)])
1917 if test "x${enable_macosx_qtkit}" != "xno" &&
1918   (test "${SYS}" = "darwin" || test "${enable_macosx_qtkit}" = "yes")
1919 then
1920   VLC_ADD_PLUGIN([qtcapture])
1921   VLC_ADD_PLUGIN([qtsound])
1923 AM_CONDITIONAL(HAVE_QTKIT, [test "${SYS}" = "darwin" -a "x${enable_macosx_qtkit}" != "xno"])
1927 dnl  Demux plugins
1930 EXTEND_HELP_STRING([Mux/Demux plugins:])
1933 dnl  libdvbpsi check for ts mux/demux
1935 have_dvbpsi="no"
1936 PKG_WITH_MODULES([DVBPSI], [libdvbpsi], [have_dvbpsi="yes"])
1937 AM_CONDITIONAL(HAVE_DVBPSI, [test "${have_dvbpsi}" = "yes"])
1941 dnl  GME demux plugin
1943 AC_ARG_ENABLE(gme,
1944   [AS_HELP_STRING([--enable-gme],
1945     [use Game Music Emu (default auto)])])
1946 AS_IF([test "${enable_gme}" != "no"], [
1947   AC_CHECK_HEADER([gme/gme.h], [
1948     VLC_ADD_LIBS([gme], [-lgme])
1949     VLC_ADD_PLUGIN([gme])
1950   ], [
1951     AS_IF([test "x${enable_gme}" != "x"], [
1952       AC_MSG_ERROR([GME cannot be found. Please install the development files.])
1953     ])
1954   ])
1959 dnl  SIDPlay plugin
1961 AC_ARG_ENABLE(sid,
1962     [AS_HELP_STRING([--enable-sid],[C64 sid demux support (default auto)])])
1963 AS_IF([test "${enable_sid}" != "no"], [
1964     PKG_CHECK_MODULES(SID, [libsidplay2], [
1965         AC_LANG_PUSH(C++)
1966         oldCPPFLAGS="$CPPFLAGS"
1967         CPPFLAGS="$CPPFLAGS $SID_CFLAGS"
1968         AC_CHECK_HEADER([sidplay/builders/resid.h], [
1969             VLC_ADD_PLUGIN([sid])
1970             VLC_ADD_CFLAGS([sid], [$SID_CFLAGS])
1971             VLC_ADD_LIBS([sid], [$SID_LIBS] [-lresid-builder])
1972         ], [
1973             AS_IF([test -n "${enable_sid}"],
1974                 [AC_MSG_ERROR([${SID_PKG_ERRORS} (required for sid).])],
1975                 [AC_MSG_WARN([${SID_PKG_ERRORS} (required for sid).])]
1976                 )
1977         ])
1978         CPPFLAGS="$oldCPPFLAGS"
1979         AC_LANG_POP(C++)
1980     ], [
1981         AS_IF([test "x${enable_sid}" = "xyes"],
1982             [AC_MSG_ERROR([${SID_PKG_ERRORS} (required for sid).])],
1983             [AC_MSG_WARN([${SID_PKG_ERRORS} (required for sid).])]
1984             )
1985     ])
1990 dnl  ogg demux plugin
1992 PKG_ENABLE_MODULES_VLC([OGG], [], [ogg >= 1.0], [Ogg demux support], [auto])
1993 if test "${enable_sout}" != "no"; then
1994     PKG_ENABLE_MODULES_VLC([MUX_OGG], [], [ogg >= 1.0], [Ogg mux support], [auto])
1995 dnl Check for libshout
1996     PKG_ENABLE_MODULES_VLC([SHOUT], [access_output_shout], [shout >= 2.1], [libshout output plugin], [auto])
2000 dnl  matroska demux plugin
2002 AC_ARG_ENABLE(mkv,
2003   [AS_HELP_STRING([--disable-mkv],
2004     [do not use libmatroska (default auto)])])
2005 if test "${enable_mkv}" != "no" -a "${CXX}" != ""; then
2006   AC_LANG_PUSH(C++)
2007   AC_CHECK_HEADERS(ebml/EbmlVersion.h, [
2008     AC_MSG_CHECKING(for libebml version >= 1.0.0)
2009     AC_EGREP_CPP(yes,
2010       [#include <ebml/EbmlVersion.h>
2011        #ifdef LIBEBML_VERSION
2012        #if LIBEBML_VERSION >= 0x010000
2013        yes
2014        #endif
2015        #endif],
2016       [AC_MSG_RESULT([yes])
2017         AC_CHECK_HEADERS(matroska/KaxVersion.h, [
2018           AC_MSG_CHECKING(for libmatroska version >= 1.0.0)
2019           AC_EGREP_CPP(yes,
2020             [#include <matroska/KaxVersion.h>
2021              #ifdef LIBMATROSKA_VERSION
2022              #if LIBMATROSKA_VERSION >= 0x010000
2023              yes
2024              #endif
2025              #endif],
2026             [AC_MSG_RESULT([yes])
2027               AC_CHECK_HEADERS(matroska/KaxAttachments.h)
2028               VLC_ADD_CXXFLAGS([mkv],[])
2029               AC_CHECK_LIB(ebml_pic, main, [
2030                 VLC_ADD_PLUGIN([mkv])
2031                 VLC_ADD_LIBS([mkv],[-lmatroska -lebml_pic])
2032               ],[
2033                 AC_CHECK_LIB(ebml, main, [
2034                   VLC_ADD_PLUGIN([mkv])
2035                   VLC_ADD_LIBS([mkv],[-lmatroska -lebml])
2036                 ])
2037               ])
2038             ], [
2039               AC_MSG_RESULT([no])
2040               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.])
2041           ])
2042         ])
2043       ],
2044       [AC_MSG_RESULT([no])
2045         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.])
2046     ])
2047   ])
2048   AC_LANG_POP(C++)
2052 dnl  modplug demux plugin
2054 AC_ARG_ENABLE(mod,
2055   [AS_HELP_STRING([--disable-mod],
2056     [do not use libmodplug (default auto)])])
2057 if test "${enable_mod}" != "no" ; then
2058     PKG_CHECK_MODULES(LIBMODPLUG, [libmodplug >= 0.8.4 libmodplug != 0.8.8], [
2059           VLC_ADD_PLUGIN([mod])
2060           VLC_ADD_CXXFLAGS([mod],[$LIBMODPLUG_CFLAGS])
2061           VLC_ADD_LIBS([mod],[$LIBMODPLUG_LIBS])
2062     ],[
2063        AS_IF([test -n "${enable_mod}"],
2064          [AC_MSG_ERROR([${LIBMODPLUG_PKG_ERRORS}.])],
2065          [AC_MSG_WARN([${LIBMODPLUG_PKG_ERRORS}.])])
2066     ])
2070 dnl  mpc demux plugin
2072 AC_ARG_ENABLE(mpc,
2073   [AS_HELP_STRING([--disable-mpc], [do not use libmpcdec (default auto)])])
2074 if test "${enable_mpc}" != "no"
2075 then
2076   AC_CHECK_HEADERS([mpc/mpcdec.h], [
2077     VLC_ADD_PLUGIN([mpc])
2078     VLC_ADD_LIBS([mpc],[-lmpcdec])],
2079     [AC_CHECK_HEADERS([mpcdec/mpcdec.h], [
2080     VLC_ADD_PLUGIN([mpc])
2081     VLC_ADD_LIBS([mpc],[-lmpcdec])])])
2085 dnl  Codec plugins
2088 EXTEND_HELP_STRING([Codec plugins:])
2091 dnl wmafixed plugin
2093 AC_ARG_ENABLE(wma-fixed,
2094   [  --enable-wma-fixed      libwma-fixed module (default disabled)])
2095 if test "${enable_wma_fixed}" = "yes"
2096 then
2097   VLC_ADD_PLUGIN([wma_fixed])
2101 dnl shine fixed point mp3 encoder
2103 AC_ARG_ENABLE(shine,
2104   [  --enable-shine          shine mp3 encoding module (default disabled)])
2105 if test "${enable_shine}" = "yes"
2106 then
2107   VLC_ADD_PLUGIN([shine])
2111 dnl openmax il codec plugin
2113 AC_ARG_ENABLE(omxil,
2114   [  --enable-omxil          openmax il codec module (default disabled)])
2115 if test "${enable_omxil}" = "yes"
2116 then
2117   VLC_ADD_PLUGIN([omxil])
2121 dnl CrystalHD codec plugin
2123 AC_ARG_ENABLE(crystalhd,
2124   [  --enable-crystalhd      crystalhd codec plugin (default auto)])
2125 if test "${enable_crystalhd}" != "no"; then
2126     AC_CHECK_HEADER(libcrystalhd/libcrystalhd_if.h, [
2127       VLC_ADD_PLUGIN([crystalhd])
2128       VLC_ADD_LIBS([crystalhd], [-lcrystalhd])
2129     ],[
2130       if test "${SYS}" = "mingw32" ; then
2131         AC_CHECK_HEADERS(libcrystalhd/bc_dts_defs.h, [
2132           VLC_ADD_PLUGIN([crystalhd])
2133           AC_CHECK_HEADERS(libcrystalhd/bc_drv_if.h, [
2134             VLC_ADD_LIBS([crystalhd], [-lbcmDIL])
2135             ])
2136         ],[
2137           AS_IF([test x"${enable_crystalhd}" = "xyes"],
2138                 [AC_MSG_ERROR("Could not find CrystalHD development headers")],
2139                 [AC_MSG_WARN("Could not find CrystalHD development headers")])
2140         ],[#define __LINUX_USER__
2141                #include <libcrystalhd/bc_dts_types.h>
2142         ])
2143       fi
2144     ],[
2145        #include <libcrystalhd/bc_dts_types.h>
2146       ])
2150 dnl  mad plugin
2152 AC_ARG_ENABLE(mad,
2153   [  --enable-mad            libmad module (default enabled)])
2154 if test "${enable_mad}" != "no"
2155 then
2156   AC_ARG_WITH(mad,
2157     [  --with-mad=PATH         path to libmad],[],[])
2158   if test "${with_mad}" != "no" -a -n "${with_mad}"
2159   then
2160     VLC_ADD_CPPFLAGS([mpgatofixed32],[-I${with_mad}/include])
2161     VLC_ADD_LIBS([mpgatofixed32],[-L${with_mad}/lib])
2162   fi
2164   AC_ARG_WITH(mad-tree,
2165     [  --with-mad-tree=PATH    mad tree for static linking],[],[])
2166   if test "${with_mad_tree}" != "no" -a -n "${with_mad_tree}"
2167   then
2168     real_mad_tree="`cd ${with_mad_tree} 2>/dev/null && pwd`"
2169     if test -z "${real_mad_tree}"
2170     then
2171       dnl  The given directory can't be found
2172       AC_MSG_RESULT(no)
2173       AC_MSG_ERROR([${with_mad_tree} directory does not exist])
2174     fi
2175     dnl  Use a custom libmad
2176     AC_MSG_CHECKING(for mad.h in ${real_mad_tree})
2177     if test -f ${real_mad_tree}/mad.h
2178     then
2179       AC_MSG_RESULT(yes)
2180       VLC_ADD_CPPFLAGS([mpgatofixed32],[-I${real_mad_tree}])
2181       VLC_ADD_LIBS([mpgatofixed32],[-L${real_mad_tree}/.libs])
2182       VLC_SAVE_FLAGS
2183       LDFLAGS="${LDFLAGS} ${LIBS_mpgatofixed32}"
2184       AC_CHECK_LIB(mad, mad_bit_init, [
2185         VLC_ADD_PLUGIN([mpgatofixed32])
2186         VLC_ADD_LIBS([mpgatofixed32],[-lmad])
2187         ],[ AC_MSG_ERROR([the specified tree has not been compiled ])
2188       ],[])
2189       VLC_RESTORE_FLAGS
2190     else
2191       AC_MSG_RESULT(no)
2192       AC_MSG_ERROR([the specified tree does not have mad.h])
2193     fi
2194   else
2195     VLC_SAVE_FLAGS
2196     CPPFLAGS="${CPPFLAGS} ${CPPFLAGS_mpgatofixed32}"
2197     LDFLAGS="${LDFLAGS} ${LIBS_mpgatofixed32}"
2198     AC_CHECK_HEADERS(mad.h, ,
2199       [ 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.]) ])
2200     AC_CHECK_LIB(mad, mad_bit_init, [
2201       VLC_ADD_PLUGIN([mpgatofixed32])
2202       VLC_ADD_LIBS([mpgatofixed32],[-lmad])],
2203       [ AC_MSG_ERROR([Cannot find libmad library...]) ])
2204     VLC_RESTORE_FLAGS
2205   fi
2209 AC_ARG_ENABLE(merge-ffmpeg,
2210 [  --enable-merge-ffmpeg   merge FFmpeg-based plugins (default disabled)],, [
2211   enable_merge_ffmpeg="no"
2213 AM_CONDITIONAL([MERGE_FFMPEG], [test "$enable_merge_ffmpeg" != "no"])
2215 VLC_SAVE_FLAGS
2216 LDFLAGS="${LDFLAGS} -Wl,-Bsymbolic"
2217 AC_CACHE_CHECK([if linker supports -Bsymbolic],
2218   [ac_cv_ld_bsymbolic],
2219   [AC_TRY_LINK([],,ac_cv_ld_bsymbolic=yes,ac_cv_ld_bsymbolic=no)])
2220 VLC_RESTORE_FLAGS
2223 dnl  avcodec decoder/encoder plugin
2225 AC_ARG_ENABLE(avcodec,
2226 [  --enable-avcodec        libavcodec codec (default enabled)])
2227 AS_IF([test "${enable_avcodec}" != "no"], [
2228   PKG_CHECK_MODULES(AVCODEC,[libavcodec >= 53.34.0 libavutil >= 51.22.0], [
2229     PKG_CHECK_EXISTS([libavcodec < 55],, [
2230       AC_MSG_ERROR([libavcodec versions 55 and later are not supported yet.])
2231     ])
2232     VLC_SAVE_FLAGS
2233     CPPFLAGS="${CPPFLAGS} ${AVCODEC_CFLAGS}"
2234     CFLAGS="${CFLAGS} ${AVCODEC_CFLAGS}"
2235     AC_CHECK_HEADERS(libavcodec/avcodec.h)
2236     AC_CHECK_HEADERS(libavutil/avutil.h)
2237     VLC_ADD_PLUGIN([avcodec])
2238     VLC_ADD_LIBS([avcodec],[$AVCODEC_LIBS])
2239     AS_IF([test "${ac_cv_ld_bsymbolic}" != "no"], [
2240       VLC_ADD_LIBS([avcodec],[-Wl,-Bsymbolic])
2241     ])
2242     VLC_ADD_CFLAGS([avcodec],[$AVCODEC_CFLAGS])
2243     VLC_RESTORE_FLAGS
2244     have_avcodec="yes"
2245   ],[
2246     AC_MSG_ERROR([${AVCODEC_PKG_ERRORS}. Pass --disable-avcodec to ignore this error.])
2247   ])
2248 ], [
2249   have_avcodec="no"
2253 dnl libva needs avcodec
2255 AC_ARG_ENABLE(libva,
2256   [  --enable-libva          VAAPI GPU decoding support (libVA) (default auto)])
2258 AS_IF([test "${enable_libva}" = "yes" -a "${have_avcodec}" != "yes" ], [
2259   AC_MSG_ERROR([--enable-libva and --disable-avcodec options are mutually exclusive. Use --enable-avcodec.])
2261 have_avcodec_vaapi="no"
2262 AS_IF([test "${enable_libva}" != "no"], [
2263   PKG_CHECK_MODULES(LIBVA, [libva libva-x11], [
2264     VLC_SAVE_FLAGS
2265     CPPFLAGS="${CPPFLAGS} ${AVCODEC_CFLAGS}"
2266     CFLAGS="${CFLAGS} ${AVCODEC_CFLAGS}"
2267     AC_CHECK_HEADERS(libavcodec/vaapi.h, [
2268       AC_MSG_NOTICE([VAAPI acceleration activated])
2269       have_avcodec_vaapi="yes"
2270     ],[
2271       AS_IF([test -n "${enable_libva}"], [
2272         AC_MSG_ERROR([libva is present but libavcodec/vaapi.h is missing])
2273       ], [
2274         AC_MSG_WARN([libva is present but libavcodec/vaapi.h is missing ])
2275       ])
2276     ])
2277     VLC_RESTORE_FLAGS
2278   ],[
2279     AS_IF([test -n "${enable_libva}"], [
2280       AC_MSG_ERROR([${LIBVA_PKG_ERRORS}.])
2281     ], [
2282       AC_MSG_WARN([${LIBVA_PKG_ERRORS}.])
2283     ])
2284   ])
2286 AM_CONDITIONAL([HAVE_AVCODEC_VAAPI], [test "${have_avcodec_vaapi}" = "yes"])
2289 dnl dxva2 needs avcodec
2291 AC_ARG_ENABLE(dxva2,
2292   [  --enable-dxva2          DxVA2 GPU decoding support (default auto)])
2294 have_avcodec_dxva2="no"
2295 AS_IF([test "${enable_dxva2}" != "no"], [
2296   if test "${SYS}" = "mingw32"; then
2297   AS_IF([test "x${have_avcodec}" = "xyes"], [
2298     AC_CHECK_HEADERS(dxva2api.h,
2299       [
2300         AC_CHECK_HEADERS(libavcodec/dxva2.h, [
2301            AC_MSG_NOTICE([DxVA2 acceleration activated])
2302            have_avcodec_dxva2="yes"
2303         ],[
2304     AS_IF([test "${enable_dxva2}" = "yes"],
2305           [AC_MSG_ERROR([dxva2 is present but libavcodec/dxva2.h is missing])],
2306               [AC_MSG_WARN([dxva2 is present but libavcodec/dxva2.h is missing ])])
2307         ], [#undef _WIN32_WINNT
2308             /* DXVA2 is only available in Vista and above */
2309             #define _WIN32_WINNT 0x600])
2310       ],[
2311     AS_IF([test "${enable_dxva2}" = "yes"],
2312               [AC_MSG_ERROR([Could not find required dxva2api.h])],
2313               [AC_MSG_WARN([dxva2api.h not found])])
2314       ])
2315   ],[
2316     AS_IF([test "x${enable_dxva2}" != "x"], [
2317       AC_MSG_ERROR([--enable-dxva2 and --disable-avcodec options are mutually exclusive.])
2318     ])
2319   ])
2320   fi
2322 AM_CONDITIONAL([HAVE_AVCODEC_DXVA2], [test "${have_avcodec_dxva2}" = "yes"])
2325 dnl vda needs avcodec
2327 AC_ARG_ENABLE(vda,
2328   [  --enable-vda          VDA  support (default auto)])
2330 have_avcodec_vda="no"
2331 AS_IF([test "${enable_vda}" != "no"], [
2332   if test "${SYS}" = "darwin"; then
2333   AS_IF([test "x${have_avcodec}" = "xyes"], [
2334     AC_CHECK_HEADERS(VideoDecodeAcceleration/VDADecoder.h,
2335       [
2336         AC_CHECK_HEADERS(libavcodec/vda.h, [
2337            have_avcodec_vda="yes"
2338         ],[
2339         AS_IF([test "${enable_vda}" = "yes"],
2340               [AC_MSG_ERROR([vda is present but libavcodec/vda.h is missing])],
2341               [AC_MSG_WARN([vda is present but libavcodec/vda.h is missing ])])
2342         ])
2343   ],[
2344         AS_IF([test "${enable_vda}" = "yes"],
2345               [AC_MSG_ERROR([Could not find required VideoDecodeAcceleration/VDADecoder.h])],
2346               [AC_MSG_WARN([VideoDecodeAcceleration/VDADecoder.h not found])])
2347       ])
2348   ],[
2349     AS_IF([test "x${enable_vda}" != "x"], [
2350       AC_MSG_ERROR([--enable-vda and --disable-avcodec options are mutually exclusive.])
2351     ])
2352  ])
2353   fi
2355 AM_CONDITIONAL([HAVE_AVCODEC_VDA], [test "${have_avcodec_vda}" = "yes"])
2358 dnl stream_out switcher needs libavcodec
2360 AC_ARG_ENABLE(switcher,
2361   [  --enable-switcher       Stream-out switcher plugin (default disabled)])
2362 AS_IF([test "${enable_switcher}" = "yes"], [
2363   AS_IF([test "x${have_avcodec}" = "xyes"], [
2364     VLC_ADD_PLUGIN([stream_out_switcher])
2365     VLC_ADD_LIBS([stream_out_switcher],[$AVCODEC_LIBS $AVUTIL_LIBS $LIBM])
2366     VLC_ADD_CFLAGS([stream_out_switcher],[$AVCODEC_CFLAGS $AVUTIL_CFLAGS])
2367   ],[AC_MSG_ERROR([Stream_out switcher depends on avcodec])
2368   ])
2373 dnl  avformat demuxer/muxer plugin
2376 AC_ARG_ENABLE(avformat,
2377 [  --enable-avformat       libavformat containers (default enabled)],, [
2378   enable_avformat="${have_avcodec}"
2380 if test "${enable_avformat}" != "no"
2381 then
2382   PKG_CHECK_MODULES(AVFORMAT,[libavformat >= 53.21.0 libavcodec libavutil],
2383     [
2384       VLC_SAVE_FLAGS
2385       CPPFLAGS="${CPPFLAGS} ${AVFORMAT_CFLAGS}"
2386       CFLAGS="${CFLAGS} ${AVFORMAT_CFLAGS}"
2387       AC_CHECK_HEADERS(libavformat/avformat.h libavformat/avio.h)
2388       AC_CHECK_HEADERS(libavutil/avutil.h)
2389       AS_IF([test "$enable_merge_ffmpeg" = "no"], [
2390         VLC_ADD_PLUGIN([avformat access_avio])
2391         VLC_ADD_LIBS([access_avio],[$AVFORMAT_LIBS $AVUTIL_LIBS])
2392         VLC_ADD_CFLAGS([access_avio],[$AVFORMAT_CFLAGS $AVUTIL_CFLAGS])
2393         AS_IF([test "${ac_cv_ld_bsymbolic}" != "no"], [
2394           VLC_ADD_LDFLAGS([avformat access_avio],[-Wl,-Bsymbolic])
2395         ])
2396       ], [
2397         VLC_ADD_LIBS([avcodec],[$AVFORMAT_LIBS $AVUTIL_LIBS])
2398         VLC_ADD_CFLAGS([avcodec],[$AVFORMAT_CFLAGS $AVUTIL_CFLAGS])
2399       ])
2400       VLC_RESTORE_FLAGS
2401     ],[
2402       AC_MSG_ERROR([${AVFORMAT_PKG_ERRORS}. Pass --disable-avformat to ignore this error.])
2403   ])
2407 dnl  swscale image scaling and conversion plugin
2410 AC_ARG_ENABLE(swscale,
2411   AS_HELP_STRING([--enable-swscale],[libswscale image scaling and conversion
2412           (default enabled)]))
2413 if test "${enable_swscale}" != "no"
2414 then
2415   PKG_CHECK_MODULES(SWSCALE,[libswscale],
2416     [
2417       VLC_SAVE_FLAGS
2418       CPPFLAGS="${CPPFLAGS} ${SWSCALE_CFLAGS}"
2419       CFLAGS="${CFLAGS} ${SWSCALE_CFLAGS}"
2420       AC_CHECK_HEADERS(libswscale/swscale.h)
2421       VLC_ADD_PLUGIN([swscale])
2422       VLC_ADD_LIBS([swscale],[$SWSCALE_LIBS])
2423       VLC_ADD_CFLAGS([swscale],[$SWSCALE_CFLAGS])
2424       AS_IF([test "${ac_cv_ld_bsymbolic}" != "no"], [
2425         VLC_ADD_LIBS([swscale],[-Wl,-Bsymbolic])
2426       ])
2427       VLC_RESTORE_FLAGS
2428     ],[
2429       AC_MSG_ERROR([${SWSCALE_PKG_ERRORS}. Pass --disable-swscale to ignore this error. Proper software scaling and some video chroma conversion will be missing.])
2430   ])
2434 dnl  postproc plugin
2437 AC_ARG_ENABLE(postproc,
2438 [  --enable-postproc       libpostproc image post-processing (default auto)])
2439 if test "${enable_postproc}" != "no"
2440 then
2441   PKG_CHECK_MODULES(POSTPROC,[libpostproc libavutil],
2442     [
2443       VLC_SAVE_FLAGS
2444       CPPFLAGS="${CPPFLAGS} ${POSTPROC_CFLAGS}"
2445       CFLAGS="${CFLAGS} ${POSTPROC_CFLAGS}"
2446       AC_CHECK_HEADERS(postproc/postprocess.h)
2447       VLC_ADD_PLUGIN([postproc])
2448       VLC_ADD_LIBS([postproc],[$POSTPROC_LIBS $AVUTIL_LIBS])
2449       VLC_ADD_CFLAGS([postproc],[$POSTPROC_CFLAGS $AVUTIL_CFLAGS])
2450       VLC_RESTORE_FLAGS
2451     ],[
2452       AC_MSG_WARN([${POSTPROC_PKG_ERRORS}.])
2453   ])
2457 dnl  faad decoder plugin
2459 AC_ARG_ENABLE(faad,
2460 [  --enable-faad           faad codec (default auto)])
2461 if test "${enable_faad}" != "no"; then
2462   AC_ARG_WITH(faad-tree,  [  --with-faad-tree=PATH   faad tree for static linking])
2463   if test -n "${with_faad_tree}"; then
2464     AC_MSG_CHECKING(for libfaad.a in ${with_faad_tree})
2465     real_faad_tree="`cd ${with_faad_tree} 2>/dev/null && pwd`"
2466     if test -z "${real_faad_tree}"; then
2467       dnl  The given directory can't be found
2468       AC_MSG_RESULT(no)
2469       AC_MSG_ERROR([cannot cd to ${with_faad_tree}])
2470     fi
2471     if test -f "${real_faad_tree}/libfaad/.libs/libfaad.a"; then
2472       dnl  Use the custom faad
2473       AC_MSG_RESULT(${real_faad_tree}/libfaad/.libs/libfaad.a)
2474       VLC_ADD_PLUGIN([faad])
2475       VLC_ADD_LIBS([faad],[${real_faad_tree}/libfaad/.libs/libfaad.a])
2476       VLC_ADD_CPPFLAGS([faad],[-I${real_faad_tree}/include])
2477     else
2478       dnl  The given libfaad wasn't built
2479       AC_MSG_RESULT(no)
2480       AC_MSG_ERROR([cannot find ${real_faad_tree}/libfaad/.libs/libfaad.a, make sure you compiled libfaad in ${with_faad_tree}])
2481     fi
2482   else
2483     VLC_SAVE_FLAGS
2484     CPPFLAGS="${CPPFLAGS} ${CPPFLAGS_faad}"
2485     LDFLAGS="${LDFLAGS} ${LIBS_faad}"
2486     AC_CHECK_HEADERS(faad.h,
2487       [ AC_CHECK_LIB(faad, faacDecOpen, [
2488           VLC_ADD_PLUGIN([faad])
2489           VLC_ADD_LIBS([faad],[-lfaad]) ], [
2490             AC_CHECK_LIB(faad, NeAACDecOpen, [
2491               VLC_ADD_PLUGIN([faad])
2492               VLC_ADD_LIBS([faad],[-lfaad]) ], [
2493                 AS_IF([test "${enable_faad}" = "yes"],
2494                 [ AC_MSG_ERROR([Cannot find libfaad library...]) ],
2495                 [ AC_MSG_WARN([Cannot find libfaad library...]) ]) ]) ])
2496       ] , [ AS_IF([test "${enable_faad}" = "yes"],
2497         [ AC_MSG_ERROR([Cannot find development headers for libfaad...]) ],
2498         [ AC_MSG_WARN([Cannot find development headers for libfaad...]) ]) ])
2499     VLC_RESTORE_FLAGS
2500   fi
2504 dnl twolame encoder plugin
2506 PKG_ENABLE_MODULES_VLC([TWOLAME], [], [twolame], [MPEG Audio Layer 2 encoder], [auto], [], [], [ -DLIBTWOLAME_STATIC])
2509 dnl fdk-aac encoder plugin
2511 PKG_ENABLE_MODULES_VLC([FDKAAC], [], [fdk-aac], [FDK-AAC encoder], [disabled])
2514 dnl  QuickTime plugin
2516 AC_ARG_ENABLE(quicktime,
2517   [  --enable-quicktime      QuickTime module (deprecated)])
2518 if test "${enable_quicktime}" = "yes"; then
2519   if test "${SYS}" = "mingw32"; then
2520     VLC_ADD_PLUGIN([quicktime])
2521   else
2522   AC_CHECK_HEADERS(QuickTime/QuickTime.h,
2523     [ VLC_ADD_PLUGIN([quicktime])
2524       VLC_ADD_LIBS([quicktime],[-Wl,-framework,QuickTime,-framework,Carbon])
2525     ], [ AC_MSG_ERROR([cannot find QuickTime headers]) ])
2526   fi
2530 dnl A52/AC3 decoder plugin
2532 AC_ARG_ENABLE(a52,
2533   [  --enable-a52            A/52 support with liba52 (default enabled)])
2534 if test "${enable_a52}" != "no"
2535 then
2536   AC_ARG_WITH(a52,
2537     [  --with-a52=PATH         a52 headers and libraries])
2538   AC_ARG_WITH(a52-tree,
2539     [  --with-a52-tree=PATH    a52dec tree for static linking ],[],[])
2540   if test "${with_a52_tree}" != "no" -a -n "${with_a52_tree}"
2541   then
2542     real_a52_tree="`cd ${with_a52_tree} 2>/dev/null && pwd`"
2543     if test -z "${real_a52_tree}"
2544     then
2545       dnl  The given directory can't be found
2546       AC_MSG_RESULT(no)
2547       AC_MSG_ERROR([${with_a52_tree} directory does not exist])
2548     fi
2549     dnl  Use a custom a52dec
2550     AC_MSG_CHECKING(for a52.h in ${real_a52_tree}/include)
2551     if test -f ${real_a52_tree}/include/a52.h
2552     then
2553       AC_MSG_RESULT(yes)
2554       VLC_ADD_CPPFLAGS([a52tofloat32],[-I${real_a52_tree}])
2555       VLC_ADD_LIBS([a52tofloat32],[-L${real_a52_tree}/liba52/.libs])
2556       VLC_SAVE_FLAGS
2557       LDFLAGS="${LDFLAGS} ${LIBS_a52tofloat32}"
2558       AC_CHECK_LIB(a52, a52_free, [
2559         VLC_ADD_PLUGIN([a52tofloat32])
2560         VLC_ADD_CPPFLAGS([a52tofloat32],[-DUSE_A52DEC_TREE])
2561         VLC_ADD_LIBS([a52tofloat32],[-la52])
2562         ],[
2563         if test -f ${real_a52_tree}/liba52/.libs/liba52.a
2564         then
2565           AC_MSG_ERROR([make sure you have at least a52dec-0.7.3 ($real_a52_tree)])
2566         else
2567           AC_MSG_ERROR([the specified tree has not been compiled])
2568         fi
2569       ])
2570     else
2571       AC_MSG_RESULT(no)
2572       AC_MSG_ERROR([the specified tree does not have a52.h])
2573     fi
2574   else
2575     if test -z "${with_a52}"
2576     then
2577       LDFLAGS_test=""
2578       CPPFLAGS_test=""
2579     else
2580       LDFLAGS_test="-L${with_a52}/lib"
2581       CPPFLAGS_test="-I${with_a52}/include"
2582     fi
2583     VLC_SAVE_FLAGS
2584     CPPFLAGS="${CPPFLAGS} ${CPPFLAGS_test} ${CPPFLAGS_a52tofloat32}"
2585     LDFLAGS="${LDFLAGS} ${LDFLAGS_test} ${LIBS_a52tofloat32}"
2586     AC_CHECK_HEADERS(a52dec/a52.h, [
2587       AC_CHECK_LIB(a52, a52_free, [
2588         VLC_ADD_PLUGIN([a52tofloat32])
2589         VLC_ADD_LIBS([a52tofloat32],[${LDFLAGS_test} -la52])
2590         VLC_ADD_CPPFLAGS([a52tofloat32],[${CPPFLAGS_test}])
2591       ],[
2592         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.])
2593         ], [$LIBM])
2594     ],[
2595       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.])
2596     ])
2597     VLC_RESTORE_FLAGS
2598   fi
2602 dnl DTS Coherent Acoustics decoder plugin
2604 PKG_ENABLE_MODULES_VLC([DCA], [dtstofloat32], [libdca >= 0.0.5], [DTS Coherent Acoustics support with libdca], [auto])
2607 dnl  Flac plugin
2609 PKG_ENABLE_MODULES_VLC([FLAC], [], [flac], [libflac decoder/encoder support], [auto])
2612 dnl  Libmpeg2 plugin
2614 PKG_ENABLE_MODULES_VLC([LIBMPEG2], [], [libmpeg2 > 0.3.2], [libmpeg2 decoder support], [auto])
2617 dnl  Vorbis plugin
2619 PKG_ENABLE_MODULES_VLC([VORBIS], [], [ogg vorbis >= 1.1 vorbisenc >= 1.1], [Vorbis decoder and encoder], [auto])
2622 dnl  Tremor plugin
2624 AC_ARG_ENABLE(tremor,
2625   [  --enable-tremor         Tremor decoder support (default disabled)])
2626 if test "${enable_tremor}" = "yes"
2627 then
2628   AC_CHECK_HEADERS(tremor/ivorbiscodec.h, [
2629     VLC_ADD_PLUGIN([tremor])
2630     VLC_ADD_LIBS([tremor],[-lvorbisidec -logg])
2631    ],[])
2635 dnl  Speex plugins
2637 PKG_ENABLE_MODULES_VLC([SPEEX], [], [ogg speex >= 1.0.5], [Speex support], [auto])
2638 have_speexdsp="no"
2639 AS_IF([test "${enable_speex}" != "no"], [
2640   PKG_CHECK_MODULES([SPEEXDSP], [speexdsp], [
2641     have_speexdsp="yes"
2642   ], [
2643     AC_MSG_WARN([${SPEEXDSP_PKG_ERRORS}.])
2644   ])
2646 AM_CONDITIONAL([HAVE_SPEEXDSP], [test "$have_speexdsp" = "yes"])
2649 dnl  Opus plugin
2651 PKG_ENABLE_MODULES_VLC([OPUS], [], [ogg opus], [Opus support], [auto])
2654 dnl  theora decoder plugin
2656 PKG_ENABLE_MODULES_VLC([THEORA], [], [ogg theoradec >= 1.0 theoraenc], [experimental theora codec], [auto])
2659 dnl  dirac encoder plugin
2661 PKG_ENABLE_MODULES_VLC([DIRAC], [], [dirac >= 0.10.0], [dirac encoder], [auto])
2664 dnl  schroedinger decoder plugin (for dirac format video)
2666 PKG_ENABLE_MODULES_VLC([SCHROEDINGER], [], [schroedinger-1.0 >= 1.0.10], [dirac decoder and encoder using schroedinger], [auto])
2669 dnl  PNG decoder module
2671 AC_ARG_ENABLE(png,
2672   [  --enable-png            PNG support (default enabled)])
2673 AS_IF([test "${enable_png}" != "no"], [
2674 AC_CHECK_HEADERS(png.h, [
2675   VLC_SAVE_FLAGS
2676   LDFLAGS="${LDFLAGS} -lz $LIBM"
2677   AC_CHECK_LIB(png, png_set_rows, [
2678     VLC_ADD_LIBS([png],[-lpng -lz $LIBM])
2679     VLC_ADD_PLUGIN([png])
2680   ], [], [-lz $LIBM])
2681   VLC_RESTORE_FLAGS
2682   ])
2686 dnl H264 encoder plugin (10-bit lib264)
2688 AC_ARG_ENABLE(x26410b,
2689   [  --enable-x26410b           H264 10-bit encoding support with static libx264 (default disabled)])
2690 if test "${enable_x26410b}" != "no"; then
2691 AC_ARG_WITH(x26410b-tree,
2692   [ --with-x26410b-tree=PATH      H264 10-bit encoding module with libx264 (static linking)],[],[])
2693   if test "${with_x26410b_tree}" != "no" -a -n "${with_x26410b_tree}"
2694   then
2695     real_x26410b_tree="̧`cd ${with_x26410b_tree} 2>/dev/null && pwd`"
2696     if test -z "${real_x26410b_tree}"
2697     then
2698       AC_MSG_RESULT(no)
2699       AC_MSG_ERROR([${with_x26410b_tree} directory does not exist])
2700     fi
2701     AC_MSG_CHECKING(for x264.h in ${real_x26410b_tree})
2702     if test -f ${with_x26410b_tree}/x264_config.h
2703     then
2704       AC_MSG_RESULT(yes)
2705       AC_MSG_CHECKING(for 10-bit build of x264)
2706       if grep -q "BIT_DEPTH.*10"  ${with_x26410b_tree}/x264_config.h ;then
2707         AC_MSG_RESULT(yes)
2708         VLC_ADD_PLUGIN([x26410b])
2709         VLC_ADD_CFLAGS([x26410b],[-I${with_x26410b_tree}])
2710         VLC_ADD_LIBS([x26410b],[-L${with_x26410b_tree} -lm -lpthread -lx264])
2711       else
2712         AC_MSG_RESULT(no)
2713         AC_MSG_ERROR([${with_x26410b_tree} isnt build 10-bit])
2714       fi
2715     else
2716       AC_MSG_RESULT(no)
2717       AC_MSG_ERROR([${with_x26410b_tree} doesnt have x264_config.h])
2718     fi
2719   else
2720     PKG_CHECK_MODULES(X26410B, x26410b, [
2721         VLC_ADD_PLUGIN([x26410b])
2722         VLC_ADD_LDFLAGS([x26410b],[${X26410B_LIBS}])
2723         AS_IF([test "${ac_cv_ld_bsymbolic}" != "no"], [
2724           VLC_ADD_LIBS([x26410b],[-Wl,-Bsymbolic])
2725         ])
2726         VLC_ADD_CFLAGS([x26410b],[${X26410B_CFLAGS}])
2727         if echo ${X26410B_LIBS} |grep -q 'pthreadGC2'; then
2728           VLC_ADD_CFLAGS([x26410b], [-DPTW32_STATIC_LIB])
2729         fi
2730     ], [
2731        if test "${enable_x26410b}" = "yes"; then
2732         AC_MSG_ERROR([x26410b module doesn't work without staticly compiled libx264.a])
2733        fi
2734     ])
2735   fi
2740 dnl H264 encoder plugin (using libx264)
2742 AC_ARG_ENABLE(x264,
2743   [  --enable-x264           H264 encoding support with libx264 (default enabled)])
2744 if test "${enable_x264}" != "no"; then
2745   AC_ARG_WITH(x264-tree,
2746     [  --with-x264-tree=PATH   x264 tree for static linking ],[],[])
2747   if test "${with_x264_tree}" != "no" -a -n "${with_x264_tree}"
2748   then
2749     real_x264_tree="`cd ${with_x264_tree} 2>/dev/null && pwd`"
2750     if test -z "${real_x264_tree}"
2751     then
2752       dnl  The given directory can't be found
2753       AC_MSG_RESULT(no)
2754       AC_MSG_ERROR([${with_x264_tree} directory does not exist])
2755     fi
2756     dnl  Use a custom libx264
2757     AC_MSG_CHECKING(for x264.h in ${real_x264_tree})
2758     if test -f ${real_x264_tree}/x264.h
2759     then
2760       AC_MSG_RESULT(yes)
2761       VLC_ADD_CPPFLAGS([x264],[-I${real_x264_tree}])
2762       VLC_ADD_LIBS([x264],[-L${real_x264_tree}])
2763       PKG_CHECK_MODULES(X264,x264, [
2764         VLC_ADD_PLUGIN([x264])
2765         VLC_ADD_LIBS([x264],[${X264_LIBS}])
2766         VLC_ADD_CFLAGS([x264],[${X264_CFLAGS}])
2767         if echo ${X264_LIBS} |grep -q 'pthreadGC2'; then
2768           VLC_ADD_CFLAGS([x264], [-DPTW32_STATIC_LIB])
2769         fi
2770       ],[
2771         AC_MSG_ERROR([the specified tree has not been compiled])
2772       ])
2773     else
2774       AC_MSG_RESULT(no)
2775       AC_MSG_ERROR([the specified tree does not have x264.h])
2776     fi
2777   else
2778       PKG_CHECK_MODULES(X264,x264 >= 0.86, [
2779         VLC_ADD_PLUGIN([x264])
2780         VLC_ADD_LDFLAGS([x264],[${X264_LIBS}])
2782         AS_IF([test "${ac_cv_ld_bsymbolic}" != "no"], [
2783           VLC_ADD_LIBS([x264],[-Wl,-Bsymbolic])
2784         ])
2786         VLC_ADD_CFLAGS([x264],[${X264_CFLAGS}])
2787         if echo ${X264_LIBS} |grep -q 'pthreadGC2'; then
2788           VLC_ADD_CFLAGS([x264], [-DPTW32_STATIC_LIB])
2789         fi
2790       ],[
2791         if test "${enable_x264}" = "yes"; then
2792             AC_MSG_ERROR([${X264_PKG_ERRORS}: you may get it from http://www.videolan.org/x264.html])
2793           fi
2794       ])
2795   fi
2799 dnl libfluidsynth (MIDI synthetizer) plugin
2801 PKG_ENABLE_MODULES_VLC([FLUIDSYNTH], [], [fluidsynth >= 1.1.2], [MIDI synthetiser with libfluidsynth], [auto])
2804 dnl Teletext Modules
2805 dnl vbi decoder plugin (using libzbvi)
2806 dnl telx module
2807 dnl uncompatible
2809 AC_ARG_ENABLE(zvbi,
2810   AS_HELP_STRING([--enable-zvbi],[VBI (inc. Teletext) decoding support with
2811                   libzvbi (default enabled)]))
2812 AC_ARG_ENABLE(telx,
2813   AS_HELP_STRING([--enable-telx],[Teletext decoding module (conflicting with
2814                   zvbi) (default enabled if zvbi is absent)]))
2816 AS_IF( [test "${enable_zvbi}" != "no"],[
2817     PKG_CHECK_MODULES(ZVBI, [zvbi-0.2 >= 0.2.28],
2818         [
2819           VLC_ADD_LIBS([zvbi],[$ZVBI_LIBS])
2820           if test "${SYS}" = "mingw32"; then
2821               VLC_ADD_LIBS([zvbi],[ -lpthreadGC2])
2822           fi
2823           VLC_ADD_CFLAGS([zvbi],[$ZVBI_CFLAGS])
2824           VLC_ADD_PLUGIN([zvbi])
2825           AC_DEFINE(ZVBI_COMPILED, 1, [Define if the zvbi module is built])
2826           AS_IF( [test "${enable_telx}" = "yes"],[
2827                   AC_MSG_WARN([The zvbi and telx modules are incompatible. Using zvbi.])
2828                   ])
2829         ],[
2830           AC_MSG_WARN([${ZVBI_PKG_ERRORS}. Enabling the telx module instead.])
2831         ])
2832     ])
2833 AS_IF( [test "${enable_telx}" != "no" ],[
2834   VLC_ADD_PLUGIN([telx])
2835   ])
2838 dnl libass subtitle rendering module
2840 AC_ARG_ENABLE(libass,
2841   [  --enable-libass         Subtitle support using libass (default enabled)])
2842 AS_IF( [test "${enable_libass}" != "no"], [
2843   PKG_CHECK_MODULES(LIBASS, [libass >= 0.9.8],
2844       [
2845         VLC_ADD_LIBS([libass],[$LIBASS_LIBS])
2846         VLC_ADD_CFLAGS([libass],[$LIBASS_CFLAGS])
2847         VLC_ADD_PLUGIN([libass])
2849         AC_CHECK_HEADERS(fontconfig/fontconfig.h,
2850           [VLC_ADD_CPPFLAGS([libass],[-DHAVE_FONTCONFIG])
2851            VLC_ADD_LIBS([libass],[-lfontconfig])
2852        ])
2853       ],[
2854         AC_MSG_WARN([${LIBASS_PKG_ERRORS}.])
2855       ])
2856   ])
2859 dnl  kate decoder plugin
2861 PKG_ENABLE_MODULES_VLC([KATE], [], [kate >= 0.3.0], [kate codec], [auto])
2864 dnl  tiger rendering for kate decoder plugin
2866 AC_ARG_ENABLE(tiger,
2867 [  --enable-tiger          Tiger rendering library for Kate streams (default auto)])
2868 AS_IF([test "${enable_tiger}" != "no"], [
2869   PKG_CHECK_MODULES(TIGER,[tiger >= 0.3.1], [
2870       AC_DEFINE(HAVE_TIGER, 1, [Define if libtiger is available.])
2871       VLC_ADD_CFLAGS([kate],[$TIGER_CFLAGS])
2872       VLC_ADD_LIBS([kate],[$TIGER_LIBS]) ],[
2873         AS_IF([test -n "${enable_tiger}"], [
2874           AC_MSG_ERROR([${TIGER_PKG_ERRORS}.])
2875         ])
2876   ])
2881 dnl  Video plugins
2884 EXTEND_HELP_STRING([Video plugins:])
2887 dnl  OpenGL
2889 PKG_CHECK_MODULES([GL], [gl], [
2890   have_gl="yes"
2891 ], [
2892   AC_CHECK_HEADER([GL/gl.h], [
2893     have_gl="yes"
2894     GL_CFLAGS=""
2895     GL_LIBS="-lGL"
2896   ], [
2897     have_gl="no"
2898   ])
2901 dnl OpenGL ES 2: depends on EGL 1.1 and is currently unfinished
2902 dnl PKG_ENABLE_MODULES_VLC([GLES2], [], [glesv2], [OpenGL ES v2 support], [auto])
2903 dnl OpenGL ES 1: depends on EGL 1.0 and is currently broken
2904 dnl PKG_ENABLE_MODULES_VLC([GLES1], [], [glesv1_cm], [OpenGL ES v1 support], [auto])
2906 AC_ARG_ENABLE(egl,
2907   [  --enable-egl            OpenGL support through EGL (default disabled)],, [
2908   enable_egl="no"
2910 AS_IF([test "$enable_egl" != "no"], [
2911   PKG_CHECK_MODULES([EGL], [egl], [
2912     VLC_ADD_PLUGIN([gl])
2913     VLC_ADD_PLUGIN([egl])
2914   ])
2918 dnl  Xlib
2921 AC_PATH_XTRA()
2922 AC_CHECK_HEADERS(X11/Xlib.h)
2925 dnl  X C Bindings modules
2927 AC_ARG_ENABLE(xcb,
2928   [  --enable-xcb            X11 support with XCB (default enabled)],, [
2929   AS_IF([test "${SYS}" != "mingw32" -a "${SYS}" != "darwin" -a "${SYS}" != "symbian"], [
2930     enable_xcb="yes"
2931   ], [
2932     enable_xcb="no"
2933   ])
2935 AC_ARG_ENABLE(xvideo,
2936   [  --enable-xvideo         XVideo support (default enabled)],, [
2937     enable_xvideo="$enable_xcb"
2939 AC_ARG_ENABLE(glx,
2940   [  --enable-glx            OpenGL support through GLX (default enabled)],, [
2941   enable_glx="$enable_xcb"
2944 have_xcb="no"
2945 AS_IF([test "${enable_xcb}" != "no"], [
2946   dnl libxcb
2947   PKG_CHECK_MODULES(XCB, [xcb >= 1.6])
2948   have_xcb="yes"
2949   PKG_CHECK_MODULES(XCB_SHM, [xcb-shm])
2950   PKG_CHECK_MODULES(XCB_COMPOSITE, [xcb-composite])
2952   AS_IF([test "${enable_xvideo}" != "no"], [
2953     PKG_CHECK_MODULES(XCB_XV, [xcb-xv >= 1.1.90.1], [
2954       VLC_ADD_PLUGIN([xcb_xv])
2955     ])
2956   ])
2958   PKG_CHECK_MODULES(XCB_RANDR, [xcb-randr >= 1.3], [
2959     VLC_ADD_PLUGIN([panoramix])
2960     VLC_ADD_LIBS([panoramix],[${XCB_RANDR_LIBS} ${XCB_LIBS}])
2961     VLC_ADD_CFLAGS([panoramix],[${XCB_RANDR_CFLAGS} ${XCB_CFLAGS}])
2962   ], [
2963     AC_MSG_WARN([${XCB_RANDR_PKG_ERRORS}. Panoramix filter will not be supported.])
2964   ])
2966   PKG_CHECK_MODULES(XPROTO, [xproto], [
2967     VLC_ADD_PLUGIN([xwd])
2969     dnl xcb-utils
2970     PKG_CHECK_MODULES(XCB_KEYSYMS, [xcb-keysyms >= 0.3.4], [
2971       VLC_ADD_PLUGIN([globalhotkeys])
2972       VLC_ADD_CFLAGS([xcb_window], [-DHAVE_XCB_KEYSYMS])
2973     ], [
2974       AC_MSG_WARN([${XCB_KEYSYMS_PKG_ERRORS}. Hotkeys will not work.])
2975     ])
2976   ], [
2977     AC_MSG_WARN([${XPROTO_PKG_ERRORS}. Hotkeys and XWD will not work.])
2978   ])
2980   AS_IF([test "${enable_glx}" != "no"], [
2981     AS_IF([test "${have_gl}" != "yes"], [
2982       AC_MSG_ERROR([${GL_PKG_ERRORS}. Pass --disable-glx if you do not need OpenGL X11 support.])
2983     ])
2984     VLC_ADD_PLUGIN([xcb_glx])
2985     VLC_ADD_PLUGIN([glx])
2986     VLC_ADD_PLUGIN([gl])
2987   ])
2989 AM_CONDITIONAL([HAVE_XCB], [test "${have_xcb}" = "yes"])
2993 dnl VDPAU needs X11 and avcodec
2995 AC_ARG_ENABLE(vdpau,
2996   [AS_HELP_STRING([--enable-vdpau],
2997     [VDPAU hardware decoder support (default auto)])])
2998 have_vdpau="no"
2999 AS_IF([test "${enable_vdpau}" != "no"], [
3000   PKG_CHECK_MODULES([VDPAU], [vdpau], [
3001     have_vdpau="yes"
3002     AS_IF([test "${no_x}" = "yes"], [
3003       AC_MSG_ERROR([VDPAU requires Xlib (X11).])
3004     ])
3005     AC_MSG_NOTICE([VDPAU acceleration activated])
3006   ], [
3007     AS_IF([test -n "${enable_vdpau}"], [
3008       AC_MSG_ERROR([${VDPAU_PKG_ERRORS}.])
3009     ])
3010   ])
3012 dnl AM_CONDITIONAL([HAVE_VDPAU], [test "${have_vdpau}" = "yes"])
3014 have_avcodec_vdpau="no"
3015 AS_IF([test "${have_vdpau}" = "yes"], [
3016   PKG_CHECK_EXISTS([libavutil >= 0.52.4 libavcodec >= 54.36.0], [
3017     have_avcodec_vdpau="yes"
3018   ], [
3019     AS_IF([test -n "${enable_vdpau}"], [
3020       AC_MSG_ERROR([libavutil >= 0.52.4 and libavcodec >= 54.36.0 are required for VDPAU decoding.])
3021     ], [
3022       AC_MSG_WARN([libavutil >= 0.52.4 and libavcodec >= 54.36.0 are required for VDPAU decoding.])
3023     ])
3024   ])
3026 AM_CONDITIONAL([HAVE_AVCODEC_VDPAU], [test "${have_avcodec_vdpau}" = "yes"])
3030 dnl  SDL module
3032 AC_ARG_ENABLE(sdl,
3033   [  --enable-sdl            SDL support (default enabled)])
3034 AC_ARG_ENABLE(sdl-image,
3035   [  --enable-sdl-image      SDL image support (default enabled)])
3036 if test "${enable_sdl}" != "no"
3037 then
3038    PKG_CHECK_MODULES(SDL, [sdl >= 1.2.10], [
3039       # SDL on Darwin is heavily patched and can only run SDL_image
3040       if test "${SYS}" != "darwin"; then
3041         VLC_ADD_PLUGIN([vout_sdl])
3042       fi
3043       if test "${SYS}" != "mingw32" -a "${SYS}" != "os2"; then
3044         VLC_ADD_LIBS([vout_sdl],[${X_LIBS} ${X_PRE_LIBS} -lX11])
3045       fi
3046       VLC_ADD_CFLAGS([vout_sdl],[${SDL_CFLAGS}])
3047       VLC_ADD_LIBS([vout_sdl],[${SDL_LIBS}])
3049       # SDL_image
3050       AS_IF([ test "${enable_sdl_image}" != "no"],[
3051         PKG_CHECK_MODULES(SDL_IMAGE, [SDL_image >= 1.2.10], [
3052           VLC_ADD_PLUGIN([sdl_image])
3053           VLC_ADD_LIBS([sdl_image],[${SDL_IMAGE_LIBS}])
3054           VLC_ADD_CFLAGS([sdl_image], [${SDL_IMAGE_CFLAGS}])],
3055           [ AC_MSG_WARN([${SDL_IMAGE_PKG_ERRORS}. You should install it alongside your SDL package.])
3056           ])
3057       ])
3058    ],[
3059      AC_MSG_WARN([${SDL_PKG_ERRORS}.])
3060    ])
3065 dnl Mac Vout
3066 AC_ARG_ENABLE(macosx-vout,
3067   [  --enable-macosx-vout    Mac OS X video output module (default enabled on Mac OS X)])
3068 if test "x${enable_macosx_vout}" != "xno" &&
3069   (test "${SYS}" = "darwin" || test "${enable_macosx_vout}" = "yes")
3070 then
3071   VLC_ADD_LIBS([vout_macosx],[-Wl,-framework,Cocoa])
3072   VLC_ADD_LIBS([vout_macosx],[-Wl,-framework,OpenGL])
3073   VLC_ADD_PLUGIN([vout_macosx])
3078 dnl  freetype module
3080 AC_ARG_ENABLE(freetype,
3081   [  --enable-freetype       freetype support   (default auto)])
3082 AC_ARG_ENABLE(fribidi,
3083   [  --enable-fribidi        fribidi support    (default auto)])
3084 AC_ARG_ENABLE(fontconfig,
3085   [  --enable-fontconfig     fontconfig support (default auto)])
3087 if test "${enable_freetype}" != "no"; then
3088    PKG_CHECK_MODULES(FREETYPE, freetype2, [
3089       have_freetype=yes
3090       VLC_ADD_PLUGIN([freetype])
3091       VLC_ADD_CPPFLAGS([freetype skins2],[${FREETYPE_CFLAGS}])
3092       if test "${SYS}" = "mingw32"; then
3093         VLC_ADD_LIBS([freetype],[-liconv -lz])
3094       fi
3095       VLC_ADD_LIBS([freetype skins2],[${FREETYPE_LIBS}])
3097       AC_CHECK_HEADERS(Carbon/Carbon.h,
3098                        [VLC_ADD_LIBS([freetype],[-Wl,-framework,Carbon])])
3100       dnl fontconfig support
3101       if test "${SYS}" != "mingw32"; then
3102           if test "${enable_fontconfig}" != "no"; then
3103             AC_CHECK_HEADERS(fontconfig/fontconfig.h, [
3104               VLC_ADD_CPPFLAGS([freetype],[-DHAVE_FONTCONFIG])
3105               VLC_ADD_LIBS([freetype],[-lfontconfig])
3106             ],[AC_MSG_WARN([library fontconfig not found. Styles will be disabled in freetype])])
3107           fi
3108       else
3109           VLC_ADD_LIBS([freetype],[-lgdi32])
3110       fi
3112       dnl fribidi support
3113       if test "${enable_fribidi}" != "no"; then
3114         PKG_CHECK_MODULES(FRIBIDI, fribidi, [
3115           VLC_ADD_CPPFLAGS([freetype skins2], [${FRIBIDI_CFLAGS} -DHAVE_FRIBIDI])
3116           VLC_ADD_LIBS([freetype skins2], [${FRIBIDI_LIBS}])
3117         ],[AC_MSG_WARN([${FRIBIDI_PKG_ERRORS}. Bidirectional support will be disabled in FreeType.])])
3118       fi
3120   ],[
3121   have_freetype=no
3122   AS_IF([test -n "${enable_freetype}"],[
3123     AC_MSG_ERROR([${FREETYPE_PKG_ERRORS}. Install FreeType2 development or configure with --disable-freetype.])
3124     ])
3125   ])
3130 dnl  QuartzText vout module (iOS/Mac OS)
3132 AC_ARG_ENABLE(macosx-quartztext,
3133   [  --enable-macosx-quartztext   Mac OS X quartz text module (default enabled on Mac OS X)])
3134 if test "x${enable_macosx_quartztext}" != "xno" &&
3135   (test "${SYS}" = "darwin" || test "${enable_macosx_quartztext}" = "yes")
3136 then
3137   VLC_ADD_PLUGIN([quartztext])
3138   VLC_ADD_LIBS([quartztext],[-Wl,-framework,ApplicationServices])
3142 dnl  SVG module
3144 PKG_ENABLE_MODULES_VLC([SVG], [], [librsvg-2.0 >= 2.9.0], [SVG rendering library],[auto])
3147 dnl  android surface module
3149 AC_ARG_ENABLE(android-surface,
3150   [  --enable-android-surface   Android Surface video output module (default disabled)])
3151 if test "${enable_android_surface}" = "yes"; then
3152   if test "${HAVE_ANDROID}" = "1"; then
3153      VLC_ADD_PLUGIN([android_surface])
3154      VLC_ADD_LDFLAGS([android_surface], [-ldl])
3155   fi
3160 dnl  iOS vout module
3162 AC_ARG_ENABLE(ios-vout,
3163   [  --enable-ios-vout    iOS video output module (default disabled)])
3164 if test "${enable_ios_vout}" = "yes"
3165 then
3166   VLC_ADD_PLUGIN([vout_ios])
3167   VLC_ADD_CFLAGS([vout_ios], [-DUSE_OPENGL_ES=1])
3168   VLC_ADD_LIBS([vout_ios], [-Wl,-framework,OpenGLES,-framework,QuartzCore,-framework,UIKit,-framework,Foundation])
3172 dnl  Windows DirectX module
3175 if test "${SYS}" = "mingw32"
3176 then
3177   VLC_ADD_PLUGIN([panoramix])
3180 AC_ARG_ENABLE(directx,
3181   [AS_HELP_STRING([--enable-directx],
3182     [Microsoft DirectX support (default enabled on Windows)])],, [
3183   AS_IF([test "${SYS}" = "mingw32"], [
3184     enable_directx="yes"
3185   ], [
3186     enable_directx="no"
3187   ])
3189 have_directx="no"
3190 AS_IF([test "${enable_directx}" != "no"], [
3191   dnl DirectDraw
3192   AC_CHECK_HEADERS(ddraw.h, [
3193     have_directx="yes"
3194   ], [
3195     AC_MSG_ERROR([Cannot find DirectX headers!])
3196   ])
3198   dnl OpenGL
3199   AC_CHECK_HEADERS(GL/wglew.h, [
3200     VLC_ADD_PLUGIN([glwin32])
3201   ],, [
3202     #include <windows.h>
3203     #include <GL/gl.h>
3204   ])
3206   dnl Direct3D
3207   AC_CHECK_HEADERS(d3d9.h, [
3208     VLC_ADD_PLUGIN([direct3d])
3209   ])
3211   dnl Direct2D
3212   AC_CHECK_HEADERS(d2d1.h, [
3213     VLC_ADD_PLUGIN([direct2d])
3214   ])
3216 AM_CONDITIONAL([HAVE_DIRECTX], [test "$have_directx" = "yes"])
3219 dnl  Linux framebuffer module
3221 AC_CHECK_HEADER([linux/fb.h], [
3222   VLC_ADD_PLUGIN([fb])
3227 dnl  DirectFB module
3228 dnl  try to find using: 1 - given location; 2 - directfb-config; 3 - pkg-config
3229 dnl  TODO: support for static linking
3231 AC_ARG_ENABLE(directfb,
3232   [  --enable-directfb       DirectFB support (default disabled)])
3233 AC_ARG_WITH(directfb,
3234   [  --with-directfb=PATH    path to DirectFB headers and libraries])
3236 if test "${enable_directfb}" = "yes"; then
3237     have_directfb="false"
3238     CPPFLAGS_mydirectfb=
3239     LIBS_mydirectfb=
3240     if test "${with_directfb}" != "no" -a -n "${with_directfb}"; then
3241         dnl Trying the given location
3242         VLC_SAVE_FLAGS
3244         CPPFLAGS_new="-I${with_directfb}/include -D_REENTRANT -D_GNU_SOURCE"
3245         LIBS_new="-L${with_directfb}/lib/fusion/.libs/ -L${with_directfb}/lib/direct/.libs/ -L${with_directfb}/src/.libs/"
3247         CPPFLAGS="${CPPFLAGS} ${CPPFLAGS_new}"
3248         LIBS="${LIBS} ${LIBS_new}"
3250         dnl FIXME: too obscure
3251         AC_CHECK_HEADER([directfb.h], [
3252             AC_CHECK_LIB([direct],[direct_initialize], [
3253                 AC_CHECK_LIB([fusion], [fusion_enter], [
3254                     AC_CHECK_LIB([directfb], [DirectFBInit], have_directfb="true", have_directfb="false")
3255                 ], have_directfb="false")
3256             ], have_directfb="false")
3257         ], have_directfb="false")
3259         VLC_RESTORE_FLAGS
3261         if test "${have_directfb}" = "true"; then
3262             LIBS_mydirectfb="${LIBS_new} -lz $LIBDL -ldirectfb -lfusion -ldirect -lpthread"
3263             CPPFLAGS_mydirectfb="${CPPFLAGS_new}"
3264         fi
3265     else
3266         dnl Look for directfb-config
3267         AC_PATH_PROG(DIRECTFB_CONFIG, directfb-config, no, ${PATH})
3268         if test "${DIRECTFB_CONFIG}" != "no"; then
3269             CPPFLAGS_mydirectfb="`${DIRECTFB_CONFIG} --cflags`"
3270             LIBS_mydirectfb="`${DIRECTFB_CONFIG} --libs`"
3271             have_directfb="true"
3272         else
3273             dnl Trying with pkg-config
3274             PKG_CHECK_MODULES(DIRECTFB, directfb, [
3275                 CPPFLAGS_mydirectfb="${DIRECTFB_CFLAGS}"
3276                 LIBS_mydirectfb="${DIRECTFB_LIBS}"
3277                 have_directfb="true"
3278                 ], [have_directfb="false"])
3279         fi
3280     fi
3281     if test "${have_directfb}" = "true"; then
3282         VLC_ADD_PLUGIN([directfb])
3283         VLC_ADD_CPPFLAGS([directfb],[${CPPFLAGS_mydirectfb}])
3284         VLC_ADD_LIBS([directfb],[${LIBS_mydirectfb}])
3285     else
3286         AC_MSG_ERROR([${DIRECTFB_PKG_ERRORS}.])
3287     fi
3291 dnl  AA plugin
3293 AC_ARG_ENABLE(aa,
3294   [  --enable-aa             aalib output (default disabled)])
3295 if test "${enable_aa}" = "yes"
3296 then
3297   AC_CHECK_HEADER(aalib.h,have_aa="true",have_aa="false")
3298   if test "${have_aa}" = "true"
3299   then
3300     VLC_ADD_PLUGIN([aa])
3301     VLC_ADD_LIBS([aa],[-laa])
3302     if test "${SYS}" != "mingw32"; then
3303       VLC_ADD_LIBS([aa],[${X_LIBS} ${X_PRE_LIBS} -lX11])
3304     fi
3305   fi
3309 dnl  libcaca plugin
3311 PKG_ENABLE_MODULES_VLC([CACA], [], [caca >= 0.99.beta14], [libcaca output],[auto])
3314 dnl  OS/2 KVA plugin
3316 AC_ARG_ENABLE(kva,
3317   [AS_HELP_STRING([--enable-kva],
3318     [support the K Video Accelerator KVA (default enabled on OS/2)])],, [
3319   AS_IF([test "$SYS" = "os2"], [
3320     enable_kva="yes"
3321   ])
3323 have_kva="no"
3324 KVA_LIBS=""
3325 AS_IF([test "$enable_kva" != "no"], [
3326   AC_CHECK_HEADERS([kva.h], [
3327     have_kva="yes"
3328     AC_CHECK_LIB(kva, main, [
3329       KVA_LIBS="-lkva"
3330     ])
3331   ])
3333 AC_SUBST(KVA_LIBS)
3334 AM_CONDITIONAL([HAVE_KVA], [test "${have_kva}" = "yes"])
3337 dnl  Audio plugins
3340 EXTEND_HELP_STRING([Audio plugins:])
3343 dnl  Pulseaudio module
3345 AC_ARG_ENABLE(pulse,
3346   [AS_HELP_STRING([--enable-pulse],
3347     [use the PulseAudio client library (default auto)])])
3348 have_pulse="no"
3349 AS_IF([test "${enable_pulse}" != "no"], [
3350   PKG_CHECK_MODULES([PULSE], [libpulse >= 0.9.22], [
3351     have_pulse="yes"
3352   ], [
3353     PKG_CHECK_MODULES([PULSE], [libpulse >= 0.9.16], [
3354       AS_IF([test "${no_x}" != "yes"], [
3355         have_pulse="yes"
3356         PULSE_LIBS="$PULSE_LIBS ${X_LIBS} ${X_PRE_LIBS} -lX11"
3357       ], [
3358         AS_IF([test "${enable_pulse}" = "yes"], [
3359           AC_MSG_ERROR([Xlib is required with PulseAudio pre-0.9.22 versions
3360 (see http://www.pulseaudio.org/ticket/799 for further reference).])
3361         ])
3362       ])
3363     ], [
3364       AS_IF([test "x${enable_pulse}" != "x"], [
3365         AC_MSG_ERROR([$PULSE_PKG_ERRORS. PulseAudio 0.9.22 or later required.])
3366       ])
3367     ])
3368   ])
3370 AM_CONDITIONAL([HAVE_PULSE], [test "${have_pulse}" = "yes"])
3373 dnl  ALSA module
3375 AC_ARG_ENABLE(alsa,
3376   [AS_HELP_STRING([--enable-alsa],
3377     [support the Advanced Linux Sound Architecture (default auto)])],, [
3378   AS_IF([test "$SYS" = "linux" -a "${have_pulse}" = "no"], [
3379     enable_alsa="yes"
3380   ])
3382 have_alsa="no"
3383 AS_IF([test "${enable_alsa}" != "no"], [
3384   PKG_CHECK_MODULES([ALSA], [alsa >= 1.0.24], [
3385     have_alsa="yes"
3386   ], [
3387     AS_IF([test "x${enable_alsa}" != "x"], [
3388       AC_MSG_ERROR([$ALSA_PKG_ERRORS. alsa-lib 1.0.24 or later required.])
3389     ])
3390   ])
3392 AM_CONDITIONAL([HAVE_ALSA], [test "${have_alsa}" = "yes"])
3395 dnl  Open Sound System module
3397 AC_ARG_ENABLE(oss,
3398   [AS_HELP_STRING([--enable-oss],
3399     [support the Open Sound System OSS (default enabled on FreeBSD/NetBSD/DragonFlyBSD)])],, [
3400   AS_IF([test "$SYS" = "mingw32" -o "$SYS" = "linux" -o "$SYS" = "openbsd"], [
3401     enable_oss="no"
3402   ])
3404 have_oss="no"
3405 OSS_LIBS=""
3406 AS_IF([test "$enable_oss" != "no"], [
3407   AC_CHECK_HEADERS([soundcard.h sys/soundcard.h], [
3408     have_oss="yes"
3409     AC_CHECK_LIB(ossaudio, main, [
3410       OSS_LIBS="-lossaudio"
3411     ])
3412   ])
3414 AC_SUBST(OSS_LIBS)
3415 AM_CONDITIONAL([HAVE_OSS], [test "${have_oss}" = "yes"])
3418 dnl  OpenBSD sndio module
3420 AC_ARG_ENABLE([sndio],
3421   [AS_HELP_STRING([--disable-sndio],
3422     [support the OpenBSD sndio (default auto)])],, [
3423   AS_IF([test "$SYS" = "opensd"], [
3424     enable_sndio="yes"
3425   ])
3427 have_sndio="no"
3428 AS_IF([test "$enable_sndio" != "no"], [
3429   AC_CHECK_HEADER([sndio.h], [
3430     have_sndio="yes"
3431   ])
3433 AM_CONDITIONAL([HAVE_SNDIO], [test "${have_sndio}" = "yes"])
3436 dnl  Windows Audio Session plugin
3438 AC_ARG_ENABLE([wasapi],
3439   [AS_HELP_STRING([--enable-wasapi],
3440     [use the Windows Audio Session API (default auto)])
3442 have_wasapi="no"
3443 AS_IF([test "$enable_wasapi" != "no"], [
3444   AC_CHECK_HEADER([audioclient.h], [
3445     have_wasapi="yes"
3446   ], [
3447     AS_IF([test "x${enable_wasapi}" != "x"], [
3448       AC_MSG_ERROR([Windows Audio Session API not found.])
3449     ])
3450   ])
3452 AM_CONDITIONAL([HAVE_WASAPI], [test "${have_wasapi}" = "yes"])
3455 dnl  win32 waveOut plugin
3457 AC_ARG_ENABLE(waveout,
3458   [  --enable-waveout        Win32 waveOut module (default enabled on Win32)])
3459 if test "${enable_waveout}" != "no"; then
3460   if test "${SYS}" = "mingw32"; then
3461     VLC_ADD_PLUGIN([waveout])
3462     VLC_ADD_LIBS([waveout],[-lwinmm])
3463   fi
3467 dnl  CoreAudio plugin
3469 AC_ARG_ENABLE(macosx-audio,
3470   [  --enable-macosx-audio   Mac OS X audio module (default enabled on MacOS X)])
3471 if test "x${enable_macosx_audio}" != "xno" &&
3472   (test "${SYS}" = "darwin" || test "${enable_macosx_audio}" = "yes")
3473 then
3474   AC_CHECK_HEADERS(CoreAudio/CoreAudio.h,
3475     [ VLC_ADD_PLUGIN([auhal])
3476       VLC_ADD_LIBS([auhal],[-Wl,-framework,CoreAudio,-framework,AudioUnit,-framework,AudioToolbox])
3477     ], [ AC_MSG_ERROR([cannot find CoreAudio headers]) ])
3481 dnl  AudioQueue plugin
3483 AC_ARG_ENABLE(audioqueue,
3484   [  --enable-audioqueue     AudioQueue audio module (default disabled)])
3485 if test "${enable_audioqueue}" = "yes"
3486 then
3487   VLC_ADD_PLUGIN([audioqueue])
3488   VLC_ADD_LIBS([audioqueue], [-Wl,-framework,AudioToolbox,-framework,CoreFoundation])
3492 dnl  JACK modules
3494 PKG_ENABLE_MODULES_VLC([JACK], [jack access_jack], [jack], [JACK audio I/O modules],[auto])
3497 dnl  OpenSLES Android
3499 AC_ARG_ENABLE(opensles,
3500   [  --enable-opensles       Android OpenSL ES audio module (default disabled)])
3501 if test "${HAVE_ANDROID}" = "1"; then
3502   if test "${enable_opensles}" = "yes"; then
3503       AC_CHECK_HEADERS(SLES/OpenSLES.h,
3504         [ VLC_ADD_PLUGIN([opensles_android]) ],
3505         [ AC_MSG_ERROR([cannot find OpenSLES headers])] )
3506   fi
3510 dnl libsamplerate plugin
3512 PKG_ENABLE_MODULES_VLC([SAMPLERATE], [], [samplerate], [Resampler with libsamplerate], [auto])
3515 dnl  OS/2 KAI plugin
3517 AC_ARG_ENABLE(kai,
3518   [AS_HELP_STRING([--enable-kai],
3519     [support the K Audio Interface KAI (default enabled on OS/2)])],, [
3520   AS_IF([test "$SYS" = "os2"], [
3521     enable_kai="yes"
3522   ])
3524 have_kai="no"
3525 KAI_LIBS=""
3526 AS_IF([test "$enable_kai" != "no"], [
3527   AC_CHECK_HEADERS([kai.h], [
3528     have_kai="yes"
3529     AC_CHECK_LIB(kai, main, [
3530       KAI_LIBS="-lkai"
3531     ])
3532   ])
3534 AC_SUBST(KAI_LIBS)
3535 AM_CONDITIONAL([HAVE_KAI], [test "${have_kai}" = "yes"])
3538 dnl  Interface plugins
3541 EXTEND_HELP_STRING([Interface plugins:])
3544 dnl QT
3546 AC_ARG_ENABLE(qt, [
3547   AS_HELP_STRING([--disable-qt], [Qt UI support (default enabled)])],, [
3548   AS_IF([test "${SYS}" = "darwin"], [
3549     enable_qt="no"
3550   ])
3552 AS_IF([test "${enable_qt}" != "no"], [
3553   PKG_CHECK_MODULES([QT], [QtCore >= 5 QtWidgets QtGui],, [
3554     PKG_CHECK_MODULES([QT], [QtCore QtGui >= 4.6.0],, [
3555       AS_IF([test -n "${enable_qt}"],[
3556         AC_MSG_ERROR([${QT_PKG_ERRORS}.])
3557       ],[
3558         AC_MSG_WARN([${QT_PKG_ERRORS}.])
3559       ])
3560       enable_qt="no"
3561     ])
3562   ])
3564 AS_IF([test "${enable_qt}" != "no"], [
3565   VLC_ADD_PLUGIN([qt4])
3566   VLC_ADD_LIBS([qt4],[${QT_LIBS}])
3567   VLC_ADD_CXXFLAGS([qt4],[${QT_CFLAGS}])
3568   ALIASES="${ALIASES} qvlc"
3570   AC_LANG_PUSH([C++])
3571   VLC_SAVE_FLAGS
3573   AC_MSG_CHECKING([whether Qt uses Xlib])
3574   CPPFLAGS="${CPPFLAGS} ${QT_CFLAGS}"
3575   AC_PREPROC_IFELSE([AC_LANG_SOURCE([
3576 #include <QWidget>
3577 #if !defined (Q_WS_X11)
3578 # error Fail
3579 #endif
3580   ])], [
3581     AC_MSG_RESULT([yes])
3582     VLC_ADD_LIBS([qt4],[${X_LIBS} ${X_PRE_LIBS} -lX11])
3583     VLC_ADD_CXXFLAGS([qt4],[${X_CFLAGS}])
3584   ], [
3585     AC_MSG_RESULT([no])
3586   ])
3588   VLC_RESTORE_FLAGS
3589   AC_LANG_POP([C++])
3591   AS_IF([test "${SYS}" = "mingw32"], [
3592       VLC_ADD_LIBS([qt4],[-lole32])
3593   ])
3594   AS_IF([test "${SYS}" = "darwin" ],[
3595        VLC_ADD_LIBS([qt4], [-Wl,-framework,Cocoa])
3596   ])
3598   QT_PATH="$(eval $PKG_CONFIG --variable=exec_prefix QtCore)"
3599   AC_PATH_PROGS(MOC, [moc-qt4 moc], moc, [${QT_PATH}/bin ${CONTRIB_DIR}/bin])
3600   AC_PATH_PROG(RCC, rcc, rcc, [${QT_PATH}/bin ${CONTRIB_DIR}/bin])
3601   AC_PATH_PROGS(UIC, [uic-qt4 uic], uic, [${QT_PATH}/bin ${CONTRIB_DIR}/bin])
3603 AM_CONDITIONAL(ENABLE_QT4, [test "$enable_qt" != "no"])
3606 dnl Simple test for skins2 dependency
3608 AS_IF([test "$enable_qt" = "no"], [
3609   AS_IF([test "${enable_skins2}" = "yes"], [
3610     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.])
3611   ], [
3612     enable_skins2="no"
3613     AC_MSG_WARN([The skins2 module depends on the Qt4 interface, Qt4 is not built so skins2 is disabled.])
3614   ])
3618 dnl Skins2 module
3620 AC_ARG_ENABLE(skins2,
3621   [AS_HELP_STRING([--enable-skins2], [skins interface module (default auto)])])
3622 AS_IF([test "${enable_skins2}" != "no"], [
3623   have_skins_deps="yes"
3625   dnl Win32
3626   AS_IF([test "${SYS}" = "mingw32"], [
3627     VLC_ADD_CPPFLAGS([skins2],[-U_OFF_T_ -U_off_t -DWIN32_SKINS])
3628     VLC_ADD_LIBS([skins2],[-lgdi32 -lole32 -luuid -lmsimg32])
3629   dnl MacOS
3630   ], [test "${SYS}" = "darwin"], [
3631     VLC_ADD_CPPFLAGS([skins2],[ -DMACOSX_SKINS])
3632     VLC_ADD_LIBS([skins2],[-Wl,-framework,Carbon])
3633   dnl Linux/Unix
3634   ], [
3635     PKG_CHECK_MODULES([XPM], [xpm],, [have_skins_deps="no"])
3636     PKG_CHECK_MODULES([XINERAMA], [xinerama],, [have_skins_deps="no"])
3637     PKG_CHECK_MODULES([XEXT], [xext],, [have_skins_deps="no"])
3638     VLC_ADD_CPPFLAGS([skins2],[${X_CFLAGS} ${XEXT_CFLAGS} ${XPM_CFLAGS} -DX11_SKINS])
3639     VLC_ADD_LIBS([skins2],[${X_LIBS} ${X_PRE_LIBS} ${XEXT_LIBS} ${XPM_LIBS} ${XINERAMA_LIBS} -lX11])
3640   ])
3642   dnl for All OSes
3643   VLC_ADD_CXXFLAGS([skins2],[-O2 -fno-rtti])
3645   dnl we need freetype
3646   AS_IF([test "${have_freetype}" != "yes"], [
3647     have_skins_deps="no"
3648   ])
3650   AS_IF([test "${have_skins_deps}" = "no"], [
3651     AS_IF([test "x${enable_skins2}" = "x"], [
3652       AC_MSG_WARN([Skins2 interface disabled due to missing dependencies.])
3653     ], [
3654       AC_MSG_ERROR([Skins2 interface requires FreeType, libxpm, libxext and libxinerama])
3655     ])
3656     enable_skins2="no"
3657   ], [
3658     VLC_ADD_PLUGIN([skins2])
3659     ALIASES="${ALIASES} svlc"
3660     enable_skins2="yes"
3661   ])
3663 AM_CONDITIONAL(BUILD_SKINS, [test "${enable_skins2}" = "yes"])
3665 AC_ARG_ENABLE(libtar,
3666   [  --enable-libtar         libtar support for skins2 (default auto)])
3667 AS_IF([test "${enable_skins2}" = "yes" && test "${enable_libtar}" != "no"], [
3668   AC_CHECK_HEADERS(libtar.h, [
3669     VLC_ADD_LIBS([skins2],[-ltar])
3670   ])
3674 dnl  MacOS X gui module
3676 AC_ARG_ENABLE(macosx,
3677   [  --enable-macosx         Mac OS X gui support (default enabled on Mac OS X)])
3678 if test "x${enable_macosx}" != "xno" -a "${SYS}" = "darwin"
3679 then
3680   VLC_ADD_LIBS([macosx], [-Wl,-framework,Cocoa -Wl,-framework,Carbon -Wl,-framework,CoreServices])
3681   VLC_ADD_OBJCFLAGS([macosx], [-fobjc-exceptions] )
3682   VLC_ADD_PLUGIN([macosx])
3684   VLC_ADD_LIBS([macosx], [-Wl,-framework,QTKit -Wl,-framework,IOKit -Wl,-framework,AddressBook -Wl,-framework,WebKit -Wl,-framework,CoreAudio -Wl,-framework,SystemConfiguration])
3686   if test ! -d ${CONTRIB_DIR}/Sparkle.framework
3687   then
3688     AC_MSG_ERROR([Sparkle framework is required and was not found in ${CONTRIB_DIR}])
3689   fi
3690   VLC_ADD_LIBS([macosx], [-F${CONTRIB_DIR} -Wl,-framework,Sparkle])
3691   VLC_ADD_OBJCFLAGS([macosx], [-F${CONTRIB_DIR}])
3693   if test ! -d ${CONTRIB_DIR}/BGHUDAppKit.framework
3694   then
3695     AC_MSG_ERROR([BGHUDAppKit framework is required and was not found in ${CONTRIB_DIR}])
3696   fi
3697   VLC_ADD_LIBS([macosx], [-F${CONTRIB_DIR} -Wl,-framework,BGHUDAppKit])
3698   VLC_ADD_OBJCFLAGS([macosx], [-F${CONTRIB_DIR}])
3700 AM_CONDITIONAL(ENABLE_MACOSX_UI, [test "$enable_macosx" != "no"])
3703 dnl  Minimal Mac OS X module
3705 AC_ARG_ENABLE(minimal-macosx,
3706   [  --enable-minimal-macosx Minimal Mac OS X support (default disabled)])
3707 if test "${enable_minimal_macosx}" = "yes" -a "${SYS}" = "darwin"
3708 then
3709   VLC_ADD_LIBS([minimal_macosx], [-Wl,-framework,Cocoa])
3710   VLC_ADD_OBJCFLAGS([minimal_macosx], [-fobjc-exceptions] )
3711   VLC_ADD_PLUGIN([minimal_macosx])
3713 AM_CONDITIONAL(ENABLE_MINIMAL_MACOSX, [test "$enable_minimal_macosx" != "no"])
3716 dnl  MacOS X dialog provider
3718 AC_ARG_ENABLE(macosx-dialog-provider,
3719   [  --enable-macosx-dialog-provider Mac OS X dialog module (default enabled on Mac OS X)])
3720 if test "x${enable_macosx_dialog_provider}" != "xno" &&
3721   (test "${SYS}" = "darwin" || test "${enable_macosx_dialog_provider}" = "yes")
3722 then
3723   VLC_ADD_LIBS([macosx_dialog_provider],[-Wl,-framework,Cocoa])
3724   VLC_ADD_PLUGIN([macosx_dialog_provider])
3726 AM_CONDITIONAL(ENABLE_MACOSX_DIALOG_PROVIDER, [test "$enable_macosx_dialog_provider" != "no"])
3729 dnl  ncurses module
3731 AC_ARG_ENABLE(ncurses,
3732 [AS_HELP_STRING([--disable-ncurses],[ncurses text-based interface (default auto)])])
3733 AS_IF([test "${enable_ncurses}" != "no"] ,[
3734   PKG_CHECK_MODULES([NCURSES], [ncursesw], [
3735     VLC_ADD_PLUGIN([ncurses])
3736     VLC_ADD_CFLAGS([ncurses],[${NCURSES_CFLAGS}])
3737     VLC_ADD_LIBS([ncurses],[${NCURSES_LIBS}])
3738     ALIASES="${ALIASES} nvlc"
3739   ], [
3740     AS_IF([test -n "${enable_ncurses}"], [
3741       AC_MSG_ERROR([${NCURSES_PKG_ERRORS}.])
3742     ])
3743   ])
3747 dnl  Lirc plugin
3749 AC_ARG_ENABLE(lirc,
3750   [  --enable-lirc           lirc support (default disabled)])
3751 if test "${enable_lirc}" = "yes"
3752 then
3753   AC_CHECK_HEADER(lirc/lirc_client.h, AC_CHECK_LIB(lirc_client, lirc_init, have_lirc="true", have_lirc="false"),have_lirc="false")
3754   if test "${have_lirc}" = "true"
3755   then
3756     VLC_ADD_PLUGIN([lirc])
3757     VLC_ADD_LIBS([lirc],[-llirc_client])
3758   fi
3761 EXTEND_HELP_STRING([Visualisations and Video filter plugins:])
3763 dnl  goom visualization plugin
3765 PKG_ENABLE_MODULES_VLC([GOOM], [], [libgoom2], [goom visualization plugin], [auto])
3768 dnl libprojectM visualization plugin
3770 AC_ARG_ENABLE(projectm,
3771   [  --enable-projectm       projectM visualization plugin (default enabled)])
3772 AS_IF([test "${enable_projectm}" != "no"],
3773   [
3774     PKG_CHECK_MODULES(PROJECTM, libprojectM,
3775     [
3776       VLC_ADD_PLUGIN([projectm])
3777       VLC_ADD_CXXFLAGS([projectm],[$PROJECTM_CFLAGS])
3778       VLC_ADD_LIBS([projectm],[$PROJECTM_LIBS])
3779       PKG_CHECK_MODULES(PROJECTM2, [libprojectM >= 2.0.0],
3780         [ AC_DEFINE([HAVE_PROJECTM2], 1, [Define to 1 if using libprojectM 2.x]) ],
3781         [ AC_MSG_WARN( [Using libprojectM version 1] )
3782       ])
3783     ],[
3784       AC_MSG_WARN([${PROJECTM_PKG_ERRORS}.])
3785     ])
3786   ])
3789 dnl Vovoid VSXu visualization plugin
3791 AC_ARG_ENABLE(vsxu,
3792   [  --enable-vsxu           Vovoid VSXu visualization plugin (default auto)])
3793 AS_IF([test "${enable_vsxu}" != "no"],
3794   [
3795     PKG_CHECK_MODULES(VSXU, libvsxu,
3796     [
3797       VLC_ADD_PLUGIN([vsxu])
3798       VLC_ADD_CXXFLAGS([vsxu],[$VSXU_CFLAGS])
3799       VLC_ADD_LIBS([vsxu],[$VSXU_LIBS])
3800     ],[
3801       AC_MSG_WARN([${VSXU_PKG_ERRORS}.])
3802     ])
3803   ])
3806 dnl  AtmoLight (homemade Philips Ambilight clone)
3808 AC_ARG_ENABLE(atmo,
3809 AS_HELP_STRING([--disable-atmo],[AtmoLight (homemade Philips Ambilight clone)
3810                 (default enabled)]),, [enable_atmo="yes"])
3811 AS_IF([test "${enable_atmo}" != no], [
3812   AS_IF([test "${SYS}" = "mingw32" -o "${SYS}" = "linux"], [
3813     AC_LANG_PUSH(C++)
3814     VLC_ADD_PLUGIN([atmo])
3815     AC_LANG_POP(C++)
3816   ])
3819 AC_ARG_ENABLE(osdmenu,
3820   AS_HELP_STRING([--enable-osdmenu],[OSD menu (default disabled)]),, [
3821   enable_osdmenu="no"
3823 AM_CONDITIONAL(BUILD_OSDMENU, [test "${enable_osdmenu}" != "no"])
3826 EXTEND_HELP_STRING([Service Discovery plugins:])
3828 dnl  Bonjour services discovery
3829 PKG_ENABLE_MODULES_VLC([BONJOUR], [], [avahi-client >= 0.6], [Bonjour services discovery], [auto])
3832 dnl  libudev services discovery
3833 PKG_ENABLE_MODULES_VLC([UDEV], [], [libudev >= 142], [Linux udev services discovery], [auto])
3836 dnl MTP devices services discovery
3837 PKG_ENABLE_MODULES_VLC([MTP], [mtp access_mtp], [libmtp >= 1.0.0], [MTP devices support], [auto])
3840 dnl UPnP Plugin (Intel SDK)
3842 PKG_ENABLE_MODULES_VLC([UPNP], [upnp], [libupnp], [Intel UPNP SDK],[auto])
3843 VLC_ADD_CXXFLAGS([upnp],[${UPNP_CFLAGS}])
3845 EXTEND_HELP_STRING([Misc options:])
3848 dnl  libxml2 module
3850 PKG_ENABLE_MODULES_VLC([LIBXML2], [xml], [libxml-2.0 >= 2.5], [libxml2 support],[auto])
3854 dnl libgcrypt
3856 AC_ARG_ENABLE(libgcrypt,
3857   [  --disable-libgcrypt     gcrypt support (default enabled)])
3858 AS_IF([test "${enable_libgcrypt}" != "no"], [
3859   AC_CHECK_DECL([GCRYCTL_SET_THREAD_CBS], [
3860     libgcrypt-config --version >/dev/null || \
3861         AC_MSG_ERROR([gcrypt.h present but libgcrypt-config could not be found])
3862     AC_CHECK_LIB(gcrypt, gcry_control, [
3863       have_libgcrypt="yes"
3864       GCRYPT_CFLAGS="`libgcrypt-config --cflags`"
3865       GCRYPT_LIBS="`libgcrypt-config --libs`"
3866     ], [
3867       AC_MSG_ERROR([libgcrypt not found. Install libgcrypt or use --disable-libgcrypt. Have a nice day.])
3868     ], [`libgcrypt-config --libs`])
3869   ], [
3870     AC_MSG_ERROR([libgcrypt version 1.1.94 or higher not found. Install libgcrypt or use --disable-libgcrypt. Have a nice day.])
3871   ], [#include <gcrypt.h>]
3872   )
3875 AC_SUBST(GCRYPT_CFLAGS)
3876 AC_SUBST(GCRYPT_LIBS)
3877 AM_CONDITIONAL([HAVE_GCRYPT], [test "${have_libgcrypt}" = "yes"])
3880 dnl TLS/SSL
3882 AC_ARG_ENABLE(gnutls,
3883   [  --enable-gnutls         GNU TLS TLS/SSL support (default enabled)])
3884 AS_IF([test "${enable_gnutls}" != "no"], [
3885   PKG_CHECK_MODULES(GNUTLS, [gnutls >= 2.6.6], [
3886     VLC_ADD_PLUGIN([gnutls])
3887   ], [
3888     AS_IF([test -n "${enable_gnutls}"], [
3889       AC_MSG_ERROR([${GNUTLS_PKG_ERRORS}.)])
3890     ])
3891   ])
3896 dnl Nokia MCE plugin (Maemo screen unblanking)
3898 PKG_CHECK_MODULES([MCE], [dbus-1 mce], [VLC_ADD_PLUGIN([mce])], [true])
3901 AS_IF([test -f "/etc/maemo_version"], [
3902   AC_DEFINE([HAVE_MAEMO], 1, [Define to 1 if building for the Maemo platform.])
3907 dnl Taglib plugin
3909 AC_ARG_ENABLE(taglib,
3910   [AS_HELP_STRING([--disable-taglib],
3911     [do not use TagLib (default enabled)])])
3912 AS_IF([test "${enable_taglib}" != "no"], [
3913   PKG_CHECK_MODULES(TAGLIB, taglib >= 1.6.1, [
3914     VLC_ADD_PLUGIN([taglib])
3915     VLC_ADD_LIBS([taglib],[$TAGLIB_LIBS -lz])
3916     VLC_ADD_CXXFLAGS([taglib],[$TAGLIB_CFLAGS])
3917   ], [
3918     AC_MSG_WARN([${TAGLIB_PKG_ERRORS}.])])
3923 dnl update checking system
3925 AC_ARG_ENABLE(update-check,
3926   [  --enable-update-check   update checking system (default disabled)])
3927 if test "${enable_update_check}" = "yes"
3928 then
3929   if test "${have_libgcrypt}" != "yes"
3930   then
3931     AC_MSG_ERROR([libgcrypt is required for update checking system])
3932   fi
3933   VLC_ADD_LIBS([libvlccore], [${GCRYPT_LIBS}])
3934   VLC_ADD_CFLAGS([libvlccore], [${GCRYPT_CFLAGS}])
3935   AC_DEFINE([UPDATE_CHECK], 1, [Define if you want to use the VLC update mechanism])
3939 dnl Growl notification plugin
3941 AC_ARG_ENABLE(growl,
3942   [  --enable-growl          growl notification plugin (default disabled)],,
3943   [enable_growl=no])
3944 AS_IF([test "${enable_growl}" != "no"], [
3945     AC_CHECK_HEADERS(${CONTRIB_DIR}/Growl.framework/Versions/A/Headers/Growl.h, [
3946       VLC_ADD_PLUGIN([growl])
3947       VLC_ADD_LIBS([growl], [-F${CONTRIB_DIR} -Wl,-framework,Growl,-framework,Foundation])
3948       VLC_ADD_OBJCFLAGS([growl], [-F${CONTRIB_DIR}])
3949       VLC_ADD_OBJCFLAGS([growl], [-fobjc-exceptions] )
3950     ])
3951   ]
3955 dnl Libnotify notification plugin
3957 PKG_ENABLE_MODULES_VLC([NOTIFY], [], [libnotify gtk+-2.0], [libnotify notification], [auto])
3960 dnl media library
3962 AC_ARG_ENABLE(media-library,
3963     [  --enable-media-library  media library (default disabled)])
3964 AS_IF([test "${enable_media_library}" = "yes"], [
3965   AC_DEFINE([MEDIA_LIBRARY], 1, [Define if you want to use the VLC media library])
3966   VLC_ADD_CPPFLAGS([qt4],"-DMEDIA_LIBRARY")
3967   VLC_ADD_PLUGIN([media_library])
3970 dnl SQLite
3972   AS_IF([test "${SYS}" != "darwin"], [
3973     PKG_ENABLE_MODULES_VLC([SQLITE], [], [sqlite3 >= 3.6.0], [sqlite3], [auto])
3974   ], [
3975     AS_IF([test "${enable_sqlite}" != "no"], [
3976       AC_CHECK_HEADERS(sqlite3.h, [
3977         VLC_ADD_PLUGIN([sqlite])
3978         VLC_ADD_LIBS([sqlite], [-lsqlite3])
3979       ], [
3980         AC_MSG_ERROR([sqlite3 is required for the media library])
3981       ])
3982     ])
3983   ])
3988 dnl  Endianness check
3990 AC_C_BIGENDIAN
3991 AS_IF([test "${ac_cv_c_bigendian}" = "yes"], [
3992   DEFS_BIGENDIAN="-DWORDS_BIGENDIAN=1"
3993 ], [
3994   DEFS_BIGENDIAN=""
3996 AC_SUBST(DEFS_BIGENDIAN)
3999 dnl Where to install KDE solid .desktop
4001 AC_ARG_VAR([KDE4_CONFIG], [kde4-config utility])
4002 AS_IF([test "x$KDE4_CONFIG" = "x"], [
4003   KDE4_CONFIG="kde4-config"
4006 AC_ARG_WITH(kde-solid,
4007   AS_HELP_STRING([--with-kde-solid=PATH],
4008                  [KDE Solid actions directory (auto)]),, [
4010 if test "${SYS}" != "mingw32" -a "${SYS}" != "darwin" ; then
4011   with_kde_solid="yes"
4014 soliddatadir=""
4015 AS_IF([test "${with_kde_solid}" != "no"], [
4016   AS_IF([test "${with_kde_solid}" = "yes"], [
4017     kde4datadir="`${KDE4_CONFIG} --install data`"
4018     AS_IF([test "x$kde4datadir" = "x"], [kde4datadir='${datadir}/kde4/apps'])
4019     soliddatadir="${kde4datadir}/solid/actions"
4020   ], [
4021     soliddatadir="${with_kde_solid}"
4022   ])
4024 AC_SUBST(soliddatadir)
4025 AM_CONDITIONAL(KDE_SOLID, [test "x${soliddatadir}" != "x"])
4028 dnl  DLL loader copied from MPlayer copied from somewhere else (WINE ?)
4030 loader=false
4031 AC_ARG_ENABLE(loader,
4032   AS_HELP_STRING([--enable-loader],[build DLL loader for ELF i386 platforms
4033           (default disabled)]))
4034 AM_CONDITIONAL(LOADER, [test "${enable_loader}" = "yes"])
4035 AS_IF([test "${enable_loader}" = "yes"],
4036   [ VLC_ADD_PLUGIN([dmo])
4037     VLC_ADD_CPPFLAGS([dmo quicktime ],[-I\\\$(srcdir)/loader])
4038     VLC_ADD_LIBS([dmo quicktime ],[libloader.la])
4039     VLC_ADD_LIBS([dmo quicktime], [-lpthread])
4040   ])
4042 AS_IF([test "${SYS}" = "mingw32"], [VLC_ADD_PLUGIN([dmo]) VLC_ADD_LIBS([dmo],[-lole32 -luuid]) ])
4044 EXTEND_HELP_STRING([Components:])
4047 dnl  the VLC binary
4049 AC_ARG_ENABLE(vlc,
4050   [  --enable-vlc            build the VLC media player (default enabled)])
4051 AM_CONDITIONAL(BUILD_VLC, [test "${enable_vlc}" != "no"])
4053 AC_ARG_ENABLE(macosx-vlc-app,
4054   [  --enable-macosx-vlc-app build the VLC media player (default enabled on Mac OS X)])
4055 AM_CONDITIONAL(BUILD_MACOSX_VLC_APP, [test "${enable_macosx_vlc_app}" != "no" &&
4056     (test "${SYS}" = "darwin" || test "${enable_macosx_vlc_app}" = "yes") ])
4059 dnl  Stuff used by the program
4061 VERSION_MESSAGE="${VERSION} ${CODENAME}"
4062 COPYRIGHT_MESSAGE="Copyright © ${COPYRIGHT_YEARS} the VideoLAN team"
4063 AC_DEFINE_UNQUOTED(VERSION_MESSAGE, "${VERSION_MESSAGE}", [Simple version string])
4064 AC_DEFINE_UNQUOTED(COPYRIGHT_MESSAGE, "${COPYRIGHT_MESSAGE}", [Copyright string])
4065 AC_DEFINE_UNQUOTED(COPYRIGHT_YEARS, "${COPYRIGHT_YEARS}", [The copyright years])
4066 AC_DEFINE_UNQUOTED(CONFIGURE_LINE, "${CONFIGURE_LINE}", [The ./configure command line])
4067 AC_DEFINE_UNQUOTED(PACKAGE_VERSION_MAJOR,${VERSION_MAJOR}, [version major number])
4068 AC_DEFINE_UNQUOTED(PACKAGE_VERSION_MINOR,${VERSION_MINOR}, [version minor number])
4069 AC_DEFINE_UNQUOTED(PACKAGE_VERSION_REVISION,${VERSION_REVISION}, [version revision number])
4070 AC_DEFINE_UNQUOTED(PACKAGE_VERSION_EXTRA,${VERSION_EXTRA}, [version extra number])
4071 AC_DEFINE_UNQUOTED(PACKAGE_VERSION_DEV,"${VERSION_DEV}", [version development string])
4072 AC_SUBST(COPYRIGHT_MESSAGE)
4073 AC_SUBST(VERSION_MESSAGE)
4074 AC_SUBST(VERSION_MAJOR)
4075 AC_SUBST(VERSION_MINOR)
4076 AC_SUBST(VERSION_REVISION)
4077 AC_SUBST(VERSION_EXTRA)
4078 AC_SUBST(COPYRIGHT_YEARS)
4079 AC_DEFINE_UNQUOTED(VLC_COMPILE_BY, "`whoami|sed -e 's/\\\/\\\\\\\/g'`", [user who ran configure])
4080 AC_DEFINE_UNQUOTED(VLC_COMPILE_HOST, "`hostname -f 2>/dev/null || hostname`", [host which ran configure])
4081 AC_DEFINE_UNQUOTED(VLC_COMPILER, "`$CC -v 2>&1 | tail -n 1 | sed -e 's/ *$//'`", [compiler])
4083 dnl  Handle substvars that use $(top_srcdir)
4085 CPPFLAGS="-I\$(top_srcdir)/include -I\$(top_builddir)/include ${CPPFLAGS}"
4088 dnl  Configuration is finished
4090 AC_SUBST(SYS)
4091 AC_SUBST(ARCH)
4092 AC_SUBST(ALIASES)
4093 AC_SUBST(ASM)
4094 AC_SUBST(MOC)
4095 AC_SUBST(RCC)
4096 AC_SUBST(UIC)
4097 AC_SUBST(WINDRES)
4098 AC_SUBST(WINE_SDK_PATH)
4099 AC_SUBST(LIBEXT)
4100 AC_SUBST(AM_CPPFLAGS)
4101 AC_SUBST(MACOSX_DEPLOYMENT_TARGET)
4102 AC_SUBST(FILE_LIBVLCCORE_DLL)
4103 AC_SUBST(FILE_LIBVLC_DLL)
4105 AC_CONFIG_FILES([
4106   Makefile
4107   doc/Makefile
4108   modules/Makefile
4109   m4/Makefile
4110   po/Makefile.in
4111   share/Makefile
4112   compat/Makefile
4113   src/Makefile
4114   lib/Makefile
4115   bin/Makefile
4116   test/Makefile
4117   modules/access/Makefile
4118   modules/access/rtp/Makefile
4119   modules/access_output/Makefile
4120   modules/audio_filter/Makefile
4121   modules/audio_mixer/Makefile
4122   modules/audio_output/Makefile
4123   modules/codec/Makefile
4124   modules/control/Makefile
4125   modules/demux/Makefile
4126   modules/gui/Makefile
4127   modules/gui/macosx/Makefile
4128   modules/gui/minimal_macosx/Makefile
4129   modules/gui/macosx_dialog_provider/Makefile
4130   modules/gui/qt4/Makefile
4131   modules/gui/skins2/Makefile
4132   modules/lua/Makefile
4133   modules/meta_engine/Makefile
4134   modules/misc/Makefile
4135   modules/media_library/Makefile
4136   modules/mux/Makefile
4137   modules/notify/Makefile
4138   modules/packetizer/Makefile
4139   modules/services_discovery/Makefile
4140   modules/stream_filter/Makefile
4141   modules/stream_out/Makefile
4142   modules/text_renderer/Makefile
4143   modules/video_chroma/Makefile
4144   modules/video_filter/Makefile
4145   modules/video_output/Makefile
4146   modules/visualization/Makefile
4147   modules/mmx/Makefile
4148   modules/sse2/Makefile
4149   modules/altivec/Makefile
4150   modules/arm_neon/Makefile
4153 AM_COND_IF([HAVE_WIN32], [
4154   AC_CONFIG_FILES([
4155     extras/package/win32/NSIS/spad.nsi
4156     extras/package/win32/NSIS/vlc.win32.nsi
4157   ])
4160 AM_COND_IF([HAVE_DARWIN], [
4161   AC_CONFIG_FILES([
4162     extras/package/macosx/Info.plist
4163     extras/package/macosx/Resources/English.lproj/InfoPlist.strings
4164   ])
4167 dnl Generate makefiles
4168 AC_OUTPUT
4170 dnl Do we have to use make or gmake ?
4171 if make --version 2>&1|grep -q GNU
4172 then
4173     # GNU make, all seems good
4174     MAKE=make
4175 else
4176     # Known GNU make alias (on BSD)
4177     MAKE=gmake
4179 dnl Shortcut to nice compile message
4180 if test -n $SHELL; then
4181   SHELL=${CONFIG_SHELL-/bin/sh}
4183 rm -f compile
4184 echo "#! $SHELL
4185 rm -f .error\$\$
4186 ERROR=0
4187 export PATH=\"$PATH\" LANG=C
4188 ($MAKE V=1 \$@ 2>&1 || touch .error\$\$)| `sed -ne \"s/^top_srcdir *= *//p\" < Makefile`/extras/buildsystem/make.pl
4189 test -f .error\$\$ && ERROR=1
4190 rm -f .error\$\$
4191 exit \$ERROR" >compile
4192 chmod a+x compile
4194 echo "
4195 libvlc configuration
4196 --------------------
4197 version               : ${VERSION}
4198 system                : ${SYS}
4199 architecture          : ${ARCH}
4200 optimizations         : ${enable_optimizations}"
4201 if test "${enable_vlc}" != "no"; then
4202 echo "vlc aliases           :${ALIASES}"
4203 else
4204 echo "build vlc executable  : no"
4206 echo "
4207 To build vlc and its plugins, type \`$MAKE', or \`./compile' if you like nice colors."