Contribs: update dvdnav to 6.0.1
[vlc.git] / configure.ac
blob210b4ca53710df109322beaf88bd9238be4c0c43
1 dnl Autoconf settings for vlc
3 AC_COPYRIGHT([Copyright 1999-2019 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-2019"
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 Extend the --help string at the current spot.
74 AC_DEFUN([EXTEND_HELP_STRING], [m4_divert_once([HELP_ENABLE], [$1])])
76 dnl Allow binary package maintainer to pass a custom string to avoid
77 dnl cache problem
78 AC_ARG_WITH([binary-version],
79     AS_HELP_STRING([--with-binary-version=STRING],
80          [To avoid plugins cache problem between binary version]),[],[])
81 AS_IF([test -n "${with_binary_version}"],[
82     AC_DEFINE_UNQUOTED([DISTRO_VERSION],["${with_binary_version}"],
83          [Binary specific version])
86 dnl Prevent clang from accepting unknown flags with a mere warning
87 AX_APPEND_COMPILE_FLAGS([-Werror=unknown-warning-option -Werror=invalid-command-line-argument], [CFLAGS])
88 AX_APPEND_COMPILE_FLAGS([-Werror=unknown-warning-option -Werror=invalid-command-line-argument], [CXXFLAGS])
90 dnl
91 dnl  Check the operating system
92 dnl
93 HAVE_WIN64="0"
94 HAVE_IOS="0"
95 HAVE_OSX="0"
96 HAVE_TVOS="0"
98 dnl  Set x86 asm flags and defines
99 X86ASMFLAGS=""
100 case "${host_cpu}" in
101     i?86)
102     X86ASMFLAGS="-f elf32"
103     X86ASMDEFS="-DARCH_X86_32=1 -DARCH_X86_64=0"
104         ;;
105     x86_64)
106     X86ASMFLAGS="-f elf64"
107     X86ASMDEFS="-DARCH_X86_32=0 -DARCH_X86_64=1"
108         ;;
109 esac
111 case "${host_os}" in
112   "")
113     SYS=unknown
114     ;;
115   linux*)
116     SYS=linux
117     CFLAGS="${CFLAGS} -pthread"
118     ;;
119   bsdi*)
120     SYS=bsdi
121     CFLAGS="${CFLAGS} -pthread"
122     ;;
123   freebsd*)
124     SYS=freebsd
125     CFLAGS="${CFLAGS} -pthread"
126     CPPFLAGS="${CPPFLAGS} -I/usr/local/include"
127     LDFLAGS="${LDFLAGS} -L/usr/local/lib"
128     ac_cv_ld_z_defs=no
129     ;;
130   openbsd*)
131     SYS=openbsd
132     CPPFLAGS="${CPPFLAGS} -I/usr/local/include -I/usr/X11R6/include"
133     LDFLAGS="${LDFLAGS} -L/usr/local/lib -L/usr/X11R6/lib/"
134     ;;
135   netbsd*)
136     SYS=netbsd
137     ;;
138   dragonfly*)
139     SYS=dragonfly
140     ;;
141   darwin*)
143     dnl Force gcc "-arch" flag
144     ARCH_flag=""
145     case "${host_cpu}" in
146       i?86)
147         ARCH_flag="-arch i386"
148         X86ASMFLAGS="-f macho32"
149         X86ASMDEFS="${X86ASMDEFS} -DPREFIX"
150       ;;
151       ppc64*)
152         ARCH_flag="-arch ppc64"
153       ;;
154       ppc*)
155         ARCH_flag="-arch ppc"
156       ;;
157       x86_64)
158         ARCH_flag="-arch x86_64"
159         X86ASMFLAGS="-f macho64"
160         X86ASMDEFS="${X86ASMDEFS} -DPREFIX"
161       ;;
162       arm*)
163         ac_cv_c_bigendian="no"
164         ac_cv_c_attribute_packed="no"
165       ;;
166     esac
168     SYS=darwin
169     CFLAGS="${CFLAGS} -D_INTL_REDIRECT_MACROS -std=gnu11 ${ARCH_flag}"
170     CXX="${CXX} -stdlib=libc++ -std=c++11"
171     CXXFLAGS="${CXXFLAGS} -D_INTL_REDIRECT_MACROS ${ARCH_flag}"
172     CPPFLAGS="${CPPFLAGS} ${ARCH_flag}"
173     OBJCFLAGS="${OBJCFLAGS} -D_INTL_REDIRECT_MACROS -std=gnu11 ${ARCH_flag} -Werror=partial-availability"
174     LDFLAGS="${LDFLAGS} -Wl,-headerpad_max_install_names ${ARCH_flag}"
175     VLC_ADD_LIBS([libvlc vlc],[-Wl,-undefined,dynamic_lookup,-framework,AppKit])
176     VLC_ADD_LIBS([libvlccore],[-Wl,-framework,CoreFoundation,-framework,CoreServices])
178     AC_EGREP_CPP(yes,
179             [#import <TargetConditionals.h>
180              #if TARGET_OS_IPHONE
181              yes
182              #endif],
183              [HAVE_IOS="1"],
184              [HAVE_OSX="1"])
186     AC_EGREP_CPP(yes,
187             [#import <TargetConditionals.h>
188              #if TARGET_OS_TV
189              yes
190              #endif],
191              [HAVE_TVOS="1"
192              HAVE_IOS="0"
193              HAVE_OSX="0"
194              ],)
196     dnl
197     dnl  Handle Mac OS X SDK flags
198     dnl
199     AC_ARG_WITH(macosx-sdk,
200       AS_HELP_STRING([--with-macosx-sdk=DIR],
201         [compile using the SDK in DIR]))
202     if test "${with_macosx_sdk}" != "" ; then
203         test ! -d "${with_macosx_sdk}" && AC_MSG_ERROR([SDK "${with_macosx_sdk}" not found])
204         CPP="${CPP} -isysroot ${with_macosx_sdk}"
205         CC="${CC} -isysroot ${with_macosx_sdk}"
206         CXX="${CXX} -isysroot ${with_macosx_sdk}"
207         OBJC="${OBJC} -isysroot ${with_macosx_sdk}"
208         LD="${LD} -syslibroot ${with_macosx_sdk}"
209     fi
210     AC_ARG_WITH(macosx-version-min,
211       AS_HELP_STRING([--with-macosx-version-min=VERSION],
212         [compile for Mac OS X VERSION and above]))
213     if test "${with_macosx_version_min}" != "" ; then
214         CPP="${CPP} -mmacosx-version-min=${with_macosx_version_min}"
215         CC="${CC} -mmacosx-version-min=${with_macosx_version_min}"
216         CXX="${CXX} -mmacosx-version-min=${with_macosx_version_min}"
217         OBJC="${OBJC} -mmacosx-version-min=${with_macosx_version_min}"
218         LD="${LD} -mmacosx_version_min=${with_macosx_version_min}"
219     fi
220     ;;
221   *mingw32* | *cygwin* | *wince* | *mingwce*)
222     dnl Force libtool to not link to (shared) libgcc_s when detecting C++ dependencies
223     dnl When doing this test with -static-libgcc it will link on (static) libgcc_eh
224     CXXFLAGS="${CXXFLAGS} -static-libgcc"
225     AC_CHECK_TOOL(WINDRES, windres, :)
226     AC_CHECK_TOOL(OBJCOPY, objcopy, :)
227     AC_PREPROC_IFELSE([AC_LANG_PROGRAM(
228       [[#ifdef _WIN32_WINNT
229        # error _WIN32_WINNT already defined
230        #endif
231       ]],[[;]])
232     ],[
233       AC_DEFINE([_WIN32_WINNT], 0x0601, [Define to '0x0601' for Windows 7 APIs.])
234     ])
235     AC_DEFINE([_WIN32_IE], 0x0600, [Define to '0x0600' for IE 6.0 (and shell) APIs.])
236     AC_DEFINE([UNICODE], [1], [Define to 1 for Unicode (Wide Chars) APIs.])
237     AC_DEFINE([_ISOC99_SOURCE], [1], [Extensions to ISO C89 from ISO C99.])
238     AC_DEFINE([_ISOC11_SOURCE], [1], [Extensions to ISO C99 from ISO C11.])
239     AC_DEFINE([_POSIX_SOURCE], [1], [IEEE Std 1003.1.])
240     AC_DEFINE([_POSIX_C_SOURCE], [200809L], [IEEE Std 1003.1.])
241     AC_DEFINE([_XOPEN_SOURCE], [700], [POSIX and XPG 7th edition])
242     AC_DEFINE([_XOPEN_SOURCE_EXTENDED], [1], [XPG things and X/Open Unix extensions.])
243     AC_DEFINE([_BSD_SOURCE], [1], [ISO C, POSIX, and 4.3BSD things.])
244     AC_DEFINE([_SVID_SOURCE], [1], [ISO C, POSIX, and SVID things.])
246     case "${host_os}" in
247       *mingw32*)
248         SYS=mingw32
249         ;;
250       *cygwin*)
251         dnl Check if we are using the mno-cygwin mode in which case we are
252         dnl actually dealing with a mingw32 compiler.
253         AC_EGREP_CPP(yes,
254             [#ifdef _WIN32
255              yes
256              #endif],
257             SYS=mingw32, AC_MSG_ERROR([VLC requires -mno-cygwin]))
258         ;;
259     esac
261     if test "${SYS}" = "mingw32"; then
262         # DEP, ASLR, NO SEH
263         LDFLAGS="${LDFLAGS} -Wl,--nxcompat -Wl,--no-seh -Wl,--dynamicbase"
265         AC_CHECK_PROGS(U2D, [unix2dos todos], unix2dos)
266         ac_default_prefix="`pwd`/_win32"
267         DESTDIR="`pwd`/_win32/"
269         dnl
270         dnl NSIS/MSI Installer prefix and WIN64
271         dnl
272         case "${host_cpu}" in
273             aarch64)
274                 HAVE_WIN64="1"
275                 WINDOWS_ARCH="arm64"
276                 PROGRAMFILES="PROGRAMFILES64"
277                 LDFLAGS="${LDFLAGS} -Wl,--high-entropy-va -Wl,--image-base,0x140000000"
278             ;;
279             amd64|x86_64)
280                 HAVE_WIN64="1"
281                 WINDOWS_ARCH="x64"
282                 PROGRAMFILES="PROGRAMFILES64"
283                 LDFLAGS="${LDFLAGS} -Wl,--high-entropy-va -Wl,--image-base,0x140000000"
284                 X86ASMFLAGS="-f win64"
285             ;;
286             armv7)
287                 WINDOWS_ARCH="arm"
288                 PROGRAMFILES="PROGRAMFILES"
289             ;;
290             *)
291                 WINDOWS_ARCH="x86"
292                 PROGRAMFILES="PROGRAMFILES"
293                 X86ASMFLAGS="-f win32"
294                 X86ASMDEFS="${X86ASMDEFS} -DPREFIX"
295             ;;
296         esac
297         AC_SUBST([WINDOWS_ARCH])
298         AC_SUBST([PROGRAMFILES])
300     fi
301     ;;
302   *nto*)
303     SYS=nto
304     ;;
305   solaris*)
306     SYS=solaris
307     ;;
308   hpux*)
309     SYS=hpux
310     ;;
311   *os2*)
312     SYS=os2
313     LDFLAGS="${LDFLAGS} -Zomf -Zbin-files -Zargs-wild -Zhigh-mem"
314     AC_LIBOBJ([freeaddrinfo])
315     AC_LIBOBJ([gai_strerror])
316     AC_CHECK_FUNCS([if_nametoindex])
317     ;;
318   *nacl*)
319     SYS=nacl
320     AC_DEFINE([_XOPEN_SOURCE], [700], [POSIX and XPG 7th edition])
321     AC_LIBOBJ([sigwait])
322     AC_LIBOBJ([recvmsg])
323     AC_LIBOBJ([sendmsg])
324     ;;
325   *)
326     SYS="${host_os}"
327     ;;
328 esac
330 dnl WinRT
331 AC_ARG_ENABLE([winstore_app],
332      AS_HELP_STRING([--enable-winstore-app],
333                     [Build targetted for Windows Store apps (default disabled)]))
335 vlc_winstore_app=0
336 AS_IF([test "${SYS}" = "mingw32"],[
337   LIBCOM="-lole32"
338   AS_IF([test "${enable_winstore_app}" = "yes"], [
339     vlc_winstore_app=1
340     LIBCOM=""
341     AX_APPEND_FLAG([-DWINSTORECOMPAT],[CFLAGS])
342     AX_APPEND_FLAG([-DWINSTORECOMPAT],[CPPFLAGS])
343     AX_APPEND_FLAG([-DWINSTORECOMPAT],[CXXFLAGS])
344     AX_APPEND_FLAG([-lwinstorecompat], [LDFLAGS])
345     VLC_ADD_LIBS([libvlccore], [-lruntimeobject])
346     AC_LIBOBJ([gai_strerror])
347   ],[])
348   AC_SUBST([LIBCOM])
349   ])
350 AC_DEFINE_UNQUOTED(VLC_WINSTORE_APP, ${vlc_winstore_app}, [Define to 1 if you want to build for Windows Store apps])
352 vlc_build_pdb=0
353 AC_ARG_ENABLE([pdb],
354      AS_HELP_STRING([--enable-pdb],
355                     [Build PDB files for windows targets (default off)]))
356 AS_IF([test "${SYS}" = "mingw32"],[
357   AS_IF([test "${enable_pdb}" = "yes"], [
358     vlc_build_pdb=1
359     AX_APPEND_FLAG([-g -gcodeview],[CFLAGS])
360     AX_APPEND_FLAG([-g -gcodeview],[CXXFLAGS])
361     LDFLAGS="${LDFLAGS} -Wl,-pdb="
362   ],[])
365 AM_CONDITIONAL([HAVE_LINUX],   [test "${SYS}" = "linux"])
366 AM_CONDITIONAL([HAVE_OS2],     [test "${SYS}" = "os2"])
368 AM_CONDITIONAL([HAVE_DARWIN],  [test "${SYS}" = "darwin"])
369 AM_CONDITIONAL([HAVE_IOS],     [test "${HAVE_IOS}" = "1"])
370 AM_CONDITIONAL([HAVE_OSX],     [test "${HAVE_OSX}" = "1"])
371 AM_CONDITIONAL([HAVE_TVOS],    [test "${HAVE_TVOS}" = "1"])
373 AM_CONDITIONAL([HAVE_NACL],    [test "${SYS}" = "nacl"])
374 AM_CONDITIONAL([HAVE_LIBANL],  [test "${HAVE_LIBANL}" = "1"])
376 AM_CONDITIONAL([HAVE_WIN32],   [test "${SYS}" = "mingw32"])
377 AM_CONDITIONAL([HAVE_WIN64],   [test "${HAVE_WIN64}" = "1"]) dnl Only used for the packaging
378 AM_CONDITIONAL([HAVE_WINSTORE], [test "$vlc_winstore_app" = "1"])
379 AM_CONDITIONAL([HAVE_WIN32_DESKTOP], [test "${SYS}" = "mingw32" -a "$vlc_winstore_app" = "0"])
380 AM_CONDITIONAL([ENABLE_PDB],   [test "$vlc_build_pdb" = "1"])
382 dnl Use nasm/yasm only on x86
383 AC_CHECK_PROGS(X86ASM, [nasm yasm])
384 AM_CONDITIONAL([HAVE_X86ASM], [test -n "${X86ASM}" && test -n "${X86ASMFLAGS}"])
385 AM_COND_IF([HAVE_X86ASM], [
386   AC_DEFINE([HAVE_X86ASM], [1], [Use external asm on x86.])
388 AC_SUBST([X86ASMFLAGS])
389 AC_SUBST([X86ASMDEFS])
392 dnl Sadly autoconf does not think about testing foo.exe when ask to test
393 dnl for program foo on win32
394 case "${build_os}" in
395     cygwin|msys|mingw32)
396         ac_executable_extensions=".exe"
397         BUILDEXEEXT=".exe"
398     ;;
399     os2*)
400         BUILDEXEEXT=".exe"
401     ;;
402     *)
403     ;;
404 esac
405 AC_SUBST([BUILDEXEEXT])
407 dnl Android is linux, but a bit different
408 AS_IF([test "$SYS" = linux],[
409     AC_MSG_CHECKING([for an Android system])
410     AC_PREPROC_IFELSE([AC_LANG_PROGRAM(
411         [[#ifndef __ANDROID__
412          # error Not Android
413          #endif
414         ]],[[;]])
415     ],[
416       HAVE_ANDROID="1"
417       AC_MSG_RESULT([yes])
418     ],[
419       AC_MSG_RESULT([no])
420     ])
422 AM_CONDITIONAL([HAVE_ANDROID], [test "${HAVE_ANDROID}" = "1"])
425 dnl  Check for the contrib directory
427 AC_ARG_WITH(contrib,
428   AS_HELP_STRING([--with-contrib[=DIR]],
429     [search for 3rd party libraries in DIR/include and DIR/lib])
431 AC_MSG_CHECKING([for 3rd party libraries path])
432 AS_IF([test -z "${with_contrib}" || test "${with_contrib}" = "yes"], [
433   CONTRIB_DIR="${srcdir}/contrib/${host}"
434   AS_IF([test ! -d "${CONTRIB_DIR}"], [
435     echo "${CONTRIB_DIR} not found" >&AS_MESSAGE_LOG_FD
436     CONTRIB_DIR="${srcdir}/contrib/`$CC -dumpmachine`"
437     AS_IF([test ! -d "${CONTRIB_DIR}"], [
438       echo "${CONTRIB_DIR} not found" >&AS_MESSAGE_LOG_FD
439       CONTRIB_DIR=""
440       AC_MSG_RESULT([not found])
441     ])
442   ])
443 ], [
444   AS_IF([test "${with_contrib}" != "no"], [
445     CONTRIB_DIR="${with_contrib}"
446   ], [
447     CONTRIB_DIR=""
448     AC_MSG_RESULT([disabled])
449   ])
451 AS_IF([test -n "${CONTRIB_DIR}"], [
452   AS_IF([test -d "${CONTRIB_DIR}/lib"],[
453     CONTRIB_DIR=`cd "${CONTRIB_DIR}" && pwd`
454   ], [
455     echo "${CONTRIB_DIR}/lib not found" >&AS_MESSAGE_LOG_FD
456     CONTRIB_DIR=""
457     AC_MSG_RESULT([not usable])
458   ])
461 AS_IF([test -n "${CONTRIB_DIR}"], [
462   AC_MSG_RESULT([${CONTRIB_DIR}])
463   CPPFLAGS="${CPPFLAGS} -I${CONTRIB_DIR}/include"
464   CFLAGS="${CFLAGS} -I${CONTRIB_DIR}/include"
465   CXXFLAGS="${CXXFLAGS} -I${CONTRIB_DIR}/include"
466   OBJCFLAGS="${OBJCFLAGS} -I${CONTRIB_DIR}/include -F${CONTRIB_DIR} -F${CONTRIB_DIR}/Frameworks"
467   PKG_CONFIG_PATH="${CONTRIB_DIR}/lib/pkgconfig:${CONTRIB_DIR}/share/pkgconfig:${PKG_CONFIG_PATH}"
468   case "${build_os}" in
469       mingw32)
470           export PKG_CONFIG_PATH=`cygpath -mp ${PKG_CONFIG_PATH}`
471       ;;
472       *)
473           export PKG_CONFIG_PATH="${PKG_CONFIG_PATH}"
474       ;;
475   esac
476   LDFLAGS="${LDFLAGS} -L${CONTRIB_DIR}/lib"
478   AS_IF([test -z "$LUAC"], [
479     dnl Old contribs mixed cross-tools and cross-compiled executables
480     AS_IF([test -x "${CONTRIB_DIR}/bin/luac${BUILDEXEEXT}"], [
481       LUAC="${CONTRIB_DIR}/bin/luac${BUILDEXEEXT}"
482     ])
484     dnl Newer contribs follow usual name space rules
485     AS_IF([test -x "${CONTRIB_DIR}/../bin/${host_alias}-luac${BUILDEXEEXT}"], [
486       LUAC="${CONTRIB_DIR}/../bin/${host_alias}-luac${BUILDEXEEXT}"
487     ])
488   ])
490   AS_IF([test "${SYS}" = "darwin"], [
491     export LD_LIBRARY_PATH="${CONTRIB_DIR}/lib:$LD_LIBRARY_PATH"
492     export DYLD_LIBRARY_PATH="${CONTRIB_DIR}/lib:$DYLD_LIBRARY_PATH"
493   ])
494 ], [
495   AS_IF([test -n "${with_contrib}" && test "${with_contrib}" != "no"], [
496     AC_MSG_ERROR([Third party libraries not found!])
497   ])
499 AC_SUBST([CONTRIB_DIR])
501 dnl Add extras/tools to the PATH
502 TOOLS_DIR="${srcdir}/extras/tools/build/bin"
503 AS_IF([test -d "${TOOLS_DIR}"], [
504     TOOLS_DIR=`cd "${TOOLS_DIR}" && pwd`
505     export PATH="${TOOLS_DIR}":$PATH
509 dnl  Libtool
510 dnl  It's very bad, but our former custom system was worst
511 dnl  -- Courmisch
514 dnl override platform specific check for dependent libraries
515 dnl otherwise libtool linking of shared libraries will
516 dnl fail on anything other than pass_all.
517 AC_CACHE_VAL(lt_cv_deplibs_check_method,
518     [lt_cv_deplibs_check_method=pass_all])
520 LT_INIT([dlopen win32-dll shared disable-static])
521 LT_LANG([C++])
522 LT_LANG([Windows Resource])
524 DOLT
526 lt_cv_deplibs_check_method=pass_all
528 AS_IF([test "${enable_shared}" = "no" -a "${enable_vlc}" != "no"], [
529   AC_MSG_ERROR([VLC is based on plugins. Shared libraries cannot be disabled.])
533 dnl Gettext stuff
535 AM_GNU_GETTEXT_VERSION([0.19.8])
536 AM_GNU_GETTEXT([external], [need-formatstring-macros])
539 dnl Iconv stuff
541 AM_ICONV
544 dnl checks for mingw
545 AS_IF([test "${SYS}" = "mingw32"], [
547 AC_PREPROC_IFELSE([AC_LANG_SOURCE([
548 #if !defined(__MINGW32__)
549 # error Not compiling with mingw
550 #endif
551     ])], [
553 dnl Check for broken versions of mingw-runtime compatability library
554     AC_MSG_CHECKING(for broken mingw-runtime)
555     AC_PREPROC_IFELSE([AC_LANG_SOURCE([
556 #include <_mingw.h>
557 #if defined(__MINGW64_VERSION_MAJOR)
558 # if __MINGW64_VERSION_MAJOR < 5
559 #  error Update your mingw-w64! This one is too old.
560 # endif
561 #else
562 # error You cannot compile with Mingw. Use Mingw-w64!
563 #endif
564     ])], [
565         AC_MSG_RESULT([ok])
566     ], [
567         AC_MSG_RESULT([present])
568         AC_MSG_ERROR([LibVLC requires Mingw-w64 version 5.0 or higher!])
569     ])
571     dnl force use of mingw provided c99 *printf over msvcrt
572     CPPFLAGS="${CPPFLAGS} -D__USE_MINGW_ANSI_STDIO=1"
574     dnl Check for the need to include the mingwex lib for mingw32
575     VLC_SAVE_FLAGS
576     AC_CHECK_LIB([mingwex], [opendir],
577         AC_CHECK_LIB([mingw32], [opendir],,
578             [VLC_ADD_LIBS([libvlccore],[-lmingwex])])
579     )
580     VLC_RESTORE_FLAGS
581     ], [
582         AC_MSG_RESULT([Not compiling with mingw])
583     ])
585     dnl Check for fnative-struct or mms-bitfields support for mingw32
586     AX_CHECK_COMPILE_FLAG([-mms-bitfields], [
587         AX_APPEND_FLAG([-mms-bitfields], [CFLAGS])
588         AX_APPEND_FLAG([-mms-bitfields], [CXXFLAGS])
589         # Check for the warning flag without "-Wno-", GCC accepts
590         # -Wno-<anything> for unsupported warnings, which can trigger
591         # other warnings instead.
592         AX_CHECK_COMPILE_FLAG([-Wincompatible-ms-struct], [
593             AX_APPEND_FLAG([-Wno-incompatible-ms-struct], [CFLAGS])
594             AX_APPEND_FLAG([-Wno-incompatible-ms-struct], [CXXFLAGS])
595         ])
596     ], [
597         AX_CHECK_COMPILE_FLAG([-fnative-struct], [
598             AX_APPEND_FLAG([-fnative-struct], [CFLAGS])
599             AX_APPEND_FLAG([-fnative-struct], [CXXFLAGS])
600         ])
601     ])
606 dnl Buggy glibc prevention. Purposedly not cached.
607 dnl See sourceware.org bugs 5058 and 5443.
608 dnl Ubuntu alone has 20 bug numbers for this...
610 AC_MSG_CHECKING(for buggy GNU/libc versions)
611 AC_PREPROC_IFELSE([AC_LANG_SOURCE([
612 #include <limits.h>
613 #if defined (__GLIBC__) && (__GLIBC__ == 2) \
614   && (__GLIBC_MINOR__ >= 5) && (__GLIBC_MINOR__ <= 7)
615 # error GNU/libc with dcgettext killer bug!
616 #endif
617 ])], [
618   AC_MSG_RESULT([not present])
619 ], [
620   AC_MSG_RESULT([found])
621   AS_IF([test "x${enable_nls}" != "xno"], [
622     AC_MSG_ERROR([Buggy GNU/libc (version 2.5 - 2.7) present. VLC would crash; there is no viable
623 work-around for this. Check with your distribution vendor on how to update the
624 glibc run-time. Alternatively, build with --disable-nls.])
625   ])
628 dnl Plugin compilation stuff
630 VLC_LIBRARY_SUFFIX
632 dnl Check for system libs needed
633 need_libc=false
635 dnl Check for usual libc functions
636 AC_CHECK_FUNCS([accept4 daemon fcntl flock fstatat fstatvfs fork getenv getpwuid_r isatty memalign mkostemp mmap open_memstream newlocale pipe2 pread posix_fadvise posix_madvise setlocale stricmp strnicmp strptime uselocale])
637 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])
638 AC_REPLACE_FUNCS([gettimeofday])
639 AC_CHECK_FUNC(fdatasync,,
640   [AC_DEFINE(fdatasync, fsync, [Alias fdatasync() to fsync() if missing.])
643 VLC_REPLACE_DECL([realpath], [#include <stdlib.h>])
645 dnl mingw64 implements those as static inline, not functions with C linkage
646 VLC_REPLACE_DECL([asprintf], [#include <stdio.h>])
647 VLC_REPLACE_DECL([vasprintf], [#include <stdio.h>])
648 VLC_REPLACE_DECL([gmtime_r], [#include <time.h>])
649 VLC_REPLACE_DECL([localtime_r], [#include <time.h>])
651 dnl C11 static_assert()
652 AC_MSG_CHECKING([for static_assert in assert.h])
653 AC_LINK_IFELSE([AC_LANG_PROGRAM([#include <assert.h>], [
654 static_assert(1, "The impossible happened.");
655 ])], [
656   AC_MSG_RESULT([yes])
657   AC_DEFINE([HAVE_STATIC_ASSERT], [1], [Define to 1 if <assert.h> defines static_assert.])
658 ], [
659   AC_MSG_RESULT([no])
662 # Windows CE does not have strcoll()
663 AC_FUNC_STRCOLL
665 dnl Check for non-standard system calls
666 case "$SYS" in
667   "linux")
668     AC_CHECK_FUNCS([eventfd vmsplice sched_getaffinity recvmmsg memfd_create])
669     ;;
670   "mingw32")
671     AC_CHECK_FUNCS([_lock_file])
672     ;;
673 esac
675 AH_BOTTOM([#include <vlc_fixups.h>])
677 dnl Check for struct pollfd
678 AC_CHECK_TYPES([struct pollfd],,,
679 [#include <sys/types.h>
680 #if HAVE_POLL
681 # include <poll.h>
682 #elif defined (_WIN32)
683 # include <winsock2.h>
684 #endif
687 dnl Check for struct timespec
688 AC_CHECK_TYPES([struct timespec],,,
689 [#include <time.h>])
691 dnl Check for max_align_t
692 AC_CHECK_TYPES([max_align_t],,,
693 [#include <stddef.h>])
695 dnl Checks for socket stuff
696 VLC_SAVE_FLAGS
697 SOCKET_LIBS=""
698 AC_SEARCH_LIBS(connect, [socket], [
699   AS_IF([test "$ac_cv_search_connect" != "none required"], [
700     SOCKET_LIBS="$ac_cv_search_connect"
701   ])
702 ], [
703   AS_IF([test "${SYS}" = "mingw32"], [
704     SOCKET_LIBS="-lws2_32 -liphlpapi"
705   ])
708 AC_SEARCH_LIBS([inet_pton], [nsl], [
709  AS_IF([test "$ac_cv_search_inet_pton" != "none required"], [
710     SOCKET_LIBS="$ac_cv_search_inet_pton $SOCKET_LIBS"
711   ])
712 ],, [${SOCKET_LIBS}])
714 LIBS="${LIBS} ${SOCKET_LIBS}"
715 AC_LINK_IFELSE([
716     AC_LANG_PROGRAM([#ifdef _WIN32
717         #include <ws2tcpip.h>
718         #include <windows.h>
719         # if _WIN32_WINNT < 0x600
720         #  error Needs vista+
721         # endif
722         #else
723         #include <sys/socket.h>
724         #include <arpa/inet.h>
725         #endif], [
726         char dst[[sizeof(struct in_addr)]];
727         inet_pton(AF_INET, "127.0.0.1", dst);
728     ])],[AC_DEFINE([HAVE_INET_PTON],[1],[Define to 1 if you have inet_pton function])],[AC_LIBOBJ([inet_pton])])
729 AC_CHECK_TYPES([struct if_nameindex],,,[#include <net/if.h>])
730 AC_CHECK_FUNCS([if_nameindex])
731 VLC_RESTORE_FLAGS
732 AC_SUBST([SOCKET_LIBS])
734 dnl Check for socklen_t
735 AH_TEMPLATE(socklen_t, [Define to `int' if <sys/socket.h> does not define.])
736 AC_CACHE_CHECK([for socklen_t in sys/socket.h], dnl ` (fix VIM syntax highlight
737 ac_cv_type_socklen_t,
738 [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([
739 [#include <sys/types.h>
740 #ifdef _WIN32
741 # include <winsock2.h>
742 # include <ws2tcpip.h>
743 #else
744 # include <sys/socket.h>
745 #endif]], [[socklen_t len; len = 0;]])],
746 ac_cv_type_socklen_t=yes,
747 ac_cv_type_socklen_t=no)])
748 AS_IF([test "$ac_cv_type_socklen_t" = no],
749  [AC_DEFINE(socklen_t, unsigned int)])
751 dnl Check for struct sockaddr_storage
752 AH_TEMPLATE(sockaddr_storage, [Define to `sockaddr' if <sys/socket.h> does not define.]) dnl ` (fix VIM syntax highlight
753 AH_TEMPLATE(ss_family, [Define to `sa_family' if <sys/socket.h> does not define.]) dnl ` (fix VIM syntax highlight
754 AC_CACHE_CHECK([for struct sockaddr_storage], ac_cv_struct_sockaddr_storage,
755   [AC_TRY_COMPILE(
756     [#include <sys/types.h>
757      #if defined( _WIN32 )
758      # include <winsock2.h>
759      #else
760      # include <sys/socket.h>
761      #endif], [struct sockaddr_storage addr;],
762      ac_cv_struct_sockaddr_storage=yes,
763      ac_cv_struct_sockaddr_storage=no)])
764 AS_IF([test "${ac_cv_struct_sockaddr_storage}" = no], [
765   AC_DEFINE(sockaddr_storage, sockaddr)
766   AC_DEFINE(ss_family, sa_family)
769 dnl FreeBSD has a gnugetopt library for this:
770 GNUGETOPT_LIBS=""
771 AC_CHECK_FUNC(getopt_long,, [
772   AC_CHECK_LIB([gnugetopt],[getopt_long], [
773     GNUGETOPT_LIBS="-lgnugetopt"
774   ])
776 AC_SUBST([GNUGETOPT_LIBS])
778 AC_CHECK_LIB([m], [cos], [
779   LIBM="-lm"
780 ], [
781   LIBM=""
783 AC_SUBST([LIBM])
785 AC_CHECK_LIB([m], [lrintf], [
786   AC_DEFINE(HAVE_LRINTF, 1, [Define to 1 if you have the lrintf function])
787   VLC_ADD_LIBS([skins2],[-lm])
789 AC_CHECK_LIB([m], [nanf],
790   AC_DEFINE(HAVE_NANF, 1, [Define to 1 if you have the NANF function])
792 AC_CHECK_LIB([m], [sincos], [
793   AC_DEFINE(HAVE_SINCOS, 1, [Define to 1 if you have the sincos function.])
794 ], [
795   AC_LIBOBJ([sincos])
798 AC_MSG_CHECKING([broken qsort_r prototype])
799 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([#include <stdlib.h>
801 _Static_assert(_Generic((qsort_r),
802     void (*)(void *, size_t, size_t, void *,
803              int (*)(void *, const void *, const void *)) : 1, default: 0),
804     "Bad prototype not matched");
805 ])], [
806   AC_MSG_RESULT([broken])
807   AC_DEFINE([HAVE_BROKEN_QSORT_R], 1, [Defined to 1 if the qsort_r() prototype contradicts the upcoming POSIX standard.])
808 ], [
809   AC_MSG_RESULT([no])
812 AC_MSG_CHECKING([_Thread_local support])
813 AC_COMPILE_IFELSE([AC_LANG_SOURCE([_Thread_local int foo = 0;
814                    int main() {}])], [
815     AC_MSG_RESULT([ok])
816     AC_DEFINE(HAVE_THREAD_LOCAL, 1, [Defined to 1 if C11 _Thread_local storage qualifier is supported])
817 ],[ AC_MSG_RESULT([no])])
819 dnl __STDC_NO_THREADS__ can't be trusted on some platforms.
820 dnl check for its availability explicitely
821 AC_CHECK_HEADERS([threads.h])
823 AC_CHECK_LIB([anl],[getaddrinfo_a],[
824   AC_DEFINE(HAVE_LIBANL, 1, [Define to 1 if you have the anl library])
827 dnl Check for dynamic plugins
828 LIBDL=""
829 have_dynamic_objects="no"
830 VLC_SAVE_FLAGS
831 AC_SEARCH_LIBS(dlsym, [dl svld], [
832   AS_IF([test "$ac_cv_search_dlsym" != "none required"], [
833     LIBDL="$ac_cv_search_dlsym"
834   ])
835   have_dynamic_objects="yes"
837 VLC_RESTORE_FLAGS
839 # Windows
840 AS_IF([test "${SYS}" = "mingw32"], [
841   LIBDL=""
842   have_dynamic_objects="yes" #assume we can use shared objects
845 AC_ARG_WITH([libfuzzer],
846     AS_HELP_STRING([--with-libfuzzer=DIR],
847         [use libFuzzer library from DIR and triggers sanitize coverage (default disabled)]),
848      [],
849      [with_libfuzzer=no])
850 AS_VAR_IF(with_libfuzzer, no, [], [
851     enable_shared=no
852     enable_static=yes
853     enable_vlc=no
855 AM_CONDITIONAL([HAVE_LIBFUZZER], [test "${with_libfuzzer}" != "no"])
857 AS_IF([test "${enable_shared}" = "no"], [
858   have_dynamic_objects=no
860 AM_CONDITIONAL([HAVE_DYNAMIC_PLUGINS], [test "${have_dynamic_objects}" != "no"])
862 AC_SUBST([LIBDL])
864 AS_IF([test "${SYS}" != "mingw32"], [
865   AC_SEARCH_LIBS([clock_nanosleep], [rt pthread], [
866     AS_IF([test "$ac_cv_search_clock_nanosleep" != "none required"], [
867       LIBRT="$ac_cv_search_clock_nanosleep"
868     ])
869   ], [
870     AC_SEARCH_LIBS([nanosleep], [rt pthread posix4], [
871       AS_IF([test "$ac_cv_search_nanosleep" != "none required"], [
872         LIBRT="$ac_cv_search_nanosleep"
873       ])
874     ])
875   ])
877 AC_SUBST([LIBRT])
880 dnl Check for headers
883 dnl  POSIX
884 AC_CHECK_HEADERS([arpa/inet.h pthread.h search.h sys/shm.h sys/socket.h sys/uio.h])
885 AC_CHECK_HEADERS([net/if.h], [], [],
887 #include <sys/types.h>
888 #include <sys/socket.h>
890 AC_CHECK_HEADER([syslog.h], [have_syslog="yes"], [have_syslog="no"])
891 AM_CONDITIONAL([HAVE_SYSLOG], [test "$have_syslog" = "yes"])
893 dnl  BSD
894 AC_CHECK_HEADERS([netinet/tcp.h netinet/udplite.h sys/param.h sys/mount.h])
896 dnl  GNU/Linux
897 AC_CHECK_HEADERS([features.h getopt.h linux/dccp.h linux/magic.h mntent.h sys/eventfd.h])
899 dnl  MacOS
900 AC_CHECK_HEADERS([xlocale.h])
902 dnl Check if C++ headers define locale_t
903 AC_LANG_PUSH(C++)
904 AC_CACHE_CHECK([if C++ headers define locale_t],
905   [ac_cv_cxx_locale_t],
906   [ac_cv_cxx_locale_t=no
907    AC_TRY_COMPILE([#include <locale>], [locale_t loc;],
908                     [ac_cv_cxx_locale_t=yes])])
909 if test "${ac_cv_cxx_locale_t}" != "no"; then
910   AC_DEFINE(HAVE_CXX_LOCALE_T, 1, Define to 1 if C++ headers define locale_t)
912 AC_LANG_POP(C++)
914 dnl LP64 and LLP64 architectures had better define ssize_t by themselves...
915 AH_TEMPLATE(ssize_t, [Define to `int' if <stddef.h> does not define.]) dnl ` (fix VIM syntax highlight
916 AC_CHECK_TYPE(ssize_t,, [
917   AC_DEFINE(ssize_t, int)
920 dnl It seems that autoconf detects pkg-config only during the first
921 dnl PKG_CHECK_MODULES from configure.ac - which makes sense. But in our case,
922 dnl it is nested within a conditional block, so it was not working right.
923 PKG_PROG_PKG_CONFIG()
925 dnl On some OS we need static linking
926 AS_IF([test -n "${PKG_CONFIG}" ],[
927     AS_IF([test "${SYS}" = "mingw32" -o "${SYS}" = "darwin" -o "${SYS}" = "os2" ],[
928         PKG_CONFIG="${PKG_CONFIG} --static"
929     ])
934 dnl Check for zlib.h and -lz if available
936 AC_CHECK_HEADERS([zlib.h], [ have_zlib=yes ], [ have_zlib=no ])
937 AM_CONDITIONAL([HAVE_ZLIB], [ test "${have_zlib}" = "yes" ])
938 if test "${have_zlib}" = "yes"
939 then
940   VLC_ADD_LIBS([sap],[-lz])
945 dnl Domain name i18n support via GNU libidn
947 PKG_CHECK_MODULES([IDN], [libidn], [
948   have_libidn="yes"
949   AC_DEFINE([HAVE_IDN], 1, [Define to 1 if you have GNU libidn.])
950 ], [
951   have_libidn="no"
955 dnl Check for dbus
956 AC_ARG_ENABLE([dbus],
957   AS_HELP_STRING([--enable-dbus],
958     [compile D-Bus message bus support (default enabled)]))
959 have_dbus="no"
960 AS_IF([test "${enable_dbus}" != "no"], [
961   PKG_CHECK_MODULES(DBUS, [dbus-1 >= 1.6.0], [
962     have_dbus="yes"
963   ], [
964     AS_IF([test -n "${enable_dbus}"], [
965       AC_MSG_ERROR([${DBUS_PKG_ERRORS}.])
966     ], [
967       AC_MSG_WARN([${DBUS_PKG_ERRORS}.])
968     ])
969   ])
971 AM_CONDITIONAL([HAVE_DBUS], [test "${have_dbus}" = "yes"])
974 dnl Check for systemd
975 PKG_CHECK_MODULES([SYSTEMD], [libsystemd], [
976   have_systemd="yes"
977 ], [
978   AC_MSG_WARN([${SYSTEMD_PKG_ERRORS}.])
980 AM_CONDITIONAL([HAVE_SYSTEMD], [test "${have_systemd}" = "yes"])
983 EXTEND_HELP_STRING([Optimization options:])
985 dnl  Compiler warnings
988 AX_APPEND_COMPILE_FLAGS([-Wall -Wextra -Wsign-compare -Wundef -Wpointer-arith -Wvolatile-register-var -Wformat -Wformat-security -Wduplicated-branches -Wduplicated-cond], [CFLAGS])
989 AX_APPEND_COMPILE_FLAGS([-Wall -Wextra -Wsign-compare -Wundef -Wpointer-arith -Wvolatile-register-var -Wformat -Wformat-security -Wduplicated-branches -Wduplicated-cond], [CXXFLAGS])
991 AX_APPEND_COMPILE_FLAGS([-Wbad-function-cast -Wwrite-strings -Wmissing-prototypes -Werror-implicit-function-declaration -Winit-self -Wlogical-op -Wshadow=local -Wmultistatement-macros], [CFLAGS])
992 AX_APPEND_COMPILE_FLAGS([-pipe], [CFLAGS])
995 dnl  Debugging mode
997 AC_ARG_ENABLE([debug],
998   AS_HELP_STRING([--disable-debug],
999     [disable run-time assertions (default enabled)]),,
1000   [enable_debug="yes"])
1001 AH_TEMPLATE(NDEBUG,
1002             [Define to 1 if debug code should NOT be compiled])
1003 AS_IF([test "${enable_debug}" != "no"], [
1004   AC_CHECK_HEADERS([valgrind/valgrind.h])
1005 ], [
1006   AC_DEFINE(NDEBUG)
1010 dnl  Profiling
1012 AC_ARG_ENABLE([gprof],
1013   AS_HELP_STRING([--enable-gprof],[profile with gprof (default disabled)]),,
1014   [enable_gprof="no"])
1015 AS_IF([test "${enable_gprof}" != "no"], [
1016   CFLAGS="${CFLAGS} -pg"
1017   CXXFLAGS="${CXXFLAGS} -pg"
1018   OBJCFLAGS="${OBJCFLAGS} -pg"
1019   LDFLAGS="${LDFLAGS} -pg"
1022 AC_ARG_ENABLE([cprof],
1023   AS_HELP_STRING([--enable-cprof],[profile with cprof (default disabled)]),,
1024   [enable_cprof="no"])
1025 AS_IF([test "${enable_gprof}" != "no"], [
1026   CFLAGS="${CFLAGS} -finstrument-functions"
1027   CXXFLAGS="${CXXFLAGS} -finstrument-functions"
1028   OBJCFLAGS="${OBJCFLAGS} -finstrument-functions"
1029   LDFLAGS="${LDFLAGS} -finstrument-functions"
1033 dnl  Test coverage
1035 AC_ARG_ENABLE([coverage],
1036   AS_HELP_STRING([--enable-coverage],
1037     [build for test coverage (default disabled)]),,
1038   [enable_coverage="no"])
1039 AS_IF([test "${enable_coverage}" != "no"], [
1040   CFLAGS="-fprofile-arcs -ftest-coverage ${CFLAGS}"
1041   CXXFLAGS="-fprofile-arcs -ftest-coverage ${CXXFLAGS}"
1042   LDFLAGS="-lgcov ${LDFLAGS}"
1045 AS_IF([test "${SYS}" != "mingw32" -a "${SYS}" != "os2"], [
1046   VLC_SAVE_FLAGS
1047   CFLAGS="${CFLAGS} -fvisibility=hidden"
1048   CXXFLAGS="${CXXFLAGS} -fvisibility=hidden"
1049   OBJCFLAGS="${OBJCFLAGS} -fvisibility=hidden"
1050   AC_CACHE_CHECK([if $CC accepts -fvisibility=hidden],
1051                  [ac_cv_c_visibility_hidden], [
1052     AC_COMPILE_IFELSE([AC_LANG_PROGRAM()], [
1053       ac_cv_c_visibility_hidden=yes
1054     ], [
1055       ac_cv_c_visibility_hidden=no
1056     ])
1057   ])
1058   AS_IF([test "${ac_cv_c_visibility_hidden}" = "no"], [VLC_RESTORE_FLAGS])
1062 dnl Sanitizer flags
1064 AC_ARG_WITH([sanitizer],
1065     AS_HELP_STRING([--with-sanitizer=(address/memory/undefined/thread)],
1066         [build with sanitizer flags (default disabled)]),
1067      [],
1068      [with_sanitizer=no])
1070 AS_VAR_IF(with_sanitizer, no, [], [
1071     AX_CHECK_COMPILE_FLAG([-fsanitize=${with_sanitizer}], [
1072         AX_APPEND_FLAG([-fsanitize=${with_sanitizer}])
1073         AX_APPEND_FLAG([-fsanitize=${with_sanitizer}], [CXXFLAGS])
1074         AX_APPEND_FLAG([-fsanitize=${with_sanitizer}], [LDFLAGS])
1075     ], [
1076         AC_MSG_ERROR(["-fsanitize=${with_sanitizer} not supported!"])
1077     ])
1078     AX_APPEND_FLAG([-g])
1079     AX_APPEND_FLAG([-g], [CXXFLAGS])
1081     AS_IF([test -z "${with_sanitizer##*address*}" ], [
1082        AX_APPEND_COMPILE_FLAGS([-fsanitize-address-use-after-scope -fno-omit-frame-pointer -fsanitize=pointer-compare -fsanitize=pointer-subtract])
1083        AX_APPEND_COMPILE_FLAGS([-fsanitize-address-use-after-scope -fno-omit-frame-pointer -fsanitize=pointer-compare -fsanitize=pointer-subtract], [CXXFLAGS])
1084     ])
1085     AS_IF([test -z "${with_sanitizer##*memory*}" ], [
1086         AX_APPEND_COMPILE_FLAGS([-fPIE -pie])
1087         AX_APPEND_COMPILE_FLAGS([-fPIE -pie], [CXXFLAGS])
1088     ])
1089     AS_IF([test -z "${with_sanitizer##*thread*}" ], [
1090         AX_APPEND_COMPILE_FLAGS([-fPIE -pie])
1091         AX_APPEND_COMPILE_FLAGS([-fPIE -pie], [CXXFLAGS])
1092     ])
1096 dnl  Enable/disable optimizations
1098 AC_ARG_ENABLE([optimizations],
1099   AS_HELP_STRING([--disable-optimizations],
1100     [disable compiler optimizations (default enabled)]),,
1101   [enable_optimizations="yes"])
1103 dnl Check for various optimization flags
1104 AS_IF([test "${enable_optimizations}" != "no"], [
1106   dnl -O3 only in production builds
1107   AS_IF([test "${enable_debug}" = "no"], [
1108     VLC_SAVE_FLAGS
1109     CFLAGS="${CFLAGS} -O3"
1110     CXXFLAGS="${CXXFLAGS} -O3"
1111     OBJCFLAGS="${OBJCFLAGS} -O3"
1112     AC_CACHE_CHECK([if $CC accepts -O3],  [ac_cv_c_o3], [
1113       AC_COMPILE_IFELSE([AC_LANG_PROGRAM()], [
1114         ac_cv_c_o3=yes
1115       ], [
1116         ac_cv_c_o3=no
1117       ])
1118     ])
1119     AS_IF([test "${ac_cv_c_o3}" = "no"], [VLC_RESTORE_FLAGS])
1120   ])
1122   dnl Check for fast maths
1123   AX_APPEND_COMPILE_FLAGS([-fno-math-errno -funsafe-math-optimizations -fno-rounding-math -fno-signaling-nans -fcx-limited-range], [CFLAGS])
1124   AX_APPEND_COMPILE_FLAGS([-fno-math-errno -funsafe-math-optimizations -fno-rounding-math -fno-signaling-nans -fcx-limited-range], [CXXFLAGS])
1126 AH_BOTTOM([
1127 #if defined(_MSC_VER) && !defined(__clang__)
1128 # pragma fenv_access(off)
1129 # pragma fp_contract(on)
1130 #elif defined(__GNUC__)
1131 /* Not supported so far */
1132 #else
1133 # pragma STDC FENV_ACCESS OFF
1134 # pragma STDC FP_CONTRACT ON
1135 #endif
1138   dnl Check for -funroll-loops
1139   VLC_SAVE_FLAGS
1140   CFLAGS="${CFLAGS} -funroll-loops"
1141   CXXFLAGS="${CXXFLAGS} -funroll-loops"
1142   OBJCFLAGS="${OBJCFLAGS} -funroll-loops"
1143   AC_CACHE_CHECK([if $CC accepts -funroll-loops], [ac_cv_c_unroll_loops], [
1144     AC_COMPILE_IFELSE([AC_LANG_PROGRAM()], [
1145       ac_cv_c_unroll_loops=yes
1146     ], [
1147       ac_cv_c_unroll_loops=no
1148     ])
1149   ])
1150   AS_IF([test "${ac_cv_c_unroll_loops}" = "no"], [VLC_RESTORE_FLAGS])
1152   AS_IF([test "$enable_debug" = "no"], [
1153     dnl Check for -fomit-frame-pointer
1154     VLC_SAVE_FLAGS
1155     CFLAGS="${CFLAGS} -fomit-frame-pointer"
1156     CXXFLAGS="${CXXFLAGS} -fomit-frame-pointer"
1157     OBJCFLAGS="${OBJCFLAGS} -fomit-frame-pointer"
1158     AC_CACHE_CHECK([if $CC accepts -fomit-frame-pointer],
1159       [ac_cv_c_omit_frame_pointer], [
1160       AC_COMPILE_IFELSE([AC_LANG_PROGRAM()], [
1161         ac_cv_c_omit_frame_pointer=yes
1162       ], [
1163         ac_cv_c_omit_frame_pointer=no
1164       ])
1165     ])
1166     AS_IF([test "${ac_cv_c_omit_frame_pointer}" = "no"], [VLC_RESTORE_FLAGS])
1167   ])
1171 AC_ARG_ENABLE([ssp],
1172   AS_HELP_STRING([--disable-ssp],
1173   [disable stack smashing protection (default enabled for optimized builds)]), [],
1174   [enable_ssp="yes"])
1176 AS_IF([test "${enable_ssp}" != "no" -a "${enable_optimizations}" != "no"], [
1177   VLC_SAVE_FLAGS
1178   AX_APPEND_COMPILE_FLAGS([-fstack-protector-strong])
1179   AX_APPEND_COMPILE_FLAGS([-fstack-protector-strong], [CXXFLAGS])
1180   dnl Win32 requires linking to ssp for stack-protection
1181   AS_IF([test "${SYS}" = "mingw32"], [
1182       LDFLAGS="${LDFLAGS} -lssp"
1183       AC_CACHE_CHECK([if linker supports stack protectors], [ac_cv_ld_ssp], [
1184         AC_TRY_LINK([#include <stdio.h>],[char buf[100]; fgets(buf, sizeof(buf), stdin);], [
1185           ac_cv_ld_ssp="yes"
1186         ], [
1187           ac_cv_ld_ssp="no"
1188         ])
1189       ])
1190       AS_IF([test "${ac_cv_ld_ssp}" = "no"], [VLC_RESTORE_FLAGS])
1191   ])
1194 AS_IF([test "${SYS}" = "mingw32"], [
1195     dnl library for BCrypt APIs
1196     AS_IF([test "${vlc_winstore_app}" = 1],
1197           [LDFLAGS="${LDFLAGS} -lbcrypt"])
1200 VLC_SAVE_FLAGS
1201 LDFLAGS="${LDFLAGS} -Wl,-Bsymbolic"
1202 AC_CACHE_CHECK([if linker supports -Bsymbolic], [ac_cv_ld_bsymbolic], [
1203   AC_TRY_LINK([],, [
1204     ac_cv_ld_bsymbolic="-Wl,-Bsymbolic"
1205   ], [
1206     ac_cv_ld_bsymbolic=""
1207   ])
1209 VLC_RESTORE_FLAGS
1210 SYMBOLIC_LDFLAGS="${ac_cv_ld_bsymbolic}"
1211 AC_SUBST([SYMBOLIC_LDFLAGS])
1213 VLC_SAVE_FLAGS
1214 LDFLAGS="${LDFLAGS} -Wl,-z,defs"
1215 AC_CACHE_CHECK([if linker supports -z,defs], [ac_cv_ld_z_defs], [
1216   AC_TRY_LINK([],, [
1217     ac_cv_ld_z_defs="yes"
1218   ], [
1219     ac_cv_ld_z_defs="no"
1220   ])
1222 AS_IF([test "${ac_cv_ld_z_defs}" = "no"], [VLC_RESTORE_FLAGS])
1224 dnl Check for __attribute__((packed))
1225 AC_CACHE_CHECK([for __attribute__((packed))],
1226   [ac_cv_c_attribute_packed],
1227   [ac_cv_c_attribute_packed=no
1228    AC_TRY_COMPILE(, [struct __attribute__((__packed__)) foo { int a; } b; (void)b;],
1229                     [ac_cv_c_attribute_packed=yes])])
1230 if test "${ac_cv_c_attribute_packed}" != "no"; then
1231   AC_DEFINE(HAVE_ATTRIBUTE_PACKED, 1, Support for __attribute__((packed)) for structs)
1235 dnl  Check the CPU
1237 case "${host_cpu}" in
1238   "")
1239     ARCH=unknown
1240     ;;
1241   armv*)
1242     ARCH="arm"
1243     host_cpu="arm"
1244     ;;
1245   *)
1246     ARCH="${host_cpu}"
1247     ;;
1248 esac
1250 dnl Check for backtrace() support
1251 AC_CHECK_HEADERS([execinfo.h])
1252 AC_CHECK_FUNCS([backtrace])
1255 dnl  default modules
1257 ALIASES="${ALIASES} cvlc rvlc"
1260 dnl  Accelerated modules
1263 dnl  Check for fully working MMX intrinsics
1264 dnl  We need support for -mmmx, we need <mmintrin.h>, and we also need a
1265 dnl  working compiler (http://gcc.gnu.org/bugzilla/show_bug.cgi?id=23963)
1266 AC_ARG_ENABLE([mmx],
1267   AS_HELP_STRING([--disable-mmx],
1268     [disable MMX optimizations (default auto)]),,[
1269   case "${host_cpu}" in
1270     i?86|x86_64)
1271       enable_mmx="yes"
1272       ;;
1273     *)
1274       enable_mmx="no"
1275       ;;
1276   esac
1278 have_mmx="no"
1279 have_mmxext="no"
1280 AS_IF([test "${enable_mmx}" != "no"], [
1281   ARCH="${ARCH} mmx"
1282   VLC_SAVE_FLAGS
1283   CFLAGS="${CFLAGS} -mmmx"
1284   AC_CACHE_CHECK([if $CC groks MMX intrinsics], [ac_cv_c_mmx_intrinsics], [
1285     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([
1286 [#include <mmintrin.h>
1287 #include <stdint.h>
1288 uint64_t frobzor;]], [
1289 [__m64 a, b, c;
1290 a = b = c = (__m64)frobzor;
1291 a = _mm_slli_pi16(a, 3);
1292 a = _mm_adds_pi16(a, b);
1293 c = _mm_srli_pi16(c, 8);
1294 c = _mm_slli_pi16(c, 3);
1295 b = _mm_adds_pi16(b, c);
1296 a = _mm_unpacklo_pi8(a, b);
1297 frobzor = (uint64_t)a;]])], [
1298       ac_cv_c_mmx_intrinsics=yes
1299     ], [
1300       ac_cv_c_mmx_intrinsics=no
1301     ])
1302   ])
1303   VLC_RESTORE_FLAGS
1304   AS_IF([test "${ac_cv_c_mmx_intrinsics}" != "no"], [
1305     AC_DEFINE(HAVE_MMX_INTRINSICS, 1, [Define to 1 if MMX intrinsics are available.])
1306   ])
1308   VLC_SAVE_FLAGS
1309   CFLAGS="${CFLAGS} -mmmx"
1310   AC_CACHE_CHECK([if $CC groks MMX inline assembly], [ac_cv_mmx_inline], [
1311     AC_COMPILE_IFELSE([AC_LANG_PROGRAM(,[[
1312 void *p;
1313 asm volatile("packuswb %%mm1,%%mm2"::"r"(p):"mm1", "mm2");
1315     ], [
1316       ac_cv_mmx_inline=yes
1317     ], [
1318       ac_cv_mmx_inline=no
1319     ])
1320   ])
1321   AS_IF([test "${ac_cv_mmx_inline}" != "no"], [
1322     AC_DEFINE(CAN_COMPILE_MMX, 1, [Define to 1 inline MMX assembly is available.])
1323     have_mmx="yes"
1324   ])
1326   AC_CACHE_CHECK([if $CC groks MMX EXT inline assembly],
1327                  [ac_cv_mmxext_inline], [
1328     AC_COMPILE_IFELSE([AC_LANG_PROGRAM(,[[
1329 void *p;
1330 asm volatile("maskmovq %%mm1,%%mm2"::"r"(p):"mm1", "mm2");
1332     ], [
1333       ac_cv_mmxext_inline=yes
1334     ], [
1335       ac_cv_mmxext_inline=no
1336     ])
1337   ])
1338   VLC_RESTORE_FLAGS
1339   AS_IF([test "${ac_cv_mmxext_inline}" != "no"], [
1340     AC_DEFINE(CAN_COMPILE_MMXEXT, 1, [Define to 1 if MMX EXT inline assembly is available.])
1341     have_mmxext="yes"
1342   ])
1344 AM_CONDITIONAL([HAVE_MMX], [test "${have_mmx}" = "yes"])
1345 AM_CONDITIONAL([HAVE_MMXEXT], [test "${have_mmxext}" = "yes"])
1347 dnl  Check for fully workin SSE2 intrinsics
1348 dnl  We need support for -msse[2], we need <emmintrin.h>, and we also need a
1349 dnl  working compiler (http://gcc.gnu.org/bugzilla/show_bug.cgi?id=23963)
1350 AC_ARG_ENABLE([sse],
1351   AS_HELP_STRING([--disable-sse],
1352     [disable SSE (1-4) optimizations (default auto)]),, [
1353   case "${host_cpu}" in
1354     i?86|x86_64)
1355       enable_sse=yes
1356       ;;
1357     *)
1358       enable_sse=no
1359       ;;
1360   esac
1362 have_sse2="no"
1363 AS_IF([test "${enable_sse}" != "no"], [
1364   ARCH="${ARCH} sse sse2"
1366   VLC_SAVE_FLAGS
1367   CFLAGS="${CFLAGS} -msse2"
1368   AC_CACHE_CHECK([if $CC groks SSE2 intrinsics], [ac_cv_c_sse2_intrinsics], [
1369     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([
1370 [#include <emmintrin.h>
1371 #include <stdint.h>
1372 uint64_t frobzor;]], [
1373 [__m128i a, b, c;
1374 a = b = c = _mm_set1_epi64((__m64)frobzor);
1375 a = _mm_slli_epi16(a, 3);
1376 a = _mm_adds_epi16(a, b);
1377 c = _mm_srli_epi16(c, 8);
1378 c = _mm_slli_epi16(c, 3);
1379 b = _mm_adds_epi16(b, c);
1380 a = _mm_unpacklo_epi8(a, b);
1381 frobzor = (uint64_t)_mm_movepi64_pi64(a);]])], [
1382       ac_cv_c_sse2_intrinsics=yes
1383     ], [
1384       ac_cv_c_sse2_intrinsics=no
1385     ])
1386   ])
1387   VLC_RESTORE_FLAGS
1388   AS_IF([test "${ac_cv_c_sse2_intrinsics}" != "no"], [
1389     AC_DEFINE(HAVE_SSE2_INTRINSICS, 1, [Define to 1 if SSE2 intrinsics are available.])
1390   ])
1392   VLC_SAVE_FLAGS
1393   CFLAGS="${CFLAGS} -msse"
1394   AC_CACHE_CHECK([if $CC groks SSE inline assembly], [ac_cv_sse_inline], [
1395     AC_COMPILE_IFELSE([AC_LANG_PROGRAM(,[[
1396 void *p;
1397 asm volatile("xorps %%xmm1,%%xmm2"::"r"(p):"xmm1", "xmm2");
1399     ], [
1400       ac_cv_sse_inline=yes
1401     ], [
1402       ac_cv_sse_inline=no
1403     ])
1404   ])
1406   AS_IF([test "${ac_cv_sse_inline}" != "no" -a "${SYS}" != "solaris"], [
1407     AC_DEFINE(CAN_COMPILE_SSE, 1, [Define to 1 if SSE inline assembly is available.])
1408   ])
1410   AC_CACHE_CHECK([if $CC groks SSE2 inline assembly], [ac_cv_sse2_inline], [
1411     AC_COMPILE_IFELSE([AC_LANG_PROGRAM(,[[
1412 void *p;
1413 asm volatile("punpckhqdq %%xmm1,%%xmm2"::"r"(p):"xmm1", "xmm2");
1415     ], [
1416       ac_cv_sse2_inline=yes
1417     ], [
1418       ac_cv_sse2_inline=no
1419     ])
1420   ])
1421   AS_IF([test "${ac_cv_sse2_inline}" != "no" -a "${SYS}" != "solaris"], [
1422     AC_DEFINE(CAN_COMPILE_SSE2, 1, [Define to 1 if SSE2 inline assembly is available.])
1423     have_sse2="yes"
1424   ])
1426   # SSE3
1427   AC_CACHE_CHECK([if $CC groks SSE3 inline assembly], [ac_cv_sse3_inline], [
1428     AC_COMPILE_IFELSE([AC_LANG_PROGRAM(,[[
1429 void *p;
1430 asm volatile("movsldup %%xmm1,%%xmm0"::"r"(p):"xmm0", "xmm1");
1432     ], [
1433       ac_cv_sse3_inline=yes
1434     ], [
1435       ac_cv_sse3_inline=no
1436     ])
1437   ])
1439   AS_IF([test "${ac_cv_sse3_inline}" != "no"], [
1440     AC_DEFINE(CAN_COMPILE_SSE3, 1, [Define to 1 if SSE3 inline assembly is available.]) ])
1442   # SSSE3
1443   AC_CACHE_CHECK([if $CC groks SSSE3 inline assembly], [ac_cv_ssse3_inline], [
1444     AC_COMPILE_IFELSE([AC_LANG_PROGRAM(,[[
1445 void *p;
1446 asm volatile("pabsw %%xmm0,%%xmm0"::"r"(p):"xmm0");
1448     ], [
1449       ac_cv_ssse3_inline=yes
1450     ], [
1451       ac_cv_ssse3_inline=no
1452     ])
1453   ])
1455   AS_IF([test "${ac_cv_ssse3_inline}" != "no"], [
1456     AC_DEFINE(CAN_COMPILE_SSSE3, 1, [Define to 1 if SSSE3 inline assembly is available.]) ])
1458   # SSE4.1
1459   AC_CACHE_CHECK([if $CC groks SSE4.1 inline assembly],
1460                  [ac_cv_sse4_1_inline], [
1461     AC_COMPILE_IFELSE([AC_LANG_PROGRAM(,[[
1462 void *p;
1463 asm volatile("pmaxsb %%xmm1,%%xmm0"::"r"(p):"xmm0", "xmm1");
1465     ], [
1466       ac_cv_sse4_1_inline=yes
1467     ], [
1468       ac_cv_sse4_1_inline=no
1469     ])
1470   ])
1472   AS_IF([test "${ac_cv_sse4_1_inline}" != "no"], [
1473     AC_DEFINE(CAN_COMPILE_SSE4_1, 1, [Define to 1 if SSE4_1 inline assembly is available.]) ])
1475   # SSE4.2
1476   AC_CACHE_CHECK([if $CC groks SSE4.2 inline assembly],
1477                  [ac_cv_sse4_2_inline], [
1478     AC_COMPILE_IFELSE([AC_LANG_PROGRAM(,[[
1479 void *p;
1480 asm volatile("pcmpgtq %%xmm1,%%xmm0"::"r"(p):"xmm0", "xmm1");
1482     ], [
1483       ac_cv_sse4_2_inline=yes
1484     ], [
1485       ac_cv_sse4_2_inline=no
1486     ])
1487   ])
1489   AS_IF([test "${ac_cv_sse4_2_inline}" != "no"], [
1490     AC_DEFINE(CAN_COMPILE_SSE4_2, 1, [Define to 1 if SSE4_2 inline assembly is available.]) ])
1492   # SSE4A
1493   AC_CACHE_CHECK([if $CC groks SSE4A inline assembly], [ac_cv_sse4a_inline], [
1494     AC_COMPILE_IFELSE([AC_LANG_PROGRAM(,[[
1495 void *p;
1496 asm volatile("insertq %%xmm1,%%xmm0"::"r"(p):"xmm0", "xmm1");
1498     ], [
1499       ac_cv_sse4a_inline=yes
1500     ], [
1501       ac_cv_sse4a_inline=no
1502     ])
1503   ])
1504   VLC_RESTORE_FLAGS
1505   AS_IF([test "${ac_cv_sse4a_inline}" != "no"], [
1506     AC_DEFINE([CAN_COMPILE_SSE4A], [1], [Define to 1 if SSE4A inline assembly is available.]) ])
1508 AM_CONDITIONAL([HAVE_SSE2], [test "$have_sse2" = "yes"])
1510 dnl  Check for fully workin AVX2 intrinsics
1511 dnl  We need support for -mavx[2], we need <immintrin.h>, and we also need a
1512 dnl  working compiler (http://gcc.gnu.org/bugzilla/show_bug.cgi?id=23963)
1513 AC_ARG_ENABLE([avx],
1514   AS_HELP_STRING([--disable-avx],
1515     [disable AVX (1-2) optimizations (default auto)]),, [
1516   case "${host_cpu}" in
1517     i?86|x86_64)
1518       enable_avx=yes
1519       ;;
1520     *)
1521       enable_avx=no
1522       ;;
1523   esac
1525 have_avx2="no"
1526 AS_IF([test "${enable_avx}" != "no"], [
1527   ARCH="${ARCH} avx avx2"
1529   VLC_SAVE_FLAGS
1530   CFLAGS="${CFLAGS} -mavx2"
1531   AC_CACHE_CHECK([if $CC groks AVX2 intrinsics], [ac_cv_c_avx2_intrinsics], [
1532     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([
1533 [#include <immintrin.h>
1534 #include <stdint.h>
1535 uint64_t frobzor;]], [
1536 [__m256i a, b, c;
1537 a = b = c = _mm256_set1_epi64x((int64_t)frobzor);
1538 a = _mm256_slli_epi16(a, 3);
1539 a = _mm256_adds_epi16(a, b);
1540 c = _mm256_srli_epi16(c, 8);
1541 c = _mm256_slli_epi16(c, 3);
1542 b = _mm256_adds_epi16(b, c);
1543 a = _mm256_unpacklo_epi8(a, b);
1544 frobzor = (uint64_t)_mm256_extract_epi64(a, 0);]])], [
1545       ac_cv_c_avx2_intrinsics=yes
1546     ], [
1547       ac_cv_c_avx2_intrinsics=no
1548     ])
1549   ])
1550   VLC_RESTORE_FLAGS
1551   AS_IF([test "${ac_cv_c_avx2_intrinsics}" != "no"], [
1552     AC_DEFINE(HAVE_AVX2_INTRINSICS, 1, [Define to 1 if AVX2 intrinsics are available.])
1553   ])
1555   VLC_SAVE_FLAGS
1556   CFLAGS="${CFLAGS} -mavx"
1557   AC_CACHE_CHECK([if $CC groks AVX inline assembly], [ac_cv_avx_inline], [
1558     AC_COMPILE_IFELSE([AC_LANG_PROGRAM(,[[
1559 void *p;
1560 asm volatile("xorps256 %%ymm1,%%ymm2"::"r"(p):"ymm1", "ymm2");
1562     ], [
1563       ac_cv_avx_inline=yes
1564     ], [
1565       ac_cv_avx_inline=no
1566     ])
1567   ])
1569   AS_IF([test "${ac_cv_avx_inline}" != "no" -a "${SYS}" != "solaris"], [
1570     AC_DEFINE(CAN_COMPILE_AVX, 1, [Define to 1 if AVX inline assembly is available.])
1571   ])
1573   AC_CACHE_CHECK([if $CC groks AVX2 inline assembly], [ac_cv_avx2_inline], [
1574     AC_COMPILE_IFELSE([AC_LANG_PROGRAM(,[[
1575 void *p;
1576 asm volatile("punpckhqdq256 %%ymm1,%%ymm2"::"r"(p):"ymm1", "ymm2");
1578     ], [
1579       ac_cv_avx2_inline=yes
1580     ], [
1581       ac_cv_avx2_inline=no
1582     ])
1583   ])
1584   VLC_RESTORE_FLAGS
1585   AS_IF([test "${ac_cv_avx2_inline}" != "no" -a "${SYS}" != "solaris"], [
1586     AC_DEFINE(CAN_COMPILE_AVX2, 1, [Define to 1 if AVX2 inline assembly is available.])
1587     have_avx2="yes"
1588   ])
1590 AM_CONDITIONAL([HAVE_AVX2], [test "$have_avx2" = "yes"])
1592 VLC_SAVE_FLAGS
1593 CFLAGS="${CFLAGS} -mmmx"
1594 have_3dnow="no"
1595 AC_CACHE_CHECK([if $CC groks 3D Now! inline assembly], [ac_cv_3dnow_inline], [
1596   AC_COMPILE_IFELSE([AC_LANG_PROGRAM(,[[
1597 void *p;
1598 asm volatile("pfadd %%mm1,%%mm2"::"r"(p):"mm1", "mm2");
1600   ], [
1601     ac_cv_3dnow_inline=yes
1602   ], [
1603     ac_cv_3dnow_inline=no
1604   ])
1606 VLC_RESTORE_FLAGS
1607 AS_IF([test "${ac_cv_3dnow_inline}" != "no"], [
1608   AC_DEFINE([CAN_COMPILE_3DNOW], 1,
1609             [Define to 1 if 3D Now! inline assembly is available.])
1610   have_3dnow="yes"
1612 AM_CONDITIONAL([HAVE_3DNOW], [test "$have_3dnow" = "yes"])
1615 AC_ARG_ENABLE([neon],
1616   AS_HELP_STRING([--disable-neon],
1617     [disable ARM NEON optimizations (default auto)]),, [
1618   case "${host_cpu}" in
1619     "arm")
1620       enable_neon="32"
1621       ;;
1622     "aarch64")
1623       enable_neon="64"
1624       ;;
1625     *)
1626       enable_neon="no"
1627       ;;
1628   esac
1630 AS_IF([test "${enable_neon}" != "no"], [
1631   VLC_SAVE_FLAGS
1632   AC_CACHE_CHECK([if $CCAS groks ARM NEON assembly], [ac_cv_arm_neon], [
1633     AS_IF([test "${enable_neon}" != "64"], [
1634       CFLAGS="${CFLAGS} -mfpu=neon -mhard-float"
1635       AC_COMPILE_IFELSE([
1636         AC_LANG_PROGRAM(,[[
1637 asm volatile("vqmovun.s64 d0, q1":::"d0");
1639       ], [
1640         ac_cv_arm_neon="32"
1641       ], [
1642         ac_cv_arm_neon="no"
1643       ])
1644     ], [
1645       CFLAGS="${CFLAGS} -march=armv8-a+simd"
1646       AC_COMPILE_IFELSE([
1647         AC_LANG_PROGRAM(,[[
1648 asm volatile("uhadd v0.8b, v0.8b, v1.8b":::"v0");
1650       ], [
1651         ac_cv_arm_neon="64"
1652       ], [
1653         ac_cv_arm_neon="no"
1654       ])
1655     ])
1656   ])
1657   VLC_RESTORE_FLAGS
1659 AM_CONDITIONAL([HAVE_NEON], [test "${ac_cv_arm_neon}" = "32"])
1660 AM_CONDITIONAL([HAVE_ARM64], [test "${ac_cv_arm_neon}" = "64"])
1662 AC_ARG_ENABLE([sve],
1663   AS_HELP_STRING([--disable-sve],
1664     [disable ARM SVE optimizations (default auto)]),, [
1665   AS_IF([test "${host_cpu}" = "aarch64"], [enable_sve="yes"] ,[enable_sve="no"])
1667 AS_IF([test "${enable_sve}" != "no"], [
1668   VLC_SAVE_FLAGS
1669   CFLAGS="${CFLAGS} -march=armv8-a+sve"
1670   AC_CACHE_CHECK([if $CCAS groks ARM SVE assembly], [ac_cv_arm_sve], [
1671     AC_COMPILE_IFELSE([
1672       AC_LANG_PROGRAM(,[[
1673 asm volatile("ptrue p0.s" ::: "p0");
1675     ], [
1676       ac_cv_arm_sve="yes"
1677     ], [
1678       ac_cv_arm_sve="no"
1679     ])
1680   ])
1681   VLC_RESTORE_FLAGS
1683 AM_CONDITIONAL([HAVE_SVE], [test "${ac_cv_arm_sve}" = "yes"])
1685 AC_ARG_ENABLE([pointer-auth],
1686   AS_HELP_STRING([--disable-pointer-auth],
1687     [disable ARMv8.3 Pointer Authentication (default auto)]),, [
1688   AS_IF([test "${host_cpu}" = "aarch64"], [enable_ptrauth="yes"] ,[enable_ptrauth="no"])
1690 AS_IF([test "${enable_ptrauth}" != "no"], [
1691   AX_CHECK_COMPILE_FLAG([-msign-return-address=non-leaf], [
1692     AX_APPEND_FLAG([-msign-return-address=non-leaf], [CFLAGS])
1693     AX_APPEND_FLAG([-msign-return-address=non-leaf], [CXXFLAGS])
1694   ])
1698 AC_ARG_ENABLE([altivec],
1699   AS_HELP_STRING([--disable-altivec],
1700     [disable AltiVec optimizations (default auto)]),, [
1701   AS_CASE("${host_cpu}", [powerpc*],
1702         [enable_altivec=yes], [enable_altivec=no])
1704 have_altivec="no"
1705 ALTIVEC_CFLAGS=""
1706 AS_IF([test "${enable_altivec}" = "yes"], [
1707   ARCH="${ARCH} altivec";
1708   VLC_SAVE_FLAGS
1709   AC_CACHE_CHECK([if $CC groks AltiVec inline assembly],
1710     [ac_cv_altivec_inline],
1711     [AC_TRY_COMPILE(,[asm volatile("vperm 0,1,2,3");],
1712          ac_cv_altivec_inline="yes",
1713          [CFLAGS="${CFLAGS} -Wa,-maltivec"
1714           AC_TRY_COMPILE(,[asm volatile("vperm 0,1,2,3");],
1715             [ac_cv_altivec_inline="-Wa,-maltivec"],
1716             ac_cv_altivec_inline=no)
1717          ])])
1718   VLC_RESTORE_FLAGS
1719   AS_IF([test "${ac_cv_altivec_inline}" != "no"], [
1720     AC_DEFINE(CAN_COMPILE_ALTIVEC, 1,
1721               [Define to 1 if AltiVec inline assembly is available.])
1722     AS_IF([test "${ac_cv_altivec_inline}" != "yes"], [
1723       ALTIVEC_CFLAGS="${ac_cv_altivec_inline}"
1724       VLC_ADD_CFLAGS([libvlccore],[${ac_cv_altivec_inline}])
1725     ])
1726     have_altivec="yes"
1727   ])
1729   VLC_SAVE_FLAGS
1730   AC_CACHE_CHECK([if \$CC groks AltiVec C extensions],
1731   [ac_cv_c_altivec], [
1732     CFLAGS="${CFLAGS} -maltivec"
1733     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([
1734 [#include <altivec.h>]], [
1735 [vec_ld(0, (unsigned char *)0);]])], [
1736       ac_cv_c_altivec="-maltivec"
1737     ], [
1738       ac_cv_c_altivec="no"
1739     ])
1740   ])
1741   VLC_RESTORE_FLAGS
1742   AS_IF([test "${ac_cv_c_altivec}" != "no"], [
1743     CPPFLAGS="${CPPFLAGS} ${ac_cv_c_altivec}"
1744     AC_DEFINE(CAN_COMPILE_C_ALTIVEC, 1, [Define to 1 if C AltiVec extensions are available.])
1745     VLC_ADD_CFLAGS([libvlccore],[${ac_cv_c_altivec}])
1746     ALTIVEC_CFLAGS="$ALTIVEC_CFLAGS ${ac_cv_c_altivec}"
1747     VLC_ADD_CFLAGS([deinterlace],[${ac_cv_c_altivec}])
1748     have_altivec="yes"
1749   ])
1750   AC_CHECK_HEADERS([altivec.h])
1752   VLC_SAVE_FLAGS
1753   LDFLAGS="${LDFLAGS} -Wl,-framework,vecLib"
1754   AC_CACHE_CHECK([if linker needs -framework vecLib],
1755     [ac_cv_ld_altivec],
1756     [AC_TRY_LINK([],,ac_cv_ld_altivec=yes,ac_cv_ld_altivec=no)])
1757   VLC_RESTORE_FLAGS
1758   AS_IF([test "${ac_cv_ld_altivec}" != "no"], [
1759     VLC_ADD_LIBS([libvlccore],[-Wl,-framework,vecLib])
1760   ])
1762 AC_SUBST([ALTIVEC_CFLAGS])
1763 AM_CONDITIONAL([HAVE_ALTIVEC], [test "$have_altivec" = "yes"])
1766 dnl  Memory usage
1768 AC_ARG_ENABLE([optimize-memory],
1769   AS_HELP_STRING([--enable-optimize-memory],
1770     [optimize memory usage over performance]))
1771 if test "${enable_optimize_memory}" = "yes"; then
1772   AC_DEFINE(OPTIMIZE_MEMORY, 1, Define if you want to optimize memory usage over performance)
1776 dnl Allow running as root (useful for people running on embedded platforms)
1778 AC_ARG_ENABLE([run-as-root],
1779   AS_HELP_STRING([--enable-run-as-root],
1780     [allow running VLC as root (default disabled)]))
1781 AS_IF([test "${enable_run_as_root}" = "yes"],[
1782     AC_DEFINE(ALLOW_RUN_AS_ROOT, 1,
1783               [Define to 1 to allow running VLC as root (uid 0).])
1787 dnl Stream output
1789 AC_ARG_ENABLE([sout],
1790   AS_HELP_STRING([--disable-sout],
1791     [disable streaming output (default enabled)]))
1792 AS_IF([test "${enable_sout}" != "no"], [
1793   AC_DEFINE(ENABLE_SOUT, 1, [Define to 1 for stream output support.])
1795 AM_CONDITIONAL([ENABLE_SOUT], [test "${enable_sout}" != "no"])
1797 dnl Lua modules
1798 AC_ARG_ENABLE([lua],
1799   AS_HELP_STRING([--disable-lua],
1800     [disable LUA scripting support (default enabled)]))
1801 if test "${enable_lua}" != "no"
1802 then
1803   PKG_CHECK_MODULES(LUA, lua5.2,
1804     [ have_lua=yes ],
1805     [
1806     AC_MSG_WARN([${LUA_PKG_ERRORS}, trying lua 5.1 instead])
1808     PKG_CHECK_MODULES(LUA, lua5.1,
1809       [ have_lua=yes ],
1810       [
1811       AC_MSG_WARN([${LUA_PKG_ERRORS}, trying lua >= 5.1 instead])
1812       PKG_CHECK_MODULES(LUA, lua >= 5.1,
1813         [ have_lua=yes ],
1814         [
1815           AC_MSG_WARN([${LUA_PKG_ERRORS}, trying manual detection instead])
1816           have_lua=yes
1817           AC_CHECK_HEADERS([lua.h lauxlib.h lualib.h],
1818             [],
1819             [ have_lua=no ] )
1820           AC_CHECK_LIB(  lua5.2 , luaL_newstate,
1821             [LUA_LIBS="-llua5.2"],
1822           AC_CHECK_LIB( lua5.1 , luaL_newstate,
1823             [LUA_LIBS="-llua5.1"],
1824             AC_CHECK_LIB( lua51 , luaL_newstate,
1825               [LUA_LIBS="-llua51"],
1826               AC_CHECK_LIB( lua , luaL_newstate,
1827                 [LUA_LIBS="-llua"],
1828                 [ have_lua=no
1829                 ], [-lm])
1830             )))
1831         ])
1832       ])
1833     ])
1834   if test "x${have_lua}" != "xyes" ;  then
1835       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.])
1836   fi
1837   AC_ARG_VAR([LUAC], [LUA byte compiler])
1838   AS_IF([test -z "$LUAC"], [
1839      AC_CHECK_TOOL(LUAC, [luac], [false])
1840   ])
1841   AS_IF([test "${LUAC}" = "false"], [
1842     AC_MSG_ERROR([Could not find the LUA byte compiler.])
1843   ])
1844   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], [
1845     AC_MSG_ERROR([You need 32-bits luac when using lua from contrib.])
1846   ])
1848 AM_CONDITIONAL([BUILD_LUA], [test "${have_lua}" = "yes"])
1852 dnl VideoLAN manager
1854 AC_ARG_ENABLE([vlm],
1855   AS_HELP_STRING([--disable-vlm],
1856     [disable the stream manager (default enabled)]),,
1857   [enable_vlm="${enable_sout}"])
1858 AS_IF([test "${enable_vlm}" != "no"], [
1859   AS_IF([test "${enable_sout}" = "no"], [
1860     AC_MSG_ERROR([VLM requires the stream output. Do not use --disable-sout.])
1861   ])
1862   AC_DEFINE(ENABLE_VLM, 1, [Define if you want the VideoLAN manager support])
1864 AM_CONDITIONAL([ENABLE_VLM], [test "${enable_vlm}" != "no"])
1868 dnl Addons manager storage and repositories modules
1870 AC_ARG_ENABLE([addonmanagermodules],
1871   AS_HELP_STRING([--disable-addonmanagermodules],
1872     [disable the addons manager modules (default enabled)]))
1873 if test "${enable_addonmanagermodules}" != "no"
1874 then
1875   AC_DEFINE(ENABLE_ADDONMANAGERMODULES, 1, [Define if you want the addons manager modules])
1877 AM_CONDITIONAL([ENABLE_ADDONMANAGERMODULES], [test "${enable_addonmanagermodules}" != "no"])
1881 dnl  Input plugins
1884 EXTEND_HELP_STRING([Input plugins:])
1887 dnl  libarchive access module
1889 PKG_ENABLE_MODULES_VLC([ARCHIVE], [archive], [libarchive >= 3.1.0], (libarchive support), [auto])
1892 dnl  live555 input
1894 AC_ARG_ENABLE([live555],
1895   AS_HELP_STRING([--enable-live555],
1896     [enable RTSP input through live555 (default enabled)]))
1898 AS_IF([test "${enable_live555}" != "no" -a -n "${CXX}"], [
1899   PKG_CHECK_MODULES(LIVE555, live555, [
1900     VLC_ADD_PLUGIN([live555])
1901     VLC_ADD_CXXFLAGS([live555], [$LIVE555_CFLAGS])
1902     VLC_ADD_LIBS([live555],[$LIVE555_LIBS])
1903   ], [
1904     AC_MSG_WARN([${LIVE555_PKG_ERRORS}.])
1906     AC_LANG_PUSH(C++)
1907     VLC_SAVE_FLAGS
1909     dnl detect include paths
1910     AS_IF([test -f "${CONTRIB_DIR}/include/UsageEnvironment/UsageEnvironment.hh"], [
1911       CPPFLAGS_live555="-I${CONTRIB_DIR}/include/liveMedia -I${CONTRIB_DIR}/include/groupsock -I${CONTRIB_DIR}/include/BasicUsageEnvironment -I${CONTRIB_DIR}/include/UsageEnvironment"
1912     ], [
1913       AS_IF([test "${SYS}" != "os2"], [
1914         LIVE555_PREFIX=${LIVE555_PREFIX-"/usr"}
1915         CPPFLAGS_live555="-I${LIVE555_PREFIX}/include/liveMedia -I${LIVE555_PREFIX}/include/groupsock -I${LIVE555_PREFIX}/include/BasicUsageEnvironment -I${LIVE555_PREFIX}/include/UsageEnvironment"
1916       ], [
1917         LIVE555_PREFIX=${LIVE555_PREFIX-"/usr/lib/live"}
1918         CPPFLAGS_live555="-I${LIVE555_PREFIX}/liveMedia/include -I${LIVE555_PREFIX}/groupsock/include -I${LIVE555_PREFIX}/BasicUsageEnvironment/include -I${LIVE555_PREFIX}/UsageEnvironment/include"
1919         LDFLAGS_live555="-L${LIVE555_PREFIX}/liveMedia -L${LIVE555_PREFIX}/groupsock -L${LIVE555_PREFIX}/BasicUsageEnvironment -L${LIVE555_PREFIX}/UsageEnvironment"
1920       ])
1921     ])
1923     dnl CPP Flags
1924     AS_IF([test "${SYS}" = "solaris"], [
1925       CPPFLAGS_live555="${CPPFLAGS_live555} -DSOLARIS"
1926     ])
1927     CPPFLAGS="${CPPFLAGS} ${CPPFLAGS_live555}"
1928     LDFLAGS="${LDFLAGS} ${LDFLAGS_live555}"
1930     dnl version check
1931     AC_CACHE_CHECK([for live555 version 1324598400 or later], [ac_cv_live555], [
1932       AC_PREPROC_IFELSE([AC_LANG_PROGRAM([
1933 [#include <liveMedia_version.hh>
1934 #if !defined (LIVEMEDIA_LIBRARY_VERSION_INT) || (LIVEMEDIA_LIBRARY_VERSION_INT < 1324598400)
1935 # error BOOM
1936 #endif]])
1937       ], [
1938         ac_cv_live555="yes"
1939       ], [
1940         ac_cv_live555="no"
1941       ])
1942     ])
1944     AS_IF([test "$ac_cv_live555" = "no"], [
1945       AC_MSG_WARN([live555 is missing or its installed version is too old:
1946 Version 2011.12.23 or later is required to proceed.
1947 You can get an updated one from http://www.live555.com/liveMedia .])
1948       AS_IF([test -n "${enable_live555}"], [
1949         AC_MSG_ERROR([Update live555 or pass --disable-live555 to disable RTSP input support.])
1950       ])
1951     ], [
1952       other_libs="-lgroupsock -lBasicUsageEnvironment -lUsageEnvironment"
1953       other_libs_pic="-lgroupsock_pic -lBasicUsageEnvironment_pic -lUsageEnvironment_pic"
1954       AS_IF([test "${SYS}" = "mingw32"], [
1955         # add ws2_32 for closesocket, select, recv
1956         other_libs="$other_libs -lws2_32"
1957       ])
1959       dnl We need to check for pic because live555 don't provide shared libs
1960       dnl and we want to build a plugins so we need -fPIC on some arch.
1961       VLC_ADD_CXXFLAGS([live555], [${CPPFLAGS_live555}])
1962       VLC_ADD_LDFLAGS([live555], [${LDFLAGS_live555}])
1963       AC_CHECK_LIB([liveMedia_pic], [main], [
1964         VLC_ADD_PLUGIN([live555])
1965         VLC_ADD_LIBS([live555], [-lliveMedia_pic ${other_libs_pic}])
1966       ],[
1967         AC_CHECK_LIB([liveMedia], [main], [
1968           VLC_ADD_PLUGIN([live555])
1969           VLC_ADD_LIBS([live555], [-lliveMedia ${other_libs}])
1970         ],[],[${other_libs}])
1971       ],[${other_libs_pic}])
1972     ])
1973     VLC_RESTORE_FLAGS
1974     AC_LANG_POP(C++)
1975   ])
1979 dnl IIDC and DV FireWire input modules
1981 PKG_ENABLE_MODULES_VLC([DC1394], [], [libdc1394-2 >= 2.1.0], [IIDC FireWire input module], [auto])
1982 PKG_ENABLE_MODULES_VLC([DV1394], [], [libraw1394 >= 2.0.1 libavc1394 >= 0.5.3], [DV FireWire input module], [auto])
1985 dnl - linsys modules: access module check for libzvbi
1987 AC_ARG_ENABLE([linsys],
1988   AS_HELP_STRING([--enable-linsys],
1989     [Linux Linear Systems Ltd. SDI and HD-SDI input cards (default enabled)]))
1990 AS_IF([test "$SYS" = "linux" -a "${enable_linsys}" != "no"], [
1991   VLC_ADD_PLUGIN([linsys_hdsdi])
1992   PKG_CHECK_MODULES(LINSYS_SDI, [zvbi-0.2 >= 0.2.28], [
1993     VLC_ADD_PLUGIN([linsys_sdi])
1994   ], [
1995     AC_MSG_WARN([${LINSYS_SDI_PKG_ERRORS}.])
1996   ])
2000 dnl dvdread module: check for libdvdread
2002 PKG_ENABLE_MODULES_VLC([DVDREAD], [], [dvdread > 6.0.0], [dvdread input module], [auto])
2005 dnl libdvdnav plugin
2007 PKG_ENABLE_MODULES_VLC([DVDNAV], [], [dvdnav >= 6.0.0], [DVD with navigation input module (dvdnav)], [auto])
2010 dnl  Blu-ray Disc Support with libbluray
2012 PKG_ENABLE_MODULES_VLC([BLURAY], [libbluray], [libbluray >= 0.6.2], (libbluray for Blu-ray disc support ) )
2015 dnl  OpenCV wrapper and example filters
2017 PKG_ENABLE_MODULES_VLC([OPENCV], [opencv_example opencv_wrapper], [opencv > 2.0], (OpenCV (computer vision) filter), [auto])
2021 dnl  libsmbclient plugin
2023 PKG_ENABLE_MODULES_VLC([SMBCLIENT], [smbc], [smbclient], (SMB/CIFS support), [auto])
2026 dnl  liBDSM access module
2028 AM_CONDITIONAL([HAVE_DSM], [test "$AS_TR_SH(with_dsm)" = "yes"])
2029 PKG_WITH_MODULES([DSM], [libdsm >= 0.2.0], [
2030        VLC_ADD_PLUGIN([dsm])
2031        VLC_ADD_CFLAGS([dsm], [$DSM_CFLAGS])
2032        VLC_ADD_LIBS([dsm], [$DSM_LIBS])
2033        have_dsm="yes"
2034    ],,[libdsm SMB/CIFS access/sd module], [auto])
2035 AM_CONDITIONAL([HAVE_DSM], [test "${have_dsm}" = "yes"])
2038 dnl sftp access support
2040 PKG_ENABLE_MODULES_VLC([SFTP], [sftp], [libssh2], (support SFTP file transfer via libssh2), [auto])
2043 dnl nfs access support
2045 PKG_ENABLE_MODULES_VLC([NFS], [nfs], [libnfs >= 1.10.0], (support nfs protocol via libnfs), [auto])
2048 dnl smb2 access support
2050 PKG_ENABLE_MODULES_VLC([SMB2], [smb2], [libsmb2 >= 3.0.0], (support smb2 protocol via libsmb2), [auto])
2053 dnl  Video4Linux 2
2055 AC_ARG_ENABLE([v4l2], AS_HELP_STRING([--disable-v4l2],
2056   [disable Video4Linux version 2 (default auto)]))
2057 have_v4l2="no"
2058 AS_IF([test "$enable_v4l2" != "no"], [
2059   AC_CHECK_HEADERS([linux/videodev2.h], [
2060     have_v4l2="yes"
2061   ])
2063 AM_CONDITIONAL([HAVE_V4L2], [test "${have_v4l2}" != "no"])
2066 dnl  NVDEC decoder/encoder
2068 AC_ARG_ENABLE([nvdec], AS_HELP_STRING([--disable-nvdec],
2069   [disable NVDEC decoder (default auto)]))
2070 have_nvdec="no"
2071 AS_IF([test "$enable_nvdec" != "no"], [
2072   AC_CHECK_HEADERS([ffnvcodec/dynlink_loader.h], [
2073     have_nvdec="yes"
2074   ])
2076 AM_CONDITIONAL([HAVE_NVDEC], [test "${have_nvdec}" != "no"])
2079 dnl special access module for Blackmagic SDI cards
2081 AC_ARG_ENABLE([decklink],
2082   AS_HELP_STRING([--disable-decklink],
2083     [disable Blackmagic DeckLink SDI input (default auto)]))
2084 AC_ARG_WITH([decklink_sdk],
2085   AS_HELP_STRING([--with-decklink-sdk=DIR],
2086     [location of Blackmagic DeckLink SDI SDK]))
2087 have_decklink=no
2088 if test "${enable_decklink}" != "no"
2089 then
2090   if test "${with_decklink_sdk}" != "no" -a -n "${with_decklink_sdk}"
2091   then
2092     VLC_ADD_CPPFLAGS([decklink decklinkoutput stream_out_sdi],[-I${with_decklink_sdk}/include])
2093   fi
2094   VLC_SAVE_FLAGS
2095   CPPFLAGS="${CPPFLAGS} ${CPPFLAGS_decklink}"
2096   AC_LANG_PUSH([C++])
2097   AC_CHECK_HEADERS([DeckLinkAPIDispatch.cpp], [
2098       have_decklink=yes
2099       AS_IF([test "${SYS}" = "darwin"], [
2100         VLC_ADD_LIBS([decklink decklinkoutput],[-Wl,-framework,CoreFoundation])
2101       ])
2102   ], [
2103       AS_IF([test "${enable_decklink}" = "yes"], [
2104         AC_MSG_ERROR([Blackmagic DeckLink SDI include files not found!])
2105       ], [
2106         AC_MSG_WARN([Blackmagic DeckLink SDI include files not found, decklink disabled])
2107       ])
2108   ])
2109   AC_LANG_POP([C++])
2110   VLC_RESTORE_FLAGS
2112 AM_CONDITIONAL([HAVE_DECKLINK], [ test "${have_decklink}" != "no" ])
2116 dnl  Built-in CD-DA and VCD module
2118 AC_ARG_ENABLE([vcd],
2119   AS_HELP_STRING([--disable-vcd],
2120     [disable built-in VCD and CD-DA support (default enabled)]))
2122 AC_ARG_ENABLE([libcddb],
2123   AS_HELP_STRING([--disable-libcddb],
2124     [disable CDDB for Audio CD (default enabled)]))
2126 if test "${enable_vcd}" != "no" -a "${enable_winstore_app}" != "yes"
2127 then
2128   AC_MSG_CHECKING(for cdrom_msf0 in linux/cdrom.h)
2129   AC_EGREP_HEADER(cdrom_msf0,linux/cdrom.h,[
2130     AC_MSG_RESULT(yes)
2131     VLC_ADD_PLUGIN([vcd cdda])
2132   ],[
2133     AC_MSG_RESULT(no)
2134   ])
2136   AC_MSG_CHECKING(for scsireq in sys/scsiio.h)
2137   AC_EGREP_HEADER(scsireq,sys/scsiio.h,[
2138     AC_MSG_RESULT(yes)
2139     VLC_ADD_PLUGIN([vcd cdda])
2140     AC_DEFINE(HAVE_SCSIREQ_IN_SYS_SCSIIO_H, 1, For NetBSD VCD support)
2141   ],[
2142     AC_MSG_RESULT(no)
2143   ])
2145   AC_MSG_CHECKING(for ioc_toc_header in sys/cdio.h)
2146   AC_EGREP_HEADER(ioc_toc_header ,sys/cdio.h,[
2147     AC_MSG_RESULT(yes)
2148     VLC_ADD_PLUGIN([vcd cdda])
2149     AC_DEFINE(HAVE_IOC_TOC_HEADER_IN_SYS_CDIO_H, 1, For FreeBSD VCD support)
2150   ],[
2151     AC_MSG_RESULT(no)
2152   ])
2154   if test "${SYS}" = "bsdi" -o "${SYS}" = "mingw32" -o "${SYS}" = "os2" -o "${SYS}" = "darwin"
2155   then
2156     VLC_ADD_PLUGIN([vcd cdda])
2157   fi
2159   if test "$enable_libcddb" != "no"; then
2160     PKG_CHECK_MODULES(LIBCDDB, [libcddb >= 0.9.5], [
2161       HAVE_LIBCDDB=yes
2162       AC_DEFINE(HAVE_LIBCDDB, 1, [Define this if you have libcddb installed])
2163       VLC_ADD_LIBS([cdda],[$LIBCDDB_LIBS])
2164       VLC_ADD_CFLAGS([cdda],[$LIBCDDB_CFLAGS])
2165       ],:
2166       [AC_MSG_WARN([${LIBCDDB_PKG_ERRORS}: CDDB access disabled.])
2167       HAVE_LIBCDDB=no])
2168   fi
2172 dnl Linux DVB
2174 AC_CACHE_CHECK([for Linux DVB version 5.1], [ac_cv_linux_dvb_5_1], [
2175   AC_PREPROC_IFELSE([AC_LANG_PROGRAM([
2176 [#include <linux/dvb/version.h>
2177 #if (DVB_API_VERSION < 5)
2178 # error Linux DVB API v3.2 and older are not supported.
2179 #endif
2180 #if (DVB_API_VERSION == 5 && DVB_API_VERSION_MINOR < 1)
2181 # error Linux DVB API v5.0 is unsupported. Please update.
2182 #endif
2183 ]])], [
2184   ac_cv_linux_dvb_5_1=yes
2185 ], [
2186   ac_cv_linux_dvb_5_1=no
2187 ])])
2188 AM_CONDITIONAL([HAVE_LINUX_DVB], [test "$ac_cv_linux_dvb_5_1" = "yes"])
2191 dnl  Screen capture module
2193 AC_ARG_ENABLE([screen],
2194   AS_HELP_STRING([--enable-screen],
2195     [disable screen capture (default enabled)]))
2196 if test "${enable_screen}" != "no"; then
2197   if test "${SYS}" = "darwin"; then
2198     AC_CHECK_HEADERS([ApplicationServices/ApplicationServices.h], [
2199       VLC_ADD_PLUGIN([screen])
2200     ])
2201   fi
2203 AM_CONDITIONAL([HAVE_MAC_SCREEN], [test "${SYS}" = "darwin" -a "x${enable_screen}" != "xno"])
2206 dnl  VNC/RFB access module
2208 PKG_ENABLE_MODULES_VLC([VNC], [vnc], [libvncclient >= 0.9.9], (VNC/rfb client support), [auto])
2210 dnl  RDP/Remote Desktop access module
2212 PKG_ENABLE_MODULES_VLC([FREERDP], [rdp], [freerdp >= 1.0.1], (RDP/Remote Desktop client support) )
2215 dnl AVFoundation
2216 AC_SUBST([have_avfoundation], ["no"])
2217 AC_ARG_ENABLE([macosx-avfoundation],
2218   AS_HELP_STRING([--enable-macosx-avfoundation], [Mac OS X avcapture (video) module (default enabled on Mac OS X)]))
2219 if test "x${enable_macosx_avfoundation}" != "xno" &&
2220   (test "${SYS}" = "darwin" || test "${enable_macosx_avfoundation}" = "yes")
2221 then
2222   SAVED_LIBS="${LIBS}"
2223   LIBS="-framework AVFoundation"
2224   AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [])],[have_avfoundation=yes],[have_avfoundation=no])
2225   LIBS="${SAVED_LIBS}"
2226   if test "${have_avfoundation}" != "no"
2227   then
2228     VLC_ADD_PLUGIN([avcapture])
2229   fi
2231 AM_CONDITIONAL([HAVE_AVFOUNDATION], [test "${have_avfoundation}" != "no"])
2234 dnl  DCP plugin (using asdcplib)
2236 PKG_WITH_MODULES([ASDCP], [asdcplib], [have_asdcp="yes"])
2237 AM_CONDITIONAL([HAVE_ASDCP], [test "${have_asdcp}" = "yes"])
2240 dnl  Demux plugins
2243 EXTEND_HELP_STRING([Mux/Demux plugins:])
2246 dnl  libdvbpsi check for ts mux/demux
2248 have_dvbpsi="no"
2249 PKG_WITH_MODULES([DVBPSI], [libdvbpsi >= 1.2.0], [have_dvbpsi="yes"])
2250 AM_CONDITIONAL([HAVE_DVBPSI], [test "${have_dvbpsi}" = "yes"])
2254 dnl  GME demux plugin
2256 AC_ARG_ENABLE([gme],
2257   AS_HELP_STRING([--enable-gme],
2258     [use Game Music Emu (default auto)]))
2259 AS_IF([test "${enable_gme}" != "no"], [
2260   AC_CHECK_HEADER([gme/gme.h], [
2261     AC_CHECK_LIB([gme], [gme_identify_header], [
2262       VLC_ADD_PLUGIN([gme])
2263     ], [
2264       AC_CHECK_LIB([gme], [gme_identify_extension], [
2265          VLC_ADD_LIBS([gme], [-lstdc++ $LIBM])
2266          VLC_ADD_PLUGIN([gme])
2267       ],, [-lstdc++ $LIBM])
2268     ])
2269     VLC_ADD_LIBS([gme], [-lgme])
2270   ], [
2271     AS_IF([test "x${enable_gme}" != "x"], [
2272       AC_MSG_ERROR([GME cannot be found. Please install the development files.])
2273     ])
2274   ])
2279 dnl  SIDPlay plugin
2281 AC_ARG_ENABLE([sid],
2282     AS_HELP_STRING([--enable-sid],[C64 sid demux support (default auto)]))
2283 AS_IF([test "${enable_sid}" != "no"], [
2284     PKG_CHECK_MODULES(SID, [libsidplay2], [
2285         AC_LANG_PUSH(C++)
2286         oldCPPFLAGS="$CPPFLAGS"
2287         CPPFLAGS="$CPPFLAGS $SID_CFLAGS"
2288         AC_CHECK_HEADER([sidplay/builders/resid.h], [
2289             VLC_ADD_PLUGIN([sid])
2290             VLC_ADD_CFLAGS([sid], [$SID_CFLAGS])
2291             VLC_ADD_LIBS([sid], [$SID_LIBS] [-lresid-builder])
2292         ], [
2293             AS_IF([test -n "${enable_sid}"],
2294                 [AC_MSG_ERROR([${SID_PKG_ERRORS} (required for sid).])],
2295                 [AC_MSG_WARN([${SID_PKG_ERRORS} (required for sid).])]
2296                 )
2297         ])
2298         CPPFLAGS="$oldCPPFLAGS"
2299         AC_LANG_POP(C++)
2300     ], [
2301         AS_IF([test "x${enable_sid}" = "xyes"],
2302             [AC_MSG_ERROR([${SID_PKG_ERRORS} (required for sid).])],
2303             [AC_MSG_WARN([${SID_PKG_ERRORS} (required for sid).])]
2304             )
2305     ])
2310 dnl  ogg demux plugin
2312 PKG_ENABLE_MODULES_VLC([OGG], [mux_ogg], [ogg >= 1.0], [Ogg demux support], [auto])
2313 PKG_CHECK_MODULES(LIBVORBIS, [vorbis >= 1.1], [
2314     AC_DEFINE(HAVE_LIBVORBIS, 1, [Define to 1 if you have the libvorbis])
2315 ],[true])
2316 PKG_ENABLE_MODULES_VLC([OGG], [], [ogg >= 1.0], [Ogg demux support], [auto], [${LIBVORBIS_CFLAGS}], [${LIBVORBIS_LIBS}])
2317 if test "${enable_sout}" != "no"; then
2318 dnl Check for libshout
2319     PKG_ENABLE_MODULES_VLC([SHOUT], [access_output_shout], [shout >= 2.1], [libshout output plugin], [auto])
2323 dnl  matroska demux plugin
2325 PKG_WITH_MODULES([MATROSKA], [libebml >= 1.3.6 libmatroska], [
2326        VLC_ADD_PLUGIN([mkv])
2327        VLC_ADD_CFLAGS([mkv], [$MATROSKA_CFLAGS])
2328        VLC_ADD_LIBS([mkv], [$MATROSKA_LIBS])
2329        have_matroska="yes"
2330    ],,[MKV format support], [auto])
2331 AM_CONDITIONAL([HAVE_MATROSKA], [test "${have_matroska}" = "yes"])
2334 dnl  modplug demux plugin
2336 AC_ARG_ENABLE([mod],
2337   AS_HELP_STRING([--disable-mod],
2338     [do not use libmodplug (default auto)]))
2339 if test "${enable_mod}" != "no" ; then
2340     PKG_CHECK_MODULES(LIBMODPLUG, [libmodplug >= 0.8.9.0], [
2341           VLC_ADD_PLUGIN([mod])
2342           VLC_ADD_CXXFLAGS([mod],[$LIBMODPLUG_CFLAGS])
2343           VLC_ADD_CFLAGS([mod],[$LIBMODPLUG_CFLAGS]) #modules/demux/mod.c needs CFLAGS_mod, not CXXFLAGS_mod
2344           VLC_ADD_LIBS([mod],[$LIBMODPLUG_LIBS])
2345     ],[
2346        AS_IF([test -n "${enable_mod}"],
2347          [AC_MSG_ERROR([${LIBMODPLUG_PKG_ERRORS}.])],
2348          [AC_MSG_WARN([${LIBMODPLUG_PKG_ERRORS}.])])
2349     ])
2353 dnl  mpc demux plugin
2355 AC_ARG_ENABLE([mpc],
2356   AS_HELP_STRING([--disable-mpc], [do not use libmpcdec (default auto)]))
2357 if test "${enable_mpc}" != "no"
2358 then
2359     AC_CHECK_HEADERS([mpcdec/mpcdec.h], [
2360     VLC_ADD_PLUGIN([mpc])
2361     VLC_ADD_LIBS([mpc],[-lmpcdec])])
2365 dnl  Codec plugins
2368 EXTEND_HELP_STRING([Codec plugins:])
2371 dnl shine encoder plugin
2373 PKG_ENABLE_MODULES_VLC([SHINE], [], [shine >= 3.0.0], [MPEG Audio Layer 3 encoder], [auto], [], [], [])
2377 dnl openmax il codec plugin
2379 AC_ARG_ENABLE([omxil],
2380   AS_HELP_STRING([--enable-omxil], [openmax il codec module (default disabled)]))
2381 if test "${enable_omxil}" = "yes"
2382 then
2383   VLC_ADD_PLUGIN([omxil])
2387 dnl raspberry pi openmax il configuration
2389 AC_ARG_ENABLE([rpi-omxil],
2390   AS_HELP_STRING([--enable-rpi-omxil], [openmax il configured for raspberry pi (default disabled)]))
2391 if test "${enable_rpi_omxil}" = "yes"
2392 then
2393   VLC_ADD_PLUGIN([omxil])
2394   VLC_ADD_CFLAGS([omxil],[-DRPI_OMX])
2398 dnl CrystalHD codec plugin
2400 AC_ARG_ENABLE([crystalhd],
2401   AS_HELP_STRING([--enable-crystalhd], [crystalhd codec plugin (default auto)]))
2402 if test "${enable_crystalhd}" != "no"; then
2403     AC_CHECK_HEADER(libcrystalhd/libcrystalhd_if.h, [
2404       VLC_ADD_PLUGIN([crystalhd])
2405       VLC_ADD_LIBS([crystalhd], [-lcrystalhd])
2406     ],[
2407       if test "${SYS}" = "mingw32" ; then
2408         AC_CHECK_HEADERS([libcrystalhd/bc_dts_defs.h], [
2409           VLC_ADD_PLUGIN([crystalhd])
2410           AC_CHECK_HEADERS([libcrystalhd/bc_drv_if.h], [
2411             VLC_ADD_LIBS([crystalhd], [-lbcmDIL])
2412             ])
2413         ],[
2414           AS_IF([test x"${enable_crystalhd}" = "xyes"],
2415                 [AC_MSG_ERROR("Could not find CrystalHD development headers")],
2416                 [AC_MSG_WARN("Could not find CrystalHD development headers")])
2417         ],[#define __LINUX_USER__
2418                #include <libcrystalhd/bc_dts_types.h>
2419         ])
2420       fi
2421     ],[
2422        #include <libcrystalhd/bc_dts_types.h>
2423       ])
2427 dnl  mad plugin
2429 have_mad="no"
2430 MAD_CFLAGS=""
2431 MAD_LIBS=""
2433 AC_ARG_WITH(mad, AS_HELP_STRING([--with-mad=PATH], [path to libmad]), [
2434   enable_mad="yes"
2435 ], [
2436   with_mad="no"
2438 AS_IF([test "${with_mad}" != "no"], [
2439   MAD_CFLAGS="-I${with_mad}/include"
2440   MAD_LIBS="-L${with_mad}/lib"
2443 AC_ARG_ENABLE([mad],
2444   AS_HELP_STRING([--enable-mad], [libmad module (default enabled)]))
2445 AS_IF([test "${enable_mad}" != "no"], [
2446   VLC_SAVE_FLAGS
2447   CPPFLAGS="${CPPFLAGS} ${MAD_CFLAGS}"
2448   LDFLAGS="${LDFLAGS} ${MAD_LIBS}"
2449   AC_CHECK_HEADERS([mad.h], [
2450     AC_CHECK_LIB([mad], [mad_bit_init], [
2451       have_mad="yes"
2452       MAD_LIBS="${MAD_LIBS} -lmad"
2453     ])
2454   ])
2455   VLC_RESTORE_FLAGS
2456   AS_IF([test -n "$enable_mad" -a "${have_mad}" = "no"], [
2457     AC_MSG_ERROR([Could not find libmad. Install it or pass --disable-mad to disable it.])
2458   ])
2460 AC_SUBST([MAD_CFLAGS])
2461 AC_SUBST([MAD_LIBS])
2462 AM_CONDITIONAL([HAVE_MAD], [test "${have_mad}" = "yes"])
2464 dnl  mpg123 plugin
2467 PKG_ENABLE_MODULES_VLC([MPG123], [mpg123], [libmpg123], [libmpg123 decoder support], [auto])
2470 dnl gstreamer stuff
2472 AC_ARG_ENABLE([gst-decode],
2473   AS_HELP_STRING([--enable-gst-decode], [GStreamer based decoding support (currently supports only video decoding) (default auto)]))
2475 have_gst_decode="no"
2476 AS_IF([test "${enable_gst_decode}" != "no"], [
2477   PKG_CHECK_MODULES([GST_APP], [gstreamer-app-1.0], [
2478     PKG_CHECK_MODULES([GST_VIDEO], [gstreamer-video-1.0], [
2479       have_gst_decode="yes"
2480     ], [
2481       AC_MSG_WARN([${GST_VIDEO_PKG_ERRORS}. GStreamer decoder module will not be built.])
2482     ])
2483   ], [
2484     AC_MSG_WARN([${GST_APP_PKG_ERRORS}. GStreamer modules will not be built.])
2485   ])
2487 AM_CONDITIONAL([HAVE_GST_DECODE], [test "${have_gst_decode}" = "yes"])
2490 dnl  avcodec decoder/encoder plugin
2492 AC_ARG_ENABLE([merge-ffmpeg],
2493 AS_HELP_STRING([--enable-merge-ffmpeg], [merge FFmpeg-based plugins (default disabled)]),, [
2494   enable_merge_ffmpeg="no"
2496 AM_CONDITIONAL([MERGE_FFMPEG], [test "$enable_merge_ffmpeg" != "no"])
2498 AC_MSG_CHECKING([for libavutil variant])
2499 PKG_CHECK_EXISTS([libavutil], [
2500   libavutil_version="$(${PKG_CONFIG} --modversion libavutil)"
2501   libavutil_micro="${libavutil_version##*.}"
2502   AS_IF([test ${libavutil_micro} -le 99], [
2503     avfork="libav"
2504   ], [
2505     avfork="ffmpeg"
2506   ])
2507 ], [
2508   avfork="none"
2510 AC_MSG_RESULT([${avfork}])
2512 AC_ARG_ENABLE([avcodec],
2513 AS_HELP_STRING([--enable-avcodec], [libavcodec codec (default enabled)]))
2514 AS_IF([test "${enable_avcodec}" != "no"], [
2515   dnl We need >=57.16.0 from libav or >=57.37.100 from ffmpeg
2516   case "${avfork}" in
2517     libav) av_codec_ver="57.16.0" ;;
2518     dnl 05f66706d182eb0c36af54d72614bf4c33e957a9  includes libavutil 55.9.0
2519     ffmpeg) av_codec_ver="57.37.100" ;;
2520     dnl 7fc329e2dd6226dfecaa4a1d7adf353bf2773726  include libavutil 55.22.101
2521     *) AC_MSG_ERROR([Missing libav or FFmpeg. Pass --disable-avcodec to ignore this error.])
2522   esac
2523   PKG_CHECK_MODULES(AVCODEC,[libavcodec >= ${av_codec_ver} libavutil >= 55.9.0], [
2524     VLC_SAVE_FLAGS
2525     CPPFLAGS="${CPPFLAGS} ${AVCODEC_CFLAGS}"
2526     CFLAGS="${CFLAGS} ${AVCODEC_CFLAGS}"
2527     AC_CHECK_HEADERS([libavcodec/avcodec.h])
2528     AC_CHECK_HEADERS([libavutil/avutil.h])
2529     VLC_RESTORE_FLAGS
2530     have_avcodec="yes"
2531   ],[
2532     AC_MSG_ERROR([${AVCODEC_PKG_ERRORS}. Pass --disable-avcodec to ignore this error.])
2533   ])
2534 ], [
2535   have_avcodec="no"
2537 AM_CONDITIONAL([HAVE_AVCODEC], [test "${have_avcodec}" != "no"])
2540 dnl libva needs avcodec
2542 AC_ARG_ENABLE([libva],
2543   AS_HELP_STRING([--enable-libva], [VAAPI GPU decoding support (libVA) (default auto)]))
2545 AS_IF([test "${enable_libva}" = "yes" -a "${have_avcodec}" != "yes" ], [
2546   AC_MSG_ERROR([--enable-libva and --disable-avcodec options are mutually exclusive. Use --enable-avcodec.])
2549 have_vaapi="no"
2550 have_vaapi_drm="no"
2551 have_vaapi_x11="no"
2552 have_vaapi_wl="no"
2553 AS_IF([test "${enable_libva}" != "no"], [
2554   PKG_CHECK_MODULES([LIBVA], [libva >= 0.38], [
2555     have_vaapi="yes"
2556   ], [
2557     AS_IF([test -n "${enable_libva}"], [
2558       AC_MSG_ERROR([${LIBVA_PKG_ERRORS}.])
2559     ], [
2560       AC_MSG_WARN([${LIBVA_PKG_ERRORS}.])
2561     ])
2562   ])
2563   PKG_CHECK_MODULES([LIBVA_DRM], [libva-drm], [
2564     have_vaapi_drm="yes"
2565   ], [
2566     AC_MSG_WARN([${LIBVA_DRM_PKG_ERRORS}.])
2567   ])
2568   PKG_CHECK_MODULES(LIBVA_X11, [libva-x11], [
2569     have_vaapi_x11="yes"
2570   ], [
2571     AC_MSG_WARN([${LIBVA_X11_PKG_ERRORS}.])
2572   ])
2573   PKG_CHECK_MODULES(LIBVA_WL, [libva-wayland], [
2574     have_vaapi_wl="yes"
2575   ], [
2576     AC_MSG_WARN([${LIBVA_WL_PKG_ERRORS}.])
2577   ])
2579 AM_CONDITIONAL([HAVE_VAAPI], [test "${have_vaapi}" = "yes"])
2580 AM_CONDITIONAL([HAVE_VAAPI_DRM], [test "${have_vaapi_drm}" = "yes"])
2581 AM_CONDITIONAL([HAVE_VAAPI_X11], [test "${have_vaapi_x11}" = "yes"])
2582 AM_CONDITIONAL([HAVE_VAAPI_WL], [test "${have_vaapi_wl}" = "yes"])
2584 have_avcodec_vaapi="no"
2585 AS_IF([test "${have_vaapi}" = "yes" -a "${have_avcodec}" = "yes"], [
2586   VLC_SAVE_FLAGS
2587   CPPFLAGS="${CPPFLAGS} ${AVCODEC_CFLAGS}"
2588   CFLAGS="${CFLAGS} ${AVCODEC_CFLAGS}"
2589   AC_CHECK_HEADERS([libavcodec/vaapi.h], [
2590     AC_MSG_NOTICE([VA API acceleration activated])
2591     have_avcodec_vaapi="yes"
2592   ],[
2593     AS_IF([test -n "${enable_libva}"], [
2594       AC_MSG_ERROR([libva is present but libavcodec/vaapi.h is missing])
2595     ], [
2596       AC_MSG_WARN([libva is present but libavcodec/vaapi.h is missing ])
2597     ])
2598   ])
2599   VLC_RESTORE_FLAGS
2601 AM_CONDITIONAL([HAVE_AVCODEC_VAAPI], [test "${have_avcodec_vaapi}" = "yes"])
2604 dnl dxva2 needs avcodec
2606 AC_ARG_ENABLE([dxva2],
2607   AS_HELP_STRING([--enable-dxva2], [DxVA2 GPU decoding support (default auto)]))
2609 have_avcodec_dxva2="no"
2610 AS_IF([test "${enable_dxva2}" != "no"], [
2611   if test "${SYS}" = "mingw32"; then
2612   AS_IF([test "x${have_avcodec}" = "xyes"], [
2613     AC_CHECK_HEADERS([dxva2api.h],
2614       [
2615         AC_CHECK_HEADERS([libavcodec/dxva2.h], [
2616            AC_MSG_NOTICE([DxVA2 acceleration activated])
2617            have_avcodec_dxva2="yes"
2618         ],[
2619     AS_IF([test "${enable_dxva2}" = "yes"],
2620           [AC_MSG_ERROR([dxva2 is present but libavcodec/dxva2.h is missing])],
2621               [AC_MSG_WARN([dxva2 is present but libavcodec/dxva2.h is missing ])])
2622         ], [#undef _WIN32_WINNT
2623             /* DXVA2 is only available in Vista and above */
2624             #define _WIN32_WINNT 0x600])
2625       ],[
2626     AS_IF([test "${enable_dxva2}" = "yes"],
2627               [AC_MSG_ERROR([Could not find required dxva2api.h])],
2628               [AC_MSG_WARN([dxva2api.h not found])])
2629       ],[#include <d3d9.h>])
2630   ],[
2631     AS_IF([test "x${enable_dxva2}" != "x"], [
2632       AC_MSG_ERROR([--enable-dxva2 and --disable-avcodec options are mutually exclusive.])
2633     ])
2634   ])
2635   fi
2637 AM_CONDITIONAL([HAVE_AVCODEC_DXVA2], [test "${have_avcodec_dxva2}" = "yes"])
2640 dnl d3d11va needs avcodec
2642 AC_ARG_ENABLE([d3d11va],
2643   AS_HELP_STRING([--enable-d3d11va], [D3D11 GPU decoding support (default auto)]))
2645 have_avcodec_d3d11va="no"
2646 AS_IF([test "${enable_d3d11va}" != "no"], [
2647   if test "${SYS}" = "mingw32"; then
2648   AS_IF([test "x${have_avcodec}" = "xyes"], [
2649         AC_CHECK_TYPES([ID3D11VideoDecoder],
2650           [
2651             AC_CHECK_HEADERS([dxva2api.h],
2652               [
2653                 AC_CHECK_HEADERS([libavcodec/d3d11va.h], [
2654                    AC_MSG_NOTICE([D3D11 acceleration activated])
2655                    AC_DEFINE([HAVE_AVCODEC_D3D11VA], [1], [Define if the d3d11va module is built])
2656                    have_avcodec_d3d11va="yes"
2657                 ],[
2658                   AS_IF([test "${enable_d3d11va}" = "yes"],
2659                     [AC_MSG_ERROR([d3d11va is present but libavcodec/d3d11va.h is missing])],
2660                         [AC_MSG_WARN([d3d11va is present but libavcodec/d3d11va.h is missing ])])
2661                   ], [#undef _WIN32_WINNT
2662                       /* D3D11 is only available in Vista and above */
2663                       #define _WIN32_WINNT 0x600])
2664                   ],[
2665                     AS_IF([test "${enable_d3d11va}" = "yes"],
2666                           [AC_MSG_ERROR([Could not find required dxva2api.h])],
2667                           [AC_MSG_WARN([dxva2api.h not found])])
2668                   ],[#include <d3d9.h>])
2669           ],[
2670             AS_IF([test "${enable_d3d11va}" = "yes"],
2671                   [AC_MSG_ERROR([Could not find required ID3D11VideoDecoder in d3d11.h])],
2672                   [AC_MSG_WARN([ID3D11VideoDecoder not found])])
2673           ], [#include <d3d11.h>])
2674   ],[
2675     AS_IF([test "x${enable_d3d11va}" != "x"], [
2676       AC_MSG_ERROR([--enable-d3d11va and --disable-avcodec options are mutually exclusive.])
2677     ])
2678   ])
2679   fi
2681 AM_CONDITIONAL([HAVE_AVCODEC_D3D11VA], [test "${have_avcodec_d3d11va}" = "yes"])
2684 dnl DXGI debug
2686 AC_CHECK_HEADERS([dxgidebug.h dxgi1_6.h])
2689 dnl  avformat demuxer/muxer plugin
2692 AC_ARG_ENABLE([avformat],
2693 AS_HELP_STRING([--enable-avformat], [libavformat containers (default enabled)]),, [
2694   enable_avformat="${have_avcodec}"
2696 have_avformat="no"
2697 AS_IF([test "${enable_avformat}" != "no"], [
2698   PKG_CHECK_MODULES(AVFORMAT,[libavformat >= 53.21.0 libavcodec libavutil], [
2699       have_avformat="yes"
2700       VLC_SAVE_FLAGS
2701       CPPFLAGS="${CPPFLAGS} ${AVFORMAT_CFLAGS}"
2702       CFLAGS="${CFLAGS} ${AVFORMAT_CFLAGS}"
2703       AC_CHECK_HEADERS([libavformat/avformat.h libavformat/avio.h])
2704       AC_CHECK_HEADERS([libavcodec/avcodec.h])
2705       AC_CHECK_HEADERS([libavutil/avutil.h])
2706       AS_IF([test "$enable_merge_ffmpeg" = "no"], [
2707         have_avformat="no"
2708       ])
2709       VLC_RESTORE_FLAGS
2710     ],[
2711       AC_MSG_ERROR([${AVFORMAT_PKG_ERRORS}. Pass --disable-avformat to ignore this error.])
2712   ])
2714 AM_CONDITIONAL([HAVE_AVFORMAT], [test "${enable_avformat}" != "no"])
2717 dnl  swscale image scaling and conversion plugin
2720 AC_ARG_ENABLE([swscale],
2721   AS_HELP_STRING([--enable-swscale],[libswscale image scaling and conversion
2722           (default enabled)]))
2723 if test "${enable_swscale}" != "no"
2724 then
2725   PKG_CHECK_MODULES(SWSCALE,[libswscale],
2726     [
2727       VLC_SAVE_FLAGS
2728       CPPFLAGS="${CPPFLAGS} ${SWSCALE_CFLAGS}"
2729       CFLAGS="${CFLAGS} ${SWSCALE_CFLAGS}"
2730       AC_CHECK_HEADERS([libswscale/swscale.h])
2731       AC_CHECK_HEADERS([libavutil/avutil.h])
2732       VLC_ADD_PLUGIN([swscale])
2733       VLC_ADD_LIBS([swscale],[$SWSCALE_LIBS])
2734       VLC_ADD_CFLAGS([swscale],[$SWSCALE_CFLAGS])
2735       AS_IF([test -n "${ac_cv_ld_bsymbolic}"], [
2736         VLC_ADD_LIBS([swscale],[${ac_cv_ld_bsymbolic}])
2737       ])
2738       VLC_RESTORE_FLAGS
2739     ],[
2740       AC_MSG_ERROR([${SWSCALE_PKG_ERRORS}. Pass --disable-swscale to ignore this error. Proper software scaling and some video chroma conversion will be missing.])
2741   ])
2745 dnl  postproc plugin
2748 AC_ARG_ENABLE([postproc],
2749 AS_HELP_STRING([--enable-postproc], [libpostproc image post-processing (default auto)]))
2750 if test "${enable_postproc}" != "no"
2751 then
2752   PKG_CHECK_MODULES(POSTPROC,[libpostproc libavutil],
2753     [
2754       VLC_SAVE_FLAGS
2755       CPPFLAGS="${CPPFLAGS} ${POSTPROC_CFLAGS}"
2756       CFLAGS="${CFLAGS} ${POSTPROC_CFLAGS}"
2757       AC_CHECK_HEADERS([postproc/postprocess.h])
2758       VLC_ADD_PLUGIN([postproc])
2759       VLC_RESTORE_FLAGS
2760     ],[
2761       AC_MSG_WARN([${POSTPROC_PKG_ERRORS}.])
2762   ])
2766 dnl  faad decoder plugin
2768 AC_ARG_ENABLE([faad],
2769 AS_HELP_STRING([--enable-faad], [faad codec (default auto)]))
2770 have_faad="no"
2771 AS_IF([test "${enable_faad}" != "no"], [
2772   AC_CHECK_HEADERS([neaacdec.h], [
2773     AC_CHECK_LIB([faad], [NeAACDecOpen], [have_faad="yes"],, [$LIBM])
2775     AS_IF([test "${have_faad}" = "yes"], [
2776       VLC_ADD_PLUGIN([faad])
2777       VLC_ADD_LIBS([faad],[-lfaad])
2778     ], [
2779       AS_IF([test "${enable_faad}" = "yes"], [
2780         AC_MSG_ERROR([cannot find FAAD library])
2781       ], [
2782         AC_MSG_WARN([cannot find FAAD library])
2783       ])
2784     ])
2785   ])
2789 dnl  AOM decoder plugin
2791 PKG_ENABLE_MODULES_VLC([AOM], [], [aom], [experimental AV1 codec (default auto)])
2794 dnl  Dav1d decoder plugin
2796 PKG_ENABLE_MODULES_VLC([DAV1D], [], [dav1d], [AV1 decoder (default auto)])
2799 dnl libvpx decoder plugin
2801 AC_ARG_ENABLE([vpx],
2802     AS_HELP_STRING([--enable-vpx],[libvpx VP8/VP9 encoder and decoder (default auto)]))
2803 AS_IF([test "${enable_vpx}" != "no"],[
2804     PKG_CHECK_MODULES([VPX], [vpx >= 1.5.0], [
2805         VLC_ADD_PLUGIN([vpx])
2806         VLC_ADD_CPPFLAGS([vpx], [${VPX_CFLAGS}])
2807         VLC_ADD_LIBS([vpx], [${VPX_LIBS}])
2808         AC_CHECK_LIB([vpx],[vpx_codec_vp8_dx], [
2809             VLC_ADD_CPPFLAGS([vpx], [-DENABLE_VP8_DECODER])
2810         ], [], [${VPX_LIBS}])
2811         AC_CHECK_LIB([vpx],[vpx_codec_vp9_dx], [
2812             VLC_ADD_CPPFLAGS([vpx], [-DENABLE_VP9_DECODER])
2813         ], [], [${VPX_LIBS}])
2814         AC_CHECK_LIB([vpx],[vpx_codec_vp8_cx], [
2815             VLC_ADD_CPPFLAGS([vpx], [-DENABLE_VP8_ENCODER])
2816         ], [], [${VPX_LIBS}])
2817         AC_CHECK_LIB([vpx],[vpx_codec_vp9_cx], [
2818             VLC_ADD_CPPFLAGS([vpx], [-DENABLE_VP9_ENCODER])
2819         ], [], [${VPX_LIBS}])
2820     ], [
2821     AS_IF([test "${enable_vpx}" = "yes"],[
2822         AC_MSG_ERROR([libvpx 1.5.0 or higher was not found])
2823     ])])
2827 dnl twolame encoder plugin
2829 PKG_ENABLE_MODULES_VLC([TWOLAME], [], [twolame], [MPEG Audio Layer 2 encoder], [auto], [], [], [ -DLIBTWOLAME_STATIC])
2832 dnl fdk-aac encoder plugin
2834 PKG_ENABLE_MODULES_VLC([FDKAAC], [], [fdk-aac], [FDK-AAC encoder], [disabled])
2838 dnl A52/AC3 decoder plugin
2840 AC_ARG_ENABLE([a52],
2841   AS_HELP_STRING([--enable-a52], [A/52 support with liba52 (default enabled)]))
2842 if test "${enable_a52}" != "no"
2843 then
2844   AC_ARG_WITH([a52],
2845     AS_HELP_STRING([--with-a52=PATH], [a52 headers and libraries]))
2846     if test -z "${with_a52}"
2847     then
2848       LDFLAGS_test=""
2849       CPPFLAGS_test=""
2850     else
2851       LDFLAGS_test="-L${with_a52}/lib"
2852       CPPFLAGS_test="-I${with_a52}/include"
2853     fi
2854     VLC_SAVE_FLAGS
2855     CPPFLAGS="${CPPFLAGS} ${CPPFLAGS_test} ${CPPFLAGS_a52}"
2856     LDFLAGS="${LDFLAGS} ${LDFLAGS_test} ${LIBS_a52}"
2857     AC_CHECK_HEADERS([a52dec/a52.h], [
2858       AC_CHECK_LIB([a52], [a52_free], [
2859         VLC_ADD_PLUGIN([a52])
2860         VLC_ADD_LIBS([a52],[${LDFLAGS_test} -la52 $LIBM])
2861         VLC_ADD_CPPFLAGS([a52],[${CPPFLAGS_test}])
2862       ],[
2863         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.])
2864         ], [$LIBM])
2865     ],[
2866       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.])
2867     ])
2868     VLC_RESTORE_FLAGS
2872 dnl DTS Coherent Acoustics decoder plugin
2874 PKG_ENABLE_MODULES_VLC([DCA], [dca], [libdca >= 0.0.5], [DTS Coherent Acoustics support with libdca], [auto])
2877 dnl  Flac plugin
2879 PKG_ENABLE_MODULES_VLC([FLAC], [], [flac], [libflac decoder/encoder support], [auto])
2882 dnl  Libmpeg2 plugin
2884 PKG_ENABLE_MODULES_VLC([LIBMPEG2], [], [libmpeg2 > 0.3.2], [libmpeg2 decoder support], [auto])
2887 dnl  Vorbis plugin
2889 PKG_ENABLE_MODULES_VLC([VORBIS], [], [ogg vorbis >= 1.1 vorbisenc >= 1.1], [Vorbis decoder and encoder], [auto])
2892 dnl  Tremor plugin
2894 AC_ARG_ENABLE([tremor],
2895   AS_HELP_STRING([--enable-tremor], [Tremor decoder support (default disabled)]))
2896 if test "${enable_tremor}" = "yes"
2897 then
2898   AC_CHECK_HEADERS([tremor/ivorbiscodec.h], [
2899     VLC_ADD_PLUGIN([tremor])
2900    ],[])
2904 dnl  Speex plugins
2906 PKG_ENABLE_MODULES_VLC([SPEEX], [], [ogg speex >= 1.0.5], [Speex support], [auto])
2907 have_speexdsp="no"
2908 AS_IF([test "${enable_speex}" != "no"], [
2909   PKG_CHECK_MODULES([SPEEXDSP], [speexdsp], [
2910     have_speexdsp="yes"
2911   ], [
2912     AC_MSG_WARN([${SPEEXDSP_PKG_ERRORS}.])
2913   ])
2915 AM_CONDITIONAL([HAVE_SPEEXDSP], [test "$have_speexdsp" = "yes"])
2918 dnl  Opus plugin
2920 PKG_ENABLE_MODULES_VLC([OPUS], [], [ogg opus >= 1.0.3], [Opus support], [auto])
2923 dnl  Ambisonic channel mixer and binauralizer plugin
2925 PKG_ENABLE_MODULES_VLC([SPATIALAUDIO], [], [spatialaudio], [Ambisonic channel mixer and binauralizer], [auto])
2928 dnl  theora decoder plugin
2930 PKG_ENABLE_MODULES_VLC([THEORA], [], [ogg theoradec >= 1.0 theoraenc], [experimental theora codec], [auto])
2933 dnl  OggSpots decoder plugin
2935 PKG_ENABLE_MODULES_VLC([OGGSPOTS], [], [ogg], [experimental OggSpots codec], [auto])
2938 dnl  Daala decoder plugin
2940 PKG_ENABLE_MODULES_VLC([DAALA], [], [daaladec daalaenc], [experimental daala codec], [disabled])
2943 dnl  schroedinger decoder plugin (for dirac format video)
2945 PKG_ENABLE_MODULES_VLC([SCHROEDINGER], [], [schroedinger-1.0 >= 1.0.10], [dirac decoder and encoder using schroedinger], [auto])
2948 dnl  PNG decoder module
2950 AC_ARG_ENABLE([png],
2951   AS_HELP_STRING([--enable-png], [PNG support (default enabled)]))
2952 AS_IF([test "${enable_png}" != "no"], [
2953 AC_CHECK_HEADERS([png.h], [
2954   VLC_SAVE_FLAGS
2955   LDFLAGS="${LDFLAGS} -lz $LIBM"
2956   AC_CHECK_LIB([png], [png_set_alpha_mode], [
2957     VLC_ADD_PLUGIN([png])
2958   ], [], [-lz $LIBM])
2959   VLC_RESTORE_FLAGS
2960   ])
2964 dnl  JPEG decoder module
2966 AC_ARG_ENABLE([jpeg],
2967   AS_HELP_STRING([--enable-jpeg], [JPEG support (default enabled)]))
2968 AS_IF([test "${enable_jpeg}" != "no"], [
2969 AC_CHECK_HEADERS([jpeglib.h], [
2970   VLC_ADD_PLUGIN([jpeg])
2971   ])
2975 dnl  BPG decoder module
2977 AC_ARG_ENABLE([bpg],
2978   AS_HELP_STRING([--enable-bpg], [BPG support (default disabled)]))
2979 AS_IF([test "${enable_bpg}" != "no"], [
2980 AC_CHECK_HEADERS([libbpg.h], [
2981   VLC_ADD_PLUGIN([bpg])
2982   ])
2986 dnl H262 encoder plugin (lib262)
2988 AC_ARG_ENABLE([x262],
2989   AS_HELP_STRING([--enable-x262], [H262 encoding support with static libx262 (default disabled)]))
2990 if test "${enable_x262}" != "no"; then
2991     PKG_CHECK_MODULES(X262, x262, [
2992         VLC_ADD_PLUGIN([x262])
2993         VLC_ADD_LDFLAGS([x262],[${X262_LIBS}])
2994         AS_IF([test -n "${ac_cv_ld_bsymbolic}"], [
2995           VLC_ADD_LIBS([x262],[${av_cv_ld_bsymbolic}])
2996         ])
2997         VLC_ADD_CFLAGS([x262],[${X262_CFLAGS}])
2998         if echo ${X262_LIBS} |grep -q 'pthreadGC2'; then
2999           VLC_ADD_CFLAGS([x262], [-DPTW32_STATIC_LIB])
3000         fi
3001     ], [
3002        if test "${enable_x262}" = "yes"; then
3003         AC_MSG_ERROR([x262 module doesn't work without staticly compiled libx262.a])
3004        fi
3005     ])
3008 dnl x265 encoder
3009 PKG_ENABLE_MODULES_VLC([X265],, [x265], [HEVC/H.265 encoder], [auto])
3012 dnl H264 encoder plugin (using libx264)
3014 AC_ARG_ENABLE([x264],
3015   AS_HELP_STRING([--enable-x264], [H264 encoding support with libx264 (default enabled)]))
3016 if test "${enable_x264}" != "no"; then
3017       PKG_CHECK_MODULES(X264,x264 >= 0.148, [
3018         VLC_ADD_PLUGIN([x264])
3019         VLC_ADD_LIBS([x264],[${X264_LIBS}])
3021         AS_IF([test -n "${ac_cv_ld_bsymbolic}"], [
3022           VLC_ADD_LDFLAGS([x264],[${ac_cv_ld_bsymbolic}])
3023         ])
3025         VLC_ADD_CFLAGS([x264],[${X264_CFLAGS}])
3026         if echo ${X264_LIBS} |grep -q 'pthreadGC2'; then
3027           VLC_ADD_CFLAGS([x264], [-DPTW32_STATIC_LIB])
3028         fi
3029       ],[
3030         if test "${enable_x264}" = "yes"; then
3031             AC_MSG_ERROR([${X264_PKG_ERRORS}: you may get it from http://www.videolan.org/x264.html])
3032           fi
3033       ])
3037 dnl H264 encoder plugin (libx264 > 153)
3039 AC_ARG_ENABLE([x26410b],
3040   AS_HELP_STRING([--enable-x26410b], [H264 10-bit encoding support with libx264 (default enabled)]))
3041 if test "${enable_x26410b}" != "no"; then
3042       PKG_CHECK_MODULES(X26410b,x264 >= 0.153, [
3043         VLC_ADD_PLUGIN([x26410b])
3044         VLC_ADD_LIBS([x26410b],[${X264_LIBS}])
3046         AS_IF([test -n "${ac_cv_ld_bsymbolic}"], [
3047           VLC_ADD_LDFLAGS([x26410b],[${ac_cv_ld_bsymbolic}])
3048         ])
3050         VLC_ADD_CFLAGS([x26410b],[${X264_CFLAGS}])
3051         if echo ${X264_LIBS} |grep -q 'pthreadGC2'; then
3052           VLC_ADD_CFLAGS([x26410b], [-DPTW32_STATIC_LIB])
3053         fi
3054       ],[
3055         if test "${enable_x26410b}" = "yes"; then
3056             AC_MSG_ERROR([${X264_PKG_ERRORS}: you may get it from http://www.videolan.org/x264.html])
3057           fi
3058       ])
3063 dnl Intel QuickSync (aka MediaSDK) H264/H262 encoder
3065 PKG_ENABLE_MODULES_VLC([MFX], [qsv], [libmfx], [Intel QuickSync MPEG4-Part10/MPEG2 (aka H.264/H.262) encoder], [auto])
3068 dnl libfluidsynth (MIDI synthetizer) plugin
3070 PKG_ENABLE_MODULES_VLC([FLUIDSYNTH], [], [fluidsynth >= 1.1.2], [MIDI synthetiser with libfluidsynth], [auto])
3071 PKG_ENABLE_MODULES_VLC([FLUIDLITE], [fluidsynth], [fluidlite], [MIDI synthetiser with libfluidsynth], [auto])
3072 AC_CHECK_HEADERS([fluidlite.h], [AC_SUBST([FLUIDSYNTH_LIBS], ${FLUIDLITE_LIBS})])
3075 dnl Teletext Modules
3076 dnl vbi decoder plugin (using libzbvi)
3077 dnl telx module
3078 dnl uncompatible
3080 AC_ARG_ENABLE([zvbi],
3081   AS_HELP_STRING([--enable-zvbi],[VBI (inc. Teletext) decoding support with
3082                   libzvbi (default enabled)]))
3083 AC_ARG_ENABLE([telx],
3084   AS_HELP_STRING([--enable-telx],[Teletext decoding module (conflicting with
3085                   zvbi) (default enabled if zvbi is absent)]))
3087 AS_IF( [test "${enable_zvbi}" != "no"],[
3088     PKG_CHECK_MODULES(ZVBI, [zvbi-0.2 >= 0.2.28],
3089         [
3090           VLC_ADD_PLUGIN([zvbi])
3091           AC_DEFINE(ZVBI_COMPILED, 1, [Define if the zvbi module is built])
3092           AS_IF( [test "${enable_telx}" = "yes"],[
3093                   AC_MSG_WARN([The zvbi and telx modules are incompatible. Using zvbi.])
3094                   ])
3095         ],[
3096           AC_MSG_WARN([${ZVBI_PKG_ERRORS}. Enabling the telx module instead.])
3097         ])
3098     ])
3099 AS_IF( [test "${enable_telx}" != "no" ],[
3100   VLC_ADD_PLUGIN([telx])
3101   ])
3104 dnl ARIB subtitles rendering module
3106 AC_ARG_ENABLE([aribsub],
3107   AS_HELP_STRING([--enable-aribsub],[ARIB Subtitles support (default enabled)]))
3108 AS_IF( [test "${enable_aribsub}" != "no" ],[
3109   PKG_CHECK_MODULES(ARIBB24, [aribb24 >= 1.0.1], [
3110       have_aribb24="yes"
3111       VLC_ADD_PLUGIN([aribsub])
3112       VLC_ADD_LIBS([aribsub],[-laribb24])
3113       AC_DEFINE(HAVE_ARIBB24, 1, [Define if libaribb24 is available.])
3114     ],[
3115       AC_MSG_WARN(Library [aribb24] needed for [aribsub] was not found)
3116       have_aribb24="no"
3117   ])
3119 AM_CONDITIONAL([HAVE_ARIBB24], [test x"${have_aribb24}" = x"yes"])
3122 dnl ARIB B25
3124 PKG_ENABLE_MODULES_VLC([ARIBB25], [aribcam], [aribb25 >= 0.2.6], [ARIB STD-B25], [auto])
3127 dnl  kate decoder plugin
3129 PKG_ENABLE_MODULES_VLC([KATE], [], [kate >= 0.3.0], [kate codec], [auto])
3132 dnl  tiger rendering for kate decoder plugin
3134 AC_ARG_ENABLE([tiger],
3135 AS_HELP_STRING([--enable-tiger], [Tiger rendering library for Kate streams (default auto)]))
3136 AS_IF([test "${enable_tiger}" != "no"], [
3137   PKG_CHECK_MODULES(TIGER,[tiger >= 0.3.1], [
3138       AC_DEFINE(HAVE_TIGER, 1, [Define if libtiger is available.])],[
3139         AS_IF([test -n "${enable_tiger}"], [
3140           AC_MSG_ERROR([${TIGER_PKG_ERRORS}.])
3141         ])
3142   ])
3146 dnl  check if we can build the css selector engine
3148 AC_ARG_ENABLE([css],
3149 AS_HELP_STRING([--enable-css], [CSS selector engine (default auto)]))
3150 AS_IF([test "${enable_css}" != "no"], [
3151   with_css="yes"
3152   AC_DEFINE(HAVE_CSS, 1, [Define if CSS engine is built])
3154 AM_CONDITIONAL([ENABLE_CSS], [test "${with_css}" = "yes"])
3158 dnl  Video plugins
3161 EXTEND_HELP_STRING([Video plugins:])
3164 dnl  libplacebo support
3166 AC_ARG_ENABLE([libplacebo],
3167   AS_HELP_STRING([--disable-libplacebo],
3168       [disable libplacebo support (default auto)]))
3170 AS_IF([test "$enable_libplacebo" != "no"], [
3171   PKG_CHECK_MODULES([LIBPLACEBO], [libplacebo >= 0.5], [
3172     AC_DEFINE([HAVE_LIBPLACEBO], [1], [Define to 1 if libplacebo is enabled.])
3173     PKG_CHECK_MODULES([LIBPLACEBO], [libplacebo >= 1.7],
3174       [have_libplacebo_vk="yes"], [have_libplacebo_vk="no"])
3175   ], [
3176     AS_IF([test -n "${enable_libplacebo}"], [
3177       AC_MSG_ERROR([${LIBPLACEBO_PKG_ERRORS}.])
3178     ])
3179     enable_libplacebo="no"
3180   ])
3182 AM_CONDITIONAL([HAVE_LIBPLACEBO], [test "$enable_libplacebo" != "no"])
3185 dnl  OpenGL
3187 PKG_CHECK_MODULES([EGL], [egl], [
3188   have_egl="yes"
3189 ], [
3190   have_egl="no"
3192 AM_CONDITIONAL([HAVE_EGL], [test "${have_egl}" = "yes"])
3194 have_gl="no"
3195 PKG_CHECK_MODULES([GL], [gl], [
3196   have_gl="yes"
3197 ], [
3198   AC_MSG_CHECKING([for OpenGL])
3199   AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
3200 #ifdef _WIN32
3201 # include <GL/glew.h>
3202 #endif
3203 #include <GL/gl.h>
3204 ]], [
3205     [int t0 = GL_TEXTURE0;]])
3206   ], [
3207     GL_CFLAGS=""
3208     have_gl="yes"
3209     AS_IF([test "${SYS}" != "mingw32"], [
3210       GL_LIBS="-lGL"
3211     ], [
3212       GL_LIBS="-lopengl32"
3213     ])
3214   ])
3215   AC_MSG_RESULT([${have_gl}])
3217 AM_CONDITIONAL([HAVE_GL], [test "${have_gl}" = "yes"])
3218 AS_IF([test "${have_gl}" = "yes"], [
3219   AC_DEFINE([HAVE_GL], 1, [Defined if having OpenGL])
3222 dnl OpenGL ES 2: depends on EGL 1.1
3223 PKG_ENABLE_MODULES_VLC([GLES2], [], [glesv2], [OpenGL ES v2 support], [disabled])
3226 dnl Vulkan
3228 AC_ARG_ENABLE(vulkan,
3229   [AS_HELP_STRING([--disable-vulkan],
3230       [disable Vulkan support (default auto)])])
3232 AS_IF([test "$enable_vulkan" != "no"], [
3233   AS_IF([test "$have_libplacebo_vk" = "yes"], [
3234     PKG_CHECK_MODULES([VULKAN], [vulkan >= 1.0.26], [
3235       AC_DEFINE([HAVE_VULKAN], [1], [Define to 1 if vulkan is enabled.])
3236     ], [
3237       AS_IF([test -n "${enable_vulkan}"], [
3238         AC_MSG_ERROR([${VULKAN_PKG_ERRORS}.])
3239       ])
3240       enable_vulkan="no"
3241     ])
3242   ], [
3243     AS_IF([test -n "${enable_vulkan}"], [
3244       AC_MSG_ERROR([Vulkan support requires libplacebo 1.7 as well. Do not use --disable-libplacebo.])
3245     ])
3246     enable_vulkan="no"
3247   ])
3249 AM_CONDITIONAL(HAVE_VULKAN, [test "$enable_vulkan" != "no"])
3252 dnl  Xlib
3255 AC_PATH_XTRA()
3256 AC_CHECK_HEADERS([X11/Xlib.h])
3259 dnl  X C Bindings modules
3261 AC_ARG_ENABLE([xcb],
3262   AS_HELP_STRING([--enable-xcb], [X11 support with XCB (default enabled)]),, [
3263   AS_IF([test "${SYS}" != "mingw32" -a "${SYS}" != "darwin"], [
3264     enable_xcb="yes"
3265   ], [
3266     enable_xcb="no"
3267   ])
3270 have_xcb="no"
3271 have_xkbcommon_x11="no"
3272 have_xcb_keysyms="no"
3273 AS_IF([test "${enable_xcb}" != "no"], [
3274   xcb_err=""
3276   dnl libxcb
3277   PKG_CHECK_MODULES([XCB], [xcb >= 1.6],, [
3278     xcb_err="$xcb_err ${XCB_PKG_ERRORS}."])
3279   PKG_CHECK_MODULES([XCB_COMPOSITE], [xcb-composite],, [
3280     xcb_err="$xcb_err ${XCB_COMPOSITE_PKG_ERRORS}."])
3281   PKG_CHECK_MODULES([XCB_RANDR], [xcb-randr >= 1.3],, [
3282     xcb_err="$xcb_err ${XCB_RANDR_PKG_ERRORS}."])
3283   PKG_CHECK_MODULES([XCB_RENDER], [xcb-render],, [
3284     xcb_err="$xcb_err ${XCB_RENDER_PKG_ERRORS}."])
3285   PKG_CHECK_MODULES([XCB_SHM], [xcb-shm >= 1.9.2],, [
3286     xcb_err="$xcb_err ${XCB_SHM_PKG_ERRORS}."])
3287   PKG_CHECK_MODULES([XCB_XKB], [xcb-xkb],, [
3288     xcb_err="$xcb_err ${XCB_XKB_PKG_ERRORS}."])
3290   dnl xproto
3291   PKG_CHECK_MODULES(XPROTO, [xproto],, [
3292     xcb_err="$xcb_err ${XPROTO_PKG_ERRORS}."])
3294   AS_IF([test -n "$xcb_err"], [
3295     AC_MSG_ERROR([$xcb_err Pass --disable-xcb to skip X11 support.])
3296   ])
3298   dnl xkbcommon
3299   PKG_CHECK_MODULES([XKBCOMMON_X11], [xkbcommon-x11], [
3300     have_xkbcommon_x11="yes"
3301   ], [
3302     AC_MSG_WARN([${XKBCOMMON_X11_PKG_ERRORS}. Hotkeys are disabled.])
3303   ])
3305   dnl xcb-utils
3306   PKG_CHECK_MODULES([XCB_KEYSYMS], [xcb-keysyms >= 0.3.4], [
3307     have_xcb_keysyms="yes"
3308   ], [
3309     AC_MSG_WARN([${XCB_KEYSYMS_PKG_ERRORS}. Global hotkeys are disabled.])
3310   ])
3312   have_xcb="yes"
3314 AM_CONDITIONAL([HAVE_XCB], [test "${have_xcb}" = "yes"])
3315 AM_CONDITIONAL([HAVE_XKBCOMMON_X11], [test "${have_xkbcommon_x11}" = "yes"])
3316 AM_CONDITIONAL([HAVE_XCB_KEYSYMS], [test "${have_xcb_keysyms}" = "yes"])
3320 dnl VDPAU needs X11
3322 AC_ARG_ENABLE([vdpau],
3323   [AS_HELP_STRING([--enable-vdpau], [VDPAU hardware support (default auto)])])
3324 have_vdpau="no"
3325 AS_IF([test "${enable_vdpau}" != "no"], [
3326   PKG_CHECK_MODULES([VDPAU], [vdpau >= 0.6], [
3327     have_vdpau="yes"
3328     AS_IF([test "${no_x}" = "yes"], [
3329       AC_MSG_ERROR([VDPAU requires Xlib (X11).])
3330     ])
3331   ], [
3332     AS_IF([test -n "${enable_vdpau}"], [
3333       AC_MSG_ERROR([${VDPAU_PKG_ERRORS}.])
3334     ])
3335   ])
3337 AM_CONDITIONAL([HAVE_VDPAU], [test "${have_vdpau}" = "yes"])
3339 have_avcodec_vdpau="no"
3340 AS_IF([test "${have_vdpau}" = "yes" -a "${have_avcodec}" = "yes"], [
3341   case "${avfork}" in
3342     libav) av_vdpau_ver="56.10.0" ;;
3343     ffmpeg) av_vdpau_ver="56.19.100" ;;
3344   esac
3345   PKG_CHECK_EXISTS([libavcodec >= ${av_vdpau_ver}], [
3346     have_avcodec_vdpau="yes"
3347     AC_MSG_NOTICE([VDPAU decoding acceleration activated])
3348   ], [
3349     AS_IF([test -n "${enable_vdpau}"], [
3350       AC_MSG_ERROR([libavcodec >= 56.10.0 is required for VDPAU decoding.])
3351     ], [
3352       AC_MSG_WARN([libavcodec >= 56.10.0 are required for VDPAU decoding.])
3353     ])
3354   ])
3356 AM_CONDITIONAL([HAVE_AVCODEC_VDPAU], [test "${have_avcodec_vdpau}" = "yes"])
3360 dnl  Wayland
3362 AC_ARG_ENABLE([wayland],
3363   AS_HELP_STRING([--enable-wayland], [Wayland support (default auto)]))
3365 have_wayland="no"
3366 AS_IF([test "${enable_wayland}" != "no"], [
3367   wl_err=""
3369   dnl wayland
3370   PKG_CHECK_MODULES([WAYLAND_CLIENT], [wayland-client >= 1.5.91],, [
3371     wl_err="$wl_err ${WAYLAND_CLIENT_PKG_ERRORS}."
3372   ])
3373   PKG_CHECK_MODULES([WAYLAND_CURSOR], [wayland-cursor],, [
3374     wl_err="$wl_err ${WAYLAND_CURSOR_PKG_ERRORS}."
3375   ])
3376   PKG_CHECK_MODULES([WAYLAND_EGL], [wayland-egl],, [
3377     wl_err="$wl_err ${WAYLAND_EGL_PKG_ERRORS}."
3378   ])
3379   PKG_CHECK_MODULES([WAYLAND_SCANNER], [wayland-scanner >= 1.15], [
3380     WAYLAND_SCANNER="$(${PKG_CONFIG} wayland-scanner --variable wayland_scanner)"
3381   ], [
3382     wl_err="$wl_err ${WAYLAND_SCANNER_PKG_ERRORS}."
3383   ])
3385   dnl wayland-protocols
3386   PKG_CHECK_MODULES([WAYLAND_PROTOCOLS], [wayland-protocols >= 1.15], [
3387     WAYLAND_PROTOCOLS="$(${PKG_CONFIG} wayland-protocols --variable pkgdatadir)"
3388   ], [
3389     wl_err="$wl_err ${WAYLAND_PROTOCOLS_PKG_ERRORS}."
3390   ])
3392   AS_IF([test -n "$wl_err"], [
3393     AS_IF([test -n "$enable_wayland"], [
3394       AC_MSG_ERROR([$wl_err])
3395     ], [
3396       AC_MSG_WARN([$wl_err])
3397     ])
3398   ], [
3399     have_wayland="yes"
3400   ])
3402   dnl xkbcommon
3403   PKG_CHECK_MODULES([XKBCOMMON], [xkbcommon], [
3404     have_xkbcommon="yes"
3405   ], [
3406     AC_MSG_WARN([${XKBCOMMON_PKG_ERRORS}. Hotkeys are disabled.])
3407   ])
3409 AM_CONDITIONAL([HAVE_WAYLAND], [test "${have_wayland}" = "yes"])
3410 AC_SUBST([WAYLAND_PROTOCOLS])
3411 AC_SUBST([WAYLAND_SCANNER])
3412 AM_CONDITIONAL([HAVE_XKBCOMMON], [test "${have_xkbcommon}" = "yes"])
3416 dnl  SDL image decoder module
3418 AC_ARG_ENABLE([sdl-image],
3419   AS_HELP_STRING([--enable-sdl-image], [SDL image support (default enabled)]))
3420 AS_IF([test "${enable_sdl_image}" != "no"],[
3421   PKG_CHECK_MODULES(SDL_IMAGE, [SDL_image >= 1.2.10], [
3422     VLC_ADD_PLUGIN([sdl_image])
3423   ], [
3424     AC_MSG_WARN([${SDL_IMAGE_PKG_ERRORS}. You should install it alongside your SDL package.])
3425   ])
3429 dnl  freetype module
3431 AC_ARG_ENABLE([freetype],
3432   AS_HELP_STRING([--enable-freetype],   [freetype support   (default auto)]))
3433 AC_ARG_ENABLE([fribidi],
3434   AS_HELP_STRING([--enable-fribidi],    [fribidi support    (default auto)]))
3435 AC_ARG_ENABLE([harfbuzz],
3436   AS_HELP_STRING([--enable-harfbuzz],   [harfbuzz support   (default auto)]))
3437 AC_ARG_ENABLE([fontconfig],
3438   AS_HELP_STRING([--enable-fontconfig], [fontconfig support (default auto)]))
3440 AC_ARG_WITH([default-font],
3441     AS_HELP_STRING([--with-default-font=PATH],
3442         [Path to the default font]),
3443         [AC_DEFINE_UNQUOTED([DEFAULT_FONT_FILE],
3444             "$withval", [Default font])])
3445 AC_ARG_WITH([default-monospace-font],
3446     AS_HELP_STRING([--with-default-monospace-font=PATH],
3447         [Path to the default font]),
3448         [AC_DEFINE_UNQUOTED([DEFAULT_MONOSPACE_FONT_FILE],
3449             "$withval", [Default monospace font])])
3451 AC_ARG_WITH([default-font-family],
3452     AS_HELP_STRING([--with-default-font-family=NAME],
3453         [Name of the default font family]),
3454         [AC_DEFINE_UNQUOTED([DEFAULT_FAMILY],
3455             "$withval", [Default font family])])
3456 AC_ARG_WITH([default-monospace-font-family],
3457     AS_HELP_STRING([--with-default-monospace-font-family=NAME],
3458         [Name of the default font family]),
3459         [AC_DEFINE_UNQUOTED([DEFAULT_MONOSPACE_FAMILY],
3460             "$withval", [Default monospace font family])])
3462 have_freetype="no"
3463 have_fontconfig="no"
3464 have_fribidi="no"
3465 have_harfbuzz="no"
3467 if test "${enable_freetype}" != "no"; then
3468    PKG_CHECK_MODULES(FREETYPE, freetype2, [
3469       have_freetype="yes"
3470       VLC_ADD_CPPFLAGS([skins2],[${FREETYPE_CFLAGS}])
3471       VLC_ADD_LIBS([skins2],[${FREETYPE_LIBS}])
3473     dnl fontconfig support
3474     AS_IF([test "${enable_fontconfig}" != "no" -a "${SYS}" != "mingw32" -a "${SYS}" != "darwin"], [
3475       PKG_CHECK_MODULES(FONTCONFIG, [fontconfig >= 2.11], [
3476         have_fontconfig="yes"
3477       ], [
3478         AC_MSG_WARN([${FONTCONFIG_PKG_ERRORS}. Styles will be disabled in FreeType.])
3479       ])
3480     ])
3482       dnl fribidi support
3483       if test "${enable_fribidi}" != "no"; then
3484         PKG_CHECK_MODULES(FRIBIDI, fribidi, [
3485           have_fribidi="yes"
3486           VLC_ADD_CPPFLAGS([skins2], [${FRIBIDI_CFLAGS} -DHAVE_FRIBIDI])
3487           VLC_ADD_LIBS([skins2], [${FRIBIDI_LIBS}])
3488         ],[AC_MSG_WARN([${FRIBIDI_PKG_ERRORS}. Bidirectional text and complex scripts (Arabic, Farsi, Thai...) will be disabled in FreeType.])])
3489       fi
3491       dnl harfbuzz support
3492       if test "${have_fribidi}" != "no"; then
3493         if test "${enable_harfbuzz}" != "no"; then
3494           PKG_CHECK_MODULES(HARFBUZZ, harfbuzz, [
3495             have_harfbuzz="yes"
3496             VLC_ADD_CPPFLAGS([skins2], [${HARFBUZZ_CFLAGS} -DHAVE_HARFBUZZ])
3497             VLC_ADD_LIBS([skins2], [${HARFBUZZ_LIBS}])
3498           ],[AC_MSG_WARN([${HARFBUZZ_PKG_ERRORS}. Support for complex scripts (Arabic, Farsi, Thai...) will be disabled in FreeType.])])
3499         fi
3500       fi
3501   ],[
3502   AS_IF([test -n "${enable_freetype}"],[
3503     AC_MSG_ERROR([${FREETYPE_PKG_ERRORS}. Install FreeType2 development or configure with --disable-freetype.])
3504     ])
3505   ])
3508 AM_CONDITIONAL([HAVE_FREETYPE], [test "${have_freetype}" = "yes"])
3509 AM_CONDITIONAL([HAVE_FONTCONFIG], [test "${have_fontconfig}" = "yes"])
3510 AM_CONDITIONAL([HAVE_FRIBIDI], [test "${have_fribidi}" = "yes"])
3511 AM_CONDITIONAL([HAVE_HARFBUZZ], [test "${have_harfbuzz}" = "yes"])
3514 dnl libass subtitle rendering module
3516 AC_ARG_ENABLE([libass],
3517   AS_HELP_STRING([--enable-libass], [Subtitle support using libass (default enabled)]))
3518 AS_IF( [test "${enable_libass}" != "no"], [
3519   PKG_CHECK_MODULES(LIBASS, [libass >= 0.9.8],
3520       [
3521         VLC_ADD_PLUGIN([libass])
3523         if test "${have_fontconfig}" != "no"; then
3524             VLC_ADD_CPPFLAGS([libass],[-DHAVE_FONTCONFIG])
3525             VLC_ADD_LIBS([libass],[${FONTCONFIG_LIBS}])
3526         fi
3527       ],[
3528         AC_MSG_WARN([${LIBASS_PKG_ERRORS}.])
3529       ])
3530   ])
3533 dnl SAPI (text to Speech renderer for Windows)
3535 AC_LANG_PUSH([C++])
3536 AC_CHECK_TYPES([ISpObjectToken],[
3537               have_sapi="yes"
3538             ],[AC_MSG_WARN([sapi.h not found. Text to Speech renderer for Windows disabled])],
3539               [#include <windows.h>
3540                #include <sapi.h>
3541                #include <sphelper.h>])
3542 AM_CONDITIONAL([HAVE_SAPI], [test "${have_sapi}" = "yes"])
3543 AC_LANG_POP([C++])
3546 dnl  SVG module (text rendering and image decoding)
3548 PKG_ENABLE_MODULES_VLC([SVG], [], [librsvg-2.0 >= 2.9.0], [SVG rendering library],[auto])
3549 PKG_ENABLE_MODULES_VLC([SVGDEC], [], [librsvg-2.0 >= 2.9.0 cairo >= 1.13.1], [SVG image decoder library],[auto])
3552 dnl  Windows DirectX module
3555 AC_ARG_ENABLE([directx],
3556   AS_HELP_STRING([--enable-directx],
3557     [Microsoft DirectX support (default enabled on Windows)]),, [
3558   AS_IF([test "${SYS}" = "mingw32"], [
3559     enable_directx="yes"
3560   ], [
3561     enable_directx="no"
3562   ])
3564 AS_IF([test "${enable_directx}" != "no"], [
3565   dnl OpenGL
3566   AC_CHECK_HEADERS([GL/glew.h], [
3567     AC_CHECK_HEADERS([GL/wglew.h], [
3568         VLC_ADD_PLUGIN([glwin32 wgl])
3569       ],, [
3570         #include <windows.h>
3571         #include <GL/glew.h>
3572       ])],, [
3573       #include <windows.h>
3574    ])
3576   dnl Direct3D11
3577   AC_CHECK_HEADERS([d3d11.h], [
3578     VLC_ADD_PLUGIN([direct3d11 direct3d11_filters])
3579   ])
3581   dnl Direct3D9
3582   AC_CHECK_HEADERS([d3d9.h], [
3583     VLC_ADD_PLUGIN([direct3d9])
3584     AC_CHECK_HEADERS([d3dx9effect.h])
3586     AC_PREPROC_IFELSE([AC_LANG_PROGRAM(
3587         [[#define COBJMACROS
3588           #include <d3d9.h>
3589           #include <dxva2api.h>
3590           #ifndef IDirectXVideoProcessorService_GetVideoProcessorDeviceGuids
3591           # error dxva2 too old
3592           #endif
3593         ]],[[;]])
3594       ],[
3595         VLC_ADD_PLUGIN([direct3d9_filters])
3596       ],
3597       [AC_MSG_WARN([Could not find required IDirectXVideoDecoder in dxva2api.h])])
3599   ])
3603 dnl  Linux framebuffer module
3605 AC_CHECK_HEADER([linux/fb.h], [
3606   VLC_ADD_PLUGIN([fb])
3610 dnl  Linux kernel mode setting module
3612 PKG_ENABLE_MODULES_VLC([KMS], [], [libdrm >= 2.4.83], [Linux kernel mode setting output], [auto])
3615 dnl  libcaca plugin
3617 PKG_ENABLE_MODULES_VLC([CACA], [], [caca >= 0.99.beta14], [libcaca output],[auto])
3620 dnl  OS/2 KVA plugin
3622 AC_ARG_ENABLE([kva],
3623   AS_HELP_STRING([--enable-kva],
3624     [support the K Video Accelerator KVA (default enabled on OS/2)]),, [
3625   AS_IF([test "$SYS" = "os2"], [
3626     enable_kva="yes"
3627   ])
3629 have_kva="no"
3630 KVA_LIBS=""
3631 AS_IF([test "$enable_kva" != "no"], [
3632   AC_CHECK_HEADERS([kva.h], [
3633     have_kva="yes"
3634     AC_CHECK_LIB([kva], [main], [
3635       KVA_LIBS="-lkva"
3636     ])
3637   ])
3639 AC_SUBST([KVA_LIBS])
3640 AM_CONDITIONAL([HAVE_KVA], [test "${have_kva}" = "yes"])
3643 dnl MMAL plugin
3645 AC_ARG_ENABLE([mmal],
3646   AS_HELP_STRING([--enable-mmal],
3647     [Multi-Media Abstraction Layer (MMAL) hardware plugin (default enable)]))
3648 if test "${enable_mmal}" != "no"; then
3649   VLC_SAVE_FLAGS
3650   LDFLAGS="${LDFLAGS} -L/opt/vc/lib -lvchostif"
3651   CPPFLAGS="${CPPFLAGS} -isystem /opt/vc/include -isystem /opt/vc/include/interface/vcos/pthreads -isystem /opt/vc/include/interface/vmcs_host/linux"
3652   AC_CHECK_HEADERS([interface/mmal/mmal.h],
3653     [ AC_CHECK_LIB([bcm_host], [vc_tv_unregister_callback_full], [
3654         have_mmal="yes"
3655         VLC_ADD_PLUGIN([mmal])
3656         VLC_ADD_LDFLAGS([mmal],[ -L/opt/vc/lib ])
3657         VLC_ADD_CFLAGS([mmal],[ -isystem /opt/vc/include -isystem /opt/vc/include/interface/vcos/pthreads -isystem /opt/vc/include/interface/vmcs_host/linux ])
3658         VLC_ADD_LIBS([mmal],[ -lbcm_host -lmmal -lmmal_core -lmmal_components -lmmal_util -lvchostif ]) ], [
3659           AS_IF([test "${enable_mmal}" = "yes"],
3660             [ AC_MSG_ERROR([Cannot find bcm library...]) ],
3661             [ AC_MSG_WARN([Cannot find bcm library...]) ])
3662           ],
3663         [])
3664     ] , [ AS_IF([test "${enable_mmal}" = "yes"],
3665       [ AC_MSG_ERROR([Cannot find development headers for mmal...]) ],
3666       [ AC_MSG_WARN([Cannot find development headers for mmal...]) ]) ])
3667   VLC_RESTORE_FLAGS
3669 AM_CONDITIONAL([HAVE_MMAL], [test "${have_mmal}" = "yes"])
3672 dnl  Audio plugins
3675 EXTEND_HELP_STRING([Audio plugins:])
3678 dnl  Pulseaudio module
3680 AC_ARG_ENABLE([pulse],
3681   AS_HELP_STRING([--enable-pulse],
3682     [use the PulseAudio client library (default auto)]))
3683 have_pulse="no"
3684 AS_IF([test "${enable_pulse}" != "no"], [
3685   PKG_CHECK_MODULES([PULSE], [libpulse >= 1.0], [
3686     have_pulse="yes"
3687   ], [
3688     AS_IF([test "x${enable_pulse}" != "x"], [
3689       AC_MSG_ERROR([$PULSE_PKG_ERRORS. PulseAudio 1.0 or later required.])
3690     ])
3691   ])
3693 AM_CONDITIONAL([HAVE_PULSE], [test "${have_pulse}" = "yes"])
3696 dnl  ALSA module
3698 AC_ARG_ENABLE([alsa],
3699   AS_HELP_STRING([--enable-alsa],
3700     [support the Advanced Linux Sound Architecture (default auto)]),, [
3701   AS_IF([test "$SYS" = "linux" -a "${have_pulse}" = "no"], [
3702     enable_alsa="yes"
3703   ])
3705 have_alsa="no"
3706 AS_IF([test "${enable_alsa}" != "no"], [
3707   PKG_CHECK_MODULES([ALSA], [alsa >= 1.0.24], [
3708     have_alsa="yes"
3709   ], [
3710     AS_IF([test "x${enable_alsa}" != "x"], [
3711       AC_MSG_ERROR([$ALSA_PKG_ERRORS. alsa-lib 1.0.24 or later required. Pass --disable-alsa to ignore this error.])
3712     ])
3713   ])
3715 AM_CONDITIONAL([HAVE_ALSA], [test "${have_alsa}" = "yes"])
3718 dnl  Open Sound System module
3720 AC_ARG_ENABLE([oss],
3721   AS_HELP_STRING([--enable-oss],
3722     [support the Open Sound System OSS (default enabled on FreeBSD/NetBSD/DragonFlyBSD)]),, [
3723   AS_IF([test "$SYS" = "mingw32" -o "$SYS" = "linux" -o "$SYS" = "openbsd"], [
3724     enable_oss="no"
3725   ])
3727 have_oss="no"
3728 OSS_LIBS=""
3729 AS_IF([test "$enable_oss" != "no"], [
3730   AC_CHECK_HEADERS([soundcard.h sys/soundcard.h], [
3731     have_oss="yes"
3732     AC_CHECK_LIB([ossaudio], [main], [
3733       OSS_LIBS="-lossaudio"
3734     ])
3735   ])
3737 AC_SUBST([OSS_LIBS])
3738 AM_CONDITIONAL([HAVE_OSS], [test "${have_oss}" = "yes"])
3741 dnl  OpenBSD sndio module
3743 AC_ARG_ENABLE([sndio],
3744   AS_HELP_STRING([--disable-sndio],
3745     [support the OpenBSD sndio (default auto)]),, [
3746   AS_IF([test "$SYS" = "openbsd"], [
3747     enable_sndio="yes"
3748   ])
3750 have_sndio="no"
3751 AS_IF([test "$enable_sndio" != "no"], [
3752   AC_CHECK_HEADER([sndio.h], [
3753     have_sndio="yes"
3754   ])
3756 AM_CONDITIONAL([HAVE_SNDIO], [test "${have_sndio}" = "yes"])
3759 dnl  Windows Audio Session plugin
3761 AC_ARG_ENABLE([wasapi],
3762   AS_HELP_STRING([--enable-wasapi],
3763     [use the Windows Audio Session API (default auto)])
3765 have_wasapi="no"
3766 AS_IF([test "$enable_wasapi" != "no"], [
3767   AC_CHECK_HEADER([audioclient.h], [
3768     have_wasapi="yes"
3769   ], [
3770     AS_IF([test "x${enable_wasapi}" != "x"], [
3771       AC_MSG_ERROR([Windows Audio Session API not found.])
3772     ])
3773   ])
3775 AM_CONDITIONAL([HAVE_WASAPI], [test "${have_wasapi}" = "yes"])
3778 dnl  JACK modules
3780 AC_ARG_ENABLE([jack],
3781   AS_HELP_STRING([--disable-jack],
3782     [do not use jack (default auto)]))
3783 have_jack="no"
3784 AS_IF([test "${enable_jack}" != "no"], [
3785     PKG_CHECK_MODULES(JACK, jack >= 1.9.7,
3786       [ have_jack=yes ],
3787       [
3788       AC_MSG_WARN([${JACK_PKG_ERRORS}, trying jack1 instead])
3790       PKG_CHECK_MODULES(JACK, jack >= 0.120.1 jack < 1.0,
3791       [ have_jack=yes ],
3792       [
3793       AS_IF([test -n "${enable_jack}"],
3794          [AC_MSG_ERROR([${JACK_PKG_ERRORS}.])],
3795          [AC_MSG_WARN([${JACK_PKG_ERRORS}.])])
3796       ])
3797     ])
3799 AM_CONDITIONAL([HAVE_JACK], [test "${have_jack}" != "no"])
3802 dnl  OpenSLES Android
3804 AC_ARG_ENABLE([opensles],
3805   AS_HELP_STRING([--enable-opensles], [Android OpenSL ES audio module (default disabled)]))
3806 if test "${HAVE_ANDROID}" = "1"; then
3807   if test "${enable_opensles}" = "yes"; then
3808       AC_CHECK_HEADERS([SLES/OpenSLES.h],
3809         [ VLC_ADD_PLUGIN([opensles_android]) ],
3810         [ AC_MSG_ERROR([cannot find OpenSLES headers])] )
3811   fi
3815 dnl libsamplerate plugin
3817 PKG_ENABLE_MODULES_VLC([SAMPLERATE], [], [samplerate], [Resampler with libsamplerate], [auto])
3820 dnl  soxr module
3822 PKG_ENABLE_MODULES_VLC([SOXR], [], [soxr >= 0.1.2], [SoX Resampler library], [auto])
3825 dnl  OS/2 KAI plugin
3827 AC_ARG_ENABLE([kai],
3828   AS_HELP_STRING([--enable-kai],
3829     [support the K Audio Interface KAI (default enabled on OS/2)]),, [
3830   AS_IF([test "$SYS" = "os2"], [
3831     enable_kai="yes"
3832   ])
3834 have_kai="no"
3835 KAI_LIBS=""
3836 AS_IF([test "$enable_kai" != "no"], [
3837   AC_CHECK_HEADERS([kai.h], [
3838     have_kai="yes"
3839     AC_CHECK_LIB([kai], [main], [
3840       KAI_LIBS="-lkai"
3841     ])
3842   ])
3844 AC_SUBST([KAI_LIBS])
3845 AM_CONDITIONAL([HAVE_KAI], [test "${have_kai}" = "yes"])
3848 dnl  chromaprint audio track fingerprinter
3850 m4_pushdef([libchromaprint_version], 0.6.0)
3851 PKG_WITH_MODULES([CHROMAPRINT],[libchromaprint >= libchromaprint_version],
3852     VLC_ADD_PLUGIN([stream_out_chromaprint]),
3853     AS_IF([test "${enable_chromaprint}" = "yes"],
3854         [AC_MSG_ERROR(Library [libchromaprint >= libchromaprint_version] needed for [chromaprint] was not found)],
3855         [AC_MSG_WARN(Library [libchromaprint >= libchromaprint_version] needed for [chromaprint] was not found)]
3856          ),
3857     [(Chromaprint based audio fingerprinter)],[auto])
3858 m4_popdef([libchromaprint_version])
3861 dnl  Chromecast streaming support
3863 m4_pushdef([protobuf_lite_version], 2.5.0)
3864 AC_ARG_VAR(PROTOC, [protobuf compiler])
3865 AC_CHECK_PROGS(PROTOC, protoc, no)
3866 PKG_WITH_MODULES([CHROMECAST],[protobuf-lite >= protobuf_lite_version], [
3867     AS_IF([test "x${PROTOC}" != "xno"], [
3868         build_chromecast="yes"
3869     ], [
3870     AC_MSG_ERROR(protoc compiler needed for [chromecast] was not found)
3871     ])
3872 ], [
3873     AS_IF([test "${enable_chromecast}" = "yes"],
3874         AC_MSG_ERROR(Library [protobuf-lite >= protobuf_lite_version] needed for [chromecast] was not found),
3875         AC_MSG_WARN(Library [protobuf-lite >= protobuf_lite_version] needed for [chromecast] was not found)
3876     )
3877     enable_chromecast="no"
3878 ], [(Chromecast streaming support)], [auto])
3879 AM_CONDITIONAL([BUILD_CHROMECAST], [test "${build_chromecast}" = "yes"])
3880 m4_popdef([protobuf_lite_version])
3883 dnl  Interface plugins
3886 EXTEND_HELP_STRING([Interface plugins:])
3889 dnl QT
3891 AC_ARG_ENABLE([qt],
3892   AS_HELP_STRING([--disable-qt], [Qt UI support (default enabled)]),, [
3893   AS_IF([test "${enable_vlc}" != "no"], [enable_qt="yes"])
3894   AS_IF([test "${SYS}" = "darwin"], [
3895     enable_qt="no"
3896   ])
3898 have_qt5_x11="no"
3899 AS_IF([test "${enable_qt}" != "no"], [
3900   PKG_CHECK_MODULES([QT], [Qt5Core >= 5.11.0 Qt5Widgets Qt5Gui Qt5Quick Qt5QuickWidgets Qt5QuickControls2 Qt5Svg], [
3901       PKG_CHECK_MODULES([QT5_X11], [Qt5X11Extras], [
3902           have_qt5_x11="yes"
3903       ],[
3904           AC_MSG_WARN([Not building Qt Interface with X11 helpers.])
3905       ])
3906       QT_PATH="$(eval $PKG_CONFIG --variable=exec_prefix Qt5Core)"
3907       QT_HOST_PATH="$(eval $PKG_CONFIG --variable=host_bins Qt5Core)"
3908       QT_VERSION="$(eval $PKG_CONFIG --modversion Qt5Gui)"
3909       AC_PATH_PROGS(MOC, [moc-qt5 moc], moc, ["${QT_HOST_PATH}" "${QT_PATH}/bin"])
3910       AC_PATH_PROGS(RCC, [rcc-qt5 rcc], rcc, ["${QT_HOST_PATH}" "${QT_PATH}/bin"])
3911       AC_PATH_PROGS(UIC, [uic-qt5 uic], uic, ["${QT_HOST_PATH}" "${QT_PATH}/bin"])
3912       AC_PATH_PROGS(QMLCACHE, [qmlcachegen-qt5 qmlcachegen], no, ["${QT_HOST_PATH}" "${QT_PATH}/bin"])
3913       AS_IF([test "x${QMLCACHE}" = "xno"], [
3914           AC_MSG_WARN([qmlcachegen not found])
3915       ])
3916     ], [
3917       AS_IF([test -n "${enable_qt}"],[
3918         AC_MSG_ERROR([${QT_PKG_ERRORS}. If you want to build VLC without GUI, pass --disable-qt.])
3919       ],[
3920         AC_MSG_WARN([${QT_PKG_ERRORS}.])
3921       ])
3922       enable_qt="no"
3923     ])
3926 AC_ARG_ENABLE([qt-qml-cache],
3927   AS_HELP_STRING([--enable-qt-qml-cache],
3928     [enable qml cache generation]))
3929 AM_CONDITIONAL([HAVE_QMLCACHE], [test "${enable_qt_qml_cache}" = "yes" && test "x$QMLCACHE" != "xno"])
3931 AC_ARG_ENABLE([qt-qml-debug],
3932   AS_HELP_STRING([--enable-qt-qml-debug], [enable qml debuger]))
3933 AM_CONDITIONAL(QT_QML_DEBUG, [test "${enable_qt_qml_debug}" = "yes"])
3935 AS_IF([test "${enable_qt}" != "no"], [
3936   ALIASES="${ALIASES} qvlc"
3938 AC_SUBST([QT_VERSION])
3939 AM_CONDITIONAL([ENABLE_QT], [test "$enable_qt" != "no"])
3940 AM_CONDITIONAL([HAVE_QT5_X11], [test "${have_qt5_x11}" = "yes"])
3943 dnl detect kde4-config patch (used for kde solids).
3945 AC_ARG_VAR([KDE4_CONFIG], [kde4-config utility])
3946 AS_IF([test "x$KDE4_CONFIG" = "x"], [
3947   KDE4_CONFIG="kde4-config"
3951 dnl Simple test for skins2 dependency
3953 AS_IF([test "$enable_qt" = "no"], [
3954   AS_IF([test "${enable_skins2}" = "yes"], [
3955     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.])
3956   ], [
3957     enable_skins2="no"
3958     AC_MSG_WARN([The skins2 module depends on the Qt interface, Qt is not built so skins2 is disabled.])
3959   ])
3963 dnl Skins2 module
3965 AC_ARG_ENABLE([skins2],
3966   AS_HELP_STRING([--enable-skins2], [skins interface module (default auto)]))
3967 AS_IF([test "${enable_skins2}" != "no"], [
3968   have_skins_deps="yes"
3970   dnl Win32
3971   AS_IF([test "${SYS}" = "mingw32"], [
3972     VLC_ADD_CPPFLAGS([skins2],[-U_OFF_T_ -U_off_t -DWIN32_SKINS])
3973     VLC_ADD_LIBS([skins2],[-lgdi32 -lole32 -luuid -lmsimg32])
3974   dnl OS/2
3975   ], [test "${SYS}" = "os2"], [
3976     VLC_ADD_CPPFLAGS([skins2],[ -DOS2_SKINS])
3977   dnl Linux/Unix
3978   ], [
3979     PKG_CHECK_MODULES([XPM], [xpm],, [have_skins_deps="no"])
3980     PKG_CHECK_MODULES([XINERAMA], [xinerama],, [have_skins_deps="no"])
3981     PKG_CHECK_MODULES([XCURSOR], [xcursor],, [have_skins_deps="no"])
3982     PKG_CHECK_MODULES([XEXT], [xext],, [have_skins_deps="no"])
3983     VLC_ADD_CPPFLAGS([skins2],[${X_CFLAGS} ${XEXT_CFLAGS} ${XPM_CFLAGS} -DX11_SKINS])
3984     VLC_ADD_LIBS([skins2],[${X_LIBS} ${X_PRE_LIBS} ${XEXT_LIBS} ${XPM_LIBS} ${XINERAMA_LIBS} ${XCURSOR_LIBS} -lX11])
3985   ])
3987   dnl we need freetype
3988   AS_IF([test "${have_freetype}" != "yes"], [
3989     have_skins_deps="no"
3990   ])
3992   AS_IF([test "${have_skins_deps}" = "no"], [
3993     AS_IF([test "x${enable_skins2}" = "x"], [
3994       AC_MSG_WARN([Skins2 interface disabled due to missing dependencies.])
3995     ], [
3996       AC_MSG_ERROR([Skins2 interface requires FreeType, libxcursor, libxpm, libxext and libxinerama])
3997     ])
3998     enable_skins2="no"
3999   ], [
4000     ALIASES="${ALIASES} svlc"
4001     enable_skins2="yes"
4002   ])
4004 AM_CONDITIONAL([BUILD_SKINS], [test "${enable_skins2}" = "yes"])
4006 AC_ARG_ENABLE([libtar],
4007   AS_HELP_STRING([--enable-libtar], [libtar support for skins2 (default auto)]))
4008 AS_IF([test "${enable_skins2}" = "yes" && test "${enable_libtar}" != "no"], [
4009   AC_CHECK_HEADERS([libtar.h], [
4010     VLC_ADD_LIBS([skins2],[-ltar])
4011   ])
4015 dnl  MacOS X gui module
4017 AC_ARG_ENABLE([macosx],
4018   AS_HELP_STRING([--enable-macosx], [Mac OS X gui support (default enabled on Mac OS X)]))
4019 if test "x${enable_macosx}" != "xno" -a "${SYS}" = "darwin"
4020 then
4022   dnl
4023   dnl If possible, use xcrun to find the right ibtool
4024   dnl
4026   AC_PATH_PROG([XCRUN], [xcrun], [no])
4027   AS_IF([test ! "x${XCRUN}" = "xno"], [
4028     AC_MSG_CHECKING([for ibtool (using xcrun)])
4029     XIB="$(eval $XCRUN -f ibtool 2>/dev/null || echo no)"
4030     AC_MSG_RESULT([${XIB}])
4031   ], [
4032     AC_MSG_WARN([Looking for tools without using xcrun])
4033   ])
4035   AS_IF([test "x${XIB}" = "xno"], [
4036     AC_PATH_PROG(XIB, [ibtool], [no])
4037     AS_IF([test "x${XIB}" = "xno"], [
4038       AC_MSG_ERROR([ibtool was not found, but is required for --enable-macosx])
4039     ])
4040   ])
4042 AM_CONDITIONAL([ENABLE_MACOSX_UI], [test "$enable_macosx" != "no" -a "${SYS}" = "darwin"])
4045 dnl  MacOS X sparkle update support
4047 AC_ARG_ENABLE([sparkle],
4048   AS_HELP_STRING([--enable-sparkle], [Sparkle update support for OS X (default enabled on Mac OS X)]))
4049 if test "x${enable_sparkle}" != "xno" -a "${HAVE_OSX}" = "1"
4050 then
4051   if test ! -d ${CONTRIB_DIR}/Sparkle.framework -a ! -d ${CONTRIB_DIR}/Frameworks/Sparkle.framework
4052   then
4053     AC_MSG_ERROR([Sparkle framework is required and was not found in ${CONTRIB_DIR}])
4054   fi
4056   AC_DEFINE([HAVE_SPARKLE], [1], [Define to 1 if sparkle is enabled.])
4058 AM_CONDITIONAL([HAVE_SPARKLE], [test "$enable_sparkle" != "no"])
4061 dnl  MacOS X breakpad creash reporter support
4063 AC_ARG_WITH([breakpad],
4064   AS_HELP_STRING([--with-breakpad=URL], [Enable Breakpad reporter using given URL]), [], [with_breakpad=no])
4066 AS_IF([test "$with_breakpad" != "no"], [
4068   AS_IF([test "$with_breakpad" = "yes"], [
4069     AC_MSG_ERROR([You need to supply the CrashDragon Server URL as value for --with-breakpad])
4070   ])
4072   AS_IF([test "$HAVE_OSX" = "1"], [
4073     AC_MSG_CHECKING([for Breakpad framework])
4074     AS_IF([test ! -d ${CONTRIB_DIR}/Breakpad.framework -a \
4075                 ! -d ${CONTRIB_DIR}/Frameworks/Breakpad.framework], [
4076       AC_MSG_RESULT([no])
4077       with_breakpad="no"
4078       AC_MSG_ERROR([Breakpad framework is required and was not found in ${CONTRIB_DIR}])
4079     ], [
4080       AC_MSG_RESULT([yes])
4081     ])
4082   ],[
4083     PKG_CHECK_MODULES([BREAKPAD], [breakpad-client], [
4084       LDFLAGS="${LDFLAGS} -Wl,--build-id"
4085     ], [
4086       AC_MSG_ERROR(["breakpad not found"])
4087     ])
4088   ])
4091 AM_CONDITIONAL([HAVE_BREAKPAD], [test "$with_breakpad" != "no"])
4092 AS_IF([test "$with_breakpad" != "no"], [
4093   AC_SUBST([BREAKPAD_URL], ["${with_breakpad}"])
4097 dnl  Minimal Mac OS X module
4099 AC_ARG_ENABLE([minimal-macosx],
4100   AS_HELP_STRING([--enable-minimal-macosx], [Minimal Mac OS X support (default disabled)]))
4101 if test "${enable_minimal_macosx}" = "yes" -a "${SYS}" = "darwin"
4102 then
4103   VLC_ADD_PLUGIN([minimal_macosx])
4107 dnl Mac OS X fancy dmg build tool
4109 if test "${HAVE_OSX}" = "1"
4110 then
4111   AC_PATH_PROG(DMGBUILD, dmgbuild, no)
4112   AS_IF([test "x${DMGBUILD}" = "xno"], [
4113     AC_MSG_WARN([dmgbuild not found -- unable to build fancy DMGs])
4114   ])
4116 AM_CONDITIONAL([HAVE_DMGBUILD], [test "x$DMGBUILD" != "xno" -a "${HAVE_OSX}" = "1"])
4119 dnl  VideoToolbox plugins
4120 AC_CHECK_HEADERS([VideoToolbox/VideoToolbox.h], [
4121     VLC_ADD_PLUGIN([videotoolbox])
4122     VLC_ADD_PLUGIN([cvpx])
4123   ])
4126 dnl  AudioToolbox MIDI plugin
4127 AC_CHECK_HEADERS([AudioToolbox/AudioToolbox.h], [
4128   VLC_ADD_PLUGIN([audiotoolboxmidi])
4132 dnl  ncurses module
4134 AC_ARG_ENABLE([ncurses],
4135 AS_HELP_STRING([--disable-ncurses],[ncurses text-based interface (default auto)]))
4136 have_ncurses="no"
4137 AS_IF([test "${enable_ncurses}" != "no"] ,[
4138   PKG_CHECK_MODULES([NCURSES], [ncursesw], [
4139     have_ncurses="yes"
4140     ALIASES="${ALIASES} nvlc"
4141   ], [
4142     AS_IF([test -n "${enable_ncurses}"], [
4143       AC_MSG_ERROR([${NCURSES_PKG_ERRORS}.])
4144     ])
4145   ])
4147 AM_CONDITIONAL([HAVE_NCURSES], [test "${have_ncurses}" = "yes"])
4150 dnl  Lirc plugin
4152 AC_ARG_ENABLE([lirc],
4153   AS_HELP_STRING([--enable-lirc], [lirc support (default disabled)]))
4154 have_lirc="no"
4155 AS_IF([test "${enable_lirc}" = "yes"], [
4156   AC_CHECK_HEADER(lirc/lirc_client.h, [
4157     AC_CHECK_LIB([lirc_client], [lirc_init], [
4158       have_lirc="yes"
4159     ])
4160   ])
4162 AM_CONDITIONAL([HAVE_LIRC], [test "${have_lirc}" = "yes"])
4165 dnl  Bitstream
4167 PKG_CHECK_MODULES([BITSTREAM], [bitstream > 1.4],[have_bitstream="yes"], [have_bitstream="no"])
4168 AM_CONDITIONAL([HAVE_BITSTREAM], [test "${have_bitstream}" = "yes"])
4171 dnl  SRT plugin
4173 PKG_ENABLE_MODULES_VLC([SRT], [access_srt access_output_srt], [srt >= 1.3.0], [SRT input/output plugin], [auto], [], [], [-DENABLE_SRT])
4175 EXTEND_HELP_STRING([Visualisations and Video filter plugins:])
4177 dnl  goom visualization plugin
4179 PKG_ENABLE_MODULES_VLC([GOOM], [], [libgoom2], [goom visualization plugin], [auto])
4182 dnl libprojectM visualization plugin
4184 AC_ARG_ENABLE([projectm],
4185   AS_HELP_STRING([--enable-projectm], [projectM visualization plugin (default enabled)]))
4186 AS_IF([test "${enable_projectm}" != "no"],
4187   [
4188     PKG_CHECK_MODULES(PROJECTM, libprojectM,
4189     [
4190       VLC_ADD_PLUGIN([projectm])
4191       PKG_CHECK_EXISTS([libprojectM >= 2.0.0],
4192         [ AC_DEFINE([HAVE_PROJECTM2], 1, [Define to 1 if using libprojectM 2.x]) ],
4193         [ AC_MSG_WARN( [Using libprojectM version 1] )
4194       ])
4195     ],[
4196       AC_MSG_WARN([${PROJECTM_PKG_ERRORS}.])
4197     ])
4198   ])
4201 dnl Vovoid VSXu visualization plugin
4203 AC_ARG_ENABLE([vsxu],
4204   AS_HELP_STRING([--enable-vsxu], [Vovoid VSXu visualization plugin (default auto)]))
4205 AS_IF([test "${enable_vsxu}" != "no"],
4206   [
4207     PKG_CHECK_MODULES(VSXU, libvsxu,
4208     [
4209       VLC_ADD_PLUGIN([vsxu])
4210     ],[
4211       AC_MSG_WARN([${VSXU_PKG_ERRORS}.])
4212     ])
4213   ])
4215 EXTEND_HELP_STRING([Service Discovery plugins:])
4217 dnl  Avahi-Zeroconf services discovery
4218 PKG_ENABLE_MODULES_VLC([AVAHI], [], [avahi-client >= 0.6], [Zeroconf services discovery], [auto])
4221 dnl  libudev services discovery
4222 PKG_ENABLE_MODULES_VLC([UDEV], [], [libudev >= 142], [Linux udev services discovery], [auto])
4225 dnl MTP devices services discovery
4226 PKG_ENABLE_MODULES_VLC([MTP], [mtp access_mtp], [libmtp >= 1.0.0], [MTP devices support], [auto])
4229 dnl UPnP Plugin (Intel SDK)
4231 PKG_ENABLE_MODULES_VLC([UPNP], [upnp], [libupnp], [Intel UPNP SDK],[auto])
4234 dnl mDNS using libmicrodns
4236 PKG_ENABLE_MODULES_VLC([MICRODNS], [], [microdns], [mDNS services discovery], [auto])
4239 EXTEND_HELP_STRING([Misc options:])
4242 dnl  libxml2 module
4244 PKG_ENABLE_MODULES_VLC([LIBXML2], [xml], [libxml-2.0 >= 2.5], [libxml2 support],[auto])
4248 dnl libgcrypt
4250 AC_ARG_ENABLE([libgcrypt],
4251   AS_HELP_STRING([--disable-libgcrypt], [gcrypt support (default enabled)]))
4252 AC_ARG_VAR([GCRYPT_CFLAGS], [C compiler flags for gcrypt])
4253 AC_ARG_VAR([GCRYPT_LIBS], [linker flags flags for gcrypt])
4255 # require libgcrypt >= 1.6.0
4256 AS_IF([test "${enable_libgcrypt}" != "no"], [
4257   AC_CACHE_CHECK([for gcrypt 1.6.0 or later], [ac_cv_lib_gcrypt], [
4258     VLC_SAVE_FLAGS
4259     CFLAGS="${CFLAGS} ${GCRYPT_CFLAGS}"
4260     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([
4261 [#include <gcrypt.h>
4262 #if GCRYPT_VERSION_NUMBER < 0x010600
4263 #error
4264 #endif]])], [
4265       ac_cv_lib_gcrypt=yes
4266     ], [
4267       ac_cv_lib_gcrypt=no
4268     ])
4269     VLC_RESTORE_FLAGS
4270   ])
4272   AS_IF([test "${ac_cv_lib_gcrypt}" = "yes"], [
4273     AC_DEFINE([HAVE_GCRYPT], 1, [Defined if having gcrypt])
4274   ], [
4275     AS_IF([test "${enable_libgcrypt}" = "yes"], [
4276       AC_MSG_ERROR([libgcrypt version 1.6.0 or higher not found. Install libgcrypt or pass --disable-libgcrypt.])
4277     ])
4278   ])
4281 AS_IF([test -z "$GCRYPT_LIBS"], [
4282   GCRYPT_LIBS="-lgcrypt -lgpg-error"
4285 AC_SUBST([GCRYPT_CFLAGS])
4286 AC_SUBST([GCRYPT_LIBS])
4287 AM_CONDITIONAL([HAVE_GCRYPT], [test "${ac_cv_lib_gcrypt}" = "yes"])
4290 dnl TLS/SSL
4292 AC_ARG_ENABLE([gnutls],
4293   AS_HELP_STRING([--enable-gnutls], [GNU TLS TLS/SSL support (default enabled)]))
4294 AS_IF([test "${enable_gnutls}" != "no"], [
4295   PKG_CHECK_MODULES(GNUTLS, [gnutls >= 3.5.0], [
4296     VLC_ADD_PLUGIN([gnutls])
4297   ], [
4298     AS_IF([test -n "${enable_gnutls}"], [
4299       AC_MSG_ERROR([${GNUTLS_PKG_ERRORS}.)])
4300     ])
4301   ])
4306 dnl Taglib plugin
4308 AC_ARG_ENABLE([taglib],
4309   AS_HELP_STRING([--disable-taglib],
4310     [do not use TagLib (default enabled)]))
4311 AS_IF([test "${enable_taglib}" != "no"], [
4312   PKG_CHECK_MODULES(TAGLIB, taglib >= 1.11, [
4313     VLC_ADD_PLUGIN([taglib])
4314   ], [
4315     AC_MSG_WARN([${TAGLIB_PKG_ERRORS}.])])
4319 dnl  libsecret
4321 PKG_ENABLE_MODULES_VLC([SECRET], [], [libsecret-1 >= 0.18], [use libsecret for keystore], [auto])
4324 dnl  kwallet
4326 AC_ARG_ENABLE([kwallet],
4327   AS_HELP_STRING([--enable-kwallet],
4328     [use kwallet (via D-Bus) for keystore (default enabled)]))
4329 AS_IF([test "${enable_kwallet}" != "no" -a "${have_dbus}" = "yes"], [
4330   VLC_ADD_PLUGIN([kwallet])
4334 dnl update checking system
4336 AC_ARG_ENABLE([update-check],
4337   AS_HELP_STRING([--enable-update-check], [update checking system (default disabled)]))
4338 if test "${enable_update_check}" = "yes"
4339 then
4340  AS_IF([test "${ac_cv_lib_gcrypt}" != "yes"],[
4341     AC_MSG_ERROR([libgcrypt is required for update checking system]) ])
4343 AM_CONDITIONAL([UPDATE_CHECK], [test "${enable_update_check}" = "yes"])
4346 dnl OS X notification plugin
4348 AC_ARG_ENABLE([osx_notifications],
4349   AS_HELP_STRING([--enable-osx-notifications],
4350     [macOS notification plugin (default disabled)]),,
4351   [enable_osx_notifications=no])
4352 AS_IF([test "${enable_osx_notifications}" != "no"], [
4353   VLC_ADD_PLUGIN([osx_notifications])
4357 dnl Libnotify notification plugin
4359 PKG_ENABLE_MODULES_VLC([NOTIFY], [], [libnotify gtk+-3.0], [libnotify notification], [auto])
4361 PKG_ENABLE_MODULES_VLC([MEDIALIBRARY], [medialibrary], [medialibrary], (medialibrary support), [auto])
4364 dnl  Endianness check
4366 AC_C_BIGENDIAN
4367 AS_IF([test "${ac_cv_c_bigendian}" = "yes"], [
4368   DEFS_BIGENDIAN="-DWORDS_BIGENDIAN=1"
4369 ], [
4370   DEFS_BIGENDIAN=""
4372 AC_SUBST([DEFS_BIGENDIAN])
4375 dnl Where to install KDE solid .desktop
4377 AC_ARG_WITH(kde-solid,
4378   AS_HELP_STRING([--with-kde-solid=PATH],
4379                  [KDE Solid actions directory (auto)]),, [
4381 if test "${SYS}" != "mingw32" -a "${SYS}" != "darwin" -a "${HAVE_ANDROID}" != "1" ; then
4382   with_kde_solid="yes"
4385 soliddatadir=""
4386 AS_IF([test "${with_kde_solid}" != "no"], [
4387   AS_IF([test "${with_kde_solid}" = "yes"], [
4388     kde4datadir="`${KDE4_CONFIG} --install data`"
4389     AS_IF([test "x$kde4datadir" = "x"], [kde4datadir='${datadir}/kde4/apps'])
4390     soliddatadir="${kde4datadir}/solid/actions"
4391   ], [
4392     soliddatadir="${with_kde_solid}"
4393   ])
4395 AC_SUBST([soliddatadir])
4396 AM_CONDITIONAL([KDE_SOLID], [test "x${soliddatadir}" != "x"])
4399 dnl  Find tools for win32 packaging
4401 AS_IF([test "${SYS}" = "mingw32"], [
4402     dnl
4403     dnl Find makensis required to build the NSIS installer
4404     dnl
4405     nsis_major_required="3"
4406     nsis_version_ok="no"
4407     AC_PATH_PROG([MAKENSIS], [makensis], [no])
4408     AS_IF([test "$MAKENSIS" != "no"], [
4409         # Check version
4410         AC_MSG_CHECKING([makensis version])
4411         nsis_version=$($MAKENSIS -VERSION)
4412         AC_MSG_RESULT([$nsis_version])
4413         nsis_version_major=$(echo "$nsis_version" | awk -F \. '{print $1}' | sed 's/v//')
4414         # Check if major version is a valid number
4415         AS_IF([test -n "$nsis_version_major" && \
4416                test "$nsis_version_major" -eq "$nsis_version_major" 2> /dev/null], [
4417             # Do the version check using major version
4418             AS_IF([test "$nsis_version_major" -lt "$nsis_major_required"], [
4419                 AC_MSG_WARN([makensis too old, (needs ${nsis_major_required}.x, have ${nsis_version_major}.x)])
4420             ], [
4421                 nsis_version_ok="yes"
4422             ])
4423         ], [
4424             AC_MSG_WARN([failed to check the makensis version])
4425         ])
4426     ])
4427     dnl
4428     dnl Find 7zip
4429     dnl
4430     AC_PATH_PROG([SEVENZIP], [7z], [7z])
4432 AM_CONDITIONAL([HAVE_MAKENSIS], [test "x$MAKENSIS" != "xno" && test "$nsis_version_ok" = "yes"])
4435 dnl Check wether we have the PROCESS_MITIGATION_IMAGE_LOAD_POLICY
4436 dnl It should only be available when building for win10, but some SDKs define it unconditionnaly
4438 if test "${SYS}" = "mingw32"; then
4439     AC_CHECK_TYPES([PROCESS_MITIGATION_IMAGE_LOAD_POLICY],,,[#include <windows.h>])
4442 EXTEND_HELP_STRING([Components:])
4445 dnl  the VLC binary
4447 AC_ARG_ENABLE([vlc],
4448   AS_HELP_STRING([--enable-vlc], [build the VLC media player (default enabled)]))
4449 AM_CONDITIONAL([BUILD_VLC], [test "${enable_vlc}" != "no"])
4452 dnl Fuzzer (at the end not to mess dependencies FLAGS)
4454 AS_VAR_IF(with_libfuzzer, no, [], [
4455     LIBS="-lstdc++ ${LIBM}"
4456     AS_IF([test "${with_libfuzzer}" != "yes"], [
4457       LIBS="$LIBS -L${with_libfuzzer}"
4458     ])
4459     LIBS="$LIBS -lFuzzer"
4460     AX_CHECK_COMPILE_FLAG(-fsanitize-coverage=trace-pc-guard, [
4461         AX_APPEND_FLAG([-fsanitize-coverage=trace-pc-guard])
4462         AX_APPEND_FLAG([-fsanitize-coverage=trace-pc-guard], [CXXFLAGS])
4463         AX_APPEND_COMPILE_FLAGS([-fsanitize-coverage=trace-cmp])
4464         AX_APPEND_COMPILE_FLAGS([-fsanitize-coverage=trace-cmp], [CXXFLAGS])
4465     ], [
4466         AX_CHECK_COMPILE_FLAG(-fsanitize-coverage=trace-pc, [
4467             AX_APPEND_FLAG([-fsanitize-coverage=trace-pc])
4468             AX_APPEND_FLAG([-fsanitize-coverage=trace-pc], [CXXFLAGS])
4469         ], [
4470             AC_MSG_ERROR([Sanitizer coverage not supported by your compiler])
4471         ])
4472     ])
4476 dnl  Stuff used by the program
4478 VERSION_MESSAGE="${VERSION} ${CODENAME}"
4479 COPYRIGHT_MESSAGE="Copyright © ${COPYRIGHT_YEARS} the VideoLAN team"
4480 AC_DEFINE_UNQUOTED([VERSION_MESSAGE], "${VERSION_MESSAGE}", [Simple version string])
4481 AC_DEFINE_UNQUOTED([COPYRIGHT_MESSAGE], "${COPYRIGHT_MESSAGE}", [Copyright string])
4482 AC_DEFINE_UNQUOTED([COPYRIGHT_YEARS], "${COPYRIGHT_YEARS}", [The copyright years])
4483 AC_DEFINE_UNQUOTED([CONFIGURE_LINE], "${CONFIGURE_LINE}", [The ./configure command line])
4484 AC_DEFINE_UNQUOTED([PACKAGE_VERSION_MAJOR],${VERSION_MAJOR}, [version major number])
4485 AC_DEFINE_UNQUOTED([PACKAGE_VERSION_MINOR],${VERSION_MINOR}, [version minor number])
4486 AC_DEFINE_UNQUOTED([PACKAGE_VERSION_REVISION],${VERSION_REVISION}, [version revision number])
4487 AC_DEFINE_UNQUOTED([PACKAGE_VERSION_EXTRA],${VERSION_EXTRA}, [version extra number])
4488 AC_DEFINE_UNQUOTED([PACKAGE_VERSION_DEV],"${VERSION_DEV}", [version development string])
4489 AC_SUBST([COPYRIGHT_MESSAGE])
4490 AC_SUBST([VERSION_MESSAGE])
4491 AC_SUBST([VERSION_MAJOR])
4492 AC_SUBST([VERSION_MINOR])
4493 AC_SUBST([VERSION_REVISION])
4494 AC_SUBST([VERSION_EXTRA])
4495 AC_SUBST([COPYRIGHT_YEARS])
4496 AC_DEFINE_UNQUOTED([VLC_COMPILE_BY], "`whoami|sed -e 's/\\\/\\\\\\\/g'`", [user who ran configure])
4497 AC_DEFINE_UNQUOTED([VLC_COMPILE_HOST], "`hostname -f 2>/dev/null || hostname`", [host which ran configure])
4498 AC_DEFINE_UNQUOTED([VLC_COMPILER], "`$CC -v 2>&1 | tail -n 1 | sed -e 's/ *$//'`", [compiler])
4500 dnl  Handle substvars that use $(top_srcdir)
4502 CPPFLAGS="-I\$(top_srcdir)/include -I\$(top_builddir)/include ${CPPFLAGS}"
4505 dnl  Configuration is finished
4507 AC_SUBST([SYS])
4508 AC_SUBST([ARCH])
4509 AC_SUBST([ALIASES])
4510 AC_SUBST([ASM])
4511 AC_SUBST([MOC])
4512 AC_SUBST([RCC])
4513 AC_SUBST([UIC])
4514 AC_SUBST([WINDRES])
4515 AC_SUBST([WINE_SDK_PATH])
4516 AC_SUBST([LIBEXT])
4517 AC_SUBST([AM_CPPFLAGS])
4518 AC_SUBST([MACOSX_DEPLOYMENT_TARGET])
4519 AC_SUBST([FILE_LIBVLCCORE_DLL])
4520 AC_SUBST([FILE_LIBVLC_DLL])
4522 AC_CONFIG_FILES([
4523   Makefile
4524   doc/Makefile
4525   modules/Makefile
4526   m4/Makefile
4527   po/Makefile.in
4528   share/Makefile
4529   compat/Makefile
4530   src/Makefile
4531   lib/Makefile
4532   bin/Makefile
4533   test/Makefile
4534   modules/hw/mmal/Makefile
4535   share/vlc.appdata.xml.in
4538 AM_COND_IF([HAVE_WIN32], [
4539   AC_CONFIG_FILES([
4540     extras/package/win32/NSIS/spad.nsi
4541     extras/package/win32/NSIS/vlc.win32.nsi
4542     extras/package/win32/msi/config.wxi
4543   ])
4546 AM_COND_IF([HAVE_DARWIN], [
4547   AC_CONFIG_FILES([
4548     modules/gui/macosx/UI/InfoPlist.strings:modules/gui/macosx/Resources/InfoPlist.strings.in
4549     share/macosx/Info.plist:share/Info.plist.in
4550   ])
4553 dnl Generate makefiles
4554 AC_OUTPUT
4556 dnl Do we have to use make or gmake ?
4557 if make --version 2>&1|grep -q GNU
4558 then
4559     # GNU make, all seems good
4560     MAKE=make
4561 else
4562     # Known GNU make alias (on BSD)
4563     MAKE=gmake
4565 dnl Shortcut to nice compile message
4566 if test -n $SHELL; then
4567   SHELL=${CONFIG_SHELL-/bin/sh}
4569 rm -f compile
4570 compile_top_srcdir=`sed -ne "s/^top_srcdir *= *//p" < Makefile`
4571 echo "#! $SHELL
4572 rm -f .error\$\$
4573 ERROR=0
4574 export PATH=\"$PATH\" LANG=C
4575 ($MAKE V=1 \$@ 2>&1 || touch .error\$\$)| $compile_top_srcdir/extras/buildsystem/make.pl
4576 test -f .error\$\$ && ERROR=1
4577 rm -f .error\$\$
4578 exit \$ERROR" >compile
4579 chmod a+x compile
4581 echo "
4582 libvlc configuration
4583 --------------------
4584 version               : ${VERSION}
4585 system                : ${SYS}
4586 architecture          : ${ARCH}
4587 optimizations         : ${enable_optimizations}"
4588 if test "${enable_vlc}" != "no"; then
4589 echo "vlc aliases           :${ALIASES}"
4590 else
4591 echo "build vlc executable  : no"
4593 echo "
4594 To build vlc and its plugins, type \`$MAKE', or \`./compile' if you like nice colors."