1 dnl Autoconf settings for vlc
3 AC_COPYRIGHT([Copyright 1999-2020 VLC authors and VideoLAN])
5 AC_INIT([vlc], [4.0.0-dev])
15 CONFIGURE_LINE="`echo "$0 $ac_configure_args" | sed -e 's/\\\/\\\\\\\/g'`"
16 CODENAME="Otto Chriek"
17 COPYRIGHT_YEARS="1996-2020"
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])
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])
37 AC_USE_SYSTEM_EXTENSIONS
39 AH_VERBATIM([FORTIFY_SOURCE],
40 [/* Enable compile-time and run-time bounds-checking, and some warnings,
41 without upsetting glibc 2.15+ or toolchains predefining _FORTIFY_SOURCE */
42 #if !defined _FORTIFY_SOURCE && defined __OPTIMIZE__ && __OPTIMIZE__
43 # define _FORTIFY_SOURCE 2
45 AC_DEFINE([_FILE_OFFSET_BITS], 64, [Define to 64 for large files support.])
46 AC_DEFINE([__LIBVLC__],, [Define within the LibVLC source code tree.])
47 AC_DEFINE([WIN32_LEAN_AND_MEAN],, [Define to limit the scope of <windows.h>.])
59 AC_ARG_VAR([DESKTOP_FILE_VALIDATE], [Validator for desktop entry files])
60 AC_CHECK_PROGS([DESKTOP_FILE_VALIDATE], [${DESKTOP_FILE_VALIDATE} desktop-file-validate], :)
61 AC_ARG_VAR([BUILDCC], [Build system C11 or C99 compiler command])
62 AC_CHECK_PROGS([BUILDCC], [c11-gcc c11 c99-gcc c99], [false])
63 AS_IF([test "$BUILDCC" = "false"], [
64 AC_MSG_ERROR([Cannot find native C99 compiler: please define BUILDCC.])
67 dnl Check for compiler properties
71 AX_CXX_COMPILE_STDCXX_14([noext], [mandatory])
73 dnl Check the compiler supports atomics in C
74 AC_MSG_CHECKING([C atomics])
77 AC_LINK_IFELSE([AC_LANG_PROGRAM([#include <stdatomic.h>],[
78 atomic_uintmax_t test;
79 atomic_init(&test, 0);
80 atomic_fetch_add_explicit(&test, 2u, memory_order_relaxed);
81 ])], [AC_MSG_RESULT([built-in])], [
82 LDFLAGS="$LDFLAGS -latomic"
83 AC_LINK_IFELSE([AC_LANG_PROGRAM([#include <stdatomic.h>],[
84 atomic_uintmax_t test;
85 atomic_init(&test, 0);
86 atomic_fetch_add_explicit(&test, 2u, memory_order_relaxed);
88 AC_MSG_RESULT([using -latomic])
91 AC_MSG_ERROR([VLC requires atomics support])
95 AC_SUBST([ATOMIC_LIB])
97 dnl Extend the --help string at the current spot.
98 AC_DEFUN([EXTEND_HELP_STRING], [m4_divert_once([HELP_ENABLE], [$1])])
100 dnl Allow binary package maintainer to pass a custom string to avoid
102 AC_ARG_WITH([binary-version],
103 AS_HELP_STRING([--with-binary-version=STRING],
104 [To avoid plugins cache problem between binary version]),[],[])
105 AS_IF([test -n "${with_binary_version}"],[
106 AC_DEFINE_UNQUOTED([DISTRO_VERSION],["${with_binary_version}"],
107 [Binary specific version])
110 dnl Prevent clang from accepting unknown flags with a mere warning
111 AX_CHECK_COMPILE_FLAG([-Werror=invalid-command-line-argument], [
112 AX_APPEND_FLAG([-Werror=invalid-command-line-argument], [CFLAGS])
113 AX_APPEND_FLAG([-Werror=invalid-command-line-argument], [CXXFLAGS])
114 AX_APPEND_FLAG([-Werror=invalid-command-line-argument], [OBJCFLAGS])
116 AX_CHECK_COMPILE_FLAG([-Werror=unknown-warning-option], [
117 AX_APPEND_FLAG([-Werror=unknown-warning-option], [CFLAGS])
118 AX_APPEND_FLAG([-Werror=unknown-warning-option], [CXXFLAGS])
119 AX_APPEND_FLAG([-Werror=unknown-warning-option], [OBJCFLAGS])
122 dnl Some Qt version are generating tons of warning that cannot be
123 dnl avoided so mute them...
124 AX_CHECK_COMPILE_FLAG([-Wno-deprecated-copy], [
125 VLC_ADD_CXXFLAGS([qt],[-Wno-deprecated-copy])
130 dnl Check the operating system
137 dnl Set x86 asm flags and defines
139 case "${host_cpu}" in
141 X86ASMFLAGS="-f elf32"
142 X86ASMDEFS="-DARCH_X86_32=1 -DARCH_X86_64=0"
145 X86ASMFLAGS="-f elf64"
146 X86ASMDEFS="-DARCH_X86_32=0 -DARCH_X86_64=1"
156 CFLAGS="${CFLAGS} -pthread"
160 CFLAGS="${CFLAGS} -pthread"
164 CFLAGS="${CFLAGS} -pthread"
165 CPPFLAGS="${CPPFLAGS} -I/usr/local/include"
166 LDFLAGS="${LDFLAGS} -L/usr/local/lib"
171 CPPFLAGS="${CPPFLAGS} -I/usr/local/include -I/usr/X11R6/include"
172 LDFLAGS="${LDFLAGS} -L/usr/local/lib -L/usr/X11R6/lib/"
183 dnl Work around an Xcode 11 bug, fixed in Xcode 11.3.1
184 AX_APPEND_FLAG([-fno-stack-check], [CFLAGS])
185 AX_APPEND_FLAG([-fno-stack-check], [CXXFLAGS])
186 AX_APPEND_FLAG([-fno-stack-check], [OBJCFLAGS])
188 case "${host_cpu}" in
190 X86ASMFLAGS="-f macho32"
191 AX_APPEND_FLAG([-DPREFIX], [X86ASMDEFS])
194 X86ASMFLAGS="-f macho64"
195 AX_APPEND_FLAG([-DPREFIX], [X86ASMDEFS])
198 ac_cv_c_bigendian="no"
199 ac_cv_c_attribute_packed="no"
203 AX_APPEND_FLAG([-D_INTL_REDIRECT_MACROS], [CPPFLAGS])
204 AX_APPEND_FLAG([-stdlib=libc++], [CXXFLAGS])
205 AX_APPEND_FLAG([-Werror=partial-availability], [OBJCFLAGS])
206 AX_APPEND_FLAG([-Wl,-headerpad_max_install_names], [LDFLAGS])
208 VLC_ADD_LIBS([libvlc vlc],[-Wl,-undefined,dynamic_lookup,-framework,AppKit])
209 VLC_ADD_LIBS([libvlccore],[-Wl,-framework,CoreFoundation])
212 [#import <TargetConditionals.h>
220 [#import <TargetConditionals.h>
230 AS_IF([test "${HAVE_OSX}" = "1"],[VLC_ADD_LIBS([libvlccore],[-Wl,-framework,CoreServices])])
233 dnl Handle Mac OS X SDK flags
235 AC_ARG_WITH(macosx-sdk,
236 AS_HELP_STRING([--with-macosx-sdk=DIR],
237 [compile using the SDK in DIR]))
238 if test "${with_macosx_sdk}" != "" ; then
239 test ! -d "${with_macosx_sdk}" && AC_MSG_ERROR([SDK "${with_macosx_sdk}" not found])
240 CPP="${CPP} -isysroot ${with_macosx_sdk}"
241 CC="${CC} -isysroot ${with_macosx_sdk}"
242 CXX="${CXX} -isysroot ${with_macosx_sdk}"
243 OBJC="${OBJC} -isysroot ${with_macosx_sdk}"
244 LD="${LD} -syslibroot ${with_macosx_sdk}"
246 AC_ARG_WITH(macosx-version-min,
247 AS_HELP_STRING([--with-macosx-version-min=VERSION],
248 [compile for Mac OS X VERSION and above]))
249 if test "${with_macosx_version_min}" != "" ; then
250 CPP="${CPP} -mmacosx-version-min=${with_macosx_version_min}"
251 CC="${CC} -mmacosx-version-min=${with_macosx_version_min}"
252 CXX="${CXX} -mmacosx-version-min=${with_macosx_version_min}"
253 OBJC="${OBJC} -mmacosx-version-min=${with_macosx_version_min}"
254 LD="${LD} -mmacosx_version_min=${with_macosx_version_min}"
257 *mingw32* | *cygwin* | *wince* | *mingwce*)
258 dnl Force libtool to not link to (shared) libgcc_s when detecting C++ dependencies
259 dnl When doing this test with -static-libgcc it will link on (static) libgcc_eh
260 CXXFLAGS="${CXXFLAGS} -static-libgcc"
261 AC_CHECK_TOOL(WINDRES, windres, :)
262 AC_CHECK_TOOL(OBJCOPY, objcopy, :)
263 AC_PREPROC_IFELSE([AC_LANG_PROGRAM(
264 [[#ifdef _WIN32_WINNT
265 # error _WIN32_WINNT already defined
267 # include <windows.h>
268 # if defined(_WIN32_WINNT) && _WIN32_WINNT >= 0x0601
269 # error _WIN32_WINNT toolchain default high enough
274 AC_DEFINE([_WIN32_WINNT], [0x0601], [Define to '0x0601' for Windows 7 APIs.])
276 AC_MSG_CHECKING([if libsynchronization is needed])
277 AC_PREPROC_IFELSE([AC_LANG_PROGRAM(
278 [[#if _WIN32_WINNT >= 0x0602
279 # error building for Win8+ and above
286 VLC_ADD_LIBS([libvlccore], [-lsynchronization])
288 AC_DEFINE([_WIN32_IE], [0x0600], [Define to '0x0600' for IE 6.0 (and shell) APIs.])
289 AC_DEFINE([UNICODE], [1], [Define to 1 for Unicode (Wide Chars) APIs.])
290 AC_DEFINE([_ISOC99_SOURCE], [1], [Extensions to ISO C89 from ISO C99.])
291 AC_DEFINE([_ISOC11_SOURCE], [1], [Extensions to ISO C99 from ISO C11.])
292 AC_DEFINE([_POSIX_SOURCE], [1], [IEEE Std 1003.1.])
293 AC_DEFINE([_POSIX_C_SOURCE], [200809L], [IEEE Std 1003.1.])
294 AC_DEFINE([_XOPEN_SOURCE], [700], [POSIX and XPG 7th edition])
295 AC_DEFINE([_XOPEN_SOURCE_EXTENDED], [1], [XPG things and X/Open Unix extensions.])
296 AC_DEFINE([_BSD_SOURCE], [1], [ISO C, POSIX, and 4.3BSD things.])
297 AC_DEFINE([_SVID_SOURCE], [1], [ISO C, POSIX, and SVID things.])
304 dnl Check if we are using the mno-cygwin mode in which case we are
305 dnl actually dealing with a mingw32 compiler.
310 SYS=mingw32, AC_MSG_ERROR([VLC requires -mno-cygwin]))
314 if test "${SYS}" = "mingw32"; then
316 LDFLAGS="${LDFLAGS} -Wl,--nxcompat -Wl,--no-seh -Wl,--dynamicbase"
318 AC_CHECK_PROGS(U2D, [unix2dos todos], unix2dos)
319 ac_default_prefix="`pwd`/_win32"
320 DESTDIR="`pwd`/_win32/"
323 dnl NSIS/MSI Installer prefix and WIN64
325 case "${host_cpu}" in
329 PROGRAMFILES="PROGRAMFILES64"
330 LDFLAGS="${LDFLAGS} -Wl,--high-entropy-va -Wl,--image-base,0x140000000"
335 PROGRAMFILES="PROGRAMFILES64"
336 LDFLAGS="${LDFLAGS} -Wl,--high-entropy-va -Wl,--image-base,0x140000000"
337 X86ASMFLAGS="-f win64"
341 PROGRAMFILES="PROGRAMFILES"
345 PROGRAMFILES="PROGRAMFILES"
346 X86ASMFLAGS="-f win32"
347 X86ASMDEFS="${X86ASMDEFS} -DPREFIX"
350 AC_SUBST([WINDOWS_ARCH])
351 AC_SUBST([PROGRAMFILES])
366 LDFLAGS="${LDFLAGS} -Zomf -Zbin-files -Zargs-wild -Zhigh-mem"
367 AC_LIBOBJ([freeaddrinfo])
368 AC_LIBOBJ([gai_strerror])
369 AC_CHECK_FUNCS([if_nametoindex])
370 X86ASMFLAGS="-f aout"
371 X86ASMDEFS="-DARCH_X86_32=1 -DARCH_X86_64=0 -DPREFIX"
375 AC_DEFINE([_XOPEN_SOURCE], [700], [POSIX and XPG 7th edition])
386 AC_ARG_ENABLE([winstore_app],
387 AS_HELP_STRING([--enable-winstore-app],
388 [Build targetted for Windows Store apps (default disabled)]))
391 AS_IF([test "${SYS}" = "mingw32"],[
393 AS_IF([test "${enable_winstore_app}" = "yes"], [
396 AX_APPEND_FLAG([-DWINSTORECOMPAT],[CFLAGS])
397 AX_APPEND_FLAG([-DWINSTORECOMPAT],[CPPFLAGS])
398 AX_APPEND_FLAG([-DWINSTORECOMPAT],[CXXFLAGS])
399 LDFLAGS="${LDFLAGS} -lwindowsappcompat"
400 VLC_ADD_LIBS([libvlccore], [-lruntimeobject])
401 AC_LIBOBJ([gai_strerror])
405 AC_DEFINE_UNQUOTED(VLC_WINSTORE_APP, ${vlc_winstore_app}, [Define to 1 if you want to build for Windows Store apps])
409 AS_HELP_STRING([--enable-pdb],
410 [Build PDB files for windows targets (default off)]))
411 AS_IF([test "${SYS}" = "mingw32"],[
412 AS_IF([test "${enable_pdb}" = "yes"], [
414 AX_APPEND_FLAG([-g -gcodeview],[CFLAGS])
415 AX_APPEND_FLAG([-g -gcodeview],[CXXFLAGS])
416 LDFLAGS="${LDFLAGS} -Wl,-pdb="
420 AM_CONDITIONAL([HAVE_FREEBSD], [test "${SYS}" = "freebsd"])
421 AM_CONDITIONAL([HAVE_LINUX], [test "${SYS}" = "linux"])
422 AM_CONDITIONAL([HAVE_OS2], [test "${SYS}" = "os2"])
424 AM_CONDITIONAL([HAVE_DARWIN], [test "${SYS}" = "darwin"])
425 AM_CONDITIONAL([HAVE_IOS], [test "${HAVE_IOS}" = "1"])
426 AM_CONDITIONAL([HAVE_OSX], [test "${HAVE_OSX}" = "1"])
427 AM_CONDITIONAL([HAVE_TVOS], [test "${HAVE_TVOS}" = "1"])
429 AM_CONDITIONAL([HAVE_NACL], [test "${SYS}" = "nacl"])
430 AM_CONDITIONAL([HAVE_LIBANL], [test "${HAVE_LIBANL}" = "1"])
432 AM_CONDITIONAL([HAVE_WIN32], [test "${SYS}" = "mingw32"])
433 AM_CONDITIONAL([HAVE_WIN64], [test "${HAVE_WIN64}" = "1"]) dnl Only used for the packaging
434 AM_CONDITIONAL([HAVE_WINSTORE], [test "$vlc_winstore_app" = "1"])
435 AM_CONDITIONAL([HAVE_WIN32_DESKTOP], [test "${SYS}" = "mingw32" -a "$vlc_winstore_app" = "0"])
436 AM_CONDITIONAL([ENABLE_PDB], [test "$vlc_build_pdb" = "1"])
438 dnl Use nasm/yasm only on x86
439 AC_CHECK_PROGS(X86ASM, [nasm yasm])
440 AM_CONDITIONAL([HAVE_X86ASM], [test -n "${X86ASM}" && test -n "${X86ASMFLAGS}"])
441 AM_COND_IF([HAVE_X86ASM], [
442 AC_DEFINE([HAVE_X86ASM], [1], [Use external asm on x86.])
445 dnl Because DOLT is not able to handle --with-pic
446 dnl correctly, manually add -DPIC to the options for
447 dnl nasm / yasm here.
448 AS_IF([test x$with_pic = xyes], [X86ASMDEFS="${X86ASMDEFS} -DPIC"])
450 AC_SUBST([X86ASMFLAGS])
451 AC_SUBST([X86ASMDEFS])
454 dnl Sadly autoconf does not think about testing foo.exe when ask to test
455 dnl for program foo on win32
456 case "${build_os}" in
458 ac_executable_extensions=".exe"
467 AC_SUBST([BUILDEXEEXT])
469 dnl Android is linux, but a bit different
470 AS_IF([test "$SYS" = linux],[
471 AC_MSG_CHECKING([for an Android system])
472 AC_PREPROC_IFELSE([AC_LANG_PROGRAM(
473 [[#ifndef __ANDROID__
484 AM_CONDITIONAL([HAVE_ANDROID], [test "${HAVE_ANDROID}" = "1"])
487 dnl Check for the contrib directory
490 AS_HELP_STRING([--with-contrib[=DIR]],
491 [search for 3rd party libraries in DIR/include and DIR/lib])
493 AC_MSG_CHECKING([for 3rd party libraries path])
494 AS_IF([test -z "${with_contrib}" || test "${with_contrib}" = "yes"], [
495 CONTRIB_DIR="${srcdir}/contrib/${host}"
496 AS_IF([test ! -d "${CONTRIB_DIR}"], [
497 echo "${CONTRIB_DIR} not found" >&AS_MESSAGE_LOG_FD
498 CONTRIB_DIR="${srcdir}/contrib/`$CC -dumpmachine`"
499 AS_IF([test ! -d "${CONTRIB_DIR}"], [
500 echo "${CONTRIB_DIR} not found" >&AS_MESSAGE_LOG_FD
502 AC_MSG_RESULT([not found])
506 AS_IF([test "${with_contrib}" != "no"], [
507 CONTRIB_DIR="${with_contrib}"
510 AC_MSG_RESULT([disabled])
513 AS_IF([test -n "${CONTRIB_DIR}"], [
514 AS_IF([test -d "${CONTRIB_DIR}/lib"],[
515 CONTRIB_DIR=`cd "${CONTRIB_DIR}" && pwd`
517 echo "${CONTRIB_DIR}/lib not found" >&AS_MESSAGE_LOG_FD
519 AC_MSG_RESULT([not usable])
523 AS_IF([test -n "${CONTRIB_DIR}"], [
524 AC_MSG_RESULT([${CONTRIB_DIR}])
525 CPPFLAGS="${CPPFLAGS} -I${CONTRIB_DIR}/include"
526 CFLAGS="${CFLAGS} -I${CONTRIB_DIR}/include"
527 CXXFLAGS="${CXXFLAGS} -I${CONTRIB_DIR}/include"
528 OBJCFLAGS="${OBJCFLAGS} -I${CONTRIB_DIR}/include -F${CONTRIB_DIR} -F${CONTRIB_DIR}/Frameworks"
529 PKG_CONFIG_PATH="${CONTRIB_DIR}/lib/pkgconfig:${CONTRIB_DIR}/share/pkgconfig:${PKG_CONFIG_PATH}"
530 case "${build_os}" in
532 export PKG_CONFIG_PATH=`cygpath -mp ${PKG_CONFIG_PATH}`
535 export PKG_CONFIG_PATH="${PKG_CONFIG_PATH}"
538 LDFLAGS="${LDFLAGS} -L${CONTRIB_DIR}/lib"
540 AS_IF([test -z "$LUAC"], [
541 dnl Old contribs mixed cross-tools and cross-compiled executables
542 AS_IF([test -x "${CONTRIB_DIR}/bin/luac${BUILDEXEEXT}"], [
543 LUAC="${CONTRIB_DIR}/bin/luac${BUILDEXEEXT}"
546 dnl Newer contribs follow usual name space rules
547 AS_IF([test -x "${CONTRIB_DIR}/../bin/${host_alias}-luac${BUILDEXEEXT}"], [
548 LUAC="${CONTRIB_DIR}/../bin/${host_alias}-luac${BUILDEXEEXT}"
552 AS_IF([test "${SYS}" = "darwin"], [
553 export LD_LIBRARY_PATH="${CONTRIB_DIR}/lib:$LD_LIBRARY_PATH"
554 export DYLD_LIBRARY_PATH="${CONTRIB_DIR}/lib:$DYLD_LIBRARY_PATH"
557 AS_IF([test -n "${with_contrib}" && test "${with_contrib}" != "no"], [
558 AC_MSG_ERROR([Third party libraries not found!])
561 AC_SUBST([CONTRIB_DIR])
563 dnl Add extras/tools to the PATH
564 TOOLS_DIR="${srcdir}/extras/tools/build/bin"
565 AS_IF([test -d "${TOOLS_DIR}"], [
566 TOOLS_DIR=`cd "${TOOLS_DIR}" && pwd`
567 export PATH="${TOOLS_DIR}":$PATH
572 dnl It's very bad, but our former custom system was worst
576 dnl override platform specific check for dependent libraries
577 dnl otherwise libtool linking of shared libraries will
578 dnl fail on anything other than pass_all.
579 AC_CACHE_VAL(lt_cv_deplibs_check_method,
580 [lt_cv_deplibs_check_method=pass_all])
582 LT_INIT([dlopen win32-dll shared disable-static])
584 LT_LANG([Windows Resource])
588 lt_cv_deplibs_check_method=pass_all
590 AS_IF([test "${enable_shared}" = "no" -a "${enable_vlc}" != "no"], [
591 AC_MSG_ERROR([VLC is based on plugins. Shared libraries cannot be disabled.])
597 AM_GNU_GETTEXT_VERSION([0.19.8])
598 AM_GNU_GETTEXT([external], [need-formatstring-macros])
607 AS_IF([test "${SYS}" = "mingw32"], [
609 AC_PREPROC_IFELSE([AC_LANG_SOURCE([
610 #if !defined(__MINGW32__)
611 # error Not compiling with mingw
615 dnl Check for broken versions of mingw-runtime compatability library
616 AC_MSG_CHECKING(for broken mingw-runtime)
617 AC_PREPROC_IFELSE([AC_LANG_SOURCE([
619 #if defined(__MINGW64_VERSION_MAJOR)
620 # if __MINGW64_VERSION_MAJOR < 5
621 # error Update your mingw-w64! This one is too old.
624 # error You cannot compile with Mingw. Use Mingw-w64!
629 AC_MSG_RESULT([present])
630 AC_MSG_ERROR([LibVLC requires Mingw-w64 version 5.0 or higher!])
633 dnl force use of mingw provided c99 *printf over msvcrt
634 CPPFLAGS="${CPPFLAGS} -D__USE_MINGW_ANSI_STDIO=1"
636 dnl Check for the need to include the mingwex lib for mingw32
638 AC_CHECK_LIB([mingwex], [opendir],
639 AC_CHECK_LIB([mingw32], [opendir],,
640 [VLC_ADD_LIBS([libvlccore],[-lmingwex])])
644 AC_MSG_RESULT([Not compiling with mingw])
647 dnl Check for fnative-struct or mms-bitfields support for mingw32
648 AX_CHECK_COMPILE_FLAG([-mms-bitfields], [
649 AX_APPEND_FLAG([-mms-bitfields], [CFLAGS])
650 AX_APPEND_FLAG([-mms-bitfields], [CXXFLAGS])
651 # Check for the warning flag without "-Wno-", GCC accepts
652 # -Wno-<anything> for unsupported warnings, which can trigger
653 # other warnings instead.
654 AX_CHECK_COMPILE_FLAG([-Wincompatible-ms-struct], [
655 AX_APPEND_FLAG([-Wno-incompatible-ms-struct], [CFLAGS])
656 AX_APPEND_FLAG([-Wno-incompatible-ms-struct], [CXXFLAGS])
659 AX_CHECK_COMPILE_FLAG([-fnative-struct], [
660 AX_APPEND_FLAG([-fnative-struct], [CFLAGS])
661 AX_APPEND_FLAG([-fnative-struct], [CXXFLAGS])
668 dnl Buggy glibc prevention. Purposedly not cached.
669 dnl See sourceware.org bugs 5058 and 5443.
670 dnl Ubuntu alone has 20 bug numbers for this...
672 AC_MSG_CHECKING(for buggy GNU/libc versions)
673 AC_PREPROC_IFELSE([AC_LANG_SOURCE([
675 #if defined (__GLIBC__) && (__GLIBC__ == 2) \
676 && (__GLIBC_MINOR__ >= 5) && (__GLIBC_MINOR__ <= 7)
677 # error GNU/libc with dcgettext killer bug!
680 AC_MSG_RESULT([not present])
682 AC_MSG_RESULT([found])
683 AS_IF([test "x${enable_nls}" != "xno"], [
684 AC_MSG_ERROR([Buggy GNU/libc (version 2.5 - 2.7) present. VLC would crash; there is no viable
685 work-around for this. Check with your distribution vendor on how to update the
686 glibc run-time. Alternatively, build with --disable-nls.])
690 dnl Plugin compilation stuff
694 dnl Check for system libs needed
697 dnl Check for usual libc functions
698 AC_CHECK_FUNCS([accept4 fcntl flock fstatat fstatvfs fork getmntent_r getenv getpwuid_r isatty memalign mkostemp mmap open_memstream newlocale pipe2 pread posix_fadvise posix_madvise setlocale stricmp strnicmp strptime uselocale wordexp])
699 AC_REPLACE_FUNCS([aligned_alloc atof atoll dirfd fdopendir flockfile fsync getdelim getpid lfind lldiv memrchr nrand48 poll posix_memalign recvmsg rewind sendmsg setenv strcasecmp strcasestr strdup strlcpy strndup strnlen strnstr strsep strtof strtok_r strtoll swab tdestroy tfind timegm timespec_get strverscmp pathconf])
700 AC_REPLACE_FUNCS([gettimeofday])
701 AC_CHECK_FUNC(fdatasync,,
702 [AC_DEFINE(fdatasync, fsync, [Alias fdatasync() to fsync() if missing.])
705 VLC_REPLACE_DECL([realpath], [#include <stdlib.h>])
707 dnl mingw64 implements those as static inline, not functions with C linkage
708 VLC_REPLACE_DECL([asprintf], [#include <stdio.h>])
709 VLC_REPLACE_DECL([vasprintf], [#include <stdio.h>])
710 VLC_REPLACE_DECL([gmtime_r], [#include <time.h>])
711 VLC_REPLACE_DECL([localtime_r], [#include <time.h>])
713 dnl C11 static_assert()
714 AC_MSG_CHECKING([for static_assert in assert.h])
715 AC_LINK_IFELSE([AC_LANG_PROGRAM([#include <assert.h>], [
716 static_assert(1, "The impossible happened.");
719 AC_DEFINE([HAVE_STATIC_ASSERT], [1], [Define to 1 if <assert.h> defines static_assert.])
724 # Windows CE does not have strcoll()
727 dnl Check for non-standard system calls
730 AC_CHECK_FUNCS([eventfd vmsplice sched_getaffinity recvmmsg memfd_create])
733 AC_CHECK_FUNCS([_lock_file])
737 AH_BOTTOM([#include <vlc_fixups.h>])
739 dnl Check for struct timespec
740 AC_CHECK_TYPES([struct timespec],,,
743 dnl Check for max_align_t
744 AC_CHECK_TYPES([max_align_t],,,
745 [#include <stddef.h>])
747 dnl Checks for socket stuff
750 AC_SEARCH_LIBS(connect, [socket], [
751 AS_IF([test "$ac_cv_search_connect" != "none required"], [
752 SOCKET_LIBS="$ac_cv_search_connect"
755 AS_IF([test "${SYS}" = "mingw32"], [
756 SOCKET_LIBS="-lws2_32 -liphlpapi"
760 AC_SEARCH_LIBS([inet_pton], [nsl], [
761 AS_IF([test "$ac_cv_search_inet_pton" != "none required"], [
762 SOCKET_LIBS="$ac_cv_search_inet_pton $SOCKET_LIBS"
764 ],, [${SOCKET_LIBS}])
766 LIBS="${LIBS} ${SOCKET_LIBS}"
768 AC_LANG_PROGRAM([#ifdef _WIN32
769 #include <ws2tcpip.h>
771 # if _WIN32_WINNT < 0x600
775 #include <sys/socket.h>
776 #include <arpa/inet.h>
778 char dst[[sizeof(struct in_addr)]];
779 inet_pton(AF_INET, "127.0.0.1", dst);
780 ])],[AC_DEFINE([HAVE_INET_PTON],[1],[Define to 1 if you have inet_pton function])],[AC_LIBOBJ([inet_pton])])
781 AC_CHECK_TYPES([struct if_nameindex],,,[#include <net/if.h>])
782 AC_CHECK_FUNCS([if_nameindex])
784 AC_SUBST([SOCKET_LIBS])
786 dnl Check for socklen_t
787 AH_TEMPLATE(socklen_t, [Define to `int' if <sys/socket.h> does not define.])
788 AC_CACHE_CHECK([for socklen_t in sys/socket.h], dnl ` (fix VIM syntax highlight
789 ac_cv_type_socklen_t,
790 [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([
791 [#include <sys/types.h>
793 # include <winsock2.h>
794 # include <ws2tcpip.h>
796 # include <sys/socket.h>
797 #endif]], [[socklen_t len; len = 0;]])],
798 ac_cv_type_socklen_t=yes,
799 ac_cv_type_socklen_t=no)])
800 AS_IF([test "$ac_cv_type_socklen_t" = no], [
803 #include <sys/types.h>
805 # include <winsock2.h>
806 # include <ws2tcpip.h>
808 # include <sys/socket.h>
811 _Generic(getpeername, int (*)(int, struct sockaddr *, int *): 0);
813 ], AC_DEFINE(socklen_t, int), AC_DEFINE(socklen_t, unsigned int))
816 dnl Check for struct sockaddr_storage
817 AH_TEMPLATE(sockaddr_storage, [Define to `sockaddr' if <sys/socket.h> does not define.]) dnl ` (fix VIM syntax highlight
818 AH_TEMPLATE(ss_family, [Define to `sa_family' if <sys/socket.h> does not define.]) dnl ` (fix VIM syntax highlight
819 AC_CACHE_CHECK([for struct sockaddr_storage], ac_cv_struct_sockaddr_storage,
821 [#include <sys/types.h>
822 #if defined( _WIN32 )
823 # include <winsock2.h>
825 # include <sys/socket.h>
826 #endif], [struct sockaddr_storage addr;],
827 ac_cv_struct_sockaddr_storage=yes,
828 ac_cv_struct_sockaddr_storage=no)])
829 AS_IF([test "${ac_cv_struct_sockaddr_storage}" = no], [
830 AC_DEFINE(sockaddr_storage, sockaddr)
831 AC_DEFINE(ss_family, sa_family)
834 dnl FreeBSD has a gnugetopt library for this:
836 AC_CHECK_FUNC(getopt_long,, [
837 AC_CHECK_LIB([gnugetopt],[getopt_long], [
838 GNUGETOPT_LIBS="-lgnugetopt"
841 AC_SUBST([GNUGETOPT_LIBS])
843 AC_CHECK_LIB([m], [cos], [
850 AC_CHECK_LIB([m], [lrintf], [
851 AC_DEFINE(HAVE_LRINTF, 1, [Define to 1 if you have the lrintf function])
852 VLC_ADD_LIBS([skins2],[-lm])
854 AC_CHECK_LIB([m], [nanf],
855 AC_DEFINE(HAVE_NANF, 1, [Define to 1 if you have the NANF function])
857 AC_CHECK_LIB([m], [sincos], [
858 AC_DEFINE(HAVE_SINCOS, 1, [Define to 1 if you have the sincos function.])
863 AC_MSG_CHECKING([broken qsort_r prototype])
864 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([#include <stdlib.h>
866 _Static_assert(_Generic((qsort_r),
867 void (*)(void *, size_t, size_t, void *,
868 int (*)(void *, const void *, const void *)) : 1, default: 0),
869 "Bad prototype not matched");
871 AC_MSG_RESULT([broken])
872 AC_DEFINE([HAVE_BROKEN_QSORT_R], 1, [Defined to 1 if the qsort_r() prototype contradicts the upcoming POSIX standard.])
877 AC_MSG_CHECKING([_Thread_local support])
878 AC_COMPILE_IFELSE([AC_LANG_SOURCE([_Thread_local int foo = 0;
881 AC_DEFINE(HAVE_THREAD_LOCAL, 1, [Defined to 1 if C11 _Thread_local storage qualifier is supported])
882 ],[ AC_MSG_RESULT([no])])
884 dnl __STDC_NO_THREADS__ can't be trusted on some platforms.
885 dnl check for its availability explicitely
886 AC_CHECK_HEADERS([threads.h])
888 AC_CHECK_LIB([anl],[getaddrinfo_a],[
889 AC_DEFINE(HAVE_LIBANL, 1, [Define to 1 if you have the anl library])
892 dnl Check for dynamic plugins
894 have_dynamic_objects="no"
896 AC_SEARCH_LIBS(dlsym, [dl svld], [
897 AS_IF([test "$ac_cv_search_dlsym" != "none required"], [
898 LIBDL="$ac_cv_search_dlsym"
900 have_dynamic_objects="yes"
905 AS_IF([test "${SYS}" = "mingw32"], [
907 have_dynamic_objects="yes" #assume we can use shared objects
910 AC_ARG_WITH([libfuzzer],
911 AS_HELP_STRING([--with-libfuzzer=DIR],
912 [use libFuzzer library from DIR and triggers sanitize coverage (default disabled)]),
915 AS_VAR_IF(with_libfuzzer, no, [], [
920 AM_CONDITIONAL([HAVE_LIBFUZZER], [test "${with_libfuzzer}" != "no"])
922 AS_IF([test "${enable_shared}" = "no"], [
923 have_dynamic_objects=no
925 AM_CONDITIONAL([HAVE_DYNAMIC_PLUGINS], [test "${have_dynamic_objects}" != "no"])
929 AS_IF([test "${SYS}" != "mingw32"], [
930 AC_SEARCH_LIBS([clock_nanosleep], [rt pthread], [
931 AS_IF([test "$ac_cv_search_clock_nanosleep" != "none required"], [
932 LIBRT="$ac_cv_search_clock_nanosleep"
935 AC_SEARCH_LIBS([nanosleep], [rt pthread posix4], [
936 AS_IF([test "$ac_cv_search_nanosleep" != "none required"], [
937 LIBRT="$ac_cv_search_nanosleep"
944 dnl Check for clock_* functions, needs to be done here,
945 dnl after the -lrt check
946 AC_REPLACE_FUNCS([clock_gettime clock_nanosleep clock_getres])
949 dnl Check for headers
953 AC_CHECK_HEADERS([arpa/inet.h poll.h pthread.h search.h sys/shm.h sys/socket.h sys/uio.h wordexp.h])
954 AC_CHECK_HEADERS([net/if.h], [], [],
956 #include <sys/types.h>
957 #include <sys/socket.h>
959 AC_CHECK_HEADER([syslog.h], [have_syslog="yes"], [have_syslog="no"])
960 AM_CONDITIONAL([HAVE_SYSLOG], [test "$have_syslog" = "yes"])
963 AC_CHECK_HEADERS([netinet/tcp.h netinet/udplite.h sys/param.h sys/mount.h])
966 AC_CHECK_HEADERS([features.h getopt.h linux/dccp.h linux/magic.h sys/eventfd.h])
969 AC_CHECK_HEADERS([xlocale.h])
971 dnl Check for struct pollfd
972 AC_CHECK_TYPES([struct pollfd],,,
973 [#include <sys/types.h>
976 #elif defined (_WIN32)
977 # include <winsock2.h>
981 dnl Check if C++ headers define locale_t
983 AC_CACHE_CHECK([if C++ headers define locale_t],
984 [ac_cv_cxx_locale_t],
985 [ac_cv_cxx_locale_t=no
986 AC_TRY_COMPILE([#include <locale>], [locale_t loc;],
987 [ac_cv_cxx_locale_t=yes])])
988 if test "${ac_cv_cxx_locale_t}" != "no"; then
989 AC_DEFINE(HAVE_CXX_LOCALE_T, 1, Define to 1 if C++ headers define locale_t)
993 dnl LP64 and LLP64 architectures had better define ssize_t by themselves...
994 AH_TEMPLATE(ssize_t, [Define to `int' if <stddef.h> does not define.]) dnl ` (fix VIM syntax highlight
995 AC_CHECK_TYPE(ssize_t,, [
996 AC_DEFINE(ssize_t, int)
999 dnl It seems that autoconf detects pkg-config only during the first
1000 dnl PKG_CHECK_MODULES from configure.ac - which makes sense. But in our case,
1001 dnl it is nested within a conditional block, so it was not working right.
1002 PKG_PROG_PKG_CONFIG()
1004 dnl On some OS we need static linking
1005 AS_IF([test -n "${PKG_CONFIG}" ],[
1006 AS_IF([test "${SYS}" = "mingw32" -o "${SYS}" = "darwin" -o "${SYS}" = "os2" ],[
1007 PKG_CONFIG="${PKG_CONFIG} --static"
1013 dnl Check for zlib.h and -lz if available
1015 AC_CHECK_HEADERS([zlib.h], [ have_zlib=yes ], [ have_zlib=no ])
1016 AM_CONDITIONAL([HAVE_ZLIB], [ test "${have_zlib}" = "yes" ])
1017 if test "${have_zlib}" = "yes"
1019 VLC_ADD_LIBS([sap],[-lz])
1024 dnl Domain name i18n support via GNU libidn
1026 PKG_CHECK_MODULES([IDN], [libidn], [
1028 AC_DEFINE([HAVE_IDN], 1, [Define to 1 if you have GNU libidn.])
1035 AC_ARG_ENABLE([dbus],
1036 AS_HELP_STRING([--enable-dbus],
1037 [compile D-Bus message bus support (default enabled)]))
1039 AS_IF([test "${enable_dbus}" != "no"], [
1040 PKG_CHECK_MODULES(DBUS, [dbus-1 >= 1.6.0], [
1043 AS_IF([test -n "${enable_dbus}"], [
1044 AC_MSG_ERROR([${DBUS_PKG_ERRORS}.])
1046 AC_MSG_WARN([${DBUS_PKG_ERRORS}.])
1050 AM_CONDITIONAL([HAVE_DBUS], [test "${have_dbus}" = "yes"])
1053 dnl Check for systemd
1054 PKG_CHECK_MODULES([SYSTEMD], [libsystemd], [
1057 AC_MSG_WARN([${SYSTEMD_PKG_ERRORS}.])
1059 AM_CONDITIONAL([HAVE_SYSTEMD], [test "${have_systemd}" = "yes"])
1062 EXTEND_HELP_STRING([Optimization options:])
1064 dnl Compiler warnings
1067 AX_APPEND_COMPILE_FLAGS([-Wall -Wextra -Wsign-compare -Wundef -Wpointer-arith -Wvolatile-register-var -Wformat -Wformat-security -Wduplicated-branches -Wduplicated-cond], [CFLAGS])
1068 AX_APPEND_COMPILE_FLAGS([-Wall -Wextra -Wsign-compare -Wundef -Wpointer-arith -Wvolatile-register-var -Wformat -Wformat-security -Wduplicated-branches -Wduplicated-cond], [CXXFLAGS])
1070 dnl -Werror-implicit-function-declaration is used for the if_nametoindex detection with winstore
1071 AX_APPEND_COMPILE_FLAGS([-Wbad-function-cast -Wwrite-strings -Wmissing-prototypes -Werror-implicit-function-declaration -Winit-self -Wlogical-op -Wshadow=local -Wmultistatement-macros], [CFLAGS])
1072 AX_APPEND_COMPILE_FLAGS([-pipe], [CFLAGS])
1074 dnl UWP forbidden checks
1075 AS_IF([test "${SYS}" = "mingw32"], [
1076 AC_MSG_CHECKING(for if_nametoindex availability)
1077 AC_COMPILE_IFELSE([AC_LANG_PROGRAM(
1078 [[#include <windows.h>
1079 #if defined(__MINGW64_VERSION_MAJOR) && __MINGW64_VERSION_MAJOR < 6
1080 # include <wincrypt.h>
1082 #include <iphlpapi.h>
1083 static void test (void) {
1088 AC_MSG_RESULT([present])
1089 AC_DEFINE([HAVE_IF_NAMETOINDEX], [1], [Define to 1 if you have if_nametoindex function])
1091 AC_MSG_RESULT([not present])
1098 AC_ARG_ENABLE([debug],
1099 AS_HELP_STRING([--disable-debug],
1100 [disable run-time assertions (default enabled)]),,
1101 [enable_debug="yes"])
1103 [Define to 1 if debug code should NOT be compiled])
1104 AS_IF([test "${enable_debug}" != "no"], [
1105 AC_CHECK_HEADERS([valgrind/valgrind.h])
1113 AC_ARG_ENABLE([gprof],
1114 AS_HELP_STRING([--enable-gprof],[profile with gprof (default disabled)]),,
1115 [enable_gprof="no"])
1116 AS_IF([test "${enable_gprof}" != "no"], [
1117 CFLAGS="${CFLAGS} -pg"
1118 CXXFLAGS="${CXXFLAGS} -pg"
1119 OBJCFLAGS="${OBJCFLAGS} -pg"
1120 LDFLAGS="${LDFLAGS} -pg"
1123 AC_ARG_ENABLE([cprof],
1124 AS_HELP_STRING([--enable-cprof],[profile with cprof (default disabled)]),,
1125 [enable_cprof="no"])
1126 AS_IF([test "${enable_gprof}" != "no"], [
1127 CFLAGS="${CFLAGS} -finstrument-functions"
1128 CXXFLAGS="${CXXFLAGS} -finstrument-functions"
1129 OBJCFLAGS="${OBJCFLAGS} -finstrument-functions"
1130 LDFLAGS="${LDFLAGS} -finstrument-functions"
1136 AC_ARG_ENABLE([coverage],
1137 AS_HELP_STRING([--enable-coverage],
1138 [build for test coverage (default disabled)]),,
1139 [enable_coverage="no"])
1140 AS_IF([test "${enable_coverage}" != "no"], [
1141 CFLAGS="-fprofile-arcs -ftest-coverage ${CFLAGS}"
1142 CXXFLAGS="-fprofile-arcs -ftest-coverage ${CXXFLAGS}"
1143 LDFLAGS="-lgcov ${LDFLAGS}"
1146 AS_IF([test "${SYS}" != "mingw32" -a "${SYS}" != "os2"], [
1148 CFLAGS="${CFLAGS} -fvisibility=hidden"
1149 CXXFLAGS="${CXXFLAGS} -fvisibility=hidden"
1150 OBJCFLAGS="${OBJCFLAGS} -fvisibility=hidden"
1151 AC_CACHE_CHECK([if $CC accepts -fvisibility=hidden],
1152 [ac_cv_c_visibility_hidden], [
1153 AC_COMPILE_IFELSE([AC_LANG_PROGRAM()], [
1154 ac_cv_c_visibility_hidden=yes
1156 ac_cv_c_visibility_hidden=no
1159 AS_IF([test "${ac_cv_c_visibility_hidden}" = "no"], [VLC_RESTORE_FLAGS])
1165 AC_ARG_WITH([sanitizer],
1166 AS_HELP_STRING([--with-sanitizer=(address/memory/undefined/thread)],
1167 [build with sanitizer flags (default disabled)]),
1169 [with_sanitizer=no])
1171 AS_VAR_IF(with_sanitizer, no, [], [
1172 AX_CHECK_COMPILE_FLAG([-fsanitize=${with_sanitizer}], [
1173 AX_APPEND_FLAG([-fsanitize=${with_sanitizer}])
1174 AX_APPEND_FLAG([-fsanitize=${with_sanitizer}], [CXXFLAGS])
1175 AX_APPEND_FLAG([-fsanitize=${with_sanitizer}], [LDFLAGS])
1177 AC_MSG_ERROR(["-fsanitize=${with_sanitizer} not supported!"])
1179 AX_APPEND_FLAG([-g])
1180 AX_APPEND_FLAG([-g], [CXXFLAGS])
1182 AS_IF([test -z "${with_sanitizer##*address*}" ], [
1183 AX_APPEND_COMPILE_FLAGS([-fsanitize-address-use-after-scope -fno-omit-frame-pointer -fsanitize=pointer-compare -fsanitize=pointer-subtract])
1184 AX_APPEND_COMPILE_FLAGS([-fsanitize-address-use-after-scope -fno-omit-frame-pointer -fsanitize=pointer-compare -fsanitize=pointer-subtract], [CXXFLAGS])
1186 AS_IF([test -z "${with_sanitizer##*memory*}" ], [
1187 AX_APPEND_COMPILE_FLAGS([-fPIE -pie])
1188 AX_APPEND_COMPILE_FLAGS([-fPIE -pie], [CXXFLAGS])
1190 AS_IF([test -z "${with_sanitizer##*thread*}" ], [
1191 AX_APPEND_COMPILE_FLAGS([-fPIE -pie])
1192 AX_APPEND_COMPILE_FLAGS([-fPIE -pie], [CXXFLAGS])
1197 dnl Enable/disable optimizations
1199 AC_ARG_ENABLE([optimizations],
1200 AS_HELP_STRING([--disable-optimizations],
1201 [disable compiler optimizations (default enabled)]),,
1202 [enable_optimizations="yes"])
1204 dnl Check for various optimization flags
1205 AS_IF([test "${enable_optimizations}" != "no"], [
1207 dnl -O3 only in production builds
1208 AS_IF([test "${enable_debug}" = "no"], [
1210 CFLAGS="${CFLAGS} -O3"
1211 CXXFLAGS="${CXXFLAGS} -O3"
1212 OBJCFLAGS="${OBJCFLAGS} -O3"
1213 AC_CACHE_CHECK([if $CC accepts -O3], [ac_cv_c_o3], [
1214 AC_COMPILE_IFELSE([AC_LANG_PROGRAM()], [
1220 AS_IF([test "${ac_cv_c_o3}" = "no"], [VLC_RESTORE_FLAGS])
1223 dnl Check for fast maths
1224 AX_APPEND_COMPILE_FLAGS([-fno-math-errno -funsafe-math-optimizations -fno-rounding-math -fno-signaling-nans -fcx-limited-range], [CFLAGS])
1225 AX_APPEND_COMPILE_FLAGS([-fno-math-errno -funsafe-math-optimizations -fno-rounding-math -fno-signaling-nans -fcx-limited-range], [CXXFLAGS])
1228 #if defined(_MSC_VER) && !defined(__clang__)
1229 # pragma fenv_access(off)
1230 # pragma fp_contract(on)
1231 #elif defined(__GNUC__)
1232 /* Not supported so far */
1234 # pragma STDC FENV_ACCESS OFF
1235 # pragma STDC FP_CONTRACT ON
1239 dnl Check for -funroll-loops
1241 CFLAGS="${CFLAGS} -funroll-loops"
1242 CXXFLAGS="${CXXFLAGS} -funroll-loops"
1243 OBJCFLAGS="${OBJCFLAGS} -funroll-loops"
1244 AC_CACHE_CHECK([if $CC accepts -funroll-loops], [ac_cv_c_unroll_loops], [
1245 AC_COMPILE_IFELSE([AC_LANG_PROGRAM()], [
1246 ac_cv_c_unroll_loops=yes
1248 ac_cv_c_unroll_loops=no
1251 AS_IF([test "${ac_cv_c_unroll_loops}" = "no"], [VLC_RESTORE_FLAGS])
1253 AS_IF([test "$enable_debug" = "no"], [
1254 dnl Check for -fomit-frame-pointer
1256 CFLAGS="${CFLAGS} -fomit-frame-pointer"
1257 CXXFLAGS="${CXXFLAGS} -fomit-frame-pointer"
1258 OBJCFLAGS="${OBJCFLAGS} -fomit-frame-pointer"
1259 AC_CACHE_CHECK([if $CC accepts -fomit-frame-pointer],
1260 [ac_cv_c_omit_frame_pointer], [
1261 AC_COMPILE_IFELSE([AC_LANG_PROGRAM()], [
1262 ac_cv_c_omit_frame_pointer=yes
1264 ac_cv_c_omit_frame_pointer=no
1267 AS_IF([test "${ac_cv_c_omit_frame_pointer}" = "no"], [VLC_RESTORE_FLAGS])
1272 AC_ARG_ENABLE([ssp],
1273 AS_HELP_STRING([--disable-ssp],
1274 [disable stack smashing protection (default enabled for optimized builds)]), [],
1277 AS_IF([test "${enable_ssp}" != "no" -a "${enable_optimizations}" != "no"], [
1279 AX_APPEND_COMPILE_FLAGS([-fstack-protector-strong])
1280 AX_APPEND_COMPILE_FLAGS([-fstack-protector-strong], [CXXFLAGS])
1281 dnl Win32 requires linking to ssp for stack-protection
1282 AS_IF([test "${SYS}" = "mingw32"], [
1283 LDFLAGS="${LDFLAGS} -lssp"
1284 AC_CACHE_CHECK([if linker supports stack protectors], [ac_cv_ld_ssp], [
1285 AC_TRY_LINK([#include <stdio.h>],[char buf[100]; fgets(buf, sizeof(buf), stdin);], [
1291 AS_IF([test "${ac_cv_ld_ssp}" = "no"], [VLC_RESTORE_FLAGS])
1295 AS_IF([test "${SYS}" = "mingw32"], [
1296 dnl library for BCrypt APIs
1297 AS_IF([test "${vlc_winstore_app}" = 1],
1298 VLC_ADD_LIBS([libvlccore], [-lbcrypt]))
1302 LDFLAGS="${LDFLAGS} -Wl,-Bsymbolic"
1303 AC_CACHE_CHECK([if linker supports -Bsymbolic], [ac_cv_ld_bsymbolic], [
1305 ac_cv_ld_bsymbolic="-Wl,-Bsymbolic"
1307 ac_cv_ld_bsymbolic=""
1311 SYMBOLIC_LDFLAGS="${ac_cv_ld_bsymbolic}"
1312 AC_SUBST([SYMBOLIC_LDFLAGS])
1315 LDFLAGS="${LDFLAGS} -Wl,-z,defs"
1316 AC_CACHE_CHECK([if linker supports -z,defs], [ac_cv_ld_z_defs], [
1318 ac_cv_ld_z_defs="yes"
1320 ac_cv_ld_z_defs="no"
1323 AS_IF([test "${ac_cv_ld_z_defs}" = "no"], [VLC_RESTORE_FLAGS])
1325 dnl Check for __attribute__((packed))
1326 AC_CACHE_CHECK([for __attribute__((packed))],
1327 [ac_cv_c_attribute_packed],
1328 [ac_cv_c_attribute_packed=no
1329 AC_TRY_COMPILE(, [struct __attribute__((__packed__)) foo { int a; } b; (void)b;],
1330 [ac_cv_c_attribute_packed=yes])])
1331 if test "${ac_cv_c_attribute_packed}" != "no"; then
1332 AC_DEFINE(HAVE_ATTRIBUTE_PACKED, 1, Support for __attribute__((packed)) for structs)
1338 case "${host_cpu}" in
1351 dnl Check for backtrace() support
1352 AC_CHECK_HEADERS([execinfo.h])
1353 AC_CHECK_FUNCS([backtrace])
1358 ALIASES="${ALIASES} cvlc rvlc"
1361 dnl Accelerated modules
1364 dnl Check for fully working MMX intrinsics
1365 dnl We need support for -mmmx, we need <mmintrin.h>, and we also need a
1366 dnl working compiler (http://gcc.gnu.org/bugzilla/show_bug.cgi?id=23963)
1367 AC_ARG_ENABLE([mmx],
1368 AS_HELP_STRING([--disable-mmx],
1369 [disable MMX optimizations (default auto)]),,[
1370 case "${host_cpu}" in
1381 AS_IF([test "${enable_mmx}" != "no"], [
1384 CFLAGS="${CFLAGS} -mmmx"
1385 AC_CACHE_CHECK([if $CC groks MMX intrinsics], [ac_cv_c_mmx_intrinsics], [
1386 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([
1387 [#include <mmintrin.h>
1389 uint64_t frobzor;]], [
1391 a = b = c = (__m64)frobzor;
1392 a = _mm_slli_pi16(a, 3);
1393 a = _mm_adds_pi16(a, b);
1394 c = _mm_srli_pi16(c, 8);
1395 c = _mm_slli_pi16(c, 3);
1396 b = _mm_adds_pi16(b, c);
1397 a = _mm_unpacklo_pi8(a, b);
1398 frobzor = (uint64_t)a;]])], [
1399 ac_cv_c_mmx_intrinsics=yes
1401 ac_cv_c_mmx_intrinsics=no
1405 AS_IF([test "${ac_cv_c_mmx_intrinsics}" != "no"], [
1406 AC_DEFINE(HAVE_MMX_INTRINSICS, 1, [Define to 1 if MMX intrinsics are available.])
1410 CFLAGS="${CFLAGS} -mmmx"
1411 AC_CACHE_CHECK([if $CC groks MMX inline assembly], [ac_cv_mmx_inline], [
1412 AC_COMPILE_IFELSE([AC_LANG_PROGRAM(,[[
1414 asm volatile("packuswb %%mm1,%%mm2"::"r"(p):"mm1", "mm2");
1417 ac_cv_mmx_inline=yes
1422 AS_IF([test "${ac_cv_mmx_inline}" != "no"], [
1423 AC_DEFINE(CAN_COMPILE_MMX, 1, [Define to 1 inline MMX assembly is available.])
1427 AC_CACHE_CHECK([if $CC groks MMX EXT inline assembly],
1428 [ac_cv_mmxext_inline], [
1429 AC_COMPILE_IFELSE([AC_LANG_PROGRAM(,[[
1431 asm volatile("maskmovq %%mm1,%%mm2"::"r"(p):"mm1", "mm2");
1434 ac_cv_mmxext_inline=yes
1436 ac_cv_mmxext_inline=no
1440 AS_IF([test "${ac_cv_mmxext_inline}" != "no"], [
1441 AC_DEFINE(CAN_COMPILE_MMXEXT, 1, [Define to 1 if MMX EXT inline assembly is available.])
1445 AM_CONDITIONAL([HAVE_MMX], [test "${have_mmx}" = "yes"])
1446 AM_CONDITIONAL([HAVE_MMXEXT], [test "${have_mmxext}" = "yes"])
1448 dnl Check for fully workin SSE2 intrinsics
1449 dnl We need support for -msse[2], we need <emmintrin.h>, and we also need a
1450 dnl working compiler (http://gcc.gnu.org/bugzilla/show_bug.cgi?id=23963)
1451 AC_ARG_ENABLE([sse],
1452 AS_HELP_STRING([--disable-sse],
1453 [disable SSE (1-4) optimizations (default auto)]),, [
1454 case "${host_cpu}" in
1464 AS_IF([test "${enable_sse}" != "no"], [
1465 ARCH="${ARCH} sse sse2"
1468 CFLAGS="${CFLAGS} -msse2"
1469 AC_CACHE_CHECK([if $CC groks SSE2 intrinsics], [ac_cv_c_sse2_intrinsics], [
1470 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([
1471 [#include <emmintrin.h>
1473 uint64_t frobzor;]], [
1475 a = b = c = _mm_set1_epi64((__m64)frobzor);
1476 a = _mm_slli_epi16(a, 3);
1477 a = _mm_adds_epi16(a, b);
1478 c = _mm_srli_epi16(c, 8);
1479 c = _mm_slli_epi16(c, 3);
1480 b = _mm_adds_epi16(b, c);
1481 a = _mm_unpacklo_epi8(a, b);
1482 frobzor = (uint64_t)_mm_movepi64_pi64(a);]])], [
1483 ac_cv_c_sse2_intrinsics=yes
1485 ac_cv_c_sse2_intrinsics=no
1489 AS_IF([test "${ac_cv_c_sse2_intrinsics}" != "no"], [
1490 AC_DEFINE(HAVE_SSE2_INTRINSICS, 1, [Define to 1 if SSE2 intrinsics are available.])
1494 CFLAGS="${CFLAGS} -msse"
1495 AC_CACHE_CHECK([if $CC groks SSE inline assembly], [ac_cv_sse_inline], [
1496 AC_COMPILE_IFELSE([AC_LANG_PROGRAM(,[[
1498 asm volatile("xorps %%xmm1,%%xmm2"::"r"(p):"xmm1", "xmm2");
1501 ac_cv_sse_inline=yes
1507 AS_IF([test "${ac_cv_sse_inline}" != "no" -a "${SYS}" != "solaris"], [
1508 AC_DEFINE(CAN_COMPILE_SSE, 1, [Define to 1 if SSE inline assembly is available.])
1511 AC_CACHE_CHECK([if $CC groks SSE2 inline assembly], [ac_cv_sse2_inline], [
1512 AC_COMPILE_IFELSE([AC_LANG_PROGRAM(,[[
1514 asm volatile("punpckhqdq %%xmm1,%%xmm2"::"r"(p):"xmm1", "xmm2");
1517 ac_cv_sse2_inline=yes
1519 ac_cv_sse2_inline=no
1522 AS_IF([test "${ac_cv_sse2_inline}" != "no" -a "${SYS}" != "solaris"], [
1523 AC_DEFINE(CAN_COMPILE_SSE2, 1, [Define to 1 if SSE2 inline assembly is available.])
1528 AC_CACHE_CHECK([if $CC groks SSE3 inline assembly], [ac_cv_sse3_inline], [
1529 AC_COMPILE_IFELSE([AC_LANG_PROGRAM(,[[
1531 asm volatile("movsldup %%xmm1,%%xmm0"::"r"(p):"xmm0", "xmm1");
1534 ac_cv_sse3_inline=yes
1536 ac_cv_sse3_inline=no
1540 AS_IF([test "${ac_cv_sse3_inline}" != "no"], [
1541 AC_DEFINE(CAN_COMPILE_SSE3, 1, [Define to 1 if SSE3 inline assembly is available.]) ])
1544 AC_CACHE_CHECK([if $CC groks SSSE3 inline assembly], [ac_cv_ssse3_inline], [
1545 AC_COMPILE_IFELSE([AC_LANG_PROGRAM(,[[
1547 asm volatile("pabsw %%xmm0,%%xmm0"::"r"(p):"xmm0");
1550 ac_cv_ssse3_inline=yes
1552 ac_cv_ssse3_inline=no
1556 AS_IF([test "${ac_cv_ssse3_inline}" != "no"], [
1557 AC_DEFINE(CAN_COMPILE_SSSE3, 1, [Define to 1 if SSSE3 inline assembly is available.]) ])
1560 AC_CACHE_CHECK([if $CC groks SSE4.1 inline assembly],
1561 [ac_cv_sse4_1_inline], [
1562 AC_COMPILE_IFELSE([AC_LANG_PROGRAM(,[[
1564 asm volatile("pmaxsb %%xmm1,%%xmm0"::"r"(p):"xmm0", "xmm1");
1567 ac_cv_sse4_1_inline=yes
1569 ac_cv_sse4_1_inline=no
1573 AS_IF([test "${ac_cv_sse4_1_inline}" != "no"], [
1574 AC_DEFINE(CAN_COMPILE_SSE4_1, 1, [Define to 1 if SSE4_1 inline assembly is available.]) ])
1577 AC_CACHE_CHECK([if $CC groks SSE4.2 inline assembly],
1578 [ac_cv_sse4_2_inline], [
1579 AC_COMPILE_IFELSE([AC_LANG_PROGRAM(,[[
1581 asm volatile("pcmpgtq %%xmm1,%%xmm0"::"r"(p):"xmm0", "xmm1");
1584 ac_cv_sse4_2_inline=yes
1586 ac_cv_sse4_2_inline=no
1590 AS_IF([test "${ac_cv_sse4_2_inline}" != "no"], [
1591 AC_DEFINE(CAN_COMPILE_SSE4_2, 1, [Define to 1 if SSE4_2 inline assembly is available.]) ])
1594 AC_CACHE_CHECK([if $CC groks SSE4A inline assembly], [ac_cv_sse4a_inline], [
1595 AC_COMPILE_IFELSE([AC_LANG_PROGRAM(,[[
1597 asm volatile("insertq %%xmm1,%%xmm0"::"r"(p):"xmm0", "xmm1");
1600 ac_cv_sse4a_inline=yes
1602 ac_cv_sse4a_inline=no
1606 AS_IF([test "${ac_cv_sse4a_inline}" != "no"], [
1607 AC_DEFINE([CAN_COMPILE_SSE4A], [1], [Define to 1 if SSE4A inline assembly is available.]) ])
1609 AM_CONDITIONAL([HAVE_SSE2], [test "$have_sse2" = "yes"])
1611 dnl Check for fully workin AVX2 intrinsics
1612 dnl We need support for -mavx[2], we need <immintrin.h>, and we also need a
1613 dnl working compiler (http://gcc.gnu.org/bugzilla/show_bug.cgi?id=23963)
1614 AC_ARG_ENABLE([avx],
1615 AS_HELP_STRING([--disable-avx],
1616 [disable AVX (1-2) optimizations (default auto)]),, [
1617 case "${host_cpu}" in
1627 AS_IF([test "${enable_avx}" != "no"], [
1628 ARCH="${ARCH} avx avx2"
1631 CFLAGS="${CFLAGS} -mavx2"
1632 AC_CACHE_CHECK([if $CC groks AVX2 intrinsics], [ac_cv_c_avx2_intrinsics], [
1633 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([
1634 [#include <immintrin.h>
1636 uint64_t frobzor;]], [
1638 a = b = c = _mm256_set1_epi64x((int64_t)frobzor);
1639 a = _mm256_slli_epi16(a, 3);
1640 a = _mm256_adds_epi16(a, b);
1641 c = _mm256_srli_epi16(c, 8);
1642 c = _mm256_slli_epi16(c, 3);
1643 b = _mm256_adds_epi16(b, c);
1644 a = _mm256_unpacklo_epi8(a, b);
1645 frobzor = (uint64_t)_mm256_extract_epi64(a, 0);]])], [
1646 ac_cv_c_avx2_intrinsics=yes
1648 ac_cv_c_avx2_intrinsics=no
1652 AS_IF([test "${ac_cv_c_avx2_intrinsics}" != "no"], [
1653 AC_DEFINE(HAVE_AVX2_INTRINSICS, 1, [Define to 1 if AVX2 intrinsics are available.])
1657 CFLAGS="${CFLAGS} -mavx"
1658 AC_CACHE_CHECK([if $CC groks AVX inline assembly], [ac_cv_avx_inline], [
1659 AC_COMPILE_IFELSE([AC_LANG_PROGRAM(,[[
1661 asm volatile("xorps256 %%ymm1,%%ymm2"::"r"(p):"ymm1", "ymm2");
1664 ac_cv_avx_inline=yes
1670 AS_IF([test "${ac_cv_avx_inline}" != "no" -a "${SYS}" != "solaris"], [
1671 AC_DEFINE(CAN_COMPILE_AVX, 1, [Define to 1 if AVX inline assembly is available.])
1674 AC_CACHE_CHECK([if $CC groks AVX2 inline assembly], [ac_cv_avx2_inline], [
1675 AC_COMPILE_IFELSE([AC_LANG_PROGRAM(,[[
1677 asm volatile("punpckhqdq256 %%ymm1,%%ymm2"::"r"(p):"ymm1", "ymm2");
1680 ac_cv_avx2_inline=yes
1682 ac_cv_avx2_inline=no
1686 AS_IF([test "${ac_cv_avx2_inline}" != "no" -a "${SYS}" != "solaris"], [
1687 AC_DEFINE(CAN_COMPILE_AVX2, 1, [Define to 1 if AVX2 inline assembly is available.])
1691 AM_CONDITIONAL([HAVE_AVX2], [test "$have_avx2" = "yes"])
1694 CFLAGS="${CFLAGS} -mmmx"
1696 AC_CACHE_CHECK([if $CC groks 3D Now! inline assembly], [ac_cv_3dnow_inline], [
1697 AC_COMPILE_IFELSE([AC_LANG_PROGRAM(,[[
1699 asm volatile("pfadd %%mm1,%%mm2"::"r"(p):"mm1", "mm2");
1702 ac_cv_3dnow_inline=yes
1704 ac_cv_3dnow_inline=no
1708 AS_IF([test "${ac_cv_3dnow_inline}" != "no"], [
1709 AC_DEFINE([CAN_COMPILE_3DNOW], 1,
1710 [Define to 1 if 3D Now! inline assembly is available.])
1713 AM_CONDITIONAL([HAVE_3DNOW], [test "$have_3dnow" = "yes"])
1716 AC_ARG_ENABLE([neon],
1717 AS_HELP_STRING([--disable-neon],
1718 [disable ARM NEON optimizations (default auto)]),, [
1719 case "${host_cpu}" in
1731 AS_IF([test "${enable_neon}" != "no"], [
1733 AC_CACHE_CHECK([if $CCAS groks ARM NEON assembly], [ac_cv_arm_neon], [
1734 AS_IF([test "${enable_neon}" != "64"], [
1735 CFLAGS="${CFLAGS} -mfpu=neon -mhard-float"
1738 asm volatile("vqmovun.s64 d0, q1":::"d0");
1746 CFLAGS="${CFLAGS} -march=armv8-a+simd"
1749 asm volatile("uhadd v0.8b, v0.8b, v1.8b":::"v0");
1760 AM_CONDITIONAL([HAVE_NEON], [test "${ac_cv_arm_neon}" = "32"])
1761 AM_CONDITIONAL([HAVE_ARM64], [test "${ac_cv_arm_neon}" = "64"])
1763 AC_ARG_ENABLE([sve],
1764 AS_HELP_STRING([--disable-sve],
1765 [disable ARM SVE optimizations (default auto)]),, [
1766 AS_IF([test "${host_cpu}" = "aarch64"], [enable_sve="yes"] ,[enable_sve="no"])
1768 AS_IF([test "${enable_sve}" != "no"], [
1770 CFLAGS="${CFLAGS} -march=armv8-a+sve"
1771 AC_CACHE_CHECK([if $CCAS groks ARM SVE assembly], [ac_cv_arm_sve], [
1774 asm volatile("ptrue p0.s" ::: "p0");
1784 AM_CONDITIONAL([HAVE_SVE], [test "${ac_cv_arm_sve}" = "yes"])
1786 AC_ARG_ENABLE([branch-protection],
1787 AS_HELP_STRING([--disable-branch-protection],
1788 [disable AArch64 branch protection (default auto)]),, [
1789 AS_IF([test "${host_cpu}" = "aarch64"],
1790 [enable_branch_protection="yes"], [enable_branch_protection="no"])
1792 AS_IF([test "${enable_branch_protection}" != "no"], [
1793 AX_CHECK_COMPILE_FLAG([-mbranch-protection=standard], [
1794 AX_APPEND_FLAG([-mbranch-protection=standard], [CFLAGS])
1795 AX_APPEND_FLAG([-mbranch-protection=standard], [CXXFLAGS])
1800 AC_ARG_ENABLE([altivec],
1801 AS_HELP_STRING([--disable-altivec],
1802 [disable AltiVec optimizations (default auto)]),, [
1803 AS_CASE("${host_cpu}", [powerpc*],
1804 [enable_altivec=yes], [enable_altivec=no])
1808 AS_IF([test "${enable_altivec}" = "yes"], [
1809 ARCH="${ARCH} altivec";
1811 AC_CACHE_CHECK([if $CC groks AltiVec inline assembly],
1812 [ac_cv_altivec_inline],
1813 [AC_TRY_COMPILE(,[asm volatile("vperm 0,1,2,3");],
1814 ac_cv_altivec_inline="yes",
1815 [CFLAGS="${CFLAGS} -Wa,-maltivec"
1816 AC_TRY_COMPILE(,[asm volatile("vperm 0,1,2,3");],
1817 [ac_cv_altivec_inline="-Wa,-maltivec"],
1818 ac_cv_altivec_inline=no)
1821 AS_IF([test "${ac_cv_altivec_inline}" != "no"], [
1822 AC_DEFINE(CAN_COMPILE_ALTIVEC, 1,
1823 [Define to 1 if AltiVec inline assembly is available.])
1824 AS_IF([test "${ac_cv_altivec_inline}" != "yes"], [
1825 ALTIVEC_CFLAGS="${ac_cv_altivec_inline}"
1826 VLC_ADD_CFLAGS([libvlccore],[${ac_cv_altivec_inline}])
1832 AC_CACHE_CHECK([if \$CC groks AltiVec C extensions],
1833 [ac_cv_c_altivec], [
1834 CFLAGS="${CFLAGS} -maltivec"
1835 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([
1836 [#include <altivec.h>]], [
1837 [vec_ld(0, (unsigned char *)0);]])], [
1838 ac_cv_c_altivec="-maltivec"
1840 ac_cv_c_altivec="no"
1844 AS_IF([test "${ac_cv_c_altivec}" != "no"], [
1845 CPPFLAGS="${CPPFLAGS} ${ac_cv_c_altivec}"
1846 AC_DEFINE(CAN_COMPILE_C_ALTIVEC, 1, [Define to 1 if C AltiVec extensions are available.])
1847 VLC_ADD_CFLAGS([libvlccore],[${ac_cv_c_altivec}])
1848 ALTIVEC_CFLAGS="$ALTIVEC_CFLAGS ${ac_cv_c_altivec}"
1849 VLC_ADD_CFLAGS([deinterlace],[${ac_cv_c_altivec}])
1852 AC_CHECK_HEADERS([altivec.h])
1855 LDFLAGS="${LDFLAGS} -Wl,-framework,vecLib"
1856 AC_CACHE_CHECK([if linker needs -framework vecLib],
1858 [AC_TRY_LINK([],,ac_cv_ld_altivec=yes,ac_cv_ld_altivec=no)])
1860 AS_IF([test "${ac_cv_ld_altivec}" != "no"], [
1861 VLC_ADD_LIBS([libvlccore],[-Wl,-framework,vecLib])
1864 AC_SUBST([ALTIVEC_CFLAGS])
1865 AM_CONDITIONAL([HAVE_ALTIVEC], [test "$have_altivec" = "yes"])
1870 AC_ARG_ENABLE([optimize-memory],
1871 AS_HELP_STRING([--enable-optimize-memory],
1872 [optimize memory usage over performance]))
1873 if test "${enable_optimize_memory}" = "yes"; then
1874 AC_DEFINE(OPTIMIZE_MEMORY, 1, Define if you want to optimize memory usage over performance)
1878 dnl Allow running as root (useful for people running on embedded platforms)
1880 AC_ARG_ENABLE([run-as-root],
1881 AS_HELP_STRING([--enable-run-as-root],
1882 [allow running VLC as root (default disabled)]))
1883 AS_IF([test "${enable_run_as_root}" = "yes"],[
1884 AC_DEFINE(ALLOW_RUN_AS_ROOT, 1,
1885 [Define to 1 to allow running VLC as root (uid 0).])
1891 AC_ARG_ENABLE([sout],
1892 AS_HELP_STRING([--disable-sout],
1893 [disable streaming output (default enabled)]))
1894 AS_IF([test "${enable_sout}" != "no"], [
1895 AC_DEFINE(ENABLE_SOUT, 1, [Define to 1 for stream output support.])
1897 AM_CONDITIONAL([ENABLE_SOUT], [test "${enable_sout}" != "no"])
1900 AC_ARG_ENABLE([lua],
1901 AS_HELP_STRING([--disable-lua],
1902 [disable LUA scripting support (default enabled)]))
1903 if test "${enable_lua}" != "no"
1905 PKG_CHECK_MODULES(LUA, lua5.2,
1908 AC_MSG_WARN([${LUA_PKG_ERRORS}, trying lua 5.1 instead])
1910 PKG_CHECK_MODULES(LUA, lua5.1,
1913 AC_MSG_WARN([${LUA_PKG_ERRORS}, trying lua >= 5.1 instead])
1914 PKG_CHECK_MODULES(LUA, lua >= 5.1,
1917 AC_MSG_WARN([${LUA_PKG_ERRORS}, trying manual detection instead])
1919 AC_CHECK_HEADERS([lua.h lauxlib.h lualib.h],
1922 AC_CHECK_LIB( lua5.2 , luaL_newstate,
1923 [LUA_LIBS="-llua5.2"],
1924 AC_CHECK_LIB( lua5.1 , luaL_newstate,
1925 [LUA_LIBS="-llua5.1"],
1926 AC_CHECK_LIB( lua51 , luaL_newstate,
1927 [LUA_LIBS="-llua51"],
1928 AC_CHECK_LIB( lua , luaL_newstate,
1936 if test "x${have_lua}" != "xyes" ; then
1937 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.])
1939 AC_ARG_VAR([LUAC], [LUA byte compiler])
1940 AS_IF([test -z "$LUAC"], [
1941 AC_CHECK_TOOL(LUAC, [luac], [false])
1943 AS_IF([test "${LUAC}" = "false"], [
1944 AC_MSG_ERROR([Could not find the LUA byte compiler.])
1946 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], [
1947 AC_MSG_ERROR([You need 32-bits luac when using lua from contrib.])
1950 AM_CONDITIONAL([BUILD_LUA], [test "${have_lua}" = "yes"])
1954 dnl VideoLAN manager
1956 AC_ARG_ENABLE([vlm],
1957 AS_HELP_STRING([--disable-vlm],
1958 [disable the stream manager (default enabled)]),,
1959 [enable_vlm="${enable_sout}"])
1960 AS_IF([test "${enable_vlm}" != "no"], [
1961 AS_IF([test "${enable_sout}" = "no"], [
1962 AC_MSG_ERROR([VLM requires the stream output. Do not use --disable-sout.])
1964 AC_DEFINE(ENABLE_VLM, 1, [Define if you want the VideoLAN manager support])
1966 AM_CONDITIONAL([ENABLE_VLM], [test "${enable_vlm}" != "no"])
1970 dnl Addons manager storage and repositories modules
1972 AC_ARG_ENABLE([addonmanagermodules],
1973 AS_HELP_STRING([--disable-addonmanagermodules],
1974 [disable the addons manager modules (default enabled)]))
1975 if test "${enable_addonmanagermodules}" != "no"
1977 AC_DEFINE(ENABLE_ADDONMANAGERMODULES, 1, [Define if you want the addons manager modules])
1979 AM_CONDITIONAL([ENABLE_ADDONMANAGERMODULES], [test "${enable_addonmanagermodules}" != "no"])
1986 EXTEND_HELP_STRING([Input plugins:])
1989 dnl libarchive access module
1991 PKG_ENABLE_MODULES_VLC([ARCHIVE], [archive], [libarchive >= 3.1.0], (libarchive support), [auto])
1996 AC_ARG_ENABLE([live555],
1997 AS_HELP_STRING([--enable-live555],
1998 [enable RTSP input through live555 (default enabled)]))
2000 AS_IF([test "${enable_live555}" != "no" -a -n "${CXX}"], [
2001 PKG_CHECK_MODULES(LIVE555, live555, [
2002 VLC_ADD_PLUGIN([live555])
2003 VLC_ADD_CXXFLAGS([live555], [$LIVE555_CFLAGS])
2004 VLC_ADD_LIBS([live555],[$LIVE555_LIBS])
2006 AC_MSG_WARN([${LIVE555_PKG_ERRORS}.])
2011 dnl detect include paths
2012 AS_IF([test -f "${CONTRIB_DIR}/include/UsageEnvironment/UsageEnvironment.hh"], [
2013 CPPFLAGS_live555="-I${CONTRIB_DIR}/include/liveMedia -I${CONTRIB_DIR}/include/groupsock -I${CONTRIB_DIR}/include/BasicUsageEnvironment -I${CONTRIB_DIR}/include/UsageEnvironment"
2015 AS_IF([test "${SYS}" != "os2"], [
2016 LIVE555_PREFIX=${LIVE555_PREFIX-"/usr"}
2017 CPPFLAGS_live555="-I${LIVE555_PREFIX}/include/liveMedia -I${LIVE555_PREFIX}/include/groupsock -I${LIVE555_PREFIX}/include/BasicUsageEnvironment -I${LIVE555_PREFIX}/include/UsageEnvironment"
2019 LIVE555_PREFIX=${LIVE555_PREFIX-"/usr/lib/live"}
2020 CPPFLAGS_live555="-I${LIVE555_PREFIX}/liveMedia/include -I${LIVE555_PREFIX}/groupsock/include -I${LIVE555_PREFIX}/BasicUsageEnvironment/include -I${LIVE555_PREFIX}/UsageEnvironment/include"
2021 LDFLAGS_live555="-L${LIVE555_PREFIX}/liveMedia -L${LIVE555_PREFIX}/groupsock -L${LIVE555_PREFIX}/BasicUsageEnvironment -L${LIVE555_PREFIX}/UsageEnvironment"
2026 AS_IF([test "${SYS}" = "solaris"], [
2027 CPPFLAGS_live555="${CPPFLAGS_live555} -DSOLARIS"
2029 CPPFLAGS="${CPPFLAGS} ${CPPFLAGS_live555}"
2030 LDFLAGS="${LDFLAGS} ${LDFLAGS_live555}"
2033 AC_CACHE_CHECK([for live555 version 1324598400 or later], [ac_cv_live555], [
2034 AC_PREPROC_IFELSE([AC_LANG_PROGRAM([
2035 [#include <liveMedia_version.hh>
2036 #if !defined (LIVEMEDIA_LIBRARY_VERSION_INT) || (LIVEMEDIA_LIBRARY_VERSION_INT < 1324598400)
2046 AS_IF([test "$ac_cv_live555" = "no"], [
2047 AC_MSG_WARN([live555 is missing or its installed version is too old:
2048 Version 2011.12.23 or later is required to proceed.
2049 You can get an updated one from http://www.live555.com/liveMedia .])
2050 AS_IF([test -n "${enable_live555}"], [
2051 AC_MSG_ERROR([Update live555 or pass --disable-live555 to disable RTSP input support.])
2054 other_libs="-lgroupsock -lBasicUsageEnvironment -lUsageEnvironment"
2055 other_libs_pic="-lgroupsock_pic -lBasicUsageEnvironment_pic -lUsageEnvironment_pic"
2056 AS_IF([test "${SYS}" = "mingw32"], [
2057 # add ws2_32 for closesocket, select, recv
2058 other_libs="$other_libs -lws2_32"
2061 dnl We need to check for pic because live555 don't provide shared libs
2062 dnl and we want to build a plugins so we need -fPIC on some arch.
2063 VLC_ADD_CXXFLAGS([live555], [${CPPFLAGS_live555}])
2064 VLC_ADD_LDFLAGS([live555], [${LDFLAGS_live555}])
2065 AC_CHECK_LIB([liveMedia_pic], [main], [
2066 VLC_ADD_PLUGIN([live555])
2067 VLC_ADD_LIBS([live555], [-lliveMedia_pic ${other_libs_pic}])
2069 AC_CHECK_LIB([liveMedia], [main], [
2070 VLC_ADD_PLUGIN([live555])
2071 VLC_ADD_LIBS([live555], [-lliveMedia ${other_libs}])
2072 ],[],[${other_libs}])
2073 ],[${other_libs_pic}])
2081 dnl IIDC and DV FireWire input modules
2083 PKG_ENABLE_MODULES_VLC([DC1394], [], [libdc1394-2 >= 2.1.0], [IIDC FireWire input module], [auto])
2084 PKG_ENABLE_MODULES_VLC([DV1394], [], [libraw1394 >= 2.0.1 libavc1394 >= 0.5.3], [DV FireWire input module], [auto])
2087 dnl - linsys modules: access module check for libzvbi
2089 AC_ARG_ENABLE([linsys],
2090 AS_HELP_STRING([--enable-linsys],
2091 [Linux Linear Systems Ltd. SDI and HD-SDI input cards (default enabled)]))
2092 AS_IF([test "$SYS" = "linux" -a "${enable_linsys}" != "no"], [
2093 VLC_ADD_PLUGIN([linsys_hdsdi])
2094 PKG_CHECK_MODULES(LINSYS_SDI, [zvbi-0.2 >= 0.2.28], [
2095 VLC_ADD_PLUGIN([linsys_sdi])
2097 AC_MSG_WARN([${LINSYS_SDI_PKG_ERRORS}.])
2102 dnl dvdread module: check for libdvdread
2104 PKG_ENABLE_MODULES_VLC([DVDREAD], [], [dvdread > 6.0.0], [dvdread input module], [auto])
2107 dnl libdvdnav plugin
2109 PKG_ENABLE_MODULES_VLC([DVDNAV], [], [dvdnav >= 6.0.0], [DVD with navigation input module (dvdnav)], [auto])
2112 dnl Blu-ray Disc Support with libbluray
2114 PKG_ENABLE_MODULES_VLC([BLURAY], [libbluray], [libbluray >= 0.6.2], (libbluray for Blu-ray disc support ) )
2117 dnl OpenCV wrapper and example filters
2119 PKG_ENABLE_MODULES_VLC([OPENCV], [opencv_example opencv_wrapper], [opencv > 2.0], (OpenCV (computer vision) filter), [auto])
2123 dnl libsmbclient plugin
2125 PKG_ENABLE_MODULES_VLC([SMBCLIENT], [smbc], [smbclient], (SMB/CIFS support), [auto])
2128 dnl liBDSM access module
2130 AM_CONDITIONAL([HAVE_DSM], [test "$AS_TR_SH(with_dsm)" = "yes"])
2131 PKG_WITH_MODULES([DSM], [libdsm >= 0.2.0], [
2132 VLC_ADD_PLUGIN([dsm])
2133 VLC_ADD_CFLAGS([dsm], [$DSM_CFLAGS])
2134 VLC_ADD_LIBS([dsm], [$DSM_LIBS])
2136 ],,[libdsm SMB/CIFS access/sd module], [auto])
2137 AM_CONDITIONAL([HAVE_DSM], [test "${have_dsm}" = "yes"])
2140 dnl sftp access support
2142 PKG_ENABLE_MODULES_VLC([SFTP], [sftp], [libssh2], (support SFTP file transfer via libssh2), [auto])
2145 dnl nfs access support
2147 PKG_ENABLE_MODULES_VLC([NFS], [nfs], [libnfs >= 1.10.0], (support nfs protocol via libnfs), [auto])
2150 dnl smb2 access support
2152 PKG_ENABLE_MODULES_VLC([SMB2], [smb2], [libsmb2 >= 3.0.0], (support smb2 protocol via libsmb2), [auto])
2157 AC_ARG_ENABLE([v4l2], AS_HELP_STRING([--disable-v4l2],
2158 [disable Video4Linux version 2 (default auto)]))
2160 AS_IF([test "$enable_v4l2" != "no"], [
2161 AC_CHECK_HEADERS([linux/videodev2.h], [
2165 AM_CONDITIONAL([HAVE_V4L2], [test "${have_v4l2}" != "no"])
2168 dnl NVDEC decoder/encoder
2170 AC_ARG_ENABLE([nvdec], AS_HELP_STRING([--disable-nvdec],
2171 [disable NVDEC decoder (default auto)]))
2173 AS_IF([test "$enable_nvdec" != "no"], [
2174 AC_CHECK_HEADERS([ffnvcodec/dynlink_loader.h], [
2178 AM_CONDITIONAL([HAVE_NVDEC], [test "${have_nvdec}" != "no"])
2181 dnl special access module for Blackmagic SDI cards
2183 AC_ARG_ENABLE([decklink],
2184 AS_HELP_STRING([--disable-decklink],
2185 [disable Blackmagic DeckLink SDI input (default auto)]))
2186 AC_ARG_WITH([decklink_sdk],
2187 AS_HELP_STRING([--with-decklink-sdk=DIR],
2188 [location of Blackmagic DeckLink SDI SDK]))
2190 if test "${enable_decklink}" != "no"
2192 if test "${with_decklink_sdk}" != "no" -a -n "${with_decklink_sdk}"
2194 VLC_ADD_CPPFLAGS([decklink decklinkoutput stream_out_sdi],[-I${with_decklink_sdk}/include])
2197 CPPFLAGS="${CPPFLAGS} ${CPPFLAGS_decklink}"
2199 AC_CHECK_HEADERS([DeckLinkAPIDispatch.cpp], [
2201 AS_IF([test "${SYS}" = "darwin"], [
2202 VLC_ADD_LIBS([decklink decklinkoutput],[-Wl,-framework,CoreFoundation])
2205 AS_IF([test "${enable_decklink}" = "yes"], [
2206 AC_MSG_ERROR([Blackmagic DeckLink SDI include files not found!])
2208 AC_MSG_WARN([Blackmagic DeckLink SDI include files not found, decklink disabled])
2214 AM_CONDITIONAL([HAVE_DECKLINK], [ test "${have_decklink}" != "no" ])
2218 dnl Built-in CD-DA and VCD module
2220 AC_ARG_ENABLE([vcd],
2221 AS_HELP_STRING([--disable-vcd],
2222 [disable built-in VCD and CD-DA support (default enabled)]))
2224 AC_ARG_ENABLE([libcddb],
2225 AS_HELP_STRING([--disable-libcddb],
2226 [disable CDDB for Audio CD (default enabled)]))
2228 if test "${enable_vcd}" != "no" -a "${enable_winstore_app}" != "yes"
2230 AC_MSG_CHECKING(for cdrom_msf0 in linux/cdrom.h)
2231 AC_EGREP_HEADER(cdrom_msf0,linux/cdrom.h,[
2233 VLC_ADD_PLUGIN([vcd cdda])
2238 AC_MSG_CHECKING(for scsireq in sys/scsiio.h)
2239 AC_EGREP_HEADER(scsireq,sys/scsiio.h,[
2241 VLC_ADD_PLUGIN([vcd cdda])
2242 AC_DEFINE(HAVE_SCSIREQ_IN_SYS_SCSIIO_H, 1, For NetBSD VCD support)
2247 AC_MSG_CHECKING(for ioc_toc_header in sys/cdio.h)
2248 AC_EGREP_HEADER(ioc_toc_header ,sys/cdio.h,[
2250 VLC_ADD_PLUGIN([vcd cdda])
2251 AC_DEFINE(HAVE_IOC_TOC_HEADER_IN_SYS_CDIO_H, 1, For FreeBSD VCD support)
2256 if test "${SYS}" = "bsdi" -o "${SYS}" = "mingw32" -o "${SYS}" = "os2" -o "${SYS}" = "darwin"
2258 VLC_ADD_PLUGIN([vcd cdda])
2261 if test "$enable_libcddb" != "no"; then
2262 PKG_CHECK_MODULES(LIBCDDB, [libcddb >= 0.9.5], [
2264 AC_DEFINE(HAVE_LIBCDDB, 1, [Define this if you have libcddb installed])
2265 VLC_ADD_LIBS([cdda],[$LIBCDDB_LIBS])
2266 VLC_ADD_CFLAGS([cdda],[$LIBCDDB_CFLAGS])
2268 [AC_MSG_WARN([${LIBCDDB_PKG_ERRORS}: CDDB access disabled.])
2276 AC_CACHE_CHECK([for Linux DVB version 5.1], [ac_cv_linux_dvb_5_1], [
2277 AC_PREPROC_IFELSE([AC_LANG_PROGRAM([
2278 [#include <linux/dvb/version.h>
2279 #if (DVB_API_VERSION < 5)
2280 # error Linux DVB API v3.2 and older are not supported.
2282 #if (DVB_API_VERSION == 5 && DVB_API_VERSION_MINOR < 1)
2283 # error Linux DVB API v5.0 is unsupported. Please update.
2286 ac_cv_linux_dvb_5_1=yes
2288 ac_cv_linux_dvb_5_1=no
2290 AM_CONDITIONAL([HAVE_LINUX_DVB], [test "$ac_cv_linux_dvb_5_1" = "yes"])
2293 dnl Screen capture module
2295 AC_ARG_ENABLE([screen],
2296 AS_HELP_STRING([--enable-screen],
2297 [disable screen capture (default enabled)]))
2298 if test "${enable_screen}" != "no"; then
2299 if test "${SYS}" = "darwin"; then
2300 AC_CHECK_HEADERS([ApplicationServices/ApplicationServices.h], [
2301 VLC_ADD_PLUGIN([screen])
2305 AM_CONDITIONAL([HAVE_MAC_SCREEN], [test "${SYS}" = "darwin" -a "x${enable_screen}" != "xno"])
2308 dnl VNC/RFB access module
2310 PKG_ENABLE_MODULES_VLC([VNC], [vnc], [libvncclient >= 0.9.9], (VNC/rfb client support), [auto])
2312 dnl RDP/Remote Desktop access module
2314 PKG_ENABLE_MODULES_VLC([FREERDP], [rdp], [freerdp >= 1.0.1], (RDP/Remote Desktop client support) )
2318 AC_SUBST([have_avfoundation], ["no"])
2319 AC_ARG_ENABLE([macosx-avfoundation],
2320 AS_HELP_STRING([--enable-macosx-avfoundation], [Mac OS X avcapture (video) module (default enabled on Mac OS X)]))
2321 if test "x${enable_macosx_avfoundation}" != "xno" &&
2322 (test "${SYS}" = "darwin" || test "${enable_macosx_avfoundation}" = "yes")
2324 SAVED_LIBS="${LIBS}"
2325 LIBS="-framework AVFoundation"
2326 AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [])],[have_avfoundation=yes],[have_avfoundation=no])
2327 LIBS="${SAVED_LIBS}"
2328 if test "${have_avfoundation}" != "no"
2330 VLC_ADD_PLUGIN([avcapture])
2333 AM_CONDITIONAL([HAVE_AVFOUNDATION], [test "${have_avfoundation}" != "no"])
2336 dnl DCP plugin (using asdcplib)
2338 PKG_WITH_MODULES([ASDCP], [asdcplib], [have_asdcp="yes"])
2339 AM_CONDITIONAL([HAVE_ASDCP], [test "${have_asdcp}" = "yes"])
2345 EXTEND_HELP_STRING([Mux/Demux plugins:])
2348 dnl libdvbpsi check for ts mux/demux
2351 PKG_WITH_MODULES([DVBPSI], [libdvbpsi >= 1.2.0], [have_dvbpsi="yes"])
2352 AM_CONDITIONAL([HAVE_DVBPSI], [test "${have_dvbpsi}" = "yes"])
2356 dnl GME demux plugin
2358 AC_ARG_ENABLE([gme],
2359 AS_HELP_STRING([--enable-gme],
2360 [use Game Music Emu (default auto)]))
2361 AS_IF([test "${enable_gme}" != "no"], [
2362 AC_CHECK_HEADER([gme/gme.h], [
2363 AC_CHECK_LIB([gme], [gme_identify_header], [
2364 VLC_ADD_PLUGIN([gme])
2366 AC_CHECK_LIB([gme], [gme_identify_extension], [
2367 VLC_ADD_LIBS([gme], [-lstdc++ $LIBM])
2368 VLC_ADD_PLUGIN([gme])
2369 ],, [-lstdc++ $LIBM])
2371 VLC_ADD_LIBS([gme], [-lgme])
2373 AS_IF([test "x${enable_gme}" != "x"], [
2374 AC_MSG_ERROR([GME cannot be found. Please install the development files.])
2383 AC_ARG_ENABLE([sid],
2384 AS_HELP_STRING([--enable-sid],[C64 sid demux support (default auto)]))
2385 AS_IF([test "${enable_sid}" != "no"], [
2386 PKG_CHECK_MODULES(SID, [libsidplay2], [
2388 oldCPPFLAGS="$CPPFLAGS"
2389 CPPFLAGS="$CPPFLAGS $SID_CFLAGS"
2390 AC_CHECK_HEADER([sidplay/builders/resid.h], [
2391 VLC_ADD_PLUGIN([sid])
2392 VLC_ADD_CFLAGS([sid], [$SID_CFLAGS])
2393 VLC_ADD_LIBS([sid], [$SID_LIBS] [-lresid-builder])
2395 AS_IF([test -n "${enable_sid}"],
2396 [AC_MSG_ERROR([${SID_PKG_ERRORS} (required for sid).])],
2397 [AC_MSG_WARN([${SID_PKG_ERRORS} (required for sid).])]
2400 CPPFLAGS="$oldCPPFLAGS"
2403 AS_IF([test "x${enable_sid}" = "xyes"],
2404 [AC_MSG_ERROR([${SID_PKG_ERRORS} (required for sid).])],
2405 [AC_MSG_WARN([${SID_PKG_ERRORS} (required for sid).])]
2412 dnl ogg demux plugin
2414 PKG_ENABLE_MODULES_VLC([OGG], [mux_ogg], [ogg >= 1.0], [Ogg demux support], [auto])
2415 PKG_CHECK_MODULES(LIBVORBIS, [vorbis >= 1.1], [
2416 AC_DEFINE(HAVE_LIBVORBIS, 1, [Define to 1 if you have the libvorbis])
2418 PKG_ENABLE_MODULES_VLC([OGG], [], [ogg >= 1.0], [Ogg demux support], [auto], [${LIBVORBIS_CFLAGS}], [${LIBVORBIS_LIBS}])
2419 if test "${enable_sout}" != "no"; then
2420 dnl Check for libshout
2421 PKG_ENABLE_MODULES_VLC([SHOUT], [access_output_shout], [shout >= 2.1], [libshout output plugin], [auto])
2425 dnl matroska demux plugin
2427 PKG_WITH_MODULES([MATROSKA], [libebml >= 1.3.6 libmatroska], [
2428 VLC_ADD_PLUGIN([mkv])
2429 VLC_ADD_CFLAGS([mkv], [$MATROSKA_CFLAGS])
2430 VLC_ADD_LIBS([mkv], [$MATROSKA_LIBS])
2432 ],,[MKV format support], [auto])
2433 AM_CONDITIONAL([HAVE_MATROSKA], [test "${have_matroska}" = "yes"])
2436 dnl modplug demux plugin
2438 AC_ARG_ENABLE([mod],
2439 AS_HELP_STRING([--disable-mod],
2440 [do not use libmodplug (default auto)]))
2441 if test "${enable_mod}" != "no" ; then
2442 PKG_CHECK_MODULES(LIBMODPLUG, [libmodplug >= 0.8.9.0], [
2443 VLC_ADD_PLUGIN([mod])
2444 VLC_ADD_CXXFLAGS([mod],[$LIBMODPLUG_CFLAGS])
2445 VLC_ADD_CFLAGS([mod],[$LIBMODPLUG_CFLAGS]) #modules/demux/mod.c needs CFLAGS_mod, not CXXFLAGS_mod
2446 VLC_ADD_LIBS([mod],[$LIBMODPLUG_LIBS])
2448 AS_IF([test -n "${enable_mod}"],
2449 [AC_MSG_ERROR([${LIBMODPLUG_PKG_ERRORS}.])],
2450 [AC_MSG_WARN([${LIBMODPLUG_PKG_ERRORS}.])])
2455 dnl mpc demux plugin
2457 AC_ARG_ENABLE([mpc],
2458 AS_HELP_STRING([--disable-mpc], [do not use libmpcdec (default auto)]))
2459 if test "${enable_mpc}" != "no"
2461 AC_CHECK_HEADERS([mpcdec/mpcdec.h], [
2462 VLC_ADD_PLUGIN([mpc])
2463 VLC_ADD_LIBS([mpc],[-lmpcdec])])
2470 EXTEND_HELP_STRING([Codec plugins:])
2473 dnl shine encoder plugin
2475 PKG_ENABLE_MODULES_VLC([SHINE], [], [shine >= 3.0.0], [MPEG Audio Layer 3 encoder], [auto], [], [], [])
2479 dnl openmax il codec plugin
2481 AC_ARG_ENABLE([omxil],
2482 AS_HELP_STRING([--enable-omxil], [openmax il codec module (default disabled)]))
2483 if test "${enable_omxil}" = "yes"
2485 VLC_ADD_PLUGIN([omxil])
2489 dnl raspberry pi openmax il configuration
2491 AC_ARG_ENABLE([rpi-omxil],
2492 AS_HELP_STRING([--enable-rpi-omxil], [openmax il configured for raspberry pi (default disabled)]))
2493 if test "${enable_rpi_omxil}" = "yes"
2495 VLC_ADD_PLUGIN([omxil])
2496 VLC_ADD_CFLAGS([omxil],[-DRPI_OMX])
2506 AC_ARG_WITH(mad, AS_HELP_STRING([--with-mad=PATH], [path to libmad]), [
2511 AS_IF([test "${with_mad}" != "no"], [
2512 MAD_CFLAGS="-I${with_mad}/include"
2513 MAD_LIBS="-L${with_mad}/lib"
2516 AC_ARG_ENABLE([mad],
2517 AS_HELP_STRING([--enable-mad], [libmad module (default enabled)]))
2518 AS_IF([test "${enable_mad}" != "no"], [
2520 CPPFLAGS="${CPPFLAGS} ${MAD_CFLAGS}"
2521 LDFLAGS="${LDFLAGS} ${MAD_LIBS}"
2522 AC_CHECK_HEADERS([mad.h], [
2523 AC_CHECK_LIB([mad], [mad_bit_init], [
2525 MAD_LIBS="${MAD_LIBS} -lmad"
2529 AS_IF([test -n "$enable_mad" -a "${have_mad}" = "no"], [
2530 AC_MSG_ERROR([Could not find libmad. Install it or pass --disable-mad to disable it.])
2533 AC_SUBST([MAD_CFLAGS])
2534 AC_SUBST([MAD_LIBS])
2535 AM_CONDITIONAL([HAVE_MAD], [test "${have_mad}" = "yes"])
2540 PKG_ENABLE_MODULES_VLC([MPG123], [mpg123], [libmpg123], [libmpg123 decoder support], [auto])
2545 AC_ARG_ENABLE([gst-decode],
2546 AS_HELP_STRING([--enable-gst-decode], [GStreamer based decoding support (currently supports only video decoding) (default auto)]))
2548 have_gst_decode="no"
2549 AS_IF([test "${enable_gst_decode}" != "no"], [
2550 PKG_CHECK_MODULES([GST_APP], [gstreamer-app-1.0], [
2551 PKG_CHECK_MODULES([GST_VIDEO], [gstreamer-video-1.0], [
2552 have_gst_decode="yes"
2554 AC_MSG_WARN([${GST_VIDEO_PKG_ERRORS}. GStreamer decoder module will not be built.])
2557 AC_MSG_WARN([${GST_APP_PKG_ERRORS}. GStreamer modules will not be built.])
2560 AM_CONDITIONAL([HAVE_GST_DECODE], [test "${have_gst_decode}" = "yes"])
2563 dnl avcodec decoder/encoder plugin
2565 AC_ARG_ENABLE([merge-ffmpeg],
2566 AS_HELP_STRING([--enable-merge-ffmpeg], [merge FFmpeg-based plugins (default disabled)]),, [
2567 enable_merge_ffmpeg="no"
2569 AM_CONDITIONAL([MERGE_FFMPEG], [test "$enable_merge_ffmpeg" != "no"])
2571 AC_MSG_CHECKING([for libavutil variant])
2572 PKG_CHECK_EXISTS([libavutil], [
2573 libavutil_version="$(${PKG_CONFIG} --modversion libavutil)"
2574 libavutil_micro="${libavutil_version##*.}"
2575 AS_IF([test ${libavutil_micro} -le 99], [
2583 AC_MSG_RESULT([${avfork}])
2585 AC_ARG_ENABLE([avcodec],
2586 AS_HELP_STRING([--enable-avcodec], [libavcodec codec (default enabled)]))
2587 AS_IF([test "${enable_avcodec}" != "no"], [
2588 dnl We need >=57.16.0 from libav or >=57.37.100 from ffmpeg
2590 libav) av_codec_ver="57.16.0" ;;
2591 dnl 05f66706d182eb0c36af54d72614bf4c33e957a9 includes libavutil 55.9.0
2592 ffmpeg) av_codec_ver="57.37.100" ;;
2593 dnl 7fc329e2dd6226dfecaa4a1d7adf353bf2773726 include libavutil 55.22.101
2594 *) AC_MSG_ERROR([Missing libav or FFmpeg. Pass --disable-avcodec to ignore this error.])
2596 PKG_CHECK_MODULES(AVCODEC,[libavcodec >= ${av_codec_ver} libavutil >= 55.9.0], [
2598 CPPFLAGS="${CPPFLAGS} ${AVCODEC_CFLAGS}"
2599 CFLAGS="${CFLAGS} ${AVCODEC_CFLAGS}"
2600 AC_CHECK_HEADERS([libavcodec/avcodec.h])
2601 AC_CHECK_HEADERS([libavutil/avutil.h])
2605 AC_MSG_ERROR([${AVCODEC_PKG_ERRORS}. Pass --disable-avcodec to ignore this error.])
2610 AM_CONDITIONAL([HAVE_AVCODEC], [test "${have_avcodec}" != "no"])
2613 dnl libva needs avcodec
2615 AC_ARG_ENABLE([libva],
2616 AS_HELP_STRING([--enable-libva], [VAAPI GPU decoding support (libVA) (default auto)]))
2618 AS_IF([test "${enable_libva}" = "yes" -a "${have_avcodec}" != "yes" ], [
2619 AC_MSG_ERROR([--enable-libva and --disable-avcodec options are mutually exclusive. Use --enable-avcodec.])
2626 AS_IF([test "${enable_libva}" != "no"], [
2627 PKG_CHECK_MODULES([LIBVA], [libva >= 1.0], [
2630 AS_IF([test -n "${enable_libva}"], [
2631 AC_MSG_ERROR([${LIBVA_PKG_ERRORS}.])
2633 AC_MSG_WARN([${LIBVA_PKG_ERRORS}.])
2636 PKG_CHECK_MODULES([LIBVA_DRM], [libva-drm], [
2637 have_vaapi_drm="yes"
2639 AC_MSG_WARN([${LIBVA_DRM_PKG_ERRORS}.])
2641 PKG_CHECK_MODULES(LIBVA_X11, [libva-x11], [
2642 have_vaapi_x11="yes"
2644 AC_MSG_WARN([${LIBVA_X11_PKG_ERRORS}.])
2646 PKG_CHECK_MODULES(LIBVA_WL, [libva-wayland], [
2649 AC_MSG_WARN([${LIBVA_WL_PKG_ERRORS}.])
2652 AM_CONDITIONAL([HAVE_VAAPI], [test "${have_vaapi}" = "yes"])
2653 AM_CONDITIONAL([HAVE_VAAPI_DRM], [test "${have_vaapi_drm}" = "yes"])
2654 AM_CONDITIONAL([HAVE_VAAPI_X11], [test "${have_vaapi_x11}" = "yes"])
2655 AM_CONDITIONAL([HAVE_VAAPI_WL], [test "${have_vaapi_wl}" = "yes"])
2657 have_avcodec_vaapi="no"
2658 AS_IF([test "${have_vaapi}" = "yes" -a "${have_avcodec}" = "yes"], [
2660 CPPFLAGS="${CPPFLAGS} ${AVCODEC_CFLAGS}"
2661 CFLAGS="${CFLAGS} ${AVCODEC_CFLAGS}"
2662 AC_CHECK_HEADERS([libavcodec/vaapi.h], [
2663 AC_MSG_NOTICE([VA API acceleration activated])
2664 have_avcodec_vaapi="yes"
2666 AS_IF([test -n "${enable_libva}"], [
2667 AC_MSG_ERROR([libva is present but libavcodec/vaapi.h is missing])
2669 AC_MSG_WARN([libva is present but libavcodec/vaapi.h is missing ])
2674 AM_CONDITIONAL([HAVE_AVCODEC_VAAPI], [test "${have_avcodec_vaapi}" = "yes"])
2677 dnl dxva2 needs avcodec
2679 AC_ARG_ENABLE([dxva2],
2680 AS_HELP_STRING([--enable-dxva2], [DxVA2 GPU decoding support (default auto)]))
2682 have_avcodec_dxva2="no"
2683 AS_IF([test "${enable_dxva2}" != "no"], [
2684 if test "${SYS}" = "mingw32"; then
2685 AS_IF([test "x${have_avcodec}" = "xyes"], [
2686 AC_CHECK_HEADERS([dxva2api.h],
2688 AC_CHECK_HEADERS([libavcodec/dxva2.h], [
2689 AC_MSG_NOTICE([DxVA2 acceleration activated])
2690 have_avcodec_dxva2="yes"
2692 AS_IF([test "${enable_dxva2}" = "yes"],
2693 [AC_MSG_ERROR([dxva2 is present but libavcodec/dxva2.h is missing])],
2694 [AC_MSG_WARN([dxva2 is present but libavcodec/dxva2.h is missing ])])
2695 ], [#undef _WIN32_WINNT
2696 /* DXVA2 is only available in Vista and above */
2697 #define _WIN32_WINNT 0x600])
2699 AS_IF([test "${enable_dxva2}" = "yes"],
2700 [AC_MSG_ERROR([Could not find required dxva2api.h])],
2701 [AC_MSG_WARN([dxva2api.h not found])])
2702 ],[#include <d3d9.h>])
2704 AS_IF([test "x${enable_dxva2}" != "x"], [
2705 AC_MSG_ERROR([--enable-dxva2 and --disable-avcodec options are mutually exclusive.])
2710 AM_CONDITIONAL([HAVE_AVCODEC_DXVA2], [test "${have_avcodec_dxva2}" = "yes"])
2713 dnl d3d11va needs avcodec
2715 AC_ARG_ENABLE([d3d11va],
2716 AS_HELP_STRING([--enable-d3d11va], [D3D11 GPU decoding support (default auto)]))
2718 have_avcodec_d3d11va="no"
2719 AS_IF([test "${enable_d3d11va}" != "no"], [
2720 if test "${SYS}" = "mingw32"; then
2721 AS_IF([test "x${have_avcodec}" = "xyes"], [
2722 AC_CHECK_TYPES([ID3D11VideoDecoder],
2724 AC_CHECK_HEADERS([dxva2api.h],
2726 AC_CHECK_HEADERS([libavcodec/d3d11va.h], [
2727 AC_MSG_NOTICE([D3D11 acceleration activated])
2728 AC_DEFINE([HAVE_AVCODEC_D3D11VA], [1], [Define if the d3d11va module is built])
2729 have_avcodec_d3d11va="yes"
2731 AS_IF([test "${enable_d3d11va}" = "yes"],
2732 [AC_MSG_ERROR([d3d11va is present but libavcodec/d3d11va.h is missing])],
2733 [AC_MSG_WARN([d3d11va is present but libavcodec/d3d11va.h is missing ])])
2734 ], [#undef _WIN32_WINNT
2735 /* D3D11 is only available in Vista and above */
2736 #define _WIN32_WINNT 0x600])
2738 AS_IF([test "${enable_d3d11va}" = "yes"],
2739 [AC_MSG_ERROR([Could not find required dxva2api.h])],
2740 [AC_MSG_WARN([dxva2api.h not found])])
2741 ],[#include <d3d9.h>])
2743 AS_IF([test "${enable_d3d11va}" = "yes"],
2744 [AC_MSG_ERROR([Could not find required ID3D11VideoDecoder in d3d11.h])],
2745 [AC_MSG_WARN([ID3D11VideoDecoder not found])])
2746 ], [#include <d3d11.h>])
2748 AS_IF([test "x${enable_d3d11va}" != "x"], [
2749 AC_MSG_ERROR([--enable-d3d11va and --disable-avcodec options are mutually exclusive.])
2754 AM_CONDITIONAL([HAVE_AVCODEC_D3D11VA], [test "${have_avcodec_d3d11va}" = "yes"])
2759 AC_CHECK_HEADERS([dxgidebug.h dxgi1_6.h])
2762 dnl IApplicationData2
2764 have_iapplication_data2="no"
2765 AC_CHECK_TYPES([IApplicationData2],[],[],[#include <windows.storage.h>])
2768 dnl DirectComposition
2771 AC_CHECK_HEADERS([dcomp.h], [
2774 #include <windows.h>
2777 AM_CONDITIONAL([HAVE_DCOMP], [test "${have_dcomp}" = "yes"])
2781 dnl avformat demuxer/muxer plugin
2784 AC_ARG_ENABLE([avformat],
2785 AS_HELP_STRING([--enable-avformat], [libavformat containers (default enabled)]),, [
2786 enable_avformat="${have_avcodec}"
2789 AS_IF([test "${enable_avformat}" != "no"], [
2790 PKG_CHECK_MODULES(AVFORMAT,[libavformat >= 53.21.0 libavcodec libavutil], [
2793 CPPFLAGS="${CPPFLAGS} ${AVFORMAT_CFLAGS}"
2794 CFLAGS="${CFLAGS} ${AVFORMAT_CFLAGS}"
2795 AC_CHECK_HEADERS([libavformat/avformat.h libavformat/avio.h])
2796 AC_CHECK_HEADERS([libavcodec/avcodec.h])
2797 AC_CHECK_HEADERS([libavutil/avutil.h])
2798 AS_IF([test "$enable_merge_ffmpeg" = "no"], [
2803 AC_MSG_ERROR([${AVFORMAT_PKG_ERRORS}. Pass --disable-avformat to ignore this error.])
2806 AM_CONDITIONAL([HAVE_AVFORMAT], [test "${enable_avformat}" != "no"])
2809 dnl swscale image scaling and conversion plugin
2812 AC_ARG_ENABLE([swscale],
2813 AS_HELP_STRING([--enable-swscale],[libswscale image scaling and conversion
2814 (default enabled)]))
2815 if test "${enable_swscale}" != "no"
2817 PKG_CHECK_MODULES(SWSCALE,[libswscale >= 0.5.0],
2820 CPPFLAGS="${CPPFLAGS} ${SWSCALE_CFLAGS}"
2821 CFLAGS="${CFLAGS} ${SWSCALE_CFLAGS}"
2822 AC_CHECK_HEADERS([libswscale/swscale.h])
2823 AC_CHECK_HEADERS([libavutil/avutil.h])
2824 VLC_ADD_PLUGIN([swscale])
2825 VLC_ADD_LIBS([swscale],[$SWSCALE_LIBS])
2826 VLC_ADD_CFLAGS([swscale],[$SWSCALE_CFLAGS])
2827 AS_IF([test -n "${ac_cv_ld_bsymbolic}"], [
2828 VLC_ADD_LIBS([swscale],[${ac_cv_ld_bsymbolic}])
2832 AC_MSG_ERROR([${SWSCALE_PKG_ERRORS}. Pass --disable-swscale to ignore this error. Proper software scaling and some video chroma conversion will be missing.])
2840 AC_ARG_ENABLE([postproc],
2841 AS_HELP_STRING([--enable-postproc], [libpostproc image post-processing (default auto)]))
2842 if test "${enable_postproc}" != "no"
2844 PKG_CHECK_MODULES(POSTPROC,[libpostproc libavutil],
2847 CPPFLAGS="${CPPFLAGS} ${POSTPROC_CFLAGS}"
2848 CFLAGS="${CFLAGS} ${POSTPROC_CFLAGS}"
2849 AC_CHECK_HEADERS([postproc/postprocess.h])
2850 VLC_ADD_PLUGIN([postproc])
2853 AC_MSG_WARN([${POSTPROC_PKG_ERRORS}.])
2858 dnl faad decoder plugin
2860 PKG_WITH_MODULES([FAAD],[faad2],
2861 VLC_ADD_PLUGIN(faad)
2862 VLC_ADD_CFLAGS(faad, [$FAAD_CFLAGS])
2863 VLC_ADD_LIBS(faad,[$FAAD_LIBS]),
2864 AS_IF([test "x${enable_faad}" != "xno"],[
2865 AC_CHECK_HEADERS([neaacdec.h], [
2866 AC_CHECK_LIB([faad], [NeAACDecOpen],[
2867 VLC_ADD_PLUGIN([faad])
2868 VLC_ADD_LIBS([faad],[-lfaad])
2872 AS_IF([test "x${found_faad}" != "xyes"],
2873 AS_IF([test "x${enable_faad}" == "xyes"],
2874 AC_MSG_ERROR([${FAAD_PKG_ERRORS}.]),
2875 AC_MSG_WARN([${FAAD_PKG_ERRORS}.]))
2878 [faad AAC audio decoder])
2881 dnl AOM encoder/decoder plugin
2883 PKG_ENABLE_MODULES_VLC([AOM], [], [aom], [libaom AV1 encoder and decoder (default auto)])
2886 dnl Rav1e encoder plugin
2888 PKG_ENABLE_MODULES_VLC([RAV1E], [], [rav1e], [rav1e encoder module codec (default auto)])
2891 dnl Dav1d decoder plugin
2893 PKG_ENABLE_MODULES_VLC([DAV1D], [], [dav1d >= 0.5.0], [AV1 decoder (default auto)])
2896 dnl libvpx decoder plugin
2898 AC_ARG_ENABLE([vpx],
2899 AS_HELP_STRING([--enable-vpx],[libvpx VP8/VP9 encoder and decoder (default auto)]))
2900 AS_IF([test "${enable_vpx}" != "no"],[
2901 PKG_CHECK_MODULES([VPX], [vpx >= 1.5.0], [
2902 VLC_ADD_PLUGIN([vpx])
2903 VLC_ADD_CPPFLAGS([vpx], [${VPX_CFLAGS}])
2904 VLC_ADD_LIBS([vpx], [${VPX_LIBS}])
2905 AC_CHECK_LIB([vpx],[vpx_codec_vp8_dx], [
2906 VLC_ADD_CPPFLAGS([vpx], [-DENABLE_VP8_DECODER])
2907 ], [], [${VPX_LIBS}])
2908 AC_CHECK_LIB([vpx],[vpx_codec_vp9_dx], [
2909 VLC_ADD_CPPFLAGS([vpx], [-DENABLE_VP9_DECODER])
2910 ], [], [${VPX_LIBS}])
2911 AC_CHECK_LIB([vpx],[vpx_codec_vp8_cx], [
2912 VLC_ADD_CPPFLAGS([vpx], [-DENABLE_VP8_ENCODER])
2913 ], [], [${VPX_LIBS}])
2914 AC_CHECK_LIB([vpx],[vpx_codec_vp9_cx], [
2915 VLC_ADD_CPPFLAGS([vpx], [-DENABLE_VP9_ENCODER])
2916 ], [], [${VPX_LIBS}])
2918 AS_IF([test "${enable_vpx}" = "yes"],[
2919 AC_MSG_ERROR([libvpx 1.5.0 or higher was not found])
2924 dnl twolame encoder plugin
2926 PKG_ENABLE_MODULES_VLC([TWOLAME], [], [twolame], [MPEG Audio Layer 2 encoder], [auto], [], [], [ -DLIBTWOLAME_STATIC])
2929 dnl fdk-aac encoder plugin
2931 PKG_ENABLE_MODULES_VLC([FDKAAC], [], [fdk-aac], [FDK-AAC encoder], [disabled])
2935 dnl A52/AC3 decoder plugin
2937 AC_ARG_ENABLE([a52],
2938 AS_HELP_STRING([--enable-a52], [A/52 support with liba52 (default enabled)]))
2939 if test "${enable_a52}" != "no"
2942 AS_HELP_STRING([--with-a52=PATH], [a52 headers and libraries]))
2943 if test -z "${with_a52}"
2948 LDFLAGS_test="-L${with_a52}/lib"
2949 CPPFLAGS_test="-I${with_a52}/include"
2952 CPPFLAGS="${CPPFLAGS} ${CPPFLAGS_test} ${CPPFLAGS_a52}"
2953 LDFLAGS="${LDFLAGS} ${LDFLAGS_test} ${LIBS_a52}"
2954 AC_CHECK_HEADERS([a52dec/a52.h], [
2955 AC_CHECK_LIB([a52], [a52_free], [
2956 VLC_ADD_PLUGIN([a52])
2957 VLC_ADD_LIBS([a52],[${LDFLAGS_test} -la52 $LIBM])
2958 VLC_ADD_CPPFLAGS([a52],[${CPPFLAGS_test}])
2960 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.])
2963 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.])
2969 dnl DTS Coherent Acoustics decoder plugin
2971 PKG_ENABLE_MODULES_VLC([DCA], [dca], [libdca >= 0.0.5], [DTS Coherent Acoustics support with libdca], [auto])
2976 PKG_ENABLE_MODULES_VLC([FLAC], [], [flac], [libflac decoder/encoder support], [auto])
2981 PKG_ENABLE_MODULES_VLC([LIBMPEG2], [], [libmpeg2 > 0.3.2], [libmpeg2 decoder support], [auto])
2986 PKG_ENABLE_MODULES_VLC([VORBIS], [], [ogg vorbis >= 1.1 vorbisenc >= 1.1], [Vorbis decoder and encoder], [auto])
2991 AC_ARG_ENABLE([tremor],
2992 AS_HELP_STRING([--enable-tremor], [Tremor decoder support (default disabled)]))
2993 if test "${enable_tremor}" = "yes"
2995 AC_CHECK_HEADERS([tremor/ivorbiscodec.h], [
2996 VLC_ADD_PLUGIN([tremor])
3003 PKG_ENABLE_MODULES_VLC([SPEEX], [], [ogg speex >= 1.0.5], [Speex support], [auto])
3005 AS_IF([test "${enable_speex}" != "no"], [
3006 PKG_CHECK_MODULES([SPEEXDSP], [speexdsp], [
3009 AC_MSG_WARN([${SPEEXDSP_PKG_ERRORS}.])
3012 AM_CONDITIONAL([HAVE_SPEEXDSP], [test "$have_speexdsp" = "yes"])
3015 dnl RNNoise plugin - Recurrent neural network for audio noise reduction
3017 PKG_ENABLE_MODULES_VLC([RNNOISE], [], [rnnoise], [Rnnoise denoiser], [auto])
3022 PKG_ENABLE_MODULES_VLC([OPUS], [], [ogg opus >= 1.0.3], [Opus support], [auto])
3025 dnl Ambisonic channel mixer and binauralizer plugin
3027 PKG_ENABLE_MODULES_VLC([SPATIALAUDIO], [], [spatialaudio], [Ambisonic channel mixer and binauralizer], [auto])
3030 dnl theora decoder plugin
3032 PKG_ENABLE_MODULES_VLC([THEORA], [], [ogg theoradec >= 1.0 theoraenc], [experimental theora codec], [auto])
3035 dnl OggSpots decoder plugin
3037 PKG_ENABLE_MODULES_VLC([OGGSPOTS], [], [ogg], [experimental OggSpots codec], [auto])
3040 dnl Daala decoder plugin
3042 PKG_ENABLE_MODULES_VLC([DAALA], [], [daaladec daalaenc], [experimental daala codec], [disabled])
3045 dnl schroedinger decoder plugin (for dirac format video)
3047 PKG_ENABLE_MODULES_VLC([SCHROEDINGER], [], [schroedinger-1.0 >= 1.0.10], [dirac decoder and encoder using schroedinger], [auto])
3050 dnl PNG decoder module
3052 AC_ARG_ENABLE([png],
3053 AS_HELP_STRING([--enable-png], [PNG support (default enabled)]))
3054 AS_IF([test "${enable_png}" != "no"], [
3055 AC_CHECK_HEADERS([png.h], [
3057 LDFLAGS="${LDFLAGS} -lz $LIBM"
3058 AC_CHECK_LIB([png], [png_set_alpha_mode], [
3059 VLC_ADD_PLUGIN([png])
3066 dnl JPEG decoder module
3068 AC_ARG_ENABLE([jpeg],
3069 AS_HELP_STRING([--enable-jpeg], [JPEG support (default enabled)]))
3070 AS_IF([test "${enable_jpeg}" != "no"], [
3071 AC_CHECK_HEADERS([jpeglib.h], [
3072 VLC_ADD_PLUGIN([jpeg])
3077 dnl BPG decoder module
3079 AC_ARG_ENABLE([bpg],
3080 AS_HELP_STRING([--enable-bpg], [BPG support (default disabled)]))
3081 AS_IF([test "${enable_bpg}" != "no"], [
3082 AC_CHECK_HEADERS([libbpg.h], [
3083 VLC_ADD_PLUGIN([bpg])
3088 dnl H262 encoder plugin (lib262)
3090 AC_ARG_ENABLE([x262],
3091 AS_HELP_STRING([--enable-x262], [H262 encoding support with static libx262 (default disabled)]))
3092 if test "${enable_x262}" != "no"; then
3093 PKG_CHECK_MODULES(X262, x262, [
3094 VLC_ADD_PLUGIN([x262])
3095 VLC_ADD_LDFLAGS([x262],[${X262_LIBS}])
3096 AS_IF([test -n "${ac_cv_ld_bsymbolic}"], [
3097 VLC_ADD_LIBS([x262],[${av_cv_ld_bsymbolic}])
3099 VLC_ADD_CFLAGS([x262],[${X262_CFLAGS}])
3100 if echo ${X262_LIBS} |grep -q 'pthreadGC2'; then
3101 VLC_ADD_CFLAGS([x262], [-DPTW32_STATIC_LIB])
3104 if test "${enable_x262}" = "yes"; then
3105 AC_MSG_ERROR([x262 module doesn't work without staticly compiled libx262.a])
3111 PKG_ENABLE_MODULES_VLC([X265],, [x265], [HEVC/H.265 encoder], [auto])
3114 dnl H264 encoder plugin (using libx264)
3116 AC_ARG_ENABLE([x264],
3117 AS_HELP_STRING([--enable-x264], [H264 encoding support with libx264 (default enabled)]))
3118 if test "${enable_x264}" != "no"; then
3119 PKG_CHECK_MODULES(X264,x264 >= 0.148, [
3120 VLC_ADD_PLUGIN([x264])
3121 VLC_ADD_LIBS([x264],[${X264_LIBS}])
3123 AS_IF([test -n "${ac_cv_ld_bsymbolic}"], [
3124 VLC_ADD_LDFLAGS([x264],[${ac_cv_ld_bsymbolic}])
3127 VLC_ADD_CFLAGS([x264],[${X264_CFLAGS}])
3128 if echo ${X264_LIBS} |grep -q 'pthreadGC2'; then
3129 VLC_ADD_CFLAGS([x264], [-DPTW32_STATIC_LIB])
3132 if test "${enable_x264}" = "yes"; then
3133 AC_MSG_ERROR([${X264_PKG_ERRORS}: you may get it from http://www.videolan.org/x264.html])
3139 dnl H264 encoder plugin (libx264 > 153)
3141 AC_ARG_ENABLE([x26410b],
3142 AS_HELP_STRING([--enable-x26410b], [H264 10-bit encoding support with libx264 (default enabled)]))
3143 if test "${enable_x26410b}" != "no"; then
3144 PKG_CHECK_MODULES(X26410b,x264 >= 0.153, [
3145 VLC_ADD_PLUGIN([x26410b])
3146 VLC_ADD_LIBS([x26410b],[${X264_LIBS}])
3148 AS_IF([test -n "${ac_cv_ld_bsymbolic}"], [
3149 VLC_ADD_LDFLAGS([x26410b],[${ac_cv_ld_bsymbolic}])
3152 VLC_ADD_CFLAGS([x26410b],[${X264_CFLAGS}])
3153 if echo ${X264_LIBS} |grep -q 'pthreadGC2'; then
3154 VLC_ADD_CFLAGS([x26410b], [-DPTW32_STATIC_LIB])
3157 if test "${enable_x26410b}" = "yes"; then
3158 AC_MSG_ERROR([${X264_PKG_ERRORS}: you may get it from http://www.videolan.org/x264.html])
3165 dnl Intel QuickSync (aka MediaSDK) H264/H262 encoder
3167 PKG_ENABLE_MODULES_VLC([MFX], [qsv], [libmfx], [Intel QuickSync MPEG4-Part10/MPEG2 (aka H.264/H.262) encoder], [auto])
3170 dnl libfluidsynth (MIDI synthetizer) plugin
3172 PKG_ENABLE_MODULES_VLC([FLUIDSYNTH], [], [fluidsynth >= 1.1.2], [MIDI synthetiser with libfluidsynth], [auto])
3173 PKG_ENABLE_MODULES_VLC([FLUIDLITE], [fluidsynth], [fluidlite], [MIDI synthetiser with libfluidsynth], [auto])
3174 AC_CHECK_HEADERS([fluidlite.h], [AC_SUBST([FLUIDSYNTH_LIBS], ${FLUIDLITE_LIBS})])
3177 dnl Teletext Modules
3178 dnl vbi decoder plugin (using libzbvi)
3182 AC_ARG_ENABLE([zvbi],
3183 AS_HELP_STRING([--enable-zvbi],[VBI (inc. Teletext) decoding support with
3184 libzvbi (default enabled)]))
3185 AC_ARG_ENABLE([telx],
3186 AS_HELP_STRING([--enable-telx],[Teletext decoding module (conflicting with
3187 zvbi) (default enabled if zvbi is absent)]))
3189 AS_IF( [test "${enable_zvbi}" != "no"],[
3190 PKG_CHECK_MODULES(ZVBI, [zvbi-0.2 >= 0.2.28],
3192 VLC_ADD_PLUGIN([zvbi])
3193 AC_DEFINE(ZVBI_COMPILED, 1, [Define if the zvbi module is built])
3195 AS_IF( [test "${enable_telx}" = "yes"],[
3196 AC_MSG_WARN([The zvbi and telx modules are incompatible. Using zvbi.])
3199 AC_MSG_WARN([${ZVBI_PKG_ERRORS}. Enabling the telx module instead.])
3202 AM_CONDITIONAL([HAVE_ZVBI], [test "x${have_zvbi}" = x"yes"])
3204 AS_IF( [test "${enable_telx}" != "no" ],[
3205 VLC_ADD_PLUGIN([telx])
3207 AC_DEFINE(TELX_COMPILED, 1, [Define if the telx module is built])
3209 AM_CONDITIONAL([HAVE_TELX], [test "x${have_telx}" = x"yes"])
3212 dnl ARIB subtitles rendering module
3214 AC_ARG_ENABLE([aribsub],
3215 AS_HELP_STRING([--enable-aribsub],[ARIB Subtitles support (default enabled)]))
3216 AS_IF( [test "${enable_aribsub}" != "no" ],[
3217 PKG_CHECK_MODULES(ARIBB24, [aribb24 >= 1.0.1], [
3219 VLC_ADD_PLUGIN([aribsub])
3220 VLC_ADD_LIBS([aribsub],[-laribb24])
3221 AC_DEFINE(HAVE_ARIBB24, 1, [Define if libaribb24 is available.])
3223 AC_MSG_WARN(Library [aribb24] needed for [aribsub] was not found)
3227 AM_CONDITIONAL([HAVE_ARIBB24], [test x"${have_aribb24}" = x"yes"])
3232 PKG_ENABLE_MODULES_VLC([ARIBB25], [aribcam], [aribb25 >= 0.2.6], [ARIB STD-B25], [auto])
3235 dnl kate decoder plugin
3237 PKG_ENABLE_MODULES_VLC([KATE], [], [kate >= 0.3.0], [kate codec], [auto])
3240 dnl tiger rendering for kate decoder plugin
3242 AC_ARG_ENABLE([tiger],
3243 AS_HELP_STRING([--enable-tiger], [Tiger rendering library for Kate streams (default auto)]))
3244 AS_IF([test "${enable_tiger}" != "no"], [
3245 PKG_CHECK_MODULES(TIGER,[tiger >= 0.3.1], [
3246 AC_DEFINE(HAVE_TIGER, 1, [Define if libtiger is available.])],[
3247 AS_IF([test -n "${enable_tiger}"], [
3248 AC_MSG_ERROR([${TIGER_PKG_ERRORS}.])
3254 dnl check if we can build the css selector engine
3256 AC_ARG_ENABLE([css],
3257 AS_HELP_STRING([--enable-css], [CSS selector engine (default auto)]))
3258 AS_IF([test "${enable_css}" != "no"], [
3260 AC_DEFINE(HAVE_CSS, 1, [Define if CSS engine is built])
3262 AM_CONDITIONAL([ENABLE_CSS], [test "${with_css}" = "yes"])
3269 EXTEND_HELP_STRING([Video plugins:])
3272 dnl libplacebo support
3274 AC_ARG_ENABLE([libplacebo],
3275 AS_HELP_STRING([--disable-libplacebo],
3276 [disable libplacebo support (default auto)]))
3278 AS_IF([test "$enable_libplacebo" != "no"], [
3279 PKG_CHECK_MODULES([LIBPLACEBO], [libplacebo >= 0.5], [
3280 AC_DEFINE([HAVE_LIBPLACEBO], [1], [Define to 1 if libplacebo is enabled.])
3281 PKG_CHECK_MODULES([LIBPLACEBO], [libplacebo >= 1.7],
3282 [have_libplacebo_vk="yes"], [have_libplacebo_vk="no"])
3284 AS_IF([test -n "${enable_libplacebo}"], [
3285 AC_MSG_ERROR([${LIBPLACEBO_PKG_ERRORS}.])
3287 enable_libplacebo="no"
3290 AM_CONDITIONAL([HAVE_LIBPLACEBO], [test "$enable_libplacebo" != "no"])
3295 PKG_CHECK_MODULES([EGL], [egl], [
3300 AM_CONDITIONAL([HAVE_EGL], [test "${have_egl}" = "yes"])
3303 PKG_CHECK_MODULES([GL], [gl], [
3306 AC_MSG_CHECKING([for OpenGL])
3307 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
3309 # include <GL/glew.h>
3313 [int t0 = GL_TEXTURE0;]])
3317 AS_IF([test "${SYS}" != "mingw32"], [
3320 GL_LIBS="-lopengl32"
3323 AC_MSG_RESULT([${have_gl}])
3325 AM_CONDITIONAL([HAVE_GL], [test "${have_gl}" = "yes"])
3326 AS_IF([test "${have_gl}" = "yes"], [
3327 AC_DEFINE([HAVE_GL], 1, [Defined if having OpenGL])
3330 dnl OpenGL ES 2: depends on EGL 1.1
3332 AC_ARG_ENABLE(gles2,
3333 [AS_HELP_STRING([--enable-gles2],
3334 [enable GLES2 support (default disabled)])])
3335 AS_IF([test "$enable_gles2" = "yes"], [
3336 PKG_CHECK_MODULES([GLES2], [glesv2], [have_gles2="yes"], [])
3338 AM_CONDITIONAL([HAVE_GLES2], [test "${have_gles2}" = "yes"])
3343 AC_ARG_ENABLE(vulkan,
3344 [AS_HELP_STRING([--disable-vulkan],
3345 [disable Vulkan support (default auto)])])
3347 AS_IF([test "$enable_vulkan" != "no"], [
3348 AS_IF([test "$have_libplacebo_vk" = "yes"], [
3349 PKG_CHECK_MODULES([VULKAN], [vulkan >= 1.0.26], [
3350 AC_DEFINE([HAVE_VULKAN], [1], [Define to 1 if vulkan is enabled.])
3352 AS_IF([test -n "${enable_vulkan}"], [
3353 AC_MSG_ERROR([${VULKAN_PKG_ERRORS}.])
3358 AS_IF([test -n "${enable_vulkan}"], [
3359 AC_MSG_ERROR([Vulkan support requires libplacebo 1.7 as well. Do not use --disable-libplacebo.])
3364 AM_CONDITIONAL(HAVE_VULKAN, [test "$enable_vulkan" != "no"])
3371 AC_CHECK_HEADERS([X11/Xlib.h])
3374 dnl X C Bindings modules
3376 AC_ARG_ENABLE([xcb],
3377 AS_HELP_STRING([--enable-xcb], [X11 support with XCB (default enabled)]),, [
3378 AS_IF([test "${SYS}" != "mingw32" -a "${SYS}" != "darwin"], [
3386 have_xkbcommon_x11="no"
3387 have_xcb_keysyms="no"
3388 AS_IF([test "${enable_xcb}" != "no"], [
3392 PKG_CHECK_MODULES([XCB], [xcb >= 1.6],, [
3393 xcb_err="$xcb_err ${XCB_PKG_ERRORS}."])
3394 PKG_CHECK_MODULES([XCB_COMPOSITE], [xcb-composite],, [
3395 xcb_err="$xcb_err ${XCB_COMPOSITE_PKG_ERRORS}."])
3396 PKG_CHECK_MODULES([XCB_RANDR], [xcb-randr >= 1.3],, [
3397 xcb_err="$xcb_err ${XCB_RANDR_PKG_ERRORS}."])
3398 PKG_CHECK_MODULES([XCB_RENDER], [xcb-render],, [
3399 xcb_err="$xcb_err ${XCB_RENDER_PKG_ERRORS}."])
3400 PKG_CHECK_MODULES([XCB_SHM], [xcb-shm >= 1.9.2],, [
3401 xcb_err="$xcb_err ${XCB_SHM_PKG_ERRORS}."])
3402 PKG_CHECK_MODULES([XCB_XKB], [xcb-xkb],, [
3403 xcb_err="$xcb_err ${XCB_XKB_PKG_ERRORS}."])
3406 PKG_CHECK_MODULES(XPROTO, [xproto],, [
3407 xcb_err="$xcb_err ${XPROTO_PKG_ERRORS}."])
3409 AS_IF([test -n "$xcb_err"], [
3410 AC_MSG_ERROR([$xcb_err Pass --disable-xcb to skip X11 support.])
3414 PKG_CHECK_MODULES([XKBCOMMON_X11], [xkbcommon-x11], [
3415 have_xkbcommon_x11="yes"
3417 AC_MSG_WARN([${XKBCOMMON_X11_PKG_ERRORS}. Hotkeys are disabled.])
3421 PKG_CHECK_MODULES([XCB_KEYSYMS], [xcb-keysyms >= 0.3.4], [
3422 have_xcb_keysyms="yes"
3424 AC_MSG_WARN([${XCB_KEYSYMS_PKG_ERRORS}. Global hotkeys are disabled.])
3429 AM_CONDITIONAL([HAVE_XCB], [test "${have_xcb}" = "yes"])
3430 AM_CONDITIONAL([HAVE_XKBCOMMON_X11], [test "${have_xkbcommon_x11}" = "yes"])
3431 AM_CONDITIONAL([HAVE_XCB_KEYSYMS], [test "${have_xcb_keysyms}" = "yes"])
3437 AC_ARG_ENABLE([vdpau],
3438 [AS_HELP_STRING([--enable-vdpau], [VDPAU hardware support (default auto)])])
3440 AS_IF([test "${enable_vdpau}" != "no"], [
3441 PKG_CHECK_MODULES([VDPAU], [vdpau >= 0.6], [
3443 AS_IF([test "${no_x}" = "yes"], [
3444 AC_MSG_ERROR([VDPAU requires Xlib (X11).])
3447 AS_IF([test -n "${enable_vdpau}"], [
3448 AC_MSG_ERROR([${VDPAU_PKG_ERRORS}.])
3452 AM_CONDITIONAL([HAVE_VDPAU], [test "${have_vdpau}" = "yes"])
3454 have_avcodec_vdpau="no"
3455 AS_IF([test "${have_vdpau}" = "yes" -a "${have_avcodec}" = "yes"], [
3457 libav) av_vdpau_ver="56.10.0" ;;
3458 ffmpeg) av_vdpau_ver="56.19.100" ;;
3460 PKG_CHECK_EXISTS([libavcodec >= ${av_vdpau_ver}], [
3461 have_avcodec_vdpau="yes"
3462 AC_MSG_NOTICE([VDPAU decoding acceleration activated])
3464 AS_IF([test -n "${enable_vdpau}"], [
3465 AC_MSG_ERROR([libavcodec >= 56.10.0 is required for VDPAU decoding.])
3467 AC_MSG_WARN([libavcodec >= 56.10.0 are required for VDPAU decoding.])
3471 AM_CONDITIONAL([HAVE_AVCODEC_VDPAU], [test "${have_avcodec_vdpau}" = "yes"])
3477 AC_ARG_ENABLE([wayland],
3478 AS_HELP_STRING([--enable-wayland], [Wayland support (default auto)]))
3481 AS_IF([test "${enable_wayland}" != "no"], [
3485 PKG_CHECK_MODULES([WAYLAND_CLIENT], [wayland-client >= 1.5.91],, [
3486 wl_err="$wl_err ${WAYLAND_CLIENT_PKG_ERRORS}."
3488 PKG_CHECK_MODULES([WAYLAND_CURSOR], [wayland-cursor],, [
3489 wl_err="$wl_err ${WAYLAND_CURSOR_PKG_ERRORS}."
3491 PKG_CHECK_MODULES([WAYLAND_EGL], [wayland-egl],, [
3492 wl_err="$wl_err ${WAYLAND_EGL_PKG_ERRORS}."
3494 PKG_CHECK_MODULES([WAYLAND_SCANNER], [wayland-scanner >= 1.15], [
3495 WAYLAND_SCANNER="$(${PKG_CONFIG} wayland-scanner --variable wayland_scanner)"
3497 wl_err="$wl_err ${WAYLAND_SCANNER_PKG_ERRORS}."
3500 dnl wayland-protocols
3501 PKG_CHECK_MODULES([WAYLAND_PROTOCOLS], [wayland-protocols >= 1.15], [
3502 WAYLAND_PROTOCOLS="$(${PKG_CONFIG} wayland-protocols --variable pkgdatadir)"
3504 wl_err="$wl_err ${WAYLAND_PROTOCOLS_PKG_ERRORS}."
3507 AS_IF([test -n "$wl_err"], [
3508 AS_IF([test -n "$enable_wayland"], [
3509 AC_MSG_ERROR([$wl_err])
3511 AC_MSG_WARN([$wl_err])
3518 PKG_CHECK_MODULES([XKBCOMMON], [xkbcommon], [
3519 have_xkbcommon="yes"
3521 AC_MSG_WARN([${XKBCOMMON_PKG_ERRORS}. Hotkeys are disabled.])
3524 AM_CONDITIONAL([HAVE_WAYLAND], [test "${have_wayland}" = "yes"])
3525 AC_SUBST([WAYLAND_PROTOCOLS])
3526 AC_SUBST([WAYLAND_SCANNER])
3527 AM_CONDITIONAL([HAVE_XKBCOMMON], [test "${have_xkbcommon}" = "yes"])
3533 AC_ARG_ENABLE([freetype],
3534 AS_HELP_STRING([--enable-freetype], [freetype support (default auto)]))
3535 AC_ARG_ENABLE([fribidi],
3536 AS_HELP_STRING([--enable-fribidi], [fribidi support (default auto)]))
3537 AC_ARG_ENABLE([harfbuzz],
3538 AS_HELP_STRING([--enable-harfbuzz], [harfbuzz support (default auto)]))
3539 AC_ARG_ENABLE([fontconfig],
3540 AS_HELP_STRING([--enable-fontconfig], [fontconfig support (default auto)]))
3542 AC_ARG_WITH([default-font],
3543 AS_HELP_STRING([--with-default-font=PATH],
3544 [Path to the default font]),
3545 [AC_DEFINE_UNQUOTED([DEFAULT_FONT_FILE],
3546 "$withval", [Default font])])
3547 AC_ARG_WITH([default-monospace-font],
3548 AS_HELP_STRING([--with-default-monospace-font=PATH],
3549 [Path to the default font]),
3550 [AC_DEFINE_UNQUOTED([DEFAULT_MONOSPACE_FONT_FILE],
3551 "$withval", [Default monospace font])])
3553 AC_ARG_WITH([default-font-family],
3554 AS_HELP_STRING([--with-default-font-family=NAME],
3555 [Name of the default font family]),
3556 [AC_DEFINE_UNQUOTED([DEFAULT_FAMILY],
3557 "$withval", [Default font family])])
3558 AC_ARG_WITH([default-monospace-font-family],
3559 AS_HELP_STRING([--with-default-monospace-font-family=NAME],
3560 [Name of the default font family]),
3561 [AC_DEFINE_UNQUOTED([DEFAULT_MONOSPACE_FAMILY],
3562 "$withval", [Default monospace font family])])
3565 have_fontconfig="no"
3569 if test "${enable_freetype}" != "no"; then
3570 PKG_CHECK_MODULES(FREETYPE, freetype2, [
3572 VLC_ADD_CPPFLAGS([skins2],[${FREETYPE_CFLAGS}])
3573 VLC_ADD_LIBS([skins2],[${FREETYPE_LIBS}])
3575 dnl fontconfig support
3576 AS_IF([test "${enable_fontconfig}" != "no" -a "${SYS}" != "mingw32" -a "${SYS}" != "darwin"], [
3577 PKG_CHECK_MODULES(FONTCONFIG, [fontconfig >= 2.11], [
3578 have_fontconfig="yes"
3580 AC_MSG_WARN([${FONTCONFIG_PKG_ERRORS}. Styles will be disabled in FreeType.])
3585 if test "${enable_fribidi}" != "no"; then
3586 PKG_CHECK_MODULES(FRIBIDI, fribidi, [
3588 VLC_ADD_CPPFLAGS([skins2], [${FRIBIDI_CFLAGS} -DHAVE_FRIBIDI])
3589 VLC_ADD_LIBS([skins2], [${FRIBIDI_LIBS}])
3590 ],[AC_MSG_WARN([${FRIBIDI_PKG_ERRORS}. Bidirectional text and complex scripts (Arabic, Farsi, Thai...) will be disabled in FreeType.])])
3593 dnl harfbuzz support
3594 if test "${have_fribidi}" != "no"; then
3595 if test "${enable_harfbuzz}" != "no"; then
3596 PKG_CHECK_MODULES(HARFBUZZ, harfbuzz, [
3598 VLC_ADD_CPPFLAGS([skins2], [${HARFBUZZ_CFLAGS} -DHAVE_HARFBUZZ])
3599 VLC_ADD_LIBS([skins2], [${HARFBUZZ_LIBS}])
3600 ],[AC_MSG_WARN([${HARFBUZZ_PKG_ERRORS}. Support for complex scripts (Arabic, Farsi, Thai...) will be disabled in FreeType.])])
3604 AS_IF([test -n "${enable_freetype}"],[
3605 AC_MSG_ERROR([${FREETYPE_PKG_ERRORS}. Install FreeType2 development or configure with --disable-freetype.])
3610 AM_CONDITIONAL([HAVE_FREETYPE], [test "${have_freetype}" = "yes"])
3611 AM_CONDITIONAL([HAVE_FONTCONFIG], [test "${have_fontconfig}" = "yes"])
3612 AM_CONDITIONAL([HAVE_FRIBIDI], [test "${have_fribidi}" = "yes"])
3613 AM_CONDITIONAL([HAVE_HARFBUZZ], [test "${have_harfbuzz}" = "yes"])
3616 dnl libass subtitle rendering module
3618 AC_ARG_ENABLE([libass],
3619 AS_HELP_STRING([--enable-libass], [Subtitle support using libass (default enabled)]))
3620 AS_IF( [test "${enable_libass}" != "no"], [
3621 PKG_CHECK_MODULES(LIBASS, [libass >= 0.9.8],
3623 VLC_ADD_PLUGIN([libass])
3625 if test "${have_fontconfig}" != "no"; then
3626 VLC_ADD_CPPFLAGS([libass],[-DHAVE_FONTCONFIG])
3627 VLC_ADD_LIBS([libass],[${FONTCONFIG_LIBS}])
3630 AC_MSG_WARN([${LIBASS_PKG_ERRORS}.])
3635 dnl SAPI (text to Speech renderer for Windows)
3638 AC_CHECK_TYPES([ISpObjectToken],[
3640 ],[AC_MSG_WARN([sapi.h not found. Text to Speech renderer for Windows disabled])],
3641 [#include <windows.h>
3643 #include <sphelper.h>])
3644 AM_CONDITIONAL([HAVE_SAPI], [test "${have_sapi}" = "yes"])
3648 dnl SVG module (text rendering and image decoding)
3650 PKG_ENABLE_MODULES_VLC([SVG], [], [librsvg-2.0 >= 2.9.0], [SVG rendering library],[auto])
3651 PKG_ENABLE_MODULES_VLC([SVGDEC], [], [librsvg-2.0 >= 2.9.0 cairo >= 1.13.1], [SVG image decoder library],[auto])
3654 dnl Windows DirectX module
3657 AC_ARG_ENABLE([directx],
3658 AS_HELP_STRING([--enable-directx],
3659 [Microsoft DirectX support (default enabled on Windows)]),, [
3660 AS_IF([test "${SYS}" = "mingw32"], [
3661 enable_directx="yes"
3666 AS_IF([test "${enable_directx}" != "no"], [
3668 AC_CHECK_HEADERS([GL/glew.h], [
3669 AC_CHECK_HEADERS([GL/wglew.h], [
3670 VLC_ADD_PLUGIN([glwin32 wgl])
3672 #include <windows.h>
3673 #include <GL/glew.h>
3675 #include <windows.h>
3679 AC_CHECK_HEADERS([d3d11.h], [
3680 VLC_ADD_PLUGIN([direct3d11 direct3d11_filters])
3684 AC_CHECK_HEADERS([d3d9.h], [
3685 VLC_ADD_PLUGIN([direct3d9])
3686 AC_CHECK_HEADERS([d3dx9effect.h])
3688 AC_PREPROC_IFELSE([AC_LANG_PROGRAM(
3689 [[#define COBJMACROS
3691 #include <dxva2api.h>
3692 #ifndef IDirectXVideoProcessorService_GetVideoProcessorDeviceGuids
3693 # error dxva2 too old
3697 VLC_ADD_PLUGIN([direct3d9_filters])
3699 [AC_MSG_WARN([Could not find required IDirectXVideoDecoder in dxva2api.h])])
3705 dnl Linux framebuffer module
3707 AC_CHECK_HEADER([linux/fb.h], [
3708 VLC_ADD_PLUGIN([fb])
3712 dnl Linux kernel mode setting module
3714 PKG_ENABLE_MODULES_VLC([KMS], [], [libdrm >= 2.4.83], [Linux kernel mode setting output], [auto])
3719 PKG_ENABLE_MODULES_VLC([CACA], [], [caca >= 0.99.beta14], [libcaca output],[auto])
3724 AC_ARG_ENABLE([kva],
3725 AS_HELP_STRING([--enable-kva],
3726 [support the K Video Accelerator KVA (default enabled on OS/2)]),, [
3727 AS_IF([test "$SYS" = "os2"], [
3733 AS_IF([test "$enable_kva" != "no"], [
3734 AC_CHECK_HEADERS([kva.h], [
3736 AC_CHECK_LIB([kva], [main], [
3741 AC_SUBST([KVA_LIBS])
3742 AM_CONDITIONAL([HAVE_KVA], [test "${have_kva}" = "yes"])
3747 AC_ARG_ENABLE([mmal],
3748 AS_HELP_STRING([--enable-mmal],
3749 [Multi-Media Abstraction Layer (MMAL) hardware plugin (default enable)]))
3750 if test "${enable_mmal}" != "no"; then
3752 LDFLAGS="${LDFLAGS} -L/opt/vc/lib -lvchostif"
3753 CPPFLAGS="${CPPFLAGS} -isystem /opt/vc/include -isystem /opt/vc/include/interface/vcos/pthreads -isystem /opt/vc/include/interface/vmcs_host/linux"
3754 AC_CHECK_HEADERS([interface/mmal/mmal.h],
3755 [ AC_CHECK_LIB([bcm_host], [vc_tv_unregister_callback_full], [
3757 VLC_ADD_PLUGIN([mmal])
3758 VLC_ADD_LDFLAGS([mmal],[ -L/opt/vc/lib ])
3759 VLC_ADD_CFLAGS([mmal],[ -isystem /opt/vc/include -isystem /opt/vc/include/interface/vcos/pthreads -isystem /opt/vc/include/interface/vmcs_host/linux ])
3760 VLC_ADD_LIBS([mmal],[ -lbcm_host -lmmal -lmmal_core -lmmal_components -lmmal_util -lvchostif -lvcsm -lvchiq_arm ]) ], [
3761 AS_IF([test "${enable_mmal}" = "yes"],
3762 [ AC_MSG_ERROR([Cannot find bcm library...]) ],
3763 [ AC_MSG_WARN([Cannot find bcm library...]) ])
3766 ] , [ AS_IF([test "${enable_mmal}" = "yes"],
3767 [ AC_MSG_ERROR([Cannot find development headers for mmal...]) ],
3768 [ AC_MSG_WARN([Cannot find development headers for mmal...]) ]) ])
3771 AM_CONDITIONAL([HAVE_MMAL], [test "${have_mmal}" = "yes"])
3777 EXTEND_HELP_STRING([Audio plugins:])
3780 dnl Pulseaudio module
3782 AC_ARG_ENABLE([pulse],
3783 AS_HELP_STRING([--enable-pulse],
3784 [use the PulseAudio client library (default auto)]))
3786 AS_IF([test "${enable_pulse}" != "no"], [
3787 PKG_CHECK_MODULES([PULSE], [libpulse >= 1.0], [
3790 AS_IF([test "x${enable_pulse}" != "x"], [
3791 AC_MSG_ERROR([$PULSE_PKG_ERRORS. PulseAudio 1.0 or later required.])
3795 AM_CONDITIONAL([HAVE_PULSE], [test "${have_pulse}" = "yes"])
3800 AC_ARG_ENABLE([alsa],
3801 AS_HELP_STRING([--enable-alsa],
3802 [support the Advanced Linux Sound Architecture (default auto)]),, [
3803 AS_IF([test "$SYS" = "linux" -a "${have_pulse}" = "no"], [
3808 AS_IF([test "${enable_alsa}" != "no"], [
3809 PKG_CHECK_MODULES([ALSA], [alsa >= 1.0.24], [
3812 AS_IF([test "x${enable_alsa}" != "x"], [
3813 AC_MSG_ERROR([$ALSA_PKG_ERRORS. alsa-lib 1.0.24 or later required. Pass --disable-alsa to ignore this error.])
3817 AM_CONDITIONAL([HAVE_ALSA], [test "${have_alsa}" = "yes"])
3820 dnl Open Sound System module
3822 AC_ARG_ENABLE([oss],
3823 AS_HELP_STRING([--enable-oss],
3824 [support the Open Sound System OSS (default enabled on FreeBSD/NetBSD/DragonFlyBSD)]),, [
3825 AS_IF([test "$SYS" = "mingw32" -o "$SYS" = "linux" -o "$SYS" = "openbsd"], [
3831 AS_IF([test "$enable_oss" != "no"], [
3832 AC_CHECK_HEADERS([soundcard.h sys/soundcard.h], [
3834 AC_CHECK_LIB([ossaudio], [main], [
3835 OSS_LIBS="-lossaudio"
3839 AC_SUBST([OSS_LIBS])
3840 AM_CONDITIONAL([HAVE_OSS], [test "${have_oss}" = "yes"])
3843 dnl OpenBSD sndio module
3845 AC_ARG_ENABLE([sndio],
3846 AS_HELP_STRING([--disable-sndio],
3847 [support the OpenBSD sndio (default auto)]),, [
3848 AS_IF([test "$SYS" = "openbsd"], [
3853 AS_IF([test "$enable_sndio" != "no"], [
3854 AC_CHECK_HEADER([sndio.h], [
3858 AM_CONDITIONAL([HAVE_SNDIO], [test "${have_sndio}" = "yes"])
3861 dnl Windows Audio Session plugin
3863 AC_ARG_ENABLE([wasapi],
3864 AS_HELP_STRING([--enable-wasapi],
3865 [use the Windows Audio Session API (default auto)])
3868 AS_IF([test "$enable_wasapi" != "no"], [
3869 AC_CHECK_HEADER([audioclient.h], [
3872 AS_IF([test "x${enable_wasapi}" != "x"], [
3873 AC_MSG_ERROR([Windows Audio Session API not found.])
3877 AM_CONDITIONAL([HAVE_WASAPI], [test "${have_wasapi}" = "yes"])
3882 AC_ARG_ENABLE([jack],
3883 AS_HELP_STRING([--disable-jack],
3884 [do not use jack (default auto)]))
3886 AS_IF([test "${enable_jack}" != "no"], [
3887 PKG_CHECK_MODULES(JACK, jack >= 1.9.7,
3890 AC_MSG_WARN([${JACK_PKG_ERRORS}, trying jack1 instead])
3892 PKG_CHECK_MODULES(JACK, jack >= 0.120.1 jack < 1.0,
3895 AS_IF([test -n "${enable_jack}"],
3896 [AC_MSG_ERROR([${JACK_PKG_ERRORS}.])],
3897 [AC_MSG_WARN([${JACK_PKG_ERRORS}.])])
3901 AM_CONDITIONAL([HAVE_JACK], [test "${have_jack}" != "no"])
3904 dnl OpenSLES Android
3906 AC_ARG_ENABLE([opensles],
3907 AS_HELP_STRING([--enable-opensles], [Android OpenSL ES audio module (default disabled)]))
3908 if test "${HAVE_ANDROID}" = "1"; then
3909 if test "${enable_opensles}" = "yes"; then
3910 AC_CHECK_HEADERS([SLES/OpenSLES.h],
3911 [ VLC_ADD_PLUGIN([opensles_android]) ],
3912 [ AC_MSG_ERROR([cannot find OpenSLES headers])] )
3917 dnl libsamplerate plugin
3919 PKG_ENABLE_MODULES_VLC([SAMPLERATE], [], [samplerate], [Resampler with libsamplerate], [auto])
3924 PKG_ENABLE_MODULES_VLC([SOXR], [], [soxr >= 0.1.2], [SoX Resampler library], [auto])
3927 dnl libebur128 module
3929 PKG_ENABLE_MODULES_VLC([EBUR128], [], [libebur128 >= 1.2.4], [EBU R 128 standard for loudness normalisation], [auto])
3934 AC_ARG_ENABLE([kai],
3935 AS_HELP_STRING([--enable-kai],
3936 [support the K Audio Interface KAI (default enabled on OS/2)]),, [
3937 AS_IF([test "$SYS" = "os2"], [
3943 AS_IF([test "$enable_kai" != "no"], [
3944 AC_CHECK_HEADERS([kai.h], [
3946 AC_CHECK_LIB([kai], [main], [
3951 AC_SUBST([KAI_LIBS])
3952 AM_CONDITIONAL([HAVE_KAI], [test "${have_kai}" = "yes"])
3955 dnl chromaprint audio track fingerprinter
3957 PKG_ENABLE_MODULES_VLC([CHROMAPRINT], [stream_out_chromaprint], [libchromaprint >= 0.6.0], [Chromaprint audio fingeprinter], [auto])
3960 dnl Chromecast streaming support
3962 m4_pushdef([protobuf_lite_version], 2.5.0)
3963 AC_ARG_VAR(PROTOC, [protobuf compiler])
3964 AC_CHECK_PROGS(PROTOC, protoc, no)
3965 PKG_WITH_MODULES([CHROMECAST],[protobuf-lite >= protobuf_lite_version], [
3966 AS_IF([test "x${PROTOC}" != "xno"], [
3967 build_chromecast="yes"
3969 AC_MSG_ERROR(protoc compiler needed for [chromecast] was not found)
3972 AS_IF([test "${enable_chromecast}" = "yes"],
3973 AC_MSG_ERROR(Library [protobuf-lite >= protobuf_lite_version] needed for [chromecast] was not found),
3974 AC_MSG_WARN(Library [protobuf-lite >= protobuf_lite_version] needed for [chromecast] was not found)
3976 enable_chromecast="no"
3977 ], [(Chromecast streaming support)], [auto])
3978 AM_CONDITIONAL([BUILD_CHROMECAST], [test "${build_chromecast}" = "yes"])
3979 m4_popdef([protobuf_lite_version])
3982 dnl Interface plugins
3985 EXTEND_HELP_STRING([Interface plugins:])
3991 AS_HELP_STRING([--disable-qt], [Qt UI support (default enabled)]),, [
3992 AS_IF([test "${enable_vlc}" != "no"], [enable_qt="yes"])
3993 AS_IF([test "${SYS}" = "darwin"], [
3998 AS_IF([test "${enable_qt}" != "no"], [
3999 PKG_CHECK_MODULES([QT], [Qt5Core >= 5.11.0 Qt5Widgets Qt5Gui Qt5Quick Qt5QuickWidgets Qt5QuickControls2 Qt5Svg], [
4000 PKG_CHECK_MODULES([QT5_X11], [Qt5X11Extras], [
4003 AC_MSG_WARN([Not building Qt Interface with X11 helpers.])
4005 QT_PATH="$(eval $PKG_CONFIG --variable=exec_prefix Qt5Core)"
4006 QT_HOST_PATH="$(eval $PKG_CONFIG --variable=host_bins Qt5Core)"
4007 QT_VERSION="$(eval $PKG_CONFIG --modversion Qt5Gui)"
4008 AC_PATH_PROGS(MOC, [moc-qt5 moc], moc, ["${QT_HOST_PATH}" "${QT_PATH}/bin"])
4009 AC_PATH_PROGS(RCC, [rcc-qt5 rcc], rcc, ["${QT_HOST_PATH}" "${QT_PATH}/bin"])
4010 AC_PATH_PROGS(UIC, [uic-qt5 uic], uic, ["${QT_HOST_PATH}" "${QT_PATH}/bin"])
4011 AC_PATH_PROGS(QMLCACHE, [qmlcachegen-qt5 qmlcachegen], no, ["${QT_HOST_PATH}" "${QT_PATH}/bin"])
4012 AS_IF([test "x${QMLCACHE}" = "xno"], [
4013 AC_MSG_WARN([qmlcachegen not found])
4016 AS_IF([test -n "${enable_qt}"],[
4017 AC_MSG_ERROR([${QT_PKG_ERRORS}. If you want to build VLC without GUI, pass --disable-qt.])
4019 AC_MSG_WARN([${QT_PKG_ERRORS}.])
4025 AC_ARG_ENABLE([qt-qml-cache],
4026 AS_HELP_STRING([--enable-qt-qml-cache],
4027 [enable qml cache generation]))
4028 AM_CONDITIONAL([HAVE_QMLCACHE], [test "${enable_qt_qml_cache}" = "yes" && test "x$QMLCACHE" != "xno"])
4030 AC_ARG_ENABLE([qt-qml-debug],
4031 AS_HELP_STRING([--enable-qt-qml-debug], [enable qml debuger]))
4032 AM_CONDITIONAL(QT_QML_DEBUG, [test "${enable_qt_qml_debug}" = "yes"])
4034 AS_IF([test "${enable_qt}" != "no"], [
4035 ALIASES="${ALIASES} qvlc"
4037 AC_SUBST([QT_VERSION])
4038 AM_CONDITIONAL([ENABLE_QT], [test "$enable_qt" != "no"])
4039 AM_CONDITIONAL([HAVE_QT5_X11], [test "${have_qt5_x11}" = "yes"])
4042 dnl detect kde4-config patch (used for kde solids).
4044 AC_ARG_VAR([KDE4_CONFIG], [kde4-config utility])
4045 AS_IF([test "x$KDE4_CONFIG" = "x"], [
4046 KDE4_CONFIG="kde4-config"
4050 dnl Simple test for skins2 dependency
4052 AS_IF([test "$enable_qt" = "no"], [
4053 AS_IF([test "${enable_skins2}" = "yes"], [
4054 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.])
4057 AC_MSG_WARN([The skins2 module depends on the Qt interface, Qt is not built so skins2 is disabled.])
4064 AC_ARG_ENABLE([skins2],
4065 AS_HELP_STRING([--enable-skins2], [skins interface module (default auto)]))
4066 AS_IF([test "${enable_skins2}" != "no"], [
4067 have_skins_deps="yes"
4070 AS_IF([test "${SYS}" = "mingw32"], [
4071 VLC_ADD_CPPFLAGS([skins2],[-U_OFF_T_ -U_off_t -DWIN32_SKINS])
4072 VLC_ADD_LIBS([skins2],[-lgdi32 -lole32 -luuid -lmsimg32])
4074 ], [test "${SYS}" = "os2"], [
4075 VLC_ADD_CPPFLAGS([skins2],[ -DOS2_SKINS])
4078 PKG_CHECK_MODULES([XPM], [xpm],, [have_skins_deps="no"])
4079 PKG_CHECK_MODULES([XINERAMA], [xinerama],, [have_skins_deps="no"])
4080 PKG_CHECK_MODULES([XCURSOR], [xcursor],, [have_skins_deps="no"])
4081 PKG_CHECK_MODULES([XEXT], [xext],, [have_skins_deps="no"])
4082 VLC_ADD_CPPFLAGS([skins2],[${X_CFLAGS} ${XEXT_CFLAGS} ${XPM_CFLAGS} -DX11_SKINS])
4083 VLC_ADD_LIBS([skins2],[${X_LIBS} ${X_PRE_LIBS} ${XEXT_LIBS} ${XPM_LIBS} ${XINERAMA_LIBS} ${XCURSOR_LIBS} -lX11])
4086 dnl we need freetype
4087 AS_IF([test "${have_freetype}" != "yes"], [
4088 have_skins_deps="no"
4091 AS_IF([test "${have_skins_deps}" = "no"], [
4092 AS_IF([test "x${enable_skins2}" = "x"], [
4093 AC_MSG_WARN([Skins2 interface disabled due to missing dependencies.])
4095 AC_MSG_ERROR([Skins2 interface requires FreeType, libxcursor, libxpm, libxext and libxinerama])
4099 ALIASES="${ALIASES} svlc"
4103 AM_CONDITIONAL([BUILD_SKINS], [test "${enable_skins2}" = "yes"])
4105 AC_ARG_ENABLE([libtar],
4106 AS_HELP_STRING([--enable-libtar], [libtar support for skins2 (default auto)]))
4107 AS_IF([test "${enable_skins2}" = "yes" && test "${enable_libtar}" != "no"], [
4108 AC_CHECK_HEADERS([libtar.h], [
4109 VLC_ADD_LIBS([skins2],[-ltar])
4114 dnl MacOS X gui module
4116 AC_ARG_ENABLE([macosx],
4117 AS_HELP_STRING([--enable-macosx], [Mac OS X gui support (default enabled on Mac OS X)]))
4118 if test "x${enable_macosx}" != "xno" -a "${SYS}" = "darwin"
4122 dnl If possible, use xcrun to find the right ibtool
4125 AC_PATH_PROG([XCRUN], [xcrun], [no])
4126 AS_IF([test ! "x${XCRUN}" = "xno"], [
4127 AC_MSG_CHECKING([for ibtool (using xcrun)])
4128 XIB="$(eval $XCRUN -f ibtool 2>/dev/null || echo no)"
4129 AC_MSG_RESULT([${XIB}])
4131 AC_MSG_WARN([Looking for tools without using xcrun])
4134 AS_IF([test "x${XIB}" = "xno"], [
4135 AC_PATH_PROG(XIB, [ibtool], [no])
4136 AS_IF([test "x${XIB}" = "xno"], [
4137 AC_MSG_ERROR([ibtool was not found, but is required for --enable-macosx])
4141 AM_CONDITIONAL([ENABLE_MACOSX_UI], [test "$enable_macosx" != "no" -a "${SYS}" = "darwin"])
4144 dnl MacOS X sparkle update support
4146 AC_ARG_ENABLE([sparkle],
4147 AS_HELP_STRING([--enable-sparkle], [Sparkle update support for OS X (default enabled on Mac OS X)]))
4148 if test "x${enable_sparkle}" != "xno" -a "${HAVE_OSX}" = "1"
4150 if test ! -d ${CONTRIB_DIR}/Sparkle.framework -a ! -d ${CONTRIB_DIR}/Frameworks/Sparkle.framework
4152 AC_MSG_ERROR([Sparkle framework is required and was not found in ${CONTRIB_DIR}])
4155 AC_DEFINE([HAVE_SPARKLE], [1], [Define to 1 if sparkle is enabled.])
4157 AM_CONDITIONAL([HAVE_SPARKLE], [test "$enable_sparkle" != "no"])
4160 dnl MacOS X breakpad creash reporter support
4162 AC_ARG_WITH([breakpad],
4163 AS_HELP_STRING([--with-breakpad=URL], [Enable Breakpad reporter using given URL]), [], [with_breakpad=no])
4165 AS_IF([test "$with_breakpad" != "no"], [
4167 AS_IF([test "$with_breakpad" = "yes"], [
4168 AC_MSG_ERROR([You need to supply the CrashDragon Server URL as value for --with-breakpad])
4171 AS_IF([test "$HAVE_OSX" = "1"], [
4172 AC_MSG_CHECKING([for Breakpad framework])
4173 AS_IF([test ! -d ${CONTRIB_DIR}/Breakpad.framework -a \
4174 ! -d ${CONTRIB_DIR}/Frameworks/Breakpad.framework], [
4177 AC_MSG_ERROR([Breakpad framework is required and was not found in ${CONTRIB_DIR}])
4179 AC_MSG_RESULT([yes])
4182 PKG_CHECK_MODULES([BREAKPAD], [breakpad-client], [
4183 LDFLAGS="${LDFLAGS} -Wl,--build-id"
4185 AC_MSG_ERROR(["breakpad not found"])
4190 AM_CONDITIONAL([HAVE_BREAKPAD], [test "$with_breakpad" != "no"])
4191 AS_IF([test "$with_breakpad" != "no"], [
4192 AC_SUBST([BREAKPAD_URL], ["${with_breakpad}"])
4196 dnl Minimal Mac OS X module
4198 AC_ARG_ENABLE([minimal-macosx],
4199 AS_HELP_STRING([--enable-minimal-macosx], [Minimal Mac OS X support (default disabled)]))
4200 if test "${enable_minimal_macosx}" = "yes" -a "${SYS}" = "darwin"
4202 VLC_ADD_PLUGIN([minimal_macosx])
4206 dnl Mac OS X fancy dmg build tool
4208 if test "${HAVE_OSX}" = "1"
4210 AC_PATH_PROG(DMGBUILD, dmgbuild, no)
4211 AS_IF([test "x${DMGBUILD}" = "xno"], [
4212 AC_MSG_WARN([dmgbuild not found -- unable to build fancy DMGs])
4215 AM_CONDITIONAL([HAVE_DMGBUILD], [test "x$DMGBUILD" != "xno" -a "${HAVE_OSX}" = "1"])
4218 dnl VideoToolbox plugins
4219 AC_CHECK_HEADERS([VideoToolbox/VideoToolbox.h], [
4220 VLC_ADD_PLUGIN([videotoolbox])
4221 VLC_ADD_PLUGIN([cvpx])
4225 dnl AudioToolbox MIDI plugin
4226 AC_CHECK_HEADERS([AudioToolbox/AudioToolbox.h], [
4227 VLC_ADD_PLUGIN([audiotoolboxmidi])
4233 AC_ARG_ENABLE([ncurses],
4234 AS_HELP_STRING([--disable-ncurses],[ncurses text-based interface (default auto)]))
4236 AS_IF([test "${enable_ncurses}" != "no"] ,[
4237 PKG_CHECK_MODULES([NCURSES], [ncursesw], [
4239 ALIASES="${ALIASES} nvlc"
4241 AS_IF([test -n "${enable_ncurses}"], [
4242 AC_MSG_ERROR([${NCURSES_PKG_ERRORS}.])
4246 AM_CONDITIONAL([HAVE_NCURSES], [test "${have_ncurses}" = "yes"])
4251 AC_ARG_ENABLE([lirc],
4252 AS_HELP_STRING([--enable-lirc], [lirc support (default disabled)]))
4254 AS_IF([test "${enable_lirc}" = "yes"], [
4255 AC_CHECK_HEADER(lirc/lirc_client.h, [
4256 AC_CHECK_LIB([lirc_client], [lirc_init], [
4261 AM_CONDITIONAL([HAVE_LIRC], [test "${have_lirc}" = "yes"])
4266 PKG_CHECK_MODULES([BITSTREAM], [bitstream > 1.4],[have_bitstream="yes"], [have_bitstream="no"])
4267 AM_CONDITIONAL([HAVE_BITSTREAM], [test "${have_bitstream}" = "yes"])
4272 PKG_ENABLE_MODULES_VLC([SRT], [access_srt access_output_srt], [srt >= 1.3.0], [SRT input/output plugin], [auto], [], [], [-DENABLE_SRT])
4274 EXTEND_HELP_STRING([Visualisations and Video filter plugins:])
4276 dnl goom visualization plugin
4278 PKG_ENABLE_MODULES_VLC([GOOM], [], [libgoom2], [goom visualization plugin], [auto])
4281 dnl libprojectM visualization plugin
4283 AC_ARG_ENABLE([projectm],
4284 AS_HELP_STRING([--enable-projectm], [projectM visualization plugin (default enabled)]))
4285 AS_IF([test "${enable_projectm}" != "no"],
4287 PKG_CHECK_MODULES(PROJECTM, libprojectM,
4289 VLC_ADD_PLUGIN([projectm])
4290 PKG_CHECK_EXISTS([libprojectM >= 2.0.0],
4291 [ AC_DEFINE([HAVE_PROJECTM2], 1, [Define to 1 if using libprojectM 2.x]) ],
4292 [ AC_MSG_WARN( [Using libprojectM version 1] )
4295 AC_MSG_WARN([${PROJECTM_PKG_ERRORS}.])
4300 dnl Vovoid VSXu visualization plugin
4302 AC_ARG_ENABLE([vsxu],
4303 AS_HELP_STRING([--enable-vsxu], [Vovoid VSXu visualization plugin (default auto)]))
4304 AS_IF([test "${enable_vsxu}" != "no"],
4306 PKG_CHECK_MODULES(VSXU, libvsxu,
4308 VLC_ADD_PLUGIN([vsxu])
4310 AC_MSG_WARN([${VSXU_PKG_ERRORS}.])
4314 EXTEND_HELP_STRING([Service Discovery plugins:])
4316 dnl Avahi-Zeroconf services discovery
4317 PKG_ENABLE_MODULES_VLC([AVAHI], [], [avahi-client >= 0.6], [Zeroconf services discovery], [auto])
4320 dnl libudev services discovery
4321 PKG_ENABLE_MODULES_VLC([UDEV], [], [libudev >= 142], [Linux udev services discovery], [auto])
4324 dnl MTP devices services discovery
4325 PKG_ENABLE_MODULES_VLC([MTP], [mtp access_mtp], [libmtp >= 1.0.0], [MTP devices support], [auto])
4328 dnl UPnP Plugin (Intel SDK)
4330 PKG_ENABLE_MODULES_VLC([UPNP], [upnp], [libupnp], [Intel UPNP SDK],[auto])
4333 dnl mDNS using libmicrodns
4335 PKG_ENABLE_MODULES_VLC([MICRODNS], [], [microdns >= 0.1.2], [mDNS services discovery], [auto])
4338 EXTEND_HELP_STRING([Misc options:])
4343 PKG_ENABLE_MODULES_VLC([LIBXML2], [xml], [libxml-2.0 >= 2.5], [libxml2 support],[auto])
4349 AC_ARG_ENABLE([libgcrypt],
4350 AS_HELP_STRING([--disable-libgcrypt], [gcrypt support (default enabled)]))
4351 AC_ARG_VAR([GCRYPT_CFLAGS], [C compiler flags for gcrypt])
4352 AC_ARG_VAR([GCRYPT_LIBS], [linker flags flags for gcrypt])
4354 # require libgcrypt >= 1.6.0
4355 AS_IF([test "${enable_libgcrypt}" != "no"], [
4356 AC_CACHE_CHECK([for gcrypt 1.6.0 or later], [ac_cv_lib_gcrypt], [
4358 CFLAGS="${CFLAGS} ${GCRYPT_CFLAGS}"
4359 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([
4360 [#include <gcrypt.h>
4361 #if GCRYPT_VERSION_NUMBER < 0x010600
4364 ac_cv_lib_gcrypt=yes
4371 AS_IF([test "${ac_cv_lib_gcrypt}" = "yes"], [
4372 AC_DEFINE([HAVE_GCRYPT], 1, [Defined if having gcrypt])
4374 AS_IF([test "${enable_libgcrypt}" = "yes"], [
4375 AC_MSG_ERROR([libgcrypt version 1.6.0 or higher not found. Install libgcrypt or pass --disable-libgcrypt.])
4380 AS_IF([test -z "$GCRYPT_LIBS"], [
4381 GCRYPT_LIBS="-lgcrypt -lgpg-error"
4384 AC_SUBST([GCRYPT_CFLAGS])
4385 AC_SUBST([GCRYPT_LIBS])
4386 AM_CONDITIONAL([HAVE_GCRYPT], [test "${ac_cv_lib_gcrypt}" = "yes"])
4391 AC_ARG_ENABLE([gnutls],
4392 AS_HELP_STRING([--enable-gnutls], [GNU TLS TLS/SSL support (default enabled)]))
4393 AS_IF([test "${enable_gnutls}" != "no"], [
4394 PKG_CHECK_MODULES(GNUTLS, [gnutls >= 3.5.0], [
4395 VLC_ADD_PLUGIN([gnutls])
4397 AS_IF([test -n "${enable_gnutls}"], [
4398 AC_MSG_ERROR([${GNUTLS_PKG_ERRORS}.)])
4407 AC_ARG_ENABLE([taglib],
4408 AS_HELP_STRING([--disable-taglib],
4409 [do not use TagLib (default enabled)]))
4410 AS_IF([test "${enable_taglib}" != "no"], [
4411 PKG_CHECK_MODULES(TAGLIB, taglib >= 1.11, [
4412 VLC_ADD_PLUGIN([taglib])
4414 AC_MSG_WARN([${TAGLIB_PKG_ERRORS}.])])
4420 PKG_ENABLE_MODULES_VLC([SECRET], [], [libsecret-1 >= 0.18], [use libsecret for keystore], [auto])
4425 AC_ARG_ENABLE([kwallet],
4426 AS_HELP_STRING([--enable-kwallet],
4427 [use kwallet (via D-Bus) for keystore (default enabled)]))
4428 AS_IF([test "${enable_kwallet}" != "no" -a "${have_dbus}" = "yes"], [
4429 VLC_ADD_PLUGIN([kwallet])
4433 dnl update checking system
4435 AC_ARG_ENABLE([update-check],
4436 AS_HELP_STRING([--enable-update-check], [update checking system (default disabled)]))
4437 if test "${enable_update_check}" = "yes"
4439 AS_IF([test "${ac_cv_lib_gcrypt}" != "yes"],[
4440 AC_MSG_ERROR([libgcrypt is required for update checking system]) ])
4442 AM_CONDITIONAL([UPDATE_CHECK], [test "${enable_update_check}" = "yes"])
4445 dnl OS X notification plugin
4447 AC_ARG_ENABLE([osx_notifications],
4448 AS_HELP_STRING([--enable-osx-notifications],
4449 [macOS notification plugin (default disabled)]),,
4450 [enable_osx_notifications=no])
4451 AS_IF([test "${enable_osx_notifications}" != "no"], [
4452 VLC_ADD_PLUGIN([osx_notifications])
4456 dnl Libnotify notification plugin
4458 PKG_ENABLE_MODULES_VLC([NOTIFY], [], [libnotify], [libnotify notification], [auto])
4460 PKG_ENABLE_MODULES_VLC([MEDIALIBRARY], [medialibrary], [medialibrary >= 0.9.0], (medialibrary support), [auto])
4463 dnl Endianness check
4466 AS_IF([test "${ac_cv_c_bigendian}" = "yes"], [
4467 DEFS_BIGENDIAN="-DWORDS_BIGENDIAN=1"
4471 AC_SUBST([DEFS_BIGENDIAN])
4474 dnl Where to install KDE solid .desktop
4476 AC_ARG_WITH(kde-solid,
4477 AS_HELP_STRING([--with-kde-solid=PATH],
4478 [KDE Solid actions directory (auto)]),, [
4480 if test "${SYS}" != "mingw32" -a "${SYS}" != "darwin" -a "${HAVE_ANDROID}" != "1" ; then
4481 with_kde_solid="yes"
4485 AS_IF([test "${with_kde_solid}" != "no"], [
4486 AS_IF([test "${with_kde_solid}" = "yes"], [
4487 kde4datadir="`${KDE4_CONFIG} --install data`"
4488 AS_IF([test "x$kde4datadir" = "x"], [kde4datadir='${datadir}/kde4/apps'])
4489 soliddatadir="${kde4datadir}/solid/actions"
4491 soliddatadir="${with_kde_solid}"
4494 AC_SUBST([soliddatadir])
4495 AM_CONDITIONAL([KDE_SOLID], [test "x${soliddatadir}" != "x"])
4498 dnl Find tools for win32 packaging
4500 AS_IF([test "${SYS}" = "mingw32"], [
4502 dnl Find makensis required to build the NSIS installer
4504 nsis_major_required="3"
4505 nsis_version_ok="no"
4506 AC_PATH_PROG([MAKENSIS], [makensis], [no])
4507 AS_IF([test "$MAKENSIS" != "no"], [
4509 AC_MSG_CHECKING([makensis version])
4510 nsis_version=$($MAKENSIS -VERSION)
4511 AC_MSG_RESULT([$nsis_version])
4512 nsis_version_major=$(echo "$nsis_version" | awk -F \. '{print $1}' | sed 's/v//')
4513 # Check if major version is a valid number
4514 AS_IF([test -n "$nsis_version_major" && \
4515 test "$nsis_version_major" -eq "$nsis_version_major" 2> /dev/null], [
4516 # Do the version check using major version
4517 AS_IF([test "$nsis_version_major" -lt "$nsis_major_required"], [
4518 AC_MSG_WARN([makensis too old, (needs ${nsis_major_required}.x, have ${nsis_version_major}.x)])
4520 nsis_version_ok="yes"
4523 AC_MSG_WARN([failed to check the makensis version])
4529 AC_PATH_PROG([SEVENZIP], [7z], [7z])
4531 AM_CONDITIONAL([HAVE_MAKENSIS], [test "x$MAKENSIS" != "xno" && test "$nsis_version_ok" = "yes"])
4534 dnl Check wether we have the PROCESS_MITIGATION_IMAGE_LOAD_POLICY
4535 dnl It should only be available when building for win10, but some SDKs define it unconditionnaly
4537 if test "${SYS}" = "mingw32"; then
4538 AC_CHECK_TYPES([PROCESS_MITIGATION_IMAGE_LOAD_POLICY],,,[#include <windows.h>])
4541 EXTEND_HELP_STRING([Components:])
4546 AC_ARG_ENABLE([vlc],
4547 AS_HELP_STRING([--enable-vlc], [build the VLC media player (default enabled)]))
4548 AM_CONDITIONAL([BUILD_VLC], [test "${enable_vlc}" != "no"])
4551 dnl Fuzzer (at the end not to mess dependencies FLAGS)
4553 AS_VAR_IF(with_libfuzzer, no, [], [
4554 LIBS="-lstdc++ ${LIBM}"
4555 AS_IF([test "${with_libfuzzer}" != "yes"], [
4556 LIBS="$LIBS -L${with_libfuzzer}"
4558 LIBS="$LIBS -lFuzzer"
4559 AX_CHECK_COMPILE_FLAG(-fsanitize-coverage=trace-pc-guard, [
4560 AX_APPEND_FLAG([-fsanitize-coverage=trace-pc-guard])
4561 AX_APPEND_FLAG([-fsanitize-coverage=trace-pc-guard], [CXXFLAGS])
4562 AX_APPEND_COMPILE_FLAGS([-fsanitize-coverage=trace-cmp])
4563 AX_APPEND_COMPILE_FLAGS([-fsanitize-coverage=trace-cmp], [CXXFLAGS])
4565 AX_CHECK_COMPILE_FLAG(-fsanitize-coverage=trace-pc, [
4566 AX_APPEND_FLAG([-fsanitize-coverage=trace-pc])
4567 AX_APPEND_FLAG([-fsanitize-coverage=trace-pc], [CXXFLAGS])
4569 AC_MSG_ERROR([Sanitizer coverage not supported by your compiler])
4575 dnl Stuff used by the program
4577 VERSION_MESSAGE="${VERSION} ${CODENAME}"
4578 COPYRIGHT_MESSAGE="Copyright © ${COPYRIGHT_YEARS} the VideoLAN team"
4579 AC_DEFINE_UNQUOTED([VERSION_MESSAGE], "${VERSION_MESSAGE}", [Simple version string])
4580 AC_DEFINE_UNQUOTED([COPYRIGHT_MESSAGE], "${COPYRIGHT_MESSAGE}", [Copyright string])
4581 AC_DEFINE_UNQUOTED([COPYRIGHT_YEARS], "${COPYRIGHT_YEARS}", [The copyright years])
4582 AC_DEFINE_UNQUOTED([CONFIGURE_LINE], "${CONFIGURE_LINE}", [The ./configure command line])
4583 AC_DEFINE_UNQUOTED([PACKAGE_VERSION_MAJOR],${VERSION_MAJOR}, [version major number])
4584 AC_DEFINE_UNQUOTED([PACKAGE_VERSION_MINOR],${VERSION_MINOR}, [version minor number])
4585 AC_DEFINE_UNQUOTED([PACKAGE_VERSION_REVISION],${VERSION_REVISION}, [version revision number])
4586 AC_DEFINE_UNQUOTED([PACKAGE_VERSION_EXTRA],${VERSION_EXTRA}, [version extra number])
4587 AC_DEFINE_UNQUOTED([PACKAGE_VERSION_DEV],"${VERSION_DEV}", [version development string])
4588 AC_SUBST([COPYRIGHT_MESSAGE])
4589 AC_SUBST([VERSION_MESSAGE])
4590 AC_SUBST([VERSION_MAJOR])
4591 AC_SUBST([VERSION_MINOR])
4592 AC_SUBST([VERSION_REVISION])
4593 AC_SUBST([VERSION_EXTRA])
4594 AC_SUBST([COPYRIGHT_YEARS])
4595 AC_DEFINE_UNQUOTED([VLC_COMPILE_BY], "`whoami|sed -e 's/\\\/\\\\\\\/g'`", [user who ran configure])
4596 AC_DEFINE_UNQUOTED([VLC_COMPILE_HOST], "`hostname -f 2>/dev/null || hostname`", [host which ran configure])
4597 AC_DEFINE_UNQUOTED([VLC_COMPILER], "`$CC -v 2>&1 | tail -n 1 | sed -e 's/ *$//'`", [compiler])
4599 dnl Handle substvars that use $(top_srcdir)
4601 CPPFLAGS="-I\$(top_srcdir)/include -I\$(top_builddir)/include ${CPPFLAGS}"
4604 dnl Configuration is finished
4614 AC_SUBST([WINE_SDK_PATH])
4616 AC_SUBST([AM_CPPFLAGS])
4617 AC_SUBST([MACOSX_DEPLOYMENT_TARGET])
4618 AC_SUBST([FILE_LIBVLCCORE_DLL])
4619 AC_SUBST([FILE_LIBVLC_DLL])
4633 modules/hw/mmal/Makefile
4634 share/vlc.appdata.xml.in
4637 AM_COND_IF([HAVE_WIN32], [
4639 extras/package/win32/NSIS/spad.nsi
4640 extras/package/win32/NSIS/vlc.win32.nsi
4641 extras/package/win32/msi/config.wxi
4645 AM_COND_IF([HAVE_DARWIN], [
4647 share/macosx/Info.plist:share/Info.plist.in
4651 dnl Generate makefiles
4654 dnl Do we have to use make or gmake ?
4655 if make --version 2>&1|grep -q GNU
4657 # GNU make, all seems good
4660 # Known GNU make alias (on BSD)
4663 dnl Shortcut to nice compile message
4664 if test -n $SHELL; then
4665 SHELL=${CONFIG_SHELL-/bin/sh}
4668 compile_top_srcdir=`sed -ne "s/^top_srcdir *= *//p" < Makefile`
4672 export PATH=\"$PATH\" LANG=C
4673 ($MAKE V=1 \$@ 2>&1 || touch .error\$\$)| $compile_top_srcdir/extras/buildsystem/make.pl
4674 test -f .error\$\$ && ERROR=1
4676 exit \$ERROR" >compile
4680 libvlc configuration
4681 --------------------
4682 version : ${VERSION}
4684 architecture : ${ARCH}
4685 optimizations : ${enable_optimizations}"
4686 if test "${enable_vlc}" != "no"; then
4687 echo "vlc aliases :${ALIASES}"
4689 echo "build vlc executable : no"
4692 To build vlc and its plugins, type \`$MAKE', or \`./compile' if you like nice colors."