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