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