lib: lock the player before updating the viewpoint
[vlc.git] / configure.ac
blob4fd1240d09b71b98da655dd273c957f0d57f5a9a
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,-framework,CoreServices])
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     dnl
224     dnl  Handle Mac OS X SDK flags
225     dnl
226     AC_ARG_WITH(macosx-sdk,
227       AS_HELP_STRING([--with-macosx-sdk=DIR],
228         [compile using the SDK in DIR]))
229     if test "${with_macosx_sdk}" != "" ; then
230         test ! -d "${with_macosx_sdk}" && AC_MSG_ERROR([SDK "${with_macosx_sdk}" not found])
231         CPP="${CPP} -isysroot ${with_macosx_sdk}"
232         CC="${CC} -isysroot ${with_macosx_sdk}"
233         CXX="${CXX} -isysroot ${with_macosx_sdk}"
234         OBJC="${OBJC} -isysroot ${with_macosx_sdk}"
235         LD="${LD} -syslibroot ${with_macosx_sdk}"
236     fi
237     AC_ARG_WITH(macosx-version-min,
238       AS_HELP_STRING([--with-macosx-version-min=VERSION],
239         [compile for Mac OS X VERSION and above]))
240     if test "${with_macosx_version_min}" != "" ; then
241         CPP="${CPP} -mmacosx-version-min=${with_macosx_version_min}"
242         CC="${CC} -mmacosx-version-min=${with_macosx_version_min}"
243         CXX="${CXX} -mmacosx-version-min=${with_macosx_version_min}"
244         OBJC="${OBJC} -mmacosx-version-min=${with_macosx_version_min}"
245         LD="${LD} -mmacosx_version_min=${with_macosx_version_min}"
246     fi
247     ;;
248   *mingw32* | *cygwin* | *wince* | *mingwce*)
249     dnl Force libtool to not link to (shared) libgcc_s when detecting C++ dependencies
250     dnl When doing this test with -static-libgcc it will link on (static) libgcc_eh
251     CXXFLAGS="${CXXFLAGS} -static-libgcc"
252     AC_CHECK_TOOL(WINDRES, windres, :)
253     AC_CHECK_TOOL(OBJCOPY, objcopy, :)
254     AC_PREPROC_IFELSE([AC_LANG_PROGRAM(
255       [[#ifdef _WIN32_WINNT
256        # error _WIN32_WINNT already defined
257        #else
258        # include <windows.h>
259        # if defined(_WIN32_WINNT) && _WIN32_WINNT >= 0x0601
260        #  error _WIN32_WINNT toolchain default high enough
261        # endif
262        #endif
263       ]],[[;]])
264     ],[
265       AC_DEFINE([_WIN32_WINNT], [0x0601], [Define to '0x0601' for Windows 7 APIs.])
266     ])
267     AC_DEFINE([_WIN32_IE], [0x0600], [Define to '0x0600' for IE 6.0 (and shell) APIs.])
268     AC_DEFINE([UNICODE], [1], [Define to 1 for Unicode (Wide Chars) APIs.])
269     AC_DEFINE([_ISOC99_SOURCE], [1], [Extensions to ISO C89 from ISO C99.])
270     AC_DEFINE([_ISOC11_SOURCE], [1], [Extensions to ISO C99 from ISO C11.])
271     AC_DEFINE([_POSIX_SOURCE], [1], [IEEE Std 1003.1.])
272     AC_DEFINE([_POSIX_C_SOURCE], [200809L], [IEEE Std 1003.1.])
273     AC_DEFINE([_XOPEN_SOURCE], [700], [POSIX and XPG 7th edition])
274     AC_DEFINE([_XOPEN_SOURCE_EXTENDED], [1], [XPG things and X/Open Unix extensions.])
275     AC_DEFINE([_BSD_SOURCE], [1], [ISO C, POSIX, and 4.3BSD things.])
276     AC_DEFINE([_SVID_SOURCE], [1], [ISO C, POSIX, and SVID things.])
278     case "${host_os}" in
279       *mingw32*)
280         SYS=mingw32
281         ;;
282       *cygwin*)
283         dnl Check if we are using the mno-cygwin mode in which case we are
284         dnl actually dealing with a mingw32 compiler.
285         AC_EGREP_CPP(yes,
286             [#ifdef _WIN32
287              yes
288              #endif],
289             SYS=mingw32, AC_MSG_ERROR([VLC requires -mno-cygwin]))
290         ;;
291     esac
293     if test "${SYS}" = "mingw32"; then
294         # DEP, ASLR, NO SEH
295         LDFLAGS="${LDFLAGS} -Wl,--nxcompat -Wl,--no-seh -Wl,--dynamicbase"
297         AC_CHECK_PROGS(U2D, [unix2dos todos], unix2dos)
298         ac_default_prefix="`pwd`/_win32"
299         DESTDIR="`pwd`/_win32/"
301         dnl
302         dnl NSIS/MSI Installer prefix and WIN64
303         dnl
304         case "${host_cpu}" in
305             aarch64)
306                 HAVE_WIN64="1"
307                 WINDOWS_ARCH="arm64"
308                 PROGRAMFILES="PROGRAMFILES64"
309                 LDFLAGS="${LDFLAGS} -Wl,--high-entropy-va -Wl,--image-base,0x140000000"
310             ;;
311             amd64|x86_64)
312                 HAVE_WIN64="1"
313                 WINDOWS_ARCH="x64"
314                 PROGRAMFILES="PROGRAMFILES64"
315                 LDFLAGS="${LDFLAGS} -Wl,--high-entropy-va -Wl,--image-base,0x140000000"
316                 X86ASMFLAGS="-f win64"
317             ;;
318             armv7)
319                 WINDOWS_ARCH="arm"
320                 PROGRAMFILES="PROGRAMFILES"
321             ;;
322             *)
323                 WINDOWS_ARCH="x86"
324                 PROGRAMFILES="PROGRAMFILES"
325                 X86ASMFLAGS="-f win32"
326                 X86ASMDEFS="${X86ASMDEFS} -DPREFIX"
327             ;;
328         esac
329         AC_SUBST([WINDOWS_ARCH])
330         AC_SUBST([PROGRAMFILES])
332     fi
333     ;;
334   *nto*)
335     SYS=nto
336     ;;
337   solaris*)
338     SYS=solaris
339     ;;
340   hpux*)
341     SYS=hpux
342     ;;
343   *os2*)
344     SYS=os2
345     LDFLAGS="${LDFLAGS} -Zomf -Zbin-files -Zargs-wild -Zhigh-mem"
346     AC_LIBOBJ([freeaddrinfo])
347     AC_LIBOBJ([gai_strerror])
348     AC_CHECK_FUNCS([if_nametoindex])
349     X86ASMFLAGS="-f aout"
350     X86ASMDEFS="-DARCH_X86_32=1 -DARCH_X86_64=0 -DPREFIX"
351     ;;
352   *nacl*)
353     SYS=nacl
354     AC_DEFINE([_XOPEN_SOURCE], [700], [POSIX and XPG 7th edition])
355     AC_LIBOBJ([sigwait])
356     AC_LIBOBJ([recvmsg])
357     AC_LIBOBJ([sendmsg])
358     ;;
359   *)
360     SYS="${host_os}"
361     ;;
362 esac
364 dnl WinRT
365 AC_ARG_ENABLE([winstore_app],
366      AS_HELP_STRING([--enable-winstore-app],
367                     [Build targetted for Windows Store apps (default disabled)]))
369 vlc_winstore_app=0
370 AS_IF([test "${SYS}" = "mingw32"],[
371   LIBCOM="-lole32"
372   AS_IF([test "${enable_winstore_app}" = "yes"], [
373     vlc_winstore_app=1
374     LIBCOM=""
375     AX_APPEND_FLAG([-DWINSTORECOMPAT],[CFLAGS])
376     AX_APPEND_FLAG([-DWINSTORECOMPAT],[CPPFLAGS])
377     AX_APPEND_FLAG([-DWINSTORECOMPAT],[CXXFLAGS])
378     AX_APPEND_FLAG([-lwinstorecompat], [LDFLAGS])
379     VLC_ADD_LIBS([libvlccore], [-lruntimeobject])
380     AC_LIBOBJ([gai_strerror])
381   ],[])
382   AC_SUBST([LIBCOM])
383   ])
384 AC_DEFINE_UNQUOTED(VLC_WINSTORE_APP, ${vlc_winstore_app}, [Define to 1 if you want to build for Windows Store apps])
386 vlc_build_pdb=0
387 AC_ARG_ENABLE([pdb],
388      AS_HELP_STRING([--enable-pdb],
389                     [Build PDB files for windows targets (default off)]))
390 AS_IF([test "${SYS}" = "mingw32"],[
391   AS_IF([test "${enable_pdb}" = "yes"], [
392     vlc_build_pdb=1
393     AX_APPEND_FLAG([-g -gcodeview],[CFLAGS])
394     AX_APPEND_FLAG([-g -gcodeview],[CXXFLAGS])
395     LDFLAGS="${LDFLAGS} -Wl,-pdb="
396   ],[])
399 AM_CONDITIONAL([HAVE_FREEBSD], [test "${SYS}" = "freebsd"])
400 AM_CONDITIONAL([HAVE_LINUX],   [test "${SYS}" = "linux"])
401 AM_CONDITIONAL([HAVE_OS2],     [test "${SYS}" = "os2"])
403 AM_CONDITIONAL([HAVE_DARWIN],  [test "${SYS}" = "darwin"])
404 AM_CONDITIONAL([HAVE_IOS],     [test "${HAVE_IOS}" = "1"])
405 AM_CONDITIONAL([HAVE_OSX],     [test "${HAVE_OSX}" = "1"])
406 AM_CONDITIONAL([HAVE_TVOS],    [test "${HAVE_TVOS}" = "1"])
408 AM_CONDITIONAL([HAVE_NACL],    [test "${SYS}" = "nacl"])
409 AM_CONDITIONAL([HAVE_LIBANL],  [test "${HAVE_LIBANL}" = "1"])
411 AM_CONDITIONAL([HAVE_WIN32],   [test "${SYS}" = "mingw32"])
412 AM_CONDITIONAL([HAVE_WIN64],   [test "${HAVE_WIN64}" = "1"]) dnl Only used for the packaging
413 AM_CONDITIONAL([HAVE_WINSTORE], [test "$vlc_winstore_app" = "1"])
414 AM_CONDITIONAL([HAVE_WIN32_DESKTOP], [test "${SYS}" = "mingw32" -a "$vlc_winstore_app" = "0"])
415 AM_CONDITIONAL([ENABLE_PDB],   [test "$vlc_build_pdb" = "1"])
417 dnl Use nasm/yasm only on x86
418 AC_CHECK_PROGS(X86ASM, [nasm yasm])
419 AM_CONDITIONAL([HAVE_X86ASM], [test -n "${X86ASM}" && test -n "${X86ASMFLAGS}"])
420 AM_COND_IF([HAVE_X86ASM], [
421   AC_DEFINE([HAVE_X86ASM], [1], [Use external asm on x86.])
424 dnl  Because DOLT is not able to handle --with-pic
425 dnl  correctly, manually add -DPIC to the options for
426 dnl  nasm / yasm here.
427 AS_IF([test x$with_pic = xyes], [X86ASMDEFS="${X86ASMDEFS} -DPIC"])
429 AC_SUBST([X86ASMFLAGS])
430 AC_SUBST([X86ASMDEFS])
433 dnl Sadly autoconf does not think about testing foo.exe when ask to test
434 dnl for program foo on win32
435 case "${build_os}" in
436     cygwin|msys|mingw32)
437         ac_executable_extensions=".exe"
438         BUILDEXEEXT=".exe"
439     ;;
440     os2*)
441         BUILDEXEEXT=".exe"
442     ;;
443     *)
444     ;;
445 esac
446 AC_SUBST([BUILDEXEEXT])
448 dnl Android is linux, but a bit different
449 AS_IF([test "$SYS" = linux],[
450     AC_MSG_CHECKING([for an Android system])
451     AC_PREPROC_IFELSE([AC_LANG_PROGRAM(
452         [[#ifndef __ANDROID__
453          # error Not Android
454          #endif
455         ]],[[;]])
456     ],[
457       HAVE_ANDROID="1"
458       AC_MSG_RESULT([yes])
459     ],[
460       AC_MSG_RESULT([no])
461     ])
463 AM_CONDITIONAL([HAVE_ANDROID], [test "${HAVE_ANDROID}" = "1"])
466 dnl  Check for the contrib directory
468 AC_ARG_WITH(contrib,
469   AS_HELP_STRING([--with-contrib[=DIR]],
470     [search for 3rd party libraries in DIR/include and DIR/lib])
472 AC_MSG_CHECKING([for 3rd party libraries path])
473 AS_IF([test -z "${with_contrib}" || test "${with_contrib}" = "yes"], [
474   CONTRIB_DIR="${srcdir}/contrib/${host}"
475   AS_IF([test ! -d "${CONTRIB_DIR}"], [
476     echo "${CONTRIB_DIR} not found" >&AS_MESSAGE_LOG_FD
477     CONTRIB_DIR="${srcdir}/contrib/`$CC -dumpmachine`"
478     AS_IF([test ! -d "${CONTRIB_DIR}"], [
479       echo "${CONTRIB_DIR} not found" >&AS_MESSAGE_LOG_FD
480       CONTRIB_DIR=""
481       AC_MSG_RESULT([not found])
482     ])
483   ])
484 ], [
485   AS_IF([test "${with_contrib}" != "no"], [
486     CONTRIB_DIR="${with_contrib}"
487   ], [
488     CONTRIB_DIR=""
489     AC_MSG_RESULT([disabled])
490   ])
492 AS_IF([test -n "${CONTRIB_DIR}"], [
493   AS_IF([test -d "${CONTRIB_DIR}/lib"],[
494     CONTRIB_DIR=`cd "${CONTRIB_DIR}" && pwd`
495   ], [
496     echo "${CONTRIB_DIR}/lib not found" >&AS_MESSAGE_LOG_FD
497     CONTRIB_DIR=""
498     AC_MSG_RESULT([not usable])
499   ])
502 AS_IF([test -n "${CONTRIB_DIR}"], [
503   AC_MSG_RESULT([${CONTRIB_DIR}])
504   CPPFLAGS="${CPPFLAGS} -I${CONTRIB_DIR}/include"
505   CFLAGS="${CFLAGS} -I${CONTRIB_DIR}/include"
506   CXXFLAGS="${CXXFLAGS} -I${CONTRIB_DIR}/include"
507   OBJCFLAGS="${OBJCFLAGS} -I${CONTRIB_DIR}/include -F${CONTRIB_DIR} -F${CONTRIB_DIR}/Frameworks"
508   PKG_CONFIG_PATH="${CONTRIB_DIR}/lib/pkgconfig:${CONTRIB_DIR}/share/pkgconfig:${PKG_CONFIG_PATH}"
509   case "${build_os}" in
510       mingw32)
511           export PKG_CONFIG_PATH=`cygpath -mp ${PKG_CONFIG_PATH}`
512       ;;
513       *)
514           export PKG_CONFIG_PATH="${PKG_CONFIG_PATH}"
515       ;;
516   esac
517   LDFLAGS="${LDFLAGS} -L${CONTRIB_DIR}/lib"
519   AS_IF([test -z "$LUAC"], [
520     dnl Old contribs mixed cross-tools and cross-compiled executables
521     AS_IF([test -x "${CONTRIB_DIR}/bin/luac${BUILDEXEEXT}"], [
522       LUAC="${CONTRIB_DIR}/bin/luac${BUILDEXEEXT}"
523     ])
525     dnl Newer contribs follow usual name space rules
526     AS_IF([test -x "${CONTRIB_DIR}/../bin/${host_alias}-luac${BUILDEXEEXT}"], [
527       LUAC="${CONTRIB_DIR}/../bin/${host_alias}-luac${BUILDEXEEXT}"
528     ])
529   ])
531   AS_IF([test "${SYS}" = "darwin"], [
532     export LD_LIBRARY_PATH="${CONTRIB_DIR}/lib:$LD_LIBRARY_PATH"
533     export DYLD_LIBRARY_PATH="${CONTRIB_DIR}/lib:$DYLD_LIBRARY_PATH"
534   ])
535 ], [
536   AS_IF([test -n "${with_contrib}" && test "${with_contrib}" != "no"], [
537     AC_MSG_ERROR([Third party libraries not found!])
538   ])
540 AC_SUBST([CONTRIB_DIR])
542 dnl Add extras/tools to the PATH
543 TOOLS_DIR="${srcdir}/extras/tools/build/bin"
544 AS_IF([test -d "${TOOLS_DIR}"], [
545     TOOLS_DIR=`cd "${TOOLS_DIR}" && pwd`
546     export PATH="${TOOLS_DIR}":$PATH
550 dnl  Libtool
551 dnl  It's very bad, but our former custom system was worst
552 dnl  -- Courmisch
555 dnl override platform specific check for dependent libraries
556 dnl otherwise libtool linking of shared libraries will
557 dnl fail on anything other than pass_all.
558 AC_CACHE_VAL(lt_cv_deplibs_check_method,
559     [lt_cv_deplibs_check_method=pass_all])
561 LT_INIT([dlopen win32-dll shared disable-static])
562 LT_LANG([C++])
563 LT_LANG([Windows Resource])
565 DOLT
567 lt_cv_deplibs_check_method=pass_all
569 AS_IF([test "${enable_shared}" = "no" -a "${enable_vlc}" != "no"], [
570   AC_MSG_ERROR([VLC is based on plugins. Shared libraries cannot be disabled.])
574 dnl Gettext stuff
576 AM_GNU_GETTEXT_VERSION([0.19.8])
577 AM_GNU_GETTEXT([external], [need-formatstring-macros])
580 dnl Iconv stuff
582 AM_ICONV
585 dnl checks for mingw
586 AS_IF([test "${SYS}" = "mingw32"], [
588 AC_PREPROC_IFELSE([AC_LANG_SOURCE([
589 #if !defined(__MINGW32__)
590 # error Not compiling with mingw
591 #endif
592     ])], [
594 dnl Check for broken versions of mingw-runtime compatability library
595     AC_MSG_CHECKING(for broken mingw-runtime)
596     AC_PREPROC_IFELSE([AC_LANG_SOURCE([
597 #include <_mingw.h>
598 #if defined(__MINGW64_VERSION_MAJOR)
599 # if __MINGW64_VERSION_MAJOR < 5
600 #  error Update your mingw-w64! This one is too old.
601 # endif
602 #else
603 # error You cannot compile with Mingw. Use Mingw-w64!
604 #endif
605     ])], [
606         AC_MSG_RESULT([ok])
607     ], [
608         AC_MSG_RESULT([present])
609         AC_MSG_ERROR([LibVLC requires Mingw-w64 version 5.0 or higher!])
610     ])
612     dnl force use of mingw provided c99 *printf over msvcrt
613     CPPFLAGS="${CPPFLAGS} -D__USE_MINGW_ANSI_STDIO=1"
615     dnl Check for the need to include the mingwex lib for mingw32
616     VLC_SAVE_FLAGS
617     AC_CHECK_LIB([mingwex], [opendir],
618         AC_CHECK_LIB([mingw32], [opendir],,
619             [VLC_ADD_LIBS([libvlccore],[-lmingwex])])
620     )
621     VLC_RESTORE_FLAGS
622     ], [
623         AC_MSG_RESULT([Not compiling with mingw])
624     ])
626     dnl Check for fnative-struct or mms-bitfields support for mingw32
627     AX_CHECK_COMPILE_FLAG([-mms-bitfields], [
628         AX_APPEND_FLAG([-mms-bitfields], [CFLAGS])
629         AX_APPEND_FLAG([-mms-bitfields], [CXXFLAGS])
630         # Check for the warning flag without "-Wno-", GCC accepts
631         # -Wno-<anything> for unsupported warnings, which can trigger
632         # other warnings instead.
633         AX_CHECK_COMPILE_FLAG([-Wincompatible-ms-struct], [
634             AX_APPEND_FLAG([-Wno-incompatible-ms-struct], [CFLAGS])
635             AX_APPEND_FLAG([-Wno-incompatible-ms-struct], [CXXFLAGS])
636         ])
637     ], [
638         AX_CHECK_COMPILE_FLAG([-fnative-struct], [
639             AX_APPEND_FLAG([-fnative-struct], [CFLAGS])
640             AX_APPEND_FLAG([-fnative-struct], [CXXFLAGS])
641         ])
642     ])
647 dnl Buggy glibc prevention. Purposedly not cached.
648 dnl See sourceware.org bugs 5058 and 5443.
649 dnl Ubuntu alone has 20 bug numbers for this...
651 AC_MSG_CHECKING(for buggy GNU/libc versions)
652 AC_PREPROC_IFELSE([AC_LANG_SOURCE([
653 #include <limits.h>
654 #if defined (__GLIBC__) && (__GLIBC__ == 2) \
655   && (__GLIBC_MINOR__ >= 5) && (__GLIBC_MINOR__ <= 7)
656 # error GNU/libc with dcgettext killer bug!
657 #endif
658 ])], [
659   AC_MSG_RESULT([not present])
660 ], [
661   AC_MSG_RESULT([found])
662   AS_IF([test "x${enable_nls}" != "xno"], [
663     AC_MSG_ERROR([Buggy GNU/libc (version 2.5 - 2.7) present. VLC would crash; there is no viable
664 work-around for this. Check with your distribution vendor on how to update the
665 glibc run-time. Alternatively, build with --disable-nls.])
666   ])
669 dnl Plugin compilation stuff
671 VLC_LIBRARY_SUFFIX
673 dnl Check for system libs needed
674 need_libc=false
676 dnl Check for usual libc functions
677 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])
678 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])
679 AC_REPLACE_FUNCS([gettimeofday])
680 AC_CHECK_FUNC(fdatasync,,
681   [AC_DEFINE(fdatasync, fsync, [Alias fdatasync() to fsync() if missing.])
684 VLC_REPLACE_DECL([realpath], [#include <stdlib.h>])
686 dnl mingw64 implements those as static inline, not functions with C linkage
687 VLC_REPLACE_DECL([asprintf], [#include <stdio.h>])
688 VLC_REPLACE_DECL([vasprintf], [#include <stdio.h>])
689 VLC_REPLACE_DECL([gmtime_r], [#include <time.h>])
690 VLC_REPLACE_DECL([localtime_r], [#include <time.h>])
692 dnl C11 static_assert()
693 AC_MSG_CHECKING([for static_assert in assert.h])
694 AC_LINK_IFELSE([AC_LANG_PROGRAM([#include <assert.h>], [
695 static_assert(1, "The impossible happened.");
696 ])], [
697   AC_MSG_RESULT([yes])
698   AC_DEFINE([HAVE_STATIC_ASSERT], [1], [Define to 1 if <assert.h> defines static_assert.])
699 ], [
700   AC_MSG_RESULT([no])
703 # Windows CE does not have strcoll()
704 AC_FUNC_STRCOLL
706 dnl Check for non-standard system calls
707 case "$SYS" in
708   "linux")
709     AC_CHECK_FUNCS([eventfd vmsplice sched_getaffinity recvmmsg memfd_create])
710     ;;
711   "mingw32")
712     AC_CHECK_FUNCS([_lock_file])
713     ;;
714 esac
716 AH_BOTTOM([#include <vlc_fixups.h>])
718 dnl Check for struct pollfd
719 AC_CHECK_TYPES([struct pollfd],,,
720 [#include <sys/types.h>
721 #if HAVE_POLL
722 # include <poll.h>
723 #elif defined (_WIN32)
724 # include <winsock2.h>
725 #endif
728 dnl Check for struct timespec
729 AC_CHECK_TYPES([struct timespec],,,
730 [#include <time.h>])
732 dnl Check for max_align_t
733 AC_CHECK_TYPES([max_align_t],,,
734 [#include <stddef.h>])
736 dnl Checks for socket stuff
737 VLC_SAVE_FLAGS
738 SOCKET_LIBS=""
739 AC_SEARCH_LIBS(connect, [socket], [
740   AS_IF([test "$ac_cv_search_connect" != "none required"], [
741     SOCKET_LIBS="$ac_cv_search_connect"
742   ])
743 ], [
744   AS_IF([test "${SYS}" = "mingw32"], [
745     SOCKET_LIBS="-lws2_32 -liphlpapi"
746   ])
749 AC_SEARCH_LIBS([inet_pton], [nsl], [
750  AS_IF([test "$ac_cv_search_inet_pton" != "none required"], [
751     SOCKET_LIBS="$ac_cv_search_inet_pton $SOCKET_LIBS"
752   ])
753 ],, [${SOCKET_LIBS}])
755 LIBS="${LIBS} ${SOCKET_LIBS}"
756 AC_LINK_IFELSE([
757     AC_LANG_PROGRAM([#ifdef _WIN32
758         #include <ws2tcpip.h>
759         #include <windows.h>
760         # if _WIN32_WINNT < 0x600
761         #  error Needs vista+
762         # endif
763         #else
764         #include <sys/socket.h>
765         #include <arpa/inet.h>
766         #endif], [
767         char dst[[sizeof(struct in_addr)]];
768         inet_pton(AF_INET, "127.0.0.1", dst);
769     ])],[AC_DEFINE([HAVE_INET_PTON],[1],[Define to 1 if you have inet_pton function])],[AC_LIBOBJ([inet_pton])])
770 AC_CHECK_TYPES([struct if_nameindex],,,[#include <net/if.h>])
771 AC_CHECK_FUNCS([if_nameindex])
772 VLC_RESTORE_FLAGS
773 AC_SUBST([SOCKET_LIBS])
775 dnl Check for socklen_t
776 AH_TEMPLATE(socklen_t, [Define to `int' if <sys/socket.h> does not define.])
777 AC_CACHE_CHECK([for socklen_t in sys/socket.h], dnl ` (fix VIM syntax highlight
778 ac_cv_type_socklen_t,
779 [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([
780 [#include <sys/types.h>
781 #ifdef _WIN32
782 # include <winsock2.h>
783 # include <ws2tcpip.h>
784 #else
785 # include <sys/socket.h>
786 #endif]], [[socklen_t len; len = 0;]])],
787 ac_cv_type_socklen_t=yes,
788 ac_cv_type_socklen_t=no)])
789 AS_IF([test "$ac_cv_type_socklen_t" = no], [
790   AC_COMPILE_IFELSE([
791     AC_LANG_PROGRAM([[
792 #include <sys/types.h>
793 #ifdef _WIN32
794 # include <winsock2.h>
795 # include <ws2tcpip.h>
796 #else
797 # include <sys/socket.h>
798 #endif
799     ]], [[
800 _Generic(getpeername, int (*)(int, struct sockaddr *, int *): 0);
801     ]])
802   ], AC_DEFINE(socklen_t, int), AC_DEFINE(socklen_t, unsigned int))
805 dnl Check for struct sockaddr_storage
806 AH_TEMPLATE(sockaddr_storage, [Define to `sockaddr' if <sys/socket.h> does not define.]) dnl ` (fix VIM syntax highlight
807 AH_TEMPLATE(ss_family, [Define to `sa_family' if <sys/socket.h> does not define.]) dnl ` (fix VIM syntax highlight
808 AC_CACHE_CHECK([for struct sockaddr_storage], ac_cv_struct_sockaddr_storage,
809   [AC_TRY_COMPILE(
810     [#include <sys/types.h>
811      #if defined( _WIN32 )
812      # include <winsock2.h>
813      #else
814      # include <sys/socket.h>
815      #endif], [struct sockaddr_storage addr;],
816      ac_cv_struct_sockaddr_storage=yes,
817      ac_cv_struct_sockaddr_storage=no)])
818 AS_IF([test "${ac_cv_struct_sockaddr_storage}" = no], [
819   AC_DEFINE(sockaddr_storage, sockaddr)
820   AC_DEFINE(ss_family, sa_family)
823 dnl FreeBSD has a gnugetopt library for this:
824 GNUGETOPT_LIBS=""
825 AC_CHECK_FUNC(getopt_long,, [
826   AC_CHECK_LIB([gnugetopt],[getopt_long], [
827     GNUGETOPT_LIBS="-lgnugetopt"
828   ])
830 AC_SUBST([GNUGETOPT_LIBS])
832 AC_CHECK_LIB([m], [cos], [
833   LIBM="-lm"
834 ], [
835   LIBM=""
837 AC_SUBST([LIBM])
839 AC_CHECK_LIB([m], [lrintf], [
840   AC_DEFINE(HAVE_LRINTF, 1, [Define to 1 if you have the lrintf function])
841   VLC_ADD_LIBS([skins2],[-lm])
843 AC_CHECK_LIB([m], [nanf],
844   AC_DEFINE(HAVE_NANF, 1, [Define to 1 if you have the NANF function])
846 AC_CHECK_LIB([m], [sincos], [
847   AC_DEFINE(HAVE_SINCOS, 1, [Define to 1 if you have the sincos function.])
848 ], [
849   AC_LIBOBJ([sincos])
852 AC_MSG_CHECKING([broken qsort_r prototype])
853 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([#include <stdlib.h>
855 _Static_assert(_Generic((qsort_r),
856     void (*)(void *, size_t, size_t, void *,
857              int (*)(void *, const void *, const void *)) : 1, default: 0),
858     "Bad prototype not matched");
859 ])], [
860   AC_MSG_RESULT([broken])
861   AC_DEFINE([HAVE_BROKEN_QSORT_R], 1, [Defined to 1 if the qsort_r() prototype contradicts the upcoming POSIX standard.])
862 ], [
863   AC_MSG_RESULT([no])
866 AC_MSG_CHECKING([_Thread_local support])
867 AC_COMPILE_IFELSE([AC_LANG_SOURCE([_Thread_local int foo = 0;
868                    int main() {}])], [
869     AC_MSG_RESULT([ok])
870     AC_DEFINE(HAVE_THREAD_LOCAL, 1, [Defined to 1 if C11 _Thread_local storage qualifier is supported])
871 ],[ AC_MSG_RESULT([no])])
873 dnl __STDC_NO_THREADS__ can't be trusted on some platforms.
874 dnl check for its availability explicitely
875 AC_CHECK_HEADERS([threads.h])
877 AC_CHECK_LIB([anl],[getaddrinfo_a],[
878   AC_DEFINE(HAVE_LIBANL, 1, [Define to 1 if you have the anl library])
881 dnl Check for dynamic plugins
882 LIBDL=""
883 have_dynamic_objects="no"
884 VLC_SAVE_FLAGS
885 AC_SEARCH_LIBS(dlsym, [dl svld], [
886   AS_IF([test "$ac_cv_search_dlsym" != "none required"], [
887     LIBDL="$ac_cv_search_dlsym"
888   ])
889   have_dynamic_objects="yes"
891 VLC_RESTORE_FLAGS
893 # Windows
894 AS_IF([test "${SYS}" = "mingw32"], [
895   LIBDL=""
896   have_dynamic_objects="yes" #assume we can use shared objects
899 AC_ARG_WITH([libfuzzer],
900     AS_HELP_STRING([--with-libfuzzer=DIR],
901         [use libFuzzer library from DIR and triggers sanitize coverage (default disabled)]),
902      [],
903      [with_libfuzzer=no])
904 AS_VAR_IF(with_libfuzzer, no, [], [
905     enable_shared=no
906     enable_static=yes
907     enable_vlc=no
909 AM_CONDITIONAL([HAVE_LIBFUZZER], [test "${with_libfuzzer}" != "no"])
911 AS_IF([test "${enable_shared}" = "no"], [
912   have_dynamic_objects=no
914 AM_CONDITIONAL([HAVE_DYNAMIC_PLUGINS], [test "${have_dynamic_objects}" != "no"])
916 AC_SUBST([LIBDL])
918 AS_IF([test "${SYS}" != "mingw32"], [
919   AC_SEARCH_LIBS([clock_nanosleep], [rt pthread], [
920     AS_IF([test "$ac_cv_search_clock_nanosleep" != "none required"], [
921       LIBRT="$ac_cv_search_clock_nanosleep"
922     ])
923   ], [
924     AC_SEARCH_LIBS([nanosleep], [rt pthread posix4], [
925       AS_IF([test "$ac_cv_search_nanosleep" != "none required"], [
926         LIBRT="$ac_cv_search_nanosleep"
927       ])
928     ])
929   ])
931 AC_SUBST([LIBRT])
933 dnl  Check for clock_* functions, needs to be done here,
934 dnl  after the -lrt check
935 AC_REPLACE_FUNCS([clock_gettime clock_nanosleep clock_getres])
938 dnl Check for headers
941 dnl  POSIX
942 AC_CHECK_HEADERS([arpa/inet.h pthread.h search.h sys/shm.h sys/socket.h sys/uio.h])
943 AC_CHECK_HEADERS([net/if.h], [], [],
945 #include <sys/types.h>
946 #include <sys/socket.h>
948 AC_CHECK_HEADER([syslog.h], [have_syslog="yes"], [have_syslog="no"])
949 AM_CONDITIONAL([HAVE_SYSLOG], [test "$have_syslog" = "yes"])
951 dnl  BSD
952 AC_CHECK_HEADERS([netinet/tcp.h netinet/udplite.h sys/param.h sys/mount.h])
954 dnl  GNU/Linux
955 AC_CHECK_HEADERS([features.h getopt.h linux/dccp.h linux/magic.h sys/eventfd.h])
957 dnl  MacOS
958 AC_CHECK_HEADERS([xlocale.h])
960 dnl Check if C++ headers define locale_t
961 AC_LANG_PUSH(C++)
962 AC_CACHE_CHECK([if C++ headers define locale_t],
963   [ac_cv_cxx_locale_t],
964   [ac_cv_cxx_locale_t=no
965    AC_TRY_COMPILE([#include <locale>], [locale_t loc;],
966                     [ac_cv_cxx_locale_t=yes])])
967 if test "${ac_cv_cxx_locale_t}" != "no"; then
968   AC_DEFINE(HAVE_CXX_LOCALE_T, 1, Define to 1 if C++ headers define locale_t)
970 AC_LANG_POP(C++)
972 dnl LP64 and LLP64 architectures had better define ssize_t by themselves...
973 AH_TEMPLATE(ssize_t, [Define to `int' if <stddef.h> does not define.]) dnl ` (fix VIM syntax highlight
974 AC_CHECK_TYPE(ssize_t,, [
975   AC_DEFINE(ssize_t, int)
978 dnl It seems that autoconf detects pkg-config only during the first
979 dnl PKG_CHECK_MODULES from configure.ac - which makes sense. But in our case,
980 dnl it is nested within a conditional block, so it was not working right.
981 PKG_PROG_PKG_CONFIG()
983 dnl On some OS we need static linking
984 AS_IF([test -n "${PKG_CONFIG}" ],[
985     AS_IF([test "${SYS}" = "mingw32" -o "${SYS}" = "darwin" -o "${SYS}" = "os2" ],[
986         PKG_CONFIG="${PKG_CONFIG} --static"
987     ])
992 dnl Check for zlib.h and -lz if available
994 AC_CHECK_HEADERS([zlib.h], [ have_zlib=yes ], [ have_zlib=no ])
995 AM_CONDITIONAL([HAVE_ZLIB], [ test "${have_zlib}" = "yes" ])
996 if test "${have_zlib}" = "yes"
997 then
998   VLC_ADD_LIBS([sap],[-lz])
1003 dnl Domain name i18n support via GNU libidn
1005 PKG_CHECK_MODULES([IDN], [libidn], [
1006   have_libidn="yes"
1007   AC_DEFINE([HAVE_IDN], 1, [Define to 1 if you have GNU libidn.])
1008 ], [
1009   have_libidn="no"
1013 dnl Check for dbus
1014 AC_ARG_ENABLE([dbus],
1015   AS_HELP_STRING([--enable-dbus],
1016     [compile D-Bus message bus support (default enabled)]))
1017 have_dbus="no"
1018 AS_IF([test "${enable_dbus}" != "no"], [
1019   PKG_CHECK_MODULES(DBUS, [dbus-1 >= 1.6.0], [
1020     have_dbus="yes"
1021   ], [
1022     AS_IF([test -n "${enable_dbus}"], [
1023       AC_MSG_ERROR([${DBUS_PKG_ERRORS}.])
1024     ], [
1025       AC_MSG_WARN([${DBUS_PKG_ERRORS}.])
1026     ])
1027   ])
1029 AM_CONDITIONAL([HAVE_DBUS], [test "${have_dbus}" = "yes"])
1032 dnl Check for systemd
1033 PKG_CHECK_MODULES([SYSTEMD], [libsystemd], [
1034   have_systemd="yes"
1035 ], [
1036   AC_MSG_WARN([${SYSTEMD_PKG_ERRORS}.])
1038 AM_CONDITIONAL([HAVE_SYSTEMD], [test "${have_systemd}" = "yes"])
1041 EXTEND_HELP_STRING([Optimization options:])
1043 dnl  Compiler warnings
1046 AX_APPEND_COMPILE_FLAGS([-Wall -Wextra -Wsign-compare -Wundef -Wpointer-arith -Wvolatile-register-var -Wformat -Wformat-security -Wduplicated-branches -Wduplicated-cond], [CFLAGS])
1047 AX_APPEND_COMPILE_FLAGS([-Wall -Wextra -Wsign-compare -Wundef -Wpointer-arith -Wvolatile-register-var -Wformat -Wformat-security -Wduplicated-branches -Wduplicated-cond], [CXXFLAGS])
1049 AX_APPEND_COMPILE_FLAGS([-Wbad-function-cast -Wwrite-strings -Wmissing-prototypes -Werror-implicit-function-declaration -Winit-self -Wlogical-op -Wshadow=local -Wmultistatement-macros], [CFLAGS])
1050 AX_APPEND_COMPILE_FLAGS([-pipe], [CFLAGS])
1053 dnl  Debugging mode
1055 AC_ARG_ENABLE([debug],
1056   AS_HELP_STRING([--disable-debug],
1057     [disable run-time assertions (default enabled)]),,
1058   [enable_debug="yes"])
1059 AH_TEMPLATE(NDEBUG,
1060             [Define to 1 if debug code should NOT be compiled])
1061 AS_IF([test "${enable_debug}" != "no"], [
1062   AC_CHECK_HEADERS([valgrind/valgrind.h])
1063 ], [
1064   AC_DEFINE(NDEBUG)
1068 dnl  Profiling
1070 AC_ARG_ENABLE([gprof],
1071   AS_HELP_STRING([--enable-gprof],[profile with gprof (default disabled)]),,
1072   [enable_gprof="no"])
1073 AS_IF([test "${enable_gprof}" != "no"], [
1074   CFLAGS="${CFLAGS} -pg"
1075   CXXFLAGS="${CXXFLAGS} -pg"
1076   OBJCFLAGS="${OBJCFLAGS} -pg"
1077   LDFLAGS="${LDFLAGS} -pg"
1080 AC_ARG_ENABLE([cprof],
1081   AS_HELP_STRING([--enable-cprof],[profile with cprof (default disabled)]),,
1082   [enable_cprof="no"])
1083 AS_IF([test "${enable_gprof}" != "no"], [
1084   CFLAGS="${CFLAGS} -finstrument-functions"
1085   CXXFLAGS="${CXXFLAGS} -finstrument-functions"
1086   OBJCFLAGS="${OBJCFLAGS} -finstrument-functions"
1087   LDFLAGS="${LDFLAGS} -finstrument-functions"
1091 dnl  Test coverage
1093 AC_ARG_ENABLE([coverage],
1094   AS_HELP_STRING([--enable-coverage],
1095     [build for test coverage (default disabled)]),,
1096   [enable_coverage="no"])
1097 AS_IF([test "${enable_coverage}" != "no"], [
1098   CFLAGS="-fprofile-arcs -ftest-coverage ${CFLAGS}"
1099   CXXFLAGS="-fprofile-arcs -ftest-coverage ${CXXFLAGS}"
1100   LDFLAGS="-lgcov ${LDFLAGS}"
1103 AS_IF([test "${SYS}" != "mingw32" -a "${SYS}" != "os2"], [
1104   VLC_SAVE_FLAGS
1105   CFLAGS="${CFLAGS} -fvisibility=hidden"
1106   CXXFLAGS="${CXXFLAGS} -fvisibility=hidden"
1107   OBJCFLAGS="${OBJCFLAGS} -fvisibility=hidden"
1108   AC_CACHE_CHECK([if $CC accepts -fvisibility=hidden],
1109                  [ac_cv_c_visibility_hidden], [
1110     AC_COMPILE_IFELSE([AC_LANG_PROGRAM()], [
1111       ac_cv_c_visibility_hidden=yes
1112     ], [
1113       ac_cv_c_visibility_hidden=no
1114     ])
1115   ])
1116   AS_IF([test "${ac_cv_c_visibility_hidden}" = "no"], [VLC_RESTORE_FLAGS])
1120 dnl Sanitizer flags
1122 AC_ARG_WITH([sanitizer],
1123     AS_HELP_STRING([--with-sanitizer=(address/memory/undefined/thread)],
1124         [build with sanitizer flags (default disabled)]),
1125      [],
1126      [with_sanitizer=no])
1128 AS_VAR_IF(with_sanitizer, no, [], [
1129     AX_CHECK_COMPILE_FLAG([-fsanitize=${with_sanitizer}], [
1130         AX_APPEND_FLAG([-fsanitize=${with_sanitizer}])
1131         AX_APPEND_FLAG([-fsanitize=${with_sanitizer}], [CXXFLAGS])
1132         AX_APPEND_FLAG([-fsanitize=${with_sanitizer}], [LDFLAGS])
1133     ], [
1134         AC_MSG_ERROR(["-fsanitize=${with_sanitizer} not supported!"])
1135     ])
1136     AX_APPEND_FLAG([-g])
1137     AX_APPEND_FLAG([-g], [CXXFLAGS])
1139     AS_IF([test -z "${with_sanitizer##*address*}" ], [
1140        AX_APPEND_COMPILE_FLAGS([-fsanitize-address-use-after-scope -fno-omit-frame-pointer -fsanitize=pointer-compare -fsanitize=pointer-subtract])
1141        AX_APPEND_COMPILE_FLAGS([-fsanitize-address-use-after-scope -fno-omit-frame-pointer -fsanitize=pointer-compare -fsanitize=pointer-subtract], [CXXFLAGS])
1142     ])
1143     AS_IF([test -z "${with_sanitizer##*memory*}" ], [
1144         AX_APPEND_COMPILE_FLAGS([-fPIE -pie])
1145         AX_APPEND_COMPILE_FLAGS([-fPIE -pie], [CXXFLAGS])
1146     ])
1147     AS_IF([test -z "${with_sanitizer##*thread*}" ], [
1148         AX_APPEND_COMPILE_FLAGS([-fPIE -pie])
1149         AX_APPEND_COMPILE_FLAGS([-fPIE -pie], [CXXFLAGS])
1150     ])
1154 dnl  Enable/disable optimizations
1156 AC_ARG_ENABLE([optimizations],
1157   AS_HELP_STRING([--disable-optimizations],
1158     [disable compiler optimizations (default enabled)]),,
1159   [enable_optimizations="yes"])
1161 dnl Check for various optimization flags
1162 AS_IF([test "${enable_optimizations}" != "no"], [
1164   dnl -O3 only in production builds
1165   AS_IF([test "${enable_debug}" = "no"], [
1166     VLC_SAVE_FLAGS
1167     CFLAGS="${CFLAGS} -O3"
1168     CXXFLAGS="${CXXFLAGS} -O3"
1169     OBJCFLAGS="${OBJCFLAGS} -O3"
1170     AC_CACHE_CHECK([if $CC accepts -O3],  [ac_cv_c_o3], [
1171       AC_COMPILE_IFELSE([AC_LANG_PROGRAM()], [
1172         ac_cv_c_o3=yes
1173       ], [
1174         ac_cv_c_o3=no
1175       ])
1176     ])
1177     AS_IF([test "${ac_cv_c_o3}" = "no"], [VLC_RESTORE_FLAGS])
1178   ])
1180   dnl Check for fast maths
1181   AX_APPEND_COMPILE_FLAGS([-fno-math-errno -funsafe-math-optimizations -fno-rounding-math -fno-signaling-nans -fcx-limited-range], [CFLAGS])
1182   AX_APPEND_COMPILE_FLAGS([-fno-math-errno -funsafe-math-optimizations -fno-rounding-math -fno-signaling-nans -fcx-limited-range], [CXXFLAGS])
1184 AH_BOTTOM([
1185 #if defined(_MSC_VER) && !defined(__clang__)
1186 # pragma fenv_access(off)
1187 # pragma fp_contract(on)
1188 #elif defined(__GNUC__)
1189 /* Not supported so far */
1190 #else
1191 # pragma STDC FENV_ACCESS OFF
1192 # pragma STDC FP_CONTRACT ON
1193 #endif
1196   dnl Check for -funroll-loops
1197   VLC_SAVE_FLAGS
1198   CFLAGS="${CFLAGS} -funroll-loops"
1199   CXXFLAGS="${CXXFLAGS} -funroll-loops"
1200   OBJCFLAGS="${OBJCFLAGS} -funroll-loops"
1201   AC_CACHE_CHECK([if $CC accepts -funroll-loops], [ac_cv_c_unroll_loops], [
1202     AC_COMPILE_IFELSE([AC_LANG_PROGRAM()], [
1203       ac_cv_c_unroll_loops=yes
1204     ], [
1205       ac_cv_c_unroll_loops=no
1206     ])
1207   ])
1208   AS_IF([test "${ac_cv_c_unroll_loops}" = "no"], [VLC_RESTORE_FLAGS])
1210   AS_IF([test "$enable_debug" = "no"], [
1211     dnl Check for -fomit-frame-pointer
1212     VLC_SAVE_FLAGS
1213     CFLAGS="${CFLAGS} -fomit-frame-pointer"
1214     CXXFLAGS="${CXXFLAGS} -fomit-frame-pointer"
1215     OBJCFLAGS="${OBJCFLAGS} -fomit-frame-pointer"
1216     AC_CACHE_CHECK([if $CC accepts -fomit-frame-pointer],
1217       [ac_cv_c_omit_frame_pointer], [
1218       AC_COMPILE_IFELSE([AC_LANG_PROGRAM()], [
1219         ac_cv_c_omit_frame_pointer=yes
1220       ], [
1221         ac_cv_c_omit_frame_pointer=no
1222       ])
1223     ])
1224     AS_IF([test "${ac_cv_c_omit_frame_pointer}" = "no"], [VLC_RESTORE_FLAGS])
1225   ])
1229 AC_ARG_ENABLE([ssp],
1230   AS_HELP_STRING([--disable-ssp],
1231   [disable stack smashing protection (default enabled for optimized builds)]), [],
1232   [enable_ssp="yes"])
1234 AS_IF([test "${enable_ssp}" != "no" -a "${enable_optimizations}" != "no"], [
1235   VLC_SAVE_FLAGS
1236   AX_APPEND_COMPILE_FLAGS([-fstack-protector-strong])
1237   AX_APPEND_COMPILE_FLAGS([-fstack-protector-strong], [CXXFLAGS])
1238   dnl Win32 requires linking to ssp for stack-protection
1239   AS_IF([test "${SYS}" = "mingw32"], [
1240       LDFLAGS="${LDFLAGS} -lssp"
1241       AC_CACHE_CHECK([if linker supports stack protectors], [ac_cv_ld_ssp], [
1242         AC_TRY_LINK([#include <stdio.h>],[char buf[100]; fgets(buf, sizeof(buf), stdin);], [
1243           ac_cv_ld_ssp="yes"
1244         ], [
1245           ac_cv_ld_ssp="no"
1246         ])
1247       ])
1248       AS_IF([test "${ac_cv_ld_ssp}" = "no"], [VLC_RESTORE_FLAGS])
1249   ])
1252 AS_IF([test "${SYS}" = "mingw32"], [
1253     dnl library for BCrypt APIs
1254     AS_IF([test "${vlc_winstore_app}" = 1],
1255           VLC_ADD_LIBS([libvlccore], [-lbcrypt]))
1258 VLC_SAVE_FLAGS
1259 LDFLAGS="${LDFLAGS} -Wl,-Bsymbolic"
1260 AC_CACHE_CHECK([if linker supports -Bsymbolic], [ac_cv_ld_bsymbolic], [
1261   AC_TRY_LINK([],, [
1262     ac_cv_ld_bsymbolic="-Wl,-Bsymbolic"
1263   ], [
1264     ac_cv_ld_bsymbolic=""
1265   ])
1267 VLC_RESTORE_FLAGS
1268 SYMBOLIC_LDFLAGS="${ac_cv_ld_bsymbolic}"
1269 AC_SUBST([SYMBOLIC_LDFLAGS])
1271 VLC_SAVE_FLAGS
1272 LDFLAGS="${LDFLAGS} -Wl,-z,defs"
1273 AC_CACHE_CHECK([if linker supports -z,defs], [ac_cv_ld_z_defs], [
1274   AC_TRY_LINK([],, [
1275     ac_cv_ld_z_defs="yes"
1276   ], [
1277     ac_cv_ld_z_defs="no"
1278   ])
1280 AS_IF([test "${ac_cv_ld_z_defs}" = "no"], [VLC_RESTORE_FLAGS])
1282 dnl Check for __attribute__((packed))
1283 AC_CACHE_CHECK([for __attribute__((packed))],
1284   [ac_cv_c_attribute_packed],
1285   [ac_cv_c_attribute_packed=no
1286    AC_TRY_COMPILE(, [struct __attribute__((__packed__)) foo { int a; } b; (void)b;],
1287                     [ac_cv_c_attribute_packed=yes])])
1288 if test "${ac_cv_c_attribute_packed}" != "no"; then
1289   AC_DEFINE(HAVE_ATTRIBUTE_PACKED, 1, Support for __attribute__((packed)) for structs)
1293 dnl  Check the CPU
1295 case "${host_cpu}" in
1296   "")
1297     ARCH=unknown
1298     ;;
1299   armv*)
1300     ARCH="arm"
1301     host_cpu="arm"
1302     ;;
1303   *)
1304     ARCH="${host_cpu}"
1305     ;;
1306 esac
1308 dnl Check for backtrace() support
1309 AC_CHECK_HEADERS([execinfo.h])
1310 AC_CHECK_FUNCS([backtrace])
1313 dnl  default modules
1315 ALIASES="${ALIASES} cvlc rvlc"
1318 dnl  Accelerated modules
1321 dnl  Check for fully working MMX intrinsics
1322 dnl  We need support for -mmmx, we need <mmintrin.h>, and we also need a
1323 dnl  working compiler (http://gcc.gnu.org/bugzilla/show_bug.cgi?id=23963)
1324 AC_ARG_ENABLE([mmx],
1325   AS_HELP_STRING([--disable-mmx],
1326     [disable MMX optimizations (default auto)]),,[
1327   case "${host_cpu}" in
1328     i?86|x86_64)
1329       enable_mmx="yes"
1330       ;;
1331     *)
1332       enable_mmx="no"
1333       ;;
1334   esac
1336 have_mmx="no"
1337 have_mmxext="no"
1338 AS_IF([test "${enable_mmx}" != "no"], [
1339   ARCH="${ARCH} mmx"
1340   VLC_SAVE_FLAGS
1341   CFLAGS="${CFLAGS} -mmmx"
1342   AC_CACHE_CHECK([if $CC groks MMX intrinsics], [ac_cv_c_mmx_intrinsics], [
1343     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([
1344 [#include <mmintrin.h>
1345 #include <stdint.h>
1346 uint64_t frobzor;]], [
1347 [__m64 a, b, c;
1348 a = b = c = (__m64)frobzor;
1349 a = _mm_slli_pi16(a, 3);
1350 a = _mm_adds_pi16(a, b);
1351 c = _mm_srli_pi16(c, 8);
1352 c = _mm_slli_pi16(c, 3);
1353 b = _mm_adds_pi16(b, c);
1354 a = _mm_unpacklo_pi8(a, b);
1355 frobzor = (uint64_t)a;]])], [
1356       ac_cv_c_mmx_intrinsics=yes
1357     ], [
1358       ac_cv_c_mmx_intrinsics=no
1359     ])
1360   ])
1361   VLC_RESTORE_FLAGS
1362   AS_IF([test "${ac_cv_c_mmx_intrinsics}" != "no"], [
1363     AC_DEFINE(HAVE_MMX_INTRINSICS, 1, [Define to 1 if MMX intrinsics are available.])
1364   ])
1366   VLC_SAVE_FLAGS
1367   CFLAGS="${CFLAGS} -mmmx"
1368   AC_CACHE_CHECK([if $CC groks MMX inline assembly], [ac_cv_mmx_inline], [
1369     AC_COMPILE_IFELSE([AC_LANG_PROGRAM(,[[
1370 void *p;
1371 asm volatile("packuswb %%mm1,%%mm2"::"r"(p):"mm1", "mm2");
1373     ], [
1374       ac_cv_mmx_inline=yes
1375     ], [
1376       ac_cv_mmx_inline=no
1377     ])
1378   ])
1379   AS_IF([test "${ac_cv_mmx_inline}" != "no"], [
1380     AC_DEFINE(CAN_COMPILE_MMX, 1, [Define to 1 inline MMX assembly is available.])
1381     have_mmx="yes"
1382   ])
1384   AC_CACHE_CHECK([if $CC groks MMX EXT inline assembly],
1385                  [ac_cv_mmxext_inline], [
1386     AC_COMPILE_IFELSE([AC_LANG_PROGRAM(,[[
1387 void *p;
1388 asm volatile("maskmovq %%mm1,%%mm2"::"r"(p):"mm1", "mm2");
1390     ], [
1391       ac_cv_mmxext_inline=yes
1392     ], [
1393       ac_cv_mmxext_inline=no
1394     ])
1395   ])
1396   VLC_RESTORE_FLAGS
1397   AS_IF([test "${ac_cv_mmxext_inline}" != "no"], [
1398     AC_DEFINE(CAN_COMPILE_MMXEXT, 1, [Define to 1 if MMX EXT inline assembly is available.])
1399     have_mmxext="yes"
1400   ])
1402 AM_CONDITIONAL([HAVE_MMX], [test "${have_mmx}" = "yes"])
1403 AM_CONDITIONAL([HAVE_MMXEXT], [test "${have_mmxext}" = "yes"])
1405 dnl  Check for fully workin SSE2 intrinsics
1406 dnl  We need support for -msse[2], we need <emmintrin.h>, and we also need a
1407 dnl  working compiler (http://gcc.gnu.org/bugzilla/show_bug.cgi?id=23963)
1408 AC_ARG_ENABLE([sse],
1409   AS_HELP_STRING([--disable-sse],
1410     [disable SSE (1-4) optimizations (default auto)]),, [
1411   case "${host_cpu}" in
1412     i?86|x86_64)
1413       enable_sse=yes
1414       ;;
1415     *)
1416       enable_sse=no
1417       ;;
1418   esac
1420 have_sse2="no"
1421 AS_IF([test "${enable_sse}" != "no"], [
1422   ARCH="${ARCH} sse sse2"
1424   VLC_SAVE_FLAGS
1425   CFLAGS="${CFLAGS} -msse2"
1426   AC_CACHE_CHECK([if $CC groks SSE2 intrinsics], [ac_cv_c_sse2_intrinsics], [
1427     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([
1428 [#include <emmintrin.h>
1429 #include <stdint.h>
1430 uint64_t frobzor;]], [
1431 [__m128i a, b, c;
1432 a = b = c = _mm_set1_epi64((__m64)frobzor);
1433 a = _mm_slli_epi16(a, 3);
1434 a = _mm_adds_epi16(a, b);
1435 c = _mm_srli_epi16(c, 8);
1436 c = _mm_slli_epi16(c, 3);
1437 b = _mm_adds_epi16(b, c);
1438 a = _mm_unpacklo_epi8(a, b);
1439 frobzor = (uint64_t)_mm_movepi64_pi64(a);]])], [
1440       ac_cv_c_sse2_intrinsics=yes
1441     ], [
1442       ac_cv_c_sse2_intrinsics=no
1443     ])
1444   ])
1445   VLC_RESTORE_FLAGS
1446   AS_IF([test "${ac_cv_c_sse2_intrinsics}" != "no"], [
1447     AC_DEFINE(HAVE_SSE2_INTRINSICS, 1, [Define to 1 if SSE2 intrinsics are available.])
1448   ])
1450   VLC_SAVE_FLAGS
1451   CFLAGS="${CFLAGS} -msse"
1452   AC_CACHE_CHECK([if $CC groks SSE inline assembly], [ac_cv_sse_inline], [
1453     AC_COMPILE_IFELSE([AC_LANG_PROGRAM(,[[
1454 void *p;
1455 asm volatile("xorps %%xmm1,%%xmm2"::"r"(p):"xmm1", "xmm2");
1457     ], [
1458       ac_cv_sse_inline=yes
1459     ], [
1460       ac_cv_sse_inline=no
1461     ])
1462   ])
1464   AS_IF([test "${ac_cv_sse_inline}" != "no" -a "${SYS}" != "solaris"], [
1465     AC_DEFINE(CAN_COMPILE_SSE, 1, [Define to 1 if SSE inline assembly is available.])
1466   ])
1468   AC_CACHE_CHECK([if $CC groks SSE2 inline assembly], [ac_cv_sse2_inline], [
1469     AC_COMPILE_IFELSE([AC_LANG_PROGRAM(,[[
1470 void *p;
1471 asm volatile("punpckhqdq %%xmm1,%%xmm2"::"r"(p):"xmm1", "xmm2");
1473     ], [
1474       ac_cv_sse2_inline=yes
1475     ], [
1476       ac_cv_sse2_inline=no
1477     ])
1478   ])
1479   AS_IF([test "${ac_cv_sse2_inline}" != "no" -a "${SYS}" != "solaris"], [
1480     AC_DEFINE(CAN_COMPILE_SSE2, 1, [Define to 1 if SSE2 inline assembly is available.])
1481     have_sse2="yes"
1482   ])
1484   # SSE3
1485   AC_CACHE_CHECK([if $CC groks SSE3 inline assembly], [ac_cv_sse3_inline], [
1486     AC_COMPILE_IFELSE([AC_LANG_PROGRAM(,[[
1487 void *p;
1488 asm volatile("movsldup %%xmm1,%%xmm0"::"r"(p):"xmm0", "xmm1");
1490     ], [
1491       ac_cv_sse3_inline=yes
1492     ], [
1493       ac_cv_sse3_inline=no
1494     ])
1495   ])
1497   AS_IF([test "${ac_cv_sse3_inline}" != "no"], [
1498     AC_DEFINE(CAN_COMPILE_SSE3, 1, [Define to 1 if SSE3 inline assembly is available.]) ])
1500   # SSSE3
1501   AC_CACHE_CHECK([if $CC groks SSSE3 inline assembly], [ac_cv_ssse3_inline], [
1502     AC_COMPILE_IFELSE([AC_LANG_PROGRAM(,[[
1503 void *p;
1504 asm volatile("pabsw %%xmm0,%%xmm0"::"r"(p):"xmm0");
1506     ], [
1507       ac_cv_ssse3_inline=yes
1508     ], [
1509       ac_cv_ssse3_inline=no
1510     ])
1511   ])
1513   AS_IF([test "${ac_cv_ssse3_inline}" != "no"], [
1514     AC_DEFINE(CAN_COMPILE_SSSE3, 1, [Define to 1 if SSSE3 inline assembly is available.]) ])
1516   # SSE4.1
1517   AC_CACHE_CHECK([if $CC groks SSE4.1 inline assembly],
1518                  [ac_cv_sse4_1_inline], [
1519     AC_COMPILE_IFELSE([AC_LANG_PROGRAM(,[[
1520 void *p;
1521 asm volatile("pmaxsb %%xmm1,%%xmm0"::"r"(p):"xmm0", "xmm1");
1523     ], [
1524       ac_cv_sse4_1_inline=yes
1525     ], [
1526       ac_cv_sse4_1_inline=no
1527     ])
1528   ])
1530   AS_IF([test "${ac_cv_sse4_1_inline}" != "no"], [
1531     AC_DEFINE(CAN_COMPILE_SSE4_1, 1, [Define to 1 if SSE4_1 inline assembly is available.]) ])
1533   # SSE4.2
1534   AC_CACHE_CHECK([if $CC groks SSE4.2 inline assembly],
1535                  [ac_cv_sse4_2_inline], [
1536     AC_COMPILE_IFELSE([AC_LANG_PROGRAM(,[[
1537 void *p;
1538 asm volatile("pcmpgtq %%xmm1,%%xmm0"::"r"(p):"xmm0", "xmm1");
1540     ], [
1541       ac_cv_sse4_2_inline=yes
1542     ], [
1543       ac_cv_sse4_2_inline=no
1544     ])
1545   ])
1547   AS_IF([test "${ac_cv_sse4_2_inline}" != "no"], [
1548     AC_DEFINE(CAN_COMPILE_SSE4_2, 1, [Define to 1 if SSE4_2 inline assembly is available.]) ])
1550   # SSE4A
1551   AC_CACHE_CHECK([if $CC groks SSE4A inline assembly], [ac_cv_sse4a_inline], [
1552     AC_COMPILE_IFELSE([AC_LANG_PROGRAM(,[[
1553 void *p;
1554 asm volatile("insertq %%xmm1,%%xmm0"::"r"(p):"xmm0", "xmm1");
1556     ], [
1557       ac_cv_sse4a_inline=yes
1558     ], [
1559       ac_cv_sse4a_inline=no
1560     ])
1561   ])
1562   VLC_RESTORE_FLAGS
1563   AS_IF([test "${ac_cv_sse4a_inline}" != "no"], [
1564     AC_DEFINE([CAN_COMPILE_SSE4A], [1], [Define to 1 if SSE4A inline assembly is available.]) ])
1566 AM_CONDITIONAL([HAVE_SSE2], [test "$have_sse2" = "yes"])
1568 dnl  Check for fully workin AVX2 intrinsics
1569 dnl  We need support for -mavx[2], we need <immintrin.h>, and we also need a
1570 dnl  working compiler (http://gcc.gnu.org/bugzilla/show_bug.cgi?id=23963)
1571 AC_ARG_ENABLE([avx],
1572   AS_HELP_STRING([--disable-avx],
1573     [disable AVX (1-2) optimizations (default auto)]),, [
1574   case "${host_cpu}" in
1575     i?86|x86_64)
1576       enable_avx=yes
1577       ;;
1578     *)
1579       enable_avx=no
1580       ;;
1581   esac
1583 have_avx2="no"
1584 AS_IF([test "${enable_avx}" != "no"], [
1585   ARCH="${ARCH} avx avx2"
1587   VLC_SAVE_FLAGS
1588   CFLAGS="${CFLAGS} -mavx2"
1589   AC_CACHE_CHECK([if $CC groks AVX2 intrinsics], [ac_cv_c_avx2_intrinsics], [
1590     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([
1591 [#include <immintrin.h>
1592 #include <stdint.h>
1593 uint64_t frobzor;]], [
1594 [__m256i a, b, c;
1595 a = b = c = _mm256_set1_epi64x((int64_t)frobzor);
1596 a = _mm256_slli_epi16(a, 3);
1597 a = _mm256_adds_epi16(a, b);
1598 c = _mm256_srli_epi16(c, 8);
1599 c = _mm256_slli_epi16(c, 3);
1600 b = _mm256_adds_epi16(b, c);
1601 a = _mm256_unpacklo_epi8(a, b);
1602 frobzor = (uint64_t)_mm256_extract_epi64(a, 0);]])], [
1603       ac_cv_c_avx2_intrinsics=yes
1604     ], [
1605       ac_cv_c_avx2_intrinsics=no
1606     ])
1607   ])
1608   VLC_RESTORE_FLAGS
1609   AS_IF([test "${ac_cv_c_avx2_intrinsics}" != "no"], [
1610     AC_DEFINE(HAVE_AVX2_INTRINSICS, 1, [Define to 1 if AVX2 intrinsics are available.])
1611   ])
1613   VLC_SAVE_FLAGS
1614   CFLAGS="${CFLAGS} -mavx"
1615   AC_CACHE_CHECK([if $CC groks AVX inline assembly], [ac_cv_avx_inline], [
1616     AC_COMPILE_IFELSE([AC_LANG_PROGRAM(,[[
1617 void *p;
1618 asm volatile("xorps256 %%ymm1,%%ymm2"::"r"(p):"ymm1", "ymm2");
1620     ], [
1621       ac_cv_avx_inline=yes
1622     ], [
1623       ac_cv_avx_inline=no
1624     ])
1625   ])
1627   AS_IF([test "${ac_cv_avx_inline}" != "no" -a "${SYS}" != "solaris"], [
1628     AC_DEFINE(CAN_COMPILE_AVX, 1, [Define to 1 if AVX inline assembly is available.])
1629   ])
1631   AC_CACHE_CHECK([if $CC groks AVX2 inline assembly], [ac_cv_avx2_inline], [
1632     AC_COMPILE_IFELSE([AC_LANG_PROGRAM(,[[
1633 void *p;
1634 asm volatile("punpckhqdq256 %%ymm1,%%ymm2"::"r"(p):"ymm1", "ymm2");
1636     ], [
1637       ac_cv_avx2_inline=yes
1638     ], [
1639       ac_cv_avx2_inline=no
1640     ])
1641   ])
1642   VLC_RESTORE_FLAGS
1643   AS_IF([test "${ac_cv_avx2_inline}" != "no" -a "${SYS}" != "solaris"], [
1644     AC_DEFINE(CAN_COMPILE_AVX2, 1, [Define to 1 if AVX2 inline assembly is available.])
1645     have_avx2="yes"
1646   ])
1648 AM_CONDITIONAL([HAVE_AVX2], [test "$have_avx2" = "yes"])
1650 VLC_SAVE_FLAGS
1651 CFLAGS="${CFLAGS} -mmmx"
1652 have_3dnow="no"
1653 AC_CACHE_CHECK([if $CC groks 3D Now! inline assembly], [ac_cv_3dnow_inline], [
1654   AC_COMPILE_IFELSE([AC_LANG_PROGRAM(,[[
1655 void *p;
1656 asm volatile("pfadd %%mm1,%%mm2"::"r"(p):"mm1", "mm2");
1658   ], [
1659     ac_cv_3dnow_inline=yes
1660   ], [
1661     ac_cv_3dnow_inline=no
1662   ])
1664 VLC_RESTORE_FLAGS
1665 AS_IF([test "${ac_cv_3dnow_inline}" != "no"], [
1666   AC_DEFINE([CAN_COMPILE_3DNOW], 1,
1667             [Define to 1 if 3D Now! inline assembly is available.])
1668   have_3dnow="yes"
1670 AM_CONDITIONAL([HAVE_3DNOW], [test "$have_3dnow" = "yes"])
1673 AC_ARG_ENABLE([neon],
1674   AS_HELP_STRING([--disable-neon],
1675     [disable ARM NEON optimizations (default auto)]),, [
1676   case "${host_cpu}" in
1677     "arm")
1678       enable_neon="32"
1679       ;;
1680     "aarch64")
1681       enable_neon="64"
1682       ;;
1683     *)
1684       enable_neon="no"
1685       ;;
1686   esac
1688 AS_IF([test "${enable_neon}" != "no"], [
1689   VLC_SAVE_FLAGS
1690   AC_CACHE_CHECK([if $CCAS groks ARM NEON assembly], [ac_cv_arm_neon], [
1691     AS_IF([test "${enable_neon}" != "64"], [
1692       CFLAGS="${CFLAGS} -mfpu=neon -mhard-float"
1693       AC_COMPILE_IFELSE([
1694         AC_LANG_PROGRAM(,[[
1695 asm volatile("vqmovun.s64 d0, q1":::"d0");
1697       ], [
1698         ac_cv_arm_neon="32"
1699       ], [
1700         ac_cv_arm_neon="no"
1701       ])
1702     ], [
1703       CFLAGS="${CFLAGS} -march=armv8-a+simd"
1704       AC_COMPILE_IFELSE([
1705         AC_LANG_PROGRAM(,[[
1706 asm volatile("uhadd v0.8b, v0.8b, v1.8b":::"v0");
1708       ], [
1709         ac_cv_arm_neon="64"
1710       ], [
1711         ac_cv_arm_neon="no"
1712       ])
1713     ])
1714   ])
1715   VLC_RESTORE_FLAGS
1717 AM_CONDITIONAL([HAVE_NEON], [test "${ac_cv_arm_neon}" = "32"])
1718 AM_CONDITIONAL([HAVE_ARM64], [test "${ac_cv_arm_neon}" = "64"])
1720 AC_ARG_ENABLE([sve],
1721   AS_HELP_STRING([--disable-sve],
1722     [disable ARM SVE optimizations (default auto)]),, [
1723   AS_IF([test "${host_cpu}" = "aarch64"], [enable_sve="yes"] ,[enable_sve="no"])
1725 AS_IF([test "${enable_sve}" != "no"], [
1726   VLC_SAVE_FLAGS
1727   CFLAGS="${CFLAGS} -march=armv8-a+sve"
1728   AC_CACHE_CHECK([if $CCAS groks ARM SVE assembly], [ac_cv_arm_sve], [
1729     AC_COMPILE_IFELSE([
1730       AC_LANG_PROGRAM(,[[
1731 asm volatile("ptrue p0.s" ::: "p0");
1733     ], [
1734       ac_cv_arm_sve="yes"
1735     ], [
1736       ac_cv_arm_sve="no"
1737     ])
1738   ])
1739   VLC_RESTORE_FLAGS
1741 AM_CONDITIONAL([HAVE_SVE], [test "${ac_cv_arm_sve}" = "yes"])
1743 AC_ARG_ENABLE([branch-protection],
1744   AS_HELP_STRING([--disable-branch-protection],
1745     [disable AArch64 branch protection (default auto)]),, [
1746   AS_IF([test "${host_cpu}" = "aarch64"],
1747     [enable_branch_protection="yes"], [enable_branch_protection="no"])
1749 AS_IF([test "${enable_branch_protection}" != "no"], [
1750   AX_CHECK_COMPILE_FLAG([-mbranch-protection=standard], [
1751     AX_APPEND_FLAG([-mbranch-protection=standard], [CFLAGS])
1752     AX_APPEND_FLAG([-mbranch-protection=standard], [CXXFLAGS])
1753   ])
1757 AC_ARG_ENABLE([altivec],
1758   AS_HELP_STRING([--disable-altivec],
1759     [disable AltiVec optimizations (default auto)]),, [
1760   AS_CASE("${host_cpu}", [powerpc*],
1761         [enable_altivec=yes], [enable_altivec=no])
1763 have_altivec="no"
1764 ALTIVEC_CFLAGS=""
1765 AS_IF([test "${enable_altivec}" = "yes"], [
1766   ARCH="${ARCH} altivec";
1767   VLC_SAVE_FLAGS
1768   AC_CACHE_CHECK([if $CC groks AltiVec inline assembly],
1769     [ac_cv_altivec_inline],
1770     [AC_TRY_COMPILE(,[asm volatile("vperm 0,1,2,3");],
1771          ac_cv_altivec_inline="yes",
1772          [CFLAGS="${CFLAGS} -Wa,-maltivec"
1773           AC_TRY_COMPILE(,[asm volatile("vperm 0,1,2,3");],
1774             [ac_cv_altivec_inline="-Wa,-maltivec"],
1775             ac_cv_altivec_inline=no)
1776          ])])
1777   VLC_RESTORE_FLAGS
1778   AS_IF([test "${ac_cv_altivec_inline}" != "no"], [
1779     AC_DEFINE(CAN_COMPILE_ALTIVEC, 1,
1780               [Define to 1 if AltiVec inline assembly is available.])
1781     AS_IF([test "${ac_cv_altivec_inline}" != "yes"], [
1782       ALTIVEC_CFLAGS="${ac_cv_altivec_inline}"
1783       VLC_ADD_CFLAGS([libvlccore],[${ac_cv_altivec_inline}])
1784     ])
1785     have_altivec="yes"
1786   ])
1788   VLC_SAVE_FLAGS
1789   AC_CACHE_CHECK([if \$CC groks AltiVec C extensions],
1790   [ac_cv_c_altivec], [
1791     CFLAGS="${CFLAGS} -maltivec"
1792     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([
1793 [#include <altivec.h>]], [
1794 [vec_ld(0, (unsigned char *)0);]])], [
1795       ac_cv_c_altivec="-maltivec"
1796     ], [
1797       ac_cv_c_altivec="no"
1798     ])
1799   ])
1800   VLC_RESTORE_FLAGS
1801   AS_IF([test "${ac_cv_c_altivec}" != "no"], [
1802     CPPFLAGS="${CPPFLAGS} ${ac_cv_c_altivec}"
1803     AC_DEFINE(CAN_COMPILE_C_ALTIVEC, 1, [Define to 1 if C AltiVec extensions are available.])
1804     VLC_ADD_CFLAGS([libvlccore],[${ac_cv_c_altivec}])
1805     ALTIVEC_CFLAGS="$ALTIVEC_CFLAGS ${ac_cv_c_altivec}"
1806     VLC_ADD_CFLAGS([deinterlace],[${ac_cv_c_altivec}])
1807     have_altivec="yes"
1808   ])
1809   AC_CHECK_HEADERS([altivec.h])
1811   VLC_SAVE_FLAGS
1812   LDFLAGS="${LDFLAGS} -Wl,-framework,vecLib"
1813   AC_CACHE_CHECK([if linker needs -framework vecLib],
1814     [ac_cv_ld_altivec],
1815     [AC_TRY_LINK([],,ac_cv_ld_altivec=yes,ac_cv_ld_altivec=no)])
1816   VLC_RESTORE_FLAGS
1817   AS_IF([test "${ac_cv_ld_altivec}" != "no"], [
1818     VLC_ADD_LIBS([libvlccore],[-Wl,-framework,vecLib])
1819   ])
1821 AC_SUBST([ALTIVEC_CFLAGS])
1822 AM_CONDITIONAL([HAVE_ALTIVEC], [test "$have_altivec" = "yes"])
1825 dnl  Memory usage
1827 AC_ARG_ENABLE([optimize-memory],
1828   AS_HELP_STRING([--enable-optimize-memory],
1829     [optimize memory usage over performance]))
1830 if test "${enable_optimize_memory}" = "yes"; then
1831   AC_DEFINE(OPTIMIZE_MEMORY, 1, Define if you want to optimize memory usage over performance)
1835 dnl Allow running as root (useful for people running on embedded platforms)
1837 AC_ARG_ENABLE([run-as-root],
1838   AS_HELP_STRING([--enable-run-as-root],
1839     [allow running VLC as root (default disabled)]))
1840 AS_IF([test "${enable_run_as_root}" = "yes"],[
1841     AC_DEFINE(ALLOW_RUN_AS_ROOT, 1,
1842               [Define to 1 to allow running VLC as root (uid 0).])
1846 dnl Stream output
1848 AC_ARG_ENABLE([sout],
1849   AS_HELP_STRING([--disable-sout],
1850     [disable streaming output (default enabled)]))
1851 AS_IF([test "${enable_sout}" != "no"], [
1852   AC_DEFINE(ENABLE_SOUT, 1, [Define to 1 for stream output support.])
1854 AM_CONDITIONAL([ENABLE_SOUT], [test "${enable_sout}" != "no"])
1856 dnl Lua modules
1857 AC_ARG_ENABLE([lua],
1858   AS_HELP_STRING([--disable-lua],
1859     [disable LUA scripting support (default enabled)]))
1860 if test "${enable_lua}" != "no"
1861 then
1862   PKG_CHECK_MODULES(LUA, lua5.2,
1863     [ have_lua=yes ],
1864     [
1865     AC_MSG_WARN([${LUA_PKG_ERRORS}, trying lua 5.1 instead])
1867     PKG_CHECK_MODULES(LUA, lua5.1,
1868       [ have_lua=yes ],
1869       [
1870       AC_MSG_WARN([${LUA_PKG_ERRORS}, trying lua >= 5.1 instead])
1871       PKG_CHECK_MODULES(LUA, lua >= 5.1,
1872         [ have_lua=yes ],
1873         [
1874           AC_MSG_WARN([${LUA_PKG_ERRORS}, trying manual detection instead])
1875           have_lua=yes
1876           AC_CHECK_HEADERS([lua.h lauxlib.h lualib.h],
1877             [],
1878             [ have_lua=no ] )
1879           AC_CHECK_LIB(  lua5.2 , luaL_newstate,
1880             [LUA_LIBS="-llua5.2"],
1881           AC_CHECK_LIB( lua5.1 , luaL_newstate,
1882             [LUA_LIBS="-llua5.1"],
1883             AC_CHECK_LIB( lua51 , luaL_newstate,
1884               [LUA_LIBS="-llua51"],
1885               AC_CHECK_LIB( lua , luaL_newstate,
1886                 [LUA_LIBS="-llua"],
1887                 [ have_lua=no
1888                 ], [-lm])
1889             )))
1890         ])
1891       ])
1892     ])
1893   if test "x${have_lua}" != "xyes" ;  then
1894       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.])
1895   fi
1896   AC_ARG_VAR([LUAC], [LUA byte compiler])
1897   AS_IF([test -z "$LUAC"], [
1898      AC_CHECK_TOOL(LUAC, [luac], [false])
1899   ])
1900   AS_IF([test "${LUAC}" = "false"], [
1901     AC_MSG_ERROR([Could not find the LUA byte compiler.])
1902   ])
1903   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], [
1904     AC_MSG_ERROR([You need 32-bits luac when using lua from contrib.])
1905   ])
1907 AM_CONDITIONAL([BUILD_LUA], [test "${have_lua}" = "yes"])
1911 dnl VideoLAN manager
1913 AC_ARG_ENABLE([vlm],
1914   AS_HELP_STRING([--disable-vlm],
1915     [disable the stream manager (default enabled)]),,
1916   [enable_vlm="${enable_sout}"])
1917 AS_IF([test "${enable_vlm}" != "no"], [
1918   AS_IF([test "${enable_sout}" = "no"], [
1919     AC_MSG_ERROR([VLM requires the stream output. Do not use --disable-sout.])
1920   ])
1921   AC_DEFINE(ENABLE_VLM, 1, [Define if you want the VideoLAN manager support])
1923 AM_CONDITIONAL([ENABLE_VLM], [test "${enable_vlm}" != "no"])
1927 dnl Addons manager storage and repositories modules
1929 AC_ARG_ENABLE([addonmanagermodules],
1930   AS_HELP_STRING([--disable-addonmanagermodules],
1931     [disable the addons manager modules (default enabled)]))
1932 if test "${enable_addonmanagermodules}" != "no"
1933 then
1934   AC_DEFINE(ENABLE_ADDONMANAGERMODULES, 1, [Define if you want the addons manager modules])
1936 AM_CONDITIONAL([ENABLE_ADDONMANAGERMODULES], [test "${enable_addonmanagermodules}" != "no"])
1940 dnl  Input plugins
1943 EXTEND_HELP_STRING([Input plugins:])
1946 dnl  libarchive access module
1948 PKG_ENABLE_MODULES_VLC([ARCHIVE], [archive], [libarchive >= 3.1.0], (libarchive support), [auto])
1951 dnl  live555 input
1953 AC_ARG_ENABLE([live555],
1954   AS_HELP_STRING([--enable-live555],
1955     [enable RTSP input through live555 (default enabled)]))
1957 AS_IF([test "${enable_live555}" != "no" -a -n "${CXX}"], [
1958   PKG_CHECK_MODULES(LIVE555, live555, [
1959     VLC_ADD_PLUGIN([live555])
1960     VLC_ADD_CXXFLAGS([live555], [$LIVE555_CFLAGS])
1961     VLC_ADD_LIBS([live555],[$LIVE555_LIBS])
1962   ], [
1963     AC_MSG_WARN([${LIVE555_PKG_ERRORS}.])
1965     AC_LANG_PUSH(C++)
1966     VLC_SAVE_FLAGS
1968     dnl detect include paths
1969     AS_IF([test -f "${CONTRIB_DIR}/include/UsageEnvironment/UsageEnvironment.hh"], [
1970       CPPFLAGS_live555="-I${CONTRIB_DIR}/include/liveMedia -I${CONTRIB_DIR}/include/groupsock -I${CONTRIB_DIR}/include/BasicUsageEnvironment -I${CONTRIB_DIR}/include/UsageEnvironment"
1971     ], [
1972       AS_IF([test "${SYS}" != "os2"], [
1973         LIVE555_PREFIX=${LIVE555_PREFIX-"/usr"}
1974         CPPFLAGS_live555="-I${LIVE555_PREFIX}/include/liveMedia -I${LIVE555_PREFIX}/include/groupsock -I${LIVE555_PREFIX}/include/BasicUsageEnvironment -I${LIVE555_PREFIX}/include/UsageEnvironment"
1975       ], [
1976         LIVE555_PREFIX=${LIVE555_PREFIX-"/usr/lib/live"}
1977         CPPFLAGS_live555="-I${LIVE555_PREFIX}/liveMedia/include -I${LIVE555_PREFIX}/groupsock/include -I${LIVE555_PREFIX}/BasicUsageEnvironment/include -I${LIVE555_PREFIX}/UsageEnvironment/include"
1978         LDFLAGS_live555="-L${LIVE555_PREFIX}/liveMedia -L${LIVE555_PREFIX}/groupsock -L${LIVE555_PREFIX}/BasicUsageEnvironment -L${LIVE555_PREFIX}/UsageEnvironment"
1979       ])
1980     ])
1982     dnl CPP Flags
1983     AS_IF([test "${SYS}" = "solaris"], [
1984       CPPFLAGS_live555="${CPPFLAGS_live555} -DSOLARIS"
1985     ])
1986     CPPFLAGS="${CPPFLAGS} ${CPPFLAGS_live555}"
1987     LDFLAGS="${LDFLAGS} ${LDFLAGS_live555}"
1989     dnl version check
1990     AC_CACHE_CHECK([for live555 version 1324598400 or later], [ac_cv_live555], [
1991       AC_PREPROC_IFELSE([AC_LANG_PROGRAM([
1992 [#include <liveMedia_version.hh>
1993 #if !defined (LIVEMEDIA_LIBRARY_VERSION_INT) || (LIVEMEDIA_LIBRARY_VERSION_INT < 1324598400)
1994 # error BOOM
1995 #endif]])
1996       ], [
1997         ac_cv_live555="yes"
1998       ], [
1999         ac_cv_live555="no"
2000       ])
2001     ])
2003     AS_IF([test "$ac_cv_live555" = "no"], [
2004       AC_MSG_WARN([live555 is missing or its installed version is too old:
2005 Version 2011.12.23 or later is required to proceed.
2006 You can get an updated one from http://www.live555.com/liveMedia .])
2007       AS_IF([test -n "${enable_live555}"], [
2008         AC_MSG_ERROR([Update live555 or pass --disable-live555 to disable RTSP input support.])
2009       ])
2010     ], [
2011       other_libs="-lgroupsock -lBasicUsageEnvironment -lUsageEnvironment"
2012       other_libs_pic="-lgroupsock_pic -lBasicUsageEnvironment_pic -lUsageEnvironment_pic"
2013       AS_IF([test "${SYS}" = "mingw32"], [
2014         # add ws2_32 for closesocket, select, recv
2015         other_libs="$other_libs -lws2_32"
2016       ])
2018       dnl We need to check for pic because live555 don't provide shared libs
2019       dnl and we want to build a plugins so we need -fPIC on some arch.
2020       VLC_ADD_CXXFLAGS([live555], [${CPPFLAGS_live555}])
2021       VLC_ADD_LDFLAGS([live555], [${LDFLAGS_live555}])
2022       AC_CHECK_LIB([liveMedia_pic], [main], [
2023         VLC_ADD_PLUGIN([live555])
2024         VLC_ADD_LIBS([live555], [-lliveMedia_pic ${other_libs_pic}])
2025       ],[
2026         AC_CHECK_LIB([liveMedia], [main], [
2027           VLC_ADD_PLUGIN([live555])
2028           VLC_ADD_LIBS([live555], [-lliveMedia ${other_libs}])
2029         ],[],[${other_libs}])
2030       ],[${other_libs_pic}])
2031     ])
2032     VLC_RESTORE_FLAGS
2033     AC_LANG_POP(C++)
2034   ])
2038 dnl IIDC and DV FireWire input modules
2040 PKG_ENABLE_MODULES_VLC([DC1394], [], [libdc1394-2 >= 2.1.0], [IIDC FireWire input module], [auto])
2041 PKG_ENABLE_MODULES_VLC([DV1394], [], [libraw1394 >= 2.0.1 libavc1394 >= 0.5.3], [DV FireWire input module], [auto])
2044 dnl - linsys modules: access module check for libzvbi
2046 AC_ARG_ENABLE([linsys],
2047   AS_HELP_STRING([--enable-linsys],
2048     [Linux Linear Systems Ltd. SDI and HD-SDI input cards (default enabled)]))
2049 AS_IF([test "$SYS" = "linux" -a "${enable_linsys}" != "no"], [
2050   VLC_ADD_PLUGIN([linsys_hdsdi])
2051   PKG_CHECK_MODULES(LINSYS_SDI, [zvbi-0.2 >= 0.2.28], [
2052     VLC_ADD_PLUGIN([linsys_sdi])
2053   ], [
2054     AC_MSG_WARN([${LINSYS_SDI_PKG_ERRORS}.])
2055   ])
2059 dnl dvdread module: check for libdvdread
2061 PKG_ENABLE_MODULES_VLC([DVDREAD], [], [dvdread > 6.0.0], [dvdread input module], [auto])
2064 dnl libdvdnav plugin
2066 PKG_ENABLE_MODULES_VLC([DVDNAV], [], [dvdnav >= 6.0.0], [DVD with navigation input module (dvdnav)], [auto])
2069 dnl  Blu-ray Disc Support with libbluray
2071 PKG_ENABLE_MODULES_VLC([BLURAY], [libbluray], [libbluray >= 0.6.2], (libbluray for Blu-ray disc support ) )
2074 dnl  OpenCV wrapper and example filters
2076 PKG_ENABLE_MODULES_VLC([OPENCV], [opencv_example opencv_wrapper], [opencv > 2.0], (OpenCV (computer vision) filter), [auto])
2080 dnl  libsmbclient plugin
2082 PKG_ENABLE_MODULES_VLC([SMBCLIENT], [smbc], [smbclient], (SMB/CIFS support), [auto])
2085 dnl  liBDSM access module
2087 AM_CONDITIONAL([HAVE_DSM], [test "$AS_TR_SH(with_dsm)" = "yes"])
2088 PKG_WITH_MODULES([DSM], [libdsm >= 0.2.0], [
2089        VLC_ADD_PLUGIN([dsm])
2090        VLC_ADD_CFLAGS([dsm], [$DSM_CFLAGS])
2091        VLC_ADD_LIBS([dsm], [$DSM_LIBS])
2092        have_dsm="yes"
2093    ],,[libdsm SMB/CIFS access/sd module], [auto])
2094 AM_CONDITIONAL([HAVE_DSM], [test "${have_dsm}" = "yes"])
2097 dnl sftp access support
2099 PKG_ENABLE_MODULES_VLC([SFTP], [sftp], [libssh2], (support SFTP file transfer via libssh2), [auto])
2102 dnl nfs access support
2104 PKG_ENABLE_MODULES_VLC([NFS], [nfs], [libnfs >= 1.10.0], (support nfs protocol via libnfs), [auto])
2107 dnl smb2 access support
2109 PKG_ENABLE_MODULES_VLC([SMB2], [smb2], [libsmb2 >= 3.0.0], (support smb2 protocol via libsmb2), [auto])
2112 dnl  Video4Linux 2
2114 AC_ARG_ENABLE([v4l2], AS_HELP_STRING([--disable-v4l2],
2115   [disable Video4Linux version 2 (default auto)]))
2116 have_v4l2="no"
2117 AS_IF([test "$enable_v4l2" != "no"], [
2118   AC_CHECK_HEADERS([linux/videodev2.h], [
2119     have_v4l2="yes"
2120   ])
2122 AM_CONDITIONAL([HAVE_V4L2], [test "${have_v4l2}" != "no"])
2125 dnl  NVDEC decoder/encoder
2127 AC_ARG_ENABLE([nvdec], AS_HELP_STRING([--disable-nvdec],
2128   [disable NVDEC decoder (default auto)]))
2129 have_nvdec="no"
2130 AS_IF([test "$enable_nvdec" != "no"], [
2131   AC_CHECK_HEADERS([ffnvcodec/dynlink_loader.h], [
2132     have_nvdec="yes"
2133   ])
2135 AM_CONDITIONAL([HAVE_NVDEC], [test "${have_nvdec}" != "no"])
2138 dnl special access module for Blackmagic SDI cards
2140 AC_ARG_ENABLE([decklink],
2141   AS_HELP_STRING([--disable-decklink],
2142     [disable Blackmagic DeckLink SDI input (default auto)]))
2143 AC_ARG_WITH([decklink_sdk],
2144   AS_HELP_STRING([--with-decklink-sdk=DIR],
2145     [location of Blackmagic DeckLink SDI SDK]))
2146 have_decklink=no
2147 if test "${enable_decklink}" != "no"
2148 then
2149   if test "${with_decklink_sdk}" != "no" -a -n "${with_decklink_sdk}"
2150   then
2151     VLC_ADD_CPPFLAGS([decklink decklinkoutput stream_out_sdi],[-I${with_decklink_sdk}/include])
2152   fi
2153   VLC_SAVE_FLAGS
2154   CPPFLAGS="${CPPFLAGS} ${CPPFLAGS_decklink}"
2155   AC_LANG_PUSH([C++])
2156   AC_CHECK_HEADERS([DeckLinkAPIDispatch.cpp], [
2157       have_decklink=yes
2158       AS_IF([test "${SYS}" = "darwin"], [
2159         VLC_ADD_LIBS([decklink decklinkoutput],[-Wl,-framework,CoreFoundation])
2160       ])
2161   ], [
2162       AS_IF([test "${enable_decklink}" = "yes"], [
2163         AC_MSG_ERROR([Blackmagic DeckLink SDI include files not found!])
2164       ], [
2165         AC_MSG_WARN([Blackmagic DeckLink SDI include files not found, decklink disabled])
2166       ])
2167   ])
2168   AC_LANG_POP([C++])
2169   VLC_RESTORE_FLAGS
2171 AM_CONDITIONAL([HAVE_DECKLINK], [ test "${have_decklink}" != "no" ])
2175 dnl  Built-in CD-DA and VCD module
2177 AC_ARG_ENABLE([vcd],
2178   AS_HELP_STRING([--disable-vcd],
2179     [disable built-in VCD and CD-DA support (default enabled)]))
2181 AC_ARG_ENABLE([libcddb],
2182   AS_HELP_STRING([--disable-libcddb],
2183     [disable CDDB for Audio CD (default enabled)]))
2185 if test "${enable_vcd}" != "no" -a "${enable_winstore_app}" != "yes"
2186 then
2187   AC_MSG_CHECKING(for cdrom_msf0 in linux/cdrom.h)
2188   AC_EGREP_HEADER(cdrom_msf0,linux/cdrom.h,[
2189     AC_MSG_RESULT(yes)
2190     VLC_ADD_PLUGIN([vcd cdda])
2191   ],[
2192     AC_MSG_RESULT(no)
2193   ])
2195   AC_MSG_CHECKING(for scsireq in sys/scsiio.h)
2196   AC_EGREP_HEADER(scsireq,sys/scsiio.h,[
2197     AC_MSG_RESULT(yes)
2198     VLC_ADD_PLUGIN([vcd cdda])
2199     AC_DEFINE(HAVE_SCSIREQ_IN_SYS_SCSIIO_H, 1, For NetBSD VCD support)
2200   ],[
2201     AC_MSG_RESULT(no)
2202   ])
2204   AC_MSG_CHECKING(for ioc_toc_header in sys/cdio.h)
2205   AC_EGREP_HEADER(ioc_toc_header ,sys/cdio.h,[
2206     AC_MSG_RESULT(yes)
2207     VLC_ADD_PLUGIN([vcd cdda])
2208     AC_DEFINE(HAVE_IOC_TOC_HEADER_IN_SYS_CDIO_H, 1, For FreeBSD VCD support)
2209   ],[
2210     AC_MSG_RESULT(no)
2211   ])
2213   if test "${SYS}" = "bsdi" -o "${SYS}" = "mingw32" -o "${SYS}" = "os2" -o "${SYS}" = "darwin"
2214   then
2215     VLC_ADD_PLUGIN([vcd cdda])
2216   fi
2218   if test "$enable_libcddb" != "no"; then
2219     PKG_CHECK_MODULES(LIBCDDB, [libcddb >= 0.9.5], [
2220       HAVE_LIBCDDB=yes
2221       AC_DEFINE(HAVE_LIBCDDB, 1, [Define this if you have libcddb installed])
2222       VLC_ADD_LIBS([cdda],[$LIBCDDB_LIBS])
2223       VLC_ADD_CFLAGS([cdda],[$LIBCDDB_CFLAGS])
2224       ],:
2225       [AC_MSG_WARN([${LIBCDDB_PKG_ERRORS}: CDDB access disabled.])
2226       HAVE_LIBCDDB=no])
2227   fi
2231 dnl Linux DVB
2233 AC_CACHE_CHECK([for Linux DVB version 5.1], [ac_cv_linux_dvb_5_1], [
2234   AC_PREPROC_IFELSE([AC_LANG_PROGRAM([
2235 [#include <linux/dvb/version.h>
2236 #if (DVB_API_VERSION < 5)
2237 # error Linux DVB API v3.2 and older are not supported.
2238 #endif
2239 #if (DVB_API_VERSION == 5 && DVB_API_VERSION_MINOR < 1)
2240 # error Linux DVB API v5.0 is unsupported. Please update.
2241 #endif
2242 ]])], [
2243   ac_cv_linux_dvb_5_1=yes
2244 ], [
2245   ac_cv_linux_dvb_5_1=no
2246 ])])
2247 AM_CONDITIONAL([HAVE_LINUX_DVB], [test "$ac_cv_linux_dvb_5_1" = "yes"])
2250 dnl  Screen capture module
2252 AC_ARG_ENABLE([screen],
2253   AS_HELP_STRING([--enable-screen],
2254     [disable screen capture (default enabled)]))
2255 if test "${enable_screen}" != "no"; then
2256   if test "${SYS}" = "darwin"; then
2257     AC_CHECK_HEADERS([ApplicationServices/ApplicationServices.h], [
2258       VLC_ADD_PLUGIN([screen])
2259     ])
2260   fi
2262 AM_CONDITIONAL([HAVE_MAC_SCREEN], [test "${SYS}" = "darwin" -a "x${enable_screen}" != "xno"])
2265 dnl  VNC/RFB access module
2267 PKG_ENABLE_MODULES_VLC([VNC], [vnc], [libvncclient >= 0.9.9], (VNC/rfb client support), [auto])
2269 dnl  RDP/Remote Desktop access module
2271 PKG_ENABLE_MODULES_VLC([FREERDP], [rdp], [freerdp >= 1.0.1], (RDP/Remote Desktop client support) )
2274 dnl AVFoundation
2275 AC_SUBST([have_avfoundation], ["no"])
2276 AC_ARG_ENABLE([macosx-avfoundation],
2277   AS_HELP_STRING([--enable-macosx-avfoundation], [Mac OS X avcapture (video) module (default enabled on Mac OS X)]))
2278 if test "x${enable_macosx_avfoundation}" != "xno" &&
2279   (test "${SYS}" = "darwin" || test "${enable_macosx_avfoundation}" = "yes")
2280 then
2281   SAVED_LIBS="${LIBS}"
2282   LIBS="-framework AVFoundation"
2283   AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [])],[have_avfoundation=yes],[have_avfoundation=no])
2284   LIBS="${SAVED_LIBS}"
2285   if test "${have_avfoundation}" != "no"
2286   then
2287     VLC_ADD_PLUGIN([avcapture])
2288   fi
2290 AM_CONDITIONAL([HAVE_AVFOUNDATION], [test "${have_avfoundation}" != "no"])
2293 dnl  DCP plugin (using asdcplib)
2295 PKG_WITH_MODULES([ASDCP], [asdcplib], [have_asdcp="yes"])
2296 AM_CONDITIONAL([HAVE_ASDCP], [test "${have_asdcp}" = "yes"])
2299 dnl  Demux plugins
2302 EXTEND_HELP_STRING([Mux/Demux plugins:])
2305 dnl  libdvbpsi check for ts mux/demux
2307 have_dvbpsi="no"
2308 PKG_WITH_MODULES([DVBPSI], [libdvbpsi >= 1.2.0], [have_dvbpsi="yes"])
2309 AM_CONDITIONAL([HAVE_DVBPSI], [test "${have_dvbpsi}" = "yes"])
2313 dnl  GME demux plugin
2315 AC_ARG_ENABLE([gme],
2316   AS_HELP_STRING([--enable-gme],
2317     [use Game Music Emu (default auto)]))
2318 AS_IF([test "${enable_gme}" != "no"], [
2319   AC_CHECK_HEADER([gme/gme.h], [
2320     AC_CHECK_LIB([gme], [gme_identify_header], [
2321       VLC_ADD_PLUGIN([gme])
2322     ], [
2323       AC_CHECK_LIB([gme], [gme_identify_extension], [
2324          VLC_ADD_LIBS([gme], [-lstdc++ $LIBM])
2325          VLC_ADD_PLUGIN([gme])
2326       ],, [-lstdc++ $LIBM])
2327     ])
2328     VLC_ADD_LIBS([gme], [-lgme])
2329   ], [
2330     AS_IF([test "x${enable_gme}" != "x"], [
2331       AC_MSG_ERROR([GME cannot be found. Please install the development files.])
2332     ])
2333   ])
2338 dnl  SIDPlay plugin
2340 AC_ARG_ENABLE([sid],
2341     AS_HELP_STRING([--enable-sid],[C64 sid demux support (default auto)]))
2342 AS_IF([test "${enable_sid}" != "no"], [
2343     PKG_CHECK_MODULES(SID, [libsidplay2], [
2344         AC_LANG_PUSH(C++)
2345         oldCPPFLAGS="$CPPFLAGS"
2346         CPPFLAGS="$CPPFLAGS $SID_CFLAGS"
2347         AC_CHECK_HEADER([sidplay/builders/resid.h], [
2348             VLC_ADD_PLUGIN([sid])
2349             VLC_ADD_CFLAGS([sid], [$SID_CFLAGS])
2350             VLC_ADD_LIBS([sid], [$SID_LIBS] [-lresid-builder])
2351         ], [
2352             AS_IF([test -n "${enable_sid}"],
2353                 [AC_MSG_ERROR([${SID_PKG_ERRORS} (required for sid).])],
2354                 [AC_MSG_WARN([${SID_PKG_ERRORS} (required for sid).])]
2355                 )
2356         ])
2357         CPPFLAGS="$oldCPPFLAGS"
2358         AC_LANG_POP(C++)
2359     ], [
2360         AS_IF([test "x${enable_sid}" = "xyes"],
2361             [AC_MSG_ERROR([${SID_PKG_ERRORS} (required for sid).])],
2362             [AC_MSG_WARN([${SID_PKG_ERRORS} (required for sid).])]
2363             )
2364     ])
2369 dnl  ogg demux plugin
2371 PKG_ENABLE_MODULES_VLC([OGG], [mux_ogg], [ogg >= 1.0], [Ogg demux support], [auto])
2372 PKG_CHECK_MODULES(LIBVORBIS, [vorbis >= 1.1], [
2373     AC_DEFINE(HAVE_LIBVORBIS, 1, [Define to 1 if you have the libvorbis])
2374 ],[true])
2375 PKG_ENABLE_MODULES_VLC([OGG], [], [ogg >= 1.0], [Ogg demux support], [auto], [${LIBVORBIS_CFLAGS}], [${LIBVORBIS_LIBS}])
2376 if test "${enable_sout}" != "no"; then
2377 dnl Check for libshout
2378     PKG_ENABLE_MODULES_VLC([SHOUT], [access_output_shout], [shout >= 2.1], [libshout output plugin], [auto])
2382 dnl  matroska demux plugin
2384 PKG_WITH_MODULES([MATROSKA], [libebml >= 1.3.6 libmatroska], [
2385        VLC_ADD_PLUGIN([mkv])
2386        VLC_ADD_CFLAGS([mkv], [$MATROSKA_CFLAGS])
2387        VLC_ADD_LIBS([mkv], [$MATROSKA_LIBS])
2388        have_matroska="yes"
2389    ],,[MKV format support], [auto])
2390 AM_CONDITIONAL([HAVE_MATROSKA], [test "${have_matroska}" = "yes"])
2393 dnl  modplug demux plugin
2395 AC_ARG_ENABLE([mod],
2396   AS_HELP_STRING([--disable-mod],
2397     [do not use libmodplug (default auto)]))
2398 if test "${enable_mod}" != "no" ; then
2399     PKG_CHECK_MODULES(LIBMODPLUG, [libmodplug >= 0.8.9.0], [
2400           VLC_ADD_PLUGIN([mod])
2401           VLC_ADD_CXXFLAGS([mod],[$LIBMODPLUG_CFLAGS])
2402           VLC_ADD_CFLAGS([mod],[$LIBMODPLUG_CFLAGS]) #modules/demux/mod.c needs CFLAGS_mod, not CXXFLAGS_mod
2403           VLC_ADD_LIBS([mod],[$LIBMODPLUG_LIBS])
2404     ],[
2405        AS_IF([test -n "${enable_mod}"],
2406          [AC_MSG_ERROR([${LIBMODPLUG_PKG_ERRORS}.])],
2407          [AC_MSG_WARN([${LIBMODPLUG_PKG_ERRORS}.])])
2408     ])
2412 dnl  mpc demux plugin
2414 AC_ARG_ENABLE([mpc],
2415   AS_HELP_STRING([--disable-mpc], [do not use libmpcdec (default auto)]))
2416 if test "${enable_mpc}" != "no"
2417 then
2418     AC_CHECK_HEADERS([mpcdec/mpcdec.h], [
2419     VLC_ADD_PLUGIN([mpc])
2420     VLC_ADD_LIBS([mpc],[-lmpcdec])])
2424 dnl  Codec plugins
2427 EXTEND_HELP_STRING([Codec plugins:])
2430 dnl shine encoder plugin
2432 PKG_ENABLE_MODULES_VLC([SHINE], [], [shine >= 3.0.0], [MPEG Audio Layer 3 encoder], [auto], [], [], [])
2436 dnl openmax il codec plugin
2438 AC_ARG_ENABLE([omxil],
2439   AS_HELP_STRING([--enable-omxil], [openmax il codec module (default disabled)]))
2440 if test "${enable_omxil}" = "yes"
2441 then
2442   VLC_ADD_PLUGIN([omxil])
2446 dnl raspberry pi openmax il configuration
2448 AC_ARG_ENABLE([rpi-omxil],
2449   AS_HELP_STRING([--enable-rpi-omxil], [openmax il configured for raspberry pi (default disabled)]))
2450 if test "${enable_rpi_omxil}" = "yes"
2451 then
2452   VLC_ADD_PLUGIN([omxil])
2453   VLC_ADD_CFLAGS([omxil],[-DRPI_OMX])
2457 dnl CrystalHD codec plugin
2459 AC_ARG_ENABLE([crystalhd],
2460   AS_HELP_STRING([--enable-crystalhd], [crystalhd codec plugin (default auto)]))
2461 if test "${enable_crystalhd}" != "no"; then
2462     AC_CHECK_HEADER(libcrystalhd/libcrystalhd_if.h, [
2463       VLC_ADD_PLUGIN([crystalhd])
2464       VLC_ADD_LIBS([crystalhd], [-lcrystalhd])
2465     ],[
2466       if test "${SYS}" = "mingw32" ; then
2467         AC_CHECK_HEADERS([libcrystalhd/bc_dts_defs.h], [
2468           VLC_ADD_PLUGIN([crystalhd])
2469           AC_CHECK_HEADERS([libcrystalhd/bc_drv_if.h], [
2470             VLC_ADD_LIBS([crystalhd], [-lbcmDIL])
2471             ])
2472         ],[
2473           AS_IF([test x"${enable_crystalhd}" = "xyes"],
2474                 [AC_MSG_ERROR("Could not find CrystalHD development headers")],
2475                 [AC_MSG_WARN("Could not find CrystalHD development headers")])
2476         ],[#define __LINUX_USER__
2477                #include <libcrystalhd/bc_dts_types.h>
2478         ])
2479       fi
2480     ],[
2481        #include <libcrystalhd/bc_dts_types.h>
2482       ])
2486 dnl  mad plugin
2488 have_mad="no"
2489 MAD_CFLAGS=""
2490 MAD_LIBS=""
2492 AC_ARG_WITH(mad, AS_HELP_STRING([--with-mad=PATH], [path to libmad]), [
2493   enable_mad="yes"
2494 ], [
2495   with_mad="no"
2497 AS_IF([test "${with_mad}" != "no"], [
2498   MAD_CFLAGS="-I${with_mad}/include"
2499   MAD_LIBS="-L${with_mad}/lib"
2502 AC_ARG_ENABLE([mad],
2503   AS_HELP_STRING([--enable-mad], [libmad module (default enabled)]))
2504 AS_IF([test "${enable_mad}" != "no"], [
2505   VLC_SAVE_FLAGS
2506   CPPFLAGS="${CPPFLAGS} ${MAD_CFLAGS}"
2507   LDFLAGS="${LDFLAGS} ${MAD_LIBS}"
2508   AC_CHECK_HEADERS([mad.h], [
2509     AC_CHECK_LIB([mad], [mad_bit_init], [
2510       have_mad="yes"
2511       MAD_LIBS="${MAD_LIBS} -lmad"
2512     ])
2513   ])
2514   VLC_RESTORE_FLAGS
2515   AS_IF([test -n "$enable_mad" -a "${have_mad}" = "no"], [
2516     AC_MSG_ERROR([Could not find libmad. Install it or pass --disable-mad to disable it.])
2517   ])
2519 AC_SUBST([MAD_CFLAGS])
2520 AC_SUBST([MAD_LIBS])
2521 AM_CONDITIONAL([HAVE_MAD], [test "${have_mad}" = "yes"])
2523 dnl  mpg123 plugin
2526 PKG_ENABLE_MODULES_VLC([MPG123], [mpg123], [libmpg123], [libmpg123 decoder support], [auto])
2529 dnl gstreamer stuff
2531 AC_ARG_ENABLE([gst-decode],
2532   AS_HELP_STRING([--enable-gst-decode], [GStreamer based decoding support (currently supports only video decoding) (default auto)]))
2534 have_gst_decode="no"
2535 AS_IF([test "${enable_gst_decode}" != "no"], [
2536   PKG_CHECK_MODULES([GST_APP], [gstreamer-app-1.0], [
2537     PKG_CHECK_MODULES([GST_VIDEO], [gstreamer-video-1.0], [
2538       have_gst_decode="yes"
2539     ], [
2540       AC_MSG_WARN([${GST_VIDEO_PKG_ERRORS}. GStreamer decoder module will not be built.])
2541     ])
2542   ], [
2543     AC_MSG_WARN([${GST_APP_PKG_ERRORS}. GStreamer modules will not be built.])
2544   ])
2546 AM_CONDITIONAL([HAVE_GST_DECODE], [test "${have_gst_decode}" = "yes"])
2549 dnl  avcodec decoder/encoder plugin
2551 AC_ARG_ENABLE([merge-ffmpeg],
2552 AS_HELP_STRING([--enable-merge-ffmpeg], [merge FFmpeg-based plugins (default disabled)]),, [
2553   enable_merge_ffmpeg="no"
2555 AM_CONDITIONAL([MERGE_FFMPEG], [test "$enable_merge_ffmpeg" != "no"])
2557 AC_MSG_CHECKING([for libavutil variant])
2558 PKG_CHECK_EXISTS([libavutil], [
2559   libavutil_version="$(${PKG_CONFIG} --modversion libavutil)"
2560   libavutil_micro="${libavutil_version##*.}"
2561   AS_IF([test ${libavutil_micro} -le 99], [
2562     avfork="libav"
2563   ], [
2564     avfork="ffmpeg"
2565   ])
2566 ], [
2567   avfork="none"
2569 AC_MSG_RESULT([${avfork}])
2571 AC_ARG_ENABLE([avcodec],
2572 AS_HELP_STRING([--enable-avcodec], [libavcodec codec (default enabled)]))
2573 AS_IF([test "${enable_avcodec}" != "no"], [
2574   dnl We need >=57.16.0 from libav or >=57.37.100 from ffmpeg
2575   case "${avfork}" in
2576     libav) av_codec_ver="57.16.0" ;;
2577     dnl 05f66706d182eb0c36af54d72614bf4c33e957a9  includes libavutil 55.9.0
2578     ffmpeg) av_codec_ver="57.37.100" ;;
2579     dnl 7fc329e2dd6226dfecaa4a1d7adf353bf2773726  include libavutil 55.22.101
2580     *) AC_MSG_ERROR([Missing libav or FFmpeg. Pass --disable-avcodec to ignore this error.])
2581   esac
2582   PKG_CHECK_MODULES(AVCODEC,[libavcodec >= ${av_codec_ver} libavutil >= 55.9.0], [
2583     VLC_SAVE_FLAGS
2584     CPPFLAGS="${CPPFLAGS} ${AVCODEC_CFLAGS}"
2585     CFLAGS="${CFLAGS} ${AVCODEC_CFLAGS}"
2586     AC_CHECK_HEADERS([libavcodec/avcodec.h])
2587     AC_CHECK_HEADERS([libavutil/avutil.h])
2588     VLC_RESTORE_FLAGS
2589     have_avcodec="yes"
2590   ],[
2591     AC_MSG_ERROR([${AVCODEC_PKG_ERRORS}. Pass --disable-avcodec to ignore this error.])
2592   ])
2593 ], [
2594   have_avcodec="no"
2596 AM_CONDITIONAL([HAVE_AVCODEC], [test "${have_avcodec}" != "no"])
2599 dnl libva needs avcodec
2601 AC_ARG_ENABLE([libva],
2602   AS_HELP_STRING([--enable-libva], [VAAPI GPU decoding support (libVA) (default auto)]))
2604 AS_IF([test "${enable_libva}" = "yes" -a "${have_avcodec}" != "yes" ], [
2605   AC_MSG_ERROR([--enable-libva and --disable-avcodec options are mutually exclusive. Use --enable-avcodec.])
2608 have_vaapi="no"
2609 have_vaapi_drm="no"
2610 have_vaapi_x11="no"
2611 have_vaapi_wl="no"
2612 AS_IF([test "${enable_libva}" != "no"], [
2613   PKG_CHECK_MODULES([LIBVA], [libva >= 0.38], [
2614     have_vaapi="yes"
2615   ], [
2616     AS_IF([test -n "${enable_libva}"], [
2617       AC_MSG_ERROR([${LIBVA_PKG_ERRORS}.])
2618     ], [
2619       AC_MSG_WARN([${LIBVA_PKG_ERRORS}.])
2620     ])
2621   ])
2622   PKG_CHECK_MODULES([LIBVA_DRM], [libva-drm], [
2623     have_vaapi_drm="yes"
2624   ], [
2625     AC_MSG_WARN([${LIBVA_DRM_PKG_ERRORS}.])
2626   ])
2627   PKG_CHECK_MODULES(LIBVA_X11, [libva-x11], [
2628     have_vaapi_x11="yes"
2629   ], [
2630     AC_MSG_WARN([${LIBVA_X11_PKG_ERRORS}.])
2631   ])
2632   PKG_CHECK_MODULES(LIBVA_WL, [libva-wayland], [
2633     have_vaapi_wl="yes"
2634   ], [
2635     AC_MSG_WARN([${LIBVA_WL_PKG_ERRORS}.])
2636   ])
2638 AM_CONDITIONAL([HAVE_VAAPI], [test "${have_vaapi}" = "yes"])
2639 AM_CONDITIONAL([HAVE_VAAPI_DRM], [test "${have_vaapi_drm}" = "yes"])
2640 AM_CONDITIONAL([HAVE_VAAPI_X11], [test "${have_vaapi_x11}" = "yes"])
2641 AM_CONDITIONAL([HAVE_VAAPI_WL], [test "${have_vaapi_wl}" = "yes"])
2643 have_avcodec_vaapi="no"
2644 AS_IF([test "${have_vaapi}" = "yes" -a "${have_avcodec}" = "yes"], [
2645   VLC_SAVE_FLAGS
2646   CPPFLAGS="${CPPFLAGS} ${AVCODEC_CFLAGS}"
2647   CFLAGS="${CFLAGS} ${AVCODEC_CFLAGS}"
2648   AC_CHECK_HEADERS([libavcodec/vaapi.h], [
2649     AC_MSG_NOTICE([VA API acceleration activated])
2650     have_avcodec_vaapi="yes"
2651   ],[
2652     AS_IF([test -n "${enable_libva}"], [
2653       AC_MSG_ERROR([libva is present but libavcodec/vaapi.h is missing])
2654     ], [
2655       AC_MSG_WARN([libva is present but libavcodec/vaapi.h is missing ])
2656     ])
2657   ])
2658   VLC_RESTORE_FLAGS
2660 AM_CONDITIONAL([HAVE_AVCODEC_VAAPI], [test "${have_avcodec_vaapi}" = "yes"])
2663 dnl dxva2 needs avcodec
2665 AC_ARG_ENABLE([dxva2],
2666   AS_HELP_STRING([--enable-dxva2], [DxVA2 GPU decoding support (default auto)]))
2668 have_avcodec_dxva2="no"
2669 AS_IF([test "${enable_dxva2}" != "no"], [
2670   if test "${SYS}" = "mingw32"; then
2671   AS_IF([test "x${have_avcodec}" = "xyes"], [
2672     AC_CHECK_HEADERS([dxva2api.h],
2673       [
2674         AC_CHECK_HEADERS([libavcodec/dxva2.h], [
2675            AC_MSG_NOTICE([DxVA2 acceleration activated])
2676            have_avcodec_dxva2="yes"
2677         ],[
2678     AS_IF([test "${enable_dxva2}" = "yes"],
2679           [AC_MSG_ERROR([dxva2 is present but libavcodec/dxva2.h is missing])],
2680               [AC_MSG_WARN([dxva2 is present but libavcodec/dxva2.h is missing ])])
2681         ], [#undef _WIN32_WINNT
2682             /* DXVA2 is only available in Vista and above */
2683             #define _WIN32_WINNT 0x600])
2684       ],[
2685     AS_IF([test "${enable_dxva2}" = "yes"],
2686               [AC_MSG_ERROR([Could not find required dxva2api.h])],
2687               [AC_MSG_WARN([dxva2api.h not found])])
2688       ],[#include <d3d9.h>])
2689   ],[
2690     AS_IF([test "x${enable_dxva2}" != "x"], [
2691       AC_MSG_ERROR([--enable-dxva2 and --disable-avcodec options are mutually exclusive.])
2692     ])
2693   ])
2694   fi
2696 AM_CONDITIONAL([HAVE_AVCODEC_DXVA2], [test "${have_avcodec_dxva2}" = "yes"])
2699 dnl d3d11va needs avcodec
2701 AC_ARG_ENABLE([d3d11va],
2702   AS_HELP_STRING([--enable-d3d11va], [D3D11 GPU decoding support (default auto)]))
2704 have_avcodec_d3d11va="no"
2705 AS_IF([test "${enable_d3d11va}" != "no"], [
2706   if test "${SYS}" = "mingw32"; then
2707   AS_IF([test "x${have_avcodec}" = "xyes"], [
2708         AC_CHECK_TYPES([ID3D11VideoDecoder],
2709           [
2710             AC_CHECK_HEADERS([dxva2api.h],
2711               [
2712                 AC_CHECK_HEADERS([libavcodec/d3d11va.h], [
2713                    AC_MSG_NOTICE([D3D11 acceleration activated])
2714                    AC_DEFINE([HAVE_AVCODEC_D3D11VA], [1], [Define if the d3d11va module is built])
2715                    have_avcodec_d3d11va="yes"
2716                 ],[
2717                   AS_IF([test "${enable_d3d11va}" = "yes"],
2718                     [AC_MSG_ERROR([d3d11va is present but libavcodec/d3d11va.h is missing])],
2719                         [AC_MSG_WARN([d3d11va is present but libavcodec/d3d11va.h is missing ])])
2720                   ], [#undef _WIN32_WINNT
2721                       /* D3D11 is only available in Vista and above */
2722                       #define _WIN32_WINNT 0x600])
2723                   ],[
2724                     AS_IF([test "${enable_d3d11va}" = "yes"],
2725                           [AC_MSG_ERROR([Could not find required dxva2api.h])],
2726                           [AC_MSG_WARN([dxva2api.h not found])])
2727                   ],[#include <d3d9.h>])
2728           ],[
2729             AS_IF([test "${enable_d3d11va}" = "yes"],
2730                   [AC_MSG_ERROR([Could not find required ID3D11VideoDecoder in d3d11.h])],
2731                   [AC_MSG_WARN([ID3D11VideoDecoder not found])])
2732           ], [#include <d3d11.h>])
2733   ],[
2734     AS_IF([test "x${enable_d3d11va}" != "x"], [
2735       AC_MSG_ERROR([--enable-d3d11va and --disable-avcodec options are mutually exclusive.])
2736     ])
2737   ])
2738   fi
2740 AM_CONDITIONAL([HAVE_AVCODEC_D3D11VA], [test "${have_avcodec_d3d11va}" = "yes"])
2743 dnl DXGI debug
2745 AC_CHECK_HEADERS([dxgidebug.h dxgi1_6.h])
2748 dnl IApplicationData2
2750 have_iapplication_data2="no"
2751 AC_CHECK_TYPES([IApplicationData2],[],[],[#include <windows.storage.h>])
2754 dnl  avformat demuxer/muxer plugin
2757 AC_ARG_ENABLE([avformat],
2758 AS_HELP_STRING([--enable-avformat], [libavformat containers (default enabled)]),, [
2759   enable_avformat="${have_avcodec}"
2761 have_avformat="no"
2762 AS_IF([test "${enable_avformat}" != "no"], [
2763   PKG_CHECK_MODULES(AVFORMAT,[libavformat >= 53.21.0 libavcodec libavutil], [
2764       have_avformat="yes"
2765       VLC_SAVE_FLAGS
2766       CPPFLAGS="${CPPFLAGS} ${AVFORMAT_CFLAGS}"
2767       CFLAGS="${CFLAGS} ${AVFORMAT_CFLAGS}"
2768       AC_CHECK_HEADERS([libavformat/avformat.h libavformat/avio.h])
2769       AC_CHECK_HEADERS([libavcodec/avcodec.h])
2770       AC_CHECK_HEADERS([libavutil/avutil.h])
2771       AS_IF([test "$enable_merge_ffmpeg" = "no"], [
2772         have_avformat="no"
2773       ])
2774       VLC_RESTORE_FLAGS
2775     ],[
2776       AC_MSG_ERROR([${AVFORMAT_PKG_ERRORS}. Pass --disable-avformat to ignore this error.])
2777   ])
2779 AM_CONDITIONAL([HAVE_AVFORMAT], [test "${enable_avformat}" != "no"])
2782 dnl  swscale image scaling and conversion plugin
2785 AC_ARG_ENABLE([swscale],
2786   AS_HELP_STRING([--enable-swscale],[libswscale image scaling and conversion
2787           (default enabled)]))
2788 if test "${enable_swscale}" != "no"
2789 then
2790   PKG_CHECK_MODULES(SWSCALE,[libswscale],
2791     [
2792       VLC_SAVE_FLAGS
2793       CPPFLAGS="${CPPFLAGS} ${SWSCALE_CFLAGS}"
2794       CFLAGS="${CFLAGS} ${SWSCALE_CFLAGS}"
2795       AC_CHECK_HEADERS([libswscale/swscale.h])
2796       AC_CHECK_HEADERS([libavutil/avutil.h])
2797       VLC_ADD_PLUGIN([swscale])
2798       VLC_ADD_LIBS([swscale],[$SWSCALE_LIBS])
2799       VLC_ADD_CFLAGS([swscale],[$SWSCALE_CFLAGS])
2800       AS_IF([test -n "${ac_cv_ld_bsymbolic}"], [
2801         VLC_ADD_LIBS([swscale],[${ac_cv_ld_bsymbolic}])
2802       ])
2803       VLC_RESTORE_FLAGS
2804     ],[
2805       AC_MSG_ERROR([${SWSCALE_PKG_ERRORS}. Pass --disable-swscale to ignore this error. Proper software scaling and some video chroma conversion will be missing.])
2806   ])
2810 dnl  postproc plugin
2813 AC_ARG_ENABLE([postproc],
2814 AS_HELP_STRING([--enable-postproc], [libpostproc image post-processing (default auto)]))
2815 if test "${enable_postproc}" != "no"
2816 then
2817   PKG_CHECK_MODULES(POSTPROC,[libpostproc libavutil],
2818     [
2819       VLC_SAVE_FLAGS
2820       CPPFLAGS="${CPPFLAGS} ${POSTPROC_CFLAGS}"
2821       CFLAGS="${CFLAGS} ${POSTPROC_CFLAGS}"
2822       AC_CHECK_HEADERS([postproc/postprocess.h])
2823       VLC_ADD_PLUGIN([postproc])
2824       VLC_RESTORE_FLAGS
2825     ],[
2826       AC_MSG_WARN([${POSTPROC_PKG_ERRORS}.])
2827   ])
2831 dnl  faad decoder plugin
2833 AC_ARG_ENABLE([faad],
2834 AS_HELP_STRING([--enable-faad], [faad codec (default auto)]))
2835 have_faad="no"
2836 AS_IF([test "${enable_faad}" != "no"], [
2837   AC_CHECK_HEADERS([neaacdec.h], [
2838     AC_CHECK_LIB([faad], [NeAACDecOpen], [have_faad="yes"],, [$LIBM])
2840     AS_IF([test "${have_faad}" = "yes"], [
2841       VLC_ADD_PLUGIN([faad])
2842       VLC_ADD_LIBS([faad],[-lfaad])
2843     ], [
2844       AS_IF([test "${enable_faad}" = "yes"], [
2845         AC_MSG_ERROR([cannot find FAAD library])
2846       ], [
2847         AC_MSG_WARN([cannot find FAAD library])
2848       ])
2849     ])
2850   ])
2854 dnl  AOM decoder plugin
2856 PKG_ENABLE_MODULES_VLC([AOM], [], [aom], [experimental AV1 codec (default auto)])
2859 dnl  Dav1d decoder plugin
2861 PKG_ENABLE_MODULES_VLC([DAV1D], [], [dav1d >= 0.5.0], [AV1 decoder (default auto)])
2864 dnl libvpx decoder plugin
2866 AC_ARG_ENABLE([vpx],
2867     AS_HELP_STRING([--enable-vpx],[libvpx VP8/VP9 encoder and decoder (default auto)]))
2868 AS_IF([test "${enable_vpx}" != "no"],[
2869     PKG_CHECK_MODULES([VPX], [vpx >= 1.5.0], [
2870         VLC_ADD_PLUGIN([vpx])
2871         VLC_ADD_CPPFLAGS([vpx], [${VPX_CFLAGS}])
2872         VLC_ADD_LIBS([vpx], [${VPX_LIBS}])
2873         AC_CHECK_LIB([vpx],[vpx_codec_vp8_dx], [
2874             VLC_ADD_CPPFLAGS([vpx], [-DENABLE_VP8_DECODER])
2875         ], [], [${VPX_LIBS}])
2876         AC_CHECK_LIB([vpx],[vpx_codec_vp9_dx], [
2877             VLC_ADD_CPPFLAGS([vpx], [-DENABLE_VP9_DECODER])
2878         ], [], [${VPX_LIBS}])
2879         AC_CHECK_LIB([vpx],[vpx_codec_vp8_cx], [
2880             VLC_ADD_CPPFLAGS([vpx], [-DENABLE_VP8_ENCODER])
2881         ], [], [${VPX_LIBS}])
2882         AC_CHECK_LIB([vpx],[vpx_codec_vp9_cx], [
2883             VLC_ADD_CPPFLAGS([vpx], [-DENABLE_VP9_ENCODER])
2884         ], [], [${VPX_LIBS}])
2885     ], [
2886     AS_IF([test "${enable_vpx}" = "yes"],[
2887         AC_MSG_ERROR([libvpx 1.5.0 or higher was not found])
2888     ])])
2892 dnl twolame encoder plugin
2894 PKG_ENABLE_MODULES_VLC([TWOLAME], [], [twolame], [MPEG Audio Layer 2 encoder], [auto], [], [], [ -DLIBTWOLAME_STATIC])
2897 dnl fdk-aac encoder plugin
2899 PKG_ENABLE_MODULES_VLC([FDKAAC], [], [fdk-aac], [FDK-AAC encoder], [disabled])
2903 dnl A52/AC3 decoder plugin
2905 AC_ARG_ENABLE([a52],
2906   AS_HELP_STRING([--enable-a52], [A/52 support with liba52 (default enabled)]))
2907 if test "${enable_a52}" != "no"
2908 then
2909   AC_ARG_WITH([a52],
2910     AS_HELP_STRING([--with-a52=PATH], [a52 headers and libraries]))
2911     if test -z "${with_a52}"
2912     then
2913       LDFLAGS_test=""
2914       CPPFLAGS_test=""
2915     else
2916       LDFLAGS_test="-L${with_a52}/lib"
2917       CPPFLAGS_test="-I${with_a52}/include"
2918     fi
2919     VLC_SAVE_FLAGS
2920     CPPFLAGS="${CPPFLAGS} ${CPPFLAGS_test} ${CPPFLAGS_a52}"
2921     LDFLAGS="${LDFLAGS} ${LDFLAGS_test} ${LIBS_a52}"
2922     AC_CHECK_HEADERS([a52dec/a52.h], [
2923       AC_CHECK_LIB([a52], [a52_free], [
2924         VLC_ADD_PLUGIN([a52])
2925         VLC_ADD_LIBS([a52],[${LDFLAGS_test} -la52 $LIBM])
2926         VLC_ADD_CPPFLAGS([a52],[${CPPFLAGS_test}])
2927       ],[
2928         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.])
2929         ], [$LIBM])
2930     ],[
2931       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.])
2932     ])
2933     VLC_RESTORE_FLAGS
2937 dnl DTS Coherent Acoustics decoder plugin
2939 PKG_ENABLE_MODULES_VLC([DCA], [dca], [libdca >= 0.0.5], [DTS Coherent Acoustics support with libdca], [auto])
2942 dnl  Flac plugin
2944 PKG_ENABLE_MODULES_VLC([FLAC], [], [flac], [libflac decoder/encoder support], [auto])
2947 dnl  Libmpeg2 plugin
2949 PKG_ENABLE_MODULES_VLC([LIBMPEG2], [], [libmpeg2 > 0.3.2], [libmpeg2 decoder support], [auto])
2952 dnl  Vorbis plugin
2954 PKG_ENABLE_MODULES_VLC([VORBIS], [], [ogg vorbis >= 1.1 vorbisenc >= 1.1], [Vorbis decoder and encoder], [auto])
2957 dnl  Tremor plugin
2959 AC_ARG_ENABLE([tremor],
2960   AS_HELP_STRING([--enable-tremor], [Tremor decoder support (default disabled)]))
2961 if test "${enable_tremor}" = "yes"
2962 then
2963   AC_CHECK_HEADERS([tremor/ivorbiscodec.h], [
2964     VLC_ADD_PLUGIN([tremor])
2965    ],[])
2969 dnl  Speex plugins
2971 PKG_ENABLE_MODULES_VLC([SPEEX], [], [ogg speex >= 1.0.5], [Speex support], [auto])
2972 have_speexdsp="no"
2973 AS_IF([test "${enable_speex}" != "no"], [
2974   PKG_CHECK_MODULES([SPEEXDSP], [speexdsp], [
2975     have_speexdsp="yes"
2976   ], [
2977     AC_MSG_WARN([${SPEEXDSP_PKG_ERRORS}.])
2978   ])
2980 AM_CONDITIONAL([HAVE_SPEEXDSP], [test "$have_speexdsp" = "yes"])
2983 dnl  Opus plugin
2985 PKG_ENABLE_MODULES_VLC([OPUS], [], [ogg opus >= 1.0.3], [Opus support], [auto])
2988 dnl  Ambisonic channel mixer and binauralizer plugin
2990 PKG_ENABLE_MODULES_VLC([SPATIALAUDIO], [], [spatialaudio], [Ambisonic channel mixer and binauralizer], [auto])
2993 dnl  theora decoder plugin
2995 PKG_ENABLE_MODULES_VLC([THEORA], [], [ogg theoradec >= 1.0 theoraenc], [experimental theora codec], [auto])
2998 dnl  OggSpots decoder plugin
3000 PKG_ENABLE_MODULES_VLC([OGGSPOTS], [], [ogg], [experimental OggSpots codec], [auto])
3003 dnl  Daala decoder plugin
3005 PKG_ENABLE_MODULES_VLC([DAALA], [], [daaladec daalaenc], [experimental daala codec], [disabled])
3008 dnl  schroedinger decoder plugin (for dirac format video)
3010 PKG_ENABLE_MODULES_VLC([SCHROEDINGER], [], [schroedinger-1.0 >= 1.0.10], [dirac decoder and encoder using schroedinger], [auto])
3013 dnl  PNG decoder module
3015 AC_ARG_ENABLE([png],
3016   AS_HELP_STRING([--enable-png], [PNG support (default enabled)]))
3017 AS_IF([test "${enable_png}" != "no"], [
3018 AC_CHECK_HEADERS([png.h], [
3019   VLC_SAVE_FLAGS
3020   LDFLAGS="${LDFLAGS} -lz $LIBM"
3021   AC_CHECK_LIB([png], [png_set_alpha_mode], [
3022     VLC_ADD_PLUGIN([png])
3023   ], [], [-lz $LIBM])
3024   VLC_RESTORE_FLAGS
3025   ])
3029 dnl  JPEG decoder module
3031 AC_ARG_ENABLE([jpeg],
3032   AS_HELP_STRING([--enable-jpeg], [JPEG support (default enabled)]))
3033 AS_IF([test "${enable_jpeg}" != "no"], [
3034 AC_CHECK_HEADERS([jpeglib.h], [
3035   VLC_ADD_PLUGIN([jpeg])
3036   ])
3040 dnl  BPG decoder module
3042 AC_ARG_ENABLE([bpg],
3043   AS_HELP_STRING([--enable-bpg], [BPG support (default disabled)]))
3044 AS_IF([test "${enable_bpg}" != "no"], [
3045 AC_CHECK_HEADERS([libbpg.h], [
3046   VLC_ADD_PLUGIN([bpg])
3047   ])
3051 dnl H262 encoder plugin (lib262)
3053 AC_ARG_ENABLE([x262],
3054   AS_HELP_STRING([--enable-x262], [H262 encoding support with static libx262 (default disabled)]))
3055 if test "${enable_x262}" != "no"; then
3056     PKG_CHECK_MODULES(X262, x262, [
3057         VLC_ADD_PLUGIN([x262])
3058         VLC_ADD_LDFLAGS([x262],[${X262_LIBS}])
3059         AS_IF([test -n "${ac_cv_ld_bsymbolic}"], [
3060           VLC_ADD_LIBS([x262],[${av_cv_ld_bsymbolic}])
3061         ])
3062         VLC_ADD_CFLAGS([x262],[${X262_CFLAGS}])
3063         if echo ${X262_LIBS} |grep -q 'pthreadGC2'; then
3064           VLC_ADD_CFLAGS([x262], [-DPTW32_STATIC_LIB])
3065         fi
3066     ], [
3067        if test "${enable_x262}" = "yes"; then
3068         AC_MSG_ERROR([x262 module doesn't work without staticly compiled libx262.a])
3069        fi
3070     ])
3073 dnl x265 encoder
3074 PKG_ENABLE_MODULES_VLC([X265],, [x265], [HEVC/H.265 encoder], [auto])
3077 dnl H264 encoder plugin (using libx264)
3079 AC_ARG_ENABLE([x264],
3080   AS_HELP_STRING([--enable-x264], [H264 encoding support with libx264 (default enabled)]))
3081 if test "${enable_x264}" != "no"; then
3082       PKG_CHECK_MODULES(X264,x264 >= 0.148, [
3083         VLC_ADD_PLUGIN([x264])
3084         VLC_ADD_LIBS([x264],[${X264_LIBS}])
3086         AS_IF([test -n "${ac_cv_ld_bsymbolic}"], [
3087           VLC_ADD_LDFLAGS([x264],[${ac_cv_ld_bsymbolic}])
3088         ])
3090         VLC_ADD_CFLAGS([x264],[${X264_CFLAGS}])
3091         if echo ${X264_LIBS} |grep -q 'pthreadGC2'; then
3092           VLC_ADD_CFLAGS([x264], [-DPTW32_STATIC_LIB])
3093         fi
3094       ],[
3095         if test "${enable_x264}" = "yes"; then
3096             AC_MSG_ERROR([${X264_PKG_ERRORS}: you may get it from http://www.videolan.org/x264.html])
3097           fi
3098       ])
3102 dnl H264 encoder plugin (libx264 > 153)
3104 AC_ARG_ENABLE([x26410b],
3105   AS_HELP_STRING([--enable-x26410b], [H264 10-bit encoding support with libx264 (default enabled)]))
3106 if test "${enable_x26410b}" != "no"; then
3107       PKG_CHECK_MODULES(X26410b,x264 >= 0.153, [
3108         VLC_ADD_PLUGIN([x26410b])
3109         VLC_ADD_LIBS([x26410b],[${X264_LIBS}])
3111         AS_IF([test -n "${ac_cv_ld_bsymbolic}"], [
3112           VLC_ADD_LDFLAGS([x26410b],[${ac_cv_ld_bsymbolic}])
3113         ])
3115         VLC_ADD_CFLAGS([x26410b],[${X264_CFLAGS}])
3116         if echo ${X264_LIBS} |grep -q 'pthreadGC2'; then
3117           VLC_ADD_CFLAGS([x26410b], [-DPTW32_STATIC_LIB])
3118         fi
3119       ],[
3120         if test "${enable_x26410b}" = "yes"; then
3121             AC_MSG_ERROR([${X264_PKG_ERRORS}: you may get it from http://www.videolan.org/x264.html])
3122           fi
3123       ])
3128 dnl Intel QuickSync (aka MediaSDK) H264/H262 encoder
3130 PKG_ENABLE_MODULES_VLC([MFX], [qsv], [libmfx], [Intel QuickSync MPEG4-Part10/MPEG2 (aka H.264/H.262) encoder], [auto])
3133 dnl libfluidsynth (MIDI synthetizer) plugin
3135 PKG_ENABLE_MODULES_VLC([FLUIDSYNTH], [], [fluidsynth >= 1.1.2], [MIDI synthetiser with libfluidsynth], [auto])
3136 PKG_ENABLE_MODULES_VLC([FLUIDLITE], [fluidsynth], [fluidlite], [MIDI synthetiser with libfluidsynth], [auto])
3137 AC_CHECK_HEADERS([fluidlite.h], [AC_SUBST([FLUIDSYNTH_LIBS], ${FLUIDLITE_LIBS})])
3140 dnl Teletext Modules
3141 dnl vbi decoder plugin (using libzbvi)
3142 dnl telx module
3143 dnl uncompatible
3145 AC_ARG_ENABLE([zvbi],
3146   AS_HELP_STRING([--enable-zvbi],[VBI (inc. Teletext) decoding support with
3147                   libzvbi (default enabled)]))
3148 AC_ARG_ENABLE([telx],
3149   AS_HELP_STRING([--enable-telx],[Teletext decoding module (conflicting with
3150                   zvbi) (default enabled if zvbi is absent)]))
3152 AS_IF( [test "${enable_zvbi}" != "no"],[
3153     PKG_CHECK_MODULES(ZVBI, [zvbi-0.2 >= 0.2.28],
3154         [
3155           VLC_ADD_PLUGIN([zvbi])
3156           AC_DEFINE(ZVBI_COMPILED, 1, [Define if the zvbi module is built])
3157           AS_IF( [test "${enable_telx}" = "yes"],[
3158                   AC_MSG_WARN([The zvbi and telx modules are incompatible. Using zvbi.])
3159                   ])
3160         ],[
3161           AC_MSG_WARN([${ZVBI_PKG_ERRORS}. Enabling the telx module instead.])
3162         ])
3163     ])
3164 AS_IF( [test "${enable_telx}" != "no" ],[
3165   VLC_ADD_PLUGIN([telx])
3166   ])
3169 dnl ARIB subtitles rendering module
3171 AC_ARG_ENABLE([aribsub],
3172   AS_HELP_STRING([--enable-aribsub],[ARIB Subtitles support (default enabled)]))
3173 AS_IF( [test "${enable_aribsub}" != "no" ],[
3174   PKG_CHECK_MODULES(ARIBB24, [aribb24 >= 1.0.1], [
3175       have_aribb24="yes"
3176       VLC_ADD_PLUGIN([aribsub])
3177       VLC_ADD_LIBS([aribsub],[-laribb24])
3178       AC_DEFINE(HAVE_ARIBB24, 1, [Define if libaribb24 is available.])
3179     ],[
3180       AC_MSG_WARN(Library [aribb24] needed for [aribsub] was not found)
3181       have_aribb24="no"
3182   ])
3184 AM_CONDITIONAL([HAVE_ARIBB24], [test x"${have_aribb24}" = x"yes"])
3187 dnl ARIB B25
3189 PKG_ENABLE_MODULES_VLC([ARIBB25], [aribcam], [aribb25 >= 0.2.6], [ARIB STD-B25], [auto])
3192 dnl  kate decoder plugin
3194 PKG_ENABLE_MODULES_VLC([KATE], [], [kate >= 0.3.0], [kate codec], [auto])
3197 dnl  tiger rendering for kate decoder plugin
3199 AC_ARG_ENABLE([tiger],
3200 AS_HELP_STRING([--enable-tiger], [Tiger rendering library for Kate streams (default auto)]))
3201 AS_IF([test "${enable_tiger}" != "no"], [
3202   PKG_CHECK_MODULES(TIGER,[tiger >= 0.3.1], [
3203       AC_DEFINE(HAVE_TIGER, 1, [Define if libtiger is available.])],[
3204         AS_IF([test -n "${enable_tiger}"], [
3205           AC_MSG_ERROR([${TIGER_PKG_ERRORS}.])
3206         ])
3207   ])
3211 dnl  check if we can build the css selector engine
3213 AC_ARG_ENABLE([css],
3214 AS_HELP_STRING([--enable-css], [CSS selector engine (default auto)]))
3215 AS_IF([test "${enable_css}" != "no"], [
3216   with_css="yes"
3217   AC_DEFINE(HAVE_CSS, 1, [Define if CSS engine is built])
3219 AM_CONDITIONAL([ENABLE_CSS], [test "${with_css}" = "yes"])
3223 dnl  Video plugins
3226 EXTEND_HELP_STRING([Video plugins:])
3229 dnl  libplacebo support
3231 AC_ARG_ENABLE([libplacebo],
3232   AS_HELP_STRING([--disable-libplacebo],
3233       [disable libplacebo support (default auto)]))
3235 AS_IF([test "$enable_libplacebo" != "no"], [
3236   PKG_CHECK_MODULES([LIBPLACEBO], [libplacebo >= 0.5], [
3237     AC_DEFINE([HAVE_LIBPLACEBO], [1], [Define to 1 if libplacebo is enabled.])
3238     PKG_CHECK_MODULES([LIBPLACEBO], [libplacebo >= 1.7],
3239       [have_libplacebo_vk="yes"], [have_libplacebo_vk="no"])
3240   ], [
3241     AS_IF([test -n "${enable_libplacebo}"], [
3242       AC_MSG_ERROR([${LIBPLACEBO_PKG_ERRORS}.])
3243     ])
3244     enable_libplacebo="no"
3245   ])
3247 AM_CONDITIONAL([HAVE_LIBPLACEBO], [test "$enable_libplacebo" != "no"])
3250 dnl  OpenGL
3252 PKG_CHECK_MODULES([EGL], [egl], [
3253   have_egl="yes"
3254 ], [
3255   have_egl="no"
3257 AM_CONDITIONAL([HAVE_EGL], [test "${have_egl}" = "yes"])
3259 have_gl="no"
3260 PKG_CHECK_MODULES([GL], [gl], [
3261   have_gl="yes"
3262 ], [
3263   AC_MSG_CHECKING([for OpenGL])
3264   AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
3265 #ifdef _WIN32
3266 # include <GL/glew.h>
3267 #endif
3268 #include <GL/gl.h>
3269 ]], [
3270     [int t0 = GL_TEXTURE0;]])
3271   ], [
3272     GL_CFLAGS=""
3273     have_gl="yes"
3274     AS_IF([test "${SYS}" != "mingw32"], [
3275       GL_LIBS="-lGL"
3276     ], [
3277       GL_LIBS="-lopengl32"
3278     ])
3279   ])
3280   AC_MSG_RESULT([${have_gl}])
3282 AM_CONDITIONAL([HAVE_GL], [test "${have_gl}" = "yes"])
3283 AS_IF([test "${have_gl}" = "yes"], [
3284   AC_DEFINE([HAVE_GL], 1, [Defined if having OpenGL])
3287 dnl OpenGL ES 2: depends on EGL 1.1
3288 PKG_ENABLE_MODULES_VLC([GLES2], [], [glesv2], [OpenGL ES v2 support], [disabled])
3291 dnl Vulkan
3293 AC_ARG_ENABLE(vulkan,
3294   [AS_HELP_STRING([--disable-vulkan],
3295       [disable Vulkan support (default auto)])])
3297 AS_IF([test "$enable_vulkan" != "no"], [
3298   AS_IF([test "$have_libplacebo_vk" = "yes"], [
3299     PKG_CHECK_MODULES([VULKAN], [vulkan >= 1.0.26], [
3300       AC_DEFINE([HAVE_VULKAN], [1], [Define to 1 if vulkan is enabled.])
3301     ], [
3302       AS_IF([test -n "${enable_vulkan}"], [
3303         AC_MSG_ERROR([${VULKAN_PKG_ERRORS}.])
3304       ])
3305       enable_vulkan="no"
3306     ])
3307   ], [
3308     AS_IF([test -n "${enable_vulkan}"], [
3309       AC_MSG_ERROR([Vulkan support requires libplacebo 1.7 as well. Do not use --disable-libplacebo.])
3310     ])
3311     enable_vulkan="no"
3312   ])
3314 AM_CONDITIONAL(HAVE_VULKAN, [test "$enable_vulkan" != "no"])
3317 dnl  Xlib
3320 AC_PATH_XTRA()
3321 AC_CHECK_HEADERS([X11/Xlib.h])
3324 dnl  X C Bindings modules
3326 AC_ARG_ENABLE([xcb],
3327   AS_HELP_STRING([--enable-xcb], [X11 support with XCB (default enabled)]),, [
3328   AS_IF([test "${SYS}" != "mingw32" -a "${SYS}" != "darwin"], [
3329     enable_xcb="yes"
3330   ], [
3331     enable_xcb="no"
3332   ])
3335 have_xcb="no"
3336 have_xkbcommon_x11="no"
3337 have_xcb_keysyms="no"
3338 AS_IF([test "${enable_xcb}" != "no"], [
3339   xcb_err=""
3341   dnl libxcb
3342   PKG_CHECK_MODULES([XCB], [xcb >= 1.6],, [
3343     xcb_err="$xcb_err ${XCB_PKG_ERRORS}."])
3344   PKG_CHECK_MODULES([XCB_COMPOSITE], [xcb-composite],, [
3345     xcb_err="$xcb_err ${XCB_COMPOSITE_PKG_ERRORS}."])
3346   PKG_CHECK_MODULES([XCB_RANDR], [xcb-randr >= 1.3],, [
3347     xcb_err="$xcb_err ${XCB_RANDR_PKG_ERRORS}."])
3348   PKG_CHECK_MODULES([XCB_RENDER], [xcb-render],, [
3349     xcb_err="$xcb_err ${XCB_RENDER_PKG_ERRORS}."])
3350   PKG_CHECK_MODULES([XCB_SHM], [xcb-shm >= 1.9.2],, [
3351     xcb_err="$xcb_err ${XCB_SHM_PKG_ERRORS}."])
3352   PKG_CHECK_MODULES([XCB_XKB], [xcb-xkb],, [
3353     xcb_err="$xcb_err ${XCB_XKB_PKG_ERRORS}."])
3355   dnl xproto
3356   PKG_CHECK_MODULES(XPROTO, [xproto],, [
3357     xcb_err="$xcb_err ${XPROTO_PKG_ERRORS}."])
3359   AS_IF([test -n "$xcb_err"], [
3360     AC_MSG_ERROR([$xcb_err Pass --disable-xcb to skip X11 support.])
3361   ])
3363   dnl xkbcommon
3364   PKG_CHECK_MODULES([XKBCOMMON_X11], [xkbcommon-x11], [
3365     have_xkbcommon_x11="yes"
3366   ], [
3367     AC_MSG_WARN([${XKBCOMMON_X11_PKG_ERRORS}. Hotkeys are disabled.])
3368   ])
3370   dnl xcb-utils
3371   PKG_CHECK_MODULES([XCB_KEYSYMS], [xcb-keysyms >= 0.3.4], [
3372     have_xcb_keysyms="yes"
3373   ], [
3374     AC_MSG_WARN([${XCB_KEYSYMS_PKG_ERRORS}. Global hotkeys are disabled.])
3375   ])
3377   have_xcb="yes"
3379 AM_CONDITIONAL([HAVE_XCB], [test "${have_xcb}" = "yes"])
3380 AM_CONDITIONAL([HAVE_XKBCOMMON_X11], [test "${have_xkbcommon_x11}" = "yes"])
3381 AM_CONDITIONAL([HAVE_XCB_KEYSYMS], [test "${have_xcb_keysyms}" = "yes"])
3385 dnl VDPAU needs X11
3387 AC_ARG_ENABLE([vdpau],
3388   [AS_HELP_STRING([--enable-vdpau], [VDPAU hardware support (default auto)])])
3389 have_vdpau="no"
3390 AS_IF([test "${enable_vdpau}" != "no"], [
3391   PKG_CHECK_MODULES([VDPAU], [vdpau >= 0.6], [
3392     have_vdpau="yes"
3393     AS_IF([test "${no_x}" = "yes"], [
3394       AC_MSG_ERROR([VDPAU requires Xlib (X11).])
3395     ])
3396   ], [
3397     AS_IF([test -n "${enable_vdpau}"], [
3398       AC_MSG_ERROR([${VDPAU_PKG_ERRORS}.])
3399     ])
3400   ])
3402 AM_CONDITIONAL([HAVE_VDPAU], [test "${have_vdpau}" = "yes"])
3404 have_avcodec_vdpau="no"
3405 AS_IF([test "${have_vdpau}" = "yes" -a "${have_avcodec}" = "yes"], [
3406   case "${avfork}" in
3407     libav) av_vdpau_ver="56.10.0" ;;
3408     ffmpeg) av_vdpau_ver="56.19.100" ;;
3409   esac
3410   PKG_CHECK_EXISTS([libavcodec >= ${av_vdpau_ver}], [
3411     have_avcodec_vdpau="yes"
3412     AC_MSG_NOTICE([VDPAU decoding acceleration activated])
3413   ], [
3414     AS_IF([test -n "${enable_vdpau}"], [
3415       AC_MSG_ERROR([libavcodec >= 56.10.0 is required for VDPAU decoding.])
3416     ], [
3417       AC_MSG_WARN([libavcodec >= 56.10.0 are required for VDPAU decoding.])
3418     ])
3419   ])
3421 AM_CONDITIONAL([HAVE_AVCODEC_VDPAU], [test "${have_avcodec_vdpau}" = "yes"])
3425 dnl  Wayland
3427 AC_ARG_ENABLE([wayland],
3428   AS_HELP_STRING([--enable-wayland], [Wayland support (default auto)]))
3430 have_wayland="no"
3431 AS_IF([test "${enable_wayland}" != "no"], [
3432   wl_err=""
3434   dnl wayland
3435   PKG_CHECK_MODULES([WAYLAND_CLIENT], [wayland-client >= 1.5.91],, [
3436     wl_err="$wl_err ${WAYLAND_CLIENT_PKG_ERRORS}."
3437   ])
3438   PKG_CHECK_MODULES([WAYLAND_CURSOR], [wayland-cursor],, [
3439     wl_err="$wl_err ${WAYLAND_CURSOR_PKG_ERRORS}."
3440   ])
3441   PKG_CHECK_MODULES([WAYLAND_EGL], [wayland-egl],, [
3442     wl_err="$wl_err ${WAYLAND_EGL_PKG_ERRORS}."
3443   ])
3444   PKG_CHECK_MODULES([WAYLAND_SCANNER], [wayland-scanner >= 1.15], [
3445     WAYLAND_SCANNER="$(${PKG_CONFIG} wayland-scanner --variable wayland_scanner)"
3446   ], [
3447     wl_err="$wl_err ${WAYLAND_SCANNER_PKG_ERRORS}."
3448   ])
3450   dnl wayland-protocols
3451   PKG_CHECK_MODULES([WAYLAND_PROTOCOLS], [wayland-protocols >= 1.15], [
3452     WAYLAND_PROTOCOLS="$(${PKG_CONFIG} wayland-protocols --variable pkgdatadir)"
3453   ], [
3454     wl_err="$wl_err ${WAYLAND_PROTOCOLS_PKG_ERRORS}."
3455   ])
3457   AS_IF([test -n "$wl_err"], [
3458     AS_IF([test -n "$enable_wayland"], [
3459       AC_MSG_ERROR([$wl_err])
3460     ], [
3461       AC_MSG_WARN([$wl_err])
3462     ])
3463   ], [
3464     have_wayland="yes"
3465   ])
3467   dnl xkbcommon
3468   PKG_CHECK_MODULES([XKBCOMMON], [xkbcommon], [
3469     have_xkbcommon="yes"
3470   ], [
3471     AC_MSG_WARN([${XKBCOMMON_PKG_ERRORS}. Hotkeys are disabled.])
3472   ])
3474 AM_CONDITIONAL([HAVE_WAYLAND], [test "${have_wayland}" = "yes"])
3475 AC_SUBST([WAYLAND_PROTOCOLS])
3476 AC_SUBST([WAYLAND_SCANNER])
3477 AM_CONDITIONAL([HAVE_XKBCOMMON], [test "${have_xkbcommon}" = "yes"])
3481 dnl  SDL image decoder module
3483 AC_ARG_ENABLE([sdl-image],
3484   AS_HELP_STRING([--enable-sdl-image], [SDL image support (default enabled)]))
3485 AS_IF([test "${enable_sdl_image}" != "no"],[
3486   PKG_CHECK_MODULES(SDL_IMAGE, [SDL_image >= 1.2.10], [
3487     VLC_ADD_PLUGIN([sdl_image])
3488   ], [
3489     AC_MSG_WARN([${SDL_IMAGE_PKG_ERRORS}. You should install it alongside your SDL package.])
3490   ])
3494 dnl  freetype module
3496 AC_ARG_ENABLE([freetype],
3497   AS_HELP_STRING([--enable-freetype],   [freetype support   (default auto)]))
3498 AC_ARG_ENABLE([fribidi],
3499   AS_HELP_STRING([--enable-fribidi],    [fribidi support    (default auto)]))
3500 AC_ARG_ENABLE([harfbuzz],
3501   AS_HELP_STRING([--enable-harfbuzz],   [harfbuzz support   (default auto)]))
3502 AC_ARG_ENABLE([fontconfig],
3503   AS_HELP_STRING([--enable-fontconfig], [fontconfig support (default auto)]))
3505 AC_ARG_WITH([default-font],
3506     AS_HELP_STRING([--with-default-font=PATH],
3507         [Path to the default font]),
3508         [AC_DEFINE_UNQUOTED([DEFAULT_FONT_FILE],
3509             "$withval", [Default font])])
3510 AC_ARG_WITH([default-monospace-font],
3511     AS_HELP_STRING([--with-default-monospace-font=PATH],
3512         [Path to the default font]),
3513         [AC_DEFINE_UNQUOTED([DEFAULT_MONOSPACE_FONT_FILE],
3514             "$withval", [Default monospace font])])
3516 AC_ARG_WITH([default-font-family],
3517     AS_HELP_STRING([--with-default-font-family=NAME],
3518         [Name of the default font family]),
3519         [AC_DEFINE_UNQUOTED([DEFAULT_FAMILY],
3520             "$withval", [Default font family])])
3521 AC_ARG_WITH([default-monospace-font-family],
3522     AS_HELP_STRING([--with-default-monospace-font-family=NAME],
3523         [Name of the default font family]),
3524         [AC_DEFINE_UNQUOTED([DEFAULT_MONOSPACE_FAMILY],
3525             "$withval", [Default monospace font family])])
3527 have_freetype="no"
3528 have_fontconfig="no"
3529 have_fribidi="no"
3530 have_harfbuzz="no"
3532 if test "${enable_freetype}" != "no"; then
3533    PKG_CHECK_MODULES(FREETYPE, freetype2, [
3534       have_freetype="yes"
3535       VLC_ADD_CPPFLAGS([skins2],[${FREETYPE_CFLAGS}])
3536       VLC_ADD_LIBS([skins2],[${FREETYPE_LIBS}])
3538     dnl fontconfig support
3539     AS_IF([test "${enable_fontconfig}" != "no" -a "${SYS}" != "mingw32" -a "${SYS}" != "darwin"], [
3540       PKG_CHECK_MODULES(FONTCONFIG, [fontconfig >= 2.11], [
3541         have_fontconfig="yes"
3542       ], [
3543         AC_MSG_WARN([${FONTCONFIG_PKG_ERRORS}. Styles will be disabled in FreeType.])
3544       ])
3545     ])
3547       dnl fribidi support
3548       if test "${enable_fribidi}" != "no"; then
3549         PKG_CHECK_MODULES(FRIBIDI, fribidi, [
3550           have_fribidi="yes"
3551           VLC_ADD_CPPFLAGS([skins2], [${FRIBIDI_CFLAGS} -DHAVE_FRIBIDI])
3552           VLC_ADD_LIBS([skins2], [${FRIBIDI_LIBS}])
3553         ],[AC_MSG_WARN([${FRIBIDI_PKG_ERRORS}. Bidirectional text and complex scripts (Arabic, Farsi, Thai...) will be disabled in FreeType.])])
3554       fi
3556       dnl harfbuzz support
3557       if test "${have_fribidi}" != "no"; then
3558         if test "${enable_harfbuzz}" != "no"; then
3559           PKG_CHECK_MODULES(HARFBUZZ, harfbuzz, [
3560             have_harfbuzz="yes"
3561             VLC_ADD_CPPFLAGS([skins2], [${HARFBUZZ_CFLAGS} -DHAVE_HARFBUZZ])
3562             VLC_ADD_LIBS([skins2], [${HARFBUZZ_LIBS}])
3563           ],[AC_MSG_WARN([${HARFBUZZ_PKG_ERRORS}. Support for complex scripts (Arabic, Farsi, Thai...) will be disabled in FreeType.])])
3564         fi
3565       fi
3566   ],[
3567   AS_IF([test -n "${enable_freetype}"],[
3568     AC_MSG_ERROR([${FREETYPE_PKG_ERRORS}. Install FreeType2 development or configure with --disable-freetype.])
3569     ])
3570   ])
3573 AM_CONDITIONAL([HAVE_FREETYPE], [test "${have_freetype}" = "yes"])
3574 AM_CONDITIONAL([HAVE_FONTCONFIG], [test "${have_fontconfig}" = "yes"])
3575 AM_CONDITIONAL([HAVE_FRIBIDI], [test "${have_fribidi}" = "yes"])
3576 AM_CONDITIONAL([HAVE_HARFBUZZ], [test "${have_harfbuzz}" = "yes"])
3579 dnl libass subtitle rendering module
3581 AC_ARG_ENABLE([libass],
3582   AS_HELP_STRING([--enable-libass], [Subtitle support using libass (default enabled)]))
3583 AS_IF( [test "${enable_libass}" != "no"], [
3584   PKG_CHECK_MODULES(LIBASS, [libass >= 0.9.8],
3585       [
3586         VLC_ADD_PLUGIN([libass])
3588         if test "${have_fontconfig}" != "no"; then
3589             VLC_ADD_CPPFLAGS([libass],[-DHAVE_FONTCONFIG])
3590             VLC_ADD_LIBS([libass],[${FONTCONFIG_LIBS}])
3591         fi
3592       ],[
3593         AC_MSG_WARN([${LIBASS_PKG_ERRORS}.])
3594       ])
3595   ])
3598 dnl SAPI (text to Speech renderer for Windows)
3600 AC_LANG_PUSH([C++])
3601 AC_CHECK_TYPES([ISpObjectToken],[
3602               have_sapi="yes"
3603             ],[AC_MSG_WARN([sapi.h not found. Text to Speech renderer for Windows disabled])],
3604               [#include <windows.h>
3605                #include <sapi.h>
3606                #include <sphelper.h>])
3607 AM_CONDITIONAL([HAVE_SAPI], [test "${have_sapi}" = "yes"])
3608 AC_LANG_POP([C++])
3611 dnl  SVG module (text rendering and image decoding)
3613 PKG_ENABLE_MODULES_VLC([SVG], [], [librsvg-2.0 >= 2.9.0], [SVG rendering library],[auto])
3614 PKG_ENABLE_MODULES_VLC([SVGDEC], [], [librsvg-2.0 >= 2.9.0 cairo >= 1.13.1], [SVG image decoder library],[auto])
3617 dnl  Windows DirectX module
3620 AC_ARG_ENABLE([directx],
3621   AS_HELP_STRING([--enable-directx],
3622     [Microsoft DirectX support (default enabled on Windows)]),, [
3623   AS_IF([test "${SYS}" = "mingw32"], [
3624     enable_directx="yes"
3625   ], [
3626     enable_directx="no"
3627   ])
3629 AS_IF([test "${enable_directx}" != "no"], [
3630   dnl OpenGL
3631   AC_CHECK_HEADERS([GL/glew.h], [
3632     AC_CHECK_HEADERS([GL/wglew.h], [
3633         VLC_ADD_PLUGIN([glwin32 wgl])
3634       ],, [
3635         #include <windows.h>
3636         #include <GL/glew.h>
3637       ])],, [
3638       #include <windows.h>
3639    ])
3641   dnl Direct3D11
3642   AC_CHECK_HEADERS([d3d11.h], [
3643     VLC_ADD_PLUGIN([direct3d11 direct3d11_filters])
3644   ])
3646   dnl Direct3D9
3647   AC_CHECK_HEADERS([d3d9.h], [
3648     VLC_ADD_PLUGIN([direct3d9])
3649     AC_CHECK_HEADERS([d3dx9effect.h])
3651     AC_PREPROC_IFELSE([AC_LANG_PROGRAM(
3652         [[#define COBJMACROS
3653           #include <d3d9.h>
3654           #include <dxva2api.h>
3655           #ifndef IDirectXVideoProcessorService_GetVideoProcessorDeviceGuids
3656           # error dxva2 too old
3657           #endif
3658         ]],[[;]])
3659       ],[
3660         VLC_ADD_PLUGIN([direct3d9_filters])
3661       ],
3662       [AC_MSG_WARN([Could not find required IDirectXVideoDecoder in dxva2api.h])])
3664   ])
3668 dnl  Linux framebuffer module
3670 AC_CHECK_HEADER([linux/fb.h], [
3671   VLC_ADD_PLUGIN([fb])
3675 dnl  Linux kernel mode setting module
3677 PKG_ENABLE_MODULES_VLC([KMS], [], [libdrm >= 2.4.83], [Linux kernel mode setting output], [auto])
3680 dnl  libcaca plugin
3682 PKG_ENABLE_MODULES_VLC([CACA], [], [caca >= 0.99.beta14], [libcaca output],[auto])
3685 dnl  OS/2 KVA plugin
3687 AC_ARG_ENABLE([kva],
3688   AS_HELP_STRING([--enable-kva],
3689     [support the K Video Accelerator KVA (default enabled on OS/2)]),, [
3690   AS_IF([test "$SYS" = "os2"], [
3691     enable_kva="yes"
3692   ])
3694 have_kva="no"
3695 KVA_LIBS=""
3696 AS_IF([test "$enable_kva" != "no"], [
3697   AC_CHECK_HEADERS([kva.h], [
3698     have_kva="yes"
3699     AC_CHECK_LIB([kva], [main], [
3700       KVA_LIBS="-lkva"
3701     ])
3702   ])
3704 AC_SUBST([KVA_LIBS])
3705 AM_CONDITIONAL([HAVE_KVA], [test "${have_kva}" = "yes"])
3708 dnl MMAL plugin
3710 AC_ARG_ENABLE([mmal],
3711   AS_HELP_STRING([--enable-mmal],
3712     [Multi-Media Abstraction Layer (MMAL) hardware plugin (default enable)]))
3713 if test "${enable_mmal}" != "no"; then
3714   VLC_SAVE_FLAGS
3715   LDFLAGS="${LDFLAGS} -L/opt/vc/lib -lvchostif"
3716   CPPFLAGS="${CPPFLAGS} -isystem /opt/vc/include -isystem /opt/vc/include/interface/vcos/pthreads -isystem /opt/vc/include/interface/vmcs_host/linux"
3717   AC_CHECK_HEADERS([interface/mmal/mmal.h],
3718     [ AC_CHECK_LIB([bcm_host], [vc_tv_unregister_callback_full], [
3719         have_mmal="yes"
3720         VLC_ADD_PLUGIN([mmal])
3721         VLC_ADD_LDFLAGS([mmal],[ -L/opt/vc/lib ])
3722         VLC_ADD_CFLAGS([mmal],[ -isystem /opt/vc/include -isystem /opt/vc/include/interface/vcos/pthreads -isystem /opt/vc/include/interface/vmcs_host/linux ])
3723         VLC_ADD_LIBS([mmal],[ -lbcm_host -lmmal -lmmal_core -lmmal_components -lmmal_util -lvchostif -lvcsm -lvchiq_arm ]) ], [
3724           AS_IF([test "${enable_mmal}" = "yes"],
3725             [ AC_MSG_ERROR([Cannot find bcm library...]) ],
3726             [ AC_MSG_WARN([Cannot find bcm library...]) ])
3727           ],
3728         [])
3729     ] , [ AS_IF([test "${enable_mmal}" = "yes"],
3730       [ AC_MSG_ERROR([Cannot find development headers for mmal...]) ],
3731       [ AC_MSG_WARN([Cannot find development headers for mmal...]) ]) ])
3732   VLC_RESTORE_FLAGS
3734 AM_CONDITIONAL([HAVE_MMAL], [test "${have_mmal}" = "yes"])
3737 dnl  Audio plugins
3740 EXTEND_HELP_STRING([Audio plugins:])
3743 dnl  Pulseaudio module
3745 AC_ARG_ENABLE([pulse],
3746   AS_HELP_STRING([--enable-pulse],
3747     [use the PulseAudio client library (default auto)]))
3748 have_pulse="no"
3749 AS_IF([test "${enable_pulse}" != "no"], [
3750   PKG_CHECK_MODULES([PULSE], [libpulse >= 1.0], [
3751     have_pulse="yes"
3752   ], [
3753     AS_IF([test "x${enable_pulse}" != "x"], [
3754       AC_MSG_ERROR([$PULSE_PKG_ERRORS. PulseAudio 1.0 or later required.])
3755     ])
3756   ])
3758 AM_CONDITIONAL([HAVE_PULSE], [test "${have_pulse}" = "yes"])
3761 dnl  ALSA module
3763 AC_ARG_ENABLE([alsa],
3764   AS_HELP_STRING([--enable-alsa],
3765     [support the Advanced Linux Sound Architecture (default auto)]),, [
3766   AS_IF([test "$SYS" = "linux" -a "${have_pulse}" = "no"], [
3767     enable_alsa="yes"
3768   ])
3770 have_alsa="no"
3771 AS_IF([test "${enable_alsa}" != "no"], [
3772   PKG_CHECK_MODULES([ALSA], [alsa >= 1.0.24], [
3773     have_alsa="yes"
3774   ], [
3775     AS_IF([test "x${enable_alsa}" != "x"], [
3776       AC_MSG_ERROR([$ALSA_PKG_ERRORS. alsa-lib 1.0.24 or later required. Pass --disable-alsa to ignore this error.])
3777     ])
3778   ])
3780 AM_CONDITIONAL([HAVE_ALSA], [test "${have_alsa}" = "yes"])
3783 dnl  Open Sound System module
3785 AC_ARG_ENABLE([oss],
3786   AS_HELP_STRING([--enable-oss],
3787     [support the Open Sound System OSS (default enabled on FreeBSD/NetBSD/DragonFlyBSD)]),, [
3788   AS_IF([test "$SYS" = "mingw32" -o "$SYS" = "linux" -o "$SYS" = "openbsd"], [
3789     enable_oss="no"
3790   ])
3792 have_oss="no"
3793 OSS_LIBS=""
3794 AS_IF([test "$enable_oss" != "no"], [
3795   AC_CHECK_HEADERS([soundcard.h sys/soundcard.h], [
3796     have_oss="yes"
3797     AC_CHECK_LIB([ossaudio], [main], [
3798       OSS_LIBS="-lossaudio"
3799     ])
3800   ])
3802 AC_SUBST([OSS_LIBS])
3803 AM_CONDITIONAL([HAVE_OSS], [test "${have_oss}" = "yes"])
3806 dnl  OpenBSD sndio module
3808 AC_ARG_ENABLE([sndio],
3809   AS_HELP_STRING([--disable-sndio],
3810     [support the OpenBSD sndio (default auto)]),, [
3811   AS_IF([test "$SYS" = "openbsd"], [
3812     enable_sndio="yes"
3813   ])
3815 have_sndio="no"
3816 AS_IF([test "$enable_sndio" != "no"], [
3817   AC_CHECK_HEADER([sndio.h], [
3818     have_sndio="yes"
3819   ])
3821 AM_CONDITIONAL([HAVE_SNDIO], [test "${have_sndio}" = "yes"])
3824 dnl  Windows Audio Session plugin
3826 AC_ARG_ENABLE([wasapi],
3827   AS_HELP_STRING([--enable-wasapi],
3828     [use the Windows Audio Session API (default auto)])
3830 have_wasapi="no"
3831 AS_IF([test "$enable_wasapi" != "no"], [
3832   AC_CHECK_HEADER([audioclient.h], [
3833     have_wasapi="yes"
3834   ], [
3835     AS_IF([test "x${enable_wasapi}" != "x"], [
3836       AC_MSG_ERROR([Windows Audio Session API not found.])
3837     ])
3838   ])
3840 AM_CONDITIONAL([HAVE_WASAPI], [test "${have_wasapi}" = "yes"])
3843 dnl  JACK modules
3845 AC_ARG_ENABLE([jack],
3846   AS_HELP_STRING([--disable-jack],
3847     [do not use jack (default auto)]))
3848 have_jack="no"
3849 AS_IF([test "${enable_jack}" != "no"], [
3850     PKG_CHECK_MODULES(JACK, jack >= 1.9.7,
3851       [ have_jack=yes ],
3852       [
3853       AC_MSG_WARN([${JACK_PKG_ERRORS}, trying jack1 instead])
3855       PKG_CHECK_MODULES(JACK, jack >= 0.120.1 jack < 1.0,
3856       [ have_jack=yes ],
3857       [
3858       AS_IF([test -n "${enable_jack}"],
3859          [AC_MSG_ERROR([${JACK_PKG_ERRORS}.])],
3860          [AC_MSG_WARN([${JACK_PKG_ERRORS}.])])
3861       ])
3862     ])
3864 AM_CONDITIONAL([HAVE_JACK], [test "${have_jack}" != "no"])
3867 dnl  OpenSLES Android
3869 AC_ARG_ENABLE([opensles],
3870   AS_HELP_STRING([--enable-opensles], [Android OpenSL ES audio module (default disabled)]))
3871 if test "${HAVE_ANDROID}" = "1"; then
3872   if test "${enable_opensles}" = "yes"; then
3873       AC_CHECK_HEADERS([SLES/OpenSLES.h],
3874         [ VLC_ADD_PLUGIN([opensles_android]) ],
3875         [ AC_MSG_ERROR([cannot find OpenSLES headers])] )
3876   fi
3880 dnl libsamplerate plugin
3882 PKG_ENABLE_MODULES_VLC([SAMPLERATE], [], [samplerate], [Resampler with libsamplerate], [auto])
3885 dnl  soxr module
3887 PKG_ENABLE_MODULES_VLC([SOXR], [], [soxr >= 0.1.2], [SoX Resampler library], [auto])
3890 dnl  OS/2 KAI plugin
3892 AC_ARG_ENABLE([kai],
3893   AS_HELP_STRING([--enable-kai],
3894     [support the K Audio Interface KAI (default enabled on OS/2)]),, [
3895   AS_IF([test "$SYS" = "os2"], [
3896     enable_kai="yes"
3897   ])
3899 have_kai="no"
3900 KAI_LIBS=""
3901 AS_IF([test "$enable_kai" != "no"], [
3902   AC_CHECK_HEADERS([kai.h], [
3903     have_kai="yes"
3904     AC_CHECK_LIB([kai], [main], [
3905       KAI_LIBS="-lkai"
3906     ])
3907   ])
3909 AC_SUBST([KAI_LIBS])
3910 AM_CONDITIONAL([HAVE_KAI], [test "${have_kai}" = "yes"])
3913 dnl  chromaprint audio track fingerprinter
3915 PKG_ENABLE_MODULES_VLC([CHROMAPRINT], [stream_out_chromaprint], [libchromaprint >= 0.6.0], [Chromaprint audio fingeprinter], [auto])
3918 dnl  Chromecast streaming support
3920 m4_pushdef([protobuf_lite_version], 2.5.0)
3921 AC_ARG_VAR(PROTOC, [protobuf compiler])
3922 AC_CHECK_PROGS(PROTOC, protoc, no)
3923 PKG_WITH_MODULES([CHROMECAST],[protobuf-lite >= protobuf_lite_version], [
3924     AS_IF([test "x${PROTOC}" != "xno"], [
3925         build_chromecast="yes"
3926     ], [
3927     AC_MSG_ERROR(protoc compiler needed for [chromecast] was not found)
3928     ])
3929 ], [
3930     AS_IF([test "${enable_chromecast}" = "yes"],
3931         AC_MSG_ERROR(Library [protobuf-lite >= protobuf_lite_version] needed for [chromecast] was not found),
3932         AC_MSG_WARN(Library [protobuf-lite >= protobuf_lite_version] needed for [chromecast] was not found)
3933     )
3934     enable_chromecast="no"
3935 ], [(Chromecast streaming support)], [auto])
3936 AM_CONDITIONAL([BUILD_CHROMECAST], [test "${build_chromecast}" = "yes"])
3937 m4_popdef([protobuf_lite_version])
3940 dnl  Interface plugins
3943 EXTEND_HELP_STRING([Interface plugins:])
3946 dnl QT
3948 AC_ARG_ENABLE([qt],
3949   AS_HELP_STRING([--disable-qt], [Qt UI support (default enabled)]),, [
3950   AS_IF([test "${enable_vlc}" != "no"], [enable_qt="yes"])
3951   AS_IF([test "${SYS}" = "darwin"], [
3952     enable_qt="no"
3953   ])
3955 have_qt5_x11="no"
3956 AS_IF([test "${enable_qt}" != "no"], [
3957   PKG_CHECK_MODULES([QT], [Qt5Core >= 5.11.0 Qt5Widgets Qt5Gui Qt5Quick Qt5QuickWidgets Qt5QuickControls2 Qt5Svg], [
3958       PKG_CHECK_MODULES([QT5_X11], [Qt5X11Extras], [
3959           have_qt5_x11="yes"
3960       ],[
3961           AC_MSG_WARN([Not building Qt Interface with X11 helpers.])
3962       ])
3963       QT_PATH="$(eval $PKG_CONFIG --variable=exec_prefix Qt5Core)"
3964       QT_HOST_PATH="$(eval $PKG_CONFIG --variable=host_bins Qt5Core)"
3965       QT_VERSION="$(eval $PKG_CONFIG --modversion Qt5Gui)"
3966       AC_PATH_PROGS(MOC, [moc-qt5 moc], moc, ["${QT_HOST_PATH}" "${QT_PATH}/bin"])
3967       AC_PATH_PROGS(RCC, [rcc-qt5 rcc], rcc, ["${QT_HOST_PATH}" "${QT_PATH}/bin"])
3968       AC_PATH_PROGS(UIC, [uic-qt5 uic], uic, ["${QT_HOST_PATH}" "${QT_PATH}/bin"])
3969       AC_PATH_PROGS(QMLCACHE, [qmlcachegen-qt5 qmlcachegen], no, ["${QT_HOST_PATH}" "${QT_PATH}/bin"])
3970       AS_IF([test "x${QMLCACHE}" = "xno"], [
3971           AC_MSG_WARN([qmlcachegen not found])
3972       ])
3973     ], [
3974       AS_IF([test -n "${enable_qt}"],[
3975         AC_MSG_ERROR([${QT_PKG_ERRORS}. If you want to build VLC without GUI, pass --disable-qt.])
3976       ],[
3977         AC_MSG_WARN([${QT_PKG_ERRORS}.])
3978       ])
3979       enable_qt="no"
3980     ])
3983 AC_ARG_ENABLE([qt-qml-cache],
3984   AS_HELP_STRING([--enable-qt-qml-cache],
3985     [enable qml cache generation]))
3986 AM_CONDITIONAL([HAVE_QMLCACHE], [test "${enable_qt_qml_cache}" = "yes" && test "x$QMLCACHE" != "xno"])
3988 AC_ARG_ENABLE([qt-qml-debug],
3989   AS_HELP_STRING([--enable-qt-qml-debug], [enable qml debuger]))
3990 AM_CONDITIONAL(QT_QML_DEBUG, [test "${enable_qt_qml_debug}" = "yes"])
3992 AS_IF([test "${enable_qt}" != "no"], [
3993   ALIASES="${ALIASES} qvlc"
3995 AC_SUBST([QT_VERSION])
3996 AM_CONDITIONAL([ENABLE_QT], [test "$enable_qt" != "no"])
3997 AM_CONDITIONAL([HAVE_QT5_X11], [test "${have_qt5_x11}" = "yes"])
4000 dnl detect kde4-config patch (used for kde solids).
4002 AC_ARG_VAR([KDE4_CONFIG], [kde4-config utility])
4003 AS_IF([test "x$KDE4_CONFIG" = "x"], [
4004   KDE4_CONFIG="kde4-config"
4008 dnl Simple test for skins2 dependency
4010 AS_IF([test "$enable_qt" = "no"], [
4011   AS_IF([test "${enable_skins2}" = "yes"], [
4012     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.])
4013   ], [
4014     enable_skins2="no"
4015     AC_MSG_WARN([The skins2 module depends on the Qt interface, Qt is not built so skins2 is disabled.])
4016   ])
4020 dnl Skins2 module
4022 AC_ARG_ENABLE([skins2],
4023   AS_HELP_STRING([--enable-skins2], [skins interface module (default auto)]))
4024 AS_IF([test "${enable_skins2}" != "no"], [
4025   have_skins_deps="yes"
4027   dnl Win32
4028   AS_IF([test "${SYS}" = "mingw32"], [
4029     VLC_ADD_CPPFLAGS([skins2],[-U_OFF_T_ -U_off_t -DWIN32_SKINS])
4030     VLC_ADD_LIBS([skins2],[-lgdi32 -lole32 -luuid -lmsimg32])
4031   dnl OS/2
4032   ], [test "${SYS}" = "os2"], [
4033     VLC_ADD_CPPFLAGS([skins2],[ -DOS2_SKINS])
4034   dnl Linux/Unix
4035   ], [
4036     PKG_CHECK_MODULES([XPM], [xpm],, [have_skins_deps="no"])
4037     PKG_CHECK_MODULES([XINERAMA], [xinerama],, [have_skins_deps="no"])
4038     PKG_CHECK_MODULES([XCURSOR], [xcursor],, [have_skins_deps="no"])
4039     PKG_CHECK_MODULES([XEXT], [xext],, [have_skins_deps="no"])
4040     VLC_ADD_CPPFLAGS([skins2],[${X_CFLAGS} ${XEXT_CFLAGS} ${XPM_CFLAGS} -DX11_SKINS])
4041     VLC_ADD_LIBS([skins2],[${X_LIBS} ${X_PRE_LIBS} ${XEXT_LIBS} ${XPM_LIBS} ${XINERAMA_LIBS} ${XCURSOR_LIBS} -lX11])
4042   ])
4044   dnl we need freetype
4045   AS_IF([test "${have_freetype}" != "yes"], [
4046     have_skins_deps="no"
4047   ])
4049   AS_IF([test "${have_skins_deps}" = "no"], [
4050     AS_IF([test "x${enable_skins2}" = "x"], [
4051       AC_MSG_WARN([Skins2 interface disabled due to missing dependencies.])
4052     ], [
4053       AC_MSG_ERROR([Skins2 interface requires FreeType, libxcursor, libxpm, libxext and libxinerama])
4054     ])
4055     enable_skins2="no"
4056   ], [
4057     ALIASES="${ALIASES} svlc"
4058     enable_skins2="yes"
4059   ])
4061 AM_CONDITIONAL([BUILD_SKINS], [test "${enable_skins2}" = "yes"])
4063 AC_ARG_ENABLE([libtar],
4064   AS_HELP_STRING([--enable-libtar], [libtar support for skins2 (default auto)]))
4065 AS_IF([test "${enable_skins2}" = "yes" && test "${enable_libtar}" != "no"], [
4066   AC_CHECK_HEADERS([libtar.h], [
4067     VLC_ADD_LIBS([skins2],[-ltar])
4068   ])
4072 dnl  MacOS X gui module
4074 AC_ARG_ENABLE([macosx],
4075   AS_HELP_STRING([--enable-macosx], [Mac OS X gui support (default enabled on Mac OS X)]))
4076 if test "x${enable_macosx}" != "xno" -a "${SYS}" = "darwin"
4077 then
4079   dnl
4080   dnl If possible, use xcrun to find the right ibtool
4081   dnl
4083   AC_PATH_PROG([XCRUN], [xcrun], [no])
4084   AS_IF([test ! "x${XCRUN}" = "xno"], [
4085     AC_MSG_CHECKING([for ibtool (using xcrun)])
4086     XIB="$(eval $XCRUN -f ibtool 2>/dev/null || echo no)"
4087     AC_MSG_RESULT([${XIB}])
4088   ], [
4089     AC_MSG_WARN([Looking for tools without using xcrun])
4090   ])
4092   AS_IF([test "x${XIB}" = "xno"], [
4093     AC_PATH_PROG(XIB, [ibtool], [no])
4094     AS_IF([test "x${XIB}" = "xno"], [
4095       AC_MSG_ERROR([ibtool was not found, but is required for --enable-macosx])
4096     ])
4097   ])
4099 AM_CONDITIONAL([ENABLE_MACOSX_UI], [test "$enable_macosx" != "no" -a "${SYS}" = "darwin"])
4102 dnl  MacOS X sparkle update support
4104 AC_ARG_ENABLE([sparkle],
4105   AS_HELP_STRING([--enable-sparkle], [Sparkle update support for OS X (default enabled on Mac OS X)]))
4106 if test "x${enable_sparkle}" != "xno" -a "${HAVE_OSX}" = "1"
4107 then
4108   if test ! -d ${CONTRIB_DIR}/Sparkle.framework -a ! -d ${CONTRIB_DIR}/Frameworks/Sparkle.framework
4109   then
4110     AC_MSG_ERROR([Sparkle framework is required and was not found in ${CONTRIB_DIR}])
4111   fi
4113   AC_DEFINE([HAVE_SPARKLE], [1], [Define to 1 if sparkle is enabled.])
4115 AM_CONDITIONAL([HAVE_SPARKLE], [test "$enable_sparkle" != "no"])
4118 dnl  MacOS X breakpad creash reporter support
4120 AC_ARG_WITH([breakpad],
4121   AS_HELP_STRING([--with-breakpad=URL], [Enable Breakpad reporter using given URL]), [], [with_breakpad=no])
4123 AS_IF([test "$with_breakpad" != "no"], [
4125   AS_IF([test "$with_breakpad" = "yes"], [
4126     AC_MSG_ERROR([You need to supply the CrashDragon Server URL as value for --with-breakpad])
4127   ])
4129   AS_IF([test "$HAVE_OSX" = "1"], [
4130     AC_MSG_CHECKING([for Breakpad framework])
4131     AS_IF([test ! -d ${CONTRIB_DIR}/Breakpad.framework -a \
4132                 ! -d ${CONTRIB_DIR}/Frameworks/Breakpad.framework], [
4133       AC_MSG_RESULT([no])
4134       with_breakpad="no"
4135       AC_MSG_ERROR([Breakpad framework is required and was not found in ${CONTRIB_DIR}])
4136     ], [
4137       AC_MSG_RESULT([yes])
4138     ])
4139   ],[
4140     PKG_CHECK_MODULES([BREAKPAD], [breakpad-client], [
4141       LDFLAGS="${LDFLAGS} -Wl,--build-id"
4142     ], [
4143       AC_MSG_ERROR(["breakpad not found"])
4144     ])
4145   ])
4148 AM_CONDITIONAL([HAVE_BREAKPAD], [test "$with_breakpad" != "no"])
4149 AS_IF([test "$with_breakpad" != "no"], [
4150   AC_SUBST([BREAKPAD_URL], ["${with_breakpad}"])
4154 dnl  Minimal Mac OS X module
4156 AC_ARG_ENABLE([minimal-macosx],
4157   AS_HELP_STRING([--enable-minimal-macosx], [Minimal Mac OS X support (default disabled)]))
4158 if test "${enable_minimal_macosx}" = "yes" -a "${SYS}" = "darwin"
4159 then
4160   VLC_ADD_PLUGIN([minimal_macosx])
4164 dnl Mac OS X fancy dmg build tool
4166 if test "${HAVE_OSX}" = "1"
4167 then
4168   AC_PATH_PROG(DMGBUILD, dmgbuild, no)
4169   AS_IF([test "x${DMGBUILD}" = "xno"], [
4170     AC_MSG_WARN([dmgbuild not found -- unable to build fancy DMGs])
4171   ])
4173 AM_CONDITIONAL([HAVE_DMGBUILD], [test "x$DMGBUILD" != "xno" -a "${HAVE_OSX}" = "1"])
4176 dnl  VideoToolbox plugins
4177 AC_CHECK_HEADERS([VideoToolbox/VideoToolbox.h], [
4178     VLC_ADD_PLUGIN([videotoolbox])
4179     VLC_ADD_PLUGIN([cvpx])
4180   ])
4183 dnl  AudioToolbox MIDI plugin
4184 AC_CHECK_HEADERS([AudioToolbox/AudioToolbox.h], [
4185   VLC_ADD_PLUGIN([audiotoolboxmidi])
4189 dnl  ncurses module
4191 AC_ARG_ENABLE([ncurses],
4192 AS_HELP_STRING([--disable-ncurses],[ncurses text-based interface (default auto)]))
4193 have_ncurses="no"
4194 AS_IF([test "${enable_ncurses}" != "no"] ,[
4195   PKG_CHECK_MODULES([NCURSES], [ncursesw], [
4196     have_ncurses="yes"
4197     ALIASES="${ALIASES} nvlc"
4198   ], [
4199     AS_IF([test -n "${enable_ncurses}"], [
4200       AC_MSG_ERROR([${NCURSES_PKG_ERRORS}.])
4201     ])
4202   ])
4204 AM_CONDITIONAL([HAVE_NCURSES], [test "${have_ncurses}" = "yes"])
4207 dnl  Lirc plugin
4209 AC_ARG_ENABLE([lirc],
4210   AS_HELP_STRING([--enable-lirc], [lirc support (default disabled)]))
4211 have_lirc="no"
4212 AS_IF([test "${enable_lirc}" = "yes"], [
4213   AC_CHECK_HEADER(lirc/lirc_client.h, [
4214     AC_CHECK_LIB([lirc_client], [lirc_init], [
4215       have_lirc="yes"
4216     ])
4217   ])
4219 AM_CONDITIONAL([HAVE_LIRC], [test "${have_lirc}" = "yes"])
4222 dnl  Bitstream
4224 PKG_CHECK_MODULES([BITSTREAM], [bitstream > 1.4],[have_bitstream="yes"], [have_bitstream="no"])
4225 AM_CONDITIONAL([HAVE_BITSTREAM], [test "${have_bitstream}" = "yes"])
4228 dnl  SRT plugin
4230 PKG_ENABLE_MODULES_VLC([SRT], [access_srt access_output_srt], [srt >= 1.3.0], [SRT input/output plugin], [auto], [], [], [-DENABLE_SRT])
4232 EXTEND_HELP_STRING([Visualisations and Video filter plugins:])
4234 dnl  goom visualization plugin
4236 PKG_ENABLE_MODULES_VLC([GOOM], [], [libgoom2], [goom visualization plugin], [auto])
4239 dnl libprojectM visualization plugin
4241 AC_ARG_ENABLE([projectm],
4242   AS_HELP_STRING([--enable-projectm], [projectM visualization plugin (default enabled)]))
4243 AS_IF([test "${enable_projectm}" != "no"],
4244   [
4245     PKG_CHECK_MODULES(PROJECTM, libprojectM,
4246     [
4247       VLC_ADD_PLUGIN([projectm])
4248       PKG_CHECK_EXISTS([libprojectM >= 2.0.0],
4249         [ AC_DEFINE([HAVE_PROJECTM2], 1, [Define to 1 if using libprojectM 2.x]) ],
4250         [ AC_MSG_WARN( [Using libprojectM version 1] )
4251       ])
4252     ],[
4253       AC_MSG_WARN([${PROJECTM_PKG_ERRORS}.])
4254     ])
4255   ])
4258 dnl Vovoid VSXu visualization plugin
4260 AC_ARG_ENABLE([vsxu],
4261   AS_HELP_STRING([--enable-vsxu], [Vovoid VSXu visualization plugin (default auto)]))
4262 AS_IF([test "${enable_vsxu}" != "no"],
4263   [
4264     PKG_CHECK_MODULES(VSXU, libvsxu,
4265     [
4266       VLC_ADD_PLUGIN([vsxu])
4267     ],[
4268       AC_MSG_WARN([${VSXU_PKG_ERRORS}.])
4269     ])
4270   ])
4272 EXTEND_HELP_STRING([Service Discovery plugins:])
4274 dnl  Avahi-Zeroconf services discovery
4275 PKG_ENABLE_MODULES_VLC([AVAHI], [], [avahi-client >= 0.6], [Zeroconf services discovery], [auto])
4278 dnl  libudev services discovery
4279 PKG_ENABLE_MODULES_VLC([UDEV], [], [libudev >= 142], [Linux udev services discovery], [auto])
4282 dnl MTP devices services discovery
4283 PKG_ENABLE_MODULES_VLC([MTP], [mtp access_mtp], [libmtp >= 1.0.0], [MTP devices support], [auto])
4286 dnl UPnP Plugin (Intel SDK)
4288 PKG_ENABLE_MODULES_VLC([UPNP], [upnp], [libupnp], [Intel UPNP SDK],[auto])
4291 dnl mDNS using libmicrodns
4293 PKG_ENABLE_MODULES_VLC([MICRODNS], [], [microdns >= 0.1.2], [mDNS services discovery], [auto])
4296 EXTEND_HELP_STRING([Misc options:])
4299 dnl  libxml2 module
4301 PKG_ENABLE_MODULES_VLC([LIBXML2], [xml], [libxml-2.0 >= 2.5], [libxml2 support],[auto])
4305 dnl libgcrypt
4307 AC_ARG_ENABLE([libgcrypt],
4308   AS_HELP_STRING([--disable-libgcrypt], [gcrypt support (default enabled)]))
4309 AC_ARG_VAR([GCRYPT_CFLAGS], [C compiler flags for gcrypt])
4310 AC_ARG_VAR([GCRYPT_LIBS], [linker flags flags for gcrypt])
4312 # require libgcrypt >= 1.6.0
4313 AS_IF([test "${enable_libgcrypt}" != "no"], [
4314   AC_CACHE_CHECK([for gcrypt 1.6.0 or later], [ac_cv_lib_gcrypt], [
4315     VLC_SAVE_FLAGS
4316     CFLAGS="${CFLAGS} ${GCRYPT_CFLAGS}"
4317     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([
4318 [#include <gcrypt.h>
4319 #if GCRYPT_VERSION_NUMBER < 0x010600
4320 #error
4321 #endif]])], [
4322       ac_cv_lib_gcrypt=yes
4323     ], [
4324       ac_cv_lib_gcrypt=no
4325     ])
4326     VLC_RESTORE_FLAGS
4327   ])
4329   AS_IF([test "${ac_cv_lib_gcrypt}" = "yes"], [
4330     AC_DEFINE([HAVE_GCRYPT], 1, [Defined if having gcrypt])
4331   ], [
4332     AS_IF([test "${enable_libgcrypt}" = "yes"], [
4333       AC_MSG_ERROR([libgcrypt version 1.6.0 or higher not found. Install libgcrypt or pass --disable-libgcrypt.])
4334     ])
4335   ])
4338 AS_IF([test -z "$GCRYPT_LIBS"], [
4339   GCRYPT_LIBS="-lgcrypt -lgpg-error"
4342 AC_SUBST([GCRYPT_CFLAGS])
4343 AC_SUBST([GCRYPT_LIBS])
4344 AM_CONDITIONAL([HAVE_GCRYPT], [test "${ac_cv_lib_gcrypt}" = "yes"])
4347 dnl TLS/SSL
4349 AC_ARG_ENABLE([gnutls],
4350   AS_HELP_STRING([--enable-gnutls], [GNU TLS TLS/SSL support (default enabled)]))
4351 AS_IF([test "${enable_gnutls}" != "no"], [
4352   PKG_CHECK_MODULES(GNUTLS, [gnutls >= 3.5.0], [
4353     VLC_ADD_PLUGIN([gnutls])
4354   ], [
4355     AS_IF([test -n "${enable_gnutls}"], [
4356       AC_MSG_ERROR([${GNUTLS_PKG_ERRORS}.)])
4357     ])
4358   ])
4363 dnl Taglib plugin
4365 AC_ARG_ENABLE([taglib],
4366   AS_HELP_STRING([--disable-taglib],
4367     [do not use TagLib (default enabled)]))
4368 AS_IF([test "${enable_taglib}" != "no"], [
4369   PKG_CHECK_MODULES(TAGLIB, taglib >= 1.11, [
4370     VLC_ADD_PLUGIN([taglib])
4371   ], [
4372     AC_MSG_WARN([${TAGLIB_PKG_ERRORS}.])])
4376 dnl  libsecret
4378 PKG_ENABLE_MODULES_VLC([SECRET], [], [libsecret-1 >= 0.18], [use libsecret for keystore], [auto])
4381 dnl  kwallet
4383 AC_ARG_ENABLE([kwallet],
4384   AS_HELP_STRING([--enable-kwallet],
4385     [use kwallet (via D-Bus) for keystore (default enabled)]))
4386 AS_IF([test "${enable_kwallet}" != "no" -a "${have_dbus}" = "yes"], [
4387   VLC_ADD_PLUGIN([kwallet])
4391 dnl update checking system
4393 AC_ARG_ENABLE([update-check],
4394   AS_HELP_STRING([--enable-update-check], [update checking system (default disabled)]))
4395 if test "${enable_update_check}" = "yes"
4396 then
4397  AS_IF([test "${ac_cv_lib_gcrypt}" != "yes"],[
4398     AC_MSG_ERROR([libgcrypt is required for update checking system]) ])
4400 AM_CONDITIONAL([UPDATE_CHECK], [test "${enable_update_check}" = "yes"])
4403 dnl OS X notification plugin
4405 AC_ARG_ENABLE([osx_notifications],
4406   AS_HELP_STRING([--enable-osx-notifications],
4407     [macOS notification plugin (default disabled)]),,
4408   [enable_osx_notifications=no])
4409 AS_IF([test "${enable_osx_notifications}" != "no"], [
4410   VLC_ADD_PLUGIN([osx_notifications])
4414 dnl Libnotify notification plugin
4416 PKG_ENABLE_MODULES_VLC([NOTIFY], [], [libnotify gtk+-3.0], [libnotify notification], [auto])
4418 PKG_ENABLE_MODULES_VLC([MEDIALIBRARY], [medialibrary], [medialibrary >= 0.7.1], (medialibrary support), [auto])
4421 dnl  Endianness check
4423 AC_C_BIGENDIAN
4424 AS_IF([test "${ac_cv_c_bigendian}" = "yes"], [
4425   DEFS_BIGENDIAN="-DWORDS_BIGENDIAN=1"
4426 ], [
4427   DEFS_BIGENDIAN=""
4429 AC_SUBST([DEFS_BIGENDIAN])
4432 dnl Where to install KDE solid .desktop
4434 AC_ARG_WITH(kde-solid,
4435   AS_HELP_STRING([--with-kde-solid=PATH],
4436                  [KDE Solid actions directory (auto)]),, [
4438 if test "${SYS}" != "mingw32" -a "${SYS}" != "darwin" -a "${HAVE_ANDROID}" != "1" ; then
4439   with_kde_solid="yes"
4442 soliddatadir=""
4443 AS_IF([test "${with_kde_solid}" != "no"], [
4444   AS_IF([test "${with_kde_solid}" = "yes"], [
4445     kde4datadir="`${KDE4_CONFIG} --install data`"
4446     AS_IF([test "x$kde4datadir" = "x"], [kde4datadir='${datadir}/kde4/apps'])
4447     soliddatadir="${kde4datadir}/solid/actions"
4448   ], [
4449     soliddatadir="${with_kde_solid}"
4450   ])
4452 AC_SUBST([soliddatadir])
4453 AM_CONDITIONAL([KDE_SOLID], [test "x${soliddatadir}" != "x"])
4456 dnl  Find tools for win32 packaging
4458 AS_IF([test "${SYS}" = "mingw32"], [
4459     dnl
4460     dnl Find makensis required to build the NSIS installer
4461     dnl
4462     nsis_major_required="3"
4463     nsis_version_ok="no"
4464     AC_PATH_PROG([MAKENSIS], [makensis], [no])
4465     AS_IF([test "$MAKENSIS" != "no"], [
4466         # Check version
4467         AC_MSG_CHECKING([makensis version])
4468         nsis_version=$($MAKENSIS -VERSION)
4469         AC_MSG_RESULT([$nsis_version])
4470         nsis_version_major=$(echo "$nsis_version" | awk -F \. '{print $1}' | sed 's/v//')
4471         # Check if major version is a valid number
4472         AS_IF([test -n "$nsis_version_major" && \
4473                test "$nsis_version_major" -eq "$nsis_version_major" 2> /dev/null], [
4474             # Do the version check using major version
4475             AS_IF([test "$nsis_version_major" -lt "$nsis_major_required"], [
4476                 AC_MSG_WARN([makensis too old, (needs ${nsis_major_required}.x, have ${nsis_version_major}.x)])
4477             ], [
4478                 nsis_version_ok="yes"
4479             ])
4480         ], [
4481             AC_MSG_WARN([failed to check the makensis version])
4482         ])
4483     ])
4484     dnl
4485     dnl Find 7zip
4486     dnl
4487     AC_PATH_PROG([SEVENZIP], [7z], [7z])
4489 AM_CONDITIONAL([HAVE_MAKENSIS], [test "x$MAKENSIS" != "xno" && test "$nsis_version_ok" = "yes"])
4492 dnl Check wether we have the PROCESS_MITIGATION_IMAGE_LOAD_POLICY
4493 dnl It should only be available when building for win10, but some SDKs define it unconditionnaly
4495 if test "${SYS}" = "mingw32"; then
4496     AC_CHECK_TYPES([PROCESS_MITIGATION_IMAGE_LOAD_POLICY],,,[#include <windows.h>])
4499 EXTEND_HELP_STRING([Components:])
4502 dnl  the VLC binary
4504 AC_ARG_ENABLE([vlc],
4505   AS_HELP_STRING([--enable-vlc], [build the VLC media player (default enabled)]))
4506 AM_CONDITIONAL([BUILD_VLC], [test "${enable_vlc}" != "no"])
4509 dnl Fuzzer (at the end not to mess dependencies FLAGS)
4511 AS_VAR_IF(with_libfuzzer, no, [], [
4512     LIBS="-lstdc++ ${LIBM}"
4513     AS_IF([test "${with_libfuzzer}" != "yes"], [
4514       LIBS="$LIBS -L${with_libfuzzer}"
4515     ])
4516     LIBS="$LIBS -lFuzzer"
4517     AX_CHECK_COMPILE_FLAG(-fsanitize-coverage=trace-pc-guard, [
4518         AX_APPEND_FLAG([-fsanitize-coverage=trace-pc-guard])
4519         AX_APPEND_FLAG([-fsanitize-coverage=trace-pc-guard], [CXXFLAGS])
4520         AX_APPEND_COMPILE_FLAGS([-fsanitize-coverage=trace-cmp])
4521         AX_APPEND_COMPILE_FLAGS([-fsanitize-coverage=trace-cmp], [CXXFLAGS])
4522     ], [
4523         AX_CHECK_COMPILE_FLAG(-fsanitize-coverage=trace-pc, [
4524             AX_APPEND_FLAG([-fsanitize-coverage=trace-pc])
4525             AX_APPEND_FLAG([-fsanitize-coverage=trace-pc], [CXXFLAGS])
4526         ], [
4527             AC_MSG_ERROR([Sanitizer coverage not supported by your compiler])
4528         ])
4529     ])
4533 dnl  Stuff used by the program
4535 VERSION_MESSAGE="${VERSION} ${CODENAME}"
4536 COPYRIGHT_MESSAGE="Copyright © ${COPYRIGHT_YEARS} the VideoLAN team"
4537 AC_DEFINE_UNQUOTED([VERSION_MESSAGE], "${VERSION_MESSAGE}", [Simple version string])
4538 AC_DEFINE_UNQUOTED([COPYRIGHT_MESSAGE], "${COPYRIGHT_MESSAGE}", [Copyright string])
4539 AC_DEFINE_UNQUOTED([COPYRIGHT_YEARS], "${COPYRIGHT_YEARS}", [The copyright years])
4540 AC_DEFINE_UNQUOTED([CONFIGURE_LINE], "${CONFIGURE_LINE}", [The ./configure command line])
4541 AC_DEFINE_UNQUOTED([PACKAGE_VERSION_MAJOR],${VERSION_MAJOR}, [version major number])
4542 AC_DEFINE_UNQUOTED([PACKAGE_VERSION_MINOR],${VERSION_MINOR}, [version minor number])
4543 AC_DEFINE_UNQUOTED([PACKAGE_VERSION_REVISION],${VERSION_REVISION}, [version revision number])
4544 AC_DEFINE_UNQUOTED([PACKAGE_VERSION_EXTRA],${VERSION_EXTRA}, [version extra number])
4545 AC_DEFINE_UNQUOTED([PACKAGE_VERSION_DEV],"${VERSION_DEV}", [version development string])
4546 AC_SUBST([COPYRIGHT_MESSAGE])
4547 AC_SUBST([VERSION_MESSAGE])
4548 AC_SUBST([VERSION_MAJOR])
4549 AC_SUBST([VERSION_MINOR])
4550 AC_SUBST([VERSION_REVISION])
4551 AC_SUBST([VERSION_EXTRA])
4552 AC_SUBST([COPYRIGHT_YEARS])
4553 AC_DEFINE_UNQUOTED([VLC_COMPILE_BY], "`whoami|sed -e 's/\\\/\\\\\\\/g'`", [user who ran configure])
4554 AC_DEFINE_UNQUOTED([VLC_COMPILE_HOST], "`hostname -f 2>/dev/null || hostname`", [host which ran configure])
4555 AC_DEFINE_UNQUOTED([VLC_COMPILER], "`$CC -v 2>&1 | tail -n 1 | sed -e 's/ *$//'`", [compiler])
4557 dnl  Handle substvars that use $(top_srcdir)
4559 CPPFLAGS="-I\$(top_srcdir)/include -I\$(top_builddir)/include ${CPPFLAGS}"
4562 dnl  Configuration is finished
4564 AC_SUBST([SYS])
4565 AC_SUBST([ARCH])
4566 AC_SUBST([ALIASES])
4567 AC_SUBST([ASM])
4568 AC_SUBST([MOC])
4569 AC_SUBST([RCC])
4570 AC_SUBST([UIC])
4571 AC_SUBST([WINDRES])
4572 AC_SUBST([WINE_SDK_PATH])
4573 AC_SUBST([LIBEXT])
4574 AC_SUBST([AM_CPPFLAGS])
4575 AC_SUBST([MACOSX_DEPLOYMENT_TARGET])
4576 AC_SUBST([FILE_LIBVLCCORE_DLL])
4577 AC_SUBST([FILE_LIBVLC_DLL])
4579 AC_CONFIG_FILES([
4580   Makefile
4581   doc/Makefile
4582   modules/Makefile
4583   m4/Makefile
4584   po/Makefile.in
4585   share/Makefile
4586   compat/Makefile
4587   src/Makefile
4588   lib/Makefile
4589   bin/Makefile
4590   test/Makefile
4591   modules/hw/mmal/Makefile
4592   share/vlc.appdata.xml.in
4595 AM_COND_IF([HAVE_WIN32], [
4596   AC_CONFIG_FILES([
4597     extras/package/win32/NSIS/spad.nsi
4598     extras/package/win32/NSIS/vlc.win32.nsi
4599     extras/package/win32/msi/config.wxi
4600   ])
4603 AM_COND_IF([HAVE_DARWIN], [
4604   AC_CONFIG_FILES([
4605     modules/gui/macosx/UI/InfoPlist.strings:modules/gui/macosx/Resources/InfoPlist.strings.in
4606     share/macosx/Info.plist:share/Info.plist.in
4607   ])
4610 dnl Generate makefiles
4611 AC_OUTPUT
4613 dnl Do we have to use make or gmake ?
4614 if make --version 2>&1|grep -q GNU
4615 then
4616     # GNU make, all seems good
4617     MAKE=make
4618 else
4619     # Known GNU make alias (on BSD)
4620     MAKE=gmake
4622 dnl Shortcut to nice compile message
4623 if test -n $SHELL; then
4624   SHELL=${CONFIG_SHELL-/bin/sh}
4626 rm -f compile
4627 compile_top_srcdir=`sed -ne "s/^top_srcdir *= *//p" < Makefile`
4628 echo "#! $SHELL
4629 rm -f .error\$\$
4630 ERROR=0
4631 export PATH=\"$PATH\" LANG=C
4632 ($MAKE V=1 \$@ 2>&1 || touch .error\$\$)| $compile_top_srcdir/extras/buildsystem/make.pl
4633 test -f .error\$\$ && ERROR=1
4634 rm -f .error\$\$
4635 exit \$ERROR" >compile
4636 chmod a+x compile
4638 echo "
4639 libvlc configuration
4640 --------------------
4641 version               : ${VERSION}
4642 system                : ${SYS}
4643 architecture          : ${ARCH}
4644 optimizations         : ${enable_optimizations}"
4645 if test "${enable_vlc}" != "no"; then
4646 echo "vlc aliases           :${ALIASES}"
4647 else
4648 echo "build vlc executable  : no"
4650 echo "
4651 To build vlc and its plugins, type \`$MAKE', or \`./compile' if you like nice colors."