core: playlist: refactor current media update
[vlc.git] / configure.ac
blobd41973712410dd54ec4fb6d63746680ec1cffccd
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_11([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 case "${host_os}" in
99   "")
100     SYS=unknown
101     ;;
102   linux*)
103     SYS=linux
104     CFLAGS="${CFLAGS} -pthread"
105     ;;
106   bsdi*)
107     SYS=bsdi
108     CFLAGS="${CFLAGS} -pthread"
109     ;;
110   freebsd*)
111     SYS=freebsd
112     CFLAGS="${CFLAGS} -pthread"
113     CPPFLAGS="${CPPFLAGS} -I/usr/local/include"
114     LDFLAGS="${LDFLAGS} -L/usr/local/lib"
115     ac_cv_ld_z_defs=no
116     ;;
117   openbsd*)
118     SYS=openbsd
119     CPPFLAGS="${CPPFLAGS} -I/usr/local/include -I/usr/X11R6/include"
120     LDFLAGS="${LDFLAGS} -L/usr/local/lib -L/usr/X11R6/lib/"
121     ;;
122   netbsd*)
123     SYS=netbsd
124     ;;
125   dragonfly*)
126     SYS=dragonfly
127     ;;
128   darwin*)
130     dnl Force gcc "-arch" flag
131     ARCH_flag=""
132     case "${host_cpu}" in
133       i?86)
134         ARCH_flag="-arch i386"
135       ;;
136       ppc64*)
137         ARCH_flag="-arch ppc64"
138       ;;
139       ppc*)
140         ARCH_flag="-arch ppc"
141       ;;
142       x86_64)
143         ARCH_flag="-arch x86_64"
144       ;;
145       arm*)
146         ac_cv_c_bigendian="no"
147         ac_cv_c_attribute_packed="no"
148       ;;
149     esac
151     SYS=darwin
152     CFLAGS="${CFLAGS} -D_INTL_REDIRECT_MACROS -std=gnu11 ${ARCH_flag}"
153     CXX="${CXX} -stdlib=libc++ -std=c++11"
154     CXXFLAGS="${CXXFLAGS} -D_INTL_REDIRECT_MACROS ${ARCH_flag}"
155     CPPFLAGS="${CPPFLAGS} ${ARCH_flag}"
156     OBJCFLAGS="${OBJCFLAGS} -D_INTL_REDIRECT_MACROS -std=gnu11 ${ARCH_flag} -Werror=partial-availability"
157     LDFLAGS="${LDFLAGS} -Wl,-headerpad_max_install_names ${ARCH_flag}"
158     VLC_ADD_LIBS([libvlc vlc],[-Wl,-undefined,dynamic_lookup,-framework,AppKit])
159     VLC_ADD_LIBS([libvlccore],[-Wl,-framework,CoreFoundation,-framework,CoreServices])
161     AC_EGREP_CPP(yes,
162             [#import <TargetConditionals.h>
163              #if TARGET_OS_IPHONE
164              yes
165              #endif],
166              [HAVE_IOS="1"],
167              [HAVE_OSX="1"])
169     AC_EGREP_CPP(yes,
170             [#import <TargetConditionals.h>
171              #if TARGET_OS_TV
172              yes
173              #endif],
174              [HAVE_TVOS="1"
175              HAVE_IOS="0"
176              HAVE_OSX="0"
177              ],)
179     dnl
180     dnl  Handle Mac OS X SDK flags
181     dnl
182     AC_ARG_WITH(macosx-sdk,
183       AS_HELP_STRING([--with-macosx-sdk=DIR],
184         [compile using the SDK in DIR]))
185     if test "${with_macosx_sdk}" != "" ; then
186         test ! -d "${with_macosx_sdk}" && AC_MSG_ERROR([SDK "${with_macosx_sdk}" not found])
187         CPP="${CPP} -isysroot ${with_macosx_sdk}"
188         CC="${CC} -isysroot ${with_macosx_sdk}"
189         CXX="${CXX} -isysroot ${with_macosx_sdk}"
190         OBJC="${OBJC} -isysroot ${with_macosx_sdk}"
191         LD="${LD} -syslibroot ${with_macosx_sdk}"
192     fi
193     AC_ARG_WITH(macosx-version-min,
194       AS_HELP_STRING([--with-macosx-version-min=VERSION],
195         [compile for Mac OS X VERSION and above]))
196     if test "${with_macosx_version_min}" != "" ; then
197         CPP="${CPP} -mmacosx-version-min=${with_macosx_version_min}"
198         CC="${CC} -mmacosx-version-min=${with_macosx_version_min}"
199         CXX="${CXX} -mmacosx-version-min=${with_macosx_version_min}"
200         OBJC="${OBJC} -mmacosx-version-min=${with_macosx_version_min}"
201         LD="${LD} -mmacosx_version_min=${with_macosx_version_min}"
202     fi
203     ;;
204   *mingw32* | *cygwin* | *wince* | *mingwce*)
205     dnl Force libtool to not link to (shared) libgcc_s when detecting C++ dependencies
206     dnl When doing this test with -static-libgcc it will link on (static) libgcc_eh
207     CXXFLAGS="${CXXFLAGS} -static-libgcc"
208     AC_CHECK_TOOL(WINDRES, windres, :)
209     AC_CHECK_TOOL(OBJCOPY, objcopy, :)
210     AC_PREPROC_IFELSE([AC_LANG_PROGRAM(
211       [[#ifdef _WIN32_WINNT
212        # error _WIN32_WINNT already defined
213        #endif
214       ]],[[;]])
215     ],[
216       AC_DEFINE([_WIN32_WINNT], 0x0601, [Define to '0x0601' for Windows 7 APIs.])
217     ])
218     AC_DEFINE([_WIN32_IE], 0x0600, [Define to '0x0600' for IE 6.0 (and shell) APIs.])
219     AC_DEFINE([_UNICODE], [1], [Define to 1 for Unicode (Wide Chars) APIs.])
220     AC_DEFINE([UNICODE], [1], [Define to 1 for Unicode (Wide Chars) APIs.])
221     AC_DEFINE([_ISOC99_SOURCE], [1], [Extensions to ISO C89 from ISO C99.])
222     AC_DEFINE([_ISOC11_SOURCE], [1], [Extensions to ISO C99 from ISO C11.])
223     AC_DEFINE([_POSIX_SOURCE], [1], [IEEE Std 1003.1.])
224     AC_DEFINE([_POSIX_C_SOURCE], [200809L], [IEEE Std 1003.1.])
225     AC_DEFINE([_XOPEN_SOURCE], [700], [POSIX and XPG 7th edition])
226     AC_DEFINE([_XOPEN_SOURCE_EXTENDED], [1], [XPG things and X/Open Unix extensions.])
227     AC_DEFINE([_BSD_SOURCE], [1], [ISO C, POSIX, and 4.3BSD things.])
228     AC_DEFINE([_SVID_SOURCE], [1], [ISO C, POSIX, and SVID things.])
230     case "${host_os}" in
231       *mingw32*)
232         SYS=mingw32
233         ;;
234       *cygwin*)
235         dnl Check if we are using the mno-cygwin mode in which case we are
236         dnl actually dealing with a mingw32 compiler.
237         AC_EGREP_CPP(yes,
238             [#ifdef _WIN32
239              yes
240              #endif],
241             SYS=mingw32, AC_MSG_ERROR([VLC requires -mno-cygwin]))
242         ;;
243     esac
245     if test "${SYS}" = "mingw32"; then
246         # DEP, ASLR, NO SEH
247         LDFLAGS="${LDFLAGS} -Wl,--nxcompat -Wl,--no-seh -Wl,--dynamicbase"
249         AC_CHECK_PROGS(U2D, [unix2dos todos], unix2dos)
250         ac_default_prefix="`pwd`/_win32"
251         DESTDIR="`pwd`/_win32/"
253         dnl
254         dnl NSIS/MSI Installer prefix and WIN64
255         dnl
256         case "${host_cpu}" in
257             amd64|x86_64|aarch64)
258                 HAVE_WIN64="1"
259                 WINDOWS_ARCH="x64"
260                 PROGRAMFILES="PROGRAMFILES64"
261                 LDFLAGS="${LDFLAGS} -Wl,--high-entropy-va -Wl,--image-base,0x140000000"
262             ;;
263             *)
264                 WINDOWS_ARCH="x86"
265                 PROGRAMFILES="PROGRAMFILES"
266             ;;
267         esac
268         AC_SUBST([WINDOWS_ARCH])
269         AC_SUBST([PROGRAMFILES])
271     fi
272     ;;
273   *nto*)
274     SYS=nto
275     ;;
276   solaris*)
277     SYS=solaris
278     ;;
279   hpux*)
280     SYS=hpux
281     ;;
282   *os2*)
283     SYS=os2
284     LDFLAGS="${LDFLAGS} -Zomf -Zbin-files -Zargs-wild -Zhigh-mem"
285     AC_LIBOBJ([freeaddrinfo])
286     AC_LIBOBJ([gai_strerror])
287     AC_CHECK_FUNCS([if_nametoindex])
288     ;;
289   *nacl*)
290     SYS=nacl
291     AC_DEFINE([_XOPEN_SOURCE], [700], [POSIX and XPG 7th edition])
292     AC_LIBOBJ([sigwait])
293     AC_LIBOBJ([recvmsg])
294     AC_LIBOBJ([sendmsg])
295     ;;
296   *)
297     SYS="${host_os}"
298     ;;
299 esac
301 dnl WinRT
302 AC_ARG_ENABLE([winstore_app],
303      AS_HELP_STRING([--enable-winstore-app],
304                     [Build targetted for Windows Store apps (default disabled)]))
306 vlc_winstore_app=0
307 AS_IF([test "${SYS}" = "mingw32"],[
308   LIBCOM="-lole32"
309   AS_IF([test "${enable_winstore_app}" = "yes"], [
310     vlc_winstore_app=1
311     LIBCOM=""
312      VLC_ADD_LIBS([libvlccore], [-lruntimeobject])
313      AC_LIBOBJ([gai_strerror])
314     ],[])
315   AC_SUBST([LIBCOM])
316   ])
317 AC_DEFINE_UNQUOTED(VLC_WINSTORE_APP, ${vlc_winstore_app}, [Define to 1 if you want to build for Windows Store apps])
319 AM_CONDITIONAL([HAVE_LINUX],   [test "${SYS}" = "linux"])
320 AM_CONDITIONAL([HAVE_OS2],     [test "${SYS}" = "os2"])
322 AM_CONDITIONAL([HAVE_DARWIN],  [test "${SYS}" = "darwin"])
323 AM_CONDITIONAL([HAVE_IOS],     [test "${HAVE_IOS}" = "1"])
324 AM_CONDITIONAL([HAVE_OSX],     [test "${HAVE_OSX}" = "1"])
325 AM_CONDITIONAL([HAVE_TVOS],    [test "${HAVE_TVOS}" = "1"])
327 AM_CONDITIONAL([HAVE_NACL],    [test "${SYS}" = "nacl"])
328 AM_CONDITIONAL([HAVE_LIBANL],  [test "${HAVE_LIBANL}" = "1"])
330 AM_CONDITIONAL([HAVE_WIN32],   [test "${SYS}" = "mingw32"])
331 AM_CONDITIONAL([HAVE_WIN64],   [test "${HAVE_WIN64}" = "1"]) dnl Only used for the packaging
332 AM_CONDITIONAL([HAVE_WINSTORE], [test "$vlc_winstore_app" = "1"])
333 AM_CONDITIONAL([HAVE_WIN32_DESKTOP], [test "${SYS}" = "mingw32" -a "$vlc_winstore_app" = "0"])
336 dnl Sadly autoconf does not think about testing foo.exe when ask to test
337 dnl for program foo on win32
338 case "${build_os}" in
339     cygwin|msys|mingw32)
340         ac_executable_extensions=".exe"
341         BUILDEXEEXT=".exe"
342     ;;
343     os2*)
344         BUILDEXEEXT=".exe"
345     ;;
346     *)
347     ;;
348 esac
349 AC_SUBST([BUILDEXEEXT])
351 dnl Android is linux, but a bit different
352 AS_IF([test "$SYS" = linux],[
353     AC_MSG_CHECKING([for an Android system])
354     AC_PREPROC_IFELSE([AC_LANG_PROGRAM(
355         [[#ifndef __ANDROID__
356          # error Not Android
357          #endif
358         ]],[[;]])
359     ],[
360       HAVE_ANDROID="1"
361       AC_MSG_RESULT([yes])
362     ],[
363       AC_MSG_RESULT([no])
364     ])
366 AM_CONDITIONAL([HAVE_ANDROID], [test "${HAVE_ANDROID}" = "1"])
368 dnl Tizen (minimum SDK version: 2.3)
369 AS_IF([test "$SYS" = linux],[
370     AC_MSG_CHECKING([for Tizen])
371     AC_PREPROC_IFELSE([AC_LANG_PROGRAM(
372         [[#include <tizen.h>
373         ]],[[;]])
374     ],[
375       HAVE_TIZEN="1"
376       AC_DEFINE([HAVE_TIZEN_SDK], [1], [Define to 1 if vlc is built against Tizen SDK])
377       AC_MSG_RESULT([yes])
378     ],[
379       AC_MSG_RESULT([no])
380     ])
382 AM_CONDITIONAL([HAVE_TIZEN], [test "${HAVE_TIZEN}" = "1"])
385 dnl  Check for the contrib directory
387 AC_ARG_WITH(contrib,
388   AS_HELP_STRING([--with-contrib[=DIR]],
389     [search for 3rd party libraries in DIR/include and DIR/lib])
391 AC_MSG_CHECKING([for 3rd party libraries path])
392 AS_IF([test -z "${with_contrib}" || test "${with_contrib}" = "yes"], [
393   CONTRIB_DIR="${srcdir}/contrib/${host}"
394   AS_IF([test ! -d "${CONTRIB_DIR}"], [
395     echo "${CONTRIB_DIR} not found" >&AS_MESSAGE_LOG_FD
396     CONTRIB_DIR="${srcdir}/contrib/`$CC -dumpmachine`"
397     AS_IF([test ! -d "${CONTRIB_DIR}"], [
398       echo "${CONTRIB_DIR} not found" >&AS_MESSAGE_LOG_FD
399       CONTRIB_DIR=""
400       AC_MSG_RESULT([not found])
401     ])
402   ])
403 ], [
404   AS_IF([test "${with_contrib}" != "no"], [
405     CONTRIB_DIR="${with_contrib}"
406   ], [
407     CONTRIB_DIR=""
408     AC_MSG_RESULT([disabled])
409   ])
411 AS_IF([test -n "${CONTRIB_DIR}"], [
412   AS_IF([test -d "${CONTRIB_DIR}/lib"],[
413     CONTRIB_DIR=`cd "${CONTRIB_DIR}" && pwd`
414   ], [
415     echo "${CONTRIB_DIR}/lib not found" >&AS_MESSAGE_LOG_FD
416     CONTRIB_DIR=""
417     AC_MSG_RESULT([not usable])
418   ])
421 AS_IF([test -n "${CONTRIB_DIR}"], [
422   AC_MSG_RESULT([${CONTRIB_DIR}])
423   CPPFLAGS="${CPPFLAGS} -I${CONTRIB_DIR}/include"
424   CFLAGS="${CFLAGS} -I${CONTRIB_DIR}/include"
425   CXXFLAGS="${CXXFLAGS} -I${CONTRIB_DIR}/include"
426   OBJCFLAGS="${OBJCFLAGS} -I${CONTRIB_DIR}/include -F${CONTRIB_DIR} -F${CONTRIB_DIR}/Frameworks"
427   export PKG_CONFIG_PATH="${CONTRIB_DIR}/lib/pkgconfig:${CONTRIB_DIR}/share/pkgconfig:$PKG_CONFIG_PATH"
428   LDFLAGS="${LDFLAGS} -L${CONTRIB_DIR}/lib"
430   AS_IF([test -z "$LUAC"], [
431     dnl Old contribs mixed cross-tools and cross-compiled executables
432     AS_IF([test -x "${CONTRIB_DIR}/bin/luac${BUILDEXEEXT}"], [
433       LUAC="${CONTRIB_DIR}/bin/luac${BUILDEXEEXT}"
434     ])
436     dnl Newer contribs follow usual name space rules
437     AS_IF([test -x "${CONTRIB_DIR}/../bin/${host_alias}-luac${BUILDEXEEXT}"], [
438       LUAC="${CONTRIB_DIR}/../bin/${host_alias}-luac${BUILDEXEEXT}"
439     ])
440   ])
442   AS_IF([test "${SYS}" = "darwin"], [
443     export LD_LIBRARY_PATH="${CONTRIB_DIR}/lib:$LD_LIBRARY_PATH"
444     export DYLD_LIBRARY_PATH="${CONTRIB_DIR}/lib:$DYLD_LIBRARY_PATH"
445   ])
446 ], [
447   AS_IF([test -n "${with_contrib}" && test "${with_contrib}" != "no"], [
448     AC_MSG_ERROR([Third party libraries not found!])
449   ])
451 AC_SUBST([CONTRIB_DIR])
453 dnl Add extras/tools to the PATH
454 TOOLS_DIR="${srcdir}/extras/tools/build/bin"
455 AS_IF([test -d "${TOOLS_DIR}"], [
456     TOOLS_DIR=`cd "${TOOLS_DIR}" && pwd`
457     export PATH="${TOOLS_DIR}":$PATH
461 dnl  Libtool
462 dnl  It's very bad, but our former custom system was worst
463 dnl  -- Courmisch
466 dnl override platform specific check for dependent libraries
467 dnl otherwise libtool linking of shared libraries will
468 dnl fail on anything other than pass_all.
469 AC_CACHE_VAL(lt_cv_deplibs_check_method,
470     [lt_cv_deplibs_check_method=pass_all])
472 LT_INIT([dlopen win32-dll shared disable-static])
473 LT_LANG([C++])
474 LT_LANG([Windows Resource])
476 DOLT
478 lt_cv_deplibs_check_method=pass_all
480 AS_IF([test "${enable_shared}" = "no" -a "${enable_vlc}" != "no"], [
481   AC_MSG_ERROR([VLC is based on plugins. Shared libraries cannot be disabled.])
485 dnl Gettext stuff
487 AM_GNU_GETTEXT_VERSION([0.19.8])
488 AM_GNU_GETTEXT([external], [need-formatstring-macros])
491 dnl Iconv stuff
493 AM_ICONV
496 dnl checks for mingw
497 AS_IF([test "${SYS}" = "mingw32"], [
499 AC_PREPROC_IFELSE([AC_LANG_SOURCE([
500 #if !defined(__MINGW32__)
501 # error Not compiling with mingw
502 #endif
503     ])], [
505 dnl Check for broken versions of mingw-runtime compatability library
506     AC_MSG_CHECKING(for broken mingw-runtime)
507     AC_PREPROC_IFELSE([AC_LANG_SOURCE([
508 #include <_mingw.h>
509 #if defined(__MINGW64_VERSION_MAJOR)
510 # if __MINGW64_VERSION_MAJOR < 5
511 #  error Update your mingw-w64! This one is too old.
512 # endif
513 #else
514 # error You cannot compile with Mingw. Use Mingw-w64!
515 #endif
516     ])], [
517         AC_MSG_RESULT([ok])
518     ], [
519         AC_MSG_RESULT([present])
520         AC_MSG_ERROR([LibVLC requires Mingw-w64 version 5.0 or higher!])
521     ])
523     dnl force use of mingw provided c99 *printf over msvcrt
524     CPPFLAGS="${CPPFLAGS} -D__USE_MINGW_ANSI_STDIO=1"
526     dnl Check for the need to include the mingwex lib for mingw32
527     VLC_SAVE_FLAGS
528     AC_CHECK_LIB([mingwex], [opendir],
529         AC_CHECK_LIB([mingw32], [opendir],,
530             [VLC_ADD_LIBS([libvlccore],[-lmingwex])])
531     )
532     VLC_RESTORE_FLAGS
533     ], [
534         AC_MSG_RESULT([Not compiling with mingw])
535     ])
537     dnl Check for fnative-struct or mms-bitfields support for mingw32
538     AX_CHECK_COMPILE_FLAG([-mms-bitfields], [
539         AX_APPEND_FLAG([-mms-bitfields], [CFLAGS])
540         AX_APPEND_FLAG([-mms-bitfields], [CXXFLAGS])
541         # Check for the warning flag without "-Wno-", GCC accepts
542         # -Wno-<anything> for unsupported warnings, which can trigger
543         # other warnings instead.
544         AX_CHECK_COMPILE_FLAG([-Wincompatible-ms-struct], [
545             AX_APPEND_FLAG([-Wno-incompatible-ms-struct], [CFLAGS])
546             AX_APPEND_FLAG([-Wno-incompatible-ms-struct], [CXXFLAGS])
547         ])
548     ], [
549         AX_CHECK_COMPILE_FLAG([-fnative-struct], [
550             AX_APPEND_FLAG([-fnative-struct], [CFLAGS])
551             AX_APPEND_FLAG([-fnative-struct], [CXXFLAGS])
552         ])
553     ])
558 dnl Buggy glibc prevention. Purposedly not cached.
559 dnl See sourceware.org bugs 5058 and 5443.
560 dnl Ubuntu alone has 20 bug numbers for this...
562 AC_MSG_CHECKING(for buggy GNU/libc versions)
563 AC_PREPROC_IFELSE([AC_LANG_SOURCE([
564 #include <limits.h>
565 #if defined (__GLIBC__) && (__GLIBC__ == 2) \
566   && (__GLIBC_MINOR__ >= 5) && (__GLIBC_MINOR__ <= 7)
567 # error GNU/libc with dcgettext killer bug!
568 #endif
569 ])], [
570   AC_MSG_RESULT([not present])
571 ], [
572   AC_MSG_RESULT([found])
573   AS_IF([test "x${enable_nls}" != "xno"], [
574     AC_MSG_ERROR([Buggy GNU/libc (version 2.5 - 2.7) present. VLC would crash; there is no viable
575 work-around for this. Check with your distribution vendor on how to update the
576 glibc run-time. Alternatively, build with --disable-nls.])
577   ])
580 dnl Plugin compilation stuff
582 VLC_LIBRARY_SUFFIX
584 dnl Check for system libs needed
585 need_libc=false
587 dnl Check for usual libc functions
588 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])
589 AC_REPLACE_FUNCS([aligned_alloc atof atoll dirfd fdopendir flockfile fsync getdelim getpid lfind lldiv memrchr nrand48 poll qsort_r recvmsg rewind sendmsg setenv strcasecmp strcasestr strdup strlcpy strndup strnlen strnstr strsep strtof strtok_r strtoll swab tdestroy tfind timegm timespec_get strverscmp pathconf])
590 AC_REPLACE_FUNCS([gettimeofday])
591 AC_CHECK_FUNC(fdatasync,,
592   [AC_DEFINE(fdatasync, fsync, [Alias fdatasync() to fsync() if missing.])
595 VLC_REPLACE_DECL([realpath], [#include <stdlib.h>])
597 dnl mingw64 implements those as static inline, not functions with C linkage
598 VLC_REPLACE_DECL([asprintf], [#include <stdio.h>])
599 VLC_REPLACE_DECL([vasprintf], [#include <stdio.h>])
600 VLC_REPLACE_DECL([gmtime_r], [#include <time.h>])
601 VLC_REPLACE_DECL([localtime_r], [#include <time.h>])
603 dnl C11 static_assert()
604 AC_MSG_CHECKING([for static_assert in assert.h])
605 AC_LINK_IFELSE([AC_LANG_PROGRAM([#include <assert.h>], [
606 static_assert(1, "The impossible happened.");
607 ])], [
608   AC_MSG_RESULT([yes])
609   AC_DEFINE([HAVE_STATIC_ASSERT], [1], [Define to 1 if <assert.h> defines static_assert.])
610 ], [
611   AC_MSG_RESULT([no])
614 # Windows CE does not have strcoll()
615 AC_FUNC_STRCOLL
617 dnl Check for non-standard system calls
618 case "$SYS" in
619   "linux")
620     AC_CHECK_FUNCS([eventfd vmsplice sched_getaffinity recvmmsg memfd_create])
621     ;;
622   "mingw32")
623     AC_CHECK_FUNCS([_lock_file])
624     ;;
625 esac
627 AH_BOTTOM([#include <vlc_fixups.h>])
629 dnl Check for struct pollfd
630 AC_CHECK_TYPES([struct pollfd],,,
631 [#include <sys/types.h>
632 #if HAVE_POLL
633 # include <poll.h>
634 #elif defined (_WIN32)
635 # include <winsock2.h>
636 #endif
639 dnl Check for struct timespec
640 AC_CHECK_TYPES([struct timespec],,,
641 [#include <time.h>])
643 dnl Check for max_align_t
644 AC_CHECK_TYPES([max_align_t],,,
645 [#include <stddef.h>])
647 dnl Checks for socket stuff
648 VLC_SAVE_FLAGS
649 SOCKET_LIBS=""
650 AC_SEARCH_LIBS(connect, [socket], [
651   AS_IF([test "$ac_cv_search_connect" != "none required"], [
652     SOCKET_LIBS="$ac_cv_search_connect"
653   ])
654 ], [
655   AS_IF([test "${SYS}" = "mingw32"], [
656     SOCKET_LIBS="-lws2_32 -liphlpapi"
657   ])
660 AC_SEARCH_LIBS([inet_pton], [nsl], [
661  AS_IF([test "$ac_cv_search_inet_pton" != "none required"], [
662     SOCKET_LIBS="$ac_cv_search_inet_pton $SOCKET_LIBS"
663   ])
664 ],, [${SOCKET_LIBS}])
666 LIBS="${LIBS} ${SOCKET_LIBS}"
667 AC_LINK_IFELSE([
668     AC_LANG_PROGRAM([#ifdef _WIN32
669         #include <ws2tcpip.h>
670         #include <windows.h>
671         # if _WIN32_WINNT < 0x600
672         #  error Needs vista+
673         # endif
674         #else
675         #include <sys/socket.h>
676         #include <arpa/inet.h>
677         #endif], [
678         char dst[[sizeof(struct in_addr)]];
679         inet_pton(AF_INET, "127.0.0.1", dst);
680     ])],[AC_DEFINE([HAVE_INET_PTON],[1],[Define to 1 if you have inet_pton function])],[AC_LIBOBJ([inet_pton])])
681 AC_CHECK_TYPES([struct if_nameindex],,,[#include <net/if.h>])
682 AC_CHECK_FUNCS([if_nameindex])
683 VLC_RESTORE_FLAGS
684 AC_SUBST([SOCKET_LIBS])
686 dnl Check for socklen_t
687 AH_TEMPLATE(socklen_t, [Define to `int' if <sys/socket.h> does not define.])
688 AC_CACHE_CHECK([for socklen_t in sys/socket.h], dnl ` (fix VIM syntax highlight
689 ac_cv_type_socklen_t,
690 [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([
691 [#include <sys/types.h>
692 #ifdef _WIN32
693 # include <winsock2.h>
694 # include <ws2tcpip.h>
695 #else
696 # include <sys/socket.h>
697 #endif]], [[socklen_t len; len = 0;]])],
698 ac_cv_type_socklen_t=yes,
699 ac_cv_type_socklen_t=no)])
700 AS_IF([test "$ac_cv_type_socklen_t" = no],
701  [AC_DEFINE(socklen_t, int)])
703 dnl Check for struct sockaddr_storage
704 AH_TEMPLATE(sockaddr_storage, [Define to `sockaddr' if <sys/socket.h> does not define.]) dnl ` (fix VIM syntax highlight
705 AH_TEMPLATE(ss_family, [Define to `sa_family' if <sys/socket.h> does not define.]) dnl ` (fix VIM syntax highlight
706 AC_CACHE_CHECK([for struct sockaddr_storage], ac_cv_struct_sockaddr_storage,
707   [AC_TRY_COMPILE(
708     [#include <sys/types.h>
709      #if defined( _WIN32 )
710      # include <winsock2.h>
711      #else
712      # include <sys/socket.h>
713      #endif], [struct sockaddr_storage addr;],
714      ac_cv_struct_sockaddr_storage=yes,
715      ac_cv_struct_sockaddr_storage=no)])
716 AS_IF([test "${ac_cv_struct_sockaddr_storage}" = no], [
717   AC_DEFINE(sockaddr_storage, sockaddr)
718   AC_DEFINE(ss_family, sa_family)
721 dnl FreeBSD has a gnugetopt library for this:
722 GNUGETOPT_LIBS=""
723 AC_CHECK_FUNC(getopt_long,, [
724   AC_CHECK_LIB([gnugetopt],[getopt_long], [
725     GNUGETOPT_LIBS="-lgnugetopt"
726   ])
728 AC_SUBST([GNUGETOPT_LIBS])
730 AC_CHECK_LIB([m], [cos], [
731   LIBM="-lm"
732 ], [
733   LIBM=""
735 AC_SUBST([LIBM])
737 AC_CHECK_LIB([m], [lrintf], [
738   AC_DEFINE(HAVE_LRINTF, 1, [Define to 1 if you have the lrintf function])
739   VLC_ADD_LIBS([skins2],[-lm])
741 AC_CHECK_LIB([m], [nanf],
742   AC_DEFINE(HAVE_NANF, 1, [Define to 1 if you have the NANF function])
744 AC_CHECK_LIB([m], [sincos], [
745   AC_DEFINE(HAVE_SINCOS, 1, [Define to 1 if you have the sincos function.])
746 ], [
747   AC_LIBOBJ([sincos])
750 AC_MSG_CHECKING([_Thread_local support])
751 AC_COMPILE_IFELSE([AC_LANG_SOURCE([_Thread_local int foo = 0;
752                    int main() {}])], [
753     AC_MSG_RESULT([ok])
754     AC_DEFINE(HAVE_THREAD_LOCAL, 1, [Defined to 1 if C11 _Thread_local storage qualifier is supported])
755 ],[ AC_MSG_RESULT([no])])
757 dnl __STDC_NO_THREADS__ can't be trusted on some platforms.
758 dnl check for its availability explicitely
759 AC_CHECK_HEADERS([threads.h])
761 AC_CHECK_LIB([anl],[getaddrinfo_a],[
762   AC_DEFINE(HAVE_LIBANL, 1, [Define to 1 if you have the anl library])
765 dnl Check for dynamic plugins
766 LIBDL=""
767 have_dynamic_objects="no"
768 VLC_SAVE_FLAGS
769 AC_SEARCH_LIBS(dlsym, [dl svld], [
770   AS_IF([test "$ac_cv_search_dlsym" != "none required"], [
771     LIBDL="$ac_cv_search_dlsym"
772   ])
773   have_dynamic_objects="yes"
775 VLC_RESTORE_FLAGS
777 # Windows
778 AS_IF([test "${SYS}" = "mingw32"], [
779   LIBDL=""
780   have_dynamic_objects="yes" #assume we can use shared objects
783 AC_ARG_WITH([libfuzzer],
784     AS_HELP_STRING([--with-libfuzzer=DIR],
785         [use libFuzzer library from DIR and triggers sanitize coverage (default disabled)]),
786      [],
787      [with_libfuzzer=no])
788 AS_VAR_IF(with_libfuzzer, no, [], [
789     enable_shared=no
790     enable_static=yes
791     enable_vlc=no
793 AM_CONDITIONAL([HAVE_LIBFUZZER], [test "${with_libfuzzer}" != "no"])
795 AS_IF([test "${enable_shared}" = "no"], [
796   have_dynamic_objects=no
798 AM_CONDITIONAL([HAVE_DYNAMIC_PLUGINS], [test "${have_dynamic_objects}" != "no"])
800 AC_SUBST([LIBDL])
802 AC_SEARCH_LIBS([clock_nanosleep], [rt pthread], [
803   AS_IF([test "$ac_cv_search_clock_nanosleep" != "none required"], [
804     LIBRT="$ac_cv_search_clock_nanosleep"
805   ])
806 ], [
807   AC_SEARCH_LIBS([nanosleep], [rt pthread posix4], [
808     AS_IF([test "$ac_cv_search_nanosleep" != "none required"], [
809       LIBRT="$ac_cv_search_nanosleep"
810     ])
811   ])
813 AC_SUBST([LIBRT])
816 dnl Check for headers
819 dnl  POSIX
820 AC_CHECK_HEADERS([arpa/inet.h pthread.h search.h sys/shm.h sys/socket.h sys/uio.h])
821 AC_CHECK_HEADERS([net/if.h], [], [],
823 #include <sys/types.h>
824 #include <sys/socket.h>
826 AC_CHECK_HEADER([syslog.h], [have_syslog="yes"], [have_syslog="no"])
827 AM_CONDITIONAL([HAVE_SYSLOG], [test "$have_syslog" = "yes"])
829 dnl  BSD
830 AC_CHECK_HEADERS([netinet/tcp.h netinet/udplite.h sys/param.h sys/mount.h])
832 dnl  GNU/Linux
833 AC_CHECK_HEADERS([features.h getopt.h linux/dccp.h linux/magic.h mntent.h sys/eventfd.h])
835 dnl  MacOS
836 AC_CHECK_HEADERS([xlocale.h])
838 dnl Check if C++ headers define locale_t
839 AC_LANG_PUSH(C++)
840 AC_CACHE_CHECK([if C++ headers define locale_t],
841   [ac_cv_cxx_locale_t],
842   [ac_cv_cxx_locale_t=no
843    AC_TRY_COMPILE([#include <locale>], [locale_t loc;],
844                     [ac_cv_cxx_locale_t=yes])])
845 if test "${ac_cv_cxx_locale_t}" != "no"; then
846   AC_DEFINE(HAVE_CXX_LOCALE_T, 1, Define to 1 if C++ headers define locale_t)
848 AC_LANG_POP(C++)
850 dnl LP64 and LLP64 architectures had better define ssize_t by themselves...
851 AH_TEMPLATE(ssize_t, [Define to `int' if <stddef.h> does not define.]) dnl ` (fix VIM syntax highlight
852 AC_CHECK_TYPE(ssize_t,, [
853   AC_DEFINE(ssize_t, int)
856 dnl It seems that autoconf detects pkg-config only during the first
857 dnl PKG_CHECK_MODULES from configure.ac - which makes sense. But in our case,
858 dnl it is nested within a conditional block, so it was not working right.
859 dnl Make PKG_CONFIG_PATH precious so that it appears in the help and get saved
860 AC_ARG_VAR(PKG_CONFIG_PATH,
861        [Paths where to find .pc not at the default location])
862 PKG_PROG_PKG_CONFIG()
864 dnl On some OS we need static linking
865 AS_IF([test -n "${PKG_CONFIG}" ],[
866     AS_IF([test "${SYS}" = "mingw32" -o "${SYS}" = "darwin" -o "${SYS}" = "os2" ],[
867         PKG_CONFIG="${PKG_CONFIG} --static"
868     ])
873 dnl Check for zlib.h and -lz if available
875 AC_CHECK_HEADERS([zlib.h], [ have_zlib=yes ], [ have_zlib=no ])
876 AM_CONDITIONAL([HAVE_ZLIB], [ test "${have_zlib}" = "yes" ])
877 if test "${have_zlib}" = "yes"
878 then
879   VLC_ADD_LIBS([sap],[-lz])
884 dnl Domain name i18n support via GNU libidn
886 PKG_CHECK_MODULES([IDN], [libidn], [
887   have_libidn="yes"
888   AC_DEFINE([HAVE_IDN], 1, [Define to 1 if you have GNU libidn.])
889 ], [
890   have_libidn="no"
894 dnl Check for dbus
895 AC_ARG_ENABLE([dbus],
896   AS_HELP_STRING([--enable-dbus],
897     [compile D-Bus message bus support (default enabled)]))
898 have_dbus="no"
899 AS_IF([test "${enable_dbus}" != "no"], [
900   PKG_CHECK_MODULES(DBUS, [dbus-1 >= 1.6.0], [
901     have_dbus="yes"
902   ], [
903     AS_IF([test -n "${enable_dbus}"], [
904       AC_MSG_ERROR([${DBUS_PKG_ERRORS}.])
905     ], [
906       AC_MSG_WARN([${DBUS_PKG_ERRORS}.])
907     ])
908   ])
910 AM_CONDITIONAL([HAVE_DBUS], [test "${have_dbus}" = "yes"])
913 dnl Check for systemd
914 PKG_CHECK_MODULES([SYSTEMD], [libsystemd], [
915   have_systemd="yes"
916 ], [
917   AC_MSG_WARN([${SYSTEMD_PKG_ERRORS}.])
919 AM_CONDITIONAL([HAVE_SYSTEMD], [test "${have_systemd}" = "yes"])
922 EXTEND_HELP_STRING([Optimization options:])
924 dnl  Compiler warnings
927 AX_APPEND_COMPILE_FLAGS([-Wall -Wextra -Wsign-compare -Wundef -Wpointer-arith -Wvolatile-register-var -Wformat -Wformat-security -Wduplicated-branches -Wduplicated-cond], [CFLAGS])
928 AX_APPEND_COMPILE_FLAGS([-Wall -Wextra -Wsign-compare -Wundef -Wpointer-arith -Wvolatile-register-var -Wformat -Wformat-security -Wduplicated-branches -Wduplicated-cond], [CXXFLAGS])
930 AX_APPEND_COMPILE_FLAGS([-Wbad-function-cast -Wwrite-strings -Wmissing-prototypes -Werror-implicit-function-declaration -Winit-self -Wlogical-op -Wshadow=local -Wmultistatement-macros], [CFLAGS])
931 AX_APPEND_COMPILE_FLAGS([-pipe], [CFLAGS])
934 dnl  Debugging mode
936 AC_ARG_ENABLE([debug],
937   AS_HELP_STRING([--enable-debug],
938     [build with run-time assertions (default disabled)]),,
939   [enable_debug="no"])
940 AH_TEMPLATE(NDEBUG,
941             [Define to 1 if debug code should NOT be compiled])
942 AS_IF([test "${enable_debug}" != "no"], [
943   AC_CHECK_HEADERS([valgrind/valgrind.h])
944 ], [
945   AC_DEFINE(NDEBUG)
949 dnl  Profiling
951 AC_ARG_ENABLE([gprof],
952   AS_HELP_STRING([--enable-gprof],[profile with gprof (default disabled)]),,
953   [enable_gprof="no"])
954 AS_IF([test "${enable_gprof}" != "no"], [
955   CFLAGS="${CFLAGS} -pg"
956   CXXFLAGS="${CXXFLAGS} -pg"
957   OBJCFLAGS="${OBJCFLAGS} -pg"
958   LDFLAGS="${LDFLAGS} -pg"
961 AC_ARG_ENABLE([cprof],
962   AS_HELP_STRING([--enable-cprof],[profile with cprof (default disabled)]),,
963   [enable_cprof="no"])
964 AS_IF([test "${enable_gprof}" != "no"], [
965   CFLAGS="${CFLAGS} -finstrument-functions"
966   CXXFLAGS="${CXXFLAGS} -finstrument-functions"
967   OBJCFLAGS="${OBJCFLAGS} -finstrument-functions"
968   LDFLAGS="${LDFLAGS} -finstrument-functions"
972 dnl  Test coverage
974 AC_ARG_ENABLE([coverage],
975   AS_HELP_STRING([--enable-coverage],
976     [build for test coverage (default disabled)]),,
977   [enable_coverage="no"])
978 AS_IF([test "${enable_coverage}" != "no"], [
979   CFLAGS="-fprofile-arcs -ftest-coverage ${CFLAGS}"
980   CXXFLAGS="-fprofile-arcs -ftest-coverage ${CXXFLAGS}"
981   LDFLAGS="-lgcov ${LDFLAGS}"
984 AS_IF([test "${SYS}" != "mingw32" -a "${SYS}" != "os2"], [
985   VLC_SAVE_FLAGS
986   CFLAGS="${CFLAGS} -fvisibility=hidden"
987   CXXFLAGS="${CXXFLAGS} -fvisibility=hidden"
988   OBJCFLAGS="${OBJCFLAGS} -fvisibility=hidden"
989   AC_CACHE_CHECK([if $CC accepts -fvisibility=hidden],
990                  [ac_cv_c_visibility_hidden], [
991     AC_COMPILE_IFELSE([AC_LANG_PROGRAM()], [
992       ac_cv_c_visibility_hidden=yes
993     ], [
994       ac_cv_c_visibility_hidden=no
995     ])
996   ])
997   AS_IF([test "${ac_cv_c_visibility_hidden}" = "no"], [VLC_RESTORE_FLAGS])
1001 dnl Sanitizer flags
1003 AC_ARG_WITH([sanitizer],
1004     AS_HELP_STRING([--with-sanitizer=(address/memory/undefined/thread)],
1005         [build with sanitizer flags (default disabled)]),
1006      [],
1007      [with_sanitizer=no])
1009 AS_VAR_IF(with_sanitizer, no, [], [
1010     AX_CHECK_COMPILE_FLAG([-fsanitize=${with_sanitizer}], [
1011         AX_APPEND_FLAG([-fsanitize=${with_sanitizer}])
1012         AX_APPEND_FLAG([-fsanitize=${with_sanitizer}], [CXXFLAGS])
1013         AX_APPEND_FLAG([-fsanitize=${with_sanitizer}], [LDFLAGS])
1014     ], [
1015         AC_MSG_ERROR(["-fsanitize=${with_sanitizer} not supported!"])
1016     ])
1017     AX_APPEND_FLAG([-g])
1018     AX_APPEND_FLAG([-g], [CXXFLAGS])
1020     AS_IF([test -z "${with_sanitizer##*address*}" ], [
1021        AX_APPEND_COMPILE_FLAGS([-fsanitize-address-use-after-scope -fno-omit-frame-pointer -fsanitize=pointer-compare -fsanitize=pointer-subtract])
1022        AX_APPEND_COMPILE_FLAGS([-fsanitize-address-use-after-scope -fno-omit-frame-pointer -fsanitize=pointer-compare -fsanitize=pointer-subtract], [CXXFLAGS])
1023     ])
1024     AS_IF([test -z "${with_sanitizer##*memory*}" ], [
1025         AX_APPEND_COMPILE_FLAGS([-fPIE -pie])
1026         AX_APPEND_COMPILE_FLAGS([-fPIE -pie], [CXXFLAGS])
1027     ])
1028     AS_IF([test -z "${with_sanitizer##*thread*}" ], [
1029         AX_APPEND_COMPILE_FLAGS([-fPIE -pie])
1030         AX_APPEND_COMPILE_FLAGS([-fPIE -pie], [CXXFLAGS])
1031     ])
1035 dnl  Enable/disable optimizations
1037 AC_ARG_ENABLE([optimizations],
1038   AS_HELP_STRING([--disable-optimizations],
1039     [disable compiler optimizations (default enabled)]),,
1040   [enable_optimizations="yes"])
1042 dnl Check for various optimization flags
1043 AS_IF([test "${enable_optimizations}" != "no"], [
1045   dnl -O3 only in production builds
1046   AS_IF([test "${enable_debug}" = "no"], [
1047     VLC_SAVE_FLAGS
1048     CFLAGS="${CFLAGS} -O3"
1049     CXXFLAGS="${CXXFLAGS} -O3"
1050     OBJCFLAGS="${OBJCFLAGS} -O3"
1051     AC_CACHE_CHECK([if $CC accepts -O3],  [ac_cv_c_o3], [
1052       AC_COMPILE_IFELSE([AC_LANG_PROGRAM()], [
1053         ac_cv_c_o3=yes
1054       ], [
1055         ac_cv_c_o3=no
1056       ])
1057     ])
1058     AS_IF([test "${ac_cv_c_o3}" = "no"], [VLC_RESTORE_FLAGS])
1059   ])
1061   dnl Check for fast maths
1062   AX_APPEND_COMPILE_FLAGS([-fno-math-errno -funsafe-math-optimizations -fno-rounding-math -fno-signaling-nans -fcx-limited-range], [CFLAGS])
1063   AX_APPEND_COMPILE_FLAGS([-fno-math-errno -funsafe-math-optimizations -fno-rounding-math -fno-signaling-nans -fcx-limited-range], [CXXFLAGS])
1065 AH_BOTTOM([
1066 #if defined(_MSC_VER) && !defined(__clang__)
1067 # pragma fenv_access(off)
1068 # pragma fp_contract(on)
1069 #elif defined(__GNUC__)
1070 /* Not supported so far */
1071 #else
1072 # pragma STDC FENV_ACCESS OFF
1073 # pragma STDC FP_CONTRACT ON
1074 #endif
1077   dnl Check for -funroll-loops
1078   VLC_SAVE_FLAGS
1079   CFLAGS="${CFLAGS} -funroll-loops"
1080   CXXFLAGS="${CXXFLAGS} -funroll-loops"
1081   OBJCFLAGS="${OBJCFLAGS} -funroll-loops"
1082   AC_CACHE_CHECK([if $CC accepts -funroll-loops], [ac_cv_c_unroll_loops], [
1083     AC_COMPILE_IFELSE([AC_LANG_PROGRAM()], [
1084       ac_cv_c_unroll_loops=yes
1085     ], [
1086       ac_cv_c_unroll_loops=no
1087     ])
1088   ])
1089   AS_IF([test "${ac_cv_c_unroll_loops}" = "no"], [VLC_RESTORE_FLAGS])
1091   AS_IF([test "$enable_debug" = "no"], [
1092     dnl Check for -fomit-frame-pointer
1093     VLC_SAVE_FLAGS
1094     CFLAGS="${CFLAGS} -fomit-frame-pointer"
1095     CXXFLAGS="${CXXFLAGS} -fomit-frame-pointer"
1096     OBJCFLAGS="${OBJCFLAGS} -fomit-frame-pointer"
1097     AC_CACHE_CHECK([if $CC accepts -fomit-frame-pointer],
1098       [ac_cv_c_omit_frame_pointer], [
1099       AC_COMPILE_IFELSE([AC_LANG_PROGRAM()], [
1100         ac_cv_c_omit_frame_pointer=yes
1101       ], [
1102         ac_cv_c_omit_frame_pointer=no
1103       ])
1104     ])
1105     AS_IF([test "${ac_cv_c_omit_frame_pointer}" = "no"], [VLC_RESTORE_FLAGS])
1106   ])
1110 AC_ARG_ENABLE([ssp],
1111   AS_HELP_STRING([--disable-ssp],
1112   [disable stack smashing protection (default enabled for optimized builds)]), [],
1113   [enable_ssp="yes"])
1115 AS_IF([test "${enable_ssp}" != "no" -a "${enable_optimizations}" != "no"], [
1116   VLC_SAVE_FLAGS
1117   AX_APPEND_COMPILE_FLAGS([-fstack-protector-strong])
1118   AX_APPEND_COMPILE_FLAGS([-fstack-protector-strong], [CXXFLAGS])
1119   dnl Win32 requires linking to ssp for stack-protection
1120   AS_IF([test "${SYS}" = "mingw32"], [
1121       LDFLAGS="${LDFLAGS} -lssp"
1122       AC_CACHE_CHECK([if linker supports stack protectors], [ac_cv_ld_ssp], [
1123         AC_TRY_LINK([#include <stdio.h>],[char buf[100]; fgets(buf, sizeof(buf), stdin);], [
1124           ac_cv_ld_ssp="yes"
1125         ], [
1126           ac_cv_ld_ssp="no"
1127         ])
1128       ])
1129       AS_IF([test "${ac_cv_ld_ssp}" = "no"], [VLC_RESTORE_FLAGS])
1130   ])
1133 AS_IF([test "${SYS}" = "mingw32"], [
1134     dnl library for BCrypt APIs
1135     AS_IF([test "${vlc_winstore_app}" = 1],
1136           [LDFLAGS="${LDFLAGS} -lbcrypt"])
1139 VLC_SAVE_FLAGS
1140 LDFLAGS="${LDFLAGS} -Wl,-Bsymbolic"
1141 AC_CACHE_CHECK([if linker supports -Bsymbolic], [ac_cv_ld_bsymbolic], [
1142   AC_TRY_LINK([],, [
1143     ac_cv_ld_bsymbolic="-Wl,-Bsymbolic"
1144   ], [
1145     ac_cv_ld_bsymbolic=""
1146   ])
1148 VLC_RESTORE_FLAGS
1149 SYMBOLIC_LDFLAGS="${ac_cv_ld_bsymbolic}"
1150 AC_SUBST([SYMBOLIC_LDFLAGS])
1152 VLC_SAVE_FLAGS
1153 LDFLAGS="${LDFLAGS} -Wl,-z,defs"
1154 AC_CACHE_CHECK([if linker supports -z,defs], [ac_cv_ld_z_defs], [
1155   AC_TRY_LINK([],, [
1156     ac_cv_ld_z_defs="yes"
1157   ], [
1158     ac_cv_ld_z_defs="no"
1159   ])
1161 AS_IF([test "${ac_cv_ld_z_defs}" = "no"], [VLC_RESTORE_FLAGS])
1163 dnl Check for __attribute__((packed))
1164 AC_CACHE_CHECK([for __attribute__((packed))],
1165   [ac_cv_c_attribute_packed],
1166   [ac_cv_c_attribute_packed=no
1167    AC_TRY_COMPILE(, [struct __attribute__((__packed__)) foo { int a; } b; (void)b;],
1168                     [ac_cv_c_attribute_packed=yes])])
1169 if test "${ac_cv_c_attribute_packed}" != "no"; then
1170   AC_DEFINE(HAVE_ATTRIBUTE_PACKED, 1, Support for __attribute__((packed)) for structs)
1174 dnl  Check the CPU
1176 case "${host_cpu}" in
1177   "")
1178     ARCH=unknown
1179     ;;
1180   armv*)
1181     ARCH="arm"
1182     host_cpu="arm"
1183     ;;
1184   *)
1185     ARCH="${host_cpu}"
1186     ;;
1187 esac
1189 dnl Check for backtrace() support
1190 AC_CHECK_HEADERS([execinfo.h])
1191 AC_CHECK_FUNCS([backtrace])
1194 dnl  default modules
1196 ALIASES="${ALIASES} cvlc rvlc"
1199 dnl  Accelerated modules
1202 dnl  Check for fully working MMX intrinsics
1203 dnl  We need support for -mmmx, we need <mmintrin.h>, and we also need a
1204 dnl  working compiler (http://gcc.gnu.org/bugzilla/show_bug.cgi?id=23963)
1205 AC_ARG_ENABLE([mmx],
1206   AS_HELP_STRING([--disable-mmx],
1207     [disable MMX optimizations (default auto)]),,[
1208   case "${host_cpu}" in
1209     i?86|x86_64)
1210       enable_mmx="yes"
1211       ;;
1212     *)
1213       enable_mmx="no"
1214       ;;
1215   esac
1217 have_mmx="no"
1218 have_mmxext="no"
1219 AS_IF([test "${enable_mmx}" != "no"], [
1220   ARCH="${ARCH} mmx"
1221   VLC_SAVE_FLAGS
1222   CFLAGS="${CFLAGS} -mmmx"
1223   AC_CACHE_CHECK([if $CC groks MMX intrinsics], [ac_cv_c_mmx_intrinsics], [
1224     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([
1225 [#include <mmintrin.h>
1226 #include <stdint.h>
1227 uint64_t frobzor;]], [
1228 [__m64 a, b, c;
1229 a = b = c = (__m64)frobzor;
1230 a = _mm_slli_pi16(a, 3);
1231 a = _mm_adds_pi16(a, b);
1232 c = _mm_srli_pi16(c, 8);
1233 c = _mm_slli_pi16(c, 3);
1234 b = _mm_adds_pi16(b, c);
1235 a = _mm_unpacklo_pi8(a, b);
1236 frobzor = (uint64_t)a;]])], [
1237       ac_cv_c_mmx_intrinsics=yes
1238     ], [
1239       ac_cv_c_mmx_intrinsics=no
1240     ])
1241   ])
1242   VLC_RESTORE_FLAGS
1243   AS_IF([test "${ac_cv_c_mmx_intrinsics}" != "no"], [
1244     AC_DEFINE(HAVE_MMX_INTRINSICS, 1, [Define to 1 if MMX intrinsics are available.])
1245   ])
1247   VLC_SAVE_FLAGS
1248   CFLAGS="${CFLAGS} -mmmx"
1249   AC_CACHE_CHECK([if $CC groks MMX inline assembly], [ac_cv_mmx_inline], [
1250     AC_COMPILE_IFELSE([AC_LANG_PROGRAM(,[[
1251 void *p;
1252 asm volatile("packuswb %%mm1,%%mm2"::"r"(p):"mm1", "mm2");
1254     ], [
1255       ac_cv_mmx_inline=yes
1256     ], [
1257       ac_cv_mmx_inline=no
1258     ])
1259   ])
1260   AS_IF([test "${ac_cv_mmx_inline}" != "no"], [
1261     AC_DEFINE(CAN_COMPILE_MMX, 1, [Define to 1 inline MMX assembly is available.])
1262     have_mmx="yes"
1263   ])
1265   AC_CACHE_CHECK([if $CC groks MMX EXT inline assembly],
1266                  [ac_cv_mmxext_inline], [
1267     AC_COMPILE_IFELSE([AC_LANG_PROGRAM(,[[
1268 void *p;
1269 asm volatile("maskmovq %%mm1,%%mm2"::"r"(p):"mm1", "mm2");
1271     ], [
1272       ac_cv_mmxext_inline=yes
1273     ], [
1274       ac_cv_mmxext_inline=no
1275     ])
1276   ])
1277   VLC_RESTORE_FLAGS
1278   AS_IF([test "${ac_cv_mmxext_inline}" != "no"], [
1279     AC_DEFINE(CAN_COMPILE_MMXEXT, 1, [Define to 1 if MMX EXT inline assembly is available.])
1280     have_mmxext="yes"
1281   ])
1283 AM_CONDITIONAL([HAVE_MMX], [test "${have_mmx}" = "yes"])
1284 AM_CONDITIONAL([HAVE_MMXEXT], [test "${have_mmxext}" = "yes"])
1286 dnl  Check for fully workin SSE2 intrinsics
1287 dnl  We need support for -mmmx, we need <emmintrin.h>, and we also need a
1288 dnl  working compiler (http://gcc.gnu.org/bugzilla/show_bug.cgi?id=23963)
1289 AC_ARG_ENABLE([sse],
1290   AS_HELP_STRING([--disable-sse],
1291     [disable SSE (1-4) optimizations (default auto)]),, [
1292   case "${host_cpu}" in
1293     i?86|x86_64)
1294       enable_sse=yes
1295       ;;
1296     *)
1297       enable_sse=no
1298       ;;
1299   esac
1301 have_sse2="no"
1302 AS_IF([test "${enable_sse}" != "no"], [
1303   ARCH="${ARCH} sse sse2"
1305   VLC_SAVE_FLAGS
1306   CFLAGS="${CFLAGS} -msse2"
1307   AC_CACHE_CHECK([if $CC groks SSE2 intrinsics], [ac_cv_c_sse2_intrinsics], [
1308     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([
1309 [#include <emmintrin.h>
1310 #include <stdint.h>
1311 uint64_t frobzor;]], [
1312 [__m128i a, b, c;
1313 a = b = c = _mm_set1_epi64((__m64)frobzor);
1314 a = _mm_slli_epi16(a, 3);
1315 a = _mm_adds_epi16(a, b);
1316 c = _mm_srli_epi16(c, 8);
1317 c = _mm_slli_epi16(c, 3);
1318 b = _mm_adds_epi16(b, c);
1319 a = _mm_unpacklo_epi8(a, b);
1320 frobzor = (uint64_t)_mm_movepi64_pi64(a);]])], [
1321       ac_cv_c_sse2_intrinsics=yes
1322     ], [
1323       ac_cv_c_sse2_intrinsics=no
1324     ])
1325   ])
1326   VLC_RESTORE_FLAGS
1327   AS_IF([test "${ac_cv_c_sse2_intrinsics}" != "no"], [
1328     AC_DEFINE(HAVE_SSE2_INTRINSICS, 1, [Define to 1 if SSE2 intrinsics are available.])
1329   ])
1331   VLC_SAVE_FLAGS
1332   CFLAGS="${CFLAGS} -msse"
1333   AC_CACHE_CHECK([if $CC groks SSE inline assembly], [ac_cv_sse_inline], [
1334     AC_COMPILE_IFELSE([AC_LANG_PROGRAM(,[[
1335 void *p;
1336 asm volatile("xorps %%xmm1,%%xmm2"::"r"(p):"xmm1", "xmm2");
1338     ], [
1339       ac_cv_sse_inline=yes
1340     ], [
1341       ac_cv_sse_inline=no
1342     ])
1343   ])
1345   AS_IF([test "${ac_cv_sse_inline}" != "no" -a "${SYS}" != "solaris"], [
1346     AC_DEFINE(CAN_COMPILE_SSE, 1, [Define to 1 if SSE inline assembly is available.])
1347   ])
1349   AC_CACHE_CHECK([if $CC groks SSE2 inline assembly], [ac_cv_sse2_inline], [
1350     AC_COMPILE_IFELSE([AC_LANG_PROGRAM(,[[
1351 void *p;
1352 asm volatile("punpckhqdq %%xmm1,%%xmm2"::"r"(p):"xmm1", "xmm2");
1354     ], [
1355       ac_cv_sse2_inline=yes
1356     ], [
1357       ac_cv_sse2_inline=no
1358     ])
1359   ])
1360   AS_IF([test "${ac_cv_sse2_inline}" != "no" -a "${SYS}" != "solaris"], [
1361     AC_DEFINE(CAN_COMPILE_SSE2, 1, [Define to 1 if SSE2 inline assembly is available.])
1362     have_sse2="yes"
1363   ])
1365   # SSE3
1366   AC_CACHE_CHECK([if $CC groks SSE3 inline assembly], [ac_cv_sse3_inline], [
1367     AC_COMPILE_IFELSE([AC_LANG_PROGRAM(,[[
1368 void *p;
1369 asm volatile("movsldup %%xmm1,%%xmm0"::"r"(p):"xmm0", "xmm1");
1371     ], [
1372       ac_cv_sse3_inline=yes
1373     ], [
1374       ac_cv_sse3_inline=no
1375     ])
1376   ])
1378   AS_IF([test "${ac_cv_sse3_inline}" != "no"], [
1379     AC_DEFINE(CAN_COMPILE_SSE3, 1, [Define to 1 if SSE3 inline assembly is available.]) ])
1380   # SSSE3
1381   AC_CACHE_CHECK([if $CC groks SSSE3 inline assembly], [ac_cv_ssse3_inline], [
1382     AC_COMPILE_IFELSE([AC_LANG_PROGRAM(,[[
1383 void *p;
1384 asm volatile("pabsw %%xmm0,%%xmm0"::"r"(p):"xmm0");
1386     ], [
1387       ac_cv_ssse3_inline=yes
1388     ], [
1389       ac_cv_ssse3_inline=no
1390     ])
1391   ])
1393   AS_IF([test "${ac_cv_ssse3_inline}" != "no"], [
1394     AC_DEFINE(CAN_COMPILE_SSSE3, 1, [Define to 1 if SSSE3 inline assembly is available.]) ])
1396   # SSE4.1
1397   AC_CACHE_CHECK([if $CC groks SSE4.1 inline assembly],
1398                  [ac_cv_sse4_1_inline], [
1399     AC_COMPILE_IFELSE([AC_LANG_PROGRAM(,[[
1400 void *p;
1401 asm volatile("pmaxsb %%xmm1,%%xmm0"::"r"(p):"xmm0", "xmm1");
1403     ], [
1404       ac_cv_sse4_1_inline=yes
1405     ], [
1406       ac_cv_sse4_1_inline=no
1407     ])
1408   ])
1410   AS_IF([test "${ac_cv_sse4_1_inline}" != "no"], [
1411     AC_DEFINE(CAN_COMPILE_SSE4_1, 1, [Define to 1 if SSE4_1 inline assembly is available.]) ])
1413   # SSE4.2
1414   AC_CACHE_CHECK([if $CC groks SSE4.2 inline assembly],
1415                  [ac_cv_sse4_2_inline], [
1416     AC_COMPILE_IFELSE([AC_LANG_PROGRAM(,[[
1417 void *p;
1418 asm volatile("pcmpgtq %%xmm1,%%xmm0"::"r"(p):"xmm0", "xmm1");
1420     ], [
1421       ac_cv_sse4_2_inline=yes
1422     ], [
1423       ac_cv_sse4_2_inline=no
1424     ])
1425   ])
1427   AS_IF([test "${ac_cv_sse4_2_inline}" != "no"], [
1428     AC_DEFINE(CAN_COMPILE_SSE4_2, 1, [Define to 1 if SSE4_2 inline assembly is available.]) ])
1430   # SSE4A
1431   AC_CACHE_CHECK([if $CC groks SSE4A inline assembly], [ac_cv_sse4a_inline], [
1432     AC_COMPILE_IFELSE([AC_LANG_PROGRAM(,[[
1433 void *p;
1434 asm volatile("insertq %%xmm1,%%xmm0"::"r"(p):"xmm0", "xmm1");
1436     ], [
1437       ac_cv_sse4a_inline=yes
1438     ], [
1439       ac_cv_sse4a_inline=no
1440     ])
1441   ])
1442   VLC_RESTORE_FLAGS
1443   AS_IF([test "${ac_cv_sse4a_inline}" != "no"], [
1444     AC_DEFINE([CAN_COMPILE_SSE4A], [1], [Define to 1 if SSE4A inline assembly is available.]) ])
1446 AM_CONDITIONAL([HAVE_SSE2], [test "$have_sse2" = "yes"])
1448 VLC_SAVE_FLAGS
1449 CFLAGS="${CFLAGS} -mmmx"
1450 have_3dnow="no"
1451 AC_CACHE_CHECK([if $CC groks 3D Now! inline assembly], [ac_cv_3dnow_inline], [
1452   AC_COMPILE_IFELSE([AC_LANG_PROGRAM(,[[
1453 void *p;
1454 asm volatile("pfadd %%mm1,%%mm2"::"r"(p):"mm1", "mm2");
1456   ], [
1457     ac_cv_3dnow_inline=yes
1458   ], [
1459     ac_cv_3dnow_inline=no
1460   ])
1462 VLC_RESTORE_FLAGS
1463 AS_IF([test "${ac_cv_3dnow_inline}" != "no"], [
1464   AC_DEFINE([CAN_COMPILE_3DNOW], 1,
1465             [Define to 1 if 3D Now! inline assembly is available.])
1466   have_3dnow="yes"
1468 AM_CONDITIONAL([HAVE_3DNOW], [test "$have_3dnow" = "yes"])
1471 AC_ARG_ENABLE([neon],
1472   AS_HELP_STRING([--disable-neon],
1473     [disable ARM NEON optimizations (default auto)]),, [
1474   case "${host_cpu}" in
1475     "arm")
1476       enable_neon="32"
1477       ;;
1478     "aarch64")
1479       enable_neon="64"
1480       ;;
1481     *)
1482       enable_neon="no"
1483       ;;
1484   esac
1486 AS_IF([test "${enable_neon}" != "no"], [
1487   VLC_SAVE_FLAGS
1488   AC_CACHE_CHECK([if $CCAS groks ARM NEON assembly], [ac_cv_arm_neon], [
1489     AS_IF([test "${enable_neon}" != "64"], [
1490       CFLAGS="${CFLAGS} -mfpu=neon -mhard-float"
1491       AC_COMPILE_IFELSE([
1492         AC_LANG_PROGRAM(,[[
1493 asm volatile("vqmovun.s64 d0, q1":::"d0");
1495       ], [
1496         ac_cv_arm_neon="32"
1497       ], [
1498         ac_cv_arm_neon="no"
1499       ])
1500     ], [
1501       CFLAGS="${CFLAGS} -march=armv8-a+simd"
1502       AC_COMPILE_IFELSE([
1503         AC_LANG_PROGRAM(,[[
1504 asm volatile("uhadd v0.8b, v0.8b, v1.8b":::"v0");
1506       ], [
1507         ac_cv_arm_neon="64"
1508       ], [
1509         ac_cv_arm_neon="no"
1510       ])
1511     ])
1512   ])
1513   VLC_RESTORE_FLAGS
1515 AM_CONDITIONAL([HAVE_NEON], [test "${ac_cv_arm_neon}" = "32"])
1516 AM_CONDITIONAL([HAVE_ARM64], [test "${ac_cv_arm_neon}" = "64"])
1518 AC_ARG_ENABLE([sve],
1519   AS_HELP_STRING([--disable-sve],
1520     [disable ARM SVE optimizations (default auto)]),, [
1521   AS_IF([test "${host_cpu}" = "aarch64"], [enable_sve="yes"] ,[enable_sve="no"])
1523 AS_IF([test "${enable_sve}" != "no"], [
1524   VLC_SAVE_FLAGS
1525   CFLAGS="${CFLAGS} -march=armv8-a+sve"
1526   AC_CACHE_CHECK([if $CCAS groks ARM SVE assembly], [ac_cv_arm_sve], [
1527     AC_COMPILE_IFELSE([
1528       AC_LANG_PROGRAM(,[[
1529 asm volatile("ptrue p0.s" ::: "p0");
1531     ], [
1532       ac_cv_arm_sve="yes"
1533     ], [
1534       ac_cv_arm_sve="no"
1535     ])
1536   ])
1537   VLC_RESTORE_FLAGS
1539 AM_CONDITIONAL([HAVE_SVE], [test "${ac_cv_arm_sve}" = "yes"])
1542 AC_ARG_ENABLE([altivec],
1543   AS_HELP_STRING([--disable-altivec],
1544     [disable AltiVec optimizations (default auto)]),, [
1545   AS_CASE("${host_cpu}", [powerpc*],
1546         [enable_altivec=yes], [enable_altivec=no])
1548 have_altivec="no"
1549 ALTIVEC_CFLAGS=""
1550 AS_IF([test "${enable_altivec}" = "yes"], [
1551   ARCH="${ARCH} altivec";
1552   VLC_SAVE_FLAGS
1553   AC_CACHE_CHECK([if $CC groks AltiVec inline assembly],
1554     [ac_cv_altivec_inline],
1555     [AC_TRY_COMPILE(,[asm volatile("vperm 0,1,2,3");],
1556          ac_cv_altivec_inline="yes",
1557          [CFLAGS="${CFLAGS} -Wa,-maltivec"
1558           AC_TRY_COMPILE(,[asm volatile("vperm 0,1,2,3");],
1559             [ac_cv_altivec_inline="-Wa,-maltivec"],
1560             ac_cv_altivec_inline=no)
1561          ])])
1562   VLC_RESTORE_FLAGS
1563   AS_IF([test "${ac_cv_altivec_inline}" != "no"], [
1564     AC_DEFINE(CAN_COMPILE_ALTIVEC, 1,
1565               [Define to 1 if AltiVec inline assembly is available.])
1566     AS_IF([test "${ac_cv_altivec_inline}" != "yes"], [
1567       ALTIVEC_CFLAGS="${ac_cv_altivec_inline}"
1568       VLC_ADD_CFLAGS([libvlccore],[${ac_cv_altivec_inline}])
1569     ])
1570     have_altivec="yes"
1571   ])
1573   VLC_SAVE_FLAGS
1574   AC_CACHE_CHECK([if \$CC groks AltiVec C extensions],
1575   [ac_cv_c_altivec], [
1576     CFLAGS="${CFLAGS} -maltivec"
1577     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([
1578 [#include <altivec.h>]], [
1579 [vec_ld(0, (unsigned char *)0);]])], [
1580       ac_cv_c_altivec="-maltivec"
1581     ], [
1582       ac_cv_c_altivec="no"
1583     ])
1584   ])
1585   VLC_RESTORE_FLAGS
1586   AS_IF([test "${ac_cv_c_altivec}" != "no"], [
1587     CPPFLAGS="${CPPFLAGS} ${ac_cv_c_altivec}"
1588     AC_DEFINE(CAN_COMPILE_C_ALTIVEC, 1, [Define to 1 if C AltiVec extensions are available.])
1589     VLC_ADD_CFLAGS([libvlccore],[${ac_cv_c_altivec}])
1590     ALTIVEC_CFLAGS="$ALTIVEC_CFLAGS ${ac_cv_c_altivec}"
1591     VLC_ADD_CFLAGS([deinterlace],[${ac_cv_c_altivec}])
1592     have_altivec="yes"
1593   ])
1594   AC_CHECK_HEADERS([altivec.h])
1596   VLC_SAVE_FLAGS
1597   LDFLAGS="${LDFLAGS} -Wl,-framework,vecLib"
1598   AC_CACHE_CHECK([if linker needs -framework vecLib],
1599     [ac_cv_ld_altivec],
1600     [AC_TRY_LINK([],,ac_cv_ld_altivec=yes,ac_cv_ld_altivec=no)])
1601   VLC_RESTORE_FLAGS
1602   AS_IF([test "${ac_cv_ld_altivec}" != "no"], [
1603     VLC_ADD_LIBS([libvlccore],[-Wl,-framework,vecLib])
1604   ])
1606 AC_SUBST([ALTIVEC_CFLAGS])
1607 AM_CONDITIONAL([HAVE_ALTIVEC], [test "$have_altivec" = "yes"])
1610 dnl  Memory usage
1612 AC_ARG_ENABLE([optimize-memory],
1613   AS_HELP_STRING([--enable-optimize-memory],
1614     [optimize memory usage over performance]))
1615 if test "${enable_optimize_memory}" = "yes"; then
1616   AC_DEFINE(OPTIMIZE_MEMORY, 1, Define if you want to optimize memory usage over performance)
1620 dnl Allow running as root (useful for people running on embedded platforms)
1622 AC_ARG_ENABLE([run-as-root],
1623   AS_HELP_STRING([--enable-run-as-root],
1624     [allow running VLC as root (default disabled)]))
1625 AS_IF([test "${enable_run_as_root}" = "yes"],[
1626     AC_DEFINE(ALLOW_RUN_AS_ROOT, 1,
1627               [Define to 1 to allow running VLC as root (uid 0).])
1631 dnl Stream output
1633 AC_ARG_ENABLE([sout],
1634   AS_HELP_STRING([--disable-sout],
1635     [disable streaming output (default enabled)]))
1636 AS_IF([test "${enable_sout}" != "no"], [
1637   AC_DEFINE(ENABLE_SOUT, 1, [Define to 1 for stream output support.])
1639 AM_CONDITIONAL([ENABLE_SOUT], [test "${enable_sout}" != "no"])
1641 dnl Lua modules
1642 AC_ARG_ENABLE([lua],
1643   AS_HELP_STRING([--disable-lua],
1644     [disable LUA scripting support (default enabled)]))
1645 if test "${enable_lua}" != "no"
1646 then
1647   PKG_CHECK_MODULES(LUA, lua5.2,
1648     [ have_lua=yes ],
1649     [
1650     AC_MSG_WARN([${LUA_PKG_ERRORS}, trying lua 5.1 instead])
1652     PKG_CHECK_MODULES(LUA, lua5.1,
1653       [ have_lua=yes ],
1654       [
1655       AC_MSG_WARN([${LUA_PKG_ERRORS}, trying lua >= 5.1 instead])
1656       PKG_CHECK_MODULES(LUA, lua >= 5.1,
1657         [ have_lua=yes ],
1658         [
1659           AC_MSG_WARN([${LUA_PKG_ERRORS}, trying manual detection instead])
1660           have_lua=yes
1661           AC_CHECK_HEADERS([lua.h lauxlib.h lualib.h],
1662             [],
1663             [ have_lua=no ] )
1664           AC_CHECK_LIB(  lua5.2 , luaL_newstate,
1665             [LUA_LIBS="-llua5.2"],
1666           AC_CHECK_LIB( lua5.1 , luaL_newstate,
1667             [LUA_LIBS="-llua5.1"],
1668             AC_CHECK_LIB( lua51 , luaL_newstate,
1669               [LUA_LIBS="-llua51"],
1670               AC_CHECK_LIB( lua , luaL_newstate,
1671                 [LUA_LIBS="-llua"],
1672                 [ have_lua=no
1673                 ], [-lm])
1674             )))
1675         ])
1676       ])
1677     ])
1678   if test "x${have_lua}" != "xyes" ;  then
1679       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.])
1680   fi
1681   AC_ARG_VAR([LUAC], [LUA byte compiler])
1682   AS_IF([test -z "$LUAC"], [
1683      AC_CHECK_TOOL(LUAC, [luac], [false])
1684   ])
1685   AS_IF([test "${LUAC}" = "false"], [
1686     AC_MSG_ERROR([Could not find the LUA byte compiler.])
1687   ])
1688   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], [
1689     AC_MSG_ERROR([You need 32-bits luac when using lua from contrib.])
1690   ])
1692 AM_CONDITIONAL([BUILD_LUA], [test "${have_lua}" = "yes"])
1696 dnl VideoLAN manager
1698 AC_ARG_ENABLE([vlm],
1699   AS_HELP_STRING([--disable-vlm],
1700     [disable the stream manager (default enabled)]),,
1701   [enable_vlm="${enable_sout}"])
1702 AS_IF([test "${enable_vlm}" != "no"], [
1703   AS_IF([test "${enable_sout}" = "no"], [
1704     AC_MSG_ERROR([VLM requires the stream output. Do not use --disable-sout.])
1705   ])
1706   AC_DEFINE(ENABLE_VLM, 1, [Define if you want the VideoLAN manager support])
1708 AM_CONDITIONAL([ENABLE_VLM], [test "${enable_vlm}" != "no"])
1712 dnl Addons manager storage and repositories modules
1714 AC_ARG_ENABLE([addonmanagermodules],
1715   AS_HELP_STRING([--disable-addonmanagermodules],
1716     [disable the addons manager modules (default enabled)]))
1717 if test "${enable_addonmanagermodules}" != "no"
1718 then
1719   AC_DEFINE(ENABLE_ADDONMANAGERMODULES, 1, [Define if you want the addons manager modules])
1721 AM_CONDITIONAL([ENABLE_ADDONMANAGERMODULES], [test "${enable_addonmanagermodules}" != "no"])
1725 dnl  Input plugins
1728 EXTEND_HELP_STRING([Input plugins:])
1731 dnl  libarchive access module
1733 PKG_ENABLE_MODULES_VLC([ARCHIVE], [archive], [libarchive >= 3.1.0], (libarchive support), [auto])
1736 dnl  live555 input
1738 AC_ARG_ENABLE([live555],
1739   AS_HELP_STRING([--enable-live555],
1740     [enable RTSP input through live555 (default enabled)]))
1742 AS_IF([test "${enable_live555}" != "no" -a -n "${CXX}"], [
1743   PKG_CHECK_MODULES(LIVE555, live555, [
1744     VLC_ADD_PLUGIN([live555])
1745     VLC_ADD_CXXFLAGS([live555], [$LIVE555_CFLAGS])
1746     VLC_ADD_LIBS([live555],[$LIVE555_LIBS])
1747   ], [
1748     AC_MSG_WARN([${LIVE555_PKG_ERRORS}.])
1750     AC_LANG_PUSH(C++)
1751     VLC_SAVE_FLAGS
1753     dnl detect include paths
1754     AS_IF([test -f "${CONTRIB_DIR}/include/UsageEnvironment/UsageEnvironment.hh"], [
1755       CPPFLAGS_live555="-I${CONTRIB_DIR}/include/liveMedia -I${CONTRIB_DIR}/include/groupsock -I${CONTRIB_DIR}/include/BasicUsageEnvironment -I${CONTRIB_DIR}/include/UsageEnvironment"
1756     ], [
1757       AS_IF([test "${SYS}" != "os2"], [
1758         LIVE555_PREFIX=${LIVE555_PREFIX-"/usr"}
1759         CPPFLAGS_live555="-I${LIVE555_PREFIX}/include/liveMedia -I${LIVE555_PREFIX}/include/groupsock -I${LIVE555_PREFIX}/include/BasicUsageEnvironment -I${LIVE555_PREFIX}/include/UsageEnvironment"
1760       ], [
1761         LIVE555_PREFIX=${LIVE555_PREFIX-"/usr/lib/live"}
1762         CPPFLAGS_live555="-I${LIVE555_PREFIX}/liveMedia/include -I${LIVE555_PREFIX}/groupsock/include -I${LIVE555_PREFIX}/BasicUsageEnvironment/include -I${LIVE555_PREFIX}/UsageEnvironment/include"
1763         LDFLAGS_live555="-L${LIVE555_PREFIX}/liveMedia -L${LIVE555_PREFIX}/groupsock -L${LIVE555_PREFIX}/BasicUsageEnvironment -L${LIVE555_PREFIX}/UsageEnvironment"
1764       ])
1765     ])
1767     dnl CPP Flags
1768     AS_IF([test "${SYS}" = "solaris"], [
1769       CPPFLAGS_live555="${CPPFLAGS_live555} -DSOLARIS"
1770     ])
1771     CPPFLAGS="${CPPFLAGS} ${CPPFLAGS_live555}"
1772     LDFLAGS="${LDFLAGS} ${LDFLAGS_live555}"
1774     dnl version check
1775     AC_CACHE_CHECK([for live555 version 1324598400 or later], [ac_cv_live555], [
1776       AC_PREPROC_IFELSE([AC_LANG_PROGRAM([
1777 [#include <liveMedia_version.hh>
1778 #if !defined (LIVEMEDIA_LIBRARY_VERSION_INT) || (LIVEMEDIA_LIBRARY_VERSION_INT < 1324598400)
1779 # error BOOM
1780 #endif]])
1781       ], [
1782         ac_cv_live555="yes"
1783       ], [
1784         ac_cv_live555="no"
1785       ])
1786     ])
1788     AS_IF([test "$ac_cv_live555" = "no"], [
1789       AC_MSG_WARN([live555 is missing or its installed version is too old:
1790 Version 2011.12.23 or later is required to proceed.
1791 You can get an updated one from http://www.live555.com/liveMedia .])
1792       AS_IF([test -n "${enable_live555}"], [
1793         AC_MSG_ERROR([Update live555 or pass --disable-live555 to disable RTSP input support.])
1794       ])
1795     ], [
1796       other_libs="-lgroupsock -lBasicUsageEnvironment -lUsageEnvironment"
1797       other_libs_pic="-lgroupsock_pic -lBasicUsageEnvironment_pic -lUsageEnvironment_pic"
1798       AS_IF([test "${SYS}" = "mingw32"], [
1799         # add ws2_32 for closesocket, select, recv
1800         other_libs="$other_libs -lws2_32"
1801       ])
1803       dnl We need to check for pic because live555 don't provide shared libs
1804       dnl and we want to build a plugins so we need -fPIC on some arch.
1805       VLC_ADD_CXXFLAGS([live555], [${CPPFLAGS_live555}])
1806       VLC_ADD_LDFLAGS([live555], [${LDFLAGS_live555}])
1807       AC_CHECK_LIB([liveMedia_pic], [main], [
1808         VLC_ADD_PLUGIN([live555])
1809         VLC_ADD_LIBS([live555], [-lliveMedia_pic ${other_libs_pic}])
1810       ],[
1811         AC_CHECK_LIB([liveMedia], [main], [
1812           VLC_ADD_PLUGIN([live555])
1813           VLC_ADD_LIBS([live555], [-lliveMedia ${other_libs}])
1814         ],[],[${other_libs}])
1815       ],[${other_libs_pic}])
1816     ])
1817     VLC_RESTORE_FLAGS
1818     AC_LANG_POP(C++)
1819   ])
1823 dnl IIDC and DV FireWire input modules
1825 PKG_ENABLE_MODULES_VLC([DC1394], [], [libdc1394-2 >= 2.1.0], [IIDC FireWire input module], [auto])
1826 PKG_ENABLE_MODULES_VLC([DV1394], [], [libraw1394 >= 2.0.1 libavc1394 >= 0.5.3], [DV FireWire input module], [auto])
1829 dnl - linsys modules: access module check for libzvbi
1831 AC_ARG_ENABLE([linsys],
1832   AS_HELP_STRING([--enable-linsys],
1833     [Linux Linear Systems Ltd. SDI and HD-SDI input cards (default enabled)]))
1834 AS_IF([test "$SYS" = "linux" -a "${enable_linsys}" != "no"], [
1835   VLC_ADD_PLUGIN([linsys_hdsdi])
1836   PKG_CHECK_MODULES(LINSYS_SDI, [zvbi-0.2 >= 0.2.28], [
1837     VLC_ADD_PLUGIN([linsys_sdi])
1838   ], [
1839     AC_MSG_WARN([${LINSYS_SDI_PKG_ERRORS}.])
1840   ])
1844 dnl dvdread module: check for libdvdread
1846 PKG_ENABLE_MODULES_VLC([DVDREAD], [], [dvdread > 4.9.0], [dvdread input module], [auto])
1849 dnl libdvdnav plugin
1851 PKG_ENABLE_MODULES_VLC([DVDNAV], [], [dvdnav > 4.9.0], [DVD with navigation input module (dvdnav)], [auto])
1852 AS_IF([test "${enable_dvdnav}" != "no"], [
1853   AC_MSG_CHECKING(for dvdnav_stream_cb in dvdnav/dvdnav.h)
1854     AC_EGREP_HEADER(dvdnav_stream_cb,dvdnav/dvdnav.h,[
1855       AC_MSG_RESULT(yes)
1856       AC_DEFINE(HAVE_STREAM_CB_IN_DVDNAV_H, 1, For dvdnav demux support)
1857       ],[
1858       AC_MSG_RESULT(no)
1859     ])
1863 dnl  Blu-ray Disc Support with libbluray
1865 PKG_ENABLE_MODULES_VLC([BLURAY], [libbluray], [libbluray >= 0.6.2], (libbluray for Blu-ray disc support ) )
1868 dnl  OpenCV wrapper and example filters
1870 PKG_ENABLE_MODULES_VLC([OPENCV], [opencv_example opencv_wrapper], [opencv > 2.0], (OpenCV (computer vision) filter), [auto])
1874 dnl  libsmbclient plugin
1876 PKG_ENABLE_MODULES_VLC([SMBCLIENT], [smbc], [smbclient], (SMB/CIFS support), [auto])
1879 dnl  liBDSM access module
1881 AM_CONDITIONAL([HAVE_DSM], [test "$AS_TR_SH(with_dsm)" = "yes"])
1882 PKG_WITH_MODULES([DSM], [libdsm >= 0.2.0], [
1883        VLC_ADD_PLUGIN([dsm])
1884        VLC_ADD_CFLAGS([dsm], [$DSM_CFLAGS])
1885        VLC_ADD_LIBS([dsm], [$DSM_LIBS])
1886        have_dsm="yes"
1887    ],,[libdsm SMB/CIFS access/sd module], [auto])
1888 AM_CONDITIONAL([HAVE_DSM], [test "${have_dsm}" = "yes"])
1891 dnl sftp access support
1893 PKG_ENABLE_MODULES_VLC([SFTP], [sftp], [libssh2], (support SFTP file transfer via libssh2), [auto])
1896 dnl nfs access support
1898 PKG_ENABLE_MODULES_VLC([NFS], [nfs], [libnfs >= 1.10.0], (support nfs protocol via libnfs), [auto])
1901 dnl smb2 access support
1903 PKG_ENABLE_MODULES_VLC([SMB2], [smb2], [libsmb2 >= 2.0.0], (support smb2 protocol via libsmb2), [auto])
1906 dnl  Video4Linux 2
1908 AC_ARG_ENABLE([v4l2], AS_HELP_STRING([--disable-v4l2],
1909   [disable Video4Linux version 2 (default auto)]))
1910 have_v4l2="no"
1911 AS_IF([test "$enable_v4l2" != "no"], [
1912   AC_CHECK_HEADERS([linux/videodev2.h], [
1913     have_v4l2="yes"
1914   ])
1916 AM_CONDITIONAL([HAVE_V4L2], [test "${have_v4l2}" != "no"])
1919 dnl special access module for Blackmagic SDI cards
1921 AC_ARG_ENABLE([decklink],
1922   AS_HELP_STRING([--disable-decklink],
1923     [disable Blackmagic DeckLink SDI input (default auto)]))
1924 AC_ARG_WITH([decklink_sdk],
1925   AS_HELP_STRING([--with-decklink-sdk=DIR],
1926     [location of Blackmagic DeckLink SDI SDK]))
1927 have_decklink=no
1928 if test "${enable_decklink}" != "no"
1929 then
1930   if test "${with_decklink_sdk}" != "no" -a -n "${with_decklink_sdk}"
1931   then
1932     VLC_ADD_CPPFLAGS([decklink decklinkoutput stream_out_sdi],[-I${with_decklink_sdk}/include])
1933   fi
1934   VLC_SAVE_FLAGS
1935   CPPFLAGS="${CPPFLAGS} ${CPPFLAGS_decklink}"
1936   AC_LANG_PUSH([C++])
1937   AC_CHECK_HEADERS([DeckLinkAPIDispatch.cpp], [
1938       have_decklink=yes
1939       AS_IF([test "${SYS}" = "darwin"], [
1940         VLC_ADD_LIBS([decklink decklinkoutput],[-Wl,-framework,CoreFoundation])
1941       ])
1942   ], [
1943       AS_IF([test "${enable_decklink}" = "yes"], [
1944         AC_MSG_ERROR([Blackmagic DeckLink SDI include files not found!])
1945       ], [
1946         AC_MSG_WARN([Blackmagic DeckLink SDI include files not found, decklink disabled])
1947       ])
1948   ])
1949   AC_LANG_POP([C++])
1950   VLC_RESTORE_FLAGS
1952 AM_CONDITIONAL([HAVE_DECKLINK], [ test "${have_decklink}" != "no" ])
1956 dnl  Built-in CD-DA and VCD module
1958 AC_ARG_ENABLE([vcd],
1959   AS_HELP_STRING([--disable-vcd],
1960     [disable built-in VCD and CD-DA support (default enabled)]))
1962 AC_ARG_ENABLE([libcddb],
1963   AS_HELP_STRING([--disable-libcddb],
1964     [disable CDDB for Audio CD (default enabled)]))
1966 if test "${enable_vcd}" != "no"
1967 then
1968   AC_MSG_CHECKING(for cdrom_msf0 in linux/cdrom.h)
1969   AC_EGREP_HEADER(cdrom_msf0,linux/cdrom.h,[
1970     AC_MSG_RESULT(yes)
1971     VLC_ADD_PLUGIN([vcd cdda])
1972   ],[
1973     AC_MSG_RESULT(no)
1974   ])
1976   AC_MSG_CHECKING(for scsireq in sys/scsiio.h)
1977   AC_EGREP_HEADER(scsireq,sys/scsiio.h,[
1978     AC_MSG_RESULT(yes)
1979     VLC_ADD_PLUGIN([vcd cdda])
1980     AC_DEFINE(HAVE_SCSIREQ_IN_SYS_SCSIIO_H, 1, For NetBSD VCD support)
1981   ],[
1982     AC_MSG_RESULT(no)
1983   ])
1985   AC_MSG_CHECKING(for ioc_toc_header in sys/cdio.h)
1986   AC_EGREP_HEADER(ioc_toc_header ,sys/cdio.h,[
1987     AC_MSG_RESULT(yes)
1988     VLC_ADD_PLUGIN([vcd cdda])
1989     AC_DEFINE(HAVE_IOC_TOC_HEADER_IN_SYS_CDIO_H, 1, For FreeBSD VCD support)
1990   ],[
1991     AC_MSG_RESULT(no)
1992   ])
1994   if test "${SYS}" = "bsdi" -o "${SYS}" = "mingw32" -o "${SYS}" = "os2" -o "${SYS}" = "darwin"
1995   then
1996     VLC_ADD_PLUGIN([vcd cdda])
1997   fi
1999   if test "$enable_libcddb" != "no"; then
2000     PKG_CHECK_MODULES(LIBCDDB, [libcddb >= 0.9.5], [
2001       HAVE_LIBCDDB=yes
2002       AC_DEFINE(HAVE_LIBCDDB, 1, [Define this if you have libcddb installed])
2003       VLC_ADD_LIBS([cdda],[$LIBCDDB_LIBS])
2004       VLC_ADD_CFLAGS([cdda],[$LIBCDDB_CFLAGS])
2005       ],:
2006       [AC_MSG_WARN([${LIBCDDB_PKG_ERRORS}: CDDB access disabled.])
2007       HAVE_LIBCDDB=no])
2008   fi
2012 dnl Linux DVB
2014 AC_CACHE_CHECK([for Linux DVB version 5.1], [ac_cv_linux_dvb_5_1], [
2015   AC_PREPROC_IFELSE([AC_LANG_PROGRAM([
2016 [#include <linux/dvb/version.h>
2017 #if (DVB_API_VERSION < 5)
2018 # error Linux DVB API v3.2 and older are not supported.
2019 #endif
2020 #if (DVB_API_VERSION == 5 && DVB_API_VERSION_MINOR < 1)
2021 # error Linux DVB API v5.0 is unsupported. Please update.
2022 #endif
2023 ]])], [
2024   ac_cv_linux_dvb_5_1=yes
2025 ], [
2026   ac_cv_linux_dvb_5_1=no
2027 ])])
2028 AM_CONDITIONAL([HAVE_LINUX_DVB], [test "$ac_cv_linux_dvb_5_1" = "yes"])
2031 dnl  Screen capture module
2033 AC_ARG_ENABLE([screen],
2034   AS_HELP_STRING([--enable-screen],
2035     [disable screen capture (default enabled)]))
2036 if test "${enable_screen}" != "no"; then
2037   if test "${SYS}" = "darwin"; then
2038     AC_CHECK_HEADERS([ApplicationServices/ApplicationServices.h], [
2039       VLC_ADD_PLUGIN([screen])
2040     ])
2041   fi
2043 AM_CONDITIONAL([HAVE_MAC_SCREEN], [test "${SYS}" = "darwin" -a "x${enable_screen}" != "xno"])
2046 dnl  VNC/RFB access module
2048 PKG_ENABLE_MODULES_VLC([VNC], [vnc], [libvncclient >= 0.9.9], (VNC/rfb client support), [auto])
2050 dnl  RDP/Remote Desktop access module
2052 PKG_ENABLE_MODULES_VLC([FREERDP], [rdp], [freerdp >= 1.0.1], (RDP/Remote Desktop client support) )
2055 dnl AVFoundation
2056 AC_SUBST([have_avfoundation], ["no"])
2057 AC_ARG_ENABLE([macosx-avfoundation],
2058   AS_HELP_STRING([--enable-macosx-avfoundation], [Mac OS X avcapture (video) module (default enabled on Mac OS X)]))
2059 if test "x${enable_macosx_avfoundation}" != "xno" &&
2060   (test "${SYS}" = "darwin" || test "${enable_macosx_avfoundation}" = "yes")
2061 then
2062   SAVED_LIBS="${LIBS}"
2063   LIBS="-framework AVFoundation"
2064   AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [])],[have_avfoundation=yes],[have_avfoundation=no])
2065   LIBS="${SAVED_LIBS}"
2066   if test "${have_avfoundation}" != "no"
2067   then
2068     VLC_ADD_PLUGIN([avcapture])
2069   fi
2071 AM_CONDITIONAL([HAVE_AVFOUNDATION], [test "${have_avfoundation}" != "no"])
2074 dnl  DCP plugin (using asdcplib)
2076 PKG_WITH_MODULES([ASDCP], [asdcplib], [have_asdcp="yes"])
2077 AM_CONDITIONAL([HAVE_ASDCP], [test "${have_asdcp}" = "yes"])
2080 dnl  Demux plugins
2083 EXTEND_HELP_STRING([Mux/Demux plugins:])
2086 dnl  libdvbpsi check for ts mux/demux
2088 have_dvbpsi="no"
2089 PKG_WITH_MODULES([DVBPSI], [libdvbpsi >= 1.2.0], [have_dvbpsi="yes"])
2090 AM_CONDITIONAL([HAVE_DVBPSI], [test "${have_dvbpsi}" = "yes"])
2094 dnl  GME demux plugin
2096 AC_ARG_ENABLE([gme],
2097   AS_HELP_STRING([--enable-gme],
2098     [use Game Music Emu (default auto)]))
2099 AS_IF([test "${enable_gme}" != "no"], [
2100   AC_CHECK_HEADER([gme/gme.h], [
2101     AC_CHECK_LIB([gme], [gme_identify_header], [
2102       VLC_ADD_PLUGIN([gme])
2103     ], [
2104       AC_CHECK_LIB([gme], [gme_identify_extension], [
2105          VLC_ADD_LIBS([gme], [-lstdc++ $LIBM])
2106          VLC_ADD_PLUGIN([gme])
2107       ],, [-lstdc++ $LIBM])
2108     ])
2109     VLC_ADD_LIBS([gme], [-lgme])
2110   ], [
2111     AS_IF([test "x${enable_gme}" != "x"], [
2112       AC_MSG_ERROR([GME cannot be found. Please install the development files.])
2113     ])
2114   ])
2119 dnl  SIDPlay plugin
2121 AC_ARG_ENABLE([sid],
2122     AS_HELP_STRING([--enable-sid],[C64 sid demux support (default auto)]))
2123 AS_IF([test "${enable_sid}" != "no"], [
2124     PKG_CHECK_MODULES(SID, [libsidplay2], [
2125         AC_LANG_PUSH(C++)
2126         oldCPPFLAGS="$CPPFLAGS"
2127         CPPFLAGS="$CPPFLAGS $SID_CFLAGS"
2128         AC_CHECK_HEADER([sidplay/builders/resid.h], [
2129             VLC_ADD_PLUGIN([sid])
2130             VLC_ADD_CFLAGS([sid], [$SID_CFLAGS])
2131             VLC_ADD_LIBS([sid], [$SID_LIBS] [-lresid-builder])
2132         ], [
2133             AS_IF([test -n "${enable_sid}"],
2134                 [AC_MSG_ERROR([${SID_PKG_ERRORS} (required for sid).])],
2135                 [AC_MSG_WARN([${SID_PKG_ERRORS} (required for sid).])]
2136                 )
2137         ])
2138         CPPFLAGS="$oldCPPFLAGS"
2139         AC_LANG_POP(C++)
2140     ], [
2141         AS_IF([test "x${enable_sid}" = "xyes"],
2142             [AC_MSG_ERROR([${SID_PKG_ERRORS} (required for sid).])],
2143             [AC_MSG_WARN([${SID_PKG_ERRORS} (required for sid).])]
2144             )
2145     ])
2150 dnl  ogg demux plugin
2152 PKG_ENABLE_MODULES_VLC([OGG], [mux_ogg], [ogg >= 1.0], [Ogg demux support], [auto])
2153 PKG_CHECK_MODULES(LIBVORBIS, [vorbis >= 1.1], [
2154     AC_DEFINE(HAVE_LIBVORBIS, 1, [Define to 1 if you have the libvorbis])
2155 ],[true])
2156 PKG_ENABLE_MODULES_VLC([OGG], [], [ogg >= 1.0], [Ogg demux support], [auto], [${LIBVORBIS_CFLAGS}], [${LIBVORBIS_LIBS}])
2157 if test "${enable_sout}" != "no"; then
2158 dnl Check for libshout
2159     PKG_ENABLE_MODULES_VLC([SHOUT], [access_output_shout], [shout >= 2.1], [libshout output plugin], [auto])
2163 dnl  matroska demux plugin
2165 PKG_WITH_MODULES([MATROSKA], [libebml libmatroska], [
2166        VLC_ADD_PLUGIN([mkv])
2167        VLC_ADD_CFLAGS([mkv], [$MATROSKA_CFLAGS])
2168        VLC_ADD_LIBS([mkv], [$MATROSKA_LIBS])
2169        have_matroska="yes"
2170    ],,[MKV format support], [auto])
2171 AM_CONDITIONAL([HAVE_MATROSKA], [test "${have_matroska}" = "yes"])
2174 dnl  modplug demux plugin
2176 AC_ARG_ENABLE([mod],
2177   AS_HELP_STRING([--disable-mod],
2178     [do not use libmodplug (default auto)]))
2179 if test "${enable_mod}" != "no" ; then
2180     PKG_CHECK_MODULES(LIBMODPLUG, [libmodplug >= 0.8.4 libmodplug != 0.8.8], [
2181           VLC_ADD_PLUGIN([mod])
2182           VLC_ADD_CXXFLAGS([mod],[$LIBMODPLUG_CFLAGS])
2183           VLC_ADD_CFLAGS([mod],[$LIBMODPLUG_CFLAGS]) #modules/demux/mod.c needs CFLAGS_mod, not CXXFLAGS_mod
2184           VLC_ADD_LIBS([mod],[$LIBMODPLUG_LIBS])
2185     ],[
2186        AS_IF([test -n "${enable_mod}"],
2187          [AC_MSG_ERROR([${LIBMODPLUG_PKG_ERRORS}.])],
2188          [AC_MSG_WARN([${LIBMODPLUG_PKG_ERRORS}.])])
2189     ])
2193 dnl  mpc demux plugin
2195 AC_ARG_ENABLE([mpc],
2196   AS_HELP_STRING([--disable-mpc], [do not use libmpcdec (default auto)]))
2197 if test "${enable_mpc}" != "no"
2198 then
2199     AC_CHECK_HEADERS([mpcdec/mpcdec.h], [
2200     VLC_ADD_PLUGIN([mpc])
2201     VLC_ADD_LIBS([mpc],[-lmpcdec])])
2205 dnl  Codec plugins
2208 EXTEND_HELP_STRING([Codec plugins:])
2211 dnl wmafixed plugin
2213 AC_ARG_ENABLE([wma-fixed],
2214   AS_HELP_STRING([--enable-wma-fixed], [libwma-fixed module (default disabled)]))
2215 if test "${enable_wma_fixed}" = "yes"
2216 then
2217   VLC_ADD_PLUGIN([wma_fixed])
2221 dnl shine encoder plugin
2223 PKG_ENABLE_MODULES_VLC([SHINE], [], [shine >= 3.0.0], [MPEG Audio Layer 3 encoder], [auto], [], [], [])
2227 dnl openmax il codec plugin
2229 AC_ARG_ENABLE([omxil],
2230   AS_HELP_STRING([--enable-omxil], [openmax il codec module (default disabled)]))
2231 if test "${enable_omxil}" = "yes"
2232 then
2233   VLC_ADD_PLUGIN([omxil])
2237 dnl raspberry pi openmax il configuration
2239 AC_ARG_ENABLE([rpi-omxil],
2240   AS_HELP_STRING([--enable-rpi-omxil], [openmax il configured for raspberry pi (default disabled)]))
2241 if test "${enable_rpi_omxil}" = "yes"
2242 then
2243   VLC_ADD_PLUGIN([omxil])
2244   VLC_ADD_CFLAGS([omxil],[-DRPI_OMX])
2248 dnl CrystalHD codec plugin
2250 AC_ARG_ENABLE([crystalhd],
2251   AS_HELP_STRING([--enable-crystalhd], [crystalhd codec plugin (default auto)]))
2252 if test "${enable_crystalhd}" != "no"; then
2253     AC_CHECK_HEADER(libcrystalhd/libcrystalhd_if.h, [
2254       VLC_ADD_PLUGIN([crystalhd])
2255       VLC_ADD_LIBS([crystalhd], [-lcrystalhd])
2256     ],[
2257       if test "${SYS}" = "mingw32" ; then
2258         AC_CHECK_HEADERS([libcrystalhd/bc_dts_defs.h], [
2259           VLC_ADD_PLUGIN([crystalhd])
2260           AC_CHECK_HEADERS([libcrystalhd/bc_drv_if.h], [
2261             VLC_ADD_LIBS([crystalhd], [-lbcmDIL])
2262             ])
2263         ],[
2264           AS_IF([test x"${enable_crystalhd}" = "xyes"],
2265                 [AC_MSG_ERROR("Could not find CrystalHD development headers")],
2266                 [AC_MSG_WARN("Could not find CrystalHD development headers")])
2267         ],[#define __LINUX_USER__
2268                #include <libcrystalhd/bc_dts_types.h>
2269         ])
2270       fi
2271     ],[
2272        #include <libcrystalhd/bc_dts_types.h>
2273       ])
2277 dnl  mad plugin
2279 have_mad="no"
2280 MAD_CFLAGS=""
2281 MAD_LIBS=""
2283 AC_ARG_WITH(mad, AS_HELP_STRING([--with-mad=PATH], [path to libmad]), [
2284   enable_mad="yes"
2285 ], [
2286   with_mad="no"
2288 AS_IF([test "${with_mad}" != "no"], [
2289   MAD_CFLAGS="-I${with_mad}/include"
2290   MAD_LIBS="-L${with_mad}/lib"
2293 AC_ARG_ENABLE([mad],
2294   AS_HELP_STRING([--enable-mad], [libmad module (default enabled)]))
2295 AS_IF([test "${enable_mad}" != "no"], [
2296   VLC_SAVE_FLAGS
2297   CPPFLAGS="${CPPFLAGS} ${MAD_CFLAGS}"
2298   LDFLAGS="${LDFLAGS} ${MAD_LIBS}"
2299   AC_CHECK_HEADERS([mad.h], [
2300     AC_CHECK_LIB([mad], [mad_bit_init], [
2301       have_mad="yes"
2302       MAD_LIBS="${MAD_LIBS} -lmad"
2303     ])
2304   ])
2305   VLC_RESTORE_FLAGS
2306   AS_IF([test -n "$enable_mad" -a "${have_mad}" = "no"], [
2307     AC_MSG_ERROR([Could not find libmad. Install it or pass --disable-mad to disable it.])
2308   ])
2310 AC_SUBST([MAD_CFLAGS])
2311 AC_SUBST([MAD_LIBS])
2312 AM_CONDITIONAL([HAVE_MAD], [test "${have_mad}" = "yes"])
2314 dnl  mpg123 plugin
2317 PKG_ENABLE_MODULES_VLC([MPG123], [mpg123], [libmpg123], [libmpg123 decoder support], [auto])
2320 dnl gstreamer stuff
2322 AC_ARG_ENABLE([gst-decode],
2323   AS_HELP_STRING([--enable-gst-decode], [GStreamer based decoding support (currently supports only video decoding) (default auto)]))
2325 have_gst_decode="no"
2326 AS_IF([test "${enable_gst_decode}" != "no"], [
2327   PKG_CHECK_MODULES([GST_APP], [gstreamer-app-1.0], [
2328     PKG_CHECK_MODULES([GST_VIDEO], [gstreamer-video-1.0], [
2329       have_gst_decode="yes"
2330     ], [
2331       AC_MSG_WARN([${GST_VIDEO_PKG_ERRORS}. GStreamer decoder module will not be built.])
2332     ])
2333   ], [
2334     AC_MSG_WARN([${GST_APP_PKG_ERRORS}. GStreamer modules will not be built.])
2335   ])
2337 AM_CONDITIONAL([HAVE_GST_DECODE], [test "${have_gst_decode}" = "yes"])
2340 dnl  avcodec decoder/encoder plugin
2342 AC_ARG_ENABLE([merge-ffmpeg],
2343 AS_HELP_STRING([--enable-merge-ffmpeg], [merge FFmpeg-based plugins (default disabled)]),, [
2344   enable_merge_ffmpeg="no"
2346 AM_CONDITIONAL([MERGE_FFMPEG], [test "$enable_merge_ffmpeg" != "no"])
2348 AC_MSG_CHECKING([for libavutil variant])
2349 PKG_CHECK_EXISTS([libavutil], [
2350   libavutil_version="$(${PKG_CONFIG} --modversion libavutil)"
2351   libavutil_micro="${libavutil_version##*.}"
2352   AS_IF([test ${libavutil_micro} -le 99], [
2353     avfork="libav"
2354   ], [
2355     avfork="ffmpeg"
2356   ])
2357 ], [
2358   avfork="none"
2360 AC_MSG_RESULT([${avfork}])
2362 AC_ARG_ENABLE([avcodec],
2363 AS_HELP_STRING([--enable-avcodec], [libavcodec codec (default enabled)]))
2364 AS_IF([test "${enable_avcodec}" != "no"], [
2365   dnl We need >=57.16.0 from libav or >=57.37.100 from ffmpeg
2366   case "${avfork}" in
2367     libav) av_codec_ver="57.16.0" ;;
2368     dnl 05f66706d182eb0c36af54d72614bf4c33e957a9  includes libavutil 55.9.0
2369     ffmpeg) av_codec_ver="57.37.100" ;;
2370     dnl 7fc329e2dd6226dfecaa4a1d7adf353bf2773726  include libavutil 55.22.101
2371     *) AC_MSG_ERROR([Missing libav or FFmpeg. Pass --disable-avcodec to ignore this error.])
2372   esac
2373   PKG_CHECK_MODULES(AVCODEC,[libavcodec >= ${av_codec_ver} libavutil >= 55.9.0], [
2374     VLC_SAVE_FLAGS
2375     CPPFLAGS="${CPPFLAGS} ${AVCODEC_CFLAGS}"
2376     CFLAGS="${CFLAGS} ${AVCODEC_CFLAGS}"
2377     AC_CHECK_HEADERS([libavcodec/avcodec.h])
2378     AC_CHECK_HEADERS([libavutil/avutil.h])
2379     VLC_RESTORE_FLAGS
2380     have_avcodec="yes"
2381   ],[
2382     AC_MSG_ERROR([${AVCODEC_PKG_ERRORS}. Pass --disable-avcodec to ignore this error.])
2383   ])
2384 ], [
2385   have_avcodec="no"
2387 AM_CONDITIONAL([HAVE_AVCODEC], [test "${have_avcodec}" != "no"])
2390 dnl libva needs avcodec
2392 AC_ARG_ENABLE([libva],
2393   AS_HELP_STRING([--enable-libva], [VAAPI GPU decoding support (libVA) (default auto)]))
2395 AS_IF([test "${enable_libva}" = "yes" -a "${have_avcodec}" != "yes" ], [
2396   AC_MSG_ERROR([--enable-libva and --disable-avcodec options are mutually exclusive. Use --enable-avcodec.])
2399 have_vaapi="no"
2400 have_vaapi_drm="no"
2401 have_vaapi_x11="no"
2402 have_vaapi_wl="no"
2403 AS_IF([test "${enable_libva}" != "no"], [
2404   PKG_CHECK_MODULES([LIBVA], [libva >= 0.38], [
2405     have_vaapi="yes"
2406   ], [
2407     AS_IF([test -n "${enable_libva}"], [
2408       AC_MSG_ERROR([${LIBVA_PKG_ERRORS}.])
2409     ], [
2410       AC_MSG_WARN([${LIBVA_PKG_ERRORS}.])
2411     ])
2412   ])
2413   PKG_CHECK_MODULES([LIBVA_DRM], [libva-drm], [
2414     have_vaapi_drm="yes"
2415   ], [
2416     AC_MSG_WARN([${LIBVA_DRM_PKG_ERRORS}.])
2417   ])
2418   PKG_CHECK_MODULES(LIBVA_X11, [libva-x11], [
2419     have_vaapi_x11="yes"
2420   ], [
2421     AC_MSG_WARN([${LIBVA_X11_PKG_ERRORS}.])
2422   ])
2423   PKG_CHECK_MODULES(LIBVA_WL, [libva-wayland], [
2424     have_vaapi_wl="yes"
2425   ], [
2426     AC_MSG_WARN([${LIBVA_WL_PKG_ERRORS}.])
2427   ])
2429 AM_CONDITIONAL([HAVE_VAAPI], [test "${have_vaapi}" = "yes"])
2430 AM_CONDITIONAL([HAVE_VAAPI_DRM], [test "${have_vaapi_drm}" = "yes"])
2431 AM_CONDITIONAL([HAVE_VAAPI_X11], [test "${have_vaapi_x11}" = "yes"])
2432 AM_CONDITIONAL([HAVE_VAAPI_WL], [test "${have_vaapi_wl}" = "yes"])
2434 have_avcodec_vaapi="no"
2435 AS_IF([test "${have_vaapi}" = "yes" -a "${have_avcodec}" = "yes"], [
2436   VLC_SAVE_FLAGS
2437   CPPFLAGS="${CPPFLAGS} ${AVCODEC_CFLAGS}"
2438   CFLAGS="${CFLAGS} ${AVCODEC_CFLAGS}"
2439   AC_CHECK_HEADERS([libavcodec/vaapi.h], [
2440     AC_MSG_NOTICE([VA API acceleration activated])
2441     have_avcodec_vaapi="yes"
2442   ],[
2443     AS_IF([test -n "${enable_libva}"], [
2444       AC_MSG_ERROR([libva is present but libavcodec/vaapi.h is missing])
2445     ], [
2446       AC_MSG_WARN([libva is present but libavcodec/vaapi.h is missing ])
2447     ])
2448   ])
2449   VLC_RESTORE_FLAGS
2451 AM_CONDITIONAL([HAVE_AVCODEC_VAAPI], [test "${have_avcodec_vaapi}" = "yes"])
2454 dnl dxva2 needs avcodec
2456 AC_ARG_ENABLE([dxva2],
2457   AS_HELP_STRING([--enable-dxva2], [DxVA2 GPU decoding support (default auto)]))
2459 have_avcodec_dxva2="no"
2460 AS_IF([test "${enable_dxva2}" != "no"], [
2461   if test "${SYS}" = "mingw32"; then
2462   AS_IF([test "x${have_avcodec}" = "xyes"], [
2463     AC_CHECK_HEADERS([dxva2api.h],
2464       [
2465         AC_CHECK_HEADERS([libavcodec/dxva2.h], [
2466            AC_MSG_NOTICE([DxVA2 acceleration activated])
2467            have_avcodec_dxva2="yes"
2468         ],[
2469     AS_IF([test "${enable_dxva2}" = "yes"],
2470           [AC_MSG_ERROR([dxva2 is present but libavcodec/dxva2.h is missing])],
2471               [AC_MSG_WARN([dxva2 is present but libavcodec/dxva2.h is missing ])])
2472         ], [#undef _WIN32_WINNT
2473             /* DXVA2 is only available in Vista and above */
2474             #define _WIN32_WINNT 0x600])
2475       ],[
2476     AS_IF([test "${enable_dxva2}" = "yes"],
2477               [AC_MSG_ERROR([Could not find required dxva2api.h])],
2478               [AC_MSG_WARN([dxva2api.h not found])])
2479       ],[#include <d3d9.h>])
2480   ],[
2481     AS_IF([test "x${enable_dxva2}" != "x"], [
2482       AC_MSG_ERROR([--enable-dxva2 and --disable-avcodec options are mutually exclusive.])
2483     ])
2484   ])
2485   fi
2487 AM_CONDITIONAL([HAVE_AVCODEC_DXVA2], [test "${have_avcodec_dxva2}" = "yes"])
2490 dnl d3d11va needs avcodec
2492 AC_ARG_ENABLE([d3d11va],
2493   AS_HELP_STRING([--enable-d3d11va], [D3D11 GPU decoding support (default auto)]))
2495 have_avcodec_d3d11va="no"
2496 AS_IF([test "${enable_d3d11va}" != "no"], [
2497   if test "${SYS}" = "mingw32"; then
2498   AS_IF([test "x${have_avcodec}" = "xyes"], [
2499         AC_CHECK_TYPES([ID3D11VideoDecoder],
2500           [
2501             AC_CHECK_HEADERS([dxva2api.h],
2502               [
2503                 AC_CHECK_HEADERS([libavcodec/d3d11va.h], [
2504                    AC_MSG_NOTICE([D3D11 acceleration activated])
2505                    AC_DEFINE([HAVE_AVCODEC_D3D11VA], [1], [Define if the d3d11va module is built])
2506                    have_avcodec_d3d11va="yes"
2507                 ],[
2508                   AS_IF([test "${enable_d3d11va}" = "yes"],
2509                     [AC_MSG_ERROR([d3d11va is present but libavcodec/d3d11va.h is missing])],
2510                         [AC_MSG_WARN([d3d11va is present but libavcodec/d3d11va.h is missing ])])
2511                   ], [#undef _WIN32_WINNT
2512                       /* D3D11 is only available in Vista and above */
2513                       #define _WIN32_WINNT 0x600])
2514                   ],[
2515                     AS_IF([test "${enable_d3d11va}" = "yes"],
2516                           [AC_MSG_ERROR([Could not find required dxva2api.h])],
2517                           [AC_MSG_WARN([dxva2api.h not found])])
2518                   ],[#include <d3d9.h>])
2519           ],[
2520             AS_IF([test "${enable_d3d11va}" = "yes"],
2521                   [AC_MSG_ERROR([Could not find required ID3D11VideoDecoder in d3d11.h])],
2522                   [AC_MSG_WARN([ID3D11VideoDecoder not found])])
2523           ], [#include <d3d11.h>])
2524   ],[
2525     AS_IF([test "x${enable_d3d11va}" != "x"], [
2526       AC_MSG_ERROR([--enable-d3d11va and --disable-avcodec options are mutually exclusive.])
2527     ])
2528   ])
2529   fi
2531 AM_CONDITIONAL([HAVE_AVCODEC_D3D11VA], [test "${have_avcodec_d3d11va}" = "yes"])
2534 dnl DXGI debug
2536 AC_CHECK_HEADERS([dxgidebug.h dxgi1_6.h])
2539 dnl  avformat demuxer/muxer plugin
2542 AC_ARG_ENABLE([avformat],
2543 AS_HELP_STRING([--enable-avformat], [libavformat containers (default enabled)]),, [
2544   enable_avformat="${have_avcodec}"
2546 have_avformat="no"
2547 AS_IF([test "${enable_avformat}" != "no"], [
2548   PKG_CHECK_MODULES(AVFORMAT,[libavformat >= 53.21.0 libavcodec libavutil], [
2549       have_avformat="yes"
2550       VLC_SAVE_FLAGS
2551       CPPFLAGS="${CPPFLAGS} ${AVFORMAT_CFLAGS}"
2552       CFLAGS="${CFLAGS} ${AVFORMAT_CFLAGS}"
2553       AC_CHECK_HEADERS([libavformat/avformat.h libavformat/avio.h])
2554       AC_CHECK_HEADERS([libavcodec/avcodec.h])
2555       AC_CHECK_HEADERS([libavutil/avutil.h])
2556       AS_IF([test "$enable_merge_ffmpeg" = "no"], [
2557         have_avformat="no"
2558       ])
2559       VLC_RESTORE_FLAGS
2560     ],[
2561       AC_MSG_ERROR([${AVFORMAT_PKG_ERRORS}. Pass --disable-avformat to ignore this error.])
2562   ])
2564 AM_CONDITIONAL([HAVE_AVFORMAT], [test "${enable_avformat}" != "no"])
2567 dnl  swscale image scaling and conversion plugin
2570 AC_ARG_ENABLE([swscale],
2571   AS_HELP_STRING([--enable-swscale],[libswscale image scaling and conversion
2572           (default enabled)]))
2573 if test "${enable_swscale}" != "no"
2574 then
2575   PKG_CHECK_MODULES(SWSCALE,[libswscale],
2576     [
2577       VLC_SAVE_FLAGS
2578       CPPFLAGS="${CPPFLAGS} ${SWSCALE_CFLAGS}"
2579       CFLAGS="${CFLAGS} ${SWSCALE_CFLAGS}"
2580       AC_CHECK_HEADERS([libswscale/swscale.h])
2581       AC_CHECK_HEADERS([libavutil/avutil.h])
2582       VLC_ADD_PLUGIN([swscale])
2583       VLC_ADD_LIBS([swscale],[$SWSCALE_LIBS])
2584       VLC_ADD_CFLAGS([swscale],[$SWSCALE_CFLAGS])
2585       AS_IF([test -n "${ac_cv_ld_bsymbolic}"], [
2586         VLC_ADD_LIBS([swscale],[${ac_cv_ld_bsymbolic}])
2587       ])
2588       VLC_RESTORE_FLAGS
2589     ],[
2590       AC_MSG_ERROR([${SWSCALE_PKG_ERRORS}. Pass --disable-swscale to ignore this error. Proper software scaling and some video chroma conversion will be missing.])
2591   ])
2595 dnl  postproc plugin
2598 AC_ARG_ENABLE([postproc],
2599 AS_HELP_STRING([--enable-postproc], [libpostproc image post-processing (default auto)]))
2600 if test "${enable_postproc}" != "no"
2601 then
2602   PKG_CHECK_MODULES(POSTPROC,[libpostproc libavutil],
2603     [
2604       VLC_SAVE_FLAGS
2605       CPPFLAGS="${CPPFLAGS} ${POSTPROC_CFLAGS}"
2606       CFLAGS="${CFLAGS} ${POSTPROC_CFLAGS}"
2607       AC_CHECK_HEADERS([postproc/postprocess.h])
2608       VLC_ADD_PLUGIN([postproc])
2609       VLC_RESTORE_FLAGS
2610     ],[
2611       AC_MSG_WARN([${POSTPROC_PKG_ERRORS}.])
2612   ])
2616 dnl  faad decoder plugin
2618 AC_ARG_ENABLE([faad],
2619 AS_HELP_STRING([--enable-faad], [faad codec (default auto)]))
2620 have_faad="no"
2621 AS_IF([test "${enable_faad}" != "no"], [
2622   AC_CHECK_HEADERS([neaacdec.h], [
2623     AC_CHECK_LIB([faad], [NeAACDecOpen], [have_faad="yes"],, [$LIBM])
2625     AS_IF([test "${have_faad}" = "yes"], [
2626       VLC_ADD_PLUGIN([faad])
2627       VLC_ADD_LIBS([faad],[-lfaad])
2628     ], [
2629       AS_IF([test "${enable_faad}" = "yes"], [
2630         AC_MSG_ERROR([cannot find FAAD library])
2631       ], [
2632         AC_MSG_WARN([cannot find FAAD library])
2633       ])
2634     ])
2635   ])
2639 dnl  AOM decoder plugin
2641 PKG_ENABLE_MODULES_VLC([AOM], [], [aom], [experimental AV1 codec (default auto)])
2644 dnl  Dav1d decoder plugin
2646 PKG_ENABLE_MODULES_VLC([DAV1D], [], [dav1d], [AV1 decoder (default auto)])
2649 dnl libvpx decoder plugin
2651 AC_ARG_ENABLE([vpx],
2652     AS_HELP_STRING([--enable-vpx],[libvpx VP8/VP9 encoder and decoder (default auto)]))
2653 AS_IF([test "${enable_vpx}" != "no"],[
2654     PKG_CHECK_MODULES([VPX], [vpx >= 1.5.0], [
2655         VLC_ADD_PLUGIN([vpx])
2656         VLC_ADD_CPPFLAGS([vpx], [${VPX_CFLAGS}])
2657         VLC_ADD_LIBS([vpx], [${VPX_LIBS}])
2658         AC_CHECK_LIB([vpx],[vpx_codec_vp8_dx], [
2659             VLC_ADD_CPPFLAGS([vpx], [-DENABLE_VP8_DECODER])
2660         ], [], [${VPX_LIBS}])
2661         AC_CHECK_LIB([vpx],[vpx_codec_vp9_dx], [
2662             VLC_ADD_CPPFLAGS([vpx], [-DENABLE_VP9_DECODER])
2663         ], [], [${VPX_LIBS}])
2664         AC_CHECK_LIB([vpx],[vpx_codec_vp8_cx], [
2665             VLC_ADD_CPPFLAGS([vpx], [-DENABLE_VP8_ENCODER])
2666         ], [], [${VPX_LIBS}])
2667         AC_CHECK_LIB([vpx],[vpx_codec_vp9_cx], [
2668             VLC_ADD_CPPFLAGS([vpx], [-DENABLE_VP9_ENCODER])
2669         ], [], [${VPX_LIBS}])
2670     ], [
2671     AS_IF([test "${enable_vpx}" = "yes"],[
2672         AC_MSG_ERROR([libvpx 1.5.0 or higher was not found])
2673     ])])
2677 dnl twolame encoder plugin
2679 PKG_ENABLE_MODULES_VLC([TWOLAME], [], [twolame], [MPEG Audio Layer 2 encoder], [auto], [], [], [ -DLIBTWOLAME_STATIC])
2682 dnl fdk-aac encoder plugin
2684 PKG_ENABLE_MODULES_VLC([FDKAAC], [], [fdk-aac], [FDK-AAC encoder], [disabled])
2688 dnl A52/AC3 decoder plugin
2690 AC_ARG_ENABLE([a52],
2691   AS_HELP_STRING([--enable-a52], [A/52 support with liba52 (default enabled)]))
2692 if test "${enable_a52}" != "no"
2693 then
2694   AC_ARG_WITH([a52],
2695     AS_HELP_STRING([--with-a52=PATH], [a52 headers and libraries]))
2696     if test -z "${with_a52}"
2697     then
2698       LDFLAGS_test=""
2699       CPPFLAGS_test=""
2700     else
2701       LDFLAGS_test="-L${with_a52}/lib"
2702       CPPFLAGS_test="-I${with_a52}/include"
2703     fi
2704     VLC_SAVE_FLAGS
2705     CPPFLAGS="${CPPFLAGS} ${CPPFLAGS_test} ${CPPFLAGS_a52}"
2706     LDFLAGS="${LDFLAGS} ${LDFLAGS_test} ${LIBS_a52}"
2707     AC_CHECK_HEADERS([a52dec/a52.h], [
2708       AC_CHECK_LIB([a52], [a52_free], [
2709         VLC_ADD_PLUGIN([a52])
2710         VLC_ADD_LIBS([a52],[${LDFLAGS_test} -la52 $LIBM])
2711         VLC_ADD_CPPFLAGS([a52],[${CPPFLAGS_test}])
2712       ],[
2713         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.])
2714         ], [$LIBM])
2715     ],[
2716       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.])
2717     ])
2718     VLC_RESTORE_FLAGS
2722 dnl DTS Coherent Acoustics decoder plugin
2724 PKG_ENABLE_MODULES_VLC([DCA], [dca], [libdca >= 0.0.5], [DTS Coherent Acoustics support with libdca], [auto])
2727 dnl  Flac plugin
2729 PKG_ENABLE_MODULES_VLC([FLAC], [], [flac], [libflac decoder/encoder support], [auto])
2732 dnl  Libmpeg2 plugin
2734 PKG_ENABLE_MODULES_VLC([LIBMPEG2], [], [libmpeg2 > 0.3.2], [libmpeg2 decoder support], [auto])
2737 dnl  Vorbis plugin
2739 PKG_ENABLE_MODULES_VLC([VORBIS], [], [ogg vorbis >= 1.1 vorbisenc >= 1.1], [Vorbis decoder and encoder], [auto])
2742 dnl  Tremor plugin
2744 AC_ARG_ENABLE([tremor],
2745   AS_HELP_STRING([--enable-tremor], [Tremor decoder support (default disabled)]))
2746 if test "${enable_tremor}" = "yes"
2747 then
2748   AC_CHECK_HEADERS([tremor/ivorbiscodec.h], [
2749     VLC_ADD_PLUGIN([tremor])
2750    ],[])
2754 dnl  Speex plugins
2756 PKG_ENABLE_MODULES_VLC([SPEEX], [], [ogg speex >= 1.0.5], [Speex support], [auto])
2757 have_speexdsp="no"
2758 AS_IF([test "${enable_speex}" != "no"], [
2759   PKG_CHECK_MODULES([SPEEXDSP], [speexdsp], [
2760     have_speexdsp="yes"
2761   ], [
2762     AC_MSG_WARN([${SPEEXDSP_PKG_ERRORS}.])
2763   ])
2765 AM_CONDITIONAL([HAVE_SPEEXDSP], [test "$have_speexdsp" = "yes"])
2768 dnl  Opus plugin
2770 PKG_ENABLE_MODULES_VLC([OPUS], [], [ogg opus >= 1.0.3], [Opus support], [auto])
2773 dnl  Ambisonic channel mixer and binauralizer plugin
2775 PKG_ENABLE_MODULES_VLC([SPATIALAUDIO], [], [spatialaudio], [Ambisonic channel mixer and binauralizer], [auto])
2778 dnl  theora decoder plugin
2780 PKG_ENABLE_MODULES_VLC([THEORA], [], [ogg theoradec >= 1.0 theoraenc], [experimental theora codec], [auto])
2783 dnl  OggSpots decoder plugin
2785 PKG_ENABLE_MODULES_VLC([OGGSPOTS], [], [ogg], [experimental OggSpots codec], [auto])
2788 dnl  Daala decoder plugin
2790 PKG_ENABLE_MODULES_VLC([DAALA], [], [daaladec daalaenc], [experimental daala codec], [disabled])
2793 dnl  schroedinger decoder plugin (for dirac format video)
2795 PKG_ENABLE_MODULES_VLC([SCHROEDINGER], [], [schroedinger-1.0 >= 1.0.10], [dirac decoder and encoder using schroedinger], [auto])
2798 dnl  PNG decoder module
2800 AC_ARG_ENABLE([png],
2801   AS_HELP_STRING([--enable-png], [PNG support (default enabled)]))
2802 AS_IF([test "${enable_png}" != "no"], [
2803 AC_CHECK_HEADERS([png.h], [
2804   VLC_SAVE_FLAGS
2805   LDFLAGS="${LDFLAGS} -lz $LIBM"
2806   AC_CHECK_LIB([png], [png_set_alpha_mode], [
2807     VLC_ADD_PLUGIN([png])
2808   ], [], [-lz $LIBM])
2809   VLC_RESTORE_FLAGS
2810   ])
2814 dnl  JPEG decoder module
2816 AC_ARG_ENABLE([jpeg],
2817   AS_HELP_STRING([--enable-jpeg], [JPEG support (default enabled)]))
2818 AS_IF([test "${enable_jpeg}" != "no"], [
2819 AC_CHECK_HEADERS([jpeglib.h], [
2820   VLC_ADD_PLUGIN([jpeg])
2821   ])
2825 dnl  BPG decoder module
2827 AC_ARG_ENABLE([bpg],
2828   AS_HELP_STRING([--enable-bpg], [BPG support (default disabled)]))
2829 AS_IF([test "${enable_bpg}" != "no"], [
2830 AC_CHECK_HEADERS([libbpg.h], [
2831   VLC_ADD_PLUGIN([bpg])
2832   ])
2836 dnl H262 encoder plugin (lib262)
2838 AC_ARG_ENABLE([x262],
2839   AS_HELP_STRING([--enable-x262], [H262 encoding support with static libx262 (default disabled)]))
2840 if test "${enable_x262}" != "no"; then
2841     PKG_CHECK_MODULES(X262, x262, [
2842         VLC_ADD_PLUGIN([x262])
2843         VLC_ADD_LDFLAGS([x262],[${X262_LIBS}])
2844         AS_IF([test -n "${ac_cv_ld_bsymbolic}"], [
2845           VLC_ADD_LIBS([x262],[${av_cv_ld_bsymbolic}])
2846         ])
2847         VLC_ADD_CFLAGS([x262],[${X262_CFLAGS}])
2848         if echo ${X262_LIBS} |grep -q 'pthreadGC2'; then
2849           VLC_ADD_CFLAGS([x262], [-DPTW32_STATIC_LIB])
2850         fi
2851     ], [
2852        if test "${enable_x262}" = "yes"; then
2853         AC_MSG_ERROR([x262 module doesn't work without staticly compiled libx262.a])
2854        fi
2855     ])
2858 dnl x265 encoder
2859 PKG_ENABLE_MODULES_VLC([X265],, [x265], [HEVC/H.265 encoder], [auto])
2862 dnl H264 encoder plugin (using libx264)
2864 AC_ARG_ENABLE([x264],
2865   AS_HELP_STRING([--enable-x264], [H264 encoding support with libx264 (default enabled)]))
2866 if test "${enable_x264}" != "no"; then
2867       PKG_CHECK_MODULES(X264,x264 >= 0.148, [
2868         VLC_ADD_PLUGIN([x264])
2869         VLC_ADD_LIBS([x264],[${X264_LIBS}])
2871         AS_IF([test -n "${ac_cv_ld_bsymbolic}"], [
2872           VLC_ADD_LDFLAGS([x264],[${ac_cv_ld_bsymbolic}])
2873         ])
2875         VLC_ADD_CFLAGS([x264],[${X264_CFLAGS}])
2876         if echo ${X264_LIBS} |grep -q 'pthreadGC2'; then
2877           VLC_ADD_CFLAGS([x264], [-DPTW32_STATIC_LIB])
2878         fi
2879       ],[
2880         if test "${enable_x264}" = "yes"; then
2881             AC_MSG_ERROR([${X264_PKG_ERRORS}: you may get it from http://www.videolan.org/x264.html])
2882           fi
2883       ])
2887 dnl H264 encoder plugin (libx264 > 153)
2889 AC_ARG_ENABLE([x26410b],
2890   AS_HELP_STRING([--enable-x26410b], [H264 10-bit encoding support with libx264 (default enabled)]))
2891 if test "${enable_x26410b}" != "no"; then
2892       PKG_CHECK_MODULES(X26410b,x264 >= 0.153, [
2893         VLC_ADD_PLUGIN([x26410b])
2894         VLC_ADD_LIBS([x26410b],[${X264_LIBS}])
2896         AS_IF([test -n "${ac_cv_ld_bsymbolic}"], [
2897           VLC_ADD_LDFLAGS([x26410b],[${ac_cv_ld_bsymbolic}])
2898         ])
2900         VLC_ADD_CFLAGS([x26410b],[${X264_CFLAGS}])
2901         if echo ${X264_LIBS} |grep -q 'pthreadGC2'; then
2902           VLC_ADD_CFLAGS([x26410b], [-DPTW32_STATIC_LIB])
2903         fi
2904       ],[
2905         if test "${enable_x26410b}" = "yes"; then
2906             AC_MSG_ERROR([${X264_PKG_ERRORS}: you may get it from http://www.videolan.org/x264.html])
2907           fi
2908       ])
2913 dnl Intel QuickSync (aka MediaSDK) H264/H262 encoder
2915 PKG_ENABLE_MODULES_VLC([MFX], [qsv], [libmfx], [Intel QuickSync MPEG4-Part10/MPEG2 (aka H.264/H.262) encoder], [auto])
2918 dnl libfluidsynth (MIDI synthetizer) plugin
2920 PKG_ENABLE_MODULES_VLC([FLUIDSYNTH], [], [fluidsynth >= 1.1.2], [MIDI synthetiser with libfluidsynth], [auto])
2921 PKG_ENABLE_MODULES_VLC([FLUIDLITE], [fluidsynth], [fluidlite], [MIDI synthetiser with libfluidsynth], [auto])
2922 AC_CHECK_HEADERS([fluidlite.h], [AC_SUBST([FLUIDSYNTH_LIBS], ${FLUIDLITE_LIBS})])
2925 dnl Teletext Modules
2926 dnl vbi decoder plugin (using libzbvi)
2927 dnl telx module
2928 dnl uncompatible
2930 AC_ARG_ENABLE([zvbi],
2931   AS_HELP_STRING([--enable-zvbi],[VBI (inc. Teletext) decoding support with
2932                   libzvbi (default enabled)]))
2933 AC_ARG_ENABLE([telx],
2934   AS_HELP_STRING([--enable-telx],[Teletext decoding module (conflicting with
2935                   zvbi) (default enabled if zvbi is absent)]))
2937 AS_IF( [test "${enable_zvbi}" != "no"],[
2938     PKG_CHECK_MODULES(ZVBI, [zvbi-0.2 >= 0.2.28],
2939         [
2940           VLC_ADD_PLUGIN([zvbi])
2941           AC_DEFINE(ZVBI_COMPILED, 1, [Define if the zvbi module is built])
2942           AS_IF( [test "${enable_telx}" = "yes"],[
2943                   AC_MSG_WARN([The zvbi and telx modules are incompatible. Using zvbi.])
2944                   ])
2945         ],[
2946           AC_MSG_WARN([${ZVBI_PKG_ERRORS}. Enabling the telx module instead.])
2947         ])
2948     ])
2949 AS_IF( [test "${enable_telx}" != "no" ],[
2950   VLC_ADD_PLUGIN([telx])
2951   ])
2954 dnl ARIB subtitles rendering module
2956 AC_ARG_ENABLE([aribsub],
2957   AS_HELP_STRING([--enable-aribsub],[ARIB Subtitles support (default enabled)]))
2958 AS_IF( [test "${enable_aribsub}" != "no" ],[
2959   PKG_CHECK_MODULES(ARIBB24, [aribb24 >= 1.0.1], [
2960       have_aribb24="yes"
2961       VLC_ADD_PLUGIN([aribsub])
2962       VLC_ADD_LIBS([aribsub],[-laribb24])
2963       AC_DEFINE(HAVE_ARIBB24, 1, [Define if libaribb24 is available.])
2964     ],[
2965       AC_MSG_WARN(Library [aribb24] needed for [aribsub] was not found)
2966       have_aribb24="no"
2967   ])
2969 AM_CONDITIONAL([HAVE_ARIBB24], [test x"${have_aribb24}" = x"yes"])
2972 dnl ARIB B25
2974 PKG_ENABLE_MODULES_VLC([ARIBB25], [aribcam], [aribb25 >= 0.2.6], [ARIB STD-B25], [auto])
2977 dnl  kate decoder plugin
2979 PKG_ENABLE_MODULES_VLC([KATE], [], [kate >= 0.3.0], [kate codec], [auto])
2982 dnl  tiger rendering for kate decoder plugin
2984 AC_ARG_ENABLE([tiger],
2985 AS_HELP_STRING([--enable-tiger], [Tiger rendering library for Kate streams (default auto)]))
2986 AS_IF([test "${enable_tiger}" != "no"], [
2987   PKG_CHECK_MODULES(TIGER,[tiger >= 0.3.1], [
2988       AC_DEFINE(HAVE_TIGER, 1, [Define if libtiger is available.])],[
2989         AS_IF([test -n "${enable_tiger}"], [
2990           AC_MSG_ERROR([${TIGER_PKG_ERRORS}.])
2991         ])
2992   ])
2996 dnl  check if we can build the css selector engine
2998 AC_ARG_ENABLE([css],
2999 AS_HELP_STRING([--enable-css], [CSS selector engine (default auto)]))
3000 AS_IF([test "${enable_css}" != "no"], [
3001   with_css="yes"
3002   AC_DEFINE(HAVE_CSS, 1, [Define if CSS engine is built])
3004 AM_CONDITIONAL([ENABLE_CSS], [test "${with_css}" = "yes"])
3008 dnl  Video plugins
3011 EXTEND_HELP_STRING([Video plugins:])
3014 dnl  libplacebo support
3016 AC_ARG_ENABLE([libplacebo],
3017   AS_HELP_STRING([--disable-libplacebo],
3018       [disable libplacebo support (default auto)]))
3020 AS_IF([test "$enable_libplacebo" != "no"], [
3021   PKG_CHECK_MODULES([LIBPLACEBO], [libplacebo >= 0.5], [
3022     AC_DEFINE([HAVE_LIBPLACEBO], [1], [Define to 1 if libplacebo is enabled.])
3023     PKG_CHECK_MODULES([LIBPLACEBO], [libplacebo >= 1.7],
3024       [have_libplacebo_vk="yes"], [have_libplacebo_vk="no"])
3025   ], [
3026     AS_IF([test -n "${enable_libplacebo}"], [
3027       AC_MSG_ERROR([${LIBPLACEBO_PKG_ERRORS}.])
3028     ])
3029     enable_libplacebo="no"
3030   ])
3032 AM_CONDITIONAL([HAVE_LIBPLACEBO], [test "$enable_libplacebo" != "no"])
3035 dnl  OpenGL
3037 PKG_CHECK_MODULES([EGL], [egl], [
3038   have_egl="yes"
3039 ], [
3040   have_egl="no"
3042 AM_CONDITIONAL([HAVE_EGL], [test "${have_egl}" = "yes"])
3044 have_gl="no"
3045 PKG_CHECK_MODULES([GL], [gl], [
3046   have_gl="yes"
3047 ], [
3048   AC_MSG_CHECKING([for OpenGL])
3049   AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
3050 #ifdef _WIN32
3051 # include <GL/glew.h>
3052 #endif
3053 #include <GL/gl.h>
3054 ]], [
3055     [int t0 = GL_TEXTURE0;]])
3056   ], [
3057     GL_CFLAGS=""
3058     have_gl="yes"
3059     AS_IF([test "${SYS}" != "mingw32"], [
3060       GL_LIBS="-lGL"
3061     ], [
3062       GL_LIBS="-lopengl32"
3063     ])
3064   ])
3065   AC_MSG_RESULT([${have_gl}])
3067 AM_CONDITIONAL([HAVE_GL], [test "${have_gl}" = "yes"])
3068 AS_IF([test "${have_gl}" = "yes"], [
3069   AC_DEFINE([HAVE_GL], 1, [Defined if having OpenGL])
3072 dnl OpenGL ES 2: depends on EGL 1.1
3073 PKG_ENABLE_MODULES_VLC([GLES2], [], [glesv2], [OpenGL ES v2 support], [disabled])
3076 dnl Vulkan
3078 AC_ARG_ENABLE(vulkan,
3079   [AS_HELP_STRING([--disable-vulkan],
3080       [disable Vulkan support (default auto)])])
3082 AS_IF([test "$enable_vulkan" != "no"], [
3083   AS_IF([test "$have_libplacebo_vk" = "yes"], [
3084     PKG_CHECK_MODULES([VULKAN], [vulkan >= 1.0.26], [
3085       AC_DEFINE([HAVE_VULKAN], [1], [Define to 1 if vulkan is enabled.])
3086     ], [
3087       AS_IF([test -n "${enable_vulkan}"], [
3088         AC_MSG_ERROR([${VULKAN_PKG_ERRORS}.])
3089       ])
3090       enable_vulkan="no"
3091     ])
3092   ], [
3093     AS_IF([test -n "${enable_vulkan}"], [
3094       AC_MSG_ERROR([Vulkan support requires libplacebo 1.7 as well. Do not use --disable-libplacebo.])
3095     ])
3096     enable_vulkan="no"
3097   ])
3099 AM_CONDITIONAL(HAVE_VULKAN, [test "$enable_vulkan" != "no"])
3102 dnl  Xlib
3105 AC_PATH_XTRA()
3106 AC_CHECK_HEADERS([X11/Xlib.h])
3109 dnl  X C Bindings modules
3111 AC_ARG_ENABLE([xcb],
3112   AS_HELP_STRING([--enable-xcb], [X11 support with XCB (default enabled)]),, [
3113   AS_IF([test "${SYS}" != "mingw32" -a "${SYS}" != "darwin"], [
3114     enable_xcb="yes"
3115   ], [
3116     enable_xcb="no"
3117   ])
3120 have_xcb="no"
3121 have_xkbcommon_x11="no"
3122 have_xcb_keysyms="no"
3123 AS_IF([test "${enable_xcb}" != "no"], [
3124   xcb_err=""
3126   dnl libxcb
3127   PKG_CHECK_MODULES([XCB], [xcb >= 1.6],, [
3128     xcb_err="$xcb_err ${XCB_PKG_ERRORS}."])
3129   PKG_CHECK_MODULES([XCB_COMPOSITE], [xcb-composite],, [
3130     xcb_err="$xcb_err ${XCB_COMPOSITE_PKG_ERRORS}."])
3131   PKG_CHECK_MODULES([XCB_RANDR], [xcb-randr >= 1.3],, [
3132     xcb_err="$xcb_err ${XCB_RANDR_PKG_ERRORS}."])
3133   PKG_CHECK_MODULES([XCB_RENDER], [xcb-render],, [
3134     xcb_err="$xcb_err ${XCB_RENDER_PKG_ERRORS}."])
3135   PKG_CHECK_MODULES([XCB_SHM], [xcb-shm >= 1.9.2],, [
3136     xcb_err="$xcb_err ${XCB_SHM_PKG_ERRORS}."])
3137   PKG_CHECK_MODULES([XCB_XKB], [xcb-xkb],, [
3138     xcb_err="$xcb_err ${XCB_XKB_PKG_ERRORS}."])
3139   PKG_CHECK_MODULES([XCB_XV], [xcb-xv >= 1.1.90.1],, [
3140     xcb_err="$xcb_err ${XCB_XV_PKG_ERRORS}."])
3142   dnl xproto
3143   PKG_CHECK_MODULES(XPROTO, [xproto],, [
3144     xcb_err="$xcb_err ${XPROTO_PKG_ERRORS}."])
3146   AS_IF([test -n "$xcb_err"], [
3147     AC_MSG_ERROR([$xcb_err Pass --disable-xcb to skip X11 support.])
3148   ])
3150   dnl xkbcommon
3151   PKG_CHECK_MODULES([XKBCOMMON_X11], [xkbcommon-x11], [
3152     have_xkbcommon_x11="yes"
3153   ], [
3154     AC_MSG_WARN([${XKBCOMMON_X11_PKG_ERRORS}. Hotkeys are disabled.])
3155   ])
3157   dnl xcb-utils
3158   PKG_CHECK_MODULES([XCB_KEYSYMS], [xcb-keysyms >= 0.3.4], [
3159     have_xcb_keysyms="yes"
3160   ], [
3161     AC_MSG_WARN([${XCB_KEYSYMS_PKG_ERRORS}. Global hotkeys are disabled.])
3162   ])
3164   have_xcb="yes"
3166 AM_CONDITIONAL([HAVE_XCB], [test "${have_xcb}" = "yes"])
3167 AM_CONDITIONAL([HAVE_XKBCOMMON_X11], [test "${have_xkbcommon_x11}" = "yes"])
3168 AM_CONDITIONAL([HAVE_XCB_KEYSYMS], [test "${have_xcb_keysyms}" = "yes"])
3172 dnl VDPAU needs X11
3174 AC_ARG_ENABLE([vdpau],
3175   [AS_HELP_STRING([--enable-vdpau], [VDPAU hardware support (default auto)])])
3176 have_vdpau="no"
3177 AS_IF([test "${enable_vdpau}" != "no"], [
3178   PKG_CHECK_MODULES([VDPAU], [vdpau >= 0.6], [
3179     have_vdpau="yes"
3180     AS_IF([test "${no_x}" = "yes"], [
3181       AC_MSG_ERROR([VDPAU requires Xlib (X11).])
3182     ])
3183   ], [
3184     AS_IF([test -n "${enable_vdpau}"], [
3185       AC_MSG_ERROR([${VDPAU_PKG_ERRORS}.])
3186     ])
3187   ])
3189 AM_CONDITIONAL([HAVE_VDPAU], [test "${have_vdpau}" = "yes"])
3191 have_avcodec_vdpau="no"
3192 AS_IF([test "${have_vdpau}" = "yes" -a "${have_avcodec}" = "yes"], [
3193   case "${avfork}" in
3194     libav) av_vdpau_ver="56.10.0" ;;
3195     ffmpeg) av_vdpau_ver="56.19.100" ;;
3196   esac
3197   PKG_CHECK_EXISTS([libavcodec >= ${av_vdpau_ver}], [
3198     have_avcodec_vdpau="yes"
3199     AC_MSG_NOTICE([VDPAU decoding acceleration activated])
3200   ], [
3201     AS_IF([test -n "${enable_vdpau}"], [
3202       AC_MSG_ERROR([libavcodec >= 56.10.0 is required for VDPAU decoding.])
3203     ], [
3204       AC_MSG_WARN([libavcodec >= 56.10.0 are required for VDPAU decoding.])
3205     ])
3206   ])
3208 AM_CONDITIONAL([HAVE_AVCODEC_VDPAU], [test "${have_avcodec_vdpau}" = "yes"])
3212 dnl  Wayland
3214 AC_ARG_ENABLE([wayland],
3215   AS_HELP_STRING([--enable-wayland], [Wayland support (default auto)]))
3217 have_wayland="no"
3218 AS_IF([test "${enable_wayland}" != "no"], [
3219   wl_err=""
3221   dnl wayland
3222   PKG_CHECK_MODULES([WAYLAND_CLIENT], [wayland-client >= 1.5.91],, [
3223     wl_err="$wl_err ${WAYLAND_CLIENT_PKG_ERRORS}."
3224   ])
3225   PKG_CHECK_MODULES([WAYLAND_CURSOR], [wayland-cursor],, [
3226     wl_err="$wl_err ${WAYLAND_CURSOR_PKG_ERRORS}."
3227   ])
3228   PKG_CHECK_MODULES([WAYLAND_EGL], [wayland-egl],, [
3229     wl_err="$wl_err ${WAYLAND_EGL_PKG_ERRORS}."
3230   ])
3231   PKG_CHECK_MODULES([WAYLAND_SCANNER], [wayland-scanner >= 1.15], [
3232     WAYLAND_SCANNER="$(${PKG_CONFIG} wayland-scanner --variable wayland_scanner)"
3233   ], [
3234     wl_err="$wl_err ${WAYLAND_SCANNER_PKG_ERRORS}."
3235   ])
3237   dnl wayland-protocols
3238   PKG_CHECK_MODULES([WAYLAND_PROTOCOLS], [wayland-protocols >= 1.15], [
3239     WAYLAND_PROTOCOLS="$(${PKG_CONFIG} wayland-protocols --variable pkgdatadir)"
3240   ], [
3241     wl_err="$wl_err ${WAYLAND_PROTOCOLS_PKG_ERRORS}."
3242   ])
3244   AS_IF([test -n "$wl_err"], [
3245     AS_IF([test -n "$enable_wayland"], [
3246       AC_MSG_ERROR([$wl_err])
3247     ], [
3248       AC_MSG_WARN([$wl_err])
3249     ])
3250   ], [
3251     have_wayland="yes"
3252   ])
3254   dnl xkbcommon
3255   PKG_CHECK_MODULES([XKBCOMMON], [xkbcommon], [
3256     have_xkbcommon="yes"
3257   ], [
3258     AC_MSG_WARN([${XKBCOMMON_PKG_ERRORS}. Hotkeys are disabled.])
3259   ])
3261 AM_CONDITIONAL([HAVE_WAYLAND], [test "${have_wayland}" = "yes"])
3262 AC_SUBST([WAYLAND_PROTOCOLS])
3263 AC_SUBST([WAYLAND_SCANNER])
3264 AM_CONDITIONAL([HAVE_XKBCOMMON], [test "${have_xkbcommon}" = "yes"])
3268 dnl  SDL image decoder module
3270 AC_ARG_ENABLE([sdl-image],
3271   AS_HELP_STRING([--enable-sdl-image], [SDL image support (default enabled)]))
3272 AS_IF([test "${enable_sdl_image}" != "no"],[
3273   PKG_CHECK_MODULES(SDL_IMAGE, [SDL_image >= 1.2.10], [
3274     VLC_ADD_PLUGIN([sdl_image])
3275   ], [
3276     AC_MSG_WARN([${SDL_IMAGE_PKG_ERRORS}. You should install it alongside your SDL package.])
3277   ])
3281 dnl  freetype module
3283 AC_ARG_ENABLE([freetype],
3284   AS_HELP_STRING([--enable-freetype],   [freetype support   (default auto)]))
3285 AC_ARG_ENABLE([fribidi],
3286   AS_HELP_STRING([--enable-fribidi],    [fribidi support    (default auto)]))
3287 AC_ARG_ENABLE([harfbuzz],
3288   AS_HELP_STRING([--enable-harfbuzz],   [harfbuzz support   (default auto)]))
3289 AC_ARG_ENABLE([fontconfig],
3290   AS_HELP_STRING([--enable-fontconfig], [fontconfig support (default auto)]))
3292 AC_ARG_WITH([default-font],
3293     AS_HELP_STRING([--with-default-font=PATH],
3294         [Path to the default font]),
3295         [AC_DEFINE_UNQUOTED([DEFAULT_FONT_FILE],
3296             "$withval", [Default font])])
3297 AC_ARG_WITH([default-monospace-font],
3298     AS_HELP_STRING([--with-default-monospace-font=PATH],
3299         [Path to the default font]),
3300         [AC_DEFINE_UNQUOTED([DEFAULT_MONOSPACE_FONT_FILE],
3301             "$withval", [Default monospace font])])
3303 AC_ARG_WITH([default-font-family],
3304     AS_HELP_STRING([--with-default-font-family=NAME],
3305         [Name of the default font family]),
3306         [AC_DEFINE_UNQUOTED([DEFAULT_FAMILY],
3307             "$withval", [Default font family])])
3308 AC_ARG_WITH([default-monospace-font-family],
3309     AS_HELP_STRING([--with-default-monospace-font-family=NAME],
3310         [Name of the default font family]),
3311         [AC_DEFINE_UNQUOTED([DEFAULT_MONOSPACE_FAMILY],
3312             "$withval", [Default monospace font family])])
3314 have_freetype="no"
3315 have_fontconfig="no"
3316 have_fribidi="no"
3317 have_harfbuzz="no"
3319 if test "${enable_freetype}" != "no"; then
3320    PKG_CHECK_MODULES(FREETYPE, freetype2, [
3321       have_freetype="yes"
3322       VLC_ADD_CPPFLAGS([skins2],[${FREETYPE_CFLAGS}])
3323       VLC_ADD_LIBS([skins2],[${FREETYPE_LIBS}])
3325     dnl fontconfig support
3326     AS_IF([test "${enable_fontconfig}" != "no" -a "${SYS}" != "mingw32" -a "${SYS}" != "darwin"], [
3327       PKG_CHECK_MODULES(FONTCONFIG, [fontconfig >= 2.11], [
3328         have_fontconfig="yes"
3329       ], [
3330         AC_MSG_WARN([${FONTCONFIG_PKG_ERRORS}. Styles will be disabled in FreeType.])
3331       ])
3332     ])
3334       dnl fribidi support
3335       if test "${enable_fribidi}" != "no"; then
3336         PKG_CHECK_MODULES(FRIBIDI, fribidi, [
3337           have_fribidi="yes"
3338           VLC_ADD_CPPFLAGS([skins2], [${FRIBIDI_CFLAGS} -DHAVE_FRIBIDI])
3339           VLC_ADD_LIBS([skins2], [${FRIBIDI_LIBS}])
3340         ],[AC_MSG_WARN([${FRIBIDI_PKG_ERRORS}. Bidirectional text and complex scripts (Arabic, Farsi, Thai...) will be disabled in FreeType.])])
3341       fi
3343       dnl harfbuzz support
3344       if test "${have_fribidi}" != "no"; then
3345         if test "${enable_harfbuzz}" != "no"; then
3346           PKG_CHECK_MODULES(HARFBUZZ, harfbuzz, [
3347             have_harfbuzz="yes"
3348             VLC_ADD_CPPFLAGS([skins2], [${HARFBUZZ_CFLAGS} -DHAVE_HARFBUZZ])
3349             VLC_ADD_LIBS([skins2], [${HARFBUZZ_LIBS}])
3350           ],[AC_MSG_WARN([${HARFBUZZ_PKG_ERRORS}. Support for complex scripts (Arabic, Farsi, Thai...) will be disabled in FreeType.])])
3351         fi
3352       fi
3353   ],[
3354   AS_IF([test -n "${enable_freetype}"],[
3355     AC_MSG_ERROR([${FREETYPE_PKG_ERRORS}. Install FreeType2 development or configure with --disable-freetype.])
3356     ])
3357   ])
3360 AM_CONDITIONAL([HAVE_FREETYPE], [test "${have_freetype}" = "yes"])
3361 AM_CONDITIONAL([HAVE_FONTCONFIG], [test "${have_fontconfig}" = "yes"])
3362 AM_CONDITIONAL([HAVE_FRIBIDI], [test "${have_fribidi}" = "yes"])
3363 AM_CONDITIONAL([HAVE_HARFBUZZ], [test "${have_harfbuzz}" = "yes"])
3366 dnl libass subtitle rendering module
3368 AC_ARG_ENABLE([libass],
3369   AS_HELP_STRING([--enable-libass], [Subtitle support using libass (default enabled)]))
3370 AS_IF( [test "${enable_libass}" != "no"], [
3371   PKG_CHECK_MODULES(LIBASS, [libass >= 0.9.8],
3372       [
3373         VLC_ADD_PLUGIN([libass])
3375         if test "${have_fontconfig}" != "no"; then
3376             VLC_ADD_CPPFLAGS([libass],[-DHAVE_FONTCONFIG])
3377             VLC_ADD_LIBS([libass],[${FONTCONFIG_LIBS}])
3378         fi
3379       ],[
3380         AC_MSG_WARN([${LIBASS_PKG_ERRORS}.])
3381       ])
3382   ])
3385 dnl SAPI (text to Speech renderer for Windows)
3387 AC_LANG_PUSH([C++])
3388 AC_CHECK_TYPES([ISpObjectToken],[
3389               have_sapi="yes"
3390             ],[AC_MSG_WARN([sapi.h not found. Text to Speech renderer for Windows disabled])],
3391               [#include <windows.h>
3392                #include <sapi.h>
3393                #include <sphelper.h>])
3394 AM_CONDITIONAL([HAVE_SAPI], [test "${have_sapi}" = "yes"])
3395 AC_LANG_POP([C++])
3398 dnl  SVG module (text rendering and image decoding)
3400 PKG_ENABLE_MODULES_VLC([SVG], [], [librsvg-2.0 >= 2.9.0], [SVG rendering library],[auto])
3401 PKG_ENABLE_MODULES_VLC([SVGDEC], [], [librsvg-2.0 >= 2.9.0 cairo >= 1.13.1], [SVG image decoder library],[auto])
3404 dnl  Windows DirectX module
3407 AC_ARG_ENABLE([directx],
3408   AS_HELP_STRING([--enable-directx],
3409     [Microsoft DirectX support (default enabled on Windows)]),, [
3410   AS_IF([test "${SYS}" = "mingw32"], [
3411     enable_directx="yes"
3412   ], [
3413     enable_directx="no"
3414   ])
3416 AS_IF([test "${enable_directx}" != "no"], [
3417   dnl DirectDraw
3418   AC_CHECK_HEADERS([ddraw.h], [
3419     VLC_ADD_PLUGIN([directdraw])
3420   ])
3422   dnl OpenGL
3423   AC_CHECK_HEADERS([GL/wglew.h], [
3424     VLC_ADD_PLUGIN([glwin32 wgl])
3425   ],, [
3426     #include <windows.h>
3427     #include <GL/gl.h>
3428   ])
3430   dnl Direct3D11
3431   AC_CHECK_HEADERS([d3d11.h], [
3432     VLC_ADD_PLUGIN([direct3d11 direct3d11_filters])
3433   ])
3435   dnl Direct3D9
3436   AC_CHECK_HEADERS([d3d9.h], [
3437     VLC_ADD_PLUGIN([direct3d9])
3438     AC_CHECK_HEADERS([d3dx9effect.h])
3440     AC_PREPROC_IFELSE([AC_LANG_PROGRAM(
3441         [[#define COBJMACROS
3442           #include <d3d9.h>
3443           #include <dxva2api.h>
3444           #ifndef IDirectXVideoProcessorService_GetVideoProcessorDeviceGuids
3445           # error dxva2 too old
3446           #endif
3447         ]],[[;]])
3448       ],[
3449         VLC_ADD_PLUGIN([direct3d9_filters])
3450       ],
3451       [AC_MSG_WARN([Could not find required IDirectXVideoDecoder in dxva2api.h])])
3453   ])
3457 dnl  Linux framebuffer module
3459 AC_CHECK_HEADER([linux/fb.h], [
3460   VLC_ADD_PLUGIN([fb])
3464 dnl  Linux kernel mode setting module
3466 PKG_ENABLE_MODULES_VLC([KMS], [], [libdrm >= 2.4.83], [Linux kernel mode setting output], [auto])
3469 dnl  libcaca plugin
3471 PKG_ENABLE_MODULES_VLC([CACA], [], [caca >= 0.99.beta14], [libcaca output],[auto])
3474 dnl  OS/2 KVA plugin
3476 AC_ARG_ENABLE([kva],
3477   AS_HELP_STRING([--enable-kva],
3478     [support the K Video Accelerator KVA (default enabled on OS/2)]),, [
3479   AS_IF([test "$SYS" = "os2"], [
3480     enable_kva="yes"
3481   ])
3483 have_kva="no"
3484 KVA_LIBS=""
3485 AS_IF([test "$enable_kva" != "no"], [
3486   AC_CHECK_HEADERS([kva.h], [
3487     have_kva="yes"
3488     AC_CHECK_LIB([kva], [main], [
3489       KVA_LIBS="-lkva"
3490     ])
3491   ])
3493 AC_SUBST([KVA_LIBS])
3494 AM_CONDITIONAL([HAVE_KVA], [test "${have_kva}" = "yes"])
3497 dnl MMAL plugin
3499 AC_ARG_ENABLE([mmal],
3500   AS_HELP_STRING([--enable-mmal],
3501     [Multi-Media Abstraction Layer (MMAL) hardware plugin (default enable)]))
3502 if test "${enable_mmal}" != "no"; then
3503   VLC_SAVE_FLAGS
3504   LDFLAGS="${LDFLAGS} -L/opt/vc/lib -lvchostif"
3505   CPPFLAGS="${CPPFLAGS} -isystem /opt/vc/include -isystem /opt/vc/include/interface/vcos/pthreads -isystem /opt/vc/include/interface/vmcs_host/linux"
3506   AC_CHECK_HEADERS([interface/mmal/mmal.h],
3507     [ AC_CHECK_LIB([bcm_host], [vc_tv_unregister_callback_full], [
3508         have_mmal="yes"
3509         VLC_ADD_PLUGIN([mmal])
3510         VLC_ADD_LDFLAGS([mmal],[ -L/opt/vc/lib ])
3511         VLC_ADD_CFLAGS([mmal],[ -isystem /opt/vc/include -isystem /opt/vc/include/interface/vcos/pthreads -isystem /opt/vc/include/interface/vmcs_host/linux ])
3512         VLC_ADD_LIBS([mmal],[ -lbcm_host -lmmal -lmmal_core -lmmal_components -lmmal_util -lvchostif ]) ], [
3513           AS_IF([test "${enable_mmal}" = "yes"],
3514             [ AC_MSG_ERROR([Cannot find bcm library...]) ],
3515             [ AC_MSG_WARN([Cannot find bcm library...]) ])
3516           ],
3517         [])
3518     ] , [ AS_IF([test "${enable_mmal}" = "yes"],
3519       [ AC_MSG_ERROR([Cannot find development headers for mmal...]) ],
3520       [ AC_MSG_WARN([Cannot find development headers for mmal...]) ]) ])
3521   VLC_RESTORE_FLAGS
3523 AM_CONDITIONAL([HAVE_MMAL], [test "${have_mmal}" = "yes"])
3526 dnl  Audio plugins
3529 EXTEND_HELP_STRING([Audio plugins:])
3532 dnl  Pulseaudio module
3534 AC_ARG_ENABLE([pulse],
3535   AS_HELP_STRING([--enable-pulse],
3536     [use the PulseAudio client library (default auto)]))
3537 have_pulse="no"
3538 AS_IF([test "${enable_pulse}" != "no"], [
3539   PKG_CHECK_MODULES([PULSE], [libpulse >= 1.0], [
3540     have_pulse="yes"
3541   ], [
3542     AS_IF([test "x${enable_pulse}" != "x"], [
3543       AC_MSG_ERROR([$PULSE_PKG_ERRORS. PulseAudio 1.0 or later required.])
3544     ])
3545   ])
3547 AM_CONDITIONAL([HAVE_PULSE], [test "${have_pulse}" = "yes"])
3550 dnl  ALSA module
3552 AC_ARG_ENABLE([alsa],
3553   AS_HELP_STRING([--enable-alsa],
3554     [support the Advanced Linux Sound Architecture (default auto)]),, [
3555   AS_IF([test "$SYS" = "linux" -a "${have_pulse}" = "no"], [
3556     enable_alsa="yes"
3557   ])
3559 have_alsa="no"
3560 AS_IF([test "${enable_alsa}" != "no"], [
3561   PKG_CHECK_MODULES([ALSA], [alsa >= 1.0.24], [
3562     have_alsa="yes"
3563   ], [
3564     AS_IF([test "x${enable_alsa}" != "x"], [
3565       AC_MSG_ERROR([$ALSA_PKG_ERRORS. alsa-lib 1.0.24 or later required. Pass --disable-alsa to ignore this error.])
3566     ])
3567   ])
3569 AM_CONDITIONAL([HAVE_ALSA], [test "${have_alsa}" = "yes"])
3572 dnl  Open Sound System module
3574 AC_ARG_ENABLE([oss],
3575   AS_HELP_STRING([--enable-oss],
3576     [support the Open Sound System OSS (default enabled on FreeBSD/NetBSD/DragonFlyBSD)]),, [
3577   AS_IF([test "$SYS" = "mingw32" -o "$SYS" = "linux" -o "$SYS" = "openbsd"], [
3578     enable_oss="no"
3579   ])
3581 have_oss="no"
3582 OSS_LIBS=""
3583 AS_IF([test "$enable_oss" != "no"], [
3584   AC_CHECK_HEADERS([soundcard.h sys/soundcard.h], [
3585     have_oss="yes"
3586     AC_CHECK_LIB([ossaudio], [main], [
3587       OSS_LIBS="-lossaudio"
3588     ])
3589   ])
3591 AC_SUBST([OSS_LIBS])
3592 AM_CONDITIONAL([HAVE_OSS], [test "${have_oss}" = "yes"])
3595 dnl  OpenBSD sndio module
3597 AC_ARG_ENABLE([sndio],
3598   AS_HELP_STRING([--disable-sndio],
3599     [support the OpenBSD sndio (default auto)]),, [
3600   AS_IF([test "$SYS" = "openbsd"], [
3601     enable_sndio="yes"
3602   ])
3604 have_sndio="no"
3605 AS_IF([test "$enable_sndio" != "no"], [
3606   AC_CHECK_HEADER([sndio.h], [
3607     have_sndio="yes"
3608   ])
3610 AM_CONDITIONAL([HAVE_SNDIO], [test "${have_sndio}" = "yes"])
3613 dnl  Windows Audio Session plugin
3615 AC_ARG_ENABLE([wasapi],
3616   AS_HELP_STRING([--enable-wasapi],
3617     [use the Windows Audio Session API (default auto)])
3619 have_wasapi="no"
3620 AS_IF([test "$enable_wasapi" != "no"], [
3621   AC_CHECK_HEADER([audioclient.h], [
3622     have_wasapi="yes"
3623   ], [
3624     AS_IF([test "x${enable_wasapi}" != "x"], [
3625       AC_MSG_ERROR([Windows Audio Session API not found.])
3626     ])
3627   ])
3629 AM_CONDITIONAL([HAVE_WASAPI], [test "${have_wasapi}" = "yes"])
3632 dnl  JACK modules
3634 AC_ARG_ENABLE([jack],
3635   AS_HELP_STRING([--disable-jack],
3636     [do not use jack (default auto)]))
3637 have_jack="no"
3638 AS_IF([test "${enable_jack}" != "no"], [
3639     PKG_CHECK_MODULES(JACK, jack >= 1.9.7,
3640       [ have_jack=yes ],
3641       [
3642       AC_MSG_WARN([${JACK_PKG_ERRORS}, trying jack1 instead])
3644       PKG_CHECK_MODULES(JACK, jack >= 0.120.1 jack < 1.0,
3645       [ have_jack=yes ],
3646       [
3647       AS_IF([test -n "${enable_jack}"],
3648          [AC_MSG_ERROR([${JACK_PKG_ERRORS}.])],
3649          [AC_MSG_WARN([${JACK_PKG_ERRORS}.])])
3650       ])
3651     ])
3653 AM_CONDITIONAL([HAVE_JACK], [test "${have_jack}" != "no"])
3656 dnl  OpenSLES Android
3658 AC_ARG_ENABLE([opensles],
3659   AS_HELP_STRING([--enable-opensles], [Android OpenSL ES audio module (default disabled)]))
3660 if test "${HAVE_ANDROID}" = "1"; then
3661   if test "${enable_opensles}" = "yes"; then
3662       AC_CHECK_HEADERS([SLES/OpenSLES.h],
3663         [ VLC_ADD_PLUGIN([opensles_android]) ],
3664         [ AC_MSG_ERROR([cannot find OpenSLES headers])] )
3665   fi
3669 dnl  Tizen audio
3671 AC_ARG_ENABLE([tizen_audio],
3672   AS_HELP_STRING([--enable-tizen-audio],
3673     [Tizen audio module (default enabled on Tizen)]),, [
3674   AS_IF([test "$HAVE_TIZEN" = "1"], [
3675     enable_tizen_audio="yes"
3676   ])
3678 if test "${enable_tizen_audio}" = "yes"; then
3679   AC_CHECK_HEADERS([audio_io.h],
3680     [ VLC_ADD_PLUGIN([tizen_audio]) ],
3681     [ AC_MSG_ERROR([cannot find Tizen audio_io headers])] )
3685 dnl libsamplerate plugin
3687 PKG_ENABLE_MODULES_VLC([SAMPLERATE], [], [samplerate], [Resampler with libsamplerate], [auto])
3690 dnl  soxr module
3692 PKG_ENABLE_MODULES_VLC([SOXR], [], [soxr >= 0.1.2], [SoX Resampler library], [auto])
3695 dnl  OS/2 KAI plugin
3697 AC_ARG_ENABLE([kai],
3698   AS_HELP_STRING([--enable-kai],
3699     [support the K Audio Interface KAI (default enabled on OS/2)]),, [
3700   AS_IF([test "$SYS" = "os2"], [
3701     enable_kai="yes"
3702   ])
3704 have_kai="no"
3705 KAI_LIBS=""
3706 AS_IF([test "$enable_kai" != "no"], [
3707   AC_CHECK_HEADERS([kai.h], [
3708     have_kai="yes"
3709     AC_CHECK_LIB([kai], [main], [
3710       KAI_LIBS="-lkai"
3711     ])
3712   ])
3714 AC_SUBST([KAI_LIBS])
3715 AM_CONDITIONAL([HAVE_KAI], [test "${have_kai}" = "yes"])
3718 dnl  chromaprint audio track fingerprinter
3720 m4_pushdef([libchromaprint_version], 0.6.0)
3721 PKG_WITH_MODULES([CHROMAPRINT],[libchromaprint >= libchromaprint_version],
3722     VLC_ADD_PLUGIN([stream_out_chromaprint]),
3723     AS_IF([test "${enable_chromaprint}" = "yes"],
3724         [AC_MSG_ERROR(Library [libchromaprint >= libchromaprint_version] needed for [chromaprint] was not found)],
3725         [AC_MSG_WARN(Library [libchromaprint >= libchromaprint_version] needed for [chromaprint] was not found)]
3726          ),
3727     [(Chromaprint based audio fingerprinter)],[auto])
3728 m4_popdef([libchromaprint_version])
3731 dnl  Chromecast streaming support
3733 m4_pushdef([protobuf_lite_version], 2.5.0)
3734 AC_ARG_VAR(PROTOC, [protobuf compiler])
3735 AC_CHECK_PROGS(PROTOC, protoc, no)
3736 PKG_WITH_MODULES([CHROMECAST],[protobuf-lite >= protobuf_lite_version], [
3737     AS_IF([test "x${PROTOC}" != "xno"], [
3738         build_chromecast="yes"
3739     ], [
3740     AC_MSG_ERROR(protoc compiler needed for [chromecast] was not found)
3741     ])
3742 ], [
3743     AS_IF([test "${enable_chromecast}" = "yes"],
3744         AC_MSG_ERROR(Library [protobuf-lite >= protobuf_lite_version] needed for [chromecast] was not found),
3745         AC_MSG_WARN(Library [protobuf-lite >= protobuf_lite_version] needed for [chromecast] was not found)
3746     )
3747     enable_chromecast="no"
3748 ], [(Chromecast streaming support)], [auto])
3749 AM_CONDITIONAL([BUILD_CHROMECAST], [test "${build_chromecast}" = "yes"])
3750 m4_popdef([protobuf_lite_version])
3753 dnl  Interface plugins
3756 EXTEND_HELP_STRING([Interface plugins:])
3759 dnl QT
3761 AC_ARG_ENABLE([qt],
3762   AS_HELP_STRING([--disable-qt], [Qt UI support (default enabled)]),, [
3763   AS_IF([test "${enable_vlc}" != "no"], [enable_qt="yes"])
3764   AS_IF([test "${SYS}" = "darwin"], [
3765     enable_qt="no"
3766   ])
3768 have_qt5_x11="no"
3769 AS_IF([test "${enable_qt}" != "no"], [
3770   PKG_CHECK_MODULES([QT], [Qt5Core >= 5.9.0 Qt5Widgets Qt5Gui Qt5Svg], [
3771       PKG_CHECK_MODULES([QT5_X11], [Qt5X11Extras], [
3772           have_qt5_x11="yes"
3773       ],[
3774           AC_MSG_WARN([Not building Qt Interface with X11 helpers.])
3775       ])
3776       QT_PATH="$(eval $PKG_CONFIG --variable=exec_prefix Qt5Core)"
3777       QT_HOST_PATH="$(eval $PKG_CONFIG --variable=host_bins Qt5Core)"
3778       QT_VERSION="$(eval $PKG_CONFIG --modversion Qt5Gui)"
3779       AC_PATH_PROGS(MOC, [moc-qt5 moc], moc, ["${QT_HOST_PATH}" "${QT_PATH}/bin"])
3780       AC_PATH_PROGS(RCC, [rcc-qt5 rcc], rcc, ["${QT_HOST_PATH}" "${QT_PATH}/bin"])
3781       AC_PATH_PROGS(UIC, [uic-qt5 uic], uic, ["${QT_HOST_PATH}" "${QT_PATH}/bin"])
3782     ], [
3783       AS_IF([test -n "${enable_qt}"],[
3784         AC_MSG_ERROR([${QT_PKG_ERRORS}. If you want to build VLC without GUI, pass --disable-qt.])
3785       ],[
3786         AC_MSG_WARN([${QT_PKG_ERRORS}.])
3787       ])
3788       enable_qt="no"
3789     ])
3792 AS_IF([test "${enable_qt}" != "no"], [
3793   ALIASES="${ALIASES} qvlc"
3795 AC_SUBST([QT_VERSION])
3796 AM_CONDITIONAL([ENABLE_QT], [test "$enable_qt" != "no"])
3797 AM_CONDITIONAL([HAVE_QT5_X11], [test "${have_qt5_x11}" = "yes"])
3800 dnl detect kde4-config patch (used for kde solids).
3802 AC_ARG_VAR([KDE4_CONFIG], [kde4-config utility])
3803 AS_IF([test "x$KDE4_CONFIG" = "x"], [
3804   KDE4_CONFIG="kde4-config"
3808 dnl Simple test for skins2 dependency
3810 AS_IF([test "$enable_qt" = "no"], [
3811   AS_IF([test "${enable_skins2}" = "yes"], [
3812     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.])
3813   ], [
3814     enable_skins2="no"
3815     AC_MSG_WARN([The skins2 module depends on the Qt interface, Qt is not built so skins2 is disabled.])
3816   ])
3820 dnl Skins2 module
3822 AC_ARG_ENABLE([skins2],
3823   AS_HELP_STRING([--enable-skins2], [skins interface module (default auto)]))
3824 AS_IF([test "${enable_skins2}" != "no"], [
3825   have_skins_deps="yes"
3827   dnl Win32
3828   AS_IF([test "${SYS}" = "mingw32"], [
3829     VLC_ADD_CPPFLAGS([skins2],[-U_OFF_T_ -U_off_t -DWIN32_SKINS])
3830     VLC_ADD_LIBS([skins2],[-lgdi32 -lole32 -luuid -lmsimg32])
3831   dnl OS/2
3832   ], [test "${SYS}" = "os2"], [
3833     VLC_ADD_CPPFLAGS([skins2],[ -DOS2_SKINS])
3834   dnl Linux/Unix
3835   ], [
3836     PKG_CHECK_MODULES([XPM], [xpm],, [have_skins_deps="no"])
3837     PKG_CHECK_MODULES([XINERAMA], [xinerama],, [have_skins_deps="no"])
3838     PKG_CHECK_MODULES([XCURSOR], [xcursor],, [have_skins_deps="no"])
3839     PKG_CHECK_MODULES([XEXT], [xext],, [have_skins_deps="no"])
3840     VLC_ADD_CPPFLAGS([skins2],[${X_CFLAGS} ${XEXT_CFLAGS} ${XPM_CFLAGS} -DX11_SKINS])
3841     VLC_ADD_LIBS([skins2],[${X_LIBS} ${X_PRE_LIBS} ${XEXT_LIBS} ${XPM_LIBS} ${XINERAMA_LIBS} ${XCURSOR_LIBS} -lX11])
3842   ])
3844   dnl we need freetype
3845   AS_IF([test "${have_freetype}" != "yes"], [
3846     have_skins_deps="no"
3847   ])
3849   AS_IF([test "${have_skins_deps}" = "no"], [
3850     AS_IF([test "x${enable_skins2}" = "x"], [
3851       AC_MSG_WARN([Skins2 interface disabled due to missing dependencies.])
3852     ], [
3853       AC_MSG_ERROR([Skins2 interface requires FreeType, libxcursor, libxpm, libxext and libxinerama])
3854     ])
3855     enable_skins2="no"
3856   ], [
3857     ALIASES="${ALIASES} svlc"
3858     enable_skins2="yes"
3859   ])
3861 AM_CONDITIONAL([BUILD_SKINS], [test "${enable_skins2}" = "yes"])
3863 AC_ARG_ENABLE([libtar],
3864   AS_HELP_STRING([--enable-libtar], [libtar support for skins2 (default auto)]))
3865 AS_IF([test "${enable_skins2}" = "yes" && test "${enable_libtar}" != "no"], [
3866   AC_CHECK_HEADERS([libtar.h], [
3867     VLC_ADD_LIBS([skins2],[-ltar])
3868   ])
3872 dnl  MacOS X gui module
3874 AC_ARG_ENABLE([macosx],
3875   AS_HELP_STRING([--enable-macosx], [Mac OS X gui support (default enabled on Mac OS X)]))
3876 if test "x${enable_macosx}" != "xno" -a "${SYS}" = "darwin"
3877 then
3879   dnl
3880   dnl If possible, use xcrun to find the right ibtool
3881   dnl
3883   AC_PATH_PROG([XCRUN], [xcrun], [no])
3884   AS_IF([test ! "x${XCRUN}" = "xno"], [
3885     AC_MSG_CHECKING([for ibtool (using xcrun)])
3886     XIB="$(eval $XCRUN -f ibtool 2>/dev/null || echo no)"
3887     AC_MSG_RESULT([${XIB}])
3888   ], [
3889     AC_MSG_WARN([Looking for tools without using xcrun])
3890   ])
3892   AS_IF([test "x${XIB}" = "xno"], [
3893     AC_PATH_PROG(XIB, [ibtool], [no])
3894     AS_IF([test "x${XIB}" = "xno"], [
3895       AC_MSG_ERROR([ibtool was not found, but is required for --enable-macosx])
3896     ])
3897   ])
3899 AM_CONDITIONAL([ENABLE_MACOSX_UI], [test "$enable_macosx" != "no" -a "${SYS}" = "darwin"])
3902 dnl  MacOS X sparkle update support
3904 AC_ARG_ENABLE([sparkle],
3905   AS_HELP_STRING([--enable-sparkle], [Sparkle update support for OS X (default enabled on Mac OS X)]))
3906 if test "x${enable_sparkle}" != "xno" -a "${HAVE_OSX}" = "1"
3907 then
3908   if test ! -d ${CONTRIB_DIR}/Sparkle.framework -a ! -d ${CONTRIB_DIR}/Frameworks/Sparkle.framework
3909   then
3910     AC_MSG_ERROR([Sparkle framework is required and was not found in ${CONTRIB_DIR}])
3911   fi
3913   AC_DEFINE([HAVE_SPARKLE], [1], [Define to 1 if sparkle is enabled.])
3915 AM_CONDITIONAL([HAVE_SPARKLE], [test "$enable_sparkle" != "no"])
3918 dnl  MacOS X breakpad creash reporter support
3920 AC_ARG_WITH([breakpad],
3921   AS_HELP_STRING([--with-breakpad=URL], [Enable Breakpad reporter using given URL]), [], [with_breakpad=no])
3923 AS_IF([test "$with_breakpad" != "no"], [
3925   AS_IF([test "$with_breakpad" = "yes"], [
3926     AC_MSG_ERROR([You need to supply the CrashDragon Server URL as value for --with-breakpad])
3927   ])
3929   AS_IF([test "$HAVE_OSX" = "1"], [
3930     AC_MSG_CHECKING([for Breakpad framework])
3931     AS_IF([test ! -d ${CONTRIB_DIR}/Breakpad.framework -a \
3932                 ! -d ${CONTRIB_DIR}/Frameworks/Breakpad.framework], [
3933       AC_MSG_RESULT([no])
3934       with_breakpad="no"
3935       AC_MSG_ERROR([Breakpad framework is required and was not found in ${CONTRIB_DIR}])
3936     ], [
3937       AC_MSG_RESULT([yes])
3938     ])
3939   ],[
3940     PKG_CHECK_MODULES([BREAKPAD], [breakpad-client], [
3941       LDFLAGS="${LDFLAGS} -Wl,--build-id"
3942     ], [
3943       AC_MSG_ERROR(["breakpad not found"])
3944     ])
3945   ])
3948 AM_CONDITIONAL([HAVE_BREAKPAD], [test "$with_breakpad" != "no"])
3949 AS_IF([test "$with_breakpad" != "no"], [
3950   AC_SUBST([BREAKPAD_URL], ["${with_breakpad}"])
3954 dnl  Minimal Mac OS X module
3956 AC_ARG_ENABLE([minimal-macosx],
3957   AS_HELP_STRING([--enable-minimal-macosx], [Minimal Mac OS X support (default disabled)]))
3958 if test "${enable_minimal_macosx}" = "yes" -a "${SYS}" = "darwin"
3959 then
3960   VLC_ADD_PLUGIN([minimal_macosx])
3964 dnl Mac OS X fancy dmg build tool
3966 if test "${HAVE_OSX}" = "1"
3967 then
3968   AC_PATH_PROG(DMGBUILD, dmgbuild, no)
3969   AS_IF([test "x${DMGBUILD}" = "xno"], [
3970     AC_MSG_WARN([dmgbuild not found -- unable to build fancy DMGs])
3971   ])
3973 AM_CONDITIONAL([HAVE_DMGBUILD], [test "x$DMGBUILD" != "xno" -a "${HAVE_OSX}" = "1"])
3976 dnl  VideoToolbox plugins
3977 AC_CHECK_HEADERS([VideoToolbox/VideoToolbox.h], [
3978     VLC_ADD_PLUGIN([videotoolbox])
3979     VLC_ADD_PLUGIN([cvpx])
3980   ])
3983 dnl  AudioToolbox MIDI plugin
3984 AC_CHECK_HEADERS([AudioToolbox/AudioToolbox.h], [
3985   VLC_ADD_PLUGIN([audiotoolboxmidi])
3989 dnl  ncurses module
3991 AC_ARG_ENABLE([ncurses],
3992 AS_HELP_STRING([--disable-ncurses],[ncurses text-based interface (default auto)]))
3993 have_ncurses="no"
3994 AS_IF([test "${enable_ncurses}" != "no"] ,[
3995   PKG_CHECK_MODULES([NCURSES], [ncursesw], [
3996     have_ncurses="yes"
3997     ALIASES="${ALIASES} nvlc"
3998   ], [
3999     AS_IF([test -n "${enable_ncurses}"], [
4000       AC_MSG_ERROR([${NCURSES_PKG_ERRORS}.])
4001     ])
4002   ])
4004 AM_CONDITIONAL([HAVE_NCURSES], [test "${have_ncurses}" = "yes"])
4007 dnl  Lirc plugin
4009 AC_ARG_ENABLE([lirc],
4010   AS_HELP_STRING([--enable-lirc], [lirc support (default disabled)]))
4011 have_lirc="no"
4012 AS_IF([test "${enable_lirc}" = "yes"], [
4013   AC_CHECK_HEADER(lirc/lirc_client.h, [
4014     AC_CHECK_LIB([lirc_client], [lirc_init], [
4015       have_lirc="yes"
4016     ])
4017   ])
4019 AM_CONDITIONAL([HAVE_LIRC], [test "${have_lirc}" = "yes"])
4022 dnl  Bitstream
4024 PKG_CHECK_MODULES([BITSTREAM], [bitstream > 1.4],[have_bitstream="yes"], [have_bitstream="no"])
4025 AM_CONDITIONAL([HAVE_BITSTREAM], [test "${have_bitstream}" = "yes"])
4028 dnl  SRT plugin
4030 PKG_ENABLE_MODULES_VLC([SRT], [access_srt access_output_srt], [srt >= 1.2.2], [SRT input/output plugin], [auto], [], [], [-DENABLE_SRT])
4032 EXTEND_HELP_STRING([Visualisations and Video filter plugins:])
4034 dnl  goom visualization plugin
4036 PKG_ENABLE_MODULES_VLC([GOOM], [], [libgoom2], [goom visualization plugin], [auto])
4039 dnl libprojectM visualization plugin
4041 AC_ARG_ENABLE([projectm],
4042   AS_HELP_STRING([--enable-projectm], [projectM visualization plugin (default enabled)]))
4043 AS_IF([test "${enable_projectm}" != "no"],
4044   [
4045     PKG_CHECK_MODULES(PROJECTM, libprojectM,
4046     [
4047       VLC_ADD_PLUGIN([projectm])
4048       PKG_CHECK_EXISTS([libprojectM >= 2.0.0],
4049         [ AC_DEFINE([HAVE_PROJECTM2], 1, [Define to 1 if using libprojectM 2.x]) ],
4050         [ AC_MSG_WARN( [Using libprojectM version 1] )
4051       ])
4052     ],[
4053       AC_MSG_WARN([${PROJECTM_PKG_ERRORS}.])
4054     ])
4055   ])
4058 dnl Vovoid VSXu visualization plugin
4060 AC_ARG_ENABLE([vsxu],
4061   AS_HELP_STRING([--enable-vsxu], [Vovoid VSXu visualization plugin (default auto)]))
4062 AS_IF([test "${enable_vsxu}" != "no"],
4063   [
4064     PKG_CHECK_MODULES(VSXU, libvsxu,
4065     [
4066       VLC_ADD_PLUGIN([vsxu])
4067     ],[
4068       AC_MSG_WARN([${VSXU_PKG_ERRORS}.])
4069     ])
4070   ])
4072 EXTEND_HELP_STRING([Service Discovery plugins:])
4074 dnl  Avahi-Zeroconf services discovery
4075 PKG_ENABLE_MODULES_VLC([AVAHI], [], [avahi-client >= 0.6], [Zeroconf services discovery], [auto])
4078 dnl  libudev services discovery
4079 PKG_ENABLE_MODULES_VLC([UDEV], [], [libudev >= 142], [Linux udev services discovery], [auto])
4082 dnl MTP devices services discovery
4083 PKG_ENABLE_MODULES_VLC([MTP], [mtp access_mtp], [libmtp >= 1.0.0], [MTP devices support], [auto])
4086 dnl UPnP Plugin (Intel SDK)
4088 PKG_ENABLE_MODULES_VLC([UPNP], [upnp], [libupnp], [Intel UPNP SDK],[auto])
4091 dnl mDNS using libmicrodns
4093 PKG_ENABLE_MODULES_VLC([MICRODNS], [], [microdns], [mDNS services discovery], [auto])
4096 EXTEND_HELP_STRING([Misc options:])
4099 dnl  libxml2 module
4101 PKG_ENABLE_MODULES_VLC([LIBXML2], [xml], [libxml-2.0 >= 2.5], [libxml2 support],[auto])
4105 dnl libgcrypt
4107 AC_ARG_ENABLE([libgcrypt],
4108   AS_HELP_STRING([--disable-libgcrypt], [gcrypt support (default enabled)]))
4109 AC_ARG_VAR([GCRYPT_CFLAGS], [C compiler flags for gcrypt])
4110 AC_ARG_VAR([GCRYPT_LIBS], [linker flags flags for gcrypt])
4112 # require libgcrypt >= 1.6.0
4113 AS_IF([test "${enable_libgcrypt}" != "no"], [
4114   AC_CACHE_CHECK([for gcrypt 1.6.0 or later], [ac_cv_lib_gcrypt], [
4115     VLC_SAVE_FLAGS
4116     CFLAGS="${CFLAGS} ${GCRYPT_CFLAGS}"
4117     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([
4118 [#include <gcrypt.h>
4119 #if GCRYPT_VERSION_NUMBER < 0x010600
4120 #error
4121 #endif]])], [
4122       ac_cv_lib_gcrypt=yes
4123     ], [
4124       ac_cv_lib_gcrypt=no
4125     ])
4126     VLC_RESTORE_FLAGS
4127   ])
4129   AS_IF([test "${ac_cv_lib_gcrypt}" = "yes"], [
4130     AC_DEFINE([HAVE_GCRYPT], 1, [Defined if having gcrypt])
4131   ], [
4132     AS_IF([test "${enable_libgcrypt}" = "yes"], [
4133       AC_MSG_ERROR([libgcrypt version 1.6.0 or higher not found. Install libgcrypt or pass --disable-libgcrypt.])
4134     ])
4135   ])
4138 AS_IF([test -z "$GCRYPT_LIBS"], [
4139   GCRYPT_LIBS="-lgcrypt -lgpg-error"
4142 AC_SUBST([GCRYPT_CFLAGS])
4143 AC_SUBST([GCRYPT_LIBS])
4144 AM_CONDITIONAL([HAVE_GCRYPT], [test "${ac_cv_lib_gcrypt}" = "yes"])
4147 dnl TLS/SSL
4149 AC_ARG_ENABLE([gnutls],
4150   AS_HELP_STRING([--enable-gnutls], [GNU TLS TLS/SSL support (default enabled)]))
4151 AS_IF([test "${enable_gnutls}" != "no"], [
4152   PKG_CHECK_MODULES(GNUTLS, [gnutls >= 3.3.6], [
4153     VLC_ADD_PLUGIN([gnutls])
4154   ], [
4155     AS_IF([test -n "${enable_gnutls}"], [
4156       AC_MSG_ERROR([${GNUTLS_PKG_ERRORS}.)])
4157     ])
4158   ])
4163 dnl Taglib plugin
4165 AC_ARG_ENABLE([taglib],
4166   AS_HELP_STRING([--disable-taglib],
4167     [do not use TagLib (default enabled)]))
4168 AS_IF([test "${enable_taglib}" != "no"], [
4169   PKG_CHECK_MODULES(TAGLIB, taglib >= 1.9, [
4170     VLC_ADD_PLUGIN([taglib])
4171   ], [
4172     AC_MSG_WARN([${TAGLIB_PKG_ERRORS}.])])
4176 dnl  libsecret
4178 PKG_ENABLE_MODULES_VLC([SECRET], [], [libsecret-1 >= 0.18], [use libsecret for keystore], [auto])
4181 dnl  kwallet
4183 AC_ARG_ENABLE([kwallet],
4184   AS_HELP_STRING([--enable-kwallet],
4185     [use kwallet (via D-Bus) for keystore (default enabled)]))
4186 AS_IF([test "${enable_kwallet}" != "no" -a "${have_dbus}" = "yes"], [
4187   VLC_ADD_PLUGIN([kwallet])
4191 dnl update checking system
4193 AC_ARG_ENABLE([update-check],
4194   AS_HELP_STRING([--enable-update-check], [update checking system (default disabled)]))
4195 if test "${enable_update_check}" = "yes"
4196 then
4197  AS_IF([test "${ac_cv_lib_gcrypt}" != "yes"],[
4198     AC_MSG_ERROR([libgcrypt is required for update checking system]) ])
4200 AM_CONDITIONAL([UPDATE_CHECK], [test "${enable_update_check}" = "yes"])
4203 dnl OS X notification plugin
4205 AC_ARG_ENABLE([osx_notifications],
4206   AS_HELP_STRING([--enable-osx-notifications],
4207     [macOS notification plugin (default disabled)]),,
4208   [enable_osx_notifications=no])
4209 AS_IF([test "${enable_osx_notifications}" != "no"], [
4210   VLC_ADD_PLUGIN([osx_notifications])
4214 dnl Libnotify notification plugin
4216 PKG_ENABLE_MODULES_VLC([NOTIFY], [], [libnotify gtk+-3.0], [libnotify notification], [auto])
4218 PKG_ENABLE_MODULES_VLC([MEDIALIBRARY], [medialibrary], [medialibrary], (medialibrary support), [auto])
4221 dnl  Endianness check
4223 AC_C_BIGENDIAN
4224 AS_IF([test "${ac_cv_c_bigendian}" = "yes"], [
4225   DEFS_BIGENDIAN="-DWORDS_BIGENDIAN=1"
4226 ], [
4227   DEFS_BIGENDIAN=""
4229 AC_SUBST([DEFS_BIGENDIAN])
4232 dnl Where to install KDE solid .desktop
4234 AC_ARG_WITH(kde-solid,
4235   AS_HELP_STRING([--with-kde-solid=PATH],
4236                  [KDE Solid actions directory (auto)]),, [
4238 if test "${SYS}" != "mingw32" -a "${SYS}" != "darwin" ; then
4239   with_kde_solid="yes"
4242 soliddatadir=""
4243 AS_IF([test "${with_kde_solid}" != "no"], [
4244   AS_IF([test "${with_kde_solid}" = "yes"], [
4245     kde4datadir="`${KDE4_CONFIG} --install data`"
4246     AS_IF([test "x$kde4datadir" = "x"], [kde4datadir='${datadir}/kde4/apps'])
4247     soliddatadir="${kde4datadir}/solid/actions"
4248   ], [
4249     soliddatadir="${with_kde_solid}"
4250   ])
4252 AC_SUBST([soliddatadir])
4253 AM_CONDITIONAL([KDE_SOLID], [test "x${soliddatadir}" != "x"])
4256 dnl  Find tools for win32 packaging
4258 AS_IF([test "${SYS}" = "mingw32"], [
4259     dnl
4260     dnl Find makensis required to build the NSIS installer
4261     dnl
4262     nsis_major_required="3"
4263     nsis_version_ok="no"
4264     AC_PATH_PROG([MAKENSIS], [makensis], [no])
4265     AS_IF([test "$MAKENSIS" != "no"], [
4266         # Check version
4267         AC_MSG_CHECKING([makensis version])
4268         nsis_version=$($MAKENSIS -VERSION)
4269         AC_MSG_RESULT([$nsis_version])
4270         nsis_version_major=$(echo "$nsis_version" | awk -F \. '{print $1}' | sed 's/v//')
4271         # Check if major version is a valid number
4272         AS_IF([test -n "$nsis_version_major" && \
4273                test "$nsis_version_major" -eq "$nsis_version_major" 2> /dev/null], [
4274             # Do the version check using major version
4275             AS_IF([test "$nsis_version_major" -lt "$nsis_major_required"], [
4276                 AC_MSG_WARN([makensis too old, (needs ${nsis_major_required}.x, have ${nsis_version_major}.x)])
4277             ], [
4278                 nsis_version_ok="yes"
4279             ])
4280         ], [
4281             AC_MSG_WARN([failed to check the makensis version])
4282         ])
4283     ])
4284     dnl
4285     dnl Find 7zip
4286     dnl
4287     AC_PATH_PROG([SEVENZIP], [7z], [7z])
4289 AM_CONDITIONAL([HAVE_MAKENSIS], [test "x$MAKENSIS" != "xno" && test "$nsis_version_ok" = "yes"])
4292 dnl Check wether we have the PROCESS_MITIGATION_IMAGE_LOAD_POLICY
4293 dnl It should only be available when building for win10, but some SDKs define it unconditionnaly
4295 if test "${SYS}" = "mingw32"; then
4296     AC_CHECK_TYPES([PROCESS_MITIGATION_IMAGE_LOAD_POLICY],,,[#include <windows.h>])
4299 EXTEND_HELP_STRING([Components:])
4302 dnl  the VLC binary
4304 AC_ARG_ENABLE([vlc],
4305   AS_HELP_STRING([--enable-vlc], [build the VLC media player (default enabled)]))
4306 AM_CONDITIONAL([BUILD_VLC], [test "${enable_vlc}" != "no"])
4309 dnl Fuzzer (at the end in order to don't mess dependencies FLAGS)
4311 AS_VAR_IF(with_libfuzzer, no, [], [
4312     LIBS="-lstdc++ ${LIBM} -L${with_libfuzzer} -lFuzzer"
4313     AX_CHECK_COMPILE_FLAG(-fsanitize-coverage=trace-pc-guard, [
4314         AX_APPEND_FLAG([-fsanitize-coverage=trace-pc-guard])
4315         AX_APPEND_FLAG([-fsanitize-coverage=trace-pc-guard], [CXXFLAGS])
4316         AX_APPEND_COMPILE_FLAGS([-fsanitize-coverage=trace-cmp])
4317         AX_APPEND_COMPILE_FLAGS([-fsanitize-coverage=trace-cmp], [CXXFLAGS])
4318     ], [
4319         AX_CHECK_COMPILE_FLAG(-fsanitize-coverage=trace-pc, [
4320             AX_APPEND_FLAG([-fsanitize-coverage=trace-pc])
4321             AX_APPEND_FLAG([-fsanitize-coverage=trace-pc], [CXXFLAGS])
4322         ], [
4323             AC_MSG_ERROR([Sanitizer coverage not supported by your compiler])
4324         ])
4325     ])
4329 dnl  Stuff used by the program
4331 VERSION_MESSAGE="${VERSION} ${CODENAME}"
4332 COPYRIGHT_MESSAGE="Copyright © ${COPYRIGHT_YEARS} the VideoLAN team"
4333 AC_DEFINE_UNQUOTED([VERSION_MESSAGE], "${VERSION_MESSAGE}", [Simple version string])
4334 AC_DEFINE_UNQUOTED([COPYRIGHT_MESSAGE], "${COPYRIGHT_MESSAGE}", [Copyright string])
4335 AC_DEFINE_UNQUOTED([COPYRIGHT_YEARS], "${COPYRIGHT_YEARS}", [The copyright years])
4336 AC_DEFINE_UNQUOTED([CONFIGURE_LINE], "${CONFIGURE_LINE}", [The ./configure command line])
4337 AC_DEFINE_UNQUOTED([PACKAGE_VERSION_MAJOR],${VERSION_MAJOR}, [version major number])
4338 AC_DEFINE_UNQUOTED([PACKAGE_VERSION_MINOR],${VERSION_MINOR}, [version minor number])
4339 AC_DEFINE_UNQUOTED([PACKAGE_VERSION_REVISION],${VERSION_REVISION}, [version revision number])
4340 AC_DEFINE_UNQUOTED([PACKAGE_VERSION_EXTRA],${VERSION_EXTRA}, [version extra number])
4341 AC_DEFINE_UNQUOTED([PACKAGE_VERSION_DEV],"${VERSION_DEV}", [version development string])
4342 AC_SUBST([COPYRIGHT_MESSAGE])
4343 AC_SUBST([VERSION_MESSAGE])
4344 AC_SUBST([VERSION_MAJOR])
4345 AC_SUBST([VERSION_MINOR])
4346 AC_SUBST([VERSION_REVISION])
4347 AC_SUBST([VERSION_EXTRA])
4348 AC_SUBST([COPYRIGHT_YEARS])
4349 AC_DEFINE_UNQUOTED([VLC_COMPILE_BY], "`whoami|sed -e 's/\\\/\\\\\\\/g'`", [user who ran configure])
4350 AC_DEFINE_UNQUOTED([VLC_COMPILE_HOST], "`hostname -f 2>/dev/null || hostname`", [host which ran configure])
4351 AC_DEFINE_UNQUOTED([VLC_COMPILER], "`$CC -v 2>&1 | tail -n 1 | sed -e 's/ *$//'`", [compiler])
4353 dnl  Handle substvars that use $(top_srcdir)
4355 CPPFLAGS="-I\$(top_srcdir)/include -I\$(top_builddir)/include ${CPPFLAGS}"
4358 dnl  Configuration is finished
4360 AC_SUBST([SYS])
4361 AC_SUBST([ARCH])
4362 AC_SUBST([ALIASES])
4363 AC_SUBST([ASM])
4364 AC_SUBST([MOC])
4365 AC_SUBST([RCC])
4366 AC_SUBST([UIC])
4367 AC_SUBST([WINDRES])
4368 AC_SUBST([WINE_SDK_PATH])
4369 AC_SUBST([LIBEXT])
4370 AC_SUBST([AM_CPPFLAGS])
4371 AC_SUBST([MACOSX_DEPLOYMENT_TARGET])
4372 AC_SUBST([FILE_LIBVLCCORE_DLL])
4373 AC_SUBST([FILE_LIBVLC_DLL])
4375 AC_CONFIG_FILES([
4376   Makefile
4377   doc/Makefile
4378   modules/Makefile
4379   m4/Makefile
4380   po/Makefile.in
4381   share/Makefile
4382   compat/Makefile
4383   src/Makefile
4384   lib/Makefile
4385   bin/Makefile
4386   test/Makefile
4387   modules/hw/mmal/Makefile
4388   share/vlc.appdata.xml.in
4391 AM_COND_IF([HAVE_WIN32], [
4392   AC_CONFIG_FILES([
4393     extras/package/win32/NSIS/spad.nsi
4394     extras/package/win32/NSIS/vlc.win32.nsi
4395     extras/package/win32/msi/config.wxi
4396   ])
4399 AM_COND_IF([HAVE_DARWIN], [
4400   AC_CONFIG_FILES([
4401     modules/gui/macosx/UI/InfoPlist.strings:modules/gui/macosx/Resources/InfoPlist.strings.in
4402     share/macosx/Info.plist:share/Info.plist.in
4403   ])
4406 dnl Generate makefiles
4407 AC_OUTPUT
4409 dnl Do we have to use make or gmake ?
4410 if make --version 2>&1|grep -q GNU
4411 then
4412     # GNU make, all seems good
4413     MAKE=make
4414 else
4415     # Known GNU make alias (on BSD)
4416     MAKE=gmake
4418 dnl Shortcut to nice compile message
4419 if test -n $SHELL; then
4420   SHELL=${CONFIG_SHELL-/bin/sh}
4422 rm -f compile
4423 compile_top_srcdir=`sed -ne "s/^top_srcdir *= *//p" < Makefile`
4424 echo "#! $SHELL
4425 rm -f .error\$\$
4426 ERROR=0
4427 export PATH=\"$PATH\" LANG=C
4428 ($MAKE V=1 \$@ 2>&1 || touch .error\$\$)| $compile_top_srcdir/extras/buildsystem/make.pl
4429 test -f .error\$\$ && ERROR=1
4430 rm -f .error\$\$
4431 exit \$ERROR" >compile
4432 chmod a+x compile
4434 echo "
4435 libvlc configuration
4436 --------------------
4437 version               : ${VERSION}
4438 system                : ${SYS}
4439 architecture          : ${ARCH}
4440 optimizations         : ${enable_optimizations}"
4441 if test "${enable_vlc}" != "no"; then
4442 echo "vlc aliases           :${ALIASES}"
4443 else
4444 echo "build vlc executable  : no"
4446 echo "
4447 To build vlc and its plugins, type \`$MAKE', or \`./compile' if you like nice colors."