opengl: use interop for rgb_base_init()
[vlc.git] / configure.ac
blobc2a2a231cee1547077325c3c5edefb95a624fb47
1 dnl Autoconf settings for vlc
3 AC_COPYRIGHT([Copyright 1999-2020 VLC authors and VideoLAN])
5 AC_INIT([vlc], [4.0.0-dev])
6 VERSION_MAJOR=4
7 VERSION_MINOR=0
8 VERSION_REVISION=0
9 VERSION_EXTRA=0
10 VERSION_DEV=dev
12 PKGDIR="vlc"
13 AC_SUBST([PKGDIR])
15 CONFIGURE_LINE="`echo "$0 $ac_configure_args" | sed -e 's/\\\/\\\\\\\/g'`"
16 CODENAME="Otto Chriek"
17 COPYRIGHT_YEARS="1996-2020"
19 AC_CONFIG_SRCDIR([src/libvlc.c])
20 AC_CONFIG_AUX_DIR([autotools])
21 AC_CONFIG_MACRO_DIR([m4])
22 AC_CONFIG_LIBOBJ_DIR([compat])
23 AC_CANONICAL_BUILD
24 AC_CANONICAL_HOST
25 AC_PRESERVE_HELP_ORDER
27 AM_INIT_AUTOMAKE([tar-ustar color-tests foreign])
28 AC_CONFIG_HEADERS([config.h])
30 AM_SILENT_RULES([yes])
31 AM_MAINTAINER_MODE([enable])
33 dnl
34 dnl Check for tools
35 dnl
36 AC_PROG_CC
37 AC_USE_SYSTEM_EXTENSIONS
38 VLC_PROG_CC_C11
39 AH_VERBATIM([FORTIFY_SOURCE],
40   [/* Enable compile-time and run-time bounds-checking, and some warnings,
41    without upsetting glibc 2.15+ or toolchains predefining _FORTIFY_SOURCE */
42 #if !defined _FORTIFY_SOURCE && defined __OPTIMIZE__ && __OPTIMIZE__
43 # define _FORTIFY_SOURCE 2
44 #endif])
45 AC_DEFINE([_FILE_OFFSET_BITS], 64, [Define to 64 for large files support.])
46 AC_DEFINE([__LIBVLC__],, [Define within the LibVLC source code tree.])
47 AC_DEFINE([WIN32_LEAN_AND_MEAN],, [Define to limit the scope of <windows.h>.])
49 AC_PROG_CXX
50 AC_PROG_CPP
51 AC_PROG_OBJC
52 AC_PROG_EGREP
53 AC_PROG_MAKE_SET
54 AC_PROG_INSTALL
55 AM_PROG_AS
56 AC_PROG_LEX
57 AC_PROG_YACC
59 AC_ARG_VAR([DESKTOP_FILE_VALIDATE], [Validator for desktop entry files])
60 AC_CHECK_PROGS([DESKTOP_FILE_VALIDATE], [${DESKTOP_FILE_VALIDATE} desktop-file-validate], :)
61 AC_ARG_VAR([BUILDCC], [Build system C11 or C99 compiler command])
62 AC_CHECK_PROGS([BUILDCC], [c11-gcc c11 c99-gcc c99], [false])
63 AS_IF([test "$BUILDCC" = "false"], [
64   AC_MSG_ERROR([Cannot find native C99 compiler: please define BUILDCC.])
67 dnl Check for compiler properties
68 AC_C_CONST
69 AC_C_INLINE
70 AC_C_RESTRICT
71 AX_CXX_COMPILE_STDCXX_14([noext], [mandatory])
73 dnl 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*)
142     dnl Workaround possible Xcode 11 bug
143     CFLAGS="${CFLAGS} -fno-stack-check"
144     CXXFLAGS="${CXXFLAGS} -fno-stack-check"
145     OBJCFLAGS="${OBJCFLAGS} -fno-stack-check"
147     dnl Force gcc "-arch" flag
148     ARCH_flag=""
149     case "${host_cpu}" in
150       i?86)
151         ARCH_flag="-arch i386"
152         X86ASMFLAGS="-f macho32"
153         X86ASMDEFS="${X86ASMDEFS} -DPREFIX"
154       ;;
155       ppc64*)
156         ARCH_flag="-arch ppc64"
157       ;;
158       ppc*)
159         ARCH_flag="-arch ppc"
160       ;;
161       x86_64)
162         ARCH_flag="-arch x86_64"
163         X86ASMFLAGS="-f macho64"
164         X86ASMDEFS="${X86ASMDEFS} -DPREFIX"
165       ;;
166       arm*)
167         ac_cv_c_bigendian="no"
168         ac_cv_c_attribute_packed="no"
169       ;;
170     esac
172     SYS=darwin
173     CFLAGS="${CFLAGS} -D_INTL_REDIRECT_MACROS -std=gnu11 ${ARCH_flag}"
174     CXX="${CXX} -stdlib=libc++ -std=c++11"
175     CXXFLAGS="${CXXFLAGS} -D_INTL_REDIRECT_MACROS ${ARCH_flag}"
176     CPPFLAGS="${CPPFLAGS} ${ARCH_flag}"
177     OBJCFLAGS="${OBJCFLAGS} -D_INTL_REDIRECT_MACROS -std=gnu11 ${ARCH_flag} -Werror=partial-availability"
178     LDFLAGS="${LDFLAGS} -Wl,-headerpad_max_install_names ${ARCH_flag}"
179     VLC_ADD_LIBS([libvlc vlc],[-Wl,-undefined,dynamic_lookup,-framework,AppKit])
180     VLC_ADD_LIBS([libvlccore],[-Wl,-framework,CoreFoundation,-framework,CoreServices])
182     AC_EGREP_CPP(yes,
183             [#import <TargetConditionals.h>
184              #if TARGET_OS_IPHONE
185              yes
186              #endif],
187              [HAVE_IOS="1"],
188              [HAVE_OSX="1"])
190     AC_EGREP_CPP(yes,
191             [#import <TargetConditionals.h>
192              #if TARGET_OS_TV
193              yes
194              #endif],
195              [HAVE_TVOS="1"
196              HAVE_IOS="0"
197              HAVE_OSX="0"
198              ],)
200     dnl
201     dnl  Handle Mac OS X SDK flags
202     dnl
203     AC_ARG_WITH(macosx-sdk,
204       AS_HELP_STRING([--with-macosx-sdk=DIR],
205         [compile using the SDK in DIR]))
206     if test "${with_macosx_sdk}" != "" ; then
207         test ! -d "${with_macosx_sdk}" && AC_MSG_ERROR([SDK "${with_macosx_sdk}" not found])
208         CPP="${CPP} -isysroot ${with_macosx_sdk}"
209         CC="${CC} -isysroot ${with_macosx_sdk}"
210         CXX="${CXX} -isysroot ${with_macosx_sdk}"
211         OBJC="${OBJC} -isysroot ${with_macosx_sdk}"
212         LD="${LD} -syslibroot ${with_macosx_sdk}"
213     fi
214     AC_ARG_WITH(macosx-version-min,
215       AS_HELP_STRING([--with-macosx-version-min=VERSION],
216         [compile for Mac OS X VERSION and above]))
217     if test "${with_macosx_version_min}" != "" ; then
218         CPP="${CPP} -mmacosx-version-min=${with_macosx_version_min}"
219         CC="${CC} -mmacosx-version-min=${with_macosx_version_min}"
220         CXX="${CXX} -mmacosx-version-min=${with_macosx_version_min}"
221         OBJC="${OBJC} -mmacosx-version-min=${with_macosx_version_min}"
222         LD="${LD} -mmacosx_version_min=${with_macosx_version_min}"
223     fi
224     ;;
225   *mingw32* | *cygwin* | *wince* | *mingwce*)
226     dnl Force libtool to not link to (shared) libgcc_s when detecting C++ dependencies
227     dnl When doing this test with -static-libgcc it will link on (static) libgcc_eh
228     CXXFLAGS="${CXXFLAGS} -static-libgcc"
229     AC_CHECK_TOOL(WINDRES, windres, :)
230     AC_CHECK_TOOL(OBJCOPY, objcopy, :)
231     AC_PREPROC_IFELSE([AC_LANG_PROGRAM(
232       [[#ifdef _WIN32_WINNT
233        # error _WIN32_WINNT already defined
234        #endif
235       ]],[[;]])
236     ],[
237       AC_DEFINE([_WIN32_WINNT], 0x0601, [Define to '0x0601' for Windows 7 APIs.])
238     ])
239     AC_DEFINE([_WIN32_IE], 0x0600, [Define to '0x0600' for IE 6.0 (and shell) APIs.])
240     AC_DEFINE([UNICODE], [1], [Define to 1 for Unicode (Wide Chars) APIs.])
241     AC_DEFINE([_ISOC99_SOURCE], [1], [Extensions to ISO C89 from ISO C99.])
242     AC_DEFINE([_ISOC11_SOURCE], [1], [Extensions to ISO C99 from ISO C11.])
243     AC_DEFINE([_POSIX_SOURCE], [1], [IEEE Std 1003.1.])
244     AC_DEFINE([_POSIX_C_SOURCE], [200809L], [IEEE Std 1003.1.])
245     AC_DEFINE([_XOPEN_SOURCE], [700], [POSIX and XPG 7th edition])
246     AC_DEFINE([_XOPEN_SOURCE_EXTENDED], [1], [XPG things and X/Open Unix extensions.])
247     AC_DEFINE([_BSD_SOURCE], [1], [ISO C, POSIX, and 4.3BSD things.])
248     AC_DEFINE([_SVID_SOURCE], [1], [ISO C, POSIX, and SVID things.])
250     case "${host_os}" in
251       *mingw32*)
252         SYS=mingw32
253         ;;
254       *cygwin*)
255         dnl Check if we are using the mno-cygwin mode in which case we are
256         dnl actually dealing with a mingw32 compiler.
257         AC_EGREP_CPP(yes,
258             [#ifdef _WIN32
259              yes
260              #endif],
261             SYS=mingw32, AC_MSG_ERROR([VLC requires -mno-cygwin]))
262         ;;
263     esac
265     if test "${SYS}" = "mingw32"; then
266         # DEP, ASLR, NO SEH
267         LDFLAGS="${LDFLAGS} -Wl,--nxcompat -Wl,--no-seh -Wl,--dynamicbase"
269         AC_CHECK_PROGS(U2D, [unix2dos todos], unix2dos)
270         ac_default_prefix="`pwd`/_win32"
271         DESTDIR="`pwd`/_win32/"
273         dnl
274         dnl NSIS/MSI Installer prefix and WIN64
275         dnl
276         case "${host_cpu}" in
277             aarch64)
278                 HAVE_WIN64="1"
279                 WINDOWS_ARCH="arm64"
280                 PROGRAMFILES="PROGRAMFILES64"
281                 LDFLAGS="${LDFLAGS} -Wl,--high-entropy-va -Wl,--image-base,0x140000000"
282             ;;
283             amd64|x86_64)
284                 HAVE_WIN64="1"
285                 WINDOWS_ARCH="x64"
286                 PROGRAMFILES="PROGRAMFILES64"
287                 LDFLAGS="${LDFLAGS} -Wl,--high-entropy-va -Wl,--image-base,0x140000000"
288                 X86ASMFLAGS="-f win64"
289             ;;
290             armv7)
291                 WINDOWS_ARCH="arm"
292                 PROGRAMFILES="PROGRAMFILES"
293             ;;
294             *)
295                 WINDOWS_ARCH="x86"
296                 PROGRAMFILES="PROGRAMFILES"
297                 X86ASMFLAGS="-f win32"
298                 X86ASMDEFS="${X86ASMDEFS} -DPREFIX"
299             ;;
300         esac
301         AC_SUBST([WINDOWS_ARCH])
302         AC_SUBST([PROGRAMFILES])
304     fi
305     ;;
306   *nto*)
307     SYS=nto
308     ;;
309   solaris*)
310     SYS=solaris
311     ;;
312   hpux*)
313     SYS=hpux
314     ;;
315   *os2*)
316     SYS=os2
317     LDFLAGS="${LDFLAGS} -Zomf -Zbin-files -Zargs-wild -Zhigh-mem"
318     AC_LIBOBJ([freeaddrinfo])
319     AC_LIBOBJ([gai_strerror])
320     AC_CHECK_FUNCS([if_nametoindex])
321     X86ASMFLAGS="-f aout"
322     X86ASMDEFS="-DARCH_X86_32=1 -DARCH_X86_64=0 -DPREFIX"
323     ;;
324   *nacl*)
325     SYS=nacl
326     AC_DEFINE([_XOPEN_SOURCE], [700], [POSIX and XPG 7th edition])
327     AC_LIBOBJ([sigwait])
328     AC_LIBOBJ([recvmsg])
329     AC_LIBOBJ([sendmsg])
330     ;;
331   *)
332     SYS="${host_os}"
333     ;;
334 esac
336 dnl WinRT
337 AC_ARG_ENABLE([winstore_app],
338      AS_HELP_STRING([--enable-winstore-app],
339                     [Build targetted for Windows Store apps (default disabled)]))
341 vlc_winstore_app=0
342 AS_IF([test "${SYS}" = "mingw32"],[
343   LIBCOM="-lole32"
344   AS_IF([test "${enable_winstore_app}" = "yes"], [
345     vlc_winstore_app=1
346     LIBCOM=""
347     AX_APPEND_FLAG([-DWINSTORECOMPAT],[CFLAGS])
348     AX_APPEND_FLAG([-DWINSTORECOMPAT],[CPPFLAGS])
349     AX_APPEND_FLAG([-DWINSTORECOMPAT],[CXXFLAGS])
350     AX_APPEND_FLAG([-lwinstorecompat], [LDFLAGS])
351     VLC_ADD_LIBS([libvlccore], [-lruntimeobject])
352     AC_LIBOBJ([gai_strerror])
353   ],[])
354   AC_SUBST([LIBCOM])
355   ])
356 AC_DEFINE_UNQUOTED(VLC_WINSTORE_APP, ${vlc_winstore_app}, [Define to 1 if you want to build for Windows Store apps])
358 vlc_build_pdb=0
359 AC_ARG_ENABLE([pdb],
360      AS_HELP_STRING([--enable-pdb],
361                     [Build PDB files for windows targets (default off)]))
362 AS_IF([test "${SYS}" = "mingw32"],[
363   AS_IF([test "${enable_pdb}" = "yes"], [
364     vlc_build_pdb=1
365     AX_APPEND_FLAG([-g -gcodeview],[CFLAGS])
366     AX_APPEND_FLAG([-g -gcodeview],[CXXFLAGS])
367     LDFLAGS="${LDFLAGS} -Wl,-pdb="
368   ],[])
371 AM_CONDITIONAL([HAVE_LINUX],   [test "${SYS}" = "linux"])
372 AM_CONDITIONAL([HAVE_OS2],     [test "${SYS}" = "os2"])
374 AM_CONDITIONAL([HAVE_DARWIN],  [test "${SYS}" = "darwin"])
375 AM_CONDITIONAL([HAVE_IOS],     [test "${HAVE_IOS}" = "1"])
376 AM_CONDITIONAL([HAVE_OSX],     [test "${HAVE_OSX}" = "1"])
377 AM_CONDITIONAL([HAVE_TVOS],    [test "${HAVE_TVOS}" = "1"])
379 AM_CONDITIONAL([HAVE_NACL],    [test "${SYS}" = "nacl"])
380 AM_CONDITIONAL([HAVE_LIBANL],  [test "${HAVE_LIBANL}" = "1"])
382 AM_CONDITIONAL([HAVE_WIN32],   [test "${SYS}" = "mingw32"])
383 AM_CONDITIONAL([HAVE_WIN64],   [test "${HAVE_WIN64}" = "1"]) dnl Only used for the packaging
384 AM_CONDITIONAL([HAVE_WINSTORE], [test "$vlc_winstore_app" = "1"])
385 AM_CONDITIONAL([HAVE_WIN32_DESKTOP], [test "${SYS}" = "mingw32" -a "$vlc_winstore_app" = "0"])
386 AM_CONDITIONAL([ENABLE_PDB],   [test "$vlc_build_pdb" = "1"])
388 dnl Use nasm/yasm only on x86
389 AC_CHECK_PROGS(X86ASM, [nasm yasm])
390 AM_CONDITIONAL([HAVE_X86ASM], [test -n "${X86ASM}" && test -n "${X86ASMFLAGS}"])
391 AM_COND_IF([HAVE_X86ASM], [
392   AC_DEFINE([HAVE_X86ASM], [1], [Use external asm on x86.])
395 dnl  Because DOLT is not able to handle --with-pic
396 dnl  correctly, manually add -DPIC to the options for
397 dnl  nasm / yasm here.
398 AS_IF([test x$with_pic = xyes], [X86ASMDEFS="${X86ASMDEFS} -DPIC"])
400 AC_SUBST([X86ASMFLAGS])
401 AC_SUBST([X86ASMDEFS])
404 dnl Sadly autoconf does not think about testing foo.exe when ask to test
405 dnl for program foo on win32
406 case "${build_os}" in
407     cygwin|msys|mingw32)
408         ac_executable_extensions=".exe"
409         BUILDEXEEXT=".exe"
410     ;;
411     os2*)
412         BUILDEXEEXT=".exe"
413     ;;
414     *)
415     ;;
416 esac
417 AC_SUBST([BUILDEXEEXT])
419 dnl Android is linux, but a bit different
420 AS_IF([test "$SYS" = linux],[
421     AC_MSG_CHECKING([for an Android system])
422     AC_PREPROC_IFELSE([AC_LANG_PROGRAM(
423         [[#ifndef __ANDROID__
424          # error Not Android
425          #endif
426         ]],[[;]])
427     ],[
428       HAVE_ANDROID="1"
429       AC_MSG_RESULT([yes])
430     ],[
431       AC_MSG_RESULT([no])
432     ])
434 AM_CONDITIONAL([HAVE_ANDROID], [test "${HAVE_ANDROID}" = "1"])
437 dnl  Check for the contrib directory
439 AC_ARG_WITH(contrib,
440   AS_HELP_STRING([--with-contrib[=DIR]],
441     [search for 3rd party libraries in DIR/include and DIR/lib])
443 AC_MSG_CHECKING([for 3rd party libraries path])
444 AS_IF([test -z "${with_contrib}" || test "${with_contrib}" = "yes"], [
445   CONTRIB_DIR="${srcdir}/contrib/${host}"
446   AS_IF([test ! -d "${CONTRIB_DIR}"], [
447     echo "${CONTRIB_DIR} not found" >&AS_MESSAGE_LOG_FD
448     CONTRIB_DIR="${srcdir}/contrib/`$CC -dumpmachine`"
449     AS_IF([test ! -d "${CONTRIB_DIR}"], [
450       echo "${CONTRIB_DIR} not found" >&AS_MESSAGE_LOG_FD
451       CONTRIB_DIR=""
452       AC_MSG_RESULT([not found])
453     ])
454   ])
455 ], [
456   AS_IF([test "${with_contrib}" != "no"], [
457     CONTRIB_DIR="${with_contrib}"
458   ], [
459     CONTRIB_DIR=""
460     AC_MSG_RESULT([disabled])
461   ])
463 AS_IF([test -n "${CONTRIB_DIR}"], [
464   AS_IF([test -d "${CONTRIB_DIR}/lib"],[
465     CONTRIB_DIR=`cd "${CONTRIB_DIR}" && pwd`
466   ], [
467     echo "${CONTRIB_DIR}/lib not found" >&AS_MESSAGE_LOG_FD
468     CONTRIB_DIR=""
469     AC_MSG_RESULT([not usable])
470   ])
473 AS_IF([test -n "${CONTRIB_DIR}"], [
474   AC_MSG_RESULT([${CONTRIB_DIR}])
475   CPPFLAGS="${CPPFLAGS} -I${CONTRIB_DIR}/include"
476   CFLAGS="${CFLAGS} -I${CONTRIB_DIR}/include"
477   CXXFLAGS="${CXXFLAGS} -I${CONTRIB_DIR}/include"
478   OBJCFLAGS="${OBJCFLAGS} -I${CONTRIB_DIR}/include -F${CONTRIB_DIR} -F${CONTRIB_DIR}/Frameworks"
479   PKG_CONFIG_PATH="${CONTRIB_DIR}/lib/pkgconfig:${CONTRIB_DIR}/share/pkgconfig:${PKG_CONFIG_PATH}"
480   case "${build_os}" in
481       mingw32)
482           export PKG_CONFIG_PATH=`cygpath -mp ${PKG_CONFIG_PATH}`
483       ;;
484       *)
485           export PKG_CONFIG_PATH="${PKG_CONFIG_PATH}"
486       ;;
487   esac
488   LDFLAGS="${LDFLAGS} -L${CONTRIB_DIR}/lib"
490   AS_IF([test -z "$LUAC"], [
491     dnl Old contribs mixed cross-tools and cross-compiled executables
492     AS_IF([test -x "${CONTRIB_DIR}/bin/luac${BUILDEXEEXT}"], [
493       LUAC="${CONTRIB_DIR}/bin/luac${BUILDEXEEXT}"
494     ])
496     dnl Newer contribs follow usual name space rules
497     AS_IF([test -x "${CONTRIB_DIR}/../bin/${host_alias}-luac${BUILDEXEEXT}"], [
498       LUAC="${CONTRIB_DIR}/../bin/${host_alias}-luac${BUILDEXEEXT}"
499     ])
500   ])
502   AS_IF([test "${SYS}" = "darwin"], [
503     export LD_LIBRARY_PATH="${CONTRIB_DIR}/lib:$LD_LIBRARY_PATH"
504     export DYLD_LIBRARY_PATH="${CONTRIB_DIR}/lib:$DYLD_LIBRARY_PATH"
505   ])
506 ], [
507   AS_IF([test -n "${with_contrib}" && test "${with_contrib}" != "no"], [
508     AC_MSG_ERROR([Third party libraries not found!])
509   ])
511 AC_SUBST([CONTRIB_DIR])
513 dnl Add extras/tools to the PATH
514 TOOLS_DIR="${srcdir}/extras/tools/build/bin"
515 AS_IF([test -d "${TOOLS_DIR}"], [
516     TOOLS_DIR=`cd "${TOOLS_DIR}" && pwd`
517     export PATH="${TOOLS_DIR}":$PATH
521 dnl  Libtool
522 dnl  It's very bad, but our former custom system was worst
523 dnl  -- Courmisch
526 dnl override platform specific check for dependent libraries
527 dnl otherwise libtool linking of shared libraries will
528 dnl fail on anything other than pass_all.
529 AC_CACHE_VAL(lt_cv_deplibs_check_method,
530     [lt_cv_deplibs_check_method=pass_all])
532 LT_INIT([dlopen win32-dll shared disable-static])
533 LT_LANG([C++])
534 LT_LANG([Windows Resource])
536 DOLT
538 lt_cv_deplibs_check_method=pass_all
540 AS_IF([test "${enable_shared}" = "no" -a "${enable_vlc}" != "no"], [
541   AC_MSG_ERROR([VLC is based on plugins. Shared libraries cannot be disabled.])
545 dnl Gettext stuff
547 AM_GNU_GETTEXT_VERSION([0.19.8])
548 AM_GNU_GETTEXT([external], [need-formatstring-macros])
551 dnl Iconv stuff
553 AM_ICONV
556 dnl checks for mingw
557 AS_IF([test "${SYS}" = "mingw32"], [
559 AC_PREPROC_IFELSE([AC_LANG_SOURCE([
560 #if !defined(__MINGW32__)
561 # error Not compiling with mingw
562 #endif
563     ])], [
565 dnl Check for broken versions of mingw-runtime compatability library
566     AC_MSG_CHECKING(for broken mingw-runtime)
567     AC_PREPROC_IFELSE([AC_LANG_SOURCE([
568 #include <_mingw.h>
569 #if defined(__MINGW64_VERSION_MAJOR)
570 # if __MINGW64_VERSION_MAJOR < 5
571 #  error Update your mingw-w64! This one is too old.
572 # endif
573 #else
574 # error You cannot compile with Mingw. Use Mingw-w64!
575 #endif
576     ])], [
577         AC_MSG_RESULT([ok])
578     ], [
579         AC_MSG_RESULT([present])
580         AC_MSG_ERROR([LibVLC requires Mingw-w64 version 5.0 or higher!])
581     ])
583     dnl force use of mingw provided c99 *printf over msvcrt
584     CPPFLAGS="${CPPFLAGS} -D__USE_MINGW_ANSI_STDIO=1"
586     dnl Check for the need to include the mingwex lib for mingw32
587     VLC_SAVE_FLAGS
588     AC_CHECK_LIB([mingwex], [opendir],
589         AC_CHECK_LIB([mingw32], [opendir],,
590             [VLC_ADD_LIBS([libvlccore],[-lmingwex])])
591     )
592     VLC_RESTORE_FLAGS
593     ], [
594         AC_MSG_RESULT([Not compiling with mingw])
595     ])
597     dnl Check for fnative-struct or mms-bitfields support for mingw32
598     AX_CHECK_COMPILE_FLAG([-mms-bitfields], [
599         AX_APPEND_FLAG([-mms-bitfields], [CFLAGS])
600         AX_APPEND_FLAG([-mms-bitfields], [CXXFLAGS])
601         # Check for the warning flag without "-Wno-", GCC accepts
602         # -Wno-<anything> for unsupported warnings, which can trigger
603         # other warnings instead.
604         AX_CHECK_COMPILE_FLAG([-Wincompatible-ms-struct], [
605             AX_APPEND_FLAG([-Wno-incompatible-ms-struct], [CFLAGS])
606             AX_APPEND_FLAG([-Wno-incompatible-ms-struct], [CXXFLAGS])
607         ])
608     ], [
609         AX_CHECK_COMPILE_FLAG([-fnative-struct], [
610             AX_APPEND_FLAG([-fnative-struct], [CFLAGS])
611             AX_APPEND_FLAG([-fnative-struct], [CXXFLAGS])
612         ])
613     ])
618 dnl Buggy glibc prevention. Purposedly not cached.
619 dnl See sourceware.org bugs 5058 and 5443.
620 dnl Ubuntu alone has 20 bug numbers for this...
622 AC_MSG_CHECKING(for buggy GNU/libc versions)
623 AC_PREPROC_IFELSE([AC_LANG_SOURCE([
624 #include <limits.h>
625 #if defined (__GLIBC__) && (__GLIBC__ == 2) \
626   && (__GLIBC_MINOR__ >= 5) && (__GLIBC_MINOR__ <= 7)
627 # error GNU/libc with dcgettext killer bug!
628 #endif
629 ])], [
630   AC_MSG_RESULT([not present])
631 ], [
632   AC_MSG_RESULT([found])
633   AS_IF([test "x${enable_nls}" != "xno"], [
634     AC_MSG_ERROR([Buggy GNU/libc (version 2.5 - 2.7) present. VLC would crash; there is no viable
635 work-around for this. Check with your distribution vendor on how to update the
636 glibc run-time. Alternatively, build with --disable-nls.])
637   ])
640 dnl Plugin compilation stuff
642 VLC_LIBRARY_SUFFIX
644 dnl Check for system libs needed
645 need_libc=false
647 dnl Check for usual libc functions
648 AC_CHECK_FUNCS([accept4 daemon fcntl flock fstatat fstatvfs fork getmntent_r getenv getpwuid_r isatty memalign mkostemp mmap open_memstream newlocale pipe2 pread posix_fadvise posix_madvise setlocale stricmp strnicmp strptime uselocale])
649 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])
650 AC_REPLACE_FUNCS([gettimeofday])
651 AC_CHECK_FUNC(fdatasync,,
652   [AC_DEFINE(fdatasync, fsync, [Alias fdatasync() to fsync() if missing.])
655 VLC_REPLACE_DECL([realpath], [#include <stdlib.h>])
657 dnl mingw64 implements those as static inline, not functions with C linkage
658 VLC_REPLACE_DECL([asprintf], [#include <stdio.h>])
659 VLC_REPLACE_DECL([vasprintf], [#include <stdio.h>])
660 VLC_REPLACE_DECL([gmtime_r], [#include <time.h>])
661 VLC_REPLACE_DECL([localtime_r], [#include <time.h>])
663 dnl C11 static_assert()
664 AC_MSG_CHECKING([for static_assert in assert.h])
665 AC_LINK_IFELSE([AC_LANG_PROGRAM([#include <assert.h>], [
666 static_assert(1, "The impossible happened.");
667 ])], [
668   AC_MSG_RESULT([yes])
669   AC_DEFINE([HAVE_STATIC_ASSERT], [1], [Define to 1 if <assert.h> defines static_assert.])
670 ], [
671   AC_MSG_RESULT([no])
674 # Windows CE does not have strcoll()
675 AC_FUNC_STRCOLL
677 dnl Check for non-standard system calls
678 case "$SYS" in
679   "linux")
680     AC_CHECK_FUNCS([eventfd vmsplice sched_getaffinity recvmmsg memfd_create])
681     ;;
682   "mingw32")
683     AC_CHECK_FUNCS([_lock_file])
684     ;;
685 esac
687 AH_BOTTOM([#include <vlc_fixups.h>])
689 dnl Check for struct pollfd
690 AC_CHECK_TYPES([struct pollfd],,,
691 [#include <sys/types.h>
692 #if HAVE_POLL
693 # include <poll.h>
694 #elif defined (_WIN32)
695 # include <winsock2.h>
696 #endif
699 dnl Check for struct timespec
700 AC_CHECK_TYPES([struct timespec],,,
701 [#include <time.h>])
703 dnl Check for max_align_t
704 AC_CHECK_TYPES([max_align_t],,,
705 [#include <stddef.h>])
707 dnl Checks for socket stuff
708 VLC_SAVE_FLAGS
709 SOCKET_LIBS=""
710 AC_SEARCH_LIBS(connect, [socket], [
711   AS_IF([test "$ac_cv_search_connect" != "none required"], [
712     SOCKET_LIBS="$ac_cv_search_connect"
713   ])
714 ], [
715   AS_IF([test "${SYS}" = "mingw32"], [
716     SOCKET_LIBS="-lws2_32 -liphlpapi"
717   ])
720 AC_SEARCH_LIBS([inet_pton], [nsl], [
721  AS_IF([test "$ac_cv_search_inet_pton" != "none required"], [
722     SOCKET_LIBS="$ac_cv_search_inet_pton $SOCKET_LIBS"
723   ])
724 ],, [${SOCKET_LIBS}])
726 LIBS="${LIBS} ${SOCKET_LIBS}"
727 AC_LINK_IFELSE([
728     AC_LANG_PROGRAM([#ifdef _WIN32
729         #include <ws2tcpip.h>
730         #include <windows.h>
731         # if _WIN32_WINNT < 0x600
732         #  error Needs vista+
733         # endif
734         #else
735         #include <sys/socket.h>
736         #include <arpa/inet.h>
737         #endif], [
738         char dst[[sizeof(struct in_addr)]];
739         inet_pton(AF_INET, "127.0.0.1", dst);
740     ])],[AC_DEFINE([HAVE_INET_PTON],[1],[Define to 1 if you have inet_pton function])],[AC_LIBOBJ([inet_pton])])
741 AC_CHECK_TYPES([struct if_nameindex],,,[#include <net/if.h>])
742 AC_CHECK_FUNCS([if_nameindex])
743 VLC_RESTORE_FLAGS
744 AC_SUBST([SOCKET_LIBS])
746 dnl Check for socklen_t
747 AH_TEMPLATE(socklen_t, [Define to `int' if <sys/socket.h> does not define.])
748 AC_CACHE_CHECK([for socklen_t in sys/socket.h], dnl ` (fix VIM syntax highlight
749 ac_cv_type_socklen_t,
750 [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([
751 [#include <sys/types.h>
752 #ifdef _WIN32
753 # include <winsock2.h>
754 # include <ws2tcpip.h>
755 #else
756 # include <sys/socket.h>
757 #endif]], [[socklen_t len; len = 0;]])],
758 ac_cv_type_socklen_t=yes,
759 ac_cv_type_socklen_t=no)])
760 AS_IF([test "$ac_cv_type_socklen_t" = no],
761  [AC_DEFINE(socklen_t, unsigned int)])
763 dnl Check for struct sockaddr_storage
764 AH_TEMPLATE(sockaddr_storage, [Define to `sockaddr' if <sys/socket.h> does not define.]) dnl ` (fix VIM syntax highlight
765 AH_TEMPLATE(ss_family, [Define to `sa_family' if <sys/socket.h> does not define.]) dnl ` (fix VIM syntax highlight
766 AC_CACHE_CHECK([for struct sockaddr_storage], ac_cv_struct_sockaddr_storage,
767   [AC_TRY_COMPILE(
768     [#include <sys/types.h>
769      #if defined( _WIN32 )
770      # include <winsock2.h>
771      #else
772      # include <sys/socket.h>
773      #endif], [struct sockaddr_storage addr;],
774      ac_cv_struct_sockaddr_storage=yes,
775      ac_cv_struct_sockaddr_storage=no)])
776 AS_IF([test "${ac_cv_struct_sockaddr_storage}" = no], [
777   AC_DEFINE(sockaddr_storage, sockaddr)
778   AC_DEFINE(ss_family, sa_family)
781 dnl FreeBSD has a gnugetopt library for this:
782 GNUGETOPT_LIBS=""
783 AC_CHECK_FUNC(getopt_long,, [
784   AC_CHECK_LIB([gnugetopt],[getopt_long], [
785     GNUGETOPT_LIBS="-lgnugetopt"
786   ])
788 AC_SUBST([GNUGETOPT_LIBS])
790 AC_CHECK_LIB([m], [cos], [
791   LIBM="-lm"
792 ], [
793   LIBM=""
795 AC_SUBST([LIBM])
797 AC_CHECK_LIB([m], [lrintf], [
798   AC_DEFINE(HAVE_LRINTF, 1, [Define to 1 if you have the lrintf function])
799   VLC_ADD_LIBS([skins2],[-lm])
801 AC_CHECK_LIB([m], [nanf],
802   AC_DEFINE(HAVE_NANF, 1, [Define to 1 if you have the NANF function])
804 AC_CHECK_LIB([m], [sincos], [
805   AC_DEFINE(HAVE_SINCOS, 1, [Define to 1 if you have the sincos function.])
806 ], [
807   AC_LIBOBJ([sincos])
810 AC_MSG_CHECKING([broken qsort_r prototype])
811 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([#include <stdlib.h>
813 _Static_assert(_Generic((qsort_r),
814     void (*)(void *, size_t, size_t, void *,
815              int (*)(void *, const void *, const void *)) : 1, default: 0),
816     "Bad prototype not matched");
817 ])], [
818   AC_MSG_RESULT([broken])
819   AC_DEFINE([HAVE_BROKEN_QSORT_R], 1, [Defined to 1 if the qsort_r() prototype contradicts the upcoming POSIX standard.])
820 ], [
821   AC_MSG_RESULT([no])
824 AC_MSG_CHECKING([_Thread_local support])
825 AC_COMPILE_IFELSE([AC_LANG_SOURCE([_Thread_local int foo = 0;
826                    int main() {}])], [
827     AC_MSG_RESULT([ok])
828     AC_DEFINE(HAVE_THREAD_LOCAL, 1, [Defined to 1 if C11 _Thread_local storage qualifier is supported])
829 ],[ AC_MSG_RESULT([no])])
831 dnl __STDC_NO_THREADS__ can't be trusted on some platforms.
832 dnl check for its availability explicitely
833 AC_CHECK_HEADERS([threads.h])
835 AC_CHECK_LIB([anl],[getaddrinfo_a],[
836   AC_DEFINE(HAVE_LIBANL, 1, [Define to 1 if you have the anl library])
839 dnl Check for dynamic plugins
840 LIBDL=""
841 have_dynamic_objects="no"
842 VLC_SAVE_FLAGS
843 AC_SEARCH_LIBS(dlsym, [dl svld], [
844   AS_IF([test "$ac_cv_search_dlsym" != "none required"], [
845     LIBDL="$ac_cv_search_dlsym"
846   ])
847   have_dynamic_objects="yes"
849 VLC_RESTORE_FLAGS
851 # Windows
852 AS_IF([test "${SYS}" = "mingw32"], [
853   LIBDL=""
854   have_dynamic_objects="yes" #assume we can use shared objects
857 AC_ARG_WITH([libfuzzer],
858     AS_HELP_STRING([--with-libfuzzer=DIR],
859         [use libFuzzer library from DIR and triggers sanitize coverage (default disabled)]),
860      [],
861      [with_libfuzzer=no])
862 AS_VAR_IF(with_libfuzzer, no, [], [
863     enable_shared=no
864     enable_static=yes
865     enable_vlc=no
867 AM_CONDITIONAL([HAVE_LIBFUZZER], [test "${with_libfuzzer}" != "no"])
869 AS_IF([test "${enable_shared}" = "no"], [
870   have_dynamic_objects=no
872 AM_CONDITIONAL([HAVE_DYNAMIC_PLUGINS], [test "${have_dynamic_objects}" != "no"])
874 AC_SUBST([LIBDL])
876 AS_IF([test "${SYS}" != "mingw32"], [
877   AC_SEARCH_LIBS([clock_nanosleep], [rt pthread], [
878     AS_IF([test "$ac_cv_search_clock_nanosleep" != "none required"], [
879       LIBRT="$ac_cv_search_clock_nanosleep"
880     ])
881   ], [
882     AC_SEARCH_LIBS([nanosleep], [rt pthread posix4], [
883       AS_IF([test "$ac_cv_search_nanosleep" != "none required"], [
884         LIBRT="$ac_cv_search_nanosleep"
885       ])
886     ])
887   ])
889 AC_SUBST([LIBRT])
892 dnl Check for headers
895 dnl  POSIX
896 AC_CHECK_HEADERS([arpa/inet.h pthread.h search.h sys/shm.h sys/socket.h sys/uio.h])
897 AC_CHECK_HEADERS([net/if.h], [], [],
899 #include <sys/types.h>
900 #include <sys/socket.h>
902 AC_CHECK_HEADER([syslog.h], [have_syslog="yes"], [have_syslog="no"])
903 AM_CONDITIONAL([HAVE_SYSLOG], [test "$have_syslog" = "yes"])
905 dnl  BSD
906 AC_CHECK_HEADERS([netinet/tcp.h netinet/udplite.h sys/param.h sys/mount.h])
908 dnl  GNU/Linux
909 AC_CHECK_HEADERS([features.h getopt.h linux/dccp.h linux/magic.h sys/eventfd.h])
911 dnl  MacOS
912 AC_CHECK_HEADERS([xlocale.h])
914 dnl Check if C++ headers define locale_t
915 AC_LANG_PUSH(C++)
916 AC_CACHE_CHECK([if C++ headers define locale_t],
917   [ac_cv_cxx_locale_t],
918   [ac_cv_cxx_locale_t=no
919    AC_TRY_COMPILE([#include <locale>], [locale_t loc;],
920                     [ac_cv_cxx_locale_t=yes])])
921 if test "${ac_cv_cxx_locale_t}" != "no"; then
922   AC_DEFINE(HAVE_CXX_LOCALE_T, 1, Define to 1 if C++ headers define locale_t)
924 AC_LANG_POP(C++)
926 dnl LP64 and LLP64 architectures had better define ssize_t by themselves...
927 AH_TEMPLATE(ssize_t, [Define to `int' if <stddef.h> does not define.]) dnl ` (fix VIM syntax highlight
928 AC_CHECK_TYPE(ssize_t,, [
929   AC_DEFINE(ssize_t, int)
932 dnl It seems that autoconf detects pkg-config only during the first
933 dnl PKG_CHECK_MODULES from configure.ac - which makes sense. But in our case,
934 dnl it is nested within a conditional block, so it was not working right.
935 PKG_PROG_PKG_CONFIG()
937 dnl On some OS we need static linking
938 AS_IF([test -n "${PKG_CONFIG}" ],[
939     AS_IF([test "${SYS}" = "mingw32" -o "${SYS}" = "darwin" -o "${SYS}" = "os2" ],[
940         PKG_CONFIG="${PKG_CONFIG} --static"
941     ])
946 dnl Check for zlib.h and -lz if available
948 AC_CHECK_HEADERS([zlib.h], [ have_zlib=yes ], [ have_zlib=no ])
949 AM_CONDITIONAL([HAVE_ZLIB], [ test "${have_zlib}" = "yes" ])
950 if test "${have_zlib}" = "yes"
951 then
952   VLC_ADD_LIBS([sap],[-lz])
957 dnl Domain name i18n support via GNU libidn
959 PKG_CHECK_MODULES([IDN], [libidn], [
960   have_libidn="yes"
961   AC_DEFINE([HAVE_IDN], 1, [Define to 1 if you have GNU libidn.])
962 ], [
963   have_libidn="no"
967 dnl Check for dbus
968 AC_ARG_ENABLE([dbus],
969   AS_HELP_STRING([--enable-dbus],
970     [compile D-Bus message bus support (default enabled)]))
971 have_dbus="no"
972 AS_IF([test "${enable_dbus}" != "no"], [
973   PKG_CHECK_MODULES(DBUS, [dbus-1 >= 1.6.0], [
974     have_dbus="yes"
975   ], [
976     AS_IF([test -n "${enable_dbus}"], [
977       AC_MSG_ERROR([${DBUS_PKG_ERRORS}.])
978     ], [
979       AC_MSG_WARN([${DBUS_PKG_ERRORS}.])
980     ])
981   ])
983 AM_CONDITIONAL([HAVE_DBUS], [test "${have_dbus}" = "yes"])
986 dnl Check for systemd
987 PKG_CHECK_MODULES([SYSTEMD], [libsystemd], [
988   have_systemd="yes"
989 ], [
990   AC_MSG_WARN([${SYSTEMD_PKG_ERRORS}.])
992 AM_CONDITIONAL([HAVE_SYSTEMD], [test "${have_systemd}" = "yes"])
995 EXTEND_HELP_STRING([Optimization options:])
997 dnl  Compiler warnings
1000 AX_APPEND_COMPILE_FLAGS([-Wall -Wextra -Wsign-compare -Wundef -Wpointer-arith -Wvolatile-register-var -Wformat -Wformat-security -Wduplicated-branches -Wduplicated-cond], [CFLAGS])
1001 AX_APPEND_COMPILE_FLAGS([-Wall -Wextra -Wsign-compare -Wundef -Wpointer-arith -Wvolatile-register-var -Wformat -Wformat-security -Wduplicated-branches -Wduplicated-cond], [CXXFLAGS])
1003 AX_APPEND_COMPILE_FLAGS([-Wbad-function-cast -Wwrite-strings -Wmissing-prototypes -Werror-implicit-function-declaration -Winit-self -Wlogical-op -Wshadow=local -Wmultistatement-macros], [CFLAGS])
1004 AX_APPEND_COMPILE_FLAGS([-pipe], [CFLAGS])
1007 dnl  Debugging mode
1009 AC_ARG_ENABLE([debug],
1010   AS_HELP_STRING([--disable-debug],
1011     [disable run-time assertions (default enabled)]),,
1012   [enable_debug="yes"])
1013 AH_TEMPLATE(NDEBUG,
1014             [Define to 1 if debug code should NOT be compiled])
1015 AS_IF([test "${enable_debug}" != "no"], [
1016   AC_CHECK_HEADERS([valgrind/valgrind.h])
1017 ], [
1018   AC_DEFINE(NDEBUG)
1022 dnl  Profiling
1024 AC_ARG_ENABLE([gprof],
1025   AS_HELP_STRING([--enable-gprof],[profile with gprof (default disabled)]),,
1026   [enable_gprof="no"])
1027 AS_IF([test "${enable_gprof}" != "no"], [
1028   CFLAGS="${CFLAGS} -pg"
1029   CXXFLAGS="${CXXFLAGS} -pg"
1030   OBJCFLAGS="${OBJCFLAGS} -pg"
1031   LDFLAGS="${LDFLAGS} -pg"
1034 AC_ARG_ENABLE([cprof],
1035   AS_HELP_STRING([--enable-cprof],[profile with cprof (default disabled)]),,
1036   [enable_cprof="no"])
1037 AS_IF([test "${enable_gprof}" != "no"], [
1038   CFLAGS="${CFLAGS} -finstrument-functions"
1039   CXXFLAGS="${CXXFLAGS} -finstrument-functions"
1040   OBJCFLAGS="${OBJCFLAGS} -finstrument-functions"
1041   LDFLAGS="${LDFLAGS} -finstrument-functions"
1045 dnl  Test coverage
1047 AC_ARG_ENABLE([coverage],
1048   AS_HELP_STRING([--enable-coverage],
1049     [build for test coverage (default disabled)]),,
1050   [enable_coverage="no"])
1051 AS_IF([test "${enable_coverage}" != "no"], [
1052   CFLAGS="-fprofile-arcs -ftest-coverage ${CFLAGS}"
1053   CXXFLAGS="-fprofile-arcs -ftest-coverage ${CXXFLAGS}"
1054   LDFLAGS="-lgcov ${LDFLAGS}"
1057 AS_IF([test "${SYS}" != "mingw32" -a "${SYS}" != "os2"], [
1058   VLC_SAVE_FLAGS
1059   CFLAGS="${CFLAGS} -fvisibility=hidden"
1060   CXXFLAGS="${CXXFLAGS} -fvisibility=hidden"
1061   OBJCFLAGS="${OBJCFLAGS} -fvisibility=hidden"
1062   AC_CACHE_CHECK([if $CC accepts -fvisibility=hidden],
1063                  [ac_cv_c_visibility_hidden], [
1064     AC_COMPILE_IFELSE([AC_LANG_PROGRAM()], [
1065       ac_cv_c_visibility_hidden=yes
1066     ], [
1067       ac_cv_c_visibility_hidden=no
1068     ])
1069   ])
1070   AS_IF([test "${ac_cv_c_visibility_hidden}" = "no"], [VLC_RESTORE_FLAGS])
1074 dnl Sanitizer flags
1076 AC_ARG_WITH([sanitizer],
1077     AS_HELP_STRING([--with-sanitizer=(address/memory/undefined/thread)],
1078         [build with sanitizer flags (default disabled)]),
1079      [],
1080      [with_sanitizer=no])
1082 AS_VAR_IF(with_sanitizer, no, [], [
1083     AX_CHECK_COMPILE_FLAG([-fsanitize=${with_sanitizer}], [
1084         AX_APPEND_FLAG([-fsanitize=${with_sanitizer}])
1085         AX_APPEND_FLAG([-fsanitize=${with_sanitizer}], [CXXFLAGS])
1086         AX_APPEND_FLAG([-fsanitize=${with_sanitizer}], [LDFLAGS])
1087     ], [
1088         AC_MSG_ERROR(["-fsanitize=${with_sanitizer} not supported!"])
1089     ])
1090     AX_APPEND_FLAG([-g])
1091     AX_APPEND_FLAG([-g], [CXXFLAGS])
1093     AS_IF([test -z "${with_sanitizer##*address*}" ], [
1094        AX_APPEND_COMPILE_FLAGS([-fsanitize-address-use-after-scope -fno-omit-frame-pointer -fsanitize=pointer-compare -fsanitize=pointer-subtract])
1095        AX_APPEND_COMPILE_FLAGS([-fsanitize-address-use-after-scope -fno-omit-frame-pointer -fsanitize=pointer-compare -fsanitize=pointer-subtract], [CXXFLAGS])
1096     ])
1097     AS_IF([test -z "${with_sanitizer##*memory*}" ], [
1098         AX_APPEND_COMPILE_FLAGS([-fPIE -pie])
1099         AX_APPEND_COMPILE_FLAGS([-fPIE -pie], [CXXFLAGS])
1100     ])
1101     AS_IF([test -z "${with_sanitizer##*thread*}" ], [
1102         AX_APPEND_COMPILE_FLAGS([-fPIE -pie])
1103         AX_APPEND_COMPILE_FLAGS([-fPIE -pie], [CXXFLAGS])
1104     ])
1108 dnl  Enable/disable optimizations
1110 AC_ARG_ENABLE([optimizations],
1111   AS_HELP_STRING([--disable-optimizations],
1112     [disable compiler optimizations (default enabled)]),,
1113   [enable_optimizations="yes"])
1115 dnl Check for various optimization flags
1116 AS_IF([test "${enable_optimizations}" != "no"], [
1118   dnl -O3 only in production builds
1119   AS_IF([test "${enable_debug}" = "no"], [
1120     VLC_SAVE_FLAGS
1121     CFLAGS="${CFLAGS} -O3"
1122     CXXFLAGS="${CXXFLAGS} -O3"
1123     OBJCFLAGS="${OBJCFLAGS} -O3"
1124     AC_CACHE_CHECK([if $CC accepts -O3],  [ac_cv_c_o3], [
1125       AC_COMPILE_IFELSE([AC_LANG_PROGRAM()], [
1126         ac_cv_c_o3=yes
1127       ], [
1128         ac_cv_c_o3=no
1129       ])
1130     ])
1131     AS_IF([test "${ac_cv_c_o3}" = "no"], [VLC_RESTORE_FLAGS])
1132   ])
1134   dnl Check for fast maths
1135   AX_APPEND_COMPILE_FLAGS([-fno-math-errno -funsafe-math-optimizations -fno-rounding-math -fno-signaling-nans -fcx-limited-range], [CFLAGS])
1136   AX_APPEND_COMPILE_FLAGS([-fno-math-errno -funsafe-math-optimizations -fno-rounding-math -fno-signaling-nans -fcx-limited-range], [CXXFLAGS])
1138 AH_BOTTOM([
1139 #if defined(_MSC_VER) && !defined(__clang__)
1140 # pragma fenv_access(off)
1141 # pragma fp_contract(on)
1142 #elif defined(__GNUC__)
1143 /* Not supported so far */
1144 #else
1145 # pragma STDC FENV_ACCESS OFF
1146 # pragma STDC FP_CONTRACT ON
1147 #endif
1150   dnl Check for -funroll-loops
1151   VLC_SAVE_FLAGS
1152   CFLAGS="${CFLAGS} -funroll-loops"
1153   CXXFLAGS="${CXXFLAGS} -funroll-loops"
1154   OBJCFLAGS="${OBJCFLAGS} -funroll-loops"
1155   AC_CACHE_CHECK([if $CC accepts -funroll-loops], [ac_cv_c_unroll_loops], [
1156     AC_COMPILE_IFELSE([AC_LANG_PROGRAM()], [
1157       ac_cv_c_unroll_loops=yes
1158     ], [
1159       ac_cv_c_unroll_loops=no
1160     ])
1161   ])
1162   AS_IF([test "${ac_cv_c_unroll_loops}" = "no"], [VLC_RESTORE_FLAGS])
1164   AS_IF([test "$enable_debug" = "no"], [
1165     dnl Check for -fomit-frame-pointer
1166     VLC_SAVE_FLAGS
1167     CFLAGS="${CFLAGS} -fomit-frame-pointer"
1168     CXXFLAGS="${CXXFLAGS} -fomit-frame-pointer"
1169     OBJCFLAGS="${OBJCFLAGS} -fomit-frame-pointer"
1170     AC_CACHE_CHECK([if $CC accepts -fomit-frame-pointer],
1171       [ac_cv_c_omit_frame_pointer], [
1172       AC_COMPILE_IFELSE([AC_LANG_PROGRAM()], [
1173         ac_cv_c_omit_frame_pointer=yes
1174       ], [
1175         ac_cv_c_omit_frame_pointer=no
1176       ])
1177     ])
1178     AS_IF([test "${ac_cv_c_omit_frame_pointer}" = "no"], [VLC_RESTORE_FLAGS])
1179   ])
1183 AC_ARG_ENABLE([ssp],
1184   AS_HELP_STRING([--disable-ssp],
1185   [disable stack smashing protection (default enabled for optimized builds)]), [],
1186   [enable_ssp="yes"])
1188 AS_IF([test "${enable_ssp}" != "no" -a "${enable_optimizations}" != "no"], [
1189   VLC_SAVE_FLAGS
1190   AX_APPEND_COMPILE_FLAGS([-fstack-protector-strong])
1191   AX_APPEND_COMPILE_FLAGS([-fstack-protector-strong], [CXXFLAGS])
1192   dnl Win32 requires linking to ssp for stack-protection
1193   AS_IF([test "${SYS}" = "mingw32"], [
1194       LDFLAGS="${LDFLAGS} -lssp"
1195       AC_CACHE_CHECK([if linker supports stack protectors], [ac_cv_ld_ssp], [
1196         AC_TRY_LINK([#include <stdio.h>],[char buf[100]; fgets(buf, sizeof(buf), stdin);], [
1197           ac_cv_ld_ssp="yes"
1198         ], [
1199           ac_cv_ld_ssp="no"
1200         ])
1201       ])
1202       AS_IF([test "${ac_cv_ld_ssp}" = "no"], [VLC_RESTORE_FLAGS])
1203   ])
1206 AS_IF([test "${SYS}" = "mingw32"], [
1207     dnl library for BCrypt APIs
1208     AS_IF([test "${vlc_winstore_app}" = 1],
1209           [LDFLAGS="${LDFLAGS} -lbcrypt"])
1212 VLC_SAVE_FLAGS
1213 LDFLAGS="${LDFLAGS} -Wl,-Bsymbolic"
1214 AC_CACHE_CHECK([if linker supports -Bsymbolic], [ac_cv_ld_bsymbolic], [
1215   AC_TRY_LINK([],, [
1216     ac_cv_ld_bsymbolic="-Wl,-Bsymbolic"
1217   ], [
1218     ac_cv_ld_bsymbolic=""
1219   ])
1221 VLC_RESTORE_FLAGS
1222 SYMBOLIC_LDFLAGS="${ac_cv_ld_bsymbolic}"
1223 AC_SUBST([SYMBOLIC_LDFLAGS])
1225 VLC_SAVE_FLAGS
1226 LDFLAGS="${LDFLAGS} -Wl,-z,defs"
1227 AC_CACHE_CHECK([if linker supports -z,defs], [ac_cv_ld_z_defs], [
1228   AC_TRY_LINK([],, [
1229     ac_cv_ld_z_defs="yes"
1230   ], [
1231     ac_cv_ld_z_defs="no"
1232   ])
1234 AS_IF([test "${ac_cv_ld_z_defs}" = "no"], [VLC_RESTORE_FLAGS])
1236 dnl Check for __attribute__((packed))
1237 AC_CACHE_CHECK([for __attribute__((packed))],
1238   [ac_cv_c_attribute_packed],
1239   [ac_cv_c_attribute_packed=no
1240    AC_TRY_COMPILE(, [struct __attribute__((__packed__)) foo { int a; } b; (void)b;],
1241                     [ac_cv_c_attribute_packed=yes])])
1242 if test "${ac_cv_c_attribute_packed}" != "no"; then
1243   AC_DEFINE(HAVE_ATTRIBUTE_PACKED, 1, Support for __attribute__((packed)) for structs)
1247 dnl  Check the CPU
1249 case "${host_cpu}" in
1250   "")
1251     ARCH=unknown
1252     ;;
1253   armv*)
1254     ARCH="arm"
1255     host_cpu="arm"
1256     ;;
1257   *)
1258     ARCH="${host_cpu}"
1259     ;;
1260 esac
1262 dnl Check for backtrace() support
1263 AC_CHECK_HEADERS([execinfo.h])
1264 AC_CHECK_FUNCS([backtrace])
1267 dnl  default modules
1269 ALIASES="${ALIASES} cvlc rvlc"
1272 dnl  Accelerated modules
1275 dnl  Check for fully working MMX intrinsics
1276 dnl  We need support for -mmmx, we need <mmintrin.h>, and we also need a
1277 dnl  working compiler (http://gcc.gnu.org/bugzilla/show_bug.cgi?id=23963)
1278 AC_ARG_ENABLE([mmx],
1279   AS_HELP_STRING([--disable-mmx],
1280     [disable MMX optimizations (default auto)]),,[
1281   case "${host_cpu}" in
1282     i?86|x86_64)
1283       enable_mmx="yes"
1284       ;;
1285     *)
1286       enable_mmx="no"
1287       ;;
1288   esac
1290 have_mmx="no"
1291 have_mmxext="no"
1292 AS_IF([test "${enable_mmx}" != "no"], [
1293   ARCH="${ARCH} mmx"
1294   VLC_SAVE_FLAGS
1295   CFLAGS="${CFLAGS} -mmmx"
1296   AC_CACHE_CHECK([if $CC groks MMX intrinsics], [ac_cv_c_mmx_intrinsics], [
1297     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([
1298 [#include <mmintrin.h>
1299 #include <stdint.h>
1300 uint64_t frobzor;]], [
1301 [__m64 a, b, c;
1302 a = b = c = (__m64)frobzor;
1303 a = _mm_slli_pi16(a, 3);
1304 a = _mm_adds_pi16(a, b);
1305 c = _mm_srli_pi16(c, 8);
1306 c = _mm_slli_pi16(c, 3);
1307 b = _mm_adds_pi16(b, c);
1308 a = _mm_unpacklo_pi8(a, b);
1309 frobzor = (uint64_t)a;]])], [
1310       ac_cv_c_mmx_intrinsics=yes
1311     ], [
1312       ac_cv_c_mmx_intrinsics=no
1313     ])
1314   ])
1315   VLC_RESTORE_FLAGS
1316   AS_IF([test "${ac_cv_c_mmx_intrinsics}" != "no"], [
1317     AC_DEFINE(HAVE_MMX_INTRINSICS, 1, [Define to 1 if MMX intrinsics are available.])
1318   ])
1320   VLC_SAVE_FLAGS
1321   CFLAGS="${CFLAGS} -mmmx"
1322   AC_CACHE_CHECK([if $CC groks MMX inline assembly], [ac_cv_mmx_inline], [
1323     AC_COMPILE_IFELSE([AC_LANG_PROGRAM(,[[
1324 void *p;
1325 asm volatile("packuswb %%mm1,%%mm2"::"r"(p):"mm1", "mm2");
1327     ], [
1328       ac_cv_mmx_inline=yes
1329     ], [
1330       ac_cv_mmx_inline=no
1331     ])
1332   ])
1333   AS_IF([test "${ac_cv_mmx_inline}" != "no"], [
1334     AC_DEFINE(CAN_COMPILE_MMX, 1, [Define to 1 inline MMX assembly is available.])
1335     have_mmx="yes"
1336   ])
1338   AC_CACHE_CHECK([if $CC groks MMX EXT inline assembly],
1339                  [ac_cv_mmxext_inline], [
1340     AC_COMPILE_IFELSE([AC_LANG_PROGRAM(,[[
1341 void *p;
1342 asm volatile("maskmovq %%mm1,%%mm2"::"r"(p):"mm1", "mm2");
1344     ], [
1345       ac_cv_mmxext_inline=yes
1346     ], [
1347       ac_cv_mmxext_inline=no
1348     ])
1349   ])
1350   VLC_RESTORE_FLAGS
1351   AS_IF([test "${ac_cv_mmxext_inline}" != "no"], [
1352     AC_DEFINE(CAN_COMPILE_MMXEXT, 1, [Define to 1 if MMX EXT inline assembly is available.])
1353     have_mmxext="yes"
1354   ])
1356 AM_CONDITIONAL([HAVE_MMX], [test "${have_mmx}" = "yes"])
1357 AM_CONDITIONAL([HAVE_MMXEXT], [test "${have_mmxext}" = "yes"])
1359 dnl  Check for fully workin SSE2 intrinsics
1360 dnl  We need support for -msse[2], we need <emmintrin.h>, and we also need a
1361 dnl  working compiler (http://gcc.gnu.org/bugzilla/show_bug.cgi?id=23963)
1362 AC_ARG_ENABLE([sse],
1363   AS_HELP_STRING([--disable-sse],
1364     [disable SSE (1-4) optimizations (default auto)]),, [
1365   case "${host_cpu}" in
1366     i?86|x86_64)
1367       enable_sse=yes
1368       ;;
1369     *)
1370       enable_sse=no
1371       ;;
1372   esac
1374 have_sse2="no"
1375 AS_IF([test "${enable_sse}" != "no"], [
1376   ARCH="${ARCH} sse sse2"
1378   VLC_SAVE_FLAGS
1379   CFLAGS="${CFLAGS} -msse2"
1380   AC_CACHE_CHECK([if $CC groks SSE2 intrinsics], [ac_cv_c_sse2_intrinsics], [
1381     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([
1382 [#include <emmintrin.h>
1383 #include <stdint.h>
1384 uint64_t frobzor;]], [
1385 [__m128i a, b, c;
1386 a = b = c = _mm_set1_epi64((__m64)frobzor);
1387 a = _mm_slli_epi16(a, 3);
1388 a = _mm_adds_epi16(a, b);
1389 c = _mm_srli_epi16(c, 8);
1390 c = _mm_slli_epi16(c, 3);
1391 b = _mm_adds_epi16(b, c);
1392 a = _mm_unpacklo_epi8(a, b);
1393 frobzor = (uint64_t)_mm_movepi64_pi64(a);]])], [
1394       ac_cv_c_sse2_intrinsics=yes
1395     ], [
1396       ac_cv_c_sse2_intrinsics=no
1397     ])
1398   ])
1399   VLC_RESTORE_FLAGS
1400   AS_IF([test "${ac_cv_c_sse2_intrinsics}" != "no"], [
1401     AC_DEFINE(HAVE_SSE2_INTRINSICS, 1, [Define to 1 if SSE2 intrinsics are available.])
1402   ])
1404   VLC_SAVE_FLAGS
1405   CFLAGS="${CFLAGS} -msse"
1406   AC_CACHE_CHECK([if $CC groks SSE inline assembly], [ac_cv_sse_inline], [
1407     AC_COMPILE_IFELSE([AC_LANG_PROGRAM(,[[
1408 void *p;
1409 asm volatile("xorps %%xmm1,%%xmm2"::"r"(p):"xmm1", "xmm2");
1411     ], [
1412       ac_cv_sse_inline=yes
1413     ], [
1414       ac_cv_sse_inline=no
1415     ])
1416   ])
1418   AS_IF([test "${ac_cv_sse_inline}" != "no" -a "${SYS}" != "solaris"], [
1419     AC_DEFINE(CAN_COMPILE_SSE, 1, [Define to 1 if SSE inline assembly is available.])
1420   ])
1422   AC_CACHE_CHECK([if $CC groks SSE2 inline assembly], [ac_cv_sse2_inline], [
1423     AC_COMPILE_IFELSE([AC_LANG_PROGRAM(,[[
1424 void *p;
1425 asm volatile("punpckhqdq %%xmm1,%%xmm2"::"r"(p):"xmm1", "xmm2");
1427     ], [
1428       ac_cv_sse2_inline=yes
1429     ], [
1430       ac_cv_sse2_inline=no
1431     ])
1432   ])
1433   AS_IF([test "${ac_cv_sse2_inline}" != "no" -a "${SYS}" != "solaris"], [
1434     AC_DEFINE(CAN_COMPILE_SSE2, 1, [Define to 1 if SSE2 inline assembly is available.])
1435     have_sse2="yes"
1436   ])
1438   # SSE3
1439   AC_CACHE_CHECK([if $CC groks SSE3 inline assembly], [ac_cv_sse3_inline], [
1440     AC_COMPILE_IFELSE([AC_LANG_PROGRAM(,[[
1441 void *p;
1442 asm volatile("movsldup %%xmm1,%%xmm0"::"r"(p):"xmm0", "xmm1");
1444     ], [
1445       ac_cv_sse3_inline=yes
1446     ], [
1447       ac_cv_sse3_inline=no
1448     ])
1449   ])
1451   AS_IF([test "${ac_cv_sse3_inline}" != "no"], [
1452     AC_DEFINE(CAN_COMPILE_SSE3, 1, [Define to 1 if SSE3 inline assembly is available.]) ])
1454   # SSSE3
1455   AC_CACHE_CHECK([if $CC groks SSSE3 inline assembly], [ac_cv_ssse3_inline], [
1456     AC_COMPILE_IFELSE([AC_LANG_PROGRAM(,[[
1457 void *p;
1458 asm volatile("pabsw %%xmm0,%%xmm0"::"r"(p):"xmm0");
1460     ], [
1461       ac_cv_ssse3_inline=yes
1462     ], [
1463       ac_cv_ssse3_inline=no
1464     ])
1465   ])
1467   AS_IF([test "${ac_cv_ssse3_inline}" != "no"], [
1468     AC_DEFINE(CAN_COMPILE_SSSE3, 1, [Define to 1 if SSSE3 inline assembly is available.]) ])
1470   # SSE4.1
1471   AC_CACHE_CHECK([if $CC groks SSE4.1 inline assembly],
1472                  [ac_cv_sse4_1_inline], [
1473     AC_COMPILE_IFELSE([AC_LANG_PROGRAM(,[[
1474 void *p;
1475 asm volatile("pmaxsb %%xmm1,%%xmm0"::"r"(p):"xmm0", "xmm1");
1477     ], [
1478       ac_cv_sse4_1_inline=yes
1479     ], [
1480       ac_cv_sse4_1_inline=no
1481     ])
1482   ])
1484   AS_IF([test "${ac_cv_sse4_1_inline}" != "no"], [
1485     AC_DEFINE(CAN_COMPILE_SSE4_1, 1, [Define to 1 if SSE4_1 inline assembly is available.]) ])
1487   # SSE4.2
1488   AC_CACHE_CHECK([if $CC groks SSE4.2 inline assembly],
1489                  [ac_cv_sse4_2_inline], [
1490     AC_COMPILE_IFELSE([AC_LANG_PROGRAM(,[[
1491 void *p;
1492 asm volatile("pcmpgtq %%xmm1,%%xmm0"::"r"(p):"xmm0", "xmm1");
1494     ], [
1495       ac_cv_sse4_2_inline=yes
1496     ], [
1497       ac_cv_sse4_2_inline=no
1498     ])
1499   ])
1501   AS_IF([test "${ac_cv_sse4_2_inline}" != "no"], [
1502     AC_DEFINE(CAN_COMPILE_SSE4_2, 1, [Define to 1 if SSE4_2 inline assembly is available.]) ])
1504   # SSE4A
1505   AC_CACHE_CHECK([if $CC groks SSE4A inline assembly], [ac_cv_sse4a_inline], [
1506     AC_COMPILE_IFELSE([AC_LANG_PROGRAM(,[[
1507 void *p;
1508 asm volatile("insertq %%xmm1,%%xmm0"::"r"(p):"xmm0", "xmm1");
1510     ], [
1511       ac_cv_sse4a_inline=yes
1512     ], [
1513       ac_cv_sse4a_inline=no
1514     ])
1515   ])
1516   VLC_RESTORE_FLAGS
1517   AS_IF([test "${ac_cv_sse4a_inline}" != "no"], [
1518     AC_DEFINE([CAN_COMPILE_SSE4A], [1], [Define to 1 if SSE4A inline assembly is available.]) ])
1520 AM_CONDITIONAL([HAVE_SSE2], [test "$have_sse2" = "yes"])
1522 dnl  Check for fully workin AVX2 intrinsics
1523 dnl  We need support for -mavx[2], we need <immintrin.h>, and we also need a
1524 dnl  working compiler (http://gcc.gnu.org/bugzilla/show_bug.cgi?id=23963)
1525 AC_ARG_ENABLE([avx],
1526   AS_HELP_STRING([--disable-avx],
1527     [disable AVX (1-2) optimizations (default auto)]),, [
1528   case "${host_cpu}" in
1529     i?86|x86_64)
1530       enable_avx=yes
1531       ;;
1532     *)
1533       enable_avx=no
1534       ;;
1535   esac
1537 have_avx2="no"
1538 AS_IF([test "${enable_avx}" != "no"], [
1539   ARCH="${ARCH} avx avx2"
1541   VLC_SAVE_FLAGS
1542   CFLAGS="${CFLAGS} -mavx2"
1543   AC_CACHE_CHECK([if $CC groks AVX2 intrinsics], [ac_cv_c_avx2_intrinsics], [
1544     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([
1545 [#include <immintrin.h>
1546 #include <stdint.h>
1547 uint64_t frobzor;]], [
1548 [__m256i a, b, c;
1549 a = b = c = _mm256_set1_epi64x((int64_t)frobzor);
1550 a = _mm256_slli_epi16(a, 3);
1551 a = _mm256_adds_epi16(a, b);
1552 c = _mm256_srli_epi16(c, 8);
1553 c = _mm256_slli_epi16(c, 3);
1554 b = _mm256_adds_epi16(b, c);
1555 a = _mm256_unpacklo_epi8(a, b);
1556 frobzor = (uint64_t)_mm256_extract_epi64(a, 0);]])], [
1557       ac_cv_c_avx2_intrinsics=yes
1558     ], [
1559       ac_cv_c_avx2_intrinsics=no
1560     ])
1561   ])
1562   VLC_RESTORE_FLAGS
1563   AS_IF([test "${ac_cv_c_avx2_intrinsics}" != "no"], [
1564     AC_DEFINE(HAVE_AVX2_INTRINSICS, 1, [Define to 1 if AVX2 intrinsics are available.])
1565   ])
1567   VLC_SAVE_FLAGS
1568   CFLAGS="${CFLAGS} -mavx"
1569   AC_CACHE_CHECK([if $CC groks AVX inline assembly], [ac_cv_avx_inline], [
1570     AC_COMPILE_IFELSE([AC_LANG_PROGRAM(,[[
1571 void *p;
1572 asm volatile("xorps256 %%ymm1,%%ymm2"::"r"(p):"ymm1", "ymm2");
1574     ], [
1575       ac_cv_avx_inline=yes
1576     ], [
1577       ac_cv_avx_inline=no
1578     ])
1579   ])
1581   AS_IF([test "${ac_cv_avx_inline}" != "no" -a "${SYS}" != "solaris"], [
1582     AC_DEFINE(CAN_COMPILE_AVX, 1, [Define to 1 if AVX inline assembly is available.])
1583   ])
1585   AC_CACHE_CHECK([if $CC groks AVX2 inline assembly], [ac_cv_avx2_inline], [
1586     AC_COMPILE_IFELSE([AC_LANG_PROGRAM(,[[
1587 void *p;
1588 asm volatile("punpckhqdq256 %%ymm1,%%ymm2"::"r"(p):"ymm1", "ymm2");
1590     ], [
1591       ac_cv_avx2_inline=yes
1592     ], [
1593       ac_cv_avx2_inline=no
1594     ])
1595   ])
1596   VLC_RESTORE_FLAGS
1597   AS_IF([test "${ac_cv_avx2_inline}" != "no" -a "${SYS}" != "solaris"], [
1598     AC_DEFINE(CAN_COMPILE_AVX2, 1, [Define to 1 if AVX2 inline assembly is available.])
1599     have_avx2="yes"
1600   ])
1602 AM_CONDITIONAL([HAVE_AVX2], [test "$have_avx2" = "yes"])
1604 VLC_SAVE_FLAGS
1605 CFLAGS="${CFLAGS} -mmmx"
1606 have_3dnow="no"
1607 AC_CACHE_CHECK([if $CC groks 3D Now! inline assembly], [ac_cv_3dnow_inline], [
1608   AC_COMPILE_IFELSE([AC_LANG_PROGRAM(,[[
1609 void *p;
1610 asm volatile("pfadd %%mm1,%%mm2"::"r"(p):"mm1", "mm2");
1612   ], [
1613     ac_cv_3dnow_inline=yes
1614   ], [
1615     ac_cv_3dnow_inline=no
1616   ])
1618 VLC_RESTORE_FLAGS
1619 AS_IF([test "${ac_cv_3dnow_inline}" != "no"], [
1620   AC_DEFINE([CAN_COMPILE_3DNOW], 1,
1621             [Define to 1 if 3D Now! inline assembly is available.])
1622   have_3dnow="yes"
1624 AM_CONDITIONAL([HAVE_3DNOW], [test "$have_3dnow" = "yes"])
1627 AC_ARG_ENABLE([neon],
1628   AS_HELP_STRING([--disable-neon],
1629     [disable ARM NEON optimizations (default auto)]),, [
1630   case "${host_cpu}" in
1631     "arm")
1632       enable_neon="32"
1633       ;;
1634     "aarch64")
1635       enable_neon="64"
1636       ;;
1637     *)
1638       enable_neon="no"
1639       ;;
1640   esac
1642 AS_IF([test "${enable_neon}" != "no"], [
1643   VLC_SAVE_FLAGS
1644   AC_CACHE_CHECK([if $CCAS groks ARM NEON assembly], [ac_cv_arm_neon], [
1645     AS_IF([test "${enable_neon}" != "64"], [
1646       CFLAGS="${CFLAGS} -mfpu=neon -mhard-float"
1647       AC_COMPILE_IFELSE([
1648         AC_LANG_PROGRAM(,[[
1649 asm volatile("vqmovun.s64 d0, q1":::"d0");
1651       ], [
1652         ac_cv_arm_neon="32"
1653       ], [
1654         ac_cv_arm_neon="no"
1655       ])
1656     ], [
1657       CFLAGS="${CFLAGS} -march=armv8-a+simd"
1658       AC_COMPILE_IFELSE([
1659         AC_LANG_PROGRAM(,[[
1660 asm volatile("uhadd v0.8b, v0.8b, v1.8b":::"v0");
1662       ], [
1663         ac_cv_arm_neon="64"
1664       ], [
1665         ac_cv_arm_neon="no"
1666       ])
1667     ])
1668   ])
1669   VLC_RESTORE_FLAGS
1671 AM_CONDITIONAL([HAVE_NEON], [test "${ac_cv_arm_neon}" = "32"])
1672 AM_CONDITIONAL([HAVE_ARM64], [test "${ac_cv_arm_neon}" = "64"])
1674 AC_ARG_ENABLE([sve],
1675   AS_HELP_STRING([--disable-sve],
1676     [disable ARM SVE optimizations (default auto)]),, [
1677   AS_IF([test "${host_cpu}" = "aarch64"], [enable_sve="yes"] ,[enable_sve="no"])
1679 AS_IF([test "${enable_sve}" != "no"], [
1680   VLC_SAVE_FLAGS
1681   CFLAGS="${CFLAGS} -march=armv8-a+sve"
1682   AC_CACHE_CHECK([if $CCAS groks ARM SVE assembly], [ac_cv_arm_sve], [
1683     AC_COMPILE_IFELSE([
1684       AC_LANG_PROGRAM(,[[
1685 asm volatile("ptrue p0.s" ::: "p0");
1687     ], [
1688       ac_cv_arm_sve="yes"
1689     ], [
1690       ac_cv_arm_sve="no"
1691     ])
1692   ])
1693   VLC_RESTORE_FLAGS
1695 AM_CONDITIONAL([HAVE_SVE], [test "${ac_cv_arm_sve}" = "yes"])
1697 AC_ARG_ENABLE([branch-protection],
1698   AS_HELP_STRING([--disable-branch-protection],
1699     [disable AArch64 branch protection (default auto)]),, [
1700   AS_IF([test "${host_cpu}" = "aarch64"], [enable_brprot="yes"] ,[enable_brprot="no"])
1702 AS_IF([test "${enable_brprot}" != "no"], [
1703   AX_CHECK_COMPILE_FLAG([-mbranch-protection=standard], [
1704     AX_APPEND_FLAG([-mbranch-protection=standard], [CFLAGS])
1705     AX_APPEND_FLAG([-mbranch-protection=standard], [CXXFLAGS])
1706   ])
1710 AC_ARG_ENABLE([altivec],
1711   AS_HELP_STRING([--disable-altivec],
1712     [disable AltiVec optimizations (default auto)]),, [
1713   AS_CASE("${host_cpu}", [powerpc*],
1714         [enable_altivec=yes], [enable_altivec=no])
1716 have_altivec="no"
1717 ALTIVEC_CFLAGS=""
1718 AS_IF([test "${enable_altivec}" = "yes"], [
1719   ARCH="${ARCH} altivec";
1720   VLC_SAVE_FLAGS
1721   AC_CACHE_CHECK([if $CC groks AltiVec inline assembly],
1722     [ac_cv_altivec_inline],
1723     [AC_TRY_COMPILE(,[asm volatile("vperm 0,1,2,3");],
1724          ac_cv_altivec_inline="yes",
1725          [CFLAGS="${CFLAGS} -Wa,-maltivec"
1726           AC_TRY_COMPILE(,[asm volatile("vperm 0,1,2,3");],
1727             [ac_cv_altivec_inline="-Wa,-maltivec"],
1728             ac_cv_altivec_inline=no)
1729          ])])
1730   VLC_RESTORE_FLAGS
1731   AS_IF([test "${ac_cv_altivec_inline}" != "no"], [
1732     AC_DEFINE(CAN_COMPILE_ALTIVEC, 1,
1733               [Define to 1 if AltiVec inline assembly is available.])
1734     AS_IF([test "${ac_cv_altivec_inline}" != "yes"], [
1735       ALTIVEC_CFLAGS="${ac_cv_altivec_inline}"
1736       VLC_ADD_CFLAGS([libvlccore],[${ac_cv_altivec_inline}])
1737     ])
1738     have_altivec="yes"
1739   ])
1741   VLC_SAVE_FLAGS
1742   AC_CACHE_CHECK([if \$CC groks AltiVec C extensions],
1743   [ac_cv_c_altivec], [
1744     CFLAGS="${CFLAGS} -maltivec"
1745     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([
1746 [#include <altivec.h>]], [
1747 [vec_ld(0, (unsigned char *)0);]])], [
1748       ac_cv_c_altivec="-maltivec"
1749     ], [
1750       ac_cv_c_altivec="no"
1751     ])
1752   ])
1753   VLC_RESTORE_FLAGS
1754   AS_IF([test "${ac_cv_c_altivec}" != "no"], [
1755     CPPFLAGS="${CPPFLAGS} ${ac_cv_c_altivec}"
1756     AC_DEFINE(CAN_COMPILE_C_ALTIVEC, 1, [Define to 1 if C AltiVec extensions are available.])
1757     VLC_ADD_CFLAGS([libvlccore],[${ac_cv_c_altivec}])
1758     ALTIVEC_CFLAGS="$ALTIVEC_CFLAGS ${ac_cv_c_altivec}"
1759     VLC_ADD_CFLAGS([deinterlace],[${ac_cv_c_altivec}])
1760     have_altivec="yes"
1761   ])
1762   AC_CHECK_HEADERS([altivec.h])
1764   VLC_SAVE_FLAGS
1765   LDFLAGS="${LDFLAGS} -Wl,-framework,vecLib"
1766   AC_CACHE_CHECK([if linker needs -framework vecLib],
1767     [ac_cv_ld_altivec],
1768     [AC_TRY_LINK([],,ac_cv_ld_altivec=yes,ac_cv_ld_altivec=no)])
1769   VLC_RESTORE_FLAGS
1770   AS_IF([test "${ac_cv_ld_altivec}" != "no"], [
1771     VLC_ADD_LIBS([libvlccore],[-Wl,-framework,vecLib])
1772   ])
1774 AC_SUBST([ALTIVEC_CFLAGS])
1775 AM_CONDITIONAL([HAVE_ALTIVEC], [test "$have_altivec" = "yes"])
1778 dnl  Memory usage
1780 AC_ARG_ENABLE([optimize-memory],
1781   AS_HELP_STRING([--enable-optimize-memory],
1782     [optimize memory usage over performance]))
1783 if test "${enable_optimize_memory}" = "yes"; then
1784   AC_DEFINE(OPTIMIZE_MEMORY, 1, Define if you want to optimize memory usage over performance)
1788 dnl Allow running as root (useful for people running on embedded platforms)
1790 AC_ARG_ENABLE([run-as-root],
1791   AS_HELP_STRING([--enable-run-as-root],
1792     [allow running VLC as root (default disabled)]))
1793 AS_IF([test "${enable_run_as_root}" = "yes"],[
1794     AC_DEFINE(ALLOW_RUN_AS_ROOT, 1,
1795               [Define to 1 to allow running VLC as root (uid 0).])
1799 dnl Stream output
1801 AC_ARG_ENABLE([sout],
1802   AS_HELP_STRING([--disable-sout],
1803     [disable streaming output (default enabled)]))
1804 AS_IF([test "${enable_sout}" != "no"], [
1805   AC_DEFINE(ENABLE_SOUT, 1, [Define to 1 for stream output support.])
1807 AM_CONDITIONAL([ENABLE_SOUT], [test "${enable_sout}" != "no"])
1809 dnl Lua modules
1810 AC_ARG_ENABLE([lua],
1811   AS_HELP_STRING([--disable-lua],
1812     [disable LUA scripting support (default enabled)]))
1813 if test "${enable_lua}" != "no"
1814 then
1815   PKG_CHECK_MODULES(LUA, lua5.2,
1816     [ have_lua=yes ],
1817     [
1818     AC_MSG_WARN([${LUA_PKG_ERRORS}, trying lua 5.1 instead])
1820     PKG_CHECK_MODULES(LUA, lua5.1,
1821       [ have_lua=yes ],
1822       [
1823       AC_MSG_WARN([${LUA_PKG_ERRORS}, trying lua >= 5.1 instead])
1824       PKG_CHECK_MODULES(LUA, lua >= 5.1,
1825         [ have_lua=yes ],
1826         [
1827           AC_MSG_WARN([${LUA_PKG_ERRORS}, trying manual detection instead])
1828           have_lua=yes
1829           AC_CHECK_HEADERS([lua.h lauxlib.h lualib.h],
1830             [],
1831             [ have_lua=no ] )
1832           AC_CHECK_LIB(  lua5.2 , luaL_newstate,
1833             [LUA_LIBS="-llua5.2"],
1834           AC_CHECK_LIB( lua5.1 , luaL_newstate,
1835             [LUA_LIBS="-llua5.1"],
1836             AC_CHECK_LIB( lua51 , luaL_newstate,
1837               [LUA_LIBS="-llua51"],
1838               AC_CHECK_LIB( lua , luaL_newstate,
1839                 [LUA_LIBS="-llua"],
1840                 [ have_lua=no
1841                 ], [-lm])
1842             )))
1843         ])
1844       ])
1845     ])
1846   if test "x${have_lua}" != "xyes" ;  then
1847       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.])
1848   fi
1849   AC_ARG_VAR([LUAC], [LUA byte compiler])
1850   AS_IF([test -z "$LUAC"], [
1851      AC_CHECK_TOOL(LUAC, [luac], [false])
1852   ])
1853   AS_IF([test "${LUAC}" = "false"], [
1854     AC_MSG_ERROR([Could not find the LUA byte compiler.])
1855   ])
1856   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], [
1857     AC_MSG_ERROR([You need 32-bits luac when using lua from contrib.])
1858   ])
1860 AM_CONDITIONAL([BUILD_LUA], [test "${have_lua}" = "yes"])
1864 dnl VideoLAN manager
1866 AC_ARG_ENABLE([vlm],
1867   AS_HELP_STRING([--disable-vlm],
1868     [disable the stream manager (default enabled)]),,
1869   [enable_vlm="${enable_sout}"])
1870 AS_IF([test "${enable_vlm}" != "no"], [
1871   AS_IF([test "${enable_sout}" = "no"], [
1872     AC_MSG_ERROR([VLM requires the stream output. Do not use --disable-sout.])
1873   ])
1874   AC_DEFINE(ENABLE_VLM, 1, [Define if you want the VideoLAN manager support])
1876 AM_CONDITIONAL([ENABLE_VLM], [test "${enable_vlm}" != "no"])
1880 dnl Addons manager storage and repositories modules
1882 AC_ARG_ENABLE([addonmanagermodules],
1883   AS_HELP_STRING([--disable-addonmanagermodules],
1884     [disable the addons manager modules (default enabled)]))
1885 if test "${enable_addonmanagermodules}" != "no"
1886 then
1887   AC_DEFINE(ENABLE_ADDONMANAGERMODULES, 1, [Define if you want the addons manager modules])
1889 AM_CONDITIONAL([ENABLE_ADDONMANAGERMODULES], [test "${enable_addonmanagermodules}" != "no"])
1893 dnl  Input plugins
1896 EXTEND_HELP_STRING([Input plugins:])
1899 dnl  libarchive access module
1901 PKG_ENABLE_MODULES_VLC([ARCHIVE], [archive], [libarchive >= 3.1.0], (libarchive support), [auto])
1904 dnl  live555 input
1906 AC_ARG_ENABLE([live555],
1907   AS_HELP_STRING([--enable-live555],
1908     [enable RTSP input through live555 (default enabled)]))
1910 AS_IF([test "${enable_live555}" != "no" -a -n "${CXX}"], [
1911   PKG_CHECK_MODULES(LIVE555, live555, [
1912     VLC_ADD_PLUGIN([live555])
1913     VLC_ADD_CXXFLAGS([live555], [$LIVE555_CFLAGS])
1914     VLC_ADD_LIBS([live555],[$LIVE555_LIBS])
1915   ], [
1916     AC_MSG_WARN([${LIVE555_PKG_ERRORS}.])
1918     AC_LANG_PUSH(C++)
1919     VLC_SAVE_FLAGS
1921     dnl detect include paths
1922     AS_IF([test -f "${CONTRIB_DIR}/include/UsageEnvironment/UsageEnvironment.hh"], [
1923       CPPFLAGS_live555="-I${CONTRIB_DIR}/include/liveMedia -I${CONTRIB_DIR}/include/groupsock -I${CONTRIB_DIR}/include/BasicUsageEnvironment -I${CONTRIB_DIR}/include/UsageEnvironment"
1924     ], [
1925       AS_IF([test "${SYS}" != "os2"], [
1926         LIVE555_PREFIX=${LIVE555_PREFIX-"/usr"}
1927         CPPFLAGS_live555="-I${LIVE555_PREFIX}/include/liveMedia -I${LIVE555_PREFIX}/include/groupsock -I${LIVE555_PREFIX}/include/BasicUsageEnvironment -I${LIVE555_PREFIX}/include/UsageEnvironment"
1928       ], [
1929         LIVE555_PREFIX=${LIVE555_PREFIX-"/usr/lib/live"}
1930         CPPFLAGS_live555="-I${LIVE555_PREFIX}/liveMedia/include -I${LIVE555_PREFIX}/groupsock/include -I${LIVE555_PREFIX}/BasicUsageEnvironment/include -I${LIVE555_PREFIX}/UsageEnvironment/include"
1931         LDFLAGS_live555="-L${LIVE555_PREFIX}/liveMedia -L${LIVE555_PREFIX}/groupsock -L${LIVE555_PREFIX}/BasicUsageEnvironment -L${LIVE555_PREFIX}/UsageEnvironment"
1932       ])
1933     ])
1935     dnl CPP Flags
1936     AS_IF([test "${SYS}" = "solaris"], [
1937       CPPFLAGS_live555="${CPPFLAGS_live555} -DSOLARIS"
1938     ])
1939     CPPFLAGS="${CPPFLAGS} ${CPPFLAGS_live555}"
1940     LDFLAGS="${LDFLAGS} ${LDFLAGS_live555}"
1942     dnl version check
1943     AC_CACHE_CHECK([for live555 version 1324598400 or later], [ac_cv_live555], [
1944       AC_PREPROC_IFELSE([AC_LANG_PROGRAM([
1945 [#include <liveMedia_version.hh>
1946 #if !defined (LIVEMEDIA_LIBRARY_VERSION_INT) || (LIVEMEDIA_LIBRARY_VERSION_INT < 1324598400)
1947 # error BOOM
1948 #endif]])
1949       ], [
1950         ac_cv_live555="yes"
1951       ], [
1952         ac_cv_live555="no"
1953       ])
1954     ])
1956     AS_IF([test "$ac_cv_live555" = "no"], [
1957       AC_MSG_WARN([live555 is missing or its installed version is too old:
1958 Version 2011.12.23 or later is required to proceed.
1959 You can get an updated one from http://www.live555.com/liveMedia .])
1960       AS_IF([test -n "${enable_live555}"], [
1961         AC_MSG_ERROR([Update live555 or pass --disable-live555 to disable RTSP input support.])
1962       ])
1963     ], [
1964       other_libs="-lgroupsock -lBasicUsageEnvironment -lUsageEnvironment"
1965       other_libs_pic="-lgroupsock_pic -lBasicUsageEnvironment_pic -lUsageEnvironment_pic"
1966       AS_IF([test "${SYS}" = "mingw32"], [
1967         # add ws2_32 for closesocket, select, recv
1968         other_libs="$other_libs -lws2_32"
1969       ])
1971       dnl We need to check for pic because live555 don't provide shared libs
1972       dnl and we want to build a plugins so we need -fPIC on some arch.
1973       VLC_ADD_CXXFLAGS([live555], [${CPPFLAGS_live555}])
1974       VLC_ADD_LDFLAGS([live555], [${LDFLAGS_live555}])
1975       AC_CHECK_LIB([liveMedia_pic], [main], [
1976         VLC_ADD_PLUGIN([live555])
1977         VLC_ADD_LIBS([live555], [-lliveMedia_pic ${other_libs_pic}])
1978       ],[
1979         AC_CHECK_LIB([liveMedia], [main], [
1980           VLC_ADD_PLUGIN([live555])
1981           VLC_ADD_LIBS([live555], [-lliveMedia ${other_libs}])
1982         ],[],[${other_libs}])
1983       ],[${other_libs_pic}])
1984     ])
1985     VLC_RESTORE_FLAGS
1986     AC_LANG_POP(C++)
1987   ])
1991 dnl IIDC and DV FireWire input modules
1993 PKG_ENABLE_MODULES_VLC([DC1394], [], [libdc1394-2 >= 2.1.0], [IIDC FireWire input module], [auto])
1994 PKG_ENABLE_MODULES_VLC([DV1394], [], [libraw1394 >= 2.0.1 libavc1394 >= 0.5.3], [DV FireWire input module], [auto])
1997 dnl - linsys modules: access module check for libzvbi
1999 AC_ARG_ENABLE([linsys],
2000   AS_HELP_STRING([--enable-linsys],
2001     [Linux Linear Systems Ltd. SDI and HD-SDI input cards (default enabled)]))
2002 AS_IF([test "$SYS" = "linux" -a "${enable_linsys}" != "no"], [
2003   VLC_ADD_PLUGIN([linsys_hdsdi])
2004   PKG_CHECK_MODULES(LINSYS_SDI, [zvbi-0.2 >= 0.2.28], [
2005     VLC_ADD_PLUGIN([linsys_sdi])
2006   ], [
2007     AC_MSG_WARN([${LINSYS_SDI_PKG_ERRORS}.])
2008   ])
2012 dnl dvdread module: check for libdvdread
2014 PKG_ENABLE_MODULES_VLC([DVDREAD], [], [dvdread > 6.0.0], [dvdread input module], [auto])
2017 dnl libdvdnav plugin
2019 PKG_ENABLE_MODULES_VLC([DVDNAV], [], [dvdnav >= 6.0.0], [DVD with navigation input module (dvdnav)], [auto])
2022 dnl  Blu-ray Disc Support with libbluray
2024 PKG_ENABLE_MODULES_VLC([BLURAY], [libbluray], [libbluray >= 0.6.2], (libbluray for Blu-ray disc support ) )
2027 dnl  OpenCV wrapper and example filters
2029 PKG_ENABLE_MODULES_VLC([OPENCV], [opencv_example opencv_wrapper], [opencv > 2.0], (OpenCV (computer vision) filter), [auto])
2033 dnl  libsmbclient plugin
2035 PKG_ENABLE_MODULES_VLC([SMBCLIENT], [smbc], [smbclient], (SMB/CIFS support), [auto])
2038 dnl  liBDSM access module
2040 AM_CONDITIONAL([HAVE_DSM], [test "$AS_TR_SH(with_dsm)" = "yes"])
2041 PKG_WITH_MODULES([DSM], [libdsm >= 0.2.0], [
2042        VLC_ADD_PLUGIN([dsm])
2043        VLC_ADD_CFLAGS([dsm], [$DSM_CFLAGS])
2044        VLC_ADD_LIBS([dsm], [$DSM_LIBS])
2045        have_dsm="yes"
2046    ],,[libdsm SMB/CIFS access/sd module], [auto])
2047 AM_CONDITIONAL([HAVE_DSM], [test "${have_dsm}" = "yes"])
2050 dnl sftp access support
2052 PKG_ENABLE_MODULES_VLC([SFTP], [sftp], [libssh2], (support SFTP file transfer via libssh2), [auto])
2055 dnl nfs access support
2057 PKG_ENABLE_MODULES_VLC([NFS], [nfs], [libnfs >= 1.10.0], (support nfs protocol via libnfs), [auto])
2060 dnl smb2 access support
2062 PKG_ENABLE_MODULES_VLC([SMB2], [smb2], [libsmb2 >= 3.0.0], (support smb2 protocol via libsmb2), [auto])
2065 dnl  Video4Linux 2
2067 AC_ARG_ENABLE([v4l2], AS_HELP_STRING([--disable-v4l2],
2068   [disable Video4Linux version 2 (default auto)]))
2069 have_v4l2="no"
2070 AS_IF([test "$enable_v4l2" != "no"], [
2071   AC_CHECK_HEADERS([linux/videodev2.h], [
2072     have_v4l2="yes"
2073   ])
2075 AM_CONDITIONAL([HAVE_V4L2], [test "${have_v4l2}" != "no"])
2078 dnl  NVDEC decoder/encoder
2080 AC_ARG_ENABLE([nvdec], AS_HELP_STRING([--disable-nvdec],
2081   [disable NVDEC decoder (default auto)]))
2082 have_nvdec="no"
2083 AS_IF([test "$enable_nvdec" != "no"], [
2084   AC_CHECK_HEADERS([ffnvcodec/dynlink_loader.h], [
2085     have_nvdec="yes"
2086   ])
2088 AM_CONDITIONAL([HAVE_NVDEC], [test "${have_nvdec}" != "no"])
2091 dnl special access module for Blackmagic SDI cards
2093 AC_ARG_ENABLE([decklink],
2094   AS_HELP_STRING([--disable-decklink],
2095     [disable Blackmagic DeckLink SDI input (default auto)]))
2096 AC_ARG_WITH([decklink_sdk],
2097   AS_HELP_STRING([--with-decklink-sdk=DIR],
2098     [location of Blackmagic DeckLink SDI SDK]))
2099 have_decklink=no
2100 if test "${enable_decklink}" != "no"
2101 then
2102   if test "${with_decklink_sdk}" != "no" -a -n "${with_decklink_sdk}"
2103   then
2104     VLC_ADD_CPPFLAGS([decklink decklinkoutput stream_out_sdi],[-I${with_decklink_sdk}/include])
2105   fi
2106   VLC_SAVE_FLAGS
2107   CPPFLAGS="${CPPFLAGS} ${CPPFLAGS_decklink}"
2108   AC_LANG_PUSH([C++])
2109   AC_CHECK_HEADERS([DeckLinkAPIDispatch.cpp], [
2110       have_decklink=yes
2111       AS_IF([test "${SYS}" = "darwin"], [
2112         VLC_ADD_LIBS([decklink decklinkoutput],[-Wl,-framework,CoreFoundation])
2113       ])
2114   ], [
2115       AS_IF([test "${enable_decklink}" = "yes"], [
2116         AC_MSG_ERROR([Blackmagic DeckLink SDI include files not found!])
2117       ], [
2118         AC_MSG_WARN([Blackmagic DeckLink SDI include files not found, decklink disabled])
2119       ])
2120   ])
2121   AC_LANG_POP([C++])
2122   VLC_RESTORE_FLAGS
2124 AM_CONDITIONAL([HAVE_DECKLINK], [ test "${have_decklink}" != "no" ])
2128 dnl  Built-in CD-DA and VCD module
2130 AC_ARG_ENABLE([vcd],
2131   AS_HELP_STRING([--disable-vcd],
2132     [disable built-in VCD and CD-DA support (default enabled)]))
2134 AC_ARG_ENABLE([libcddb],
2135   AS_HELP_STRING([--disable-libcddb],
2136     [disable CDDB for Audio CD (default enabled)]))
2138 if test "${enable_vcd}" != "no" -a "${enable_winstore_app}" != "yes"
2139 then
2140   AC_MSG_CHECKING(for cdrom_msf0 in linux/cdrom.h)
2141   AC_EGREP_HEADER(cdrom_msf0,linux/cdrom.h,[
2142     AC_MSG_RESULT(yes)
2143     VLC_ADD_PLUGIN([vcd cdda])
2144   ],[
2145     AC_MSG_RESULT(no)
2146   ])
2148   AC_MSG_CHECKING(for scsireq in sys/scsiio.h)
2149   AC_EGREP_HEADER(scsireq,sys/scsiio.h,[
2150     AC_MSG_RESULT(yes)
2151     VLC_ADD_PLUGIN([vcd cdda])
2152     AC_DEFINE(HAVE_SCSIREQ_IN_SYS_SCSIIO_H, 1, For NetBSD VCD support)
2153   ],[
2154     AC_MSG_RESULT(no)
2155   ])
2157   AC_MSG_CHECKING(for ioc_toc_header in sys/cdio.h)
2158   AC_EGREP_HEADER(ioc_toc_header ,sys/cdio.h,[
2159     AC_MSG_RESULT(yes)
2160     VLC_ADD_PLUGIN([vcd cdda])
2161     AC_DEFINE(HAVE_IOC_TOC_HEADER_IN_SYS_CDIO_H, 1, For FreeBSD VCD support)
2162   ],[
2163     AC_MSG_RESULT(no)
2164   ])
2166   if test "${SYS}" = "bsdi" -o "${SYS}" = "mingw32" -o "${SYS}" = "os2" -o "${SYS}" = "darwin"
2167   then
2168     VLC_ADD_PLUGIN([vcd cdda])
2169   fi
2171   if test "$enable_libcddb" != "no"; then
2172     PKG_CHECK_MODULES(LIBCDDB, [libcddb >= 0.9.5], [
2173       HAVE_LIBCDDB=yes
2174       AC_DEFINE(HAVE_LIBCDDB, 1, [Define this if you have libcddb installed])
2175       VLC_ADD_LIBS([cdda],[$LIBCDDB_LIBS])
2176       VLC_ADD_CFLAGS([cdda],[$LIBCDDB_CFLAGS])
2177       ],:
2178       [AC_MSG_WARN([${LIBCDDB_PKG_ERRORS}: CDDB access disabled.])
2179       HAVE_LIBCDDB=no])
2180   fi
2184 dnl Linux DVB
2186 AC_CACHE_CHECK([for Linux DVB version 5.1], [ac_cv_linux_dvb_5_1], [
2187   AC_PREPROC_IFELSE([AC_LANG_PROGRAM([
2188 [#include <linux/dvb/version.h>
2189 #if (DVB_API_VERSION < 5)
2190 # error Linux DVB API v3.2 and older are not supported.
2191 #endif
2192 #if (DVB_API_VERSION == 5 && DVB_API_VERSION_MINOR < 1)
2193 # error Linux DVB API v5.0 is unsupported. Please update.
2194 #endif
2195 ]])], [
2196   ac_cv_linux_dvb_5_1=yes
2197 ], [
2198   ac_cv_linux_dvb_5_1=no
2199 ])])
2200 AM_CONDITIONAL([HAVE_LINUX_DVB], [test "$ac_cv_linux_dvb_5_1" = "yes"])
2203 dnl  Screen capture module
2205 AC_ARG_ENABLE([screen],
2206   AS_HELP_STRING([--enable-screen],
2207     [disable screen capture (default enabled)]))
2208 if test "${enable_screen}" != "no"; then
2209   if test "${SYS}" = "darwin"; then
2210     AC_CHECK_HEADERS([ApplicationServices/ApplicationServices.h], [
2211       VLC_ADD_PLUGIN([screen])
2212     ])
2213   fi
2215 AM_CONDITIONAL([HAVE_MAC_SCREEN], [test "${SYS}" = "darwin" -a "x${enable_screen}" != "xno"])
2218 dnl  VNC/RFB access module
2220 PKG_ENABLE_MODULES_VLC([VNC], [vnc], [libvncclient >= 0.9.9], (VNC/rfb client support), [auto])
2222 dnl  RDP/Remote Desktop access module
2224 PKG_ENABLE_MODULES_VLC([FREERDP], [rdp], [freerdp >= 1.0.1], (RDP/Remote Desktop client support) )
2227 dnl AVFoundation
2228 AC_SUBST([have_avfoundation], ["no"])
2229 AC_ARG_ENABLE([macosx-avfoundation],
2230   AS_HELP_STRING([--enable-macosx-avfoundation], [Mac OS X avcapture (video) module (default enabled on Mac OS X)]))
2231 if test "x${enable_macosx_avfoundation}" != "xno" &&
2232   (test "${SYS}" = "darwin" || test "${enable_macosx_avfoundation}" = "yes")
2233 then
2234   SAVED_LIBS="${LIBS}"
2235   LIBS="-framework AVFoundation"
2236   AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [])],[have_avfoundation=yes],[have_avfoundation=no])
2237   LIBS="${SAVED_LIBS}"
2238   if test "${have_avfoundation}" != "no"
2239   then
2240     VLC_ADD_PLUGIN([avcapture])
2241   fi
2243 AM_CONDITIONAL([HAVE_AVFOUNDATION], [test "${have_avfoundation}" != "no"])
2246 dnl  DCP plugin (using asdcplib)
2248 PKG_WITH_MODULES([ASDCP], [asdcplib], [have_asdcp="yes"])
2249 AM_CONDITIONAL([HAVE_ASDCP], [test "${have_asdcp}" = "yes"])
2252 dnl  Demux plugins
2255 EXTEND_HELP_STRING([Mux/Demux plugins:])
2258 dnl  libdvbpsi check for ts mux/demux
2260 have_dvbpsi="no"
2261 PKG_WITH_MODULES([DVBPSI], [libdvbpsi >= 1.2.0], [have_dvbpsi="yes"])
2262 AM_CONDITIONAL([HAVE_DVBPSI], [test "${have_dvbpsi}" = "yes"])
2266 dnl  GME demux plugin
2268 AC_ARG_ENABLE([gme],
2269   AS_HELP_STRING([--enable-gme],
2270     [use Game Music Emu (default auto)]))
2271 AS_IF([test "${enable_gme}" != "no"], [
2272   AC_CHECK_HEADER([gme/gme.h], [
2273     AC_CHECK_LIB([gme], [gme_identify_header], [
2274       VLC_ADD_PLUGIN([gme])
2275     ], [
2276       AC_CHECK_LIB([gme], [gme_identify_extension], [
2277          VLC_ADD_LIBS([gme], [-lstdc++ $LIBM])
2278          VLC_ADD_PLUGIN([gme])
2279       ],, [-lstdc++ $LIBM])
2280     ])
2281     VLC_ADD_LIBS([gme], [-lgme])
2282   ], [
2283     AS_IF([test "x${enable_gme}" != "x"], [
2284       AC_MSG_ERROR([GME cannot be found. Please install the development files.])
2285     ])
2286   ])
2291 dnl  SIDPlay plugin
2293 AC_ARG_ENABLE([sid],
2294     AS_HELP_STRING([--enable-sid],[C64 sid demux support (default auto)]))
2295 AS_IF([test "${enable_sid}" != "no"], [
2296     PKG_CHECK_MODULES(SID, [libsidplay2], [
2297         AC_LANG_PUSH(C++)
2298         oldCPPFLAGS="$CPPFLAGS"
2299         CPPFLAGS="$CPPFLAGS $SID_CFLAGS"
2300         AC_CHECK_HEADER([sidplay/builders/resid.h], [
2301             VLC_ADD_PLUGIN([sid])
2302             VLC_ADD_CFLAGS([sid], [$SID_CFLAGS])
2303             VLC_ADD_LIBS([sid], [$SID_LIBS] [-lresid-builder])
2304         ], [
2305             AS_IF([test -n "${enable_sid}"],
2306                 [AC_MSG_ERROR([${SID_PKG_ERRORS} (required for sid).])],
2307                 [AC_MSG_WARN([${SID_PKG_ERRORS} (required for sid).])]
2308                 )
2309         ])
2310         CPPFLAGS="$oldCPPFLAGS"
2311         AC_LANG_POP(C++)
2312     ], [
2313         AS_IF([test "x${enable_sid}" = "xyes"],
2314             [AC_MSG_ERROR([${SID_PKG_ERRORS} (required for sid).])],
2315             [AC_MSG_WARN([${SID_PKG_ERRORS} (required for sid).])]
2316             )
2317     ])
2322 dnl  ogg demux plugin
2324 PKG_ENABLE_MODULES_VLC([OGG], [mux_ogg], [ogg >= 1.0], [Ogg demux support], [auto])
2325 PKG_CHECK_MODULES(LIBVORBIS, [vorbis >= 1.1], [
2326     AC_DEFINE(HAVE_LIBVORBIS, 1, [Define to 1 if you have the libvorbis])
2327 ],[true])
2328 PKG_ENABLE_MODULES_VLC([OGG], [], [ogg >= 1.0], [Ogg demux support], [auto], [${LIBVORBIS_CFLAGS}], [${LIBVORBIS_LIBS}])
2329 if test "${enable_sout}" != "no"; then
2330 dnl Check for libshout
2331     PKG_ENABLE_MODULES_VLC([SHOUT], [access_output_shout], [shout >= 2.1], [libshout output plugin], [auto])
2335 dnl  matroska demux plugin
2337 PKG_WITH_MODULES([MATROSKA], [libebml >= 1.3.6 libmatroska], [
2338        VLC_ADD_PLUGIN([mkv])
2339        VLC_ADD_CFLAGS([mkv], [$MATROSKA_CFLAGS])
2340        VLC_ADD_LIBS([mkv], [$MATROSKA_LIBS])
2341        have_matroska="yes"
2342    ],,[MKV format support], [auto])
2343 AM_CONDITIONAL([HAVE_MATROSKA], [test "${have_matroska}" = "yes"])
2346 dnl  modplug demux plugin
2348 AC_ARG_ENABLE([mod],
2349   AS_HELP_STRING([--disable-mod],
2350     [do not use libmodplug (default auto)]))
2351 if test "${enable_mod}" != "no" ; then
2352     PKG_CHECK_MODULES(LIBMODPLUG, [libmodplug >= 0.8.9.0], [
2353           VLC_ADD_PLUGIN([mod])
2354           VLC_ADD_CXXFLAGS([mod],[$LIBMODPLUG_CFLAGS])
2355           VLC_ADD_CFLAGS([mod],[$LIBMODPLUG_CFLAGS]) #modules/demux/mod.c needs CFLAGS_mod, not CXXFLAGS_mod
2356           VLC_ADD_LIBS([mod],[$LIBMODPLUG_LIBS])
2357     ],[
2358        AS_IF([test -n "${enable_mod}"],
2359          [AC_MSG_ERROR([${LIBMODPLUG_PKG_ERRORS}.])],
2360          [AC_MSG_WARN([${LIBMODPLUG_PKG_ERRORS}.])])
2361     ])
2365 dnl  mpc demux plugin
2367 AC_ARG_ENABLE([mpc],
2368   AS_HELP_STRING([--disable-mpc], [do not use libmpcdec (default auto)]))
2369 if test "${enable_mpc}" != "no"
2370 then
2371     AC_CHECK_HEADERS([mpcdec/mpcdec.h], [
2372     VLC_ADD_PLUGIN([mpc])
2373     VLC_ADD_LIBS([mpc],[-lmpcdec])])
2377 dnl  Codec plugins
2380 EXTEND_HELP_STRING([Codec plugins:])
2383 dnl shine encoder plugin
2385 PKG_ENABLE_MODULES_VLC([SHINE], [], [shine >= 3.0.0], [MPEG Audio Layer 3 encoder], [auto], [], [], [])
2389 dnl openmax il codec plugin
2391 AC_ARG_ENABLE([omxil],
2392   AS_HELP_STRING([--enable-omxil], [openmax il codec module (default disabled)]))
2393 if test "${enable_omxil}" = "yes"
2394 then
2395   VLC_ADD_PLUGIN([omxil])
2399 dnl raspberry pi openmax il configuration
2401 AC_ARG_ENABLE([rpi-omxil],
2402   AS_HELP_STRING([--enable-rpi-omxil], [openmax il configured for raspberry pi (default disabled)]))
2403 if test "${enable_rpi_omxil}" = "yes"
2404 then
2405   VLC_ADD_PLUGIN([omxil])
2406   VLC_ADD_CFLAGS([omxil],[-DRPI_OMX])
2410 dnl CrystalHD codec plugin
2412 AC_ARG_ENABLE([crystalhd],
2413   AS_HELP_STRING([--enable-crystalhd], [crystalhd codec plugin (default auto)]))
2414 if test "${enable_crystalhd}" != "no"; then
2415     AC_CHECK_HEADER(libcrystalhd/libcrystalhd_if.h, [
2416       VLC_ADD_PLUGIN([crystalhd])
2417       VLC_ADD_LIBS([crystalhd], [-lcrystalhd])
2418     ],[
2419       if test "${SYS}" = "mingw32" ; then
2420         AC_CHECK_HEADERS([libcrystalhd/bc_dts_defs.h], [
2421           VLC_ADD_PLUGIN([crystalhd])
2422           AC_CHECK_HEADERS([libcrystalhd/bc_drv_if.h], [
2423             VLC_ADD_LIBS([crystalhd], [-lbcmDIL])
2424             ])
2425         ],[
2426           AS_IF([test x"${enable_crystalhd}" = "xyes"],
2427                 [AC_MSG_ERROR("Could not find CrystalHD development headers")],
2428                 [AC_MSG_WARN("Could not find CrystalHD development headers")])
2429         ],[#define __LINUX_USER__
2430                #include <libcrystalhd/bc_dts_types.h>
2431         ])
2432       fi
2433     ],[
2434        #include <libcrystalhd/bc_dts_types.h>
2435       ])
2439 dnl  mad plugin
2441 have_mad="no"
2442 MAD_CFLAGS=""
2443 MAD_LIBS=""
2445 AC_ARG_WITH(mad, AS_HELP_STRING([--with-mad=PATH], [path to libmad]), [
2446   enable_mad="yes"
2447 ], [
2448   with_mad="no"
2450 AS_IF([test "${with_mad}" != "no"], [
2451   MAD_CFLAGS="-I${with_mad}/include"
2452   MAD_LIBS="-L${with_mad}/lib"
2455 AC_ARG_ENABLE([mad],
2456   AS_HELP_STRING([--enable-mad], [libmad module (default enabled)]))
2457 AS_IF([test "${enable_mad}" != "no"], [
2458   VLC_SAVE_FLAGS
2459   CPPFLAGS="${CPPFLAGS} ${MAD_CFLAGS}"
2460   LDFLAGS="${LDFLAGS} ${MAD_LIBS}"
2461   AC_CHECK_HEADERS([mad.h], [
2462     AC_CHECK_LIB([mad], [mad_bit_init], [
2463       have_mad="yes"
2464       MAD_LIBS="${MAD_LIBS} -lmad"
2465     ])
2466   ])
2467   VLC_RESTORE_FLAGS
2468   AS_IF([test -n "$enable_mad" -a "${have_mad}" = "no"], [
2469     AC_MSG_ERROR([Could not find libmad. Install it or pass --disable-mad to disable it.])
2470   ])
2472 AC_SUBST([MAD_CFLAGS])
2473 AC_SUBST([MAD_LIBS])
2474 AM_CONDITIONAL([HAVE_MAD], [test "${have_mad}" = "yes"])
2476 dnl  mpg123 plugin
2479 PKG_ENABLE_MODULES_VLC([MPG123], [mpg123], [libmpg123], [libmpg123 decoder support], [auto])
2482 dnl gstreamer stuff
2484 AC_ARG_ENABLE([gst-decode],
2485   AS_HELP_STRING([--enable-gst-decode], [GStreamer based decoding support (currently supports only video decoding) (default auto)]))
2487 have_gst_decode="no"
2488 AS_IF([test "${enable_gst_decode}" != "no"], [
2489   PKG_CHECK_MODULES([GST_APP], [gstreamer-app-1.0], [
2490     PKG_CHECK_MODULES([GST_VIDEO], [gstreamer-video-1.0], [
2491       have_gst_decode="yes"
2492     ], [
2493       AC_MSG_WARN([${GST_VIDEO_PKG_ERRORS}. GStreamer decoder module will not be built.])
2494     ])
2495   ], [
2496     AC_MSG_WARN([${GST_APP_PKG_ERRORS}. GStreamer modules will not be built.])
2497   ])
2499 AM_CONDITIONAL([HAVE_GST_DECODE], [test "${have_gst_decode}" = "yes"])
2502 dnl  avcodec decoder/encoder plugin
2504 AC_ARG_ENABLE([merge-ffmpeg],
2505 AS_HELP_STRING([--enable-merge-ffmpeg], [merge FFmpeg-based plugins (default disabled)]),, [
2506   enable_merge_ffmpeg="no"
2508 AM_CONDITIONAL([MERGE_FFMPEG], [test "$enable_merge_ffmpeg" != "no"])
2510 AC_MSG_CHECKING([for libavutil variant])
2511 PKG_CHECK_EXISTS([libavutil], [
2512   libavutil_version="$(${PKG_CONFIG} --modversion libavutil)"
2513   libavutil_micro="${libavutil_version##*.}"
2514   AS_IF([test ${libavutil_micro} -le 99], [
2515     avfork="libav"
2516   ], [
2517     avfork="ffmpeg"
2518   ])
2519 ], [
2520   avfork="none"
2522 AC_MSG_RESULT([${avfork}])
2524 AC_ARG_ENABLE([avcodec],
2525 AS_HELP_STRING([--enable-avcodec], [libavcodec codec (default enabled)]))
2526 AS_IF([test "${enable_avcodec}" != "no"], [
2527   dnl We need >=57.16.0 from libav or >=57.37.100 from ffmpeg
2528   case "${avfork}" in
2529     libav) av_codec_ver="57.16.0" ;;
2530     dnl 05f66706d182eb0c36af54d72614bf4c33e957a9  includes libavutil 55.9.0
2531     ffmpeg) av_codec_ver="57.37.100" ;;
2532     dnl 7fc329e2dd6226dfecaa4a1d7adf353bf2773726  include libavutil 55.22.101
2533     *) AC_MSG_ERROR([Missing libav or FFmpeg. Pass --disable-avcodec to ignore this error.])
2534   esac
2535   PKG_CHECK_MODULES(AVCODEC,[libavcodec >= ${av_codec_ver} libavutil >= 55.9.0], [
2536     VLC_SAVE_FLAGS
2537     CPPFLAGS="${CPPFLAGS} ${AVCODEC_CFLAGS}"
2538     CFLAGS="${CFLAGS} ${AVCODEC_CFLAGS}"
2539     AC_CHECK_HEADERS([libavcodec/avcodec.h])
2540     AC_CHECK_HEADERS([libavutil/avutil.h])
2541     VLC_RESTORE_FLAGS
2542     have_avcodec="yes"
2543   ],[
2544     AC_MSG_ERROR([${AVCODEC_PKG_ERRORS}. Pass --disable-avcodec to ignore this error.])
2545   ])
2546 ], [
2547   have_avcodec="no"
2549 AM_CONDITIONAL([HAVE_AVCODEC], [test "${have_avcodec}" != "no"])
2552 dnl libva needs avcodec
2554 AC_ARG_ENABLE([libva],
2555   AS_HELP_STRING([--enable-libva], [VAAPI GPU decoding support (libVA) (default auto)]))
2557 AS_IF([test "${enable_libva}" = "yes" -a "${have_avcodec}" != "yes" ], [
2558   AC_MSG_ERROR([--enable-libva and --disable-avcodec options are mutually exclusive. Use --enable-avcodec.])
2561 have_vaapi="no"
2562 have_vaapi_drm="no"
2563 have_vaapi_x11="no"
2564 have_vaapi_wl="no"
2565 AS_IF([test "${enable_libva}" != "no"], [
2566   PKG_CHECK_MODULES([LIBVA], [libva >= 0.38], [
2567     have_vaapi="yes"
2568   ], [
2569     AS_IF([test -n "${enable_libva}"], [
2570       AC_MSG_ERROR([${LIBVA_PKG_ERRORS}.])
2571     ], [
2572       AC_MSG_WARN([${LIBVA_PKG_ERRORS}.])
2573     ])
2574   ])
2575   PKG_CHECK_MODULES([LIBVA_DRM], [libva-drm], [
2576     have_vaapi_drm="yes"
2577   ], [
2578     AC_MSG_WARN([${LIBVA_DRM_PKG_ERRORS}.])
2579   ])
2580   PKG_CHECK_MODULES(LIBVA_X11, [libva-x11], [
2581     have_vaapi_x11="yes"
2582   ], [
2583     AC_MSG_WARN([${LIBVA_X11_PKG_ERRORS}.])
2584   ])
2585   PKG_CHECK_MODULES(LIBVA_WL, [libva-wayland], [
2586     have_vaapi_wl="yes"
2587   ], [
2588     AC_MSG_WARN([${LIBVA_WL_PKG_ERRORS}.])
2589   ])
2591 AM_CONDITIONAL([HAVE_VAAPI], [test "${have_vaapi}" = "yes"])
2592 AM_CONDITIONAL([HAVE_VAAPI_DRM], [test "${have_vaapi_drm}" = "yes"])
2593 AM_CONDITIONAL([HAVE_VAAPI_X11], [test "${have_vaapi_x11}" = "yes"])
2594 AM_CONDITIONAL([HAVE_VAAPI_WL], [test "${have_vaapi_wl}" = "yes"])
2596 have_avcodec_vaapi="no"
2597 AS_IF([test "${have_vaapi}" = "yes" -a "${have_avcodec}" = "yes"], [
2598   VLC_SAVE_FLAGS
2599   CPPFLAGS="${CPPFLAGS} ${AVCODEC_CFLAGS}"
2600   CFLAGS="${CFLAGS} ${AVCODEC_CFLAGS}"
2601   AC_CHECK_HEADERS([libavcodec/vaapi.h], [
2602     AC_MSG_NOTICE([VA API acceleration activated])
2603     have_avcodec_vaapi="yes"
2604   ],[
2605     AS_IF([test -n "${enable_libva}"], [
2606       AC_MSG_ERROR([libva is present but libavcodec/vaapi.h is missing])
2607     ], [
2608       AC_MSG_WARN([libva is present but libavcodec/vaapi.h is missing ])
2609     ])
2610   ])
2611   VLC_RESTORE_FLAGS
2613 AM_CONDITIONAL([HAVE_AVCODEC_VAAPI], [test "${have_avcodec_vaapi}" = "yes"])
2616 dnl dxva2 needs avcodec
2618 AC_ARG_ENABLE([dxva2],
2619   AS_HELP_STRING([--enable-dxva2], [DxVA2 GPU decoding support (default auto)]))
2621 have_avcodec_dxva2="no"
2622 AS_IF([test "${enable_dxva2}" != "no"], [
2623   if test "${SYS}" = "mingw32"; then
2624   AS_IF([test "x${have_avcodec}" = "xyes"], [
2625     AC_CHECK_HEADERS([dxva2api.h],
2626       [
2627         AC_CHECK_HEADERS([libavcodec/dxva2.h], [
2628            AC_MSG_NOTICE([DxVA2 acceleration activated])
2629            have_avcodec_dxva2="yes"
2630         ],[
2631     AS_IF([test "${enable_dxva2}" = "yes"],
2632           [AC_MSG_ERROR([dxva2 is present but libavcodec/dxva2.h is missing])],
2633               [AC_MSG_WARN([dxva2 is present but libavcodec/dxva2.h is missing ])])
2634         ], [#undef _WIN32_WINNT
2635             /* DXVA2 is only available in Vista and above */
2636             #define _WIN32_WINNT 0x600])
2637       ],[
2638     AS_IF([test "${enable_dxva2}" = "yes"],
2639               [AC_MSG_ERROR([Could not find required dxva2api.h])],
2640               [AC_MSG_WARN([dxva2api.h not found])])
2641       ],[#include <d3d9.h>])
2642   ],[
2643     AS_IF([test "x${enable_dxva2}" != "x"], [
2644       AC_MSG_ERROR([--enable-dxva2 and --disable-avcodec options are mutually exclusive.])
2645     ])
2646   ])
2647   fi
2649 AM_CONDITIONAL([HAVE_AVCODEC_DXVA2], [test "${have_avcodec_dxva2}" = "yes"])
2652 dnl d3d11va needs avcodec
2654 AC_ARG_ENABLE([d3d11va],
2655   AS_HELP_STRING([--enable-d3d11va], [D3D11 GPU decoding support (default auto)]))
2657 have_avcodec_d3d11va="no"
2658 AS_IF([test "${enable_d3d11va}" != "no"], [
2659   if test "${SYS}" = "mingw32"; then
2660   AS_IF([test "x${have_avcodec}" = "xyes"], [
2661         AC_CHECK_TYPES([ID3D11VideoDecoder],
2662           [
2663             AC_CHECK_HEADERS([dxva2api.h],
2664               [
2665                 AC_CHECK_HEADERS([libavcodec/d3d11va.h], [
2666                    AC_MSG_NOTICE([D3D11 acceleration activated])
2667                    AC_DEFINE([HAVE_AVCODEC_D3D11VA], [1], [Define if the d3d11va module is built])
2668                    have_avcodec_d3d11va="yes"
2669                 ],[
2670                   AS_IF([test "${enable_d3d11va}" = "yes"],
2671                     [AC_MSG_ERROR([d3d11va is present but libavcodec/d3d11va.h is missing])],
2672                         [AC_MSG_WARN([d3d11va is present but libavcodec/d3d11va.h is missing ])])
2673                   ], [#undef _WIN32_WINNT
2674                       /* D3D11 is only available in Vista and above */
2675                       #define _WIN32_WINNT 0x600])
2676                   ],[
2677                     AS_IF([test "${enable_d3d11va}" = "yes"],
2678                           [AC_MSG_ERROR([Could not find required dxva2api.h])],
2679                           [AC_MSG_WARN([dxva2api.h not found])])
2680                   ],[#include <d3d9.h>])
2681           ],[
2682             AS_IF([test "${enable_d3d11va}" = "yes"],
2683                   [AC_MSG_ERROR([Could not find required ID3D11VideoDecoder in d3d11.h])],
2684                   [AC_MSG_WARN([ID3D11VideoDecoder not found])])
2685           ], [#include <d3d11.h>])
2686   ],[
2687     AS_IF([test "x${enable_d3d11va}" != "x"], [
2688       AC_MSG_ERROR([--enable-d3d11va and --disable-avcodec options are mutually exclusive.])
2689     ])
2690   ])
2691   fi
2693 AM_CONDITIONAL([HAVE_AVCODEC_D3D11VA], [test "${have_avcodec_d3d11va}" = "yes"])
2696 dnl DXGI debug
2698 AC_CHECK_HEADERS([dxgidebug.h dxgi1_6.h])
2701 dnl  avformat demuxer/muxer plugin
2704 AC_ARG_ENABLE([avformat],
2705 AS_HELP_STRING([--enable-avformat], [libavformat containers (default enabled)]),, [
2706   enable_avformat="${have_avcodec}"
2708 have_avformat="no"
2709 AS_IF([test "${enable_avformat}" != "no"], [
2710   PKG_CHECK_MODULES(AVFORMAT,[libavformat >= 53.21.0 libavcodec libavutil], [
2711       have_avformat="yes"
2712       VLC_SAVE_FLAGS
2713       CPPFLAGS="${CPPFLAGS} ${AVFORMAT_CFLAGS}"
2714       CFLAGS="${CFLAGS} ${AVFORMAT_CFLAGS}"
2715       AC_CHECK_HEADERS([libavformat/avformat.h libavformat/avio.h])
2716       AC_CHECK_HEADERS([libavcodec/avcodec.h])
2717       AC_CHECK_HEADERS([libavutil/avutil.h])
2718       AS_IF([test "$enable_merge_ffmpeg" = "no"], [
2719         have_avformat="no"
2720       ])
2721       VLC_RESTORE_FLAGS
2722     ],[
2723       AC_MSG_ERROR([${AVFORMAT_PKG_ERRORS}. Pass --disable-avformat to ignore this error.])
2724   ])
2726 AM_CONDITIONAL([HAVE_AVFORMAT], [test "${enable_avformat}" != "no"])
2729 dnl  swscale image scaling and conversion plugin
2732 AC_ARG_ENABLE([swscale],
2733   AS_HELP_STRING([--enable-swscale],[libswscale image scaling and conversion
2734           (default enabled)]))
2735 if test "${enable_swscale}" != "no"
2736 then
2737   PKG_CHECK_MODULES(SWSCALE,[libswscale],
2738     [
2739       VLC_SAVE_FLAGS
2740       CPPFLAGS="${CPPFLAGS} ${SWSCALE_CFLAGS}"
2741       CFLAGS="${CFLAGS} ${SWSCALE_CFLAGS}"
2742       AC_CHECK_HEADERS([libswscale/swscale.h])
2743       AC_CHECK_HEADERS([libavutil/avutil.h])
2744       VLC_ADD_PLUGIN([swscale])
2745       VLC_ADD_LIBS([swscale],[$SWSCALE_LIBS])
2746       VLC_ADD_CFLAGS([swscale],[$SWSCALE_CFLAGS])
2747       AS_IF([test -n "${ac_cv_ld_bsymbolic}"], [
2748         VLC_ADD_LIBS([swscale],[${ac_cv_ld_bsymbolic}])
2749       ])
2750       VLC_RESTORE_FLAGS
2751     ],[
2752       AC_MSG_ERROR([${SWSCALE_PKG_ERRORS}. Pass --disable-swscale to ignore this error. Proper software scaling and some video chroma conversion will be missing.])
2753   ])
2757 dnl  postproc plugin
2760 AC_ARG_ENABLE([postproc],
2761 AS_HELP_STRING([--enable-postproc], [libpostproc image post-processing (default auto)]))
2762 if test "${enable_postproc}" != "no"
2763 then
2764   PKG_CHECK_MODULES(POSTPROC,[libpostproc libavutil],
2765     [
2766       VLC_SAVE_FLAGS
2767       CPPFLAGS="${CPPFLAGS} ${POSTPROC_CFLAGS}"
2768       CFLAGS="${CFLAGS} ${POSTPROC_CFLAGS}"
2769       AC_CHECK_HEADERS([postproc/postprocess.h])
2770       VLC_ADD_PLUGIN([postproc])
2771       VLC_RESTORE_FLAGS
2772     ],[
2773       AC_MSG_WARN([${POSTPROC_PKG_ERRORS}.])
2774   ])
2778 dnl  faad decoder plugin
2780 AC_ARG_ENABLE([faad],
2781 AS_HELP_STRING([--enable-faad], [faad codec (default auto)]))
2782 have_faad="no"
2783 AS_IF([test "${enable_faad}" != "no"], [
2784   AC_CHECK_HEADERS([neaacdec.h], [
2785     AC_CHECK_LIB([faad], [NeAACDecOpen], [have_faad="yes"],, [$LIBM])
2787     AS_IF([test "${have_faad}" = "yes"], [
2788       VLC_ADD_PLUGIN([faad])
2789       VLC_ADD_LIBS([faad],[-lfaad])
2790     ], [
2791       AS_IF([test "${enable_faad}" = "yes"], [
2792         AC_MSG_ERROR([cannot find FAAD library])
2793       ], [
2794         AC_MSG_WARN([cannot find FAAD library])
2795       ])
2796     ])
2797   ])
2801 dnl  AOM decoder plugin
2803 PKG_ENABLE_MODULES_VLC([AOM], [], [aom], [experimental AV1 codec (default auto)])
2806 dnl  Dav1d decoder plugin
2808 PKG_ENABLE_MODULES_VLC([DAV1D], [], [dav1d], [AV1 decoder (default auto)])
2811 dnl libvpx decoder plugin
2813 AC_ARG_ENABLE([vpx],
2814     AS_HELP_STRING([--enable-vpx],[libvpx VP8/VP9 encoder and decoder (default auto)]))
2815 AS_IF([test "${enable_vpx}" != "no"],[
2816     PKG_CHECK_MODULES([VPX], [vpx >= 1.5.0], [
2817         VLC_ADD_PLUGIN([vpx])
2818         VLC_ADD_CPPFLAGS([vpx], [${VPX_CFLAGS}])
2819         VLC_ADD_LIBS([vpx], [${VPX_LIBS}])
2820         AC_CHECK_LIB([vpx],[vpx_codec_vp8_dx], [
2821             VLC_ADD_CPPFLAGS([vpx], [-DENABLE_VP8_DECODER])
2822         ], [], [${VPX_LIBS}])
2823         AC_CHECK_LIB([vpx],[vpx_codec_vp9_dx], [
2824             VLC_ADD_CPPFLAGS([vpx], [-DENABLE_VP9_DECODER])
2825         ], [], [${VPX_LIBS}])
2826         AC_CHECK_LIB([vpx],[vpx_codec_vp8_cx], [
2827             VLC_ADD_CPPFLAGS([vpx], [-DENABLE_VP8_ENCODER])
2828         ], [], [${VPX_LIBS}])
2829         AC_CHECK_LIB([vpx],[vpx_codec_vp9_cx], [
2830             VLC_ADD_CPPFLAGS([vpx], [-DENABLE_VP9_ENCODER])
2831         ], [], [${VPX_LIBS}])
2832     ], [
2833     AS_IF([test "${enable_vpx}" = "yes"],[
2834         AC_MSG_ERROR([libvpx 1.5.0 or higher was not found])
2835     ])])
2839 dnl twolame encoder plugin
2841 PKG_ENABLE_MODULES_VLC([TWOLAME], [], [twolame], [MPEG Audio Layer 2 encoder], [auto], [], [], [ -DLIBTWOLAME_STATIC])
2844 dnl fdk-aac encoder plugin
2846 PKG_ENABLE_MODULES_VLC([FDKAAC], [], [fdk-aac], [FDK-AAC encoder], [disabled])
2850 dnl A52/AC3 decoder plugin
2852 AC_ARG_ENABLE([a52],
2853   AS_HELP_STRING([--enable-a52], [A/52 support with liba52 (default enabled)]))
2854 if test "${enable_a52}" != "no"
2855 then
2856   AC_ARG_WITH([a52],
2857     AS_HELP_STRING([--with-a52=PATH], [a52 headers and libraries]))
2858     if test -z "${with_a52}"
2859     then
2860       LDFLAGS_test=""
2861       CPPFLAGS_test=""
2862     else
2863       LDFLAGS_test="-L${with_a52}/lib"
2864       CPPFLAGS_test="-I${with_a52}/include"
2865     fi
2866     VLC_SAVE_FLAGS
2867     CPPFLAGS="${CPPFLAGS} ${CPPFLAGS_test} ${CPPFLAGS_a52}"
2868     LDFLAGS="${LDFLAGS} ${LDFLAGS_test} ${LIBS_a52}"
2869     AC_CHECK_HEADERS([a52dec/a52.h], [
2870       AC_CHECK_LIB([a52], [a52_free], [
2871         VLC_ADD_PLUGIN([a52])
2872         VLC_ADD_LIBS([a52],[${LDFLAGS_test} -la52 $LIBM])
2873         VLC_ADD_CPPFLAGS([a52],[${CPPFLAGS_test}])
2874       ],[
2875         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.])
2876         ], [$LIBM])
2877     ],[
2878       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.])
2879     ])
2880     VLC_RESTORE_FLAGS
2884 dnl DTS Coherent Acoustics decoder plugin
2886 PKG_ENABLE_MODULES_VLC([DCA], [dca], [libdca >= 0.0.5], [DTS Coherent Acoustics support with libdca], [auto])
2889 dnl  Flac plugin
2891 PKG_ENABLE_MODULES_VLC([FLAC], [], [flac], [libflac decoder/encoder support], [auto])
2894 dnl  Libmpeg2 plugin
2896 PKG_ENABLE_MODULES_VLC([LIBMPEG2], [], [libmpeg2 > 0.3.2], [libmpeg2 decoder support], [auto])
2899 dnl  Vorbis plugin
2901 PKG_ENABLE_MODULES_VLC([VORBIS], [], [ogg vorbis >= 1.1 vorbisenc >= 1.1], [Vorbis decoder and encoder], [auto])
2904 dnl  Tremor plugin
2906 AC_ARG_ENABLE([tremor],
2907   AS_HELP_STRING([--enable-tremor], [Tremor decoder support (default disabled)]))
2908 if test "${enable_tremor}" = "yes"
2909 then
2910   AC_CHECK_HEADERS([tremor/ivorbiscodec.h], [
2911     VLC_ADD_PLUGIN([tremor])
2912    ],[])
2916 dnl  Speex plugins
2918 PKG_ENABLE_MODULES_VLC([SPEEX], [], [ogg speex >= 1.0.5], [Speex support], [auto])
2919 have_speexdsp="no"
2920 AS_IF([test "${enable_speex}" != "no"], [
2921   PKG_CHECK_MODULES([SPEEXDSP], [speexdsp], [
2922     have_speexdsp="yes"
2923   ], [
2924     AC_MSG_WARN([${SPEEXDSP_PKG_ERRORS}.])
2925   ])
2927 AM_CONDITIONAL([HAVE_SPEEXDSP], [test "$have_speexdsp" = "yes"])
2930 dnl  Opus plugin
2932 PKG_ENABLE_MODULES_VLC([OPUS], [], [ogg opus >= 1.0.3], [Opus support], [auto])
2935 dnl  Ambisonic channel mixer and binauralizer plugin
2937 PKG_ENABLE_MODULES_VLC([SPATIALAUDIO], [], [spatialaudio], [Ambisonic channel mixer and binauralizer], [auto])
2940 dnl  theora decoder plugin
2942 PKG_ENABLE_MODULES_VLC([THEORA], [], [ogg theoradec >= 1.0 theoraenc], [experimental theora codec], [auto])
2945 dnl  OggSpots decoder plugin
2947 PKG_ENABLE_MODULES_VLC([OGGSPOTS], [], [ogg], [experimental OggSpots codec], [auto])
2950 dnl  Daala decoder plugin
2952 PKG_ENABLE_MODULES_VLC([DAALA], [], [daaladec daalaenc], [experimental daala codec], [disabled])
2955 dnl  schroedinger decoder plugin (for dirac format video)
2957 PKG_ENABLE_MODULES_VLC([SCHROEDINGER], [], [schroedinger-1.0 >= 1.0.10], [dirac decoder and encoder using schroedinger], [auto])
2960 dnl  PNG decoder module
2962 AC_ARG_ENABLE([png],
2963   AS_HELP_STRING([--enable-png], [PNG support (default enabled)]))
2964 AS_IF([test "${enable_png}" != "no"], [
2965 AC_CHECK_HEADERS([png.h], [
2966   VLC_SAVE_FLAGS
2967   LDFLAGS="${LDFLAGS} -lz $LIBM"
2968   AC_CHECK_LIB([png], [png_set_alpha_mode], [
2969     VLC_ADD_PLUGIN([png])
2970   ], [], [-lz $LIBM])
2971   VLC_RESTORE_FLAGS
2972   ])
2976 dnl  JPEG decoder module
2978 AC_ARG_ENABLE([jpeg],
2979   AS_HELP_STRING([--enable-jpeg], [JPEG support (default enabled)]))
2980 AS_IF([test "${enable_jpeg}" != "no"], [
2981 AC_CHECK_HEADERS([jpeglib.h], [
2982   VLC_ADD_PLUGIN([jpeg])
2983   ])
2987 dnl  BPG decoder module
2989 AC_ARG_ENABLE([bpg],
2990   AS_HELP_STRING([--enable-bpg], [BPG support (default disabled)]))
2991 AS_IF([test "${enable_bpg}" != "no"], [
2992 AC_CHECK_HEADERS([libbpg.h], [
2993   VLC_ADD_PLUGIN([bpg])
2994   ])
2998 dnl H262 encoder plugin (lib262)
3000 AC_ARG_ENABLE([x262],
3001   AS_HELP_STRING([--enable-x262], [H262 encoding support with static libx262 (default disabled)]))
3002 if test "${enable_x262}" != "no"; then
3003     PKG_CHECK_MODULES(X262, x262, [
3004         VLC_ADD_PLUGIN([x262])
3005         VLC_ADD_LDFLAGS([x262],[${X262_LIBS}])
3006         AS_IF([test -n "${ac_cv_ld_bsymbolic}"], [
3007           VLC_ADD_LIBS([x262],[${av_cv_ld_bsymbolic}])
3008         ])
3009         VLC_ADD_CFLAGS([x262],[${X262_CFLAGS}])
3010         if echo ${X262_LIBS} |grep -q 'pthreadGC2'; then
3011           VLC_ADD_CFLAGS([x262], [-DPTW32_STATIC_LIB])
3012         fi
3013     ], [
3014        if test "${enable_x262}" = "yes"; then
3015         AC_MSG_ERROR([x262 module doesn't work without staticly compiled libx262.a])
3016        fi
3017     ])
3020 dnl x265 encoder
3021 PKG_ENABLE_MODULES_VLC([X265],, [x265], [HEVC/H.265 encoder], [auto])
3024 dnl H264 encoder plugin (using libx264)
3026 AC_ARG_ENABLE([x264],
3027   AS_HELP_STRING([--enable-x264], [H264 encoding support with libx264 (default enabled)]))
3028 if test "${enable_x264}" != "no"; then
3029       PKG_CHECK_MODULES(X264,x264 >= 0.148, [
3030         VLC_ADD_PLUGIN([x264])
3031         VLC_ADD_LIBS([x264],[${X264_LIBS}])
3033         AS_IF([test -n "${ac_cv_ld_bsymbolic}"], [
3034           VLC_ADD_LDFLAGS([x264],[${ac_cv_ld_bsymbolic}])
3035         ])
3037         VLC_ADD_CFLAGS([x264],[${X264_CFLAGS}])
3038         if echo ${X264_LIBS} |grep -q 'pthreadGC2'; then
3039           VLC_ADD_CFLAGS([x264], [-DPTW32_STATIC_LIB])
3040         fi
3041       ],[
3042         if test "${enable_x264}" = "yes"; then
3043             AC_MSG_ERROR([${X264_PKG_ERRORS}: you may get it from http://www.videolan.org/x264.html])
3044           fi
3045       ])
3049 dnl H264 encoder plugin (libx264 > 153)
3051 AC_ARG_ENABLE([x26410b],
3052   AS_HELP_STRING([--enable-x26410b], [H264 10-bit encoding support with libx264 (default enabled)]))
3053 if test "${enable_x26410b}" != "no"; then
3054       PKG_CHECK_MODULES(X26410b,x264 >= 0.153, [
3055         VLC_ADD_PLUGIN([x26410b])
3056         VLC_ADD_LIBS([x26410b],[${X264_LIBS}])
3058         AS_IF([test -n "${ac_cv_ld_bsymbolic}"], [
3059           VLC_ADD_LDFLAGS([x26410b],[${ac_cv_ld_bsymbolic}])
3060         ])
3062         VLC_ADD_CFLAGS([x26410b],[${X264_CFLAGS}])
3063         if echo ${X264_LIBS} |grep -q 'pthreadGC2'; then
3064           VLC_ADD_CFLAGS([x26410b], [-DPTW32_STATIC_LIB])
3065         fi
3066       ],[
3067         if test "${enable_x26410b}" = "yes"; then
3068             AC_MSG_ERROR([${X264_PKG_ERRORS}: you may get it from http://www.videolan.org/x264.html])
3069           fi
3070       ])
3075 dnl Intel QuickSync (aka MediaSDK) H264/H262 encoder
3077 PKG_ENABLE_MODULES_VLC([MFX], [qsv], [libmfx], [Intel QuickSync MPEG4-Part10/MPEG2 (aka H.264/H.262) encoder], [auto])
3080 dnl libfluidsynth (MIDI synthetizer) plugin
3082 PKG_ENABLE_MODULES_VLC([FLUIDSYNTH], [], [fluidsynth >= 1.1.2], [MIDI synthetiser with libfluidsynth], [auto])
3083 PKG_ENABLE_MODULES_VLC([FLUIDLITE], [fluidsynth], [fluidlite], [MIDI synthetiser with libfluidsynth], [auto])
3084 AC_CHECK_HEADERS([fluidlite.h], [AC_SUBST([FLUIDSYNTH_LIBS], ${FLUIDLITE_LIBS})])
3087 dnl Teletext Modules
3088 dnl vbi decoder plugin (using libzbvi)
3089 dnl telx module
3090 dnl uncompatible
3092 AC_ARG_ENABLE([zvbi],
3093   AS_HELP_STRING([--enable-zvbi],[VBI (inc. Teletext) decoding support with
3094                   libzvbi (default enabled)]))
3095 AC_ARG_ENABLE([telx],
3096   AS_HELP_STRING([--enable-telx],[Teletext decoding module (conflicting with
3097                   zvbi) (default enabled if zvbi is absent)]))
3099 AS_IF( [test "${enable_zvbi}" != "no"],[
3100     PKG_CHECK_MODULES(ZVBI, [zvbi-0.2 >= 0.2.28],
3101         [
3102           VLC_ADD_PLUGIN([zvbi])
3103           AC_DEFINE(ZVBI_COMPILED, 1, [Define if the zvbi module is built])
3104           AS_IF( [test "${enable_telx}" = "yes"],[
3105                   AC_MSG_WARN([The zvbi and telx modules are incompatible. Using zvbi.])
3106                   ])
3107         ],[
3108           AC_MSG_WARN([${ZVBI_PKG_ERRORS}. Enabling the telx module instead.])
3109         ])
3110     ])
3111 AS_IF( [test "${enable_telx}" != "no" ],[
3112   VLC_ADD_PLUGIN([telx])
3113   ])
3116 dnl ARIB subtitles rendering module
3118 AC_ARG_ENABLE([aribsub],
3119   AS_HELP_STRING([--enable-aribsub],[ARIB Subtitles support (default enabled)]))
3120 AS_IF( [test "${enable_aribsub}" != "no" ],[
3121   PKG_CHECK_MODULES(ARIBB24, [aribb24 >= 1.0.1], [
3122       have_aribb24="yes"
3123       VLC_ADD_PLUGIN([aribsub])
3124       VLC_ADD_LIBS([aribsub],[-laribb24])
3125       AC_DEFINE(HAVE_ARIBB24, 1, [Define if libaribb24 is available.])
3126     ],[
3127       AC_MSG_WARN(Library [aribb24] needed for [aribsub] was not found)
3128       have_aribb24="no"
3129   ])
3131 AM_CONDITIONAL([HAVE_ARIBB24], [test x"${have_aribb24}" = x"yes"])
3134 dnl ARIB B25
3136 PKG_ENABLE_MODULES_VLC([ARIBB25], [aribcam], [aribb25 >= 0.2.6], [ARIB STD-B25], [auto])
3139 dnl  kate decoder plugin
3141 PKG_ENABLE_MODULES_VLC([KATE], [], [kate >= 0.3.0], [kate codec], [auto])
3144 dnl  tiger rendering for kate decoder plugin
3146 AC_ARG_ENABLE([tiger],
3147 AS_HELP_STRING([--enable-tiger], [Tiger rendering library for Kate streams (default auto)]))
3148 AS_IF([test "${enable_tiger}" != "no"], [
3149   PKG_CHECK_MODULES(TIGER,[tiger >= 0.3.1], [
3150       AC_DEFINE(HAVE_TIGER, 1, [Define if libtiger is available.])],[
3151         AS_IF([test -n "${enable_tiger}"], [
3152           AC_MSG_ERROR([${TIGER_PKG_ERRORS}.])
3153         ])
3154   ])
3158 dnl  check if we can build the css selector engine
3160 AC_ARG_ENABLE([css],
3161 AS_HELP_STRING([--enable-css], [CSS selector engine (default auto)]))
3162 AS_IF([test "${enable_css}" != "no"], [
3163   with_css="yes"
3164   AC_DEFINE(HAVE_CSS, 1, [Define if CSS engine is built])
3166 AM_CONDITIONAL([ENABLE_CSS], [test "${with_css}" = "yes"])
3170 dnl  Video plugins
3173 EXTEND_HELP_STRING([Video plugins:])
3176 dnl  libplacebo support
3178 AC_ARG_ENABLE([libplacebo],
3179   AS_HELP_STRING([--disable-libplacebo],
3180       [disable libplacebo support (default auto)]))
3182 AS_IF([test "$enable_libplacebo" != "no"], [
3183   PKG_CHECK_MODULES([LIBPLACEBO], [libplacebo >= 0.5], [
3184     AC_DEFINE([HAVE_LIBPLACEBO], [1], [Define to 1 if libplacebo is enabled.])
3185     PKG_CHECK_MODULES([LIBPLACEBO], [libplacebo >= 1.7],
3186       [have_libplacebo_vk="yes"], [have_libplacebo_vk="no"])
3187   ], [
3188     AS_IF([test -n "${enable_libplacebo}"], [
3189       AC_MSG_ERROR([${LIBPLACEBO_PKG_ERRORS}.])
3190     ])
3191     enable_libplacebo="no"
3192   ])
3194 AM_CONDITIONAL([HAVE_LIBPLACEBO], [test "$enable_libplacebo" != "no"])
3197 dnl  OpenGL
3199 PKG_CHECK_MODULES([EGL], [egl], [
3200   have_egl="yes"
3201 ], [
3202   have_egl="no"
3204 AM_CONDITIONAL([HAVE_EGL], [test "${have_egl}" = "yes"])
3206 have_gl="no"
3207 PKG_CHECK_MODULES([GL], [gl], [
3208   have_gl="yes"
3209 ], [
3210   AC_MSG_CHECKING([for OpenGL])
3211   AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
3212 #ifdef _WIN32
3213 # include <GL/glew.h>
3214 #endif
3215 #include <GL/gl.h>
3216 ]], [
3217     [int t0 = GL_TEXTURE0;]])
3218   ], [
3219     GL_CFLAGS=""
3220     have_gl="yes"
3221     AS_IF([test "${SYS}" != "mingw32"], [
3222       GL_LIBS="-lGL"
3223     ], [
3224       GL_LIBS="-lopengl32"
3225     ])
3226   ])
3227   AC_MSG_RESULT([${have_gl}])
3229 AM_CONDITIONAL([HAVE_GL], [test "${have_gl}" = "yes"])
3230 AS_IF([test "${have_gl}" = "yes"], [
3231   AC_DEFINE([HAVE_GL], 1, [Defined if having OpenGL])
3234 dnl OpenGL ES 2: depends on EGL 1.1
3235 PKG_ENABLE_MODULES_VLC([GLES2], [], [glesv2], [OpenGL ES v2 support], [disabled])
3238 dnl Vulkan
3240 AC_ARG_ENABLE(vulkan,
3241   [AS_HELP_STRING([--disable-vulkan],
3242       [disable Vulkan support (default auto)])])
3244 AS_IF([test "$enable_vulkan" != "no"], [
3245   AS_IF([test "$have_libplacebo_vk" = "yes"], [
3246     PKG_CHECK_MODULES([VULKAN], [vulkan >= 1.0.26], [
3247       AC_DEFINE([HAVE_VULKAN], [1], [Define to 1 if vulkan is enabled.])
3248     ], [
3249       AS_IF([test -n "${enable_vulkan}"], [
3250         AC_MSG_ERROR([${VULKAN_PKG_ERRORS}.])
3251       ])
3252       enable_vulkan="no"
3253     ])
3254   ], [
3255     AS_IF([test -n "${enable_vulkan}"], [
3256       AC_MSG_ERROR([Vulkan support requires libplacebo 1.7 as well. Do not use --disable-libplacebo.])
3257     ])
3258     enable_vulkan="no"
3259   ])
3261 AM_CONDITIONAL(HAVE_VULKAN, [test "$enable_vulkan" != "no"])
3264 dnl  Xlib
3267 AC_PATH_XTRA()
3268 AC_CHECK_HEADERS([X11/Xlib.h])
3271 dnl  X C Bindings modules
3273 AC_ARG_ENABLE([xcb],
3274   AS_HELP_STRING([--enable-xcb], [X11 support with XCB (default enabled)]),, [
3275   AS_IF([test "${SYS}" != "mingw32" -a "${SYS}" != "darwin"], [
3276     enable_xcb="yes"
3277   ], [
3278     enable_xcb="no"
3279   ])
3282 have_xcb="no"
3283 have_xkbcommon_x11="no"
3284 have_xcb_keysyms="no"
3285 AS_IF([test "${enable_xcb}" != "no"], [
3286   xcb_err=""
3288   dnl libxcb
3289   PKG_CHECK_MODULES([XCB], [xcb >= 1.6],, [
3290     xcb_err="$xcb_err ${XCB_PKG_ERRORS}."])
3291   PKG_CHECK_MODULES([XCB_COMPOSITE], [xcb-composite],, [
3292     xcb_err="$xcb_err ${XCB_COMPOSITE_PKG_ERRORS}."])
3293   PKG_CHECK_MODULES([XCB_RANDR], [xcb-randr >= 1.3],, [
3294     xcb_err="$xcb_err ${XCB_RANDR_PKG_ERRORS}."])
3295   PKG_CHECK_MODULES([XCB_RENDER], [xcb-render],, [
3296     xcb_err="$xcb_err ${XCB_RENDER_PKG_ERRORS}."])
3297   PKG_CHECK_MODULES([XCB_SHM], [xcb-shm >= 1.9.2],, [
3298     xcb_err="$xcb_err ${XCB_SHM_PKG_ERRORS}."])
3299   PKG_CHECK_MODULES([XCB_XKB], [xcb-xkb],, [
3300     xcb_err="$xcb_err ${XCB_XKB_PKG_ERRORS}."])
3302   dnl xproto
3303   PKG_CHECK_MODULES(XPROTO, [xproto],, [
3304     xcb_err="$xcb_err ${XPROTO_PKG_ERRORS}."])
3306   AS_IF([test -n "$xcb_err"], [
3307     AC_MSG_ERROR([$xcb_err Pass --disable-xcb to skip X11 support.])
3308   ])
3310   dnl xkbcommon
3311   PKG_CHECK_MODULES([XKBCOMMON_X11], [xkbcommon-x11], [
3312     have_xkbcommon_x11="yes"
3313   ], [
3314     AC_MSG_WARN([${XKBCOMMON_X11_PKG_ERRORS}. Hotkeys are disabled.])
3315   ])
3317   dnl xcb-utils
3318   PKG_CHECK_MODULES([XCB_KEYSYMS], [xcb-keysyms >= 0.3.4], [
3319     have_xcb_keysyms="yes"
3320   ], [
3321     AC_MSG_WARN([${XCB_KEYSYMS_PKG_ERRORS}. Global hotkeys are disabled.])
3322   ])
3324   have_xcb="yes"
3326 AM_CONDITIONAL([HAVE_XCB], [test "${have_xcb}" = "yes"])
3327 AM_CONDITIONAL([HAVE_XKBCOMMON_X11], [test "${have_xkbcommon_x11}" = "yes"])
3328 AM_CONDITIONAL([HAVE_XCB_KEYSYMS], [test "${have_xcb_keysyms}" = "yes"])
3332 dnl VDPAU needs X11
3334 AC_ARG_ENABLE([vdpau],
3335   [AS_HELP_STRING([--enable-vdpau], [VDPAU hardware support (default auto)])])
3336 have_vdpau="no"
3337 AS_IF([test "${enable_vdpau}" != "no"], [
3338   PKG_CHECK_MODULES([VDPAU], [vdpau >= 0.6], [
3339     have_vdpau="yes"
3340     AS_IF([test "${no_x}" = "yes"], [
3341       AC_MSG_ERROR([VDPAU requires Xlib (X11).])
3342     ])
3343   ], [
3344     AS_IF([test -n "${enable_vdpau}"], [
3345       AC_MSG_ERROR([${VDPAU_PKG_ERRORS}.])
3346     ])
3347   ])
3349 AM_CONDITIONAL([HAVE_VDPAU], [test "${have_vdpau}" = "yes"])
3351 have_avcodec_vdpau="no"
3352 AS_IF([test "${have_vdpau}" = "yes" -a "${have_avcodec}" = "yes"], [
3353   case "${avfork}" in
3354     libav) av_vdpau_ver="56.10.0" ;;
3355     ffmpeg) av_vdpau_ver="56.19.100" ;;
3356   esac
3357   PKG_CHECK_EXISTS([libavcodec >= ${av_vdpau_ver}], [
3358     have_avcodec_vdpau="yes"
3359     AC_MSG_NOTICE([VDPAU decoding acceleration activated])
3360   ], [
3361     AS_IF([test -n "${enable_vdpau}"], [
3362       AC_MSG_ERROR([libavcodec >= 56.10.0 is required for VDPAU decoding.])
3363     ], [
3364       AC_MSG_WARN([libavcodec >= 56.10.0 are required for VDPAU decoding.])
3365     ])
3366   ])
3368 AM_CONDITIONAL([HAVE_AVCODEC_VDPAU], [test "${have_avcodec_vdpau}" = "yes"])
3372 dnl  Wayland
3374 AC_ARG_ENABLE([wayland],
3375   AS_HELP_STRING([--enable-wayland], [Wayland support (default auto)]))
3377 have_wayland="no"
3378 AS_IF([test "${enable_wayland}" != "no"], [
3379   wl_err=""
3381   dnl wayland
3382   PKG_CHECK_MODULES([WAYLAND_CLIENT], [wayland-client >= 1.5.91],, [
3383     wl_err="$wl_err ${WAYLAND_CLIENT_PKG_ERRORS}."
3384   ])
3385   PKG_CHECK_MODULES([WAYLAND_CURSOR], [wayland-cursor],, [
3386     wl_err="$wl_err ${WAYLAND_CURSOR_PKG_ERRORS}."
3387   ])
3388   PKG_CHECK_MODULES([WAYLAND_EGL], [wayland-egl],, [
3389     wl_err="$wl_err ${WAYLAND_EGL_PKG_ERRORS}."
3390   ])
3391   PKG_CHECK_MODULES([WAYLAND_SCANNER], [wayland-scanner >= 1.15], [
3392     WAYLAND_SCANNER="$(${PKG_CONFIG} wayland-scanner --variable wayland_scanner)"
3393   ], [
3394     wl_err="$wl_err ${WAYLAND_SCANNER_PKG_ERRORS}."
3395   ])
3397   dnl wayland-protocols
3398   PKG_CHECK_MODULES([WAYLAND_PROTOCOLS], [wayland-protocols >= 1.15], [
3399     WAYLAND_PROTOCOLS="$(${PKG_CONFIG} wayland-protocols --variable pkgdatadir)"
3400   ], [
3401     wl_err="$wl_err ${WAYLAND_PROTOCOLS_PKG_ERRORS}."
3402   ])
3404   AS_IF([test -n "$wl_err"], [
3405     AS_IF([test -n "$enable_wayland"], [
3406       AC_MSG_ERROR([$wl_err])
3407     ], [
3408       AC_MSG_WARN([$wl_err])
3409     ])
3410   ], [
3411     have_wayland="yes"
3412   ])
3414   dnl xkbcommon
3415   PKG_CHECK_MODULES([XKBCOMMON], [xkbcommon], [
3416     have_xkbcommon="yes"
3417   ], [
3418     AC_MSG_WARN([${XKBCOMMON_PKG_ERRORS}. Hotkeys are disabled.])
3419   ])
3421 AM_CONDITIONAL([HAVE_WAYLAND], [test "${have_wayland}" = "yes"])
3422 AC_SUBST([WAYLAND_PROTOCOLS])
3423 AC_SUBST([WAYLAND_SCANNER])
3424 AM_CONDITIONAL([HAVE_XKBCOMMON], [test "${have_xkbcommon}" = "yes"])
3428 dnl  SDL image decoder module
3430 AC_ARG_ENABLE([sdl-image],
3431   AS_HELP_STRING([--enable-sdl-image], [SDL image support (default enabled)]))
3432 AS_IF([test "${enable_sdl_image}" != "no"],[
3433   PKG_CHECK_MODULES(SDL_IMAGE, [SDL_image >= 1.2.10], [
3434     VLC_ADD_PLUGIN([sdl_image])
3435   ], [
3436     AC_MSG_WARN([${SDL_IMAGE_PKG_ERRORS}. You should install it alongside your SDL package.])
3437   ])
3441 dnl  freetype module
3443 AC_ARG_ENABLE([freetype],
3444   AS_HELP_STRING([--enable-freetype],   [freetype support   (default auto)]))
3445 AC_ARG_ENABLE([fribidi],
3446   AS_HELP_STRING([--enable-fribidi],    [fribidi support    (default auto)]))
3447 AC_ARG_ENABLE([harfbuzz],
3448   AS_HELP_STRING([--enable-harfbuzz],   [harfbuzz support   (default auto)]))
3449 AC_ARG_ENABLE([fontconfig],
3450   AS_HELP_STRING([--enable-fontconfig], [fontconfig support (default auto)]))
3452 AC_ARG_WITH([default-font],
3453     AS_HELP_STRING([--with-default-font=PATH],
3454         [Path to the default font]),
3455         [AC_DEFINE_UNQUOTED([DEFAULT_FONT_FILE],
3456             "$withval", [Default font])])
3457 AC_ARG_WITH([default-monospace-font],
3458     AS_HELP_STRING([--with-default-monospace-font=PATH],
3459         [Path to the default font]),
3460         [AC_DEFINE_UNQUOTED([DEFAULT_MONOSPACE_FONT_FILE],
3461             "$withval", [Default monospace font])])
3463 AC_ARG_WITH([default-font-family],
3464     AS_HELP_STRING([--with-default-font-family=NAME],
3465         [Name of the default font family]),
3466         [AC_DEFINE_UNQUOTED([DEFAULT_FAMILY],
3467             "$withval", [Default font family])])
3468 AC_ARG_WITH([default-monospace-font-family],
3469     AS_HELP_STRING([--with-default-monospace-font-family=NAME],
3470         [Name of the default font family]),
3471         [AC_DEFINE_UNQUOTED([DEFAULT_MONOSPACE_FAMILY],
3472             "$withval", [Default monospace font family])])
3474 have_freetype="no"
3475 have_fontconfig="no"
3476 have_fribidi="no"
3477 have_harfbuzz="no"
3479 if test "${enable_freetype}" != "no"; then
3480    PKG_CHECK_MODULES(FREETYPE, freetype2, [
3481       have_freetype="yes"
3482       VLC_ADD_CPPFLAGS([skins2],[${FREETYPE_CFLAGS}])
3483       VLC_ADD_LIBS([skins2],[${FREETYPE_LIBS}])
3485     dnl fontconfig support
3486     AS_IF([test "${enable_fontconfig}" != "no" -a "${SYS}" != "mingw32" -a "${SYS}" != "darwin"], [
3487       PKG_CHECK_MODULES(FONTCONFIG, [fontconfig >= 2.11], [
3488         have_fontconfig="yes"
3489       ], [
3490         AC_MSG_WARN([${FONTCONFIG_PKG_ERRORS}. Styles will be disabled in FreeType.])
3491       ])
3492     ])
3494       dnl fribidi support
3495       if test "${enable_fribidi}" != "no"; then
3496         PKG_CHECK_MODULES(FRIBIDI, fribidi, [
3497           have_fribidi="yes"
3498           VLC_ADD_CPPFLAGS([skins2], [${FRIBIDI_CFLAGS} -DHAVE_FRIBIDI])
3499           VLC_ADD_LIBS([skins2], [${FRIBIDI_LIBS}])
3500         ],[AC_MSG_WARN([${FRIBIDI_PKG_ERRORS}. Bidirectional text and complex scripts (Arabic, Farsi, Thai...) will be disabled in FreeType.])])
3501       fi
3503       dnl harfbuzz support
3504       if test "${have_fribidi}" != "no"; then
3505         if test "${enable_harfbuzz}" != "no"; then
3506           PKG_CHECK_MODULES(HARFBUZZ, harfbuzz, [
3507             have_harfbuzz="yes"
3508             VLC_ADD_CPPFLAGS([skins2], [${HARFBUZZ_CFLAGS} -DHAVE_HARFBUZZ])
3509             VLC_ADD_LIBS([skins2], [${HARFBUZZ_LIBS}])
3510           ],[AC_MSG_WARN([${HARFBUZZ_PKG_ERRORS}. Support for complex scripts (Arabic, Farsi, Thai...) will be disabled in FreeType.])])
3511         fi
3512       fi
3513   ],[
3514   AS_IF([test -n "${enable_freetype}"],[
3515     AC_MSG_ERROR([${FREETYPE_PKG_ERRORS}. Install FreeType2 development or configure with --disable-freetype.])
3516     ])
3517   ])
3520 AM_CONDITIONAL([HAVE_FREETYPE], [test "${have_freetype}" = "yes"])
3521 AM_CONDITIONAL([HAVE_FONTCONFIG], [test "${have_fontconfig}" = "yes"])
3522 AM_CONDITIONAL([HAVE_FRIBIDI], [test "${have_fribidi}" = "yes"])
3523 AM_CONDITIONAL([HAVE_HARFBUZZ], [test "${have_harfbuzz}" = "yes"])
3526 dnl libass subtitle rendering module
3528 AC_ARG_ENABLE([libass],
3529   AS_HELP_STRING([--enable-libass], [Subtitle support using libass (default enabled)]))
3530 AS_IF( [test "${enable_libass}" != "no"], [
3531   PKG_CHECK_MODULES(LIBASS, [libass >= 0.9.8],
3532       [
3533         VLC_ADD_PLUGIN([libass])
3535         if test "${have_fontconfig}" != "no"; then
3536             VLC_ADD_CPPFLAGS([libass],[-DHAVE_FONTCONFIG])
3537             VLC_ADD_LIBS([libass],[${FONTCONFIG_LIBS}])
3538         fi
3539       ],[
3540         AC_MSG_WARN([${LIBASS_PKG_ERRORS}.])
3541       ])
3542   ])
3545 dnl SAPI (text to Speech renderer for Windows)
3547 AC_LANG_PUSH([C++])
3548 AC_CHECK_TYPES([ISpObjectToken],[
3549               have_sapi="yes"
3550             ],[AC_MSG_WARN([sapi.h not found. Text to Speech renderer for Windows disabled])],
3551               [#include <windows.h>
3552                #include <sapi.h>
3553                #include <sphelper.h>])
3554 AM_CONDITIONAL([HAVE_SAPI], [test "${have_sapi}" = "yes"])
3555 AC_LANG_POP([C++])
3558 dnl  SVG module (text rendering and image decoding)
3560 PKG_ENABLE_MODULES_VLC([SVG], [], [librsvg-2.0 >= 2.9.0], [SVG rendering library],[auto])
3561 PKG_ENABLE_MODULES_VLC([SVGDEC], [], [librsvg-2.0 >= 2.9.0 cairo >= 1.13.1], [SVG image decoder library],[auto])
3564 dnl  Windows DirectX module
3567 AC_ARG_ENABLE([directx],
3568   AS_HELP_STRING([--enable-directx],
3569     [Microsoft DirectX support (default enabled on Windows)]),, [
3570   AS_IF([test "${SYS}" = "mingw32"], [
3571     enable_directx="yes"
3572   ], [
3573     enable_directx="no"
3574   ])
3576 AS_IF([test "${enable_directx}" != "no"], [
3577   dnl OpenGL
3578   AC_CHECK_HEADERS([GL/glew.h], [
3579     AC_CHECK_HEADERS([GL/wglew.h], [
3580         VLC_ADD_PLUGIN([glwin32 wgl])
3581       ],, [
3582         #include <windows.h>
3583         #include <GL/glew.h>
3584       ])],, [
3585       #include <windows.h>
3586    ])
3588   dnl Direct3D11
3589   AC_CHECK_HEADERS([d3d11.h], [
3590     VLC_ADD_PLUGIN([direct3d11 direct3d11_filters])
3591   ])
3593   dnl Direct3D9
3594   AC_CHECK_HEADERS([d3d9.h], [
3595     VLC_ADD_PLUGIN([direct3d9])
3596     AC_CHECK_HEADERS([d3dx9effect.h])
3598     AC_PREPROC_IFELSE([AC_LANG_PROGRAM(
3599         [[#define COBJMACROS
3600           #include <d3d9.h>
3601           #include <dxva2api.h>
3602           #ifndef IDirectXVideoProcessorService_GetVideoProcessorDeviceGuids
3603           # error dxva2 too old
3604           #endif
3605         ]],[[;]])
3606       ],[
3607         VLC_ADD_PLUGIN([direct3d9_filters])
3608       ],
3609       [AC_MSG_WARN([Could not find required IDirectXVideoDecoder in dxva2api.h])])
3611   ])
3615 dnl  Linux framebuffer module
3617 AC_CHECK_HEADER([linux/fb.h], [
3618   VLC_ADD_PLUGIN([fb])
3622 dnl  Linux kernel mode setting module
3624 PKG_ENABLE_MODULES_VLC([KMS], [], [libdrm >= 2.4.83], [Linux kernel mode setting output], [auto])
3627 dnl  libcaca plugin
3629 PKG_ENABLE_MODULES_VLC([CACA], [], [caca >= 0.99.beta14], [libcaca output],[auto])
3632 dnl  OS/2 KVA plugin
3634 AC_ARG_ENABLE([kva],
3635   AS_HELP_STRING([--enable-kva],
3636     [support the K Video Accelerator KVA (default enabled on OS/2)]),, [
3637   AS_IF([test "$SYS" = "os2"], [
3638     enable_kva="yes"
3639   ])
3641 have_kva="no"
3642 KVA_LIBS=""
3643 AS_IF([test "$enable_kva" != "no"], [
3644   AC_CHECK_HEADERS([kva.h], [
3645     have_kva="yes"
3646     AC_CHECK_LIB([kva], [main], [
3647       KVA_LIBS="-lkva"
3648     ])
3649   ])
3651 AC_SUBST([KVA_LIBS])
3652 AM_CONDITIONAL([HAVE_KVA], [test "${have_kva}" = "yes"])
3655 dnl MMAL plugin
3657 AC_ARG_ENABLE([mmal],
3658   AS_HELP_STRING([--enable-mmal],
3659     [Multi-Media Abstraction Layer (MMAL) hardware plugin (default enable)]))
3660 if test "${enable_mmal}" != "no"; then
3661   VLC_SAVE_FLAGS
3662   LDFLAGS="${LDFLAGS} -L/opt/vc/lib -lvchostif"
3663   CPPFLAGS="${CPPFLAGS} -isystem /opt/vc/include -isystem /opt/vc/include/interface/vcos/pthreads -isystem /opt/vc/include/interface/vmcs_host/linux"
3664   AC_CHECK_HEADERS([interface/mmal/mmal.h],
3665     [ AC_CHECK_LIB([bcm_host], [vc_tv_unregister_callback_full], [
3666         have_mmal="yes"
3667         VLC_ADD_PLUGIN([mmal])
3668         VLC_ADD_LDFLAGS([mmal],[ -L/opt/vc/lib ])
3669         VLC_ADD_CFLAGS([mmal],[ -isystem /opt/vc/include -isystem /opt/vc/include/interface/vcos/pthreads -isystem /opt/vc/include/interface/vmcs_host/linux ])
3670         VLC_ADD_LIBS([mmal],[ -lbcm_host -lmmal -lmmal_core -lmmal_components -lmmal_util -lvchostif ]) ], [
3671           AS_IF([test "${enable_mmal}" = "yes"],
3672             [ AC_MSG_ERROR([Cannot find bcm library...]) ],
3673             [ AC_MSG_WARN([Cannot find bcm library...]) ])
3674           ],
3675         [])
3676     ] , [ AS_IF([test "${enable_mmal}" = "yes"],
3677       [ AC_MSG_ERROR([Cannot find development headers for mmal...]) ],
3678       [ AC_MSG_WARN([Cannot find development headers for mmal...]) ]) ])
3679   VLC_RESTORE_FLAGS
3681 AM_CONDITIONAL([HAVE_MMAL], [test "${have_mmal}" = "yes"])
3684 dnl  Audio plugins
3687 EXTEND_HELP_STRING([Audio plugins:])
3690 dnl  Pulseaudio module
3692 AC_ARG_ENABLE([pulse],
3693   AS_HELP_STRING([--enable-pulse],
3694     [use the PulseAudio client library (default auto)]))
3695 have_pulse="no"
3696 AS_IF([test "${enable_pulse}" != "no"], [
3697   PKG_CHECK_MODULES([PULSE], [libpulse >= 1.0], [
3698     have_pulse="yes"
3699   ], [
3700     AS_IF([test "x${enable_pulse}" != "x"], [
3701       AC_MSG_ERROR([$PULSE_PKG_ERRORS. PulseAudio 1.0 or later required.])
3702     ])
3703   ])
3705 AM_CONDITIONAL([HAVE_PULSE], [test "${have_pulse}" = "yes"])
3708 dnl  ALSA module
3710 AC_ARG_ENABLE([alsa],
3711   AS_HELP_STRING([--enable-alsa],
3712     [support the Advanced Linux Sound Architecture (default auto)]),, [
3713   AS_IF([test "$SYS" = "linux" -a "${have_pulse}" = "no"], [
3714     enable_alsa="yes"
3715   ])
3717 have_alsa="no"
3718 AS_IF([test "${enable_alsa}" != "no"], [
3719   PKG_CHECK_MODULES([ALSA], [alsa >= 1.0.24], [
3720     have_alsa="yes"
3721   ], [
3722     AS_IF([test "x${enable_alsa}" != "x"], [
3723       AC_MSG_ERROR([$ALSA_PKG_ERRORS. alsa-lib 1.0.24 or later required. Pass --disable-alsa to ignore this error.])
3724     ])
3725   ])
3727 AM_CONDITIONAL([HAVE_ALSA], [test "${have_alsa}" = "yes"])
3730 dnl  Open Sound System module
3732 AC_ARG_ENABLE([oss],
3733   AS_HELP_STRING([--enable-oss],
3734     [support the Open Sound System OSS (default enabled on FreeBSD/NetBSD/DragonFlyBSD)]),, [
3735   AS_IF([test "$SYS" = "mingw32" -o "$SYS" = "linux" -o "$SYS" = "openbsd"], [
3736     enable_oss="no"
3737   ])
3739 have_oss="no"
3740 OSS_LIBS=""
3741 AS_IF([test "$enable_oss" != "no"], [
3742   AC_CHECK_HEADERS([soundcard.h sys/soundcard.h], [
3743     have_oss="yes"
3744     AC_CHECK_LIB([ossaudio], [main], [
3745       OSS_LIBS="-lossaudio"
3746     ])
3747   ])
3749 AC_SUBST([OSS_LIBS])
3750 AM_CONDITIONAL([HAVE_OSS], [test "${have_oss}" = "yes"])
3753 dnl  OpenBSD sndio module
3755 AC_ARG_ENABLE([sndio],
3756   AS_HELP_STRING([--disable-sndio],
3757     [support the OpenBSD sndio (default auto)]),, [
3758   AS_IF([test "$SYS" = "openbsd"], [
3759     enable_sndio="yes"
3760   ])
3762 have_sndio="no"
3763 AS_IF([test "$enable_sndio" != "no"], [
3764   AC_CHECK_HEADER([sndio.h], [
3765     have_sndio="yes"
3766   ])
3768 AM_CONDITIONAL([HAVE_SNDIO], [test "${have_sndio}" = "yes"])
3771 dnl  Windows Audio Session plugin
3773 AC_ARG_ENABLE([wasapi],
3774   AS_HELP_STRING([--enable-wasapi],
3775     [use the Windows Audio Session API (default auto)])
3777 have_wasapi="no"
3778 AS_IF([test "$enable_wasapi" != "no"], [
3779   AC_CHECK_HEADER([audioclient.h], [
3780     have_wasapi="yes"
3781   ], [
3782     AS_IF([test "x${enable_wasapi}" != "x"], [
3783       AC_MSG_ERROR([Windows Audio Session API not found.])
3784     ])
3785   ])
3787 AM_CONDITIONAL([HAVE_WASAPI], [test "${have_wasapi}" = "yes"])
3790 dnl  JACK modules
3792 AC_ARG_ENABLE([jack],
3793   AS_HELP_STRING([--disable-jack],
3794     [do not use jack (default auto)]))
3795 have_jack="no"
3796 AS_IF([test "${enable_jack}" != "no"], [
3797     PKG_CHECK_MODULES(JACK, jack >= 1.9.7,
3798       [ have_jack=yes ],
3799       [
3800       AC_MSG_WARN([${JACK_PKG_ERRORS}, trying jack1 instead])
3802       PKG_CHECK_MODULES(JACK, jack >= 0.120.1 jack < 1.0,
3803       [ have_jack=yes ],
3804       [
3805       AS_IF([test -n "${enable_jack}"],
3806          [AC_MSG_ERROR([${JACK_PKG_ERRORS}.])],
3807          [AC_MSG_WARN([${JACK_PKG_ERRORS}.])])
3808       ])
3809     ])
3811 AM_CONDITIONAL([HAVE_JACK], [test "${have_jack}" != "no"])
3814 dnl  OpenSLES Android
3816 AC_ARG_ENABLE([opensles],
3817   AS_HELP_STRING([--enable-opensles], [Android OpenSL ES audio module (default disabled)]))
3818 if test "${HAVE_ANDROID}" = "1"; then
3819   if test "${enable_opensles}" = "yes"; then
3820       AC_CHECK_HEADERS([SLES/OpenSLES.h],
3821         [ VLC_ADD_PLUGIN([opensles_android]) ],
3822         [ AC_MSG_ERROR([cannot find OpenSLES headers])] )
3823   fi
3827 dnl libsamplerate plugin
3829 PKG_ENABLE_MODULES_VLC([SAMPLERATE], [], [samplerate], [Resampler with libsamplerate], [auto])
3832 dnl  soxr module
3834 PKG_ENABLE_MODULES_VLC([SOXR], [], [soxr >= 0.1.2], [SoX Resampler library], [auto])
3837 dnl  OS/2 KAI plugin
3839 AC_ARG_ENABLE([kai],
3840   AS_HELP_STRING([--enable-kai],
3841     [support the K Audio Interface KAI (default enabled on OS/2)]),, [
3842   AS_IF([test "$SYS" = "os2"], [
3843     enable_kai="yes"
3844   ])
3846 have_kai="no"
3847 KAI_LIBS=""
3848 AS_IF([test "$enable_kai" != "no"], [
3849   AC_CHECK_HEADERS([kai.h], [
3850     have_kai="yes"
3851     AC_CHECK_LIB([kai], [main], [
3852       KAI_LIBS="-lkai"
3853     ])
3854   ])
3856 AC_SUBST([KAI_LIBS])
3857 AM_CONDITIONAL([HAVE_KAI], [test "${have_kai}" = "yes"])
3860 dnl  chromaprint audio track fingerprinter
3862 PKG_ENABLE_MODULES_VLC([CHROMAPRINT], [stream_out_chromaprint], [libchromaprint >= 0.6.0], [Chromaprint audio fingeprinter], [auto])
3865 dnl  Chromecast streaming support
3867 m4_pushdef([protobuf_lite_version], 2.5.0)
3868 AC_ARG_VAR(PROTOC, [protobuf compiler])
3869 AC_CHECK_PROGS(PROTOC, protoc, no)
3870 PKG_WITH_MODULES([CHROMECAST],[protobuf-lite >= protobuf_lite_version], [
3871     AS_IF([test "x${PROTOC}" != "xno"], [
3872         build_chromecast="yes"
3873     ], [
3874     AC_MSG_ERROR(protoc compiler needed for [chromecast] was not found)
3875     ])
3876 ], [
3877     AS_IF([test "${enable_chromecast}" = "yes"],
3878         AC_MSG_ERROR(Library [protobuf-lite >= protobuf_lite_version] needed for [chromecast] was not found),
3879         AC_MSG_WARN(Library [protobuf-lite >= protobuf_lite_version] needed for [chromecast] was not found)
3880     )
3881     enable_chromecast="no"
3882 ], [(Chromecast streaming support)], [auto])
3883 AM_CONDITIONAL([BUILD_CHROMECAST], [test "${build_chromecast}" = "yes"])
3884 m4_popdef([protobuf_lite_version])
3887 dnl  Interface plugins
3890 EXTEND_HELP_STRING([Interface plugins:])
3893 dnl QT
3895 AC_ARG_ENABLE([qt],
3896   AS_HELP_STRING([--disable-qt], [Qt UI support (default enabled)]),, [
3897   AS_IF([test "${enable_vlc}" != "no"], [enable_qt="yes"])
3898   AS_IF([test "${SYS}" = "darwin"], [
3899     enable_qt="no"
3900   ])
3902 have_qt5_x11="no"
3903 AS_IF([test "${enable_qt}" != "no"], [
3904   PKG_CHECK_MODULES([QT], [Qt5Core >= 5.11.0 Qt5Widgets Qt5Gui Qt5Quick Qt5QuickWidgets Qt5QuickControls2 Qt5Svg], [
3905       PKG_CHECK_MODULES([QT5_X11], [Qt5X11Extras], [
3906           have_qt5_x11="yes"
3907       ],[
3908           AC_MSG_WARN([Not building Qt Interface with X11 helpers.])
3909       ])
3910       QT_PATH="$(eval $PKG_CONFIG --variable=exec_prefix Qt5Core)"
3911       QT_HOST_PATH="$(eval $PKG_CONFIG --variable=host_bins Qt5Core)"
3912       QT_VERSION="$(eval $PKG_CONFIG --modversion Qt5Gui)"
3913       AC_PATH_PROGS(MOC, [moc-qt5 moc], moc, ["${QT_HOST_PATH}" "${QT_PATH}/bin"])
3914       AC_PATH_PROGS(RCC, [rcc-qt5 rcc], rcc, ["${QT_HOST_PATH}" "${QT_PATH}/bin"])
3915       AC_PATH_PROGS(UIC, [uic-qt5 uic], uic, ["${QT_HOST_PATH}" "${QT_PATH}/bin"])
3916       AC_PATH_PROGS(QMLCACHE, [qmlcachegen-qt5 qmlcachegen], no, ["${QT_HOST_PATH}" "${QT_PATH}/bin"])
3917       AS_IF([test "x${QMLCACHE}" = "xno"], [
3918           AC_MSG_WARN([qmlcachegen not found])
3919       ])
3920     ], [
3921       AS_IF([test -n "${enable_qt}"],[
3922         AC_MSG_ERROR([${QT_PKG_ERRORS}. If you want to build VLC without GUI, pass --disable-qt.])
3923       ],[
3924         AC_MSG_WARN([${QT_PKG_ERRORS}.])
3925       ])
3926       enable_qt="no"
3927     ])
3930 AC_ARG_ENABLE([qt-qml-cache],
3931   AS_HELP_STRING([--enable-qt-qml-cache],
3932     [enable qml cache generation]))
3933 AM_CONDITIONAL([HAVE_QMLCACHE], [test "${enable_qt_qml_cache}" = "yes" && test "x$QMLCACHE" != "xno"])
3935 AC_ARG_ENABLE([qt-qml-debug],
3936   AS_HELP_STRING([--enable-qt-qml-debug], [enable qml debuger]))
3937 AM_CONDITIONAL(QT_QML_DEBUG, [test "${enable_qt_qml_debug}" = "yes"])
3939 AS_IF([test "${enable_qt}" != "no"], [
3940   ALIASES="${ALIASES} qvlc"
3942 AC_SUBST([QT_VERSION])
3943 AM_CONDITIONAL([ENABLE_QT], [test "$enable_qt" != "no"])
3944 AM_CONDITIONAL([HAVE_QT5_X11], [test "${have_qt5_x11}" = "yes"])
3947 dnl detect kde4-config patch (used for kde solids).
3949 AC_ARG_VAR([KDE4_CONFIG], [kde4-config utility])
3950 AS_IF([test "x$KDE4_CONFIG" = "x"], [
3951   KDE4_CONFIG="kde4-config"
3955 dnl Simple test for skins2 dependency
3957 AS_IF([test "$enable_qt" = "no"], [
3958   AS_IF([test "${enable_skins2}" = "yes"], [
3959     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.])
3960   ], [
3961     enable_skins2="no"
3962     AC_MSG_WARN([The skins2 module depends on the Qt interface, Qt is not built so skins2 is disabled.])
3963   ])
3967 dnl Skins2 module
3969 AC_ARG_ENABLE([skins2],
3970   AS_HELP_STRING([--enable-skins2], [skins interface module (default auto)]))
3971 AS_IF([test "${enable_skins2}" != "no"], [
3972   have_skins_deps="yes"
3974   dnl Win32
3975   AS_IF([test "${SYS}" = "mingw32"], [
3976     VLC_ADD_CPPFLAGS([skins2],[-U_OFF_T_ -U_off_t -DWIN32_SKINS])
3977     VLC_ADD_LIBS([skins2],[-lgdi32 -lole32 -luuid -lmsimg32])
3978   dnl OS/2
3979   ], [test "${SYS}" = "os2"], [
3980     VLC_ADD_CPPFLAGS([skins2],[ -DOS2_SKINS])
3981   dnl Linux/Unix
3982   ], [
3983     PKG_CHECK_MODULES([XPM], [xpm],, [have_skins_deps="no"])
3984     PKG_CHECK_MODULES([XINERAMA], [xinerama],, [have_skins_deps="no"])
3985     PKG_CHECK_MODULES([XCURSOR], [xcursor],, [have_skins_deps="no"])
3986     PKG_CHECK_MODULES([XEXT], [xext],, [have_skins_deps="no"])
3987     VLC_ADD_CPPFLAGS([skins2],[${X_CFLAGS} ${XEXT_CFLAGS} ${XPM_CFLAGS} -DX11_SKINS])
3988     VLC_ADD_LIBS([skins2],[${X_LIBS} ${X_PRE_LIBS} ${XEXT_LIBS} ${XPM_LIBS} ${XINERAMA_LIBS} ${XCURSOR_LIBS} -lX11])
3989   ])
3991   dnl we need freetype
3992   AS_IF([test "${have_freetype}" != "yes"], [
3993     have_skins_deps="no"
3994   ])
3996   AS_IF([test "${have_skins_deps}" = "no"], [
3997     AS_IF([test "x${enable_skins2}" = "x"], [
3998       AC_MSG_WARN([Skins2 interface disabled due to missing dependencies.])
3999     ], [
4000       AC_MSG_ERROR([Skins2 interface requires FreeType, libxcursor, libxpm, libxext and libxinerama])
4001     ])
4002     enable_skins2="no"
4003   ], [
4004     ALIASES="${ALIASES} svlc"
4005     enable_skins2="yes"
4006   ])
4008 AM_CONDITIONAL([BUILD_SKINS], [test "${enable_skins2}" = "yes"])
4010 AC_ARG_ENABLE([libtar],
4011   AS_HELP_STRING([--enable-libtar], [libtar support for skins2 (default auto)]))
4012 AS_IF([test "${enable_skins2}" = "yes" && test "${enable_libtar}" != "no"], [
4013   AC_CHECK_HEADERS([libtar.h], [
4014     VLC_ADD_LIBS([skins2],[-ltar])
4015   ])
4019 dnl  MacOS X gui module
4021 AC_ARG_ENABLE([macosx],
4022   AS_HELP_STRING([--enable-macosx], [Mac OS X gui support (default enabled on Mac OS X)]))
4023 if test "x${enable_macosx}" != "xno" -a "${SYS}" = "darwin"
4024 then
4026   dnl
4027   dnl If possible, use xcrun to find the right ibtool
4028   dnl
4030   AC_PATH_PROG([XCRUN], [xcrun], [no])
4031   AS_IF([test ! "x${XCRUN}" = "xno"], [
4032     AC_MSG_CHECKING([for ibtool (using xcrun)])
4033     XIB="$(eval $XCRUN -f ibtool 2>/dev/null || echo no)"
4034     AC_MSG_RESULT([${XIB}])
4035   ], [
4036     AC_MSG_WARN([Looking for tools without using xcrun])
4037   ])
4039   AS_IF([test "x${XIB}" = "xno"], [
4040     AC_PATH_PROG(XIB, [ibtool], [no])
4041     AS_IF([test "x${XIB}" = "xno"], [
4042       AC_MSG_ERROR([ibtool was not found, but is required for --enable-macosx])
4043     ])
4044   ])
4046 AM_CONDITIONAL([ENABLE_MACOSX_UI], [test "$enable_macosx" != "no" -a "${SYS}" = "darwin"])
4049 dnl  MacOS X sparkle update support
4051 AC_ARG_ENABLE([sparkle],
4052   AS_HELP_STRING([--enable-sparkle], [Sparkle update support for OS X (default enabled on Mac OS X)]))
4053 if test "x${enable_sparkle}" != "xno" -a "${HAVE_OSX}" = "1"
4054 then
4055   if test ! -d ${CONTRIB_DIR}/Sparkle.framework -a ! -d ${CONTRIB_DIR}/Frameworks/Sparkle.framework
4056   then
4057     AC_MSG_ERROR([Sparkle framework is required and was not found in ${CONTRIB_DIR}])
4058   fi
4060   AC_DEFINE([HAVE_SPARKLE], [1], [Define to 1 if sparkle is enabled.])
4062 AM_CONDITIONAL([HAVE_SPARKLE], [test "$enable_sparkle" != "no"])
4065 dnl  MacOS X breakpad creash reporter support
4067 AC_ARG_WITH([breakpad],
4068   AS_HELP_STRING([--with-breakpad=URL], [Enable Breakpad reporter using given URL]), [], [with_breakpad=no])
4070 AS_IF([test "$with_breakpad" != "no"], [
4072   AS_IF([test "$with_breakpad" = "yes"], [
4073     AC_MSG_ERROR([You need to supply the CrashDragon Server URL as value for --with-breakpad])
4074   ])
4076   AS_IF([test "$HAVE_OSX" = "1"], [
4077     AC_MSG_CHECKING([for Breakpad framework])
4078     AS_IF([test ! -d ${CONTRIB_DIR}/Breakpad.framework -a \
4079                 ! -d ${CONTRIB_DIR}/Frameworks/Breakpad.framework], [
4080       AC_MSG_RESULT([no])
4081       with_breakpad="no"
4082       AC_MSG_ERROR([Breakpad framework is required and was not found in ${CONTRIB_DIR}])
4083     ], [
4084       AC_MSG_RESULT([yes])
4085     ])
4086   ],[
4087     PKG_CHECK_MODULES([BREAKPAD], [breakpad-client], [
4088       LDFLAGS="${LDFLAGS} -Wl,--build-id"
4089     ], [
4090       AC_MSG_ERROR(["breakpad not found"])
4091     ])
4092   ])
4095 AM_CONDITIONAL([HAVE_BREAKPAD], [test "$with_breakpad" != "no"])
4096 AS_IF([test "$with_breakpad" != "no"], [
4097   AC_SUBST([BREAKPAD_URL], ["${with_breakpad}"])
4101 dnl  Minimal Mac OS X module
4103 AC_ARG_ENABLE([minimal-macosx],
4104   AS_HELP_STRING([--enable-minimal-macosx], [Minimal Mac OS X support (default disabled)]))
4105 if test "${enable_minimal_macosx}" = "yes" -a "${SYS}" = "darwin"
4106 then
4107   VLC_ADD_PLUGIN([minimal_macosx])
4111 dnl Mac OS X fancy dmg build tool
4113 if test "${HAVE_OSX}" = "1"
4114 then
4115   AC_PATH_PROG(DMGBUILD, dmgbuild, no)
4116   AS_IF([test "x${DMGBUILD}" = "xno"], [
4117     AC_MSG_WARN([dmgbuild not found -- unable to build fancy DMGs])
4118   ])
4120 AM_CONDITIONAL([HAVE_DMGBUILD], [test "x$DMGBUILD" != "xno" -a "${HAVE_OSX}" = "1"])
4123 dnl  VideoToolbox plugins
4124 AC_CHECK_HEADERS([VideoToolbox/VideoToolbox.h], [
4125     VLC_ADD_PLUGIN([videotoolbox])
4126     VLC_ADD_PLUGIN([cvpx])
4127   ])
4130 dnl  AudioToolbox MIDI plugin
4131 AC_CHECK_HEADERS([AudioToolbox/AudioToolbox.h], [
4132   VLC_ADD_PLUGIN([audiotoolboxmidi])
4136 dnl  ncurses module
4138 AC_ARG_ENABLE([ncurses],
4139 AS_HELP_STRING([--disable-ncurses],[ncurses text-based interface (default auto)]))
4140 have_ncurses="no"
4141 AS_IF([test "${enable_ncurses}" != "no"] ,[
4142   PKG_CHECK_MODULES([NCURSES], [ncursesw], [
4143     have_ncurses="yes"
4144     ALIASES="${ALIASES} nvlc"
4145   ], [
4146     AS_IF([test -n "${enable_ncurses}"], [
4147       AC_MSG_ERROR([${NCURSES_PKG_ERRORS}.])
4148     ])
4149   ])
4151 AM_CONDITIONAL([HAVE_NCURSES], [test "${have_ncurses}" = "yes"])
4154 dnl  Lirc plugin
4156 AC_ARG_ENABLE([lirc],
4157   AS_HELP_STRING([--enable-lirc], [lirc support (default disabled)]))
4158 have_lirc="no"
4159 AS_IF([test "${enable_lirc}" = "yes"], [
4160   AC_CHECK_HEADER(lirc/lirc_client.h, [
4161     AC_CHECK_LIB([lirc_client], [lirc_init], [
4162       have_lirc="yes"
4163     ])
4164   ])
4166 AM_CONDITIONAL([HAVE_LIRC], [test "${have_lirc}" = "yes"])
4169 dnl  Bitstream
4171 PKG_CHECK_MODULES([BITSTREAM], [bitstream > 1.4],[have_bitstream="yes"], [have_bitstream="no"])
4172 AM_CONDITIONAL([HAVE_BITSTREAM], [test "${have_bitstream}" = "yes"])
4175 dnl  SRT plugin
4177 PKG_ENABLE_MODULES_VLC([SRT], [access_srt access_output_srt], [srt >= 1.3.0], [SRT input/output plugin], [auto], [], [], [-DENABLE_SRT])
4179 EXTEND_HELP_STRING([Visualisations and Video filter plugins:])
4181 dnl  goom visualization plugin
4183 PKG_ENABLE_MODULES_VLC([GOOM], [], [libgoom2], [goom visualization plugin], [auto])
4186 dnl libprojectM visualization plugin
4188 AC_ARG_ENABLE([projectm],
4189   AS_HELP_STRING([--enable-projectm], [projectM visualization plugin (default enabled)]))
4190 AS_IF([test "${enable_projectm}" != "no"],
4191   [
4192     PKG_CHECK_MODULES(PROJECTM, libprojectM,
4193     [
4194       VLC_ADD_PLUGIN([projectm])
4195       PKG_CHECK_EXISTS([libprojectM >= 2.0.0],
4196         [ AC_DEFINE([HAVE_PROJECTM2], 1, [Define to 1 if using libprojectM 2.x]) ],
4197         [ AC_MSG_WARN( [Using libprojectM version 1] )
4198       ])
4199     ],[
4200       AC_MSG_WARN([${PROJECTM_PKG_ERRORS}.])
4201     ])
4202   ])
4205 dnl Vovoid VSXu visualization plugin
4207 AC_ARG_ENABLE([vsxu],
4208   AS_HELP_STRING([--enable-vsxu], [Vovoid VSXu visualization plugin (default auto)]))
4209 AS_IF([test "${enable_vsxu}" != "no"],
4210   [
4211     PKG_CHECK_MODULES(VSXU, libvsxu,
4212     [
4213       VLC_ADD_PLUGIN([vsxu])
4214     ],[
4215       AC_MSG_WARN([${VSXU_PKG_ERRORS}.])
4216     ])
4217   ])
4219 EXTEND_HELP_STRING([Service Discovery plugins:])
4221 dnl  Avahi-Zeroconf services discovery
4222 PKG_ENABLE_MODULES_VLC([AVAHI], [], [avahi-client >= 0.6], [Zeroconf services discovery], [auto])
4225 dnl  libudev services discovery
4226 PKG_ENABLE_MODULES_VLC([UDEV], [], [libudev >= 142], [Linux udev services discovery], [auto])
4229 dnl MTP devices services discovery
4230 PKG_ENABLE_MODULES_VLC([MTP], [mtp access_mtp], [libmtp >= 1.0.0], [MTP devices support], [auto])
4233 dnl UPnP Plugin (Intel SDK)
4235 PKG_ENABLE_MODULES_VLC([UPNP], [upnp], [libupnp], [Intel UPNP SDK],[auto])
4238 dnl mDNS using libmicrodns
4240 PKG_ENABLE_MODULES_VLC([MICRODNS], [], [microdns], [mDNS services discovery], [auto])
4243 EXTEND_HELP_STRING([Misc options:])
4246 dnl  libxml2 module
4248 PKG_ENABLE_MODULES_VLC([LIBXML2], [xml], [libxml-2.0 >= 2.5], [libxml2 support],[auto])
4252 dnl libgcrypt
4254 AC_ARG_ENABLE([libgcrypt],
4255   AS_HELP_STRING([--disable-libgcrypt], [gcrypt support (default enabled)]))
4256 AC_ARG_VAR([GCRYPT_CFLAGS], [C compiler flags for gcrypt])
4257 AC_ARG_VAR([GCRYPT_LIBS], [linker flags flags for gcrypt])
4259 # require libgcrypt >= 1.6.0
4260 AS_IF([test "${enable_libgcrypt}" != "no"], [
4261   AC_CACHE_CHECK([for gcrypt 1.6.0 or later], [ac_cv_lib_gcrypt], [
4262     VLC_SAVE_FLAGS
4263     CFLAGS="${CFLAGS} ${GCRYPT_CFLAGS}"
4264     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([
4265 [#include <gcrypt.h>
4266 #if GCRYPT_VERSION_NUMBER < 0x010600
4267 #error
4268 #endif]])], [
4269       ac_cv_lib_gcrypt=yes
4270     ], [
4271       ac_cv_lib_gcrypt=no
4272     ])
4273     VLC_RESTORE_FLAGS
4274   ])
4276   AS_IF([test "${ac_cv_lib_gcrypt}" = "yes"], [
4277     AC_DEFINE([HAVE_GCRYPT], 1, [Defined if having gcrypt])
4278   ], [
4279     AS_IF([test "${enable_libgcrypt}" = "yes"], [
4280       AC_MSG_ERROR([libgcrypt version 1.6.0 or higher not found. Install libgcrypt or pass --disable-libgcrypt.])
4281     ])
4282   ])
4285 AS_IF([test -z "$GCRYPT_LIBS"], [
4286   GCRYPT_LIBS="-lgcrypt -lgpg-error"
4289 AC_SUBST([GCRYPT_CFLAGS])
4290 AC_SUBST([GCRYPT_LIBS])
4291 AM_CONDITIONAL([HAVE_GCRYPT], [test "${ac_cv_lib_gcrypt}" = "yes"])
4294 dnl TLS/SSL
4296 AC_ARG_ENABLE([gnutls],
4297   AS_HELP_STRING([--enable-gnutls], [GNU TLS TLS/SSL support (default enabled)]))
4298 AS_IF([test "${enable_gnutls}" != "no"], [
4299   PKG_CHECK_MODULES(GNUTLS, [gnutls >= 3.5.0], [
4300     VLC_ADD_PLUGIN([gnutls])
4301   ], [
4302     AS_IF([test -n "${enable_gnutls}"], [
4303       AC_MSG_ERROR([${GNUTLS_PKG_ERRORS}.)])
4304     ])
4305   ])
4310 dnl Taglib plugin
4312 AC_ARG_ENABLE([taglib],
4313   AS_HELP_STRING([--disable-taglib],
4314     [do not use TagLib (default enabled)]))
4315 AS_IF([test "${enable_taglib}" != "no"], [
4316   PKG_CHECK_MODULES(TAGLIB, taglib >= 1.11, [
4317     VLC_ADD_PLUGIN([taglib])
4318   ], [
4319     AC_MSG_WARN([${TAGLIB_PKG_ERRORS}.])])
4323 dnl  libsecret
4325 PKG_ENABLE_MODULES_VLC([SECRET], [], [libsecret-1 >= 0.18], [use libsecret for keystore], [auto])
4328 dnl  kwallet
4330 AC_ARG_ENABLE([kwallet],
4331   AS_HELP_STRING([--enable-kwallet],
4332     [use kwallet (via D-Bus) for keystore (default enabled)]))
4333 AS_IF([test "${enable_kwallet}" != "no" -a "${have_dbus}" = "yes"], [
4334   VLC_ADD_PLUGIN([kwallet])
4338 dnl update checking system
4340 AC_ARG_ENABLE([update-check],
4341   AS_HELP_STRING([--enable-update-check], [update checking system (default disabled)]))
4342 if test "${enable_update_check}" = "yes"
4343 then
4344  AS_IF([test "${ac_cv_lib_gcrypt}" != "yes"],[
4345     AC_MSG_ERROR([libgcrypt is required for update checking system]) ])
4347 AM_CONDITIONAL([UPDATE_CHECK], [test "${enable_update_check}" = "yes"])
4350 dnl OS X notification plugin
4352 AC_ARG_ENABLE([osx_notifications],
4353   AS_HELP_STRING([--enable-osx-notifications],
4354     [macOS notification plugin (default disabled)]),,
4355   [enable_osx_notifications=no])
4356 AS_IF([test "${enable_osx_notifications}" != "no"], [
4357   VLC_ADD_PLUGIN([osx_notifications])
4361 dnl Libnotify notification plugin
4363 PKG_ENABLE_MODULES_VLC([NOTIFY], [], [libnotify gtk+-3.0], [libnotify notification], [auto])
4365 PKG_ENABLE_MODULES_VLC([MEDIALIBRARY], [medialibrary], [medialibrary >= 0.7.1], (medialibrary support), [auto])
4368 dnl  Endianness check
4370 AC_C_BIGENDIAN
4371 AS_IF([test "${ac_cv_c_bigendian}" = "yes"], [
4372   DEFS_BIGENDIAN="-DWORDS_BIGENDIAN=1"
4373 ], [
4374   DEFS_BIGENDIAN=""
4376 AC_SUBST([DEFS_BIGENDIAN])
4379 dnl Where to install KDE solid .desktop
4381 AC_ARG_WITH(kde-solid,
4382   AS_HELP_STRING([--with-kde-solid=PATH],
4383                  [KDE Solid actions directory (auto)]),, [
4385 if test "${SYS}" != "mingw32" -a "${SYS}" != "darwin" -a "${HAVE_ANDROID}" != "1" ; then
4386   with_kde_solid="yes"
4389 soliddatadir=""
4390 AS_IF([test "${with_kde_solid}" != "no"], [
4391   AS_IF([test "${with_kde_solid}" = "yes"], [
4392     kde4datadir="`${KDE4_CONFIG} --install data`"
4393     AS_IF([test "x$kde4datadir" = "x"], [kde4datadir='${datadir}/kde4/apps'])
4394     soliddatadir="${kde4datadir}/solid/actions"
4395   ], [
4396     soliddatadir="${with_kde_solid}"
4397   ])
4399 AC_SUBST([soliddatadir])
4400 AM_CONDITIONAL([KDE_SOLID], [test "x${soliddatadir}" != "x"])
4403 dnl  Find tools for win32 packaging
4405 AS_IF([test "${SYS}" = "mingw32"], [
4406     dnl
4407     dnl Find makensis required to build the NSIS installer
4408     dnl
4409     nsis_major_required="3"
4410     nsis_version_ok="no"
4411     AC_PATH_PROG([MAKENSIS], [makensis], [no])
4412     AS_IF([test "$MAKENSIS" != "no"], [
4413         # Check version
4414         AC_MSG_CHECKING([makensis version])
4415         nsis_version=$($MAKENSIS -VERSION)
4416         AC_MSG_RESULT([$nsis_version])
4417         nsis_version_major=$(echo "$nsis_version" | awk -F \. '{print $1}' | sed 's/v//')
4418         # Check if major version is a valid number
4419         AS_IF([test -n "$nsis_version_major" && \
4420                test "$nsis_version_major" -eq "$nsis_version_major" 2> /dev/null], [
4421             # Do the version check using major version
4422             AS_IF([test "$nsis_version_major" -lt "$nsis_major_required"], [
4423                 AC_MSG_WARN([makensis too old, (needs ${nsis_major_required}.x, have ${nsis_version_major}.x)])
4424             ], [
4425                 nsis_version_ok="yes"
4426             ])
4427         ], [
4428             AC_MSG_WARN([failed to check the makensis version])
4429         ])
4430     ])
4431     dnl
4432     dnl Find 7zip
4433     dnl
4434     AC_PATH_PROG([SEVENZIP], [7z], [7z])
4436 AM_CONDITIONAL([HAVE_MAKENSIS], [test "x$MAKENSIS" != "xno" && test "$nsis_version_ok" = "yes"])
4439 dnl Check wether we have the PROCESS_MITIGATION_IMAGE_LOAD_POLICY
4440 dnl It should only be available when building for win10, but some SDKs define it unconditionnaly
4442 if test "${SYS}" = "mingw32"; then
4443     AC_CHECK_TYPES([PROCESS_MITIGATION_IMAGE_LOAD_POLICY],,,[#include <windows.h>])
4446 EXTEND_HELP_STRING([Components:])
4449 dnl  the VLC binary
4451 AC_ARG_ENABLE([vlc],
4452   AS_HELP_STRING([--enable-vlc], [build the VLC media player (default enabled)]))
4453 AM_CONDITIONAL([BUILD_VLC], [test "${enable_vlc}" != "no"])
4456 dnl Fuzzer (at the end not to mess dependencies FLAGS)
4458 AS_VAR_IF(with_libfuzzer, no, [], [
4459     LIBS="-lstdc++ ${LIBM}"
4460     AS_IF([test "${with_libfuzzer}" != "yes"], [
4461       LIBS="$LIBS -L${with_libfuzzer}"
4462     ])
4463     LIBS="$LIBS -lFuzzer"
4464     AX_CHECK_COMPILE_FLAG(-fsanitize-coverage=trace-pc-guard, [
4465         AX_APPEND_FLAG([-fsanitize-coverage=trace-pc-guard])
4466         AX_APPEND_FLAG([-fsanitize-coverage=trace-pc-guard], [CXXFLAGS])
4467         AX_APPEND_COMPILE_FLAGS([-fsanitize-coverage=trace-cmp])
4468         AX_APPEND_COMPILE_FLAGS([-fsanitize-coverage=trace-cmp], [CXXFLAGS])
4469     ], [
4470         AX_CHECK_COMPILE_FLAG(-fsanitize-coverage=trace-pc, [
4471             AX_APPEND_FLAG([-fsanitize-coverage=trace-pc])
4472             AX_APPEND_FLAG([-fsanitize-coverage=trace-pc], [CXXFLAGS])
4473         ], [
4474             AC_MSG_ERROR([Sanitizer coverage not supported by your compiler])
4475         ])
4476     ])
4480 dnl  Stuff used by the program
4482 VERSION_MESSAGE="${VERSION} ${CODENAME}"
4483 COPYRIGHT_MESSAGE="Copyright © ${COPYRIGHT_YEARS} the VideoLAN team"
4484 AC_DEFINE_UNQUOTED([VERSION_MESSAGE], "${VERSION_MESSAGE}", [Simple version string])
4485 AC_DEFINE_UNQUOTED([COPYRIGHT_MESSAGE], "${COPYRIGHT_MESSAGE}", [Copyright string])
4486 AC_DEFINE_UNQUOTED([COPYRIGHT_YEARS], "${COPYRIGHT_YEARS}", [The copyright years])
4487 AC_DEFINE_UNQUOTED([CONFIGURE_LINE], "${CONFIGURE_LINE}", [The ./configure command line])
4488 AC_DEFINE_UNQUOTED([PACKAGE_VERSION_MAJOR],${VERSION_MAJOR}, [version major number])
4489 AC_DEFINE_UNQUOTED([PACKAGE_VERSION_MINOR],${VERSION_MINOR}, [version minor number])
4490 AC_DEFINE_UNQUOTED([PACKAGE_VERSION_REVISION],${VERSION_REVISION}, [version revision number])
4491 AC_DEFINE_UNQUOTED([PACKAGE_VERSION_EXTRA],${VERSION_EXTRA}, [version extra number])
4492 AC_DEFINE_UNQUOTED([PACKAGE_VERSION_DEV],"${VERSION_DEV}", [version development string])
4493 AC_SUBST([COPYRIGHT_MESSAGE])
4494 AC_SUBST([VERSION_MESSAGE])
4495 AC_SUBST([VERSION_MAJOR])
4496 AC_SUBST([VERSION_MINOR])
4497 AC_SUBST([VERSION_REVISION])
4498 AC_SUBST([VERSION_EXTRA])
4499 AC_SUBST([COPYRIGHT_YEARS])
4500 AC_DEFINE_UNQUOTED([VLC_COMPILE_BY], "`whoami|sed -e 's/\\\/\\\\\\\/g'`", [user who ran configure])
4501 AC_DEFINE_UNQUOTED([VLC_COMPILE_HOST], "`hostname -f 2>/dev/null || hostname`", [host which ran configure])
4502 AC_DEFINE_UNQUOTED([VLC_COMPILER], "`$CC -v 2>&1 | tail -n 1 | sed -e 's/ *$//'`", [compiler])
4504 dnl  Handle substvars that use $(top_srcdir)
4506 CPPFLAGS="-I\$(top_srcdir)/include -I\$(top_builddir)/include ${CPPFLAGS}"
4509 dnl  Configuration is finished
4511 AC_SUBST([SYS])
4512 AC_SUBST([ARCH])
4513 AC_SUBST([ALIASES])
4514 AC_SUBST([ASM])
4515 AC_SUBST([MOC])
4516 AC_SUBST([RCC])
4517 AC_SUBST([UIC])
4518 AC_SUBST([WINDRES])
4519 AC_SUBST([WINE_SDK_PATH])
4520 AC_SUBST([LIBEXT])
4521 AC_SUBST([AM_CPPFLAGS])
4522 AC_SUBST([MACOSX_DEPLOYMENT_TARGET])
4523 AC_SUBST([FILE_LIBVLCCORE_DLL])
4524 AC_SUBST([FILE_LIBVLC_DLL])
4526 AC_CONFIG_FILES([
4527   Makefile
4528   doc/Makefile
4529   modules/Makefile
4530   m4/Makefile
4531   po/Makefile.in
4532   share/Makefile
4533   compat/Makefile
4534   src/Makefile
4535   lib/Makefile
4536   bin/Makefile
4537   test/Makefile
4538   modules/hw/mmal/Makefile
4539   share/vlc.appdata.xml.in
4542 AM_COND_IF([HAVE_WIN32], [
4543   AC_CONFIG_FILES([
4544     extras/package/win32/NSIS/spad.nsi
4545     extras/package/win32/NSIS/vlc.win32.nsi
4546     extras/package/win32/msi/config.wxi
4547   ])
4550 AM_COND_IF([HAVE_DARWIN], [
4551   AC_CONFIG_FILES([
4552     modules/gui/macosx/UI/InfoPlist.strings:modules/gui/macosx/Resources/InfoPlist.strings.in
4553     share/macosx/Info.plist:share/Info.plist.in
4554   ])
4557 dnl Generate makefiles
4558 AC_OUTPUT
4560 dnl Do we have to use make or gmake ?
4561 if make --version 2>&1|grep -q GNU
4562 then
4563     # GNU make, all seems good
4564     MAKE=make
4565 else
4566     # Known GNU make alias (on BSD)
4567     MAKE=gmake
4569 dnl Shortcut to nice compile message
4570 if test -n $SHELL; then
4571   SHELL=${CONFIG_SHELL-/bin/sh}
4573 rm -f compile
4574 compile_top_srcdir=`sed -ne "s/^top_srcdir *= *//p" < Makefile`
4575 echo "#! $SHELL
4576 rm -f .error\$\$
4577 ERROR=0
4578 export PATH=\"$PATH\" LANG=C
4579 ($MAKE V=1 \$@ 2>&1 || touch .error\$\$)| $compile_top_srcdir/extras/buildsystem/make.pl
4580 test -f .error\$\$ && ERROR=1
4581 rm -f .error\$\$
4582 exit \$ERROR" >compile
4583 chmod a+x compile
4585 echo "
4586 libvlc configuration
4587 --------------------
4588 version               : ${VERSION}
4589 system                : ${SYS}
4590 architecture          : ${ARCH}
4591 optimizations         : ${enable_optimizations}"
4592 if test "${enable_vlc}" != "no"; then
4593 echo "vlc aliases           :${ALIASES}"
4594 else
4595 echo "build vlc executable  : no"
4597 echo "
4598 To build vlc and its plugins, type \`$MAKE', or \`./compile' if you like nice colors."