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