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