codec/webvtt: make some css properties case-insensitive
[vlc.git] / configure.ac
blob9e9571dea405a8586ea814dfc5a76ad5efe069e8
1 dnl Autoconf settings for vlc
3 AC_COPYRIGHT([Copyright 1999-2017 VLC authors and VideoLAN])
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
12 PKGDIR="vlc"
13 AC_SUBST(PKGDIR)
15 CONFIGURE_LINE="`echo "$0 $ac_configure_args" | sed -e 's/\\\/\\\\\\\/g'`"
16 CODENAME="Vetinari"
17 COPYRIGHT_YEARS="1996-2017"
19 AC_CONFIG_SRCDIR(src/libvlc.c)
20 AC_CONFIG_AUX_DIR(autotools)
21 AC_CONFIG_MACRO_DIR(m4)
22 AC_CONFIG_LIBOBJ_DIR(compat)
23 AC_CANONICAL_BUILD
24 AC_CANONICAL_HOST
25 AC_PRESERVE_HELP_ORDER
27 AM_INIT_AUTOMAKE(tar-ustar color-tests foreign)
28 AC_CONFIG_HEADERS([config.h])
30 AM_SILENT_RULES([yes])
31 AM_MAINTAINER_MODE([enable])
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)
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
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>.])
60 AM_PROG_CC_C_O
61 AC_PROG_CXX
62 AC_PROG_CPP
63 AC_PROG_OBJC
64 AC_PROG_EGREP
65 AC_PROG_MAKE_SET
66 AC_PROG_INSTALL
67 AM_PROG_AS
69 AC_ARG_VAR([DESKTOP_FILE_VALIDATE], [Validator for desktop entry files])
70 AC_CHECK_PROGS(DESKTOP_FILE_VALIDATE, [${DESKTOP_FILE_VALIDATE} desktop-file-validate], :)
71 AC_ARG_VAR([BUILDCC], [Build system C11 or C99 compiler command])
72 AC_CHECK_PROGS(BUILDCC, [c11-gcc c11 c99-gcc c99], [false])
73 AS_IF([test "$BUILDCC" = "false"], [
74   AC_MSG_ERROR([Cannot find native C99 compiler: please define BUILDCC.])
77 dnl Check for compiler properties
78 AC_C_CONST
79 AC_C_INLINE
80 AC_C_RESTRICT
81 AX_CXX_COMPILE_STDCXX_11(noext, mandatory)
83 dnl Extend the --help string at the current spot.
84 AC_DEFUN([EXTEND_HELP_STRING], [m4_divert_once([HELP_ENABLE], [$1])])
86 dnl Allow binary package maintainer to pass a custom string to avoid
87 dnl cache problem
88 AC_ARG_WITH(binary-version,
89     AS_HELP_STRING([--with-binary-version=STRING],
90          [To avoid plugins cache problem between binary version]),[],[])
91 AS_IF([test -n "${with_binary_version}"],[
92     AC_DEFINE_UNQUOTED([DISTRO_VERSION],["${with_binary_version}"],
93          [Binary specific version])
96 dnl Prevent clang from accepting unknown flags with a mere warning
97 AX_APPEND_COMPILE_FLAGS([-Werror=unknown-warning-option -Werror=invalid-command-line-argument], [CFLAGS])
98 AX_APPEND_COMPILE_FLAGS([-Werror=unknown-warning-option -Werror=invalid-command-line-argument], [CXXFLAGS])
101 dnl  Check the operating system
103 HAVE_WIN64="0"
104 HAVE_IOS="0"
105 HAVE_OSX="0"
106 HAVE_TVOS="0"
108 case "${host_os}" in
109   "")
110     SYS=unknown
111     ;;
112   linux*)
113     SYS=linux
114     ;;
115   bsdi*)
116     SYS=bsdi
117     CFLAGS="${CFLAGS} -pthread"
118     ;;
119   freebsd*)
120     SYS=freebsd
121     CFLAGS="${CFLAGS} -pthread"
122     CPPFLAGS="${CPPFLAGS} -I/usr/local/include"
123     LDFLAGS="${LDFLAGS} -L/usr/local/lib"
124     ac_cv_ld_z_defs=no
125     ;;
126   openbsd*)
127     SYS=openbsd
128     CPPFLAGS="${CPPFLAGS} -I/usr/local/include -I/usr/X11R6/include"
129     LDFLAGS="${LDFLAGS} -L/usr/local/lib -L/usr/X11R6/lib/"
130     ;;
131   netbsd*)
132     SYS=netbsd
133     ;;
134   dragonfly*)
135     SYS=dragonfly
136     ;;
137   darwin*)
139     dnl Force gcc "-arch" flag
140     ARCH_flag=""
141     case "${host}" in
142       i?86*)
143         ARCH_flag="-arch i386"
144       ;;
145       ppc64*)
146         ARCH_flag="-arch ppc64"
147       ;;
148       ppc*)
149         ARCH_flag="-arch ppc"
150       ;;
151       x86_64*)
152         ARCH_flag="-arch x86_64"
153       ;;
154       arm*)
155         ac_cv_c_bigendian="no"
156         ac_cv_c_attribute_packed="no"
157       ;;
158     esac
160     SYS=darwin
161     CFLAGS="${CFLAGS} -D_INTL_REDIRECT_MACROS -std=gnu11 ${ARCH_flag}"
162     CXX="${CXX} -stdlib=libc++ -std=c++11"
163     CXXFLAGS="${CXXFLAGS} -D_INTL_REDIRECT_MACROS ${ARCH_flag}"
164     CPPFLAGS="${CPPFLAGS} ${ARCH_flag}"
165     OBJCFLAGS="${OBJCFLAGS} -D_INTL_REDIRECT_MACROS -std=gnu11 ${ARCH_flag} -Werror=partial-availability"
166     LDFLAGS="${LDFLAGS} -Wl,-headerpad_max_install_names ${ARCH_flag}"
167     VLC_ADD_LIBS([libvlc vlc],[-Wl,-undefined,dynamic_lookup,-framework,AppKit])
168     VLC_ADD_LIBS([libvlccore],[-Wl,-framework,CoreFoundation,-framework,CoreServices])
170     AC_EGREP_CPP(yes,
171             [#import <TargetConditionals.h>
172              #if TARGET_OS_IPHONE
173              yes
174              #endif],
175              [HAVE_IOS="1"],
176              [HAVE_OSX="1"])
178     AC_EGREP_CPP(yes,
179             [#import <TargetConditionals.h>
180              #if TARGET_OS_TV
181              yes
182              #endif],
183              [HAVE_TVOS="1"
184              HAVE_IOS="0"
185              HAVE_OSX="0"
186              ],)
188     dnl Allow binaries created on Lion to run on earlier releases
189     AC_EGREP_CPP(yes,
190            [#import <Cocoa/Cocoa.h>
191             #ifdef MAC_OS_X_VERSION_10_7
192             yes
193             #endif],
194             [AC_MSG_RESULT([yes])
195             AC_LIBOBJ([getdelim])
196             AC_LIBOBJ([strndup])
197             AC_LIBOBJ([strnlen])],)
199     dnl
200     dnl  Handle Mac OS X SDK flags
201     dnl
202     AC_ARG_WITH(macosx-sdk,
203       [AS_HELP_STRING([--with-macosx-sdk=DIR],
204         [compile using the SDK in DIR])])
205     if test "${with_macosx_sdk}" != "" ; then
206         test ! -d "${with_macosx_sdk}" && AC_MSG_ERROR([SDK "${with_macosx_sdk}" not found])
207         CPP="${CPP} -isysroot ${with_macosx_sdk}"
208         CC="${CC} -isysroot ${with_macosx_sdk}"
209         CXX="${CXX} -isysroot ${with_macosx_sdk}"
210         OBJC="${OBJC} -isysroot ${with_macosx_sdk}"
211         LD="${LD} -syslibroot ${with_macosx_sdk}"
212     fi
213     AC_ARG_WITH(macosx-version-min,
214       [AS_HELP_STRING([--with-macosx-version-min=VERSION],
215         [compile for Mac OS X VERSION and above])])
216     if test "${with_macosx_version_min}" != "" ; then
217         CPP="${CPP} -mmacosx-version-min=${with_macosx_version_min}"
218         CC="${CC} -mmacosx-version-min=${with_macosx_version_min}"
219         CXX="${CXX} -mmacosx-version-min=${with_macosx_version_min}"
220         OBJC="${OBJC} -mmacosx-version-min=${with_macosx_version_min}"
221         LD="${LD} -mmacosx_version_min=${with_macosx_version_min}"
222     fi
223     ;;
224   *mingw32* | *cygwin* | *wince* | *mingwce*)
225     dnl Force libtool to not link to (shared) libgcc_s when detecting C++ dependencies
226     dnl When doing this test with -static-libgcc it will link on (static) libgcc_eh
227     CXXFLAGS="${CXXFLAGS} -static-libgcc"
228     AC_CHECK_TOOL(WINDRES, windres, :)
229     AC_CHECK_TOOL(OBJCOPY, objcopy, :)
230     AH_TOP([#if defined(_WIN32) && !defined(_WIN32_WINNT)])
231     AH_TOP([# define _WIN32_WINNT 0x0502 /* Windows XP SP2 */])
232     AH_TOP([#endif])
233     AC_DEFINE([_WIN32_IE], 0x0600, [Define to '0x0600' for IE 6.0 (and shell) APIs.])
234     AC_DEFINE([_UNICODE], [1], [Define to 1 for Unicode (Wide Chars) APIs.])
235     AC_DEFINE([UNICODE], [1], [Define to 1 for Unicode (Wide Chars) APIs.])
236     AC_DEFINE([_ISOC99_SOURCE], [1], [Extensions to ISO C89 from ISO C99.])
237     AC_DEFINE([_ISOC11_SOURCE], [1], [Extensions to ISO C99 from ISO C11.])
238     AC_DEFINE([_POSIX_SOURCE], [1], [IEEE Std 1003.1.])
239     AC_DEFINE([_POSIX_C_SOURCE], [200809L], [IEEE Std 1003.1.])
240     AC_DEFINE([_XOPEN_SOURCE], [700], [POSIX and XPG 7th edition])
241     AC_DEFINE([_XOPEN_SOURCE_EXTENDED], [1], [XPG things and X/Open Unix extensions.])
242     AC_DEFINE([_BSD_SOURCE], [1], [ISO C, POSIX, and 4.3BSD things.])
243     AC_DEFINE([_SVID_SOURCE], [1], [ISO C, POSIX, and SVID things.])
245     case "${host_os}" in
246       *mingw32*)
247         SYS=mingw32
248         ;;
249       *cygwin*)
250         dnl Check if we are using the mno-cygwin mode in which case we are
251         dnl actually dealing with a mingw32 compiler.
252         AC_EGREP_CPP(yes,
253             [#ifdef _WIN32
254              yes
255              #endif],
256             SYS=mingw32, AC_MSG_ERROR([VLC requires -mno-cygwin]))
257         ;;
258     esac
260     if test "${SYS}" = "mingw32"; then
261         # DEP, ASLR, NO SEH
262         LDFLAGS="${LDFLAGS} -Wl,--nxcompat -Wl,--no-seh -Wl,--dynamicbase"
264         AC_CHECK_PROGS(U2D, [unix2dos todos], unix2dos)
265         ac_default_prefix="`pwd`/_win32"
266         DESTDIR="`pwd`/_win32/"
268         dnl
269         dnl NSIS/MSI Installer prefix and WIN64
270         dnl
271         case "${host}" in
272             amd64*|x86_64*)
273                 HAVE_WIN64="1"
274                 WINDOWS_ARCH="x64"
275                 PROGRAMFILES="PROGRAMFILES64"
276                 LDFLAGS="${LDFLAGS} -Wl,--high-entropy-va -Wl,--image-base,0x140000000"
277             ;;
278             *)
279                 WINDOWS_ARCH="x86"
280                 PROGRAMFILES="PROGRAMFILES"
281             ;;
282         esac
283         AC_SUBST(WINDOWS_ARCH)
284         AC_SUBST(PROGRAMFILES)
286     fi
287     ;;
288   *nto*)
289     SYS=nto
290     ;;
291   solaris*)
292     SYS=solaris
293     ;;
294   hpux*)
295     SYS=hpux
296     ;;
297   *os2*)
298     SYS=os2
299     LDFLAGS="${LDFLAGS} -Zomf -Zbin-files -Zargs-wild -Zhigh-mem"
300     AC_LIBOBJ([freeaddrinfo])
301     AC_LIBOBJ([gai_strerror])
302     ;;
303   *nacl*)
304     SYS=nacl
305     AC_DEFINE([_XOPEN_SOURCE], [700], [POSIX and XPG 7th edition])
306     AC_LIBOBJ([sigwait])
307     AC_LIBOBJ([recvmsg])
308     AC_LIBOBJ([sendmsg])
309     ;;
310   *)
311     SYS="${host_os}"
312     ;;
313 esac
315 dnl WinRT
316 AC_ARG_ENABLE(winstore_app,
317      AS_HELP_STRING([--enable-winstore-app],
318                     [Build targetted for Windows Store apps (default disabled)]))
320 vlc_winstore_app=0
321 AS_IF([test "${SYS}" = "mingw32"],[
322   LIBCOM="-lole32"
323   AS_IF([test "${enable_winstore_app}" = "yes"], [
324     vlc_winstore_app=1
325     LIBCOM=""
326      VLC_ADD_LIBS([libvlccore], [-lruntimeobject])
327      AC_LIBOBJ([gai_strerror])
328     ],[])
329   AC_SUBST(LIBCOM)
330   ])
331 AC_DEFINE_UNQUOTED(VLC_WINSTORE_APP, ${vlc_winstore_app}, [Define to 1 if you want to build for Windows Store apps])
333 AM_CONDITIONAL(HAVE_LINUX,   test "${SYS}" = "linux")
334 AM_CONDITIONAL(HAVE_OS2,     test "${SYS}" = "os2")
336 AM_CONDITIONAL(HAVE_DARWIN,  test "${SYS}" = "darwin")
337 AM_CONDITIONAL(HAVE_IOS,     test "${HAVE_IOS}" = "1")
338 AM_CONDITIONAL(HAVE_OSX,     test "${HAVE_OSX}" = "1")
339 AM_CONDITIONAL(HAVE_TVOS,    test "${HAVE_TVOS}" = "1")
341 AM_CONDITIONAL(HAVE_NACL,    test "${SYS}" = "nacl")
343 AM_CONDITIONAL(HAVE_WIN32,   test "${SYS}" = "mingw32")
344 AM_CONDITIONAL(HAVE_WIN64,   test "${HAVE_WIN64}" = "1") dnl Only used for the packaging
345 AM_CONDITIONAL([HAVE_WINSTORE], [test "$vlc_winstore_app" = "1"])
346 AM_CONDITIONAL([HAVE_WIN32_DESKTOP], [test "${SYS}" = "mingw32" -a "$vlc_winstore_app" = "0"])
349 dnl Sadly autoconf does not think about testing foo.exe when ask to test
350 dnl for program foo on win32
351 case "${build_os}" in
352     cygwin|msys|mingw32)
353         ac_executable_extensions=".exe"
354         BUILDEXEEXT=".exe"
355     ;;
356     os2*)
357         BUILDEXEEXT=".exe"
358     ;;
359     *)
360     ;;
361 esac
362 AC_SUBST(BUILDEXEEXT)
364 dnl Android is linux, but a bit different
365 AS_IF([test "$SYS" = linux],[
366     AC_MSG_CHECKING([for an Android system])
367     AC_PREPROC_IFELSE([AC_LANG_PROGRAM(
368         [[#ifndef __ANDROID__
369          # error Not Android
370          #endif
371         ]],[[;]])
372     ],[
373       HAVE_ANDROID="1"
374       AC_MSG_RESULT([yes])
375     ],[
376       AC_MSG_RESULT([no])
377     ])
379 AM_CONDITIONAL(HAVE_ANDROID, test "${HAVE_ANDROID}" = "1")
381 dnl Tizen (minimum SDK version: 2.3)
382 AS_IF([test "$SYS" = linux],[
383     AC_MSG_CHECKING([for Tizen])
384     AC_PREPROC_IFELSE([AC_LANG_PROGRAM(
385         [[#include <tizen.h>
386         ]],[[;]])
387     ],[
388       HAVE_TIZEN="1"
389       AC_DEFINE([HAVE_TIZEN_SDK], [1], [Define to 1 if vlc is built against Tizen SDK])
390       AC_MSG_RESULT([yes])
391     ],[
392       AC_MSG_RESULT([no])
393     ])
395 AM_CONDITIONAL(HAVE_TIZEN, test "${HAVE_TIZEN}" = "1")
398 dnl  Check for the contrib directory
400 AC_ARG_WITH(contrib,
401   [AS_HELP_STRING([--with-contrib[=DIR]],
402     [search for 3rd party libraries in DIR/include and DIR/lib])
404 AC_MSG_CHECKING([for 3rd party libraries path])
405 AS_IF([test -z "${with_contrib}" || test "${with_contrib}" = "yes"], [
406   CONTRIB_DIR="${srcdir}/contrib/${host}"
407   AS_IF([test ! -d "${CONTRIB_DIR}"], [
408     echo "${CONTRIB_DIR} not found" >&AS_MESSAGE_LOG_FD
409     CONTRIB_DIR="${srcdir}/contrib/`$CC -dumpmachine`"
410     AS_IF([test ! -d "${CONTRIB_DIR}"], [
411       echo "${CONTRIB_DIR} not found" >&AS_MESSAGE_LOG_FD
412       CONTRIB_DIR=""
413       AC_MSG_RESULT([not found])
414     ])
415   ])
416 ], [
417   AS_IF([test "${with_contrib}" != "no"], [
418     CONTRIB_DIR="${with_contrib}"
419   ], [
420     CONTRIB_DIR=""
421     AC_MSG_RESULT([disabled])
422   ])
424 AS_IF([test -n "${CONTRIB_DIR}"], [
425   AS_IF([test -d "${CONTRIB_DIR}/lib"],[
426     CONTRIB_DIR=`cd "${CONTRIB_DIR}" && pwd`
427   ], [
428     echo "${CONTRIB_DIR}/lib not found" >&AS_MESSAGE_LOG_FD
429     CONTRIB_DIR=""
430     AC_MSG_RESULT([not usable])
431   ])
434 AS_IF([test -n "${CONTRIB_DIR}"], [
435   AC_MSG_RESULT([${CONTRIB_DIR}])
436   CPPFLAGS="${CPPFLAGS} -I${CONTRIB_DIR}/include"
437   CFLAGS="${CFLAGS} -I${CONTRIB_DIR}/include"
438   CXXFLAGS="${CXXFLAGS} -I${CONTRIB_DIR}/include"
439   OBJCFLAGS="${OBJCFLAGS} -I${CONTRIB_DIR}/include -F${CONTRIB_DIR} -F${CONTRIB_DIR}/Frameworks"
440   export PKG_CONFIG_PATH="${CONTRIB_DIR}/lib/pkgconfig:$PKG_CONFIG_PATH"
441   LDFLAGS="${LDFLAGS} -L${CONTRIB_DIR}/lib"
443   AS_IF([test -z "$LUAC"], [
444     dnl Old contribs mixed cross-tools and cross-compiled executables
445     AS_IF([test -x "${CONTRIB_DIR}/bin/luac${BUILDEXEEXT}"], [
446       LUAC="${CONTRIB_DIR}/bin/luac${BUILDEXEEXT}"
447     ])
449     dnl Newer contribs follow usual name space rules
450     AS_IF([test -x "${CONTRIB_DIR}/../bin/${host_alias}-luac${BUILDEXEEXT}"], [
451       LUAC="${CONTRIB_DIR}/../bin/${host_alias}-luac${BUILDEXEEXT}"
452     ])
453   ])
455   AS_IF([test "${SYS}" = "darwin"], [
456     export LD_LIBRARY_PATH="${CONTRIB_DIR}/lib:$LD_LIBRARY_PATH"
457     export DYLD_LIBRARY_PATH="${CONTRIB_DIR}/lib:$DYLD_LIBRARY_PATH"
458   ])
459 ], [
460   AS_IF([test -n "${with_contrib}" && test "${with_contrib}" != "no"], [
461     AC_MSG_ERROR([Third party libraries not found!])
462   ])
464 AC_SUBST(CONTRIB_DIR)
466 dnl Add extras/tools to the PATH
467 TOOLS_DIR="${srcdir}/extras/tools/build/bin"
468 AS_IF([test -d "${TOOLS_DIR}"], [
469     TOOLS_DIR=`cd "${TOOLS_DIR}" && pwd`
470     export PATH="${TOOLS_DIR}":$PATH
474 dnl  Libtool
475 dnl  It's very bad, but our former custom system was worst
476 dnl  -- Courmisch
479 dnl override platform specific check for dependent libraries
480 dnl otherwise libtool linking of shared libraries will
481 dnl fail on anything other than pass_all.
482 AC_CACHE_VAL(lt_cv_deplibs_check_method,
483     [lt_cv_deplibs_check_method=pass_all])
485 LT_INIT([dlopen win32-dll shared disable-static])
486 LT_LANG([C++])
487 LT_LANG([Windows Resource])
489 DOLT
491 lt_cv_deplibs_check_method=pass_all
493 AS_IF([test "${enable_shared}" = "no" -a "${enable_vlc}" != "no"], [
494   AC_MSG_ERROR([VLC is based on plugins. Shared libraries cannot be disabled.])
498 dnl Gettext stuff
500 AM_GNU_GETTEXT_VERSION([0.19.8])
501 AM_GNU_GETTEXT([external], [need-formatstring-macros])
504 dnl Iconv stuff
506 AM_ICONV
509 dnl checks for mingw
510 AS_IF([test "${SYS}" = "mingw32"], [
512 AC_PREPROC_IFELSE([AC_LANG_SOURCE([
513 #if !defined(__MINGW32__)
514 # error Not compiling with mingw
515 #endif
516     ])], [
518 dnl Check for broken versions of mingw-runtime compatability library
519     AC_MSG_CHECKING(for broken mingw-runtime)
520     AC_PREPROC_IFELSE([AC_LANG_SOURCE([
521 #include <_mingw.h>
522 #if defined(__MINGW64_VERSION_MAJOR)
523 # if __MINGW64_VERSION_MAJOR < 3
524 #  error Attempting to use mingw-runtime with broken vsnprintf support
525 # endif
526 #elif __MINGW32_MAJOR_VERSION == 3 && __MINGW32_MINOR_VERSION < 15
527 # error Attempting to use mingw-runtime with broken vsnprintf support
528 #endif
529     ])], [
530         AC_MSG_RESULT([ok])
531     ], [
532         AC_MSG_RESULT([present])
533         AC_MSG_ERROR([LibVLC requires mingw-runtime version 3.15 or higher, or mingw-w64 version 3.0 or higher!])
534     ])
536     dnl force use of mingw provided c99 *printf over msvcrt
537     CPPFLAGS="${CPPFLAGS} -D__USE_MINGW_ANSI_STDIO=1"
539     dnl Check for the need to include the mingwex lib for mingw32
540     VLC_SAVE_FLAGS
541     AC_CHECK_LIB(mingwex,opendir,
542         AC_CHECK_LIB(mingw32,opendir,,
543             [VLC_ADD_LIBS([libvlccore],[-lmingwex])])
544     )
545     VLC_RESTORE_FLAGS
546     ], [
547         AC_MSG_RESULT([Not compiling with mingw])
548     ])
550     dnl Check for fnative-struct or mms-bitfields support for mingw32
551     VLC_SAVE_FLAGS
552     CFLAGS="${CFLAGS} -mms-bitfields"
553     CXXFLAGS="${CXXFLAGS} -mms-bitfields"
554     AC_CACHE_CHECK([if \$CC accepts -mms-bitfields],
555         [ac_cv_c_mms_bitfields],
556         [AC_TRY_COMPILE([],,ac_cv_c_mms_bitfields=yes, ac_cv_c_mms_bitfields=no)])
557     if test "${ac_cv_c_mms_bitfields}" = "no"; then
558         VLC_RESTORE_FLAGS
559         CFLAGS="${CFLAGS} -fnative-struct"
560         CXXFLAGS="${CXXFLAGS} -fnative-struct"
561         AC_CACHE_CHECK([if \$CC accepts -fnative-struct],
562             [ac_cv_c_fnative_struct],
563             [AC_TRY_COMPILE([],,ac_cv_c_fnative_struct=yes, ac_cv_c_fnative_struct=no)])
564         "${ac_cv_c_fnative_struct}" = "no" && VLC_RESTORE_FLAGS
565     fi
570 dnl Buggy glibc prevention. Purposedly not cached.
571 dnl See sourceware.org bugs 5058 and 5443.
572 dnl Ubuntu alone has 20 bug numbers for this...
574 AC_MSG_CHECKING(for buggy GNU/libc versions)
575 AC_PREPROC_IFELSE([AC_LANG_SOURCE([
576 #include <limits.h>
577 #if defined (__GLIBC__) && (__GLIBC__ == 2) \
578   && (__GLIBC_MINOR__ >= 5) && (__GLIBC_MINOR__ <= 7)
579 # error GNU/libc with dcgettext killer bug!
580 #endif
581 ])], [
582   AC_MSG_RESULT([not present])
583 ], [
584   AC_MSG_RESULT([found])
585   AS_IF([test "x${enable_nls}" != "xno"], [
586     AC_MSG_ERROR([Buggy GNU/libc (version 2.5 - 2.7) present. VLC would crash; there is no viable
587 work-around for this. Check with your distribution vendor on how to update the
588 glibc run-time. Alternatively, build with --disable-nls.])
589   ])
592 dnl Plugin compilation stuff
594 VLC_LIBRARY_SUFFIX
596 dnl Check for system libs needed
597 need_libc=false
599 dnl Check for usual libc functions
600 AC_CHECK_FUNCS([daemon fcntl flock fstatvfs fork getenv getpwuid_r isatty lstat memalign mkostemp mmap open_memstream openat pread posix_fadvise posix_madvise posix_memalign setlocale stricmp strnicmp strptime tdestroy uselocale])
601 AC_REPLACE_FUNCS([aligned_alloc atof atoll dirfd fdopendir ffsll flockfile fsync getdelim getpid lldiv memrchr nrand48 poll recvmsg rewind sendmsg setenv strcasecmp strcasestr strdup strlcpy strndup strnlen strnstr strsep strtof strtok_r strtoll swab tfind timegm timespec_get strverscmp pathconf])
602 AC_REPLACE_FUNCS([gettimeofday])
603 AC_CHECK_FUNC(fdatasync,,
604   [AC_DEFINE(fdatasync, fsync, [Alias fdatasync() to fsync() if missing.])
607 VLC_REPLACE_DECL([realpath], [#include <stdlib.h>])
609 dnl mingw64 implements those as static inline, not functions with C linkage
610 VLC_REPLACE_DECL([asprintf], [#include <stdio.h>])
611 VLC_REPLACE_DECL([vasprintf], [#include <stdio.h>])
612 VLC_REPLACE_DECL([gmtime_r], [#include <time.h>])
613 VLC_REPLACE_DECL([localtime_r], [#include <time.h>])
615 dnl C11 static_assert()
616 AC_MSG_CHECKING([for static_assert in assert.h])
617 AC_LINK_IFELSE([AC_LANG_PROGRAM([#include <assert.h>], [
618 static_assert(1, "The impossible happened.");
619 ])], [
620   AC_MSG_RESULT([yes])
621   AC_DEFINE([HAVE_STATIC_ASSERT], [1], [Define to 1 if <assert.h> defines static_assert.])
622 ], [
623   AC_MSG_RESULT([no])
626 # Windows CE does not have strcoll()
627 AC_FUNC_STRCOLL
629 dnl Check for non-standard system calls
630 case "$SYS" in
631   "linux")
632     AC_CHECK_FUNCS([accept4 pipe2 eventfd vmsplice sched_getaffinity recvmmsg])
633     ;;
634   "mingw32")
635     AC_CHECK_FUNCS([_lock_file])
636     ;;
637 esac
639 AH_BOTTOM([#include <vlc_fixups.h>])
641 dnl Check for struct pollfd
642 AC_CHECK_TYPES([struct pollfd],,,
643 [#include <sys/types.h>
644 #if HAVE_POLL
645 # include <poll.h>
646 #elif defined (_WIN32)
647 # include <winsock2.h>
648 #endif
651 dnl Check for struct timespec
652 AC_CHECK_TYPES([struct timespec],,,
653 [#include <time.h>])
655 dnl Check for max_align_t
656 AC_CHECK_TYPES([max_align_t],,,
657 [#include <stddef.h>])
659 dnl Checks for socket stuff
660 VLC_SAVE_FLAGS
661 SOCKET_LIBS=""
662 AC_SEARCH_LIBS(connect, [socket], [
663   AS_IF([test "$ac_cv_search_connect" != "none required"], [
664     SOCKET_LIBS="$ac_cv_search_connect"
665   ])
666 ], [
667   AS_IF([test "${SYS}" = "mingw32"], [
668     SOCKET_LIBS="-lws2_32"
669   ])
672 AC_SEARCH_LIBS([inet_pton], [nsl], [
673  AS_IF([test "$ac_cv_search_inet_pton" != "none required"], [
674     SOCKET_LIBS="$ac_cv_search_inet_pton $SOCKET_LIBS"
675   ])
676 ],, [${SOCKET_LIBS}])
678 LIBS="${LIBS} ${SOCKET_LIBS}"
679 AC_LINK_IFELSE([
680     AC_LANG_PROGRAM([#ifdef _WIN32
681         # if _WIN32_WINNT < 0x600
682         #  error Needs vista+
683         # endif
684         #include <ws2tcpip.h>
685         #else
686         #include <sys/socket.h>
687         #include <arpa/inet.h>
688         #endif], [
689         char dst[[sizeof(struct in_addr)]];
690         inet_pton(AF_INET, "127.0.0.1", dst);
691     ])],[AC_DEFINE([HAVE_INET_PTON],[1],[Define to 1 if you have inet_pton function])],[AC_LIBOBJ([inet_pton])])
692 AC_CHECK_FUNCS([if_nameindex if_nametoindex])
693 VLC_RESTORE_FLAGS
694 AC_SUBST(SOCKET_LIBS)
696 dnl Check for socklen_t
697 AH_TEMPLATE(socklen_t, [Define to `int' if <sys/socket.h> does not define.])
698 AC_CACHE_CHECK([for socklen_t in sys/socket.h], dnl ` (fix VIM syntax highlight
699 ac_cv_type_socklen_t,
700 [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([
701 [#include <sys/types.h>
702 #ifdef _WIN32
703 # include <winsock2.h>
704 # include <ws2tcpip.h>
705 #else
706 # include <sys/socket.h>
707 #endif]], [[socklen_t len; len = 0;]])],
708 ac_cv_type_socklen_t=yes,
709 ac_cv_type_socklen_t=no)])
710 AS_IF([test "$ac_cv_type_socklen_t" = no],
711  [AC_DEFINE(socklen_t, int)])
713 dnl Check for struct sockaddr_storage
714 AH_TEMPLATE(sockaddr_storage, [Define to `sockaddr' if <sys/socket.h> does not define.]) dnl ` (fix VIM syntax highlight
715 AH_TEMPLATE(ss_family, [Define to `sa_family' if <sys/socket.h> does not define.]) dnl ` (fix VIM syntax highlight
716 AC_CACHE_CHECK([for struct sockaddr_storage], ac_cv_struct_sockaddr_storage,
717   [AC_TRY_COMPILE(
718     [#include <sys/types.h>
719      #if defined( _WIN32 )
720      # include <winsock2.h>
721      #else
722      # include <sys/socket.h>
723      #endif], [struct sockaddr_storage addr;],
724      ac_cv_struct_sockaddr_storage=yes,
725      ac_cv_struct_sockaddr_storage=no)])
726 AS_IF([test "${ac_cv_struct_sockaddr_storage}" = no], [
727   AC_DEFINE(sockaddr_storage, sockaddr)
728   AC_DEFINE(ss_family, sa_family)
731 dnl FreeBSD has a gnugetopt library for this:
732 GNUGETOPT_LIBS=""
733 AC_CHECK_FUNC(getopt_long,, [
734   AC_CHECK_LIB([gnugetopt],[getopt_long], [
735     GNUGETOPT_LIBS="-lgnugetopt"
736   ])
738 AC_SUBST(GNUGETOPT_LIBS)
740 AC_CHECK_LIB(m,cos,[
741   LIBM="-lm"
742 ], [
743   LIBM=""
745 AC_SUBST(LIBM)
747 AC_CHECK_LIB(m,lrintf, [
748   AC_DEFINE(HAVE_LRINTF, 1, [Define to 1 if you have the lrintf function])
749   VLC_ADD_LIBS([skins2],[-lm])
751 AC_CHECK_LIB(m,nanf,
752   AC_DEFINE(HAVE_NANF, 1, [Define to 1 if you have the NANF function])
754 AC_CHECK_LIB(m,sincos, [
755   AC_DEFINE(HAVE_SINCOS, 1, [Define to 1 if you have the sincos function.])
756 ], [
757   AC_LIBOBJ([sincos])
760 AC_MSG_CHECKING([_Thread_local support])
761 AC_COMPILE_IFELSE([AC_LANG_SOURCE([_Thread_local int foo = 0;
762                    int main() {}])], [
763     AC_MSG_RESULT([ok])
764     AC_DEFINE(HAVE_THREAD_LOCAL, 1, [Defined to 1 if C11 _Thread_local storage qualifier is supported])
765 ],[ AC_MSG_RESULT([no])])
767 dnl __STDC_NO_THREADS__ can't be trusted on some platforms.
768 dnl check for its availability explicitely
769 AC_CHECK_HEADERS([threads.h])
771 dnl Check for dynamic plugins
772 LIBDL=""
773 have_dynamic_objects="no"
774 VLC_SAVE_FLAGS
775 AC_SEARCH_LIBS(dlsym, [dl svld], [
776   AS_IF([test "$ac_cv_search_dlsym" != "none required"], [
777     LIBDL="$ac_cv_search_dlsym"
778   ])
779   have_dynamic_objects="yes"
781 VLC_RESTORE_FLAGS
783 # Windows
784 AS_IF([test "${SYS}" = "mingw32"], [
785   LIBDL=""
786   have_dynamic_objects="yes" #assume we can use shared objects
789 AS_IF([test "${enable_shared}" = "no"], [
790   have_dynamic_objects=no
792 AM_CONDITIONAL(HAVE_DYNAMIC_PLUGINS, [test "${have_dynamic_objects}" != "no"])
794 AC_SUBST(LIBDL)
796 dnl Check for thread library
797 LIBPTHREAD=""
798 AS_IF([test "${SYS}" != "mingw32"], [
799   VLC_SAVE_FLAGS
800   LIBS=""
801   AC_SEARCH_LIBS(pthread_rwlock_init, pthread pthreads c_r, [
802     AS_IF([test "$ac_cv_search_pthread_rwlock_init" != "none required"], [
803       LIBPTHREAD="$ac_cv_search_pthread_rwlock_init"
804     ])
805   ])
806   VLC_RESTORE_FLAGS
808 AC_SUBST(LIBPTHREAD)
810 AC_SEARCH_LIBS([clock_nanosleep], [rt pthread], [
811   AS_IF([test "$ac_cv_search_clock_nanosleep" != "none required"], [
812     LIBRT="$ac_cv_search_clock_nanosleep"
813   ])
814 ], [
815   AC_SEARCH_LIBS([nanosleep], [rt pthread posix4], [
816     AS_IF([test "$ac_cv_search_nanosleep" != "none required"], [
817       LIBRT="$ac_cv_search_nanosleep"
818     ])
819   ])
821 AC_SUBST(LIBRT)
824 dnl Check for headers
827 dnl  POSIX
828 AC_CHECK_HEADERS([arpa/inet.h pthread.h search.h sys/shm.h sys/socket.h sys/uio.h])
829 AC_CHECK_HEADERS([net/if.h], [], [],
831 #include <sys/types.h>
832 #include <sys/socket.h>
834 AC_CHECK_HEADER([syslog.h], [have_syslog="yes"], [have_syslog="no"])
835 AM_CONDITIONAL([HAVE_SYSLOG], [test "$have_syslog" = "yes"])
837 dnl  BSD
838 AC_CHECK_HEADERS([netinet/tcp.h netinet/udplite.h sys/param.h sys/mount.h])
840 dnl  GNU/Linux
841 AC_CHECK_HEADERS([features.h getopt.h linux/dccp.h linux/magic.h mntent.h sys/eventfd.h])
843 dnl  MacOS
844 AC_CHECK_HEADERS([xlocale.h])
846 dnl LP64 and LLP64 architectures had better define ssize_t by themselves...
847 AH_TEMPLATE(ssize_t, [Define to `int' if <stddef.h> does not define.]) dnl ` (fix VIM syntax highlight
848 AC_CHECK_TYPE(ssize_t,, [
849   AC_DEFINE(ssize_t, int)
852 dnl It seems that autoconf detects pkg-config only during the first
853 dnl PKG_CHECK_MODULES from configure.ac - which makes sense. But in our case,
854 dnl it is nested within a conditional block, so it was not working right.
855 dnl Make PKG_CONFIG_PATH precious so that it appears in the help and get saved
856 AC_ARG_VAR(PKG_CONFIG_PATH,
857        [Paths where to find .pc not at the default location])
858 PKG_PROG_PKG_CONFIG()
860 dnl On some OS we need static linking
861 AS_IF([test -n "${PKG_CONFIG}" ],[
862     AS_IF([test "${SYS}" = "mingw32" -o "${SYS}" = "darwin" -o "${SYS}" = "os2" ],[
863         PKG_CONFIG="${PKG_CONFIG} --static"
864     ])
869 dnl Check for zlib.h and -lz along with system -lminizip if available
871 AC_CHECK_HEADERS(zlib.h, [ have_zlib=yes ], [ have_zlib=no ])
872 AM_CONDITIONAL(HAVE_ZLIB, [ test "${have_zlib}" = "yes" ])
873 if test "${have_zlib}" = "yes"
874 then
875   VLC_ADD_LIBS([sap],[-lz])
876   PKG_CHECK_MODULES([MINIZIP], [minizip] , [ have_minizip=yes ], [
877     AC_CHECK_HEADERS([unzip.h], [
878       have_minizip=yes
879       MINIZIP_LIBS="-lminizip -lz"
880     ], [
881       have_minizip=no
882     ])
883   ])
885 AM_CONDITIONAL(HAVE_MINIZIP, [ test "${have_minizip}" = "yes" ])
889 dnl Domain name i18n support via GNU libidn
891 PKG_CHECK_MODULES([IDN], [libidn], [
892   have_libidn="yes"
893   AC_DEFINE([HAVE_IDN], 1, [Define to 1 if you have GNU libidn.])
894 ], [
895   have_libidn="no"
899 dnl Check for dbus
900 AC_ARG_ENABLE(dbus,
901   [AS_HELP_STRING([--enable-dbus],
902     [compile D-Bus message bus support (default enabled)])])
903 have_dbus="no"
904 AS_IF([test "${enable_dbus}" != "no"], [
905   PKG_CHECK_MODULES(DBUS, [dbus-1 >= 1.6.0], [
906     have_dbus="yes"
907   ], [
908     AS_IF([test -n "${enable_dbus}"], [
909       AC_MSG_ERROR([${DBUS_PKG_ERRORS}.])
910     ], [
911       AC_MSG_WARN([${DBUS_PKG_ERRORS}.])
912     ])
913   ])
915 AM_CONDITIONAL([HAVE_DBUS], [test "${have_dbus}" = "yes"])
918 dnl Check for systemd
919 PKG_CHECK_MODULES([SYSTEMD], [libsystemd], [
920   have_systemd="yes"
921 ], [
922   AC_MSG_WARN([${SYSTEMD_PKG_ERRORS}.])
924 AM_CONDITIONAL([HAVE_SYSTEMD], [test "${have_systemd}" = "yes"])
927 EXTEND_HELP_STRING([Optimization options:])
929 dnl  Compiler warnings
932 AX_APPEND_COMPILE_FLAGS([-Wall -Wextra -Wsign-compare -Wundef -Wpointer-arith -Wvolatile-register-var -Wformat -Wformat-security], [CFLAGS])
933 AX_APPEND_COMPILE_FLAGS([-Wall -Wextra -Wsign-compare -Wundef -Wpointer-arith -Wvolatile-register-var -Wformat -Wformat-security], [CXXFLAGS])
935 AX_APPEND_COMPILE_FLAGS([-Wbad-function-cast -Wwrite-strings -Wmissing-prototypes -Werror-implicit-function-declaration -Winit-self -Wlogical-op -Wshadow=local], [CFLAGS])
936 AX_APPEND_COMPILE_FLAGS([-pipe], [CFLAGS])
939 dnl  Debugging mode
941 AC_ARG_ENABLE(debug,
942   [AS_HELP_STRING([--enable-debug],
943     [build with run-time assertions (default disabled)])],,
944   [enable_debug="no"])
945 AH_TEMPLATE(NDEBUG,
946             [Define to 1 if debug code should NOT be compiled])
947 AS_IF([test "${enable_debug}" != "no"], [
948   AC_CHECK_HEADERS([valgrind/valgrind.h])
949 ], [
950   AC_DEFINE(NDEBUG)
954 dnl  Profiling
956 AC_ARG_ENABLE(gprof,
957   [AS_HELP_STRING([--enable-gprof],[profile with gprof (default disabled)])],,
958   [enable_gprof="no"])
959 AS_IF([test "${enable_gprof}" != "no"], [
960   CFLAGS="${CFLAGS} -pg"
961   CXXFLAGS="${CXXFLAGS} -pg"
962   OBJCFLAGS="${OBJCFLAGS} -pg"
963   LDFLAGS="${LDFLAGS} -pg"
966 AC_ARG_ENABLE(cprof,
967   [AS_HELP_STRING([--enable-cprof],[profile with cprof (default disabled)])],,
968   [enable_cprof="no"])
969 AS_IF([test "${enable_gprof}" != "no"], [
970   CFLAGS="${CFLAGS} -finstrument-functions"
971   CXXFLAGS="${CXXFLAGS} -finstrument-functions"
972   OBJCFLAGS="${OBJCFLAGS} -finstrument-functions"
973   LDFLAGS="${LDFLAGS} -finstrument-functions"
977 dnl  Test coverage
979 AC_ARG_ENABLE(coverage,
980   [AS_HELP_STRING([--enable-coverage],
981     [build for test coverage (default disabled)])],,
982   [enable_coverage="no"])
983 AS_IF([test "${enable_coverage}" != "no"], [
984   CFLAGS="-fprofile-arcs -ftest-coverage ${CFLAGS}"
985   CXXFLAGS="-fprofile-arcs -ftest-coverage ${CXXFLAGS}"
986   LDFLAGS="-lgcov ${LDFLAGS}"
989 AS_IF([test "${SYS}" != "mingw32" -a "${SYS}" != "os2"], [
990   VLC_SAVE_FLAGS
991   CFLAGS="${CFLAGS} -fvisibility=hidden"
992   CXXFLAGS="${CXXFLAGS} -fvisibility=hidden"
993   OBJCFLAGS="${OBJCFLAGS} -fvisibility=hidden"
994   AC_CACHE_CHECK([if $CC accepts -fvisibility=hidden],
995                  [ac_cv_c_visibility_hidden], [
996     AC_COMPILE_IFELSE([AC_LANG_PROGRAM()], [
997       ac_cv_c_visibility_hidden=yes
998     ], [
999       ac_cv_c_visibility_hidden=no
1000     ])
1001   ])
1002   AS_IF([test "${ac_cv_c_visibility_hidden}" = "no"], [VLC_RESTORE_FLAGS])
1006 dnl Sanitizer flags
1008 AC_ARG_WITH([sanitizer],
1009     [AS_HELP_STRING([--with-sanitizer=(address/memory/undefined/thread)],
1010         [build with sanitizer flags (default disabled)])],
1011      [],
1012      [with_sanitizer=no])
1014 AS_VAR_IF(with_sanitizer, no, [], [
1015     AX_CHECK_COMPILE_FLAG([-fsanitize=${with_sanitizer}], [
1016         AX_APPEND_FLAG([-fsanitize=${with_sanitizer}])
1017         AX_APPEND_FLAG([-fsanitize=${with_sanitizer}], [CXXFLAGS])
1018         AX_APPEND_FLAG([-fsanitize=${with_sanitizer}], [LDFLAGS])
1019     ], [
1020         AC_MSG_ERROR(["-fsanitize=${with_sanitizer} not supported!"])
1021     ])
1022     AX_APPEND_FLAG([-g])
1023     AX_APPEND_FLAG([-g], [CXXFLAGS])
1025     AS_IF([test -z "${with_sanitizer##*address*}" ], [
1026        AX_APPEND_COMPILE_FLAGS([-fsanitize-address-use-after-scope -fno-omit-frame-pointer])
1027        AX_APPEND_COMPILE_FLAGS([-fsanitize-address-use-after-scope -fno-omit-frame-pointer], [CXXFLAGS])
1028     ])
1029     AS_IF([test -z "${with_sanitizer##*memory*}" ], [
1030         AX_APPEND_COMPILE_FLAGS([-fPIE -pie])
1031         AX_APPEND_COMPILE_FLAGS([-fPIE -pie], [CXXFLAGS])
1032     ])
1033     AS_IF([test -z "${with_sanitizer##*thread*}" ], [
1034         AX_APPEND_COMPILE_FLAGS([-fPIE -pie])
1035         AX_APPEND_COMPILE_FLAGS([-fPIE -pie], [CXXFLAGS])
1036     ])
1040 dnl  Enable/disable optimizations
1042 AC_ARG_ENABLE(optimizations,
1043   [AS_HELP_STRING([--disable-optimizations],
1044     [disable compiler optimizations (default enabled)])],,
1045   [enable_optimizations="yes"])
1047 dnl Check for various optimization flags
1048 AS_IF([test "${enable_optimizations}" != "no"], [
1050   dnl -O3 only in production builds
1051   AS_IF([test "${enable_debug}" = "no"], [
1052     VLC_SAVE_FLAGS
1053     CFLAGS="${CFLAGS} -O3"
1054     CXXFLAGS="${CXXFLAGS} -O3"
1055     OBJCFLAGS="${OBJCFLAGS} -O3"
1056     AC_CACHE_CHECK([if $CC accepts -O3],  [ac_cv_c_o3], [
1057       AC_COMPILE_IFELSE([AC_LANG_PROGRAM()], [
1058         ac_cv_c_o3=yes
1059       ], [
1060         ac_cv_c_o3=no
1061       ])
1062     ])
1063     AS_IF([test "${ac_cv_c_o3}" = "no"], [VLC_RESTORE_FLAGS])
1064   ])
1066   dnl Check for fast maths
1067   AX_APPEND_COMPILE_FLAGS([-fno-math-errno -funsafe-math-optimizations -fno-rounding-math -fno-signaling-nans -fcx-limited-range], [CFLAGS])
1068   AX_APPEND_COMPILE_FLAGS([-fno-math-errno -funsafe-math-optimizations -fno-rounding-math -fno-signaling-nans -fcx-limited-range], [CXXFLAGS])
1070 AH_BOTTOM([
1071 #if defined(_MSC_VER) && !defined(__clang__)
1072 # pragma fenv_access(off)
1073 # pragma fp_contract(on)
1074 #elif defined(__GNUC__)
1075 /* Not supported so far */
1076 #else
1077 # pragma STDC FENV_ACCESS OFF
1078 # pragma STDC FP_CONTRACT ON
1079 #endif
1082   dnl Check for -funroll-loops
1083   VLC_SAVE_FLAGS
1084   CFLAGS="${CFLAGS} -funroll-loops"
1085   CXXFLAGS="${CXXFLAGS} -funroll-loops"
1086   OBJCFLAGS="${OBJCFLAGS} -funroll-loops"
1087   AC_CACHE_CHECK([if $CC accepts -funroll-loops], [ac_cv_c_unroll_loops], [
1088     AC_COMPILE_IFELSE([AC_LANG_PROGRAM()], [
1089       ac_cv_c_unroll_loops=yes
1090     ], [
1091       ac_cv_c_unroll_loops=no
1092     ])
1093   ])
1094   AS_IF([test "${ac_cv_c_unroll_loops}" = "no"], [VLC_RESTORE_FLAGS])
1096   AS_IF([test "$enable_debug" = "no"], [
1097     dnl Check for -fomit-frame-pointer
1098     VLC_SAVE_FLAGS
1099     CFLAGS="${CFLAGS} -fomit-frame-pointer"
1100     CXXFLAGS="${CXXFLAGS} -fomit-frame-pointer"
1101     OBJCFLAGS="${OBJCFLAGS} -fomit-frame-pointer"
1102     AC_CACHE_CHECK([if $CC accepts -fomit-frame-pointer],
1103       [ac_cv_c_omit_frame_pointer], [
1104       AC_COMPILE_IFELSE([AC_LANG_PROGRAM()], [
1105         ac_cv_c_omit_frame_pointer=yes
1106       ], [
1107         ac_cv_c_omit_frame_pointer=no
1108       ])
1109     ])
1110     AS_IF([test "${ac_cv_c_omit_frame_pointer}" = "no"], [VLC_RESTORE_FLAGS])
1111   ])
1114 VLC_SAVE_FLAGS
1115 LDFLAGS="${LDFLAGS} -Wl,-Bsymbolic"
1116 AC_CACHE_CHECK([if linker supports -Bsymbolic], [ac_cv_ld_bsymbolic], [
1117   AC_TRY_LINK([],, [
1118     ac_cv_ld_bsymbolic="-Wl,-Bsymbolic"
1119   ], [
1120     ac_cv_ld_bsymbolic=""
1121   ])
1123 VLC_RESTORE_FLAGS
1124 SYMBOLIC_LDFLAGS="${ac_cv_ld_bsymbolic}"
1125 AC_SUBST(SYMBOLIC_LDFLAGS)
1127 VLC_SAVE_FLAGS
1128 LDFLAGS="${LDFLAGS} -Wl,-z,defs"
1129 AC_CACHE_CHECK([if linker supports -z,defs], [ac_cv_ld_z_defs], [
1130   AC_TRY_LINK([],, [
1131     ac_cv_ld_z_defs="yes"
1132   ], [
1133     ac_cv_ld_z_defs="no"
1134   ])
1136 AS_IF([test "${ac_cv_ld_z_defs}" = "no"], [VLC_RESTORE_FLAGS])
1138 dnl Check for __attribute__((packed))
1139 AC_CACHE_CHECK([for __attribute__((packed))],
1140   [ac_cv_c_attribute_packed],
1141   [ac_cv_c_attribute_packed=no
1142    AC_TRY_COMPILE(, [struct __attribute__((__packed__)) foo { int a; } b; (void)b;],
1143                     [ac_cv_c_attribute_packed=yes])])
1144 if test "${ac_cv_c_attribute_packed}" != "no"; then
1145   AC_DEFINE(HAVE_ATTRIBUTE_PACKED, 1, Support for __attribute__((packed)) for structs)
1149 dnl  Check the CPU
1151 case "${host_cpu}" in
1152   "")
1153     ARCH=unknown
1154     ;;
1155   *)
1156     ARCH="${host_cpu}"
1157     ;;
1158 esac
1160 dnl Check for backtrace() support
1161 AC_CHECK_HEADERS(execinfo.h)
1162 AC_CHECK_FUNCS(backtrace)
1165 dnl  default modules
1167 ALIASES="${ALIASES} cvlc rvlc"
1170 dnl  Accelerated modules
1173 dnl  Check for fully working MMX intrinsics
1174 dnl  We need support for -mmmx, we need <mmintrin.h>, and we also need a
1175 dnl  working compiler (http://gcc.gnu.org/bugzilla/show_bug.cgi?id=23963)
1176 AC_ARG_ENABLE(mmx,
1177   [AS_HELP_STRING([--disable-mmx],
1178     [disable MMX optimizations (default auto)])],,[
1179   case "${host_cpu}" in
1180     i?86|x86_64)
1181       enable_mmx="yes"
1182       ;;
1183     *)
1184       enable_mmx="no"
1185       ;;
1186   esac
1188 have_mmx="no"
1189 have_mmxext="no"
1190 AS_IF([test "${enable_mmx}" != "no"], [
1191   ARCH="${ARCH} mmx"
1192   VLC_SAVE_FLAGS
1193   CFLAGS="${CFLAGS} -mmmx"
1194   AC_CACHE_CHECK([if $CC groks MMX intrinsics], [ac_cv_c_mmx_intrinsics], [
1195     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([
1196 [#include <mmintrin.h>
1197 #include <stdint.h>
1198 uint64_t frobzor;]], [
1199 [__m64 a, b, c;
1200 a = b = c = (__m64)frobzor;
1201 a = _mm_slli_pi16(a, 3);
1202 a = _mm_adds_pi16(a, b);
1203 c = _mm_srli_pi16(c, 8);
1204 c = _mm_slli_pi16(c, 3);
1205 b = _mm_adds_pi16(b, c);
1206 a = _mm_unpacklo_pi8(a, b);
1207 frobzor = (uint64_t)a;]])], [
1208       ac_cv_c_mmx_intrinsics=yes
1209     ], [
1210       ac_cv_c_mmx_intrinsics=no
1211     ])
1212   ])
1213   VLC_RESTORE_FLAGS
1214   AS_IF([test "${ac_cv_c_mmx_intrinsics}" != "no"], [
1215     AC_DEFINE(HAVE_MMX_INTRINSICS, 1, [Define to 1 if MMX intrinsics are available.])
1216   ])
1218   VLC_SAVE_FLAGS
1219   CFLAGS="${CFLAGS} -mmmx"
1220   AC_CACHE_CHECK([if $CC groks MMX inline assembly], [ac_cv_mmx_inline], [
1221     AC_COMPILE_IFELSE([AC_LANG_PROGRAM(,[[
1222 void *p;
1223 asm volatile("packuswb %%mm1,%%mm2"::"r"(p):"mm1", "mm2");
1225     ], [
1226       ac_cv_mmx_inline=yes
1227     ], [
1228       ac_cv_mmx_inline=no
1229     ])
1230   ])
1231   AS_IF([test "${ac_cv_mmx_inline}" != "no"], [
1232     AC_DEFINE(CAN_COMPILE_MMX, 1, [Define to 1 inline MMX assembly is available.])
1233     have_mmx="yes"
1234   ])
1236   AC_CACHE_CHECK([if $CC groks MMX EXT inline assembly],
1237                  [ac_cv_mmxext_inline], [
1238     AC_COMPILE_IFELSE([AC_LANG_PROGRAM(,[[
1239 void *p;
1240 asm volatile("maskmovq %%mm1,%%mm2"::"r"(p):"mm1", "mm2");
1242     ], [
1243       ac_cv_mmxext_inline=yes
1244     ], [
1245       ac_cv_mmxext_inline=no
1246     ])
1247   ])
1248   VLC_RESTORE_FLAGS
1249   AS_IF([test "${ac_cv_mmxext_inline}" != "no"], [
1250     AC_DEFINE(CAN_COMPILE_MMXEXT, 1, [Define to 1 if MMX EXT inline assembly is available.])
1251     have_mmxext="yes"
1252   ])
1254 AM_CONDITIONAL([HAVE_MMX], [test "${have_mmx}" = "yes"])
1255 AM_CONDITIONAL([HAVE_MMXEXT], [test "${have_mmxext}" = "yes"])
1257 dnl  Check for fully workin SSE2 intrinsics
1258 dnl  We need support for -mmmx, we need <emmintrin.h>, and we also need a
1259 dnl  working compiler (http://gcc.gnu.org/bugzilla/show_bug.cgi?id=23963)
1260 AC_ARG_ENABLE(sse,
1261   [AS_HELP_STRING([--disable-sse],
1262     [disable SSE (1-4) optimizations (default auto)])],, [
1263   case "${host_cpu}" in
1264     i?86|x86_64)
1265       enable_sse=yes
1266       ;;
1267     *)
1268       enable_sse=no
1269       ;;
1270   esac
1272 have_sse2="no"
1273 AS_IF([test "${enable_sse}" != "no"], [
1274   ARCH="${ARCH} sse sse2"
1276   VLC_SAVE_FLAGS
1277   CFLAGS="${CFLAGS} -msse2"
1278   AC_CACHE_CHECK([if $CC groks SSE2 intrinsics], [ac_cv_c_sse2_intrinsics], [
1279     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([
1280 [#include <emmintrin.h>
1281 #include <stdint.h>
1282 uint64_t frobzor;]], [
1283 [__m128i a, b, c;
1284 a = b = c = _mm_set1_epi64((__m64)frobzor);
1285 a = _mm_slli_epi16(a, 3);
1286 a = _mm_adds_epi16(a, b);
1287 c = _mm_srli_epi16(c, 8);
1288 c = _mm_slli_epi16(c, 3);
1289 b = _mm_adds_epi16(b, c);
1290 a = _mm_unpacklo_epi8(a, b);
1291 frobzor = (uint64_t)_mm_movepi64_pi64(a);]])], [
1292       ac_cv_c_sse2_intrinsics=yes
1293     ], [
1294       ac_cv_c_sse2_intrinsics=no
1295     ])
1296   ])
1297   VLC_RESTORE_FLAGS
1298   AS_IF([test "${ac_cv_c_sse2_intrinsics}" != "no"], [
1299     AC_DEFINE(HAVE_SSE2_INTRINSICS, 1, [Define to 1 if SSE2 intrinsics are available.])
1300   ])
1302   VLC_SAVE_FLAGS
1303   CFLAGS="${CFLAGS} -msse"
1304   AC_CACHE_CHECK([if $CC groks SSE inline assembly], [ac_cv_sse_inline], [
1305     AC_COMPILE_IFELSE([AC_LANG_PROGRAM(,[[
1306 void *p;
1307 asm volatile("xorps %%xmm1,%%xmm2"::"r"(p):"xmm1", "xmm2");
1309     ], [
1310       ac_cv_sse_inline=yes
1311     ], [
1312       ac_cv_sse_inline=no
1313     ])
1314   ])
1316   AS_IF([test "${ac_cv_sse_inline}" != "no" -a "${SYS}" != "solaris"], [
1317     AC_DEFINE(CAN_COMPILE_SSE, 1, [Define to 1 if SSE inline assembly is available.])
1318   ])
1320   AC_CACHE_CHECK([if $CC groks SSE2 inline assembly], [ac_cv_sse2_inline], [
1321     AC_COMPILE_IFELSE([AC_LANG_PROGRAM(,[[
1322 void *p;
1323 asm volatile("punpckhqdq %%xmm1,%%xmm2"::"r"(p):"xmm1", "xmm2");
1325     ], [
1326       ac_cv_sse2_inline=yes
1327     ], [
1328       ac_cv_sse2_inline=no
1329     ])
1330   ])
1331   AS_IF([test "${ac_cv_sse2_inline}" != "no" -a "${SYS}" != "solaris"], [
1332     AC_DEFINE(CAN_COMPILE_SSE2, 1, [Define to 1 if SSE2 inline assembly is available.])
1333     have_sse2="yes"
1334   ])
1336   # SSE3
1337   AC_CACHE_CHECK([if $CC groks SSE3 inline assembly], [ac_cv_sse3_inline], [
1338     AC_COMPILE_IFELSE([AC_LANG_PROGRAM(,[[
1339 void *p;
1340 asm volatile("movsldup %%xmm1,%%xmm0"::"r"(p):"xmm0", "xmm1");
1342     ], [
1343       ac_cv_sse3_inline=yes
1344     ], [
1345       ac_cv_sse3_inline=no
1346     ])
1347   ])
1349   AS_IF([test "${ac_cv_sse3_inline}" != "no"], [
1350     AC_DEFINE(CAN_COMPILE_SSE3, 1, [Define to 1 if SSE3 inline assembly is available.]) ])
1351   # SSSE3
1352   AC_CACHE_CHECK([if $CC groks SSSE3 inline assembly], [ac_cv_ssse3_inline], [
1353     AC_COMPILE_IFELSE([AC_LANG_PROGRAM(,[[
1354 void *p;
1355 asm volatile("pabsw %%xmm0,%%xmm0"::"r"(p):"xmm0");
1357     ], [
1358       ac_cv_ssse3_inline=yes
1359     ], [
1360       ac_cv_ssse3_inline=no
1361     ])
1362   ])
1364   AS_IF([test "${ac_cv_ssse3_inline}" != "no"], [
1365     AC_DEFINE(CAN_COMPILE_SSSE3, 1, [Define to 1 if SSSE3 inline assembly is available.]) ])
1367   # SSE4.1
1368   AC_CACHE_CHECK([if $CC groks SSE4.1 inline assembly],
1369                  [ac_cv_sse4_1_inline], [
1370     AC_COMPILE_IFELSE([AC_LANG_PROGRAM(,[[
1371 void *p;
1372 asm volatile("pmaxsb %%xmm1,%%xmm0"::"r"(p):"xmm0", "xmm1");
1374     ], [
1375       ac_cv_sse4_1_inline=yes
1376     ], [
1377       ac_cv_sse4_1_inline=no
1378     ])
1379   ])
1381   AS_IF([test "${ac_cv_sse4_1_inline}" != "no"], [
1382     AC_DEFINE(CAN_COMPILE_SSE4_1, 1, [Define to 1 if SSE4_1 inline assembly is available.]) ])
1384   # SSE4.2
1385   AC_CACHE_CHECK([if $CC groks SSE4.2 inline assembly],
1386                  [ac_cv_sse4_2_inline], [
1387     AC_COMPILE_IFELSE([AC_LANG_PROGRAM(,[[
1388 void *p;
1389 asm volatile("pcmpgtq %%xmm1,%%xmm0"::"r"(p):"xmm0", "xmm1");
1391     ], [
1392       ac_cv_sse4_2_inline=yes
1393     ], [
1394       ac_cv_sse4_2_inline=no
1395     ])
1396   ])
1398   AS_IF([test "${ac_cv_sse4_2_inline}" != "no"], [
1399     AC_DEFINE(CAN_COMPILE_SSE4_2, 1, [Define to 1 if SSE4_2 inline assembly is available.]) ])
1401   # SSE4A
1402   AC_CACHE_CHECK([if $CC groks SSE4A inline assembly], [ac_cv_sse4a_inline], [
1403     AC_COMPILE_IFELSE([AC_LANG_PROGRAM(,[[
1404 void *p;
1405 asm volatile("insertq %%xmm1,%%xmm0"::"r"(p):"xmm0", "xmm1");
1407     ], [
1408       ac_cv_sse4a_inline=yes
1409     ], [
1410       ac_cv_sse4a_inline=no
1411     ])
1412   ])
1413   VLC_RESTORE_FLAGS
1414   AS_IF([test "${ac_cv_sse4a_inline}" != "no"], [
1415     AC_DEFINE(CAN_COMPILE_SSE4A, 1, [Define to 1 if SSE4A inline assembly is available.]) ])
1417 AM_CONDITIONAL([HAVE_SSE2], [test "$have_sse2" = "yes"])
1419 VLC_SAVE_FLAGS
1420 CFLAGS="${CFLAGS} -mmmx"
1421 have_3dnow="no"
1422 AC_CACHE_CHECK([if $CC groks 3D Now! inline assembly], [ac_cv_3dnow_inline], [
1423   AC_COMPILE_IFELSE([AC_LANG_PROGRAM(,[[
1424 void *p;
1425 asm volatile("pfadd %%mm1,%%mm2"::"r"(p):"mm1", "mm2");
1427   ], [
1428     ac_cv_3dnow_inline=yes
1429   ], [
1430     ac_cv_3dnow_inline=no
1431   ])
1433 VLC_RESTORE_FLAGS
1434 AS_IF([test "${ac_cv_3dnow_inline}" != "no"], [
1435   AC_DEFINE(CAN_COMPILE_3DNOW, 1,
1436             [Define to 1 if 3D Now! inline assembly is available.])
1437   have_3dnow="yes"
1439 AM_CONDITIONAL([HAVE_3DNOW], [test "$have_3dnow" = "yes"])
1442 AC_ARG_ENABLE(neon,
1443   [AS_HELP_STRING([--disable-neon],
1444     [disable NEON optimizations (default auto)])],, [
1445   AS_IF([test "${host_cpu}" = "arm"], [enable_neon="yes"] ,[enable_neon="no"])
1447 AS_IF([test "${enable_neon}" != "no"], [
1448   VLC_SAVE_FLAGS
1449   CFLAGS="${CFLAGS} -mfpu=neon -mhard-float"
1450   AC_CACHE_CHECK([if $CCAS groks ARM NEON assembly], [ac_cv_arm_neon], [
1451     AC_COMPILE_IFELSE([
1452       AC_LANG_PROGRAM(,[[
1453 asm volatile("vqmovun.s64 d0, q1":::"d0");
1455     ], [
1456       ac_cv_arm_neon="yes"
1457     ], [
1458       ac_cv_arm_neon="no"
1459     ])
1460   ])
1461   VLC_RESTORE_FLAGS
1463 AM_CONDITIONAL(HAVE_NEON, [test "${ac_cv_arm_neon}" = "yes"])
1465 AC_ARG_ENABLE(arm64,
1466   [AS_HELP_STRING([--disable-arm64],
1467     [disable arm 64-bit optimizations (default auto)])],, [
1468   AS_IF([test "${host_cpu}" = "aarch64"], [enable_arm64="yes"] ,[enable_arm64="no"])
1470 AS_IF([test "${enable_arm64}" != "no"], [
1471   AC_CACHE_CHECK([if $CCAS groks ARM 64 SIMD assembly], [ac_cv_arm64], [
1472     AC_COMPILE_IFELSE([
1473       AC_LANG_PROGRAM(,[[
1474 asm volatile("uhadd v0.8b, v0.8b, v1.8b":::"v0");
1476     ], [
1477       ac_cv_arm64="yes"
1478     ], [
1479       ac_cv_arm64="no"
1480     ])
1481   ])
1483 AM_CONDITIONAL(HAVE_ARM64, [test "${ac_cv_arm64}" = "yes"])
1486 AC_ARG_ENABLE(altivec,
1487   [AS_HELP_STRING([--disable-altivec],
1488     [disable AltiVec optimizations (default auto)])],, [
1489   AS_CASE("${host_cpu}", [powerpc*],
1490         [enable_altivec=yes], [enable_altivec=no])
1492 have_altivec="no"
1493 ALTIVEC_CFLAGS=""
1494 AS_IF([test "${enable_altivec}" = "yes"], [
1495   ARCH="${ARCH} altivec";
1496   VLC_SAVE_FLAGS
1497   AC_CACHE_CHECK([if $CC groks AltiVec inline assembly],
1498     [ac_cv_altivec_inline],
1499     [AC_TRY_COMPILE(,[asm volatile("vperm 0,1,2,3");],
1500          ac_cv_altivec_inline="yes",
1501          [CFLAGS="${CFLAGS} -Wa,-maltivec"
1502           AC_TRY_COMPILE(,[asm volatile("vperm 0,1,2,3");],
1503             [ac_cv_altivec_inline="-Wa,-maltivec"],
1504             ac_cv_altivec_inline=no)
1505          ])])
1506   VLC_RESTORE_FLAGS
1507   AS_IF([test "${ac_cv_altivec_inline}" != "no"], [
1508     AC_DEFINE(CAN_COMPILE_ALTIVEC, 1,
1509               [Define to 1 if AltiVec inline assembly is available.])
1510     AS_IF([test "${ac_cv_altivec_inline}" != "yes"], [
1511       ALTIVEC_CFLAGS="${ac_cv_altivec_inline}"
1512       VLC_ADD_CFLAGS([libvlccore],[${ac_cv_altivec_inline}])
1513     ])
1514     have_altivec="yes"
1515   ])
1517   VLC_SAVE_FLAGS
1518   AC_CACHE_CHECK([if \$CC groks AltiVec C extensions],
1519   [ac_cv_c_altivec], [
1520     CFLAGS="${CFLAGS} -maltivec"
1521     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([
1522 [#include <altivec.h>]], [
1523 [vec_ld(0, (unsigned char *)0);]])], [
1524       ac_cv_c_altivec="-maltivec"
1525     ], [
1526       ac_cv_c_altivec="no"
1527     ])
1528   ])
1529   VLC_RESTORE_FLAGS
1530   AS_IF([test "${ac_cv_c_altivec}" != "no"], [
1531     CPPFLAGS="${CPPFLAGS} ${ac_cv_c_altivec}"
1532     AC_DEFINE(CAN_COMPILE_C_ALTIVEC, 1, [Define to 1 if C AltiVec extensions are available.])
1533     VLC_ADD_CFLAGS([libvlccore],[${ac_cv_c_altivec}])
1534     ALTIVEC_CFLAGS="$ALTIVEC_CFLAGS ${ac_cv_c_altivec}"
1535     VLC_ADD_CFLAGS([deinterlace],[${ac_cv_c_altivec}])
1536     have_altivec="yes"
1537   ])
1538   AC_CHECK_HEADERS(altivec.h)
1540   VLC_SAVE_FLAGS
1541   LDFLAGS="${LDFLAGS} -Wl,-framework,vecLib"
1542   AC_CACHE_CHECK([if linker needs -framework vecLib],
1543     [ac_cv_ld_altivec],
1544     [AC_TRY_LINK([],,ac_cv_ld_altivec=yes,ac_cv_ld_altivec=no)])
1545   VLC_RESTORE_FLAGS
1546   AS_IF([test "${ac_cv_ld_altivec}" != "no"], [
1547     VLC_ADD_LIBS([libvlccore],[-Wl,-framework,vecLib])
1548   ])
1550 AC_SUBST(ALTIVEC_CFLAGS)
1551 AM_CONDITIONAL([HAVE_ALTIVEC], [test "$have_altivec" = "yes"])
1554 dnl  Memory usage
1556 AC_ARG_ENABLE(optimize-memory,
1557   [AS_HELP_STRING([--enable-optimize-memory],
1558     [optimize memory usage over performance])])
1559 if test "${enable_optimize_memory}" = "yes"; then
1560   AC_DEFINE(OPTIMIZE_MEMORY, 1, Define if you want to optimize memory usage over performance)
1564 dnl Allow running as root (useful for people running on embedded platforms)
1566 AC_ARG_ENABLE(run-as-root,
1567   [AS_HELP_STRING([--enable-run-as-root],
1568     [allow running VLC as root (default disabled)])])
1569 AS_IF([test "${enable_run_as_root}" = "yes"],[
1570     AC_DEFINE(ALLOW_RUN_AS_ROOT, 1,
1571               [Define to 1 to allow running VLC as root (uid 0).])
1575 dnl Stream output
1577 AC_ARG_ENABLE(sout,
1578   [AS_HELP_STRING([--disable-sout],
1579     [disable streaming output (default enabled)])])
1580 AS_IF([test "${enable_sout}" != "no"], [
1581   AC_DEFINE(ENABLE_SOUT, 1, [Define to 1 for stream output support.])
1583 AM_CONDITIONAL(ENABLE_SOUT, [test "${enable_sout}" != "no"])
1585 dnl Lua modules
1586 AC_ARG_ENABLE(lua,
1587   [AS_HELP_STRING([--disable-lua],
1588     [disable LUA scripting support (default enabled)])])
1589 if test "${enable_lua}" != "no"
1590 then
1591   PKG_CHECK_MODULES(LUA, lua5.2,
1592     [ have_lua=yes ],
1593     [
1594     AC_MSG_WARN([${LUA_PKG_ERRORS}, trying lua 5.1 instead])
1596     PKG_CHECK_MODULES(LUA, lua5.1,
1597       [ have_lua=yes ],
1598       [
1599       AC_MSG_WARN([${LUA_PKG_ERRORS}, trying lua >= 5.1 instead])
1600       PKG_CHECK_MODULES(LUA, lua >= 5.1,
1601         [ have_lua=yes ],
1602         [
1603           AC_MSG_WARN([${LUA_PKG_ERRORS}, trying manual detection instead])
1604           have_lua=yes
1605           AC_CHECK_HEADERS([lua.h lauxlib.h lualib.h],
1606             [],
1607             [ have_lua=no ] )
1608           AC_CHECK_LIB(  lua5.2 , luaL_newstate,
1609             [LUA_LIBS="-llua5.2"],
1610           AC_CHECK_LIB( lua5.1 , luaL_newstate,
1611             [LUA_LIBS="-llua5.1"],
1612             AC_CHECK_LIB( lua51 , luaL_newstate,
1613               [LUA_LIBS="-llua51"],
1614               AC_CHECK_LIB( lua , luaL_newstate,
1615                 [LUA_LIBS="-llua"],
1616                 [ have_lua=no
1617                 ], [-lm])
1618             )))
1619         ])
1620       ])
1621     ])
1622   if test "x${have_lua}" != "xyes" ;  then
1623       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.])
1624   fi
1625   AC_ARG_VAR([LUAC], [LUA byte compiler])
1626   AS_IF([test -z "$LUAC"], [
1627      AC_CHECK_TOOL(LUAC, [luac], [false])
1628   ])
1629   AS_IF([test "${LUAC}" = "false"], [
1630     AC_MSG_ERROR([Could not find the LUA byte compiler.])
1631   ])
1632   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], [
1633     AC_MSG_ERROR([You need 32-bits luac when using lua from contrib.])
1634   ])
1636 AM_CONDITIONAL(BUILD_LUA, [test "${have_lua}" = "yes"])
1640 dnl VideoLAN manager
1642 AC_ARG_ENABLE(vlm,
1643   [AS_HELP_STRING([--disable-vlm],
1644     [disable the stream manager (default enabled)])],,
1645   [enable_vlm="${enable_sout}"])
1646 AS_IF([test "${enable_vlm}" != "no"], [
1647   AS_IF([test "${enable_sout}" = "no"], [
1648     AC_MSG_ERROR([VLM requires the stream output. Do not use --disable-sout.])
1649   ])
1650   AC_DEFINE(ENABLE_VLM, 1, [Define if you want the VideoLAN manager support])
1652 AM_CONDITIONAL([ENABLE_VLM], [test "${enable_vlm}" != "no"])
1656 dnl Addons manager storage and repositories modules
1658 AC_ARG_ENABLE(addonmanagermodules,
1659   [AS_HELP_STRING([--disable-addonmanagermodules],
1660     [disable the addons manager modules (default enabled)])])
1661 if test "${enable_addonmanagermodules}" != "no"
1662 then
1663   AC_DEFINE(ENABLE_ADDONMANAGERMODULES, 1, [Define if you want the addons manager modules])
1665 AM_CONDITIONAL([ENABLE_ADDONMANAGERMODULES], [test "${enable_addonmanagermodules}" != "no"])
1669 dnl  Input plugins
1672 EXTEND_HELP_STRING([Input plugins:])
1675 dnl  libarchive access module
1677 PKG_ENABLE_MODULES_VLC([ARCHIVE], [archive], [libarchive >= 3.1.0], (libarchive support), [auto])
1680 dnl  live555 input
1682 AC_ARG_ENABLE(live555,
1683   [AS_HELP_STRING([--enable-live555],
1684     [enable RTSP input through live555 (default enabled)])])
1686 AS_IF([test "${enable_live555}" != "no" -a -n "${CXX}"], [
1687   PKG_CHECK_MODULES(LIVE555, live555, [
1688     VLC_ADD_PLUGIN([live555])
1689     VLC_ADD_CXXFLAGS([live555], [$LIVE555_CFLAGS])
1690     VLC_ADD_LIBS([live555],[$LIVE555_LIBS])
1691   ], [
1692     AC_MSG_WARN([${LIVE555_PKG_ERRORS}.])
1694     AC_LANG_PUSH(C++)
1695     VLC_SAVE_FLAGS
1697     dnl detect include paths
1698     AS_IF([test -f "${CONTRIB_DIR}/include/UsageEnvironment/UsageEnvironment.hh"], [
1699       CPPFLAGS_live555="-I${CONTRIB_DIR}/include/liveMedia -I${CONTRIB_DIR}/include/groupsock -I${CONTRIB_DIR}/include/BasicUsageEnvironment -I${CONTRIB_DIR}/include/UsageEnvironment"
1700     ], [
1701       AS_IF([test "${SYS}" != "os2"], [
1702         LIVE555_PREFIX=${LIVE555_PREFIX-"/usr"}
1703         CPPFLAGS_live555="-I${LIVE555_PREFIX}/include/liveMedia -I${LIVE555_PREFIX}/include/groupsock -I${LIVE555_PREFIX}/include/BasicUsageEnvironment -I${LIVE555_PREFIX}/include/UsageEnvironment"
1704       ], [
1705         LIVE555_PREFIX=${LIVE555_PREFIX-"/usr/lib/live"}
1706         CPPFLAGS_live555="-I${LIVE555_PREFIX}/liveMedia/include -I${LIVE555_PREFIX}/groupsock/include -I${LIVE555_PREFIX}/BasicUsageEnvironment/include -I${LIVE555_PREFIX}/UsageEnvironment/include"
1707         LDFLAGS_live555="-L${LIVE555_PREFIX}/liveMedia -L${LIVE555_PREFIX}/groupsock -L${LIVE555_PREFIX}/BasicUsageEnvironment -L${LIVE555_PREFIX}/UsageEnvironment"
1708       ])
1709     ])
1711     dnl CPP Flags
1712     AS_IF([test "${SYS}" = "solaris"], [
1713       CPPFLAGS_live555="${CPPFLAGS_live555} -DSOLARIS"
1714     ])
1715     CPPFLAGS="${CPPFLAGS} ${CPPFLAGS_live555}"
1716     LDFLAGS="${LDFLAGS} ${LDFLAGS_live555}"
1718     dnl version check
1719     AC_CACHE_CHECK([for live555 version 1324598400 or later], [ac_cv_live555], [
1720       AC_PREPROC_IFELSE([AC_LANG_PROGRAM([
1721 [#include <liveMedia_version.hh>
1722 #if !defined (LIVEMEDIA_LIBRARY_VERSION_INT) || (LIVEMEDIA_LIBRARY_VERSION_INT < 1324598400)
1723 # error BOOM
1724 #endif]])
1725       ], [
1726         ac_cv_live555="yes"
1727       ], [
1728         ac_cv_live555="no"
1729       ])
1730     ])
1732     AS_IF([test "$ac_cv_live555" = "no"], [
1733       AC_MSG_WARN([live555 is missing or its installed version is too old:
1734 Version 2011.12.23 or later is required to proceed.
1735 You can get an updated one from http://www.live555.com/liveMedia .])
1736       AS_IF([test -n "${enable_live555}"], [
1737         AC_MSG_ERROR([Update live555 or pass --disable-live555 to disable RTSP input support.])
1738       ])
1739     ], [
1740       other_libs="-lgroupsock -lBasicUsageEnvironment -lUsageEnvironment"
1741       other_libs_pic="-lgroupsock_pic -lBasicUsageEnvironment_pic -lUsageEnvironment_pic"
1742       AS_IF([test "${SYS}" = "mingw32"], [
1743         # add ws2_32 for closesocket, select, recv
1744         other_libs="$other_libs -lws2_32"
1745       ])
1747       dnl We need to check for pic because live555 don't provide shared libs
1748       dnl and we want to build a plugins so we need -fPIC on some arch.
1749       VLC_ADD_CXXFLAGS([live555], [${CPPFLAGS_live555}])
1750       VLC_ADD_LDFLAGS([live555], [${LDFLAGS_live555}])
1751       AC_CHECK_LIB(liveMedia_pic, main, [
1752         VLC_ADD_PLUGIN([live555])
1753         VLC_ADD_LIBS([live555], [-lliveMedia_pic ${other_libs_pic}])
1754       ],[
1755         AC_CHECK_LIB(liveMedia, main, [
1756           VLC_ADD_PLUGIN([live555])
1757           VLC_ADD_LIBS([live555], [-lliveMedia ${other_libs}])
1758         ],[],[${other_libs}])
1759       ],[${other_libs_pic}])
1760     ])
1761     VLC_RESTORE_FLAGS
1762     AC_LANG_POP(C++)
1763   ])
1767 dnl IIDC and DV FireWire input modules
1769 PKG_ENABLE_MODULES_VLC([DC1394], [], [libdc1394-2 >= 2.1.0], [IIDC FireWire input module], [auto])
1770 PKG_ENABLE_MODULES_VLC([DV1394], [], [libraw1394 >= 2.0.1 libavc1394 >= 0.5.3], [DV FireWire input module], [auto])
1773 dnl - linsys modules: access module check for libzvbi
1775 AC_ARG_ENABLE(linsys,
1776   [AS_HELP_STRING([--enable-linsys],
1777     [Linux Linear Systems Ltd. SDI and HD-SDI input cards (default enabled)])])
1778 AS_IF([test "$SYS" = "linux" -a "${enable_linsys}" != "no"], [
1779   VLC_ADD_PLUGIN([linsys_hdsdi])
1780   PKG_CHECK_MODULES(LINSYS_SDI, [zvbi-0.2 >= 0.2.28], [
1781     VLC_ADD_PLUGIN([linsys_sdi])
1782   ], [
1783     AC_MSG_WARN([${LINSYS_SDI_PKG_ERRORS}.])
1784   ])
1788 dnl dvdread module: check for libdvdread
1790 PKG_ENABLE_MODULES_VLC([DVDREAD], [], [dvdread > 4.9.0], [dvdread input module], [auto])
1793 dnl libdvdnav plugin
1795 PKG_ENABLE_MODULES_VLC([DVDNAV], [], [dvdnav > 4.9.0], [DVD with navigation input module (dvdnav)], [auto])
1796 AS_IF([test "${enable_dvdnav}" != "no"], [
1797   AC_MSG_CHECKING(for dvdnav_stream_cb in dvdnav/dvdnav.h)
1798     AC_EGREP_HEADER(dvdnav_stream_cb,dvdnav/dvdnav.h,[
1799       AC_MSG_RESULT(yes)
1800       AC_DEFINE(HAVE_STREAM_CB_IN_DVDNAV_H, 1, For dvdnav demux support)
1801       ],[
1802       AC_MSG_RESULT(no)
1803     ])
1807 dnl  Blu-ray Disc Support with libbluray
1809 PKG_ENABLE_MODULES_VLC([BLURAY], [libbluray], [libbluray >= 0.6.2], (libbluray for Blu-ray disc support ) )
1812 dnl  OpenCV wrapper and example filters
1814 PKG_ENABLE_MODULES_VLC([OPENCV], [opencv_example opencv_wrapper], [opencv > 2.0], (OpenCV (computer vision) filter), [auto])
1818 dnl  libsmbclient plugin
1820 PKG_ENABLE_MODULES_VLC([SMBCLIENT], [smb], [smbclient], (SMB/CIFS support), [auto])
1821 AS_IF([test "${SYS}" = "mingw32" -a "${enable_winstore_app}" != "yes"], [ VLC_ADD_PLUGIN([smb]) ])
1824 dnl  liBDSM access module
1826 PKG_ENABLE_MODULES_VLC([DSM], [dsm], [libdsm >= 0.2.0], [libdsm SMB/CIFS access/sd module], [auto])
1829 dnl sftp access support
1831 PKG_ENABLE_MODULES_VLC([SFTP], [sftp], [libssh2], (support SFTP file transfer via libssh2), [auto])
1834 dnl nfs access support
1836 PKG_ENABLE_MODULES_VLC([NFS], [nfs], [libnfs >= 1.10.0], (support nfs protocol via libnfs), [auto])
1839 dnl  Video4Linux 2
1841 AC_ARG_ENABLE(v4l2, [AS_HELP_STRING([--disable-v4l2],
1842   [disable Video4Linux version 2 (default auto)])])
1843 have_v4l2="no"
1844 AS_IF([test "$enable_v4l2" != "no"], [
1845   AC_CHECK_HEADERS([linux/videodev2.h sys/videoio.h], [
1846     have_v4l2="yes"
1847   ])
1849 AM_CONDITIONAL(HAVE_V4L2, [test "${have_v4l2}" != "no"])
1852 dnl special access module for Blackmagic SDI cards
1854 AC_ARG_ENABLE(decklink,
1855   [AS_HELP_STRING([--disable-decklink],
1856     [disable Blackmagic DeckLink SDI input (default auto)])])
1857 AC_ARG_WITH(decklink_sdk,
1858   [AS_HELP_STRING[--with-decklink-sdk=DIR],
1859     [                        location of Blackmagic DeckLink SDI SDK])])
1860 have_decklink=no
1861 if test "${enable_decklink}" != "no"
1862 then
1863   if test "${with_decklink_sdk}" != "no" -a -n "${with_decklink_sdk}"
1864   then
1865     VLC_ADD_CPPFLAGS([decklink decklinkoutput],[-I${with_decklink_sdk}/include])
1866   fi
1867   VLC_SAVE_FLAGS
1868   CPPFLAGS="${CPPFLAGS} ${CPPFLAGS_decklink}"
1869   AC_LANG_PUSH(C++)
1870   AC_CHECK_HEADERS(DeckLinkAPIDispatch.cpp, [
1871       have_decklink=yes
1872   ], [
1873       AC_MSG_WARN(Blackmagic DeckLink SDI include files not found, decklink disabled)
1874   ])
1875   AC_LANG_POP(C++)
1876   VLC_RESTORE_FLAGS
1878 AM_CONDITIONAL(HAVE_DECKLINK, [ test "${have_decklink}" != "no" ])
1882 dnl  Built-in CD-DA and VCD module
1884 AC_ARG_ENABLE(vcd,
1885   [AS_HELP_STRING([--disable-vcd],
1886     [disable built-in VCD and CD-DA support (default enabled)])])
1888 AC_ARG_ENABLE(libcddb,
1889   [AS_HELP_STRING([--disable-libcddb],
1890     [disable CDDB for Audio CD (default enabled)])])
1892 if test "${enable_vcd}" != "no"
1893 then
1894   AC_MSG_CHECKING(for cdrom_msf0 in linux/cdrom.h)
1895   AC_EGREP_HEADER(cdrom_msf0,linux/cdrom.h,[
1896     AC_MSG_RESULT(yes)
1897     VLC_ADD_PLUGIN([vcd cdda])
1898   ],[
1899     AC_MSG_RESULT(no)
1900   ])
1902   AC_MSG_CHECKING(for scsireq in sys/scsiio.h)
1903   AC_EGREP_HEADER(scsireq,sys/scsiio.h,[
1904     AC_MSG_RESULT(yes)
1905     VLC_ADD_PLUGIN([vcd cdda])
1906     AC_DEFINE(HAVE_SCSIREQ_IN_SYS_SCSIIO_H, 1, For NetBSD VCD support)
1907   ],[
1908     AC_MSG_RESULT(no)
1909   ])
1911   AC_MSG_CHECKING(for ioc_toc_header in sys/cdio.h)
1912   AC_EGREP_HEADER(ioc_toc_header ,sys/cdio.h,[
1913     AC_MSG_RESULT(yes)
1914     VLC_ADD_PLUGIN([vcd cdda])
1915     AC_DEFINE(HAVE_IOC_TOC_HEADER_IN_SYS_CDIO_H, 1, For FreeBSD VCD support)
1916   ],[
1917     AC_MSG_RESULT(no)
1918   ])
1920   if test "${SYS}" = "bsdi" -o "${SYS}" = "mingw32" -o "${SYS}" = "os2" -o "${SYS}" = "darwin"
1921   then
1922     VLC_ADD_PLUGIN([vcd cdda])
1923   fi
1925   if test "$enable_libcddb" != "no"; then
1926     PKG_CHECK_MODULES(LIBCDDB, [libcddb >= 0.9.5], [
1927       HAVE_LIBCDDB=yes
1928       AC_DEFINE(HAVE_LIBCDDB, 1, [Define this if you have libcddb installed])
1929       VLC_ADD_LIBS([cdda],[$LIBCDDB_LIBS])
1930       VLC_ADD_CFLAGS([cdda],[$LIBCDDB_CFLAGS])
1931       ],:
1932       [AC_MSG_WARN([${LIBCDDB_PKG_ERRORS}: CDDB access disabled.])
1933       HAVE_LIBCDDB=no])
1934   fi
1938 dnl Linux DVB
1940 AC_CACHE_CHECK([for Linux DVB version 5.1], [ac_cv_linux_dvb_5_1], [
1941   AC_PREPROC_IFELSE([AC_LANG_PROGRAM([
1942 [#include <linux/dvb/version.h>
1943 #if (DVB_API_VERSION < 5)
1944 # error Linux DVB API v3.2 and older are not supported.
1945 #endif
1946 #if (DVB_API_VERSION == 5 && DVB_API_VERSION_MINOR < 1)
1947 # error Linux DVB API v5.0 is unsupported. Please update.
1948 #endif
1949 ]])], [
1950   ac_cv_linux_dvb_5_1=yes
1951 ], [
1952   ac_cv_linux_dvb_5_1=no
1953 ])])
1954 AM_CONDITIONAL([HAVE_LINUX_DVB], [test "$ac_cv_linux_dvb_5_1" = "yes"])
1957 dnl  Screen capture module
1959 AC_ARG_ENABLE(screen,
1960   [AS_HELP_STRING([--enable-screen],
1961     [disable screen capture (default enabled)])])
1962 if test "${enable_screen}" != "no"; then
1963   if test "${SYS}" = "darwin"; then
1964     AC_CHECK_HEADERS(ApplicationServices/ApplicationServices.h, [
1965       VLC_ADD_PLUGIN([screen])
1966     ])
1967   fi
1969 AM_CONDITIONAL(HAVE_MAC_SCREEN, [test "${SYS}" = "darwin" -a "x${enable_screen}" != "xno"])
1972 dnl  VNC/RFB access module
1974 PKG_ENABLE_MODULES_VLC([VNC], [vnc], [libvncclient >= 0.9.9], (VNC/rfb client support), [auto])
1976 dnl  RDP/Remote Desktop access module
1978 PKG_ENABLE_MODULES_VLC([FREERDP], [rdp], [freerdp >= 1.0.1], (RDP/Remote Desktop client support) )
1981 dnl  Real RTSP plugin
1983 AC_ARG_ENABLE(realrtsp,
1984   [  --enable-realrtsp       Real RTSP module (default disabled)])
1985 if test "${enable_realrtsp}" = "yes"; then
1986   VLC_ADD_PLUGIN([access_realrtsp])
1990 dnl QTKit
1991 AC_ARG_ENABLE(macosx-qtkit,
1992   [  --enable-macosx-qtkit Mac OS X qtsound (audio) module (default enabled on Mac OS X <= v10.11)])
1993 if test "x${enable_macosx_qtkit}" != "xno" &&
1994   (test "${SYS}" = "darwin" || test "${enable_macosx_qtkit}" = "yes")
1995 then
1996   AC_CHECK_HEADERS(QTKit/QTKit.h, [
1997       VLC_ADD_PLUGIN([qtsound])
1998     ])
2002 dnl AVFoundation
2003 AC_SUBST(have_avfoundation, ["no"])
2004 AC_ARG_ENABLE(macosx-avfoundation,
2005   [  --enable-macosx-avfoundation Mac OS X avcapture (video) module (default enabled on Mac OS X)])
2006 if test "x${enable_macosx_avfoundation}" != "xno" &&
2007   (test "${SYS}" = "darwin" || test "${enable_macosx_avfoundation}" = "yes")
2008 then
2009   SAVED_LIBS="${LIBS}"
2010   LIBS="-framework AVFoundation"
2011   AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [])],[have_avfoundation=yes],[have_avfoundation=no])
2012   LIBS="${SAVED_LIBS}"
2013   if test "${have_avfoundation}" != "no"
2014   then
2015     VLC_ADD_PLUGIN([avcapture])
2016   fi
2018 AM_CONDITIONAL(HAVE_AVFOUNDATION, [test "${have_avfoundation}" != "no"])
2021 dnl  DCP plugin (using asdcplib)
2023 PKG_WITH_MODULES([ASDCP], [asdcplib], [have_asdcp="yes"])
2024 AM_CONDITIONAL(HAVE_ASDCP, [test "${have_asdcp}" = "yes"])
2027 dnl  Demux plugins
2030 EXTEND_HELP_STRING([Mux/Demux plugins:])
2033 dnl  libdvbpsi check for ts mux/demux
2035 have_dvbpsi="no"
2036 PKG_WITH_MODULES([DVBPSI], [libdvbpsi >= 1.2.0], [have_dvbpsi="yes"])
2037 AM_CONDITIONAL(HAVE_DVBPSI, [test "${have_dvbpsi}" = "yes"])
2041 dnl  GME demux plugin
2043 AC_ARG_ENABLE(gme,
2044   [AS_HELP_STRING([--enable-gme],
2045     [use Game Music Emu (default auto)])])
2046 AS_IF([test "${enable_gme}" != "no"], [
2047   AC_CHECK_HEADER([gme/gme.h], [
2048     AC_CHECK_LIB([gme], [gme_identify_header], [
2049       VLC_ADD_PLUGIN([gme])
2050     ], [
2051       AC_CHECK_LIB([gme], [gme_identify_extension], [
2052          VLC_ADD_LIBS([gme], [-lstdc++ $LIBM])
2053          VLC_ADD_PLUGIN([gme])
2054       ],, [-lstdc++ $LIBM])
2055     ])
2056     VLC_ADD_LIBS([gme], [-lgme])
2057   ], [
2058     AS_IF([test "x${enable_gme}" != "x"], [
2059       AC_MSG_ERROR([GME cannot be found. Please install the development files.])
2060     ])
2061   ])
2066 dnl  SIDPlay plugin
2068 AC_ARG_ENABLE(sid,
2069     [AS_HELP_STRING([--enable-sid],[C64 sid demux support (default auto)])])
2070 AS_IF([test "${enable_sid}" != "no"], [
2071     PKG_CHECK_MODULES(SID, [libsidplay2], [
2072         AC_LANG_PUSH(C++)
2073         oldCPPFLAGS="$CPPFLAGS"
2074         CPPFLAGS="$CPPFLAGS $SID_CFLAGS"
2075         AC_CHECK_HEADER([sidplay/builders/resid.h], [
2076             VLC_ADD_PLUGIN([sid])
2077             VLC_ADD_CFLAGS([sid], [$SID_CFLAGS])
2078             VLC_ADD_LIBS([sid], [$SID_LIBS] [-lresid-builder])
2079         ], [
2080             AS_IF([test -n "${enable_sid}"],
2081                 [AC_MSG_ERROR([${SID_PKG_ERRORS} (required for sid).])],
2082                 [AC_MSG_WARN([${SID_PKG_ERRORS} (required for sid).])]
2083                 )
2084         ])
2085         CPPFLAGS="$oldCPPFLAGS"
2086         AC_LANG_POP(C++)
2087     ], [
2088         AS_IF([test "x${enable_sid}" = "xyes"],
2089             [AC_MSG_ERROR([${SID_PKG_ERRORS} (required for sid).])],
2090             [AC_MSG_WARN([${SID_PKG_ERRORS} (required for sid).])]
2091             )
2092     ])
2097 dnl  ogg demux plugin
2099 PKG_ENABLE_MODULES_VLC([OGG], [mux_ogg], [ogg >= 1.0], [Ogg demux support], [auto])
2100 PKG_CHECK_MODULES(LIBVORBIS, [vorbis >= 1.1], [
2101     AC_DEFINE(HAVE_LIBVORBIS, 1, [Define to 1 if you have the libvorbis])
2102 ],[true])
2103 PKG_ENABLE_MODULES_VLC([OGG], [], [ogg >= 1.0], [Ogg demux support], [auto], [${LIBVORBIS_CFLAGS}], [${LIBVORBIS_LIBS}])
2104 if test "${enable_sout}" != "no"; then
2105 dnl Check for libshout
2106     PKG_ENABLE_MODULES_VLC([SHOUT], [access_output_shout], [shout >= 2.1], [libshout output plugin], [auto])
2110 dnl  matroska demux plugin
2112 PKG_ENABLE_MODULES_VLC([MATROSKA], [mkv], [libebml libmatroska], [MKV format support], [auto])
2115 dnl  modplug demux plugin
2117 AC_ARG_ENABLE(mod,
2118   [AS_HELP_STRING([--disable-mod],
2119     [do not use libmodplug (default auto)])])
2120 if test "${enable_mod}" != "no" ; then
2121     PKG_CHECK_MODULES(LIBMODPLUG, [libmodplug >= 0.8.4 libmodplug != 0.8.8], [
2122           VLC_ADD_PLUGIN([mod])
2123           VLC_ADD_CXXFLAGS([mod],[$LIBMODPLUG_CFLAGS])
2124           VLC_ADD_CFLAGS([mod],[$LIBMODPLUG_CFLAGS]) #modules/demux/mod.c needs CFLAGS_mod, not CXXFLAGS_mod
2125           VLC_ADD_LIBS([mod],[$LIBMODPLUG_LIBS])
2126     ],[
2127        AS_IF([test -n "${enable_mod}"],
2128          [AC_MSG_ERROR([${LIBMODPLUG_PKG_ERRORS}.])],
2129          [AC_MSG_WARN([${LIBMODPLUG_PKG_ERRORS}.])])
2130     ])
2134 dnl  mpc demux plugin
2136 AC_ARG_ENABLE(mpc,
2137   [AS_HELP_STRING([--disable-mpc], [do not use libmpcdec (default auto)])])
2138 if test "${enable_mpc}" != "no"
2139 then
2140   AC_CHECK_HEADERS([mpc/mpcdec.h], [
2141     VLC_ADD_PLUGIN([mpc])
2142     VLC_ADD_LIBS([mpc],[-lmpcdec])],
2143     [AC_CHECK_HEADERS([mpcdec/mpcdec.h], [
2144     VLC_ADD_PLUGIN([mpc])
2145     VLC_ADD_LIBS([mpc],[-lmpcdec])])])
2149 dnl  Codec plugins
2152 EXTEND_HELP_STRING([Codec plugins:])
2155 dnl wmafixed plugin
2157 AC_ARG_ENABLE(wma-fixed,
2158   [  --enable-wma-fixed      libwma-fixed module (default disabled)])
2159 if test "${enable_wma_fixed}" = "yes"
2160 then
2161   VLC_ADD_PLUGIN([wma_fixed])
2165 dnl shine encoder plugin
2167 PKG_ENABLE_MODULES_VLC([SHINE], [], [shine >= 3.0.0], [MPEG Audio Layer 3 encoder], [auto], [], [], [])
2171 dnl openmax il codec plugin
2173 AC_ARG_ENABLE(omxil,
2174   [  --enable-omxil          openmax il codec module (default disabled)])
2175 if test "${enable_omxil}" = "yes"
2176 then
2177   VLC_ADD_PLUGIN([omxil])
2181 dnl openmax il vout plugin
2183 AC_ARG_ENABLE(omxil-vout,
2184   [  --enable-omxil-vout     openmax il video output module (default disabled)])
2185 if test "${enable_omxil_vout}" = "yes"
2186 then
2187   VLC_ADD_PLUGIN([omxil_vout])
2191 dnl raspberry pi openmax il configuration
2193 AC_ARG_ENABLE(rpi-omxil,
2194   [  --enable-rpi-omxil     openmax il configured for raspberry pi (default disabled)])
2195 if test "${enable_rpi_omxil}" = "yes"
2196 then
2197   VLC_ADD_PLUGIN([omxil omxil_vout])
2198   VLC_ADD_CFLAGS([omxil omxil_vout],[-DRPI_OMX])
2202 dnl CrystalHD codec plugin
2204 AC_ARG_ENABLE(crystalhd,
2205   [  --enable-crystalhd      crystalhd codec plugin (default auto)])
2206 if test "${enable_crystalhd}" != "no"; then
2207     AC_CHECK_HEADER(libcrystalhd/libcrystalhd_if.h, [
2208       VLC_ADD_PLUGIN([crystalhd])
2209       VLC_ADD_LIBS([crystalhd], [-lcrystalhd])
2210     ],[
2211       if test "${SYS}" = "mingw32" ; then
2212         AC_CHECK_HEADERS(libcrystalhd/bc_dts_defs.h, [
2213           VLC_ADD_PLUGIN([crystalhd])
2214           AC_CHECK_HEADERS(libcrystalhd/bc_drv_if.h, [
2215             VLC_ADD_LIBS([crystalhd], [-lbcmDIL])
2216             ])
2217         ],[
2218           AS_IF([test x"${enable_crystalhd}" = "xyes"],
2219                 [AC_MSG_ERROR("Could not find CrystalHD development headers")],
2220                 [AC_MSG_WARN("Could not find CrystalHD development headers")])
2221         ],[#define __LINUX_USER__
2222                #include <libcrystalhd/bc_dts_types.h>
2223         ])
2224       fi
2225     ],[
2226        #include <libcrystalhd/bc_dts_types.h>
2227       ])
2231 dnl  mad plugin
2233 have_mad="no"
2234 MAD_CFLAGS=""
2235 MAD_LIBS=""
2237 AC_ARG_WITH(mad, [  --with-mad=PATH         path to libmad], [
2238   enable_mad="yes"
2239 ], [
2240   with_mad="no"
2242 AS_IF([test "${with_mad}" != "no"], [
2243   MAD_CFLAGS="-I${with_mad}/include"
2244   MAD_LIBS="-L${with_mad}/lib"
2247 AC_ARG_ENABLE(mad,
2248   [  --enable-mad            libmad module (default enabled)])
2249 AS_IF([test "${enable_mad}" != "no"], [
2250   VLC_SAVE_FLAGS
2251   CPPFLAGS="${CPPFLAGS} ${MAD_CFLAGS}"
2252   LDFLAGS="${LDFLAGS} ${MAD_LIBS}"
2253   AC_CHECK_HEADERS(mad.h, [
2254     AC_CHECK_LIB(mad, mad_bit_init, [
2255       have_mad="yes"
2256       MAD_LIBS="${MAD_LIBS} -lmad"
2257     ])
2258   ])
2259   VLC_RESTORE_FLAGS
2260   AS_IF([test -n "$enable_mad" -a "${have_mad}" = "no"], [
2261     AC_MSG_ERROR([Could not find libmad. Install it or pass --disable-mad to disable it.])
2262   ])
2264 AC_SUBST(MAD_CFLAGS)
2265 AC_SUBST(MAD_LIBS)
2266 AM_CONDITIONAL([HAVE_MAD], [test "${have_mad}" = "yes"])
2268 dnl  mpg123 plugin
2271 PKG_ENABLE_MODULES_VLC([MPG123], [mpg123], [libmpg123], [libmpg123 decoder support], [auto])
2274 dnl gstreamer stuff
2276 AC_ARG_ENABLE(gst-decode,
2277   [  --enable-gst-decode     GStreamer based decoding support (currently supports only video decoding) (default auto)])
2279 have_gst_decode="no"
2280 AS_IF([test "${enable_gst_decode}" != "no"], [
2281   PKG_CHECK_MODULES([GST_APP], [gstreamer-app-1.0], [
2282     PKG_CHECK_MODULES([GST_VIDEO], [gstreamer-video-1.0], [
2283       have_gst_decode="yes"
2284     ], [
2285       AC_MSG_WARN([${GST_VIDEO_PKG_ERRORS}. GStreamer decoder module will not be built.])
2286     ])
2287   ], [
2288     AC_MSG_WARN([${GST_APP_PKG_ERRORS}. GStreamer modules will not be built.])
2289   ])
2291 AM_CONDITIONAL([HAVE_GST_DECODE], [test "${have_gst_decode}" = "yes"])
2294 dnl  avcodec decoder/encoder plugin
2296 AC_ARG_ENABLE(merge-ffmpeg,
2297 [  --enable-merge-ffmpeg   merge FFmpeg-based plugins (default disabled)],, [
2298   enable_merge_ffmpeg="no"
2300 AM_CONDITIONAL([MERGE_FFMPEG], [test "$enable_merge_ffmpeg" != "no"])
2302 AC_MSG_CHECKING([for libavutil variant])
2303 PKG_CHECK_EXISTS([libavutil], [
2304   libavutil_version="$(${PKG_CONFIG} --modversion libavutil)"
2305   libavutil_micro="${libavutil_version##*.}"
2306   AS_IF([test ${libavutil_micro} -le 99], [
2307     avfork="libav"
2308   ], [
2309     avfork="ffmpeg"
2310   ])
2311 ], [
2312   avfork="none"
2314 AC_MSG_RESULT([${avfork}])
2316 AC_ARG_ENABLE(avcodec,
2317 [  --enable-avcodec        libavcodec codec (default enabled)])
2318 AS_IF([test "${enable_avcodec}" != "no"], [
2319   dnl We need >=57.16.0 from libav or >=57.37.100 from ffmpeg
2320   case "${avfork}" in
2321     libav) av_codec_ver="57.16.0" ;;
2322     ffmpeg) av_codec_ver="57.37.100" ;;
2323     *) AC_MSG_ERROR([Missing libav or FFmpeg. Pass --disable-avcodec to ignore this error.])
2324   esac
2325   PKG_CHECK_MODULES(AVCODEC,[libavcodec >= ${av_codec_ver} libavutil >= 52.0.0], [
2326     VLC_SAVE_FLAGS
2327     CPPFLAGS="${CPPFLAGS} ${AVCODEC_CFLAGS}"
2328     CFLAGS="${CFLAGS} ${AVCODEC_CFLAGS}"
2329     AC_CHECK_HEADERS(libavcodec/avcodec.h)
2330     AC_CHECK_HEADERS(libavutil/avutil.h)
2331     VLC_RESTORE_FLAGS
2332     have_avcodec="yes"
2333   ],[
2334     AC_MSG_ERROR([${AVCODEC_PKG_ERRORS}. Pass --disable-avcodec to ignore this error.])
2335   ])
2336 ], [
2337   have_avcodec="no"
2339 AM_CONDITIONAL([HAVE_AVCODEC], [test "${have_avcodec}" != "no"])
2342 dnl libva needs avcodec
2344 AC_ARG_ENABLE(libva,
2345   [  --enable-libva          VAAPI GPU decoding support (libVA) (default auto)])
2347 AS_IF([test "${enable_libva}" = "yes" -a "${have_avcodec}" != "yes" ], [
2348   AC_MSG_ERROR([--enable-libva and --disable-avcodec options are mutually exclusive. Use --enable-avcodec.])
2351 have_vaapi="no"
2352 have_vaapi_drm="no"
2353 have_vaapi_x11="no"
2354 have_vaapi_wl="no"
2355 AS_IF([test "${enable_libva}" != "no"], [
2356   PKG_CHECK_MODULES([LIBVA], [libva >= 0.38], [
2357     have_vaapi="yes"
2358   ], [
2359     AS_IF([test -n "${enable_libva}"], [
2360       AC_MSG_ERROR([${LIBVA_PKG_ERRORS}.])
2361     ], [
2362       AC_MSG_WARN([${LIBVA_PKG_ERRORS}.])
2363     ])
2364   ])
2365   PKG_CHECK_MODULES([LIBVA_DRM], [libva-drm], [
2366     have_vaapi_drm="yes"
2367   ], [
2368     AC_MSG_WARN([${LIBVA_DRM_PKG_ERRORS}.])
2369   ])
2370   PKG_CHECK_MODULES(LIBVA_X11, [libva-x11], [
2371     have_vaapi_x11="yes"
2372   ], [
2373     AC_MSG_WARN([${LIBVA_X11_PKG_ERRORS}.])
2374   ])
2375   PKG_CHECK_MODULES(LIBVA_WL, [libva-wayland], [
2376     have_vaapi_wl="yes"
2377   ], [
2378     AC_MSG_WARN([${LIBVA_WL_PKG_ERRORS}.])
2379   ])
2381 AM_CONDITIONAL([HAVE_VAAPI], [test "${have_vaapi}" = "yes"])
2382 AM_CONDITIONAL([HAVE_VAAPI_DRM], [test "${have_vaapi_drm}" = "yes"])
2383 AM_CONDITIONAL([HAVE_VAAPI_X11], [test "${have_vaapi_x11}" = "yes"])
2384 AM_CONDITIONAL([HAVE_VAAPI_WL], [test "${have_vaapi_wl}" = "yes"])
2386 have_avcodec_vaapi="no"
2387 AS_IF([test "${have_vaapi}" = "yes" -a "${have_avcodec}" = "yes"], [
2388   VLC_SAVE_FLAGS
2389   CPPFLAGS="${CPPFLAGS} ${AVCODEC_CFLAGS}"
2390   CFLAGS="${CFLAGS} ${AVCODEC_CFLAGS}"
2391   AC_CHECK_HEADERS([libavcodec/vaapi.h], [
2392     AC_MSG_NOTICE([VA API acceleration activated])
2393     have_avcodec_vaapi="yes"
2394   ],[
2395     AS_IF([test -n "${enable_libva}"], [
2396       AC_MSG_ERROR([libva is present but libavcodec/vaapi.h is missing])
2397     ], [
2398       AC_MSG_WARN([libva is present but libavcodec/vaapi.h is missing ])
2399     ])
2400   ])
2401   VLC_RESTORE_FLAGS
2403 AM_CONDITIONAL([HAVE_AVCODEC_VAAPI], [test "${have_avcodec_vaapi}" = "yes"])
2406 dnl dxva2 needs avcodec
2408 AC_ARG_ENABLE(dxva2,
2409   [  --enable-dxva2          DxVA2 GPU decoding support (default auto)])
2411 have_avcodec_dxva2="no"
2412 AS_IF([test "${enable_dxva2}" != "no"], [
2413   if test "${SYS}" = "mingw32"; then
2414   AS_IF([test "x${have_avcodec}" = "xyes"], [
2415     AC_CHECK_HEADERS(dxva2api.h,
2416       [
2417         AC_CHECK_HEADERS(libavcodec/dxva2.h, [
2418            AC_MSG_NOTICE([DxVA2 acceleration activated])
2419            have_avcodec_dxva2="yes"
2420         ],[
2421     AS_IF([test "${enable_dxva2}" = "yes"],
2422           [AC_MSG_ERROR([dxva2 is present but libavcodec/dxva2.h is missing])],
2423               [AC_MSG_WARN([dxva2 is present but libavcodec/dxva2.h is missing ])])
2424         ], [#undef _WIN32_WINNT
2425             /* DXVA2 is only available in Vista and above */
2426             #define _WIN32_WINNT 0x600])
2427       ],[
2428     AS_IF([test "${enable_dxva2}" = "yes"],
2429               [AC_MSG_ERROR([Could not find required dxva2api.h])],
2430               [AC_MSG_WARN([dxva2api.h not found])])
2431       ],[#include <d3d9.h>])
2432   ],[
2433     AS_IF([test "x${enable_dxva2}" != "x"], [
2434       AC_MSG_ERROR([--enable-dxva2 and --disable-avcodec options are mutually exclusive.])
2435     ])
2436   ])
2437   fi
2439 AM_CONDITIONAL([HAVE_AVCODEC_DXVA2], [test "${have_avcodec_dxva2}" = "yes"])
2442 dnl d3d11va needs avcodec
2444 AC_ARG_ENABLE(d3d11va,
2445   [  --enable-d3d11va          D3D11 GPU decoding support (default auto)])
2447 have_avcodec_d3d11va="no"
2448 AS_IF([test "${enable_d3d11va}" != "no"], [
2449   if test "${SYS}" = "mingw32"; then
2450   AS_IF([test "x${have_avcodec}" = "xyes"], [
2451         AC_CHECK_TYPES([ID3D11VideoDecoder],
2452           [
2453             AC_CHECK_HEADERS(dxva2api.h,
2454               [
2455                 AC_CHECK_HEADERS(libavcodec/d3d11va.h, [
2456                    AC_MSG_NOTICE([D3D11 acceleration activated])
2457                    AC_DEFINE(HAVE_AVCODEC_D3D11VA, 1, [Define if the d3d11va module is built])
2458                    have_avcodec_d3d11va="yes"
2459                 ],[
2460                   AS_IF([test "${enable_d3d11va}" = "yes"],
2461                     [AC_MSG_ERROR([d3d11va is present but libavcodec/d3d11va.h is missing])],
2462                         [AC_MSG_WARN([d3d11va is present but libavcodec/d3d11va.h is missing ])])
2463                   ], [#undef _WIN32_WINNT
2464                       /* D3D11 is only available in Vista and above */
2465                       #define _WIN32_WINNT 0x600])
2466                   ],[
2467                     AS_IF([test "${enable_d3d11va}" = "yes"],
2468                           [AC_MSG_ERROR([Could not find required dxva2api.h])],
2469                           [AC_MSG_WARN([dxva2api.h not found])])
2470                   ],[#include <d3d9.h>])
2471           ],[
2472             AS_IF([test "${enable_d3d11va}" = "yes"],
2473                   [AC_MSG_ERROR([Could not find required ID3D11VideoDecoder in d3d11.h])],
2474                   [AC_MSG_WARN([ID3D11VideoDecoder not found])])
2475           ], [#include <d3d11.h>])
2476   ],[
2477     AS_IF([test "x${enable_d3d11va}" != "x"], [
2478       AC_MSG_ERROR([--enable-d3d11va and --disable-avcodec options are mutually exclusive.])
2479     ])
2480   ])
2481   fi
2483 AM_CONDITIONAL([HAVE_AVCODEC_D3D11VA], [test "${have_avcodec_d3d11va}" = "yes"])
2486 dnl DXGI debug
2488 AC_CHECK_HEADERS(dxgidebug.h dxgi1_6.h)
2491 dnl  avformat demuxer/muxer plugin
2494 AC_ARG_ENABLE(avformat,
2495 [  --enable-avformat       libavformat containers (default enabled)],, [
2496   enable_avformat="${have_avcodec}"
2498 have_avformat="no"
2499 AS_IF([test "${enable_avformat}" != "no"], [
2500   PKG_CHECK_MODULES(AVFORMAT,[libavformat >= 53.21.0 libavcodec libavutil], [
2501       have_avformat="yes"
2502       VLC_SAVE_FLAGS
2503       CPPFLAGS="${CPPFLAGS} ${AVFORMAT_CFLAGS}"
2504       CFLAGS="${CFLAGS} ${AVFORMAT_CFLAGS}"
2505       AC_CHECK_HEADERS(libavformat/avformat.h libavformat/avio.h)
2506       AC_CHECK_HEADERS(libavcodec/avcodec.h)
2507       AC_CHECK_HEADERS(libavutil/avutil.h)
2508       AS_IF([test "$enable_merge_ffmpeg" = "no"], [
2509         have_avformat="no"
2510       ])
2511       VLC_RESTORE_FLAGS
2512     ],[
2513       AC_MSG_ERROR([${AVFORMAT_PKG_ERRORS}. Pass --disable-avformat to ignore this error.])
2514   ])
2516 AM_CONDITIONAL([HAVE_AVFORMAT], [test "${enable_avformat}" != "no"])
2519 dnl  swscale image scaling and conversion plugin
2522 AC_ARG_ENABLE(swscale,
2523   AS_HELP_STRING([--enable-swscale],[libswscale image scaling and conversion
2524           (default enabled)]))
2525 if test "${enable_swscale}" != "no"
2526 then
2527   PKG_CHECK_MODULES(SWSCALE,[libswscale],
2528     [
2529       VLC_SAVE_FLAGS
2530       CPPFLAGS="${CPPFLAGS} ${SWSCALE_CFLAGS}"
2531       CFLAGS="${CFLAGS} ${SWSCALE_CFLAGS}"
2532       AC_CHECK_HEADERS(libswscale/swscale.h)
2533       AC_CHECK_HEADERS(libavutil/avutil.h)
2534       VLC_ADD_PLUGIN([swscale])
2535       VLC_ADD_LIBS([swscale],[$SWSCALE_LIBS])
2536       VLC_ADD_CFLAGS([swscale],[$SWSCALE_CFLAGS])
2537       AS_IF([test -n "${ac_cv_ld_bsymbolic}"], [
2538         VLC_ADD_LIBS([swscale],[${ac_cv_ld_bsymbolic}])
2539       ])
2540       VLC_RESTORE_FLAGS
2541     ],[
2542       AC_MSG_ERROR([${SWSCALE_PKG_ERRORS}. Pass --disable-swscale to ignore this error. Proper software scaling and some video chroma conversion will be missing.])
2543   ])
2547 dnl  postproc plugin
2550 AC_ARG_ENABLE(postproc,
2551 [  --enable-postproc       libpostproc image post-processing (default auto)])
2552 if test "${enable_postproc}" != "no"
2553 then
2554   PKG_CHECK_MODULES(POSTPROC,[libpostproc libavutil],
2555     [
2556       VLC_SAVE_FLAGS
2557       CPPFLAGS="${CPPFLAGS} ${POSTPROC_CFLAGS}"
2558       CFLAGS="${CFLAGS} ${POSTPROC_CFLAGS}"
2559       AC_CHECK_HEADERS(postproc/postprocess.h)
2560       VLC_ADD_PLUGIN([postproc])
2561       VLC_RESTORE_FLAGS
2562     ],[
2563       AC_MSG_WARN([${POSTPROC_PKG_ERRORS}.])
2564   ])
2568 dnl  faad decoder plugin
2570 AC_ARG_ENABLE(faad,
2571 [  --enable-faad           faad codec (default auto)])
2572 have_faad="no"
2573 AS_IF([test "${enable_faad}" != "no"], [
2574   AC_CHECK_HEADERS([neaacdec.h], [
2575     AC_CHECK_LIB(faad, NeAACDecOpen, [have_faad="yes"],, [$LIBM])
2577     AS_IF([test "${have_faad}" = "yes"], [
2578       VLC_ADD_PLUGIN([faad])
2579       VLC_ADD_LIBS([faad],[-lfaad])
2580     ], [
2581       AS_IF([test "${enable_faad}" = "yes"], [
2582         AC_MSG_ERROR([cannot find FAAD library])
2583       ], [
2584         AC_MSG_WARN([cannot find FAAD library])
2585       ])
2586     ])
2587   ])
2591 dnl  AOM decoder plugin
2593 PKG_ENABLE_MODULES_VLC([AOM], [], [aom], [experimental AV1 codec], [disabled])
2596 dnl libvpx decoder plugin
2598 AC_ARG_ENABLE(vpx,
2599     AS_HELP_STRING([--enable-vpx],[libvpx VP8/VP9 encoder and decoder (default auto)]))
2600 AS_IF([test "${enable_vpx}" != "no"],[
2601     PKG_CHECK_MODULES([VPX], [vpx >= 1.5.0], [
2602         VLC_ADD_PLUGIN([vpx])
2603         VLC_ADD_CPPFLAGS([vpx], [${VPX_CFLAGS}])
2604         VLC_ADD_LIBS([vpx], [${VPX_LIBS}])
2605         AC_CHECK_LIB([vpx],[vpx_codec_vp8_dx], [
2606             VLC_ADD_CPPFLAGS([vpx], [-DENABLE_VP8_DECODER])
2607         ], [], [${VPX_LIBS}])
2608         AC_CHECK_LIB([vpx],[vpx_codec_vp9_dx], [
2609             VLC_ADD_CPPFLAGS([vpx], [-DENABLE_VP9_DECODER])
2610         ], [], [${VPX_LIBS}])
2611         AC_CHECK_LIB([vpx],[vpx_codec_vp8_cx], [
2612             VLC_ADD_CPPFLAGS([vpx], [-DENABLE_VP8_ENCODER])
2613         ], [], [${VPX_LIBS}])
2614         AC_CHECK_LIB([vpx],[vpx_codec_vp9_cx], [
2615             VLC_ADD_CPPFLAGS([vpx], [-DENABLE_VP9_ENCODER])
2616         ], [], [${VPX_LIBS}])
2617     ], [
2618     AS_IF([test "${enable_vpx}" = "yes"],[
2619         AC_MSG_ERROR([libvpx 1.5.0 or higher was not found])
2620     ])])
2624 dnl twolame encoder plugin
2626 PKG_ENABLE_MODULES_VLC([TWOLAME], [], [twolame], [MPEG Audio Layer 2 encoder], [auto], [], [], [ -DLIBTWOLAME_STATIC])
2629 dnl fdk-aac encoder plugin
2631 PKG_ENABLE_MODULES_VLC([FDKAAC], [], [fdk-aac], [FDK-AAC encoder], [disabled])
2635 dnl A52/AC3 decoder plugin
2637 AC_ARG_ENABLE(a52,
2638   [  --enable-a52            A/52 support with liba52 (default enabled)])
2639 if test "${enable_a52}" != "no"
2640 then
2641   AC_ARG_WITH(a52,
2642     [  --with-a52=PATH         a52 headers and libraries])
2643     if test -z "${with_a52}"
2644     then
2645       LDFLAGS_test=""
2646       CPPFLAGS_test=""
2647     else
2648       LDFLAGS_test="-L${with_a52}/lib"
2649       CPPFLAGS_test="-I${with_a52}/include"
2650     fi
2651     VLC_SAVE_FLAGS
2652     CPPFLAGS="${CPPFLAGS} ${CPPFLAGS_test} ${CPPFLAGS_a52}"
2653     LDFLAGS="${LDFLAGS} ${LDFLAGS_test} ${LIBS_a52}"
2654     AC_CHECK_HEADERS(a52dec/a52.h, [
2655       AC_CHECK_LIB(a52, a52_free, [
2656         VLC_ADD_PLUGIN([a52])
2657         VLC_ADD_LIBS([a52],[${LDFLAGS_test} -la52 $LIBM])
2658         VLC_ADD_CPPFLAGS([a52],[${CPPFLAGS_test}])
2659       ],[
2660         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.])
2661         ], [$LIBM])
2662     ],[
2663       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.])
2664     ])
2665     VLC_RESTORE_FLAGS
2669 dnl DTS Coherent Acoustics decoder plugin
2671 PKG_ENABLE_MODULES_VLC([DCA], [dca], [libdca >= 0.0.5], [DTS Coherent Acoustics support with libdca], [auto])
2674 dnl  Flac plugin
2676 PKG_ENABLE_MODULES_VLC([FLAC], [], [flac], [libflac decoder/encoder support], [auto])
2679 dnl  Libmpeg2 plugin
2681 PKG_ENABLE_MODULES_VLC([LIBMPEG2], [], [libmpeg2 > 0.3.2], [libmpeg2 decoder support], [auto])
2684 dnl  Vorbis plugin
2686 PKG_ENABLE_MODULES_VLC([VORBIS], [], [ogg vorbis >= 1.1 vorbisenc >= 1.1], [Vorbis decoder and encoder], [auto])
2689 dnl  Tremor plugin
2691 AC_ARG_ENABLE(tremor,
2692   [  --enable-tremor         Tremor decoder support (default disabled)])
2693 if test "${enable_tremor}" = "yes"
2694 then
2695   AC_CHECK_HEADERS(tremor/ivorbiscodec.h, [
2696     VLC_ADD_PLUGIN([tremor])
2697    ],[])
2701 dnl  Speex plugins
2703 PKG_ENABLE_MODULES_VLC([SPEEX], [], [ogg speex >= 1.0.5], [Speex support], [auto])
2704 have_speexdsp="no"
2705 AS_IF([test "${enable_speex}" != "no"], [
2706   PKG_CHECK_MODULES([SPEEXDSP], [speexdsp], [
2707     have_speexdsp="yes"
2708   ], [
2709     AC_MSG_WARN([${SPEEXDSP_PKG_ERRORS}.])
2710   ])
2712 AM_CONDITIONAL([HAVE_SPEEXDSP], [test "$have_speexdsp" = "yes"])
2715 dnl  Opus plugin
2717 PKG_ENABLE_MODULES_VLC([OPUS], [], [ogg opus >= 1.0.3], [Opus support], [auto])
2720 dnl  Ambisonic channel mixer and binauralizer plugin
2722 PKG_ENABLE_MODULES_VLC([SPATIALAUDIO], [], [spatialaudio], [Ambisonic channel mixer and binauralizer], [auto])
2725 dnl  theora decoder plugin
2727 PKG_ENABLE_MODULES_VLC([THEORA], [], [ogg theoradec >= 1.0 theoraenc], [experimental theora codec], [auto])
2730 dnl  OggSpots decoder plugin
2732 PKG_ENABLE_MODULES_VLC([OGGSPOTS], [], [ogg], [experimental OggSpots codec], [auto])
2735 dnl  Daala decoder plugin
2737 PKG_ENABLE_MODULES_VLC([DAALA], [], [daaladec daalaenc], [experimental daala codec], [disabled])
2740 dnl  schroedinger decoder plugin (for dirac format video)
2742 PKG_ENABLE_MODULES_VLC([SCHROEDINGER], [], [schroedinger-1.0 >= 1.0.10], [dirac decoder and encoder using schroedinger], [auto])
2745 dnl  PNG decoder module
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_alpha_mode, [
2754     VLC_ADD_PLUGIN([png])
2755   ], [], [-lz $LIBM])
2756   VLC_RESTORE_FLAGS
2757   ])
2761 dnl  JPEG decoder module
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   ])
2772 dnl  BPG decoder module
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   ])
2783 dnl H262 encoder plugin (lib262)
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     ])
2805 dnl x265 encoder
2806 PKG_ENABLE_MODULES_VLC([X265],, [x265], [HEVC/H.265 encoder], [auto])
2809 dnl H264 encoder plugin (10-bit lib264)
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     ])
2833 dnl H264 encoder plugin (using libx264)
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}])
2842         AS_IF([test -n "${ac_cv_ld_bsymbolic}"], [
2843           VLC_ADD_LDFLAGS([x264],[${ac_cv_ld_bsymbolic}])
2844         ])
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       ])
2858 dnl Intel QuickSync (aka MediaSDK) H264/H262 encoder
2860 PKG_ENABLE_MODULES_VLC([MFX], [qsv], [libmfx], [Intel QuickSync MPEG4-Part10/MPEG2 (aka H.264/H.262) encoder], [auto])
2863 dnl libfluidsynth (MIDI synthetizer) plugin
2865 PKG_ENABLE_MODULES_VLC([FLUIDSYNTH], [], [fluidsynth >= 1.1.2], [MIDI synthetiser with libfluidsynth], [auto])
2866 PKG_ENABLE_MODULES_VLC([FLUIDLITE], [fluidsynth], [fluidlite], [MIDI synthetiser with libfluidsynth], [auto])
2867 AC_CHECK_HEADERS(fluidlite.h, [AC_SUBST([FLUIDSYNTH_LIBS], ${FLUIDLITE_LIBS})])
2870 dnl Teletext Modules
2871 dnl vbi decoder plugin (using libzbvi)
2872 dnl telx module
2873 dnl uncompatible
2875 AC_ARG_ENABLE(zvbi,
2876   AS_HELP_STRING([--enable-zvbi],[VBI (inc. Teletext) decoding support with
2877                   libzvbi (default enabled)]))
2878 AC_ARG_ENABLE(telx,
2879   AS_HELP_STRING([--enable-telx],[Teletext decoding module (conflicting with
2880                   zvbi) (default enabled if zvbi is absent)]))
2882 AS_IF( [test "${enable_zvbi}" != "no"],[
2883     PKG_CHECK_MODULES(ZVBI, [zvbi-0.2 >= 0.2.28],
2884         [
2885           VLC_ADD_PLUGIN([zvbi])
2886           AC_DEFINE(ZVBI_COMPILED, 1, [Define if the zvbi module is built])
2887           AS_IF( [test "${enable_telx}" = "yes"],[
2888                   AC_MSG_WARN([The zvbi and telx modules are incompatible. Using zvbi.])
2889                   ])
2890         ],[
2891           AC_MSG_WARN([${ZVBI_PKG_ERRORS}. Enabling the telx module instead.])
2892         ])
2893     ])
2894 AS_IF( [test "${enable_telx}" != "no" ],[
2895   VLC_ADD_PLUGIN([telx])
2896   ])
2899 dnl libass subtitle rendering module
2901 AC_ARG_ENABLE(libass,
2902   [  --enable-libass         Subtitle support using libass (default enabled)])
2903 AS_IF( [test "${enable_libass}" != "no"], [
2904   PKG_CHECK_MODULES(LIBASS, [libass >= 0.9.8],
2905       [
2906         VLC_ADD_PLUGIN([libass])
2908         AC_CHECK_HEADERS(fontconfig/fontconfig.h,
2909           [VLC_ADD_CPPFLAGS([libass],[-DHAVE_FONTCONFIG])
2910            VLC_ADD_LIBS([libass],[-lfontconfig])
2911        ])
2912       ],[
2913         AC_MSG_WARN([${LIBASS_PKG_ERRORS}.])
2914       ])
2915   ])
2918 dnl ARIB subtitles rendering module
2920 AC_ARG_ENABLE(aribsub,
2921   [  --enable-aribsub        ARIB Subtitles support (default enabled)])
2922 AS_IF( [test "${enable_aribsub}" != "no" ],[
2923   PKG_CHECK_MODULES(ARIBB24, [aribb24 >= 1.0.1], [
2924       have_aribb24="yes"
2925       VLC_ADD_PLUGIN([aribsub])
2926       VLC_ADD_LIBS([aribsub],[-laribb24])
2927       AC_DEFINE(HAVE_ARIBB24, 1, [Define if libaribb24 is available.])
2928     ],[
2929       AC_MSG_WARN(Library [aribb24] needed for [aribsub] was not found)
2930       have_aribb24="no"
2931   ])
2933 AM_CONDITIONAL([HAVE_ARIBB24], [test x"${have_aribb24}" = x"yes"])
2936 dnl ARIB B25
2938 PKG_ENABLE_MODULES_VLC([ARIBB25], [aribcam], [aribb25 >= 0.2.6], [ARIB STD-B25], [auto])
2941 dnl  kate decoder plugin
2943 PKG_ENABLE_MODULES_VLC([KATE], [], [kate >= 0.3.0], [kate codec], [auto])
2946 dnl  tiger rendering for kate decoder plugin
2948 AC_ARG_ENABLE(tiger,
2949 [  --enable-tiger          Tiger rendering library for Kate streams (default auto)])
2950 AS_IF([test "${enable_tiger}" != "no"], [
2951   PKG_CHECK_MODULES(TIGER,[tiger >= 0.3.1], [
2952       AC_DEFINE(HAVE_TIGER, 1, [Define if libtiger is available.])],[
2953         AS_IF([test -n "${enable_tiger}"], [
2954           AC_MSG_ERROR([${TIGER_PKG_ERRORS}.])
2955         ])
2956   ])
2960 dnl  check if we can build the css selector engine 
2962 AC_ARG_ENABLE(css,
2963 [  --enable-css            CSS selector engine (default auto)])
2964 AS_IF([test "${enable_css}" != "no"], [
2965   AC_PROG_LEX
2966   with_css="no"
2967   AS_IF([test "x$LEX" != "x:"], [
2968     AC_PROG_YACC
2969     dnl can only accept bison or we need byacc feature test for %destructor
2970     AS_IF([test "x$YACC" = "xbison -y"], [
2971         AC_DEFINE(HAVE_CSS, 1, [Define if CSS engine is built])
2972         with_css="yes"
2973       ],[
2974         AC_MSG_WARN("Bison not found. CSS support disabled.")
2975       ])
2976   ])
2978 AM_CONDITIONAL([ENABLE_CSS], [test "${with_css}" = "yes"])
2982 dnl  Video plugins
2985 EXTEND_HELP_STRING([Video plugins:])
2988 dnl  OpenGL
2990 PKG_CHECK_MODULES([EGL], [egl], [
2991   have_egl="yes"
2992 ], [
2993   have_egl="no"
2995 AM_CONDITIONAL([HAVE_EGL], [test "${have_egl}" = "yes"])
2997 have_gl="no"
2998 PKG_CHECK_MODULES([GL], [gl], [
2999   have_gl="yes"
3000 ], [
3001   AC_MSG_CHECKING([for OpenGL])
3002   AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
3003 #ifdef _WIN32
3004 # include <GL/glew.h>
3005 #endif
3006 #include <GL/gl.h>
3007 ]], [
3008     [int t0 = GL_TEXTURE0;]])
3009   ], [
3010     GL_CFLAGS=""
3011     have_gl="yes"
3012     AS_IF([test "${SYS}" != "mingw32"], [
3013       GL_LIBS="-lGL"
3014     ], [
3015       GL_LIBS="-lopengl32"
3016     ])
3017   ])
3018   AC_MSG_RESULT([${have_gl}])
3020 AM_CONDITIONAL([HAVE_GL], [test "${have_gl}" = "yes"])
3022 dnl OpenGL ES 2: depends on EGL 1.1
3023 PKG_ENABLE_MODULES_VLC([GLES2], [], [glesv2], [OpenGL ES v2 support], [disabled])
3026 dnl  Xlib
3029 AC_PATH_XTRA()
3030 AC_CHECK_HEADERS(X11/Xlib.h)
3033 dnl  X C Bindings modules
3035 AC_ARG_ENABLE(xcb,
3036   [  --enable-xcb            X11 support with XCB (default enabled)],, [
3037   AS_IF([test "${SYS}" != "mingw32" -a "${SYS}" != "darwin"], [
3038     enable_xcb="yes"
3039   ], [
3040     enable_xcb="no"
3041   ])
3043 AC_ARG_ENABLE(xvideo,
3044   [  --enable-xvideo         XVideo support (default enabled)],, [
3045     enable_xvideo="$enable_xcb"
3048 have_xcb="no"
3049 have_xcb_keysyms="no"
3050 have_xcb_randr="no"
3051 have_xcb_xvideo="no"
3052 AS_IF([test "${enable_xcb}" != "no"], [
3053   dnl libxcb
3054   PKG_CHECK_MODULES(XCB, [xcb >= 1.6])
3055   have_xcb="yes"
3056   PKG_CHECK_MODULES(XCB_SHM, [xcb-shm])
3057   PKG_CHECK_MODULES(XCB_COMPOSITE, [xcb-composite])
3058   PKG_CHECK_MODULES(XPROTO, [xproto])
3060   AS_IF([test "${enable_xvideo}" != "no"], [
3061     PKG_CHECK_MODULES(XCB_XV, [xcb-xv >= 1.1.90.1], [have_xcb_xvideo="yes"])
3062   ])
3064   PKG_CHECK_MODULES(XCB_RANDR, [xcb-randr >= 1.3], [have_xcb_randr="yes"])
3066   dnl xcb-utils
3067   PKG_CHECK_MODULES(XCB_KEYSYMS, [xcb-keysyms >= 0.3.4], [have_xcb_keysyms="yes"], [
3068     AC_MSG_WARN([${XCB_KEYSYMS_PKG_ERRORS}. Hotkeys will not work.])
3069   ])
3071 AM_CONDITIONAL([HAVE_XCB], [test "${have_xcb}" = "yes"])
3072 AM_CONDITIONAL([HAVE_XCB_KEYSYMS], [test "${have_xcb_keysyms}" = "yes"])
3073 AM_CONDITIONAL([HAVE_XCB_RANDR], [test "${have_xcb_randr}" = "yes"])
3074 AM_CONDITIONAL([HAVE_XCB_XVIDEO], [test "${have_xcb_xvideo}" = "yes"])
3078 dnl VDPAU needs X11
3080 AC_ARG_ENABLE(vdpau,
3081   [AS_HELP_STRING([--enable-vdpau], [VDPAU hardware support (default auto)])])
3082 have_vdpau="no"
3083 AS_IF([test "${enable_vdpau}" != "no"], [
3084   PKG_CHECK_MODULES([VDPAU], [vdpau >= 0.6], [
3085     have_vdpau="yes"
3086     AS_IF([test "${no_x}" = "yes"], [
3087       AC_MSG_ERROR([VDPAU requires Xlib (X11).])
3088     ])
3089   ], [
3090     AS_IF([test -n "${enable_vdpau}"], [
3091       AC_MSG_ERROR([${VDPAU_PKG_ERRORS}.])
3092     ])
3093   ])
3095 AM_CONDITIONAL([HAVE_VDPAU], [test "${have_vdpau}" = "yes"])
3097 have_avcodec_vdpau="no"
3098 AS_IF([test "${have_vdpau}" = "yes" -a "${have_avcodec}" = "yes"], [
3099   case "${avfork}" in
3100     libav) av_vdpau_ver="56.10.0" ;;
3101     ffmpeg) av_vdpau_ver="56.19.100" ;;
3102   esac
3103   PKG_CHECK_EXISTS([libavcodec >= ${av_vdpau_ver}], [
3104     have_avcodec_vdpau="yes"
3105     AC_MSG_NOTICE([VDPAU decoding acceleration activated])
3106   ], [
3107     AS_IF([test -n "${enable_vdpau}"], [
3108       AC_MSG_ERROR([libavcodec >= 56.10.0 is required for VDPAU decoding.])
3109     ], [
3110       AC_MSG_WARN([libavcodec >= 56.10.0 are required for VDPAU decoding.])
3111     ])
3112   ])
3114 AM_CONDITIONAL([HAVE_AVCODEC_VDPAU], [test "${have_avcodec_vdpau}" = "yes"])
3118 dnl  Wayland
3120 AC_ARG_ENABLE(wayland,
3121   [AS_HELP_STRING([--enable-wayland], [Wayland support (default auto)])])
3122 have_wayland="no"
3123 have_wayland_egl="no"
3125 AS_IF([test "${enable_wayland}" != "no"], [
3126   PKG_CHECK_MODULES([WAYLAND_CLIENT], [wayland-client >= 1.5.91], [
3127     AC_MSG_CHECKING([for the Wayland protocols])
3128     PKG_CHECK_EXISTS([wayland-protocols >= 1.4], [
3129       WAYLAND_PROTOCOLS="$(${PKG_CONFIG} wayland-protocols --variable pkgdatadir)"
3130       AC_MSG_RESULT([${WAYLAND_PROTOCOLS}])
3131     ], [
3132       AC_MSG_RESULT([not found])
3133       AC_MSG_ERROR([$(${PKG_CONFIG} --print-errors 'wayland-protocols >= 1.4')])
3134     ])
3136     AC_MSG_CHECKING([for the Wayland scanner])
3137     PKG_CHECK_EXISTS([wayland-scanner], [
3138       WAYLAND_SCANNER="$(${PKG_CONFIG} wayland-scanner --variable wayland_scanner)"
3139       AC_MSG_RESULT([${WAYLAND_SCANNER}])
3140     ], [
3141       AC_MSG_RESULT([not found])
3142       AC_MSG_ERROR([$(${PKG_CONFIG} --print-errors wayland-scanner)])
3143     ])
3145     have_wayland="yes"
3147     AS_IF([test "${have_egl}" = "yes"], [
3148       PKG_CHECK_MODULES([WAYLAND_EGL], [wayland-egl], [
3149         have_wayland_egl="yes"
3150       ], [
3151         AC_MSG_ERROR([${WAYLAND_EGL_PKG_ERRORS}.])
3152       ])
3153     ])
3154   ], [
3155     AS_IF([test -n "${enable_wayland}"], [
3156       AC_MSG_ERROR([${WAYLAND_CLIENT_PKG_ERRORS}.])
3157     ])
3158   ])
3160 AC_SUBST([WAYLAND_PROTOCOLS])
3161 AC_SUBST([WAYLAND_SCANNER])
3162 AM_CONDITIONAL([HAVE_WAYLAND], [test "${have_wayland}" = "yes"])
3163 AM_CONDITIONAL([HAVE_WAYLAND_EGL], [test "${have_wayland_egl}" = "yes"])
3167 dnl  SDL image decoder module
3169 AC_ARG_ENABLE(sdl-image,
3170   [  --enable-sdl-image      SDL image support (default enabled)])
3171 AS_IF([test "${enable_sdl_image}" != "no"],[
3172   PKG_CHECK_MODULES(SDL_IMAGE, [SDL_image >= 1.2.10], [
3173     VLC_ADD_PLUGIN([sdl_image])
3174   ], [
3175     AC_MSG_WARN([${SDL_IMAGE_PKG_ERRORS}. You should install it alongside your SDL package.])
3176   ])
3180 dnl  freetype module
3182 AC_ARG_ENABLE(freetype,
3183   [  --enable-freetype       freetype support   (default auto)])
3184 AC_ARG_ENABLE(fribidi,
3185   [  --enable-fribidi        fribidi support    (default auto)])
3186 AC_ARG_ENABLE(harfbuzz,
3187   [  --enable-harfbuzz       harfbuzz support   (default auto)])
3188 AC_ARG_ENABLE(fontconfig,
3189   [  --enable-fontconfig     fontconfig support (default auto)])
3191 AC_ARG_WITH([default-font],
3192     AS_HELP_STRING([--with-default-font=PATH],
3193         [Path to the default font]),
3194         [AC_DEFINE_UNQUOTED([DEFAULT_FONT_FILE],
3195             "$withval", [Default font])])
3196 AC_ARG_WITH([default-monospace-font],
3197     AS_HELP_STRING([--with-default-monospace-font=PATH],
3198         [Path to the default font]),
3199         [AC_DEFINE_UNQUOTED([DEFAULT_MONOSPACE_FONT_FILE],
3200             "$withval", [Default monospace font])])
3202 AC_ARG_WITH([default-font-family],
3203     AS_HELP_STRING([--with-default-font-family=NAME],
3204         [Path to the default font family]),
3205         [AC_DEFINE_UNQUOTED([DEFAULT_FAMILY],
3206             "$withval", [Default font family])])
3207 AC_ARG_WITH([default-monospace-font-family],
3208     AS_HELP_STRING([--with-default-monospace-font-family=NAME],
3209         [Path to the default font family]),
3210         [AC_DEFINE_UNQUOTED([DEFAULT_MONOSPACE_FAMILY],
3211             "$withval", [Default monospace font family])])
3213 have_freetype="no"
3214 have_fontconfig="no"
3215 have_fribidi="no"
3216 have_harfbuzz="no"
3218 if test "${enable_freetype}" != "no"; then
3219    PKG_CHECK_MODULES(FREETYPE, freetype2, [
3220       have_freetype="yes"
3221       VLC_ADD_CPPFLAGS([skins2],[${FREETYPE_CFLAGS}])
3222       VLC_ADD_LIBS([skins2],[${FREETYPE_LIBS}])
3224     dnl fontconfig support
3225     AS_IF([test "${enable_fontconfig}" != "no" -a "${SYS}" != "mingw32" -a "${SYS}" != "darwin"], [
3226       PKG_CHECK_MODULES(FONTCONFIG, [fontconfig >= 2.11], [
3227         have_fontconfig="yes"
3228       ], [
3229         AC_MSG_WARN([${FONTCONFIG_PKG_ERRORS}. Styles will be disabled in FreeType.])
3230       ])
3231     ])
3233       dnl fribidi support
3234       if test "${enable_fribidi}" != "no"; then
3235         PKG_CHECK_MODULES(FRIBIDI, fribidi, [
3236           have_fribidi="yes"
3237           VLC_ADD_CPPFLAGS([skins2], [${FRIBIDI_CFLAGS} -DHAVE_FRIBIDI])
3238           VLC_ADD_LIBS([skins2], [${FRIBIDI_LIBS}])
3239         ],[AC_MSG_WARN([${FRIBIDI_PKG_ERRORS}. Bidirectional text and complex scripts (Arabic, Farsi, Thai...) will be disabled in FreeType.])])
3240       fi
3242       dnl harfbuzz support
3243       if test "${have_fribidi}" != "no"; then
3244         if test "${enable_harfbuzz}" != "no"; then
3245           PKG_CHECK_MODULES(HARFBUZZ, harfbuzz, [
3246             have_harfbuzz="yes"
3247             VLC_ADD_CPPFLAGS([skins2], [${HARFBUZZ_CFLAGS} -DHAVE_HARFBUZZ])
3248             VLC_ADD_LIBS([skins2], [${HARFBUZZ_LIBS}])
3249           ],[AC_MSG_WARN([${HARFBUZZ_PKG_ERRORS}. Support for complex scripts (Arabic, Farsi, Thai...) will be disabled in FreeType.])])
3250         fi
3251       fi
3252   ],[
3253   AS_IF([test -n "${enable_freetype}"],[
3254     AC_MSG_ERROR([${FREETYPE_PKG_ERRORS}. Install FreeType2 development or configure with --disable-freetype.])
3255     ])
3256   ])
3259 AM_CONDITIONAL([HAVE_FREETYPE], [test "${have_freetype}" = "yes"])
3260 AM_CONDITIONAL([HAVE_FONTCONFIG], [test "${have_fontconfig}" = "yes"])
3261 AM_CONDITIONAL([HAVE_FRIBIDI], [test "${have_fribidi}" = "yes"])
3262 AM_CONDITIONAL([HAVE_HARFBUZZ], [test "${have_harfbuzz}" = "yes"])
3265 dnl SAPI (text to Speech renderer for Windows)
3267 AC_LANG_PUSH([C++])
3268 AC_CHECK_TYPES([ISpObjectToken],[
3269               have_sapi="yes"
3270             ],[AC_MSG_WARN([sapi.h not found. Text to Speech renderer for Windows disabled])],
3271               [#include <windows.h>
3272                #include <sapi.h>
3273                #include <sphelper.h>])
3274 AM_CONDITIONAL([HAVE_SAPI], [test "${have_sapi}" = "yes"])
3275 AC_LANG_POP([C++])
3278 dnl  SVG module (text rendering and image decoding)
3280 PKG_ENABLE_MODULES_VLC([SVG], [], [librsvg-2.0 >= 2.9.0], [SVG rendering library],[auto])
3281 PKG_ENABLE_MODULES_VLC([SVGDEC], [], [librsvg-2.0 >= 2.9.0 cairo >= 1.13.1], [SVG image decoder library],[auto])
3284 dnl  Windows DirectX module
3287 AC_ARG_ENABLE(directx,
3288   [AS_HELP_STRING([--enable-directx],
3289     [Microsoft DirectX support (default enabled on Windows)])],, [
3290   AS_IF([test "${SYS}" = "mingw32"], [
3291     enable_directx="yes"
3292   ], [
3293     enable_directx="no"
3294   ])
3296 AS_IF([test "${enable_directx}" != "no"], [
3297   dnl DirectDraw
3298   AC_CHECK_HEADERS(ddraw.h, [
3299     VLC_ADD_PLUGIN([directdraw])
3300   ])
3302   dnl OpenGL
3303   AC_CHECK_HEADERS(GL/wglew.h, [
3304     VLC_ADD_PLUGIN([glwin32 wgl])
3305   ],, [
3306     #include <windows.h>
3307     #include <GL/gl.h>
3308   ])
3310   dnl Direct3D11
3311   AC_CHECK_HEADERS(d3d11.h, [
3312     VLC_ADD_PLUGIN([direct3d11 direct3d11_deinterlace direct3d11_adjust])
3313   ])
3315   dnl Direct3D9
3316   AC_CHECK_HEADERS(d3d9.h, [
3317     VLC_ADD_PLUGIN([direct3d9])
3318     AC_CHECK_HEADERS(d3dx9effect.h)
3320     AC_PREPROC_IFELSE([AC_LANG_PROGRAM(
3321         [[#define COBJMACROS
3322           #include <d3d9.h>
3323           #include <dxva2api.h>
3324           #ifndef IDirectXVideoProcessorService_GetVideoProcessorDeviceGuids
3325           # error dxva2 too old
3326           #endif
3327         ]],[[;]])
3328       ],[
3329         VLC_ADD_PLUGIN([direct3d9_deinterlace direct3d9_adjust])
3330       ],
3331       [AC_MSG_WARN([Could not find required IDirectXVideoDecoder in dxva2api.h])])
3333   ])
3337 dnl  Linux framebuffer module
3339 AC_CHECK_HEADER([linux/fb.h], [
3340   VLC_ADD_PLUGIN([fb])
3345 dnl  AA plugin
3347 AC_ARG_ENABLE(aa,
3348   [  --enable-aa             aalib output (default disabled)])
3349 if test "${enable_aa}" = "yes"
3350 then
3351   AC_CHECK_HEADER(aalib.h,have_aa="true",have_aa="false")
3352   if test "${have_aa}" = "true"
3353   then
3354     VLC_ADD_PLUGIN([aa])
3355   fi
3359 dnl  libcaca plugin
3361 PKG_ENABLE_MODULES_VLC([CACA], [], [caca >= 0.99.beta14], [libcaca output],[auto])
3364 dnl  OS/2 KVA plugin
3366 AC_ARG_ENABLE(kva,
3367   [AS_HELP_STRING([--enable-kva],
3368     [support the K Video Accelerator KVA (default enabled on OS/2)])],, [
3369   AS_IF([test "$SYS" = "os2"], [
3370     enable_kva="yes"
3371   ])
3373 have_kva="no"
3374 KVA_LIBS=""
3375 AS_IF([test "$enable_kva" != "no"], [
3376   AC_CHECK_HEADERS([kva.h], [
3377     have_kva="yes"
3378     AC_CHECK_LIB(kva, main, [
3379       KVA_LIBS="-lkva"
3380     ])
3381   ])
3383 AC_SUBST(KVA_LIBS)
3384 AM_CONDITIONAL([HAVE_KVA], [test "${have_kva}" = "yes"])
3387 dnl MMAL plugin
3389 AC_ARG_ENABLE(mmal,
3390   AS_HELP_STRING([--enable-mmal],
3391     [Multi-Media Abstraction Layer (MMAL) hardware plugin (default enable)]))
3392 if test "${enable_mmal}" != "no"; then
3393   VLC_SAVE_FLAGS
3394   LDFLAGS="${LDFLAGS} -L/opt/vc/lib -lvchostif"
3395   CPPFLAGS="${CPPFLAGS} -isystem /opt/vc/include -isystem /opt/vc/include/interface/vcos/pthreads -isystem /opt/vc/include/interface/vmcs_host/linux"
3396   AC_CHECK_HEADERS(interface/mmal/mmal.h,
3397     [ AC_CHECK_LIB(bcm_host, vc_tv_unregister_callback_full, [
3398         have_mmal="yes"
3399         VLC_ADD_PLUGIN([mmal])
3400         VLC_ADD_LDFLAGS([mmal],[ -L/opt/vc/lib ])
3401         VLC_ADD_CFLAGS([mmal],[ -isystem /opt/vc/include -isystem /opt/vc/include/interface/vcos/pthreads -isystem /opt/vc/include/interface/vmcs_host/linux ])
3402         VLC_ADD_LIBS([mmal],[ -lbcm_host -lmmal -lmmal_core -lmmal_components -lmmal_util -lvchostif ]) ], [
3403           AS_IF([test "${enable_mmal}" = "yes"],
3404             [ AC_MSG_ERROR([Cannot find bcm library...]) ],
3405             [ AC_MSG_WARN([Cannot find bcm library...]) ])
3406           ],
3407         [])
3408     ] , [ AS_IF([test "${enable_mmal}" = "yes"],
3409       [ AC_MSG_ERROR([Cannot find development headers for mmal...]) ],
3410       [ AC_MSG_WARN([Cannot find development headers for mmal...]) ]) ])
3411   VLC_RESTORE_FLAGS
3413 AM_CONDITIONAL([HAVE_MMAL], [test "${have_mmal}" = "yes"])
3416 dnl evas plugin
3418 AC_ARG_ENABLE(evas,
3419   [AS_HELP_STRING([--enable-evas],
3420     [use evas output module (default disabled)])])
3421 have_evas="no"
3422 AS_IF([test "${enable_evas}" = "yes"], [
3423   PKG_CHECK_MODULES(EVAS, [evas >= 1.15.99 ecore >= 1.15.99], [
3424       have_evas="yes"
3425       AC_DEFINE([HAVE_EVAS], [1], [Define to 1 if evas is enabled.])
3426     ],[
3427     AS_IF([test "x${enable_evas}" != "x"], [
3428       AC_MSG_ERROR([$EVAS_PKG_ERRORS. libevas and libecore 1.15.99 or later required.])
3429     ])
3430   ])
3432 AM_CONDITIONAL([HAVE_EVAS], [test "${have_evas}" = "yes"])
3435 dnl  Audio plugins
3438 EXTEND_HELP_STRING([Audio plugins:])
3441 dnl  Pulseaudio module
3443 AC_ARG_ENABLE(pulse,
3444   [AS_HELP_STRING([--enable-pulse],
3445     [use the PulseAudio client library (default auto)])])
3446 have_pulse="no"
3447 AS_IF([test "${enable_pulse}" != "no"], [
3448   PKG_CHECK_MODULES([PULSE], [libpulse >= 1.0], [
3449     have_pulse="yes"
3450   ], [
3451     AS_IF([test "x${enable_pulse}" != "x"], [
3452       AC_MSG_ERROR([$PULSE_PKG_ERRORS. PulseAudio 1.0 or later required.])
3453     ])
3454   ])
3456 AM_CONDITIONAL([HAVE_PULSE], [test "${have_pulse}" = "yes"])
3459 dnl  ALSA module
3461 AC_ARG_ENABLE(alsa,
3462   [AS_HELP_STRING([--enable-alsa],
3463     [support the Advanced Linux Sound Architecture (default auto)])],, [
3464   AS_IF([test "$SYS" = "linux" -a "${have_pulse}" = "no"], [
3465     enable_alsa="yes"
3466   ])
3468 have_alsa="no"
3469 AS_IF([test "${enable_alsa}" != "no"], [
3470   PKG_CHECK_MODULES([ALSA], [alsa >= 1.0.24], [
3471     have_alsa="yes"
3472   ], [
3473     AS_IF([test "x${enable_alsa}" != "x"], [
3474       AC_MSG_ERROR([$ALSA_PKG_ERRORS. alsa-lib 1.0.24 or later required. Pass --disable-alsa to ignore this error.])
3475     ])
3476   ])
3478 AM_CONDITIONAL([HAVE_ALSA], [test "${have_alsa}" = "yes"])
3481 dnl  Open Sound System module
3483 AC_ARG_ENABLE(oss,
3484   [AS_HELP_STRING([--enable-oss],
3485     [support the Open Sound System OSS (default enabled on FreeBSD/NetBSD/DragonFlyBSD)])],, [
3486   AS_IF([test "$SYS" = "mingw32" -o "$SYS" = "linux" -o "$SYS" = "openbsd"], [
3487     enable_oss="no"
3488   ])
3490 have_oss="no"
3491 OSS_LIBS=""
3492 AS_IF([test "$enable_oss" != "no"], [
3493   AC_CHECK_HEADERS([soundcard.h sys/soundcard.h], [
3494     have_oss="yes"
3495     AC_CHECK_LIB(ossaudio, main, [
3496       OSS_LIBS="-lossaudio"
3497     ])
3498   ])
3500 AC_SUBST(OSS_LIBS)
3501 AM_CONDITIONAL([HAVE_OSS], [test "${have_oss}" = "yes"])
3504 dnl  OpenBSD sndio module
3506 AC_ARG_ENABLE([sndio],
3507   [AS_HELP_STRING([--disable-sndio],
3508     [support the OpenBSD sndio (default auto)])],, [
3509   AS_IF([test "$SYS" = "openbsd"], [
3510     enable_sndio="yes"
3511   ])
3513 have_sndio="no"
3514 AS_IF([test "$enable_sndio" != "no"], [
3515   AC_CHECK_HEADER([sndio.h], [
3516     have_sndio="yes"
3517   ])
3519 AM_CONDITIONAL([HAVE_SNDIO], [test "${have_sndio}" = "yes"])
3522 dnl  Windows Audio Session plugin
3524 AC_ARG_ENABLE([wasapi],
3525   [AS_HELP_STRING([--enable-wasapi],
3526     [use the Windows Audio Session API (default auto)])
3528 have_wasapi="no"
3529 AS_IF([test "$enable_wasapi" != "no"], [
3530   AC_CHECK_HEADER([audioclient.h], [
3531     have_wasapi="yes"
3532   ], [
3533     AS_IF([test "x${enable_wasapi}" != "x"], [
3534       AC_MSG_ERROR([Windows Audio Session API not found.])
3535     ])
3536   ])
3538 AM_CONDITIONAL([HAVE_WASAPI], [test "${have_wasapi}" = "yes"])
3541 dnl  JACK modules
3543 AC_ARG_ENABLE(jack,
3544   [AS_HELP_STRING([--disable-jack],
3545     [do not use jack (default auto)])])
3546 have_jack="no"
3547 AS_IF([test "${enable_jack}" != "no"], [
3548     PKG_CHECK_MODULES(JACK, jack >= 1.9.7,
3549       [ have_jack=yes ],
3550       [
3551       AC_MSG_WARN([${JACK_PKG_ERRORS}, trying jack1 instead])
3553       PKG_CHECK_MODULES(JACK, jack >= 0.120.1 jack < 1.0,
3554       [ have_jack=yes ],
3555       [
3556       AS_IF([test -n "${enable_jack}"],
3557          [AC_MSG_ERROR([${JACK_PKG_ERRORS}.])],
3558          [AC_MSG_WARN([${JACK_PKG_ERRORS}.])])
3559       ])
3560     ])
3562 AM_CONDITIONAL([HAVE_JACK], [test "${have_jack}" != "no"])
3565 dnl  OpenSLES Android
3567 AC_ARG_ENABLE(opensles,
3568   [  --enable-opensles       Android OpenSL ES audio module (default disabled)])
3569 if test "${HAVE_ANDROID}" = "1"; then
3570   if test "${enable_opensles}" = "yes"; then
3571       AC_CHECK_HEADERS(SLES/OpenSLES.h,
3572         [ VLC_ADD_PLUGIN([opensles_android]) ],
3573         [ AC_MSG_ERROR([cannot find OpenSLES headers])] )
3574   fi
3578 dnl  Tizen audio
3580 AC_ARG_ENABLE(tizen_audio,
3581   [AS_HELP_STRING([--enable-tizen-audio],
3582     [Tizen audio module (default enabled on Tizen)])],, [
3583   AS_IF([test "$HAVE_TIZEN" = "1"], [
3584     enable_tizen_audio="yes"
3585   ])
3587 if test "${enable_tizen_audio}" = "yes"; then
3588   AC_CHECK_HEADERS(audio_io.h,
3589     [ VLC_ADD_PLUGIN([tizen_audio]) ],
3590     [ AC_MSG_ERROR([cannot find Tizen audio_io headers])] )
3594 dnl libsamplerate plugin
3596 PKG_ENABLE_MODULES_VLC([SAMPLERATE], [], [samplerate], [Resampler with libsamplerate], [auto])
3599 dnl  soxr module
3601 PKG_ENABLE_MODULES_VLC([SOXR], [], [soxr >= 0.1.2], [SoX Resampler library], [auto])
3604 dnl  OS/2 KAI plugin
3606 AC_ARG_ENABLE(kai,
3607   [AS_HELP_STRING([--enable-kai],
3608     [support the K Audio Interface KAI (default enabled on OS/2)])],, [
3609   AS_IF([test "$SYS" = "os2"], [
3610     enable_kai="yes"
3611   ])
3613 have_kai="no"
3614 KAI_LIBS=""
3615 AS_IF([test "$enable_kai" != "no"], [
3616   AC_CHECK_HEADERS([kai.h], [
3617     have_kai="yes"
3618     AC_CHECK_LIB(kai, main, [
3619       KAI_LIBS="-lkai"
3620     ])
3621   ])
3623 AC_SUBST(KAI_LIBS)
3624 AM_CONDITIONAL([HAVE_KAI], [test "${have_kai}" = "yes"])
3627 dnl  chromaprint audio track fingerprinter
3629 m4_pushdef([libchromaprint_version], 0.6.0)
3630 PKG_WITH_MODULES([CHROMAPRINT],[libchromaprint >= libchromaprint_version],
3631     VLC_ADD_PLUGIN([stream_out_chromaprint]),
3632     AS_IF([test "${enable_chromaprint}" = "yes"],
3633         [AC_MSG_ERROR(Library [libchromaprint >= libchromaprint_version] needed for [chromaprint] was not found)],
3634         [AC_MSG_WARN(Library [libchromaprint >= libchromaprint_version] needed for [chromaprint] was not found)]
3635          ),
3636     [(Chromaprint based audio fingerprinter)],[auto])
3637 m4_popdef([libchromaprint_version])
3640 dnl  Chromecast streaming support
3642 m4_pushdef([protobuf_lite_version], 2.5.0)
3643 AC_ARG_VAR(PROTOC, [protobuf compiler])
3644 AC_CHECK_PROGS(PROTOC, protoc, no)
3645 PKG_WITH_MODULES([CHROMECAST],[protobuf-lite >= protobuf_lite_version], [
3646     AS_IF([test "x${PROTOC}" != "xno"], [
3647         build_chromecast="yes"
3648     ], [
3649     AC_MSG_ERROR(protoc compiler needed for [chromecast] was not found)
3650     ])
3651 ], [
3652     AS_IF([test "${enable_chromecast}" = "yes"],
3653         AC_MSG_ERROR(Library [protobuf-lite >= protobuf_lite_version] needed for [chromecast] was not found),
3654         AC_MSG_WARN(Library [protobuf-lite >= protobuf_lite_version] needed for [chromecast] was not found)
3655     )
3656     enable_chromecast="no"
3657 ], [(Chromecast streaming support)], [auto])
3658 AM_CONDITIONAL([BUILD_CHROMECAST], [test "${build_chromecast}" = "yes"])
3659 m4_popdef([protobuf_lite_version])
3662 dnl  Interface plugins
3665 EXTEND_HELP_STRING([Interface plugins:])
3668 dnl QT
3670 AC_ARG_ENABLE(qt, [
3671   AS_HELP_STRING([--disable-qt], [Qt UI support (default enabled)])],, [
3672   AS_IF([test "${SYS}" = "darwin"], [
3673     enable_qt="no"
3674   ])
3676 have_qt5_x11="no"
3677 AS_IF([test "${enable_qt}" != "no"], [
3678   PKG_CHECK_MODULES([QT], [Qt5Core >= 5.5.0 Qt5Widgets Qt5Gui Qt5Svg], [
3679       PKG_CHECK_MODULES([QT5_X11], [Qt5X11Extras], [
3680           have_qt5_x11="yes"
3681       ],[
3682           AC_MSG_WARN([Not building Qt Interface with X11 helpers.])
3683       ])
3684       QT_PATH="$(eval $PKG_CONFIG --variable=exec_prefix Qt5Core)"
3685       QT_HOST_PATH="$(eval $PKG_CONFIG --variable=host_bins Qt5Core)"
3686       QT_VERSION="$(eval $PKG_CONFIG --modversion Qt5Gui)"
3687       AC_PATH_PROGS(MOC, [moc-qt5 moc], moc, ["${QT_HOST_PATH}" "${QT_PATH}/bin"])
3688       AC_PATH_PROGS(RCC, [rcc-qt5 rcc], rcc, ["${QT_HOST_PATH}" "${QT_PATH}/bin"])
3689       AC_PATH_PROGS(UIC, [uic-qt5 uic], uic, ["${QT_HOST_PATH}" "${QT_PATH}/bin"])
3690     ], [
3691       AS_IF([test -n "${enable_qt}"],[
3692         AC_MSG_ERROR([${QT_PKG_ERRORS}.])
3693       ],[
3694         AC_MSG_WARN([${QT_PKG_ERRORS}.])
3695       ])
3696       enable_qt="no"
3697     ])
3700 AS_IF([test "${enable_qt}" != "no"], [
3701   ALIASES="${ALIASES} qvlc"
3703 AC_SUBST(QT_VERSION)
3704 AM_CONDITIONAL(ENABLE_QT, [test "$enable_qt" != "no"])
3705 AM_CONDITIONAL([HAVE_QT5_X11], [test "${have_qt5_x11}" = "yes"])
3708 dnl detect kde4-config patch (used for kde solids).
3710 AC_ARG_VAR([KDE4_CONFIG], [kde4-config utility])
3711 AS_IF([test "x$KDE4_CONFIG" = "x"], [
3712   KDE4_CONFIG="kde4-config"
3716 dnl Simple test for skins2 dependency
3718 AS_IF([test "$enable_qt" = "no"], [
3719   AS_IF([test "${enable_skins2}" = "yes"], [
3720     AC_MSG_ERROR([The skins2 module depends on the Qt 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 Qt development package or alternatively you can also configure with: --disable-qt --disable-skins2.])
3721   ], [
3722     enable_skins2="no"
3723     AC_MSG_WARN([The skins2 module depends on the Qt interface, Qt is not built so skins2 is disabled.])
3724   ])
3728 dnl Skins2 module
3730 AC_ARG_ENABLE(skins2,
3731   [AS_HELP_STRING([--enable-skins2], [skins interface module (default auto)])])
3732 AS_IF([test "${enable_skins2}" != "no"], [
3733   have_skins_deps="yes"
3735   dnl Win32
3736   AS_IF([test "${SYS}" = "mingw32"], [
3737     VLC_ADD_CPPFLAGS([skins2],[-U_OFF_T_ -U_off_t -DWIN32_SKINS])
3738     VLC_ADD_LIBS([skins2],[-lgdi32 -lole32 -luuid -lmsimg32])
3739   dnl OS/2
3740   ], [test "${SYS}" = "os2"], [
3741     VLC_ADD_CPPFLAGS([skins2],[ -DOS2_SKINS])
3742   dnl Linux/Unix
3743   ], [
3744     PKG_CHECK_MODULES([XPM], [xpm],, [have_skins_deps="no"])
3745     PKG_CHECK_MODULES([XINERAMA], [xinerama],, [have_skins_deps="no"])
3746     PKG_CHECK_MODULES([XEXT], [xext],, [have_skins_deps="no"])
3747     VLC_ADD_CPPFLAGS([skins2],[${X_CFLAGS} ${XEXT_CFLAGS} ${XPM_CFLAGS} -DX11_SKINS])
3748     VLC_ADD_LIBS([skins2],[${X_LIBS} ${X_PRE_LIBS} ${XEXT_LIBS} ${XPM_LIBS} ${XINERAMA_LIBS} -lX11])
3749   ])
3751   dnl we need freetype
3752   AS_IF([test "${have_freetype}" != "yes"], [
3753     have_skins_deps="no"
3754   ])
3756   AS_IF([test "${have_skins_deps}" = "no"], [
3757     AS_IF([test "x${enable_skins2}" = "x"], [
3758       AC_MSG_WARN([Skins2 interface disabled due to missing dependencies.])
3759     ], [
3760       AC_MSG_ERROR([Skins2 interface requires FreeType, libxpm, libxext and libxinerama])
3761     ])
3762     enable_skins2="no"
3763   ], [
3764     ALIASES="${ALIASES} svlc"
3765     enable_skins2="yes"
3766   ])
3768 AM_CONDITIONAL(BUILD_SKINS, [test "${enable_skins2}" = "yes"])
3770 AC_ARG_ENABLE(libtar,
3771   [  --enable-libtar         libtar support for skins2 (default auto)])
3772 AS_IF([test "${enable_skins2}" = "yes" && test "${enable_libtar}" != "no"], [
3773   AC_CHECK_HEADERS(libtar.h, [
3774     VLC_ADD_LIBS([skins2],[-ltar])
3775   ])
3779 dnl  MacOS X gui module
3781 AC_ARG_ENABLE(macosx,
3782   [  --enable-macosx         Mac OS X gui support (default enabled on Mac OS X)])
3783 if test "x${enable_macosx}" != "xno" -a "${SYS}" = "darwin"
3784 then
3786   dnl
3787   dnl If possible, use xcrun to find the right ibtool
3788   dnl
3790   AC_PATH_PROG([XCRUN], [xcrun], [no])
3791   AS_IF([test ! "x${XCRUN}" = "xno"], [
3792     AC_MSG_CHECKING([for ibtool (using xcrun)])
3793     XIB="$(eval $XCRUN -f ibtool 2>/dev/null || echo no)"
3794     AC_MSG_RESULT([${XIB}])
3795   ], [
3796     AC_MSG_WARN([Looking for tools without using xcrun])
3797   ])
3799   AS_IF([test "x${XIB}" = "xno"], [
3800     AC_PATH_PROG(XIB, [ibtool], [no])
3801     AS_IF([test "x${XIB}" = "xno"], [
3802       AC_MSG_ERROR([ibtool was not found, but is required for --enable-macosx])
3803     ])
3804   ])
3806 AM_CONDITIONAL(ENABLE_MACOSX_UI, [test "$enable_macosx" != "no" -a "${SYS}" = "darwin"])
3809 dnl  MacOS X sparkle update support
3811 AC_ARG_ENABLE(sparkle,
3812   [  --enable-sparkle        Sparkle update support for OS X (default enabled on Mac OS X)])
3813 if test "x${enable_sparkle}" != "xno" -a "${HAVE_OSX}" = "1"
3814 then
3815   if test ! -d ${CONTRIB_DIR}/Sparkle.framework -a ! -d ${CONTRIB_DIR}/Frameworks/Sparkle.framework
3816   then
3817     AC_MSG_ERROR([Sparkle framework is required and was not found in ${CONTRIB_DIR}])
3818   fi
3820   AC_DEFINE([HAVE_SPARKLE], [1], [Define to 1 if sparkle is enabled.])
3822 AM_CONDITIONAL(HAVE_SPARKLE, [test "$enable_sparkle" != "no"])
3825 dnl  MacOS X breakpad creash reporter support
3827 AC_ARG_WITH([breakpad],
3828   AS_HELP_STRING([--with-breakpad=URL], [Enable Breakpad reporter using given URL]), [], [with_breakpad=no])
3830 AS_IF([test "$with_breakpad" != "no"], [
3832   AS_IF([test "$with_breakpad" = "yes"], [
3833     AC_MSG_ERROR([You need to supply the CrashDragon Server URL as value for --with-breakpad])
3834   ])
3836   AS_IF([test "$HAVE_OSX" != "1"], [
3837     AC_MSG_ERROR([Breakpad currently only works on macOS])
3838   ])
3840   AC_MSG_CHECKING([for Breakpad framework])
3841   AS_IF([test ! -d ${CONTRIB_DIR}/Breakpad.framework -a \
3842               ! -d ${CONTRIB_DIR}/Frameworks/Breakpad.framework], [
3843     AC_MSG_RESULT([no])
3844     AC_MSG_ERROR([Breakpad framework is required and was not found in ${CONTRIB_DIR}])
3845   ], [
3846     AC_MSG_RESULT([yes])
3847     AC_DEFINE([HAVE_BREAKPAD], [1], [Define to 1 if breakpad is enabled.])
3848     AC_SUBST(BREAKPAD_URL, ["${with_breakpad}"])
3849   ])
3853 AM_CONDITIONAL(HAVE_BREAKPAD, [test "$with_breakpad" != "no"])
3856 dnl  Minimal Mac OS X module
3858 AC_ARG_ENABLE(minimal-macosx,
3859   [  --enable-minimal-macosx Minimal Mac OS X support (default disabled)])
3860 if test "${enable_minimal_macosx}" = "yes" -a "${SYS}" = "darwin"
3861 then
3862   VLC_ADD_PLUGIN([minimal_macosx])
3866 dnl Mac OS X fancy dmg build tool
3868 if test "${HAVE_OSX}" = "1"
3869 then
3870   AC_PATH_PROG(DMGBUILD, dmgbuild, no)
3871   AS_IF([test "x${DMGBUILD}" = "xno"], [
3872     AC_MSG_WARN([dmgbuild not found -- unable to build fancy DMGs])
3873   ])
3875 AM_CONDITIONAL(HAVE_DMGBUILD, [test "x$DMGBUILD" != "xno" -a "${HAVE_OSX}" = "1"])
3878 dnl  VideoToolbox plugins
3879 AC_CHECK_HEADERS(VideoToolbox/VideoToolbox.h, [
3880     VLC_ADD_PLUGIN([videotoolbox])
3881     VLC_ADD_PLUGIN([cvpx])
3882   ])
3885 dnl  ncurses module
3887 AC_ARG_ENABLE(ncurses,
3888 [AS_HELP_STRING([--disable-ncurses],[ncurses text-based interface (default auto)])])
3889 have_ncurses="no"
3890 AS_IF([test "${enable_ncurses}" != "no"] ,[
3891   PKG_CHECK_MODULES([NCURSES], [ncursesw], [
3892     have_ncurses="yes"
3893     ALIASES="${ALIASES} nvlc"
3894   ], [
3895     AS_IF([test -n "${enable_ncurses}"], [
3896       AC_MSG_ERROR([${NCURSES_PKG_ERRORS}.])
3897     ])
3898   ])
3900 AM_CONDITIONAL([HAVE_NCURSES], [test "${have_ncurses}" = "yes"])
3903 dnl  Lirc plugin
3905 AC_ARG_ENABLE(lirc,
3906   [  --enable-lirc           lirc support (default disabled)])
3907 have_lirc="no"
3908 AS_IF([test "${enable_lirc}" = "yes"], [
3909   AC_CHECK_HEADER(lirc/lirc_client.h, [
3910     AC_CHECK_LIB(lirc_client, lirc_init, [
3911       have_lirc="yes"
3912     ])
3913   ])
3915 AM_CONDITIONAL([HAVE_LIRC], [test "${have_lirc}" = "yes"])
3918 dnl  SRT plugin
3920 PKG_ENABLE_MODULES_VLC([SRT], [access_srt access_output_srt], [srt >= 1.2.0], [SRT input/output plugin], [auto], [], [], [-DENABLE_SRT])
3922 EXTEND_HELP_STRING([Visualisations and Video filter plugins:])
3924 dnl  goom visualization plugin
3926 PKG_ENABLE_MODULES_VLC([GOOM], [], [libgoom2], [goom visualization plugin], [auto])
3929 dnl libprojectM visualization plugin
3931 AC_ARG_ENABLE(projectm,
3932   [  --enable-projectm       projectM visualization plugin (default enabled)])
3933 AS_IF([test "${enable_projectm}" != "no"],
3934   [
3935     PKG_CHECK_MODULES(PROJECTM, libprojectM,
3936     [
3937       VLC_ADD_PLUGIN([projectm])
3938       PKG_CHECK_EXISTS([libprojectM >= 2.0.0],
3939         [ AC_DEFINE([HAVE_PROJECTM2], 1, [Define to 1 if using libprojectM 2.x]) ],
3940         [ AC_MSG_WARN( [Using libprojectM version 1] )
3941       ])
3942     ],[
3943       AC_MSG_WARN([${PROJECTM_PKG_ERRORS}.])
3944     ])
3945   ])
3948 dnl Vovoid VSXu visualization plugin
3950 AC_ARG_ENABLE(vsxu,
3951   [  --enable-vsxu           Vovoid VSXu visualization plugin (default auto)])
3952 AS_IF([test "${enable_vsxu}" != "no"],
3953   [
3954     PKG_CHECK_MODULES(VSXU, libvsxu,
3955     [
3956       VLC_ADD_PLUGIN([vsxu])
3957     ],[
3958       AC_MSG_WARN([${VSXU_PKG_ERRORS}.])
3959     ])
3960   ])
3962 EXTEND_HELP_STRING([Service Discovery plugins:])
3964 dnl  Avahi-Zeroconf services discovery
3965 PKG_ENABLE_MODULES_VLC([AVAHI], [], [avahi-client >= 0.6], [Zeroconf services discovery], [auto])
3968 dnl  libudev services discovery
3969 PKG_ENABLE_MODULES_VLC([UDEV], [], [libudev >= 142], [Linux udev services discovery], [auto])
3972 dnl MTP devices services discovery
3973 PKG_ENABLE_MODULES_VLC([MTP], [mtp access_mtp], [libmtp >= 1.0.0], [MTP devices support], [auto])
3976 dnl UPnP Plugin (Intel SDK)
3978 PKG_ENABLE_MODULES_VLC([UPNP], [upnp], [libupnp], [Intel UPNP SDK],[auto])
3981 dnl mDNS using libmicrodns
3983 PKG_ENABLE_MODULES_VLC([MICRODNS], [], [microdns], [mDNS services discovery], [auto])
3986 EXTEND_HELP_STRING([Misc options:])
3989 dnl  libxml2 module
3991 PKG_ENABLE_MODULES_VLC([LIBXML2], [xml], [libxml-2.0 >= 2.5], [libxml2 support],[auto])
3995 dnl libgcrypt
3997 AC_ARG_ENABLE(libgcrypt,
3998   [  --disable-libgcrypt     gcrypt support (default enabled)])
3999 AC_ARG_VAR([GCRYPT_CFLAGS], [C compiler flags for gcrypt])
4000 AC_ARG_VAR([GCRYPT_LIBS], [linker flags flags for gcrypt])
4002 # require libgcrypt >= 1.6.0
4003 AS_IF([test "${enable_libgcrypt}" != "no"], [
4004   AC_CACHE_CHECK([for gcrypt 1.6.0 or later], [ac_cv_lib_gcrypt], [
4005     VLC_SAVE_FLAGS
4006     CFLAGS="${CFLAGS} ${GCRYPT_CFLAGS}"
4007     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([
4008 [#include <gcrypt.h>
4009 #if GCRYPT_VERSION_NUMBER < 0x010600
4010 #error
4011 #endif]])], [
4012       ac_cv_lib_gcrypt=yes
4013     ], [
4014       ac_cv_lib_gcrypt=no
4015     ])
4016     VLC_RESTORE_FLAGS
4017   ])
4019   AS_IF([test "${ac_cv_lib_gcrypt}" = "yes"], [
4020     AC_DEFINE([HAVE_GCRYPT], 1, [Defined if having gcrypt])
4021   ], [
4022     AS_IF([test "${enable_libgcrypt}" = "yes"], [
4023       AC_MSG_ERROR([libgcrypt version 1.6.0 or higher not found. Install libgcrypt or pass --disable-libgcrypt.])
4024     ])
4025   ])
4028 AS_IF([test -z "$GCRYPT_LIBS"], [
4029   GCRYPT_LIBS="-lgcrypt -lgpg-error"
4032 AC_SUBST(GCRYPT_CFLAGS)
4033 AC_SUBST(GCRYPT_LIBS)
4034 AM_CONDITIONAL([HAVE_GCRYPT], [test "${ac_cv_lib_gcrypt}" = "yes"])
4037 dnl TLS/SSL
4039 AC_ARG_ENABLE(gnutls,
4040   [  --enable-gnutls         GNU TLS TLS/SSL support (default enabled)])
4041 AS_IF([test "${enable_gnutls}" != "no"], [
4042   PKG_CHECK_MODULES(GNUTLS, [gnutls >= 3.3.6], [
4043     VLC_ADD_PLUGIN([gnutls])
4044   ], [
4045     AS_IF([test -n "${enable_gnutls}"], [
4046       AC_MSG_ERROR([${GNUTLS_PKG_ERRORS}.)])
4047     ])
4048   ])
4053 dnl Taglib plugin
4055 AC_ARG_ENABLE(taglib,
4056   [AS_HELP_STRING([--disable-taglib],
4057     [do not use TagLib (default enabled)])])
4058 AS_IF([test "${enable_taglib}" != "no"], [
4059   PKG_CHECK_MODULES(TAGLIB, taglib >= 1.9, [
4060     VLC_ADD_PLUGIN([taglib])
4061   ], [
4062     AC_MSG_WARN([${TAGLIB_PKG_ERRORS}.])])
4066 dnl  libsecret
4068 PKG_ENABLE_MODULES_VLC([SECRET], [], [libsecret-1 >= 0.18], [use libsecret for keystore], [auto])
4071 dnl  kwallet
4073 AC_ARG_ENABLE(kwallet,
4074   [AS_HELP_STRING([--enable-kwallet],
4075     [use kwallet (via D-Bus) for keystore (default enabled)])])
4076 AS_IF([test "${enable_kwallet}" != "no" -a "${have_dbus}" = "yes"], [
4077   VLC_ADD_PLUGIN([kwallet])
4081 dnl  Developers helper modules (should be hidden from configure help)
4083 AC_ARG_ENABLE(devtools, [], [], [enable_devtools="no"])
4084 AS_IF([test "${enable_devtools}" != "no"], [
4085   VLC_ADD_PLUGIN([accesstweaks])
4089 dnl update checking system
4091 AC_ARG_ENABLE(update-check,
4092   [  --enable-update-check   update checking system (default disabled)])
4093 if test "${enable_update_check}" = "yes"
4094 then
4095  AS_IF([test "${ac_cv_lib_gcrypt}" != "yes"],[
4096     AC_MSG_ERROR([libgcrypt is required for update checking system]) ])
4098 AM_CONDITIONAL(UPDATE_CHECK, [test "${enable_update_check}" = "yes"])
4101 dnl OS X notification plugin
4103 AC_ARG_ENABLE(osx_notifications,
4104   [  --enable-osx-notifications          osx notification plugin (default disabled)],,
4105   [enable_osx_notifications=no])
4106 AS_IF([test "${enable_osx_notifications}" != "no"], [
4107   if test -d ${CONTRIB_DIR}/Growl.framework -o -d ${CONTRIB_DIR}/Frameworks/Growl.framework
4108   then
4109       VLC_ADD_PLUGIN([osx_notifications])
4110       VLC_ADD_LIBS([osx_notifications], [-Wl,-framework,Growl,-framework,Foundation])
4111       VLC_ADD_OBJCFLAGS([osx_notifications], [-fobjc-exceptions] )
4112   fi
4116 dnl Libnotify notification plugin
4118 PKG_ENABLE_MODULES_VLC([NOTIFY], [], [libnotify gtk+-2.0], [libnotify notification], [auto])
4121 dnl  libplacebo support
4123 AC_ARG_ENABLE(libplacebo,
4124   [AS_HELP_STRING([--disable-libplacebo],
4125       [disable libplacebo support (default auto)])])
4127 AS_IF([test "$enable_libplacebo" != "no"], [
4128   PKG_CHECK_MODULES([LIBPLACEBO], [libplacebo >= 0.1], [
4129     AC_DEFINE([HAVE_LIBPLACEBO], [1], [Define to 1 if libplacebo is enabled.])
4130   ], [
4131     AS_IF([test -n "${enable_libplacebo}"], [
4132       AC_MSG_ERROR([${LIBPLACEBO_PKG_ERRORS}.])
4133     ])
4134     enable_libplacebo="no"
4135   ])
4137 AM_CONDITIONAL(HAVE_LIBPLACEBO, [test "$enable_libplacebo" != "no"])
4141 dnl  Endianness check
4143 AC_C_BIGENDIAN
4144 AS_IF([test "${ac_cv_c_bigendian}" = "yes"], [
4145   DEFS_BIGENDIAN="-DWORDS_BIGENDIAN=1"
4146 ], [
4147   DEFS_BIGENDIAN=""
4149 AC_SUBST(DEFS_BIGENDIAN)
4152 dnl Where to install KDE solid .desktop
4154 AC_ARG_WITH(kde-solid,
4155   AS_HELP_STRING([--with-kde-solid=PATH],
4156                  [KDE Solid actions directory (auto)]),, [
4158 if test "${SYS}" != "mingw32" -a "${SYS}" != "darwin" ; then
4159   with_kde_solid="yes"
4162 soliddatadir=""
4163 AS_IF([test "${with_kde_solid}" != "no"], [
4164   AS_IF([test "${with_kde_solid}" = "yes"], [
4165     kde4datadir="`${KDE4_CONFIG} --install data`"
4166     AS_IF([test "x$kde4datadir" = "x"], [kde4datadir='${datadir}/kde4/apps'])
4167     soliddatadir="${kde4datadir}/solid/actions"
4168   ], [
4169     soliddatadir="${with_kde_solid}"
4170   ])
4172 AC_SUBST(soliddatadir)
4173 AM_CONDITIONAL(KDE_SOLID, [test "x${soliddatadir}" != "x"])
4176 dnl Check wether we have the PROCESS_MITIGATION_IMAGE_LOAD_POLICY 
4177 dnl It should only be available when building for win10, but some SDKs define it unconditionnaly
4179 if test "${SYS}" = "mingw32"; then
4180     AC_CHECK_TYPES([PROCESS_MITIGATION_IMAGE_LOAD_POLICY],,,[#include <windows.h>])
4183 EXTEND_HELP_STRING([Components:])
4186 dnl  the VLC binary
4188 AC_ARG_ENABLE(vlc,
4189   [  --enable-vlc            build the VLC media player (default enabled)])
4190 AM_CONDITIONAL(BUILD_VLC, [test "${enable_vlc}" != "no"])
4193 dnl  Stuff used by the program
4195 VERSION_MESSAGE="${VERSION} ${CODENAME}"
4196 COPYRIGHT_MESSAGE="Copyright © ${COPYRIGHT_YEARS} the VideoLAN team"
4197 AC_DEFINE_UNQUOTED(VERSION_MESSAGE, "${VERSION_MESSAGE}", [Simple version string])
4198 AC_DEFINE_UNQUOTED(COPYRIGHT_MESSAGE, "${COPYRIGHT_MESSAGE}", [Copyright string])
4199 AC_DEFINE_UNQUOTED(COPYRIGHT_YEARS, "${COPYRIGHT_YEARS}", [The copyright years])
4200 AC_DEFINE_UNQUOTED(CONFIGURE_LINE, "${CONFIGURE_LINE}", [The ./configure command line])
4201 AC_DEFINE_UNQUOTED(PACKAGE_VERSION_MAJOR,${VERSION_MAJOR}, [version major number])
4202 AC_DEFINE_UNQUOTED(PACKAGE_VERSION_MINOR,${VERSION_MINOR}, [version minor number])
4203 AC_DEFINE_UNQUOTED(PACKAGE_VERSION_REVISION,${VERSION_REVISION}, [version revision number])
4204 AC_DEFINE_UNQUOTED(PACKAGE_VERSION_EXTRA,${VERSION_EXTRA}, [version extra number])
4205 AC_DEFINE_UNQUOTED(PACKAGE_VERSION_DEV,"${VERSION_DEV}", [version development string])
4206 AC_SUBST(COPYRIGHT_MESSAGE)
4207 AC_SUBST(VERSION_MESSAGE)
4208 AC_SUBST(VERSION_MAJOR)
4209 AC_SUBST(VERSION_MINOR)
4210 AC_SUBST(VERSION_REVISION)
4211 AC_SUBST(VERSION_EXTRA)
4212 AC_SUBST(COPYRIGHT_YEARS)
4213 AC_DEFINE_UNQUOTED(VLC_COMPILE_BY, "`whoami|sed -e 's/\\\/\\\\\\\/g'`", [user who ran configure])
4214 AC_DEFINE_UNQUOTED(VLC_COMPILE_HOST, "`hostname -f 2>/dev/null || hostname`", [host which ran configure])
4215 AC_DEFINE_UNQUOTED(VLC_COMPILER, "`$CC -v 2>&1 | tail -n 1 | sed -e 's/ *$//'`", [compiler])
4217 dnl  Handle substvars that use $(top_srcdir)
4219 CPPFLAGS="-I\$(top_srcdir)/include -I\$(top_builddir)/include ${CPPFLAGS}"
4222 dnl  Configuration is finished
4224 AC_SUBST(SYS)
4225 AC_SUBST(ARCH)
4226 AC_SUBST(ALIASES)
4227 AC_SUBST(ASM)
4228 AC_SUBST(MOC)
4229 AC_SUBST(RCC)
4230 AC_SUBST(UIC)
4231 AC_SUBST(WINDRES)
4232 AC_SUBST(WINE_SDK_PATH)
4233 AC_SUBST(LIBEXT)
4234 AC_SUBST(AM_CPPFLAGS)
4235 AC_SUBST(MACOSX_DEPLOYMENT_TARGET)
4236 AC_SUBST(FILE_LIBVLCCORE_DLL)
4237 AC_SUBST(FILE_LIBVLC_DLL)
4239 AC_CONFIG_FILES([
4240   Makefile
4241   doc/Makefile
4242   modules/Makefile
4243   m4/Makefile
4244   po/Makefile.in
4245   share/Makefile
4246   compat/Makefile
4247   src/Makefile
4248   lib/Makefile
4249   bin/Makefile
4250   test/Makefile
4251   modules/hw/mmal/Makefile
4252   share/vlc.appdata.xml.in
4255 AM_COND_IF([HAVE_WIN32], [
4256   AC_CONFIG_FILES([
4257     extras/package/win32/NSIS/spad.nsi
4258     extras/package/win32/NSIS/vlc.win32.nsi
4259     extras/package/win32/msi/config.wxi
4260   ])
4263 AM_COND_IF([HAVE_DARWIN], [
4264   AC_CONFIG_FILES([
4265     modules/gui/macosx/UI/InfoPlist.strings:modules/gui/macosx/Resources/InfoPlist.strings.in
4266     share/macosx/Info.plist:share/Info.plist.in
4267   ])
4270 dnl Generate makefiles
4271 AC_OUTPUT
4273 dnl Do we have to use make or gmake ?
4274 if make --version 2>&1|grep -q GNU
4275 then
4276     # GNU make, all seems good
4277     MAKE=make
4278 else
4279     # Known GNU make alias (on BSD)
4280     MAKE=gmake
4282 dnl Shortcut to nice compile message
4283 if test -n $SHELL; then
4284   SHELL=${CONFIG_SHELL-/bin/sh}
4286 rm -f compile
4287 compile_top_srcdir=`sed -ne "s/^top_srcdir *= *//p" < Makefile`
4288 echo "#! $SHELL
4289 rm -f .error\$\$
4290 ERROR=0
4291 export PATH=\"$PATH\" LANG=C
4292 ($MAKE V=1 \$@ 2>&1 || touch .error\$\$)| $compile_top_srcdir/extras/buildsystem/make.pl
4293 test -f .error\$\$ && ERROR=1
4294 rm -f .error\$\$
4295 exit \$ERROR" >compile
4296 chmod a+x compile
4298 echo "
4299 libvlc configuration
4300 --------------------
4301 version               : ${VERSION}
4302 system                : ${SYS}
4303 architecture          : ${ARCH}
4304 optimizations         : ${enable_optimizations}"
4305 if test "${enable_vlc}" != "no"; then
4306 echo "vlc aliases           :${ALIASES}"
4307 else
4308 echo "build vlc executable  : no"
4310 echo "
4311 To build vlc and its plugins, type \`$MAKE', or \`./compile' if you like nice colors."