android: util: delete unused SurfaceTexture structure
[vlc.git] / configure.ac
blob8011643371a846849d0bf67cd1f7bcf5769be1fa
1 dnl Autoconf settings for vlc
3 AC_COPYRIGHT([Copyright 1999-2020 VLC authors and VideoLAN])
5 AC_INIT([vlc], [4.0.0-dev])
6 VERSION_MAJOR=4
7 VERSION_MINOR=0
8 VERSION_REVISION=0
9 VERSION_EXTRA=0
10 VERSION_DEV=dev
12 PKGDIR="vlc"
13 AC_SUBST([PKGDIR])
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])
23 AC_CANONICAL_BUILD
24 AC_CANONICAL_HOST
25 AC_PRESERVE_HELP_ORDER
27 AM_INIT_AUTOMAKE([tar-ustar color-tests foreign])
28 AC_CONFIG_HEADERS([config.h])
30 AM_SILENT_RULES([yes])
31 AM_MAINTAINER_MODE([enable])
33 dnl
34 dnl Check for tools
35 dnl
36 AC_PROG_CC
37 AC_USE_SYSTEM_EXTENSIONS
38 VLC_PROG_CC_C11
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
44 #endif])
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>.])
49 AC_PROG_CXX
50 AC_PROG_CPP
51 AC_PROG_OBJC
52 AC_PROG_EGREP
53 AC_PROG_MAKE_SET
54 AC_PROG_INSTALL
55 AM_PROG_AS
56 AC_PROG_LEX
57 AC_PROG_YACC
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
68 AC_C_CONST
69 AC_C_INLINE
70 AC_C_RESTRICT
71 AX_CXX_COMPILE_STDCXX_14([noext], [mandatory])
73 dnl Check the compiler supports atomics in C
74 AC_MSG_CHECKING([C atomics])
75 VLC_SAVE_FLAGS
76 ATOMIC_LIB=""
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);
87 ])],[
88     AC_MSG_RESULT([using -latomic])
89     ATOMIC_LIB="-latomic"
90   ],[
91   AC_MSG_ERROR([VLC requires atomics support])
92   ])
94 VLC_RESTORE_FLAGS
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
101 dnl cache problem
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])
123 dnl  Check the operating system
125 HAVE_WIN64="0"
126 HAVE_IOS="0"
127 HAVE_OSX="0"
128 HAVE_TVOS="0"
130 dnl  Set x86 asm flags and defines
131 X86ASMFLAGS=""
132 case "${host_cpu}" in
133     i?86)
134     X86ASMFLAGS="-f elf32"
135     X86ASMDEFS="-DARCH_X86_32=1 -DARCH_X86_64=0"
136         ;;
137     x86_64)
138     X86ASMFLAGS="-f elf64"
139     X86ASMDEFS="-DARCH_X86_32=0 -DARCH_X86_64=1"
140         ;;
141 esac
143 case "${host_os}" in
144   "")
145     SYS=unknown
146     ;;
147   linux*)
148     SYS=linux
149     CFLAGS="${CFLAGS} -pthread"
150     ;;
151   bsdi*)
152     SYS=bsdi
153     CFLAGS="${CFLAGS} -pthread"
154     ;;
155   freebsd*)
156     SYS=freebsd
157     CFLAGS="${CFLAGS} -pthread"
158     CPPFLAGS="${CPPFLAGS} -I/usr/local/include"
159     LDFLAGS="${LDFLAGS} -L/usr/local/lib"
160     ac_cv_ld_z_defs=no
161     ;;
162   openbsd*)
163     SYS=openbsd
164     CPPFLAGS="${CPPFLAGS} -I/usr/local/include -I/usr/X11R6/include"
165     LDFLAGS="${LDFLAGS} -L/usr/local/lib -L/usr/X11R6/lib/"
166     ;;
167   netbsd*)
168     SYS=netbsd
169     ;;
170   dragonfly*)
171     SYS=dragonfly
172     ;;
173   darwin*)
174     SYS=darwin
176     dnl Work around an Xcode 11 bug, fixed in Xcode 11.3.1
177     AX_APPEND_FLAG([-fno-stack-check], [CFLAGS])
178     AX_APPEND_FLAG([-fno-stack-check], [CXXFLAGS])
179     AX_APPEND_FLAG([-fno-stack-check], [OBJCFLAGS])
181     case "${host_cpu}" in
182       i?86)
183         X86ASMFLAGS="-f macho32"
184         AX_APPEND_FLAG([-DPREFIX], [X86ASMDEFS])
185       ;;
186       x86_64)
187         X86ASMFLAGS="-f macho64"
188         AX_APPEND_FLAG([-DPREFIX], [X86ASMDEFS])
189       ;;
190       arm*)
191         ac_cv_c_bigendian="no"
192         ac_cv_c_attribute_packed="no"
193       ;;
194     esac
196     AX_APPEND_FLAG([-D_INTL_REDIRECT_MACROS], [CPPFLAGS])
197     AX_APPEND_FLAG([-stdlib=libc++], [CXXFLAGS])
198     AX_APPEND_FLAG([-Werror=partial-availability], [OBJCFLAGS])
199     AX_APPEND_FLAG([-Wl,-headerpad_max_install_names], [LDFLAGS])
201     VLC_ADD_LIBS([libvlc vlc],[-Wl,-undefined,dynamic_lookup,-framework,AppKit])
202     VLC_ADD_LIBS([libvlccore],[-Wl,-framework,CoreFoundation])
204     AC_EGREP_CPP(yes,
205             [#import <TargetConditionals.h>
206              #if TARGET_OS_IPHONE
207              yes
208              #endif],
209              [HAVE_IOS="1"],
210              [HAVE_OSX="1"])
212     AC_EGREP_CPP(yes,
213             [#import <TargetConditionals.h>
214              #if TARGET_OS_TV
215              yes
216              #endif],
217              [HAVE_TVOS="1"
218              HAVE_IOS="0"
219              HAVE_OSX="0"
220              ac_cv_func_fork=no
221              ],)
223     AS_IF([test "${HAVE_OSX}" = "1"],[VLC_ADD_LIBS([libvlccore],[-Wl,-framework,CoreServices])])
225     dnl
226     dnl  Handle Mac OS X SDK flags
227     dnl
228     AC_ARG_WITH(macosx-sdk,
229       AS_HELP_STRING([--with-macosx-sdk=DIR],
230         [compile using the SDK in DIR]))
231     if test "${with_macosx_sdk}" != "" ; then
232         test ! -d "${with_macosx_sdk}" && AC_MSG_ERROR([SDK "${with_macosx_sdk}" not found])
233         CPP="${CPP} -isysroot ${with_macosx_sdk}"
234         CC="${CC} -isysroot ${with_macosx_sdk}"
235         CXX="${CXX} -isysroot ${with_macosx_sdk}"
236         OBJC="${OBJC} -isysroot ${with_macosx_sdk}"
237         LD="${LD} -syslibroot ${with_macosx_sdk}"
238     fi
239     AC_ARG_WITH(macosx-version-min,
240       AS_HELP_STRING([--with-macosx-version-min=VERSION],
241         [compile for Mac OS X VERSION and above]))
242     if test "${with_macosx_version_min}" != "" ; then
243         CPP="${CPP} -mmacosx-version-min=${with_macosx_version_min}"
244         CC="${CC} -mmacosx-version-min=${with_macosx_version_min}"
245         CXX="${CXX} -mmacosx-version-min=${with_macosx_version_min}"
246         OBJC="${OBJC} -mmacosx-version-min=${with_macosx_version_min}"
247         LD="${LD} -mmacosx_version_min=${with_macosx_version_min}"
248     fi
249     ;;
250   *mingw32* | *cygwin* | *wince* | *mingwce*)
251     dnl Force libtool to not link to (shared) libgcc_s when detecting C++ dependencies
252     dnl When doing this test with -static-libgcc it will link on (static) libgcc_eh
253     CXXFLAGS="${CXXFLAGS} -static-libgcc"
254     AC_CHECK_TOOL(WINDRES, windres, :)
255     AC_CHECK_TOOL(OBJCOPY, objcopy, :)
256     AC_PREPROC_IFELSE([AC_LANG_PROGRAM(
257       [[#ifdef _WIN32_WINNT
258        # error _WIN32_WINNT already defined
259        #else
260        # include <windows.h>
261        # if defined(_WIN32_WINNT) && _WIN32_WINNT >= 0x0601
262        #  error _WIN32_WINNT toolchain default high enough
263        # endif
264        #endif
265       ]],[[;]])
266     ],[
267       AC_DEFINE([_WIN32_WINNT], [0x0601], [Define to '0x0601' for Windows 7 APIs.])
268     ])
269     AC_DEFINE([_WIN32_IE], [0x0600], [Define to '0x0600' for IE 6.0 (and shell) APIs.])
270     AC_DEFINE([UNICODE], [1], [Define to 1 for Unicode (Wide Chars) APIs.])
271     AC_DEFINE([_ISOC99_SOURCE], [1], [Extensions to ISO C89 from ISO C99.])
272     AC_DEFINE([_ISOC11_SOURCE], [1], [Extensions to ISO C99 from ISO C11.])
273     AC_DEFINE([_POSIX_SOURCE], [1], [IEEE Std 1003.1.])
274     AC_DEFINE([_POSIX_C_SOURCE], [200809L], [IEEE Std 1003.1.])
275     AC_DEFINE([_XOPEN_SOURCE], [700], [POSIX and XPG 7th edition])
276     AC_DEFINE([_XOPEN_SOURCE_EXTENDED], [1], [XPG things and X/Open Unix extensions.])
277     AC_DEFINE([_BSD_SOURCE], [1], [ISO C, POSIX, and 4.3BSD things.])
278     AC_DEFINE([_SVID_SOURCE], [1], [ISO C, POSIX, and SVID things.])
280     case "${host_os}" in
281       *mingw32*)
282         SYS=mingw32
283         ;;
284       *cygwin*)
285         dnl Check if we are using the mno-cygwin mode in which case we are
286         dnl actually dealing with a mingw32 compiler.
287         AC_EGREP_CPP(yes,
288             [#ifdef _WIN32
289              yes
290              #endif],
291             SYS=mingw32, AC_MSG_ERROR([VLC requires -mno-cygwin]))
292         ;;
293     esac
295     if test "${SYS}" = "mingw32"; then
296         # DEP, ASLR, NO SEH
297         LDFLAGS="${LDFLAGS} -Wl,--nxcompat -Wl,--no-seh -Wl,--dynamicbase"
299         AC_CHECK_PROGS(U2D, [unix2dos todos], unix2dos)
300         ac_default_prefix="`pwd`/_win32"
301         DESTDIR="`pwd`/_win32/"
303         dnl
304         dnl NSIS/MSI Installer prefix and WIN64
305         dnl
306         case "${host_cpu}" in
307             aarch64)
308                 HAVE_WIN64="1"
309                 WINDOWS_ARCH="arm64"
310                 PROGRAMFILES="PROGRAMFILES64"
311                 LDFLAGS="${LDFLAGS} -Wl,--high-entropy-va -Wl,--image-base,0x140000000"
312             ;;
313             amd64|x86_64)
314                 HAVE_WIN64="1"
315                 WINDOWS_ARCH="x64"
316                 PROGRAMFILES="PROGRAMFILES64"
317                 LDFLAGS="${LDFLAGS} -Wl,--high-entropy-va -Wl,--image-base,0x140000000"
318                 X86ASMFLAGS="-f win64"
319             ;;
320             armv7)
321                 WINDOWS_ARCH="arm"
322                 PROGRAMFILES="PROGRAMFILES"
323             ;;
324             *)
325                 WINDOWS_ARCH="x86"
326                 PROGRAMFILES="PROGRAMFILES"
327                 X86ASMFLAGS="-f win32"
328                 X86ASMDEFS="${X86ASMDEFS} -DPREFIX"
329             ;;
330         esac
331         AC_SUBST([WINDOWS_ARCH])
332         AC_SUBST([PROGRAMFILES])
334     fi
335     ;;
336   *nto*)
337     SYS=nto
338     ;;
339   solaris*)
340     SYS=solaris
341     ;;
342   hpux*)
343     SYS=hpux
344     ;;
345   *os2*)
346     SYS=os2
347     LDFLAGS="${LDFLAGS} -Zomf -Zbin-files -Zargs-wild -Zhigh-mem"
348     AC_LIBOBJ([freeaddrinfo])
349     AC_LIBOBJ([gai_strerror])
350     AC_CHECK_FUNCS([if_nametoindex])
351     X86ASMFLAGS="-f aout"
352     X86ASMDEFS="-DARCH_X86_32=1 -DARCH_X86_64=0 -DPREFIX"
353     ;;
354   *nacl*)
355     SYS=nacl
356     AC_DEFINE([_XOPEN_SOURCE], [700], [POSIX and XPG 7th edition])
357     AC_LIBOBJ([sigwait])
358     AC_LIBOBJ([recvmsg])
359     AC_LIBOBJ([sendmsg])
360     ;;
361   *)
362     SYS="${host_os}"
363     ;;
364 esac
366 dnl WinRT
367 AC_ARG_ENABLE([winstore_app],
368      AS_HELP_STRING([--enable-winstore-app],
369                     [Build targetted for Windows Store apps (default disabled)]))
371 vlc_winstore_app=0
372 AS_IF([test "${SYS}" = "mingw32"],[
373   LIBCOM="-lole32"
374   AS_IF([test "${enable_winstore_app}" = "yes"], [
375     vlc_winstore_app=1
376     LIBCOM=""
377     AX_APPEND_FLAG([-DWINSTORECOMPAT],[CFLAGS])
378     AX_APPEND_FLAG([-DWINSTORECOMPAT],[CPPFLAGS])
379     AX_APPEND_FLAG([-DWINSTORECOMPAT],[CXXFLAGS])
380     AX_APPEND_FLAG([-lwinstorecompat], [LDFLAGS])
381     VLC_ADD_LIBS([libvlccore], [-lruntimeobject])
382     AC_LIBOBJ([gai_strerror])
383   ],[])
384   AC_SUBST([LIBCOM])
385   ])
386 AC_DEFINE_UNQUOTED(VLC_WINSTORE_APP, ${vlc_winstore_app}, [Define to 1 if you want to build for Windows Store apps])
388 vlc_build_pdb=0
389 AC_ARG_ENABLE([pdb],
390      AS_HELP_STRING([--enable-pdb],
391                     [Build PDB files for windows targets (default off)]))
392 AS_IF([test "${SYS}" = "mingw32"],[
393   AS_IF([test "${enable_pdb}" = "yes"], [
394     vlc_build_pdb=1
395     AX_APPEND_FLAG([-g -gcodeview],[CFLAGS])
396     AX_APPEND_FLAG([-g -gcodeview],[CXXFLAGS])
397     LDFLAGS="${LDFLAGS} -Wl,-pdb="
398   ],[])
401 AM_CONDITIONAL([HAVE_FREEBSD], [test "${SYS}" = "freebsd"])
402 AM_CONDITIONAL([HAVE_LINUX],   [test "${SYS}" = "linux"])
403 AM_CONDITIONAL([HAVE_OS2],     [test "${SYS}" = "os2"])
405 AM_CONDITIONAL([HAVE_DARWIN],  [test "${SYS}" = "darwin"])
406 AM_CONDITIONAL([HAVE_IOS],     [test "${HAVE_IOS}" = "1"])
407 AM_CONDITIONAL([HAVE_OSX],     [test "${HAVE_OSX}" = "1"])
408 AM_CONDITIONAL([HAVE_TVOS],    [test "${HAVE_TVOS}" = "1"])
410 AM_CONDITIONAL([HAVE_NACL],    [test "${SYS}" = "nacl"])
411 AM_CONDITIONAL([HAVE_LIBANL],  [test "${HAVE_LIBANL}" = "1"])
413 AM_CONDITIONAL([HAVE_WIN32],   [test "${SYS}" = "mingw32"])
414 AM_CONDITIONAL([HAVE_WIN64],   [test "${HAVE_WIN64}" = "1"]) dnl Only used for the packaging
415 AM_CONDITIONAL([HAVE_WINSTORE], [test "$vlc_winstore_app" = "1"])
416 AM_CONDITIONAL([HAVE_WIN32_DESKTOP], [test "${SYS}" = "mingw32" -a "$vlc_winstore_app" = "0"])
417 AM_CONDITIONAL([ENABLE_PDB],   [test "$vlc_build_pdb" = "1"])
419 dnl Use nasm/yasm only on x86
420 AC_CHECK_PROGS(X86ASM, [nasm yasm])
421 AM_CONDITIONAL([HAVE_X86ASM], [test -n "${X86ASM}" && test -n "${X86ASMFLAGS}"])
422 AM_COND_IF([HAVE_X86ASM], [
423   AC_DEFINE([HAVE_X86ASM], [1], [Use external asm on x86.])
426 dnl  Because DOLT is not able to handle --with-pic
427 dnl  correctly, manually add -DPIC to the options for
428 dnl  nasm / yasm here.
429 AS_IF([test x$with_pic = xyes], [X86ASMDEFS="${X86ASMDEFS} -DPIC"])
431 AC_SUBST([X86ASMFLAGS])
432 AC_SUBST([X86ASMDEFS])
435 dnl Sadly autoconf does not think about testing foo.exe when ask to test
436 dnl for program foo on win32
437 case "${build_os}" in
438     cygwin|msys|mingw32)
439         ac_executable_extensions=".exe"
440         BUILDEXEEXT=".exe"
441     ;;
442     os2*)
443         BUILDEXEEXT=".exe"
444     ;;
445     *)
446     ;;
447 esac
448 AC_SUBST([BUILDEXEEXT])
450 dnl Android is linux, but a bit different
451 AS_IF([test "$SYS" = linux],[
452     AC_MSG_CHECKING([for an Android system])
453     AC_PREPROC_IFELSE([AC_LANG_PROGRAM(
454         [[#ifndef __ANDROID__
455          # error Not Android
456          #endif
457         ]],[[;]])
458     ],[
459       HAVE_ANDROID="1"
460       AC_MSG_RESULT([yes])
461     ],[
462       AC_MSG_RESULT([no])
463     ])
465 AM_CONDITIONAL([HAVE_ANDROID], [test "${HAVE_ANDROID}" = "1"])
468 dnl  Check for the contrib directory
470 AC_ARG_WITH(contrib,
471   AS_HELP_STRING([--with-contrib[=DIR]],
472     [search for 3rd party libraries in DIR/include and DIR/lib])
474 AC_MSG_CHECKING([for 3rd party libraries path])
475 AS_IF([test -z "${with_contrib}" || test "${with_contrib}" = "yes"], [
476   CONTRIB_DIR="${srcdir}/contrib/${host}"
477   AS_IF([test ! -d "${CONTRIB_DIR}"], [
478     echo "${CONTRIB_DIR} not found" >&AS_MESSAGE_LOG_FD
479     CONTRIB_DIR="${srcdir}/contrib/`$CC -dumpmachine`"
480     AS_IF([test ! -d "${CONTRIB_DIR}"], [
481       echo "${CONTRIB_DIR} not found" >&AS_MESSAGE_LOG_FD
482       CONTRIB_DIR=""
483       AC_MSG_RESULT([not found])
484     ])
485   ])
486 ], [
487   AS_IF([test "${with_contrib}" != "no"], [
488     CONTRIB_DIR="${with_contrib}"
489   ], [
490     CONTRIB_DIR=""
491     AC_MSG_RESULT([disabled])
492   ])
494 AS_IF([test -n "${CONTRIB_DIR}"], [
495   AS_IF([test -d "${CONTRIB_DIR}/lib"],[
496     CONTRIB_DIR=`cd "${CONTRIB_DIR}" && pwd`
497   ], [
498     echo "${CONTRIB_DIR}/lib not found" >&AS_MESSAGE_LOG_FD
499     CONTRIB_DIR=""
500     AC_MSG_RESULT([not usable])
501   ])
504 AS_IF([test -n "${CONTRIB_DIR}"], [
505   AC_MSG_RESULT([${CONTRIB_DIR}])
506   CPPFLAGS="${CPPFLAGS} -I${CONTRIB_DIR}/include"
507   CFLAGS="${CFLAGS} -I${CONTRIB_DIR}/include"
508   CXXFLAGS="${CXXFLAGS} -I${CONTRIB_DIR}/include"
509   OBJCFLAGS="${OBJCFLAGS} -I${CONTRIB_DIR}/include -F${CONTRIB_DIR} -F${CONTRIB_DIR}/Frameworks"
510   PKG_CONFIG_PATH="${CONTRIB_DIR}/lib/pkgconfig:${CONTRIB_DIR}/share/pkgconfig:${PKG_CONFIG_PATH}"
511   case "${build_os}" in
512       mingw32)
513           export PKG_CONFIG_PATH=`cygpath -mp ${PKG_CONFIG_PATH}`
514       ;;
515       *)
516           export PKG_CONFIG_PATH="${PKG_CONFIG_PATH}"
517       ;;
518   esac
519   LDFLAGS="${LDFLAGS} -L${CONTRIB_DIR}/lib"
521   AS_IF([test -z "$LUAC"], [
522     dnl Old contribs mixed cross-tools and cross-compiled executables
523     AS_IF([test -x "${CONTRIB_DIR}/bin/luac${BUILDEXEEXT}"], [
524       LUAC="${CONTRIB_DIR}/bin/luac${BUILDEXEEXT}"
525     ])
527     dnl Newer contribs follow usual name space rules
528     AS_IF([test -x "${CONTRIB_DIR}/../bin/${host_alias}-luac${BUILDEXEEXT}"], [
529       LUAC="${CONTRIB_DIR}/../bin/${host_alias}-luac${BUILDEXEEXT}"
530     ])
531   ])
533   AS_IF([test "${SYS}" = "darwin"], [
534     export LD_LIBRARY_PATH="${CONTRIB_DIR}/lib:$LD_LIBRARY_PATH"
535     export DYLD_LIBRARY_PATH="${CONTRIB_DIR}/lib:$DYLD_LIBRARY_PATH"
536   ])
537 ], [
538   AS_IF([test -n "${with_contrib}" && test "${with_contrib}" != "no"], [
539     AC_MSG_ERROR([Third party libraries not found!])
540   ])
542 AC_SUBST([CONTRIB_DIR])
544 dnl Add extras/tools to the PATH
545 TOOLS_DIR="${srcdir}/extras/tools/build/bin"
546 AS_IF([test -d "${TOOLS_DIR}"], [
547     TOOLS_DIR=`cd "${TOOLS_DIR}" && pwd`
548     export PATH="${TOOLS_DIR}":$PATH
552 dnl  Libtool
553 dnl  It's very bad, but our former custom system was worst
554 dnl  -- Courmisch
557 dnl override platform specific check for dependent libraries
558 dnl otherwise libtool linking of shared libraries will
559 dnl fail on anything other than pass_all.
560 AC_CACHE_VAL(lt_cv_deplibs_check_method,
561     [lt_cv_deplibs_check_method=pass_all])
563 LT_INIT([dlopen win32-dll shared disable-static])
564 LT_LANG([C++])
565 LT_LANG([Windows Resource])
567 DOLT
569 lt_cv_deplibs_check_method=pass_all
571 AS_IF([test "${enable_shared}" = "no" -a "${enable_vlc}" != "no"], [
572   AC_MSG_ERROR([VLC is based on plugins. Shared libraries cannot be disabled.])
576 dnl Gettext stuff
578 AM_GNU_GETTEXT_VERSION([0.19.8])
579 AM_GNU_GETTEXT([external], [need-formatstring-macros])
582 dnl Iconv stuff
584 AM_ICONV
587 dnl checks for mingw
588 AS_IF([test "${SYS}" = "mingw32"], [
590 AC_PREPROC_IFELSE([AC_LANG_SOURCE([
591 #if !defined(__MINGW32__)
592 # error Not compiling with mingw
593 #endif
594     ])], [
596 dnl Check for broken versions of mingw-runtime compatability library
597     AC_MSG_CHECKING(for broken mingw-runtime)
598     AC_PREPROC_IFELSE([AC_LANG_SOURCE([
599 #include <_mingw.h>
600 #if defined(__MINGW64_VERSION_MAJOR)
601 # if __MINGW64_VERSION_MAJOR < 5
602 #  error Update your mingw-w64! This one is too old.
603 # endif
604 #else
605 # error You cannot compile with Mingw. Use Mingw-w64!
606 #endif
607     ])], [
608         AC_MSG_RESULT([ok])
609     ], [
610         AC_MSG_RESULT([present])
611         AC_MSG_ERROR([LibVLC requires Mingw-w64 version 5.0 or higher!])
612     ])
614     dnl force use of mingw provided c99 *printf over msvcrt
615     CPPFLAGS="${CPPFLAGS} -D__USE_MINGW_ANSI_STDIO=1"
617     dnl Check for the need to include the mingwex lib for mingw32
618     VLC_SAVE_FLAGS
619     AC_CHECK_LIB([mingwex], [opendir],
620         AC_CHECK_LIB([mingw32], [opendir],,
621             [VLC_ADD_LIBS([libvlccore],[-lmingwex])])
622     )
623     VLC_RESTORE_FLAGS
624     ], [
625         AC_MSG_RESULT([Not compiling with mingw])
626     ])
628     dnl Check for fnative-struct or mms-bitfields support for mingw32
629     AX_CHECK_COMPILE_FLAG([-mms-bitfields], [
630         AX_APPEND_FLAG([-mms-bitfields], [CFLAGS])
631         AX_APPEND_FLAG([-mms-bitfields], [CXXFLAGS])
632         # Check for the warning flag without "-Wno-", GCC accepts
633         # -Wno-<anything> for unsupported warnings, which can trigger
634         # other warnings instead.
635         AX_CHECK_COMPILE_FLAG([-Wincompatible-ms-struct], [
636             AX_APPEND_FLAG([-Wno-incompatible-ms-struct], [CFLAGS])
637             AX_APPEND_FLAG([-Wno-incompatible-ms-struct], [CXXFLAGS])
638         ])
639     ], [
640         AX_CHECK_COMPILE_FLAG([-fnative-struct], [
641             AX_APPEND_FLAG([-fnative-struct], [CFLAGS])
642             AX_APPEND_FLAG([-fnative-struct], [CXXFLAGS])
643         ])
644     ])
649 dnl Buggy glibc prevention. Purposedly not cached.
650 dnl See sourceware.org bugs 5058 and 5443.
651 dnl Ubuntu alone has 20 bug numbers for this...
653 AC_MSG_CHECKING(for buggy GNU/libc versions)
654 AC_PREPROC_IFELSE([AC_LANG_SOURCE([
655 #include <limits.h>
656 #if defined (__GLIBC__) && (__GLIBC__ == 2) \
657   && (__GLIBC_MINOR__ >= 5) && (__GLIBC_MINOR__ <= 7)
658 # error GNU/libc with dcgettext killer bug!
659 #endif
660 ])], [
661   AC_MSG_RESULT([not present])
662 ], [
663   AC_MSG_RESULT([found])
664   AS_IF([test "x${enable_nls}" != "xno"], [
665     AC_MSG_ERROR([Buggy GNU/libc (version 2.5 - 2.7) present. VLC would crash; there is no viable
666 work-around for this. Check with your distribution vendor on how to update the
667 glibc run-time. Alternatively, build with --disable-nls.])
668   ])
671 dnl Plugin compilation stuff
673 VLC_LIBRARY_SUFFIX
675 dnl Check for system libs needed
676 need_libc=false
678 dnl Check for usual libc functions
679 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])
680 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])
681 AC_REPLACE_FUNCS([gettimeofday])
682 AC_CHECK_FUNC(fdatasync,,
683   [AC_DEFINE(fdatasync, fsync, [Alias fdatasync() to fsync() if missing.])
686 VLC_REPLACE_DECL([realpath], [#include <stdlib.h>])
688 dnl mingw64 implements those as static inline, not functions with C linkage
689 VLC_REPLACE_DECL([asprintf], [#include <stdio.h>])
690 VLC_REPLACE_DECL([vasprintf], [#include <stdio.h>])
691 VLC_REPLACE_DECL([gmtime_r], [#include <time.h>])
692 VLC_REPLACE_DECL([localtime_r], [#include <time.h>])
694 dnl C11 static_assert()
695 AC_MSG_CHECKING([for static_assert in assert.h])
696 AC_LINK_IFELSE([AC_LANG_PROGRAM([#include <assert.h>], [
697 static_assert(1, "The impossible happened.");
698 ])], [
699   AC_MSG_RESULT([yes])
700   AC_DEFINE([HAVE_STATIC_ASSERT], [1], [Define to 1 if <assert.h> defines static_assert.])
701 ], [
702   AC_MSG_RESULT([no])
705 # Windows CE does not have strcoll()
706 AC_FUNC_STRCOLL
708 dnl Check for non-standard system calls
709 case "$SYS" in
710   "linux")
711     AC_CHECK_FUNCS([eventfd vmsplice sched_getaffinity recvmmsg memfd_create])
712     ;;
713   "mingw32")
714     AC_CHECK_FUNCS([_lock_file])
715     ;;
716 esac
718 AH_BOTTOM([#include <vlc_fixups.h>])
720 dnl Check for struct pollfd
721 AC_CHECK_TYPES([struct pollfd],,,
722 [#include <sys/types.h>
723 #if HAVE_POLL
724 # include <poll.h>
725 #elif defined (_WIN32)
726 # include <winsock2.h>
727 #endif
730 dnl Check for struct timespec
731 AC_CHECK_TYPES([struct timespec],,,
732 [#include <time.h>])
734 dnl Check for max_align_t
735 AC_CHECK_TYPES([max_align_t],,,
736 [#include <stddef.h>])
738 dnl Checks for socket stuff
739 VLC_SAVE_FLAGS
740 SOCKET_LIBS=""
741 AC_SEARCH_LIBS(connect, [socket], [
742   AS_IF([test "$ac_cv_search_connect" != "none required"], [
743     SOCKET_LIBS="$ac_cv_search_connect"
744   ])
745 ], [
746   AS_IF([test "${SYS}" = "mingw32"], [
747     SOCKET_LIBS="-lws2_32 -liphlpapi"
748   ])
751 AC_SEARCH_LIBS([inet_pton], [nsl], [
752  AS_IF([test "$ac_cv_search_inet_pton" != "none required"], [
753     SOCKET_LIBS="$ac_cv_search_inet_pton $SOCKET_LIBS"
754   ])
755 ],, [${SOCKET_LIBS}])
757 LIBS="${LIBS} ${SOCKET_LIBS}"
758 AC_LINK_IFELSE([
759     AC_LANG_PROGRAM([#ifdef _WIN32
760         #include <ws2tcpip.h>
761         #include <windows.h>
762         # if _WIN32_WINNT < 0x600
763         #  error Needs vista+
764         # endif
765         #else
766         #include <sys/socket.h>
767         #include <arpa/inet.h>
768         #endif], [
769         char dst[[sizeof(struct in_addr)]];
770         inet_pton(AF_INET, "127.0.0.1", dst);
771     ])],[AC_DEFINE([HAVE_INET_PTON],[1],[Define to 1 if you have inet_pton function])],[AC_LIBOBJ([inet_pton])])
772 AC_CHECK_TYPES([struct if_nameindex],,,[#include <net/if.h>])
773 AC_CHECK_FUNCS([if_nameindex])
774 VLC_RESTORE_FLAGS
775 AC_SUBST([SOCKET_LIBS])
777 dnl Check for socklen_t
778 AH_TEMPLATE(socklen_t, [Define to `int' if <sys/socket.h> does not define.])
779 AC_CACHE_CHECK([for socklen_t in sys/socket.h], dnl ` (fix VIM syntax highlight
780 ac_cv_type_socklen_t,
781 [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([
782 [#include <sys/types.h>
783 #ifdef _WIN32
784 # include <winsock2.h>
785 # include <ws2tcpip.h>
786 #else
787 # include <sys/socket.h>
788 #endif]], [[socklen_t len; len = 0;]])],
789 ac_cv_type_socklen_t=yes,
790 ac_cv_type_socklen_t=no)])
791 AS_IF([test "$ac_cv_type_socklen_t" = no], [
792   AC_COMPILE_IFELSE([
793     AC_LANG_PROGRAM([[
794 #include <sys/types.h>
795 #ifdef _WIN32
796 # include <winsock2.h>
797 # include <ws2tcpip.h>
798 #else
799 # include <sys/socket.h>
800 #endif
801     ]], [[
802 _Generic(getpeername, int (*)(int, struct sockaddr *, int *): 0);
803     ]])
804   ], AC_DEFINE(socklen_t, int), AC_DEFINE(socklen_t, unsigned int))
807 dnl Check for struct sockaddr_storage
808 AH_TEMPLATE(sockaddr_storage, [Define to `sockaddr' if <sys/socket.h> does not define.]) dnl ` (fix VIM syntax highlight
809 AH_TEMPLATE(ss_family, [Define to `sa_family' if <sys/socket.h> does not define.]) dnl ` (fix VIM syntax highlight
810 AC_CACHE_CHECK([for struct sockaddr_storage], ac_cv_struct_sockaddr_storage,
811   [AC_TRY_COMPILE(
812     [#include <sys/types.h>
813      #if defined( _WIN32 )
814      # include <winsock2.h>
815      #else
816      # include <sys/socket.h>
817      #endif], [struct sockaddr_storage addr;],
818      ac_cv_struct_sockaddr_storage=yes,
819      ac_cv_struct_sockaddr_storage=no)])
820 AS_IF([test "${ac_cv_struct_sockaddr_storage}" = no], [
821   AC_DEFINE(sockaddr_storage, sockaddr)
822   AC_DEFINE(ss_family, sa_family)
825 dnl FreeBSD has a gnugetopt library for this:
826 GNUGETOPT_LIBS=""
827 AC_CHECK_FUNC(getopt_long,, [
828   AC_CHECK_LIB([gnugetopt],[getopt_long], [
829     GNUGETOPT_LIBS="-lgnugetopt"
830   ])
832 AC_SUBST([GNUGETOPT_LIBS])
834 AC_CHECK_LIB([m], [cos], [
835   LIBM="-lm"
836 ], [
837   LIBM=""
839 AC_SUBST([LIBM])
841 AC_CHECK_LIB([m], [lrintf], [
842   AC_DEFINE(HAVE_LRINTF, 1, [Define to 1 if you have the lrintf function])
843   VLC_ADD_LIBS([skins2],[-lm])
845 AC_CHECK_LIB([m], [nanf],
846   AC_DEFINE(HAVE_NANF, 1, [Define to 1 if you have the NANF function])
848 AC_CHECK_LIB([m], [sincos], [
849   AC_DEFINE(HAVE_SINCOS, 1, [Define to 1 if you have the sincos function.])
850 ], [
851   AC_LIBOBJ([sincos])
854 AC_MSG_CHECKING([broken qsort_r prototype])
855 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([#include <stdlib.h>
857 _Static_assert(_Generic((qsort_r),
858     void (*)(void *, size_t, size_t, void *,
859              int (*)(void *, const void *, const void *)) : 1, default: 0),
860     "Bad prototype not matched");
861 ])], [
862   AC_MSG_RESULT([broken])
863   AC_DEFINE([HAVE_BROKEN_QSORT_R], 1, [Defined to 1 if the qsort_r() prototype contradicts the upcoming POSIX standard.])
864 ], [
865   AC_MSG_RESULT([no])
868 AC_MSG_CHECKING([_Thread_local support])
869 AC_COMPILE_IFELSE([AC_LANG_SOURCE([_Thread_local int foo = 0;
870                    int main() {}])], [
871     AC_MSG_RESULT([ok])
872     AC_DEFINE(HAVE_THREAD_LOCAL, 1, [Defined to 1 if C11 _Thread_local storage qualifier is supported])
873 ],[ AC_MSG_RESULT([no])])
875 dnl __STDC_NO_THREADS__ can't be trusted on some platforms.
876 dnl check for its availability explicitely
877 AC_CHECK_HEADERS([threads.h])
879 AC_CHECK_LIB([anl],[getaddrinfo_a],[
880   AC_DEFINE(HAVE_LIBANL, 1, [Define to 1 if you have the anl library])
883 dnl Check for dynamic plugins
884 LIBDL=""
885 have_dynamic_objects="no"
886 VLC_SAVE_FLAGS
887 AC_SEARCH_LIBS(dlsym, [dl svld], [
888   AS_IF([test "$ac_cv_search_dlsym" != "none required"], [
889     LIBDL="$ac_cv_search_dlsym"
890   ])
891   have_dynamic_objects="yes"
893 VLC_RESTORE_FLAGS
895 # Windows
896 AS_IF([test "${SYS}" = "mingw32"], [
897   LIBDL=""
898   have_dynamic_objects="yes" #assume we can use shared objects
901 AC_ARG_WITH([libfuzzer],
902     AS_HELP_STRING([--with-libfuzzer=DIR],
903         [use libFuzzer library from DIR and triggers sanitize coverage (default disabled)]),
904      [],
905      [with_libfuzzer=no])
906 AS_VAR_IF(with_libfuzzer, no, [], [
907     enable_shared=no
908     enable_static=yes
909     enable_vlc=no
911 AM_CONDITIONAL([HAVE_LIBFUZZER], [test "${with_libfuzzer}" != "no"])
913 AS_IF([test "${enable_shared}" = "no"], [
914   have_dynamic_objects=no
916 AM_CONDITIONAL([HAVE_DYNAMIC_PLUGINS], [test "${have_dynamic_objects}" != "no"])
918 AC_SUBST([LIBDL])
920 AS_IF([test "${SYS}" != "mingw32"], [
921   AC_SEARCH_LIBS([clock_nanosleep], [rt pthread], [
922     AS_IF([test "$ac_cv_search_clock_nanosleep" != "none required"], [
923       LIBRT="$ac_cv_search_clock_nanosleep"
924     ])
925   ], [
926     AC_SEARCH_LIBS([nanosleep], [rt pthread posix4], [
927       AS_IF([test "$ac_cv_search_nanosleep" != "none required"], [
928         LIBRT="$ac_cv_search_nanosleep"
929       ])
930     ])
931   ])
933 AC_SUBST([LIBRT])
935 dnl  Check for clock_* functions, needs to be done here,
936 dnl  after the -lrt check
937 AC_REPLACE_FUNCS([clock_gettime clock_nanosleep clock_getres])
940 dnl Check for headers
943 dnl  POSIX
944 AC_CHECK_HEADERS([arpa/inet.h pthread.h search.h sys/shm.h sys/socket.h sys/uio.h])
945 AC_CHECK_HEADERS([net/if.h], [], [],
947 #include <sys/types.h>
948 #include <sys/socket.h>
950 AC_CHECK_HEADER([syslog.h], [have_syslog="yes"], [have_syslog="no"])
951 AM_CONDITIONAL([HAVE_SYSLOG], [test "$have_syslog" = "yes"])
953 dnl  BSD
954 AC_CHECK_HEADERS([netinet/tcp.h netinet/udplite.h sys/param.h sys/mount.h])
956 dnl  GNU/Linux
957 AC_CHECK_HEADERS([features.h getopt.h linux/dccp.h linux/magic.h sys/eventfd.h])
959 dnl  MacOS
960 AC_CHECK_HEADERS([xlocale.h])
962 dnl Check if C++ headers define locale_t
963 AC_LANG_PUSH(C++)
964 AC_CACHE_CHECK([if C++ headers define locale_t],
965   [ac_cv_cxx_locale_t],
966   [ac_cv_cxx_locale_t=no
967    AC_TRY_COMPILE([#include <locale>], [locale_t loc;],
968                     [ac_cv_cxx_locale_t=yes])])
969 if test "${ac_cv_cxx_locale_t}" != "no"; then
970   AC_DEFINE(HAVE_CXX_LOCALE_T, 1, Define to 1 if C++ headers define locale_t)
972 AC_LANG_POP(C++)
974 dnl LP64 and LLP64 architectures had better define ssize_t by themselves...
975 AH_TEMPLATE(ssize_t, [Define to `int' if <stddef.h> does not define.]) dnl ` (fix VIM syntax highlight
976 AC_CHECK_TYPE(ssize_t,, [
977   AC_DEFINE(ssize_t, int)
980 dnl It seems that autoconf detects pkg-config only during the first
981 dnl PKG_CHECK_MODULES from configure.ac - which makes sense. But in our case,
982 dnl it is nested within a conditional block, so it was not working right.
983 PKG_PROG_PKG_CONFIG()
985 dnl On some OS we need static linking
986 AS_IF([test -n "${PKG_CONFIG}" ],[
987     AS_IF([test "${SYS}" = "mingw32" -o "${SYS}" = "darwin" -o "${SYS}" = "os2" ],[
988         PKG_CONFIG="${PKG_CONFIG} --static"
989     ])
994 dnl Check for zlib.h and -lz if available
996 AC_CHECK_HEADERS([zlib.h], [ have_zlib=yes ], [ have_zlib=no ])
997 AM_CONDITIONAL([HAVE_ZLIB], [ test "${have_zlib}" = "yes" ])
998 if test "${have_zlib}" = "yes"
999 then
1000   VLC_ADD_LIBS([sap],[-lz])
1005 dnl Domain name i18n support via GNU libidn
1007 PKG_CHECK_MODULES([IDN], [libidn], [
1008   have_libidn="yes"
1009   AC_DEFINE([HAVE_IDN], 1, [Define to 1 if you have GNU libidn.])
1010 ], [
1011   have_libidn="no"
1015 dnl Check for dbus
1016 AC_ARG_ENABLE([dbus],
1017   AS_HELP_STRING([--enable-dbus],
1018     [compile D-Bus message bus support (default enabled)]))
1019 have_dbus="no"
1020 AS_IF([test "${enable_dbus}" != "no"], [
1021   PKG_CHECK_MODULES(DBUS, [dbus-1 >= 1.6.0], [
1022     have_dbus="yes"
1023   ], [
1024     AS_IF([test -n "${enable_dbus}"], [
1025       AC_MSG_ERROR([${DBUS_PKG_ERRORS}.])
1026     ], [
1027       AC_MSG_WARN([${DBUS_PKG_ERRORS}.])
1028     ])
1029   ])
1031 AM_CONDITIONAL([HAVE_DBUS], [test "${have_dbus}" = "yes"])
1034 dnl Check for systemd
1035 PKG_CHECK_MODULES([SYSTEMD], [libsystemd], [
1036   have_systemd="yes"
1037 ], [
1038   AC_MSG_WARN([${SYSTEMD_PKG_ERRORS}.])
1040 AM_CONDITIONAL([HAVE_SYSTEMD], [test "${have_systemd}" = "yes"])
1043 EXTEND_HELP_STRING([Optimization options:])
1045 dnl  Compiler warnings
1048 AX_APPEND_COMPILE_FLAGS([-Wall -Wextra -Wsign-compare -Wundef -Wpointer-arith -Wvolatile-register-var -Wformat -Wformat-security -Wduplicated-branches -Wduplicated-cond], [CFLAGS])
1049 AX_APPEND_COMPILE_FLAGS([-Wall -Wextra -Wsign-compare -Wundef -Wpointer-arith -Wvolatile-register-var -Wformat -Wformat-security -Wduplicated-branches -Wduplicated-cond], [CXXFLAGS])
1051 AX_APPEND_COMPILE_FLAGS([-Wbad-function-cast -Wwrite-strings -Wmissing-prototypes -Werror-implicit-function-declaration -Winit-self -Wlogical-op -Wshadow=local -Wmultistatement-macros], [CFLAGS])
1052 AX_APPEND_COMPILE_FLAGS([-pipe], [CFLAGS])
1055 dnl  Debugging mode
1057 AC_ARG_ENABLE([debug],
1058   AS_HELP_STRING([--disable-debug],
1059     [disable run-time assertions (default enabled)]),,
1060   [enable_debug="yes"])
1061 AH_TEMPLATE(NDEBUG,
1062             [Define to 1 if debug code should NOT be compiled])
1063 AS_IF([test "${enable_debug}" != "no"], [
1064   AC_CHECK_HEADERS([valgrind/valgrind.h])
1065 ], [
1066   AC_DEFINE(NDEBUG)
1070 dnl  Profiling
1072 AC_ARG_ENABLE([gprof],
1073   AS_HELP_STRING([--enable-gprof],[profile with gprof (default disabled)]),,
1074   [enable_gprof="no"])
1075 AS_IF([test "${enable_gprof}" != "no"], [
1076   CFLAGS="${CFLAGS} -pg"
1077   CXXFLAGS="${CXXFLAGS} -pg"
1078   OBJCFLAGS="${OBJCFLAGS} -pg"
1079   LDFLAGS="${LDFLAGS} -pg"
1082 AC_ARG_ENABLE([cprof],
1083   AS_HELP_STRING([--enable-cprof],[profile with cprof (default disabled)]),,
1084   [enable_cprof="no"])
1085 AS_IF([test "${enable_gprof}" != "no"], [
1086   CFLAGS="${CFLAGS} -finstrument-functions"
1087   CXXFLAGS="${CXXFLAGS} -finstrument-functions"
1088   OBJCFLAGS="${OBJCFLAGS} -finstrument-functions"
1089   LDFLAGS="${LDFLAGS} -finstrument-functions"
1093 dnl  Test coverage
1095 AC_ARG_ENABLE([coverage],
1096   AS_HELP_STRING([--enable-coverage],
1097     [build for test coverage (default disabled)]),,
1098   [enable_coverage="no"])
1099 AS_IF([test "${enable_coverage}" != "no"], [
1100   CFLAGS="-fprofile-arcs -ftest-coverage ${CFLAGS}"
1101   CXXFLAGS="-fprofile-arcs -ftest-coverage ${CXXFLAGS}"
1102   LDFLAGS="-lgcov ${LDFLAGS}"
1105 AS_IF([test "${SYS}" != "mingw32" -a "${SYS}" != "os2"], [
1106   VLC_SAVE_FLAGS
1107   CFLAGS="${CFLAGS} -fvisibility=hidden"
1108   CXXFLAGS="${CXXFLAGS} -fvisibility=hidden"
1109   OBJCFLAGS="${OBJCFLAGS} -fvisibility=hidden"
1110   AC_CACHE_CHECK([if $CC accepts -fvisibility=hidden],
1111                  [ac_cv_c_visibility_hidden], [
1112     AC_COMPILE_IFELSE([AC_LANG_PROGRAM()], [
1113       ac_cv_c_visibility_hidden=yes
1114     ], [
1115       ac_cv_c_visibility_hidden=no
1116     ])
1117   ])
1118   AS_IF([test "${ac_cv_c_visibility_hidden}" = "no"], [VLC_RESTORE_FLAGS])
1122 dnl Sanitizer flags
1124 AC_ARG_WITH([sanitizer],
1125     AS_HELP_STRING([--with-sanitizer=(address/memory/undefined/thread)],
1126         [build with sanitizer flags (default disabled)]),
1127      [],
1128      [with_sanitizer=no])
1130 AS_VAR_IF(with_sanitizer, no, [], [
1131     AX_CHECK_COMPILE_FLAG([-fsanitize=${with_sanitizer}], [
1132         AX_APPEND_FLAG([-fsanitize=${with_sanitizer}])
1133         AX_APPEND_FLAG([-fsanitize=${with_sanitizer}], [CXXFLAGS])
1134         AX_APPEND_FLAG([-fsanitize=${with_sanitizer}], [LDFLAGS])
1135     ], [
1136         AC_MSG_ERROR(["-fsanitize=${with_sanitizer} not supported!"])
1137     ])
1138     AX_APPEND_FLAG([-g])
1139     AX_APPEND_FLAG([-g], [CXXFLAGS])
1141     AS_IF([test -z "${with_sanitizer##*address*}" ], [
1142        AX_APPEND_COMPILE_FLAGS([-fsanitize-address-use-after-scope -fno-omit-frame-pointer -fsanitize=pointer-compare -fsanitize=pointer-subtract])
1143        AX_APPEND_COMPILE_FLAGS([-fsanitize-address-use-after-scope -fno-omit-frame-pointer -fsanitize=pointer-compare -fsanitize=pointer-subtract], [CXXFLAGS])
1144     ])
1145     AS_IF([test -z "${with_sanitizer##*memory*}" ], [
1146         AX_APPEND_COMPILE_FLAGS([-fPIE -pie])
1147         AX_APPEND_COMPILE_FLAGS([-fPIE -pie], [CXXFLAGS])
1148     ])
1149     AS_IF([test -z "${with_sanitizer##*thread*}" ], [
1150         AX_APPEND_COMPILE_FLAGS([-fPIE -pie])
1151         AX_APPEND_COMPILE_FLAGS([-fPIE -pie], [CXXFLAGS])
1152     ])
1156 dnl  Enable/disable optimizations
1158 AC_ARG_ENABLE([optimizations],
1159   AS_HELP_STRING([--disable-optimizations],
1160     [disable compiler optimizations (default enabled)]),,
1161   [enable_optimizations="yes"])
1163 dnl Check for various optimization flags
1164 AS_IF([test "${enable_optimizations}" != "no"], [
1166   dnl -O3 only in production builds
1167   AS_IF([test "${enable_debug}" = "no"], [
1168     VLC_SAVE_FLAGS
1169     CFLAGS="${CFLAGS} -O3"
1170     CXXFLAGS="${CXXFLAGS} -O3"
1171     OBJCFLAGS="${OBJCFLAGS} -O3"
1172     AC_CACHE_CHECK([if $CC accepts -O3],  [ac_cv_c_o3], [
1173       AC_COMPILE_IFELSE([AC_LANG_PROGRAM()], [
1174         ac_cv_c_o3=yes
1175       ], [
1176         ac_cv_c_o3=no
1177       ])
1178     ])
1179     AS_IF([test "${ac_cv_c_o3}" = "no"], [VLC_RESTORE_FLAGS])
1180   ])
1182   dnl Check for fast maths
1183   AX_APPEND_COMPILE_FLAGS([-fno-math-errno -funsafe-math-optimizations -fno-rounding-math -fno-signaling-nans -fcx-limited-range], [CFLAGS])
1184   AX_APPEND_COMPILE_FLAGS([-fno-math-errno -funsafe-math-optimizations -fno-rounding-math -fno-signaling-nans -fcx-limited-range], [CXXFLAGS])
1186 AH_BOTTOM([
1187 #if defined(_MSC_VER) && !defined(__clang__)
1188 # pragma fenv_access(off)
1189 # pragma fp_contract(on)
1190 #elif defined(__GNUC__)
1191 /* Not supported so far */
1192 #else
1193 # pragma STDC FENV_ACCESS OFF
1194 # pragma STDC FP_CONTRACT ON
1195 #endif
1198   dnl Check for -funroll-loops
1199   VLC_SAVE_FLAGS
1200   CFLAGS="${CFLAGS} -funroll-loops"
1201   CXXFLAGS="${CXXFLAGS} -funroll-loops"
1202   OBJCFLAGS="${OBJCFLAGS} -funroll-loops"
1203   AC_CACHE_CHECK([if $CC accepts -funroll-loops], [ac_cv_c_unroll_loops], [
1204     AC_COMPILE_IFELSE([AC_LANG_PROGRAM()], [
1205       ac_cv_c_unroll_loops=yes
1206     ], [
1207       ac_cv_c_unroll_loops=no
1208     ])
1209   ])
1210   AS_IF([test "${ac_cv_c_unroll_loops}" = "no"], [VLC_RESTORE_FLAGS])
1212   AS_IF([test "$enable_debug" = "no"], [
1213     dnl Check for -fomit-frame-pointer
1214     VLC_SAVE_FLAGS
1215     CFLAGS="${CFLAGS} -fomit-frame-pointer"
1216     CXXFLAGS="${CXXFLAGS} -fomit-frame-pointer"
1217     OBJCFLAGS="${OBJCFLAGS} -fomit-frame-pointer"
1218     AC_CACHE_CHECK([if $CC accepts -fomit-frame-pointer],
1219       [ac_cv_c_omit_frame_pointer], [
1220       AC_COMPILE_IFELSE([AC_LANG_PROGRAM()], [
1221         ac_cv_c_omit_frame_pointer=yes
1222       ], [
1223         ac_cv_c_omit_frame_pointer=no
1224       ])
1225     ])
1226     AS_IF([test "${ac_cv_c_omit_frame_pointer}" = "no"], [VLC_RESTORE_FLAGS])
1227   ])
1231 AC_ARG_ENABLE([ssp],
1232   AS_HELP_STRING([--disable-ssp],
1233   [disable stack smashing protection (default enabled for optimized builds)]), [],
1234   [enable_ssp="yes"])
1236 AS_IF([test "${enable_ssp}" != "no" -a "${enable_optimizations}" != "no"], [
1237   VLC_SAVE_FLAGS
1238   AX_APPEND_COMPILE_FLAGS([-fstack-protector-strong])
1239   AX_APPEND_COMPILE_FLAGS([-fstack-protector-strong], [CXXFLAGS])
1240   dnl Win32 requires linking to ssp for stack-protection
1241   AS_IF([test "${SYS}" = "mingw32"], [
1242       LDFLAGS="${LDFLAGS} -lssp"
1243       AC_CACHE_CHECK([if linker supports stack protectors], [ac_cv_ld_ssp], [
1244         AC_TRY_LINK([#include <stdio.h>],[char buf[100]; fgets(buf, sizeof(buf), stdin);], [
1245           ac_cv_ld_ssp="yes"
1246         ], [
1247           ac_cv_ld_ssp="no"
1248         ])
1249       ])
1250       AS_IF([test "${ac_cv_ld_ssp}" = "no"], [VLC_RESTORE_FLAGS])
1251   ])
1254 AS_IF([test "${SYS}" = "mingw32"], [
1255     dnl library for BCrypt APIs
1256     AS_IF([test "${vlc_winstore_app}" = 1],
1257           VLC_ADD_LIBS([libvlccore], [-lbcrypt]))
1260 VLC_SAVE_FLAGS
1261 LDFLAGS="${LDFLAGS} -Wl,-Bsymbolic"
1262 AC_CACHE_CHECK([if linker supports -Bsymbolic], [ac_cv_ld_bsymbolic], [
1263   AC_TRY_LINK([],, [
1264     ac_cv_ld_bsymbolic="-Wl,-Bsymbolic"
1265   ], [
1266     ac_cv_ld_bsymbolic=""
1267   ])
1269 VLC_RESTORE_FLAGS
1270 SYMBOLIC_LDFLAGS="${ac_cv_ld_bsymbolic}"
1271 AC_SUBST([SYMBOLIC_LDFLAGS])
1273 VLC_SAVE_FLAGS
1274 LDFLAGS="${LDFLAGS} -Wl,-z,defs"
1275 AC_CACHE_CHECK([if linker supports -z,defs], [ac_cv_ld_z_defs], [
1276   AC_TRY_LINK([],, [
1277     ac_cv_ld_z_defs="yes"
1278   ], [
1279     ac_cv_ld_z_defs="no"
1280   ])
1282 AS_IF([test "${ac_cv_ld_z_defs}" = "no"], [VLC_RESTORE_FLAGS])
1284 dnl Check for __attribute__((packed))
1285 AC_CACHE_CHECK([for __attribute__((packed))],
1286   [ac_cv_c_attribute_packed],
1287   [ac_cv_c_attribute_packed=no
1288    AC_TRY_COMPILE(, [struct __attribute__((__packed__)) foo { int a; } b; (void)b;],
1289                     [ac_cv_c_attribute_packed=yes])])
1290 if test "${ac_cv_c_attribute_packed}" != "no"; then
1291   AC_DEFINE(HAVE_ATTRIBUTE_PACKED, 1, Support for __attribute__((packed)) for structs)
1295 dnl  Check the CPU
1297 case "${host_cpu}" in
1298   "")
1299     ARCH=unknown
1300     ;;
1301   armv*)
1302     ARCH="arm"
1303     host_cpu="arm"
1304     ;;
1305   *)
1306     ARCH="${host_cpu}"
1307     ;;
1308 esac
1310 dnl Check for backtrace() support
1311 AC_CHECK_HEADERS([execinfo.h])
1312 AC_CHECK_FUNCS([backtrace])
1315 dnl  default modules
1317 ALIASES="${ALIASES} cvlc rvlc"
1320 dnl  Accelerated modules
1323 dnl  Check for fully working MMX intrinsics
1324 dnl  We need support for -mmmx, we need <mmintrin.h>, and we also need a
1325 dnl  working compiler (http://gcc.gnu.org/bugzilla/show_bug.cgi?id=23963)
1326 AC_ARG_ENABLE([mmx],
1327   AS_HELP_STRING([--disable-mmx],
1328     [disable MMX optimizations (default auto)]),,[
1329   case "${host_cpu}" in
1330     i?86|x86_64)
1331       enable_mmx="yes"
1332       ;;
1333     *)
1334       enable_mmx="no"
1335       ;;
1336   esac
1338 have_mmx="no"
1339 have_mmxext="no"
1340 AS_IF([test "${enable_mmx}" != "no"], [
1341   ARCH="${ARCH} mmx"
1342   VLC_SAVE_FLAGS
1343   CFLAGS="${CFLAGS} -mmmx"
1344   AC_CACHE_CHECK([if $CC groks MMX intrinsics], [ac_cv_c_mmx_intrinsics], [
1345     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([
1346 [#include <mmintrin.h>
1347 #include <stdint.h>
1348 uint64_t frobzor;]], [
1349 [__m64 a, b, c;
1350 a = b = c = (__m64)frobzor;
1351 a = _mm_slli_pi16(a, 3);
1352 a = _mm_adds_pi16(a, b);
1353 c = _mm_srli_pi16(c, 8);
1354 c = _mm_slli_pi16(c, 3);
1355 b = _mm_adds_pi16(b, c);
1356 a = _mm_unpacklo_pi8(a, b);
1357 frobzor = (uint64_t)a;]])], [
1358       ac_cv_c_mmx_intrinsics=yes
1359     ], [
1360       ac_cv_c_mmx_intrinsics=no
1361     ])
1362   ])
1363   VLC_RESTORE_FLAGS
1364   AS_IF([test "${ac_cv_c_mmx_intrinsics}" != "no"], [
1365     AC_DEFINE(HAVE_MMX_INTRINSICS, 1, [Define to 1 if MMX intrinsics are available.])
1366   ])
1368   VLC_SAVE_FLAGS
1369   CFLAGS="${CFLAGS} -mmmx"
1370   AC_CACHE_CHECK([if $CC groks MMX inline assembly], [ac_cv_mmx_inline], [
1371     AC_COMPILE_IFELSE([AC_LANG_PROGRAM(,[[
1372 void *p;
1373 asm volatile("packuswb %%mm1,%%mm2"::"r"(p):"mm1", "mm2");
1375     ], [
1376       ac_cv_mmx_inline=yes
1377     ], [
1378       ac_cv_mmx_inline=no
1379     ])
1380   ])
1381   AS_IF([test "${ac_cv_mmx_inline}" != "no"], [
1382     AC_DEFINE(CAN_COMPILE_MMX, 1, [Define to 1 inline MMX assembly is available.])
1383     have_mmx="yes"
1384   ])
1386   AC_CACHE_CHECK([if $CC groks MMX EXT inline assembly],
1387                  [ac_cv_mmxext_inline], [
1388     AC_COMPILE_IFELSE([AC_LANG_PROGRAM(,[[
1389 void *p;
1390 asm volatile("maskmovq %%mm1,%%mm2"::"r"(p):"mm1", "mm2");
1392     ], [
1393       ac_cv_mmxext_inline=yes
1394     ], [
1395       ac_cv_mmxext_inline=no
1396     ])
1397   ])
1398   VLC_RESTORE_FLAGS
1399   AS_IF([test "${ac_cv_mmxext_inline}" != "no"], [
1400     AC_DEFINE(CAN_COMPILE_MMXEXT, 1, [Define to 1 if MMX EXT inline assembly is available.])
1401     have_mmxext="yes"
1402   ])
1404 AM_CONDITIONAL([HAVE_MMX], [test "${have_mmx}" = "yes"])
1405 AM_CONDITIONAL([HAVE_MMXEXT], [test "${have_mmxext}" = "yes"])
1407 dnl  Check for fully workin SSE2 intrinsics
1408 dnl  We need support for -msse[2], we need <emmintrin.h>, and we also need a
1409 dnl  working compiler (http://gcc.gnu.org/bugzilla/show_bug.cgi?id=23963)
1410 AC_ARG_ENABLE([sse],
1411   AS_HELP_STRING([--disable-sse],
1412     [disable SSE (1-4) optimizations (default auto)]),, [
1413   case "${host_cpu}" in
1414     i?86|x86_64)
1415       enable_sse=yes
1416       ;;
1417     *)
1418       enable_sse=no
1419       ;;
1420   esac
1422 have_sse2="no"
1423 AS_IF([test "${enable_sse}" != "no"], [
1424   ARCH="${ARCH} sse sse2"
1426   VLC_SAVE_FLAGS
1427   CFLAGS="${CFLAGS} -msse2"
1428   AC_CACHE_CHECK([if $CC groks SSE2 intrinsics], [ac_cv_c_sse2_intrinsics], [
1429     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([
1430 [#include <emmintrin.h>
1431 #include <stdint.h>
1432 uint64_t frobzor;]], [
1433 [__m128i a, b, c;
1434 a = b = c = _mm_set1_epi64((__m64)frobzor);
1435 a = _mm_slli_epi16(a, 3);
1436 a = _mm_adds_epi16(a, b);
1437 c = _mm_srli_epi16(c, 8);
1438 c = _mm_slli_epi16(c, 3);
1439 b = _mm_adds_epi16(b, c);
1440 a = _mm_unpacklo_epi8(a, b);
1441 frobzor = (uint64_t)_mm_movepi64_pi64(a);]])], [
1442       ac_cv_c_sse2_intrinsics=yes
1443     ], [
1444       ac_cv_c_sse2_intrinsics=no
1445     ])
1446   ])
1447   VLC_RESTORE_FLAGS
1448   AS_IF([test "${ac_cv_c_sse2_intrinsics}" != "no"], [
1449     AC_DEFINE(HAVE_SSE2_INTRINSICS, 1, [Define to 1 if SSE2 intrinsics are available.])
1450   ])
1452   VLC_SAVE_FLAGS
1453   CFLAGS="${CFLAGS} -msse"
1454   AC_CACHE_CHECK([if $CC groks SSE inline assembly], [ac_cv_sse_inline], [
1455     AC_COMPILE_IFELSE([AC_LANG_PROGRAM(,[[
1456 void *p;
1457 asm volatile("xorps %%xmm1,%%xmm2"::"r"(p):"xmm1", "xmm2");
1459     ], [
1460       ac_cv_sse_inline=yes
1461     ], [
1462       ac_cv_sse_inline=no
1463     ])
1464   ])
1466   AS_IF([test "${ac_cv_sse_inline}" != "no" -a "${SYS}" != "solaris"], [
1467     AC_DEFINE(CAN_COMPILE_SSE, 1, [Define to 1 if SSE inline assembly is available.])
1468   ])
1470   AC_CACHE_CHECK([if $CC groks SSE2 inline assembly], [ac_cv_sse2_inline], [
1471     AC_COMPILE_IFELSE([AC_LANG_PROGRAM(,[[
1472 void *p;
1473 asm volatile("punpckhqdq %%xmm1,%%xmm2"::"r"(p):"xmm1", "xmm2");
1475     ], [
1476       ac_cv_sse2_inline=yes
1477     ], [
1478       ac_cv_sse2_inline=no
1479     ])
1480   ])
1481   AS_IF([test "${ac_cv_sse2_inline}" != "no" -a "${SYS}" != "solaris"], [
1482     AC_DEFINE(CAN_COMPILE_SSE2, 1, [Define to 1 if SSE2 inline assembly is available.])
1483     have_sse2="yes"
1484   ])
1486   # SSE3
1487   AC_CACHE_CHECK([if $CC groks SSE3 inline assembly], [ac_cv_sse3_inline], [
1488     AC_COMPILE_IFELSE([AC_LANG_PROGRAM(,[[
1489 void *p;
1490 asm volatile("movsldup %%xmm1,%%xmm0"::"r"(p):"xmm0", "xmm1");
1492     ], [
1493       ac_cv_sse3_inline=yes
1494     ], [
1495       ac_cv_sse3_inline=no
1496     ])
1497   ])
1499   AS_IF([test "${ac_cv_sse3_inline}" != "no"], [
1500     AC_DEFINE(CAN_COMPILE_SSE3, 1, [Define to 1 if SSE3 inline assembly is available.]) ])
1502   # SSSE3
1503   AC_CACHE_CHECK([if $CC groks SSSE3 inline assembly], [ac_cv_ssse3_inline], [
1504     AC_COMPILE_IFELSE([AC_LANG_PROGRAM(,[[
1505 void *p;
1506 asm volatile("pabsw %%xmm0,%%xmm0"::"r"(p):"xmm0");
1508     ], [
1509       ac_cv_ssse3_inline=yes
1510     ], [
1511       ac_cv_ssse3_inline=no
1512     ])
1513   ])
1515   AS_IF([test "${ac_cv_ssse3_inline}" != "no"], [
1516     AC_DEFINE(CAN_COMPILE_SSSE3, 1, [Define to 1 if SSSE3 inline assembly is available.]) ])
1518   # SSE4.1
1519   AC_CACHE_CHECK([if $CC groks SSE4.1 inline assembly],
1520                  [ac_cv_sse4_1_inline], [
1521     AC_COMPILE_IFELSE([AC_LANG_PROGRAM(,[[
1522 void *p;
1523 asm volatile("pmaxsb %%xmm1,%%xmm0"::"r"(p):"xmm0", "xmm1");
1525     ], [
1526       ac_cv_sse4_1_inline=yes
1527     ], [
1528       ac_cv_sse4_1_inline=no
1529     ])
1530   ])
1532   AS_IF([test "${ac_cv_sse4_1_inline}" != "no"], [
1533     AC_DEFINE(CAN_COMPILE_SSE4_1, 1, [Define to 1 if SSE4_1 inline assembly is available.]) ])
1535   # SSE4.2
1536   AC_CACHE_CHECK([if $CC groks SSE4.2 inline assembly],
1537                  [ac_cv_sse4_2_inline], [
1538     AC_COMPILE_IFELSE([AC_LANG_PROGRAM(,[[
1539 void *p;
1540 asm volatile("pcmpgtq %%xmm1,%%xmm0"::"r"(p):"xmm0", "xmm1");
1542     ], [
1543       ac_cv_sse4_2_inline=yes
1544     ], [
1545       ac_cv_sse4_2_inline=no
1546     ])
1547   ])
1549   AS_IF([test "${ac_cv_sse4_2_inline}" != "no"], [
1550     AC_DEFINE(CAN_COMPILE_SSE4_2, 1, [Define to 1 if SSE4_2 inline assembly is available.]) ])
1552   # SSE4A
1553   AC_CACHE_CHECK([if $CC groks SSE4A inline assembly], [ac_cv_sse4a_inline], [
1554     AC_COMPILE_IFELSE([AC_LANG_PROGRAM(,[[
1555 void *p;
1556 asm volatile("insertq %%xmm1,%%xmm0"::"r"(p):"xmm0", "xmm1");
1558     ], [
1559       ac_cv_sse4a_inline=yes
1560     ], [
1561       ac_cv_sse4a_inline=no
1562     ])
1563   ])
1564   VLC_RESTORE_FLAGS
1565   AS_IF([test "${ac_cv_sse4a_inline}" != "no"], [
1566     AC_DEFINE([CAN_COMPILE_SSE4A], [1], [Define to 1 if SSE4A inline assembly is available.]) ])
1568 AM_CONDITIONAL([HAVE_SSE2], [test "$have_sse2" = "yes"])
1570 dnl  Check for fully workin AVX2 intrinsics
1571 dnl  We need support for -mavx[2], we need <immintrin.h>, and we also need a
1572 dnl  working compiler (http://gcc.gnu.org/bugzilla/show_bug.cgi?id=23963)
1573 AC_ARG_ENABLE([avx],
1574   AS_HELP_STRING([--disable-avx],
1575     [disable AVX (1-2) optimizations (default auto)]),, [
1576   case "${host_cpu}" in
1577     i?86|x86_64)
1578       enable_avx=yes
1579       ;;
1580     *)
1581       enable_avx=no
1582       ;;
1583   esac
1585 have_avx2="no"
1586 AS_IF([test "${enable_avx}" != "no"], [
1587   ARCH="${ARCH} avx avx2"
1589   VLC_SAVE_FLAGS
1590   CFLAGS="${CFLAGS} -mavx2"
1591   AC_CACHE_CHECK([if $CC groks AVX2 intrinsics], [ac_cv_c_avx2_intrinsics], [
1592     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([
1593 [#include <immintrin.h>
1594 #include <stdint.h>
1595 uint64_t frobzor;]], [
1596 [__m256i a, b, c;
1597 a = b = c = _mm256_set1_epi64x((int64_t)frobzor);
1598 a = _mm256_slli_epi16(a, 3);
1599 a = _mm256_adds_epi16(a, b);
1600 c = _mm256_srli_epi16(c, 8);
1601 c = _mm256_slli_epi16(c, 3);
1602 b = _mm256_adds_epi16(b, c);
1603 a = _mm256_unpacklo_epi8(a, b);
1604 frobzor = (uint64_t)_mm256_extract_epi64(a, 0);]])], [
1605       ac_cv_c_avx2_intrinsics=yes
1606     ], [
1607       ac_cv_c_avx2_intrinsics=no
1608     ])
1609   ])
1610   VLC_RESTORE_FLAGS
1611   AS_IF([test "${ac_cv_c_avx2_intrinsics}" != "no"], [
1612     AC_DEFINE(HAVE_AVX2_INTRINSICS, 1, [Define to 1 if AVX2 intrinsics are available.])
1613   ])
1615   VLC_SAVE_FLAGS
1616   CFLAGS="${CFLAGS} -mavx"
1617   AC_CACHE_CHECK([if $CC groks AVX inline assembly], [ac_cv_avx_inline], [
1618     AC_COMPILE_IFELSE([AC_LANG_PROGRAM(,[[
1619 void *p;
1620 asm volatile("xorps256 %%ymm1,%%ymm2"::"r"(p):"ymm1", "ymm2");
1622     ], [
1623       ac_cv_avx_inline=yes
1624     ], [
1625       ac_cv_avx_inline=no
1626     ])
1627   ])
1629   AS_IF([test "${ac_cv_avx_inline}" != "no" -a "${SYS}" != "solaris"], [
1630     AC_DEFINE(CAN_COMPILE_AVX, 1, [Define to 1 if AVX inline assembly is available.])
1631   ])
1633   AC_CACHE_CHECK([if $CC groks AVX2 inline assembly], [ac_cv_avx2_inline], [
1634     AC_COMPILE_IFELSE([AC_LANG_PROGRAM(,[[
1635 void *p;
1636 asm volatile("punpckhqdq256 %%ymm1,%%ymm2"::"r"(p):"ymm1", "ymm2");
1638     ], [
1639       ac_cv_avx2_inline=yes
1640     ], [
1641       ac_cv_avx2_inline=no
1642     ])
1643   ])
1644   VLC_RESTORE_FLAGS
1645   AS_IF([test "${ac_cv_avx2_inline}" != "no" -a "${SYS}" != "solaris"], [
1646     AC_DEFINE(CAN_COMPILE_AVX2, 1, [Define to 1 if AVX2 inline assembly is available.])
1647     have_avx2="yes"
1648   ])
1650 AM_CONDITIONAL([HAVE_AVX2], [test "$have_avx2" = "yes"])
1652 VLC_SAVE_FLAGS
1653 CFLAGS="${CFLAGS} -mmmx"
1654 have_3dnow="no"
1655 AC_CACHE_CHECK([if $CC groks 3D Now! inline assembly], [ac_cv_3dnow_inline], [
1656   AC_COMPILE_IFELSE([AC_LANG_PROGRAM(,[[
1657 void *p;
1658 asm volatile("pfadd %%mm1,%%mm2"::"r"(p):"mm1", "mm2");
1660   ], [
1661     ac_cv_3dnow_inline=yes
1662   ], [
1663     ac_cv_3dnow_inline=no
1664   ])
1666 VLC_RESTORE_FLAGS
1667 AS_IF([test "${ac_cv_3dnow_inline}" != "no"], [
1668   AC_DEFINE([CAN_COMPILE_3DNOW], 1,
1669             [Define to 1 if 3D Now! inline assembly is available.])
1670   have_3dnow="yes"
1672 AM_CONDITIONAL([HAVE_3DNOW], [test "$have_3dnow" = "yes"])
1675 AC_ARG_ENABLE([neon],
1676   AS_HELP_STRING([--disable-neon],
1677     [disable ARM NEON optimizations (default auto)]),, [
1678   case "${host_cpu}" in
1679     "arm")
1680       enable_neon="32"
1681       ;;
1682     "aarch64")
1683       enable_neon="64"
1684       ;;
1685     *)
1686       enable_neon="no"
1687       ;;
1688   esac
1690 AS_IF([test "${enable_neon}" != "no"], [
1691   VLC_SAVE_FLAGS
1692   AC_CACHE_CHECK([if $CCAS groks ARM NEON assembly], [ac_cv_arm_neon], [
1693     AS_IF([test "${enable_neon}" != "64"], [
1694       CFLAGS="${CFLAGS} -mfpu=neon -mhard-float"
1695       AC_COMPILE_IFELSE([
1696         AC_LANG_PROGRAM(,[[
1697 asm volatile("vqmovun.s64 d0, q1":::"d0");
1699       ], [
1700         ac_cv_arm_neon="32"
1701       ], [
1702         ac_cv_arm_neon="no"
1703       ])
1704     ], [
1705       CFLAGS="${CFLAGS} -march=armv8-a+simd"
1706       AC_COMPILE_IFELSE([
1707         AC_LANG_PROGRAM(,[[
1708 asm volatile("uhadd v0.8b, v0.8b, v1.8b":::"v0");
1710       ], [
1711         ac_cv_arm_neon="64"
1712       ], [
1713         ac_cv_arm_neon="no"
1714       ])
1715     ])
1716   ])
1717   VLC_RESTORE_FLAGS
1719 AM_CONDITIONAL([HAVE_NEON], [test "${ac_cv_arm_neon}" = "32"])
1720 AM_CONDITIONAL([HAVE_ARM64], [test "${ac_cv_arm_neon}" = "64"])
1722 AC_ARG_ENABLE([sve],
1723   AS_HELP_STRING([--disable-sve],
1724     [disable ARM SVE optimizations (default auto)]),, [
1725   AS_IF([test "${host_cpu}" = "aarch64"], [enable_sve="yes"] ,[enable_sve="no"])
1727 AS_IF([test "${enable_sve}" != "no"], [
1728   VLC_SAVE_FLAGS
1729   CFLAGS="${CFLAGS} -march=armv8-a+sve"
1730   AC_CACHE_CHECK([if $CCAS groks ARM SVE assembly], [ac_cv_arm_sve], [
1731     AC_COMPILE_IFELSE([
1732       AC_LANG_PROGRAM(,[[
1733 asm volatile("ptrue p0.s" ::: "p0");
1735     ], [
1736       ac_cv_arm_sve="yes"
1737     ], [
1738       ac_cv_arm_sve="no"
1739     ])
1740   ])
1741   VLC_RESTORE_FLAGS
1743 AM_CONDITIONAL([HAVE_SVE], [test "${ac_cv_arm_sve}" = "yes"])
1745 AC_ARG_ENABLE([branch-protection],
1746   AS_HELP_STRING([--disable-branch-protection],
1747     [disable AArch64 branch protection (default auto)]),, [
1748   AS_IF([test "${host_cpu}" = "aarch64"],
1749     [enable_branch_protection="yes"], [enable_branch_protection="no"])
1751 AS_IF([test "${enable_branch_protection}" != "no"], [
1752   AX_CHECK_COMPILE_FLAG([-mbranch-protection=standard], [
1753     AX_APPEND_FLAG([-mbranch-protection=standard], [CFLAGS])
1754     AX_APPEND_FLAG([-mbranch-protection=standard], [CXXFLAGS])
1755   ])
1759 AC_ARG_ENABLE([altivec],
1760   AS_HELP_STRING([--disable-altivec],
1761     [disable AltiVec optimizations (default auto)]),, [
1762   AS_CASE("${host_cpu}", [powerpc*],
1763         [enable_altivec=yes], [enable_altivec=no])
1765 have_altivec="no"
1766 ALTIVEC_CFLAGS=""
1767 AS_IF([test "${enable_altivec}" = "yes"], [
1768   ARCH="${ARCH} altivec";
1769   VLC_SAVE_FLAGS
1770   AC_CACHE_CHECK([if $CC groks AltiVec inline assembly],
1771     [ac_cv_altivec_inline],
1772     [AC_TRY_COMPILE(,[asm volatile("vperm 0,1,2,3");],
1773          ac_cv_altivec_inline="yes",
1774          [CFLAGS="${CFLAGS} -Wa,-maltivec"
1775           AC_TRY_COMPILE(,[asm volatile("vperm 0,1,2,3");],
1776             [ac_cv_altivec_inline="-Wa,-maltivec"],
1777             ac_cv_altivec_inline=no)
1778          ])])
1779   VLC_RESTORE_FLAGS
1780   AS_IF([test "${ac_cv_altivec_inline}" != "no"], [
1781     AC_DEFINE(CAN_COMPILE_ALTIVEC, 1,
1782               [Define to 1 if AltiVec inline assembly is available.])
1783     AS_IF([test "${ac_cv_altivec_inline}" != "yes"], [
1784       ALTIVEC_CFLAGS="${ac_cv_altivec_inline}"
1785       VLC_ADD_CFLAGS([libvlccore],[${ac_cv_altivec_inline}])
1786     ])
1787     have_altivec="yes"
1788   ])
1790   VLC_SAVE_FLAGS
1791   AC_CACHE_CHECK([if \$CC groks AltiVec C extensions],
1792   [ac_cv_c_altivec], [
1793     CFLAGS="${CFLAGS} -maltivec"
1794     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([
1795 [#include <altivec.h>]], [
1796 [vec_ld(0, (unsigned char *)0);]])], [
1797       ac_cv_c_altivec="-maltivec"
1798     ], [
1799       ac_cv_c_altivec="no"
1800     ])
1801   ])
1802   VLC_RESTORE_FLAGS
1803   AS_IF([test "${ac_cv_c_altivec}" != "no"], [
1804     CPPFLAGS="${CPPFLAGS} ${ac_cv_c_altivec}"
1805     AC_DEFINE(CAN_COMPILE_C_ALTIVEC, 1, [Define to 1 if C AltiVec extensions are available.])
1806     VLC_ADD_CFLAGS([libvlccore],[${ac_cv_c_altivec}])
1807     ALTIVEC_CFLAGS="$ALTIVEC_CFLAGS ${ac_cv_c_altivec}"
1808     VLC_ADD_CFLAGS([deinterlace],[${ac_cv_c_altivec}])
1809     have_altivec="yes"
1810   ])
1811   AC_CHECK_HEADERS([altivec.h])
1813   VLC_SAVE_FLAGS
1814   LDFLAGS="${LDFLAGS} -Wl,-framework,vecLib"
1815   AC_CACHE_CHECK([if linker needs -framework vecLib],
1816     [ac_cv_ld_altivec],
1817     [AC_TRY_LINK([],,ac_cv_ld_altivec=yes,ac_cv_ld_altivec=no)])
1818   VLC_RESTORE_FLAGS
1819   AS_IF([test "${ac_cv_ld_altivec}" != "no"], [
1820     VLC_ADD_LIBS([libvlccore],[-Wl,-framework,vecLib])
1821   ])
1823 AC_SUBST([ALTIVEC_CFLAGS])
1824 AM_CONDITIONAL([HAVE_ALTIVEC], [test "$have_altivec" = "yes"])
1827 dnl  Memory usage
1829 AC_ARG_ENABLE([optimize-memory],
1830   AS_HELP_STRING([--enable-optimize-memory],
1831     [optimize memory usage over performance]))
1832 if test "${enable_optimize_memory}" = "yes"; then
1833   AC_DEFINE(OPTIMIZE_MEMORY, 1, Define if you want to optimize memory usage over performance)
1837 dnl Allow running as root (useful for people running on embedded platforms)
1839 AC_ARG_ENABLE([run-as-root],
1840   AS_HELP_STRING([--enable-run-as-root],
1841     [allow running VLC as root (default disabled)]))
1842 AS_IF([test "${enable_run_as_root}" = "yes"],[
1843     AC_DEFINE(ALLOW_RUN_AS_ROOT, 1,
1844               [Define to 1 to allow running VLC as root (uid 0).])
1848 dnl Stream output
1850 AC_ARG_ENABLE([sout],
1851   AS_HELP_STRING([--disable-sout],
1852     [disable streaming output (default enabled)]))
1853 AS_IF([test "${enable_sout}" != "no"], [
1854   AC_DEFINE(ENABLE_SOUT, 1, [Define to 1 for stream output support.])
1856 AM_CONDITIONAL([ENABLE_SOUT], [test "${enable_sout}" != "no"])
1858 dnl Lua modules
1859 AC_ARG_ENABLE([lua],
1860   AS_HELP_STRING([--disable-lua],
1861     [disable LUA scripting support (default enabled)]))
1862 if test "${enable_lua}" != "no"
1863 then
1864   PKG_CHECK_MODULES(LUA, lua5.2,
1865     [ have_lua=yes ],
1866     [
1867     AC_MSG_WARN([${LUA_PKG_ERRORS}, trying lua 5.1 instead])
1869     PKG_CHECK_MODULES(LUA, lua5.1,
1870       [ have_lua=yes ],
1871       [
1872       AC_MSG_WARN([${LUA_PKG_ERRORS}, trying lua >= 5.1 instead])
1873       PKG_CHECK_MODULES(LUA, lua >= 5.1,
1874         [ have_lua=yes ],
1875         [
1876           AC_MSG_WARN([${LUA_PKG_ERRORS}, trying manual detection instead])
1877           have_lua=yes
1878           AC_CHECK_HEADERS([lua.h lauxlib.h lualib.h],
1879             [],
1880             [ have_lua=no ] )
1881           AC_CHECK_LIB(  lua5.2 , luaL_newstate,
1882             [LUA_LIBS="-llua5.2"],
1883           AC_CHECK_LIB( lua5.1 , luaL_newstate,
1884             [LUA_LIBS="-llua5.1"],
1885             AC_CHECK_LIB( lua51 , luaL_newstate,
1886               [LUA_LIBS="-llua51"],
1887               AC_CHECK_LIB( lua , luaL_newstate,
1888                 [LUA_LIBS="-llua"],
1889                 [ have_lua=no
1890                 ], [-lm])
1891             )))
1892         ])
1893       ])
1894     ])
1895   if test "x${have_lua}" != "xyes" ;  then
1896       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.])
1897   fi
1898   AC_ARG_VAR([LUAC], [LUA byte compiler])
1899   AS_IF([test -z "$LUAC"], [
1900      AC_CHECK_TOOL(LUAC, [luac], [false])
1901   ])
1902   AS_IF([test "${LUAC}" = "false"], [
1903     AC_MSG_ERROR([Could not find the LUA byte compiler.])
1904   ])
1905   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], [
1906     AC_MSG_ERROR([You need 32-bits luac when using lua from contrib.])
1907   ])
1909 AM_CONDITIONAL([BUILD_LUA], [test "${have_lua}" = "yes"])
1913 dnl VideoLAN manager
1915 AC_ARG_ENABLE([vlm],
1916   AS_HELP_STRING([--disable-vlm],
1917     [disable the stream manager (default enabled)]),,
1918   [enable_vlm="${enable_sout}"])
1919 AS_IF([test "${enable_vlm}" != "no"], [
1920   AS_IF([test "${enable_sout}" = "no"], [
1921     AC_MSG_ERROR([VLM requires the stream output. Do not use --disable-sout.])
1922   ])
1923   AC_DEFINE(ENABLE_VLM, 1, [Define if you want the VideoLAN manager support])
1925 AM_CONDITIONAL([ENABLE_VLM], [test "${enable_vlm}" != "no"])
1929 dnl Addons manager storage and repositories modules
1931 AC_ARG_ENABLE([addonmanagermodules],
1932   AS_HELP_STRING([--disable-addonmanagermodules],
1933     [disable the addons manager modules (default enabled)]))
1934 if test "${enable_addonmanagermodules}" != "no"
1935 then
1936   AC_DEFINE(ENABLE_ADDONMANAGERMODULES, 1, [Define if you want the addons manager modules])
1938 AM_CONDITIONAL([ENABLE_ADDONMANAGERMODULES], [test "${enable_addonmanagermodules}" != "no"])
1942 dnl  Input plugins
1945 EXTEND_HELP_STRING([Input plugins:])
1948 dnl  libarchive access module
1950 PKG_ENABLE_MODULES_VLC([ARCHIVE], [archive], [libarchive >= 3.1.0], (libarchive support), [auto])
1953 dnl  live555 input
1955 AC_ARG_ENABLE([live555],
1956   AS_HELP_STRING([--enable-live555],
1957     [enable RTSP input through live555 (default enabled)]))
1959 AS_IF([test "${enable_live555}" != "no" -a -n "${CXX}"], [
1960   PKG_CHECK_MODULES(LIVE555, live555, [
1961     VLC_ADD_PLUGIN([live555])
1962     VLC_ADD_CXXFLAGS([live555], [$LIVE555_CFLAGS])
1963     VLC_ADD_LIBS([live555],[$LIVE555_LIBS])
1964   ], [
1965     AC_MSG_WARN([${LIVE555_PKG_ERRORS}.])
1967     AC_LANG_PUSH(C++)
1968     VLC_SAVE_FLAGS
1970     dnl detect include paths
1971     AS_IF([test -f "${CONTRIB_DIR}/include/UsageEnvironment/UsageEnvironment.hh"], [
1972       CPPFLAGS_live555="-I${CONTRIB_DIR}/include/liveMedia -I${CONTRIB_DIR}/include/groupsock -I${CONTRIB_DIR}/include/BasicUsageEnvironment -I${CONTRIB_DIR}/include/UsageEnvironment"
1973     ], [
1974       AS_IF([test "${SYS}" != "os2"], [
1975         LIVE555_PREFIX=${LIVE555_PREFIX-"/usr"}
1976         CPPFLAGS_live555="-I${LIVE555_PREFIX}/include/liveMedia -I${LIVE555_PREFIX}/include/groupsock -I${LIVE555_PREFIX}/include/BasicUsageEnvironment -I${LIVE555_PREFIX}/include/UsageEnvironment"
1977       ], [
1978         LIVE555_PREFIX=${LIVE555_PREFIX-"/usr/lib/live"}
1979         CPPFLAGS_live555="-I${LIVE555_PREFIX}/liveMedia/include -I${LIVE555_PREFIX}/groupsock/include -I${LIVE555_PREFIX}/BasicUsageEnvironment/include -I${LIVE555_PREFIX}/UsageEnvironment/include"
1980         LDFLAGS_live555="-L${LIVE555_PREFIX}/liveMedia -L${LIVE555_PREFIX}/groupsock -L${LIVE555_PREFIX}/BasicUsageEnvironment -L${LIVE555_PREFIX}/UsageEnvironment"
1981       ])
1982     ])
1984     dnl CPP Flags
1985     AS_IF([test "${SYS}" = "solaris"], [
1986       CPPFLAGS_live555="${CPPFLAGS_live555} -DSOLARIS"
1987     ])
1988     CPPFLAGS="${CPPFLAGS} ${CPPFLAGS_live555}"
1989     LDFLAGS="${LDFLAGS} ${LDFLAGS_live555}"
1991     dnl version check
1992     AC_CACHE_CHECK([for live555 version 1324598400 or later], [ac_cv_live555], [
1993       AC_PREPROC_IFELSE([AC_LANG_PROGRAM([
1994 [#include <liveMedia_version.hh>
1995 #if !defined (LIVEMEDIA_LIBRARY_VERSION_INT) || (LIVEMEDIA_LIBRARY_VERSION_INT < 1324598400)
1996 # error BOOM
1997 #endif]])
1998       ], [
1999         ac_cv_live555="yes"
2000       ], [
2001         ac_cv_live555="no"
2002       ])
2003     ])
2005     AS_IF([test "$ac_cv_live555" = "no"], [
2006       AC_MSG_WARN([live555 is missing or its installed version is too old:
2007 Version 2011.12.23 or later is required to proceed.
2008 You can get an updated one from http://www.live555.com/liveMedia .])
2009       AS_IF([test -n "${enable_live555}"], [
2010         AC_MSG_ERROR([Update live555 or pass --disable-live555 to disable RTSP input support.])
2011       ])
2012     ], [
2013       other_libs="-lgroupsock -lBasicUsageEnvironment -lUsageEnvironment"
2014       other_libs_pic="-lgroupsock_pic -lBasicUsageEnvironment_pic -lUsageEnvironment_pic"
2015       AS_IF([test "${SYS}" = "mingw32"], [
2016         # add ws2_32 for closesocket, select, recv
2017         other_libs="$other_libs -lws2_32"
2018       ])
2020       dnl We need to check for pic because live555 don't provide shared libs
2021       dnl and we want to build a plugins so we need -fPIC on some arch.
2022       VLC_ADD_CXXFLAGS([live555], [${CPPFLAGS_live555}])
2023       VLC_ADD_LDFLAGS([live555], [${LDFLAGS_live555}])
2024       AC_CHECK_LIB([liveMedia_pic], [main], [
2025         VLC_ADD_PLUGIN([live555])
2026         VLC_ADD_LIBS([live555], [-lliveMedia_pic ${other_libs_pic}])
2027       ],[
2028         AC_CHECK_LIB([liveMedia], [main], [
2029           VLC_ADD_PLUGIN([live555])
2030           VLC_ADD_LIBS([live555], [-lliveMedia ${other_libs}])
2031         ],[],[${other_libs}])
2032       ],[${other_libs_pic}])
2033     ])
2034     VLC_RESTORE_FLAGS
2035     AC_LANG_POP(C++)
2036   ])
2040 dnl IIDC and DV FireWire input modules
2042 PKG_ENABLE_MODULES_VLC([DC1394], [], [libdc1394-2 >= 2.1.0], [IIDC FireWire input module], [auto])
2043 PKG_ENABLE_MODULES_VLC([DV1394], [], [libraw1394 >= 2.0.1 libavc1394 >= 0.5.3], [DV FireWire input module], [auto])
2046 dnl - linsys modules: access module check for libzvbi
2048 AC_ARG_ENABLE([linsys],
2049   AS_HELP_STRING([--enable-linsys],
2050     [Linux Linear Systems Ltd. SDI and HD-SDI input cards (default enabled)]))
2051 AS_IF([test "$SYS" = "linux" -a "${enable_linsys}" != "no"], [
2052   VLC_ADD_PLUGIN([linsys_hdsdi])
2053   PKG_CHECK_MODULES(LINSYS_SDI, [zvbi-0.2 >= 0.2.28], [
2054     VLC_ADD_PLUGIN([linsys_sdi])
2055   ], [
2056     AC_MSG_WARN([${LINSYS_SDI_PKG_ERRORS}.])
2057   ])
2061 dnl dvdread module: check for libdvdread
2063 PKG_ENABLE_MODULES_VLC([DVDREAD], [], [dvdread > 6.0.0], [dvdread input module], [auto])
2066 dnl libdvdnav plugin
2068 PKG_ENABLE_MODULES_VLC([DVDNAV], [], [dvdnav >= 6.0.0], [DVD with navigation input module (dvdnav)], [auto])
2071 dnl  Blu-ray Disc Support with libbluray
2073 PKG_ENABLE_MODULES_VLC([BLURAY], [libbluray], [libbluray >= 0.6.2], (libbluray for Blu-ray disc support ) )
2076 dnl  OpenCV wrapper and example filters
2078 PKG_ENABLE_MODULES_VLC([OPENCV], [opencv_example opencv_wrapper], [opencv > 2.0], (OpenCV (computer vision) filter), [auto])
2082 dnl  libsmbclient plugin
2084 PKG_ENABLE_MODULES_VLC([SMBCLIENT], [smbc], [smbclient], (SMB/CIFS support), [auto])
2087 dnl  liBDSM access module
2089 AM_CONDITIONAL([HAVE_DSM], [test "$AS_TR_SH(with_dsm)" = "yes"])
2090 PKG_WITH_MODULES([DSM], [libdsm >= 0.2.0], [
2091        VLC_ADD_PLUGIN([dsm])
2092        VLC_ADD_CFLAGS([dsm], [$DSM_CFLAGS])
2093        VLC_ADD_LIBS([dsm], [$DSM_LIBS])
2094        have_dsm="yes"
2095    ],,[libdsm SMB/CIFS access/sd module], [auto])
2096 AM_CONDITIONAL([HAVE_DSM], [test "${have_dsm}" = "yes"])
2099 dnl sftp access support
2101 PKG_ENABLE_MODULES_VLC([SFTP], [sftp], [libssh2], (support SFTP file transfer via libssh2), [auto])
2104 dnl nfs access support
2106 PKG_ENABLE_MODULES_VLC([NFS], [nfs], [libnfs >= 1.10.0], (support nfs protocol via libnfs), [auto])
2109 dnl smb2 access support
2111 PKG_ENABLE_MODULES_VLC([SMB2], [smb2], [libsmb2 >= 3.0.0], (support smb2 protocol via libsmb2), [auto])
2114 dnl  Video4Linux 2
2116 AC_ARG_ENABLE([v4l2], AS_HELP_STRING([--disable-v4l2],
2117   [disable Video4Linux version 2 (default auto)]))
2118 have_v4l2="no"
2119 AS_IF([test "$enable_v4l2" != "no"], [
2120   AC_CHECK_HEADERS([linux/videodev2.h], [
2121     have_v4l2="yes"
2122   ])
2124 AM_CONDITIONAL([HAVE_V4L2], [test "${have_v4l2}" != "no"])
2127 dnl  NVDEC decoder/encoder
2129 AC_ARG_ENABLE([nvdec], AS_HELP_STRING([--disable-nvdec],
2130   [disable NVDEC decoder (default auto)]))
2131 have_nvdec="no"
2132 AS_IF([test "$enable_nvdec" != "no"], [
2133   AC_CHECK_HEADERS([ffnvcodec/dynlink_loader.h], [
2134     have_nvdec="yes"
2135   ])
2137 AM_CONDITIONAL([HAVE_NVDEC], [test "${have_nvdec}" != "no"])
2140 dnl special access module for Blackmagic SDI cards
2142 AC_ARG_ENABLE([decklink],
2143   AS_HELP_STRING([--disable-decklink],
2144     [disable Blackmagic DeckLink SDI input (default auto)]))
2145 AC_ARG_WITH([decklink_sdk],
2146   AS_HELP_STRING([--with-decklink-sdk=DIR],
2147     [location of Blackmagic DeckLink SDI SDK]))
2148 have_decklink=no
2149 if test "${enable_decklink}" != "no"
2150 then
2151   if test "${with_decklink_sdk}" != "no" -a -n "${with_decklink_sdk}"
2152   then
2153     VLC_ADD_CPPFLAGS([decklink decklinkoutput stream_out_sdi],[-I${with_decklink_sdk}/include])
2154   fi
2155   VLC_SAVE_FLAGS
2156   CPPFLAGS="${CPPFLAGS} ${CPPFLAGS_decklink}"
2157   AC_LANG_PUSH([C++])
2158   AC_CHECK_HEADERS([DeckLinkAPIDispatch.cpp], [
2159       have_decklink=yes
2160       AS_IF([test "${SYS}" = "darwin"], [
2161         VLC_ADD_LIBS([decklink decklinkoutput],[-Wl,-framework,CoreFoundation])
2162       ])
2163   ], [
2164       AS_IF([test "${enable_decklink}" = "yes"], [
2165         AC_MSG_ERROR([Blackmagic DeckLink SDI include files not found!])
2166       ], [
2167         AC_MSG_WARN([Blackmagic DeckLink SDI include files not found, decklink disabled])
2168       ])
2169   ])
2170   AC_LANG_POP([C++])
2171   VLC_RESTORE_FLAGS
2173 AM_CONDITIONAL([HAVE_DECKLINK], [ test "${have_decklink}" != "no" ])
2177 dnl  Built-in CD-DA and VCD module
2179 AC_ARG_ENABLE([vcd],
2180   AS_HELP_STRING([--disable-vcd],
2181     [disable built-in VCD and CD-DA support (default enabled)]))
2183 AC_ARG_ENABLE([libcddb],
2184   AS_HELP_STRING([--disable-libcddb],
2185     [disable CDDB for Audio CD (default enabled)]))
2187 if test "${enable_vcd}" != "no" -a "${enable_winstore_app}" != "yes"
2188 then
2189   AC_MSG_CHECKING(for cdrom_msf0 in linux/cdrom.h)
2190   AC_EGREP_HEADER(cdrom_msf0,linux/cdrom.h,[
2191     AC_MSG_RESULT(yes)
2192     VLC_ADD_PLUGIN([vcd cdda])
2193   ],[
2194     AC_MSG_RESULT(no)
2195   ])
2197   AC_MSG_CHECKING(for scsireq in sys/scsiio.h)
2198   AC_EGREP_HEADER(scsireq,sys/scsiio.h,[
2199     AC_MSG_RESULT(yes)
2200     VLC_ADD_PLUGIN([vcd cdda])
2201     AC_DEFINE(HAVE_SCSIREQ_IN_SYS_SCSIIO_H, 1, For NetBSD VCD support)
2202   ],[
2203     AC_MSG_RESULT(no)
2204   ])
2206   AC_MSG_CHECKING(for ioc_toc_header in sys/cdio.h)
2207   AC_EGREP_HEADER(ioc_toc_header ,sys/cdio.h,[
2208     AC_MSG_RESULT(yes)
2209     VLC_ADD_PLUGIN([vcd cdda])
2210     AC_DEFINE(HAVE_IOC_TOC_HEADER_IN_SYS_CDIO_H, 1, For FreeBSD VCD support)
2211   ],[
2212     AC_MSG_RESULT(no)
2213   ])
2215   if test "${SYS}" = "bsdi" -o "${SYS}" = "mingw32" -o "${SYS}" = "os2" -o "${SYS}" = "darwin"
2216   then
2217     VLC_ADD_PLUGIN([vcd cdda])
2218   fi
2220   if test "$enable_libcddb" != "no"; then
2221     PKG_CHECK_MODULES(LIBCDDB, [libcddb >= 0.9.5], [
2222       HAVE_LIBCDDB=yes
2223       AC_DEFINE(HAVE_LIBCDDB, 1, [Define this if you have libcddb installed])
2224       VLC_ADD_LIBS([cdda],[$LIBCDDB_LIBS])
2225       VLC_ADD_CFLAGS([cdda],[$LIBCDDB_CFLAGS])
2226       ],:
2227       [AC_MSG_WARN([${LIBCDDB_PKG_ERRORS}: CDDB access disabled.])
2228       HAVE_LIBCDDB=no])
2229   fi
2233 dnl Linux DVB
2235 AC_CACHE_CHECK([for Linux DVB version 5.1], [ac_cv_linux_dvb_5_1], [
2236   AC_PREPROC_IFELSE([AC_LANG_PROGRAM([
2237 [#include <linux/dvb/version.h>
2238 #if (DVB_API_VERSION < 5)
2239 # error Linux DVB API v3.2 and older are not supported.
2240 #endif
2241 #if (DVB_API_VERSION == 5 && DVB_API_VERSION_MINOR < 1)
2242 # error Linux DVB API v5.0 is unsupported. Please update.
2243 #endif
2244 ]])], [
2245   ac_cv_linux_dvb_5_1=yes
2246 ], [
2247   ac_cv_linux_dvb_5_1=no
2248 ])])
2249 AM_CONDITIONAL([HAVE_LINUX_DVB], [test "$ac_cv_linux_dvb_5_1" = "yes"])
2252 dnl  Screen capture module
2254 AC_ARG_ENABLE([screen],
2255   AS_HELP_STRING([--enable-screen],
2256     [disable screen capture (default enabled)]))
2257 if test "${enable_screen}" != "no"; then
2258   if test "${SYS}" = "darwin"; then
2259     AC_CHECK_HEADERS([ApplicationServices/ApplicationServices.h], [
2260       VLC_ADD_PLUGIN([screen])
2261     ])
2262   fi
2264 AM_CONDITIONAL([HAVE_MAC_SCREEN], [test "${SYS}" = "darwin" -a "x${enable_screen}" != "xno"])
2267 dnl  VNC/RFB access module
2269 PKG_ENABLE_MODULES_VLC([VNC], [vnc], [libvncclient >= 0.9.9], (VNC/rfb client support), [auto])
2271 dnl  RDP/Remote Desktop access module
2273 PKG_ENABLE_MODULES_VLC([FREERDP], [rdp], [freerdp >= 1.0.1], (RDP/Remote Desktop client support) )
2276 dnl AVFoundation
2277 AC_SUBST([have_avfoundation], ["no"])
2278 AC_ARG_ENABLE([macosx-avfoundation],
2279   AS_HELP_STRING([--enable-macosx-avfoundation], [Mac OS X avcapture (video) module (default enabled on Mac OS X)]))
2280 if test "x${enable_macosx_avfoundation}" != "xno" &&
2281   (test "${SYS}" = "darwin" || test "${enable_macosx_avfoundation}" = "yes")
2282 then
2283   SAVED_LIBS="${LIBS}"
2284   LIBS="-framework AVFoundation"
2285   AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [])],[have_avfoundation=yes],[have_avfoundation=no])
2286   LIBS="${SAVED_LIBS}"
2287   if test "${have_avfoundation}" != "no"
2288   then
2289     VLC_ADD_PLUGIN([avcapture])
2290   fi
2292 AM_CONDITIONAL([HAVE_AVFOUNDATION], [test "${have_avfoundation}" != "no"])
2295 dnl  DCP plugin (using asdcplib)
2297 PKG_WITH_MODULES([ASDCP], [asdcplib], [have_asdcp="yes"])
2298 AM_CONDITIONAL([HAVE_ASDCP], [test "${have_asdcp}" = "yes"])
2301 dnl  Demux plugins
2304 EXTEND_HELP_STRING([Mux/Demux plugins:])
2307 dnl  libdvbpsi check for ts mux/demux
2309 have_dvbpsi="no"
2310 PKG_WITH_MODULES([DVBPSI], [libdvbpsi >= 1.2.0], [have_dvbpsi="yes"])
2311 AM_CONDITIONAL([HAVE_DVBPSI], [test "${have_dvbpsi}" = "yes"])
2315 dnl  GME demux plugin
2317 AC_ARG_ENABLE([gme],
2318   AS_HELP_STRING([--enable-gme],
2319     [use Game Music Emu (default auto)]))
2320 AS_IF([test "${enable_gme}" != "no"], [
2321   AC_CHECK_HEADER([gme/gme.h], [
2322     AC_CHECK_LIB([gme], [gme_identify_header], [
2323       VLC_ADD_PLUGIN([gme])
2324     ], [
2325       AC_CHECK_LIB([gme], [gme_identify_extension], [
2326          VLC_ADD_LIBS([gme], [-lstdc++ $LIBM])
2327          VLC_ADD_PLUGIN([gme])
2328       ],, [-lstdc++ $LIBM])
2329     ])
2330     VLC_ADD_LIBS([gme], [-lgme])
2331   ], [
2332     AS_IF([test "x${enable_gme}" != "x"], [
2333       AC_MSG_ERROR([GME cannot be found. Please install the development files.])
2334     ])
2335   ])
2340 dnl  SIDPlay plugin
2342 AC_ARG_ENABLE([sid],
2343     AS_HELP_STRING([--enable-sid],[C64 sid demux support (default auto)]))
2344 AS_IF([test "${enable_sid}" != "no"], [
2345     PKG_CHECK_MODULES(SID, [libsidplay2], [
2346         AC_LANG_PUSH(C++)
2347         oldCPPFLAGS="$CPPFLAGS"
2348         CPPFLAGS="$CPPFLAGS $SID_CFLAGS"
2349         AC_CHECK_HEADER([sidplay/builders/resid.h], [
2350             VLC_ADD_PLUGIN([sid])
2351             VLC_ADD_CFLAGS([sid], [$SID_CFLAGS])
2352             VLC_ADD_LIBS([sid], [$SID_LIBS] [-lresid-builder])
2353         ], [
2354             AS_IF([test -n "${enable_sid}"],
2355                 [AC_MSG_ERROR([${SID_PKG_ERRORS} (required for sid).])],
2356                 [AC_MSG_WARN([${SID_PKG_ERRORS} (required for sid).])]
2357                 )
2358         ])
2359         CPPFLAGS="$oldCPPFLAGS"
2360         AC_LANG_POP(C++)
2361     ], [
2362         AS_IF([test "x${enable_sid}" = "xyes"],
2363             [AC_MSG_ERROR([${SID_PKG_ERRORS} (required for sid).])],
2364             [AC_MSG_WARN([${SID_PKG_ERRORS} (required for sid).])]
2365             )
2366     ])
2371 dnl  ogg demux plugin
2373 PKG_ENABLE_MODULES_VLC([OGG], [mux_ogg], [ogg >= 1.0], [Ogg demux support], [auto])
2374 PKG_CHECK_MODULES(LIBVORBIS, [vorbis >= 1.1], [
2375     AC_DEFINE(HAVE_LIBVORBIS, 1, [Define to 1 if you have the libvorbis])
2376 ],[true])
2377 PKG_ENABLE_MODULES_VLC([OGG], [], [ogg >= 1.0], [Ogg demux support], [auto], [${LIBVORBIS_CFLAGS}], [${LIBVORBIS_LIBS}])
2378 if test "${enable_sout}" != "no"; then
2379 dnl Check for libshout
2380     PKG_ENABLE_MODULES_VLC([SHOUT], [access_output_shout], [shout >= 2.1], [libshout output plugin], [auto])
2384 dnl  matroska demux plugin
2386 PKG_WITH_MODULES([MATROSKA], [libebml >= 1.3.6 libmatroska], [
2387        VLC_ADD_PLUGIN([mkv])
2388        VLC_ADD_CFLAGS([mkv], [$MATROSKA_CFLAGS])
2389        VLC_ADD_LIBS([mkv], [$MATROSKA_LIBS])
2390        have_matroska="yes"
2391    ],,[MKV format support], [auto])
2392 AM_CONDITIONAL([HAVE_MATROSKA], [test "${have_matroska}" = "yes"])
2395 dnl  modplug demux plugin
2397 AC_ARG_ENABLE([mod],
2398   AS_HELP_STRING([--disable-mod],
2399     [do not use libmodplug (default auto)]))
2400 if test "${enable_mod}" != "no" ; then
2401     PKG_CHECK_MODULES(LIBMODPLUG, [libmodplug >= 0.8.9.0], [
2402           VLC_ADD_PLUGIN([mod])
2403           VLC_ADD_CXXFLAGS([mod],[$LIBMODPLUG_CFLAGS])
2404           VLC_ADD_CFLAGS([mod],[$LIBMODPLUG_CFLAGS]) #modules/demux/mod.c needs CFLAGS_mod, not CXXFLAGS_mod
2405           VLC_ADD_LIBS([mod],[$LIBMODPLUG_LIBS])
2406     ],[
2407        AS_IF([test -n "${enable_mod}"],
2408          [AC_MSG_ERROR([${LIBMODPLUG_PKG_ERRORS}.])],
2409          [AC_MSG_WARN([${LIBMODPLUG_PKG_ERRORS}.])])
2410     ])
2414 dnl  mpc demux plugin
2416 AC_ARG_ENABLE([mpc],
2417   AS_HELP_STRING([--disable-mpc], [do not use libmpcdec (default auto)]))
2418 if test "${enable_mpc}" != "no"
2419 then
2420     AC_CHECK_HEADERS([mpcdec/mpcdec.h], [
2421     VLC_ADD_PLUGIN([mpc])
2422     VLC_ADD_LIBS([mpc],[-lmpcdec])])
2426 dnl  Codec plugins
2429 EXTEND_HELP_STRING([Codec plugins:])
2432 dnl shine encoder plugin
2434 PKG_ENABLE_MODULES_VLC([SHINE], [], [shine >= 3.0.0], [MPEG Audio Layer 3 encoder], [auto], [], [], [])
2438 dnl openmax il codec plugin
2440 AC_ARG_ENABLE([omxil],
2441   AS_HELP_STRING([--enable-omxil], [openmax il codec module (default disabled)]))
2442 if test "${enable_omxil}" = "yes"
2443 then
2444   VLC_ADD_PLUGIN([omxil])
2448 dnl raspberry pi openmax il configuration
2450 AC_ARG_ENABLE([rpi-omxil],
2451   AS_HELP_STRING([--enable-rpi-omxil], [openmax il configured for raspberry pi (default disabled)]))
2452 if test "${enable_rpi_omxil}" = "yes"
2453 then
2454   VLC_ADD_PLUGIN([omxil])
2455   VLC_ADD_CFLAGS([omxil],[-DRPI_OMX])
2459 dnl CrystalHD codec plugin
2461 AC_ARG_ENABLE([crystalhd],
2462   AS_HELP_STRING([--enable-crystalhd], [crystalhd codec plugin (default auto)]))
2463 if test "${enable_crystalhd}" != "no"; then
2464     AC_CHECK_HEADER(libcrystalhd/libcrystalhd_if.h, [
2465       VLC_ADD_PLUGIN([crystalhd])
2466       VLC_ADD_LIBS([crystalhd], [-lcrystalhd])
2467     ],[
2468       if test "${SYS}" = "mingw32" ; then
2469         AC_CHECK_HEADERS([libcrystalhd/bc_dts_defs.h], [
2470           VLC_ADD_PLUGIN([crystalhd])
2471           AC_CHECK_HEADERS([libcrystalhd/bc_drv_if.h], [
2472             VLC_ADD_LIBS([crystalhd], [-lbcmDIL])
2473             ])
2474         ],[
2475           AS_IF([test x"${enable_crystalhd}" = "xyes"],
2476                 [AC_MSG_ERROR("Could not find CrystalHD development headers")],
2477                 [AC_MSG_WARN("Could not find CrystalHD development headers")])
2478         ],[#define __LINUX_USER__
2479                #include <libcrystalhd/bc_dts_types.h>
2480         ])
2481       fi
2482     ],[
2483        #include <libcrystalhd/bc_dts_types.h>
2484       ])
2488 dnl  mad plugin
2490 have_mad="no"
2491 MAD_CFLAGS=""
2492 MAD_LIBS=""
2494 AC_ARG_WITH(mad, AS_HELP_STRING([--with-mad=PATH], [path to libmad]), [
2495   enable_mad="yes"
2496 ], [
2497   with_mad="no"
2499 AS_IF([test "${with_mad}" != "no"], [
2500   MAD_CFLAGS="-I${with_mad}/include"
2501   MAD_LIBS="-L${with_mad}/lib"
2504 AC_ARG_ENABLE([mad],
2505   AS_HELP_STRING([--enable-mad], [libmad module (default enabled)]))
2506 AS_IF([test "${enable_mad}" != "no"], [
2507   VLC_SAVE_FLAGS
2508   CPPFLAGS="${CPPFLAGS} ${MAD_CFLAGS}"
2509   LDFLAGS="${LDFLAGS} ${MAD_LIBS}"
2510   AC_CHECK_HEADERS([mad.h], [
2511     AC_CHECK_LIB([mad], [mad_bit_init], [
2512       have_mad="yes"
2513       MAD_LIBS="${MAD_LIBS} -lmad"
2514     ])
2515   ])
2516   VLC_RESTORE_FLAGS
2517   AS_IF([test -n "$enable_mad" -a "${have_mad}" = "no"], [
2518     AC_MSG_ERROR([Could not find libmad. Install it or pass --disable-mad to disable it.])
2519   ])
2521 AC_SUBST([MAD_CFLAGS])
2522 AC_SUBST([MAD_LIBS])
2523 AM_CONDITIONAL([HAVE_MAD], [test "${have_mad}" = "yes"])
2525 dnl  mpg123 plugin
2528 PKG_ENABLE_MODULES_VLC([MPG123], [mpg123], [libmpg123], [libmpg123 decoder support], [auto])
2531 dnl gstreamer stuff
2533 AC_ARG_ENABLE([gst-decode],
2534   AS_HELP_STRING([--enable-gst-decode], [GStreamer based decoding support (currently supports only video decoding) (default auto)]))
2536 have_gst_decode="no"
2537 AS_IF([test "${enable_gst_decode}" != "no"], [
2538   PKG_CHECK_MODULES([GST_APP], [gstreamer-app-1.0], [
2539     PKG_CHECK_MODULES([GST_VIDEO], [gstreamer-video-1.0], [
2540       have_gst_decode="yes"
2541     ], [
2542       AC_MSG_WARN([${GST_VIDEO_PKG_ERRORS}. GStreamer decoder module will not be built.])
2543     ])
2544   ], [
2545     AC_MSG_WARN([${GST_APP_PKG_ERRORS}. GStreamer modules will not be built.])
2546   ])
2548 AM_CONDITIONAL([HAVE_GST_DECODE], [test "${have_gst_decode}" = "yes"])
2551 dnl  avcodec decoder/encoder plugin
2553 AC_ARG_ENABLE([merge-ffmpeg],
2554 AS_HELP_STRING([--enable-merge-ffmpeg], [merge FFmpeg-based plugins (default disabled)]),, [
2555   enable_merge_ffmpeg="no"
2557 AM_CONDITIONAL([MERGE_FFMPEG], [test "$enable_merge_ffmpeg" != "no"])
2559 AC_MSG_CHECKING([for libavutil variant])
2560 PKG_CHECK_EXISTS([libavutil], [
2561   libavutil_version="$(${PKG_CONFIG} --modversion libavutil)"
2562   libavutil_micro="${libavutil_version##*.}"
2563   AS_IF([test ${libavutil_micro} -le 99], [
2564     avfork="libav"
2565   ], [
2566     avfork="ffmpeg"
2567   ])
2568 ], [
2569   avfork="none"
2571 AC_MSG_RESULT([${avfork}])
2573 AC_ARG_ENABLE([avcodec],
2574 AS_HELP_STRING([--enable-avcodec], [libavcodec codec (default enabled)]))
2575 AS_IF([test "${enable_avcodec}" != "no"], [
2576   dnl We need >=57.16.0 from libav or >=57.37.100 from ffmpeg
2577   case "${avfork}" in
2578     libav) av_codec_ver="57.16.0" ;;
2579     dnl 05f66706d182eb0c36af54d72614bf4c33e957a9  includes libavutil 55.9.0
2580     ffmpeg) av_codec_ver="57.37.100" ;;
2581     dnl 7fc329e2dd6226dfecaa4a1d7adf353bf2773726  include libavutil 55.22.101
2582     *) AC_MSG_ERROR([Missing libav or FFmpeg. Pass --disable-avcodec to ignore this error.])
2583   esac
2584   PKG_CHECK_MODULES(AVCODEC,[libavcodec >= ${av_codec_ver} libavutil >= 55.9.0], [
2585     VLC_SAVE_FLAGS
2586     CPPFLAGS="${CPPFLAGS} ${AVCODEC_CFLAGS}"
2587     CFLAGS="${CFLAGS} ${AVCODEC_CFLAGS}"
2588     AC_CHECK_HEADERS([libavcodec/avcodec.h])
2589     AC_CHECK_HEADERS([libavutil/avutil.h])
2590     VLC_RESTORE_FLAGS
2591     have_avcodec="yes"
2592   ],[
2593     AC_MSG_ERROR([${AVCODEC_PKG_ERRORS}. Pass --disable-avcodec to ignore this error.])
2594   ])
2595 ], [
2596   have_avcodec="no"
2598 AM_CONDITIONAL([HAVE_AVCODEC], [test "${have_avcodec}" != "no"])
2601 dnl libva needs avcodec
2603 AC_ARG_ENABLE([libva],
2604   AS_HELP_STRING([--enable-libva], [VAAPI GPU decoding support (libVA) (default auto)]))
2606 AS_IF([test "${enable_libva}" = "yes" -a "${have_avcodec}" != "yes" ], [
2607   AC_MSG_ERROR([--enable-libva and --disable-avcodec options are mutually exclusive. Use --enable-avcodec.])
2610 have_vaapi="no"
2611 have_vaapi_drm="no"
2612 have_vaapi_x11="no"
2613 have_vaapi_wl="no"
2614 AS_IF([test "${enable_libva}" != "no"], [
2615   PKG_CHECK_MODULES([LIBVA], [libva >= 0.38], [
2616     have_vaapi="yes"
2617   ], [
2618     AS_IF([test -n "${enable_libva}"], [
2619       AC_MSG_ERROR([${LIBVA_PKG_ERRORS}.])
2620     ], [
2621       AC_MSG_WARN([${LIBVA_PKG_ERRORS}.])
2622     ])
2623   ])
2624   PKG_CHECK_MODULES([LIBVA_DRM], [libva-drm], [
2625     have_vaapi_drm="yes"
2626   ], [
2627     AC_MSG_WARN([${LIBVA_DRM_PKG_ERRORS}.])
2628   ])
2629   PKG_CHECK_MODULES(LIBVA_X11, [libva-x11], [
2630     have_vaapi_x11="yes"
2631   ], [
2632     AC_MSG_WARN([${LIBVA_X11_PKG_ERRORS}.])
2633   ])
2634   PKG_CHECK_MODULES(LIBVA_WL, [libva-wayland], [
2635     have_vaapi_wl="yes"
2636   ], [
2637     AC_MSG_WARN([${LIBVA_WL_PKG_ERRORS}.])
2638   ])
2640 AM_CONDITIONAL([HAVE_VAAPI], [test "${have_vaapi}" = "yes"])
2641 AM_CONDITIONAL([HAVE_VAAPI_DRM], [test "${have_vaapi_drm}" = "yes"])
2642 AM_CONDITIONAL([HAVE_VAAPI_X11], [test "${have_vaapi_x11}" = "yes"])
2643 AM_CONDITIONAL([HAVE_VAAPI_WL], [test "${have_vaapi_wl}" = "yes"])
2645 have_avcodec_vaapi="no"
2646 AS_IF([test "${have_vaapi}" = "yes" -a "${have_avcodec}" = "yes"], [
2647   VLC_SAVE_FLAGS
2648   CPPFLAGS="${CPPFLAGS} ${AVCODEC_CFLAGS}"
2649   CFLAGS="${CFLAGS} ${AVCODEC_CFLAGS}"
2650   AC_CHECK_HEADERS([libavcodec/vaapi.h], [
2651     AC_MSG_NOTICE([VA API acceleration activated])
2652     have_avcodec_vaapi="yes"
2653   ],[
2654     AS_IF([test -n "${enable_libva}"], [
2655       AC_MSG_ERROR([libva is present but libavcodec/vaapi.h is missing])
2656     ], [
2657       AC_MSG_WARN([libva is present but libavcodec/vaapi.h is missing ])
2658     ])
2659   ])
2660   VLC_RESTORE_FLAGS
2662 AM_CONDITIONAL([HAVE_AVCODEC_VAAPI], [test "${have_avcodec_vaapi}" = "yes"])
2665 dnl dxva2 needs avcodec
2667 AC_ARG_ENABLE([dxva2],
2668   AS_HELP_STRING([--enable-dxva2], [DxVA2 GPU decoding support (default auto)]))
2670 have_avcodec_dxva2="no"
2671 AS_IF([test "${enable_dxva2}" != "no"], [
2672   if test "${SYS}" = "mingw32"; then
2673   AS_IF([test "x${have_avcodec}" = "xyes"], [
2674     AC_CHECK_HEADERS([dxva2api.h],
2675       [
2676         AC_CHECK_HEADERS([libavcodec/dxva2.h], [
2677            AC_MSG_NOTICE([DxVA2 acceleration activated])
2678            have_avcodec_dxva2="yes"
2679         ],[
2680     AS_IF([test "${enable_dxva2}" = "yes"],
2681           [AC_MSG_ERROR([dxva2 is present but libavcodec/dxva2.h is missing])],
2682               [AC_MSG_WARN([dxva2 is present but libavcodec/dxva2.h is missing ])])
2683         ], [#undef _WIN32_WINNT
2684             /* DXVA2 is only available in Vista and above */
2685             #define _WIN32_WINNT 0x600])
2686       ],[
2687     AS_IF([test "${enable_dxva2}" = "yes"],
2688               [AC_MSG_ERROR([Could not find required dxva2api.h])],
2689               [AC_MSG_WARN([dxva2api.h not found])])
2690       ],[#include <d3d9.h>])
2691   ],[
2692     AS_IF([test "x${enable_dxva2}" != "x"], [
2693       AC_MSG_ERROR([--enable-dxva2 and --disable-avcodec options are mutually exclusive.])
2694     ])
2695   ])
2696   fi
2698 AM_CONDITIONAL([HAVE_AVCODEC_DXVA2], [test "${have_avcodec_dxva2}" = "yes"])
2701 dnl d3d11va needs avcodec
2703 AC_ARG_ENABLE([d3d11va],
2704   AS_HELP_STRING([--enable-d3d11va], [D3D11 GPU decoding support (default auto)]))
2706 have_avcodec_d3d11va="no"
2707 AS_IF([test "${enable_d3d11va}" != "no"], [
2708   if test "${SYS}" = "mingw32"; then
2709   AS_IF([test "x${have_avcodec}" = "xyes"], [
2710         AC_CHECK_TYPES([ID3D11VideoDecoder],
2711           [
2712             AC_CHECK_HEADERS([dxva2api.h],
2713               [
2714                 AC_CHECK_HEADERS([libavcodec/d3d11va.h], [
2715                    AC_MSG_NOTICE([D3D11 acceleration activated])
2716                    AC_DEFINE([HAVE_AVCODEC_D3D11VA], [1], [Define if the d3d11va module is built])
2717                    have_avcodec_d3d11va="yes"
2718                 ],[
2719                   AS_IF([test "${enable_d3d11va}" = "yes"],
2720                     [AC_MSG_ERROR([d3d11va is present but libavcodec/d3d11va.h is missing])],
2721                         [AC_MSG_WARN([d3d11va is present but libavcodec/d3d11va.h is missing ])])
2722                   ], [#undef _WIN32_WINNT
2723                       /* D3D11 is only available in Vista and above */
2724                       #define _WIN32_WINNT 0x600])
2725                   ],[
2726                     AS_IF([test "${enable_d3d11va}" = "yes"],
2727                           [AC_MSG_ERROR([Could not find required dxva2api.h])],
2728                           [AC_MSG_WARN([dxva2api.h not found])])
2729                   ],[#include <d3d9.h>])
2730           ],[
2731             AS_IF([test "${enable_d3d11va}" = "yes"],
2732                   [AC_MSG_ERROR([Could not find required ID3D11VideoDecoder in d3d11.h])],
2733                   [AC_MSG_WARN([ID3D11VideoDecoder not found])])
2734           ], [#include <d3d11.h>])
2735   ],[
2736     AS_IF([test "x${enable_d3d11va}" != "x"], [
2737       AC_MSG_ERROR([--enable-d3d11va and --disable-avcodec options are mutually exclusive.])
2738     ])
2739   ])
2740   fi
2742 AM_CONDITIONAL([HAVE_AVCODEC_D3D11VA], [test "${have_avcodec_d3d11va}" = "yes"])
2745 dnl DXGI debug
2747 AC_CHECK_HEADERS([dxgidebug.h dxgi1_6.h])
2750 dnl IApplicationData2
2752 have_iapplication_data2="no"
2753 AC_CHECK_TYPES([IApplicationData2],[],[],[#include <windows.storage.h>])
2756 dnl  avformat demuxer/muxer plugin
2759 AC_ARG_ENABLE([avformat],
2760 AS_HELP_STRING([--enable-avformat], [libavformat containers (default enabled)]),, [
2761   enable_avformat="${have_avcodec}"
2763 have_avformat="no"
2764 AS_IF([test "${enable_avformat}" != "no"], [
2765   PKG_CHECK_MODULES(AVFORMAT,[libavformat >= 53.21.0 libavcodec libavutil], [
2766       have_avformat="yes"
2767       VLC_SAVE_FLAGS
2768       CPPFLAGS="${CPPFLAGS} ${AVFORMAT_CFLAGS}"
2769       CFLAGS="${CFLAGS} ${AVFORMAT_CFLAGS}"
2770       AC_CHECK_HEADERS([libavformat/avformat.h libavformat/avio.h])
2771       AC_CHECK_HEADERS([libavcodec/avcodec.h])
2772       AC_CHECK_HEADERS([libavutil/avutil.h])
2773       AS_IF([test "$enable_merge_ffmpeg" = "no"], [
2774         have_avformat="no"
2775       ])
2776       VLC_RESTORE_FLAGS
2777     ],[
2778       AC_MSG_ERROR([${AVFORMAT_PKG_ERRORS}. Pass --disable-avformat to ignore this error.])
2779   ])
2781 AM_CONDITIONAL([HAVE_AVFORMAT], [test "${enable_avformat}" != "no"])
2784 dnl  swscale image scaling and conversion plugin
2787 AC_ARG_ENABLE([swscale],
2788   AS_HELP_STRING([--enable-swscale],[libswscale image scaling and conversion
2789           (default enabled)]))
2790 if test "${enable_swscale}" != "no"
2791 then
2792   PKG_CHECK_MODULES(SWSCALE,[libswscale],
2793     [
2794       VLC_SAVE_FLAGS
2795       CPPFLAGS="${CPPFLAGS} ${SWSCALE_CFLAGS}"
2796       CFLAGS="${CFLAGS} ${SWSCALE_CFLAGS}"
2797       AC_CHECK_HEADERS([libswscale/swscale.h])
2798       AC_CHECK_HEADERS([libavutil/avutil.h])
2799       VLC_ADD_PLUGIN([swscale])
2800       VLC_ADD_LIBS([swscale],[$SWSCALE_LIBS])
2801       VLC_ADD_CFLAGS([swscale],[$SWSCALE_CFLAGS])
2802       AS_IF([test -n "${ac_cv_ld_bsymbolic}"], [
2803         VLC_ADD_LIBS([swscale],[${ac_cv_ld_bsymbolic}])
2804       ])
2805       VLC_RESTORE_FLAGS
2806     ],[
2807       AC_MSG_ERROR([${SWSCALE_PKG_ERRORS}. Pass --disable-swscale to ignore this error. Proper software scaling and some video chroma conversion will be missing.])
2808   ])
2812 dnl  postproc plugin
2815 AC_ARG_ENABLE([postproc],
2816 AS_HELP_STRING([--enable-postproc], [libpostproc image post-processing (default auto)]))
2817 if test "${enable_postproc}" != "no"
2818 then
2819   PKG_CHECK_MODULES(POSTPROC,[libpostproc libavutil],
2820     [
2821       VLC_SAVE_FLAGS
2822       CPPFLAGS="${CPPFLAGS} ${POSTPROC_CFLAGS}"
2823       CFLAGS="${CFLAGS} ${POSTPROC_CFLAGS}"
2824       AC_CHECK_HEADERS([postproc/postprocess.h])
2825       VLC_ADD_PLUGIN([postproc])
2826       VLC_RESTORE_FLAGS
2827     ],[
2828       AC_MSG_WARN([${POSTPROC_PKG_ERRORS}.])
2829   ])
2833 dnl  faad decoder plugin
2835 AC_ARG_ENABLE([faad],
2836 AS_HELP_STRING([--enable-faad], [faad codec (default auto)]))
2837 have_faad="no"
2838 AS_IF([test "${enable_faad}" != "no"], [
2839   AC_CHECK_HEADERS([neaacdec.h], [
2840     AC_CHECK_LIB([faad], [NeAACDecOpen], [have_faad="yes"],, [$LIBM])
2842     AS_IF([test "${have_faad}" = "yes"], [
2843       VLC_ADD_PLUGIN([faad])
2844       VLC_ADD_LIBS([faad],[-lfaad])
2845     ], [
2846       AS_IF([test "${enable_faad}" = "yes"], [
2847         AC_MSG_ERROR([cannot find FAAD library])
2848       ], [
2849         AC_MSG_WARN([cannot find FAAD library])
2850       ])
2851     ])
2852   ])
2856 dnl  AOM decoder plugin
2858 PKG_ENABLE_MODULES_VLC([AOM], [], [aom], [experimental AV1 codec (default auto)])
2861 dnl  Dav1d decoder plugin
2863 PKG_ENABLE_MODULES_VLC([DAV1D], [], [dav1d >= 0.5.0], [AV1 decoder (default auto)])
2866 dnl libvpx decoder plugin
2868 AC_ARG_ENABLE([vpx],
2869     AS_HELP_STRING([--enable-vpx],[libvpx VP8/VP9 encoder and decoder (default auto)]))
2870 AS_IF([test "${enable_vpx}" != "no"],[
2871     PKG_CHECK_MODULES([VPX], [vpx >= 1.5.0], [
2872         VLC_ADD_PLUGIN([vpx])
2873         VLC_ADD_CPPFLAGS([vpx], [${VPX_CFLAGS}])
2874         VLC_ADD_LIBS([vpx], [${VPX_LIBS}])
2875         AC_CHECK_LIB([vpx],[vpx_codec_vp8_dx], [
2876             VLC_ADD_CPPFLAGS([vpx], [-DENABLE_VP8_DECODER])
2877         ], [], [${VPX_LIBS}])
2878         AC_CHECK_LIB([vpx],[vpx_codec_vp9_dx], [
2879             VLC_ADD_CPPFLAGS([vpx], [-DENABLE_VP9_DECODER])
2880         ], [], [${VPX_LIBS}])
2881         AC_CHECK_LIB([vpx],[vpx_codec_vp8_cx], [
2882             VLC_ADD_CPPFLAGS([vpx], [-DENABLE_VP8_ENCODER])
2883         ], [], [${VPX_LIBS}])
2884         AC_CHECK_LIB([vpx],[vpx_codec_vp9_cx], [
2885             VLC_ADD_CPPFLAGS([vpx], [-DENABLE_VP9_ENCODER])
2886         ], [], [${VPX_LIBS}])
2887     ], [
2888     AS_IF([test "${enable_vpx}" = "yes"],[
2889         AC_MSG_ERROR([libvpx 1.5.0 or higher was not found])
2890     ])])
2894 dnl twolame encoder plugin
2896 PKG_ENABLE_MODULES_VLC([TWOLAME], [], [twolame], [MPEG Audio Layer 2 encoder], [auto], [], [], [ -DLIBTWOLAME_STATIC])
2899 dnl fdk-aac encoder plugin
2901 PKG_ENABLE_MODULES_VLC([FDKAAC], [], [fdk-aac], [FDK-AAC encoder], [disabled])
2905 dnl A52/AC3 decoder plugin
2907 AC_ARG_ENABLE([a52],
2908   AS_HELP_STRING([--enable-a52], [A/52 support with liba52 (default enabled)]))
2909 if test "${enable_a52}" != "no"
2910 then
2911   AC_ARG_WITH([a52],
2912     AS_HELP_STRING([--with-a52=PATH], [a52 headers and libraries]))
2913     if test -z "${with_a52}"
2914     then
2915       LDFLAGS_test=""
2916       CPPFLAGS_test=""
2917     else
2918       LDFLAGS_test="-L${with_a52}/lib"
2919       CPPFLAGS_test="-I${with_a52}/include"
2920     fi
2921     VLC_SAVE_FLAGS
2922     CPPFLAGS="${CPPFLAGS} ${CPPFLAGS_test} ${CPPFLAGS_a52}"
2923     LDFLAGS="${LDFLAGS} ${LDFLAGS_test} ${LIBS_a52}"
2924     AC_CHECK_HEADERS([a52dec/a52.h], [
2925       AC_CHECK_LIB([a52], [a52_free], [
2926         VLC_ADD_PLUGIN([a52])
2927         VLC_ADD_LIBS([a52],[${LDFLAGS_test} -la52 $LIBM])
2928         VLC_ADD_CPPFLAGS([a52],[${CPPFLAGS_test}])
2929       ],[
2930         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.])
2931         ], [$LIBM])
2932     ],[
2933       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.])
2934     ])
2935     VLC_RESTORE_FLAGS
2939 dnl DTS Coherent Acoustics decoder plugin
2941 PKG_ENABLE_MODULES_VLC([DCA], [dca], [libdca >= 0.0.5], [DTS Coherent Acoustics support with libdca], [auto])
2944 dnl  Flac plugin
2946 PKG_ENABLE_MODULES_VLC([FLAC], [], [flac], [libflac decoder/encoder support], [auto])
2949 dnl  Libmpeg2 plugin
2951 PKG_ENABLE_MODULES_VLC([LIBMPEG2], [], [libmpeg2 > 0.3.2], [libmpeg2 decoder support], [auto])
2954 dnl  Vorbis plugin
2956 PKG_ENABLE_MODULES_VLC([VORBIS], [], [ogg vorbis >= 1.1 vorbisenc >= 1.1], [Vorbis decoder and encoder], [auto])
2959 dnl  Tremor plugin
2961 AC_ARG_ENABLE([tremor],
2962   AS_HELP_STRING([--enable-tremor], [Tremor decoder support (default disabled)]))
2963 if test "${enable_tremor}" = "yes"
2964 then
2965   AC_CHECK_HEADERS([tremor/ivorbiscodec.h], [
2966     VLC_ADD_PLUGIN([tremor])
2967    ],[])
2971 dnl  Speex plugins
2973 PKG_ENABLE_MODULES_VLC([SPEEX], [], [ogg speex >= 1.0.5], [Speex support], [auto])
2974 have_speexdsp="no"
2975 AS_IF([test "${enable_speex}" != "no"], [
2976   PKG_CHECK_MODULES([SPEEXDSP], [speexdsp], [
2977     have_speexdsp="yes"
2978   ], [
2979     AC_MSG_WARN([${SPEEXDSP_PKG_ERRORS}.])
2980   ])
2982 AM_CONDITIONAL([HAVE_SPEEXDSP], [test "$have_speexdsp" = "yes"])
2985 dnl  Opus plugin
2987 PKG_ENABLE_MODULES_VLC([OPUS], [], [ogg opus >= 1.0.3], [Opus support], [auto])
2990 dnl  Ambisonic channel mixer and binauralizer plugin
2992 PKG_ENABLE_MODULES_VLC([SPATIALAUDIO], [], [spatialaudio], [Ambisonic channel mixer and binauralizer], [auto])
2995 dnl  theora decoder plugin
2997 PKG_ENABLE_MODULES_VLC([THEORA], [], [ogg theoradec >= 1.0 theoraenc], [experimental theora codec], [auto])
3000 dnl  OggSpots decoder plugin
3002 PKG_ENABLE_MODULES_VLC([OGGSPOTS], [], [ogg], [experimental OggSpots codec], [auto])
3005 dnl  Daala decoder plugin
3007 PKG_ENABLE_MODULES_VLC([DAALA], [], [daaladec daalaenc], [experimental daala codec], [disabled])
3010 dnl  schroedinger decoder plugin (for dirac format video)
3012 PKG_ENABLE_MODULES_VLC([SCHROEDINGER], [], [schroedinger-1.0 >= 1.0.10], [dirac decoder and encoder using schroedinger], [auto])
3015 dnl  PNG decoder module
3017 AC_ARG_ENABLE([png],
3018   AS_HELP_STRING([--enable-png], [PNG support (default enabled)]))
3019 AS_IF([test "${enable_png}" != "no"], [
3020 AC_CHECK_HEADERS([png.h], [
3021   VLC_SAVE_FLAGS
3022   LDFLAGS="${LDFLAGS} -lz $LIBM"
3023   AC_CHECK_LIB([png], [png_set_alpha_mode], [
3024     VLC_ADD_PLUGIN([png])
3025   ], [], [-lz $LIBM])
3026   VLC_RESTORE_FLAGS
3027   ])
3031 dnl  JPEG decoder module
3033 AC_ARG_ENABLE([jpeg],
3034   AS_HELP_STRING([--enable-jpeg], [JPEG support (default enabled)]))
3035 AS_IF([test "${enable_jpeg}" != "no"], [
3036 AC_CHECK_HEADERS([jpeglib.h], [
3037   VLC_ADD_PLUGIN([jpeg])
3038   ])
3042 dnl  BPG decoder module
3044 AC_ARG_ENABLE([bpg],
3045   AS_HELP_STRING([--enable-bpg], [BPG support (default disabled)]))
3046 AS_IF([test "${enable_bpg}" != "no"], [
3047 AC_CHECK_HEADERS([libbpg.h], [
3048   VLC_ADD_PLUGIN([bpg])
3049   ])
3053 dnl H262 encoder plugin (lib262)
3055 AC_ARG_ENABLE([x262],
3056   AS_HELP_STRING([--enable-x262], [H262 encoding support with static libx262 (default disabled)]))
3057 if test "${enable_x262}" != "no"; then
3058     PKG_CHECK_MODULES(X262, x262, [
3059         VLC_ADD_PLUGIN([x262])
3060         VLC_ADD_LDFLAGS([x262],[${X262_LIBS}])
3061         AS_IF([test -n "${ac_cv_ld_bsymbolic}"], [
3062           VLC_ADD_LIBS([x262],[${av_cv_ld_bsymbolic}])
3063         ])
3064         VLC_ADD_CFLAGS([x262],[${X262_CFLAGS}])
3065         if echo ${X262_LIBS} |grep -q 'pthreadGC2'; then
3066           VLC_ADD_CFLAGS([x262], [-DPTW32_STATIC_LIB])
3067         fi
3068     ], [
3069        if test "${enable_x262}" = "yes"; then
3070         AC_MSG_ERROR([x262 module doesn't work without staticly compiled libx262.a])
3071        fi
3072     ])
3075 dnl x265 encoder
3076 PKG_ENABLE_MODULES_VLC([X265],, [x265], [HEVC/H.265 encoder], [auto])
3079 dnl H264 encoder plugin (using libx264)
3081 AC_ARG_ENABLE([x264],
3082   AS_HELP_STRING([--enable-x264], [H264 encoding support with libx264 (default enabled)]))
3083 if test "${enable_x264}" != "no"; then
3084       PKG_CHECK_MODULES(X264,x264 >= 0.148, [
3085         VLC_ADD_PLUGIN([x264])
3086         VLC_ADD_LIBS([x264],[${X264_LIBS}])
3088         AS_IF([test -n "${ac_cv_ld_bsymbolic}"], [
3089           VLC_ADD_LDFLAGS([x264],[${ac_cv_ld_bsymbolic}])
3090         ])
3092         VLC_ADD_CFLAGS([x264],[${X264_CFLAGS}])
3093         if echo ${X264_LIBS} |grep -q 'pthreadGC2'; then
3094           VLC_ADD_CFLAGS([x264], [-DPTW32_STATIC_LIB])
3095         fi
3096       ],[
3097         if test "${enable_x264}" = "yes"; then
3098             AC_MSG_ERROR([${X264_PKG_ERRORS}: you may get it from http://www.videolan.org/x264.html])
3099           fi
3100       ])
3104 dnl H264 encoder plugin (libx264 > 153)
3106 AC_ARG_ENABLE([x26410b],
3107   AS_HELP_STRING([--enable-x26410b], [H264 10-bit encoding support with libx264 (default enabled)]))
3108 if test "${enable_x26410b}" != "no"; then
3109       PKG_CHECK_MODULES(X26410b,x264 >= 0.153, [
3110         VLC_ADD_PLUGIN([x26410b])
3111         VLC_ADD_LIBS([x26410b],[${X264_LIBS}])
3113         AS_IF([test -n "${ac_cv_ld_bsymbolic}"], [
3114           VLC_ADD_LDFLAGS([x26410b],[${ac_cv_ld_bsymbolic}])
3115         ])
3117         VLC_ADD_CFLAGS([x26410b],[${X264_CFLAGS}])
3118         if echo ${X264_LIBS} |grep -q 'pthreadGC2'; then
3119           VLC_ADD_CFLAGS([x26410b], [-DPTW32_STATIC_LIB])
3120         fi
3121       ],[
3122         if test "${enable_x26410b}" = "yes"; then
3123             AC_MSG_ERROR([${X264_PKG_ERRORS}: you may get it from http://www.videolan.org/x264.html])
3124           fi
3125       ])
3130 dnl Intel QuickSync (aka MediaSDK) H264/H262 encoder
3132 PKG_ENABLE_MODULES_VLC([MFX], [qsv], [libmfx], [Intel QuickSync MPEG4-Part10/MPEG2 (aka H.264/H.262) encoder], [auto])
3135 dnl libfluidsynth (MIDI synthetizer) plugin
3137 PKG_ENABLE_MODULES_VLC([FLUIDSYNTH], [], [fluidsynth >= 1.1.2], [MIDI synthetiser with libfluidsynth], [auto])
3138 PKG_ENABLE_MODULES_VLC([FLUIDLITE], [fluidsynth], [fluidlite], [MIDI synthetiser with libfluidsynth], [auto])
3139 AC_CHECK_HEADERS([fluidlite.h], [AC_SUBST([FLUIDSYNTH_LIBS], ${FLUIDLITE_LIBS})])
3142 dnl Teletext Modules
3143 dnl vbi decoder plugin (using libzbvi)
3144 dnl telx module
3145 dnl uncompatible
3147 AC_ARG_ENABLE([zvbi],
3148   AS_HELP_STRING([--enable-zvbi],[VBI (inc. Teletext) decoding support with
3149                   libzvbi (default enabled)]))
3150 AC_ARG_ENABLE([telx],
3151   AS_HELP_STRING([--enable-telx],[Teletext decoding module (conflicting with
3152                   zvbi) (default enabled if zvbi is absent)]))
3154 AS_IF( [test "${enable_zvbi}" != "no"],[
3155     PKG_CHECK_MODULES(ZVBI, [zvbi-0.2 >= 0.2.28],
3156         [
3157           VLC_ADD_PLUGIN([zvbi])
3158           AC_DEFINE(ZVBI_COMPILED, 1, [Define if the zvbi module is built])
3159           AS_IF( [test "${enable_telx}" = "yes"],[
3160                   AC_MSG_WARN([The zvbi and telx modules are incompatible. Using zvbi.])
3161                   ])
3162         ],[
3163           AC_MSG_WARN([${ZVBI_PKG_ERRORS}. Enabling the telx module instead.])
3164         ])
3165     ])
3166 AS_IF( [test "${enable_telx}" != "no" ],[
3167   VLC_ADD_PLUGIN([telx])
3168   ])
3171 dnl ARIB subtitles rendering module
3173 AC_ARG_ENABLE([aribsub],
3174   AS_HELP_STRING([--enable-aribsub],[ARIB Subtitles support (default enabled)]))
3175 AS_IF( [test "${enable_aribsub}" != "no" ],[
3176   PKG_CHECK_MODULES(ARIBB24, [aribb24 >= 1.0.1], [
3177       have_aribb24="yes"
3178       VLC_ADD_PLUGIN([aribsub])
3179       VLC_ADD_LIBS([aribsub],[-laribb24])
3180       AC_DEFINE(HAVE_ARIBB24, 1, [Define if libaribb24 is available.])
3181     ],[
3182       AC_MSG_WARN(Library [aribb24] needed for [aribsub] was not found)
3183       have_aribb24="no"
3184   ])
3186 AM_CONDITIONAL([HAVE_ARIBB24], [test x"${have_aribb24}" = x"yes"])
3189 dnl ARIB B25
3191 PKG_ENABLE_MODULES_VLC([ARIBB25], [aribcam], [aribb25 >= 0.2.6], [ARIB STD-B25], [auto])
3194 dnl  kate decoder plugin
3196 PKG_ENABLE_MODULES_VLC([KATE], [], [kate >= 0.3.0], [kate codec], [auto])
3199 dnl  tiger rendering for kate decoder plugin
3201 AC_ARG_ENABLE([tiger],
3202 AS_HELP_STRING([--enable-tiger], [Tiger rendering library for Kate streams (default auto)]))
3203 AS_IF([test "${enable_tiger}" != "no"], [
3204   PKG_CHECK_MODULES(TIGER,[tiger >= 0.3.1], [
3205       AC_DEFINE(HAVE_TIGER, 1, [Define if libtiger is available.])],[
3206         AS_IF([test -n "${enable_tiger}"], [
3207           AC_MSG_ERROR([${TIGER_PKG_ERRORS}.])
3208         ])
3209   ])
3213 dnl  check if we can build the css selector engine
3215 AC_ARG_ENABLE([css],
3216 AS_HELP_STRING([--enable-css], [CSS selector engine (default auto)]))
3217 AS_IF([test "${enable_css}" != "no"], [
3218   with_css="yes"
3219   AC_DEFINE(HAVE_CSS, 1, [Define if CSS engine is built])
3221 AM_CONDITIONAL([ENABLE_CSS], [test "${with_css}" = "yes"])
3225 dnl  Video plugins
3228 EXTEND_HELP_STRING([Video plugins:])
3231 dnl  libplacebo support
3233 AC_ARG_ENABLE([libplacebo],
3234   AS_HELP_STRING([--disable-libplacebo],
3235       [disable libplacebo support (default auto)]))
3237 AS_IF([test "$enable_libplacebo" != "no"], [
3238   PKG_CHECK_MODULES([LIBPLACEBO], [libplacebo >= 0.5], [
3239     AC_DEFINE([HAVE_LIBPLACEBO], [1], [Define to 1 if libplacebo is enabled.])
3240     PKG_CHECK_MODULES([LIBPLACEBO], [libplacebo >= 1.7],
3241       [have_libplacebo_vk="yes"], [have_libplacebo_vk="no"])
3242   ], [
3243     AS_IF([test -n "${enable_libplacebo}"], [
3244       AC_MSG_ERROR([${LIBPLACEBO_PKG_ERRORS}.])
3245     ])
3246     enable_libplacebo="no"
3247   ])
3249 AM_CONDITIONAL([HAVE_LIBPLACEBO], [test "$enable_libplacebo" != "no"])
3252 dnl  OpenGL
3254 PKG_CHECK_MODULES([EGL], [egl], [
3255   have_egl="yes"
3256 ], [
3257   have_egl="no"
3259 AM_CONDITIONAL([HAVE_EGL], [test "${have_egl}" = "yes"])
3261 have_gl="no"
3262 PKG_CHECK_MODULES([GL], [gl], [
3263   have_gl="yes"
3264 ], [
3265   AC_MSG_CHECKING([for OpenGL])
3266   AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
3267 #ifdef _WIN32
3268 # include <GL/glew.h>
3269 #endif
3270 #include <GL/gl.h>
3271 ]], [
3272     [int t0 = GL_TEXTURE0;]])
3273   ], [
3274     GL_CFLAGS=""
3275     have_gl="yes"
3276     AS_IF([test "${SYS}" != "mingw32"], [
3277       GL_LIBS="-lGL"
3278     ], [
3279       GL_LIBS="-lopengl32"
3280     ])
3281   ])
3282   AC_MSG_RESULT([${have_gl}])
3284 AM_CONDITIONAL([HAVE_GL], [test "${have_gl}" = "yes"])
3285 AS_IF([test "${have_gl}" = "yes"], [
3286   AC_DEFINE([HAVE_GL], 1, [Defined if having OpenGL])
3289 dnl OpenGL ES 2: depends on EGL 1.1
3290 PKG_ENABLE_MODULES_VLC([GLES2], [], [glesv2], [OpenGL ES v2 support], [disabled])
3293 dnl Vulkan
3295 AC_ARG_ENABLE(vulkan,
3296   [AS_HELP_STRING([--disable-vulkan],
3297       [disable Vulkan support (default auto)])])
3299 AS_IF([test "$enable_vulkan" != "no"], [
3300   AS_IF([test "$have_libplacebo_vk" = "yes"], [
3301     PKG_CHECK_MODULES([VULKAN], [vulkan >= 1.0.26], [
3302       AC_DEFINE([HAVE_VULKAN], [1], [Define to 1 if vulkan is enabled.])
3303     ], [
3304       AS_IF([test -n "${enable_vulkan}"], [
3305         AC_MSG_ERROR([${VULKAN_PKG_ERRORS}.])
3306       ])
3307       enable_vulkan="no"
3308     ])
3309   ], [
3310     AS_IF([test -n "${enable_vulkan}"], [
3311       AC_MSG_ERROR([Vulkan support requires libplacebo 1.7 as well. Do not use --disable-libplacebo.])
3312     ])
3313     enable_vulkan="no"
3314   ])
3316 AM_CONDITIONAL(HAVE_VULKAN, [test "$enable_vulkan" != "no"])
3319 dnl  Xlib
3322 AC_PATH_XTRA()
3323 AC_CHECK_HEADERS([X11/Xlib.h])
3326 dnl  X C Bindings modules
3328 AC_ARG_ENABLE([xcb],
3329   AS_HELP_STRING([--enable-xcb], [X11 support with XCB (default enabled)]),, [
3330   AS_IF([test "${SYS}" != "mingw32" -a "${SYS}" != "darwin"], [
3331     enable_xcb="yes"
3332   ], [
3333     enable_xcb="no"
3334   ])
3337 have_xcb="no"
3338 have_xkbcommon_x11="no"
3339 have_xcb_keysyms="no"
3340 AS_IF([test "${enable_xcb}" != "no"], [
3341   xcb_err=""
3343   dnl libxcb
3344   PKG_CHECK_MODULES([XCB], [xcb >= 1.6],, [
3345     xcb_err="$xcb_err ${XCB_PKG_ERRORS}."])
3346   PKG_CHECK_MODULES([XCB_COMPOSITE], [xcb-composite],, [
3347     xcb_err="$xcb_err ${XCB_COMPOSITE_PKG_ERRORS}."])
3348   PKG_CHECK_MODULES([XCB_RANDR], [xcb-randr >= 1.3],, [
3349     xcb_err="$xcb_err ${XCB_RANDR_PKG_ERRORS}."])
3350   PKG_CHECK_MODULES([XCB_RENDER], [xcb-render],, [
3351     xcb_err="$xcb_err ${XCB_RENDER_PKG_ERRORS}."])
3352   PKG_CHECK_MODULES([XCB_SHM], [xcb-shm >= 1.9.2],, [
3353     xcb_err="$xcb_err ${XCB_SHM_PKG_ERRORS}."])
3354   PKG_CHECK_MODULES([XCB_XKB], [xcb-xkb],, [
3355     xcb_err="$xcb_err ${XCB_XKB_PKG_ERRORS}."])
3357   dnl xproto
3358   PKG_CHECK_MODULES(XPROTO, [xproto],, [
3359     xcb_err="$xcb_err ${XPROTO_PKG_ERRORS}."])
3361   AS_IF([test -n "$xcb_err"], [
3362     AC_MSG_ERROR([$xcb_err Pass --disable-xcb to skip X11 support.])
3363   ])
3365   dnl xkbcommon
3366   PKG_CHECK_MODULES([XKBCOMMON_X11], [xkbcommon-x11], [
3367     have_xkbcommon_x11="yes"
3368   ], [
3369     AC_MSG_WARN([${XKBCOMMON_X11_PKG_ERRORS}. Hotkeys are disabled.])
3370   ])
3372   dnl xcb-utils
3373   PKG_CHECK_MODULES([XCB_KEYSYMS], [xcb-keysyms >= 0.3.4], [
3374     have_xcb_keysyms="yes"
3375   ], [
3376     AC_MSG_WARN([${XCB_KEYSYMS_PKG_ERRORS}. Global hotkeys are disabled.])
3377   ])
3379   have_xcb="yes"
3381 AM_CONDITIONAL([HAVE_XCB], [test "${have_xcb}" = "yes"])
3382 AM_CONDITIONAL([HAVE_XKBCOMMON_X11], [test "${have_xkbcommon_x11}" = "yes"])
3383 AM_CONDITIONAL([HAVE_XCB_KEYSYMS], [test "${have_xcb_keysyms}" = "yes"])
3387 dnl VDPAU needs X11
3389 AC_ARG_ENABLE([vdpau],
3390   [AS_HELP_STRING([--enable-vdpau], [VDPAU hardware support (default auto)])])
3391 have_vdpau="no"
3392 AS_IF([test "${enable_vdpau}" != "no"], [
3393   PKG_CHECK_MODULES([VDPAU], [vdpau >= 0.6], [
3394     have_vdpau="yes"
3395     AS_IF([test "${no_x}" = "yes"], [
3396       AC_MSG_ERROR([VDPAU requires Xlib (X11).])
3397     ])
3398   ], [
3399     AS_IF([test -n "${enable_vdpau}"], [
3400       AC_MSG_ERROR([${VDPAU_PKG_ERRORS}.])
3401     ])
3402   ])
3404 AM_CONDITIONAL([HAVE_VDPAU], [test "${have_vdpau}" = "yes"])
3406 have_avcodec_vdpau="no"
3407 AS_IF([test "${have_vdpau}" = "yes" -a "${have_avcodec}" = "yes"], [
3408   case "${avfork}" in
3409     libav) av_vdpau_ver="56.10.0" ;;
3410     ffmpeg) av_vdpau_ver="56.19.100" ;;
3411   esac
3412   PKG_CHECK_EXISTS([libavcodec >= ${av_vdpau_ver}], [
3413     have_avcodec_vdpau="yes"
3414     AC_MSG_NOTICE([VDPAU decoding acceleration activated])
3415   ], [
3416     AS_IF([test -n "${enable_vdpau}"], [
3417       AC_MSG_ERROR([libavcodec >= 56.10.0 is required for VDPAU decoding.])
3418     ], [
3419       AC_MSG_WARN([libavcodec >= 56.10.0 are required for VDPAU decoding.])
3420     ])
3421   ])
3423 AM_CONDITIONAL([HAVE_AVCODEC_VDPAU], [test "${have_avcodec_vdpau}" = "yes"])
3427 dnl  Wayland
3429 AC_ARG_ENABLE([wayland],
3430   AS_HELP_STRING([--enable-wayland], [Wayland support (default auto)]))
3432 have_wayland="no"
3433 AS_IF([test "${enable_wayland}" != "no"], [
3434   wl_err=""
3436   dnl wayland
3437   PKG_CHECK_MODULES([WAYLAND_CLIENT], [wayland-client >= 1.5.91],, [
3438     wl_err="$wl_err ${WAYLAND_CLIENT_PKG_ERRORS}."
3439   ])
3440   PKG_CHECK_MODULES([WAYLAND_CURSOR], [wayland-cursor],, [
3441     wl_err="$wl_err ${WAYLAND_CURSOR_PKG_ERRORS}."
3442   ])
3443   PKG_CHECK_MODULES([WAYLAND_EGL], [wayland-egl],, [
3444     wl_err="$wl_err ${WAYLAND_EGL_PKG_ERRORS}."
3445   ])
3446   PKG_CHECK_MODULES([WAYLAND_SCANNER], [wayland-scanner >= 1.15], [
3447     WAYLAND_SCANNER="$(${PKG_CONFIG} wayland-scanner --variable wayland_scanner)"
3448   ], [
3449     wl_err="$wl_err ${WAYLAND_SCANNER_PKG_ERRORS}."
3450   ])
3452   dnl wayland-protocols
3453   PKG_CHECK_MODULES([WAYLAND_PROTOCOLS], [wayland-protocols >= 1.15], [
3454     WAYLAND_PROTOCOLS="$(${PKG_CONFIG} wayland-protocols --variable pkgdatadir)"
3455   ], [
3456     wl_err="$wl_err ${WAYLAND_PROTOCOLS_PKG_ERRORS}."
3457   ])
3459   AS_IF([test -n "$wl_err"], [
3460     AS_IF([test -n "$enable_wayland"], [
3461       AC_MSG_ERROR([$wl_err])
3462     ], [
3463       AC_MSG_WARN([$wl_err])
3464     ])
3465   ], [
3466     have_wayland="yes"
3467   ])
3469   dnl xkbcommon
3470   PKG_CHECK_MODULES([XKBCOMMON], [xkbcommon], [
3471     have_xkbcommon="yes"
3472   ], [
3473     AC_MSG_WARN([${XKBCOMMON_PKG_ERRORS}. Hotkeys are disabled.])
3474   ])
3476 AM_CONDITIONAL([HAVE_WAYLAND], [test "${have_wayland}" = "yes"])
3477 AC_SUBST([WAYLAND_PROTOCOLS])
3478 AC_SUBST([WAYLAND_SCANNER])
3479 AM_CONDITIONAL([HAVE_XKBCOMMON], [test "${have_xkbcommon}" = "yes"])
3483 dnl  SDL image decoder module
3485 AC_ARG_ENABLE([sdl-image],
3486   AS_HELP_STRING([--enable-sdl-image], [SDL image support (default enabled)]))
3487 AS_IF([test "${enable_sdl_image}" != "no"],[
3488   PKG_CHECK_MODULES(SDL_IMAGE, [SDL_image >= 1.2.10], [
3489     VLC_ADD_PLUGIN([sdl_image])
3490   ], [
3491     AC_MSG_WARN([${SDL_IMAGE_PKG_ERRORS}. You should install it alongside your SDL package.])
3492   ])
3496 dnl  freetype module
3498 AC_ARG_ENABLE([freetype],
3499   AS_HELP_STRING([--enable-freetype],   [freetype support   (default auto)]))
3500 AC_ARG_ENABLE([fribidi],
3501   AS_HELP_STRING([--enable-fribidi],    [fribidi support    (default auto)]))
3502 AC_ARG_ENABLE([harfbuzz],
3503   AS_HELP_STRING([--enable-harfbuzz],   [harfbuzz support   (default auto)]))
3504 AC_ARG_ENABLE([fontconfig],
3505   AS_HELP_STRING([--enable-fontconfig], [fontconfig support (default auto)]))
3507 AC_ARG_WITH([default-font],
3508     AS_HELP_STRING([--with-default-font=PATH],
3509         [Path to the default font]),
3510         [AC_DEFINE_UNQUOTED([DEFAULT_FONT_FILE],
3511             "$withval", [Default font])])
3512 AC_ARG_WITH([default-monospace-font],
3513     AS_HELP_STRING([--with-default-monospace-font=PATH],
3514         [Path to the default font]),
3515         [AC_DEFINE_UNQUOTED([DEFAULT_MONOSPACE_FONT_FILE],
3516             "$withval", [Default monospace font])])
3518 AC_ARG_WITH([default-font-family],
3519     AS_HELP_STRING([--with-default-font-family=NAME],
3520         [Name of the default font family]),
3521         [AC_DEFINE_UNQUOTED([DEFAULT_FAMILY],
3522             "$withval", [Default font family])])
3523 AC_ARG_WITH([default-monospace-font-family],
3524     AS_HELP_STRING([--with-default-monospace-font-family=NAME],
3525         [Name of the default font family]),
3526         [AC_DEFINE_UNQUOTED([DEFAULT_MONOSPACE_FAMILY],
3527             "$withval", [Default monospace font family])])
3529 have_freetype="no"
3530 have_fontconfig="no"
3531 have_fribidi="no"
3532 have_harfbuzz="no"
3534 if test "${enable_freetype}" != "no"; then
3535    PKG_CHECK_MODULES(FREETYPE, freetype2, [
3536       have_freetype="yes"
3537       VLC_ADD_CPPFLAGS([skins2],[${FREETYPE_CFLAGS}])
3538       VLC_ADD_LIBS([skins2],[${FREETYPE_LIBS}])
3540     dnl fontconfig support
3541     AS_IF([test "${enable_fontconfig}" != "no" -a "${SYS}" != "mingw32" -a "${SYS}" != "darwin"], [
3542       PKG_CHECK_MODULES(FONTCONFIG, [fontconfig >= 2.11], [
3543         have_fontconfig="yes"
3544       ], [
3545         AC_MSG_WARN([${FONTCONFIG_PKG_ERRORS}. Styles will be disabled in FreeType.])
3546       ])
3547     ])
3549       dnl fribidi support
3550       if test "${enable_fribidi}" != "no"; then
3551         PKG_CHECK_MODULES(FRIBIDI, fribidi, [
3552           have_fribidi="yes"
3553           VLC_ADD_CPPFLAGS([skins2], [${FRIBIDI_CFLAGS} -DHAVE_FRIBIDI])
3554           VLC_ADD_LIBS([skins2], [${FRIBIDI_LIBS}])
3555         ],[AC_MSG_WARN([${FRIBIDI_PKG_ERRORS}. Bidirectional text and complex scripts (Arabic, Farsi, Thai...) will be disabled in FreeType.])])
3556       fi
3558       dnl harfbuzz support
3559       if test "${have_fribidi}" != "no"; then
3560         if test "${enable_harfbuzz}" != "no"; then
3561           PKG_CHECK_MODULES(HARFBUZZ, harfbuzz, [
3562             have_harfbuzz="yes"
3563             VLC_ADD_CPPFLAGS([skins2], [${HARFBUZZ_CFLAGS} -DHAVE_HARFBUZZ])
3564             VLC_ADD_LIBS([skins2], [${HARFBUZZ_LIBS}])
3565           ],[AC_MSG_WARN([${HARFBUZZ_PKG_ERRORS}. Support for complex scripts (Arabic, Farsi, Thai...) will be disabled in FreeType.])])
3566         fi
3567       fi
3568   ],[
3569   AS_IF([test -n "${enable_freetype}"],[
3570     AC_MSG_ERROR([${FREETYPE_PKG_ERRORS}. Install FreeType2 development or configure with --disable-freetype.])
3571     ])
3572   ])
3575 AM_CONDITIONAL([HAVE_FREETYPE], [test "${have_freetype}" = "yes"])
3576 AM_CONDITIONAL([HAVE_FONTCONFIG], [test "${have_fontconfig}" = "yes"])
3577 AM_CONDITIONAL([HAVE_FRIBIDI], [test "${have_fribidi}" = "yes"])
3578 AM_CONDITIONAL([HAVE_HARFBUZZ], [test "${have_harfbuzz}" = "yes"])
3581 dnl libass subtitle rendering module
3583 AC_ARG_ENABLE([libass],
3584   AS_HELP_STRING([--enable-libass], [Subtitle support using libass (default enabled)]))
3585 AS_IF( [test "${enable_libass}" != "no"], [
3586   PKG_CHECK_MODULES(LIBASS, [libass >= 0.9.8],
3587       [
3588         VLC_ADD_PLUGIN([libass])
3590         if test "${have_fontconfig}" != "no"; then
3591             VLC_ADD_CPPFLAGS([libass],[-DHAVE_FONTCONFIG])
3592             VLC_ADD_LIBS([libass],[${FONTCONFIG_LIBS}])
3593         fi
3594       ],[
3595         AC_MSG_WARN([${LIBASS_PKG_ERRORS}.])
3596       ])
3597   ])
3600 dnl SAPI (text to Speech renderer for Windows)
3602 AC_LANG_PUSH([C++])
3603 AC_CHECK_TYPES([ISpObjectToken],[
3604               have_sapi="yes"
3605             ],[AC_MSG_WARN([sapi.h not found. Text to Speech renderer for Windows disabled])],
3606               [#include <windows.h>
3607                #include <sapi.h>
3608                #include <sphelper.h>])
3609 AM_CONDITIONAL([HAVE_SAPI], [test "${have_sapi}" = "yes"])
3610 AC_LANG_POP([C++])
3613 dnl  SVG module (text rendering and image decoding)
3615 PKG_ENABLE_MODULES_VLC([SVG], [], [librsvg-2.0 >= 2.9.0], [SVG rendering library],[auto])
3616 PKG_ENABLE_MODULES_VLC([SVGDEC], [], [librsvg-2.0 >= 2.9.0 cairo >= 1.13.1], [SVG image decoder library],[auto])
3619 dnl  Windows DirectX module
3622 AC_ARG_ENABLE([directx],
3623   AS_HELP_STRING([--enable-directx],
3624     [Microsoft DirectX support (default enabled on Windows)]),, [
3625   AS_IF([test "${SYS}" = "mingw32"], [
3626     enable_directx="yes"
3627   ], [
3628     enable_directx="no"
3629   ])
3631 AS_IF([test "${enable_directx}" != "no"], [
3632   dnl OpenGL
3633   AC_CHECK_HEADERS([GL/glew.h], [
3634     AC_CHECK_HEADERS([GL/wglew.h], [
3635         VLC_ADD_PLUGIN([glwin32 wgl])
3636       ],, [
3637         #include <windows.h>
3638         #include <GL/glew.h>
3639       ])],, [
3640       #include <windows.h>
3641    ])
3643   dnl Direct3D11
3644   AC_CHECK_HEADERS([d3d11.h], [
3645     VLC_ADD_PLUGIN([direct3d11 direct3d11_filters])
3646   ])
3648   dnl Direct3D9
3649   AC_CHECK_HEADERS([d3d9.h], [
3650     VLC_ADD_PLUGIN([direct3d9])
3651     AC_CHECK_HEADERS([d3dx9effect.h])
3653     AC_PREPROC_IFELSE([AC_LANG_PROGRAM(
3654         [[#define COBJMACROS
3655           #include <d3d9.h>
3656           #include <dxva2api.h>
3657           #ifndef IDirectXVideoProcessorService_GetVideoProcessorDeviceGuids
3658           # error dxva2 too old
3659           #endif
3660         ]],[[;]])
3661       ],[
3662         VLC_ADD_PLUGIN([direct3d9_filters])
3663       ],
3664       [AC_MSG_WARN([Could not find required IDirectXVideoDecoder in dxva2api.h])])
3666   ])
3670 dnl  Linux framebuffer module
3672 AC_CHECK_HEADER([linux/fb.h], [
3673   VLC_ADD_PLUGIN([fb])
3677 dnl  Linux kernel mode setting module
3679 PKG_ENABLE_MODULES_VLC([KMS], [], [libdrm >= 2.4.83], [Linux kernel mode setting output], [auto])
3682 dnl  libcaca plugin
3684 PKG_ENABLE_MODULES_VLC([CACA], [], [caca >= 0.99.beta14], [libcaca output],[auto])
3687 dnl  OS/2 KVA plugin
3689 AC_ARG_ENABLE([kva],
3690   AS_HELP_STRING([--enable-kva],
3691     [support the K Video Accelerator KVA (default enabled on OS/2)]),, [
3692   AS_IF([test "$SYS" = "os2"], [
3693     enable_kva="yes"
3694   ])
3696 have_kva="no"
3697 KVA_LIBS=""
3698 AS_IF([test "$enable_kva" != "no"], [
3699   AC_CHECK_HEADERS([kva.h], [
3700     have_kva="yes"
3701     AC_CHECK_LIB([kva], [main], [
3702       KVA_LIBS="-lkva"
3703     ])
3704   ])
3706 AC_SUBST([KVA_LIBS])
3707 AM_CONDITIONAL([HAVE_KVA], [test "${have_kva}" = "yes"])
3710 dnl MMAL plugin
3712 AC_ARG_ENABLE([mmal],
3713   AS_HELP_STRING([--enable-mmal],
3714     [Multi-Media Abstraction Layer (MMAL) hardware plugin (default enable)]))
3715 if test "${enable_mmal}" != "no"; then
3716   VLC_SAVE_FLAGS
3717   LDFLAGS="${LDFLAGS} -L/opt/vc/lib -lvchostif"
3718   CPPFLAGS="${CPPFLAGS} -isystem /opt/vc/include -isystem /opt/vc/include/interface/vcos/pthreads -isystem /opt/vc/include/interface/vmcs_host/linux"
3719   AC_CHECK_HEADERS([interface/mmal/mmal.h],
3720     [ AC_CHECK_LIB([bcm_host], [vc_tv_unregister_callback_full], [
3721         have_mmal="yes"
3722         VLC_ADD_PLUGIN([mmal])
3723         VLC_ADD_LDFLAGS([mmal],[ -L/opt/vc/lib ])
3724         VLC_ADD_CFLAGS([mmal],[ -isystem /opt/vc/include -isystem /opt/vc/include/interface/vcos/pthreads -isystem /opt/vc/include/interface/vmcs_host/linux ])
3725         VLC_ADD_LIBS([mmal],[ -lbcm_host -lmmal -lmmal_core -lmmal_components -lmmal_util -lvchostif -lvcsm -lvchiq_arm ]) ], [
3726           AS_IF([test "${enable_mmal}" = "yes"],
3727             [ AC_MSG_ERROR([Cannot find bcm library...]) ],
3728             [ AC_MSG_WARN([Cannot find bcm library...]) ])
3729           ],
3730         [])
3731     ] , [ AS_IF([test "${enable_mmal}" = "yes"],
3732       [ AC_MSG_ERROR([Cannot find development headers for mmal...]) ],
3733       [ AC_MSG_WARN([Cannot find development headers for mmal...]) ]) ])
3734   VLC_RESTORE_FLAGS
3736 AM_CONDITIONAL([HAVE_MMAL], [test "${have_mmal}" = "yes"])
3739 dnl  Audio plugins
3742 EXTEND_HELP_STRING([Audio plugins:])
3745 dnl  Pulseaudio module
3747 AC_ARG_ENABLE([pulse],
3748   AS_HELP_STRING([--enable-pulse],
3749     [use the PulseAudio client library (default auto)]))
3750 have_pulse="no"
3751 AS_IF([test "${enable_pulse}" != "no"], [
3752   PKG_CHECK_MODULES([PULSE], [libpulse >= 1.0], [
3753     have_pulse="yes"
3754   ], [
3755     AS_IF([test "x${enable_pulse}" != "x"], [
3756       AC_MSG_ERROR([$PULSE_PKG_ERRORS. PulseAudio 1.0 or later required.])
3757     ])
3758   ])
3760 AM_CONDITIONAL([HAVE_PULSE], [test "${have_pulse}" = "yes"])
3763 dnl  ALSA module
3765 AC_ARG_ENABLE([alsa],
3766   AS_HELP_STRING([--enable-alsa],
3767     [support the Advanced Linux Sound Architecture (default auto)]),, [
3768   AS_IF([test "$SYS" = "linux" -a "${have_pulse}" = "no"], [
3769     enable_alsa="yes"
3770   ])
3772 have_alsa="no"
3773 AS_IF([test "${enable_alsa}" != "no"], [
3774   PKG_CHECK_MODULES([ALSA], [alsa >= 1.0.24], [
3775     have_alsa="yes"
3776   ], [
3777     AS_IF([test "x${enable_alsa}" != "x"], [
3778       AC_MSG_ERROR([$ALSA_PKG_ERRORS. alsa-lib 1.0.24 or later required. Pass --disable-alsa to ignore this error.])
3779     ])
3780   ])
3782 AM_CONDITIONAL([HAVE_ALSA], [test "${have_alsa}" = "yes"])
3785 dnl  Open Sound System module
3787 AC_ARG_ENABLE([oss],
3788   AS_HELP_STRING([--enable-oss],
3789     [support the Open Sound System OSS (default enabled on FreeBSD/NetBSD/DragonFlyBSD)]),, [
3790   AS_IF([test "$SYS" = "mingw32" -o "$SYS" = "linux" -o "$SYS" = "openbsd"], [
3791     enable_oss="no"
3792   ])
3794 have_oss="no"
3795 OSS_LIBS=""
3796 AS_IF([test "$enable_oss" != "no"], [
3797   AC_CHECK_HEADERS([soundcard.h sys/soundcard.h], [
3798     have_oss="yes"
3799     AC_CHECK_LIB([ossaudio], [main], [
3800       OSS_LIBS="-lossaudio"
3801     ])
3802   ])
3804 AC_SUBST([OSS_LIBS])
3805 AM_CONDITIONAL([HAVE_OSS], [test "${have_oss}" = "yes"])
3808 dnl  OpenBSD sndio module
3810 AC_ARG_ENABLE([sndio],
3811   AS_HELP_STRING([--disable-sndio],
3812     [support the OpenBSD sndio (default auto)]),, [
3813   AS_IF([test "$SYS" = "openbsd"], [
3814     enable_sndio="yes"
3815   ])
3817 have_sndio="no"
3818 AS_IF([test "$enable_sndio" != "no"], [
3819   AC_CHECK_HEADER([sndio.h], [
3820     have_sndio="yes"
3821   ])
3823 AM_CONDITIONAL([HAVE_SNDIO], [test "${have_sndio}" = "yes"])
3826 dnl  Windows Audio Session plugin
3828 AC_ARG_ENABLE([wasapi],
3829   AS_HELP_STRING([--enable-wasapi],
3830     [use the Windows Audio Session API (default auto)])
3832 have_wasapi="no"
3833 AS_IF([test "$enable_wasapi" != "no"], [
3834   AC_CHECK_HEADER([audioclient.h], [
3835     have_wasapi="yes"
3836   ], [
3837     AS_IF([test "x${enable_wasapi}" != "x"], [
3838       AC_MSG_ERROR([Windows Audio Session API not found.])
3839     ])
3840   ])
3842 AM_CONDITIONAL([HAVE_WASAPI], [test "${have_wasapi}" = "yes"])
3845 dnl  JACK modules
3847 AC_ARG_ENABLE([jack],
3848   AS_HELP_STRING([--disable-jack],
3849     [do not use jack (default auto)]))
3850 have_jack="no"
3851 AS_IF([test "${enable_jack}" != "no"], [
3852     PKG_CHECK_MODULES(JACK, jack >= 1.9.7,
3853       [ have_jack=yes ],
3854       [
3855       AC_MSG_WARN([${JACK_PKG_ERRORS}, trying jack1 instead])
3857       PKG_CHECK_MODULES(JACK, jack >= 0.120.1 jack < 1.0,
3858       [ have_jack=yes ],
3859       [
3860       AS_IF([test -n "${enable_jack}"],
3861          [AC_MSG_ERROR([${JACK_PKG_ERRORS}.])],
3862          [AC_MSG_WARN([${JACK_PKG_ERRORS}.])])
3863       ])
3864     ])
3866 AM_CONDITIONAL([HAVE_JACK], [test "${have_jack}" != "no"])
3869 dnl  OpenSLES Android
3871 AC_ARG_ENABLE([opensles],
3872   AS_HELP_STRING([--enable-opensles], [Android OpenSL ES audio module (default disabled)]))
3873 if test "${HAVE_ANDROID}" = "1"; then
3874   if test "${enable_opensles}" = "yes"; then
3875       AC_CHECK_HEADERS([SLES/OpenSLES.h],
3876         [ VLC_ADD_PLUGIN([opensles_android]) ],
3877         [ AC_MSG_ERROR([cannot find OpenSLES headers])] )
3878   fi
3882 dnl libsamplerate plugin
3884 PKG_ENABLE_MODULES_VLC([SAMPLERATE], [], [samplerate], [Resampler with libsamplerate], [auto])
3887 dnl  soxr module
3889 PKG_ENABLE_MODULES_VLC([SOXR], [], [soxr >= 0.1.2], [SoX Resampler library], [auto])
3892 dnl  OS/2 KAI plugin
3894 AC_ARG_ENABLE([kai],
3895   AS_HELP_STRING([--enable-kai],
3896     [support the K Audio Interface KAI (default enabled on OS/2)]),, [
3897   AS_IF([test "$SYS" = "os2"], [
3898     enable_kai="yes"
3899   ])
3901 have_kai="no"
3902 KAI_LIBS=""
3903 AS_IF([test "$enable_kai" != "no"], [
3904   AC_CHECK_HEADERS([kai.h], [
3905     have_kai="yes"
3906     AC_CHECK_LIB([kai], [main], [
3907       KAI_LIBS="-lkai"
3908     ])
3909   ])
3911 AC_SUBST([KAI_LIBS])
3912 AM_CONDITIONAL([HAVE_KAI], [test "${have_kai}" = "yes"])
3915 dnl  chromaprint audio track fingerprinter
3917 PKG_ENABLE_MODULES_VLC([CHROMAPRINT], [stream_out_chromaprint], [libchromaprint >= 0.6.0], [Chromaprint audio fingeprinter], [auto])
3920 dnl  Chromecast streaming support
3922 m4_pushdef([protobuf_lite_version], 2.5.0)
3923 AC_ARG_VAR(PROTOC, [protobuf compiler])
3924 AC_CHECK_PROGS(PROTOC, protoc, no)
3925 PKG_WITH_MODULES([CHROMECAST],[protobuf-lite >= protobuf_lite_version], [
3926     AS_IF([test "x${PROTOC}" != "xno"], [
3927         build_chromecast="yes"
3928     ], [
3929     AC_MSG_ERROR(protoc compiler needed for [chromecast] was not found)
3930     ])
3931 ], [
3932     AS_IF([test "${enable_chromecast}" = "yes"],
3933         AC_MSG_ERROR(Library [protobuf-lite >= protobuf_lite_version] needed for [chromecast] was not found),
3934         AC_MSG_WARN(Library [protobuf-lite >= protobuf_lite_version] needed for [chromecast] was not found)
3935     )
3936     enable_chromecast="no"
3937 ], [(Chromecast streaming support)], [auto])
3938 AM_CONDITIONAL([BUILD_CHROMECAST], [test "${build_chromecast}" = "yes"])
3939 m4_popdef([protobuf_lite_version])
3942 dnl  Interface plugins
3945 EXTEND_HELP_STRING([Interface plugins:])
3948 dnl QT
3950 AC_ARG_ENABLE([qt],
3951   AS_HELP_STRING([--disable-qt], [Qt UI support (default enabled)]),, [
3952   AS_IF([test "${enable_vlc}" != "no"], [enable_qt="yes"])
3953   AS_IF([test "${SYS}" = "darwin"], [
3954     enable_qt="no"
3955   ])
3957 have_qt5_x11="no"
3958 AS_IF([test "${enable_qt}" != "no"], [
3959   PKG_CHECK_MODULES([QT], [Qt5Core >= 5.11.0 Qt5Widgets Qt5Gui Qt5Quick Qt5QuickWidgets Qt5QuickControls2 Qt5Svg], [
3960       PKG_CHECK_MODULES([QT5_X11], [Qt5X11Extras], [
3961           have_qt5_x11="yes"
3962       ],[
3963           AC_MSG_WARN([Not building Qt Interface with X11 helpers.])
3964       ])
3965       QT_PATH="$(eval $PKG_CONFIG --variable=exec_prefix Qt5Core)"
3966       QT_HOST_PATH="$(eval $PKG_CONFIG --variable=host_bins Qt5Core)"
3967       QT_VERSION="$(eval $PKG_CONFIG --modversion Qt5Gui)"
3968       AC_PATH_PROGS(MOC, [moc-qt5 moc], moc, ["${QT_HOST_PATH}" "${QT_PATH}/bin"])
3969       AC_PATH_PROGS(RCC, [rcc-qt5 rcc], rcc, ["${QT_HOST_PATH}" "${QT_PATH}/bin"])
3970       AC_PATH_PROGS(UIC, [uic-qt5 uic], uic, ["${QT_HOST_PATH}" "${QT_PATH}/bin"])
3971       AC_PATH_PROGS(QMLCACHE, [qmlcachegen-qt5 qmlcachegen], no, ["${QT_HOST_PATH}" "${QT_PATH}/bin"])
3972       AS_IF([test "x${QMLCACHE}" = "xno"], [
3973           AC_MSG_WARN([qmlcachegen not found])
3974       ])
3975     ], [
3976       AS_IF([test -n "${enable_qt}"],[
3977         AC_MSG_ERROR([${QT_PKG_ERRORS}. If you want to build VLC without GUI, pass --disable-qt.])
3978       ],[
3979         AC_MSG_WARN([${QT_PKG_ERRORS}.])
3980       ])
3981       enable_qt="no"
3982     ])
3985 AC_ARG_ENABLE([qt-qml-cache],
3986   AS_HELP_STRING([--enable-qt-qml-cache],
3987     [enable qml cache generation]))
3988 AM_CONDITIONAL([HAVE_QMLCACHE], [test "${enable_qt_qml_cache}" = "yes" && test "x$QMLCACHE" != "xno"])
3990 AC_ARG_ENABLE([qt-qml-debug],
3991   AS_HELP_STRING([--enable-qt-qml-debug], [enable qml debuger]))
3992 AM_CONDITIONAL(QT_QML_DEBUG, [test "${enable_qt_qml_debug}" = "yes"])
3994 AS_IF([test "${enable_qt}" != "no"], [
3995   ALIASES="${ALIASES} qvlc"
3997 AC_SUBST([QT_VERSION])
3998 AM_CONDITIONAL([ENABLE_QT], [test "$enable_qt" != "no"])
3999 AM_CONDITIONAL([HAVE_QT5_X11], [test "${have_qt5_x11}" = "yes"])
4002 dnl detect kde4-config patch (used for kde solids).
4004 AC_ARG_VAR([KDE4_CONFIG], [kde4-config utility])
4005 AS_IF([test "x$KDE4_CONFIG" = "x"], [
4006   KDE4_CONFIG="kde4-config"
4010 dnl Simple test for skins2 dependency
4012 AS_IF([test "$enable_qt" = "no"], [
4013   AS_IF([test "${enable_skins2}" = "yes"], [
4014     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.])
4015   ], [
4016     enable_skins2="no"
4017     AC_MSG_WARN([The skins2 module depends on the Qt interface, Qt is not built so skins2 is disabled.])
4018   ])
4022 dnl Skins2 module
4024 AC_ARG_ENABLE([skins2],
4025   AS_HELP_STRING([--enable-skins2], [skins interface module (default auto)]))
4026 AS_IF([test "${enable_skins2}" != "no"], [
4027   have_skins_deps="yes"
4029   dnl Win32
4030   AS_IF([test "${SYS}" = "mingw32"], [
4031     VLC_ADD_CPPFLAGS([skins2],[-U_OFF_T_ -U_off_t -DWIN32_SKINS])
4032     VLC_ADD_LIBS([skins2],[-lgdi32 -lole32 -luuid -lmsimg32])
4033   dnl OS/2
4034   ], [test "${SYS}" = "os2"], [
4035     VLC_ADD_CPPFLAGS([skins2],[ -DOS2_SKINS])
4036   dnl Linux/Unix
4037   ], [
4038     PKG_CHECK_MODULES([XPM], [xpm],, [have_skins_deps="no"])
4039     PKG_CHECK_MODULES([XINERAMA], [xinerama],, [have_skins_deps="no"])
4040     PKG_CHECK_MODULES([XCURSOR], [xcursor],, [have_skins_deps="no"])
4041     PKG_CHECK_MODULES([XEXT], [xext],, [have_skins_deps="no"])
4042     VLC_ADD_CPPFLAGS([skins2],[${X_CFLAGS} ${XEXT_CFLAGS} ${XPM_CFLAGS} -DX11_SKINS])
4043     VLC_ADD_LIBS([skins2],[${X_LIBS} ${X_PRE_LIBS} ${XEXT_LIBS} ${XPM_LIBS} ${XINERAMA_LIBS} ${XCURSOR_LIBS} -lX11])
4044   ])
4046   dnl we need freetype
4047   AS_IF([test "${have_freetype}" != "yes"], [
4048     have_skins_deps="no"
4049   ])
4051   AS_IF([test "${have_skins_deps}" = "no"], [
4052     AS_IF([test "x${enable_skins2}" = "x"], [
4053       AC_MSG_WARN([Skins2 interface disabled due to missing dependencies.])
4054     ], [
4055       AC_MSG_ERROR([Skins2 interface requires FreeType, libxcursor, libxpm, libxext and libxinerama])
4056     ])
4057     enable_skins2="no"
4058   ], [
4059     ALIASES="${ALIASES} svlc"
4060     enable_skins2="yes"
4061   ])
4063 AM_CONDITIONAL([BUILD_SKINS], [test "${enable_skins2}" = "yes"])
4065 AC_ARG_ENABLE([libtar],
4066   AS_HELP_STRING([--enable-libtar], [libtar support for skins2 (default auto)]))
4067 AS_IF([test "${enable_skins2}" = "yes" && test "${enable_libtar}" != "no"], [
4068   AC_CHECK_HEADERS([libtar.h], [
4069     VLC_ADD_LIBS([skins2],[-ltar])
4070   ])
4074 dnl  MacOS X gui module
4076 AC_ARG_ENABLE([macosx],
4077   AS_HELP_STRING([--enable-macosx], [Mac OS X gui support (default enabled on Mac OS X)]))
4078 if test "x${enable_macosx}" != "xno" -a "${SYS}" = "darwin"
4079 then
4081   dnl
4082   dnl If possible, use xcrun to find the right ibtool
4083   dnl
4085   AC_PATH_PROG([XCRUN], [xcrun], [no])
4086   AS_IF([test ! "x${XCRUN}" = "xno"], [
4087     AC_MSG_CHECKING([for ibtool (using xcrun)])
4088     XIB="$(eval $XCRUN -f ibtool 2>/dev/null || echo no)"
4089     AC_MSG_RESULT([${XIB}])
4090   ], [
4091     AC_MSG_WARN([Looking for tools without using xcrun])
4092   ])
4094   AS_IF([test "x${XIB}" = "xno"], [
4095     AC_PATH_PROG(XIB, [ibtool], [no])
4096     AS_IF([test "x${XIB}" = "xno"], [
4097       AC_MSG_ERROR([ibtool was not found, but is required for --enable-macosx])
4098     ])
4099   ])
4101 AM_CONDITIONAL([ENABLE_MACOSX_UI], [test "$enable_macosx" != "no" -a "${SYS}" = "darwin"])
4104 dnl  MacOS X sparkle update support
4106 AC_ARG_ENABLE([sparkle],
4107   AS_HELP_STRING([--enable-sparkle], [Sparkle update support for OS X (default enabled on Mac OS X)]))
4108 if test "x${enable_sparkle}" != "xno" -a "${HAVE_OSX}" = "1"
4109 then
4110   if test ! -d ${CONTRIB_DIR}/Sparkle.framework -a ! -d ${CONTRIB_DIR}/Frameworks/Sparkle.framework
4111   then
4112     AC_MSG_ERROR([Sparkle framework is required and was not found in ${CONTRIB_DIR}])
4113   fi
4115   AC_DEFINE([HAVE_SPARKLE], [1], [Define to 1 if sparkle is enabled.])
4117 AM_CONDITIONAL([HAVE_SPARKLE], [test "$enable_sparkle" != "no"])
4120 dnl  MacOS X breakpad creash reporter support
4122 AC_ARG_WITH([breakpad],
4123   AS_HELP_STRING([--with-breakpad=URL], [Enable Breakpad reporter using given URL]), [], [with_breakpad=no])
4125 AS_IF([test "$with_breakpad" != "no"], [
4127   AS_IF([test "$with_breakpad" = "yes"], [
4128     AC_MSG_ERROR([You need to supply the CrashDragon Server URL as value for --with-breakpad])
4129   ])
4131   AS_IF([test "$HAVE_OSX" = "1"], [
4132     AC_MSG_CHECKING([for Breakpad framework])
4133     AS_IF([test ! -d ${CONTRIB_DIR}/Breakpad.framework -a \
4134                 ! -d ${CONTRIB_DIR}/Frameworks/Breakpad.framework], [
4135       AC_MSG_RESULT([no])
4136       with_breakpad="no"
4137       AC_MSG_ERROR([Breakpad framework is required and was not found in ${CONTRIB_DIR}])
4138     ], [
4139       AC_MSG_RESULT([yes])
4140     ])
4141   ],[
4142     PKG_CHECK_MODULES([BREAKPAD], [breakpad-client], [
4143       LDFLAGS="${LDFLAGS} -Wl,--build-id"
4144     ], [
4145       AC_MSG_ERROR(["breakpad not found"])
4146     ])
4147   ])
4150 AM_CONDITIONAL([HAVE_BREAKPAD], [test "$with_breakpad" != "no"])
4151 AS_IF([test "$with_breakpad" != "no"], [
4152   AC_SUBST([BREAKPAD_URL], ["${with_breakpad}"])
4156 dnl  Minimal Mac OS X module
4158 AC_ARG_ENABLE([minimal-macosx],
4159   AS_HELP_STRING([--enable-minimal-macosx], [Minimal Mac OS X support (default disabled)]))
4160 if test "${enable_minimal_macosx}" = "yes" -a "${SYS}" = "darwin"
4161 then
4162   VLC_ADD_PLUGIN([minimal_macosx])
4166 dnl Mac OS X fancy dmg build tool
4168 if test "${HAVE_OSX}" = "1"
4169 then
4170   AC_PATH_PROG(DMGBUILD, dmgbuild, no)
4171   AS_IF([test "x${DMGBUILD}" = "xno"], [
4172     AC_MSG_WARN([dmgbuild not found -- unable to build fancy DMGs])
4173   ])
4175 AM_CONDITIONAL([HAVE_DMGBUILD], [test "x$DMGBUILD" != "xno" -a "${HAVE_OSX}" = "1"])
4178 dnl  VideoToolbox plugins
4179 AC_CHECK_HEADERS([VideoToolbox/VideoToolbox.h], [
4180     VLC_ADD_PLUGIN([videotoolbox])
4181     VLC_ADD_PLUGIN([cvpx])
4182   ])
4185 dnl  AudioToolbox MIDI plugin
4186 AC_CHECK_HEADERS([AudioToolbox/AudioToolbox.h], [
4187   VLC_ADD_PLUGIN([audiotoolboxmidi])
4191 dnl  ncurses module
4193 AC_ARG_ENABLE([ncurses],
4194 AS_HELP_STRING([--disable-ncurses],[ncurses text-based interface (default auto)]))
4195 have_ncurses="no"
4196 AS_IF([test "${enable_ncurses}" != "no"] ,[
4197   PKG_CHECK_MODULES([NCURSES], [ncursesw], [
4198     have_ncurses="yes"
4199     ALIASES="${ALIASES} nvlc"
4200   ], [
4201     AS_IF([test -n "${enable_ncurses}"], [
4202       AC_MSG_ERROR([${NCURSES_PKG_ERRORS}.])
4203     ])
4204   ])
4206 AM_CONDITIONAL([HAVE_NCURSES], [test "${have_ncurses}" = "yes"])
4209 dnl  Lirc plugin
4211 AC_ARG_ENABLE([lirc],
4212   AS_HELP_STRING([--enable-lirc], [lirc support (default disabled)]))
4213 have_lirc="no"
4214 AS_IF([test "${enable_lirc}" = "yes"], [
4215   AC_CHECK_HEADER(lirc/lirc_client.h, [
4216     AC_CHECK_LIB([lirc_client], [lirc_init], [
4217       have_lirc="yes"
4218     ])
4219   ])
4221 AM_CONDITIONAL([HAVE_LIRC], [test "${have_lirc}" = "yes"])
4224 dnl  Bitstream
4226 PKG_CHECK_MODULES([BITSTREAM], [bitstream > 1.4],[have_bitstream="yes"], [have_bitstream="no"])
4227 AM_CONDITIONAL([HAVE_BITSTREAM], [test "${have_bitstream}" = "yes"])
4230 dnl  SRT plugin
4232 PKG_ENABLE_MODULES_VLC([SRT], [access_srt access_output_srt], [srt >= 1.3.0], [SRT input/output plugin], [auto], [], [], [-DENABLE_SRT])
4234 EXTEND_HELP_STRING([Visualisations and Video filter plugins:])
4236 dnl  goom visualization plugin
4238 PKG_ENABLE_MODULES_VLC([GOOM], [], [libgoom2], [goom visualization plugin], [auto])
4241 dnl libprojectM visualization plugin
4243 AC_ARG_ENABLE([projectm],
4244   AS_HELP_STRING([--enable-projectm], [projectM visualization plugin (default enabled)]))
4245 AS_IF([test "${enable_projectm}" != "no"],
4246   [
4247     PKG_CHECK_MODULES(PROJECTM, libprojectM,
4248     [
4249       VLC_ADD_PLUGIN([projectm])
4250       PKG_CHECK_EXISTS([libprojectM >= 2.0.0],
4251         [ AC_DEFINE([HAVE_PROJECTM2], 1, [Define to 1 if using libprojectM 2.x]) ],
4252         [ AC_MSG_WARN( [Using libprojectM version 1] )
4253       ])
4254     ],[
4255       AC_MSG_WARN([${PROJECTM_PKG_ERRORS}.])
4256     ])
4257   ])
4260 dnl Vovoid VSXu visualization plugin
4262 AC_ARG_ENABLE([vsxu],
4263   AS_HELP_STRING([--enable-vsxu], [Vovoid VSXu visualization plugin (default auto)]))
4264 AS_IF([test "${enable_vsxu}" != "no"],
4265   [
4266     PKG_CHECK_MODULES(VSXU, libvsxu,
4267     [
4268       VLC_ADD_PLUGIN([vsxu])
4269     ],[
4270       AC_MSG_WARN([${VSXU_PKG_ERRORS}.])
4271     ])
4272   ])
4274 EXTEND_HELP_STRING([Service Discovery plugins:])
4276 dnl  Avahi-Zeroconf services discovery
4277 PKG_ENABLE_MODULES_VLC([AVAHI], [], [avahi-client >= 0.6], [Zeroconf services discovery], [auto])
4280 dnl  libudev services discovery
4281 PKG_ENABLE_MODULES_VLC([UDEV], [], [libudev >= 142], [Linux udev services discovery], [auto])
4284 dnl MTP devices services discovery
4285 PKG_ENABLE_MODULES_VLC([MTP], [mtp access_mtp], [libmtp >= 1.0.0], [MTP devices support], [auto])
4288 dnl UPnP Plugin (Intel SDK)
4290 PKG_ENABLE_MODULES_VLC([UPNP], [upnp], [libupnp], [Intel UPNP SDK],[auto])
4293 dnl mDNS using libmicrodns
4295 PKG_ENABLE_MODULES_VLC([MICRODNS], [], [microdns >= 0.1.2], [mDNS services discovery], [auto])
4298 EXTEND_HELP_STRING([Misc options:])
4301 dnl  libxml2 module
4303 PKG_ENABLE_MODULES_VLC([LIBXML2], [xml], [libxml-2.0 >= 2.5], [libxml2 support],[auto])
4307 dnl libgcrypt
4309 AC_ARG_ENABLE([libgcrypt],
4310   AS_HELP_STRING([--disable-libgcrypt], [gcrypt support (default enabled)]))
4311 AC_ARG_VAR([GCRYPT_CFLAGS], [C compiler flags for gcrypt])
4312 AC_ARG_VAR([GCRYPT_LIBS], [linker flags flags for gcrypt])
4314 # require libgcrypt >= 1.6.0
4315 AS_IF([test "${enable_libgcrypt}" != "no"], [
4316   AC_CACHE_CHECK([for gcrypt 1.6.0 or later], [ac_cv_lib_gcrypt], [
4317     VLC_SAVE_FLAGS
4318     CFLAGS="${CFLAGS} ${GCRYPT_CFLAGS}"
4319     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([
4320 [#include <gcrypt.h>
4321 #if GCRYPT_VERSION_NUMBER < 0x010600
4322 #error
4323 #endif]])], [
4324       ac_cv_lib_gcrypt=yes
4325     ], [
4326       ac_cv_lib_gcrypt=no
4327     ])
4328     VLC_RESTORE_FLAGS
4329   ])
4331   AS_IF([test "${ac_cv_lib_gcrypt}" = "yes"], [
4332     AC_DEFINE([HAVE_GCRYPT], 1, [Defined if having gcrypt])
4333   ], [
4334     AS_IF([test "${enable_libgcrypt}" = "yes"], [
4335       AC_MSG_ERROR([libgcrypt version 1.6.0 or higher not found. Install libgcrypt or pass --disable-libgcrypt.])
4336     ])
4337   ])
4340 AS_IF([test -z "$GCRYPT_LIBS"], [
4341   GCRYPT_LIBS="-lgcrypt -lgpg-error"
4344 AC_SUBST([GCRYPT_CFLAGS])
4345 AC_SUBST([GCRYPT_LIBS])
4346 AM_CONDITIONAL([HAVE_GCRYPT], [test "${ac_cv_lib_gcrypt}" = "yes"])
4349 dnl TLS/SSL
4351 AC_ARG_ENABLE([gnutls],
4352   AS_HELP_STRING([--enable-gnutls], [GNU TLS TLS/SSL support (default enabled)]))
4353 AS_IF([test "${enable_gnutls}" != "no"], [
4354   PKG_CHECK_MODULES(GNUTLS, [gnutls >= 3.5.0], [
4355     VLC_ADD_PLUGIN([gnutls])
4356   ], [
4357     AS_IF([test -n "${enable_gnutls}"], [
4358       AC_MSG_ERROR([${GNUTLS_PKG_ERRORS}.)])
4359     ])
4360   ])
4365 dnl Taglib plugin
4367 AC_ARG_ENABLE([taglib],
4368   AS_HELP_STRING([--disable-taglib],
4369     [do not use TagLib (default enabled)]))
4370 AS_IF([test "${enable_taglib}" != "no"], [
4371   PKG_CHECK_MODULES(TAGLIB, taglib >= 1.11, [
4372     VLC_ADD_PLUGIN([taglib])
4373   ], [
4374     AC_MSG_WARN([${TAGLIB_PKG_ERRORS}.])])
4378 dnl  libsecret
4380 PKG_ENABLE_MODULES_VLC([SECRET], [], [libsecret-1 >= 0.18], [use libsecret for keystore], [auto])
4383 dnl  kwallet
4385 AC_ARG_ENABLE([kwallet],
4386   AS_HELP_STRING([--enable-kwallet],
4387     [use kwallet (via D-Bus) for keystore (default enabled)]))
4388 AS_IF([test "${enable_kwallet}" != "no" -a "${have_dbus}" = "yes"], [
4389   VLC_ADD_PLUGIN([kwallet])
4393 dnl update checking system
4395 AC_ARG_ENABLE([update-check],
4396   AS_HELP_STRING([--enable-update-check], [update checking system (default disabled)]))
4397 if test "${enable_update_check}" = "yes"
4398 then
4399  AS_IF([test "${ac_cv_lib_gcrypt}" != "yes"],[
4400     AC_MSG_ERROR([libgcrypt is required for update checking system]) ])
4402 AM_CONDITIONAL([UPDATE_CHECK], [test "${enable_update_check}" = "yes"])
4405 dnl OS X notification plugin
4407 AC_ARG_ENABLE([osx_notifications],
4408   AS_HELP_STRING([--enable-osx-notifications],
4409     [macOS notification plugin (default disabled)]),,
4410   [enable_osx_notifications=no])
4411 AS_IF([test "${enable_osx_notifications}" != "no"], [
4412   VLC_ADD_PLUGIN([osx_notifications])
4416 dnl Libnotify notification plugin
4418 PKG_ENABLE_MODULES_VLC([NOTIFY], [], [libnotify gtk+-3.0], [libnotify notification], [auto])
4420 PKG_ENABLE_MODULES_VLC([MEDIALIBRARY], [medialibrary], [medialibrary >= 0.7.1], (medialibrary support), [auto])
4423 dnl  Endianness check
4425 AC_C_BIGENDIAN
4426 AS_IF([test "${ac_cv_c_bigendian}" = "yes"], [
4427   DEFS_BIGENDIAN="-DWORDS_BIGENDIAN=1"
4428 ], [
4429   DEFS_BIGENDIAN=""
4431 AC_SUBST([DEFS_BIGENDIAN])
4434 dnl Where to install KDE solid .desktop
4436 AC_ARG_WITH(kde-solid,
4437   AS_HELP_STRING([--with-kde-solid=PATH],
4438                  [KDE Solid actions directory (auto)]),, [
4440 if test "${SYS}" != "mingw32" -a "${SYS}" != "darwin" -a "${HAVE_ANDROID}" != "1" ; then
4441   with_kde_solid="yes"
4444 soliddatadir=""
4445 AS_IF([test "${with_kde_solid}" != "no"], [
4446   AS_IF([test "${with_kde_solid}" = "yes"], [
4447     kde4datadir="`${KDE4_CONFIG} --install data`"
4448     AS_IF([test "x$kde4datadir" = "x"], [kde4datadir='${datadir}/kde4/apps'])
4449     soliddatadir="${kde4datadir}/solid/actions"
4450   ], [
4451     soliddatadir="${with_kde_solid}"
4452   ])
4454 AC_SUBST([soliddatadir])
4455 AM_CONDITIONAL([KDE_SOLID], [test "x${soliddatadir}" != "x"])
4458 dnl  Find tools for win32 packaging
4460 AS_IF([test "${SYS}" = "mingw32"], [
4461     dnl
4462     dnl Find makensis required to build the NSIS installer
4463     dnl
4464     nsis_major_required="3"
4465     nsis_version_ok="no"
4466     AC_PATH_PROG([MAKENSIS], [makensis], [no])
4467     AS_IF([test "$MAKENSIS" != "no"], [
4468         # Check version
4469         AC_MSG_CHECKING([makensis version])
4470         nsis_version=$($MAKENSIS -VERSION)
4471         AC_MSG_RESULT([$nsis_version])
4472         nsis_version_major=$(echo "$nsis_version" | awk -F \. '{print $1}' | sed 's/v//')
4473         # Check if major version is a valid number
4474         AS_IF([test -n "$nsis_version_major" && \
4475                test "$nsis_version_major" -eq "$nsis_version_major" 2> /dev/null], [
4476             # Do the version check using major version
4477             AS_IF([test "$nsis_version_major" -lt "$nsis_major_required"], [
4478                 AC_MSG_WARN([makensis too old, (needs ${nsis_major_required}.x, have ${nsis_version_major}.x)])
4479             ], [
4480                 nsis_version_ok="yes"
4481             ])
4482         ], [
4483             AC_MSG_WARN([failed to check the makensis version])
4484         ])
4485     ])
4486     dnl
4487     dnl Find 7zip
4488     dnl
4489     AC_PATH_PROG([SEVENZIP], [7z], [7z])
4491 AM_CONDITIONAL([HAVE_MAKENSIS], [test "x$MAKENSIS" != "xno" && test "$nsis_version_ok" = "yes"])
4494 dnl Check wether we have the PROCESS_MITIGATION_IMAGE_LOAD_POLICY
4495 dnl It should only be available when building for win10, but some SDKs define it unconditionnaly
4497 if test "${SYS}" = "mingw32"; then
4498     AC_CHECK_TYPES([PROCESS_MITIGATION_IMAGE_LOAD_POLICY],,,[#include <windows.h>])
4501 EXTEND_HELP_STRING([Components:])
4504 dnl  the VLC binary
4506 AC_ARG_ENABLE([vlc],
4507   AS_HELP_STRING([--enable-vlc], [build the VLC media player (default enabled)]))
4508 AM_CONDITIONAL([BUILD_VLC], [test "${enable_vlc}" != "no"])
4511 dnl Fuzzer (at the end not to mess dependencies FLAGS)
4513 AS_VAR_IF(with_libfuzzer, no, [], [
4514     LIBS="-lstdc++ ${LIBM}"
4515     AS_IF([test "${with_libfuzzer}" != "yes"], [
4516       LIBS="$LIBS -L${with_libfuzzer}"
4517     ])
4518     LIBS="$LIBS -lFuzzer"
4519     AX_CHECK_COMPILE_FLAG(-fsanitize-coverage=trace-pc-guard, [
4520         AX_APPEND_FLAG([-fsanitize-coverage=trace-pc-guard])
4521         AX_APPEND_FLAG([-fsanitize-coverage=trace-pc-guard], [CXXFLAGS])
4522         AX_APPEND_COMPILE_FLAGS([-fsanitize-coverage=trace-cmp])
4523         AX_APPEND_COMPILE_FLAGS([-fsanitize-coverage=trace-cmp], [CXXFLAGS])
4524     ], [
4525         AX_CHECK_COMPILE_FLAG(-fsanitize-coverage=trace-pc, [
4526             AX_APPEND_FLAG([-fsanitize-coverage=trace-pc])
4527             AX_APPEND_FLAG([-fsanitize-coverage=trace-pc], [CXXFLAGS])
4528         ], [
4529             AC_MSG_ERROR([Sanitizer coverage not supported by your compiler])
4530         ])
4531     ])
4535 dnl  Stuff used by the program
4537 VERSION_MESSAGE="${VERSION} ${CODENAME}"
4538 COPYRIGHT_MESSAGE="Copyright © ${COPYRIGHT_YEARS} the VideoLAN team"
4539 AC_DEFINE_UNQUOTED([VERSION_MESSAGE], "${VERSION_MESSAGE}", [Simple version string])
4540 AC_DEFINE_UNQUOTED([COPYRIGHT_MESSAGE], "${COPYRIGHT_MESSAGE}", [Copyright string])
4541 AC_DEFINE_UNQUOTED([COPYRIGHT_YEARS], "${COPYRIGHT_YEARS}", [The copyright years])
4542 AC_DEFINE_UNQUOTED([CONFIGURE_LINE], "${CONFIGURE_LINE}", [The ./configure command line])
4543 AC_DEFINE_UNQUOTED([PACKAGE_VERSION_MAJOR],${VERSION_MAJOR}, [version major number])
4544 AC_DEFINE_UNQUOTED([PACKAGE_VERSION_MINOR],${VERSION_MINOR}, [version minor number])
4545 AC_DEFINE_UNQUOTED([PACKAGE_VERSION_REVISION],${VERSION_REVISION}, [version revision number])
4546 AC_DEFINE_UNQUOTED([PACKAGE_VERSION_EXTRA],${VERSION_EXTRA}, [version extra number])
4547 AC_DEFINE_UNQUOTED([PACKAGE_VERSION_DEV],"${VERSION_DEV}", [version development string])
4548 AC_SUBST([COPYRIGHT_MESSAGE])
4549 AC_SUBST([VERSION_MESSAGE])
4550 AC_SUBST([VERSION_MAJOR])
4551 AC_SUBST([VERSION_MINOR])
4552 AC_SUBST([VERSION_REVISION])
4553 AC_SUBST([VERSION_EXTRA])
4554 AC_SUBST([COPYRIGHT_YEARS])
4555 AC_DEFINE_UNQUOTED([VLC_COMPILE_BY], "`whoami|sed -e 's/\\\/\\\\\\\/g'`", [user who ran configure])
4556 AC_DEFINE_UNQUOTED([VLC_COMPILE_HOST], "`hostname -f 2>/dev/null || hostname`", [host which ran configure])
4557 AC_DEFINE_UNQUOTED([VLC_COMPILER], "`$CC -v 2>&1 | tail -n 1 | sed -e 's/ *$//'`", [compiler])
4559 dnl  Handle substvars that use $(top_srcdir)
4561 CPPFLAGS="-I\$(top_srcdir)/include -I\$(top_builddir)/include ${CPPFLAGS}"
4564 dnl  Configuration is finished
4566 AC_SUBST([SYS])
4567 AC_SUBST([ARCH])
4568 AC_SUBST([ALIASES])
4569 AC_SUBST([ASM])
4570 AC_SUBST([MOC])
4571 AC_SUBST([RCC])
4572 AC_SUBST([UIC])
4573 AC_SUBST([WINDRES])
4574 AC_SUBST([WINE_SDK_PATH])
4575 AC_SUBST([LIBEXT])
4576 AC_SUBST([AM_CPPFLAGS])
4577 AC_SUBST([MACOSX_DEPLOYMENT_TARGET])
4578 AC_SUBST([FILE_LIBVLCCORE_DLL])
4579 AC_SUBST([FILE_LIBVLC_DLL])
4581 AC_CONFIG_FILES([
4582   Makefile
4583   doc/Makefile
4584   modules/Makefile
4585   m4/Makefile
4586   po/Makefile.in
4587   share/Makefile
4588   compat/Makefile
4589   src/Makefile
4590   lib/Makefile
4591   bin/Makefile
4592   test/Makefile
4593   modules/hw/mmal/Makefile
4594   share/vlc.appdata.xml.in
4597 AM_COND_IF([HAVE_WIN32], [
4598   AC_CONFIG_FILES([
4599     extras/package/win32/NSIS/spad.nsi
4600     extras/package/win32/NSIS/vlc.win32.nsi
4601     extras/package/win32/msi/config.wxi
4602   ])
4605 AM_COND_IF([HAVE_DARWIN], [
4606   AC_CONFIG_FILES([
4607     modules/gui/macosx/UI/InfoPlist.strings:modules/gui/macosx/Resources/InfoPlist.strings.in
4608     share/macosx/Info.plist:share/Info.plist.in
4609   ])
4612 dnl Generate makefiles
4613 AC_OUTPUT
4615 dnl Do we have to use make or gmake ?
4616 if make --version 2>&1|grep -q GNU
4617 then
4618     # GNU make, all seems good
4619     MAKE=make
4620 else
4621     # Known GNU make alias (on BSD)
4622     MAKE=gmake
4624 dnl Shortcut to nice compile message
4625 if test -n $SHELL; then
4626   SHELL=${CONFIG_SHELL-/bin/sh}
4628 rm -f compile
4629 compile_top_srcdir=`sed -ne "s/^top_srcdir *= *//p" < Makefile`
4630 echo "#! $SHELL
4631 rm -f .error\$\$
4632 ERROR=0
4633 export PATH=\"$PATH\" LANG=C
4634 ($MAKE V=1 \$@ 2>&1 || touch .error\$\$)| $compile_top_srcdir/extras/buildsystem/make.pl
4635 test -f .error\$\$ && ERROR=1
4636 rm -f .error\$\$
4637 exit \$ERROR" >compile
4638 chmod a+x compile
4640 echo "
4641 libvlc configuration
4642 --------------------
4643 version               : ${VERSION}
4644 system                : ${SYS}
4645 architecture          : ${ARCH}
4646 optimizations         : ${enable_optimizations}"
4647 if test "${enable_vlc}" != "no"; then
4648 echo "vlc aliases           :${ALIASES}"
4649 else
4650 echo "build vlc executable  : no"
4652 echo "
4653 To build vlc and its plugins, type \`$MAKE', or \`./compile' if you like nice colors."