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