keychain: accountName can be NULL
[vlc.git] / configure.ac
blob1201826d2f78fa74b5671607180fa55ec6fd2ca5
1 dnl Autoconf settings for vlc
3 AC_COPYRIGHT([Copyright 1999-2019 VLC authors and VideoLAN])
5 AC_INIT([vlc], [4.0.0-dev])
6 VERSION_MAJOR=4
7 VERSION_MINOR=0
8 VERSION_REVISION=0
9 VERSION_EXTRA=0
10 VERSION_DEV=dev
12 PKGDIR="vlc"
13 AC_SUBST([PKGDIR])
15 CONFIGURE_LINE="`echo "$0 $ac_configure_args" | sed -e 's/\\\/\\\\\\\/g'`"
16 CODENAME="Otto Chriek"
17 COPYRIGHT_YEARS="1996-2019"
19 AC_CONFIG_SRCDIR([src/libvlc.c])
20 AC_CONFIG_AUX_DIR([autotools])
21 AC_CONFIG_MACRO_DIR([m4])
22 AC_CONFIG_LIBOBJ_DIR([compat])
23 AC_CANONICAL_BUILD
24 AC_CANONICAL_HOST
25 AC_PRESERVE_HELP_ORDER
27 AM_INIT_AUTOMAKE([tar-ustar color-tests foreign])
28 AC_CONFIG_HEADERS([config.h])
30 AM_SILENT_RULES([yes])
31 AM_MAINTAINER_MODE([enable])
33 dnl
34 dnl Check for tools
35 dnl
36 AC_PROG_CC
37 AC_USE_SYSTEM_EXTENSIONS
38 VLC_PROG_CC_C11
39 AH_VERBATIM([FORTIFY_SOURCE],
40   [/* Enable compile-time and run-time bounds-checking, and some warnings,
41    without upsetting glibc 2.15+ or toolchains predefining _FORTIFY_SOURCE */
42 #if !defined _FORTIFY_SOURCE && defined __OPTIMIZE__ && __OPTIMIZE__
43 # define _FORTIFY_SOURCE 2
44 #endif])
45 AC_DEFINE([_FILE_OFFSET_BITS], 64, [Define to 64 for large files support.])
46 AC_DEFINE([__LIBVLC__],, [Define within the LibVLC source code tree.])
47 AC_DEFINE([WIN32_LEAN_AND_MEAN],, [Define to limit the scope of <windows.h>.])
49 AC_PROG_CXX
50 AC_PROG_CPP
51 AC_PROG_OBJC
52 AC_PROG_EGREP
53 AC_PROG_MAKE_SET
54 AC_PROG_INSTALL
55 AM_PROG_AS
56 AC_PROG_LEX
57 AC_PROG_YACC
59 AC_ARG_VAR([DESKTOP_FILE_VALIDATE], [Validator for desktop entry files])
60 AC_CHECK_PROGS([DESKTOP_FILE_VALIDATE], [${DESKTOP_FILE_VALIDATE} desktop-file-validate], :)
61 AC_ARG_VAR([BUILDCC], [Build system C11 or C99 compiler command])
62 AC_CHECK_PROGS([BUILDCC], [c11-gcc c11 c99-gcc c99], [false])
63 AS_IF([test "$BUILDCC" = "false"], [
64   AC_MSG_ERROR([Cannot find native C99 compiler: please define BUILDCC.])
67 dnl Check for compiler properties
68 AC_C_CONST
69 AC_C_INLINE
70 AC_C_RESTRICT
71 AX_CXX_COMPILE_STDCXX_14([noext], [mandatory])
73 dnl Extend the --help string at the current spot.
74 AC_DEFUN([EXTEND_HELP_STRING], [m4_divert_once([HELP_ENABLE], [$1])])
76 dnl Allow binary package maintainer to pass a custom string to avoid
77 dnl cache problem
78 AC_ARG_WITH([binary-version],
79     AS_HELP_STRING([--with-binary-version=STRING],
80          [To avoid plugins cache problem between binary version]),[],[])
81 AS_IF([test -n "${with_binary_version}"],[
82     AC_DEFINE_UNQUOTED([DISTRO_VERSION],["${with_binary_version}"],
83          [Binary specific version])
86 dnl Prevent clang from accepting unknown flags with a mere warning
87 AX_APPEND_COMPILE_FLAGS([-Werror=unknown-warning-option -Werror=invalid-command-line-argument], [CFLAGS])
88 AX_APPEND_COMPILE_FLAGS([-Werror=unknown-warning-option -Werror=invalid-command-line-argument], [CXXFLAGS])
90 dnl
91 dnl  Check the operating system
92 dnl
93 HAVE_WIN64="0"
94 HAVE_IOS="0"
95 HAVE_OSX="0"
96 HAVE_TVOS="0"
98 dnl  Set x86 asm flags and defines
99 X86ASMFLAGS=""
100 case "${host_cpu}" in
101     i?86)
102     X86ASMFLAGS="-f elf32"
103     X86ASMDEFS="-DARCH_X86_32=1 -DARCH_X86_64=0"
104         ;;
105     x86_64)
106     X86ASMFLAGS="-f elf64"
107     X86ASMDEFS="-DARCH_X86_32=0 -DARCH_X86_64=1"
108         ;;
109 esac
111 case "${host_os}" in
112   "")
113     SYS=unknown
114     ;;
115   linux*)
116     SYS=linux
117     CFLAGS="${CFLAGS} -pthread"
118     ;;
119   bsdi*)
120     SYS=bsdi
121     CFLAGS="${CFLAGS} -pthread"
122     ;;
123   freebsd*)
124     SYS=freebsd
125     CFLAGS="${CFLAGS} -pthread"
126     CPPFLAGS="${CPPFLAGS} -I/usr/local/include"
127     LDFLAGS="${LDFLAGS} -L/usr/local/lib"
128     ac_cv_ld_z_defs=no
129     ;;
130   openbsd*)
131     SYS=openbsd
132     CPPFLAGS="${CPPFLAGS} -I/usr/local/include -I/usr/X11R6/include"
133     LDFLAGS="${LDFLAGS} -L/usr/local/lib -L/usr/X11R6/lib/"
134     ;;
135   netbsd*)
136     SYS=netbsd
137     ;;
138   dragonfly*)
139     SYS=dragonfly
140     ;;
141   darwin*)
143     dnl Force gcc "-arch" flag
144     ARCH_flag=""
145     case "${host_cpu}" in
146       i?86)
147         ARCH_flag="-arch i386"
148         X86ASMFLAGS="-f macho32"
149         X86ASMDEFS="${X86ASMDEFS} -DPREFIX"
150       ;;
151       ppc64*)
152         ARCH_flag="-arch ppc64"
153       ;;
154       ppc*)
155         ARCH_flag="-arch ppc"
156       ;;
157       x86_64)
158         ARCH_flag="-arch x86_64"
159         X86ASMFLAGS="-f macho64"
160         X86ASMDEFS="${X86ASMDEFS} -DPREFIX"
161       ;;
162       arm*)
163         ac_cv_c_bigendian="no"
164         ac_cv_c_attribute_packed="no"
165       ;;
166     esac
168     SYS=darwin
169     CFLAGS="${CFLAGS} -D_INTL_REDIRECT_MACROS -std=gnu11 ${ARCH_flag}"
170     CXX="${CXX} -stdlib=libc++ -std=c++11"
171     CXXFLAGS="${CXXFLAGS} -D_INTL_REDIRECT_MACROS ${ARCH_flag}"
172     CPPFLAGS="${CPPFLAGS} ${ARCH_flag}"
173     OBJCFLAGS="${OBJCFLAGS} -D_INTL_REDIRECT_MACROS -std=gnu11 ${ARCH_flag} -Werror=partial-availability"
174     LDFLAGS="${LDFLAGS} -Wl,-headerpad_max_install_names ${ARCH_flag}"
175     VLC_ADD_LIBS([libvlc vlc],[-Wl,-undefined,dynamic_lookup,-framework,AppKit])
176     VLC_ADD_LIBS([libvlccore],[-Wl,-framework,CoreFoundation,-framework,CoreServices])
178     AC_EGREP_CPP(yes,
179             [#import <TargetConditionals.h>
180              #if TARGET_OS_IPHONE
181              yes
182              #endif],
183              [HAVE_IOS="1"],
184              [HAVE_OSX="1"])
186     AC_EGREP_CPP(yes,
187             [#import <TargetConditionals.h>
188              #if TARGET_OS_TV
189              yes
190              #endif],
191              [HAVE_TVOS="1"
192              HAVE_IOS="0"
193              HAVE_OSX="0"
194              ],)
196     dnl
197     dnl  Handle Mac OS X SDK flags
198     dnl
199     AC_ARG_WITH(macosx-sdk,
200       AS_HELP_STRING([--with-macosx-sdk=DIR],
201         [compile using the SDK in DIR]))
202     if test "${with_macosx_sdk}" != "" ; then
203         test ! -d "${with_macosx_sdk}" && AC_MSG_ERROR([SDK "${with_macosx_sdk}" not found])
204         CPP="${CPP} -isysroot ${with_macosx_sdk}"
205         CC="${CC} -isysroot ${with_macosx_sdk}"
206         CXX="${CXX} -isysroot ${with_macosx_sdk}"
207         OBJC="${OBJC} -isysroot ${with_macosx_sdk}"
208         LD="${LD} -syslibroot ${with_macosx_sdk}"
209     fi
210     AC_ARG_WITH(macosx-version-min,
211       AS_HELP_STRING([--with-macosx-version-min=VERSION],
212         [compile for Mac OS X VERSION and above]))
213     if test "${with_macosx_version_min}" != "" ; then
214         CPP="${CPP} -mmacosx-version-min=${with_macosx_version_min}"
215         CC="${CC} -mmacosx-version-min=${with_macosx_version_min}"
216         CXX="${CXX} -mmacosx-version-min=${with_macosx_version_min}"
217         OBJC="${OBJC} -mmacosx-version-min=${with_macosx_version_min}"
218         LD="${LD} -mmacosx_version_min=${with_macosx_version_min}"
219     fi
220     ;;
221   *mingw32* | *cygwin* | *wince* | *mingwce*)
222     dnl Force libtool to not link to (shared) libgcc_s when detecting C++ dependencies
223     dnl When doing this test with -static-libgcc it will link on (static) libgcc_eh
224     CXXFLAGS="${CXXFLAGS} -static-libgcc"
225     AC_CHECK_TOOL(WINDRES, windres, :)
226     AC_CHECK_TOOL(OBJCOPY, objcopy, :)
227     AC_PREPROC_IFELSE([AC_LANG_PROGRAM(
228       [[#ifdef _WIN32_WINNT
229        # error _WIN32_WINNT already defined
230        #endif
231       ]],[[;]])
232     ],[
233       AC_DEFINE([_WIN32_WINNT], 0x0601, [Define to '0x0601' for Windows 7 APIs.])
234     ])
235     AC_DEFINE([_WIN32_IE], 0x0600, [Define to '0x0600' for IE 6.0 (and shell) APIs.])
236     AC_DEFINE([UNICODE], [1], [Define to 1 for Unicode (Wide Chars) APIs.])
237     AC_DEFINE([_ISOC99_SOURCE], [1], [Extensions to ISO C89 from ISO C99.])
238     AC_DEFINE([_ISOC11_SOURCE], [1], [Extensions to ISO C99 from ISO C11.])
239     AC_DEFINE([_POSIX_SOURCE], [1], [IEEE Std 1003.1.])
240     AC_DEFINE([_POSIX_C_SOURCE], [200809L], [IEEE Std 1003.1.])
241     AC_DEFINE([_XOPEN_SOURCE], [700], [POSIX and XPG 7th edition])
242     AC_DEFINE([_XOPEN_SOURCE_EXTENDED], [1], [XPG things and X/Open Unix extensions.])
243     AC_DEFINE([_BSD_SOURCE], [1], [ISO C, POSIX, and 4.3BSD things.])
244     AC_DEFINE([_SVID_SOURCE], [1], [ISO C, POSIX, and SVID things.])
246     case "${host_os}" in
247       *mingw32*)
248         SYS=mingw32
249         ;;
250       *cygwin*)
251         dnl Check if we are using the mno-cygwin mode in which case we are
252         dnl actually dealing with a mingw32 compiler.
253         AC_EGREP_CPP(yes,
254             [#ifdef _WIN32
255              yes
256              #endif],
257             SYS=mingw32, AC_MSG_ERROR([VLC requires -mno-cygwin]))
258         ;;
259     esac
261     if test "${SYS}" = "mingw32"; then
262         # DEP, ASLR, NO SEH
263         LDFLAGS="${LDFLAGS} -Wl,--nxcompat -Wl,--no-seh -Wl,--dynamicbase"
265         AC_CHECK_PROGS(U2D, [unix2dos todos], unix2dos)
266         ac_default_prefix="`pwd`/_win32"
267         DESTDIR="`pwd`/_win32/"
269         dnl
270         dnl NSIS/MSI Installer prefix and WIN64
271         dnl
272         case "${host_cpu}" in
273             aarch64)
274                 HAVE_WIN64="1"
275                 WINDOWS_ARCH="arm64"
276                 PROGRAMFILES="PROGRAMFILES64"
277                 LDFLAGS="${LDFLAGS} -Wl,--high-entropy-va -Wl,--image-base,0x140000000"
278             ;;
279             amd64|x86_64)
280                 HAVE_WIN64="1"
281                 WINDOWS_ARCH="x64"
282                 PROGRAMFILES="PROGRAMFILES64"
283                 LDFLAGS="${LDFLAGS} -Wl,--high-entropy-va -Wl,--image-base,0x140000000"
284                 X86ASMFLAGS="-f win64"
285             ;;
286             armv7)
287                 WINDOWS_ARCH="arm"
288                 PROGRAMFILES="PROGRAMFILES"
289             ;;
290             *)
291                 WINDOWS_ARCH="x86"
292                 PROGRAMFILES="PROGRAMFILES"
293                 X86ASMFLAGS="-f win32"
294                 X86ASMDEFS="${X86ASMDEFS} -DPREFIX"
295             ;;
296         esac
297         AC_SUBST([WINDOWS_ARCH])
298         AC_SUBST([PROGRAMFILES])
300     fi
301     ;;
302   *nto*)
303     SYS=nto
304     ;;
305   solaris*)
306     SYS=solaris
307     ;;
308   hpux*)
309     SYS=hpux
310     ;;
311   *os2*)
312     SYS=os2
313     LDFLAGS="${LDFLAGS} -Zomf -Zbin-files -Zargs-wild -Zhigh-mem"
314     AC_LIBOBJ([freeaddrinfo])
315     AC_LIBOBJ([gai_strerror])
316     AC_CHECK_FUNCS([if_nametoindex])
317     ;;
318   *nacl*)
319     SYS=nacl
320     AC_DEFINE([_XOPEN_SOURCE], [700], [POSIX and XPG 7th edition])
321     AC_LIBOBJ([sigwait])
322     AC_LIBOBJ([recvmsg])
323     AC_LIBOBJ([sendmsg])
324     ;;
325   *)
326     SYS="${host_os}"
327     ;;
328 esac
330 dnl WinRT
331 AC_ARG_ENABLE([winstore_app],
332      AS_HELP_STRING([--enable-winstore-app],
333                     [Build targetted for Windows Store apps (default disabled)]))
335 vlc_winstore_app=0
336 AS_IF([test "${SYS}" = "mingw32"],[
337   LIBCOM="-lole32"
338   AS_IF([test "${enable_winstore_app}" = "yes"], [
339     vlc_winstore_app=1
340     LIBCOM=""
341     AX_APPEND_FLAG([-DWINSTORECOMPAT],[CFLAGS])
342     AX_APPEND_FLAG([-DWINSTORECOMPAT],[CPPFLAGS])
343     AX_APPEND_FLAG([-DWINSTORECOMPAT],[CXXFLAGS])
344     AX_APPEND_FLAG([-lwinstorecompat], [LDFLAGS])
345     VLC_ADD_LIBS([libvlccore], [-lruntimeobject])
346     AC_LIBOBJ([gai_strerror])
347   ],[])
348   AC_SUBST([LIBCOM])
349   ])
350 AC_DEFINE_UNQUOTED(VLC_WINSTORE_APP, ${vlc_winstore_app}, [Define to 1 if you want to build for Windows Store apps])
352 vlc_build_pdb=0
353 AC_ARG_ENABLE([pdb],
354      AS_HELP_STRING([--enable-pdb],
355                     [Build PDB files for windows targets (default off)]))
356 AS_IF([test "${SYS}" = "mingw32"],[
357   AS_IF([test "${enable_pdb}" = "yes"], [
358     vlc_build_pdb=1
359     AX_APPEND_FLAG([-g -gcodeview],[CFLAGS])
360     AX_APPEND_FLAG([-g -gcodeview],[CXXFLAGS])
361     LDFLAGS="${LDFLAGS} -Wl,-pdb="
362   ],[])
365 AM_CONDITIONAL([HAVE_LINUX],   [test "${SYS}" = "linux"])
366 AM_CONDITIONAL([HAVE_OS2],     [test "${SYS}" = "os2"])
368 AM_CONDITIONAL([HAVE_DARWIN],  [test "${SYS}" = "darwin"])
369 AM_CONDITIONAL([HAVE_IOS],     [test "${HAVE_IOS}" = "1"])
370 AM_CONDITIONAL([HAVE_OSX],     [test "${HAVE_OSX}" = "1"])
371 AM_CONDITIONAL([HAVE_TVOS],    [test "${HAVE_TVOS}" = "1"])
373 AM_CONDITIONAL([HAVE_NACL],    [test "${SYS}" = "nacl"])
374 AM_CONDITIONAL([HAVE_LIBANL],  [test "${HAVE_LIBANL}" = "1"])
376 AM_CONDITIONAL([HAVE_WIN32],   [test "${SYS}" = "mingw32"])
377 AM_CONDITIONAL([HAVE_WIN64],   [test "${HAVE_WIN64}" = "1"]) dnl Only used for the packaging
378 AM_CONDITIONAL([HAVE_WINSTORE], [test "$vlc_winstore_app" = "1"])
379 AM_CONDITIONAL([HAVE_WIN32_DESKTOP], [test "${SYS}" = "mingw32" -a "$vlc_winstore_app" = "0"])
380 AM_CONDITIONAL([ENABLE_PDB],   [test "$vlc_build_pdb" = "1"])
382 dnl Use nasm/yasm only on x86
383 AC_CHECK_PROGS(X86ASM, [nasm yasm])
384 AM_CONDITIONAL([HAVE_X86ASM], [test -n "${X86ASM}" && test -n "${X86ASMFLAGS}"])
385 AM_COND_IF([HAVE_X86ASM], [
386   AC_DEFINE([HAVE_X86ASM], [1], [Use external asm on x86.])
389 dnl  Because DOLT is not able to handle --with-pic
390 dnl  correctly, manually add -DPIC to the options for
391 dnl  nasm / yasm here.
392 AS_IF([test x$with_pic = xyes], [X86ASMDEFS="${X86ASMDEFS} -DPIC"])
394 AC_SUBST([X86ASMFLAGS])
395 AC_SUBST([X86ASMDEFS])
398 dnl Sadly autoconf does not think about testing foo.exe when ask to test
399 dnl for program foo on win32
400 case "${build_os}" in
401     cygwin|msys|mingw32)
402         ac_executable_extensions=".exe"
403         BUILDEXEEXT=".exe"
404     ;;
405     os2*)
406         BUILDEXEEXT=".exe"
407     ;;
408     *)
409     ;;
410 esac
411 AC_SUBST([BUILDEXEEXT])
413 dnl Android is linux, but a bit different
414 AS_IF([test "$SYS" = linux],[
415     AC_MSG_CHECKING([for an Android system])
416     AC_PREPROC_IFELSE([AC_LANG_PROGRAM(
417         [[#ifndef __ANDROID__
418          # error Not Android
419          #endif
420         ]],[[;]])
421     ],[
422       HAVE_ANDROID="1"
423       AC_MSG_RESULT([yes])
424     ],[
425       AC_MSG_RESULT([no])
426     ])
428 AM_CONDITIONAL([HAVE_ANDROID], [test "${HAVE_ANDROID}" = "1"])
431 dnl  Check for the contrib directory
433 AC_ARG_WITH(contrib,
434   AS_HELP_STRING([--with-contrib[=DIR]],
435     [search for 3rd party libraries in DIR/include and DIR/lib])
437 AC_MSG_CHECKING([for 3rd party libraries path])
438 AS_IF([test -z "${with_contrib}" || test "${with_contrib}" = "yes"], [
439   CONTRIB_DIR="${srcdir}/contrib/${host}"
440   AS_IF([test ! -d "${CONTRIB_DIR}"], [
441     echo "${CONTRIB_DIR} not found" >&AS_MESSAGE_LOG_FD
442     CONTRIB_DIR="${srcdir}/contrib/`$CC -dumpmachine`"
443     AS_IF([test ! -d "${CONTRIB_DIR}"], [
444       echo "${CONTRIB_DIR} not found" >&AS_MESSAGE_LOG_FD
445       CONTRIB_DIR=""
446       AC_MSG_RESULT([not found])
447     ])
448   ])
449 ], [
450   AS_IF([test "${with_contrib}" != "no"], [
451     CONTRIB_DIR="${with_contrib}"
452   ], [
453     CONTRIB_DIR=""
454     AC_MSG_RESULT([disabled])
455   ])
457 AS_IF([test -n "${CONTRIB_DIR}"], [
458   AS_IF([test -d "${CONTRIB_DIR}/lib"],[
459     CONTRIB_DIR=`cd "${CONTRIB_DIR}" && pwd`
460   ], [
461     echo "${CONTRIB_DIR}/lib not found" >&AS_MESSAGE_LOG_FD
462     CONTRIB_DIR=""
463     AC_MSG_RESULT([not usable])
464   ])
467 AS_IF([test -n "${CONTRIB_DIR}"], [
468   AC_MSG_RESULT([${CONTRIB_DIR}])
469   CPPFLAGS="${CPPFLAGS} -I${CONTRIB_DIR}/include"
470   CFLAGS="${CFLAGS} -I${CONTRIB_DIR}/include"
471   CXXFLAGS="${CXXFLAGS} -I${CONTRIB_DIR}/include"
472   OBJCFLAGS="${OBJCFLAGS} -I${CONTRIB_DIR}/include -F${CONTRIB_DIR} -F${CONTRIB_DIR}/Frameworks"
473   PKG_CONFIG_PATH="${CONTRIB_DIR}/lib/pkgconfig:${CONTRIB_DIR}/share/pkgconfig:${PKG_CONFIG_PATH}"
474   case "${build_os}" in
475       mingw32)
476           export PKG_CONFIG_PATH=`cygpath -mp ${PKG_CONFIG_PATH}`
477       ;;
478       *)
479           export PKG_CONFIG_PATH="${PKG_CONFIG_PATH}"
480       ;;
481   esac
482   LDFLAGS="${LDFLAGS} -L${CONTRIB_DIR}/lib"
484   AS_IF([test -z "$LUAC"], [
485     dnl Old contribs mixed cross-tools and cross-compiled executables
486     AS_IF([test -x "${CONTRIB_DIR}/bin/luac${BUILDEXEEXT}"], [
487       LUAC="${CONTRIB_DIR}/bin/luac${BUILDEXEEXT}"
488     ])
490     dnl Newer contribs follow usual name space rules
491     AS_IF([test -x "${CONTRIB_DIR}/../bin/${host_alias}-luac${BUILDEXEEXT}"], [
492       LUAC="${CONTRIB_DIR}/../bin/${host_alias}-luac${BUILDEXEEXT}"
493     ])
494   ])
496   AS_IF([test "${SYS}" = "darwin"], [
497     export LD_LIBRARY_PATH="${CONTRIB_DIR}/lib:$LD_LIBRARY_PATH"
498     export DYLD_LIBRARY_PATH="${CONTRIB_DIR}/lib:$DYLD_LIBRARY_PATH"
499   ])
500 ], [
501   AS_IF([test -n "${with_contrib}" && test "${with_contrib}" != "no"], [
502     AC_MSG_ERROR([Third party libraries not found!])
503   ])
505 AC_SUBST([CONTRIB_DIR])
507 dnl Add extras/tools to the PATH
508 TOOLS_DIR="${srcdir}/extras/tools/build/bin"
509 AS_IF([test -d "${TOOLS_DIR}"], [
510     TOOLS_DIR=`cd "${TOOLS_DIR}" && pwd`
511     export PATH="${TOOLS_DIR}":$PATH
515 dnl  Libtool
516 dnl  It's very bad, but our former custom system was worst
517 dnl  -- Courmisch
520 dnl override platform specific check for dependent libraries
521 dnl otherwise libtool linking of shared libraries will
522 dnl fail on anything other than pass_all.
523 AC_CACHE_VAL(lt_cv_deplibs_check_method,
524     [lt_cv_deplibs_check_method=pass_all])
526 LT_INIT([dlopen win32-dll shared disable-static])
527 LT_LANG([C++])
528 LT_LANG([Windows Resource])
530 DOLT
532 lt_cv_deplibs_check_method=pass_all
534 AS_IF([test "${enable_shared}" = "no" -a "${enable_vlc}" != "no"], [
535   AC_MSG_ERROR([VLC is based on plugins. Shared libraries cannot be disabled.])
539 dnl Gettext stuff
541 AM_GNU_GETTEXT_VERSION([0.19.8])
542 AM_GNU_GETTEXT([external], [need-formatstring-macros])
545 dnl Iconv stuff
547 AM_ICONV
550 dnl checks for mingw
551 AS_IF([test "${SYS}" = "mingw32"], [
553 AC_PREPROC_IFELSE([AC_LANG_SOURCE([
554 #if !defined(__MINGW32__)
555 # error Not compiling with mingw
556 #endif
557     ])], [
559 dnl Check for broken versions of mingw-runtime compatability library
560     AC_MSG_CHECKING(for broken mingw-runtime)
561     AC_PREPROC_IFELSE([AC_LANG_SOURCE([
562 #include <_mingw.h>
563 #if defined(__MINGW64_VERSION_MAJOR)
564 # if __MINGW64_VERSION_MAJOR < 5
565 #  error Update your mingw-w64! This one is too old.
566 # endif
567 #else
568 # error You cannot compile with Mingw. Use Mingw-w64!
569 #endif
570     ])], [
571         AC_MSG_RESULT([ok])
572     ], [
573         AC_MSG_RESULT([present])
574         AC_MSG_ERROR([LibVLC requires Mingw-w64 version 5.0 or higher!])
575     ])
577     dnl force use of mingw provided c99 *printf over msvcrt
578     CPPFLAGS="${CPPFLAGS} -D__USE_MINGW_ANSI_STDIO=1"
580     dnl Check for the need to include the mingwex lib for mingw32
581     VLC_SAVE_FLAGS
582     AC_CHECK_LIB([mingwex], [opendir],
583         AC_CHECK_LIB([mingw32], [opendir],,
584             [VLC_ADD_LIBS([libvlccore],[-lmingwex])])
585     )
586     VLC_RESTORE_FLAGS
587     ], [
588         AC_MSG_RESULT([Not compiling with mingw])
589     ])
591     dnl Check for fnative-struct or mms-bitfields support for mingw32
592     AX_CHECK_COMPILE_FLAG([-mms-bitfields], [
593         AX_APPEND_FLAG([-mms-bitfields], [CFLAGS])
594         AX_APPEND_FLAG([-mms-bitfields], [CXXFLAGS])
595         # Check for the warning flag without "-Wno-", GCC accepts
596         # -Wno-<anything> for unsupported warnings, which can trigger
597         # other warnings instead.
598         AX_CHECK_COMPILE_FLAG([-Wincompatible-ms-struct], [
599             AX_APPEND_FLAG([-Wno-incompatible-ms-struct], [CFLAGS])
600             AX_APPEND_FLAG([-Wno-incompatible-ms-struct], [CXXFLAGS])
601         ])
602     ], [
603         AX_CHECK_COMPILE_FLAG([-fnative-struct], [
604             AX_APPEND_FLAG([-fnative-struct], [CFLAGS])
605             AX_APPEND_FLAG([-fnative-struct], [CXXFLAGS])
606         ])
607     ])
612 dnl Buggy glibc prevention. Purposedly not cached.
613 dnl See sourceware.org bugs 5058 and 5443.
614 dnl Ubuntu alone has 20 bug numbers for this...
616 AC_MSG_CHECKING(for buggy GNU/libc versions)
617 AC_PREPROC_IFELSE([AC_LANG_SOURCE([
618 #include <limits.h>
619 #if defined (__GLIBC__) && (__GLIBC__ == 2) \
620   && (__GLIBC_MINOR__ >= 5) && (__GLIBC_MINOR__ <= 7)
621 # error GNU/libc with dcgettext killer bug!
622 #endif
623 ])], [
624   AC_MSG_RESULT([not present])
625 ], [
626   AC_MSG_RESULT([found])
627   AS_IF([test "x${enable_nls}" != "xno"], [
628     AC_MSG_ERROR([Buggy GNU/libc (version 2.5 - 2.7) present. VLC would crash; there is no viable
629 work-around for this. Check with your distribution vendor on how to update the
630 glibc run-time. Alternatively, build with --disable-nls.])
631   ])
634 dnl Plugin compilation stuff
636 VLC_LIBRARY_SUFFIX
638 dnl Check for system libs needed
639 need_libc=false
641 dnl Check for usual libc functions
642 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])
643 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])
644 AC_REPLACE_FUNCS([gettimeofday])
645 AC_CHECK_FUNC(fdatasync,,
646   [AC_DEFINE(fdatasync, fsync, [Alias fdatasync() to fsync() if missing.])
649 VLC_REPLACE_DECL([realpath], [#include <stdlib.h>])
651 dnl mingw64 implements those as static inline, not functions with C linkage
652 VLC_REPLACE_DECL([asprintf], [#include <stdio.h>])
653 VLC_REPLACE_DECL([vasprintf], [#include <stdio.h>])
654 VLC_REPLACE_DECL([gmtime_r], [#include <time.h>])
655 VLC_REPLACE_DECL([localtime_r], [#include <time.h>])
657 dnl C11 static_assert()
658 AC_MSG_CHECKING([for static_assert in assert.h])
659 AC_LINK_IFELSE([AC_LANG_PROGRAM([#include <assert.h>], [
660 static_assert(1, "The impossible happened.");
661 ])], [
662   AC_MSG_RESULT([yes])
663   AC_DEFINE([HAVE_STATIC_ASSERT], [1], [Define to 1 if <assert.h> defines static_assert.])
664 ], [
665   AC_MSG_RESULT([no])
668 # Windows CE does not have strcoll()
669 AC_FUNC_STRCOLL
671 dnl Check for non-standard system calls
672 case "$SYS" in
673   "linux")
674     AC_CHECK_FUNCS([eventfd vmsplice sched_getaffinity recvmmsg memfd_create])
675     ;;
676   "mingw32")
677     AC_CHECK_FUNCS([_lock_file])
678     ;;
679 esac
681 AH_BOTTOM([#include <vlc_fixups.h>])
683 dnl Check for struct pollfd
684 AC_CHECK_TYPES([struct pollfd],,,
685 [#include <sys/types.h>
686 #if HAVE_POLL
687 # include <poll.h>
688 #elif defined (_WIN32)
689 # include <winsock2.h>
690 #endif
693 dnl Check for struct timespec
694 AC_CHECK_TYPES([struct timespec],,,
695 [#include <time.h>])
697 dnl Check for max_align_t
698 AC_CHECK_TYPES([max_align_t],,,
699 [#include <stddef.h>])
701 dnl Checks for socket stuff
702 VLC_SAVE_FLAGS
703 SOCKET_LIBS=""
704 AC_SEARCH_LIBS(connect, [socket], [
705   AS_IF([test "$ac_cv_search_connect" != "none required"], [
706     SOCKET_LIBS="$ac_cv_search_connect"
707   ])
708 ], [
709   AS_IF([test "${SYS}" = "mingw32"], [
710     SOCKET_LIBS="-lws2_32 -liphlpapi"
711   ])
714 AC_SEARCH_LIBS([inet_pton], [nsl], [
715  AS_IF([test "$ac_cv_search_inet_pton" != "none required"], [
716     SOCKET_LIBS="$ac_cv_search_inet_pton $SOCKET_LIBS"
717   ])
718 ],, [${SOCKET_LIBS}])
720 LIBS="${LIBS} ${SOCKET_LIBS}"
721 AC_LINK_IFELSE([
722     AC_LANG_PROGRAM([#ifdef _WIN32
723         #include <ws2tcpip.h>
724         #include <windows.h>
725         # if _WIN32_WINNT < 0x600
726         #  error Needs vista+
727         # endif
728         #else
729         #include <sys/socket.h>
730         #include <arpa/inet.h>
731         #endif], [
732         char dst[[sizeof(struct in_addr)]];
733         inet_pton(AF_INET, "127.0.0.1", dst);
734     ])],[AC_DEFINE([HAVE_INET_PTON],[1],[Define to 1 if you have inet_pton function])],[AC_LIBOBJ([inet_pton])])
735 AC_CHECK_TYPES([struct if_nameindex],,,[#include <net/if.h>])
736 AC_CHECK_FUNCS([if_nameindex])
737 VLC_RESTORE_FLAGS
738 AC_SUBST([SOCKET_LIBS])
740 dnl Check for socklen_t
741 AH_TEMPLATE(socklen_t, [Define to `int' if <sys/socket.h> does not define.])
742 AC_CACHE_CHECK([for socklen_t in sys/socket.h], dnl ` (fix VIM syntax highlight
743 ac_cv_type_socklen_t,
744 [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([
745 [#include <sys/types.h>
746 #ifdef _WIN32
747 # include <winsock2.h>
748 # include <ws2tcpip.h>
749 #else
750 # include <sys/socket.h>
751 #endif]], [[socklen_t len; len = 0;]])],
752 ac_cv_type_socklen_t=yes,
753 ac_cv_type_socklen_t=no)])
754 AS_IF([test "$ac_cv_type_socklen_t" = no],
755  [AC_DEFINE(socklen_t, unsigned int)])
757 dnl Check for struct sockaddr_storage
758 AH_TEMPLATE(sockaddr_storage, [Define to `sockaddr' if <sys/socket.h> does not define.]) dnl ` (fix VIM syntax highlight
759 AH_TEMPLATE(ss_family, [Define to `sa_family' if <sys/socket.h> does not define.]) dnl ` (fix VIM syntax highlight
760 AC_CACHE_CHECK([for struct sockaddr_storage], ac_cv_struct_sockaddr_storage,
761   [AC_TRY_COMPILE(
762     [#include <sys/types.h>
763      #if defined( _WIN32 )
764      # include <winsock2.h>
765      #else
766      # include <sys/socket.h>
767      #endif], [struct sockaddr_storage addr;],
768      ac_cv_struct_sockaddr_storage=yes,
769      ac_cv_struct_sockaddr_storage=no)])
770 AS_IF([test "${ac_cv_struct_sockaddr_storage}" = no], [
771   AC_DEFINE(sockaddr_storage, sockaddr)
772   AC_DEFINE(ss_family, sa_family)
775 dnl FreeBSD has a gnugetopt library for this:
776 GNUGETOPT_LIBS=""
777 AC_CHECK_FUNC(getopt_long,, [
778   AC_CHECK_LIB([gnugetopt],[getopt_long], [
779     GNUGETOPT_LIBS="-lgnugetopt"
780   ])
782 AC_SUBST([GNUGETOPT_LIBS])
784 AC_CHECK_LIB([m], [cos], [
785   LIBM="-lm"
786 ], [
787   LIBM=""
789 AC_SUBST([LIBM])
791 AC_CHECK_LIB([m], [lrintf], [
792   AC_DEFINE(HAVE_LRINTF, 1, [Define to 1 if you have the lrintf function])
793   VLC_ADD_LIBS([skins2],[-lm])
795 AC_CHECK_LIB([m], [nanf],
796   AC_DEFINE(HAVE_NANF, 1, [Define to 1 if you have the NANF function])
798 AC_CHECK_LIB([m], [sincos], [
799   AC_DEFINE(HAVE_SINCOS, 1, [Define to 1 if you have the sincos function.])
800 ], [
801   AC_LIBOBJ([sincos])
804 AC_MSG_CHECKING([broken qsort_r prototype])
805 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([#include <stdlib.h>
807 _Static_assert(_Generic((qsort_r),
808     void (*)(void *, size_t, size_t, void *,
809              int (*)(void *, const void *, const void *)) : 1, default: 0),
810     "Bad prototype not matched");
811 ])], [
812   AC_MSG_RESULT([broken])
813   AC_DEFINE([HAVE_BROKEN_QSORT_R], 1, [Defined to 1 if the qsort_r() prototype contradicts the upcoming POSIX standard.])
814 ], [
815   AC_MSG_RESULT([no])
818 AC_MSG_CHECKING([_Thread_local support])
819 AC_COMPILE_IFELSE([AC_LANG_SOURCE([_Thread_local int foo = 0;
820                    int main() {}])], [
821     AC_MSG_RESULT([ok])
822     AC_DEFINE(HAVE_THREAD_LOCAL, 1, [Defined to 1 if C11 _Thread_local storage qualifier is supported])
823 ],[ AC_MSG_RESULT([no])])
825 dnl __STDC_NO_THREADS__ can't be trusted on some platforms.
826 dnl check for its availability explicitely
827 AC_CHECK_HEADERS([threads.h])
829 AC_CHECK_LIB([anl],[getaddrinfo_a],[
830   AC_DEFINE(HAVE_LIBANL, 1, [Define to 1 if you have the anl library])
833 dnl Check for dynamic plugins
834 LIBDL=""
835 have_dynamic_objects="no"
836 VLC_SAVE_FLAGS
837 AC_SEARCH_LIBS(dlsym, [dl svld], [
838   AS_IF([test "$ac_cv_search_dlsym" != "none required"], [
839     LIBDL="$ac_cv_search_dlsym"
840   ])
841   have_dynamic_objects="yes"
843 VLC_RESTORE_FLAGS
845 # Windows
846 AS_IF([test "${SYS}" = "mingw32"], [
847   LIBDL=""
848   have_dynamic_objects="yes" #assume we can use shared objects
851 AC_ARG_WITH([libfuzzer],
852     AS_HELP_STRING([--with-libfuzzer=DIR],
853         [use libFuzzer library from DIR and triggers sanitize coverage (default disabled)]),
854      [],
855      [with_libfuzzer=no])
856 AS_VAR_IF(with_libfuzzer, no, [], [
857     enable_shared=no
858     enable_static=yes
859     enable_vlc=no
861 AM_CONDITIONAL([HAVE_LIBFUZZER], [test "${with_libfuzzer}" != "no"])
863 AS_IF([test "${enable_shared}" = "no"], [
864   have_dynamic_objects=no
866 AM_CONDITIONAL([HAVE_DYNAMIC_PLUGINS], [test "${have_dynamic_objects}" != "no"])
868 AC_SUBST([LIBDL])
870 AS_IF([test "${SYS}" != "mingw32"], [
871   AC_SEARCH_LIBS([clock_nanosleep], [rt pthread], [
872     AS_IF([test "$ac_cv_search_clock_nanosleep" != "none required"], [
873       LIBRT="$ac_cv_search_clock_nanosleep"
874     ])
875   ], [
876     AC_SEARCH_LIBS([nanosleep], [rt pthread posix4], [
877       AS_IF([test "$ac_cv_search_nanosleep" != "none required"], [
878         LIBRT="$ac_cv_search_nanosleep"
879       ])
880     ])
881   ])
883 AC_SUBST([LIBRT])
886 dnl Check for headers
889 dnl  POSIX
890 AC_CHECK_HEADERS([arpa/inet.h pthread.h search.h sys/shm.h sys/socket.h sys/uio.h])
891 AC_CHECK_HEADERS([net/if.h], [], [],
893 #include <sys/types.h>
894 #include <sys/socket.h>
896 AC_CHECK_HEADER([syslog.h], [have_syslog="yes"], [have_syslog="no"])
897 AM_CONDITIONAL([HAVE_SYSLOG], [test "$have_syslog" = "yes"])
899 dnl  BSD
900 AC_CHECK_HEADERS([netinet/tcp.h netinet/udplite.h sys/param.h sys/mount.h])
902 dnl  GNU/Linux
903 AC_CHECK_HEADERS([features.h getopt.h linux/dccp.h linux/magic.h sys/eventfd.h])
905 dnl  MacOS
906 AC_CHECK_HEADERS([xlocale.h])
908 dnl Check if C++ headers define locale_t
909 AC_LANG_PUSH(C++)
910 AC_CACHE_CHECK([if C++ headers define locale_t],
911   [ac_cv_cxx_locale_t],
912   [ac_cv_cxx_locale_t=no
913    AC_TRY_COMPILE([#include <locale>], [locale_t loc;],
914                     [ac_cv_cxx_locale_t=yes])])
915 if test "${ac_cv_cxx_locale_t}" != "no"; then
916   AC_DEFINE(HAVE_CXX_LOCALE_T, 1, Define to 1 if C++ headers define locale_t)
918 AC_LANG_POP(C++)
920 dnl LP64 and LLP64 architectures had better define ssize_t by themselves...
921 AH_TEMPLATE(ssize_t, [Define to `int' if <stddef.h> does not define.]) dnl ` (fix VIM syntax highlight
922 AC_CHECK_TYPE(ssize_t,, [
923   AC_DEFINE(ssize_t, int)
926 dnl It seems that autoconf detects pkg-config only during the first
927 dnl PKG_CHECK_MODULES from configure.ac - which makes sense. But in our case,
928 dnl it is nested within a conditional block, so it was not working right.
929 PKG_PROG_PKG_CONFIG()
931 dnl On some OS we need static linking
932 AS_IF([test -n "${PKG_CONFIG}" ],[
933     AS_IF([test "${SYS}" = "mingw32" -o "${SYS}" = "darwin" -o "${SYS}" = "os2" ],[
934         PKG_CONFIG="${PKG_CONFIG} --static"
935     ])
940 dnl Check for zlib.h and -lz if available
942 AC_CHECK_HEADERS([zlib.h], [ have_zlib=yes ], [ have_zlib=no ])
943 AM_CONDITIONAL([HAVE_ZLIB], [ test "${have_zlib}" = "yes" ])
944 if test "${have_zlib}" = "yes"
945 then
946   VLC_ADD_LIBS([sap],[-lz])
951 dnl Domain name i18n support via GNU libidn
953 PKG_CHECK_MODULES([IDN], [libidn], [
954   have_libidn="yes"
955   AC_DEFINE([HAVE_IDN], 1, [Define to 1 if you have GNU libidn.])
956 ], [
957   have_libidn="no"
961 dnl Check for dbus
962 AC_ARG_ENABLE([dbus],
963   AS_HELP_STRING([--enable-dbus],
964     [compile D-Bus message bus support (default enabled)]))
965 have_dbus="no"
966 AS_IF([test "${enable_dbus}" != "no"], [
967   PKG_CHECK_MODULES(DBUS, [dbus-1 >= 1.6.0], [
968     have_dbus="yes"
969   ], [
970     AS_IF([test -n "${enable_dbus}"], [
971       AC_MSG_ERROR([${DBUS_PKG_ERRORS}.])
972     ], [
973       AC_MSG_WARN([${DBUS_PKG_ERRORS}.])
974     ])
975   ])
977 AM_CONDITIONAL([HAVE_DBUS], [test "${have_dbus}" = "yes"])
980 dnl Check for systemd
981 PKG_CHECK_MODULES([SYSTEMD], [libsystemd], [
982   have_systemd="yes"
983 ], [
984   AC_MSG_WARN([${SYSTEMD_PKG_ERRORS}.])
986 AM_CONDITIONAL([HAVE_SYSTEMD], [test "${have_systemd}" = "yes"])
989 EXTEND_HELP_STRING([Optimization options:])
991 dnl  Compiler warnings
994 AX_APPEND_COMPILE_FLAGS([-Wall -Wextra -Wsign-compare -Wundef -Wpointer-arith -Wvolatile-register-var -Wformat -Wformat-security -Wduplicated-branches -Wduplicated-cond], [CFLAGS])
995 AX_APPEND_COMPILE_FLAGS([-Wall -Wextra -Wsign-compare -Wundef -Wpointer-arith -Wvolatile-register-var -Wformat -Wformat-security -Wduplicated-branches -Wduplicated-cond], [CXXFLAGS])
997 AX_APPEND_COMPILE_FLAGS([-Wbad-function-cast -Wwrite-strings -Wmissing-prototypes -Werror-implicit-function-declaration -Winit-self -Wlogical-op -Wshadow=local -Wmultistatement-macros], [CFLAGS])
998 AX_APPEND_COMPILE_FLAGS([-pipe], [CFLAGS])
1001 dnl  Debugging mode
1003 AC_ARG_ENABLE([debug],
1004   AS_HELP_STRING([--disable-debug],
1005     [disable run-time assertions (default enabled)]),,
1006   [enable_debug="yes"])
1007 AH_TEMPLATE(NDEBUG,
1008             [Define to 1 if debug code should NOT be compiled])
1009 AS_IF([test "${enable_debug}" != "no"], [
1010   AC_CHECK_HEADERS([valgrind/valgrind.h])
1011 ], [
1012   AC_DEFINE(NDEBUG)
1016 dnl  Profiling
1018 AC_ARG_ENABLE([gprof],
1019   AS_HELP_STRING([--enable-gprof],[profile with gprof (default disabled)]),,
1020   [enable_gprof="no"])
1021 AS_IF([test "${enable_gprof}" != "no"], [
1022   CFLAGS="${CFLAGS} -pg"
1023   CXXFLAGS="${CXXFLAGS} -pg"
1024   OBJCFLAGS="${OBJCFLAGS} -pg"
1025   LDFLAGS="${LDFLAGS} -pg"
1028 AC_ARG_ENABLE([cprof],
1029   AS_HELP_STRING([--enable-cprof],[profile with cprof (default disabled)]),,
1030   [enable_cprof="no"])
1031 AS_IF([test "${enable_gprof}" != "no"], [
1032   CFLAGS="${CFLAGS} -finstrument-functions"
1033   CXXFLAGS="${CXXFLAGS} -finstrument-functions"
1034   OBJCFLAGS="${OBJCFLAGS} -finstrument-functions"
1035   LDFLAGS="${LDFLAGS} -finstrument-functions"
1039 dnl  Test coverage
1041 AC_ARG_ENABLE([coverage],
1042   AS_HELP_STRING([--enable-coverage],
1043     [build for test coverage (default disabled)]),,
1044   [enable_coverage="no"])
1045 AS_IF([test "${enable_coverage}" != "no"], [
1046   CFLAGS="-fprofile-arcs -ftest-coverage ${CFLAGS}"
1047   CXXFLAGS="-fprofile-arcs -ftest-coverage ${CXXFLAGS}"
1048   LDFLAGS="-lgcov ${LDFLAGS}"
1051 AS_IF([test "${SYS}" != "mingw32" -a "${SYS}" != "os2"], [
1052   VLC_SAVE_FLAGS
1053   CFLAGS="${CFLAGS} -fvisibility=hidden"
1054   CXXFLAGS="${CXXFLAGS} -fvisibility=hidden"
1055   OBJCFLAGS="${OBJCFLAGS} -fvisibility=hidden"
1056   AC_CACHE_CHECK([if $CC accepts -fvisibility=hidden],
1057                  [ac_cv_c_visibility_hidden], [
1058     AC_COMPILE_IFELSE([AC_LANG_PROGRAM()], [
1059       ac_cv_c_visibility_hidden=yes
1060     ], [
1061       ac_cv_c_visibility_hidden=no
1062     ])
1063   ])
1064   AS_IF([test "${ac_cv_c_visibility_hidden}" = "no"], [VLC_RESTORE_FLAGS])
1068 dnl Sanitizer flags
1070 AC_ARG_WITH([sanitizer],
1071     AS_HELP_STRING([--with-sanitizer=(address/memory/undefined/thread)],
1072         [build with sanitizer flags (default disabled)]),
1073      [],
1074      [with_sanitizer=no])
1076 AS_VAR_IF(with_sanitizer, no, [], [
1077     AX_CHECK_COMPILE_FLAG([-fsanitize=${with_sanitizer}], [
1078         AX_APPEND_FLAG([-fsanitize=${with_sanitizer}])
1079         AX_APPEND_FLAG([-fsanitize=${with_sanitizer}], [CXXFLAGS])
1080         AX_APPEND_FLAG([-fsanitize=${with_sanitizer}], [LDFLAGS])
1081     ], [
1082         AC_MSG_ERROR(["-fsanitize=${with_sanitizer} not supported!"])
1083     ])
1084     AX_APPEND_FLAG([-g])
1085     AX_APPEND_FLAG([-g], [CXXFLAGS])
1087     AS_IF([test -z "${with_sanitizer##*address*}" ], [
1088        AX_APPEND_COMPILE_FLAGS([-fsanitize-address-use-after-scope -fno-omit-frame-pointer -fsanitize=pointer-compare -fsanitize=pointer-subtract])
1089        AX_APPEND_COMPILE_FLAGS([-fsanitize-address-use-after-scope -fno-omit-frame-pointer -fsanitize=pointer-compare -fsanitize=pointer-subtract], [CXXFLAGS])
1090     ])
1091     AS_IF([test -z "${with_sanitizer##*memory*}" ], [
1092         AX_APPEND_COMPILE_FLAGS([-fPIE -pie])
1093         AX_APPEND_COMPILE_FLAGS([-fPIE -pie], [CXXFLAGS])
1094     ])
1095     AS_IF([test -z "${with_sanitizer##*thread*}" ], [
1096         AX_APPEND_COMPILE_FLAGS([-fPIE -pie])
1097         AX_APPEND_COMPILE_FLAGS([-fPIE -pie], [CXXFLAGS])
1098     ])
1102 dnl  Enable/disable optimizations
1104 AC_ARG_ENABLE([optimizations],
1105   AS_HELP_STRING([--disable-optimizations],
1106     [disable compiler optimizations (default enabled)]),,
1107   [enable_optimizations="yes"])
1109 dnl Check for various optimization flags
1110 AS_IF([test "${enable_optimizations}" != "no"], [
1112   dnl -O3 only in production builds
1113   AS_IF([test "${enable_debug}" = "no"], [
1114     VLC_SAVE_FLAGS
1115     CFLAGS="${CFLAGS} -O3"
1116     CXXFLAGS="${CXXFLAGS} -O3"
1117     OBJCFLAGS="${OBJCFLAGS} -O3"
1118     AC_CACHE_CHECK([if $CC accepts -O3],  [ac_cv_c_o3], [
1119       AC_COMPILE_IFELSE([AC_LANG_PROGRAM()], [
1120         ac_cv_c_o3=yes
1121       ], [
1122         ac_cv_c_o3=no
1123       ])
1124     ])
1125     AS_IF([test "${ac_cv_c_o3}" = "no"], [VLC_RESTORE_FLAGS])
1126   ])
1128   dnl Check for fast maths
1129   AX_APPEND_COMPILE_FLAGS([-fno-math-errno -funsafe-math-optimizations -fno-rounding-math -fno-signaling-nans -fcx-limited-range], [CFLAGS])
1130   AX_APPEND_COMPILE_FLAGS([-fno-math-errno -funsafe-math-optimizations -fno-rounding-math -fno-signaling-nans -fcx-limited-range], [CXXFLAGS])
1132 AH_BOTTOM([
1133 #if defined(_MSC_VER) && !defined(__clang__)
1134 # pragma fenv_access(off)
1135 # pragma fp_contract(on)
1136 #elif defined(__GNUC__)
1137 /* Not supported so far */
1138 #else
1139 # pragma STDC FENV_ACCESS OFF
1140 # pragma STDC FP_CONTRACT ON
1141 #endif
1144   dnl Check for -funroll-loops
1145   VLC_SAVE_FLAGS
1146   CFLAGS="${CFLAGS} -funroll-loops"
1147   CXXFLAGS="${CXXFLAGS} -funroll-loops"
1148   OBJCFLAGS="${OBJCFLAGS} -funroll-loops"
1149   AC_CACHE_CHECK([if $CC accepts -funroll-loops], [ac_cv_c_unroll_loops], [
1150     AC_COMPILE_IFELSE([AC_LANG_PROGRAM()], [
1151       ac_cv_c_unroll_loops=yes
1152     ], [
1153       ac_cv_c_unroll_loops=no
1154     ])
1155   ])
1156   AS_IF([test "${ac_cv_c_unroll_loops}" = "no"], [VLC_RESTORE_FLAGS])
1158   AS_IF([test "$enable_debug" = "no"], [
1159     dnl Check for -fomit-frame-pointer
1160     VLC_SAVE_FLAGS
1161     CFLAGS="${CFLAGS} -fomit-frame-pointer"
1162     CXXFLAGS="${CXXFLAGS} -fomit-frame-pointer"
1163     OBJCFLAGS="${OBJCFLAGS} -fomit-frame-pointer"
1164     AC_CACHE_CHECK([if $CC accepts -fomit-frame-pointer],
1165       [ac_cv_c_omit_frame_pointer], [
1166       AC_COMPILE_IFELSE([AC_LANG_PROGRAM()], [
1167         ac_cv_c_omit_frame_pointer=yes
1168       ], [
1169         ac_cv_c_omit_frame_pointer=no
1170       ])
1171     ])
1172     AS_IF([test "${ac_cv_c_omit_frame_pointer}" = "no"], [VLC_RESTORE_FLAGS])
1173   ])
1177 AC_ARG_ENABLE([ssp],
1178   AS_HELP_STRING([--disable-ssp],
1179   [disable stack smashing protection (default enabled for optimized builds)]), [],
1180   [enable_ssp="yes"])
1182 AS_IF([test "${enable_ssp}" != "no" -a "${enable_optimizations}" != "no"], [
1183   VLC_SAVE_FLAGS
1184   AX_APPEND_COMPILE_FLAGS([-fstack-protector-strong])
1185   AX_APPEND_COMPILE_FLAGS([-fstack-protector-strong], [CXXFLAGS])
1186   dnl Win32 requires linking to ssp for stack-protection
1187   AS_IF([test "${SYS}" = "mingw32"], [
1188       LDFLAGS="${LDFLAGS} -lssp"
1189       AC_CACHE_CHECK([if linker supports stack protectors], [ac_cv_ld_ssp], [
1190         AC_TRY_LINK([#include <stdio.h>],[char buf[100]; fgets(buf, sizeof(buf), stdin);], [
1191           ac_cv_ld_ssp="yes"
1192         ], [
1193           ac_cv_ld_ssp="no"
1194         ])
1195       ])
1196       AS_IF([test "${ac_cv_ld_ssp}" = "no"], [VLC_RESTORE_FLAGS])
1197   ])
1200 AS_IF([test "${SYS}" = "mingw32"], [
1201     dnl library for BCrypt APIs
1202     AS_IF([test "${vlc_winstore_app}" = 1],
1203           [LDFLAGS="${LDFLAGS} -lbcrypt"])
1206 VLC_SAVE_FLAGS
1207 LDFLAGS="${LDFLAGS} -Wl,-Bsymbolic"
1208 AC_CACHE_CHECK([if linker supports -Bsymbolic], [ac_cv_ld_bsymbolic], [
1209   AC_TRY_LINK([],, [
1210     ac_cv_ld_bsymbolic="-Wl,-Bsymbolic"
1211   ], [
1212     ac_cv_ld_bsymbolic=""
1213   ])
1215 VLC_RESTORE_FLAGS
1216 SYMBOLIC_LDFLAGS="${ac_cv_ld_bsymbolic}"
1217 AC_SUBST([SYMBOLIC_LDFLAGS])
1219 VLC_SAVE_FLAGS
1220 LDFLAGS="${LDFLAGS} -Wl,-z,defs"
1221 AC_CACHE_CHECK([if linker supports -z,defs], [ac_cv_ld_z_defs], [
1222   AC_TRY_LINK([],, [
1223     ac_cv_ld_z_defs="yes"
1224   ], [
1225     ac_cv_ld_z_defs="no"
1226   ])
1228 AS_IF([test "${ac_cv_ld_z_defs}" = "no"], [VLC_RESTORE_FLAGS])
1230 dnl Check for __attribute__((packed))
1231 AC_CACHE_CHECK([for __attribute__((packed))],
1232   [ac_cv_c_attribute_packed],
1233   [ac_cv_c_attribute_packed=no
1234    AC_TRY_COMPILE(, [struct __attribute__((__packed__)) foo { int a; } b; (void)b;],
1235                     [ac_cv_c_attribute_packed=yes])])
1236 if test "${ac_cv_c_attribute_packed}" != "no"; then
1237   AC_DEFINE(HAVE_ATTRIBUTE_PACKED, 1, Support for __attribute__((packed)) for structs)
1241 dnl  Check the CPU
1243 case "${host_cpu}" in
1244   "")
1245     ARCH=unknown
1246     ;;
1247   armv*)
1248     ARCH="arm"
1249     host_cpu="arm"
1250     ;;
1251   *)
1252     ARCH="${host_cpu}"
1253     ;;
1254 esac
1256 dnl Check for backtrace() support
1257 AC_CHECK_HEADERS([execinfo.h])
1258 AC_CHECK_FUNCS([backtrace])
1261 dnl  default modules
1263 ALIASES="${ALIASES} cvlc rvlc"
1266 dnl  Accelerated modules
1269 dnl  Check for fully working MMX intrinsics
1270 dnl  We need support for -mmmx, we need <mmintrin.h>, and we also need a
1271 dnl  working compiler (http://gcc.gnu.org/bugzilla/show_bug.cgi?id=23963)
1272 AC_ARG_ENABLE([mmx],
1273   AS_HELP_STRING([--disable-mmx],
1274     [disable MMX optimizations (default auto)]),,[
1275   case "${host_cpu}" in
1276     i?86|x86_64)
1277       enable_mmx="yes"
1278       ;;
1279     *)
1280       enable_mmx="no"
1281       ;;
1282   esac
1284 have_mmx="no"
1285 have_mmxext="no"
1286 AS_IF([test "${enable_mmx}" != "no"], [
1287   ARCH="${ARCH} mmx"
1288   VLC_SAVE_FLAGS
1289   CFLAGS="${CFLAGS} -mmmx"
1290   AC_CACHE_CHECK([if $CC groks MMX intrinsics], [ac_cv_c_mmx_intrinsics], [
1291     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([
1292 [#include <mmintrin.h>
1293 #include <stdint.h>
1294 uint64_t frobzor;]], [
1295 [__m64 a, b, c;
1296 a = b = c = (__m64)frobzor;
1297 a = _mm_slli_pi16(a, 3);
1298 a = _mm_adds_pi16(a, b);
1299 c = _mm_srli_pi16(c, 8);
1300 c = _mm_slli_pi16(c, 3);
1301 b = _mm_adds_pi16(b, c);
1302 a = _mm_unpacklo_pi8(a, b);
1303 frobzor = (uint64_t)a;]])], [
1304       ac_cv_c_mmx_intrinsics=yes
1305     ], [
1306       ac_cv_c_mmx_intrinsics=no
1307     ])
1308   ])
1309   VLC_RESTORE_FLAGS
1310   AS_IF([test "${ac_cv_c_mmx_intrinsics}" != "no"], [
1311     AC_DEFINE(HAVE_MMX_INTRINSICS, 1, [Define to 1 if MMX intrinsics are available.])
1312   ])
1314   VLC_SAVE_FLAGS
1315   CFLAGS="${CFLAGS} -mmmx"
1316   AC_CACHE_CHECK([if $CC groks MMX inline assembly], [ac_cv_mmx_inline], [
1317     AC_COMPILE_IFELSE([AC_LANG_PROGRAM(,[[
1318 void *p;
1319 asm volatile("packuswb %%mm1,%%mm2"::"r"(p):"mm1", "mm2");
1321     ], [
1322       ac_cv_mmx_inline=yes
1323     ], [
1324       ac_cv_mmx_inline=no
1325     ])
1326   ])
1327   AS_IF([test "${ac_cv_mmx_inline}" != "no"], [
1328     AC_DEFINE(CAN_COMPILE_MMX, 1, [Define to 1 inline MMX assembly is available.])
1329     have_mmx="yes"
1330   ])
1332   AC_CACHE_CHECK([if $CC groks MMX EXT inline assembly],
1333                  [ac_cv_mmxext_inline], [
1334     AC_COMPILE_IFELSE([AC_LANG_PROGRAM(,[[
1335 void *p;
1336 asm volatile("maskmovq %%mm1,%%mm2"::"r"(p):"mm1", "mm2");
1338     ], [
1339       ac_cv_mmxext_inline=yes
1340     ], [
1341       ac_cv_mmxext_inline=no
1342     ])
1343   ])
1344   VLC_RESTORE_FLAGS
1345   AS_IF([test "${ac_cv_mmxext_inline}" != "no"], [
1346     AC_DEFINE(CAN_COMPILE_MMXEXT, 1, [Define to 1 if MMX EXT inline assembly is available.])
1347     have_mmxext="yes"
1348   ])
1350 AM_CONDITIONAL([HAVE_MMX], [test "${have_mmx}" = "yes"])
1351 AM_CONDITIONAL([HAVE_MMXEXT], [test "${have_mmxext}" = "yes"])
1353 dnl  Check for fully workin SSE2 intrinsics
1354 dnl  We need support for -msse[2], we need <emmintrin.h>, and we also need a
1355 dnl  working compiler (http://gcc.gnu.org/bugzilla/show_bug.cgi?id=23963)
1356 AC_ARG_ENABLE([sse],
1357   AS_HELP_STRING([--disable-sse],
1358     [disable SSE (1-4) optimizations (default auto)]),, [
1359   case "${host_cpu}" in
1360     i?86|x86_64)
1361       enable_sse=yes
1362       ;;
1363     *)
1364       enable_sse=no
1365       ;;
1366   esac
1368 have_sse2="no"
1369 AS_IF([test "${enable_sse}" != "no"], [
1370   ARCH="${ARCH} sse sse2"
1372   VLC_SAVE_FLAGS
1373   CFLAGS="${CFLAGS} -msse2"
1374   AC_CACHE_CHECK([if $CC groks SSE2 intrinsics], [ac_cv_c_sse2_intrinsics], [
1375     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([
1376 [#include <emmintrin.h>
1377 #include <stdint.h>
1378 uint64_t frobzor;]], [
1379 [__m128i a, b, c;
1380 a = b = c = _mm_set1_epi64((__m64)frobzor);
1381 a = _mm_slli_epi16(a, 3);
1382 a = _mm_adds_epi16(a, b);
1383 c = _mm_srli_epi16(c, 8);
1384 c = _mm_slli_epi16(c, 3);
1385 b = _mm_adds_epi16(b, c);
1386 a = _mm_unpacklo_epi8(a, b);
1387 frobzor = (uint64_t)_mm_movepi64_pi64(a);]])], [
1388       ac_cv_c_sse2_intrinsics=yes
1389     ], [
1390       ac_cv_c_sse2_intrinsics=no
1391     ])
1392   ])
1393   VLC_RESTORE_FLAGS
1394   AS_IF([test "${ac_cv_c_sse2_intrinsics}" != "no"], [
1395     AC_DEFINE(HAVE_SSE2_INTRINSICS, 1, [Define to 1 if SSE2 intrinsics are available.])
1396   ])
1398   VLC_SAVE_FLAGS
1399   CFLAGS="${CFLAGS} -msse"
1400   AC_CACHE_CHECK([if $CC groks SSE inline assembly], [ac_cv_sse_inline], [
1401     AC_COMPILE_IFELSE([AC_LANG_PROGRAM(,[[
1402 void *p;
1403 asm volatile("xorps %%xmm1,%%xmm2"::"r"(p):"xmm1", "xmm2");
1405     ], [
1406       ac_cv_sse_inline=yes
1407     ], [
1408       ac_cv_sse_inline=no
1409     ])
1410   ])
1412   AS_IF([test "${ac_cv_sse_inline}" != "no" -a "${SYS}" != "solaris"], [
1413     AC_DEFINE(CAN_COMPILE_SSE, 1, [Define to 1 if SSE inline assembly is available.])
1414   ])
1416   AC_CACHE_CHECK([if $CC groks SSE2 inline assembly], [ac_cv_sse2_inline], [
1417     AC_COMPILE_IFELSE([AC_LANG_PROGRAM(,[[
1418 void *p;
1419 asm volatile("punpckhqdq %%xmm1,%%xmm2"::"r"(p):"xmm1", "xmm2");
1421     ], [
1422       ac_cv_sse2_inline=yes
1423     ], [
1424       ac_cv_sse2_inline=no
1425     ])
1426   ])
1427   AS_IF([test "${ac_cv_sse2_inline}" != "no" -a "${SYS}" != "solaris"], [
1428     AC_DEFINE(CAN_COMPILE_SSE2, 1, [Define to 1 if SSE2 inline assembly is available.])
1429     have_sse2="yes"
1430   ])
1432   # SSE3
1433   AC_CACHE_CHECK([if $CC groks SSE3 inline assembly], [ac_cv_sse3_inline], [
1434     AC_COMPILE_IFELSE([AC_LANG_PROGRAM(,[[
1435 void *p;
1436 asm volatile("movsldup %%xmm1,%%xmm0"::"r"(p):"xmm0", "xmm1");
1438     ], [
1439       ac_cv_sse3_inline=yes
1440     ], [
1441       ac_cv_sse3_inline=no
1442     ])
1443   ])
1445   AS_IF([test "${ac_cv_sse3_inline}" != "no"], [
1446     AC_DEFINE(CAN_COMPILE_SSE3, 1, [Define to 1 if SSE3 inline assembly is available.]) ])
1448   # SSSE3
1449   AC_CACHE_CHECK([if $CC groks SSSE3 inline assembly], [ac_cv_ssse3_inline], [
1450     AC_COMPILE_IFELSE([AC_LANG_PROGRAM(,[[
1451 void *p;
1452 asm volatile("pabsw %%xmm0,%%xmm0"::"r"(p):"xmm0");
1454     ], [
1455       ac_cv_ssse3_inline=yes
1456     ], [
1457       ac_cv_ssse3_inline=no
1458     ])
1459   ])
1461   AS_IF([test "${ac_cv_ssse3_inline}" != "no"], [
1462     AC_DEFINE(CAN_COMPILE_SSSE3, 1, [Define to 1 if SSSE3 inline assembly is available.]) ])
1464   # SSE4.1
1465   AC_CACHE_CHECK([if $CC groks SSE4.1 inline assembly],
1466                  [ac_cv_sse4_1_inline], [
1467     AC_COMPILE_IFELSE([AC_LANG_PROGRAM(,[[
1468 void *p;
1469 asm volatile("pmaxsb %%xmm1,%%xmm0"::"r"(p):"xmm0", "xmm1");
1471     ], [
1472       ac_cv_sse4_1_inline=yes
1473     ], [
1474       ac_cv_sse4_1_inline=no
1475     ])
1476   ])
1478   AS_IF([test "${ac_cv_sse4_1_inline}" != "no"], [
1479     AC_DEFINE(CAN_COMPILE_SSE4_1, 1, [Define to 1 if SSE4_1 inline assembly is available.]) ])
1481   # SSE4.2
1482   AC_CACHE_CHECK([if $CC groks SSE4.2 inline assembly],
1483                  [ac_cv_sse4_2_inline], [
1484     AC_COMPILE_IFELSE([AC_LANG_PROGRAM(,[[
1485 void *p;
1486 asm volatile("pcmpgtq %%xmm1,%%xmm0"::"r"(p):"xmm0", "xmm1");
1488     ], [
1489       ac_cv_sse4_2_inline=yes
1490     ], [
1491       ac_cv_sse4_2_inline=no
1492     ])
1493   ])
1495   AS_IF([test "${ac_cv_sse4_2_inline}" != "no"], [
1496     AC_DEFINE(CAN_COMPILE_SSE4_2, 1, [Define to 1 if SSE4_2 inline assembly is available.]) ])
1498   # SSE4A
1499   AC_CACHE_CHECK([if $CC groks SSE4A inline assembly], [ac_cv_sse4a_inline], [
1500     AC_COMPILE_IFELSE([AC_LANG_PROGRAM(,[[
1501 void *p;
1502 asm volatile("insertq %%xmm1,%%xmm0"::"r"(p):"xmm0", "xmm1");
1504     ], [
1505       ac_cv_sse4a_inline=yes
1506     ], [
1507       ac_cv_sse4a_inline=no
1508     ])
1509   ])
1510   VLC_RESTORE_FLAGS
1511   AS_IF([test "${ac_cv_sse4a_inline}" != "no"], [
1512     AC_DEFINE([CAN_COMPILE_SSE4A], [1], [Define to 1 if SSE4A inline assembly is available.]) ])
1514 AM_CONDITIONAL([HAVE_SSE2], [test "$have_sse2" = "yes"])
1516 dnl  Check for fully workin AVX2 intrinsics
1517 dnl  We need support for -mavx[2], we need <immintrin.h>, and we also need a
1518 dnl  working compiler (http://gcc.gnu.org/bugzilla/show_bug.cgi?id=23963)
1519 AC_ARG_ENABLE([avx],
1520   AS_HELP_STRING([--disable-avx],
1521     [disable AVX (1-2) optimizations (default auto)]),, [
1522   case "${host_cpu}" in
1523     i?86|x86_64)
1524       enable_avx=yes
1525       ;;
1526     *)
1527       enable_avx=no
1528       ;;
1529   esac
1531 have_avx2="no"
1532 AS_IF([test "${enable_avx}" != "no"], [
1533   ARCH="${ARCH} avx avx2"
1535   VLC_SAVE_FLAGS
1536   CFLAGS="${CFLAGS} -mavx2"
1537   AC_CACHE_CHECK([if $CC groks AVX2 intrinsics], [ac_cv_c_avx2_intrinsics], [
1538     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([
1539 [#include <immintrin.h>
1540 #include <stdint.h>
1541 uint64_t frobzor;]], [
1542 [__m256i a, b, c;
1543 a = b = c = _mm256_set1_epi64x((int64_t)frobzor);
1544 a = _mm256_slli_epi16(a, 3);
1545 a = _mm256_adds_epi16(a, b);
1546 c = _mm256_srli_epi16(c, 8);
1547 c = _mm256_slli_epi16(c, 3);
1548 b = _mm256_adds_epi16(b, c);
1549 a = _mm256_unpacklo_epi8(a, b);
1550 frobzor = (uint64_t)_mm256_extract_epi64(a, 0);]])], [
1551       ac_cv_c_avx2_intrinsics=yes
1552     ], [
1553       ac_cv_c_avx2_intrinsics=no
1554     ])
1555   ])
1556   VLC_RESTORE_FLAGS
1557   AS_IF([test "${ac_cv_c_avx2_intrinsics}" != "no"], [
1558     AC_DEFINE(HAVE_AVX2_INTRINSICS, 1, [Define to 1 if AVX2 intrinsics are available.])
1559   ])
1561   VLC_SAVE_FLAGS
1562   CFLAGS="${CFLAGS} -mavx"
1563   AC_CACHE_CHECK([if $CC groks AVX inline assembly], [ac_cv_avx_inline], [
1564     AC_COMPILE_IFELSE([AC_LANG_PROGRAM(,[[
1565 void *p;
1566 asm volatile("xorps256 %%ymm1,%%ymm2"::"r"(p):"ymm1", "ymm2");
1568     ], [
1569       ac_cv_avx_inline=yes
1570     ], [
1571       ac_cv_avx_inline=no
1572     ])
1573   ])
1575   AS_IF([test "${ac_cv_avx_inline}" != "no" -a "${SYS}" != "solaris"], [
1576     AC_DEFINE(CAN_COMPILE_AVX, 1, [Define to 1 if AVX inline assembly is available.])
1577   ])
1579   AC_CACHE_CHECK([if $CC groks AVX2 inline assembly], [ac_cv_avx2_inline], [
1580     AC_COMPILE_IFELSE([AC_LANG_PROGRAM(,[[
1581 void *p;
1582 asm volatile("punpckhqdq256 %%ymm1,%%ymm2"::"r"(p):"ymm1", "ymm2");
1584     ], [
1585       ac_cv_avx2_inline=yes
1586     ], [
1587       ac_cv_avx2_inline=no
1588     ])
1589   ])
1590   VLC_RESTORE_FLAGS
1591   AS_IF([test "${ac_cv_avx2_inline}" != "no" -a "${SYS}" != "solaris"], [
1592     AC_DEFINE(CAN_COMPILE_AVX2, 1, [Define to 1 if AVX2 inline assembly is available.])
1593     have_avx2="yes"
1594   ])
1596 AM_CONDITIONAL([HAVE_AVX2], [test "$have_avx2" = "yes"])
1598 VLC_SAVE_FLAGS
1599 CFLAGS="${CFLAGS} -mmmx"
1600 have_3dnow="no"
1601 AC_CACHE_CHECK([if $CC groks 3D Now! inline assembly], [ac_cv_3dnow_inline], [
1602   AC_COMPILE_IFELSE([AC_LANG_PROGRAM(,[[
1603 void *p;
1604 asm volatile("pfadd %%mm1,%%mm2"::"r"(p):"mm1", "mm2");
1606   ], [
1607     ac_cv_3dnow_inline=yes
1608   ], [
1609     ac_cv_3dnow_inline=no
1610   ])
1612 VLC_RESTORE_FLAGS
1613 AS_IF([test "${ac_cv_3dnow_inline}" != "no"], [
1614   AC_DEFINE([CAN_COMPILE_3DNOW], 1,
1615             [Define to 1 if 3D Now! inline assembly is available.])
1616   have_3dnow="yes"
1618 AM_CONDITIONAL([HAVE_3DNOW], [test "$have_3dnow" = "yes"])
1621 AC_ARG_ENABLE([neon],
1622   AS_HELP_STRING([--disable-neon],
1623     [disable ARM NEON optimizations (default auto)]),, [
1624   case "${host_cpu}" in
1625     "arm")
1626       enable_neon="32"
1627       ;;
1628     "aarch64")
1629       enable_neon="64"
1630       ;;
1631     *)
1632       enable_neon="no"
1633       ;;
1634   esac
1636 AS_IF([test "${enable_neon}" != "no"], [
1637   VLC_SAVE_FLAGS
1638   AC_CACHE_CHECK([if $CCAS groks ARM NEON assembly], [ac_cv_arm_neon], [
1639     AS_IF([test "${enable_neon}" != "64"], [
1640       CFLAGS="${CFLAGS} -mfpu=neon -mhard-float"
1641       AC_COMPILE_IFELSE([
1642         AC_LANG_PROGRAM(,[[
1643 asm volatile("vqmovun.s64 d0, q1":::"d0");
1645       ], [
1646         ac_cv_arm_neon="32"
1647       ], [
1648         ac_cv_arm_neon="no"
1649       ])
1650     ], [
1651       CFLAGS="${CFLAGS} -march=armv8-a+simd"
1652       AC_COMPILE_IFELSE([
1653         AC_LANG_PROGRAM(,[[
1654 asm volatile("uhadd v0.8b, v0.8b, v1.8b":::"v0");
1656       ], [
1657         ac_cv_arm_neon="64"
1658       ], [
1659         ac_cv_arm_neon="no"
1660       ])
1661     ])
1662   ])
1663   VLC_RESTORE_FLAGS
1665 AM_CONDITIONAL([HAVE_NEON], [test "${ac_cv_arm_neon}" = "32"])
1666 AM_CONDITIONAL([HAVE_ARM64], [test "${ac_cv_arm_neon}" = "64"])
1668 AC_ARG_ENABLE([sve],
1669   AS_HELP_STRING([--disable-sve],
1670     [disable ARM SVE optimizations (default auto)]),, [
1671   AS_IF([test "${host_cpu}" = "aarch64"], [enable_sve="yes"] ,[enable_sve="no"])
1673 AS_IF([test "${enable_sve}" != "no"], [
1674   VLC_SAVE_FLAGS
1675   CFLAGS="${CFLAGS} -march=armv8-a+sve"
1676   AC_CACHE_CHECK([if $CCAS groks ARM SVE assembly], [ac_cv_arm_sve], [
1677     AC_COMPILE_IFELSE([
1678       AC_LANG_PROGRAM(,[[
1679 asm volatile("ptrue p0.s" ::: "p0");
1681     ], [
1682       ac_cv_arm_sve="yes"
1683     ], [
1684       ac_cv_arm_sve="no"
1685     ])
1686   ])
1687   VLC_RESTORE_FLAGS
1689 AM_CONDITIONAL([HAVE_SVE], [test "${ac_cv_arm_sve}" = "yes"])
1691 AC_ARG_ENABLE([pointer-auth],
1692   AS_HELP_STRING([--disable-pointer-auth],
1693     [disable ARMv8.3 Pointer Authentication (default auto)]),, [
1694   AS_IF([test "${host_cpu}" = "aarch64"], [enable_ptrauth="yes"] ,[enable_ptrauth="no"])
1696 AS_IF([test "${enable_ptrauth}" != "no"], [
1697   AX_CHECK_COMPILE_FLAG([-msign-return-address=non-leaf], [
1698     AX_APPEND_FLAG([-msign-return-address=non-leaf], [CFLAGS])
1699     AX_APPEND_FLAG([-msign-return-address=non-leaf], [CXXFLAGS])
1700   ])
1704 AC_ARG_ENABLE([altivec],
1705   AS_HELP_STRING([--disable-altivec],
1706     [disable AltiVec optimizations (default auto)]),, [
1707   AS_CASE("${host_cpu}", [powerpc*],
1708         [enable_altivec=yes], [enable_altivec=no])
1710 have_altivec="no"
1711 ALTIVEC_CFLAGS=""
1712 AS_IF([test "${enable_altivec}" = "yes"], [
1713   ARCH="${ARCH} altivec";
1714   VLC_SAVE_FLAGS
1715   AC_CACHE_CHECK([if $CC groks AltiVec inline assembly],
1716     [ac_cv_altivec_inline],
1717     [AC_TRY_COMPILE(,[asm volatile("vperm 0,1,2,3");],
1718          ac_cv_altivec_inline="yes",
1719          [CFLAGS="${CFLAGS} -Wa,-maltivec"
1720           AC_TRY_COMPILE(,[asm volatile("vperm 0,1,2,3");],
1721             [ac_cv_altivec_inline="-Wa,-maltivec"],
1722             ac_cv_altivec_inline=no)
1723          ])])
1724   VLC_RESTORE_FLAGS
1725   AS_IF([test "${ac_cv_altivec_inline}" != "no"], [
1726     AC_DEFINE(CAN_COMPILE_ALTIVEC, 1,
1727               [Define to 1 if AltiVec inline assembly is available.])
1728     AS_IF([test "${ac_cv_altivec_inline}" != "yes"], [
1729       ALTIVEC_CFLAGS="${ac_cv_altivec_inline}"
1730       VLC_ADD_CFLAGS([libvlccore],[${ac_cv_altivec_inline}])
1731     ])
1732     have_altivec="yes"
1733   ])
1735   VLC_SAVE_FLAGS
1736   AC_CACHE_CHECK([if \$CC groks AltiVec C extensions],
1737   [ac_cv_c_altivec], [
1738     CFLAGS="${CFLAGS} -maltivec"
1739     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([
1740 [#include <altivec.h>]], [
1741 [vec_ld(0, (unsigned char *)0);]])], [
1742       ac_cv_c_altivec="-maltivec"
1743     ], [
1744       ac_cv_c_altivec="no"
1745     ])
1746   ])
1747   VLC_RESTORE_FLAGS
1748   AS_IF([test "${ac_cv_c_altivec}" != "no"], [
1749     CPPFLAGS="${CPPFLAGS} ${ac_cv_c_altivec}"
1750     AC_DEFINE(CAN_COMPILE_C_ALTIVEC, 1, [Define to 1 if C AltiVec extensions are available.])
1751     VLC_ADD_CFLAGS([libvlccore],[${ac_cv_c_altivec}])
1752     ALTIVEC_CFLAGS="$ALTIVEC_CFLAGS ${ac_cv_c_altivec}"
1753     VLC_ADD_CFLAGS([deinterlace],[${ac_cv_c_altivec}])
1754     have_altivec="yes"
1755   ])
1756   AC_CHECK_HEADERS([altivec.h])
1758   VLC_SAVE_FLAGS
1759   LDFLAGS="${LDFLAGS} -Wl,-framework,vecLib"
1760   AC_CACHE_CHECK([if linker needs -framework vecLib],
1761     [ac_cv_ld_altivec],
1762     [AC_TRY_LINK([],,ac_cv_ld_altivec=yes,ac_cv_ld_altivec=no)])
1763   VLC_RESTORE_FLAGS
1764   AS_IF([test "${ac_cv_ld_altivec}" != "no"], [
1765     VLC_ADD_LIBS([libvlccore],[-Wl,-framework,vecLib])
1766   ])
1768 AC_SUBST([ALTIVEC_CFLAGS])
1769 AM_CONDITIONAL([HAVE_ALTIVEC], [test "$have_altivec" = "yes"])
1772 dnl  Memory usage
1774 AC_ARG_ENABLE([optimize-memory],
1775   AS_HELP_STRING([--enable-optimize-memory],
1776     [optimize memory usage over performance]))
1777 if test "${enable_optimize_memory}" = "yes"; then
1778   AC_DEFINE(OPTIMIZE_MEMORY, 1, Define if you want to optimize memory usage over performance)
1782 dnl Allow running as root (useful for people running on embedded platforms)
1784 AC_ARG_ENABLE([run-as-root],
1785   AS_HELP_STRING([--enable-run-as-root],
1786     [allow running VLC as root (default disabled)]))
1787 AS_IF([test "${enable_run_as_root}" = "yes"],[
1788     AC_DEFINE(ALLOW_RUN_AS_ROOT, 1,
1789               [Define to 1 to allow running VLC as root (uid 0).])
1793 dnl Stream output
1795 AC_ARG_ENABLE([sout],
1796   AS_HELP_STRING([--disable-sout],
1797     [disable streaming output (default enabled)]))
1798 AS_IF([test "${enable_sout}" != "no"], [
1799   AC_DEFINE(ENABLE_SOUT, 1, [Define to 1 for stream output support.])
1801 AM_CONDITIONAL([ENABLE_SOUT], [test "${enable_sout}" != "no"])
1803 dnl Lua modules
1804 AC_ARG_ENABLE([lua],
1805   AS_HELP_STRING([--disable-lua],
1806     [disable LUA scripting support (default enabled)]))
1807 if test "${enable_lua}" != "no"
1808 then
1809   PKG_CHECK_MODULES(LUA, lua5.2,
1810     [ have_lua=yes ],
1811     [
1812     AC_MSG_WARN([${LUA_PKG_ERRORS}, trying lua 5.1 instead])
1814     PKG_CHECK_MODULES(LUA, lua5.1,
1815       [ have_lua=yes ],
1816       [
1817       AC_MSG_WARN([${LUA_PKG_ERRORS}, trying lua >= 5.1 instead])
1818       PKG_CHECK_MODULES(LUA, lua >= 5.1,
1819         [ have_lua=yes ],
1820         [
1821           AC_MSG_WARN([${LUA_PKG_ERRORS}, trying manual detection instead])
1822           have_lua=yes
1823           AC_CHECK_HEADERS([lua.h lauxlib.h lualib.h],
1824             [],
1825             [ have_lua=no ] )
1826           AC_CHECK_LIB(  lua5.2 , luaL_newstate,
1827             [LUA_LIBS="-llua5.2"],
1828           AC_CHECK_LIB( lua5.1 , luaL_newstate,
1829             [LUA_LIBS="-llua5.1"],
1830             AC_CHECK_LIB( lua51 , luaL_newstate,
1831               [LUA_LIBS="-llua51"],
1832               AC_CHECK_LIB( lua , luaL_newstate,
1833                 [LUA_LIBS="-llua"],
1834                 [ have_lua=no
1835                 ], [-lm])
1836             )))
1837         ])
1838       ])
1839     ])
1840   if test "x${have_lua}" != "xyes" ;  then
1841       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.])
1842   fi
1843   AC_ARG_VAR([LUAC], [LUA byte compiler])
1844   AS_IF([test -z "$LUAC"], [
1845      AC_CHECK_TOOL(LUAC, [luac], [false])
1846   ])
1847   AS_IF([test "${LUAC}" = "false"], [
1848     AC_MSG_ERROR([Could not find the LUA byte compiler.])
1849   ])
1850   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], [
1851     AC_MSG_ERROR([You need 32-bits luac when using lua from contrib.])
1852   ])
1854 AM_CONDITIONAL([BUILD_LUA], [test "${have_lua}" = "yes"])
1858 dnl VideoLAN manager
1860 AC_ARG_ENABLE([vlm],
1861   AS_HELP_STRING([--disable-vlm],
1862     [disable the stream manager (default enabled)]),,
1863   [enable_vlm="${enable_sout}"])
1864 AS_IF([test "${enable_vlm}" != "no"], [
1865   AS_IF([test "${enable_sout}" = "no"], [
1866     AC_MSG_ERROR([VLM requires the stream output. Do not use --disable-sout.])
1867   ])
1868   AC_DEFINE(ENABLE_VLM, 1, [Define if you want the VideoLAN manager support])
1870 AM_CONDITIONAL([ENABLE_VLM], [test "${enable_vlm}" != "no"])
1874 dnl Addons manager storage and repositories modules
1876 AC_ARG_ENABLE([addonmanagermodules],
1877   AS_HELP_STRING([--disable-addonmanagermodules],
1878     [disable the addons manager modules (default enabled)]))
1879 if test "${enable_addonmanagermodules}" != "no"
1880 then
1881   AC_DEFINE(ENABLE_ADDONMANAGERMODULES, 1, [Define if you want the addons manager modules])
1883 AM_CONDITIONAL([ENABLE_ADDONMANAGERMODULES], [test "${enable_addonmanagermodules}" != "no"])
1887 dnl  Input plugins
1890 EXTEND_HELP_STRING([Input plugins:])
1893 dnl  libarchive access module
1895 PKG_ENABLE_MODULES_VLC([ARCHIVE], [archive], [libarchive >= 3.1.0], (libarchive support), [auto])
1898 dnl  live555 input
1900 AC_ARG_ENABLE([live555],
1901   AS_HELP_STRING([--enable-live555],
1902     [enable RTSP input through live555 (default enabled)]))
1904 AS_IF([test "${enable_live555}" != "no" -a -n "${CXX}"], [
1905   PKG_CHECK_MODULES(LIVE555, live555, [
1906     VLC_ADD_PLUGIN([live555])
1907     VLC_ADD_CXXFLAGS([live555], [$LIVE555_CFLAGS])
1908     VLC_ADD_LIBS([live555],[$LIVE555_LIBS])
1909   ], [
1910     AC_MSG_WARN([${LIVE555_PKG_ERRORS}.])
1912     AC_LANG_PUSH(C++)
1913     VLC_SAVE_FLAGS
1915     dnl detect include paths
1916     AS_IF([test -f "${CONTRIB_DIR}/include/UsageEnvironment/UsageEnvironment.hh"], [
1917       CPPFLAGS_live555="-I${CONTRIB_DIR}/include/liveMedia -I${CONTRIB_DIR}/include/groupsock -I${CONTRIB_DIR}/include/BasicUsageEnvironment -I${CONTRIB_DIR}/include/UsageEnvironment"
1918     ], [
1919       AS_IF([test "${SYS}" != "os2"], [
1920         LIVE555_PREFIX=${LIVE555_PREFIX-"/usr"}
1921         CPPFLAGS_live555="-I${LIVE555_PREFIX}/include/liveMedia -I${LIVE555_PREFIX}/include/groupsock -I${LIVE555_PREFIX}/include/BasicUsageEnvironment -I${LIVE555_PREFIX}/include/UsageEnvironment"
1922       ], [
1923         LIVE555_PREFIX=${LIVE555_PREFIX-"/usr/lib/live"}
1924         CPPFLAGS_live555="-I${LIVE555_PREFIX}/liveMedia/include -I${LIVE555_PREFIX}/groupsock/include -I${LIVE555_PREFIX}/BasicUsageEnvironment/include -I${LIVE555_PREFIX}/UsageEnvironment/include"
1925         LDFLAGS_live555="-L${LIVE555_PREFIX}/liveMedia -L${LIVE555_PREFIX}/groupsock -L${LIVE555_PREFIX}/BasicUsageEnvironment -L${LIVE555_PREFIX}/UsageEnvironment"
1926       ])
1927     ])
1929     dnl CPP Flags
1930     AS_IF([test "${SYS}" = "solaris"], [
1931       CPPFLAGS_live555="${CPPFLAGS_live555} -DSOLARIS"
1932     ])
1933     CPPFLAGS="${CPPFLAGS} ${CPPFLAGS_live555}"
1934     LDFLAGS="${LDFLAGS} ${LDFLAGS_live555}"
1936     dnl version check
1937     AC_CACHE_CHECK([for live555 version 1324598400 or later], [ac_cv_live555], [
1938       AC_PREPROC_IFELSE([AC_LANG_PROGRAM([
1939 [#include <liveMedia_version.hh>
1940 #if !defined (LIVEMEDIA_LIBRARY_VERSION_INT) || (LIVEMEDIA_LIBRARY_VERSION_INT < 1324598400)
1941 # error BOOM
1942 #endif]])
1943       ], [
1944         ac_cv_live555="yes"
1945       ], [
1946         ac_cv_live555="no"
1947       ])
1948     ])
1950     AS_IF([test "$ac_cv_live555" = "no"], [
1951       AC_MSG_WARN([live555 is missing or its installed version is too old:
1952 Version 2011.12.23 or later is required to proceed.
1953 You can get an updated one from http://www.live555.com/liveMedia .])
1954       AS_IF([test -n "${enable_live555}"], [
1955         AC_MSG_ERROR([Update live555 or pass --disable-live555 to disable RTSP input support.])
1956       ])
1957     ], [
1958       other_libs="-lgroupsock -lBasicUsageEnvironment -lUsageEnvironment"
1959       other_libs_pic="-lgroupsock_pic -lBasicUsageEnvironment_pic -lUsageEnvironment_pic"
1960       AS_IF([test "${SYS}" = "mingw32"], [
1961         # add ws2_32 for closesocket, select, recv
1962         other_libs="$other_libs -lws2_32"
1963       ])
1965       dnl We need to check for pic because live555 don't provide shared libs
1966       dnl and we want to build a plugins so we need -fPIC on some arch.
1967       VLC_ADD_CXXFLAGS([live555], [${CPPFLAGS_live555}])
1968       VLC_ADD_LDFLAGS([live555], [${LDFLAGS_live555}])
1969       AC_CHECK_LIB([liveMedia_pic], [main], [
1970         VLC_ADD_PLUGIN([live555])
1971         VLC_ADD_LIBS([live555], [-lliveMedia_pic ${other_libs_pic}])
1972       ],[
1973         AC_CHECK_LIB([liveMedia], [main], [
1974           VLC_ADD_PLUGIN([live555])
1975           VLC_ADD_LIBS([live555], [-lliveMedia ${other_libs}])
1976         ],[],[${other_libs}])
1977       ],[${other_libs_pic}])
1978     ])
1979     VLC_RESTORE_FLAGS
1980     AC_LANG_POP(C++)
1981   ])
1985 dnl IIDC and DV FireWire input modules
1987 PKG_ENABLE_MODULES_VLC([DC1394], [], [libdc1394-2 >= 2.1.0], [IIDC FireWire input module], [auto])
1988 PKG_ENABLE_MODULES_VLC([DV1394], [], [libraw1394 >= 2.0.1 libavc1394 >= 0.5.3], [DV FireWire input module], [auto])
1991 dnl - linsys modules: access module check for libzvbi
1993 AC_ARG_ENABLE([linsys],
1994   AS_HELP_STRING([--enable-linsys],
1995     [Linux Linear Systems Ltd. SDI and HD-SDI input cards (default enabled)]))
1996 AS_IF([test "$SYS" = "linux" -a "${enable_linsys}" != "no"], [
1997   VLC_ADD_PLUGIN([linsys_hdsdi])
1998   PKG_CHECK_MODULES(LINSYS_SDI, [zvbi-0.2 >= 0.2.28], [
1999     VLC_ADD_PLUGIN([linsys_sdi])
2000   ], [
2001     AC_MSG_WARN([${LINSYS_SDI_PKG_ERRORS}.])
2002   ])
2006 dnl dvdread module: check for libdvdread
2008 PKG_ENABLE_MODULES_VLC([DVDREAD], [], [dvdread > 6.0.0], [dvdread input module], [auto])
2011 dnl libdvdnav plugin
2013 PKG_ENABLE_MODULES_VLC([DVDNAV], [], [dvdnav >= 6.0.0], [DVD with navigation input module (dvdnav)], [auto])
2016 dnl  Blu-ray Disc Support with libbluray
2018 PKG_ENABLE_MODULES_VLC([BLURAY], [libbluray], [libbluray >= 0.6.2], (libbluray for Blu-ray disc support ) )
2021 dnl  OpenCV wrapper and example filters
2023 PKG_ENABLE_MODULES_VLC([OPENCV], [opencv_example opencv_wrapper], [opencv > 2.0], (OpenCV (computer vision) filter), [auto])
2027 dnl  libsmbclient plugin
2029 PKG_ENABLE_MODULES_VLC([SMBCLIENT], [smbc], [smbclient], (SMB/CIFS support), [auto])
2032 dnl  liBDSM access module
2034 AM_CONDITIONAL([HAVE_DSM], [test "$AS_TR_SH(with_dsm)" = "yes"])
2035 PKG_WITH_MODULES([DSM], [libdsm >= 0.2.0], [
2036        VLC_ADD_PLUGIN([dsm])
2037        VLC_ADD_CFLAGS([dsm], [$DSM_CFLAGS])
2038        VLC_ADD_LIBS([dsm], [$DSM_LIBS])
2039        have_dsm="yes"
2040    ],,[libdsm SMB/CIFS access/sd module], [auto])
2041 AM_CONDITIONAL([HAVE_DSM], [test "${have_dsm}" = "yes"])
2044 dnl sftp access support
2046 PKG_ENABLE_MODULES_VLC([SFTP], [sftp], [libssh2], (support SFTP file transfer via libssh2), [auto])
2049 dnl nfs access support
2051 PKG_ENABLE_MODULES_VLC([NFS], [nfs], [libnfs >= 1.10.0], (support nfs protocol via libnfs), [auto])
2054 dnl smb2 access support
2056 PKG_ENABLE_MODULES_VLC([SMB2], [smb2], [libsmb2 >= 3.0.0], (support smb2 protocol via libsmb2), [auto])
2059 dnl  Video4Linux 2
2061 AC_ARG_ENABLE([v4l2], AS_HELP_STRING([--disable-v4l2],
2062   [disable Video4Linux version 2 (default auto)]))
2063 have_v4l2="no"
2064 AS_IF([test "$enable_v4l2" != "no"], [
2065   AC_CHECK_HEADERS([linux/videodev2.h], [
2066     have_v4l2="yes"
2067   ])
2069 AM_CONDITIONAL([HAVE_V4L2], [test "${have_v4l2}" != "no"])
2072 dnl  NVDEC decoder/encoder
2074 AC_ARG_ENABLE([nvdec], AS_HELP_STRING([--disable-nvdec],
2075   [disable NVDEC decoder (default auto)]))
2076 have_nvdec="no"
2077 AS_IF([test "$enable_nvdec" != "no"], [
2078   AC_CHECK_HEADERS([ffnvcodec/dynlink_loader.h], [
2079     have_nvdec="yes"
2080   ])
2082 AM_CONDITIONAL([HAVE_NVDEC], [test "${have_nvdec}" != "no"])
2085 dnl special access module for Blackmagic SDI cards
2087 AC_ARG_ENABLE([decklink],
2088   AS_HELP_STRING([--disable-decklink],
2089     [disable Blackmagic DeckLink SDI input (default auto)]))
2090 AC_ARG_WITH([decklink_sdk],
2091   AS_HELP_STRING([--with-decklink-sdk=DIR],
2092     [location of Blackmagic DeckLink SDI SDK]))
2093 have_decklink=no
2094 if test "${enable_decklink}" != "no"
2095 then
2096   if test "${with_decklink_sdk}" != "no" -a -n "${with_decklink_sdk}"
2097   then
2098     VLC_ADD_CPPFLAGS([decklink decklinkoutput stream_out_sdi],[-I${with_decklink_sdk}/include])
2099   fi
2100   VLC_SAVE_FLAGS
2101   CPPFLAGS="${CPPFLAGS} ${CPPFLAGS_decklink}"
2102   AC_LANG_PUSH([C++])
2103   AC_CHECK_HEADERS([DeckLinkAPIDispatch.cpp], [
2104       have_decklink=yes
2105       AS_IF([test "${SYS}" = "darwin"], [
2106         VLC_ADD_LIBS([decklink decklinkoutput],[-Wl,-framework,CoreFoundation])
2107       ])
2108   ], [
2109       AS_IF([test "${enable_decklink}" = "yes"], [
2110         AC_MSG_ERROR([Blackmagic DeckLink SDI include files not found!])
2111       ], [
2112         AC_MSG_WARN([Blackmagic DeckLink SDI include files not found, decklink disabled])
2113       ])
2114   ])
2115   AC_LANG_POP([C++])
2116   VLC_RESTORE_FLAGS
2118 AM_CONDITIONAL([HAVE_DECKLINK], [ test "${have_decklink}" != "no" ])
2122 dnl  Built-in CD-DA and VCD module
2124 AC_ARG_ENABLE([vcd],
2125   AS_HELP_STRING([--disable-vcd],
2126     [disable built-in VCD and CD-DA support (default enabled)]))
2128 AC_ARG_ENABLE([libcddb],
2129   AS_HELP_STRING([--disable-libcddb],
2130     [disable CDDB for Audio CD (default enabled)]))
2132 if test "${enable_vcd}" != "no" -a "${enable_winstore_app}" != "yes"
2133 then
2134   AC_MSG_CHECKING(for cdrom_msf0 in linux/cdrom.h)
2135   AC_EGREP_HEADER(cdrom_msf0,linux/cdrom.h,[
2136     AC_MSG_RESULT(yes)
2137     VLC_ADD_PLUGIN([vcd cdda])
2138   ],[
2139     AC_MSG_RESULT(no)
2140   ])
2142   AC_MSG_CHECKING(for scsireq in sys/scsiio.h)
2143   AC_EGREP_HEADER(scsireq,sys/scsiio.h,[
2144     AC_MSG_RESULT(yes)
2145     VLC_ADD_PLUGIN([vcd cdda])
2146     AC_DEFINE(HAVE_SCSIREQ_IN_SYS_SCSIIO_H, 1, For NetBSD VCD support)
2147   ],[
2148     AC_MSG_RESULT(no)
2149   ])
2151   AC_MSG_CHECKING(for ioc_toc_header in sys/cdio.h)
2152   AC_EGREP_HEADER(ioc_toc_header ,sys/cdio.h,[
2153     AC_MSG_RESULT(yes)
2154     VLC_ADD_PLUGIN([vcd cdda])
2155     AC_DEFINE(HAVE_IOC_TOC_HEADER_IN_SYS_CDIO_H, 1, For FreeBSD VCD support)
2156   ],[
2157     AC_MSG_RESULT(no)
2158   ])
2160   if test "${SYS}" = "bsdi" -o "${SYS}" = "mingw32" -o "${SYS}" = "os2" -o "${SYS}" = "darwin"
2161   then
2162     VLC_ADD_PLUGIN([vcd cdda])
2163   fi
2165   if test "$enable_libcddb" != "no"; then
2166     PKG_CHECK_MODULES(LIBCDDB, [libcddb >= 0.9.5], [
2167       HAVE_LIBCDDB=yes
2168       AC_DEFINE(HAVE_LIBCDDB, 1, [Define this if you have libcddb installed])
2169       VLC_ADD_LIBS([cdda],[$LIBCDDB_LIBS])
2170       VLC_ADD_CFLAGS([cdda],[$LIBCDDB_CFLAGS])
2171       ],:
2172       [AC_MSG_WARN([${LIBCDDB_PKG_ERRORS}: CDDB access disabled.])
2173       HAVE_LIBCDDB=no])
2174   fi
2178 dnl Linux DVB
2180 AC_CACHE_CHECK([for Linux DVB version 5.1], [ac_cv_linux_dvb_5_1], [
2181   AC_PREPROC_IFELSE([AC_LANG_PROGRAM([
2182 [#include <linux/dvb/version.h>
2183 #if (DVB_API_VERSION < 5)
2184 # error Linux DVB API v3.2 and older are not supported.
2185 #endif
2186 #if (DVB_API_VERSION == 5 && DVB_API_VERSION_MINOR < 1)
2187 # error Linux DVB API v5.0 is unsupported. Please update.
2188 #endif
2189 ]])], [
2190   ac_cv_linux_dvb_5_1=yes
2191 ], [
2192   ac_cv_linux_dvb_5_1=no
2193 ])])
2194 AM_CONDITIONAL([HAVE_LINUX_DVB], [test "$ac_cv_linux_dvb_5_1" = "yes"])
2197 dnl  Screen capture module
2199 AC_ARG_ENABLE([screen],
2200   AS_HELP_STRING([--enable-screen],
2201     [disable screen capture (default enabled)]))
2202 if test "${enable_screen}" != "no"; then
2203   if test "${SYS}" = "darwin"; then
2204     AC_CHECK_HEADERS([ApplicationServices/ApplicationServices.h], [
2205       VLC_ADD_PLUGIN([screen])
2206     ])
2207   fi
2209 AM_CONDITIONAL([HAVE_MAC_SCREEN], [test "${SYS}" = "darwin" -a "x${enable_screen}" != "xno"])
2212 dnl  VNC/RFB access module
2214 PKG_ENABLE_MODULES_VLC([VNC], [vnc], [libvncclient >= 0.9.9], (VNC/rfb client support), [auto])
2216 dnl  RDP/Remote Desktop access module
2218 PKG_ENABLE_MODULES_VLC([FREERDP], [rdp], [freerdp >= 1.0.1], (RDP/Remote Desktop client support) )
2221 dnl AVFoundation
2222 AC_SUBST([have_avfoundation], ["no"])
2223 AC_ARG_ENABLE([macosx-avfoundation],
2224   AS_HELP_STRING([--enable-macosx-avfoundation], [Mac OS X avcapture (video) module (default enabled on Mac OS X)]))
2225 if test "x${enable_macosx_avfoundation}" != "xno" &&
2226   (test "${SYS}" = "darwin" || test "${enable_macosx_avfoundation}" = "yes")
2227 then
2228   SAVED_LIBS="${LIBS}"
2229   LIBS="-framework AVFoundation"
2230   AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [])],[have_avfoundation=yes],[have_avfoundation=no])
2231   LIBS="${SAVED_LIBS}"
2232   if test "${have_avfoundation}" != "no"
2233   then
2234     VLC_ADD_PLUGIN([avcapture])
2235   fi
2237 AM_CONDITIONAL([HAVE_AVFOUNDATION], [test "${have_avfoundation}" != "no"])
2240 dnl  DCP plugin (using asdcplib)
2242 PKG_WITH_MODULES([ASDCP], [asdcplib], [have_asdcp="yes"])
2243 AM_CONDITIONAL([HAVE_ASDCP], [test "${have_asdcp}" = "yes"])
2246 dnl  Demux plugins
2249 EXTEND_HELP_STRING([Mux/Demux plugins:])
2252 dnl  libdvbpsi check for ts mux/demux
2254 have_dvbpsi="no"
2255 PKG_WITH_MODULES([DVBPSI], [libdvbpsi >= 1.2.0], [have_dvbpsi="yes"])
2256 AM_CONDITIONAL([HAVE_DVBPSI], [test "${have_dvbpsi}" = "yes"])
2260 dnl  GME demux plugin
2262 AC_ARG_ENABLE([gme],
2263   AS_HELP_STRING([--enable-gme],
2264     [use Game Music Emu (default auto)]))
2265 AS_IF([test "${enable_gme}" != "no"], [
2266   AC_CHECK_HEADER([gme/gme.h], [
2267     AC_CHECK_LIB([gme], [gme_identify_header], [
2268       VLC_ADD_PLUGIN([gme])
2269     ], [
2270       AC_CHECK_LIB([gme], [gme_identify_extension], [
2271          VLC_ADD_LIBS([gme], [-lstdc++ $LIBM])
2272          VLC_ADD_PLUGIN([gme])
2273       ],, [-lstdc++ $LIBM])
2274     ])
2275     VLC_ADD_LIBS([gme], [-lgme])
2276   ], [
2277     AS_IF([test "x${enable_gme}" != "x"], [
2278       AC_MSG_ERROR([GME cannot be found. Please install the development files.])
2279     ])
2280   ])
2285 dnl  SIDPlay plugin
2287 AC_ARG_ENABLE([sid],
2288     AS_HELP_STRING([--enable-sid],[C64 sid demux support (default auto)]))
2289 AS_IF([test "${enable_sid}" != "no"], [
2290     PKG_CHECK_MODULES(SID, [libsidplay2], [
2291         AC_LANG_PUSH(C++)
2292         oldCPPFLAGS="$CPPFLAGS"
2293         CPPFLAGS="$CPPFLAGS $SID_CFLAGS"
2294         AC_CHECK_HEADER([sidplay/builders/resid.h], [
2295             VLC_ADD_PLUGIN([sid])
2296             VLC_ADD_CFLAGS([sid], [$SID_CFLAGS])
2297             VLC_ADD_LIBS([sid], [$SID_LIBS] [-lresid-builder])
2298         ], [
2299             AS_IF([test -n "${enable_sid}"],
2300                 [AC_MSG_ERROR([${SID_PKG_ERRORS} (required for sid).])],
2301                 [AC_MSG_WARN([${SID_PKG_ERRORS} (required for sid).])]
2302                 )
2303         ])
2304         CPPFLAGS="$oldCPPFLAGS"
2305         AC_LANG_POP(C++)
2306     ], [
2307         AS_IF([test "x${enable_sid}" = "xyes"],
2308             [AC_MSG_ERROR([${SID_PKG_ERRORS} (required for sid).])],
2309             [AC_MSG_WARN([${SID_PKG_ERRORS} (required for sid).])]
2310             )
2311     ])
2316 dnl  ogg demux plugin
2318 PKG_ENABLE_MODULES_VLC([OGG], [mux_ogg], [ogg >= 1.0], [Ogg demux support], [auto])
2319 PKG_CHECK_MODULES(LIBVORBIS, [vorbis >= 1.1], [
2320     AC_DEFINE(HAVE_LIBVORBIS, 1, [Define to 1 if you have the libvorbis])
2321 ],[true])
2322 PKG_ENABLE_MODULES_VLC([OGG], [], [ogg >= 1.0], [Ogg demux support], [auto], [${LIBVORBIS_CFLAGS}], [${LIBVORBIS_LIBS}])
2323 if test "${enable_sout}" != "no"; then
2324 dnl Check for libshout
2325     PKG_ENABLE_MODULES_VLC([SHOUT], [access_output_shout], [shout >= 2.1], [libshout output plugin], [auto])
2329 dnl  matroska demux plugin
2331 PKG_WITH_MODULES([MATROSKA], [libebml >= 1.3.6 libmatroska], [
2332        VLC_ADD_PLUGIN([mkv])
2333        VLC_ADD_CFLAGS([mkv], [$MATROSKA_CFLAGS])
2334        VLC_ADD_LIBS([mkv], [$MATROSKA_LIBS])
2335        have_matroska="yes"
2336    ],,[MKV format support], [auto])
2337 AM_CONDITIONAL([HAVE_MATROSKA], [test "${have_matroska}" = "yes"])
2340 dnl  modplug demux plugin
2342 AC_ARG_ENABLE([mod],
2343   AS_HELP_STRING([--disable-mod],
2344     [do not use libmodplug (default auto)]))
2345 if test "${enable_mod}" != "no" ; then
2346     PKG_CHECK_MODULES(LIBMODPLUG, [libmodplug >= 0.8.9.0], [
2347           VLC_ADD_PLUGIN([mod])
2348           VLC_ADD_CXXFLAGS([mod],[$LIBMODPLUG_CFLAGS])
2349           VLC_ADD_CFLAGS([mod],[$LIBMODPLUG_CFLAGS]) #modules/demux/mod.c needs CFLAGS_mod, not CXXFLAGS_mod
2350           VLC_ADD_LIBS([mod],[$LIBMODPLUG_LIBS])
2351     ],[
2352        AS_IF([test -n "${enable_mod}"],
2353          [AC_MSG_ERROR([${LIBMODPLUG_PKG_ERRORS}.])],
2354          [AC_MSG_WARN([${LIBMODPLUG_PKG_ERRORS}.])])
2355     ])
2359 dnl  mpc demux plugin
2361 AC_ARG_ENABLE([mpc],
2362   AS_HELP_STRING([--disable-mpc], [do not use libmpcdec (default auto)]))
2363 if test "${enable_mpc}" != "no"
2364 then
2365     AC_CHECK_HEADERS([mpcdec/mpcdec.h], [
2366     VLC_ADD_PLUGIN([mpc])
2367     VLC_ADD_LIBS([mpc],[-lmpcdec])])
2371 dnl  Codec plugins
2374 EXTEND_HELP_STRING([Codec plugins:])
2377 dnl shine encoder plugin
2379 PKG_ENABLE_MODULES_VLC([SHINE], [], [shine >= 3.0.0], [MPEG Audio Layer 3 encoder], [auto], [], [], [])
2383 dnl openmax il codec plugin
2385 AC_ARG_ENABLE([omxil],
2386   AS_HELP_STRING([--enable-omxil], [openmax il codec module (default disabled)]))
2387 if test "${enable_omxil}" = "yes"
2388 then
2389   VLC_ADD_PLUGIN([omxil])
2393 dnl raspberry pi openmax il configuration
2395 AC_ARG_ENABLE([rpi-omxil],
2396   AS_HELP_STRING([--enable-rpi-omxil], [openmax il configured for raspberry pi (default disabled)]))
2397 if test "${enable_rpi_omxil}" = "yes"
2398 then
2399   VLC_ADD_PLUGIN([omxil])
2400   VLC_ADD_CFLAGS([omxil],[-DRPI_OMX])
2404 dnl CrystalHD codec plugin
2406 AC_ARG_ENABLE([crystalhd],
2407   AS_HELP_STRING([--enable-crystalhd], [crystalhd codec plugin (default auto)]))
2408 if test "${enable_crystalhd}" != "no"; then
2409     AC_CHECK_HEADER(libcrystalhd/libcrystalhd_if.h, [
2410       VLC_ADD_PLUGIN([crystalhd])
2411       VLC_ADD_LIBS([crystalhd], [-lcrystalhd])
2412     ],[
2413       if test "${SYS}" = "mingw32" ; then
2414         AC_CHECK_HEADERS([libcrystalhd/bc_dts_defs.h], [
2415           VLC_ADD_PLUGIN([crystalhd])
2416           AC_CHECK_HEADERS([libcrystalhd/bc_drv_if.h], [
2417             VLC_ADD_LIBS([crystalhd], [-lbcmDIL])
2418             ])
2419         ],[
2420           AS_IF([test x"${enable_crystalhd}" = "xyes"],
2421                 [AC_MSG_ERROR("Could not find CrystalHD development headers")],
2422                 [AC_MSG_WARN("Could not find CrystalHD development headers")])
2423         ],[#define __LINUX_USER__
2424                #include <libcrystalhd/bc_dts_types.h>
2425         ])
2426       fi
2427     ],[
2428        #include <libcrystalhd/bc_dts_types.h>
2429       ])
2433 dnl  mad plugin
2435 have_mad="no"
2436 MAD_CFLAGS=""
2437 MAD_LIBS=""
2439 AC_ARG_WITH(mad, AS_HELP_STRING([--with-mad=PATH], [path to libmad]), [
2440   enable_mad="yes"
2441 ], [
2442   with_mad="no"
2444 AS_IF([test "${with_mad}" != "no"], [
2445   MAD_CFLAGS="-I${with_mad}/include"
2446   MAD_LIBS="-L${with_mad}/lib"
2449 AC_ARG_ENABLE([mad],
2450   AS_HELP_STRING([--enable-mad], [libmad module (default enabled)]))
2451 AS_IF([test "${enable_mad}" != "no"], [
2452   VLC_SAVE_FLAGS
2453   CPPFLAGS="${CPPFLAGS} ${MAD_CFLAGS}"
2454   LDFLAGS="${LDFLAGS} ${MAD_LIBS}"
2455   AC_CHECK_HEADERS([mad.h], [
2456     AC_CHECK_LIB([mad], [mad_bit_init], [
2457       have_mad="yes"
2458       MAD_LIBS="${MAD_LIBS} -lmad"
2459     ])
2460   ])
2461   VLC_RESTORE_FLAGS
2462   AS_IF([test -n "$enable_mad" -a "${have_mad}" = "no"], [
2463     AC_MSG_ERROR([Could not find libmad. Install it or pass --disable-mad to disable it.])
2464   ])
2466 AC_SUBST([MAD_CFLAGS])
2467 AC_SUBST([MAD_LIBS])
2468 AM_CONDITIONAL([HAVE_MAD], [test "${have_mad}" = "yes"])
2470 dnl  mpg123 plugin
2473 PKG_ENABLE_MODULES_VLC([MPG123], [mpg123], [libmpg123], [libmpg123 decoder support], [auto])
2476 dnl gstreamer stuff
2478 AC_ARG_ENABLE([gst-decode],
2479   AS_HELP_STRING([--enable-gst-decode], [GStreamer based decoding support (currently supports only video decoding) (default auto)]))
2481 have_gst_decode="no"
2482 AS_IF([test "${enable_gst_decode}" != "no"], [
2483   PKG_CHECK_MODULES([GST_APP], [gstreamer-app-1.0], [
2484     PKG_CHECK_MODULES([GST_VIDEO], [gstreamer-video-1.0], [
2485       have_gst_decode="yes"
2486     ], [
2487       AC_MSG_WARN([${GST_VIDEO_PKG_ERRORS}. GStreamer decoder module will not be built.])
2488     ])
2489   ], [
2490     AC_MSG_WARN([${GST_APP_PKG_ERRORS}. GStreamer modules will not be built.])
2491   ])
2493 AM_CONDITIONAL([HAVE_GST_DECODE], [test "${have_gst_decode}" = "yes"])
2496 dnl  avcodec decoder/encoder plugin
2498 AC_ARG_ENABLE([merge-ffmpeg],
2499 AS_HELP_STRING([--enable-merge-ffmpeg], [merge FFmpeg-based plugins (default disabled)]),, [
2500   enable_merge_ffmpeg="no"
2502 AM_CONDITIONAL([MERGE_FFMPEG], [test "$enable_merge_ffmpeg" != "no"])
2504 AC_MSG_CHECKING([for libavutil variant])
2505 PKG_CHECK_EXISTS([libavutil], [
2506   libavutil_version="$(${PKG_CONFIG} --modversion libavutil)"
2507   libavutil_micro="${libavutil_version##*.}"
2508   AS_IF([test ${libavutil_micro} -le 99], [
2509     avfork="libav"
2510   ], [
2511     avfork="ffmpeg"
2512   ])
2513 ], [
2514   avfork="none"
2516 AC_MSG_RESULT([${avfork}])
2518 AC_ARG_ENABLE([avcodec],
2519 AS_HELP_STRING([--enable-avcodec], [libavcodec codec (default enabled)]))
2520 AS_IF([test "${enable_avcodec}" != "no"], [
2521   dnl We need >=57.16.0 from libav or >=57.37.100 from ffmpeg
2522   case "${avfork}" in
2523     libav) av_codec_ver="57.16.0" ;;
2524     dnl 05f66706d182eb0c36af54d72614bf4c33e957a9  includes libavutil 55.9.0
2525     ffmpeg) av_codec_ver="57.37.100" ;;
2526     dnl 7fc329e2dd6226dfecaa4a1d7adf353bf2773726  include libavutil 55.22.101
2527     *) AC_MSG_ERROR([Missing libav or FFmpeg. Pass --disable-avcodec to ignore this error.])
2528   esac
2529   PKG_CHECK_MODULES(AVCODEC,[libavcodec >= ${av_codec_ver} libavutil >= 55.9.0], [
2530     VLC_SAVE_FLAGS
2531     CPPFLAGS="${CPPFLAGS} ${AVCODEC_CFLAGS}"
2532     CFLAGS="${CFLAGS} ${AVCODEC_CFLAGS}"
2533     AC_CHECK_HEADERS([libavcodec/avcodec.h])
2534     AC_CHECK_HEADERS([libavutil/avutil.h])
2535     VLC_RESTORE_FLAGS
2536     have_avcodec="yes"
2537   ],[
2538     AC_MSG_ERROR([${AVCODEC_PKG_ERRORS}. Pass --disable-avcodec to ignore this error.])
2539   ])
2540 ], [
2541   have_avcodec="no"
2543 AM_CONDITIONAL([HAVE_AVCODEC], [test "${have_avcodec}" != "no"])
2546 dnl libva needs avcodec
2548 AC_ARG_ENABLE([libva],
2549   AS_HELP_STRING([--enable-libva], [VAAPI GPU decoding support (libVA) (default auto)]))
2551 AS_IF([test "${enable_libva}" = "yes" -a "${have_avcodec}" != "yes" ], [
2552   AC_MSG_ERROR([--enable-libva and --disable-avcodec options are mutually exclusive. Use --enable-avcodec.])
2555 have_vaapi="no"
2556 have_vaapi_drm="no"
2557 have_vaapi_x11="no"
2558 have_vaapi_wl="no"
2559 AS_IF([test "${enable_libva}" != "no"], [
2560   PKG_CHECK_MODULES([LIBVA], [libva >= 0.38], [
2561     have_vaapi="yes"
2562   ], [
2563     AS_IF([test -n "${enable_libva}"], [
2564       AC_MSG_ERROR([${LIBVA_PKG_ERRORS}.])
2565     ], [
2566       AC_MSG_WARN([${LIBVA_PKG_ERRORS}.])
2567     ])
2568   ])
2569   PKG_CHECK_MODULES([LIBVA_DRM], [libva-drm], [
2570     have_vaapi_drm="yes"
2571   ], [
2572     AC_MSG_WARN([${LIBVA_DRM_PKG_ERRORS}.])
2573   ])
2574   PKG_CHECK_MODULES(LIBVA_X11, [libva-x11], [
2575     have_vaapi_x11="yes"
2576   ], [
2577     AC_MSG_WARN([${LIBVA_X11_PKG_ERRORS}.])
2578   ])
2579   PKG_CHECK_MODULES(LIBVA_WL, [libva-wayland], [
2580     have_vaapi_wl="yes"
2581   ], [
2582     AC_MSG_WARN([${LIBVA_WL_PKG_ERRORS}.])
2583   ])
2585 AM_CONDITIONAL([HAVE_VAAPI], [test "${have_vaapi}" = "yes"])
2586 AM_CONDITIONAL([HAVE_VAAPI_DRM], [test "${have_vaapi_drm}" = "yes"])
2587 AM_CONDITIONAL([HAVE_VAAPI_X11], [test "${have_vaapi_x11}" = "yes"])
2588 AM_CONDITIONAL([HAVE_VAAPI_WL], [test "${have_vaapi_wl}" = "yes"])
2590 have_avcodec_vaapi="no"
2591 AS_IF([test "${have_vaapi}" = "yes" -a "${have_avcodec}" = "yes"], [
2592   VLC_SAVE_FLAGS
2593   CPPFLAGS="${CPPFLAGS} ${AVCODEC_CFLAGS}"
2594   CFLAGS="${CFLAGS} ${AVCODEC_CFLAGS}"
2595   AC_CHECK_HEADERS([libavcodec/vaapi.h], [
2596     AC_MSG_NOTICE([VA API acceleration activated])
2597     have_avcodec_vaapi="yes"
2598   ],[
2599     AS_IF([test -n "${enable_libva}"], [
2600       AC_MSG_ERROR([libva is present but libavcodec/vaapi.h is missing])
2601     ], [
2602       AC_MSG_WARN([libva is present but libavcodec/vaapi.h is missing ])
2603     ])
2604   ])
2605   VLC_RESTORE_FLAGS
2607 AM_CONDITIONAL([HAVE_AVCODEC_VAAPI], [test "${have_avcodec_vaapi}" = "yes"])
2610 dnl dxva2 needs avcodec
2612 AC_ARG_ENABLE([dxva2],
2613   AS_HELP_STRING([--enable-dxva2], [DxVA2 GPU decoding support (default auto)]))
2615 have_avcodec_dxva2="no"
2616 AS_IF([test "${enable_dxva2}" != "no"], [
2617   if test "${SYS}" = "mingw32"; then
2618   AS_IF([test "x${have_avcodec}" = "xyes"], [
2619     AC_CHECK_HEADERS([dxva2api.h],
2620       [
2621         AC_CHECK_HEADERS([libavcodec/dxva2.h], [
2622            AC_MSG_NOTICE([DxVA2 acceleration activated])
2623            have_avcodec_dxva2="yes"
2624         ],[
2625     AS_IF([test "${enable_dxva2}" = "yes"],
2626           [AC_MSG_ERROR([dxva2 is present but libavcodec/dxva2.h is missing])],
2627               [AC_MSG_WARN([dxva2 is present but libavcodec/dxva2.h is missing ])])
2628         ], [#undef _WIN32_WINNT
2629             /* DXVA2 is only available in Vista and above */
2630             #define _WIN32_WINNT 0x600])
2631       ],[
2632     AS_IF([test "${enable_dxva2}" = "yes"],
2633               [AC_MSG_ERROR([Could not find required dxva2api.h])],
2634               [AC_MSG_WARN([dxva2api.h not found])])
2635       ],[#include <d3d9.h>])
2636   ],[
2637     AS_IF([test "x${enable_dxva2}" != "x"], [
2638       AC_MSG_ERROR([--enable-dxva2 and --disable-avcodec options are mutually exclusive.])
2639     ])
2640   ])
2641   fi
2643 AM_CONDITIONAL([HAVE_AVCODEC_DXVA2], [test "${have_avcodec_dxva2}" = "yes"])
2646 dnl d3d11va needs avcodec
2648 AC_ARG_ENABLE([d3d11va],
2649   AS_HELP_STRING([--enable-d3d11va], [D3D11 GPU decoding support (default auto)]))
2651 have_avcodec_d3d11va="no"
2652 AS_IF([test "${enable_d3d11va}" != "no"], [
2653   if test "${SYS}" = "mingw32"; then
2654   AS_IF([test "x${have_avcodec}" = "xyes"], [
2655         AC_CHECK_TYPES([ID3D11VideoDecoder],
2656           [
2657             AC_CHECK_HEADERS([dxva2api.h],
2658               [
2659                 AC_CHECK_HEADERS([libavcodec/d3d11va.h], [
2660                    AC_MSG_NOTICE([D3D11 acceleration activated])
2661                    AC_DEFINE([HAVE_AVCODEC_D3D11VA], [1], [Define if the d3d11va module is built])
2662                    have_avcodec_d3d11va="yes"
2663                 ],[
2664                   AS_IF([test "${enable_d3d11va}" = "yes"],
2665                     [AC_MSG_ERROR([d3d11va is present but libavcodec/d3d11va.h is missing])],
2666                         [AC_MSG_WARN([d3d11va is present but libavcodec/d3d11va.h is missing ])])
2667                   ], [#undef _WIN32_WINNT
2668                       /* D3D11 is only available in Vista and above */
2669                       #define _WIN32_WINNT 0x600])
2670                   ],[
2671                     AS_IF([test "${enable_d3d11va}" = "yes"],
2672                           [AC_MSG_ERROR([Could not find required dxva2api.h])],
2673                           [AC_MSG_WARN([dxva2api.h not found])])
2674                   ],[#include <d3d9.h>])
2675           ],[
2676             AS_IF([test "${enable_d3d11va}" = "yes"],
2677                   [AC_MSG_ERROR([Could not find required ID3D11VideoDecoder in d3d11.h])],
2678                   [AC_MSG_WARN([ID3D11VideoDecoder not found])])
2679           ], [#include <d3d11.h>])
2680   ],[
2681     AS_IF([test "x${enable_d3d11va}" != "x"], [
2682       AC_MSG_ERROR([--enable-d3d11va and --disable-avcodec options are mutually exclusive.])
2683     ])
2684   ])
2685   fi
2687 AM_CONDITIONAL([HAVE_AVCODEC_D3D11VA], [test "${have_avcodec_d3d11va}" = "yes"])
2690 dnl DXGI debug
2692 AC_CHECK_HEADERS([dxgidebug.h dxgi1_6.h])
2695 dnl  avformat demuxer/muxer plugin
2698 AC_ARG_ENABLE([avformat],
2699 AS_HELP_STRING([--enable-avformat], [libavformat containers (default enabled)]),, [
2700   enable_avformat="${have_avcodec}"
2702 have_avformat="no"
2703 AS_IF([test "${enable_avformat}" != "no"], [
2704   PKG_CHECK_MODULES(AVFORMAT,[libavformat >= 53.21.0 libavcodec libavutil], [
2705       have_avformat="yes"
2706       VLC_SAVE_FLAGS
2707       CPPFLAGS="${CPPFLAGS} ${AVFORMAT_CFLAGS}"
2708       CFLAGS="${CFLAGS} ${AVFORMAT_CFLAGS}"
2709       AC_CHECK_HEADERS([libavformat/avformat.h libavformat/avio.h])
2710       AC_CHECK_HEADERS([libavcodec/avcodec.h])
2711       AC_CHECK_HEADERS([libavutil/avutil.h])
2712       AS_IF([test "$enable_merge_ffmpeg" = "no"], [
2713         have_avformat="no"
2714       ])
2715       VLC_RESTORE_FLAGS
2716     ],[
2717       AC_MSG_ERROR([${AVFORMAT_PKG_ERRORS}. Pass --disable-avformat to ignore this error.])
2718   ])
2720 AM_CONDITIONAL([HAVE_AVFORMAT], [test "${enable_avformat}" != "no"])
2723 dnl  swscale image scaling and conversion plugin
2726 AC_ARG_ENABLE([swscale],
2727   AS_HELP_STRING([--enable-swscale],[libswscale image scaling and conversion
2728           (default enabled)]))
2729 if test "${enable_swscale}" != "no"
2730 then
2731   PKG_CHECK_MODULES(SWSCALE,[libswscale],
2732     [
2733       VLC_SAVE_FLAGS
2734       CPPFLAGS="${CPPFLAGS} ${SWSCALE_CFLAGS}"
2735       CFLAGS="${CFLAGS} ${SWSCALE_CFLAGS}"
2736       AC_CHECK_HEADERS([libswscale/swscale.h])
2737       AC_CHECK_HEADERS([libavutil/avutil.h])
2738       VLC_ADD_PLUGIN([swscale])
2739       VLC_ADD_LIBS([swscale],[$SWSCALE_LIBS])
2740       VLC_ADD_CFLAGS([swscale],[$SWSCALE_CFLAGS])
2741       AS_IF([test -n "${ac_cv_ld_bsymbolic}"], [
2742         VLC_ADD_LIBS([swscale],[${ac_cv_ld_bsymbolic}])
2743       ])
2744       VLC_RESTORE_FLAGS
2745     ],[
2746       AC_MSG_ERROR([${SWSCALE_PKG_ERRORS}. Pass --disable-swscale to ignore this error. Proper software scaling and some video chroma conversion will be missing.])
2747   ])
2751 dnl  postproc plugin
2754 AC_ARG_ENABLE([postproc],
2755 AS_HELP_STRING([--enable-postproc], [libpostproc image post-processing (default auto)]))
2756 if test "${enable_postproc}" != "no"
2757 then
2758   PKG_CHECK_MODULES(POSTPROC,[libpostproc libavutil],
2759     [
2760       VLC_SAVE_FLAGS
2761       CPPFLAGS="${CPPFLAGS} ${POSTPROC_CFLAGS}"
2762       CFLAGS="${CFLAGS} ${POSTPROC_CFLAGS}"
2763       AC_CHECK_HEADERS([postproc/postprocess.h])
2764       VLC_ADD_PLUGIN([postproc])
2765       VLC_RESTORE_FLAGS
2766     ],[
2767       AC_MSG_WARN([${POSTPROC_PKG_ERRORS}.])
2768   ])
2772 dnl  faad decoder plugin
2774 AC_ARG_ENABLE([faad],
2775 AS_HELP_STRING([--enable-faad], [faad codec (default auto)]))
2776 have_faad="no"
2777 AS_IF([test "${enable_faad}" != "no"], [
2778   AC_CHECK_HEADERS([neaacdec.h], [
2779     AC_CHECK_LIB([faad], [NeAACDecOpen], [have_faad="yes"],, [$LIBM])
2781     AS_IF([test "${have_faad}" = "yes"], [
2782       VLC_ADD_PLUGIN([faad])
2783       VLC_ADD_LIBS([faad],[-lfaad])
2784     ], [
2785       AS_IF([test "${enable_faad}" = "yes"], [
2786         AC_MSG_ERROR([cannot find FAAD library])
2787       ], [
2788         AC_MSG_WARN([cannot find FAAD library])
2789       ])
2790     ])
2791   ])
2795 dnl  AOM decoder plugin
2797 PKG_ENABLE_MODULES_VLC([AOM], [], [aom], [experimental AV1 codec (default auto)])
2800 dnl  Dav1d decoder plugin
2802 PKG_ENABLE_MODULES_VLC([DAV1D], [], [dav1d], [AV1 decoder (default auto)])
2805 dnl libvpx decoder plugin
2807 AC_ARG_ENABLE([vpx],
2808     AS_HELP_STRING([--enable-vpx],[libvpx VP8/VP9 encoder and decoder (default auto)]))
2809 AS_IF([test "${enable_vpx}" != "no"],[
2810     PKG_CHECK_MODULES([VPX], [vpx >= 1.5.0], [
2811         VLC_ADD_PLUGIN([vpx])
2812         VLC_ADD_CPPFLAGS([vpx], [${VPX_CFLAGS}])
2813         VLC_ADD_LIBS([vpx], [${VPX_LIBS}])
2814         AC_CHECK_LIB([vpx],[vpx_codec_vp8_dx], [
2815             VLC_ADD_CPPFLAGS([vpx], [-DENABLE_VP8_DECODER])
2816         ], [], [${VPX_LIBS}])
2817         AC_CHECK_LIB([vpx],[vpx_codec_vp9_dx], [
2818             VLC_ADD_CPPFLAGS([vpx], [-DENABLE_VP9_DECODER])
2819         ], [], [${VPX_LIBS}])
2820         AC_CHECK_LIB([vpx],[vpx_codec_vp8_cx], [
2821             VLC_ADD_CPPFLAGS([vpx], [-DENABLE_VP8_ENCODER])
2822         ], [], [${VPX_LIBS}])
2823         AC_CHECK_LIB([vpx],[vpx_codec_vp9_cx], [
2824             VLC_ADD_CPPFLAGS([vpx], [-DENABLE_VP9_ENCODER])
2825         ], [], [${VPX_LIBS}])
2826     ], [
2827     AS_IF([test "${enable_vpx}" = "yes"],[
2828         AC_MSG_ERROR([libvpx 1.5.0 or higher was not found])
2829     ])])
2833 dnl twolame encoder plugin
2835 PKG_ENABLE_MODULES_VLC([TWOLAME], [], [twolame], [MPEG Audio Layer 2 encoder], [auto], [], [], [ -DLIBTWOLAME_STATIC])
2838 dnl fdk-aac encoder plugin
2840 PKG_ENABLE_MODULES_VLC([FDKAAC], [], [fdk-aac], [FDK-AAC encoder], [disabled])
2844 dnl A52/AC3 decoder plugin
2846 AC_ARG_ENABLE([a52],
2847   AS_HELP_STRING([--enable-a52], [A/52 support with liba52 (default enabled)]))
2848 if test "${enable_a52}" != "no"
2849 then
2850   AC_ARG_WITH([a52],
2851     AS_HELP_STRING([--with-a52=PATH], [a52 headers and libraries]))
2852     if test -z "${with_a52}"
2853     then
2854       LDFLAGS_test=""
2855       CPPFLAGS_test=""
2856     else
2857       LDFLAGS_test="-L${with_a52}/lib"
2858       CPPFLAGS_test="-I${with_a52}/include"
2859     fi
2860     VLC_SAVE_FLAGS
2861     CPPFLAGS="${CPPFLAGS} ${CPPFLAGS_test} ${CPPFLAGS_a52}"
2862     LDFLAGS="${LDFLAGS} ${LDFLAGS_test} ${LIBS_a52}"
2863     AC_CHECK_HEADERS([a52dec/a52.h], [
2864       AC_CHECK_LIB([a52], [a52_free], [
2865         VLC_ADD_PLUGIN([a52])
2866         VLC_ADD_LIBS([a52],[${LDFLAGS_test} -la52 $LIBM])
2867         VLC_ADD_CPPFLAGS([a52],[${CPPFLAGS_test}])
2868       ],[
2869         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.])
2870         ], [$LIBM])
2871     ],[
2872       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.])
2873     ])
2874     VLC_RESTORE_FLAGS
2878 dnl DTS Coherent Acoustics decoder plugin
2880 PKG_ENABLE_MODULES_VLC([DCA], [dca], [libdca >= 0.0.5], [DTS Coherent Acoustics support with libdca], [auto])
2883 dnl  Flac plugin
2885 PKG_ENABLE_MODULES_VLC([FLAC], [], [flac], [libflac decoder/encoder support], [auto])
2888 dnl  Libmpeg2 plugin
2890 PKG_ENABLE_MODULES_VLC([LIBMPEG2], [], [libmpeg2 > 0.3.2], [libmpeg2 decoder support], [auto])
2893 dnl  Vorbis plugin
2895 PKG_ENABLE_MODULES_VLC([VORBIS], [], [ogg vorbis >= 1.1 vorbisenc >= 1.1], [Vorbis decoder and encoder], [auto])
2898 dnl  Tremor plugin
2900 AC_ARG_ENABLE([tremor],
2901   AS_HELP_STRING([--enable-tremor], [Tremor decoder support (default disabled)]))
2902 if test "${enable_tremor}" = "yes"
2903 then
2904   AC_CHECK_HEADERS([tremor/ivorbiscodec.h], [
2905     VLC_ADD_PLUGIN([tremor])
2906    ],[])
2910 dnl  Speex plugins
2912 PKG_ENABLE_MODULES_VLC([SPEEX], [], [ogg speex >= 1.0.5], [Speex support], [auto])
2913 have_speexdsp="no"
2914 AS_IF([test "${enable_speex}" != "no"], [
2915   PKG_CHECK_MODULES([SPEEXDSP], [speexdsp], [
2916     have_speexdsp="yes"
2917   ], [
2918     AC_MSG_WARN([${SPEEXDSP_PKG_ERRORS}.])
2919   ])
2921 AM_CONDITIONAL([HAVE_SPEEXDSP], [test "$have_speexdsp" = "yes"])
2924 dnl  Opus plugin
2926 PKG_ENABLE_MODULES_VLC([OPUS], [], [ogg opus >= 1.0.3], [Opus support], [auto])
2929 dnl  Ambisonic channel mixer and binauralizer plugin
2931 PKG_ENABLE_MODULES_VLC([SPATIALAUDIO], [], [spatialaudio], [Ambisonic channel mixer and binauralizer], [auto])
2934 dnl  theora decoder plugin
2936 PKG_ENABLE_MODULES_VLC([THEORA], [], [ogg theoradec >= 1.0 theoraenc], [experimental theora codec], [auto])
2939 dnl  OggSpots decoder plugin
2941 PKG_ENABLE_MODULES_VLC([OGGSPOTS], [], [ogg], [experimental OggSpots codec], [auto])
2944 dnl  Daala decoder plugin
2946 PKG_ENABLE_MODULES_VLC([DAALA], [], [daaladec daalaenc], [experimental daala codec], [disabled])
2949 dnl  schroedinger decoder plugin (for dirac format video)
2951 PKG_ENABLE_MODULES_VLC([SCHROEDINGER], [], [schroedinger-1.0 >= 1.0.10], [dirac decoder and encoder using schroedinger], [auto])
2954 dnl  PNG decoder module
2956 AC_ARG_ENABLE([png],
2957   AS_HELP_STRING([--enable-png], [PNG support (default enabled)]))
2958 AS_IF([test "${enable_png}" != "no"], [
2959 AC_CHECK_HEADERS([png.h], [
2960   VLC_SAVE_FLAGS
2961   LDFLAGS="${LDFLAGS} -lz $LIBM"
2962   AC_CHECK_LIB([png], [png_set_alpha_mode], [
2963     VLC_ADD_PLUGIN([png])
2964   ], [], [-lz $LIBM])
2965   VLC_RESTORE_FLAGS
2966   ])
2970 dnl  JPEG decoder module
2972 AC_ARG_ENABLE([jpeg],
2973   AS_HELP_STRING([--enable-jpeg], [JPEG support (default enabled)]))
2974 AS_IF([test "${enable_jpeg}" != "no"], [
2975 AC_CHECK_HEADERS([jpeglib.h], [
2976   VLC_ADD_PLUGIN([jpeg])
2977   ])
2981 dnl  BPG decoder module
2983 AC_ARG_ENABLE([bpg],
2984   AS_HELP_STRING([--enable-bpg], [BPG support (default disabled)]))
2985 AS_IF([test "${enable_bpg}" != "no"], [
2986 AC_CHECK_HEADERS([libbpg.h], [
2987   VLC_ADD_PLUGIN([bpg])
2988   ])
2992 dnl H262 encoder plugin (lib262)
2994 AC_ARG_ENABLE([x262],
2995   AS_HELP_STRING([--enable-x262], [H262 encoding support with static libx262 (default disabled)]))
2996 if test "${enable_x262}" != "no"; then
2997     PKG_CHECK_MODULES(X262, x262, [
2998         VLC_ADD_PLUGIN([x262])
2999         VLC_ADD_LDFLAGS([x262],[${X262_LIBS}])
3000         AS_IF([test -n "${ac_cv_ld_bsymbolic}"], [
3001           VLC_ADD_LIBS([x262],[${av_cv_ld_bsymbolic}])
3002         ])
3003         VLC_ADD_CFLAGS([x262],[${X262_CFLAGS}])
3004         if echo ${X262_LIBS} |grep -q 'pthreadGC2'; then
3005           VLC_ADD_CFLAGS([x262], [-DPTW32_STATIC_LIB])
3006         fi
3007     ], [
3008        if test "${enable_x262}" = "yes"; then
3009         AC_MSG_ERROR([x262 module doesn't work without staticly compiled libx262.a])
3010        fi
3011     ])
3014 dnl x265 encoder
3015 PKG_ENABLE_MODULES_VLC([X265],, [x265], [HEVC/H.265 encoder], [auto])
3018 dnl H264 encoder plugin (using libx264)
3020 AC_ARG_ENABLE([x264],
3021   AS_HELP_STRING([--enable-x264], [H264 encoding support with libx264 (default enabled)]))
3022 if test "${enable_x264}" != "no"; then
3023       PKG_CHECK_MODULES(X264,x264 >= 0.148, [
3024         VLC_ADD_PLUGIN([x264])
3025         VLC_ADD_LIBS([x264],[${X264_LIBS}])
3027         AS_IF([test -n "${ac_cv_ld_bsymbolic}"], [
3028           VLC_ADD_LDFLAGS([x264],[${ac_cv_ld_bsymbolic}])
3029         ])
3031         VLC_ADD_CFLAGS([x264],[${X264_CFLAGS}])
3032         if echo ${X264_LIBS} |grep -q 'pthreadGC2'; then
3033           VLC_ADD_CFLAGS([x264], [-DPTW32_STATIC_LIB])
3034         fi
3035       ],[
3036         if test "${enable_x264}" = "yes"; then
3037             AC_MSG_ERROR([${X264_PKG_ERRORS}: you may get it from http://www.videolan.org/x264.html])
3038           fi
3039       ])
3043 dnl H264 encoder plugin (libx264 > 153)
3045 AC_ARG_ENABLE([x26410b],
3046   AS_HELP_STRING([--enable-x26410b], [H264 10-bit encoding support with libx264 (default enabled)]))
3047 if test "${enable_x26410b}" != "no"; then
3048       PKG_CHECK_MODULES(X26410b,x264 >= 0.153, [
3049         VLC_ADD_PLUGIN([x26410b])
3050         VLC_ADD_LIBS([x26410b],[${X264_LIBS}])
3052         AS_IF([test -n "${ac_cv_ld_bsymbolic}"], [
3053           VLC_ADD_LDFLAGS([x26410b],[${ac_cv_ld_bsymbolic}])
3054         ])
3056         VLC_ADD_CFLAGS([x26410b],[${X264_CFLAGS}])
3057         if echo ${X264_LIBS} |grep -q 'pthreadGC2'; then
3058           VLC_ADD_CFLAGS([x26410b], [-DPTW32_STATIC_LIB])
3059         fi
3060       ],[
3061         if test "${enable_x26410b}" = "yes"; then
3062             AC_MSG_ERROR([${X264_PKG_ERRORS}: you may get it from http://www.videolan.org/x264.html])
3063           fi
3064       ])
3069 dnl Intel QuickSync (aka MediaSDK) H264/H262 encoder
3071 PKG_ENABLE_MODULES_VLC([MFX], [qsv], [libmfx], [Intel QuickSync MPEG4-Part10/MPEG2 (aka H.264/H.262) encoder], [auto])
3074 dnl libfluidsynth (MIDI synthetizer) plugin
3076 PKG_ENABLE_MODULES_VLC([FLUIDSYNTH], [], [fluidsynth >= 1.1.2], [MIDI synthetiser with libfluidsynth], [auto])
3077 PKG_ENABLE_MODULES_VLC([FLUIDLITE], [fluidsynth], [fluidlite], [MIDI synthetiser with libfluidsynth], [auto])
3078 AC_CHECK_HEADERS([fluidlite.h], [AC_SUBST([FLUIDSYNTH_LIBS], ${FLUIDLITE_LIBS})])
3081 dnl Teletext Modules
3082 dnl vbi decoder plugin (using libzbvi)
3083 dnl telx module
3084 dnl uncompatible
3086 AC_ARG_ENABLE([zvbi],
3087   AS_HELP_STRING([--enable-zvbi],[VBI (inc. Teletext) decoding support with
3088                   libzvbi (default enabled)]))
3089 AC_ARG_ENABLE([telx],
3090   AS_HELP_STRING([--enable-telx],[Teletext decoding module (conflicting with
3091                   zvbi) (default enabled if zvbi is absent)]))
3093 AS_IF( [test "${enable_zvbi}" != "no"],[
3094     PKG_CHECK_MODULES(ZVBI, [zvbi-0.2 >= 0.2.28],
3095         [
3096           VLC_ADD_PLUGIN([zvbi])
3097           AC_DEFINE(ZVBI_COMPILED, 1, [Define if the zvbi module is built])
3098           AS_IF( [test "${enable_telx}" = "yes"],[
3099                   AC_MSG_WARN([The zvbi and telx modules are incompatible. Using zvbi.])
3100                   ])
3101         ],[
3102           AC_MSG_WARN([${ZVBI_PKG_ERRORS}. Enabling the telx module instead.])
3103         ])
3104     ])
3105 AS_IF( [test "${enable_telx}" != "no" ],[
3106   VLC_ADD_PLUGIN([telx])
3107   ])
3110 dnl ARIB subtitles rendering module
3112 AC_ARG_ENABLE([aribsub],
3113   AS_HELP_STRING([--enable-aribsub],[ARIB Subtitles support (default enabled)]))
3114 AS_IF( [test "${enable_aribsub}" != "no" ],[
3115   PKG_CHECK_MODULES(ARIBB24, [aribb24 >= 1.0.1], [
3116       have_aribb24="yes"
3117       VLC_ADD_PLUGIN([aribsub])
3118       VLC_ADD_LIBS([aribsub],[-laribb24])
3119       AC_DEFINE(HAVE_ARIBB24, 1, [Define if libaribb24 is available.])
3120     ],[
3121       AC_MSG_WARN(Library [aribb24] needed for [aribsub] was not found)
3122       have_aribb24="no"
3123   ])
3125 AM_CONDITIONAL([HAVE_ARIBB24], [test x"${have_aribb24}" = x"yes"])
3128 dnl ARIB B25
3130 PKG_ENABLE_MODULES_VLC([ARIBB25], [aribcam], [aribb25 >= 0.2.6], [ARIB STD-B25], [auto])
3133 dnl  kate decoder plugin
3135 PKG_ENABLE_MODULES_VLC([KATE], [], [kate >= 0.3.0], [kate codec], [auto])
3138 dnl  tiger rendering for kate decoder plugin
3140 AC_ARG_ENABLE([tiger],
3141 AS_HELP_STRING([--enable-tiger], [Tiger rendering library for Kate streams (default auto)]))
3142 AS_IF([test "${enable_tiger}" != "no"], [
3143   PKG_CHECK_MODULES(TIGER,[tiger >= 0.3.1], [
3144       AC_DEFINE(HAVE_TIGER, 1, [Define if libtiger is available.])],[
3145         AS_IF([test -n "${enable_tiger}"], [
3146           AC_MSG_ERROR([${TIGER_PKG_ERRORS}.])
3147         ])
3148   ])
3152 dnl  check if we can build the css selector engine
3154 AC_ARG_ENABLE([css],
3155 AS_HELP_STRING([--enable-css], [CSS selector engine (default auto)]))
3156 AS_IF([test "${enable_css}" != "no"], [
3157   with_css="yes"
3158   AC_DEFINE(HAVE_CSS, 1, [Define if CSS engine is built])
3160 AM_CONDITIONAL([ENABLE_CSS], [test "${with_css}" = "yes"])
3164 dnl  Video plugins
3167 EXTEND_HELP_STRING([Video plugins:])
3170 dnl  libplacebo support
3172 AC_ARG_ENABLE([libplacebo],
3173   AS_HELP_STRING([--disable-libplacebo],
3174       [disable libplacebo support (default auto)]))
3176 AS_IF([test "$enable_libplacebo" != "no"], [
3177   PKG_CHECK_MODULES([LIBPLACEBO], [libplacebo >= 0.5], [
3178     AC_DEFINE([HAVE_LIBPLACEBO], [1], [Define to 1 if libplacebo is enabled.])
3179     PKG_CHECK_MODULES([LIBPLACEBO], [libplacebo >= 1.7],
3180       [have_libplacebo_vk="yes"], [have_libplacebo_vk="no"])
3181   ], [
3182     AS_IF([test -n "${enable_libplacebo}"], [
3183       AC_MSG_ERROR([${LIBPLACEBO_PKG_ERRORS}.])
3184     ])
3185     enable_libplacebo="no"
3186   ])
3188 AM_CONDITIONAL([HAVE_LIBPLACEBO], [test "$enable_libplacebo" != "no"])
3191 dnl  OpenGL
3193 PKG_CHECK_MODULES([EGL], [egl], [
3194   have_egl="yes"
3195 ], [
3196   have_egl="no"
3198 AM_CONDITIONAL([HAVE_EGL], [test "${have_egl}" = "yes"])
3200 have_gl="no"
3201 PKG_CHECK_MODULES([GL], [gl], [
3202   have_gl="yes"
3203 ], [
3204   AC_MSG_CHECKING([for OpenGL])
3205   AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
3206 #ifdef _WIN32
3207 # include <GL/glew.h>
3208 #endif
3209 #include <GL/gl.h>
3210 ]], [
3211     [int t0 = GL_TEXTURE0;]])
3212   ], [
3213     GL_CFLAGS=""
3214     have_gl="yes"
3215     AS_IF([test "${SYS}" != "mingw32"], [
3216       GL_LIBS="-lGL"
3217     ], [
3218       GL_LIBS="-lopengl32"
3219     ])
3220   ])
3221   AC_MSG_RESULT([${have_gl}])
3223 AM_CONDITIONAL([HAVE_GL], [test "${have_gl}" = "yes"])
3224 AS_IF([test "${have_gl}" = "yes"], [
3225   AC_DEFINE([HAVE_GL], 1, [Defined if having OpenGL])
3228 dnl OpenGL ES 2: depends on EGL 1.1
3229 PKG_ENABLE_MODULES_VLC([GLES2], [], [glesv2], [OpenGL ES v2 support], [disabled])
3232 dnl Vulkan
3234 AC_ARG_ENABLE(vulkan,
3235   [AS_HELP_STRING([--disable-vulkan],
3236       [disable Vulkan support (default auto)])])
3238 AS_IF([test "$enable_vulkan" != "no"], [
3239   AS_IF([test "$have_libplacebo_vk" = "yes"], [
3240     PKG_CHECK_MODULES([VULKAN], [vulkan >= 1.0.26], [
3241       AC_DEFINE([HAVE_VULKAN], [1], [Define to 1 if vulkan is enabled.])
3242     ], [
3243       AS_IF([test -n "${enable_vulkan}"], [
3244         AC_MSG_ERROR([${VULKAN_PKG_ERRORS}.])
3245       ])
3246       enable_vulkan="no"
3247     ])
3248   ], [
3249     AS_IF([test -n "${enable_vulkan}"], [
3250       AC_MSG_ERROR([Vulkan support requires libplacebo 1.7 as well. Do not use --disable-libplacebo.])
3251     ])
3252     enable_vulkan="no"
3253   ])
3255 AM_CONDITIONAL(HAVE_VULKAN, [test "$enable_vulkan" != "no"])
3258 dnl  Xlib
3261 AC_PATH_XTRA()
3262 AC_CHECK_HEADERS([X11/Xlib.h])
3265 dnl  X C Bindings modules
3267 AC_ARG_ENABLE([xcb],
3268   AS_HELP_STRING([--enable-xcb], [X11 support with XCB (default enabled)]),, [
3269   AS_IF([test "${SYS}" != "mingw32" -a "${SYS}" != "darwin"], [
3270     enable_xcb="yes"
3271   ], [
3272     enable_xcb="no"
3273   ])
3276 have_xcb="no"
3277 have_xkbcommon_x11="no"
3278 have_xcb_keysyms="no"
3279 AS_IF([test "${enable_xcb}" != "no"], [
3280   xcb_err=""
3282   dnl libxcb
3283   PKG_CHECK_MODULES([XCB], [xcb >= 1.6],, [
3284     xcb_err="$xcb_err ${XCB_PKG_ERRORS}."])
3285   PKG_CHECK_MODULES([XCB_COMPOSITE], [xcb-composite],, [
3286     xcb_err="$xcb_err ${XCB_COMPOSITE_PKG_ERRORS}."])
3287   PKG_CHECK_MODULES([XCB_RANDR], [xcb-randr >= 1.3],, [
3288     xcb_err="$xcb_err ${XCB_RANDR_PKG_ERRORS}."])
3289   PKG_CHECK_MODULES([XCB_RENDER], [xcb-render],, [
3290     xcb_err="$xcb_err ${XCB_RENDER_PKG_ERRORS}."])
3291   PKG_CHECK_MODULES([XCB_SHM], [xcb-shm >= 1.9.2],, [
3292     xcb_err="$xcb_err ${XCB_SHM_PKG_ERRORS}."])
3293   PKG_CHECK_MODULES([XCB_XKB], [xcb-xkb],, [
3294     xcb_err="$xcb_err ${XCB_XKB_PKG_ERRORS}."])
3296   dnl xproto
3297   PKG_CHECK_MODULES(XPROTO, [xproto],, [
3298     xcb_err="$xcb_err ${XPROTO_PKG_ERRORS}."])
3300   AS_IF([test -n "$xcb_err"], [
3301     AC_MSG_ERROR([$xcb_err Pass --disable-xcb to skip X11 support.])
3302   ])
3304   dnl xkbcommon
3305   PKG_CHECK_MODULES([XKBCOMMON_X11], [xkbcommon-x11], [
3306     have_xkbcommon_x11="yes"
3307   ], [
3308     AC_MSG_WARN([${XKBCOMMON_X11_PKG_ERRORS}. Hotkeys are disabled.])
3309   ])
3311   dnl xcb-utils
3312   PKG_CHECK_MODULES([XCB_KEYSYMS], [xcb-keysyms >= 0.3.4], [
3313     have_xcb_keysyms="yes"
3314   ], [
3315     AC_MSG_WARN([${XCB_KEYSYMS_PKG_ERRORS}. Global hotkeys are disabled.])
3316   ])
3318   have_xcb="yes"
3320 AM_CONDITIONAL([HAVE_XCB], [test "${have_xcb}" = "yes"])
3321 AM_CONDITIONAL([HAVE_XKBCOMMON_X11], [test "${have_xkbcommon_x11}" = "yes"])
3322 AM_CONDITIONAL([HAVE_XCB_KEYSYMS], [test "${have_xcb_keysyms}" = "yes"])
3326 dnl VDPAU needs X11
3328 AC_ARG_ENABLE([vdpau],
3329   [AS_HELP_STRING([--enable-vdpau], [VDPAU hardware support (default auto)])])
3330 have_vdpau="no"
3331 AS_IF([test "${enable_vdpau}" != "no"], [
3332   PKG_CHECK_MODULES([VDPAU], [vdpau >= 0.6], [
3333     have_vdpau="yes"
3334     AS_IF([test "${no_x}" = "yes"], [
3335       AC_MSG_ERROR([VDPAU requires Xlib (X11).])
3336     ])
3337   ], [
3338     AS_IF([test -n "${enable_vdpau}"], [
3339       AC_MSG_ERROR([${VDPAU_PKG_ERRORS}.])
3340     ])
3341   ])
3343 AM_CONDITIONAL([HAVE_VDPAU], [test "${have_vdpau}" = "yes"])
3345 have_avcodec_vdpau="no"
3346 AS_IF([test "${have_vdpau}" = "yes" -a "${have_avcodec}" = "yes"], [
3347   case "${avfork}" in
3348     libav) av_vdpau_ver="56.10.0" ;;
3349     ffmpeg) av_vdpau_ver="56.19.100" ;;
3350   esac
3351   PKG_CHECK_EXISTS([libavcodec >= ${av_vdpau_ver}], [
3352     have_avcodec_vdpau="yes"
3353     AC_MSG_NOTICE([VDPAU decoding acceleration activated])
3354   ], [
3355     AS_IF([test -n "${enable_vdpau}"], [
3356       AC_MSG_ERROR([libavcodec >= 56.10.0 is required for VDPAU decoding.])
3357     ], [
3358       AC_MSG_WARN([libavcodec >= 56.10.0 are required for VDPAU decoding.])
3359     ])
3360   ])
3362 AM_CONDITIONAL([HAVE_AVCODEC_VDPAU], [test "${have_avcodec_vdpau}" = "yes"])
3366 dnl  Wayland
3368 AC_ARG_ENABLE([wayland],
3369   AS_HELP_STRING([--enable-wayland], [Wayland support (default auto)]))
3371 have_wayland="no"
3372 AS_IF([test "${enable_wayland}" != "no"], [
3373   wl_err=""
3375   dnl wayland
3376   PKG_CHECK_MODULES([WAYLAND_CLIENT], [wayland-client >= 1.5.91],, [
3377     wl_err="$wl_err ${WAYLAND_CLIENT_PKG_ERRORS}."
3378   ])
3379   PKG_CHECK_MODULES([WAYLAND_CURSOR], [wayland-cursor],, [
3380     wl_err="$wl_err ${WAYLAND_CURSOR_PKG_ERRORS}."
3381   ])
3382   PKG_CHECK_MODULES([WAYLAND_EGL], [wayland-egl],, [
3383     wl_err="$wl_err ${WAYLAND_EGL_PKG_ERRORS}."
3384   ])
3385   PKG_CHECK_MODULES([WAYLAND_SCANNER], [wayland-scanner >= 1.15], [
3386     WAYLAND_SCANNER="$(${PKG_CONFIG} wayland-scanner --variable wayland_scanner)"
3387   ], [
3388     wl_err="$wl_err ${WAYLAND_SCANNER_PKG_ERRORS}."
3389   ])
3391   dnl wayland-protocols
3392   PKG_CHECK_MODULES([WAYLAND_PROTOCOLS], [wayland-protocols >= 1.15], [
3393     WAYLAND_PROTOCOLS="$(${PKG_CONFIG} wayland-protocols --variable pkgdatadir)"
3394   ], [
3395     wl_err="$wl_err ${WAYLAND_PROTOCOLS_PKG_ERRORS}."
3396   ])
3398   AS_IF([test -n "$wl_err"], [
3399     AS_IF([test -n "$enable_wayland"], [
3400       AC_MSG_ERROR([$wl_err])
3401     ], [
3402       AC_MSG_WARN([$wl_err])
3403     ])
3404   ], [
3405     have_wayland="yes"
3406   ])
3408   dnl xkbcommon
3409   PKG_CHECK_MODULES([XKBCOMMON], [xkbcommon], [
3410     have_xkbcommon="yes"
3411   ], [
3412     AC_MSG_WARN([${XKBCOMMON_PKG_ERRORS}. Hotkeys are disabled.])
3413   ])
3415 AM_CONDITIONAL([HAVE_WAYLAND], [test "${have_wayland}" = "yes"])
3416 AC_SUBST([WAYLAND_PROTOCOLS])
3417 AC_SUBST([WAYLAND_SCANNER])
3418 AM_CONDITIONAL([HAVE_XKBCOMMON], [test "${have_xkbcommon}" = "yes"])
3422 dnl  SDL image decoder module
3424 AC_ARG_ENABLE([sdl-image],
3425   AS_HELP_STRING([--enable-sdl-image], [SDL image support (default enabled)]))
3426 AS_IF([test "${enable_sdl_image}" != "no"],[
3427   PKG_CHECK_MODULES(SDL_IMAGE, [SDL_image >= 1.2.10], [
3428     VLC_ADD_PLUGIN([sdl_image])
3429   ], [
3430     AC_MSG_WARN([${SDL_IMAGE_PKG_ERRORS}. You should install it alongside your SDL package.])
3431   ])
3435 dnl  freetype module
3437 AC_ARG_ENABLE([freetype],
3438   AS_HELP_STRING([--enable-freetype],   [freetype support   (default auto)]))
3439 AC_ARG_ENABLE([fribidi],
3440   AS_HELP_STRING([--enable-fribidi],    [fribidi support    (default auto)]))
3441 AC_ARG_ENABLE([harfbuzz],
3442   AS_HELP_STRING([--enable-harfbuzz],   [harfbuzz support   (default auto)]))
3443 AC_ARG_ENABLE([fontconfig],
3444   AS_HELP_STRING([--enable-fontconfig], [fontconfig support (default auto)]))
3446 AC_ARG_WITH([default-font],
3447     AS_HELP_STRING([--with-default-font=PATH],
3448         [Path to the default font]),
3449         [AC_DEFINE_UNQUOTED([DEFAULT_FONT_FILE],
3450             "$withval", [Default font])])
3451 AC_ARG_WITH([default-monospace-font],
3452     AS_HELP_STRING([--with-default-monospace-font=PATH],
3453         [Path to the default font]),
3454         [AC_DEFINE_UNQUOTED([DEFAULT_MONOSPACE_FONT_FILE],
3455             "$withval", [Default monospace font])])
3457 AC_ARG_WITH([default-font-family],
3458     AS_HELP_STRING([--with-default-font-family=NAME],
3459         [Name of the default font family]),
3460         [AC_DEFINE_UNQUOTED([DEFAULT_FAMILY],
3461             "$withval", [Default font family])])
3462 AC_ARG_WITH([default-monospace-font-family],
3463     AS_HELP_STRING([--with-default-monospace-font-family=NAME],
3464         [Name of the default font family]),
3465         [AC_DEFINE_UNQUOTED([DEFAULT_MONOSPACE_FAMILY],
3466             "$withval", [Default monospace font family])])
3468 have_freetype="no"
3469 have_fontconfig="no"
3470 have_fribidi="no"
3471 have_harfbuzz="no"
3473 if test "${enable_freetype}" != "no"; then
3474    PKG_CHECK_MODULES(FREETYPE, freetype2, [
3475       have_freetype="yes"
3476       VLC_ADD_CPPFLAGS([skins2],[${FREETYPE_CFLAGS}])
3477       VLC_ADD_LIBS([skins2],[${FREETYPE_LIBS}])
3479     dnl fontconfig support
3480     AS_IF([test "${enable_fontconfig}" != "no" -a "${SYS}" != "mingw32" -a "${SYS}" != "darwin"], [
3481       PKG_CHECK_MODULES(FONTCONFIG, [fontconfig >= 2.11], [
3482         have_fontconfig="yes"
3483       ], [
3484         AC_MSG_WARN([${FONTCONFIG_PKG_ERRORS}. Styles will be disabled in FreeType.])
3485       ])
3486     ])
3488       dnl fribidi support
3489       if test "${enable_fribidi}" != "no"; then
3490         PKG_CHECK_MODULES(FRIBIDI, fribidi, [
3491           have_fribidi="yes"
3492           VLC_ADD_CPPFLAGS([skins2], [${FRIBIDI_CFLAGS} -DHAVE_FRIBIDI])
3493           VLC_ADD_LIBS([skins2], [${FRIBIDI_LIBS}])
3494         ],[AC_MSG_WARN([${FRIBIDI_PKG_ERRORS}. Bidirectional text and complex scripts (Arabic, Farsi, Thai...) will be disabled in FreeType.])])
3495       fi
3497       dnl harfbuzz support
3498       if test "${have_fribidi}" != "no"; then
3499         if test "${enable_harfbuzz}" != "no"; then
3500           PKG_CHECK_MODULES(HARFBUZZ, harfbuzz, [
3501             have_harfbuzz="yes"
3502             VLC_ADD_CPPFLAGS([skins2], [${HARFBUZZ_CFLAGS} -DHAVE_HARFBUZZ])
3503             VLC_ADD_LIBS([skins2], [${HARFBUZZ_LIBS}])
3504           ],[AC_MSG_WARN([${HARFBUZZ_PKG_ERRORS}. Support for complex scripts (Arabic, Farsi, Thai...) will be disabled in FreeType.])])
3505         fi
3506       fi
3507   ],[
3508   AS_IF([test -n "${enable_freetype}"],[
3509     AC_MSG_ERROR([${FREETYPE_PKG_ERRORS}. Install FreeType2 development or configure with --disable-freetype.])
3510     ])
3511   ])
3514 AM_CONDITIONAL([HAVE_FREETYPE], [test "${have_freetype}" = "yes"])
3515 AM_CONDITIONAL([HAVE_FONTCONFIG], [test "${have_fontconfig}" = "yes"])
3516 AM_CONDITIONAL([HAVE_FRIBIDI], [test "${have_fribidi}" = "yes"])
3517 AM_CONDITIONAL([HAVE_HARFBUZZ], [test "${have_harfbuzz}" = "yes"])
3520 dnl libass subtitle rendering module
3522 AC_ARG_ENABLE([libass],
3523   AS_HELP_STRING([--enable-libass], [Subtitle support using libass (default enabled)]))
3524 AS_IF( [test "${enable_libass}" != "no"], [
3525   PKG_CHECK_MODULES(LIBASS, [libass >= 0.9.8],
3526       [
3527         VLC_ADD_PLUGIN([libass])
3529         if test "${have_fontconfig}" != "no"; then
3530             VLC_ADD_CPPFLAGS([libass],[-DHAVE_FONTCONFIG])
3531             VLC_ADD_LIBS([libass],[${FONTCONFIG_LIBS}])
3532         fi
3533       ],[
3534         AC_MSG_WARN([${LIBASS_PKG_ERRORS}.])
3535       ])
3536   ])
3539 dnl SAPI (text to Speech renderer for Windows)
3541 AC_LANG_PUSH([C++])
3542 AC_CHECK_TYPES([ISpObjectToken],[
3543               have_sapi="yes"
3544             ],[AC_MSG_WARN([sapi.h not found. Text to Speech renderer for Windows disabled])],
3545               [#include <windows.h>
3546                #include <sapi.h>
3547                #include <sphelper.h>])
3548 AM_CONDITIONAL([HAVE_SAPI], [test "${have_sapi}" = "yes"])
3549 AC_LANG_POP([C++])
3552 dnl  SVG module (text rendering and image decoding)
3554 PKG_ENABLE_MODULES_VLC([SVG], [], [librsvg-2.0 >= 2.9.0], [SVG rendering library],[auto])
3555 PKG_ENABLE_MODULES_VLC([SVGDEC], [], [librsvg-2.0 >= 2.9.0 cairo >= 1.13.1], [SVG image decoder library],[auto])
3558 dnl  Windows DirectX module
3561 AC_ARG_ENABLE([directx],
3562   AS_HELP_STRING([--enable-directx],
3563     [Microsoft DirectX support (default enabled on Windows)]),, [
3564   AS_IF([test "${SYS}" = "mingw32"], [
3565     enable_directx="yes"
3566   ], [
3567     enable_directx="no"
3568   ])
3570 AS_IF([test "${enable_directx}" != "no"], [
3571   dnl OpenGL
3572   AC_CHECK_HEADERS([GL/glew.h], [
3573     AC_CHECK_HEADERS([GL/wglew.h], [
3574         VLC_ADD_PLUGIN([glwin32 wgl])
3575       ],, [
3576         #include <windows.h>
3577         #include <GL/glew.h>
3578       ])],, [
3579       #include <windows.h>
3580    ])
3582   dnl Direct3D11
3583   AC_CHECK_HEADERS([d3d11.h], [
3584     VLC_ADD_PLUGIN([direct3d11 direct3d11_filters])
3585   ])
3587   dnl Direct3D9
3588   AC_CHECK_HEADERS([d3d9.h], [
3589     VLC_ADD_PLUGIN([direct3d9])
3590     AC_CHECK_HEADERS([d3dx9effect.h])
3592     AC_PREPROC_IFELSE([AC_LANG_PROGRAM(
3593         [[#define COBJMACROS
3594           #include <d3d9.h>
3595           #include <dxva2api.h>
3596           #ifndef IDirectXVideoProcessorService_GetVideoProcessorDeviceGuids
3597           # error dxva2 too old
3598           #endif
3599         ]],[[;]])
3600       ],[
3601         VLC_ADD_PLUGIN([direct3d9_filters])
3602       ],
3603       [AC_MSG_WARN([Could not find required IDirectXVideoDecoder in dxva2api.h])])
3605   ])
3609 dnl  Linux framebuffer module
3611 AC_CHECK_HEADER([linux/fb.h], [
3612   VLC_ADD_PLUGIN([fb])
3616 dnl  Linux kernel mode setting module
3618 PKG_ENABLE_MODULES_VLC([KMS], [], [libdrm >= 2.4.83], [Linux kernel mode setting output], [auto])
3621 dnl  libcaca plugin
3623 PKG_ENABLE_MODULES_VLC([CACA], [], [caca >= 0.99.beta14], [libcaca output],[auto])
3626 dnl  OS/2 KVA plugin
3628 AC_ARG_ENABLE([kva],
3629   AS_HELP_STRING([--enable-kva],
3630     [support the K Video Accelerator KVA (default enabled on OS/2)]),, [
3631   AS_IF([test "$SYS" = "os2"], [
3632     enable_kva="yes"
3633   ])
3635 have_kva="no"
3636 KVA_LIBS=""
3637 AS_IF([test "$enable_kva" != "no"], [
3638   AC_CHECK_HEADERS([kva.h], [
3639     have_kva="yes"
3640     AC_CHECK_LIB([kva], [main], [
3641       KVA_LIBS="-lkva"
3642     ])
3643   ])
3645 AC_SUBST([KVA_LIBS])
3646 AM_CONDITIONAL([HAVE_KVA], [test "${have_kva}" = "yes"])
3649 dnl MMAL plugin
3651 AC_ARG_ENABLE([mmal],
3652   AS_HELP_STRING([--enable-mmal],
3653     [Multi-Media Abstraction Layer (MMAL) hardware plugin (default enable)]))
3654 if test "${enable_mmal}" != "no"; then
3655   VLC_SAVE_FLAGS
3656   LDFLAGS="${LDFLAGS} -L/opt/vc/lib -lvchostif"
3657   CPPFLAGS="${CPPFLAGS} -isystem /opt/vc/include -isystem /opt/vc/include/interface/vcos/pthreads -isystem /opt/vc/include/interface/vmcs_host/linux"
3658   AC_CHECK_HEADERS([interface/mmal/mmal.h],
3659     [ AC_CHECK_LIB([bcm_host], [vc_tv_unregister_callback_full], [
3660         have_mmal="yes"
3661         VLC_ADD_PLUGIN([mmal])
3662         VLC_ADD_LDFLAGS([mmal],[ -L/opt/vc/lib ])
3663         VLC_ADD_CFLAGS([mmal],[ -isystem /opt/vc/include -isystem /opt/vc/include/interface/vcos/pthreads -isystem /opt/vc/include/interface/vmcs_host/linux ])
3664         VLC_ADD_LIBS([mmal],[ -lbcm_host -lmmal -lmmal_core -lmmal_components -lmmal_util -lvchostif ]) ], [
3665           AS_IF([test "${enable_mmal}" = "yes"],
3666             [ AC_MSG_ERROR([Cannot find bcm library...]) ],
3667             [ AC_MSG_WARN([Cannot find bcm library...]) ])
3668           ],
3669         [])
3670     ] , [ AS_IF([test "${enable_mmal}" = "yes"],
3671       [ AC_MSG_ERROR([Cannot find development headers for mmal...]) ],
3672       [ AC_MSG_WARN([Cannot find development headers for mmal...]) ]) ])
3673   VLC_RESTORE_FLAGS
3675 AM_CONDITIONAL([HAVE_MMAL], [test "${have_mmal}" = "yes"])
3678 dnl  Audio plugins
3681 EXTEND_HELP_STRING([Audio plugins:])
3684 dnl  Pulseaudio module
3686 AC_ARG_ENABLE([pulse],
3687   AS_HELP_STRING([--enable-pulse],
3688     [use the PulseAudio client library (default auto)]))
3689 have_pulse="no"
3690 AS_IF([test "${enable_pulse}" != "no"], [
3691   PKG_CHECK_MODULES([PULSE], [libpulse >= 1.0], [
3692     have_pulse="yes"
3693   ], [
3694     AS_IF([test "x${enable_pulse}" != "x"], [
3695       AC_MSG_ERROR([$PULSE_PKG_ERRORS. PulseAudio 1.0 or later required.])
3696     ])
3697   ])
3699 AM_CONDITIONAL([HAVE_PULSE], [test "${have_pulse}" = "yes"])
3702 dnl  ALSA module
3704 AC_ARG_ENABLE([alsa],
3705   AS_HELP_STRING([--enable-alsa],
3706     [support the Advanced Linux Sound Architecture (default auto)]),, [
3707   AS_IF([test "$SYS" = "linux" -a "${have_pulse}" = "no"], [
3708     enable_alsa="yes"
3709   ])
3711 have_alsa="no"
3712 AS_IF([test "${enable_alsa}" != "no"], [
3713   PKG_CHECK_MODULES([ALSA], [alsa >= 1.0.24], [
3714     have_alsa="yes"
3715   ], [
3716     AS_IF([test "x${enable_alsa}" != "x"], [
3717       AC_MSG_ERROR([$ALSA_PKG_ERRORS. alsa-lib 1.0.24 or later required. Pass --disable-alsa to ignore this error.])
3718     ])
3719   ])
3721 AM_CONDITIONAL([HAVE_ALSA], [test "${have_alsa}" = "yes"])
3724 dnl  Open Sound System module
3726 AC_ARG_ENABLE([oss],
3727   AS_HELP_STRING([--enable-oss],
3728     [support the Open Sound System OSS (default enabled on FreeBSD/NetBSD/DragonFlyBSD)]),, [
3729   AS_IF([test "$SYS" = "mingw32" -o "$SYS" = "linux" -o "$SYS" = "openbsd"], [
3730     enable_oss="no"
3731   ])
3733 have_oss="no"
3734 OSS_LIBS=""
3735 AS_IF([test "$enable_oss" != "no"], [
3736   AC_CHECK_HEADERS([soundcard.h sys/soundcard.h], [
3737     have_oss="yes"
3738     AC_CHECK_LIB([ossaudio], [main], [
3739       OSS_LIBS="-lossaudio"
3740     ])
3741   ])
3743 AC_SUBST([OSS_LIBS])
3744 AM_CONDITIONAL([HAVE_OSS], [test "${have_oss}" = "yes"])
3747 dnl  OpenBSD sndio module
3749 AC_ARG_ENABLE([sndio],
3750   AS_HELP_STRING([--disable-sndio],
3751     [support the OpenBSD sndio (default auto)]),, [
3752   AS_IF([test "$SYS" = "openbsd"], [
3753     enable_sndio="yes"
3754   ])
3756 have_sndio="no"
3757 AS_IF([test "$enable_sndio" != "no"], [
3758   AC_CHECK_HEADER([sndio.h], [
3759     have_sndio="yes"
3760   ])
3762 AM_CONDITIONAL([HAVE_SNDIO], [test "${have_sndio}" = "yes"])
3765 dnl  Windows Audio Session plugin
3767 AC_ARG_ENABLE([wasapi],
3768   AS_HELP_STRING([--enable-wasapi],
3769     [use the Windows Audio Session API (default auto)])
3771 have_wasapi="no"
3772 AS_IF([test "$enable_wasapi" != "no"], [
3773   AC_CHECK_HEADER([audioclient.h], [
3774     have_wasapi="yes"
3775   ], [
3776     AS_IF([test "x${enable_wasapi}" != "x"], [
3777       AC_MSG_ERROR([Windows Audio Session API not found.])
3778     ])
3779   ])
3781 AM_CONDITIONAL([HAVE_WASAPI], [test "${have_wasapi}" = "yes"])
3784 dnl  JACK modules
3786 AC_ARG_ENABLE([jack],
3787   AS_HELP_STRING([--disable-jack],
3788     [do not use jack (default auto)]))
3789 have_jack="no"
3790 AS_IF([test "${enable_jack}" != "no"], [
3791     PKG_CHECK_MODULES(JACK, jack >= 1.9.7,
3792       [ have_jack=yes ],
3793       [
3794       AC_MSG_WARN([${JACK_PKG_ERRORS}, trying jack1 instead])
3796       PKG_CHECK_MODULES(JACK, jack >= 0.120.1 jack < 1.0,
3797       [ have_jack=yes ],
3798       [
3799       AS_IF([test -n "${enable_jack}"],
3800          [AC_MSG_ERROR([${JACK_PKG_ERRORS}.])],
3801          [AC_MSG_WARN([${JACK_PKG_ERRORS}.])])
3802       ])
3803     ])
3805 AM_CONDITIONAL([HAVE_JACK], [test "${have_jack}" != "no"])
3808 dnl  OpenSLES Android
3810 AC_ARG_ENABLE([opensles],
3811   AS_HELP_STRING([--enable-opensles], [Android OpenSL ES audio module (default disabled)]))
3812 if test "${HAVE_ANDROID}" = "1"; then
3813   if test "${enable_opensles}" = "yes"; then
3814       AC_CHECK_HEADERS([SLES/OpenSLES.h],
3815         [ VLC_ADD_PLUGIN([opensles_android]) ],
3816         [ AC_MSG_ERROR([cannot find OpenSLES headers])] )
3817   fi
3821 dnl libsamplerate plugin
3823 PKG_ENABLE_MODULES_VLC([SAMPLERATE], [], [samplerate], [Resampler with libsamplerate], [auto])
3826 dnl  soxr module
3828 PKG_ENABLE_MODULES_VLC([SOXR], [], [soxr >= 0.1.2], [SoX Resampler library], [auto])
3831 dnl  OS/2 KAI plugin
3833 AC_ARG_ENABLE([kai],
3834   AS_HELP_STRING([--enable-kai],
3835     [support the K Audio Interface KAI (default enabled on OS/2)]),, [
3836   AS_IF([test "$SYS" = "os2"], [
3837     enable_kai="yes"
3838   ])
3840 have_kai="no"
3841 KAI_LIBS=""
3842 AS_IF([test "$enable_kai" != "no"], [
3843   AC_CHECK_HEADERS([kai.h], [
3844     have_kai="yes"
3845     AC_CHECK_LIB([kai], [main], [
3846       KAI_LIBS="-lkai"
3847     ])
3848   ])
3850 AC_SUBST([KAI_LIBS])
3851 AM_CONDITIONAL([HAVE_KAI], [test "${have_kai}" = "yes"])
3854 dnl  chromaprint audio track fingerprinter
3856 m4_pushdef([libchromaprint_version], 0.6.0)
3857 PKG_WITH_MODULES([CHROMAPRINT],[libchromaprint >= libchromaprint_version],
3858     VLC_ADD_PLUGIN([stream_out_chromaprint]),
3859     AS_IF([test "${enable_chromaprint}" = "yes"],
3860         [AC_MSG_ERROR(Library [libchromaprint >= libchromaprint_version] needed for [chromaprint] was not found)],
3861         [AC_MSG_WARN(Library [libchromaprint >= libchromaprint_version] needed for [chromaprint] was not found)]
3862          ),
3863     [(Chromaprint based audio fingerprinter)],[auto])
3864 m4_popdef([libchromaprint_version])
3867 dnl  Chromecast streaming support
3869 m4_pushdef([protobuf_lite_version], 2.5.0)
3870 AC_ARG_VAR(PROTOC, [protobuf compiler])
3871 AC_CHECK_PROGS(PROTOC, protoc, no)
3872 PKG_WITH_MODULES([CHROMECAST],[protobuf-lite >= protobuf_lite_version], [
3873     AS_IF([test "x${PROTOC}" != "xno"], [
3874         build_chromecast="yes"
3875     ], [
3876     AC_MSG_ERROR(protoc compiler needed for [chromecast] was not found)
3877     ])
3878 ], [
3879     AS_IF([test "${enable_chromecast}" = "yes"],
3880         AC_MSG_ERROR(Library [protobuf-lite >= protobuf_lite_version] needed for [chromecast] was not found),
3881         AC_MSG_WARN(Library [protobuf-lite >= protobuf_lite_version] needed for [chromecast] was not found)
3882     )
3883     enable_chromecast="no"
3884 ], [(Chromecast streaming support)], [auto])
3885 AM_CONDITIONAL([BUILD_CHROMECAST], [test "${build_chromecast}" = "yes"])
3886 m4_popdef([protobuf_lite_version])
3889 dnl  Interface plugins
3892 EXTEND_HELP_STRING([Interface plugins:])
3895 dnl QT
3897 AC_ARG_ENABLE([qt],
3898   AS_HELP_STRING([--disable-qt], [Qt UI support (default enabled)]),, [
3899   AS_IF([test "${enable_vlc}" != "no"], [enable_qt="yes"])
3900   AS_IF([test "${SYS}" = "darwin"], [
3901     enable_qt="no"
3902   ])
3904 have_qt5_x11="no"
3905 AS_IF([test "${enable_qt}" != "no"], [
3906   PKG_CHECK_MODULES([QT], [Qt5Core >= 5.11.0 Qt5Widgets Qt5Gui Qt5Quick Qt5QuickWidgets Qt5QuickControls2 Qt5Svg], [
3907       PKG_CHECK_MODULES([QT5_X11], [Qt5X11Extras], [
3908           have_qt5_x11="yes"
3909       ],[
3910           AC_MSG_WARN([Not building Qt Interface with X11 helpers.])
3911       ])
3912       QT_PATH="$(eval $PKG_CONFIG --variable=exec_prefix Qt5Core)"
3913       QT_HOST_PATH="$(eval $PKG_CONFIG --variable=host_bins Qt5Core)"
3914       QT_VERSION="$(eval $PKG_CONFIG --modversion Qt5Gui)"
3915       AC_PATH_PROGS(MOC, [moc-qt5 moc], moc, ["${QT_HOST_PATH}" "${QT_PATH}/bin"])
3916       AC_PATH_PROGS(RCC, [rcc-qt5 rcc], rcc, ["${QT_HOST_PATH}" "${QT_PATH}/bin"])
3917       AC_PATH_PROGS(UIC, [uic-qt5 uic], uic, ["${QT_HOST_PATH}" "${QT_PATH}/bin"])
3918       AC_PATH_PROGS(QMLCACHE, [qmlcachegen-qt5 qmlcachegen], no, ["${QT_HOST_PATH}" "${QT_PATH}/bin"])
3919       AS_IF([test "x${QMLCACHE}" = "xno"], [
3920           AC_MSG_WARN([qmlcachegen not found])
3921       ])
3922     ], [
3923       AS_IF([test -n "${enable_qt}"],[
3924         AC_MSG_ERROR([${QT_PKG_ERRORS}. If you want to build VLC without GUI, pass --disable-qt.])
3925       ],[
3926         AC_MSG_WARN([${QT_PKG_ERRORS}.])
3927       ])
3928       enable_qt="no"
3929     ])
3932 AC_ARG_ENABLE([qt-qml-cache],
3933   AS_HELP_STRING([--enable-qt-qml-cache],
3934     [enable qml cache generation]))
3935 AM_CONDITIONAL([HAVE_QMLCACHE], [test "${enable_qt_qml_cache}" = "yes" && test "x$QMLCACHE" != "xno"])
3937 AC_ARG_ENABLE([qt-qml-debug],
3938   AS_HELP_STRING([--enable-qt-qml-debug], [enable qml debuger]))
3939 AM_CONDITIONAL(QT_QML_DEBUG, [test "${enable_qt_qml_debug}" = "yes"])
3941 AS_IF([test "${enable_qt}" != "no"], [
3942   ALIASES="${ALIASES} qvlc"
3944 AC_SUBST([QT_VERSION])
3945 AM_CONDITIONAL([ENABLE_QT], [test "$enable_qt" != "no"])
3946 AM_CONDITIONAL([HAVE_QT5_X11], [test "${have_qt5_x11}" = "yes"])
3949 dnl detect kde4-config patch (used for kde solids).
3951 AC_ARG_VAR([KDE4_CONFIG], [kde4-config utility])
3952 AS_IF([test "x$KDE4_CONFIG" = "x"], [
3953   KDE4_CONFIG="kde4-config"
3957 dnl Simple test for skins2 dependency
3959 AS_IF([test "$enable_qt" = "no"], [
3960   AS_IF([test "${enable_skins2}" = "yes"], [
3961     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.])
3962   ], [
3963     enable_skins2="no"
3964     AC_MSG_WARN([The skins2 module depends on the Qt interface, Qt is not built so skins2 is disabled.])
3965   ])
3969 dnl Skins2 module
3971 AC_ARG_ENABLE([skins2],
3972   AS_HELP_STRING([--enable-skins2], [skins interface module (default auto)]))
3973 AS_IF([test "${enable_skins2}" != "no"], [
3974   have_skins_deps="yes"
3976   dnl Win32
3977   AS_IF([test "${SYS}" = "mingw32"], [
3978     VLC_ADD_CPPFLAGS([skins2],[-U_OFF_T_ -U_off_t -DWIN32_SKINS])
3979     VLC_ADD_LIBS([skins2],[-lgdi32 -lole32 -luuid -lmsimg32])
3980   dnl OS/2
3981   ], [test "${SYS}" = "os2"], [
3982     VLC_ADD_CPPFLAGS([skins2],[ -DOS2_SKINS])
3983   dnl Linux/Unix
3984   ], [
3985     PKG_CHECK_MODULES([XPM], [xpm],, [have_skins_deps="no"])
3986     PKG_CHECK_MODULES([XINERAMA], [xinerama],, [have_skins_deps="no"])
3987     PKG_CHECK_MODULES([XCURSOR], [xcursor],, [have_skins_deps="no"])
3988     PKG_CHECK_MODULES([XEXT], [xext],, [have_skins_deps="no"])
3989     VLC_ADD_CPPFLAGS([skins2],[${X_CFLAGS} ${XEXT_CFLAGS} ${XPM_CFLAGS} -DX11_SKINS])
3990     VLC_ADD_LIBS([skins2],[${X_LIBS} ${X_PRE_LIBS} ${XEXT_LIBS} ${XPM_LIBS} ${XINERAMA_LIBS} ${XCURSOR_LIBS} -lX11])
3991   ])
3993   dnl we need freetype
3994   AS_IF([test "${have_freetype}" != "yes"], [
3995     have_skins_deps="no"
3996   ])
3998   AS_IF([test "${have_skins_deps}" = "no"], [
3999     AS_IF([test "x${enable_skins2}" = "x"], [
4000       AC_MSG_WARN([Skins2 interface disabled due to missing dependencies.])
4001     ], [
4002       AC_MSG_ERROR([Skins2 interface requires FreeType, libxcursor, libxpm, libxext and libxinerama])
4003     ])
4004     enable_skins2="no"
4005   ], [
4006     ALIASES="${ALIASES} svlc"
4007     enable_skins2="yes"
4008   ])
4010 AM_CONDITIONAL([BUILD_SKINS], [test "${enable_skins2}" = "yes"])
4012 AC_ARG_ENABLE([libtar],
4013   AS_HELP_STRING([--enable-libtar], [libtar support for skins2 (default auto)]))
4014 AS_IF([test "${enable_skins2}" = "yes" && test "${enable_libtar}" != "no"], [
4015   AC_CHECK_HEADERS([libtar.h], [
4016     VLC_ADD_LIBS([skins2],[-ltar])
4017   ])
4021 dnl  MacOS X gui module
4023 AC_ARG_ENABLE([macosx],
4024   AS_HELP_STRING([--enable-macosx], [Mac OS X gui support (default enabled on Mac OS X)]))
4025 if test "x${enable_macosx}" != "xno" -a "${SYS}" = "darwin"
4026 then
4028   dnl
4029   dnl If possible, use xcrun to find the right ibtool
4030   dnl
4032   AC_PATH_PROG([XCRUN], [xcrun], [no])
4033   AS_IF([test ! "x${XCRUN}" = "xno"], [
4034     AC_MSG_CHECKING([for ibtool (using xcrun)])
4035     XIB="$(eval $XCRUN -f ibtool 2>/dev/null || echo no)"
4036     AC_MSG_RESULT([${XIB}])
4037   ], [
4038     AC_MSG_WARN([Looking for tools without using xcrun])
4039   ])
4041   AS_IF([test "x${XIB}" = "xno"], [
4042     AC_PATH_PROG(XIB, [ibtool], [no])
4043     AS_IF([test "x${XIB}" = "xno"], [
4044       AC_MSG_ERROR([ibtool was not found, but is required for --enable-macosx])
4045     ])
4046   ])
4048 AM_CONDITIONAL([ENABLE_MACOSX_UI], [test "$enable_macosx" != "no" -a "${SYS}" = "darwin"])
4051 dnl  MacOS X sparkle update support
4053 AC_ARG_ENABLE([sparkle],
4054   AS_HELP_STRING([--enable-sparkle], [Sparkle update support for OS X (default enabled on Mac OS X)]))
4055 if test "x${enable_sparkle}" != "xno" -a "${HAVE_OSX}" = "1"
4056 then
4057   if test ! -d ${CONTRIB_DIR}/Sparkle.framework -a ! -d ${CONTRIB_DIR}/Frameworks/Sparkle.framework
4058   then
4059     AC_MSG_ERROR([Sparkle framework is required and was not found in ${CONTRIB_DIR}])
4060   fi
4062   AC_DEFINE([HAVE_SPARKLE], [1], [Define to 1 if sparkle is enabled.])
4064 AM_CONDITIONAL([HAVE_SPARKLE], [test "$enable_sparkle" != "no"])
4067 dnl  MacOS X breakpad creash reporter support
4069 AC_ARG_WITH([breakpad],
4070   AS_HELP_STRING([--with-breakpad=URL], [Enable Breakpad reporter using given URL]), [], [with_breakpad=no])
4072 AS_IF([test "$with_breakpad" != "no"], [
4074   AS_IF([test "$with_breakpad" = "yes"], [
4075     AC_MSG_ERROR([You need to supply the CrashDragon Server URL as value for --with-breakpad])
4076   ])
4078   AS_IF([test "$HAVE_OSX" = "1"], [
4079     AC_MSG_CHECKING([for Breakpad framework])
4080     AS_IF([test ! -d ${CONTRIB_DIR}/Breakpad.framework -a \
4081                 ! -d ${CONTRIB_DIR}/Frameworks/Breakpad.framework], [
4082       AC_MSG_RESULT([no])
4083       with_breakpad="no"
4084       AC_MSG_ERROR([Breakpad framework is required and was not found in ${CONTRIB_DIR}])
4085     ], [
4086       AC_MSG_RESULT([yes])
4087     ])
4088   ],[
4089     PKG_CHECK_MODULES([BREAKPAD], [breakpad-client], [
4090       LDFLAGS="${LDFLAGS} -Wl,--build-id"
4091     ], [
4092       AC_MSG_ERROR(["breakpad not found"])
4093     ])
4094   ])
4097 AM_CONDITIONAL([HAVE_BREAKPAD], [test "$with_breakpad" != "no"])
4098 AS_IF([test "$with_breakpad" != "no"], [
4099   AC_SUBST([BREAKPAD_URL], ["${with_breakpad}"])
4103 dnl  Minimal Mac OS X module
4105 AC_ARG_ENABLE([minimal-macosx],
4106   AS_HELP_STRING([--enable-minimal-macosx], [Minimal Mac OS X support (default disabled)]))
4107 if test "${enable_minimal_macosx}" = "yes" -a "${SYS}" = "darwin"
4108 then
4109   VLC_ADD_PLUGIN([minimal_macosx])
4113 dnl Mac OS X fancy dmg build tool
4115 if test "${HAVE_OSX}" = "1"
4116 then
4117   AC_PATH_PROG(DMGBUILD, dmgbuild, no)
4118   AS_IF([test "x${DMGBUILD}" = "xno"], [
4119     AC_MSG_WARN([dmgbuild not found -- unable to build fancy DMGs])
4120   ])
4122 AM_CONDITIONAL([HAVE_DMGBUILD], [test "x$DMGBUILD" != "xno" -a "${HAVE_OSX}" = "1"])
4125 dnl  VideoToolbox plugins
4126 AC_CHECK_HEADERS([VideoToolbox/VideoToolbox.h], [
4127     VLC_ADD_PLUGIN([videotoolbox])
4128     VLC_ADD_PLUGIN([cvpx])
4129   ])
4132 dnl  AudioToolbox MIDI plugin
4133 AC_CHECK_HEADERS([AudioToolbox/AudioToolbox.h], [
4134   VLC_ADD_PLUGIN([audiotoolboxmidi])
4138 dnl  ncurses module
4140 AC_ARG_ENABLE([ncurses],
4141 AS_HELP_STRING([--disable-ncurses],[ncurses text-based interface (default auto)]))
4142 have_ncurses="no"
4143 AS_IF([test "${enable_ncurses}" != "no"] ,[
4144   PKG_CHECK_MODULES([NCURSES], [ncursesw], [
4145     have_ncurses="yes"
4146     ALIASES="${ALIASES} nvlc"
4147   ], [
4148     AS_IF([test -n "${enable_ncurses}"], [
4149       AC_MSG_ERROR([${NCURSES_PKG_ERRORS}.])
4150     ])
4151   ])
4153 AM_CONDITIONAL([HAVE_NCURSES], [test "${have_ncurses}" = "yes"])
4156 dnl  Lirc plugin
4158 AC_ARG_ENABLE([lirc],
4159   AS_HELP_STRING([--enable-lirc], [lirc support (default disabled)]))
4160 have_lirc="no"
4161 AS_IF([test "${enable_lirc}" = "yes"], [
4162   AC_CHECK_HEADER(lirc/lirc_client.h, [
4163     AC_CHECK_LIB([lirc_client], [lirc_init], [
4164       have_lirc="yes"
4165     ])
4166   ])
4168 AM_CONDITIONAL([HAVE_LIRC], [test "${have_lirc}" = "yes"])
4171 dnl  Bitstream
4173 PKG_CHECK_MODULES([BITSTREAM], [bitstream > 1.4],[have_bitstream="yes"], [have_bitstream="no"])
4174 AM_CONDITIONAL([HAVE_BITSTREAM], [test "${have_bitstream}" = "yes"])
4177 dnl  SRT plugin
4179 PKG_ENABLE_MODULES_VLC([SRT], [access_srt access_output_srt], [srt >= 1.3.0], [SRT input/output plugin], [auto], [], [], [-DENABLE_SRT])
4181 EXTEND_HELP_STRING([Visualisations and Video filter plugins:])
4183 dnl  goom visualization plugin
4185 PKG_ENABLE_MODULES_VLC([GOOM], [], [libgoom2], [goom visualization plugin], [auto])
4188 dnl libprojectM visualization plugin
4190 AC_ARG_ENABLE([projectm],
4191   AS_HELP_STRING([--enable-projectm], [projectM visualization plugin (default enabled)]))
4192 AS_IF([test "${enable_projectm}" != "no"],
4193   [
4194     PKG_CHECK_MODULES(PROJECTM, libprojectM,
4195     [
4196       VLC_ADD_PLUGIN([projectm])
4197       PKG_CHECK_EXISTS([libprojectM >= 2.0.0],
4198         [ AC_DEFINE([HAVE_PROJECTM2], 1, [Define to 1 if using libprojectM 2.x]) ],
4199         [ AC_MSG_WARN( [Using libprojectM version 1] )
4200       ])
4201     ],[
4202       AC_MSG_WARN([${PROJECTM_PKG_ERRORS}.])
4203     ])
4204   ])
4207 dnl Vovoid VSXu visualization plugin
4209 AC_ARG_ENABLE([vsxu],
4210   AS_HELP_STRING([--enable-vsxu], [Vovoid VSXu visualization plugin (default auto)]))
4211 AS_IF([test "${enable_vsxu}" != "no"],
4212   [
4213     PKG_CHECK_MODULES(VSXU, libvsxu,
4214     [
4215       VLC_ADD_PLUGIN([vsxu])
4216     ],[
4217       AC_MSG_WARN([${VSXU_PKG_ERRORS}.])
4218     ])
4219   ])
4221 EXTEND_HELP_STRING([Service Discovery plugins:])
4223 dnl  Avahi-Zeroconf services discovery
4224 PKG_ENABLE_MODULES_VLC([AVAHI], [], [avahi-client >= 0.6], [Zeroconf services discovery], [auto])
4227 dnl  libudev services discovery
4228 PKG_ENABLE_MODULES_VLC([UDEV], [], [libudev >= 142], [Linux udev services discovery], [auto])
4231 dnl MTP devices services discovery
4232 PKG_ENABLE_MODULES_VLC([MTP], [mtp access_mtp], [libmtp >= 1.0.0], [MTP devices support], [auto])
4235 dnl UPnP Plugin (Intel SDK)
4237 PKG_ENABLE_MODULES_VLC([UPNP], [upnp], [libupnp], [Intel UPNP SDK],[auto])
4240 dnl mDNS using libmicrodns
4242 PKG_ENABLE_MODULES_VLC([MICRODNS], [], [microdns], [mDNS services discovery], [auto])
4245 EXTEND_HELP_STRING([Misc options:])
4248 dnl  libxml2 module
4250 PKG_ENABLE_MODULES_VLC([LIBXML2], [xml], [libxml-2.0 >= 2.5], [libxml2 support],[auto])
4254 dnl libgcrypt
4256 AC_ARG_ENABLE([libgcrypt],
4257   AS_HELP_STRING([--disable-libgcrypt], [gcrypt support (default enabled)]))
4258 AC_ARG_VAR([GCRYPT_CFLAGS], [C compiler flags for gcrypt])
4259 AC_ARG_VAR([GCRYPT_LIBS], [linker flags flags for gcrypt])
4261 # require libgcrypt >= 1.6.0
4262 AS_IF([test "${enable_libgcrypt}" != "no"], [
4263   AC_CACHE_CHECK([for gcrypt 1.6.0 or later], [ac_cv_lib_gcrypt], [
4264     VLC_SAVE_FLAGS
4265     CFLAGS="${CFLAGS} ${GCRYPT_CFLAGS}"
4266     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([
4267 [#include <gcrypt.h>
4268 #if GCRYPT_VERSION_NUMBER < 0x010600
4269 #error
4270 #endif]])], [
4271       ac_cv_lib_gcrypt=yes
4272     ], [
4273       ac_cv_lib_gcrypt=no
4274     ])
4275     VLC_RESTORE_FLAGS
4276   ])
4278   AS_IF([test "${ac_cv_lib_gcrypt}" = "yes"], [
4279     AC_DEFINE([HAVE_GCRYPT], 1, [Defined if having gcrypt])
4280   ], [
4281     AS_IF([test "${enable_libgcrypt}" = "yes"], [
4282       AC_MSG_ERROR([libgcrypt version 1.6.0 or higher not found. Install libgcrypt or pass --disable-libgcrypt.])
4283     ])
4284   ])
4287 AS_IF([test -z "$GCRYPT_LIBS"], [
4288   GCRYPT_LIBS="-lgcrypt -lgpg-error"
4291 AC_SUBST([GCRYPT_CFLAGS])
4292 AC_SUBST([GCRYPT_LIBS])
4293 AM_CONDITIONAL([HAVE_GCRYPT], [test "${ac_cv_lib_gcrypt}" = "yes"])
4296 dnl TLS/SSL
4298 AC_ARG_ENABLE([gnutls],
4299   AS_HELP_STRING([--enable-gnutls], [GNU TLS TLS/SSL support (default enabled)]))
4300 AS_IF([test "${enable_gnutls}" != "no"], [
4301   PKG_CHECK_MODULES(GNUTLS, [gnutls >= 3.5.0], [
4302     VLC_ADD_PLUGIN([gnutls])
4303   ], [
4304     AS_IF([test -n "${enable_gnutls}"], [
4305       AC_MSG_ERROR([${GNUTLS_PKG_ERRORS}.)])
4306     ])
4307   ])
4312 dnl Taglib plugin
4314 AC_ARG_ENABLE([taglib],
4315   AS_HELP_STRING([--disable-taglib],
4316     [do not use TagLib (default enabled)]))
4317 AS_IF([test "${enable_taglib}" != "no"], [
4318   PKG_CHECK_MODULES(TAGLIB, taglib >= 1.11, [
4319     VLC_ADD_PLUGIN([taglib])
4320   ], [
4321     AC_MSG_WARN([${TAGLIB_PKG_ERRORS}.])])
4325 dnl  libsecret
4327 PKG_ENABLE_MODULES_VLC([SECRET], [], [libsecret-1 >= 0.18], [use libsecret for keystore], [auto])
4330 dnl  kwallet
4332 AC_ARG_ENABLE([kwallet],
4333   AS_HELP_STRING([--enable-kwallet],
4334     [use kwallet (via D-Bus) for keystore (default enabled)]))
4335 AS_IF([test "${enable_kwallet}" != "no" -a "${have_dbus}" = "yes"], [
4336   VLC_ADD_PLUGIN([kwallet])
4340 dnl update checking system
4342 AC_ARG_ENABLE([update-check],
4343   AS_HELP_STRING([--enable-update-check], [update checking system (default disabled)]))
4344 if test "${enable_update_check}" = "yes"
4345 then
4346  AS_IF([test "${ac_cv_lib_gcrypt}" != "yes"],[
4347     AC_MSG_ERROR([libgcrypt is required for update checking system]) ])
4349 AM_CONDITIONAL([UPDATE_CHECK], [test "${enable_update_check}" = "yes"])
4352 dnl OS X notification plugin
4354 AC_ARG_ENABLE([osx_notifications],
4355   AS_HELP_STRING([--enable-osx-notifications],
4356     [macOS notification plugin (default disabled)]),,
4357   [enable_osx_notifications=no])
4358 AS_IF([test "${enable_osx_notifications}" != "no"], [
4359   VLC_ADD_PLUGIN([osx_notifications])
4363 dnl Libnotify notification plugin
4365 PKG_ENABLE_MODULES_VLC([NOTIFY], [], [libnotify gtk+-3.0], [libnotify notification], [auto])
4367 PKG_ENABLE_MODULES_VLC([MEDIALIBRARY], [medialibrary], [medialibrary], (medialibrary support), [auto])
4370 dnl  Endianness check
4372 AC_C_BIGENDIAN
4373 AS_IF([test "${ac_cv_c_bigendian}" = "yes"], [
4374   DEFS_BIGENDIAN="-DWORDS_BIGENDIAN=1"
4375 ], [
4376   DEFS_BIGENDIAN=""
4378 AC_SUBST([DEFS_BIGENDIAN])
4381 dnl Where to install KDE solid .desktop
4383 AC_ARG_WITH(kde-solid,
4384   AS_HELP_STRING([--with-kde-solid=PATH],
4385                  [KDE Solid actions directory (auto)]),, [
4387 if test "${SYS}" != "mingw32" -a "${SYS}" != "darwin" -a "${HAVE_ANDROID}" != "1" ; then
4388   with_kde_solid="yes"
4391 soliddatadir=""
4392 AS_IF([test "${with_kde_solid}" != "no"], [
4393   AS_IF([test "${with_kde_solid}" = "yes"], [
4394     kde4datadir="`${KDE4_CONFIG} --install data`"
4395     AS_IF([test "x$kde4datadir" = "x"], [kde4datadir='${datadir}/kde4/apps'])
4396     soliddatadir="${kde4datadir}/solid/actions"
4397   ], [
4398     soliddatadir="${with_kde_solid}"
4399   ])
4401 AC_SUBST([soliddatadir])
4402 AM_CONDITIONAL([KDE_SOLID], [test "x${soliddatadir}" != "x"])
4405 dnl  Find tools for win32 packaging
4407 AS_IF([test "${SYS}" = "mingw32"], [
4408     dnl
4409     dnl Find makensis required to build the NSIS installer
4410     dnl
4411     nsis_major_required="3"
4412     nsis_version_ok="no"
4413     AC_PATH_PROG([MAKENSIS], [makensis], [no])
4414     AS_IF([test "$MAKENSIS" != "no"], [
4415         # Check version
4416         AC_MSG_CHECKING([makensis version])
4417         nsis_version=$($MAKENSIS -VERSION)
4418         AC_MSG_RESULT([$nsis_version])
4419         nsis_version_major=$(echo "$nsis_version" | awk -F \. '{print $1}' | sed 's/v//')
4420         # Check if major version is a valid number
4421         AS_IF([test -n "$nsis_version_major" && \
4422                test "$nsis_version_major" -eq "$nsis_version_major" 2> /dev/null], [
4423             # Do the version check using major version
4424             AS_IF([test "$nsis_version_major" -lt "$nsis_major_required"], [
4425                 AC_MSG_WARN([makensis too old, (needs ${nsis_major_required}.x, have ${nsis_version_major}.x)])
4426             ], [
4427                 nsis_version_ok="yes"
4428             ])
4429         ], [
4430             AC_MSG_WARN([failed to check the makensis version])
4431         ])
4432     ])
4433     dnl
4434     dnl Find 7zip
4435     dnl
4436     AC_PATH_PROG([SEVENZIP], [7z], [7z])
4438 AM_CONDITIONAL([HAVE_MAKENSIS], [test "x$MAKENSIS" != "xno" && test "$nsis_version_ok" = "yes"])
4441 dnl Check wether we have the PROCESS_MITIGATION_IMAGE_LOAD_POLICY
4442 dnl It should only be available when building for win10, but some SDKs define it unconditionnaly
4444 if test "${SYS}" = "mingw32"; then
4445     AC_CHECK_TYPES([PROCESS_MITIGATION_IMAGE_LOAD_POLICY],,,[#include <windows.h>])
4448 EXTEND_HELP_STRING([Components:])
4451 dnl  the VLC binary
4453 AC_ARG_ENABLE([vlc],
4454   AS_HELP_STRING([--enable-vlc], [build the VLC media player (default enabled)]))
4455 AM_CONDITIONAL([BUILD_VLC], [test "${enable_vlc}" != "no"])
4458 dnl Fuzzer (at the end not to mess dependencies FLAGS)
4460 AS_VAR_IF(with_libfuzzer, no, [], [
4461     LIBS="-lstdc++ ${LIBM}"
4462     AS_IF([test "${with_libfuzzer}" != "yes"], [
4463       LIBS="$LIBS -L${with_libfuzzer}"
4464     ])
4465     LIBS="$LIBS -lFuzzer"
4466     AX_CHECK_COMPILE_FLAG(-fsanitize-coverage=trace-pc-guard, [
4467         AX_APPEND_FLAG([-fsanitize-coverage=trace-pc-guard])
4468         AX_APPEND_FLAG([-fsanitize-coverage=trace-pc-guard], [CXXFLAGS])
4469         AX_APPEND_COMPILE_FLAGS([-fsanitize-coverage=trace-cmp])
4470         AX_APPEND_COMPILE_FLAGS([-fsanitize-coverage=trace-cmp], [CXXFLAGS])
4471     ], [
4472         AX_CHECK_COMPILE_FLAG(-fsanitize-coverage=trace-pc, [
4473             AX_APPEND_FLAG([-fsanitize-coverage=trace-pc])
4474             AX_APPEND_FLAG([-fsanitize-coverage=trace-pc], [CXXFLAGS])
4475         ], [
4476             AC_MSG_ERROR([Sanitizer coverage not supported by your compiler])
4477         ])
4478     ])
4482 dnl  Stuff used by the program
4484 VERSION_MESSAGE="${VERSION} ${CODENAME}"
4485 COPYRIGHT_MESSAGE="Copyright © ${COPYRIGHT_YEARS} the VideoLAN team"
4486 AC_DEFINE_UNQUOTED([VERSION_MESSAGE], "${VERSION_MESSAGE}", [Simple version string])
4487 AC_DEFINE_UNQUOTED([COPYRIGHT_MESSAGE], "${COPYRIGHT_MESSAGE}", [Copyright string])
4488 AC_DEFINE_UNQUOTED([COPYRIGHT_YEARS], "${COPYRIGHT_YEARS}", [The copyright years])
4489 AC_DEFINE_UNQUOTED([CONFIGURE_LINE], "${CONFIGURE_LINE}", [The ./configure command line])
4490 AC_DEFINE_UNQUOTED([PACKAGE_VERSION_MAJOR],${VERSION_MAJOR}, [version major number])
4491 AC_DEFINE_UNQUOTED([PACKAGE_VERSION_MINOR],${VERSION_MINOR}, [version minor number])
4492 AC_DEFINE_UNQUOTED([PACKAGE_VERSION_REVISION],${VERSION_REVISION}, [version revision number])
4493 AC_DEFINE_UNQUOTED([PACKAGE_VERSION_EXTRA],${VERSION_EXTRA}, [version extra number])
4494 AC_DEFINE_UNQUOTED([PACKAGE_VERSION_DEV],"${VERSION_DEV}", [version development string])
4495 AC_SUBST([COPYRIGHT_MESSAGE])
4496 AC_SUBST([VERSION_MESSAGE])
4497 AC_SUBST([VERSION_MAJOR])
4498 AC_SUBST([VERSION_MINOR])
4499 AC_SUBST([VERSION_REVISION])
4500 AC_SUBST([VERSION_EXTRA])
4501 AC_SUBST([COPYRIGHT_YEARS])
4502 AC_DEFINE_UNQUOTED([VLC_COMPILE_BY], "`whoami|sed -e 's/\\\/\\\\\\\/g'`", [user who ran configure])
4503 AC_DEFINE_UNQUOTED([VLC_COMPILE_HOST], "`hostname -f 2>/dev/null || hostname`", [host which ran configure])
4504 AC_DEFINE_UNQUOTED([VLC_COMPILER], "`$CC -v 2>&1 | tail -n 1 | sed -e 's/ *$//'`", [compiler])
4506 dnl  Handle substvars that use $(top_srcdir)
4508 CPPFLAGS="-I\$(top_srcdir)/include -I\$(top_builddir)/include ${CPPFLAGS}"
4511 dnl  Configuration is finished
4513 AC_SUBST([SYS])
4514 AC_SUBST([ARCH])
4515 AC_SUBST([ALIASES])
4516 AC_SUBST([ASM])
4517 AC_SUBST([MOC])
4518 AC_SUBST([RCC])
4519 AC_SUBST([UIC])
4520 AC_SUBST([WINDRES])
4521 AC_SUBST([WINE_SDK_PATH])
4522 AC_SUBST([LIBEXT])
4523 AC_SUBST([AM_CPPFLAGS])
4524 AC_SUBST([MACOSX_DEPLOYMENT_TARGET])
4525 AC_SUBST([FILE_LIBVLCCORE_DLL])
4526 AC_SUBST([FILE_LIBVLC_DLL])
4528 AC_CONFIG_FILES([
4529   Makefile
4530   doc/Makefile
4531   modules/Makefile
4532   m4/Makefile
4533   po/Makefile.in
4534   share/Makefile
4535   compat/Makefile
4536   src/Makefile
4537   lib/Makefile
4538   bin/Makefile
4539   test/Makefile
4540   modules/hw/mmal/Makefile
4541   share/vlc.appdata.xml.in
4544 AM_COND_IF([HAVE_WIN32], [
4545   AC_CONFIG_FILES([
4546     extras/package/win32/NSIS/spad.nsi
4547     extras/package/win32/NSIS/vlc.win32.nsi
4548     extras/package/win32/msi/config.wxi
4549   ])
4552 AM_COND_IF([HAVE_DARWIN], [
4553   AC_CONFIG_FILES([
4554     modules/gui/macosx/UI/InfoPlist.strings:modules/gui/macosx/Resources/InfoPlist.strings.in
4555     share/macosx/Info.plist:share/Info.plist.in
4556   ])
4559 dnl Generate makefiles
4560 AC_OUTPUT
4562 dnl Do we have to use make or gmake ?
4563 if make --version 2>&1|grep -q GNU
4564 then
4565     # GNU make, all seems good
4566     MAKE=make
4567 else
4568     # Known GNU make alias (on BSD)
4569     MAKE=gmake
4571 dnl Shortcut to nice compile message
4572 if test -n $SHELL; then
4573   SHELL=${CONFIG_SHELL-/bin/sh}
4575 rm -f compile
4576 compile_top_srcdir=`sed -ne "s/^top_srcdir *= *//p" < Makefile`
4577 echo "#! $SHELL
4578 rm -f .error\$\$
4579 ERROR=0
4580 export PATH=\"$PATH\" LANG=C
4581 ($MAKE V=1 \$@ 2>&1 || touch .error\$\$)| $compile_top_srcdir/extras/buildsystem/make.pl
4582 test -f .error\$\$ && ERROR=1
4583 rm -f .error\$\$
4584 exit \$ERROR" >compile
4585 chmod a+x compile
4587 echo "
4588 libvlc configuration
4589 --------------------
4590 version               : ${VERSION}
4591 system                : ${SYS}
4592 architecture          : ${ARCH}
4593 optimizations         : ${enable_optimizations}"
4594 if test "${enable_vlc}" != "no"; then
4595 echo "vlc aliases           :${ALIASES}"
4596 else
4597 echo "build vlc executable  : no"
4599 echo "
4600 To build vlc and its plugins, type \`$MAKE', or \`./compile' if you like nice colors."