mux: add extradata builder helper
[vlc.git] / configure.ac
blob19dd4c35685ac69a616fb78cf3ddbd6e99e0ab90
1 dnl Autoconf settings for vlc
3 AC_COPYRIGHT([Copyright 1999-2018 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-2018"
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 AC_DEFINE([_FORTIFY_SOURCE], 2, [Define to 2 to get glibc warnings.])
40 AC_DEFINE([_FILE_OFFSET_BITS], 64, [Define to 64 for large files support.])
41 AC_DEFINE([__LIBVLC__],, [Define within the LibVLC source code tree.])
42 AC_DEFINE([WIN32_LEAN_AND_MEAN],, [Define to limit the scope of <windows.h>.])
44 AC_PROG_CXX
45 AC_PROG_CPP
46 AC_PROG_OBJC
47 AC_PROG_EGREP
48 AC_PROG_MAKE_SET
49 AC_PROG_INSTALL
50 AM_PROG_AS
51 AC_PROG_LEX
52 AC_PROG_YACC
54 AC_ARG_VAR([DESKTOP_FILE_VALIDATE], [Validator for desktop entry files])
55 AC_CHECK_PROGS([DESKTOP_FILE_VALIDATE], [${DESKTOP_FILE_VALIDATE} desktop-file-validate], :)
56 AC_ARG_VAR([BUILDCC], [Build system C11 or C99 compiler command])
57 AC_CHECK_PROGS([BUILDCC], [c11-gcc c11 c99-gcc c99], [false])
58 AS_IF([test "$BUILDCC" = "false"], [
59   AC_MSG_ERROR([Cannot find native C99 compiler: please define BUILDCC.])
62 dnl Check for compiler properties
63 AC_C_CONST
64 AC_C_INLINE
65 AC_C_RESTRICT
66 AX_CXX_COMPILE_STDCXX_11([noext], [mandatory])
68 dnl Extend the --help string at the current spot.
69 AC_DEFUN([EXTEND_HELP_STRING], [m4_divert_once([HELP_ENABLE], [$1])])
71 dnl Allow binary package maintainer to pass a custom string to avoid
72 dnl cache problem
73 AC_ARG_WITH([binary-version],
74     AS_HELP_STRING([--with-binary-version=STRING],
75          [To avoid plugins cache problem between binary version]),[],[])
76 AS_IF([test -n "${with_binary_version}"],[
77     AC_DEFINE_UNQUOTED([DISTRO_VERSION],["${with_binary_version}"],
78          [Binary specific version])
81 dnl Prevent clang from accepting unknown flags with a mere warning
82 AX_APPEND_COMPILE_FLAGS([-Werror=unknown-warning-option -Werror=invalid-command-line-argument], [CFLAGS])
83 AX_APPEND_COMPILE_FLAGS([-Werror=unknown-warning-option -Werror=invalid-command-line-argument], [CXXFLAGS])
85 dnl
86 dnl  Check the operating system
87 dnl
88 HAVE_WIN64="0"
89 HAVE_IOS="0"
90 HAVE_OSX="0"
91 HAVE_TVOS="0"
93 case "${host_os}" in
94   "")
95     SYS=unknown
96     ;;
97   linux*)
98     SYS=linux
99     CFLAGS="${CFLAGS} -pthread"
100     ;;
101   bsdi*)
102     SYS=bsdi
103     CFLAGS="${CFLAGS} -pthread"
104     ;;
105   freebsd*)
106     SYS=freebsd
107     CFLAGS="${CFLAGS} -pthread"
108     CPPFLAGS="${CPPFLAGS} -I/usr/local/include"
109     LDFLAGS="${LDFLAGS} -L/usr/local/lib"
110     ac_cv_ld_z_defs=no
111     ;;
112   openbsd*)
113     SYS=openbsd
114     CPPFLAGS="${CPPFLAGS} -I/usr/local/include -I/usr/X11R6/include"
115     LDFLAGS="${LDFLAGS} -L/usr/local/lib -L/usr/X11R6/lib/"
116     ;;
117   netbsd*)
118     SYS=netbsd
119     ;;
120   dragonfly*)
121     SYS=dragonfly
122     ;;
123   darwin*)
125     dnl Force gcc "-arch" flag
126     ARCH_flag=""
127     case "${host_cpu}" in
128       i?86)
129         ARCH_flag="-arch i386"
130       ;;
131       ppc64*)
132         ARCH_flag="-arch ppc64"
133       ;;
134       ppc*)
135         ARCH_flag="-arch ppc"
136       ;;
137       x86_64)
138         ARCH_flag="-arch x86_64"
139       ;;
140       arm*)
141         ac_cv_c_bigendian="no"
142         ac_cv_c_attribute_packed="no"
143       ;;
144     esac
146     SYS=darwin
147     CFLAGS="${CFLAGS} -D_INTL_REDIRECT_MACROS -std=gnu11 ${ARCH_flag}"
148     CXX="${CXX} -stdlib=libc++ -std=c++11"
149     CXXFLAGS="${CXXFLAGS} -D_INTL_REDIRECT_MACROS ${ARCH_flag}"
150     CPPFLAGS="${CPPFLAGS} ${ARCH_flag}"
151     OBJCFLAGS="${OBJCFLAGS} -D_INTL_REDIRECT_MACROS -std=gnu11 ${ARCH_flag} -Werror=partial-availability"
152     LDFLAGS="${LDFLAGS} -Wl,-headerpad_max_install_names ${ARCH_flag}"
153     VLC_ADD_LIBS([libvlc vlc],[-Wl,-undefined,dynamic_lookup,-framework,AppKit])
154     VLC_ADD_LIBS([libvlccore],[-Wl,-framework,CoreFoundation,-framework,CoreServices])
156     AC_EGREP_CPP(yes,
157             [#import <TargetConditionals.h>
158              #if TARGET_OS_IPHONE
159              yes
160              #endif],
161              [HAVE_IOS="1"],
162              [HAVE_OSX="1"])
164     AC_EGREP_CPP(yes,
165             [#import <TargetConditionals.h>
166              #if TARGET_OS_TV
167              yes
168              #endif],
169              [HAVE_TVOS="1"
170              HAVE_IOS="0"
171              HAVE_OSX="0"
172              ],)
174     dnl
175     dnl  Handle Mac OS X SDK flags
176     dnl
177     AC_ARG_WITH(macosx-sdk,
178       AS_HELP_STRING([--with-macosx-sdk=DIR],
179         [compile using the SDK in DIR]))
180     if test "${with_macosx_sdk}" != "" ; then
181         test ! -d "${with_macosx_sdk}" && AC_MSG_ERROR([SDK "${with_macosx_sdk}" not found])
182         CPP="${CPP} -isysroot ${with_macosx_sdk}"
183         CC="${CC} -isysroot ${with_macosx_sdk}"
184         CXX="${CXX} -isysroot ${with_macosx_sdk}"
185         OBJC="${OBJC} -isysroot ${with_macosx_sdk}"
186         LD="${LD} -syslibroot ${with_macosx_sdk}"
187     fi
188     AC_ARG_WITH(macosx-version-min,
189       AS_HELP_STRING([--with-macosx-version-min=VERSION],
190         [compile for Mac OS X VERSION and above]))
191     if test "${with_macosx_version_min}" != "" ; then
192         CPP="${CPP} -mmacosx-version-min=${with_macosx_version_min}"
193         CC="${CC} -mmacosx-version-min=${with_macosx_version_min}"
194         CXX="${CXX} -mmacosx-version-min=${with_macosx_version_min}"
195         OBJC="${OBJC} -mmacosx-version-min=${with_macosx_version_min}"
196         LD="${LD} -mmacosx_version_min=${with_macosx_version_min}"
197     fi
198     ;;
199   *mingw32* | *cygwin* | *wince* | *mingwce*)
200     dnl Force libtool to not link to (shared) libgcc_s when detecting C++ dependencies
201     dnl When doing this test with -static-libgcc it will link on (static) libgcc_eh
202     CXXFLAGS="${CXXFLAGS} -static-libgcc"
203     AC_CHECK_TOOL(WINDRES, windres, :)
204     AC_CHECK_TOOL(OBJCOPY, objcopy, :)
205     AC_PREPROC_IFELSE([AC_LANG_PROGRAM(
206       [[#ifdef _WIN32_WINNT
207        # error _WIN32_WINNT already defined
208        #endif
209       ]],[[;]])
210     ],[
211       AC_DEFINE([_WIN32_WINNT], 0x0601, [Define to '0x0601' for Windows 7 APIs.])
212     ])
213     AC_DEFINE([_WIN32_IE], 0x0600, [Define to '0x0600' for IE 6.0 (and shell) APIs.])
214     AC_DEFINE([_UNICODE], [1], [Define to 1 for Unicode (Wide Chars) APIs.])
215     AC_DEFINE([UNICODE], [1], [Define to 1 for Unicode (Wide Chars) APIs.])
216     AC_DEFINE([_ISOC99_SOURCE], [1], [Extensions to ISO C89 from ISO C99.])
217     AC_DEFINE([_ISOC11_SOURCE], [1], [Extensions to ISO C99 from ISO C11.])
218     AC_DEFINE([_POSIX_SOURCE], [1], [IEEE Std 1003.1.])
219     AC_DEFINE([_POSIX_C_SOURCE], [200809L], [IEEE Std 1003.1.])
220     AC_DEFINE([_XOPEN_SOURCE], [700], [POSIX and XPG 7th edition])
221     AC_DEFINE([_XOPEN_SOURCE_EXTENDED], [1], [XPG things and X/Open Unix extensions.])
222     AC_DEFINE([_BSD_SOURCE], [1], [ISO C, POSIX, and 4.3BSD things.])
223     AC_DEFINE([_SVID_SOURCE], [1], [ISO C, POSIX, and SVID things.])
225     case "${host_os}" in
226       *mingw32*)
227         SYS=mingw32
228         ;;
229       *cygwin*)
230         dnl Check if we are using the mno-cygwin mode in which case we are
231         dnl actually dealing with a mingw32 compiler.
232         AC_EGREP_CPP(yes,
233             [#ifdef _WIN32
234              yes
235              #endif],
236             SYS=mingw32, AC_MSG_ERROR([VLC requires -mno-cygwin]))
237         ;;
238     esac
240     if test "${SYS}" = "mingw32"; then
241         # DEP, ASLR, NO SEH
242         LDFLAGS="${LDFLAGS} -Wl,--nxcompat -Wl,--no-seh -Wl,--dynamicbase"
244         AC_CHECK_PROGS(U2D, [unix2dos todos], unix2dos)
245         ac_default_prefix="`pwd`/_win32"
246         DESTDIR="`pwd`/_win32/"
248         dnl
249         dnl NSIS/MSI Installer prefix and WIN64
250         dnl
251         case "${host_cpu}" in
252             amd64|x86_64|aarch64)
253                 HAVE_WIN64="1"
254                 WINDOWS_ARCH="x64"
255                 PROGRAMFILES="PROGRAMFILES64"
256                 LDFLAGS="${LDFLAGS} -Wl,--high-entropy-va -Wl,--image-base,0x140000000"
257             ;;
258             *)
259                 WINDOWS_ARCH="x86"
260                 PROGRAMFILES="PROGRAMFILES"
261             ;;
262         esac
263         AC_SUBST([WINDOWS_ARCH])
264         AC_SUBST([PROGRAMFILES])
266     fi
267     ;;
268   *nto*)
269     SYS=nto
270     ;;
271   solaris*)
272     SYS=solaris
273     ;;
274   hpux*)
275     SYS=hpux
276     ;;
277   *os2*)
278     SYS=os2
279     LDFLAGS="${LDFLAGS} -Zomf -Zbin-files -Zargs-wild -Zhigh-mem"
280     AC_LIBOBJ([freeaddrinfo])
281     AC_LIBOBJ([gai_strerror])
282     AC_CHECK_FUNCS([if_nametoindex])
283     ;;
284   *nacl*)
285     SYS=nacl
286     AC_DEFINE([_XOPEN_SOURCE], [700], [POSIX and XPG 7th edition])
287     AC_LIBOBJ([sigwait])
288     AC_LIBOBJ([recvmsg])
289     AC_LIBOBJ([sendmsg])
290     ;;
291   *)
292     SYS="${host_os}"
293     ;;
294 esac
296 dnl WinRT
297 AC_ARG_ENABLE([winstore_app],
298      AS_HELP_STRING([--enable-winstore-app],
299                     [Build targetted for Windows Store apps (default disabled)]))
301 vlc_winstore_app=0
302 AS_IF([test "${SYS}" = "mingw32"],[
303   LIBCOM="-lole32"
304   AS_IF([test "${enable_winstore_app}" = "yes"], [
305     vlc_winstore_app=1
306     LIBCOM=""
307      VLC_ADD_LIBS([libvlccore], [-lruntimeobject])
308      AC_LIBOBJ([gai_strerror])
309     ],[])
310   AC_SUBST([LIBCOM])
311   ])
312 AC_DEFINE_UNQUOTED(VLC_WINSTORE_APP, ${vlc_winstore_app}, [Define to 1 if you want to build for Windows Store apps])
314 AM_CONDITIONAL([HAVE_LINUX],   [test "${SYS}" = "linux"])
315 AM_CONDITIONAL([HAVE_OS2],     [test "${SYS}" = "os2"])
317 AM_CONDITIONAL([HAVE_DARWIN],  [test "${SYS}" = "darwin"])
318 AM_CONDITIONAL([HAVE_IOS],     [test "${HAVE_IOS}" = "1"])
319 AM_CONDITIONAL([HAVE_OSX],     [test "${HAVE_OSX}" = "1"])
320 AM_CONDITIONAL([HAVE_TVOS],    [test "${HAVE_TVOS}" = "1"])
322 AM_CONDITIONAL([HAVE_NACL],    [test "${SYS}" = "nacl"])
323 AM_CONDITIONAL([HAVE_LIBANL],  [test "${HAVE_LIBANL}" = "1"])
325 AM_CONDITIONAL([HAVE_WIN32],   [test "${SYS}" = "mingw32"])
326 AM_CONDITIONAL([HAVE_WIN64],   [test "${HAVE_WIN64}" = "1"]) dnl Only used for the packaging
327 AM_CONDITIONAL([HAVE_WINSTORE], [test "$vlc_winstore_app" = "1"])
328 AM_CONDITIONAL([HAVE_WIN32_DESKTOP], [test "${SYS}" = "mingw32" -a "$vlc_winstore_app" = "0"])
331 dnl Sadly autoconf does not think about testing foo.exe when ask to test
332 dnl for program foo on win32
333 case "${build_os}" in
334     cygwin|msys|mingw32)
335         ac_executable_extensions=".exe"
336         BUILDEXEEXT=".exe"
337     ;;
338     os2*)
339         BUILDEXEEXT=".exe"
340     ;;
341     *)
342     ;;
343 esac
344 AC_SUBST([BUILDEXEEXT])
346 dnl Android is linux, but a bit different
347 AS_IF([test "$SYS" = linux],[
348     AC_MSG_CHECKING([for an Android system])
349     AC_PREPROC_IFELSE([AC_LANG_PROGRAM(
350         [[#ifndef __ANDROID__
351          # error Not Android
352          #endif
353         ]],[[;]])
354     ],[
355       HAVE_ANDROID="1"
356       AC_MSG_RESULT([yes])
357     ],[
358       AC_MSG_RESULT([no])
359     ])
361 AM_CONDITIONAL([HAVE_ANDROID], [test "${HAVE_ANDROID}" = "1"])
363 dnl Tizen (minimum SDK version: 2.3)
364 AS_IF([test "$SYS" = linux],[
365     AC_MSG_CHECKING([for Tizen])
366     AC_PREPROC_IFELSE([AC_LANG_PROGRAM(
367         [[#include <tizen.h>
368         ]],[[;]])
369     ],[
370       HAVE_TIZEN="1"
371       AC_DEFINE([HAVE_TIZEN_SDK], [1], [Define to 1 if vlc is built against Tizen SDK])
372       AC_MSG_RESULT([yes])
373     ],[
374       AC_MSG_RESULT([no])
375     ])
377 AM_CONDITIONAL([HAVE_TIZEN], [test "${HAVE_TIZEN}" = "1"])
380 dnl  Check for the contrib directory
382 AC_ARG_WITH(contrib,
383   AS_HELP_STRING([--with-contrib[=DIR]],
384     [search for 3rd party libraries in DIR/include and DIR/lib])
386 AC_MSG_CHECKING([for 3rd party libraries path])
387 AS_IF([test -z "${with_contrib}" || test "${with_contrib}" = "yes"], [
388   CONTRIB_DIR="${srcdir}/contrib/${host}"
389   AS_IF([test ! -d "${CONTRIB_DIR}"], [
390     echo "${CONTRIB_DIR} not found" >&AS_MESSAGE_LOG_FD
391     CONTRIB_DIR="${srcdir}/contrib/`$CC -dumpmachine`"
392     AS_IF([test ! -d "${CONTRIB_DIR}"], [
393       echo "${CONTRIB_DIR} not found" >&AS_MESSAGE_LOG_FD
394       CONTRIB_DIR=""
395       AC_MSG_RESULT([not found])
396     ])
397   ])
398 ], [
399   AS_IF([test "${with_contrib}" != "no"], [
400     CONTRIB_DIR="${with_contrib}"
401   ], [
402     CONTRIB_DIR=""
403     AC_MSG_RESULT([disabled])
404   ])
406 AS_IF([test -n "${CONTRIB_DIR}"], [
407   AS_IF([test -d "${CONTRIB_DIR}/lib"],[
408     CONTRIB_DIR=`cd "${CONTRIB_DIR}" && pwd`
409   ], [
410     echo "${CONTRIB_DIR}/lib not found" >&AS_MESSAGE_LOG_FD
411     CONTRIB_DIR=""
412     AC_MSG_RESULT([not usable])
413   ])
416 AS_IF([test -n "${CONTRIB_DIR}"], [
417   AC_MSG_RESULT([${CONTRIB_DIR}])
418   CPPFLAGS="${CPPFLAGS} -I${CONTRIB_DIR}/include"
419   CFLAGS="${CFLAGS} -I${CONTRIB_DIR}/include"
420   CXXFLAGS="${CXXFLAGS} -I${CONTRIB_DIR}/include"
421   OBJCFLAGS="${OBJCFLAGS} -I${CONTRIB_DIR}/include -F${CONTRIB_DIR} -F${CONTRIB_DIR}/Frameworks"
422   export PKG_CONFIG_PATH="${CONTRIB_DIR}/lib/pkgconfig:${CONTRIB_DIR}/share/pkgconfig:$PKG_CONFIG_PATH"
423   LDFLAGS="${LDFLAGS} -L${CONTRIB_DIR}/lib"
425   AS_IF([test -z "$LUAC"], [
426     dnl Old contribs mixed cross-tools and cross-compiled executables
427     AS_IF([test -x "${CONTRIB_DIR}/bin/luac${BUILDEXEEXT}"], [
428       LUAC="${CONTRIB_DIR}/bin/luac${BUILDEXEEXT}"
429     ])
431     dnl Newer contribs follow usual name space rules
432     AS_IF([test -x "${CONTRIB_DIR}/../bin/${host_alias}-luac${BUILDEXEEXT}"], [
433       LUAC="${CONTRIB_DIR}/../bin/${host_alias}-luac${BUILDEXEEXT}"
434     ])
435   ])
437   AS_IF([test "${SYS}" = "darwin"], [
438     export LD_LIBRARY_PATH="${CONTRIB_DIR}/lib:$LD_LIBRARY_PATH"
439     export DYLD_LIBRARY_PATH="${CONTRIB_DIR}/lib:$DYLD_LIBRARY_PATH"
440   ])
441 ], [
442   AS_IF([test -n "${with_contrib}" && test "${with_contrib}" != "no"], [
443     AC_MSG_ERROR([Third party libraries not found!])
444   ])
446 AC_SUBST([CONTRIB_DIR])
448 dnl Add extras/tools to the PATH
449 TOOLS_DIR="${srcdir}/extras/tools/build/bin"
450 AS_IF([test -d "${TOOLS_DIR}"], [
451     TOOLS_DIR=`cd "${TOOLS_DIR}" && pwd`
452     export PATH="${TOOLS_DIR}":$PATH
456 dnl  Libtool
457 dnl  It's very bad, but our former custom system was worst
458 dnl  -- Courmisch
461 dnl override platform specific check for dependent libraries
462 dnl otherwise libtool linking of shared libraries will
463 dnl fail on anything other than pass_all.
464 AC_CACHE_VAL(lt_cv_deplibs_check_method,
465     [lt_cv_deplibs_check_method=pass_all])
467 LT_INIT([dlopen win32-dll shared disable-static])
468 LT_LANG([C++])
469 LT_LANG([Windows Resource])
471 DOLT
473 lt_cv_deplibs_check_method=pass_all
475 AS_IF([test "${enable_shared}" = "no" -a "${enable_vlc}" != "no"], [
476   AC_MSG_ERROR([VLC is based on plugins. Shared libraries cannot be disabled.])
480 dnl Gettext stuff
482 AM_GNU_GETTEXT_VERSION([0.19.8])
483 AM_GNU_GETTEXT([external], [need-formatstring-macros])
486 dnl Iconv stuff
488 AM_ICONV
491 dnl checks for mingw
492 AS_IF([test "${SYS}" = "mingw32"], [
494 AC_PREPROC_IFELSE([AC_LANG_SOURCE([
495 #if !defined(__MINGW32__)
496 # error Not compiling with mingw
497 #endif
498     ])], [
500 dnl Check for broken versions of mingw-runtime compatability library
501     AC_MSG_CHECKING(for broken mingw-runtime)
502     AC_PREPROC_IFELSE([AC_LANG_SOURCE([
503 #include <_mingw.h>
504 #if defined(__MINGW64_VERSION_MAJOR)
505 # if __MINGW64_VERSION_MAJOR < 5
506 #  error Update your mingw-w64! This one is too old.
507 # endif
508 #else
509 # error You cannot compile with Mingw. Use Mingw-w64!
510 #endif
511     ])], [
512         AC_MSG_RESULT([ok])
513     ], [
514         AC_MSG_RESULT([present])
515         AC_MSG_ERROR([LibVLC requires Mingw-w64 version 5.0 or higher!])
516     ])
518     dnl force use of mingw provided c99 *printf over msvcrt
519     CPPFLAGS="${CPPFLAGS} -D__USE_MINGW_ANSI_STDIO=1"
521     dnl Check for the need to include the mingwex lib for mingw32
522     VLC_SAVE_FLAGS
523     AC_CHECK_LIB([mingwex], [opendir],
524         AC_CHECK_LIB([mingw32], [opendir],,
525             [VLC_ADD_LIBS([libvlccore],[-lmingwex])])
526     )
527     VLC_RESTORE_FLAGS
528     ], [
529         AC_MSG_RESULT([Not compiling with mingw])
530     ])
532     dnl Check for fnative-struct or mms-bitfields support for mingw32
533     AX_CHECK_COMPILE_FLAG([-mms-bitfields], [
534         AX_APPEND_FLAG([-mms-bitfields], [CFLAGS])
535         AX_APPEND_FLAG([-mms-bitfields], [CXXFLAGS])
536         # Check for the warning flag without "-Wno-", GCC accepts
537         # -Wno-<anything> for unsupported warnings, which can trigger
538         # other warnings instead.
539         AX_CHECK_COMPILE_FLAG([-Wincompatible-ms-struct], [
540             AX_APPEND_FLAG([-Wno-incompatible-ms-struct], [CFLAGS])
541             AX_APPEND_FLAG([-Wno-incompatible-ms-struct], [CXXFLAGS])
542         ])
543     ], [
544         AX_CHECK_COMPILE_FLAG([-fnative-struct], [
545             AX_APPEND_FLAG([-fnative-struct], [CFLAGS])
546             AX_APPEND_FLAG([-fnative-struct], [CXXFLAGS])
547         ])
548     ])
553 dnl Buggy glibc prevention. Purposedly not cached.
554 dnl See sourceware.org bugs 5058 and 5443.
555 dnl Ubuntu alone has 20 bug numbers for this...
557 AC_MSG_CHECKING(for buggy GNU/libc versions)
558 AC_PREPROC_IFELSE([AC_LANG_SOURCE([
559 #include <limits.h>
560 #if defined (__GLIBC__) && (__GLIBC__ == 2) \
561   && (__GLIBC_MINOR__ >= 5) && (__GLIBC_MINOR__ <= 7)
562 # error GNU/libc with dcgettext killer bug!
563 #endif
564 ])], [
565   AC_MSG_RESULT([not present])
566 ], [
567   AC_MSG_RESULT([found])
568   AS_IF([test "x${enable_nls}" != "xno"], [
569     AC_MSG_ERROR([Buggy GNU/libc (version 2.5 - 2.7) present. VLC would crash; there is no viable
570 work-around for this. Check with your distribution vendor on how to update the
571 glibc run-time. Alternatively, build with --disable-nls.])
572   ])
575 dnl Plugin compilation stuff
577 VLC_LIBRARY_SUFFIX
579 dnl Check for system libs needed
580 need_libc=false
582 dnl Check for usual libc functions
583 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])
584 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])
585 AC_REPLACE_FUNCS([gettimeofday])
586 AC_CHECK_FUNC(fdatasync,,
587   [AC_DEFINE(fdatasync, fsync, [Alias fdatasync() to fsync() if missing.])
590 VLC_REPLACE_DECL([realpath], [#include <stdlib.h>])
592 dnl mingw64 implements those as static inline, not functions with C linkage
593 VLC_REPLACE_DECL([asprintf], [#include <stdio.h>])
594 VLC_REPLACE_DECL([vasprintf], [#include <stdio.h>])
595 VLC_REPLACE_DECL([gmtime_r], [#include <time.h>])
596 VLC_REPLACE_DECL([localtime_r], [#include <time.h>])
598 dnl C11 static_assert()
599 AC_MSG_CHECKING([for static_assert in assert.h])
600 AC_LINK_IFELSE([AC_LANG_PROGRAM([#include <assert.h>], [
601 static_assert(1, "The impossible happened.");
602 ])], [
603   AC_MSG_RESULT([yes])
604   AC_DEFINE([HAVE_STATIC_ASSERT], [1], [Define to 1 if <assert.h> defines static_assert.])
605 ], [
606   AC_MSG_RESULT([no])
609 # Windows CE does not have strcoll()
610 AC_FUNC_STRCOLL
612 dnl Check for non-standard system calls
613 case "$SYS" in
614   "linux")
615     AC_CHECK_FUNCS([eventfd vmsplice sched_getaffinity recvmmsg memfd_create])
616     ;;
617   "mingw32")
618     AC_CHECK_FUNCS([_lock_file])
619     ;;
620 esac
622 AH_BOTTOM([#include <vlc_fixups.h>])
624 dnl Check for struct pollfd
625 AC_CHECK_TYPES([struct pollfd],,,
626 [#include <sys/types.h>
627 #if HAVE_POLL
628 # include <poll.h>
629 #elif defined (_WIN32)
630 # include <winsock2.h>
631 #endif
634 dnl Check for struct timespec
635 AC_CHECK_TYPES([struct timespec],,,
636 [#include <time.h>])
638 dnl Check for max_align_t
639 AC_CHECK_TYPES([max_align_t],,,
640 [#include <stddef.h>])
642 dnl Checks for socket stuff
643 VLC_SAVE_FLAGS
644 SOCKET_LIBS=""
645 AC_SEARCH_LIBS(connect, [socket], [
646   AS_IF([test "$ac_cv_search_connect" != "none required"], [
647     SOCKET_LIBS="$ac_cv_search_connect"
648   ])
649 ], [
650   AS_IF([test "${SYS}" = "mingw32"], [
651     SOCKET_LIBS="-lws2_32 -liphlpapi"
652   ])
655 AC_SEARCH_LIBS([inet_pton], [nsl], [
656  AS_IF([test "$ac_cv_search_inet_pton" != "none required"], [
657     SOCKET_LIBS="$ac_cv_search_inet_pton $SOCKET_LIBS"
658   ])
659 ],, [${SOCKET_LIBS}])
661 LIBS="${LIBS} ${SOCKET_LIBS}"
662 AC_LINK_IFELSE([
663     AC_LANG_PROGRAM([#ifdef _WIN32
664         #include <ws2tcpip.h>
665         #include <windows.h>
666         # if _WIN32_WINNT < 0x600
667         #  error Needs vista+
668         # endif
669         #else
670         #include <sys/socket.h>
671         #include <arpa/inet.h>
672         #endif], [
673         char dst[[sizeof(struct in_addr)]];
674         inet_pton(AF_INET, "127.0.0.1", dst);
675     ])],[AC_DEFINE([HAVE_INET_PTON],[1],[Define to 1 if you have inet_pton function])],[AC_LIBOBJ([inet_pton])])
676 AC_CHECK_TYPES([struct if_nameindex],,,[#include <net/if.h>])
677 AC_CHECK_FUNCS([if_nameindex])
678 VLC_RESTORE_FLAGS
679 AC_SUBST([SOCKET_LIBS])
681 dnl Check for socklen_t
682 AH_TEMPLATE(socklen_t, [Define to `int' if <sys/socket.h> does not define.])
683 AC_CACHE_CHECK([for socklen_t in sys/socket.h], dnl ` (fix VIM syntax highlight
684 ac_cv_type_socklen_t,
685 [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([
686 [#include <sys/types.h>
687 #ifdef _WIN32
688 # include <winsock2.h>
689 # include <ws2tcpip.h>
690 #else
691 # include <sys/socket.h>
692 #endif]], [[socklen_t len; len = 0;]])],
693 ac_cv_type_socklen_t=yes,
694 ac_cv_type_socklen_t=no)])
695 AS_IF([test "$ac_cv_type_socklen_t" = no],
696  [AC_DEFINE(socklen_t, int)])
698 dnl Check for struct sockaddr_storage
699 AH_TEMPLATE(sockaddr_storage, [Define to `sockaddr' if <sys/socket.h> does not define.]) dnl ` (fix VIM syntax highlight
700 AH_TEMPLATE(ss_family, [Define to `sa_family' if <sys/socket.h> does not define.]) dnl ` (fix VIM syntax highlight
701 AC_CACHE_CHECK([for struct sockaddr_storage], ac_cv_struct_sockaddr_storage,
702   [AC_TRY_COMPILE(
703     [#include <sys/types.h>
704      #if defined( _WIN32 )
705      # include <winsock2.h>
706      #else
707      # include <sys/socket.h>
708      #endif], [struct sockaddr_storage addr;],
709      ac_cv_struct_sockaddr_storage=yes,
710      ac_cv_struct_sockaddr_storage=no)])
711 AS_IF([test "${ac_cv_struct_sockaddr_storage}" = no], [
712   AC_DEFINE(sockaddr_storage, sockaddr)
713   AC_DEFINE(ss_family, sa_family)
716 dnl FreeBSD has a gnugetopt library for this:
717 GNUGETOPT_LIBS=""
718 AC_CHECK_FUNC(getopt_long,, [
719   AC_CHECK_LIB([gnugetopt],[getopt_long], [
720     GNUGETOPT_LIBS="-lgnugetopt"
721   ])
723 AC_SUBST([GNUGETOPT_LIBS])
725 AC_CHECK_LIB([m], [cos], [
726   LIBM="-lm"
727 ], [
728   LIBM=""
730 AC_SUBST([LIBM])
732 AC_CHECK_LIB([m], [lrintf], [
733   AC_DEFINE(HAVE_LRINTF, 1, [Define to 1 if you have the lrintf function])
734   VLC_ADD_LIBS([skins2],[-lm])
736 AC_CHECK_LIB([m], [nanf],
737   AC_DEFINE(HAVE_NANF, 1, [Define to 1 if you have the NANF function])
739 AC_CHECK_LIB([m], [sincos], [
740   AC_DEFINE(HAVE_SINCOS, 1, [Define to 1 if you have the sincos function.])
741 ], [
742   AC_LIBOBJ([sincos])
745 AC_MSG_CHECKING([_Thread_local support])
746 AC_COMPILE_IFELSE([AC_LANG_SOURCE([_Thread_local int foo = 0;
747                    int main() {}])], [
748     AC_MSG_RESULT([ok])
749     AC_DEFINE(HAVE_THREAD_LOCAL, 1, [Defined to 1 if C11 _Thread_local storage qualifier is supported])
750 ],[ AC_MSG_RESULT([no])])
752 dnl __STDC_NO_THREADS__ can't be trusted on some platforms.
753 dnl check for its availability explicitely
754 AC_CHECK_HEADERS([threads.h])
756 AC_CHECK_LIB([anl],[getaddrinfo_a],[
757   AC_DEFINE(HAVE_LIBANL, 1, [Define to 1 if you have the anl library])
760 dnl Check for dynamic plugins
761 LIBDL=""
762 have_dynamic_objects="no"
763 VLC_SAVE_FLAGS
764 AC_SEARCH_LIBS(dlsym, [dl svld], [
765   AS_IF([test "$ac_cv_search_dlsym" != "none required"], [
766     LIBDL="$ac_cv_search_dlsym"
767   ])
768   have_dynamic_objects="yes"
770 VLC_RESTORE_FLAGS
772 # Windows
773 AS_IF([test "${SYS}" = "mingw32"], [
774   LIBDL=""
775   have_dynamic_objects="yes" #assume we can use shared objects
778 AC_ARG_WITH([libfuzzer],
779     AS_HELP_STRING([--with-libfuzzer=DIR],
780         [use libFuzzer library from DIR and triggers sanitize coverage (default disabled)]),
781      [],
782      [with_libfuzzer=no])
783 AS_VAR_IF(with_libfuzzer, no, [], [
784     enable_shared=no
785     enable_static=yes
786     enable_vlc=no
788 AM_CONDITIONAL([HAVE_LIBFUZZER], [test "${with_libfuzzer}" != "no"])
790 AS_IF([test "${enable_shared}" = "no"], [
791   have_dynamic_objects=no
793 AM_CONDITIONAL([HAVE_DYNAMIC_PLUGINS], [test "${have_dynamic_objects}" != "no"])
795 AC_SUBST([LIBDL])
797 AC_SEARCH_LIBS([clock_nanosleep], [rt pthread], [
798   AS_IF([test "$ac_cv_search_clock_nanosleep" != "none required"], [
799     LIBRT="$ac_cv_search_clock_nanosleep"
800   ])
801 ], [
802   AC_SEARCH_LIBS([nanosleep], [rt pthread posix4], [
803     AS_IF([test "$ac_cv_search_nanosleep" != "none required"], [
804       LIBRT="$ac_cv_search_nanosleep"
805     ])
806   ])
808 AC_SUBST([LIBRT])
811 dnl Check for headers
814 dnl  POSIX
815 AC_CHECK_HEADERS([arpa/inet.h pthread.h search.h sys/shm.h sys/socket.h sys/uio.h])
816 AC_CHECK_HEADERS([net/if.h], [], [],
818 #include <sys/types.h>
819 #include <sys/socket.h>
821 AC_CHECK_HEADER([syslog.h], [have_syslog="yes"], [have_syslog="no"])
822 AM_CONDITIONAL([HAVE_SYSLOG], [test "$have_syslog" = "yes"])
824 dnl  BSD
825 AC_CHECK_HEADERS([netinet/tcp.h netinet/udplite.h sys/param.h sys/mount.h])
827 dnl  GNU/Linux
828 AC_CHECK_HEADERS([features.h getopt.h linux/dccp.h linux/magic.h mntent.h sys/eventfd.h])
830 dnl  MacOS
831 AC_CHECK_HEADERS([xlocale.h])
833 dnl Check if C++ headers define locale_t
834 AC_LANG_PUSH(C++)
835 AC_CACHE_CHECK([if C++ headers define locale_t],
836   [ac_cv_cxx_locale_t],
837   [ac_cv_cxx_locale_t=no
838    AC_TRY_COMPILE([#include <locale>], [locale_t loc;],
839                     [ac_cv_cxx_locale_t=yes])])
840 if test "${ac_cv_cxx_locale_t}" != "no"; then
841   AC_DEFINE(HAVE_CXX_LOCALE_T, 1, Define to 1 if C++ headers define locale_t)
843 AC_LANG_POP(C++)
845 dnl LP64 and LLP64 architectures had better define ssize_t by themselves...
846 AH_TEMPLATE(ssize_t, [Define to `int' if <stddef.h> does not define.]) dnl ` (fix VIM syntax highlight
847 AC_CHECK_TYPE(ssize_t,, [
848   AC_DEFINE(ssize_t, int)
851 dnl It seems that autoconf detects pkg-config only during the first
852 dnl PKG_CHECK_MODULES from configure.ac - which makes sense. But in our case,
853 dnl it is nested within a conditional block, so it was not working right.
854 dnl Make PKG_CONFIG_PATH precious so that it appears in the help and get saved
855 AC_ARG_VAR(PKG_CONFIG_PATH,
856        [Paths where to find .pc not at the default location])
857 PKG_PROG_PKG_CONFIG()
859 dnl On some OS we need static linking
860 AS_IF([test -n "${PKG_CONFIG}" ],[
861     AS_IF([test "${SYS}" = "mingw32" -o "${SYS}" = "darwin" -o "${SYS}" = "os2" ],[
862         PKG_CONFIG="${PKG_CONFIG} --static"
863     ])
868 dnl Check for zlib.h and -lz if available
870 AC_CHECK_HEADERS([zlib.h], [ have_zlib=yes ], [ have_zlib=no ])
871 AM_CONDITIONAL([HAVE_ZLIB], [ test "${have_zlib}" = "yes" ])
872 if test "${have_zlib}" = "yes"
873 then
874   VLC_ADD_LIBS([sap],[-lz])
879 dnl Domain name i18n support via GNU libidn
881 PKG_CHECK_MODULES([IDN], [libidn], [
882   have_libidn="yes"
883   AC_DEFINE([HAVE_IDN], 1, [Define to 1 if you have GNU libidn.])
884 ], [
885   have_libidn="no"
889 dnl Check for dbus
890 AC_ARG_ENABLE([dbus],
891   AS_HELP_STRING([--enable-dbus],
892     [compile D-Bus message bus support (default enabled)]))
893 have_dbus="no"
894 AS_IF([test "${enable_dbus}" != "no"], [
895   PKG_CHECK_MODULES(DBUS, [dbus-1 >= 1.6.0], [
896     have_dbus="yes"
897   ], [
898     AS_IF([test -n "${enable_dbus}"], [
899       AC_MSG_ERROR([${DBUS_PKG_ERRORS}.])
900     ], [
901       AC_MSG_WARN([${DBUS_PKG_ERRORS}.])
902     ])
903   ])
905 AM_CONDITIONAL([HAVE_DBUS], [test "${have_dbus}" = "yes"])
908 dnl Check for systemd
909 PKG_CHECK_MODULES([SYSTEMD], [libsystemd], [
910   have_systemd="yes"
911 ], [
912   AC_MSG_WARN([${SYSTEMD_PKG_ERRORS}.])
914 AM_CONDITIONAL([HAVE_SYSTEMD], [test "${have_systemd}" = "yes"])
917 EXTEND_HELP_STRING([Optimization options:])
919 dnl  Compiler warnings
922 AX_APPEND_COMPILE_FLAGS([-Wall -Wextra -Wsign-compare -Wundef -Wpointer-arith -Wvolatile-register-var -Wformat -Wformat-security -Wduplicated-branches -Wduplicated-cond], [CFLAGS])
923 AX_APPEND_COMPILE_FLAGS([-Wall -Wextra -Wsign-compare -Wundef -Wpointer-arith -Wvolatile-register-var -Wformat -Wformat-security -Wduplicated-branches -Wduplicated-cond], [CXXFLAGS])
925 AX_APPEND_COMPILE_FLAGS([-Wbad-function-cast -Wwrite-strings -Wmissing-prototypes -Werror-implicit-function-declaration -Winit-self -Wlogical-op -Wshadow=local -Wmultistatement-macros], [CFLAGS])
926 AX_APPEND_COMPILE_FLAGS([-pipe], [CFLAGS])
929 dnl  Debugging mode
931 AC_ARG_ENABLE([debug],
932   AS_HELP_STRING([--enable-debug],
933     [build with run-time assertions (default disabled)]),,
934   [enable_debug="no"])
935 AH_TEMPLATE(NDEBUG,
936             [Define to 1 if debug code should NOT be compiled])
937 AS_IF([test "${enable_debug}" != "no"], [
938   AC_CHECK_HEADERS([valgrind/valgrind.h])
939 ], [
940   AC_DEFINE(NDEBUG)
944 dnl  Profiling
946 AC_ARG_ENABLE([gprof],
947   AS_HELP_STRING([--enable-gprof],[profile with gprof (default disabled)]),,
948   [enable_gprof="no"])
949 AS_IF([test "${enable_gprof}" != "no"], [
950   CFLAGS="${CFLAGS} -pg"
951   CXXFLAGS="${CXXFLAGS} -pg"
952   OBJCFLAGS="${OBJCFLAGS} -pg"
953   LDFLAGS="${LDFLAGS} -pg"
956 AC_ARG_ENABLE([cprof],
957   AS_HELP_STRING([--enable-cprof],[profile with cprof (default disabled)]),,
958   [enable_cprof="no"])
959 AS_IF([test "${enable_gprof}" != "no"], [
960   CFLAGS="${CFLAGS} -finstrument-functions"
961   CXXFLAGS="${CXXFLAGS} -finstrument-functions"
962   OBJCFLAGS="${OBJCFLAGS} -finstrument-functions"
963   LDFLAGS="${LDFLAGS} -finstrument-functions"
967 dnl  Test coverage
969 AC_ARG_ENABLE([coverage],
970   AS_HELP_STRING([--enable-coverage],
971     [build for test coverage (default disabled)]),,
972   [enable_coverage="no"])
973 AS_IF([test "${enable_coverage}" != "no"], [
974   CFLAGS="-fprofile-arcs -ftest-coverage ${CFLAGS}"
975   CXXFLAGS="-fprofile-arcs -ftest-coverage ${CXXFLAGS}"
976   LDFLAGS="-lgcov ${LDFLAGS}"
979 AS_IF([test "${SYS}" != "mingw32" -a "${SYS}" != "os2"], [
980   VLC_SAVE_FLAGS
981   CFLAGS="${CFLAGS} -fvisibility=hidden"
982   CXXFLAGS="${CXXFLAGS} -fvisibility=hidden"
983   OBJCFLAGS="${OBJCFLAGS} -fvisibility=hidden"
984   AC_CACHE_CHECK([if $CC accepts -fvisibility=hidden],
985                  [ac_cv_c_visibility_hidden], [
986     AC_COMPILE_IFELSE([AC_LANG_PROGRAM()], [
987       ac_cv_c_visibility_hidden=yes
988     ], [
989       ac_cv_c_visibility_hidden=no
990     ])
991   ])
992   AS_IF([test "${ac_cv_c_visibility_hidden}" = "no"], [VLC_RESTORE_FLAGS])
996 dnl Sanitizer flags
998 AC_ARG_WITH([sanitizer],
999     AS_HELP_STRING([--with-sanitizer=(address/memory/undefined/thread)],
1000         [build with sanitizer flags (default disabled)]),
1001      [],
1002      [with_sanitizer=no])
1004 AS_VAR_IF(with_sanitizer, no, [], [
1005     AX_CHECK_COMPILE_FLAG([-fsanitize=${with_sanitizer}], [
1006         AX_APPEND_FLAG([-fsanitize=${with_sanitizer}])
1007         AX_APPEND_FLAG([-fsanitize=${with_sanitizer}], [CXXFLAGS])
1008         AX_APPEND_FLAG([-fsanitize=${with_sanitizer}], [LDFLAGS])
1009     ], [
1010         AC_MSG_ERROR(["-fsanitize=${with_sanitizer} not supported!"])
1011     ])
1012     AX_APPEND_FLAG([-g])
1013     AX_APPEND_FLAG([-g], [CXXFLAGS])
1015     AS_IF([test -z "${with_sanitizer##*address*}" ], [
1016        AX_APPEND_COMPILE_FLAGS([-fsanitize-address-use-after-scope -fno-omit-frame-pointer -fsanitize=pointer-compare -fsanitize=pointer-subtract])
1017        AX_APPEND_COMPILE_FLAGS([-fsanitize-address-use-after-scope -fno-omit-frame-pointer -fsanitize=pointer-compare -fsanitize=pointer-subtract], [CXXFLAGS])
1018     ])
1019     AS_IF([test -z "${with_sanitizer##*memory*}" ], [
1020         AX_APPEND_COMPILE_FLAGS([-fPIE -pie])
1021         AX_APPEND_COMPILE_FLAGS([-fPIE -pie], [CXXFLAGS])
1022     ])
1023     AS_IF([test -z "${with_sanitizer##*thread*}" ], [
1024         AX_APPEND_COMPILE_FLAGS([-fPIE -pie])
1025         AX_APPEND_COMPILE_FLAGS([-fPIE -pie], [CXXFLAGS])
1026     ])
1030 dnl  Enable/disable optimizations
1032 AC_ARG_ENABLE([optimizations],
1033   AS_HELP_STRING([--disable-optimizations],
1034     [disable compiler optimizations (default enabled)]),,
1035   [enable_optimizations="yes"])
1037 dnl Check for various optimization flags
1038 AS_IF([test "${enable_optimizations}" != "no"], [
1040   dnl -O3 only in production builds
1041   AS_IF([test "${enable_debug}" = "no"], [
1042     VLC_SAVE_FLAGS
1043     CFLAGS="${CFLAGS} -O3"
1044     CXXFLAGS="${CXXFLAGS} -O3"
1045     OBJCFLAGS="${OBJCFLAGS} -O3"
1046     AC_CACHE_CHECK([if $CC accepts -O3],  [ac_cv_c_o3], [
1047       AC_COMPILE_IFELSE([AC_LANG_PROGRAM()], [
1048         ac_cv_c_o3=yes
1049       ], [
1050         ac_cv_c_o3=no
1051       ])
1052     ])
1053     AS_IF([test "${ac_cv_c_o3}" = "no"], [VLC_RESTORE_FLAGS])
1054   ])
1056   dnl Check for fast maths
1057   AX_APPEND_COMPILE_FLAGS([-fno-math-errno -funsafe-math-optimizations -fno-rounding-math -fno-signaling-nans -fcx-limited-range], [CFLAGS])
1058   AX_APPEND_COMPILE_FLAGS([-fno-math-errno -funsafe-math-optimizations -fno-rounding-math -fno-signaling-nans -fcx-limited-range], [CXXFLAGS])
1060 AH_BOTTOM([
1061 #if defined(_MSC_VER) && !defined(__clang__)
1062 # pragma fenv_access(off)
1063 # pragma fp_contract(on)
1064 #elif defined(__GNUC__)
1065 /* Not supported so far */
1066 #else
1067 # pragma STDC FENV_ACCESS OFF
1068 # pragma STDC FP_CONTRACT ON
1069 #endif
1072   dnl Check for -funroll-loops
1073   VLC_SAVE_FLAGS
1074   CFLAGS="${CFLAGS} -funroll-loops"
1075   CXXFLAGS="${CXXFLAGS} -funroll-loops"
1076   OBJCFLAGS="${OBJCFLAGS} -funroll-loops"
1077   AC_CACHE_CHECK([if $CC accepts -funroll-loops], [ac_cv_c_unroll_loops], [
1078     AC_COMPILE_IFELSE([AC_LANG_PROGRAM()], [
1079       ac_cv_c_unroll_loops=yes
1080     ], [
1081       ac_cv_c_unroll_loops=no
1082     ])
1083   ])
1084   AS_IF([test "${ac_cv_c_unroll_loops}" = "no"], [VLC_RESTORE_FLAGS])
1086   AS_IF([test "$enable_debug" = "no"], [
1087     dnl Check for -fomit-frame-pointer
1088     VLC_SAVE_FLAGS
1089     CFLAGS="${CFLAGS} -fomit-frame-pointer"
1090     CXXFLAGS="${CXXFLAGS} -fomit-frame-pointer"
1091     OBJCFLAGS="${OBJCFLAGS} -fomit-frame-pointer"
1092     AC_CACHE_CHECK([if $CC accepts -fomit-frame-pointer],
1093       [ac_cv_c_omit_frame_pointer], [
1094       AC_COMPILE_IFELSE([AC_LANG_PROGRAM()], [
1095         ac_cv_c_omit_frame_pointer=yes
1096       ], [
1097         ac_cv_c_omit_frame_pointer=no
1098       ])
1099     ])
1100     AS_IF([test "${ac_cv_c_omit_frame_pointer}" = "no"], [VLC_RESTORE_FLAGS])
1101   ])
1105 AC_ARG_ENABLE([ssp],
1106   AS_HELP_STRING([--disable-ssp],
1107   [disable stack smashing protection (default enabled for optimized builds)]), [],
1108   [enable_ssp="yes"])
1110 AS_IF([test "${enable_ssp}" != "no" -a "${enable_optimizations}" != "no"], [
1111   VLC_SAVE_FLAGS
1112   AX_APPEND_COMPILE_FLAGS([-fstack-protector-strong])
1113   AX_APPEND_COMPILE_FLAGS([-fstack-protector-strong], [CXXFLAGS])
1114   dnl Win32 requires linking to ssp for stack-protection
1115   AS_IF([test "${SYS}" = "mingw32"], [
1116       LDFLAGS="${LDFLAGS} -lssp"
1117       AC_CACHE_CHECK([if linker supports stack protectors], [ac_cv_ld_ssp], [
1118         AC_TRY_LINK([#include <stdio.h>],[char buf[100]; fgets(buf, sizeof(buf), stdin);], [
1119           ac_cv_ld_ssp="yes"
1120         ], [
1121           ac_cv_ld_ssp="no"
1122         ])
1123       ])
1124       AS_IF([test "${ac_cv_ld_ssp}" = "no"], [VLC_RESTORE_FLAGS])
1125   ])
1128 AS_IF([test "${SYS}" = "mingw32"], [
1129     dnl library for BCrypt APIs
1130     AS_IF([test "${vlc_winstore_app}" = 1],
1131           [LDFLAGS="${LDFLAGS} -lbcrypt"])
1134 VLC_SAVE_FLAGS
1135 LDFLAGS="${LDFLAGS} -Wl,-Bsymbolic"
1136 AC_CACHE_CHECK([if linker supports -Bsymbolic], [ac_cv_ld_bsymbolic], [
1137   AC_TRY_LINK([],, [
1138     ac_cv_ld_bsymbolic="-Wl,-Bsymbolic"
1139   ], [
1140     ac_cv_ld_bsymbolic=""
1141   ])
1143 VLC_RESTORE_FLAGS
1144 SYMBOLIC_LDFLAGS="${ac_cv_ld_bsymbolic}"
1145 AC_SUBST([SYMBOLIC_LDFLAGS])
1147 VLC_SAVE_FLAGS
1148 LDFLAGS="${LDFLAGS} -Wl,-z,defs"
1149 AC_CACHE_CHECK([if linker supports -z,defs], [ac_cv_ld_z_defs], [
1150   AC_TRY_LINK([],, [
1151     ac_cv_ld_z_defs="yes"
1152   ], [
1153     ac_cv_ld_z_defs="no"
1154   ])
1156 AS_IF([test "${ac_cv_ld_z_defs}" = "no"], [VLC_RESTORE_FLAGS])
1158 dnl Check for __attribute__((packed))
1159 AC_CACHE_CHECK([for __attribute__((packed))],
1160   [ac_cv_c_attribute_packed],
1161   [ac_cv_c_attribute_packed=no
1162    AC_TRY_COMPILE(, [struct __attribute__((__packed__)) foo { int a; } b; (void)b;],
1163                     [ac_cv_c_attribute_packed=yes])])
1164 if test "${ac_cv_c_attribute_packed}" != "no"; then
1165   AC_DEFINE(HAVE_ATTRIBUTE_PACKED, 1, Support for __attribute__((packed)) for structs)
1169 dnl  Check the CPU
1171 case "${host_cpu}" in
1172   "")
1173     ARCH=unknown
1174     ;;
1175   armv*)
1176     ARCH="arm"
1177     host_cpu="arm"
1178     ;;
1179   *)
1180     ARCH="${host_cpu}"
1181     ;;
1182 esac
1184 dnl Check for backtrace() support
1185 AC_CHECK_HEADERS([execinfo.h])
1186 AC_CHECK_FUNCS([backtrace])
1189 dnl  default modules
1191 ALIASES="${ALIASES} cvlc rvlc"
1194 dnl  Accelerated modules
1197 dnl  Check for fully working MMX intrinsics
1198 dnl  We need support for -mmmx, we need <mmintrin.h>, and we also need a
1199 dnl  working compiler (http://gcc.gnu.org/bugzilla/show_bug.cgi?id=23963)
1200 AC_ARG_ENABLE([mmx],
1201   AS_HELP_STRING([--disable-mmx],
1202     [disable MMX optimizations (default auto)]),,[
1203   case "${host_cpu}" in
1204     i?86|x86_64)
1205       enable_mmx="yes"
1206       ;;
1207     *)
1208       enable_mmx="no"
1209       ;;
1210   esac
1212 have_mmx="no"
1213 have_mmxext="no"
1214 AS_IF([test "${enable_mmx}" != "no"], [
1215   ARCH="${ARCH} mmx"
1216   VLC_SAVE_FLAGS
1217   CFLAGS="${CFLAGS} -mmmx"
1218   AC_CACHE_CHECK([if $CC groks MMX intrinsics], [ac_cv_c_mmx_intrinsics], [
1219     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([
1220 [#include <mmintrin.h>
1221 #include <stdint.h>
1222 uint64_t frobzor;]], [
1223 [__m64 a, b, c;
1224 a = b = c = (__m64)frobzor;
1225 a = _mm_slli_pi16(a, 3);
1226 a = _mm_adds_pi16(a, b);
1227 c = _mm_srli_pi16(c, 8);
1228 c = _mm_slli_pi16(c, 3);
1229 b = _mm_adds_pi16(b, c);
1230 a = _mm_unpacklo_pi8(a, b);
1231 frobzor = (uint64_t)a;]])], [
1232       ac_cv_c_mmx_intrinsics=yes
1233     ], [
1234       ac_cv_c_mmx_intrinsics=no
1235     ])
1236   ])
1237   VLC_RESTORE_FLAGS
1238   AS_IF([test "${ac_cv_c_mmx_intrinsics}" != "no"], [
1239     AC_DEFINE(HAVE_MMX_INTRINSICS, 1, [Define to 1 if MMX intrinsics are available.])
1240   ])
1242   VLC_SAVE_FLAGS
1243   CFLAGS="${CFLAGS} -mmmx"
1244   AC_CACHE_CHECK([if $CC groks MMX inline assembly], [ac_cv_mmx_inline], [
1245     AC_COMPILE_IFELSE([AC_LANG_PROGRAM(,[[
1246 void *p;
1247 asm volatile("packuswb %%mm1,%%mm2"::"r"(p):"mm1", "mm2");
1249     ], [
1250       ac_cv_mmx_inline=yes
1251     ], [
1252       ac_cv_mmx_inline=no
1253     ])
1254   ])
1255   AS_IF([test "${ac_cv_mmx_inline}" != "no"], [
1256     AC_DEFINE(CAN_COMPILE_MMX, 1, [Define to 1 inline MMX assembly is available.])
1257     have_mmx="yes"
1258   ])
1260   AC_CACHE_CHECK([if $CC groks MMX EXT inline assembly],
1261                  [ac_cv_mmxext_inline], [
1262     AC_COMPILE_IFELSE([AC_LANG_PROGRAM(,[[
1263 void *p;
1264 asm volatile("maskmovq %%mm1,%%mm2"::"r"(p):"mm1", "mm2");
1266     ], [
1267       ac_cv_mmxext_inline=yes
1268     ], [
1269       ac_cv_mmxext_inline=no
1270     ])
1271   ])
1272   VLC_RESTORE_FLAGS
1273   AS_IF([test "${ac_cv_mmxext_inline}" != "no"], [
1274     AC_DEFINE(CAN_COMPILE_MMXEXT, 1, [Define to 1 if MMX EXT inline assembly is available.])
1275     have_mmxext="yes"
1276   ])
1278 AM_CONDITIONAL([HAVE_MMX], [test "${have_mmx}" = "yes"])
1279 AM_CONDITIONAL([HAVE_MMXEXT], [test "${have_mmxext}" = "yes"])
1281 dnl  Check for fully workin SSE2 intrinsics
1282 dnl  We need support for -mmmx, we need <emmintrin.h>, and we also need a
1283 dnl  working compiler (http://gcc.gnu.org/bugzilla/show_bug.cgi?id=23963)
1284 AC_ARG_ENABLE([sse],
1285   AS_HELP_STRING([--disable-sse],
1286     [disable SSE (1-4) optimizations (default auto)]),, [
1287   case "${host_cpu}" in
1288     i?86|x86_64)
1289       enable_sse=yes
1290       ;;
1291     *)
1292       enable_sse=no
1293       ;;
1294   esac
1296 have_sse2="no"
1297 AS_IF([test "${enable_sse}" != "no"], [
1298   ARCH="${ARCH} sse sse2"
1300   VLC_SAVE_FLAGS
1301   CFLAGS="${CFLAGS} -msse2"
1302   AC_CACHE_CHECK([if $CC groks SSE2 intrinsics], [ac_cv_c_sse2_intrinsics], [
1303     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([
1304 [#include <emmintrin.h>
1305 #include <stdint.h>
1306 uint64_t frobzor;]], [
1307 [__m128i a, b, c;
1308 a = b = c = _mm_set1_epi64((__m64)frobzor);
1309 a = _mm_slli_epi16(a, 3);
1310 a = _mm_adds_epi16(a, b);
1311 c = _mm_srli_epi16(c, 8);
1312 c = _mm_slli_epi16(c, 3);
1313 b = _mm_adds_epi16(b, c);
1314 a = _mm_unpacklo_epi8(a, b);
1315 frobzor = (uint64_t)_mm_movepi64_pi64(a);]])], [
1316       ac_cv_c_sse2_intrinsics=yes
1317     ], [
1318       ac_cv_c_sse2_intrinsics=no
1319     ])
1320   ])
1321   VLC_RESTORE_FLAGS
1322   AS_IF([test "${ac_cv_c_sse2_intrinsics}" != "no"], [
1323     AC_DEFINE(HAVE_SSE2_INTRINSICS, 1, [Define to 1 if SSE2 intrinsics are available.])
1324   ])
1326   VLC_SAVE_FLAGS
1327   CFLAGS="${CFLAGS} -msse"
1328   AC_CACHE_CHECK([if $CC groks SSE inline assembly], [ac_cv_sse_inline], [
1329     AC_COMPILE_IFELSE([AC_LANG_PROGRAM(,[[
1330 void *p;
1331 asm volatile("xorps %%xmm1,%%xmm2"::"r"(p):"xmm1", "xmm2");
1333     ], [
1334       ac_cv_sse_inline=yes
1335     ], [
1336       ac_cv_sse_inline=no
1337     ])
1338   ])
1340   AS_IF([test "${ac_cv_sse_inline}" != "no" -a "${SYS}" != "solaris"], [
1341     AC_DEFINE(CAN_COMPILE_SSE, 1, [Define to 1 if SSE inline assembly is available.])
1342   ])
1344   AC_CACHE_CHECK([if $CC groks SSE2 inline assembly], [ac_cv_sse2_inline], [
1345     AC_COMPILE_IFELSE([AC_LANG_PROGRAM(,[[
1346 void *p;
1347 asm volatile("punpckhqdq %%xmm1,%%xmm2"::"r"(p):"xmm1", "xmm2");
1349     ], [
1350       ac_cv_sse2_inline=yes
1351     ], [
1352       ac_cv_sse2_inline=no
1353     ])
1354   ])
1355   AS_IF([test "${ac_cv_sse2_inline}" != "no" -a "${SYS}" != "solaris"], [
1356     AC_DEFINE(CAN_COMPILE_SSE2, 1, [Define to 1 if SSE2 inline assembly is available.])
1357     have_sse2="yes"
1358   ])
1360   # SSE3
1361   AC_CACHE_CHECK([if $CC groks SSE3 inline assembly], [ac_cv_sse3_inline], [
1362     AC_COMPILE_IFELSE([AC_LANG_PROGRAM(,[[
1363 void *p;
1364 asm volatile("movsldup %%xmm1,%%xmm0"::"r"(p):"xmm0", "xmm1");
1366     ], [
1367       ac_cv_sse3_inline=yes
1368     ], [
1369       ac_cv_sse3_inline=no
1370     ])
1371   ])
1373   AS_IF([test "${ac_cv_sse3_inline}" != "no"], [
1374     AC_DEFINE(CAN_COMPILE_SSE3, 1, [Define to 1 if SSE3 inline assembly is available.]) ])
1375   # SSSE3
1376   AC_CACHE_CHECK([if $CC groks SSSE3 inline assembly], [ac_cv_ssse3_inline], [
1377     AC_COMPILE_IFELSE([AC_LANG_PROGRAM(,[[
1378 void *p;
1379 asm volatile("pabsw %%xmm0,%%xmm0"::"r"(p):"xmm0");
1381     ], [
1382       ac_cv_ssse3_inline=yes
1383     ], [
1384       ac_cv_ssse3_inline=no
1385     ])
1386   ])
1388   AS_IF([test "${ac_cv_ssse3_inline}" != "no"], [
1389     AC_DEFINE(CAN_COMPILE_SSSE3, 1, [Define to 1 if SSSE3 inline assembly is available.]) ])
1391   # SSE4.1
1392   AC_CACHE_CHECK([if $CC groks SSE4.1 inline assembly],
1393                  [ac_cv_sse4_1_inline], [
1394     AC_COMPILE_IFELSE([AC_LANG_PROGRAM(,[[
1395 void *p;
1396 asm volatile("pmaxsb %%xmm1,%%xmm0"::"r"(p):"xmm0", "xmm1");
1398     ], [
1399       ac_cv_sse4_1_inline=yes
1400     ], [
1401       ac_cv_sse4_1_inline=no
1402     ])
1403   ])
1405   AS_IF([test "${ac_cv_sse4_1_inline}" != "no"], [
1406     AC_DEFINE(CAN_COMPILE_SSE4_1, 1, [Define to 1 if SSE4_1 inline assembly is available.]) ])
1408   # SSE4.2
1409   AC_CACHE_CHECK([if $CC groks SSE4.2 inline assembly],
1410                  [ac_cv_sse4_2_inline], [
1411     AC_COMPILE_IFELSE([AC_LANG_PROGRAM(,[[
1412 void *p;
1413 asm volatile("pcmpgtq %%xmm1,%%xmm0"::"r"(p):"xmm0", "xmm1");
1415     ], [
1416       ac_cv_sse4_2_inline=yes
1417     ], [
1418       ac_cv_sse4_2_inline=no
1419     ])
1420   ])
1422   AS_IF([test "${ac_cv_sse4_2_inline}" != "no"], [
1423     AC_DEFINE(CAN_COMPILE_SSE4_2, 1, [Define to 1 if SSE4_2 inline assembly is available.]) ])
1425   # SSE4A
1426   AC_CACHE_CHECK([if $CC groks SSE4A inline assembly], [ac_cv_sse4a_inline], [
1427     AC_COMPILE_IFELSE([AC_LANG_PROGRAM(,[[
1428 void *p;
1429 asm volatile("insertq %%xmm1,%%xmm0"::"r"(p):"xmm0", "xmm1");
1431     ], [
1432       ac_cv_sse4a_inline=yes
1433     ], [
1434       ac_cv_sse4a_inline=no
1435     ])
1436   ])
1437   VLC_RESTORE_FLAGS
1438   AS_IF([test "${ac_cv_sse4a_inline}" != "no"], [
1439     AC_DEFINE([CAN_COMPILE_SSE4A], [1], [Define to 1 if SSE4A inline assembly is available.]) ])
1441 AM_CONDITIONAL([HAVE_SSE2], [test "$have_sse2" = "yes"])
1443 VLC_SAVE_FLAGS
1444 CFLAGS="${CFLAGS} -mmmx"
1445 have_3dnow="no"
1446 AC_CACHE_CHECK([if $CC groks 3D Now! inline assembly], [ac_cv_3dnow_inline], [
1447   AC_COMPILE_IFELSE([AC_LANG_PROGRAM(,[[
1448 void *p;
1449 asm volatile("pfadd %%mm1,%%mm2"::"r"(p):"mm1", "mm2");
1451   ], [
1452     ac_cv_3dnow_inline=yes
1453   ], [
1454     ac_cv_3dnow_inline=no
1455   ])
1457 VLC_RESTORE_FLAGS
1458 AS_IF([test "${ac_cv_3dnow_inline}" != "no"], [
1459   AC_DEFINE([CAN_COMPILE_3DNOW], 1,
1460             [Define to 1 if 3D Now! inline assembly is available.])
1461   have_3dnow="yes"
1463 AM_CONDITIONAL([HAVE_3DNOW], [test "$have_3dnow" = "yes"])
1466 AC_ARG_ENABLE([neon],
1467   AS_HELP_STRING([--disable-neon],
1468     [disable ARM NEON optimizations (default auto)]),, [
1469   case "${host_cpu}" in
1470     "arm")
1471       enable_neon="32"
1472       ;;
1473     "aarch64")
1474       enable_neon="64"
1475       ;;
1476     *)
1477       enable_neon="no"
1478       ;;
1479   esac
1481 AS_IF([test "${enable_neon}" != "no"], [
1482   VLC_SAVE_FLAGS
1483   AC_CACHE_CHECK([if $CCAS groks ARM NEON assembly], [ac_cv_arm_neon], [
1484     AS_IF([test "${enable_neon}" != "64"], [
1485       CFLAGS="${CFLAGS} -mfpu=neon -mhard-float"
1486       AC_COMPILE_IFELSE([
1487         AC_LANG_PROGRAM(,[[
1488 asm volatile("vqmovun.s64 d0, q1":::"d0");
1490       ], [
1491         ac_cv_arm_neon="32"
1492       ], [
1493         ac_cv_arm_neon="no"
1494       ])
1495     ], [
1496       CFLAGS="${CFLAGS} -march=armv8-a+simd"
1497       AC_COMPILE_IFELSE([
1498         AC_LANG_PROGRAM(,[[
1499 asm volatile("uhadd v0.8b, v0.8b, v1.8b":::"v0");
1501       ], [
1502         ac_cv_arm_neon="64"
1503       ], [
1504         ac_cv_arm_neon="no"
1505       ])
1506     ])
1507   ])
1508   VLC_RESTORE_FLAGS
1510 AM_CONDITIONAL([HAVE_NEON], [test "${ac_cv_arm_neon}" = "32"])
1511 AM_CONDITIONAL([HAVE_ARM64], [test "${ac_cv_arm_neon}" = "64"])
1513 AC_ARG_ENABLE([sve],
1514   AS_HELP_STRING([--disable-sve],
1515     [disable ARM SVE optimizations (default auto)]),, [
1516   AS_IF([test "${host_cpu}" = "aarch64"], [enable_sve="yes"] ,[enable_sve="no"])
1518 AS_IF([test "${enable_sve}" != "no"], [
1519   VLC_SAVE_FLAGS
1520   CFLAGS="${CFLAGS} -march=armv8-a+sve"
1521   AC_CACHE_CHECK([if $CCAS groks ARM SVE assembly], [ac_cv_arm_sve], [
1522     AC_COMPILE_IFELSE([
1523       AC_LANG_PROGRAM(,[[
1524 asm volatile("ptrue p0.s" ::: "p0");
1526     ], [
1527       ac_cv_arm_sve="yes"
1528     ], [
1529       ac_cv_arm_sve="no"
1530     ])
1531   ])
1532   VLC_RESTORE_FLAGS
1534 AM_CONDITIONAL([HAVE_SVE], [test "${ac_cv_arm_sve}" = "yes"])
1537 AC_ARG_ENABLE([altivec],
1538   AS_HELP_STRING([--disable-altivec],
1539     [disable AltiVec optimizations (default auto)]),, [
1540   AS_CASE("${host_cpu}", [powerpc*],
1541         [enable_altivec=yes], [enable_altivec=no])
1543 have_altivec="no"
1544 ALTIVEC_CFLAGS=""
1545 AS_IF([test "${enable_altivec}" = "yes"], [
1546   ARCH="${ARCH} altivec";
1547   VLC_SAVE_FLAGS
1548   AC_CACHE_CHECK([if $CC groks AltiVec inline assembly],
1549     [ac_cv_altivec_inline],
1550     [AC_TRY_COMPILE(,[asm volatile("vperm 0,1,2,3");],
1551          ac_cv_altivec_inline="yes",
1552          [CFLAGS="${CFLAGS} -Wa,-maltivec"
1553           AC_TRY_COMPILE(,[asm volatile("vperm 0,1,2,3");],
1554             [ac_cv_altivec_inline="-Wa,-maltivec"],
1555             ac_cv_altivec_inline=no)
1556          ])])
1557   VLC_RESTORE_FLAGS
1558   AS_IF([test "${ac_cv_altivec_inline}" != "no"], [
1559     AC_DEFINE(CAN_COMPILE_ALTIVEC, 1,
1560               [Define to 1 if AltiVec inline assembly is available.])
1561     AS_IF([test "${ac_cv_altivec_inline}" != "yes"], [
1562       ALTIVEC_CFLAGS="${ac_cv_altivec_inline}"
1563       VLC_ADD_CFLAGS([libvlccore],[${ac_cv_altivec_inline}])
1564     ])
1565     have_altivec="yes"
1566   ])
1568   VLC_SAVE_FLAGS
1569   AC_CACHE_CHECK([if \$CC groks AltiVec C extensions],
1570   [ac_cv_c_altivec], [
1571     CFLAGS="${CFLAGS} -maltivec"
1572     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([
1573 [#include <altivec.h>]], [
1574 [vec_ld(0, (unsigned char *)0);]])], [
1575       ac_cv_c_altivec="-maltivec"
1576     ], [
1577       ac_cv_c_altivec="no"
1578     ])
1579   ])
1580   VLC_RESTORE_FLAGS
1581   AS_IF([test "${ac_cv_c_altivec}" != "no"], [
1582     CPPFLAGS="${CPPFLAGS} ${ac_cv_c_altivec}"
1583     AC_DEFINE(CAN_COMPILE_C_ALTIVEC, 1, [Define to 1 if C AltiVec extensions are available.])
1584     VLC_ADD_CFLAGS([libvlccore],[${ac_cv_c_altivec}])
1585     ALTIVEC_CFLAGS="$ALTIVEC_CFLAGS ${ac_cv_c_altivec}"
1586     VLC_ADD_CFLAGS([deinterlace],[${ac_cv_c_altivec}])
1587     have_altivec="yes"
1588   ])
1589   AC_CHECK_HEADERS([altivec.h])
1591   VLC_SAVE_FLAGS
1592   LDFLAGS="${LDFLAGS} -Wl,-framework,vecLib"
1593   AC_CACHE_CHECK([if linker needs -framework vecLib],
1594     [ac_cv_ld_altivec],
1595     [AC_TRY_LINK([],,ac_cv_ld_altivec=yes,ac_cv_ld_altivec=no)])
1596   VLC_RESTORE_FLAGS
1597   AS_IF([test "${ac_cv_ld_altivec}" != "no"], [
1598     VLC_ADD_LIBS([libvlccore],[-Wl,-framework,vecLib])
1599   ])
1601 AC_SUBST([ALTIVEC_CFLAGS])
1602 AM_CONDITIONAL([HAVE_ALTIVEC], [test "$have_altivec" = "yes"])
1605 dnl  Memory usage
1607 AC_ARG_ENABLE([optimize-memory],
1608   AS_HELP_STRING([--enable-optimize-memory],
1609     [optimize memory usage over performance]))
1610 if test "${enable_optimize_memory}" = "yes"; then
1611   AC_DEFINE(OPTIMIZE_MEMORY, 1, Define if you want to optimize memory usage over performance)
1615 dnl Allow running as root (useful for people running on embedded platforms)
1617 AC_ARG_ENABLE([run-as-root],
1618   AS_HELP_STRING([--enable-run-as-root],
1619     [allow running VLC as root (default disabled)]))
1620 AS_IF([test "${enable_run_as_root}" = "yes"],[
1621     AC_DEFINE(ALLOW_RUN_AS_ROOT, 1,
1622               [Define to 1 to allow running VLC as root (uid 0).])
1626 dnl Stream output
1628 AC_ARG_ENABLE([sout],
1629   AS_HELP_STRING([--disable-sout],
1630     [disable streaming output (default enabled)]))
1631 AS_IF([test "${enable_sout}" != "no"], [
1632   AC_DEFINE(ENABLE_SOUT, 1, [Define to 1 for stream output support.])
1634 AM_CONDITIONAL([ENABLE_SOUT], [test "${enable_sout}" != "no"])
1636 dnl Lua modules
1637 AC_ARG_ENABLE([lua],
1638   AS_HELP_STRING([--disable-lua],
1639     [disable LUA scripting support (default enabled)]))
1640 if test "${enable_lua}" != "no"
1641 then
1642   PKG_CHECK_MODULES(LUA, lua5.2,
1643     [ have_lua=yes ],
1644     [
1645     AC_MSG_WARN([${LUA_PKG_ERRORS}, trying lua 5.1 instead])
1647     PKG_CHECK_MODULES(LUA, lua5.1,
1648       [ have_lua=yes ],
1649       [
1650       AC_MSG_WARN([${LUA_PKG_ERRORS}, trying lua >= 5.1 instead])
1651       PKG_CHECK_MODULES(LUA, lua >= 5.1,
1652         [ have_lua=yes ],
1653         [
1654           AC_MSG_WARN([${LUA_PKG_ERRORS}, trying manual detection instead])
1655           have_lua=yes
1656           AC_CHECK_HEADERS([lua.h lauxlib.h lualib.h],
1657             [],
1658             [ have_lua=no ] )
1659           AC_CHECK_LIB(  lua5.2 , luaL_newstate,
1660             [LUA_LIBS="-llua5.2"],
1661           AC_CHECK_LIB( lua5.1 , luaL_newstate,
1662             [LUA_LIBS="-llua5.1"],
1663             AC_CHECK_LIB( lua51 , luaL_newstate,
1664               [LUA_LIBS="-llua51"],
1665               AC_CHECK_LIB( lua , luaL_newstate,
1666                 [LUA_LIBS="-llua"],
1667                 [ have_lua=no
1668                 ], [-lm])
1669             )))
1670         ])
1671       ])
1672     ])
1673   if test "x${have_lua}" != "xyes" ;  then
1674       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.])
1675   fi
1676   AC_ARG_VAR([LUAC], [LUA byte compiler])
1677   AS_IF([test -z "$LUAC"], [
1678      AC_CHECK_TOOL(LUAC, [luac], [false])
1679   ])
1680   AS_IF([test "${LUAC}" = "false"], [
1681     AC_MSG_ERROR([Could not find the LUA byte compiler.])
1682   ])
1683   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], [
1684     AC_MSG_ERROR([You need 32-bits luac when using lua from contrib.])
1685   ])
1687 AM_CONDITIONAL([BUILD_LUA], [test "${have_lua}" = "yes"])
1691 dnl VideoLAN manager
1693 AC_ARG_ENABLE([vlm],
1694   AS_HELP_STRING([--disable-vlm],
1695     [disable the stream manager (default enabled)]),,
1696   [enable_vlm="${enable_sout}"])
1697 AS_IF([test "${enable_vlm}" != "no"], [
1698   AS_IF([test "${enable_sout}" = "no"], [
1699     AC_MSG_ERROR([VLM requires the stream output. Do not use --disable-sout.])
1700   ])
1701   AC_DEFINE(ENABLE_VLM, 1, [Define if you want the VideoLAN manager support])
1703 AM_CONDITIONAL([ENABLE_VLM], [test "${enable_vlm}" != "no"])
1707 dnl Addons manager storage and repositories modules
1709 AC_ARG_ENABLE([addonmanagermodules],
1710   AS_HELP_STRING([--disable-addonmanagermodules],
1711     [disable the addons manager modules (default enabled)]))
1712 if test "${enable_addonmanagermodules}" != "no"
1713 then
1714   AC_DEFINE(ENABLE_ADDONMANAGERMODULES, 1, [Define if you want the addons manager modules])
1716 AM_CONDITIONAL([ENABLE_ADDONMANAGERMODULES], [test "${enable_addonmanagermodules}" != "no"])
1720 dnl  Input plugins
1723 EXTEND_HELP_STRING([Input plugins:])
1726 dnl  libarchive access module
1728 PKG_ENABLE_MODULES_VLC([ARCHIVE], [archive], [libarchive >= 3.1.0], (libarchive support), [auto])
1731 dnl  live555 input
1733 AC_ARG_ENABLE([live555],
1734   AS_HELP_STRING([--enable-live555],
1735     [enable RTSP input through live555 (default enabled)]))
1737 AS_IF([test "${enable_live555}" != "no" -a -n "${CXX}"], [
1738   PKG_CHECK_MODULES(LIVE555, live555, [
1739     VLC_ADD_PLUGIN([live555])
1740     VLC_ADD_CXXFLAGS([live555], [$LIVE555_CFLAGS])
1741     VLC_ADD_LIBS([live555],[$LIVE555_LIBS])
1742   ], [
1743     AC_MSG_WARN([${LIVE555_PKG_ERRORS}.])
1745     AC_LANG_PUSH(C++)
1746     VLC_SAVE_FLAGS
1748     dnl detect include paths
1749     AS_IF([test -f "${CONTRIB_DIR}/include/UsageEnvironment/UsageEnvironment.hh"], [
1750       CPPFLAGS_live555="-I${CONTRIB_DIR}/include/liveMedia -I${CONTRIB_DIR}/include/groupsock -I${CONTRIB_DIR}/include/BasicUsageEnvironment -I${CONTRIB_DIR}/include/UsageEnvironment"
1751     ], [
1752       AS_IF([test "${SYS}" != "os2"], [
1753         LIVE555_PREFIX=${LIVE555_PREFIX-"/usr"}
1754         CPPFLAGS_live555="-I${LIVE555_PREFIX}/include/liveMedia -I${LIVE555_PREFIX}/include/groupsock -I${LIVE555_PREFIX}/include/BasicUsageEnvironment -I${LIVE555_PREFIX}/include/UsageEnvironment"
1755       ], [
1756         LIVE555_PREFIX=${LIVE555_PREFIX-"/usr/lib/live"}
1757         CPPFLAGS_live555="-I${LIVE555_PREFIX}/liveMedia/include -I${LIVE555_PREFIX}/groupsock/include -I${LIVE555_PREFIX}/BasicUsageEnvironment/include -I${LIVE555_PREFIX}/UsageEnvironment/include"
1758         LDFLAGS_live555="-L${LIVE555_PREFIX}/liveMedia -L${LIVE555_PREFIX}/groupsock -L${LIVE555_PREFIX}/BasicUsageEnvironment -L${LIVE555_PREFIX}/UsageEnvironment"
1759       ])
1760     ])
1762     dnl CPP Flags
1763     AS_IF([test "${SYS}" = "solaris"], [
1764       CPPFLAGS_live555="${CPPFLAGS_live555} -DSOLARIS"
1765     ])
1766     CPPFLAGS="${CPPFLAGS} ${CPPFLAGS_live555}"
1767     LDFLAGS="${LDFLAGS} ${LDFLAGS_live555}"
1769     dnl version check
1770     AC_CACHE_CHECK([for live555 version 1324598400 or later], [ac_cv_live555], [
1771       AC_PREPROC_IFELSE([AC_LANG_PROGRAM([
1772 [#include <liveMedia_version.hh>
1773 #if !defined (LIVEMEDIA_LIBRARY_VERSION_INT) || (LIVEMEDIA_LIBRARY_VERSION_INT < 1324598400)
1774 # error BOOM
1775 #endif]])
1776       ], [
1777         ac_cv_live555="yes"
1778       ], [
1779         ac_cv_live555="no"
1780       ])
1781     ])
1783     AS_IF([test "$ac_cv_live555" = "no"], [
1784       AC_MSG_WARN([live555 is missing or its installed version is too old:
1785 Version 2011.12.23 or later is required to proceed.
1786 You can get an updated one from http://www.live555.com/liveMedia .])
1787       AS_IF([test -n "${enable_live555}"], [
1788         AC_MSG_ERROR([Update live555 or pass --disable-live555 to disable RTSP input support.])
1789       ])
1790     ], [
1791       other_libs="-lgroupsock -lBasicUsageEnvironment -lUsageEnvironment"
1792       other_libs_pic="-lgroupsock_pic -lBasicUsageEnvironment_pic -lUsageEnvironment_pic"
1793       AS_IF([test "${SYS}" = "mingw32"], [
1794         # add ws2_32 for closesocket, select, recv
1795         other_libs="$other_libs -lws2_32"
1796       ])
1798       dnl We need to check for pic because live555 don't provide shared libs
1799       dnl and we want to build a plugins so we need -fPIC on some arch.
1800       VLC_ADD_CXXFLAGS([live555], [${CPPFLAGS_live555}])
1801       VLC_ADD_LDFLAGS([live555], [${LDFLAGS_live555}])
1802       AC_CHECK_LIB([liveMedia_pic], [main], [
1803         VLC_ADD_PLUGIN([live555])
1804         VLC_ADD_LIBS([live555], [-lliveMedia_pic ${other_libs_pic}])
1805       ],[
1806         AC_CHECK_LIB([liveMedia], [main], [
1807           VLC_ADD_PLUGIN([live555])
1808           VLC_ADD_LIBS([live555], [-lliveMedia ${other_libs}])
1809         ],[],[${other_libs}])
1810       ],[${other_libs_pic}])
1811     ])
1812     VLC_RESTORE_FLAGS
1813     AC_LANG_POP(C++)
1814   ])
1818 dnl IIDC and DV FireWire input modules
1820 PKG_ENABLE_MODULES_VLC([DC1394], [], [libdc1394-2 >= 2.1.0], [IIDC FireWire input module], [auto])
1821 PKG_ENABLE_MODULES_VLC([DV1394], [], [libraw1394 >= 2.0.1 libavc1394 >= 0.5.3], [DV FireWire input module], [auto])
1824 dnl - linsys modules: access module check for libzvbi
1826 AC_ARG_ENABLE([linsys],
1827   AS_HELP_STRING([--enable-linsys],
1828     [Linux Linear Systems Ltd. SDI and HD-SDI input cards (default enabled)]))
1829 AS_IF([test "$SYS" = "linux" -a "${enable_linsys}" != "no"], [
1830   VLC_ADD_PLUGIN([linsys_hdsdi])
1831   PKG_CHECK_MODULES(LINSYS_SDI, [zvbi-0.2 >= 0.2.28], [
1832     VLC_ADD_PLUGIN([linsys_sdi])
1833   ], [
1834     AC_MSG_WARN([${LINSYS_SDI_PKG_ERRORS}.])
1835   ])
1839 dnl dvdread module: check for libdvdread
1841 PKG_ENABLE_MODULES_VLC([DVDREAD], [], [dvdread > 4.9.0], [dvdread input module], [auto])
1844 dnl libdvdnav plugin
1846 PKG_ENABLE_MODULES_VLC([DVDNAV], [], [dvdnav > 4.9.0], [DVD with navigation input module (dvdnav)], [auto])
1847 AS_IF([test "${enable_dvdnav}" != "no"], [
1848   AC_MSG_CHECKING(for dvdnav_stream_cb in dvdnav/dvdnav.h)
1849     AC_EGREP_HEADER(dvdnav_stream_cb,dvdnav/dvdnav.h,[
1850       AC_MSG_RESULT(yes)
1851       AC_DEFINE(HAVE_STREAM_CB_IN_DVDNAV_H, 1, For dvdnav demux support)
1852       ],[
1853       AC_MSG_RESULT(no)
1854     ])
1858 dnl  Blu-ray Disc Support with libbluray
1860 PKG_ENABLE_MODULES_VLC([BLURAY], [libbluray], [libbluray >= 0.6.2], (libbluray for Blu-ray disc support ) )
1863 dnl  OpenCV wrapper and example filters
1865 PKG_ENABLE_MODULES_VLC([OPENCV], [opencv_example opencv_wrapper], [opencv > 2.0], (OpenCV (computer vision) filter), [auto])
1869 dnl  libsmbclient plugin
1871 PKG_ENABLE_MODULES_VLC([SMBCLIENT], [smbc], [smbclient], (SMB/CIFS support), [auto])
1874 dnl  liBDSM access module
1876 AM_CONDITIONAL([HAVE_DSM], [test "$AS_TR_SH(with_dsm)" = "yes"])
1877 PKG_WITH_MODULES([DSM], [libdsm >= 0.2.0], [
1878        VLC_ADD_PLUGIN([dsm])
1879        VLC_ADD_CFLAGS([dsm], [$DSM_CFLAGS])
1880        VLC_ADD_LIBS([dsm], [$DSM_LIBS])
1881        have_dsm="yes"
1882    ],,[libdsm SMB/CIFS access/sd module], [auto])
1883 AM_CONDITIONAL([HAVE_DSM], [test "${have_dsm}" = "yes"])
1886 dnl sftp access support
1888 PKG_ENABLE_MODULES_VLC([SFTP], [sftp], [libssh2], (support SFTP file transfer via libssh2), [auto])
1891 dnl nfs access support
1893 PKG_ENABLE_MODULES_VLC([NFS], [nfs], [libnfs >= 1.10.0], (support nfs protocol via libnfs), [auto])
1896 dnl smb2 access support
1898 PKG_ENABLE_MODULES_VLC([SMB2], [smb2], [libsmb2 >= 2.0.0], (support smb2 protocol via libsmb2), [auto])
1901 dnl  Video4Linux 2
1903 AC_ARG_ENABLE([v4l2], AS_HELP_STRING([--disable-v4l2],
1904   [disable Video4Linux version 2 (default auto)]))
1905 have_v4l2="no"
1906 AS_IF([test "$enable_v4l2" != "no"], [
1907   AC_CHECK_HEADERS([linux/videodev2.h], [
1908     have_v4l2="yes"
1909   ])
1911 AM_CONDITIONAL([HAVE_V4L2], [test "${have_v4l2}" != "no"])
1914 dnl special access module for Blackmagic SDI cards
1916 AC_ARG_ENABLE([decklink],
1917   AS_HELP_STRING([--disable-decklink],
1918     [disable Blackmagic DeckLink SDI input (default auto)]))
1919 AC_ARG_WITH([decklink_sdk],
1920   AS_HELP_STRING([--with-decklink-sdk=DIR],
1921     [location of Blackmagic DeckLink SDI SDK]))
1922 have_decklink=no
1923 if test "${enable_decklink}" != "no"
1924 then
1925   if test "${with_decklink_sdk}" != "no" -a -n "${with_decklink_sdk}"
1926   then
1927     VLC_ADD_CPPFLAGS([decklink decklinkoutput stream_out_sdi],[-I${with_decklink_sdk}/include])
1928   fi
1929   VLC_SAVE_FLAGS
1930   CPPFLAGS="${CPPFLAGS} ${CPPFLAGS_decklink}"
1931   AC_LANG_PUSH([C++])
1932   AC_CHECK_HEADERS([DeckLinkAPIDispatch.cpp], [
1933       have_decklink=yes
1934       AS_IF([test "${SYS}" = "darwin"], [
1935         VLC_ADD_LIBS([decklink decklinkoutput],[-Wl,-framework,CoreFoundation])
1936       ])
1937   ], [
1938       AS_IF([test "${enable_decklink}" = "yes"], [
1939         AC_MSG_ERROR([Blackmagic DeckLink SDI include files not found!])
1940       ], [
1941         AC_MSG_WARN([Blackmagic DeckLink SDI include files not found, decklink disabled])
1942       ])
1943   ])
1944   AC_LANG_POP([C++])
1945   VLC_RESTORE_FLAGS
1947 AM_CONDITIONAL([HAVE_DECKLINK], [ test "${have_decklink}" != "no" ])
1951 dnl  Built-in CD-DA and VCD module
1953 AC_ARG_ENABLE([vcd],
1954   AS_HELP_STRING([--disable-vcd],
1955     [disable built-in VCD and CD-DA support (default enabled)]))
1957 AC_ARG_ENABLE([libcddb],
1958   AS_HELP_STRING([--disable-libcddb],
1959     [disable CDDB for Audio CD (default enabled)]))
1961 if test "${enable_vcd}" != "no"
1962 then
1963   AC_MSG_CHECKING(for cdrom_msf0 in linux/cdrom.h)
1964   AC_EGREP_HEADER(cdrom_msf0,linux/cdrom.h,[
1965     AC_MSG_RESULT(yes)
1966     VLC_ADD_PLUGIN([vcd cdda])
1967   ],[
1968     AC_MSG_RESULT(no)
1969   ])
1971   AC_MSG_CHECKING(for scsireq in sys/scsiio.h)
1972   AC_EGREP_HEADER(scsireq,sys/scsiio.h,[
1973     AC_MSG_RESULT(yes)
1974     VLC_ADD_PLUGIN([vcd cdda])
1975     AC_DEFINE(HAVE_SCSIREQ_IN_SYS_SCSIIO_H, 1, For NetBSD VCD support)
1976   ],[
1977     AC_MSG_RESULT(no)
1978   ])
1980   AC_MSG_CHECKING(for ioc_toc_header in sys/cdio.h)
1981   AC_EGREP_HEADER(ioc_toc_header ,sys/cdio.h,[
1982     AC_MSG_RESULT(yes)
1983     VLC_ADD_PLUGIN([vcd cdda])
1984     AC_DEFINE(HAVE_IOC_TOC_HEADER_IN_SYS_CDIO_H, 1, For FreeBSD VCD support)
1985   ],[
1986     AC_MSG_RESULT(no)
1987   ])
1989   if test "${SYS}" = "bsdi" -o "${SYS}" = "mingw32" -o "${SYS}" = "os2" -o "${SYS}" = "darwin"
1990   then
1991     VLC_ADD_PLUGIN([vcd cdda])
1992   fi
1994   if test "$enable_libcddb" != "no"; then
1995     PKG_CHECK_MODULES(LIBCDDB, [libcddb >= 0.9.5], [
1996       HAVE_LIBCDDB=yes
1997       AC_DEFINE(HAVE_LIBCDDB, 1, [Define this if you have libcddb installed])
1998       VLC_ADD_LIBS([cdda],[$LIBCDDB_LIBS])
1999       VLC_ADD_CFLAGS([cdda],[$LIBCDDB_CFLAGS])
2000       ],:
2001       [AC_MSG_WARN([${LIBCDDB_PKG_ERRORS}: CDDB access disabled.])
2002       HAVE_LIBCDDB=no])
2003   fi
2007 dnl Linux DVB
2009 AC_CACHE_CHECK([for Linux DVB version 5.1], [ac_cv_linux_dvb_5_1], [
2010   AC_PREPROC_IFELSE([AC_LANG_PROGRAM([
2011 [#include <linux/dvb/version.h>
2012 #if (DVB_API_VERSION < 5)
2013 # error Linux DVB API v3.2 and older are not supported.
2014 #endif
2015 #if (DVB_API_VERSION == 5 && DVB_API_VERSION_MINOR < 1)
2016 # error Linux DVB API v5.0 is unsupported. Please update.
2017 #endif
2018 ]])], [
2019   ac_cv_linux_dvb_5_1=yes
2020 ], [
2021   ac_cv_linux_dvb_5_1=no
2022 ])])
2023 AM_CONDITIONAL([HAVE_LINUX_DVB], [test "$ac_cv_linux_dvb_5_1" = "yes"])
2026 dnl  Screen capture module
2028 AC_ARG_ENABLE([screen],
2029   AS_HELP_STRING([--enable-screen],
2030     [disable screen capture (default enabled)]))
2031 if test "${enable_screen}" != "no"; then
2032   if test "${SYS}" = "darwin"; then
2033     AC_CHECK_HEADERS([ApplicationServices/ApplicationServices.h], [
2034       VLC_ADD_PLUGIN([screen])
2035     ])
2036   fi
2038 AM_CONDITIONAL([HAVE_MAC_SCREEN], [test "${SYS}" = "darwin" -a "x${enable_screen}" != "xno"])
2041 dnl  VNC/RFB access module
2043 PKG_ENABLE_MODULES_VLC([VNC], [vnc], [libvncclient >= 0.9.9], (VNC/rfb client support), [auto])
2045 dnl  RDP/Remote Desktop access module
2047 PKG_ENABLE_MODULES_VLC([FREERDP], [rdp], [freerdp >= 1.0.1], (RDP/Remote Desktop client support) )
2050 dnl AVFoundation
2051 AC_SUBST([have_avfoundation], ["no"])
2052 AC_ARG_ENABLE([macosx-avfoundation],
2053   AS_HELP_STRING([--enable-macosx-avfoundation], [Mac OS X avcapture (video) module (default enabled on Mac OS X)]))
2054 if test "x${enable_macosx_avfoundation}" != "xno" &&
2055   (test "${SYS}" = "darwin" || test "${enable_macosx_avfoundation}" = "yes")
2056 then
2057   SAVED_LIBS="${LIBS}"
2058   LIBS="-framework AVFoundation"
2059   AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [])],[have_avfoundation=yes],[have_avfoundation=no])
2060   LIBS="${SAVED_LIBS}"
2061   if test "${have_avfoundation}" != "no"
2062   then
2063     VLC_ADD_PLUGIN([avcapture])
2064   fi
2066 AM_CONDITIONAL([HAVE_AVFOUNDATION], [test "${have_avfoundation}" != "no"])
2069 dnl  DCP plugin (using asdcplib)
2071 PKG_WITH_MODULES([ASDCP], [asdcplib], [have_asdcp="yes"])
2072 AM_CONDITIONAL([HAVE_ASDCP], [test "${have_asdcp}" = "yes"])
2075 dnl  Demux plugins
2078 EXTEND_HELP_STRING([Mux/Demux plugins:])
2081 dnl  libdvbpsi check for ts mux/demux
2083 have_dvbpsi="no"
2084 PKG_WITH_MODULES([DVBPSI], [libdvbpsi >= 1.2.0], [have_dvbpsi="yes"])
2085 AM_CONDITIONAL([HAVE_DVBPSI], [test "${have_dvbpsi}" = "yes"])
2089 dnl  GME demux plugin
2091 AC_ARG_ENABLE([gme],
2092   AS_HELP_STRING([--enable-gme],
2093     [use Game Music Emu (default auto)]))
2094 AS_IF([test "${enable_gme}" != "no"], [
2095   AC_CHECK_HEADER([gme/gme.h], [
2096     AC_CHECK_LIB([gme], [gme_identify_header], [
2097       VLC_ADD_PLUGIN([gme])
2098     ], [
2099       AC_CHECK_LIB([gme], [gme_identify_extension], [
2100          VLC_ADD_LIBS([gme], [-lstdc++ $LIBM])
2101          VLC_ADD_PLUGIN([gme])
2102       ],, [-lstdc++ $LIBM])
2103     ])
2104     VLC_ADD_LIBS([gme], [-lgme])
2105   ], [
2106     AS_IF([test "x${enable_gme}" != "x"], [
2107       AC_MSG_ERROR([GME cannot be found. Please install the development files.])
2108     ])
2109   ])
2114 dnl  SIDPlay plugin
2116 AC_ARG_ENABLE([sid],
2117     AS_HELP_STRING([--enable-sid],[C64 sid demux support (default auto)]))
2118 AS_IF([test "${enable_sid}" != "no"], [
2119     PKG_CHECK_MODULES(SID, [libsidplay2], [
2120         AC_LANG_PUSH(C++)
2121         oldCPPFLAGS="$CPPFLAGS"
2122         CPPFLAGS="$CPPFLAGS $SID_CFLAGS"
2123         AC_CHECK_HEADER([sidplay/builders/resid.h], [
2124             VLC_ADD_PLUGIN([sid])
2125             VLC_ADD_CFLAGS([sid], [$SID_CFLAGS])
2126             VLC_ADD_LIBS([sid], [$SID_LIBS] [-lresid-builder])
2127         ], [
2128             AS_IF([test -n "${enable_sid}"],
2129                 [AC_MSG_ERROR([${SID_PKG_ERRORS} (required for sid).])],
2130                 [AC_MSG_WARN([${SID_PKG_ERRORS} (required for sid).])]
2131                 )
2132         ])
2133         CPPFLAGS="$oldCPPFLAGS"
2134         AC_LANG_POP(C++)
2135     ], [
2136         AS_IF([test "x${enable_sid}" = "xyes"],
2137             [AC_MSG_ERROR([${SID_PKG_ERRORS} (required for sid).])],
2138             [AC_MSG_WARN([${SID_PKG_ERRORS} (required for sid).])]
2139             )
2140     ])
2145 dnl  ogg demux plugin
2147 PKG_ENABLE_MODULES_VLC([OGG], [mux_ogg], [ogg >= 1.0], [Ogg demux support], [auto])
2148 PKG_CHECK_MODULES(LIBVORBIS, [vorbis >= 1.1], [
2149     AC_DEFINE(HAVE_LIBVORBIS, 1, [Define to 1 if you have the libvorbis])
2150 ],[true])
2151 PKG_ENABLE_MODULES_VLC([OGG], [], [ogg >= 1.0], [Ogg demux support], [auto], [${LIBVORBIS_CFLAGS}], [${LIBVORBIS_LIBS}])
2152 if test "${enable_sout}" != "no"; then
2153 dnl Check for libshout
2154     PKG_ENABLE_MODULES_VLC([SHOUT], [access_output_shout], [shout >= 2.1], [libshout output plugin], [auto])
2158 dnl  matroska demux plugin
2160 PKG_WITH_MODULES([MATROSKA], [libebml libmatroska], [
2161        VLC_ADD_PLUGIN([mkv])
2162        VLC_ADD_CFLAGS([mkv], [$MATROSKA_CFLAGS])
2163        VLC_ADD_LIBS([mkv], [$MATROSKA_LIBS])
2164        have_matroska="yes"
2165    ],,[MKV format support], [auto])
2166 AM_CONDITIONAL([HAVE_MATROSKA], [test "${have_matroska}" = "yes"])
2169 dnl  modplug demux plugin
2171 AC_ARG_ENABLE([mod],
2172   AS_HELP_STRING([--disable-mod],
2173     [do not use libmodplug (default auto)]))
2174 if test "${enable_mod}" != "no" ; then
2175     PKG_CHECK_MODULES(LIBMODPLUG, [libmodplug >= 0.8.4 libmodplug != 0.8.8], [
2176           VLC_ADD_PLUGIN([mod])
2177           VLC_ADD_CXXFLAGS([mod],[$LIBMODPLUG_CFLAGS])
2178           VLC_ADD_CFLAGS([mod],[$LIBMODPLUG_CFLAGS]) #modules/demux/mod.c needs CFLAGS_mod, not CXXFLAGS_mod
2179           VLC_ADD_LIBS([mod],[$LIBMODPLUG_LIBS])
2180     ],[
2181        AS_IF([test -n "${enable_mod}"],
2182          [AC_MSG_ERROR([${LIBMODPLUG_PKG_ERRORS}.])],
2183          [AC_MSG_WARN([${LIBMODPLUG_PKG_ERRORS}.])])
2184     ])
2188 dnl  mpc demux plugin
2190 AC_ARG_ENABLE([mpc],
2191   AS_HELP_STRING([--disable-mpc], [do not use libmpcdec (default auto)]))
2192 if test "${enable_mpc}" != "no"
2193 then
2194     AC_CHECK_HEADERS([mpcdec/mpcdec.h], [
2195     VLC_ADD_PLUGIN([mpc])
2196     VLC_ADD_LIBS([mpc],[-lmpcdec])])
2200 dnl  Codec plugins
2203 EXTEND_HELP_STRING([Codec plugins:])
2206 dnl wmafixed plugin
2208 AC_ARG_ENABLE([wma-fixed],
2209   AS_HELP_STRING([--enable-wma-fixed], [libwma-fixed module (default disabled)]))
2210 if test "${enable_wma_fixed}" = "yes"
2211 then
2212   VLC_ADD_PLUGIN([wma_fixed])
2216 dnl shine encoder plugin
2218 PKG_ENABLE_MODULES_VLC([SHINE], [], [shine >= 3.0.0], [MPEG Audio Layer 3 encoder], [auto], [], [], [])
2222 dnl openmax il codec plugin
2224 AC_ARG_ENABLE([omxil],
2225   AS_HELP_STRING([--enable-omxil], [openmax il codec module (default disabled)]))
2226 if test "${enable_omxil}" = "yes"
2227 then
2228   VLC_ADD_PLUGIN([omxil])
2232 dnl raspberry pi openmax il configuration
2234 AC_ARG_ENABLE([rpi-omxil],
2235   AS_HELP_STRING([--enable-rpi-omxil], [openmax il configured for raspberry pi (default disabled)]))
2236 if test "${enable_rpi_omxil}" = "yes"
2237 then
2238   VLC_ADD_PLUGIN([omxil])
2239   VLC_ADD_CFLAGS([omxil],[-DRPI_OMX])
2243 dnl CrystalHD codec plugin
2245 AC_ARG_ENABLE([crystalhd],
2246   AS_HELP_STRING([--enable-crystalhd], [crystalhd codec plugin (default auto)]))
2247 if test "${enable_crystalhd}" != "no"; then
2248     AC_CHECK_HEADER(libcrystalhd/libcrystalhd_if.h, [
2249       VLC_ADD_PLUGIN([crystalhd])
2250       VLC_ADD_LIBS([crystalhd], [-lcrystalhd])
2251     ],[
2252       if test "${SYS}" = "mingw32" ; then
2253         AC_CHECK_HEADERS([libcrystalhd/bc_dts_defs.h], [
2254           VLC_ADD_PLUGIN([crystalhd])
2255           AC_CHECK_HEADERS([libcrystalhd/bc_drv_if.h], [
2256             VLC_ADD_LIBS([crystalhd], [-lbcmDIL])
2257             ])
2258         ],[
2259           AS_IF([test x"${enable_crystalhd}" = "xyes"],
2260                 [AC_MSG_ERROR("Could not find CrystalHD development headers")],
2261                 [AC_MSG_WARN("Could not find CrystalHD development headers")])
2262         ],[#define __LINUX_USER__
2263                #include <libcrystalhd/bc_dts_types.h>
2264         ])
2265       fi
2266     ],[
2267        #include <libcrystalhd/bc_dts_types.h>
2268       ])
2272 dnl  mad plugin
2274 have_mad="no"
2275 MAD_CFLAGS=""
2276 MAD_LIBS=""
2278 AC_ARG_WITH(mad, AS_HELP_STRING([--with-mad=PATH], [path to libmad]), [
2279   enable_mad="yes"
2280 ], [
2281   with_mad="no"
2283 AS_IF([test "${with_mad}" != "no"], [
2284   MAD_CFLAGS="-I${with_mad}/include"
2285   MAD_LIBS="-L${with_mad}/lib"
2288 AC_ARG_ENABLE([mad],
2289   AS_HELP_STRING([--enable-mad], [libmad module (default enabled)]))
2290 AS_IF([test "${enable_mad}" != "no"], [
2291   VLC_SAVE_FLAGS
2292   CPPFLAGS="${CPPFLAGS} ${MAD_CFLAGS}"
2293   LDFLAGS="${LDFLAGS} ${MAD_LIBS}"
2294   AC_CHECK_HEADERS([mad.h], [
2295     AC_CHECK_LIB([mad], [mad_bit_init], [
2296       have_mad="yes"
2297       MAD_LIBS="${MAD_LIBS} -lmad"
2298     ])
2299   ])
2300   VLC_RESTORE_FLAGS
2301   AS_IF([test -n "$enable_mad" -a "${have_mad}" = "no"], [
2302     AC_MSG_ERROR([Could not find libmad. Install it or pass --disable-mad to disable it.])
2303   ])
2305 AC_SUBST([MAD_CFLAGS])
2306 AC_SUBST([MAD_LIBS])
2307 AM_CONDITIONAL([HAVE_MAD], [test "${have_mad}" = "yes"])
2309 dnl  mpg123 plugin
2312 PKG_ENABLE_MODULES_VLC([MPG123], [mpg123], [libmpg123], [libmpg123 decoder support], [auto])
2315 dnl gstreamer stuff
2317 AC_ARG_ENABLE([gst-decode],
2318   AS_HELP_STRING([--enable-gst-decode], [GStreamer based decoding support (currently supports only video decoding) (default auto)]))
2320 have_gst_decode="no"
2321 AS_IF([test "${enable_gst_decode}" != "no"], [
2322   PKG_CHECK_MODULES([GST_APP], [gstreamer-app-1.0], [
2323     PKG_CHECK_MODULES([GST_VIDEO], [gstreamer-video-1.0], [
2324       have_gst_decode="yes"
2325     ], [
2326       AC_MSG_WARN([${GST_VIDEO_PKG_ERRORS}. GStreamer decoder module will not be built.])
2327     ])
2328   ], [
2329     AC_MSG_WARN([${GST_APP_PKG_ERRORS}. GStreamer modules will not be built.])
2330   ])
2332 AM_CONDITIONAL([HAVE_GST_DECODE], [test "${have_gst_decode}" = "yes"])
2335 dnl  avcodec decoder/encoder plugin
2337 AC_ARG_ENABLE([merge-ffmpeg],
2338 AS_HELP_STRING([--enable-merge-ffmpeg], [merge FFmpeg-based plugins (default disabled)]),, [
2339   enable_merge_ffmpeg="no"
2341 AM_CONDITIONAL([MERGE_FFMPEG], [test "$enable_merge_ffmpeg" != "no"])
2343 AC_MSG_CHECKING([for libavutil variant])
2344 PKG_CHECK_EXISTS([libavutil], [
2345   libavutil_version="$(${PKG_CONFIG} --modversion libavutil)"
2346   libavutil_micro="${libavutil_version##*.}"
2347   AS_IF([test ${libavutil_micro} -le 99], [
2348     avfork="libav"
2349   ], [
2350     avfork="ffmpeg"
2351   ])
2352 ], [
2353   avfork="none"
2355 AC_MSG_RESULT([${avfork}])
2357 AC_ARG_ENABLE([avcodec],
2358 AS_HELP_STRING([--enable-avcodec], [libavcodec codec (default enabled)]))
2359 AS_IF([test "${enable_avcodec}" != "no"], [
2360   dnl We need >=57.16.0 from libav or >=57.37.100 from ffmpeg
2361   case "${avfork}" in
2362     libav) av_codec_ver="57.16.0" ;;
2363     dnl 05f66706d182eb0c36af54d72614bf4c33e957a9  includes libavutil 55.9.0
2364     ffmpeg) av_codec_ver="57.37.100" ;;
2365     dnl 7fc329e2dd6226dfecaa4a1d7adf353bf2773726  include libavutil 55.22.101
2366     *) AC_MSG_ERROR([Missing libav or FFmpeg. Pass --disable-avcodec to ignore this error.])
2367   esac
2368   PKG_CHECK_MODULES(AVCODEC,[libavcodec >= ${av_codec_ver} libavutil >= 55.9.0], [
2369     VLC_SAVE_FLAGS
2370     CPPFLAGS="${CPPFLAGS} ${AVCODEC_CFLAGS}"
2371     CFLAGS="${CFLAGS} ${AVCODEC_CFLAGS}"
2372     AC_CHECK_HEADERS([libavcodec/avcodec.h])
2373     AC_CHECK_HEADERS([libavutil/avutil.h])
2374     VLC_RESTORE_FLAGS
2375     have_avcodec="yes"
2376   ],[
2377     AC_MSG_ERROR([${AVCODEC_PKG_ERRORS}. Pass --disable-avcodec to ignore this error.])
2378   ])
2379 ], [
2380   have_avcodec="no"
2382 AM_CONDITIONAL([HAVE_AVCODEC], [test "${have_avcodec}" != "no"])
2385 dnl libva needs avcodec
2387 AC_ARG_ENABLE([libva],
2388   AS_HELP_STRING([--enable-libva], [VAAPI GPU decoding support (libVA) (default auto)]))
2390 AS_IF([test "${enable_libva}" = "yes" -a "${have_avcodec}" != "yes" ], [
2391   AC_MSG_ERROR([--enable-libva and --disable-avcodec options are mutually exclusive. Use --enable-avcodec.])
2394 have_vaapi="no"
2395 have_vaapi_drm="no"
2396 have_vaapi_x11="no"
2397 have_vaapi_wl="no"
2398 AS_IF([test "${enable_libva}" != "no"], [
2399   PKG_CHECK_MODULES([LIBVA], [libva >= 0.38], [
2400     have_vaapi="yes"
2401   ], [
2402     AS_IF([test -n "${enable_libva}"], [
2403       AC_MSG_ERROR([${LIBVA_PKG_ERRORS}.])
2404     ], [
2405       AC_MSG_WARN([${LIBVA_PKG_ERRORS}.])
2406     ])
2407   ])
2408   PKG_CHECK_MODULES([LIBVA_DRM], [libva-drm], [
2409     have_vaapi_drm="yes"
2410   ], [
2411     AC_MSG_WARN([${LIBVA_DRM_PKG_ERRORS}.])
2412   ])
2413   PKG_CHECK_MODULES(LIBVA_X11, [libva-x11], [
2414     have_vaapi_x11="yes"
2415   ], [
2416     AC_MSG_WARN([${LIBVA_X11_PKG_ERRORS}.])
2417   ])
2418   PKG_CHECK_MODULES(LIBVA_WL, [libva-wayland], [
2419     have_vaapi_wl="yes"
2420   ], [
2421     AC_MSG_WARN([${LIBVA_WL_PKG_ERRORS}.])
2422   ])
2424 AM_CONDITIONAL([HAVE_VAAPI], [test "${have_vaapi}" = "yes"])
2425 AM_CONDITIONAL([HAVE_VAAPI_DRM], [test "${have_vaapi_drm}" = "yes"])
2426 AM_CONDITIONAL([HAVE_VAAPI_X11], [test "${have_vaapi_x11}" = "yes"])
2427 AM_CONDITIONAL([HAVE_VAAPI_WL], [test "${have_vaapi_wl}" = "yes"])
2429 have_avcodec_vaapi="no"
2430 AS_IF([test "${have_vaapi}" = "yes" -a "${have_avcodec}" = "yes"], [
2431   VLC_SAVE_FLAGS
2432   CPPFLAGS="${CPPFLAGS} ${AVCODEC_CFLAGS}"
2433   CFLAGS="${CFLAGS} ${AVCODEC_CFLAGS}"
2434   AC_CHECK_HEADERS([libavcodec/vaapi.h], [
2435     AC_MSG_NOTICE([VA API acceleration activated])
2436     have_avcodec_vaapi="yes"
2437   ],[
2438     AS_IF([test -n "${enable_libva}"], [
2439       AC_MSG_ERROR([libva is present but libavcodec/vaapi.h is missing])
2440     ], [
2441       AC_MSG_WARN([libva is present but libavcodec/vaapi.h is missing ])
2442     ])
2443   ])
2444   VLC_RESTORE_FLAGS
2446 AM_CONDITIONAL([HAVE_AVCODEC_VAAPI], [test "${have_avcodec_vaapi}" = "yes"])
2449 dnl dxva2 needs avcodec
2451 AC_ARG_ENABLE([dxva2],
2452   AS_HELP_STRING([--enable-dxva2], [DxVA2 GPU decoding support (default auto)]))
2454 have_avcodec_dxva2="no"
2455 AS_IF([test "${enable_dxva2}" != "no"], [
2456   if test "${SYS}" = "mingw32"; then
2457   AS_IF([test "x${have_avcodec}" = "xyes"], [
2458     AC_CHECK_HEADERS([dxva2api.h],
2459       [
2460         AC_CHECK_HEADERS([libavcodec/dxva2.h], [
2461            AC_MSG_NOTICE([DxVA2 acceleration activated])
2462            have_avcodec_dxva2="yes"
2463         ],[
2464     AS_IF([test "${enable_dxva2}" = "yes"],
2465           [AC_MSG_ERROR([dxva2 is present but libavcodec/dxva2.h is missing])],
2466               [AC_MSG_WARN([dxva2 is present but libavcodec/dxva2.h is missing ])])
2467         ], [#undef _WIN32_WINNT
2468             /* DXVA2 is only available in Vista and above */
2469             #define _WIN32_WINNT 0x600])
2470       ],[
2471     AS_IF([test "${enable_dxva2}" = "yes"],
2472               [AC_MSG_ERROR([Could not find required dxva2api.h])],
2473               [AC_MSG_WARN([dxva2api.h not found])])
2474       ],[#include <d3d9.h>])
2475   ],[
2476     AS_IF([test "x${enable_dxva2}" != "x"], [
2477       AC_MSG_ERROR([--enable-dxva2 and --disable-avcodec options are mutually exclusive.])
2478     ])
2479   ])
2480   fi
2482 AM_CONDITIONAL([HAVE_AVCODEC_DXVA2], [test "${have_avcodec_dxva2}" = "yes"])
2485 dnl d3d11va needs avcodec
2487 AC_ARG_ENABLE([d3d11va],
2488   AS_HELP_STRING([--enable-d3d11va], [D3D11 GPU decoding support (default auto)]))
2490 have_avcodec_d3d11va="no"
2491 AS_IF([test "${enable_d3d11va}" != "no"], [
2492   if test "${SYS}" = "mingw32"; then
2493   AS_IF([test "x${have_avcodec}" = "xyes"], [
2494         AC_CHECK_TYPES([ID3D11VideoDecoder],
2495           [
2496             AC_CHECK_HEADERS([dxva2api.h],
2497               [
2498                 AC_CHECK_HEADERS([libavcodec/d3d11va.h], [
2499                    AC_MSG_NOTICE([D3D11 acceleration activated])
2500                    AC_DEFINE([HAVE_AVCODEC_D3D11VA], [1], [Define if the d3d11va module is built])
2501                    have_avcodec_d3d11va="yes"
2502                 ],[
2503                   AS_IF([test "${enable_d3d11va}" = "yes"],
2504                     [AC_MSG_ERROR([d3d11va is present but libavcodec/d3d11va.h is missing])],
2505                         [AC_MSG_WARN([d3d11va is present but libavcodec/d3d11va.h is missing ])])
2506                   ], [#undef _WIN32_WINNT
2507                       /* D3D11 is only available in Vista and above */
2508                       #define _WIN32_WINNT 0x600])
2509                   ],[
2510                     AS_IF([test "${enable_d3d11va}" = "yes"],
2511                           [AC_MSG_ERROR([Could not find required dxva2api.h])],
2512                           [AC_MSG_WARN([dxva2api.h not found])])
2513                   ],[#include <d3d9.h>])
2514           ],[
2515             AS_IF([test "${enable_d3d11va}" = "yes"],
2516                   [AC_MSG_ERROR([Could not find required ID3D11VideoDecoder in d3d11.h])],
2517                   [AC_MSG_WARN([ID3D11VideoDecoder not found])])
2518           ], [#include <d3d11.h>])
2519   ],[
2520     AS_IF([test "x${enable_d3d11va}" != "x"], [
2521       AC_MSG_ERROR([--enable-d3d11va and --disable-avcodec options are mutually exclusive.])
2522     ])
2523   ])
2524   fi
2526 AM_CONDITIONAL([HAVE_AVCODEC_D3D11VA], [test "${have_avcodec_d3d11va}" = "yes"])
2529 dnl DXGI debug
2531 AC_CHECK_HEADERS([dxgidebug.h dxgi1_6.h])
2534 dnl  avformat demuxer/muxer plugin
2537 AC_ARG_ENABLE([avformat],
2538 AS_HELP_STRING([--enable-avformat], [libavformat containers (default enabled)]),, [
2539   enable_avformat="${have_avcodec}"
2541 have_avformat="no"
2542 AS_IF([test "${enable_avformat}" != "no"], [
2543   PKG_CHECK_MODULES(AVFORMAT,[libavformat >= 53.21.0 libavcodec libavutil], [
2544       have_avformat="yes"
2545       VLC_SAVE_FLAGS
2546       CPPFLAGS="${CPPFLAGS} ${AVFORMAT_CFLAGS}"
2547       CFLAGS="${CFLAGS} ${AVFORMAT_CFLAGS}"
2548       AC_CHECK_HEADERS([libavformat/avformat.h libavformat/avio.h])
2549       AC_CHECK_HEADERS([libavcodec/avcodec.h])
2550       AC_CHECK_HEADERS([libavutil/avutil.h])
2551       AS_IF([test "$enable_merge_ffmpeg" = "no"], [
2552         have_avformat="no"
2553       ])
2554       VLC_RESTORE_FLAGS
2555     ],[
2556       AC_MSG_ERROR([${AVFORMAT_PKG_ERRORS}. Pass --disable-avformat to ignore this error.])
2557   ])
2559 AM_CONDITIONAL([HAVE_AVFORMAT], [test "${enable_avformat}" != "no"])
2562 dnl  swscale image scaling and conversion plugin
2565 AC_ARG_ENABLE([swscale],
2566   AS_HELP_STRING([--enable-swscale],[libswscale image scaling and conversion
2567           (default enabled)]))
2568 if test "${enable_swscale}" != "no"
2569 then
2570   PKG_CHECK_MODULES(SWSCALE,[libswscale],
2571     [
2572       VLC_SAVE_FLAGS
2573       CPPFLAGS="${CPPFLAGS} ${SWSCALE_CFLAGS}"
2574       CFLAGS="${CFLAGS} ${SWSCALE_CFLAGS}"
2575       AC_CHECK_HEADERS([libswscale/swscale.h])
2576       AC_CHECK_HEADERS([libavutil/avutil.h])
2577       VLC_ADD_PLUGIN([swscale])
2578       VLC_ADD_LIBS([swscale],[$SWSCALE_LIBS])
2579       VLC_ADD_CFLAGS([swscale],[$SWSCALE_CFLAGS])
2580       AS_IF([test -n "${ac_cv_ld_bsymbolic}"], [
2581         VLC_ADD_LIBS([swscale],[${ac_cv_ld_bsymbolic}])
2582       ])
2583       VLC_RESTORE_FLAGS
2584     ],[
2585       AC_MSG_ERROR([${SWSCALE_PKG_ERRORS}. Pass --disable-swscale to ignore this error. Proper software scaling and some video chroma conversion will be missing.])
2586   ])
2590 dnl  postproc plugin
2593 AC_ARG_ENABLE([postproc],
2594 AS_HELP_STRING([--enable-postproc], [libpostproc image post-processing (default auto)]))
2595 if test "${enable_postproc}" != "no"
2596 then
2597   PKG_CHECK_MODULES(POSTPROC,[libpostproc libavutil],
2598     [
2599       VLC_SAVE_FLAGS
2600       CPPFLAGS="${CPPFLAGS} ${POSTPROC_CFLAGS}"
2601       CFLAGS="${CFLAGS} ${POSTPROC_CFLAGS}"
2602       AC_CHECK_HEADERS([postproc/postprocess.h])
2603       VLC_ADD_PLUGIN([postproc])
2604       VLC_RESTORE_FLAGS
2605     ],[
2606       AC_MSG_WARN([${POSTPROC_PKG_ERRORS}.])
2607   ])
2611 dnl  faad decoder plugin
2613 AC_ARG_ENABLE([faad],
2614 AS_HELP_STRING([--enable-faad], [faad codec (default auto)]))
2615 have_faad="no"
2616 AS_IF([test "${enable_faad}" != "no"], [
2617   AC_CHECK_HEADERS([neaacdec.h], [
2618     AC_CHECK_LIB([faad], [NeAACDecOpen], [have_faad="yes"],, [$LIBM])
2620     AS_IF([test "${have_faad}" = "yes"], [
2621       VLC_ADD_PLUGIN([faad])
2622       VLC_ADD_LIBS([faad],[-lfaad])
2623     ], [
2624       AS_IF([test "${enable_faad}" = "yes"], [
2625         AC_MSG_ERROR([cannot find FAAD library])
2626       ], [
2627         AC_MSG_WARN([cannot find FAAD library])
2628       ])
2629     ])
2630   ])
2634 dnl  AOM decoder plugin
2636 PKG_ENABLE_MODULES_VLC([AOM], [], [aom], [experimental AV1 codec (default auto)])
2639 dnl  Dav1d decoder plugin
2641 PKG_ENABLE_MODULES_VLC([DAV1D], [], [dav1d], [AV1 decoder (default auto)])
2644 dnl libvpx decoder plugin
2646 AC_ARG_ENABLE([vpx],
2647     AS_HELP_STRING([--enable-vpx],[libvpx VP8/VP9 encoder and decoder (default auto)]))
2648 AS_IF([test "${enable_vpx}" != "no"],[
2649     PKG_CHECK_MODULES([VPX], [vpx >= 1.5.0], [
2650         VLC_ADD_PLUGIN([vpx])
2651         VLC_ADD_CPPFLAGS([vpx], [${VPX_CFLAGS}])
2652         VLC_ADD_LIBS([vpx], [${VPX_LIBS}])
2653         AC_CHECK_LIB([vpx],[vpx_codec_vp8_dx], [
2654             VLC_ADD_CPPFLAGS([vpx], [-DENABLE_VP8_DECODER])
2655         ], [], [${VPX_LIBS}])
2656         AC_CHECK_LIB([vpx],[vpx_codec_vp9_dx], [
2657             VLC_ADD_CPPFLAGS([vpx], [-DENABLE_VP9_DECODER])
2658         ], [], [${VPX_LIBS}])
2659         AC_CHECK_LIB([vpx],[vpx_codec_vp8_cx], [
2660             VLC_ADD_CPPFLAGS([vpx], [-DENABLE_VP8_ENCODER])
2661         ], [], [${VPX_LIBS}])
2662         AC_CHECK_LIB([vpx],[vpx_codec_vp9_cx], [
2663             VLC_ADD_CPPFLAGS([vpx], [-DENABLE_VP9_ENCODER])
2664         ], [], [${VPX_LIBS}])
2665     ], [
2666     AS_IF([test "${enable_vpx}" = "yes"],[
2667         AC_MSG_ERROR([libvpx 1.5.0 or higher was not found])
2668     ])])
2672 dnl twolame encoder plugin
2674 PKG_ENABLE_MODULES_VLC([TWOLAME], [], [twolame], [MPEG Audio Layer 2 encoder], [auto], [], [], [ -DLIBTWOLAME_STATIC])
2677 dnl fdk-aac encoder plugin
2679 PKG_ENABLE_MODULES_VLC([FDKAAC], [], [fdk-aac], [FDK-AAC encoder], [disabled])
2683 dnl A52/AC3 decoder plugin
2685 AC_ARG_ENABLE([a52],
2686   AS_HELP_STRING([--enable-a52], [A/52 support with liba52 (default enabled)]))
2687 if test "${enable_a52}" != "no"
2688 then
2689   AC_ARG_WITH([a52],
2690     AS_HELP_STRING([--with-a52=PATH], [a52 headers and libraries]))
2691     if test -z "${with_a52}"
2692     then
2693       LDFLAGS_test=""
2694       CPPFLAGS_test=""
2695     else
2696       LDFLAGS_test="-L${with_a52}/lib"
2697       CPPFLAGS_test="-I${with_a52}/include"
2698     fi
2699     VLC_SAVE_FLAGS
2700     CPPFLAGS="${CPPFLAGS} ${CPPFLAGS_test} ${CPPFLAGS_a52}"
2701     LDFLAGS="${LDFLAGS} ${LDFLAGS_test} ${LIBS_a52}"
2702     AC_CHECK_HEADERS([a52dec/a52.h], [
2703       AC_CHECK_LIB([a52], [a52_free], [
2704         VLC_ADD_PLUGIN([a52])
2705         VLC_ADD_LIBS([a52],[${LDFLAGS_test} -la52 $LIBM])
2706         VLC_ADD_CPPFLAGS([a52],[${CPPFLAGS_test}])
2707       ],[
2708         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.])
2709         ], [$LIBM])
2710     ],[
2711       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.])
2712     ])
2713     VLC_RESTORE_FLAGS
2717 dnl DTS Coherent Acoustics decoder plugin
2719 PKG_ENABLE_MODULES_VLC([DCA], [dca], [libdca >= 0.0.5], [DTS Coherent Acoustics support with libdca], [auto])
2722 dnl  Flac plugin
2724 PKG_ENABLE_MODULES_VLC([FLAC], [], [flac], [libflac decoder/encoder support], [auto])
2727 dnl  Libmpeg2 plugin
2729 PKG_ENABLE_MODULES_VLC([LIBMPEG2], [], [libmpeg2 > 0.3.2], [libmpeg2 decoder support], [auto])
2732 dnl  Vorbis plugin
2734 PKG_ENABLE_MODULES_VLC([VORBIS], [], [ogg vorbis >= 1.1 vorbisenc >= 1.1], [Vorbis decoder and encoder], [auto])
2737 dnl  Tremor plugin
2739 AC_ARG_ENABLE([tremor],
2740   AS_HELP_STRING([--enable-tremor], [Tremor decoder support (default disabled)]))
2741 if test "${enable_tremor}" = "yes"
2742 then
2743   AC_CHECK_HEADERS([tremor/ivorbiscodec.h], [
2744     VLC_ADD_PLUGIN([tremor])
2745    ],[])
2749 dnl  Speex plugins
2751 PKG_ENABLE_MODULES_VLC([SPEEX], [], [ogg speex >= 1.0.5], [Speex support], [auto])
2752 have_speexdsp="no"
2753 AS_IF([test "${enable_speex}" != "no"], [
2754   PKG_CHECK_MODULES([SPEEXDSP], [speexdsp], [
2755     have_speexdsp="yes"
2756   ], [
2757     AC_MSG_WARN([${SPEEXDSP_PKG_ERRORS}.])
2758   ])
2760 AM_CONDITIONAL([HAVE_SPEEXDSP], [test "$have_speexdsp" = "yes"])
2763 dnl  Opus plugin
2765 PKG_ENABLE_MODULES_VLC([OPUS], [], [ogg opus >= 1.0.3], [Opus support], [auto])
2768 dnl  Ambisonic channel mixer and binauralizer plugin
2770 PKG_ENABLE_MODULES_VLC([SPATIALAUDIO], [], [spatialaudio], [Ambisonic channel mixer and binauralizer], [auto])
2773 dnl  theora decoder plugin
2775 PKG_ENABLE_MODULES_VLC([THEORA], [], [ogg theoradec >= 1.0 theoraenc], [experimental theora codec], [auto])
2778 dnl  OggSpots decoder plugin
2780 PKG_ENABLE_MODULES_VLC([OGGSPOTS], [], [ogg], [experimental OggSpots codec], [auto])
2783 dnl  Daala decoder plugin
2785 PKG_ENABLE_MODULES_VLC([DAALA], [], [daaladec daalaenc], [experimental daala codec], [disabled])
2788 dnl  schroedinger decoder plugin (for dirac format video)
2790 PKG_ENABLE_MODULES_VLC([SCHROEDINGER], [], [schroedinger-1.0 >= 1.0.10], [dirac decoder and encoder using schroedinger], [auto])
2793 dnl  PNG decoder module
2795 AC_ARG_ENABLE([png],
2796   AS_HELP_STRING([--enable-png], [PNG support (default enabled)]))
2797 AS_IF([test "${enable_png}" != "no"], [
2798 AC_CHECK_HEADERS([png.h], [
2799   VLC_SAVE_FLAGS
2800   LDFLAGS="${LDFLAGS} -lz $LIBM"
2801   AC_CHECK_LIB([png], [png_set_alpha_mode], [
2802     VLC_ADD_PLUGIN([png])
2803   ], [], [-lz $LIBM])
2804   VLC_RESTORE_FLAGS
2805   ])
2809 dnl  JPEG decoder module
2811 AC_ARG_ENABLE([jpeg],
2812   AS_HELP_STRING([--enable-jpeg], [JPEG support (default enabled)]))
2813 AS_IF([test "${enable_jpeg}" != "no"], [
2814 AC_CHECK_HEADERS([jpeglib.h], [
2815   VLC_ADD_PLUGIN([jpeg])
2816   ])
2820 dnl  BPG decoder module
2822 AC_ARG_ENABLE([bpg],
2823   AS_HELP_STRING([--enable-bpg], [BPG support (default disabled)]))
2824 AS_IF([test "${enable_bpg}" != "no"], [
2825 AC_CHECK_HEADERS([libbpg.h], [
2826   VLC_ADD_PLUGIN([bpg])
2827   ])
2831 dnl H262 encoder plugin (lib262)
2833 AC_ARG_ENABLE([x262],
2834   AS_HELP_STRING([--enable-x262], [H262 encoding support with static libx262 (default disabled)]))
2835 if test "${enable_x262}" != "no"; then
2836     PKG_CHECK_MODULES(X262, x262, [
2837         VLC_ADD_PLUGIN([x262])
2838         VLC_ADD_LDFLAGS([x262],[${X262_LIBS}])
2839         AS_IF([test -n "${ac_cv_ld_bsymbolic}"], [
2840           VLC_ADD_LIBS([x262],[${av_cv_ld_bsymbolic}])
2841         ])
2842         VLC_ADD_CFLAGS([x262],[${X262_CFLAGS}])
2843         if echo ${X262_LIBS} |grep -q 'pthreadGC2'; then
2844           VLC_ADD_CFLAGS([x262], [-DPTW32_STATIC_LIB])
2845         fi
2846     ], [
2847        if test "${enable_x262}" = "yes"; then
2848         AC_MSG_ERROR([x262 module doesn't work without staticly compiled libx262.a])
2849        fi
2850     ])
2853 dnl x265 encoder
2854 PKG_ENABLE_MODULES_VLC([X265],, [x265], [HEVC/H.265 encoder], [auto])
2857 dnl H264 encoder plugin (using libx264)
2859 AC_ARG_ENABLE([x264],
2860   AS_HELP_STRING([--enable-x264], [H264 encoding support with libx264 (default enabled)]))
2861 if test "${enable_x264}" != "no"; then
2862       PKG_CHECK_MODULES(X264,x264 >= 0.148, [
2863         VLC_ADD_PLUGIN([x264])
2864         VLC_ADD_LIBS([x264],[${X264_LIBS}])
2866         AS_IF([test -n "${ac_cv_ld_bsymbolic}"], [
2867           VLC_ADD_LDFLAGS([x264],[${ac_cv_ld_bsymbolic}])
2868         ])
2870         VLC_ADD_CFLAGS([x264],[${X264_CFLAGS}])
2871         if echo ${X264_LIBS} |grep -q 'pthreadGC2'; then
2872           VLC_ADD_CFLAGS([x264], [-DPTW32_STATIC_LIB])
2873         fi
2874       ],[
2875         if test "${enable_x264}" = "yes"; then
2876             AC_MSG_ERROR([${X264_PKG_ERRORS}: you may get it from http://www.videolan.org/x264.html])
2877           fi
2878       ])
2882 dnl H264 encoder plugin (libx264 > 153)
2884 AC_ARG_ENABLE([x26410b],
2885   AS_HELP_STRING([--enable-x26410b], [H264 10-bit encoding support with libx264 (default enabled)]))
2886 if test "${enable_x26410b}" != "no"; then
2887       PKG_CHECK_MODULES(X26410b,x264 >= 0.153, [
2888         VLC_ADD_PLUGIN([x26410b])
2889         VLC_ADD_LIBS([x26410b],[${X264_LIBS}])
2891         AS_IF([test -n "${ac_cv_ld_bsymbolic}"], [
2892           VLC_ADD_LDFLAGS([x26410b],[${ac_cv_ld_bsymbolic}])
2893         ])
2895         VLC_ADD_CFLAGS([x26410b],[${X264_CFLAGS}])
2896         if echo ${X264_LIBS} |grep -q 'pthreadGC2'; then
2897           VLC_ADD_CFLAGS([x26410b], [-DPTW32_STATIC_LIB])
2898         fi
2899       ],[
2900         if test "${enable_x26410b}" = "yes"; then
2901             AC_MSG_ERROR([${X264_PKG_ERRORS}: you may get it from http://www.videolan.org/x264.html])
2902           fi
2903       ])
2908 dnl Intel QuickSync (aka MediaSDK) H264/H262 encoder
2910 PKG_ENABLE_MODULES_VLC([MFX], [qsv], [libmfx], [Intel QuickSync MPEG4-Part10/MPEG2 (aka H.264/H.262) encoder], [auto])
2913 dnl libfluidsynth (MIDI synthetizer) plugin
2915 PKG_ENABLE_MODULES_VLC([FLUIDSYNTH], [], [fluidsynth >= 1.1.2], [MIDI synthetiser with libfluidsynth], [auto])
2916 PKG_ENABLE_MODULES_VLC([FLUIDLITE], [fluidsynth], [fluidlite], [MIDI synthetiser with libfluidsynth], [auto])
2917 AC_CHECK_HEADERS([fluidlite.h], [AC_SUBST([FLUIDSYNTH_LIBS], ${FLUIDLITE_LIBS})])
2920 dnl Teletext Modules
2921 dnl vbi decoder plugin (using libzbvi)
2922 dnl telx module
2923 dnl uncompatible
2925 AC_ARG_ENABLE([zvbi],
2926   AS_HELP_STRING([--enable-zvbi],[VBI (inc. Teletext) decoding support with
2927                   libzvbi (default enabled)]))
2928 AC_ARG_ENABLE([telx],
2929   AS_HELP_STRING([--enable-telx],[Teletext decoding module (conflicting with
2930                   zvbi) (default enabled if zvbi is absent)]))
2932 AS_IF( [test "${enable_zvbi}" != "no"],[
2933     PKG_CHECK_MODULES(ZVBI, [zvbi-0.2 >= 0.2.28],
2934         [
2935           VLC_ADD_PLUGIN([zvbi])
2936           AC_DEFINE(ZVBI_COMPILED, 1, [Define if the zvbi module is built])
2937           AS_IF( [test "${enable_telx}" = "yes"],[
2938                   AC_MSG_WARN([The zvbi and telx modules are incompatible. Using zvbi.])
2939                   ])
2940         ],[
2941           AC_MSG_WARN([${ZVBI_PKG_ERRORS}. Enabling the telx module instead.])
2942         ])
2943     ])
2944 AS_IF( [test "${enable_telx}" != "no" ],[
2945   VLC_ADD_PLUGIN([telx])
2946   ])
2949 dnl ARIB subtitles rendering module
2951 AC_ARG_ENABLE([aribsub],
2952   AS_HELP_STRING([--enable-aribsub],[ARIB Subtitles support (default enabled)]))
2953 AS_IF( [test "${enable_aribsub}" != "no" ],[
2954   PKG_CHECK_MODULES(ARIBB24, [aribb24 >= 1.0.1], [
2955       have_aribb24="yes"
2956       VLC_ADD_PLUGIN([aribsub])
2957       VLC_ADD_LIBS([aribsub],[-laribb24])
2958       AC_DEFINE(HAVE_ARIBB24, 1, [Define if libaribb24 is available.])
2959     ],[
2960       AC_MSG_WARN(Library [aribb24] needed for [aribsub] was not found)
2961       have_aribb24="no"
2962   ])
2964 AM_CONDITIONAL([HAVE_ARIBB24], [test x"${have_aribb24}" = x"yes"])
2967 dnl ARIB B25
2969 PKG_ENABLE_MODULES_VLC([ARIBB25], [aribcam], [aribb25 >= 0.2.6], [ARIB STD-B25], [auto])
2972 dnl  kate decoder plugin
2974 PKG_ENABLE_MODULES_VLC([KATE], [], [kate >= 0.3.0], [kate codec], [auto])
2977 dnl  tiger rendering for kate decoder plugin
2979 AC_ARG_ENABLE([tiger],
2980 AS_HELP_STRING([--enable-tiger], [Tiger rendering library for Kate streams (default auto)]))
2981 AS_IF([test "${enable_tiger}" != "no"], [
2982   PKG_CHECK_MODULES(TIGER,[tiger >= 0.3.1], [
2983       AC_DEFINE(HAVE_TIGER, 1, [Define if libtiger is available.])],[
2984         AS_IF([test -n "${enable_tiger}"], [
2985           AC_MSG_ERROR([${TIGER_PKG_ERRORS}.])
2986         ])
2987   ])
2991 dnl  check if we can build the css selector engine
2993 AC_ARG_ENABLE([css],
2994 AS_HELP_STRING([--enable-css], [CSS selector engine (default auto)]))
2995 AS_IF([test "${enable_css}" != "no"], [
2996   with_css="yes"
2997   AC_DEFINE(HAVE_CSS, 1, [Define if CSS engine is built])
2999 AM_CONDITIONAL([ENABLE_CSS], [test "${with_css}" = "yes"])
3003 dnl  Video plugins
3006 EXTEND_HELP_STRING([Video plugins:])
3009 dnl  libplacebo support
3011 AC_ARG_ENABLE([libplacebo],
3012   AS_HELP_STRING([--disable-libplacebo],
3013       [disable libplacebo support (default auto)]))
3015 AS_IF([test "$enable_libplacebo" != "no"], [
3016   PKG_CHECK_MODULES([LIBPLACEBO], [libplacebo >= 0.5], [
3017     AC_DEFINE([HAVE_LIBPLACEBO], [1], [Define to 1 if libplacebo is enabled.])
3018     PKG_CHECK_MODULES([LIBPLACEBO], [libplacebo >= 1.7],
3019       [have_libplacebo_vk="yes"], [have_libplacebo_vk="no"])
3020   ], [
3021     AS_IF([test -n "${enable_libplacebo}"], [
3022       AC_MSG_ERROR([${LIBPLACEBO_PKG_ERRORS}.])
3023     ])
3024     enable_libplacebo="no"
3025   ])
3027 AM_CONDITIONAL([HAVE_LIBPLACEBO], [test "$enable_libplacebo" != "no"])
3030 dnl  OpenGL
3032 PKG_CHECK_MODULES([EGL], [egl], [
3033   have_egl="yes"
3034 ], [
3035   have_egl="no"
3037 AM_CONDITIONAL([HAVE_EGL], [test "${have_egl}" = "yes"])
3039 have_gl="no"
3040 PKG_CHECK_MODULES([GL], [gl], [
3041   have_gl="yes"
3042 ], [
3043   AC_MSG_CHECKING([for OpenGL])
3044   AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
3045 #ifdef _WIN32
3046 # include <GL/glew.h>
3047 #endif
3048 #include <GL/gl.h>
3049 ]], [
3050     [int t0 = GL_TEXTURE0;]])
3051   ], [
3052     GL_CFLAGS=""
3053     have_gl="yes"
3054     AS_IF([test "${SYS}" != "mingw32"], [
3055       GL_LIBS="-lGL"
3056     ], [
3057       GL_LIBS="-lopengl32"
3058     ])
3059   ])
3060   AC_MSG_RESULT([${have_gl}])
3062 AM_CONDITIONAL([HAVE_GL], [test "${have_gl}" = "yes"])
3063 AS_IF([test "${have_gl}" = "yes"], [
3064   AC_DEFINE([HAVE_GL], 1, [Defined if having OpenGL])
3067 dnl OpenGL ES 2: depends on EGL 1.1
3068 PKG_ENABLE_MODULES_VLC([GLES2], [], [glesv2], [OpenGL ES v2 support], [disabled])
3071 dnl Vulkan
3073 AC_ARG_ENABLE(vulkan,
3074   [AS_HELP_STRING([--disable-vulkan],
3075       [disable Vulkan support (default auto)])])
3077 AS_IF([test "$enable_vulkan" != "no"], [
3078   AS_IF([test "$have_libplacebo_vk" = "yes"], [
3079     PKG_CHECK_MODULES([VULKAN], [vulkan >= 1.0.26], [
3080       AC_DEFINE([HAVE_VULKAN], [1], [Define to 1 if vulkan is enabled.])
3081     ], [
3082       AS_IF([test -n "${enable_vulkan}"], [
3083         AC_MSG_ERROR([${VULKAN_PKG_ERRORS}.])
3084       ])
3085       enable_vulkan="no"
3086     ])
3087   ], [
3088     AS_IF([test -n "${enable_vulkan}"], [
3089       AC_MSG_ERROR([Vulkan support requires libplacebo 1.7 as well. Do not use --disable-libplacebo.])
3090     ])
3091     enable_vulkan="no"
3092   ])
3094 AM_CONDITIONAL(HAVE_VULKAN, [test "$enable_vulkan" != "no"])
3097 dnl  Xlib
3100 AC_PATH_XTRA()
3101 AC_CHECK_HEADERS([X11/Xlib.h])
3104 dnl  X C Bindings modules
3106 AC_ARG_ENABLE([xcb],
3107   AS_HELP_STRING([--enable-xcb], [X11 support with XCB (default enabled)]),, [
3108   AS_IF([test "${SYS}" != "mingw32" -a "${SYS}" != "darwin"], [
3109     enable_xcb="yes"
3110   ], [
3111     enable_xcb="no"
3112   ])
3115 have_xcb="no"
3116 have_xkbcommon_x11="no"
3117 have_xcb_keysyms="no"
3118 AS_IF([test "${enable_xcb}" != "no"], [
3119   xcb_err=""
3121   dnl libxcb
3122   PKG_CHECK_MODULES([XCB], [xcb >= 1.6],, [
3123     xcb_err="$xcb_err ${XCB_PKG_ERRORS}."])
3124   PKG_CHECK_MODULES([XCB_COMPOSITE], [xcb-composite],, [
3125     xcb_err="$xcb_err ${XCB_COMPOSITE_PKG_ERRORS}."])
3126   PKG_CHECK_MODULES([XCB_RANDR], [xcb-randr >= 1.3],, [
3127     xcb_err="$xcb_err ${XCB_RANDR_PKG_ERRORS}."])
3128   PKG_CHECK_MODULES([XCB_RENDER], [xcb-render],, [
3129     xcb_err="$xcb_err ${XCB_RENDER_PKG_ERRORS}."])
3130   PKG_CHECK_MODULES([XCB_SHM], [xcb-shm >= 1.9.2],, [
3131     xcb_err="$xcb_err ${XCB_SHM_PKG_ERRORS}."])
3132   PKG_CHECK_MODULES([XCB_XKB], [xcb-xkb],, [
3133     xcb_err="$xcb_err ${XCB_XKB_PKG_ERRORS}."])
3134   PKG_CHECK_MODULES([XCB_XV], [xcb-xv >= 1.1.90.1],, [
3135     xcb_err="$xcb_err ${XCB_XV_PKG_ERRORS}."])
3137   dnl xproto
3138   PKG_CHECK_MODULES(XPROTO, [xproto],, [
3139     xcb_err="$xcb_err ${XPROTO_PKG_ERRORS}."])
3141   AS_IF([test -n "$xcb_err"], [
3142     AC_MSG_ERROR([$xcb_err Pass --disable-xcb to skip X11 support.])
3143   ])
3145   dnl xkbcommon
3146   PKG_CHECK_MODULES([XKBCOMMON_X11], [xkbcommon-x11], [
3147     have_xkbcommon_x11="yes"
3148   ], [
3149     AC_MSG_WARN([${XKBCOMMON_X11_PKG_ERRORS}. Hotkeys are disabled.])
3150   ])
3152   dnl xcb-utils
3153   PKG_CHECK_MODULES([XCB_KEYSYMS], [xcb-keysyms >= 0.3.4], [
3154     have_xcb_keysyms="yes"
3155   ], [
3156     AC_MSG_WARN([${XCB_KEYSYMS_PKG_ERRORS}. Global hotkeys are disabled.])
3157   ])
3159   have_xcb="yes"
3161 AM_CONDITIONAL([HAVE_XCB], [test "${have_xcb}" = "yes"])
3162 AM_CONDITIONAL([HAVE_XKBCOMMON_X11], [test "${have_xkbcommon_x11}" = "yes"])
3163 AM_CONDITIONAL([HAVE_XCB_KEYSYMS], [test "${have_xcb_keysyms}" = "yes"])
3167 dnl VDPAU needs X11
3169 AC_ARG_ENABLE([vdpau],
3170   [AS_HELP_STRING([--enable-vdpau], [VDPAU hardware support (default auto)])])
3171 have_vdpau="no"
3172 AS_IF([test "${enable_vdpau}" != "no"], [
3173   PKG_CHECK_MODULES([VDPAU], [vdpau >= 0.6], [
3174     have_vdpau="yes"
3175     AS_IF([test "${no_x}" = "yes"], [
3176       AC_MSG_ERROR([VDPAU requires Xlib (X11).])
3177     ])
3178   ], [
3179     AS_IF([test -n "${enable_vdpau}"], [
3180       AC_MSG_ERROR([${VDPAU_PKG_ERRORS}.])
3181     ])
3182   ])
3184 AM_CONDITIONAL([HAVE_VDPAU], [test "${have_vdpau}" = "yes"])
3186 have_avcodec_vdpau="no"
3187 AS_IF([test "${have_vdpau}" = "yes" -a "${have_avcodec}" = "yes"], [
3188   case "${avfork}" in
3189     libav) av_vdpau_ver="56.10.0" ;;
3190     ffmpeg) av_vdpau_ver="56.19.100" ;;
3191   esac
3192   PKG_CHECK_EXISTS([libavcodec >= ${av_vdpau_ver}], [
3193     have_avcodec_vdpau="yes"
3194     AC_MSG_NOTICE([VDPAU decoding acceleration activated])
3195   ], [
3196     AS_IF([test -n "${enable_vdpau}"], [
3197       AC_MSG_ERROR([libavcodec >= 56.10.0 is required for VDPAU decoding.])
3198     ], [
3199       AC_MSG_WARN([libavcodec >= 56.10.0 are required for VDPAU decoding.])
3200     ])
3201   ])
3203 AM_CONDITIONAL([HAVE_AVCODEC_VDPAU], [test "${have_avcodec_vdpau}" = "yes"])
3207 dnl  Wayland
3209 AC_ARG_ENABLE([wayland],
3210   AS_HELP_STRING([--enable-wayland], [Wayland support (default auto)]))
3212 have_wayland="no"
3213 AS_IF([test "${enable_wayland}" != "no"], [
3214   wl_err=""
3216   dnl wayland
3217   PKG_CHECK_MODULES([WAYLAND_CLIENT], [wayland-client >= 1.5.91],, [
3218     wl_err="$wl_err ${WAYLAND_CLIENT_PKG_ERRORS}."
3219   ])
3220   PKG_CHECK_MODULES([WAYLAND_CURSOR], [wayland-cursor],, [
3221     wl_err="$wl_err ${WAYLAND_CURSOR_PKG_ERRORS}."
3222   ])
3223   PKG_CHECK_MODULES([WAYLAND_EGL], [wayland-egl],, [
3224     wl_err="$wl_err ${WAYLAND_EGL_PKG_ERRORS}."
3225   ])
3226   PKG_CHECK_MODULES([WAYLAND_SCANNER], [wayland-scanner >= 1.15], [
3227     WAYLAND_SCANNER="$(${PKG_CONFIG} wayland-scanner --variable wayland_scanner)"
3228   ], [
3229     wl_err="$wl_err ${WAYLAND_SCANNER_PKG_ERRORS}."
3230   ])
3232   dnl wayland-protocols
3233   PKG_CHECK_MODULES([WAYLAND_PROTOCOLS], [wayland-protocols >= 1.15], [
3234     WAYLAND_PROTOCOLS="$(${PKG_CONFIG} wayland-protocols --variable pkgdatadir)"
3235   ], [
3236     wl_err="$wl_err ${WAYLAND_PROTOCOLS_PKG_ERRORS}."
3237   ])
3239   AS_IF([test -n "$wl_err"], [
3240     AS_IF([test -n "$enable_wayland"], [
3241       AC_MSG_ERROR([$wl_err])
3242     ], [
3243       AC_MSG_WARN([$wl_err])
3244     ])
3245   ], [
3246     have_wayland="yes"
3247   ])
3249   dnl xkbcommon
3250   PKG_CHECK_MODULES([XKBCOMMON], [xkbcommon], [
3251     have_xkbcommon="yes"
3252   ], [
3253     AC_MSG_WARN([${XKBCOMMON_PKG_ERRORS}. Hotkeys are disabled.])
3254   ])
3256 AM_CONDITIONAL([HAVE_WAYLAND], [test "${have_wayland}" = "yes"])
3257 AC_SUBST([WAYLAND_PROTOCOLS])
3258 AC_SUBST([WAYLAND_SCANNER])
3259 AM_CONDITIONAL([HAVE_XKBCOMMON], [test "${have_xkbcommon}" = "yes"])
3263 dnl  SDL image decoder module
3265 AC_ARG_ENABLE([sdl-image],
3266   AS_HELP_STRING([--enable-sdl-image], [SDL image support (default enabled)]))
3267 AS_IF([test "${enable_sdl_image}" != "no"],[
3268   PKG_CHECK_MODULES(SDL_IMAGE, [SDL_image >= 1.2.10], [
3269     VLC_ADD_PLUGIN([sdl_image])
3270   ], [
3271     AC_MSG_WARN([${SDL_IMAGE_PKG_ERRORS}. You should install it alongside your SDL package.])
3272   ])
3276 dnl  freetype module
3278 AC_ARG_ENABLE([freetype],
3279   AS_HELP_STRING([--enable-freetype],   [freetype support   (default auto)]))
3280 AC_ARG_ENABLE([fribidi],
3281   AS_HELP_STRING([--enable-fribidi],    [fribidi support    (default auto)]))
3282 AC_ARG_ENABLE([harfbuzz],
3283   AS_HELP_STRING([--enable-harfbuzz],   [harfbuzz support   (default auto)]))
3284 AC_ARG_ENABLE([fontconfig],
3285   AS_HELP_STRING([--enable-fontconfig], [fontconfig support (default auto)]))
3287 AC_ARG_WITH([default-font],
3288     AS_HELP_STRING([--with-default-font=PATH],
3289         [Path to the default font]),
3290         [AC_DEFINE_UNQUOTED([DEFAULT_FONT_FILE],
3291             "$withval", [Default font])])
3292 AC_ARG_WITH([default-monospace-font],
3293     AS_HELP_STRING([--with-default-monospace-font=PATH],
3294         [Path to the default font]),
3295         [AC_DEFINE_UNQUOTED([DEFAULT_MONOSPACE_FONT_FILE],
3296             "$withval", [Default monospace font])])
3298 AC_ARG_WITH([default-font-family],
3299     AS_HELP_STRING([--with-default-font-family=NAME],
3300         [Name of the default font family]),
3301         [AC_DEFINE_UNQUOTED([DEFAULT_FAMILY],
3302             "$withval", [Default font family])])
3303 AC_ARG_WITH([default-monospace-font-family],
3304     AS_HELP_STRING([--with-default-monospace-font-family=NAME],
3305         [Name of the default font family]),
3306         [AC_DEFINE_UNQUOTED([DEFAULT_MONOSPACE_FAMILY],
3307             "$withval", [Default monospace font family])])
3309 have_freetype="no"
3310 have_fontconfig="no"
3311 have_fribidi="no"
3312 have_harfbuzz="no"
3314 if test "${enable_freetype}" != "no"; then
3315    PKG_CHECK_MODULES(FREETYPE, freetype2, [
3316       have_freetype="yes"
3317       VLC_ADD_CPPFLAGS([skins2],[${FREETYPE_CFLAGS}])
3318       VLC_ADD_LIBS([skins2],[${FREETYPE_LIBS}])
3320     dnl fontconfig support
3321     AS_IF([test "${enable_fontconfig}" != "no" -a "${SYS}" != "mingw32" -a "${SYS}" != "darwin"], [
3322       PKG_CHECK_MODULES(FONTCONFIG, [fontconfig >= 2.11], [
3323         have_fontconfig="yes"
3324       ], [
3325         AC_MSG_WARN([${FONTCONFIG_PKG_ERRORS}. Styles will be disabled in FreeType.])
3326       ])
3327     ])
3329       dnl fribidi support
3330       if test "${enable_fribidi}" != "no"; then
3331         PKG_CHECK_MODULES(FRIBIDI, fribidi, [
3332           have_fribidi="yes"
3333           VLC_ADD_CPPFLAGS([skins2], [${FRIBIDI_CFLAGS} -DHAVE_FRIBIDI])
3334           VLC_ADD_LIBS([skins2], [${FRIBIDI_LIBS}])
3335         ],[AC_MSG_WARN([${FRIBIDI_PKG_ERRORS}. Bidirectional text and complex scripts (Arabic, Farsi, Thai...) will be disabled in FreeType.])])
3336       fi
3338       dnl harfbuzz support
3339       if test "${have_fribidi}" != "no"; then
3340         if test "${enable_harfbuzz}" != "no"; then
3341           PKG_CHECK_MODULES(HARFBUZZ, harfbuzz, [
3342             have_harfbuzz="yes"
3343             VLC_ADD_CPPFLAGS([skins2], [${HARFBUZZ_CFLAGS} -DHAVE_HARFBUZZ])
3344             VLC_ADD_LIBS([skins2], [${HARFBUZZ_LIBS}])
3345           ],[AC_MSG_WARN([${HARFBUZZ_PKG_ERRORS}. Support for complex scripts (Arabic, Farsi, Thai...) will be disabled in FreeType.])])
3346         fi
3347       fi
3348   ],[
3349   AS_IF([test -n "${enable_freetype}"],[
3350     AC_MSG_ERROR([${FREETYPE_PKG_ERRORS}. Install FreeType2 development or configure with --disable-freetype.])
3351     ])
3352   ])
3355 AM_CONDITIONAL([HAVE_FREETYPE], [test "${have_freetype}" = "yes"])
3356 AM_CONDITIONAL([HAVE_FONTCONFIG], [test "${have_fontconfig}" = "yes"])
3357 AM_CONDITIONAL([HAVE_FRIBIDI], [test "${have_fribidi}" = "yes"])
3358 AM_CONDITIONAL([HAVE_HARFBUZZ], [test "${have_harfbuzz}" = "yes"])
3361 dnl libass subtitle rendering module
3363 AC_ARG_ENABLE([libass],
3364   AS_HELP_STRING([--enable-libass], [Subtitle support using libass (default enabled)]))
3365 AS_IF( [test "${enable_libass}" != "no"], [
3366   PKG_CHECK_MODULES(LIBASS, [libass >= 0.9.8],
3367       [
3368         VLC_ADD_PLUGIN([libass])
3370         if test "${have_fontconfig}" != "no"; then
3371             VLC_ADD_CPPFLAGS([libass],[-DHAVE_FONTCONFIG])
3372             VLC_ADD_LIBS([libass],[${FONTCONFIG_LIBS}])
3373         fi
3374       ],[
3375         AC_MSG_WARN([${LIBASS_PKG_ERRORS}.])
3376       ])
3377   ])
3380 dnl SAPI (text to Speech renderer for Windows)
3382 AC_LANG_PUSH([C++])
3383 AC_CHECK_TYPES([ISpObjectToken],[
3384               have_sapi="yes"
3385             ],[AC_MSG_WARN([sapi.h not found. Text to Speech renderer for Windows disabled])],
3386               [#include <windows.h>
3387                #include <sapi.h>
3388                #include <sphelper.h>])
3389 AM_CONDITIONAL([HAVE_SAPI], [test "${have_sapi}" = "yes"])
3390 AC_LANG_POP([C++])
3393 dnl  SVG module (text rendering and image decoding)
3395 PKG_ENABLE_MODULES_VLC([SVG], [], [librsvg-2.0 >= 2.9.0], [SVG rendering library],[auto])
3396 PKG_ENABLE_MODULES_VLC([SVGDEC], [], [librsvg-2.0 >= 2.9.0 cairo >= 1.13.1], [SVG image decoder library],[auto])
3399 dnl  Windows DirectX module
3402 AC_ARG_ENABLE([directx],
3403   AS_HELP_STRING([--enable-directx],
3404     [Microsoft DirectX support (default enabled on Windows)]),, [
3405   AS_IF([test "${SYS}" = "mingw32"], [
3406     enable_directx="yes"
3407   ], [
3408     enable_directx="no"
3409   ])
3411 AS_IF([test "${enable_directx}" != "no"], [
3412   dnl DirectDraw
3413   AC_CHECK_HEADERS([ddraw.h], [
3414     VLC_ADD_PLUGIN([directdraw])
3415   ])
3417   dnl OpenGL
3418   AC_CHECK_HEADERS([GL/wglew.h], [
3419     VLC_ADD_PLUGIN([glwin32 wgl])
3420   ],, [
3421     #include <windows.h>
3422     #include <GL/gl.h>
3423   ])
3425   dnl Direct3D11
3426   AC_CHECK_HEADERS([d3d11.h], [
3427     VLC_ADD_PLUGIN([direct3d11 direct3d11_filters])
3428   ])
3430   dnl Direct3D9
3431   AC_CHECK_HEADERS([d3d9.h], [
3432     VLC_ADD_PLUGIN([direct3d9])
3433     AC_CHECK_HEADERS([d3dx9effect.h])
3435     AC_PREPROC_IFELSE([AC_LANG_PROGRAM(
3436         [[#define COBJMACROS
3437           #include <d3d9.h>
3438           #include <dxva2api.h>
3439           #ifndef IDirectXVideoProcessorService_GetVideoProcessorDeviceGuids
3440           # error dxva2 too old
3441           #endif
3442         ]],[[;]])
3443       ],[
3444         VLC_ADD_PLUGIN([direct3d9_filters])
3445       ],
3446       [AC_MSG_WARN([Could not find required IDirectXVideoDecoder in dxva2api.h])])
3448   ])
3452 dnl  Linux framebuffer module
3454 AC_CHECK_HEADER([linux/fb.h], [
3455   VLC_ADD_PLUGIN([fb])
3459 dnl  Linux kernel mode setting module
3461 PKG_ENABLE_MODULES_VLC([KMS], [], [libdrm >= 2.4.83], [Linux kernel mode setting output], [auto])
3464 dnl  libcaca plugin
3466 PKG_ENABLE_MODULES_VLC([CACA], [], [caca >= 0.99.beta14], [libcaca output],[auto])
3469 dnl  OS/2 KVA plugin
3471 AC_ARG_ENABLE([kva],
3472   AS_HELP_STRING([--enable-kva],
3473     [support the K Video Accelerator KVA (default enabled on OS/2)]),, [
3474   AS_IF([test "$SYS" = "os2"], [
3475     enable_kva="yes"
3476   ])
3478 have_kva="no"
3479 KVA_LIBS=""
3480 AS_IF([test "$enable_kva" != "no"], [
3481   AC_CHECK_HEADERS([kva.h], [
3482     have_kva="yes"
3483     AC_CHECK_LIB([kva], [main], [
3484       KVA_LIBS="-lkva"
3485     ])
3486   ])
3488 AC_SUBST([KVA_LIBS])
3489 AM_CONDITIONAL([HAVE_KVA], [test "${have_kva}" = "yes"])
3492 dnl MMAL plugin
3494 AC_ARG_ENABLE([mmal],
3495   AS_HELP_STRING([--enable-mmal],
3496     [Multi-Media Abstraction Layer (MMAL) hardware plugin (default enable)]))
3497 if test "${enable_mmal}" != "no"; then
3498   VLC_SAVE_FLAGS
3499   LDFLAGS="${LDFLAGS} -L/opt/vc/lib -lvchostif"
3500   CPPFLAGS="${CPPFLAGS} -isystem /opt/vc/include -isystem /opt/vc/include/interface/vcos/pthreads -isystem /opt/vc/include/interface/vmcs_host/linux"
3501   AC_CHECK_HEADERS([interface/mmal/mmal.h],
3502     [ AC_CHECK_LIB([bcm_host], [vc_tv_unregister_callback_full], [
3503         have_mmal="yes"
3504         VLC_ADD_PLUGIN([mmal])
3505         VLC_ADD_LDFLAGS([mmal],[ -L/opt/vc/lib ])
3506         VLC_ADD_CFLAGS([mmal],[ -isystem /opt/vc/include -isystem /opt/vc/include/interface/vcos/pthreads -isystem /opt/vc/include/interface/vmcs_host/linux ])
3507         VLC_ADD_LIBS([mmal],[ -lbcm_host -lmmal -lmmal_core -lmmal_components -lmmal_util -lvchostif ]) ], [
3508           AS_IF([test "${enable_mmal}" = "yes"],
3509             [ AC_MSG_ERROR([Cannot find bcm library...]) ],
3510             [ AC_MSG_WARN([Cannot find bcm library...]) ])
3511           ],
3512         [])
3513     ] , [ AS_IF([test "${enable_mmal}" = "yes"],
3514       [ AC_MSG_ERROR([Cannot find development headers for mmal...]) ],
3515       [ AC_MSG_WARN([Cannot find development headers for mmal...]) ]) ])
3516   VLC_RESTORE_FLAGS
3518 AM_CONDITIONAL([HAVE_MMAL], [test "${have_mmal}" = "yes"])
3521 dnl  Audio plugins
3524 EXTEND_HELP_STRING([Audio plugins:])
3527 dnl  Pulseaudio module
3529 AC_ARG_ENABLE([pulse],
3530   AS_HELP_STRING([--enable-pulse],
3531     [use the PulseAudio client library (default auto)]))
3532 have_pulse="no"
3533 AS_IF([test "${enable_pulse}" != "no"], [
3534   PKG_CHECK_MODULES([PULSE], [libpulse >= 1.0], [
3535     have_pulse="yes"
3536   ], [
3537     AS_IF([test "x${enable_pulse}" != "x"], [
3538       AC_MSG_ERROR([$PULSE_PKG_ERRORS. PulseAudio 1.0 or later required.])
3539     ])
3540   ])
3542 AM_CONDITIONAL([HAVE_PULSE], [test "${have_pulse}" = "yes"])
3545 dnl  ALSA module
3547 AC_ARG_ENABLE([alsa],
3548   AS_HELP_STRING([--enable-alsa],
3549     [support the Advanced Linux Sound Architecture (default auto)]),, [
3550   AS_IF([test "$SYS" = "linux" -a "${have_pulse}" = "no"], [
3551     enable_alsa="yes"
3552   ])
3554 have_alsa="no"
3555 AS_IF([test "${enable_alsa}" != "no"], [
3556   PKG_CHECK_MODULES([ALSA], [alsa >= 1.0.24], [
3557     have_alsa="yes"
3558   ], [
3559     AS_IF([test "x${enable_alsa}" != "x"], [
3560       AC_MSG_ERROR([$ALSA_PKG_ERRORS. alsa-lib 1.0.24 or later required. Pass --disable-alsa to ignore this error.])
3561     ])
3562   ])
3564 AM_CONDITIONAL([HAVE_ALSA], [test "${have_alsa}" = "yes"])
3567 dnl  Open Sound System module
3569 AC_ARG_ENABLE([oss],
3570   AS_HELP_STRING([--enable-oss],
3571     [support the Open Sound System OSS (default enabled on FreeBSD/NetBSD/DragonFlyBSD)]),, [
3572   AS_IF([test "$SYS" = "mingw32" -o "$SYS" = "linux" -o "$SYS" = "openbsd"], [
3573     enable_oss="no"
3574   ])
3576 have_oss="no"
3577 OSS_LIBS=""
3578 AS_IF([test "$enable_oss" != "no"], [
3579   AC_CHECK_HEADERS([soundcard.h sys/soundcard.h], [
3580     have_oss="yes"
3581     AC_CHECK_LIB([ossaudio], [main], [
3582       OSS_LIBS="-lossaudio"
3583     ])
3584   ])
3586 AC_SUBST([OSS_LIBS])
3587 AM_CONDITIONAL([HAVE_OSS], [test "${have_oss}" = "yes"])
3590 dnl  OpenBSD sndio module
3592 AC_ARG_ENABLE([sndio],
3593   AS_HELP_STRING([--disable-sndio],
3594     [support the OpenBSD sndio (default auto)]),, [
3595   AS_IF([test "$SYS" = "openbsd"], [
3596     enable_sndio="yes"
3597   ])
3599 have_sndio="no"
3600 AS_IF([test "$enable_sndio" != "no"], [
3601   AC_CHECK_HEADER([sndio.h], [
3602     have_sndio="yes"
3603   ])
3605 AM_CONDITIONAL([HAVE_SNDIO], [test "${have_sndio}" = "yes"])
3608 dnl  Windows Audio Session plugin
3610 AC_ARG_ENABLE([wasapi],
3611   AS_HELP_STRING([--enable-wasapi],
3612     [use the Windows Audio Session API (default auto)])
3614 have_wasapi="no"
3615 AS_IF([test "$enable_wasapi" != "no"], [
3616   AC_CHECK_HEADER([audioclient.h], [
3617     have_wasapi="yes"
3618   ], [
3619     AS_IF([test "x${enable_wasapi}" != "x"], [
3620       AC_MSG_ERROR([Windows Audio Session API not found.])
3621     ])
3622   ])
3624 AM_CONDITIONAL([HAVE_WASAPI], [test "${have_wasapi}" = "yes"])
3627 dnl  JACK modules
3629 AC_ARG_ENABLE([jack],
3630   AS_HELP_STRING([--disable-jack],
3631     [do not use jack (default auto)]))
3632 have_jack="no"
3633 AS_IF([test "${enable_jack}" != "no"], [
3634     PKG_CHECK_MODULES(JACK, jack >= 1.9.7,
3635       [ have_jack=yes ],
3636       [
3637       AC_MSG_WARN([${JACK_PKG_ERRORS}, trying jack1 instead])
3639       PKG_CHECK_MODULES(JACK, jack >= 0.120.1 jack < 1.0,
3640       [ have_jack=yes ],
3641       [
3642       AS_IF([test -n "${enable_jack}"],
3643          [AC_MSG_ERROR([${JACK_PKG_ERRORS}.])],
3644          [AC_MSG_WARN([${JACK_PKG_ERRORS}.])])
3645       ])
3646     ])
3648 AM_CONDITIONAL([HAVE_JACK], [test "${have_jack}" != "no"])
3651 dnl  OpenSLES Android
3653 AC_ARG_ENABLE([opensles],
3654   AS_HELP_STRING([--enable-opensles], [Android OpenSL ES audio module (default disabled)]))
3655 if test "${HAVE_ANDROID}" = "1"; then
3656   if test "${enable_opensles}" = "yes"; then
3657       AC_CHECK_HEADERS([SLES/OpenSLES.h],
3658         [ VLC_ADD_PLUGIN([opensles_android]) ],
3659         [ AC_MSG_ERROR([cannot find OpenSLES headers])] )
3660   fi
3664 dnl  Tizen audio
3666 AC_ARG_ENABLE([tizen_audio],
3667   AS_HELP_STRING([--enable-tizen-audio],
3668     [Tizen audio module (default enabled on Tizen)]),, [
3669   AS_IF([test "$HAVE_TIZEN" = "1"], [
3670     enable_tizen_audio="yes"
3671   ])
3673 if test "${enable_tizen_audio}" = "yes"; then
3674   AC_CHECK_HEADERS([audio_io.h],
3675     [ VLC_ADD_PLUGIN([tizen_audio]) ],
3676     [ AC_MSG_ERROR([cannot find Tizen audio_io headers])] )
3680 dnl libsamplerate plugin
3682 PKG_ENABLE_MODULES_VLC([SAMPLERATE], [], [samplerate], [Resampler with libsamplerate], [auto])
3685 dnl  soxr module
3687 PKG_ENABLE_MODULES_VLC([SOXR], [], [soxr >= 0.1.2], [SoX Resampler library], [auto])
3690 dnl  OS/2 KAI plugin
3692 AC_ARG_ENABLE([kai],
3693   AS_HELP_STRING([--enable-kai],
3694     [support the K Audio Interface KAI (default enabled on OS/2)]),, [
3695   AS_IF([test "$SYS" = "os2"], [
3696     enable_kai="yes"
3697   ])
3699 have_kai="no"
3700 KAI_LIBS=""
3701 AS_IF([test "$enable_kai" != "no"], [
3702   AC_CHECK_HEADERS([kai.h], [
3703     have_kai="yes"
3704     AC_CHECK_LIB([kai], [main], [
3705       KAI_LIBS="-lkai"
3706     ])
3707   ])
3709 AC_SUBST([KAI_LIBS])
3710 AM_CONDITIONAL([HAVE_KAI], [test "${have_kai}" = "yes"])
3713 dnl  chromaprint audio track fingerprinter
3715 m4_pushdef([libchromaprint_version], 0.6.0)
3716 PKG_WITH_MODULES([CHROMAPRINT],[libchromaprint >= libchromaprint_version],
3717     VLC_ADD_PLUGIN([stream_out_chromaprint]),
3718     AS_IF([test "${enable_chromaprint}" = "yes"],
3719         [AC_MSG_ERROR(Library [libchromaprint >= libchromaprint_version] needed for [chromaprint] was not found)],
3720         [AC_MSG_WARN(Library [libchromaprint >= libchromaprint_version] needed for [chromaprint] was not found)]
3721          ),
3722     [(Chromaprint based audio fingerprinter)],[auto])
3723 m4_popdef([libchromaprint_version])
3726 dnl  Chromecast streaming support
3728 m4_pushdef([protobuf_lite_version], 2.5.0)
3729 AC_ARG_VAR(PROTOC, [protobuf compiler])
3730 AC_CHECK_PROGS(PROTOC, protoc, no)
3731 PKG_WITH_MODULES([CHROMECAST],[protobuf-lite >= protobuf_lite_version], [
3732     AS_IF([test "x${PROTOC}" != "xno"], [
3733         build_chromecast="yes"
3734     ], [
3735     AC_MSG_ERROR(protoc compiler needed for [chromecast] was not found)
3736     ])
3737 ], [
3738     AS_IF([test "${enable_chromecast}" = "yes"],
3739         AC_MSG_ERROR(Library [protobuf-lite >= protobuf_lite_version] needed for [chromecast] was not found),
3740         AC_MSG_WARN(Library [protobuf-lite >= protobuf_lite_version] needed for [chromecast] was not found)
3741     )
3742     enable_chromecast="no"
3743 ], [(Chromecast streaming support)], [auto])
3744 AM_CONDITIONAL([BUILD_CHROMECAST], [test "${build_chromecast}" = "yes"])
3745 m4_popdef([protobuf_lite_version])
3748 dnl  Interface plugins
3751 EXTEND_HELP_STRING([Interface plugins:])
3754 dnl QT
3756 AC_ARG_ENABLE([qt],
3757   AS_HELP_STRING([--disable-qt], [Qt UI support (default enabled)]),, [
3758   AS_IF([test "${enable_vlc}" != "no"], [enable_qt="yes"])
3759   AS_IF([test "${SYS}" = "darwin"], [
3760     enable_qt="no"
3761   ])
3763 have_qt5_x11="no"
3764 AS_IF([test "${enable_qt}" != "no"], [
3765   PKG_CHECK_MODULES([QT], [Qt5Core >= 5.9.0 Qt5Widgets Qt5Gui Qt5Svg], [
3766       PKG_CHECK_MODULES([QT5_X11], [Qt5X11Extras], [
3767           have_qt5_x11="yes"
3768       ],[
3769           AC_MSG_WARN([Not building Qt Interface with X11 helpers.])
3770       ])
3771       QT_PATH="$(eval $PKG_CONFIG --variable=exec_prefix Qt5Core)"
3772       QT_HOST_PATH="$(eval $PKG_CONFIG --variable=host_bins Qt5Core)"
3773       QT_VERSION="$(eval $PKG_CONFIG --modversion Qt5Gui)"
3774       AC_PATH_PROGS(MOC, [moc-qt5 moc], moc, ["${QT_HOST_PATH}" "${QT_PATH}/bin"])
3775       AC_PATH_PROGS(RCC, [rcc-qt5 rcc], rcc, ["${QT_HOST_PATH}" "${QT_PATH}/bin"])
3776       AC_PATH_PROGS(UIC, [uic-qt5 uic], uic, ["${QT_HOST_PATH}" "${QT_PATH}/bin"])
3777     ], [
3778       AS_IF([test -n "${enable_qt}"],[
3779         AC_MSG_ERROR([${QT_PKG_ERRORS}. If you want to build VLC without GUI, pass --disable-qt.])
3780       ],[
3781         AC_MSG_WARN([${QT_PKG_ERRORS}.])
3782       ])
3783       enable_qt="no"
3784     ])
3787 AS_IF([test "${enable_qt}" != "no"], [
3788   ALIASES="${ALIASES} qvlc"
3790 AC_SUBST([QT_VERSION])
3791 AM_CONDITIONAL([ENABLE_QT], [test "$enable_qt" != "no"])
3792 AM_CONDITIONAL([HAVE_QT5_X11], [test "${have_qt5_x11}" = "yes"])
3795 dnl detect kde4-config patch (used for kde solids).
3797 AC_ARG_VAR([KDE4_CONFIG], [kde4-config utility])
3798 AS_IF([test "x$KDE4_CONFIG" = "x"], [
3799   KDE4_CONFIG="kde4-config"
3803 dnl Simple test for skins2 dependency
3805 AS_IF([test "$enable_qt" = "no"], [
3806   AS_IF([test "${enable_skins2}" = "yes"], [
3807     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.])
3808   ], [
3809     enable_skins2="no"
3810     AC_MSG_WARN([The skins2 module depends on the Qt interface, Qt is not built so skins2 is disabled.])
3811   ])
3815 dnl Skins2 module
3817 AC_ARG_ENABLE([skins2],
3818   AS_HELP_STRING([--enable-skins2], [skins interface module (default auto)]))
3819 AS_IF([test "${enable_skins2}" != "no"], [
3820   have_skins_deps="yes"
3822   dnl Win32
3823   AS_IF([test "${SYS}" = "mingw32"], [
3824     VLC_ADD_CPPFLAGS([skins2],[-U_OFF_T_ -U_off_t -DWIN32_SKINS])
3825     VLC_ADD_LIBS([skins2],[-lgdi32 -lole32 -luuid -lmsimg32])
3826   dnl OS/2
3827   ], [test "${SYS}" = "os2"], [
3828     VLC_ADD_CPPFLAGS([skins2],[ -DOS2_SKINS])
3829   dnl Linux/Unix
3830   ], [
3831     PKG_CHECK_MODULES([XPM], [xpm],, [have_skins_deps="no"])
3832     PKG_CHECK_MODULES([XINERAMA], [xinerama],, [have_skins_deps="no"])
3833     PKG_CHECK_MODULES([XCURSOR], [xcursor],, [have_skins_deps="no"])
3834     PKG_CHECK_MODULES([XEXT], [xext],, [have_skins_deps="no"])
3835     VLC_ADD_CPPFLAGS([skins2],[${X_CFLAGS} ${XEXT_CFLAGS} ${XPM_CFLAGS} -DX11_SKINS])
3836     VLC_ADD_LIBS([skins2],[${X_LIBS} ${X_PRE_LIBS} ${XEXT_LIBS} ${XPM_LIBS} ${XINERAMA_LIBS} ${XCURSOR_LIBS} -lX11])
3837   ])
3839   dnl we need freetype
3840   AS_IF([test "${have_freetype}" != "yes"], [
3841     have_skins_deps="no"
3842   ])
3844   AS_IF([test "${have_skins_deps}" = "no"], [
3845     AS_IF([test "x${enable_skins2}" = "x"], [
3846       AC_MSG_WARN([Skins2 interface disabled due to missing dependencies.])
3847     ], [
3848       AC_MSG_ERROR([Skins2 interface requires FreeType, libxcursor, libxpm, libxext and libxinerama])
3849     ])
3850     enable_skins2="no"
3851   ], [
3852     ALIASES="${ALIASES} svlc"
3853     enable_skins2="yes"
3854   ])
3856 AM_CONDITIONAL([BUILD_SKINS], [test "${enable_skins2}" = "yes"])
3858 AC_ARG_ENABLE([libtar],
3859   AS_HELP_STRING([--enable-libtar], [libtar support for skins2 (default auto)]))
3860 AS_IF([test "${enable_skins2}" = "yes" && test "${enable_libtar}" != "no"], [
3861   AC_CHECK_HEADERS([libtar.h], [
3862     VLC_ADD_LIBS([skins2],[-ltar])
3863   ])
3867 dnl  MacOS X gui module
3869 AC_ARG_ENABLE([macosx],
3870   AS_HELP_STRING([--enable-macosx], [Mac OS X gui support (default enabled on Mac OS X)]))
3871 if test "x${enable_macosx}" != "xno" -a "${SYS}" = "darwin"
3872 then
3874   dnl
3875   dnl If possible, use xcrun to find the right ibtool
3876   dnl
3878   AC_PATH_PROG([XCRUN], [xcrun], [no])
3879   AS_IF([test ! "x${XCRUN}" = "xno"], [
3880     AC_MSG_CHECKING([for ibtool (using xcrun)])
3881     XIB="$(eval $XCRUN -f ibtool 2>/dev/null || echo no)"
3882     AC_MSG_RESULT([${XIB}])
3883   ], [
3884     AC_MSG_WARN([Looking for tools without using xcrun])
3885   ])
3887   AS_IF([test "x${XIB}" = "xno"], [
3888     AC_PATH_PROG(XIB, [ibtool], [no])
3889     AS_IF([test "x${XIB}" = "xno"], [
3890       AC_MSG_ERROR([ibtool was not found, but is required for --enable-macosx])
3891     ])
3892   ])
3894 AM_CONDITIONAL([ENABLE_MACOSX_UI], [test "$enable_macosx" != "no" -a "${SYS}" = "darwin"])
3897 dnl  MacOS X sparkle update support
3899 AC_ARG_ENABLE([sparkle],
3900   AS_HELP_STRING([--enable-sparkle], [Sparkle update support for OS X (default enabled on Mac OS X)]))
3901 if test "x${enable_sparkle}" != "xno" -a "${HAVE_OSX}" = "1"
3902 then
3903   if test ! -d ${CONTRIB_DIR}/Sparkle.framework -a ! -d ${CONTRIB_DIR}/Frameworks/Sparkle.framework
3904   then
3905     AC_MSG_ERROR([Sparkle framework is required and was not found in ${CONTRIB_DIR}])
3906   fi
3908   AC_DEFINE([HAVE_SPARKLE], [1], [Define to 1 if sparkle is enabled.])
3910 AM_CONDITIONAL([HAVE_SPARKLE], [test "$enable_sparkle" != "no"])
3913 dnl  MacOS X breakpad creash reporter support
3915 AC_ARG_WITH([breakpad],
3916   AS_HELP_STRING([--with-breakpad=URL], [Enable Breakpad reporter using given URL]), [], [with_breakpad=no])
3918 AS_IF([test "$with_breakpad" != "no"], [
3920   AS_IF([test "$with_breakpad" = "yes"], [
3921     AC_MSG_ERROR([You need to supply the CrashDragon Server URL as value for --with-breakpad])
3922   ])
3924   AS_IF([test "$HAVE_OSX" = "1"], [
3925     AC_MSG_CHECKING([for Breakpad framework])
3926     AS_IF([test ! -d ${CONTRIB_DIR}/Breakpad.framework -a \
3927                 ! -d ${CONTRIB_DIR}/Frameworks/Breakpad.framework], [
3928       AC_MSG_RESULT([no])
3929       with_breakpad="no"
3930       AC_MSG_ERROR([Breakpad framework is required and was not found in ${CONTRIB_DIR}])
3931     ], [
3932       AC_MSG_RESULT([yes])
3933     ])
3934   ],[
3935     PKG_CHECK_MODULES([BREAKPAD], [breakpad-client], [
3936       LDFLAGS="${LDFLAGS} -Wl,--build-id"
3937     ], [
3938       AC_MSG_ERROR(["breakpad not found"])
3939     ])
3940   ])
3943 AM_CONDITIONAL([HAVE_BREAKPAD], [test "$with_breakpad" != "no"])
3944 AS_IF([test "$with_breakpad" != "no"], [
3945   AC_SUBST([BREAKPAD_URL], ["${with_breakpad}"])
3949 dnl  Minimal Mac OS X module
3951 AC_ARG_ENABLE([minimal-macosx],
3952   AS_HELP_STRING([--enable-minimal-macosx], [Minimal Mac OS X support (default disabled)]))
3953 if test "${enable_minimal_macosx}" = "yes" -a "${SYS}" = "darwin"
3954 then
3955   VLC_ADD_PLUGIN([minimal_macosx])
3959 dnl Mac OS X fancy dmg build tool
3961 if test "${HAVE_OSX}" = "1"
3962 then
3963   AC_PATH_PROG(DMGBUILD, dmgbuild, no)
3964   AS_IF([test "x${DMGBUILD}" = "xno"], [
3965     AC_MSG_WARN([dmgbuild not found -- unable to build fancy DMGs])
3966   ])
3968 AM_CONDITIONAL([HAVE_DMGBUILD], [test "x$DMGBUILD" != "xno" -a "${HAVE_OSX}" = "1"])
3971 dnl  VideoToolbox plugins
3972 AC_CHECK_HEADERS([VideoToolbox/VideoToolbox.h], [
3973     VLC_ADD_PLUGIN([videotoolbox])
3974     VLC_ADD_PLUGIN([cvpx])
3975   ])
3978 dnl  AudioToolbox MIDI plugin
3979 AC_CHECK_HEADERS([AudioToolbox/AudioToolbox.h], [
3980   VLC_ADD_PLUGIN([audiotoolboxmidi])
3984 dnl  ncurses module
3986 AC_ARG_ENABLE([ncurses],
3987 AS_HELP_STRING([--disable-ncurses],[ncurses text-based interface (default auto)]))
3988 have_ncurses="no"
3989 AS_IF([test "${enable_ncurses}" != "no"] ,[
3990   PKG_CHECK_MODULES([NCURSES], [ncursesw], [
3991     have_ncurses="yes"
3992     ALIASES="${ALIASES} nvlc"
3993   ], [
3994     AS_IF([test -n "${enable_ncurses}"], [
3995       AC_MSG_ERROR([${NCURSES_PKG_ERRORS}.])
3996     ])
3997   ])
3999 AM_CONDITIONAL([HAVE_NCURSES], [test "${have_ncurses}" = "yes"])
4002 dnl  Lirc plugin
4004 AC_ARG_ENABLE([lirc],
4005   AS_HELP_STRING([--enable-lirc], [lirc support (default disabled)]))
4006 have_lirc="no"
4007 AS_IF([test "${enable_lirc}" = "yes"], [
4008   AC_CHECK_HEADER(lirc/lirc_client.h, [
4009     AC_CHECK_LIB([lirc_client], [lirc_init], [
4010       have_lirc="yes"
4011     ])
4012   ])
4014 AM_CONDITIONAL([HAVE_LIRC], [test "${have_lirc}" = "yes"])
4017 dnl  Bitstream
4019 PKG_CHECK_MODULES([BITSTREAM], [bitstream > 1.4],[have_bitstream="yes"], [have_bitstream="no"])
4020 AM_CONDITIONAL([HAVE_BITSTREAM], [test "${have_bitstream}" = "yes"])
4023 dnl  SRT plugin
4025 PKG_ENABLE_MODULES_VLC([SRT], [access_srt access_output_srt], [srt >= 1.2.2], [SRT input/output plugin], [auto], [], [], [-DENABLE_SRT])
4027 EXTEND_HELP_STRING([Visualisations and Video filter plugins:])
4029 dnl  goom visualization plugin
4031 PKG_ENABLE_MODULES_VLC([GOOM], [], [libgoom2], [goom visualization plugin], [auto])
4034 dnl libprojectM visualization plugin
4036 AC_ARG_ENABLE([projectm],
4037   AS_HELP_STRING([--enable-projectm], [projectM visualization plugin (default enabled)]))
4038 AS_IF([test "${enable_projectm}" != "no"],
4039   [
4040     PKG_CHECK_MODULES(PROJECTM, libprojectM,
4041     [
4042       VLC_ADD_PLUGIN([projectm])
4043       PKG_CHECK_EXISTS([libprojectM >= 2.0.0],
4044         [ AC_DEFINE([HAVE_PROJECTM2], 1, [Define to 1 if using libprojectM 2.x]) ],
4045         [ AC_MSG_WARN( [Using libprojectM version 1] )
4046       ])
4047     ],[
4048       AC_MSG_WARN([${PROJECTM_PKG_ERRORS}.])
4049     ])
4050   ])
4053 dnl Vovoid VSXu visualization plugin
4055 AC_ARG_ENABLE([vsxu],
4056   AS_HELP_STRING([--enable-vsxu], [Vovoid VSXu visualization plugin (default auto)]))
4057 AS_IF([test "${enable_vsxu}" != "no"],
4058   [
4059     PKG_CHECK_MODULES(VSXU, libvsxu,
4060     [
4061       VLC_ADD_PLUGIN([vsxu])
4062     ],[
4063       AC_MSG_WARN([${VSXU_PKG_ERRORS}.])
4064     ])
4065   ])
4067 EXTEND_HELP_STRING([Service Discovery plugins:])
4069 dnl  Avahi-Zeroconf services discovery
4070 PKG_ENABLE_MODULES_VLC([AVAHI], [], [avahi-client >= 0.6], [Zeroconf services discovery], [auto])
4073 dnl  libudev services discovery
4074 PKG_ENABLE_MODULES_VLC([UDEV], [], [libudev >= 142], [Linux udev services discovery], [auto])
4077 dnl MTP devices services discovery
4078 PKG_ENABLE_MODULES_VLC([MTP], [mtp access_mtp], [libmtp >= 1.0.0], [MTP devices support], [auto])
4081 dnl UPnP Plugin (Intel SDK)
4083 PKG_ENABLE_MODULES_VLC([UPNP], [upnp], [libupnp], [Intel UPNP SDK],[auto])
4086 dnl mDNS using libmicrodns
4088 PKG_ENABLE_MODULES_VLC([MICRODNS], [], [microdns], [mDNS services discovery], [auto])
4091 EXTEND_HELP_STRING([Misc options:])
4094 dnl  libxml2 module
4096 PKG_ENABLE_MODULES_VLC([LIBXML2], [xml], [libxml-2.0 >= 2.5], [libxml2 support],[auto])
4100 dnl libgcrypt
4102 AC_ARG_ENABLE([libgcrypt],
4103   AS_HELP_STRING([--disable-libgcrypt], [gcrypt support (default enabled)]))
4104 AC_ARG_VAR([GCRYPT_CFLAGS], [C compiler flags for gcrypt])
4105 AC_ARG_VAR([GCRYPT_LIBS], [linker flags flags for gcrypt])
4107 # require libgcrypt >= 1.6.0
4108 AS_IF([test "${enable_libgcrypt}" != "no"], [
4109   AC_CACHE_CHECK([for gcrypt 1.6.0 or later], [ac_cv_lib_gcrypt], [
4110     VLC_SAVE_FLAGS
4111     CFLAGS="${CFLAGS} ${GCRYPT_CFLAGS}"
4112     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([
4113 [#include <gcrypt.h>
4114 #if GCRYPT_VERSION_NUMBER < 0x010600
4115 #error
4116 #endif]])], [
4117       ac_cv_lib_gcrypt=yes
4118     ], [
4119       ac_cv_lib_gcrypt=no
4120     ])
4121     VLC_RESTORE_FLAGS
4122   ])
4124   AS_IF([test "${ac_cv_lib_gcrypt}" = "yes"], [
4125     AC_DEFINE([HAVE_GCRYPT], 1, [Defined if having gcrypt])
4126   ], [
4127     AS_IF([test "${enable_libgcrypt}" = "yes"], [
4128       AC_MSG_ERROR([libgcrypt version 1.6.0 or higher not found. Install libgcrypt or pass --disable-libgcrypt.])
4129     ])
4130   ])
4133 AS_IF([test -z "$GCRYPT_LIBS"], [
4134   GCRYPT_LIBS="-lgcrypt -lgpg-error"
4137 AC_SUBST([GCRYPT_CFLAGS])
4138 AC_SUBST([GCRYPT_LIBS])
4139 AM_CONDITIONAL([HAVE_GCRYPT], [test "${ac_cv_lib_gcrypt}" = "yes"])
4142 dnl TLS/SSL
4144 AC_ARG_ENABLE([gnutls],
4145   AS_HELP_STRING([--enable-gnutls], [GNU TLS TLS/SSL support (default enabled)]))
4146 AS_IF([test "${enable_gnutls}" != "no"], [
4147   PKG_CHECK_MODULES(GNUTLS, [gnutls >= 3.3.6], [
4148     VLC_ADD_PLUGIN([gnutls])
4149   ], [
4150     AS_IF([test -n "${enable_gnutls}"], [
4151       AC_MSG_ERROR([${GNUTLS_PKG_ERRORS}.)])
4152     ])
4153   ])
4158 dnl Taglib plugin
4160 AC_ARG_ENABLE([taglib],
4161   AS_HELP_STRING([--disable-taglib],
4162     [do not use TagLib (default enabled)]))
4163 AS_IF([test "${enable_taglib}" != "no"], [
4164   PKG_CHECK_MODULES(TAGLIB, taglib >= 1.9, [
4165     VLC_ADD_PLUGIN([taglib])
4166   ], [
4167     AC_MSG_WARN([${TAGLIB_PKG_ERRORS}.])])
4171 dnl  libsecret
4173 PKG_ENABLE_MODULES_VLC([SECRET], [], [libsecret-1 >= 0.18], [use libsecret for keystore], [auto])
4176 dnl  kwallet
4178 AC_ARG_ENABLE([kwallet],
4179   AS_HELP_STRING([--enable-kwallet],
4180     [use kwallet (via D-Bus) for keystore (default enabled)]))
4181 AS_IF([test "${enable_kwallet}" != "no" -a "${have_dbus}" = "yes"], [
4182   VLC_ADD_PLUGIN([kwallet])
4186 dnl update checking system
4188 AC_ARG_ENABLE([update-check],
4189   AS_HELP_STRING([--enable-update-check], [update checking system (default disabled)]))
4190 if test "${enable_update_check}" = "yes"
4191 then
4192  AS_IF([test "${ac_cv_lib_gcrypt}" != "yes"],[
4193     AC_MSG_ERROR([libgcrypt is required for update checking system]) ])
4195 AM_CONDITIONAL([UPDATE_CHECK], [test "${enable_update_check}" = "yes"])
4198 dnl OS X notification plugin
4200 AC_ARG_ENABLE([osx_notifications],
4201   AS_HELP_STRING([--enable-osx-notifications],
4202     [macOS notification plugin (default disabled)]),,
4203   [enable_osx_notifications=no])
4204 AS_IF([test "${enable_osx_notifications}" != "no"], [
4205   VLC_ADD_PLUGIN([osx_notifications])
4209 dnl Libnotify notification plugin
4211 PKG_ENABLE_MODULES_VLC([NOTIFY], [], [libnotify gtk+-3.0], [libnotify notification], [auto])
4213 PKG_ENABLE_MODULES_VLC([MEDIALIBRARY], [medialibrary], [medialibrary], (medialibrary support), [auto])
4216 dnl  Endianness check
4218 AC_C_BIGENDIAN
4219 AS_IF([test "${ac_cv_c_bigendian}" = "yes"], [
4220   DEFS_BIGENDIAN="-DWORDS_BIGENDIAN=1"
4221 ], [
4222   DEFS_BIGENDIAN=""
4224 AC_SUBST([DEFS_BIGENDIAN])
4227 dnl Where to install KDE solid .desktop
4229 AC_ARG_WITH(kde-solid,
4230   AS_HELP_STRING([--with-kde-solid=PATH],
4231                  [KDE Solid actions directory (auto)]),, [
4233 if test "${SYS}" != "mingw32" -a "${SYS}" != "darwin" ; then
4234   with_kde_solid="yes"
4237 soliddatadir=""
4238 AS_IF([test "${with_kde_solid}" != "no"], [
4239   AS_IF([test "${with_kde_solid}" = "yes"], [
4240     kde4datadir="`${KDE4_CONFIG} --install data`"
4241     AS_IF([test "x$kde4datadir" = "x"], [kde4datadir='${datadir}/kde4/apps'])
4242     soliddatadir="${kde4datadir}/solid/actions"
4243   ], [
4244     soliddatadir="${with_kde_solid}"
4245   ])
4247 AC_SUBST([soliddatadir])
4248 AM_CONDITIONAL([KDE_SOLID], [test "x${soliddatadir}" != "x"])
4251 dnl  Find tools for win32 packaging
4253 AS_IF([test "${SYS}" = "mingw32"], [
4254     dnl
4255     dnl Find makensis required to build the NSIS installer
4256     dnl
4257     nsis_major_required="3"
4258     nsis_version_ok="no"
4259     AC_PATH_PROG([MAKENSIS], [makensis], [no])
4260     AS_IF([test "$MAKENSIS" != "no"], [
4261         # Check version
4262         AC_MSG_CHECKING([makensis version])
4263         nsis_version=$($MAKENSIS -VERSION)
4264         AC_MSG_RESULT([$nsis_version])
4265         nsis_version_major=$(echo "$nsis_version" | awk -F \. '{print $1}' | sed 's/v//')
4266         # Check if major version is a valid number
4267         AS_IF([test -n "$nsis_version_major" && \
4268                test "$nsis_version_major" -eq "$nsis_version_major" 2> /dev/null], [
4269             # Do the version check using major version
4270             AS_IF([test "$nsis_version_major" -lt "$nsis_major_required"], [
4271                 AC_MSG_WARN([makensis too old, (needs ${nsis_major_required}.x, have ${nsis_version_major}.x)])
4272             ], [
4273                 nsis_version_ok="yes"
4274             ])
4275         ], [
4276             AC_MSG_WARN([failed to check the makensis version])
4277         ])
4278     ])
4279     dnl
4280     dnl Find 7zip
4281     dnl
4282     AC_PATH_PROG([SEVENZIP], [7z], [7z])
4284 AM_CONDITIONAL([HAVE_MAKENSIS], [test "x$MAKENSIS" != "xno" && test "$nsis_version_ok" = "yes"])
4287 dnl Check wether we have the PROCESS_MITIGATION_IMAGE_LOAD_POLICY
4288 dnl It should only be available when building for win10, but some SDKs define it unconditionnaly
4290 if test "${SYS}" = "mingw32"; then
4291     AC_CHECK_TYPES([PROCESS_MITIGATION_IMAGE_LOAD_POLICY],,,[#include <windows.h>])
4294 EXTEND_HELP_STRING([Components:])
4297 dnl  the VLC binary
4299 AC_ARG_ENABLE([vlc],
4300   AS_HELP_STRING([--enable-vlc], [build the VLC media player (default enabled)]))
4301 AM_CONDITIONAL([BUILD_VLC], [test "${enable_vlc}" != "no"])
4304 dnl Fuzzer (at the end in order to don't mess dependencies FLAGS)
4306 AS_VAR_IF(with_libfuzzer, no, [], [
4307     LIBS="-lstdc++ ${LIBM} -L${with_libfuzzer} -lFuzzer"
4308     AX_CHECK_COMPILE_FLAG(-fsanitize-coverage=trace-pc-guard, [
4309         AX_APPEND_FLAG([-fsanitize-coverage=trace-pc-guard])
4310         AX_APPEND_FLAG([-fsanitize-coverage=trace-pc-guard], [CXXFLAGS])
4311         AX_APPEND_COMPILE_FLAGS([-fsanitize-coverage=trace-cmp])
4312         AX_APPEND_COMPILE_FLAGS([-fsanitize-coverage=trace-cmp], [CXXFLAGS])
4313     ], [
4314         AX_CHECK_COMPILE_FLAG(-fsanitize-coverage=trace-pc, [
4315             AX_APPEND_FLAG([-fsanitize-coverage=trace-pc])
4316             AX_APPEND_FLAG([-fsanitize-coverage=trace-pc], [CXXFLAGS])
4317         ], [
4318             AC_MSG_ERROR([Sanitizer coverage not supported by your compiler])
4319         ])
4320     ])
4324 dnl  Stuff used by the program
4326 VERSION_MESSAGE="${VERSION} ${CODENAME}"
4327 COPYRIGHT_MESSAGE="Copyright © ${COPYRIGHT_YEARS} the VideoLAN team"
4328 AC_DEFINE_UNQUOTED([VERSION_MESSAGE], "${VERSION_MESSAGE}", [Simple version string])
4329 AC_DEFINE_UNQUOTED([COPYRIGHT_MESSAGE], "${COPYRIGHT_MESSAGE}", [Copyright string])
4330 AC_DEFINE_UNQUOTED([COPYRIGHT_YEARS], "${COPYRIGHT_YEARS}", [The copyright years])
4331 AC_DEFINE_UNQUOTED([CONFIGURE_LINE], "${CONFIGURE_LINE}", [The ./configure command line])
4332 AC_DEFINE_UNQUOTED([PACKAGE_VERSION_MAJOR],${VERSION_MAJOR}, [version major number])
4333 AC_DEFINE_UNQUOTED([PACKAGE_VERSION_MINOR],${VERSION_MINOR}, [version minor number])
4334 AC_DEFINE_UNQUOTED([PACKAGE_VERSION_REVISION],${VERSION_REVISION}, [version revision number])
4335 AC_DEFINE_UNQUOTED([PACKAGE_VERSION_EXTRA],${VERSION_EXTRA}, [version extra number])
4336 AC_DEFINE_UNQUOTED([PACKAGE_VERSION_DEV],"${VERSION_DEV}", [version development string])
4337 AC_SUBST([COPYRIGHT_MESSAGE])
4338 AC_SUBST([VERSION_MESSAGE])
4339 AC_SUBST([VERSION_MAJOR])
4340 AC_SUBST([VERSION_MINOR])
4341 AC_SUBST([VERSION_REVISION])
4342 AC_SUBST([VERSION_EXTRA])
4343 AC_SUBST([COPYRIGHT_YEARS])
4344 AC_DEFINE_UNQUOTED([VLC_COMPILE_BY], "`whoami|sed -e 's/\\\/\\\\\\\/g'`", [user who ran configure])
4345 AC_DEFINE_UNQUOTED([VLC_COMPILE_HOST], "`hostname -f 2>/dev/null || hostname`", [host which ran configure])
4346 AC_DEFINE_UNQUOTED([VLC_COMPILER], "`$CC -v 2>&1 | tail -n 1 | sed -e 's/ *$//'`", [compiler])
4348 dnl  Handle substvars that use $(top_srcdir)
4350 CPPFLAGS="-I\$(top_srcdir)/include -I\$(top_builddir)/include ${CPPFLAGS}"
4353 dnl  Configuration is finished
4355 AC_SUBST([SYS])
4356 AC_SUBST([ARCH])
4357 AC_SUBST([ALIASES])
4358 AC_SUBST([ASM])
4359 AC_SUBST([MOC])
4360 AC_SUBST([RCC])
4361 AC_SUBST([UIC])
4362 AC_SUBST([WINDRES])
4363 AC_SUBST([WINE_SDK_PATH])
4364 AC_SUBST([LIBEXT])
4365 AC_SUBST([AM_CPPFLAGS])
4366 AC_SUBST([MACOSX_DEPLOYMENT_TARGET])
4367 AC_SUBST([FILE_LIBVLCCORE_DLL])
4368 AC_SUBST([FILE_LIBVLC_DLL])
4370 AC_CONFIG_FILES([
4371   Makefile
4372   doc/Makefile
4373   modules/Makefile
4374   m4/Makefile
4375   po/Makefile.in
4376   share/Makefile
4377   compat/Makefile
4378   src/Makefile
4379   lib/Makefile
4380   bin/Makefile
4381   test/Makefile
4382   modules/hw/mmal/Makefile
4383   share/vlc.appdata.xml.in
4386 AM_COND_IF([HAVE_WIN32], [
4387   AC_CONFIG_FILES([
4388     extras/package/win32/NSIS/spad.nsi
4389     extras/package/win32/NSIS/vlc.win32.nsi
4390     extras/package/win32/msi/config.wxi
4391   ])
4394 AM_COND_IF([HAVE_DARWIN], [
4395   AC_CONFIG_FILES([
4396     modules/gui/macosx/UI/InfoPlist.strings:modules/gui/macosx/Resources/InfoPlist.strings.in
4397     share/macosx/Info.plist:share/Info.plist.in
4398   ])
4401 dnl Generate makefiles
4402 AC_OUTPUT
4404 dnl Do we have to use make or gmake ?
4405 if make --version 2>&1|grep -q GNU
4406 then
4407     # GNU make, all seems good
4408     MAKE=make
4409 else
4410     # Known GNU make alias (on BSD)
4411     MAKE=gmake
4413 dnl Shortcut to nice compile message
4414 if test -n $SHELL; then
4415   SHELL=${CONFIG_SHELL-/bin/sh}
4417 rm -f compile
4418 compile_top_srcdir=`sed -ne "s/^top_srcdir *= *//p" < Makefile`
4419 echo "#! $SHELL
4420 rm -f .error\$\$
4421 ERROR=0
4422 export PATH=\"$PATH\" LANG=C
4423 ($MAKE V=1 \$@ 2>&1 || touch .error\$\$)| $compile_top_srcdir/extras/buildsystem/make.pl
4424 test -f .error\$\$ && ERROR=1
4425 rm -f .error\$\$
4426 exit \$ERROR" >compile
4427 chmod a+x compile
4429 echo "
4430 libvlc configuration
4431 --------------------
4432 version               : ${VERSION}
4433 system                : ${SYS}
4434 architecture          : ${ARCH}
4435 optimizations         : ${enable_optimizations}"
4436 if test "${enable_vlc}" != "no"; then
4437 echo "vlc aliases           :${ALIASES}"
4438 else
4439 echo "build vlc executable  : no"
4441 echo "
4442 To build vlc and its plugins, type \`$MAKE', or \`./compile' if you like nice colors."