media source: add missing refcount increment
[vlc.git] / configure.ac
blob7a35abd06fe7da1d91ad7c636cf2e123e152a71b
1 dnl Autoconf settings for vlc
3 AC_COPYRIGHT([Copyright 1999-2019 VLC authors and VideoLAN])
5 AC_INIT([vlc], [4.0.0-dev])
6 VERSION_MAJOR=4
7 VERSION_MINOR=0
8 VERSION_REVISION=0
9 VERSION_EXTRA=0
10 VERSION_DEV=dev
12 PKGDIR="vlc"
13 AC_SUBST([PKGDIR])
15 CONFIGURE_LINE="`echo "$0 $ac_configure_args" | sed -e 's/\\\/\\\\\\\/g'`"
16 CODENAME="Otto Chriek"
17 COPYRIGHT_YEARS="1996-2019"
19 AC_CONFIG_SRCDIR([src/libvlc.c])
20 AC_CONFIG_AUX_DIR([autotools])
21 AC_CONFIG_MACRO_DIR([m4])
22 AC_CONFIG_LIBOBJ_DIR([compat])
23 AC_CANONICAL_BUILD
24 AC_CANONICAL_HOST
25 AC_PRESERVE_HELP_ORDER
27 AM_INIT_AUTOMAKE([tar-ustar color-tests foreign])
28 AC_CONFIG_HEADERS([config.h])
30 AM_SILENT_RULES([yes])
31 AM_MAINTAINER_MODE([enable])
33 dnl
34 dnl Check for tools
35 dnl
36 AC_PROG_CC
37 AC_USE_SYSTEM_EXTENSIONS
38 VLC_PROG_CC_C11
39 AH_VERBATIM([FORTIFY_SOURCE],
40   [/* Enable compile-time and run-time bounds-checking, and some warnings,
41    without upsetting glibc 2.15+ or toolchains predefining _FORTIFY_SOURCE */
42 #if !defined _FORTIFY_SOURCE && defined __OPTIMIZE__ && __OPTIMIZE__
43 # define _FORTIFY_SOURCE 2
44 #endif])
45 AC_DEFINE([_FILE_OFFSET_BITS], 64, [Define to 64 for large files support.])
46 AC_DEFINE([__LIBVLC__],, [Define within the LibVLC source code tree.])
47 AC_DEFINE([WIN32_LEAN_AND_MEAN],, [Define to limit the scope of <windows.h>.])
49 AC_PROG_CXX
50 AC_PROG_CPP
51 AC_PROG_OBJC
52 AC_PROG_EGREP
53 AC_PROG_MAKE_SET
54 AC_PROG_INSTALL
55 AM_PROG_AS
56 AC_PROG_LEX
57 AC_PROG_YACC
59 AC_ARG_VAR([DESKTOP_FILE_VALIDATE], [Validator for desktop entry files])
60 AC_CHECK_PROGS([DESKTOP_FILE_VALIDATE], [${DESKTOP_FILE_VALIDATE} desktop-file-validate], :)
61 AC_ARG_VAR([BUILDCC], [Build system C11 or C99 compiler command])
62 AC_CHECK_PROGS([BUILDCC], [c11-gcc c11 c99-gcc c99], [false])
63 AS_IF([test "$BUILDCC" = "false"], [
64   AC_MSG_ERROR([Cannot find native C99 compiler: please define BUILDCC.])
67 dnl Check for compiler properties
68 AC_C_CONST
69 AC_C_INLINE
70 AC_C_RESTRICT
71 AX_CXX_COMPILE_STDCXX_11([noext], [mandatory])
73 dnl Extend the --help string at the current spot.
74 AC_DEFUN([EXTEND_HELP_STRING], [m4_divert_once([HELP_ENABLE], [$1])])
76 dnl Allow binary package maintainer to pass a custom string to avoid
77 dnl cache problem
78 AC_ARG_WITH([binary-version],
79     AS_HELP_STRING([--with-binary-version=STRING],
80          [To avoid plugins cache problem between binary version]),[],[])
81 AS_IF([test -n "${with_binary_version}"],[
82     AC_DEFINE_UNQUOTED([DISTRO_VERSION],["${with_binary_version}"],
83          [Binary specific version])
86 dnl Prevent clang from accepting unknown flags with a mere warning
87 AX_APPEND_COMPILE_FLAGS([-Werror=unknown-warning-option -Werror=invalid-command-line-argument], [CFLAGS])
88 AX_APPEND_COMPILE_FLAGS([-Werror=unknown-warning-option -Werror=invalid-command-line-argument], [CXXFLAGS])
90 dnl
91 dnl  Check the operating system
92 dnl
93 HAVE_WIN64="0"
94 HAVE_IOS="0"
95 HAVE_OSX="0"
96 HAVE_TVOS="0"
98 case "${host_os}" in
99   "")
100     SYS=unknown
101     ;;
102   linux*)
103     SYS=linux
104     CFLAGS="${CFLAGS} -pthread"
105     ;;
106   bsdi*)
107     SYS=bsdi
108     CFLAGS="${CFLAGS} -pthread"
109     ;;
110   freebsd*)
111     SYS=freebsd
112     CFLAGS="${CFLAGS} -pthread"
113     CPPFLAGS="${CPPFLAGS} -I/usr/local/include"
114     LDFLAGS="${LDFLAGS} -L/usr/local/lib"
115     ac_cv_ld_z_defs=no
116     ;;
117   openbsd*)
118     SYS=openbsd
119     CPPFLAGS="${CPPFLAGS} -I/usr/local/include -I/usr/X11R6/include"
120     LDFLAGS="${LDFLAGS} -L/usr/local/lib -L/usr/X11R6/lib/"
121     ;;
122   netbsd*)
123     SYS=netbsd
124     ;;
125   dragonfly*)
126     SYS=dragonfly
127     ;;
128   darwin*)
130     dnl Force gcc "-arch" flag
131     ARCH_flag=""
132     case "${host_cpu}" in
133       i?86)
134         ARCH_flag="-arch i386"
135       ;;
136       ppc64*)
137         ARCH_flag="-arch ppc64"
138       ;;
139       ppc*)
140         ARCH_flag="-arch ppc"
141       ;;
142       x86_64)
143         ARCH_flag="-arch x86_64"
144       ;;
145       arm*)
146         ac_cv_c_bigendian="no"
147         ac_cv_c_attribute_packed="no"
148       ;;
149     esac
151     SYS=darwin
152     CFLAGS="${CFLAGS} -D_INTL_REDIRECT_MACROS -std=gnu11 ${ARCH_flag}"
153     CXX="${CXX} -stdlib=libc++ -std=c++11"
154     CXXFLAGS="${CXXFLAGS} -D_INTL_REDIRECT_MACROS ${ARCH_flag}"
155     CPPFLAGS="${CPPFLAGS} ${ARCH_flag}"
156     OBJCFLAGS="${OBJCFLAGS} -D_INTL_REDIRECT_MACROS -std=gnu11 ${ARCH_flag} -Werror=partial-availability"
157     LDFLAGS="${LDFLAGS} -Wl,-headerpad_max_install_names ${ARCH_flag}"
158     VLC_ADD_LIBS([libvlc vlc],[-Wl,-undefined,dynamic_lookup,-framework,AppKit])
159     VLC_ADD_LIBS([libvlccore],[-Wl,-framework,CoreFoundation,-framework,CoreServices])
161     AC_EGREP_CPP(yes,
162             [#import <TargetConditionals.h>
163              #if TARGET_OS_IPHONE
164              yes
165              #endif],
166              [HAVE_IOS="1"],
167              [HAVE_OSX="1"])
169     AC_EGREP_CPP(yes,
170             [#import <TargetConditionals.h>
171              #if TARGET_OS_TV
172              yes
173              #endif],
174              [HAVE_TVOS="1"
175              HAVE_IOS="0"
176              HAVE_OSX="0"
177              ],)
179     dnl
180     dnl  Handle Mac OS X SDK flags
181     dnl
182     AC_ARG_WITH(macosx-sdk,
183       AS_HELP_STRING([--with-macosx-sdk=DIR],
184         [compile using the SDK in DIR]))
185     if test "${with_macosx_sdk}" != "" ; then
186         test ! -d "${with_macosx_sdk}" && AC_MSG_ERROR([SDK "${with_macosx_sdk}" not found])
187         CPP="${CPP} -isysroot ${with_macosx_sdk}"
188         CC="${CC} -isysroot ${with_macosx_sdk}"
189         CXX="${CXX} -isysroot ${with_macosx_sdk}"
190         OBJC="${OBJC} -isysroot ${with_macosx_sdk}"
191         LD="${LD} -syslibroot ${with_macosx_sdk}"
192     fi
193     AC_ARG_WITH(macosx-version-min,
194       AS_HELP_STRING([--with-macosx-version-min=VERSION],
195         [compile for Mac OS X VERSION and above]))
196     if test "${with_macosx_version_min}" != "" ; then
197         CPP="${CPP} -mmacosx-version-min=${with_macosx_version_min}"
198         CC="${CC} -mmacosx-version-min=${with_macosx_version_min}"
199         CXX="${CXX} -mmacosx-version-min=${with_macosx_version_min}"
200         OBJC="${OBJC} -mmacosx-version-min=${with_macosx_version_min}"
201         LD="${LD} -mmacosx_version_min=${with_macosx_version_min}"
202     fi
203     ;;
204   *mingw32* | *cygwin* | *wince* | *mingwce*)
205     dnl Force libtool to not link to (shared) libgcc_s when detecting C++ dependencies
206     dnl When doing this test with -static-libgcc it will link on (static) libgcc_eh
207     CXXFLAGS="${CXXFLAGS} -static-libgcc"
208     AC_CHECK_TOOL(WINDRES, windres, :)
209     AC_CHECK_TOOL(OBJCOPY, objcopy, :)
210     AC_PREPROC_IFELSE([AC_LANG_PROGRAM(
211       [[#ifdef _WIN32_WINNT
212        # error _WIN32_WINNT already defined
213        #endif
214       ]],[[;]])
215     ],[
216       AC_DEFINE([_WIN32_WINNT], 0x0601, [Define to '0x0601' for Windows 7 APIs.])
217     ])
218     AC_DEFINE([_WIN32_IE], 0x0600, [Define to '0x0600' for IE 6.0 (and shell) APIs.])
219     AC_DEFINE([_UNICODE], [1], [Define to 1 for Unicode (Wide Chars) APIs.])
220     AC_DEFINE([UNICODE], [1], [Define to 1 for Unicode (Wide Chars) APIs.])
221     AC_DEFINE([_ISOC99_SOURCE], [1], [Extensions to ISO C89 from ISO C99.])
222     AC_DEFINE([_ISOC11_SOURCE], [1], [Extensions to ISO C99 from ISO C11.])
223     AC_DEFINE([_POSIX_SOURCE], [1], [IEEE Std 1003.1.])
224     AC_DEFINE([_POSIX_C_SOURCE], [200809L], [IEEE Std 1003.1.])
225     AC_DEFINE([_XOPEN_SOURCE], [700], [POSIX and XPG 7th edition])
226     AC_DEFINE([_XOPEN_SOURCE_EXTENDED], [1], [XPG things and X/Open Unix extensions.])
227     AC_DEFINE([_BSD_SOURCE], [1], [ISO C, POSIX, and 4.3BSD things.])
228     AC_DEFINE([_SVID_SOURCE], [1], [ISO C, POSIX, and SVID things.])
230     case "${host_os}" in
231       *mingw32*)
232         SYS=mingw32
233         ;;
234       *cygwin*)
235         dnl Check if we are using the mno-cygwin mode in which case we are
236         dnl actually dealing with a mingw32 compiler.
237         AC_EGREP_CPP(yes,
238             [#ifdef _WIN32
239              yes
240              #endif],
241             SYS=mingw32, AC_MSG_ERROR([VLC requires -mno-cygwin]))
242         ;;
243     esac
245     if test "${SYS}" = "mingw32"; then
246         # DEP, ASLR, NO SEH
247         LDFLAGS="${LDFLAGS} -Wl,--nxcompat -Wl,--no-seh -Wl,--dynamicbase"
249         AC_CHECK_PROGS(U2D, [unix2dos todos], unix2dos)
250         ac_default_prefix="`pwd`/_win32"
251         DESTDIR="`pwd`/_win32/"
253         dnl
254         dnl NSIS/MSI Installer prefix and WIN64
255         dnl
256         case "${host_cpu}" in
257             amd64|x86_64|aarch64)
258                 HAVE_WIN64="1"
259                 WINDOWS_ARCH="x64"
260                 PROGRAMFILES="PROGRAMFILES64"
261                 LDFLAGS="${LDFLAGS} -Wl,--high-entropy-va -Wl,--image-base,0x140000000"
262             ;;
263             *)
264                 WINDOWS_ARCH="x86"
265                 PROGRAMFILES="PROGRAMFILES"
266             ;;
267         esac
268         AC_SUBST([WINDOWS_ARCH])
269         AC_SUBST([PROGRAMFILES])
271     fi
272     ;;
273   *nto*)
274     SYS=nto
275     ;;
276   solaris*)
277     SYS=solaris
278     ;;
279   hpux*)
280     SYS=hpux
281     ;;
282   *os2*)
283     SYS=os2
284     LDFLAGS="${LDFLAGS} -Zomf -Zbin-files -Zargs-wild -Zhigh-mem"
285     AC_LIBOBJ([freeaddrinfo])
286     AC_LIBOBJ([gai_strerror])
287     AC_CHECK_FUNCS([if_nametoindex])
288     ;;
289   *nacl*)
290     SYS=nacl
291     AC_DEFINE([_XOPEN_SOURCE], [700], [POSIX and XPG 7th edition])
292     AC_LIBOBJ([sigwait])
293     AC_LIBOBJ([recvmsg])
294     AC_LIBOBJ([sendmsg])
295     ;;
296   *)
297     SYS="${host_os}"
298     ;;
299 esac
301 dnl WinRT
302 AC_ARG_ENABLE([winstore_app],
303      AS_HELP_STRING([--enable-winstore-app],
304                     [Build targetted for Windows Store apps (default disabled)]))
306 vlc_winstore_app=0
307 AS_IF([test "${SYS}" = "mingw32"],[
308   LIBCOM="-lole32"
309   AS_IF([test "${enable_winstore_app}" = "yes"], [
310     vlc_winstore_app=1
311     LIBCOM=""
312      VLC_ADD_LIBS([libvlccore], [-lruntimeobject])
313      AC_LIBOBJ([gai_strerror])
314     ],[])
315   AC_SUBST([LIBCOM])
316   ])
317 AC_DEFINE_UNQUOTED(VLC_WINSTORE_APP, ${vlc_winstore_app}, [Define to 1 if you want to build for Windows Store apps])
319 AM_CONDITIONAL([HAVE_LINUX],   [test "${SYS}" = "linux"])
320 AM_CONDITIONAL([HAVE_OS2],     [test "${SYS}" = "os2"])
322 AM_CONDITIONAL([HAVE_DARWIN],  [test "${SYS}" = "darwin"])
323 AM_CONDITIONAL([HAVE_IOS],     [test "${HAVE_IOS}" = "1"])
324 AM_CONDITIONAL([HAVE_OSX],     [test "${HAVE_OSX}" = "1"])
325 AM_CONDITIONAL([HAVE_TVOS],    [test "${HAVE_TVOS}" = "1"])
327 AM_CONDITIONAL([HAVE_NACL],    [test "${SYS}" = "nacl"])
328 AM_CONDITIONAL([HAVE_LIBANL],  [test "${HAVE_LIBANL}" = "1"])
330 AM_CONDITIONAL([HAVE_WIN32],   [test "${SYS}" = "mingw32"])
331 AM_CONDITIONAL([HAVE_WIN64],   [test "${HAVE_WIN64}" = "1"]) dnl Only used for the packaging
332 AM_CONDITIONAL([HAVE_WINSTORE], [test "$vlc_winstore_app" = "1"])
333 AM_CONDITIONAL([HAVE_WIN32_DESKTOP], [test "${SYS}" = "mingw32" -a "$vlc_winstore_app" = "0"])
336 dnl Sadly autoconf does not think about testing foo.exe when ask to test
337 dnl for program foo on win32
338 case "${build_os}" in
339     cygwin|msys|mingw32)
340         ac_executable_extensions=".exe"
341         BUILDEXEEXT=".exe"
342     ;;
343     os2*)
344         BUILDEXEEXT=".exe"
345     ;;
346     *)
347     ;;
348 esac
349 AC_SUBST([BUILDEXEEXT])
351 dnl Android is linux, but a bit different
352 AS_IF([test "$SYS" = linux],[
353     AC_MSG_CHECKING([for an Android system])
354     AC_PREPROC_IFELSE([AC_LANG_PROGRAM(
355         [[#ifndef __ANDROID__
356          # error Not Android
357          #endif
358         ]],[[;]])
359     ],[
360       HAVE_ANDROID="1"
361       AC_MSG_RESULT([yes])
362     ],[
363       AC_MSG_RESULT([no])
364     ])
366 AM_CONDITIONAL([HAVE_ANDROID], [test "${HAVE_ANDROID}" = "1"])
368 dnl Tizen (minimum SDK version: 2.3)
369 AS_IF([test "$SYS" = linux],[
370     AC_MSG_CHECKING([for Tizen])
371     AC_PREPROC_IFELSE([AC_LANG_PROGRAM(
372         [[#include <tizen.h>
373         ]],[[;]])
374     ],[
375       HAVE_TIZEN="1"
376       AC_DEFINE([HAVE_TIZEN_SDK], [1], [Define to 1 if vlc is built against Tizen SDK])
377       AC_MSG_RESULT([yes])
378     ],[
379       AC_MSG_RESULT([no])
380     ])
382 AM_CONDITIONAL([HAVE_TIZEN], [test "${HAVE_TIZEN}" = "1"])
385 dnl  Check for the contrib directory
387 AC_ARG_WITH(contrib,
388   AS_HELP_STRING([--with-contrib[=DIR]],
389     [search for 3rd party libraries in DIR/include and DIR/lib])
391 AC_MSG_CHECKING([for 3rd party libraries path])
392 AS_IF([test -z "${with_contrib}" || test "${with_contrib}" = "yes"], [
393   CONTRIB_DIR="${srcdir}/contrib/${host}"
394   AS_IF([test ! -d "${CONTRIB_DIR}"], [
395     echo "${CONTRIB_DIR} not found" >&AS_MESSAGE_LOG_FD
396     CONTRIB_DIR="${srcdir}/contrib/`$CC -dumpmachine`"
397     AS_IF([test ! -d "${CONTRIB_DIR}"], [
398       echo "${CONTRIB_DIR} not found" >&AS_MESSAGE_LOG_FD
399       CONTRIB_DIR=""
400       AC_MSG_RESULT([not found])
401     ])
402   ])
403 ], [
404   AS_IF([test "${with_contrib}" != "no"], [
405     CONTRIB_DIR="${with_contrib}"
406   ], [
407     CONTRIB_DIR=""
408     AC_MSG_RESULT([disabled])
409   ])
411 AS_IF([test -n "${CONTRIB_DIR}"], [
412   AS_IF([test -d "${CONTRIB_DIR}/lib"],[
413     CONTRIB_DIR=`cd "${CONTRIB_DIR}" && pwd`
414   ], [
415     echo "${CONTRIB_DIR}/lib not found" >&AS_MESSAGE_LOG_FD
416     CONTRIB_DIR=""
417     AC_MSG_RESULT([not usable])
418   ])
421 AS_IF([test -n "${CONTRIB_DIR}"], [
422   AC_MSG_RESULT([${CONTRIB_DIR}])
423   CPPFLAGS="${CPPFLAGS} -I${CONTRIB_DIR}/include"
424   CFLAGS="${CFLAGS} -I${CONTRIB_DIR}/include"
425   CXXFLAGS="${CXXFLAGS} -I${CONTRIB_DIR}/include"
426   OBJCFLAGS="${OBJCFLAGS} -I${CONTRIB_DIR}/include -F${CONTRIB_DIR} -F${CONTRIB_DIR}/Frameworks"
427   export PKG_CONFIG_PATH="${CONTRIB_DIR}/lib/pkgconfig:${CONTRIB_DIR}/share/pkgconfig:$PKG_CONFIG_PATH"
428   LDFLAGS="${LDFLAGS} -L${CONTRIB_DIR}/lib"
430   AS_IF([test -z "$LUAC"], [
431     dnl Old contribs mixed cross-tools and cross-compiled executables
432     AS_IF([test -x "${CONTRIB_DIR}/bin/luac${BUILDEXEEXT}"], [
433       LUAC="${CONTRIB_DIR}/bin/luac${BUILDEXEEXT}"
434     ])
436     dnl Newer contribs follow usual name space rules
437     AS_IF([test -x "${CONTRIB_DIR}/../bin/${host_alias}-luac${BUILDEXEEXT}"], [
438       LUAC="${CONTRIB_DIR}/../bin/${host_alias}-luac${BUILDEXEEXT}"
439     ])
440   ])
442   AS_IF([test "${SYS}" = "darwin"], [
443     export LD_LIBRARY_PATH="${CONTRIB_DIR}/lib:$LD_LIBRARY_PATH"
444     export DYLD_LIBRARY_PATH="${CONTRIB_DIR}/lib:$DYLD_LIBRARY_PATH"
445   ])
446 ], [
447   AS_IF([test -n "${with_contrib}" && test "${with_contrib}" != "no"], [
448     AC_MSG_ERROR([Third party libraries not found!])
449   ])
451 AC_SUBST([CONTRIB_DIR])
453 dnl Add extras/tools to the PATH
454 TOOLS_DIR="${srcdir}/extras/tools/build/bin"
455 AS_IF([test -d "${TOOLS_DIR}"], [
456     TOOLS_DIR=`cd "${TOOLS_DIR}" && pwd`
457     export PATH="${TOOLS_DIR}":$PATH
461 dnl  Libtool
462 dnl  It's very bad, but our former custom system was worst
463 dnl  -- Courmisch
466 dnl override platform specific check for dependent libraries
467 dnl otherwise libtool linking of shared libraries will
468 dnl fail on anything other than pass_all.
469 AC_CACHE_VAL(lt_cv_deplibs_check_method,
470     [lt_cv_deplibs_check_method=pass_all])
472 LT_INIT([dlopen win32-dll shared disable-static])
473 LT_LANG([C++])
474 LT_LANG([Windows Resource])
476 DOLT
478 lt_cv_deplibs_check_method=pass_all
480 AS_IF([test "${enable_shared}" = "no" -a "${enable_vlc}" != "no"], [
481   AC_MSG_ERROR([VLC is based on plugins. Shared libraries cannot be disabled.])
485 dnl Gettext stuff
487 AM_GNU_GETTEXT_VERSION([0.19.8])
488 AM_GNU_GETTEXT([external], [need-formatstring-macros])
491 dnl Iconv stuff
493 AM_ICONV
496 dnl checks for mingw
497 AS_IF([test "${SYS}" = "mingw32"], [
499 AC_PREPROC_IFELSE([AC_LANG_SOURCE([
500 #if !defined(__MINGW32__)
501 # error Not compiling with mingw
502 #endif
503     ])], [
505 dnl Check for broken versions of mingw-runtime compatability library
506     AC_MSG_CHECKING(for broken mingw-runtime)
507     AC_PREPROC_IFELSE([AC_LANG_SOURCE([
508 #include <_mingw.h>
509 #if defined(__MINGW64_VERSION_MAJOR)
510 # if __MINGW64_VERSION_MAJOR < 5
511 #  error Update your mingw-w64! This one is too old.
512 # endif
513 #else
514 # error You cannot compile with Mingw. Use Mingw-w64!
515 #endif
516     ])], [
517         AC_MSG_RESULT([ok])
518     ], [
519         AC_MSG_RESULT([present])
520         AC_MSG_ERROR([LibVLC requires Mingw-w64 version 5.0 or higher!])
521     ])
523     dnl force use of mingw provided c99 *printf over msvcrt
524     CPPFLAGS="${CPPFLAGS} -D__USE_MINGW_ANSI_STDIO=1"
526     dnl Check for the need to include the mingwex lib for mingw32
527     VLC_SAVE_FLAGS
528     AC_CHECK_LIB([mingwex], [opendir],
529         AC_CHECK_LIB([mingw32], [opendir],,
530             [VLC_ADD_LIBS([libvlccore],[-lmingwex])])
531     )
532     VLC_RESTORE_FLAGS
533     ], [
534         AC_MSG_RESULT([Not compiling with mingw])
535     ])
537     dnl Check for fnative-struct or mms-bitfields support for mingw32
538     AX_CHECK_COMPILE_FLAG([-mms-bitfields], [
539         AX_APPEND_FLAG([-mms-bitfields], [CFLAGS])
540         AX_APPEND_FLAG([-mms-bitfields], [CXXFLAGS])
541         # Check for the warning flag without "-Wno-", GCC accepts
542         # -Wno-<anything> for unsupported warnings, which can trigger
543         # other warnings instead.
544         AX_CHECK_COMPILE_FLAG([-Wincompatible-ms-struct], [
545             AX_APPEND_FLAG([-Wno-incompatible-ms-struct], [CFLAGS])
546             AX_APPEND_FLAG([-Wno-incompatible-ms-struct], [CXXFLAGS])
547         ])
548     ], [
549         AX_CHECK_COMPILE_FLAG([-fnative-struct], [
550             AX_APPEND_FLAG([-fnative-struct], [CFLAGS])
551             AX_APPEND_FLAG([-fnative-struct], [CXXFLAGS])
552         ])
553     ])
558 dnl Buggy glibc prevention. Purposedly not cached.
559 dnl See sourceware.org bugs 5058 and 5443.
560 dnl Ubuntu alone has 20 bug numbers for this...
562 AC_MSG_CHECKING(for buggy GNU/libc versions)
563 AC_PREPROC_IFELSE([AC_LANG_SOURCE([
564 #include <limits.h>
565 #if defined (__GLIBC__) && (__GLIBC__ == 2) \
566   && (__GLIBC_MINOR__ >= 5) && (__GLIBC_MINOR__ <= 7)
567 # error GNU/libc with dcgettext killer bug!
568 #endif
569 ])], [
570   AC_MSG_RESULT([not present])
571 ], [
572   AC_MSG_RESULT([found])
573   AS_IF([test "x${enable_nls}" != "xno"], [
574     AC_MSG_ERROR([Buggy GNU/libc (version 2.5 - 2.7) present. VLC would crash; there is no viable
575 work-around for this. Check with your distribution vendor on how to update the
576 glibc run-time. Alternatively, build with --disable-nls.])
577   ])
580 dnl Plugin compilation stuff
582 VLC_LIBRARY_SUFFIX
584 dnl Check for system libs needed
585 need_libc=false
587 dnl Check for usual libc functions
588 AC_CHECK_FUNCS([accept4 daemon fcntl flock fstatvfs fork getenv getpwuid_r isatty memalign mkostemp mmap open_memstream newlocale openat pipe2 pread posix_fadvise posix_madvise posix_memalign setlocale stricmp strnicmp strptime uselocale])
589 AC_REPLACE_FUNCS([aligned_alloc atof atoll dirfd fdopendir flockfile fsync getdelim getpid lfind lldiv memrchr nrand48 poll recvmsg rewind sendmsg setenv strcasecmp strcasestr strdup strlcpy strndup strnlen strnstr strsep strtof strtok_r strtoll swab tdestroy tfind timegm timespec_get strverscmp pathconf])
590 AC_REPLACE_FUNCS([gettimeofday])
591 AC_CHECK_FUNC(fdatasync,,
592   [AC_DEFINE(fdatasync, fsync, [Alias fdatasync() to fsync() if missing.])
595 VLC_REPLACE_DECL([realpath], [#include <stdlib.h>])
597 dnl mingw64 implements those as static inline, not functions with C linkage
598 VLC_REPLACE_DECL([asprintf], [#include <stdio.h>])
599 VLC_REPLACE_DECL([vasprintf], [#include <stdio.h>])
600 VLC_REPLACE_DECL([gmtime_r], [#include <time.h>])
601 VLC_REPLACE_DECL([localtime_r], [#include <time.h>])
603 dnl C11 static_assert()
604 AC_MSG_CHECKING([for static_assert in assert.h])
605 AC_LINK_IFELSE([AC_LANG_PROGRAM([#include <assert.h>], [
606 static_assert(1, "The impossible happened.");
607 ])], [
608   AC_MSG_RESULT([yes])
609   AC_DEFINE([HAVE_STATIC_ASSERT], [1], [Define to 1 if <assert.h> defines static_assert.])
610 ], [
611   AC_MSG_RESULT([no])
614 # Windows CE does not have strcoll()
615 AC_FUNC_STRCOLL
617 dnl Check for non-standard system calls
618 case "$SYS" in
619   "linux")
620     AC_CHECK_FUNCS([eventfd vmsplice sched_getaffinity recvmmsg memfd_create])
621     ;;
622   "mingw32")
623     AC_CHECK_FUNCS([_lock_file])
624     ;;
625 esac
627 AH_BOTTOM([#include <vlc_fixups.h>])
629 dnl Check for struct pollfd
630 AC_CHECK_TYPES([struct pollfd],,,
631 [#include <sys/types.h>
632 #if HAVE_POLL
633 # include <poll.h>
634 #elif defined (_WIN32)
635 # include <winsock2.h>
636 #endif
639 dnl Check for struct timespec
640 AC_CHECK_TYPES([struct timespec],,,
641 [#include <time.h>])
643 dnl Check for max_align_t
644 AC_CHECK_TYPES([max_align_t],,,
645 [#include <stddef.h>])
647 dnl Checks for socket stuff
648 VLC_SAVE_FLAGS
649 SOCKET_LIBS=""
650 AC_SEARCH_LIBS(connect, [socket], [
651   AS_IF([test "$ac_cv_search_connect" != "none required"], [
652     SOCKET_LIBS="$ac_cv_search_connect"
653   ])
654 ], [
655   AS_IF([test "${SYS}" = "mingw32"], [
656     SOCKET_LIBS="-lws2_32 -liphlpapi"
657   ])
660 AC_SEARCH_LIBS([inet_pton], [nsl], [
661  AS_IF([test "$ac_cv_search_inet_pton" != "none required"], [
662     SOCKET_LIBS="$ac_cv_search_inet_pton $SOCKET_LIBS"
663   ])
664 ],, [${SOCKET_LIBS}])
666 LIBS="${LIBS} ${SOCKET_LIBS}"
667 AC_LINK_IFELSE([
668     AC_LANG_PROGRAM([#ifdef _WIN32
669         #include <ws2tcpip.h>
670         #include <windows.h>
671         # if _WIN32_WINNT < 0x600
672         #  error Needs vista+
673         # endif
674         #else
675         #include <sys/socket.h>
676         #include <arpa/inet.h>
677         #endif], [
678         char dst[[sizeof(struct in_addr)]];
679         inet_pton(AF_INET, "127.0.0.1", dst);
680     ])],[AC_DEFINE([HAVE_INET_PTON],[1],[Define to 1 if you have inet_pton function])],[AC_LIBOBJ([inet_pton])])
681 AC_CHECK_TYPES([struct if_nameindex],,,[#include <net/if.h>])
682 AC_CHECK_FUNCS([if_nameindex])
683 VLC_RESTORE_FLAGS
684 AC_SUBST([SOCKET_LIBS])
686 dnl Check for socklen_t
687 AH_TEMPLATE(socklen_t, [Define to `int' if <sys/socket.h> does not define.])
688 AC_CACHE_CHECK([for socklen_t in sys/socket.h], dnl ` (fix VIM syntax highlight
689 ac_cv_type_socklen_t,
690 [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([
691 [#include <sys/types.h>
692 #ifdef _WIN32
693 # include <winsock2.h>
694 # include <ws2tcpip.h>
695 #else
696 # include <sys/socket.h>
697 #endif]], [[socklen_t len; len = 0;]])],
698 ac_cv_type_socklen_t=yes,
699 ac_cv_type_socklen_t=no)])
700 AS_IF([test "$ac_cv_type_socklen_t" = no],
701  [AC_DEFINE(socklen_t, int)])
703 dnl Check for struct sockaddr_storage
704 AH_TEMPLATE(sockaddr_storage, [Define to `sockaddr' if <sys/socket.h> does not define.]) dnl ` (fix VIM syntax highlight
705 AH_TEMPLATE(ss_family, [Define to `sa_family' if <sys/socket.h> does not define.]) dnl ` (fix VIM syntax highlight
706 AC_CACHE_CHECK([for struct sockaddr_storage], ac_cv_struct_sockaddr_storage,
707   [AC_TRY_COMPILE(
708     [#include <sys/types.h>
709      #if defined( _WIN32 )
710      # include <winsock2.h>
711      #else
712      # include <sys/socket.h>
713      #endif], [struct sockaddr_storage addr;],
714      ac_cv_struct_sockaddr_storage=yes,
715      ac_cv_struct_sockaddr_storage=no)])
716 AS_IF([test "${ac_cv_struct_sockaddr_storage}" = no], [
717   AC_DEFINE(sockaddr_storage, sockaddr)
718   AC_DEFINE(ss_family, sa_family)
721 dnl FreeBSD has a gnugetopt library for this:
722 GNUGETOPT_LIBS=""
723 AC_CHECK_FUNC(getopt_long,, [
724   AC_CHECK_LIB([gnugetopt],[getopt_long], [
725     GNUGETOPT_LIBS="-lgnugetopt"
726   ])
728 AC_SUBST([GNUGETOPT_LIBS])
730 AC_CHECK_LIB([m], [cos], [
731   LIBM="-lm"
732 ], [
733   LIBM=""
735 AC_SUBST([LIBM])
737 AC_CHECK_LIB([m], [lrintf], [
738   AC_DEFINE(HAVE_LRINTF, 1, [Define to 1 if you have the lrintf function])
739   VLC_ADD_LIBS([skins2],[-lm])
741 AC_CHECK_LIB([m], [nanf],
742   AC_DEFINE(HAVE_NANF, 1, [Define to 1 if you have the NANF function])
744 AC_CHECK_LIB([m], [sincos], [
745   AC_DEFINE(HAVE_SINCOS, 1, [Define to 1 if you have the sincos function.])
746 ], [
747   AC_LIBOBJ([sincos])
750 AC_MSG_CHECKING([broken qsort_r prototype])
751 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([#include <stdlib.h>
753 _Static_assert(_Generic((qsort_r),
754     void (*)(void *, size_t, size_t, void *,
755              int (*)(void *, const void *, const void *)) : 1, default: 0),
756     "Bad prototype not matched");
757 ])], [
758   AC_MSG_RESULT([broken])
759   AC_DEFINE([HAVE_BROKEN_QSORT_R], 1, [Defined to 1 if the qsort_r() prototype contradicts the upcoming POSIX standard.])
760 ], [
761   AC_MSG_RESULT([no])
764 AC_MSG_CHECKING([_Thread_local support])
765 AC_COMPILE_IFELSE([AC_LANG_SOURCE([_Thread_local int foo = 0;
766                    int main() {}])], [
767     AC_MSG_RESULT([ok])
768     AC_DEFINE(HAVE_THREAD_LOCAL, 1, [Defined to 1 if C11 _Thread_local storage qualifier is supported])
769 ],[ AC_MSG_RESULT([no])])
771 dnl __STDC_NO_THREADS__ can't be trusted on some platforms.
772 dnl check for its availability explicitely
773 AC_CHECK_HEADERS([threads.h])
775 AC_CHECK_LIB([anl],[getaddrinfo_a],[
776   AC_DEFINE(HAVE_LIBANL, 1, [Define to 1 if you have the anl library])
779 dnl Check for dynamic plugins
780 LIBDL=""
781 have_dynamic_objects="no"
782 VLC_SAVE_FLAGS
783 AC_SEARCH_LIBS(dlsym, [dl svld], [
784   AS_IF([test "$ac_cv_search_dlsym" != "none required"], [
785     LIBDL="$ac_cv_search_dlsym"
786   ])
787   have_dynamic_objects="yes"
789 VLC_RESTORE_FLAGS
791 # Windows
792 AS_IF([test "${SYS}" = "mingw32"], [
793   LIBDL=""
794   have_dynamic_objects="yes" #assume we can use shared objects
797 AC_ARG_WITH([libfuzzer],
798     AS_HELP_STRING([--with-libfuzzer=DIR],
799         [use libFuzzer library from DIR and triggers sanitize coverage (default disabled)]),
800      [],
801      [with_libfuzzer=no])
802 AS_VAR_IF(with_libfuzzer, no, [], [
803     enable_shared=no
804     enable_static=yes
805     enable_vlc=no
807 AM_CONDITIONAL([HAVE_LIBFUZZER], [test "${with_libfuzzer}" != "no"])
809 AS_IF([test "${enable_shared}" = "no"], [
810   have_dynamic_objects=no
812 AM_CONDITIONAL([HAVE_DYNAMIC_PLUGINS], [test "${have_dynamic_objects}" != "no"])
814 AC_SUBST([LIBDL])
816 AS_IF([test "${SYS}" != "mingw32"], [
817   AC_SEARCH_LIBS([clock_nanosleep], [rt pthread], [
818     AS_IF([test "$ac_cv_search_clock_nanosleep" != "none required"], [
819       LIBRT="$ac_cv_search_clock_nanosleep"
820     ])
821   ], [
822     AC_SEARCH_LIBS([nanosleep], [rt pthread posix4], [
823       AS_IF([test "$ac_cv_search_nanosleep" != "none required"], [
824         LIBRT="$ac_cv_search_nanosleep"
825       ])
826     ])
827   ])
829 AC_SUBST([LIBRT])
832 dnl Check for headers
835 dnl  POSIX
836 AC_CHECK_HEADERS([arpa/inet.h pthread.h search.h sys/shm.h sys/socket.h sys/uio.h])
837 AC_CHECK_HEADERS([net/if.h], [], [],
839 #include <sys/types.h>
840 #include <sys/socket.h>
842 AC_CHECK_HEADER([syslog.h], [have_syslog="yes"], [have_syslog="no"])
843 AM_CONDITIONAL([HAVE_SYSLOG], [test "$have_syslog" = "yes"])
845 dnl  BSD
846 AC_CHECK_HEADERS([netinet/tcp.h netinet/udplite.h sys/param.h sys/mount.h])
848 dnl  GNU/Linux
849 AC_CHECK_HEADERS([features.h getopt.h linux/dccp.h linux/magic.h mntent.h sys/eventfd.h])
851 dnl  MacOS
852 AC_CHECK_HEADERS([xlocale.h])
854 dnl Check if C++ headers define locale_t
855 AC_LANG_PUSH(C++)
856 AC_CACHE_CHECK([if C++ headers define locale_t],
857   [ac_cv_cxx_locale_t],
858   [ac_cv_cxx_locale_t=no
859    AC_TRY_COMPILE([#include <locale>], [locale_t loc;],
860                     [ac_cv_cxx_locale_t=yes])])
861 if test "${ac_cv_cxx_locale_t}" != "no"; then
862   AC_DEFINE(HAVE_CXX_LOCALE_T, 1, Define to 1 if C++ headers define locale_t)
864 AC_LANG_POP(C++)
866 dnl LP64 and LLP64 architectures had better define ssize_t by themselves...
867 AH_TEMPLATE(ssize_t, [Define to `int' if <stddef.h> does not define.]) dnl ` (fix VIM syntax highlight
868 AC_CHECK_TYPE(ssize_t,, [
869   AC_DEFINE(ssize_t, int)
872 dnl It seems that autoconf detects pkg-config only during the first
873 dnl PKG_CHECK_MODULES from configure.ac - which makes sense. But in our case,
874 dnl it is nested within a conditional block, so it was not working right.
875 dnl Make PKG_CONFIG_PATH precious so that it appears in the help and get saved
876 AC_ARG_VAR(PKG_CONFIG_PATH,
877        [Paths where to find .pc not at the default location])
878 PKG_PROG_PKG_CONFIG()
880 dnl On some OS we need static linking
881 AS_IF([test -n "${PKG_CONFIG}" ],[
882     AS_IF([test "${SYS}" = "mingw32" -o "${SYS}" = "darwin" -o "${SYS}" = "os2" ],[
883         PKG_CONFIG="${PKG_CONFIG} --static"
884     ])
889 dnl Check for zlib.h and -lz if available
891 AC_CHECK_HEADERS([zlib.h], [ have_zlib=yes ], [ have_zlib=no ])
892 AM_CONDITIONAL([HAVE_ZLIB], [ test "${have_zlib}" = "yes" ])
893 if test "${have_zlib}" = "yes"
894 then
895   VLC_ADD_LIBS([sap],[-lz])
900 dnl Domain name i18n support via GNU libidn
902 PKG_CHECK_MODULES([IDN], [libidn], [
903   have_libidn="yes"
904   AC_DEFINE([HAVE_IDN], 1, [Define to 1 if you have GNU libidn.])
905 ], [
906   have_libidn="no"
910 dnl Check for dbus
911 AC_ARG_ENABLE([dbus],
912   AS_HELP_STRING([--enable-dbus],
913     [compile D-Bus message bus support (default enabled)]))
914 have_dbus="no"
915 AS_IF([test "${enable_dbus}" != "no"], [
916   PKG_CHECK_MODULES(DBUS, [dbus-1 >= 1.6.0], [
917     have_dbus="yes"
918   ], [
919     AS_IF([test -n "${enable_dbus}"], [
920       AC_MSG_ERROR([${DBUS_PKG_ERRORS}.])
921     ], [
922       AC_MSG_WARN([${DBUS_PKG_ERRORS}.])
923     ])
924   ])
926 AM_CONDITIONAL([HAVE_DBUS], [test "${have_dbus}" = "yes"])
929 dnl Check for systemd
930 PKG_CHECK_MODULES([SYSTEMD], [libsystemd], [
931   have_systemd="yes"
932 ], [
933   AC_MSG_WARN([${SYSTEMD_PKG_ERRORS}.])
935 AM_CONDITIONAL([HAVE_SYSTEMD], [test "${have_systemd}" = "yes"])
938 EXTEND_HELP_STRING([Optimization options:])
940 dnl  Compiler warnings
943 AX_APPEND_COMPILE_FLAGS([-Wall -Wextra -Wsign-compare -Wundef -Wpointer-arith -Wvolatile-register-var -Wformat -Wformat-security -Wduplicated-branches -Wduplicated-cond], [CFLAGS])
944 AX_APPEND_COMPILE_FLAGS([-Wall -Wextra -Wsign-compare -Wundef -Wpointer-arith -Wvolatile-register-var -Wformat -Wformat-security -Wduplicated-branches -Wduplicated-cond], [CXXFLAGS])
946 AX_APPEND_COMPILE_FLAGS([-Wbad-function-cast -Wwrite-strings -Wmissing-prototypes -Werror-implicit-function-declaration -Winit-self -Wlogical-op -Wshadow=local -Wmultistatement-macros], [CFLAGS])
947 AX_APPEND_COMPILE_FLAGS([-pipe], [CFLAGS])
950 dnl  Debugging mode
952 AC_ARG_ENABLE([debug],
953   AS_HELP_STRING([--enable-debug],
954     [build with run-time assertions (default disabled)]),,
955   [enable_debug="no"])
956 AH_TEMPLATE(NDEBUG,
957             [Define to 1 if debug code should NOT be compiled])
958 AS_IF([test "${enable_debug}" != "no"], [
959   AC_CHECK_HEADERS([valgrind/valgrind.h])
960 ], [
961   AC_DEFINE(NDEBUG)
965 dnl  Profiling
967 AC_ARG_ENABLE([gprof],
968   AS_HELP_STRING([--enable-gprof],[profile with gprof (default disabled)]),,
969   [enable_gprof="no"])
970 AS_IF([test "${enable_gprof}" != "no"], [
971   CFLAGS="${CFLAGS} -pg"
972   CXXFLAGS="${CXXFLAGS} -pg"
973   OBJCFLAGS="${OBJCFLAGS} -pg"
974   LDFLAGS="${LDFLAGS} -pg"
977 AC_ARG_ENABLE([cprof],
978   AS_HELP_STRING([--enable-cprof],[profile with cprof (default disabled)]),,
979   [enable_cprof="no"])
980 AS_IF([test "${enable_gprof}" != "no"], [
981   CFLAGS="${CFLAGS} -finstrument-functions"
982   CXXFLAGS="${CXXFLAGS} -finstrument-functions"
983   OBJCFLAGS="${OBJCFLAGS} -finstrument-functions"
984   LDFLAGS="${LDFLAGS} -finstrument-functions"
988 dnl  Test coverage
990 AC_ARG_ENABLE([coverage],
991   AS_HELP_STRING([--enable-coverage],
992     [build for test coverage (default disabled)]),,
993   [enable_coverage="no"])
994 AS_IF([test "${enable_coverage}" != "no"], [
995   CFLAGS="-fprofile-arcs -ftest-coverage ${CFLAGS}"
996   CXXFLAGS="-fprofile-arcs -ftest-coverage ${CXXFLAGS}"
997   LDFLAGS="-lgcov ${LDFLAGS}"
1000 AS_IF([test "${SYS}" != "mingw32" -a "${SYS}" != "os2"], [
1001   VLC_SAVE_FLAGS
1002   CFLAGS="${CFLAGS} -fvisibility=hidden"
1003   CXXFLAGS="${CXXFLAGS} -fvisibility=hidden"
1004   OBJCFLAGS="${OBJCFLAGS} -fvisibility=hidden"
1005   AC_CACHE_CHECK([if $CC accepts -fvisibility=hidden],
1006                  [ac_cv_c_visibility_hidden], [
1007     AC_COMPILE_IFELSE([AC_LANG_PROGRAM()], [
1008       ac_cv_c_visibility_hidden=yes
1009     ], [
1010       ac_cv_c_visibility_hidden=no
1011     ])
1012   ])
1013   AS_IF([test "${ac_cv_c_visibility_hidden}" = "no"], [VLC_RESTORE_FLAGS])
1017 dnl Sanitizer flags
1019 AC_ARG_WITH([sanitizer],
1020     AS_HELP_STRING([--with-sanitizer=(address/memory/undefined/thread)],
1021         [build with sanitizer flags (default disabled)]),
1022      [],
1023      [with_sanitizer=no])
1025 AS_VAR_IF(with_sanitizer, no, [], [
1026     AX_CHECK_COMPILE_FLAG([-fsanitize=${with_sanitizer}], [
1027         AX_APPEND_FLAG([-fsanitize=${with_sanitizer}])
1028         AX_APPEND_FLAG([-fsanitize=${with_sanitizer}], [CXXFLAGS])
1029         AX_APPEND_FLAG([-fsanitize=${with_sanitizer}], [LDFLAGS])
1030     ], [
1031         AC_MSG_ERROR(["-fsanitize=${with_sanitizer} not supported!"])
1032     ])
1033     AX_APPEND_FLAG([-g])
1034     AX_APPEND_FLAG([-g], [CXXFLAGS])
1036     AS_IF([test -z "${with_sanitizer##*address*}" ], [
1037        AX_APPEND_COMPILE_FLAGS([-fsanitize-address-use-after-scope -fno-omit-frame-pointer -fsanitize=pointer-compare -fsanitize=pointer-subtract])
1038        AX_APPEND_COMPILE_FLAGS([-fsanitize-address-use-after-scope -fno-omit-frame-pointer -fsanitize=pointer-compare -fsanitize=pointer-subtract], [CXXFLAGS])
1039     ])
1040     AS_IF([test -z "${with_sanitizer##*memory*}" ], [
1041         AX_APPEND_COMPILE_FLAGS([-fPIE -pie])
1042         AX_APPEND_COMPILE_FLAGS([-fPIE -pie], [CXXFLAGS])
1043     ])
1044     AS_IF([test -z "${with_sanitizer##*thread*}" ], [
1045         AX_APPEND_COMPILE_FLAGS([-fPIE -pie])
1046         AX_APPEND_COMPILE_FLAGS([-fPIE -pie], [CXXFLAGS])
1047     ])
1051 dnl  Enable/disable optimizations
1053 AC_ARG_ENABLE([optimizations],
1054   AS_HELP_STRING([--disable-optimizations],
1055     [disable compiler optimizations (default enabled)]),,
1056   [enable_optimizations="yes"])
1058 dnl Check for various optimization flags
1059 AS_IF([test "${enable_optimizations}" != "no"], [
1061   dnl -O3 only in production builds
1062   AS_IF([test "${enable_debug}" = "no"], [
1063     VLC_SAVE_FLAGS
1064     CFLAGS="${CFLAGS} -O3"
1065     CXXFLAGS="${CXXFLAGS} -O3"
1066     OBJCFLAGS="${OBJCFLAGS} -O3"
1067     AC_CACHE_CHECK([if $CC accepts -O3],  [ac_cv_c_o3], [
1068       AC_COMPILE_IFELSE([AC_LANG_PROGRAM()], [
1069         ac_cv_c_o3=yes
1070       ], [
1071         ac_cv_c_o3=no
1072       ])
1073     ])
1074     AS_IF([test "${ac_cv_c_o3}" = "no"], [VLC_RESTORE_FLAGS])
1075   ])
1077   dnl Check for fast maths
1078   AX_APPEND_COMPILE_FLAGS([-fno-math-errno -funsafe-math-optimizations -fno-rounding-math -fno-signaling-nans -fcx-limited-range], [CFLAGS])
1079   AX_APPEND_COMPILE_FLAGS([-fno-math-errno -funsafe-math-optimizations -fno-rounding-math -fno-signaling-nans -fcx-limited-range], [CXXFLAGS])
1081 AH_BOTTOM([
1082 #if defined(_MSC_VER) && !defined(__clang__)
1083 # pragma fenv_access(off)
1084 # pragma fp_contract(on)
1085 #elif defined(__GNUC__)
1086 /* Not supported so far */
1087 #else
1088 # pragma STDC FENV_ACCESS OFF
1089 # pragma STDC FP_CONTRACT ON
1090 #endif
1093   dnl Check for -funroll-loops
1094   VLC_SAVE_FLAGS
1095   CFLAGS="${CFLAGS} -funroll-loops"
1096   CXXFLAGS="${CXXFLAGS} -funroll-loops"
1097   OBJCFLAGS="${OBJCFLAGS} -funroll-loops"
1098   AC_CACHE_CHECK([if $CC accepts -funroll-loops], [ac_cv_c_unroll_loops], [
1099     AC_COMPILE_IFELSE([AC_LANG_PROGRAM()], [
1100       ac_cv_c_unroll_loops=yes
1101     ], [
1102       ac_cv_c_unroll_loops=no
1103     ])
1104   ])
1105   AS_IF([test "${ac_cv_c_unroll_loops}" = "no"], [VLC_RESTORE_FLAGS])
1107   AS_IF([test "$enable_debug" = "no"], [
1108     dnl Check for -fomit-frame-pointer
1109     VLC_SAVE_FLAGS
1110     CFLAGS="${CFLAGS} -fomit-frame-pointer"
1111     CXXFLAGS="${CXXFLAGS} -fomit-frame-pointer"
1112     OBJCFLAGS="${OBJCFLAGS} -fomit-frame-pointer"
1113     AC_CACHE_CHECK([if $CC accepts -fomit-frame-pointer],
1114       [ac_cv_c_omit_frame_pointer], [
1115       AC_COMPILE_IFELSE([AC_LANG_PROGRAM()], [
1116         ac_cv_c_omit_frame_pointer=yes
1117       ], [
1118         ac_cv_c_omit_frame_pointer=no
1119       ])
1120     ])
1121     AS_IF([test "${ac_cv_c_omit_frame_pointer}" = "no"], [VLC_RESTORE_FLAGS])
1122   ])
1126 AC_ARG_ENABLE([ssp],
1127   AS_HELP_STRING([--disable-ssp],
1128   [disable stack smashing protection (default enabled for optimized builds)]), [],
1129   [enable_ssp="yes"])
1131 AS_IF([test "${enable_ssp}" != "no" -a "${enable_optimizations}" != "no"], [
1132   VLC_SAVE_FLAGS
1133   AX_APPEND_COMPILE_FLAGS([-fstack-protector-strong])
1134   AX_APPEND_COMPILE_FLAGS([-fstack-protector-strong], [CXXFLAGS])
1135   dnl Win32 requires linking to ssp for stack-protection
1136   AS_IF([test "${SYS}" = "mingw32"], [
1137       LDFLAGS="${LDFLAGS} -lssp"
1138       AC_CACHE_CHECK([if linker supports stack protectors], [ac_cv_ld_ssp], [
1139         AC_TRY_LINK([#include <stdio.h>],[char buf[100]; fgets(buf, sizeof(buf), stdin);], [
1140           ac_cv_ld_ssp="yes"
1141         ], [
1142           ac_cv_ld_ssp="no"
1143         ])
1144       ])
1145       AS_IF([test "${ac_cv_ld_ssp}" = "no"], [VLC_RESTORE_FLAGS])
1146   ])
1149 AS_IF([test "${SYS}" = "mingw32"], [
1150     dnl library for BCrypt APIs
1151     AS_IF([test "${vlc_winstore_app}" = 1],
1152           [LDFLAGS="${LDFLAGS} -lbcrypt"])
1155 VLC_SAVE_FLAGS
1156 LDFLAGS="${LDFLAGS} -Wl,-Bsymbolic"
1157 AC_CACHE_CHECK([if linker supports -Bsymbolic], [ac_cv_ld_bsymbolic], [
1158   AC_TRY_LINK([],, [
1159     ac_cv_ld_bsymbolic="-Wl,-Bsymbolic"
1160   ], [
1161     ac_cv_ld_bsymbolic=""
1162   ])
1164 VLC_RESTORE_FLAGS
1165 SYMBOLIC_LDFLAGS="${ac_cv_ld_bsymbolic}"
1166 AC_SUBST([SYMBOLIC_LDFLAGS])
1168 VLC_SAVE_FLAGS
1169 LDFLAGS="${LDFLAGS} -Wl,-z,defs"
1170 AC_CACHE_CHECK([if linker supports -z,defs], [ac_cv_ld_z_defs], [
1171   AC_TRY_LINK([],, [
1172     ac_cv_ld_z_defs="yes"
1173   ], [
1174     ac_cv_ld_z_defs="no"
1175   ])
1177 AS_IF([test "${ac_cv_ld_z_defs}" = "no"], [VLC_RESTORE_FLAGS])
1179 dnl Check for __attribute__((packed))
1180 AC_CACHE_CHECK([for __attribute__((packed))],
1181   [ac_cv_c_attribute_packed],
1182   [ac_cv_c_attribute_packed=no
1183    AC_TRY_COMPILE(, [struct __attribute__((__packed__)) foo { int a; } b; (void)b;],
1184                     [ac_cv_c_attribute_packed=yes])])
1185 if test "${ac_cv_c_attribute_packed}" != "no"; then
1186   AC_DEFINE(HAVE_ATTRIBUTE_PACKED, 1, Support for __attribute__((packed)) for structs)
1190 dnl  Check the CPU
1192 case "${host_cpu}" in
1193   "")
1194     ARCH=unknown
1195     ;;
1196   armv*)
1197     ARCH="arm"
1198     host_cpu="arm"
1199     ;;
1200   *)
1201     ARCH="${host_cpu}"
1202     ;;
1203 esac
1205 dnl Check for backtrace() support
1206 AC_CHECK_HEADERS([execinfo.h])
1207 AC_CHECK_FUNCS([backtrace])
1210 dnl  default modules
1212 ALIASES="${ALIASES} cvlc rvlc"
1215 dnl  Accelerated modules
1218 dnl  Check for fully working MMX intrinsics
1219 dnl  We need support for -mmmx, we need <mmintrin.h>, and we also need a
1220 dnl  working compiler (http://gcc.gnu.org/bugzilla/show_bug.cgi?id=23963)
1221 AC_ARG_ENABLE([mmx],
1222   AS_HELP_STRING([--disable-mmx],
1223     [disable MMX optimizations (default auto)]),,[
1224   case "${host_cpu}" in
1225     i?86|x86_64)
1226       enable_mmx="yes"
1227       ;;
1228     *)
1229       enable_mmx="no"
1230       ;;
1231   esac
1233 have_mmx="no"
1234 have_mmxext="no"
1235 AS_IF([test "${enable_mmx}" != "no"], [
1236   ARCH="${ARCH} mmx"
1237   VLC_SAVE_FLAGS
1238   CFLAGS="${CFLAGS} -mmmx"
1239   AC_CACHE_CHECK([if $CC groks MMX intrinsics], [ac_cv_c_mmx_intrinsics], [
1240     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([
1241 [#include <mmintrin.h>
1242 #include <stdint.h>
1243 uint64_t frobzor;]], [
1244 [__m64 a, b, c;
1245 a = b = c = (__m64)frobzor;
1246 a = _mm_slli_pi16(a, 3);
1247 a = _mm_adds_pi16(a, b);
1248 c = _mm_srli_pi16(c, 8);
1249 c = _mm_slli_pi16(c, 3);
1250 b = _mm_adds_pi16(b, c);
1251 a = _mm_unpacklo_pi8(a, b);
1252 frobzor = (uint64_t)a;]])], [
1253       ac_cv_c_mmx_intrinsics=yes
1254     ], [
1255       ac_cv_c_mmx_intrinsics=no
1256     ])
1257   ])
1258   VLC_RESTORE_FLAGS
1259   AS_IF([test "${ac_cv_c_mmx_intrinsics}" != "no"], [
1260     AC_DEFINE(HAVE_MMX_INTRINSICS, 1, [Define to 1 if MMX intrinsics are available.])
1261   ])
1263   VLC_SAVE_FLAGS
1264   CFLAGS="${CFLAGS} -mmmx"
1265   AC_CACHE_CHECK([if $CC groks MMX inline assembly], [ac_cv_mmx_inline], [
1266     AC_COMPILE_IFELSE([AC_LANG_PROGRAM(,[[
1267 void *p;
1268 asm volatile("packuswb %%mm1,%%mm2"::"r"(p):"mm1", "mm2");
1270     ], [
1271       ac_cv_mmx_inline=yes
1272     ], [
1273       ac_cv_mmx_inline=no
1274     ])
1275   ])
1276   AS_IF([test "${ac_cv_mmx_inline}" != "no"], [
1277     AC_DEFINE(CAN_COMPILE_MMX, 1, [Define to 1 inline MMX assembly is available.])
1278     have_mmx="yes"
1279   ])
1281   AC_CACHE_CHECK([if $CC groks MMX EXT inline assembly],
1282                  [ac_cv_mmxext_inline], [
1283     AC_COMPILE_IFELSE([AC_LANG_PROGRAM(,[[
1284 void *p;
1285 asm volatile("maskmovq %%mm1,%%mm2"::"r"(p):"mm1", "mm2");
1287     ], [
1288       ac_cv_mmxext_inline=yes
1289     ], [
1290       ac_cv_mmxext_inline=no
1291     ])
1292   ])
1293   VLC_RESTORE_FLAGS
1294   AS_IF([test "${ac_cv_mmxext_inline}" != "no"], [
1295     AC_DEFINE(CAN_COMPILE_MMXEXT, 1, [Define to 1 if MMX EXT inline assembly is available.])
1296     have_mmxext="yes"
1297   ])
1299 AM_CONDITIONAL([HAVE_MMX], [test "${have_mmx}" = "yes"])
1300 AM_CONDITIONAL([HAVE_MMXEXT], [test "${have_mmxext}" = "yes"])
1302 dnl  Check for fully workin SSE2 intrinsics
1303 dnl  We need support for -mmmx, we need <emmintrin.h>, and we also need a
1304 dnl  working compiler (http://gcc.gnu.org/bugzilla/show_bug.cgi?id=23963)
1305 AC_ARG_ENABLE([sse],
1306   AS_HELP_STRING([--disable-sse],
1307     [disable SSE (1-4) optimizations (default auto)]),, [
1308   case "${host_cpu}" in
1309     i?86|x86_64)
1310       enable_sse=yes
1311       ;;
1312     *)
1313       enable_sse=no
1314       ;;
1315   esac
1317 have_sse2="no"
1318 AS_IF([test "${enable_sse}" != "no"], [
1319   ARCH="${ARCH} sse sse2"
1321   VLC_SAVE_FLAGS
1322   CFLAGS="${CFLAGS} -msse2"
1323   AC_CACHE_CHECK([if $CC groks SSE2 intrinsics], [ac_cv_c_sse2_intrinsics], [
1324     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([
1325 [#include <emmintrin.h>
1326 #include <stdint.h>
1327 uint64_t frobzor;]], [
1328 [__m128i a, b, c;
1329 a = b = c = _mm_set1_epi64((__m64)frobzor);
1330 a = _mm_slli_epi16(a, 3);
1331 a = _mm_adds_epi16(a, b);
1332 c = _mm_srli_epi16(c, 8);
1333 c = _mm_slli_epi16(c, 3);
1334 b = _mm_adds_epi16(b, c);
1335 a = _mm_unpacklo_epi8(a, b);
1336 frobzor = (uint64_t)_mm_movepi64_pi64(a);]])], [
1337       ac_cv_c_sse2_intrinsics=yes
1338     ], [
1339       ac_cv_c_sse2_intrinsics=no
1340     ])
1341   ])
1342   VLC_RESTORE_FLAGS
1343   AS_IF([test "${ac_cv_c_sse2_intrinsics}" != "no"], [
1344     AC_DEFINE(HAVE_SSE2_INTRINSICS, 1, [Define to 1 if SSE2 intrinsics are available.])
1345   ])
1347   VLC_SAVE_FLAGS
1348   CFLAGS="${CFLAGS} -msse"
1349   AC_CACHE_CHECK([if $CC groks SSE inline assembly], [ac_cv_sse_inline], [
1350     AC_COMPILE_IFELSE([AC_LANG_PROGRAM(,[[
1351 void *p;
1352 asm volatile("xorps %%xmm1,%%xmm2"::"r"(p):"xmm1", "xmm2");
1354     ], [
1355       ac_cv_sse_inline=yes
1356     ], [
1357       ac_cv_sse_inline=no
1358     ])
1359   ])
1361   AS_IF([test "${ac_cv_sse_inline}" != "no" -a "${SYS}" != "solaris"], [
1362     AC_DEFINE(CAN_COMPILE_SSE, 1, [Define to 1 if SSE inline assembly is available.])
1363   ])
1365   AC_CACHE_CHECK([if $CC groks SSE2 inline assembly], [ac_cv_sse2_inline], [
1366     AC_COMPILE_IFELSE([AC_LANG_PROGRAM(,[[
1367 void *p;
1368 asm volatile("punpckhqdq %%xmm1,%%xmm2"::"r"(p):"xmm1", "xmm2");
1370     ], [
1371       ac_cv_sse2_inline=yes
1372     ], [
1373       ac_cv_sse2_inline=no
1374     ])
1375   ])
1376   AS_IF([test "${ac_cv_sse2_inline}" != "no" -a "${SYS}" != "solaris"], [
1377     AC_DEFINE(CAN_COMPILE_SSE2, 1, [Define to 1 if SSE2 inline assembly is available.])
1378     have_sse2="yes"
1379   ])
1381   # SSE3
1382   AC_CACHE_CHECK([if $CC groks SSE3 inline assembly], [ac_cv_sse3_inline], [
1383     AC_COMPILE_IFELSE([AC_LANG_PROGRAM(,[[
1384 void *p;
1385 asm volatile("movsldup %%xmm1,%%xmm0"::"r"(p):"xmm0", "xmm1");
1387     ], [
1388       ac_cv_sse3_inline=yes
1389     ], [
1390       ac_cv_sse3_inline=no
1391     ])
1392   ])
1394   AS_IF([test "${ac_cv_sse3_inline}" != "no"], [
1395     AC_DEFINE(CAN_COMPILE_SSE3, 1, [Define to 1 if SSE3 inline assembly is available.]) ])
1396   # SSSE3
1397   AC_CACHE_CHECK([if $CC groks SSSE3 inline assembly], [ac_cv_ssse3_inline], [
1398     AC_COMPILE_IFELSE([AC_LANG_PROGRAM(,[[
1399 void *p;
1400 asm volatile("pabsw %%xmm0,%%xmm0"::"r"(p):"xmm0");
1402     ], [
1403       ac_cv_ssse3_inline=yes
1404     ], [
1405       ac_cv_ssse3_inline=no
1406     ])
1407   ])
1409   AS_IF([test "${ac_cv_ssse3_inline}" != "no"], [
1410     AC_DEFINE(CAN_COMPILE_SSSE3, 1, [Define to 1 if SSSE3 inline assembly is available.]) ])
1412   # SSE4.1
1413   AC_CACHE_CHECK([if $CC groks SSE4.1 inline assembly],
1414                  [ac_cv_sse4_1_inline], [
1415     AC_COMPILE_IFELSE([AC_LANG_PROGRAM(,[[
1416 void *p;
1417 asm volatile("pmaxsb %%xmm1,%%xmm0"::"r"(p):"xmm0", "xmm1");
1419     ], [
1420       ac_cv_sse4_1_inline=yes
1421     ], [
1422       ac_cv_sse4_1_inline=no
1423     ])
1424   ])
1426   AS_IF([test "${ac_cv_sse4_1_inline}" != "no"], [
1427     AC_DEFINE(CAN_COMPILE_SSE4_1, 1, [Define to 1 if SSE4_1 inline assembly is available.]) ])
1429   # SSE4.2
1430   AC_CACHE_CHECK([if $CC groks SSE4.2 inline assembly],
1431                  [ac_cv_sse4_2_inline], [
1432     AC_COMPILE_IFELSE([AC_LANG_PROGRAM(,[[
1433 void *p;
1434 asm volatile("pcmpgtq %%xmm1,%%xmm0"::"r"(p):"xmm0", "xmm1");
1436     ], [
1437       ac_cv_sse4_2_inline=yes
1438     ], [
1439       ac_cv_sse4_2_inline=no
1440     ])
1441   ])
1443   AS_IF([test "${ac_cv_sse4_2_inline}" != "no"], [
1444     AC_DEFINE(CAN_COMPILE_SSE4_2, 1, [Define to 1 if SSE4_2 inline assembly is available.]) ])
1446   # SSE4A
1447   AC_CACHE_CHECK([if $CC groks SSE4A inline assembly], [ac_cv_sse4a_inline], [
1448     AC_COMPILE_IFELSE([AC_LANG_PROGRAM(,[[
1449 void *p;
1450 asm volatile("insertq %%xmm1,%%xmm0"::"r"(p):"xmm0", "xmm1");
1452     ], [
1453       ac_cv_sse4a_inline=yes
1454     ], [
1455       ac_cv_sse4a_inline=no
1456     ])
1457   ])
1458   VLC_RESTORE_FLAGS
1459   AS_IF([test "${ac_cv_sse4a_inline}" != "no"], [
1460     AC_DEFINE([CAN_COMPILE_SSE4A], [1], [Define to 1 if SSE4A inline assembly is available.]) ])
1462 AM_CONDITIONAL([HAVE_SSE2], [test "$have_sse2" = "yes"])
1464 VLC_SAVE_FLAGS
1465 CFLAGS="${CFLAGS} -mmmx"
1466 have_3dnow="no"
1467 AC_CACHE_CHECK([if $CC groks 3D Now! inline assembly], [ac_cv_3dnow_inline], [
1468   AC_COMPILE_IFELSE([AC_LANG_PROGRAM(,[[
1469 void *p;
1470 asm volatile("pfadd %%mm1,%%mm2"::"r"(p):"mm1", "mm2");
1472   ], [
1473     ac_cv_3dnow_inline=yes
1474   ], [
1475     ac_cv_3dnow_inline=no
1476   ])
1478 VLC_RESTORE_FLAGS
1479 AS_IF([test "${ac_cv_3dnow_inline}" != "no"], [
1480   AC_DEFINE([CAN_COMPILE_3DNOW], 1,
1481             [Define to 1 if 3D Now! inline assembly is available.])
1482   have_3dnow="yes"
1484 AM_CONDITIONAL([HAVE_3DNOW], [test "$have_3dnow" = "yes"])
1487 AC_ARG_ENABLE([neon],
1488   AS_HELP_STRING([--disable-neon],
1489     [disable ARM NEON optimizations (default auto)]),, [
1490   case "${host_cpu}" in
1491     "arm")
1492       enable_neon="32"
1493       ;;
1494     "aarch64")
1495       enable_neon="64"
1496       ;;
1497     *)
1498       enable_neon="no"
1499       ;;
1500   esac
1502 AS_IF([test "${enable_neon}" != "no"], [
1503   VLC_SAVE_FLAGS
1504   AC_CACHE_CHECK([if $CCAS groks ARM NEON assembly], [ac_cv_arm_neon], [
1505     AS_IF([test "${enable_neon}" != "64"], [
1506       CFLAGS="${CFLAGS} -mfpu=neon -mhard-float"
1507       AC_COMPILE_IFELSE([
1508         AC_LANG_PROGRAM(,[[
1509 asm volatile("vqmovun.s64 d0, q1":::"d0");
1511       ], [
1512         ac_cv_arm_neon="32"
1513       ], [
1514         ac_cv_arm_neon="no"
1515       ])
1516     ], [
1517       CFLAGS="${CFLAGS} -march=armv8-a+simd"
1518       AC_COMPILE_IFELSE([
1519         AC_LANG_PROGRAM(,[[
1520 asm volatile("uhadd v0.8b, v0.8b, v1.8b":::"v0");
1522       ], [
1523         ac_cv_arm_neon="64"
1524       ], [
1525         ac_cv_arm_neon="no"
1526       ])
1527     ])
1528   ])
1529   VLC_RESTORE_FLAGS
1531 AM_CONDITIONAL([HAVE_NEON], [test "${ac_cv_arm_neon}" = "32"])
1532 AM_CONDITIONAL([HAVE_ARM64], [test "${ac_cv_arm_neon}" = "64"])
1534 AC_ARG_ENABLE([sve],
1535   AS_HELP_STRING([--disable-sve],
1536     [disable ARM SVE optimizations (default auto)]),, [
1537   AS_IF([test "${host_cpu}" = "aarch64"], [enable_sve="yes"] ,[enable_sve="no"])
1539 AS_IF([test "${enable_sve}" != "no"], [
1540   VLC_SAVE_FLAGS
1541   CFLAGS="${CFLAGS} -march=armv8-a+sve"
1542   AC_CACHE_CHECK([if $CCAS groks ARM SVE assembly], [ac_cv_arm_sve], [
1543     AC_COMPILE_IFELSE([
1544       AC_LANG_PROGRAM(,[[
1545 asm volatile("ptrue p0.s" ::: "p0");
1547     ], [
1548       ac_cv_arm_sve="yes"
1549     ], [
1550       ac_cv_arm_sve="no"
1551     ])
1552   ])
1553   VLC_RESTORE_FLAGS
1555 AM_CONDITIONAL([HAVE_SVE], [test "${ac_cv_arm_sve}" = "yes"])
1558 AC_ARG_ENABLE([altivec],
1559   AS_HELP_STRING([--disable-altivec],
1560     [disable AltiVec optimizations (default auto)]),, [
1561   AS_CASE("${host_cpu}", [powerpc*],
1562         [enable_altivec=yes], [enable_altivec=no])
1564 have_altivec="no"
1565 ALTIVEC_CFLAGS=""
1566 AS_IF([test "${enable_altivec}" = "yes"], [
1567   ARCH="${ARCH} altivec";
1568   VLC_SAVE_FLAGS
1569   AC_CACHE_CHECK([if $CC groks AltiVec inline assembly],
1570     [ac_cv_altivec_inline],
1571     [AC_TRY_COMPILE(,[asm volatile("vperm 0,1,2,3");],
1572          ac_cv_altivec_inline="yes",
1573          [CFLAGS="${CFLAGS} -Wa,-maltivec"
1574           AC_TRY_COMPILE(,[asm volatile("vperm 0,1,2,3");],
1575             [ac_cv_altivec_inline="-Wa,-maltivec"],
1576             ac_cv_altivec_inline=no)
1577          ])])
1578   VLC_RESTORE_FLAGS
1579   AS_IF([test "${ac_cv_altivec_inline}" != "no"], [
1580     AC_DEFINE(CAN_COMPILE_ALTIVEC, 1,
1581               [Define to 1 if AltiVec inline assembly is available.])
1582     AS_IF([test "${ac_cv_altivec_inline}" != "yes"], [
1583       ALTIVEC_CFLAGS="${ac_cv_altivec_inline}"
1584       VLC_ADD_CFLAGS([libvlccore],[${ac_cv_altivec_inline}])
1585     ])
1586     have_altivec="yes"
1587   ])
1589   VLC_SAVE_FLAGS
1590   AC_CACHE_CHECK([if \$CC groks AltiVec C extensions],
1591   [ac_cv_c_altivec], [
1592     CFLAGS="${CFLAGS} -maltivec"
1593     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([
1594 [#include <altivec.h>]], [
1595 [vec_ld(0, (unsigned char *)0);]])], [
1596       ac_cv_c_altivec="-maltivec"
1597     ], [
1598       ac_cv_c_altivec="no"
1599     ])
1600   ])
1601   VLC_RESTORE_FLAGS
1602   AS_IF([test "${ac_cv_c_altivec}" != "no"], [
1603     CPPFLAGS="${CPPFLAGS} ${ac_cv_c_altivec}"
1604     AC_DEFINE(CAN_COMPILE_C_ALTIVEC, 1, [Define to 1 if C AltiVec extensions are available.])
1605     VLC_ADD_CFLAGS([libvlccore],[${ac_cv_c_altivec}])
1606     ALTIVEC_CFLAGS="$ALTIVEC_CFLAGS ${ac_cv_c_altivec}"
1607     VLC_ADD_CFLAGS([deinterlace],[${ac_cv_c_altivec}])
1608     have_altivec="yes"
1609   ])
1610   AC_CHECK_HEADERS([altivec.h])
1612   VLC_SAVE_FLAGS
1613   LDFLAGS="${LDFLAGS} -Wl,-framework,vecLib"
1614   AC_CACHE_CHECK([if linker needs -framework vecLib],
1615     [ac_cv_ld_altivec],
1616     [AC_TRY_LINK([],,ac_cv_ld_altivec=yes,ac_cv_ld_altivec=no)])
1617   VLC_RESTORE_FLAGS
1618   AS_IF([test "${ac_cv_ld_altivec}" != "no"], [
1619     VLC_ADD_LIBS([libvlccore],[-Wl,-framework,vecLib])
1620   ])
1622 AC_SUBST([ALTIVEC_CFLAGS])
1623 AM_CONDITIONAL([HAVE_ALTIVEC], [test "$have_altivec" = "yes"])
1626 dnl  Memory usage
1628 AC_ARG_ENABLE([optimize-memory],
1629   AS_HELP_STRING([--enable-optimize-memory],
1630     [optimize memory usage over performance]))
1631 if test "${enable_optimize_memory}" = "yes"; then
1632   AC_DEFINE(OPTIMIZE_MEMORY, 1, Define if you want to optimize memory usage over performance)
1636 dnl Allow running as root (useful for people running on embedded platforms)
1638 AC_ARG_ENABLE([run-as-root],
1639   AS_HELP_STRING([--enable-run-as-root],
1640     [allow running VLC as root (default disabled)]))
1641 AS_IF([test "${enable_run_as_root}" = "yes"],[
1642     AC_DEFINE(ALLOW_RUN_AS_ROOT, 1,
1643               [Define to 1 to allow running VLC as root (uid 0).])
1647 dnl Stream output
1649 AC_ARG_ENABLE([sout],
1650   AS_HELP_STRING([--disable-sout],
1651     [disable streaming output (default enabled)]))
1652 AS_IF([test "${enable_sout}" != "no"], [
1653   AC_DEFINE(ENABLE_SOUT, 1, [Define to 1 for stream output support.])
1655 AM_CONDITIONAL([ENABLE_SOUT], [test "${enable_sout}" != "no"])
1657 dnl Lua modules
1658 AC_ARG_ENABLE([lua],
1659   AS_HELP_STRING([--disable-lua],
1660     [disable LUA scripting support (default enabled)]))
1661 if test "${enable_lua}" != "no"
1662 then
1663   PKG_CHECK_MODULES(LUA, lua5.2,
1664     [ have_lua=yes ],
1665     [
1666     AC_MSG_WARN([${LUA_PKG_ERRORS}, trying lua 5.1 instead])
1668     PKG_CHECK_MODULES(LUA, lua5.1,
1669       [ have_lua=yes ],
1670       [
1671       AC_MSG_WARN([${LUA_PKG_ERRORS}, trying lua >= 5.1 instead])
1672       PKG_CHECK_MODULES(LUA, lua >= 5.1,
1673         [ have_lua=yes ],
1674         [
1675           AC_MSG_WARN([${LUA_PKG_ERRORS}, trying manual detection instead])
1676           have_lua=yes
1677           AC_CHECK_HEADERS([lua.h lauxlib.h lualib.h],
1678             [],
1679             [ have_lua=no ] )
1680           AC_CHECK_LIB(  lua5.2 , luaL_newstate,
1681             [LUA_LIBS="-llua5.2"],
1682           AC_CHECK_LIB( lua5.1 , luaL_newstate,
1683             [LUA_LIBS="-llua5.1"],
1684             AC_CHECK_LIB( lua51 , luaL_newstate,
1685               [LUA_LIBS="-llua51"],
1686               AC_CHECK_LIB( lua , luaL_newstate,
1687                 [LUA_LIBS="-llua"],
1688                 [ have_lua=no
1689                 ], [-lm])
1690             )))
1691         ])
1692       ])
1693     ])
1694   if test "x${have_lua}" != "xyes" ;  then
1695       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.])
1696   fi
1697   AC_ARG_VAR([LUAC], [LUA byte compiler])
1698   AS_IF([test -z "$LUAC"], [
1699      AC_CHECK_TOOL(LUAC, [luac], [false])
1700   ])
1701   AS_IF([test "${LUAC}" = "false"], [
1702     AC_MSG_ERROR([Could not find the LUA byte compiler.])
1703   ])
1704   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], [
1705     AC_MSG_ERROR([You need 32-bits luac when using lua from contrib.])
1706   ])
1708 AM_CONDITIONAL([BUILD_LUA], [test "${have_lua}" = "yes"])
1712 dnl VideoLAN manager
1714 AC_ARG_ENABLE([vlm],
1715   AS_HELP_STRING([--disable-vlm],
1716     [disable the stream manager (default enabled)]),,
1717   [enable_vlm="${enable_sout}"])
1718 AS_IF([test "${enable_vlm}" != "no"], [
1719   AS_IF([test "${enable_sout}" = "no"], [
1720     AC_MSG_ERROR([VLM requires the stream output. Do not use --disable-sout.])
1721   ])
1722   AC_DEFINE(ENABLE_VLM, 1, [Define if you want the VideoLAN manager support])
1724 AM_CONDITIONAL([ENABLE_VLM], [test "${enable_vlm}" != "no"])
1728 dnl Addons manager storage and repositories modules
1730 AC_ARG_ENABLE([addonmanagermodules],
1731   AS_HELP_STRING([--disable-addonmanagermodules],
1732     [disable the addons manager modules (default enabled)]))
1733 if test "${enable_addonmanagermodules}" != "no"
1734 then
1735   AC_DEFINE(ENABLE_ADDONMANAGERMODULES, 1, [Define if you want the addons manager modules])
1737 AM_CONDITIONAL([ENABLE_ADDONMANAGERMODULES], [test "${enable_addonmanagermodules}" != "no"])
1741 dnl  Input plugins
1744 EXTEND_HELP_STRING([Input plugins:])
1747 dnl  libarchive access module
1749 PKG_ENABLE_MODULES_VLC([ARCHIVE], [archive], [libarchive >= 3.1.0], (libarchive support), [auto])
1752 dnl  live555 input
1754 AC_ARG_ENABLE([live555],
1755   AS_HELP_STRING([--enable-live555],
1756     [enable RTSP input through live555 (default enabled)]))
1758 AS_IF([test "${enable_live555}" != "no" -a -n "${CXX}"], [
1759   PKG_CHECK_MODULES(LIVE555, live555, [
1760     VLC_ADD_PLUGIN([live555])
1761     VLC_ADD_CXXFLAGS([live555], [$LIVE555_CFLAGS])
1762     VLC_ADD_LIBS([live555],[$LIVE555_LIBS])
1763   ], [
1764     AC_MSG_WARN([${LIVE555_PKG_ERRORS}.])
1766     AC_LANG_PUSH(C++)
1767     VLC_SAVE_FLAGS
1769     dnl detect include paths
1770     AS_IF([test -f "${CONTRIB_DIR}/include/UsageEnvironment/UsageEnvironment.hh"], [
1771       CPPFLAGS_live555="-I${CONTRIB_DIR}/include/liveMedia -I${CONTRIB_DIR}/include/groupsock -I${CONTRIB_DIR}/include/BasicUsageEnvironment -I${CONTRIB_DIR}/include/UsageEnvironment"
1772     ], [
1773       AS_IF([test "${SYS}" != "os2"], [
1774         LIVE555_PREFIX=${LIVE555_PREFIX-"/usr"}
1775         CPPFLAGS_live555="-I${LIVE555_PREFIX}/include/liveMedia -I${LIVE555_PREFIX}/include/groupsock -I${LIVE555_PREFIX}/include/BasicUsageEnvironment -I${LIVE555_PREFIX}/include/UsageEnvironment"
1776       ], [
1777         LIVE555_PREFIX=${LIVE555_PREFIX-"/usr/lib/live"}
1778         CPPFLAGS_live555="-I${LIVE555_PREFIX}/liveMedia/include -I${LIVE555_PREFIX}/groupsock/include -I${LIVE555_PREFIX}/BasicUsageEnvironment/include -I${LIVE555_PREFIX}/UsageEnvironment/include"
1779         LDFLAGS_live555="-L${LIVE555_PREFIX}/liveMedia -L${LIVE555_PREFIX}/groupsock -L${LIVE555_PREFIX}/BasicUsageEnvironment -L${LIVE555_PREFIX}/UsageEnvironment"
1780       ])
1781     ])
1783     dnl CPP Flags
1784     AS_IF([test "${SYS}" = "solaris"], [
1785       CPPFLAGS_live555="${CPPFLAGS_live555} -DSOLARIS"
1786     ])
1787     CPPFLAGS="${CPPFLAGS} ${CPPFLAGS_live555}"
1788     LDFLAGS="${LDFLAGS} ${LDFLAGS_live555}"
1790     dnl version check
1791     AC_CACHE_CHECK([for live555 version 1324598400 or later], [ac_cv_live555], [
1792       AC_PREPROC_IFELSE([AC_LANG_PROGRAM([
1793 [#include <liveMedia_version.hh>
1794 #if !defined (LIVEMEDIA_LIBRARY_VERSION_INT) || (LIVEMEDIA_LIBRARY_VERSION_INT < 1324598400)
1795 # error BOOM
1796 #endif]])
1797       ], [
1798         ac_cv_live555="yes"
1799       ], [
1800         ac_cv_live555="no"
1801       ])
1802     ])
1804     AS_IF([test "$ac_cv_live555" = "no"], [
1805       AC_MSG_WARN([live555 is missing or its installed version is too old:
1806 Version 2011.12.23 or later is required to proceed.
1807 You can get an updated one from http://www.live555.com/liveMedia .])
1808       AS_IF([test -n "${enable_live555}"], [
1809         AC_MSG_ERROR([Update live555 or pass --disable-live555 to disable RTSP input support.])
1810       ])
1811     ], [
1812       other_libs="-lgroupsock -lBasicUsageEnvironment -lUsageEnvironment"
1813       other_libs_pic="-lgroupsock_pic -lBasicUsageEnvironment_pic -lUsageEnvironment_pic"
1814       AS_IF([test "${SYS}" = "mingw32"], [
1815         # add ws2_32 for closesocket, select, recv
1816         other_libs="$other_libs -lws2_32"
1817       ])
1819       dnl We need to check for pic because live555 don't provide shared libs
1820       dnl and we want to build a plugins so we need -fPIC on some arch.
1821       VLC_ADD_CXXFLAGS([live555], [${CPPFLAGS_live555}])
1822       VLC_ADD_LDFLAGS([live555], [${LDFLAGS_live555}])
1823       AC_CHECK_LIB([liveMedia_pic], [main], [
1824         VLC_ADD_PLUGIN([live555])
1825         VLC_ADD_LIBS([live555], [-lliveMedia_pic ${other_libs_pic}])
1826       ],[
1827         AC_CHECK_LIB([liveMedia], [main], [
1828           VLC_ADD_PLUGIN([live555])
1829           VLC_ADD_LIBS([live555], [-lliveMedia ${other_libs}])
1830         ],[],[${other_libs}])
1831       ],[${other_libs_pic}])
1832     ])
1833     VLC_RESTORE_FLAGS
1834     AC_LANG_POP(C++)
1835   ])
1839 dnl IIDC and DV FireWire input modules
1841 PKG_ENABLE_MODULES_VLC([DC1394], [], [libdc1394-2 >= 2.1.0], [IIDC FireWire input module], [auto])
1842 PKG_ENABLE_MODULES_VLC([DV1394], [], [libraw1394 >= 2.0.1 libavc1394 >= 0.5.3], [DV FireWire input module], [auto])
1845 dnl - linsys modules: access module check for libzvbi
1847 AC_ARG_ENABLE([linsys],
1848   AS_HELP_STRING([--enable-linsys],
1849     [Linux Linear Systems Ltd. SDI and HD-SDI input cards (default enabled)]))
1850 AS_IF([test "$SYS" = "linux" -a "${enable_linsys}" != "no"], [
1851   VLC_ADD_PLUGIN([linsys_hdsdi])
1852   PKG_CHECK_MODULES(LINSYS_SDI, [zvbi-0.2 >= 0.2.28], [
1853     VLC_ADD_PLUGIN([linsys_sdi])
1854   ], [
1855     AC_MSG_WARN([${LINSYS_SDI_PKG_ERRORS}.])
1856   ])
1860 dnl dvdread module: check for libdvdread
1862 PKG_ENABLE_MODULES_VLC([DVDREAD], [], [dvdread > 4.9.0], [dvdread input module], [auto])
1865 dnl libdvdnav plugin
1867 PKG_ENABLE_MODULES_VLC([DVDNAV], [], [dvdnav > 4.9.0], [DVD with navigation input module (dvdnav)], [auto])
1868 AS_IF([test "${enable_dvdnav}" != "no"], [
1869   AC_MSG_CHECKING(for dvdnav_stream_cb in dvdnav/dvdnav.h)
1870     AC_EGREP_HEADER(dvdnav_stream_cb,dvdnav/dvdnav.h,[
1871       AC_MSG_RESULT(yes)
1872       AC_DEFINE(HAVE_STREAM_CB_IN_DVDNAV_H, 1, For dvdnav demux support)
1873       ],[
1874       AC_MSG_RESULT(no)
1875     ])
1879 dnl  Blu-ray Disc Support with libbluray
1881 PKG_ENABLE_MODULES_VLC([BLURAY], [libbluray], [libbluray >= 0.6.2], (libbluray for Blu-ray disc support ) )
1884 dnl  OpenCV wrapper and example filters
1886 PKG_ENABLE_MODULES_VLC([OPENCV], [opencv_example opencv_wrapper], [opencv > 2.0], (OpenCV (computer vision) filter), [auto])
1890 dnl  libsmbclient plugin
1892 PKG_ENABLE_MODULES_VLC([SMBCLIENT], [smbc], [smbclient], (SMB/CIFS support), [auto])
1895 dnl  liBDSM access module
1897 AM_CONDITIONAL([HAVE_DSM], [test "$AS_TR_SH(with_dsm)" = "yes"])
1898 PKG_WITH_MODULES([DSM], [libdsm >= 0.2.0], [
1899        VLC_ADD_PLUGIN([dsm])
1900        VLC_ADD_CFLAGS([dsm], [$DSM_CFLAGS])
1901        VLC_ADD_LIBS([dsm], [$DSM_LIBS])
1902        have_dsm="yes"
1903    ],,[libdsm SMB/CIFS access/sd module], [auto])
1904 AM_CONDITIONAL([HAVE_DSM], [test "${have_dsm}" = "yes"])
1907 dnl sftp access support
1909 PKG_ENABLE_MODULES_VLC([SFTP], [sftp], [libssh2], (support SFTP file transfer via libssh2), [auto])
1912 dnl nfs access support
1914 PKG_ENABLE_MODULES_VLC([NFS], [nfs], [libnfs >= 1.10.0], (support nfs protocol via libnfs), [auto])
1917 dnl smb2 access support
1919 PKG_ENABLE_MODULES_VLC([SMB2], [smb2], [libsmb2 >= 2.0.0], (support smb2 protocol via libsmb2), [auto])
1922 dnl  Video4Linux 2
1924 AC_ARG_ENABLE([v4l2], AS_HELP_STRING([--disable-v4l2],
1925   [disable Video4Linux version 2 (default auto)]))
1926 have_v4l2="no"
1927 AS_IF([test "$enable_v4l2" != "no"], [
1928   AC_CHECK_HEADERS([linux/videodev2.h], [
1929     have_v4l2="yes"
1930   ])
1932 AM_CONDITIONAL([HAVE_V4L2], [test "${have_v4l2}" != "no"])
1935 dnl special access module for Blackmagic SDI cards
1937 AC_ARG_ENABLE([decklink],
1938   AS_HELP_STRING([--disable-decklink],
1939     [disable Blackmagic DeckLink SDI input (default auto)]))
1940 AC_ARG_WITH([decklink_sdk],
1941   AS_HELP_STRING([--with-decklink-sdk=DIR],
1942     [location of Blackmagic DeckLink SDI SDK]))
1943 have_decklink=no
1944 if test "${enable_decklink}" != "no"
1945 then
1946   if test "${with_decklink_sdk}" != "no" -a -n "${with_decklink_sdk}"
1947   then
1948     VLC_ADD_CPPFLAGS([decklink decklinkoutput stream_out_sdi],[-I${with_decklink_sdk}/include])
1949   fi
1950   VLC_SAVE_FLAGS
1951   CPPFLAGS="${CPPFLAGS} ${CPPFLAGS_decklink}"
1952   AC_LANG_PUSH([C++])
1953   AC_CHECK_HEADERS([DeckLinkAPIDispatch.cpp], [
1954       have_decklink=yes
1955       AS_IF([test "${SYS}" = "darwin"], [
1956         VLC_ADD_LIBS([decklink decklinkoutput],[-Wl,-framework,CoreFoundation])
1957       ])
1958   ], [
1959       AS_IF([test "${enable_decklink}" = "yes"], [
1960         AC_MSG_ERROR([Blackmagic DeckLink SDI include files not found!])
1961       ], [
1962         AC_MSG_WARN([Blackmagic DeckLink SDI include files not found, decklink disabled])
1963       ])
1964   ])
1965   AC_LANG_POP([C++])
1966   VLC_RESTORE_FLAGS
1968 AM_CONDITIONAL([HAVE_DECKLINK], [ test "${have_decklink}" != "no" ])
1972 dnl  Built-in CD-DA and VCD module
1974 AC_ARG_ENABLE([vcd],
1975   AS_HELP_STRING([--disable-vcd],
1976     [disable built-in VCD and CD-DA support (default enabled)]))
1978 AC_ARG_ENABLE([libcddb],
1979   AS_HELP_STRING([--disable-libcddb],
1980     [disable CDDB for Audio CD (default enabled)]))
1982 if test "${enable_vcd}" != "no"
1983 then
1984   AC_MSG_CHECKING(for cdrom_msf0 in linux/cdrom.h)
1985   AC_EGREP_HEADER(cdrom_msf0,linux/cdrom.h,[
1986     AC_MSG_RESULT(yes)
1987     VLC_ADD_PLUGIN([vcd cdda])
1988   ],[
1989     AC_MSG_RESULT(no)
1990   ])
1992   AC_MSG_CHECKING(for scsireq in sys/scsiio.h)
1993   AC_EGREP_HEADER(scsireq,sys/scsiio.h,[
1994     AC_MSG_RESULT(yes)
1995     VLC_ADD_PLUGIN([vcd cdda])
1996     AC_DEFINE(HAVE_SCSIREQ_IN_SYS_SCSIIO_H, 1, For NetBSD VCD support)
1997   ],[
1998     AC_MSG_RESULT(no)
1999   ])
2001   AC_MSG_CHECKING(for ioc_toc_header in sys/cdio.h)
2002   AC_EGREP_HEADER(ioc_toc_header ,sys/cdio.h,[
2003     AC_MSG_RESULT(yes)
2004     VLC_ADD_PLUGIN([vcd cdda])
2005     AC_DEFINE(HAVE_IOC_TOC_HEADER_IN_SYS_CDIO_H, 1, For FreeBSD VCD support)
2006   ],[
2007     AC_MSG_RESULT(no)
2008   ])
2010   if test "${SYS}" = "bsdi" -o "${SYS}" = "mingw32" -o "${SYS}" = "os2" -o "${SYS}" = "darwin"
2011   then
2012     VLC_ADD_PLUGIN([vcd cdda])
2013   fi
2015   if test "$enable_libcddb" != "no"; then
2016     PKG_CHECK_MODULES(LIBCDDB, [libcddb >= 0.9.5], [
2017       HAVE_LIBCDDB=yes
2018       AC_DEFINE(HAVE_LIBCDDB, 1, [Define this if you have libcddb installed])
2019       VLC_ADD_LIBS([cdda],[$LIBCDDB_LIBS])
2020       VLC_ADD_CFLAGS([cdda],[$LIBCDDB_CFLAGS])
2021       ],:
2022       [AC_MSG_WARN([${LIBCDDB_PKG_ERRORS}: CDDB access disabled.])
2023       HAVE_LIBCDDB=no])
2024   fi
2028 dnl Linux DVB
2030 AC_CACHE_CHECK([for Linux DVB version 5.1], [ac_cv_linux_dvb_5_1], [
2031   AC_PREPROC_IFELSE([AC_LANG_PROGRAM([
2032 [#include <linux/dvb/version.h>
2033 #if (DVB_API_VERSION < 5)
2034 # error Linux DVB API v3.2 and older are not supported.
2035 #endif
2036 #if (DVB_API_VERSION == 5 && DVB_API_VERSION_MINOR < 1)
2037 # error Linux DVB API v5.0 is unsupported. Please update.
2038 #endif
2039 ]])], [
2040   ac_cv_linux_dvb_5_1=yes
2041 ], [
2042   ac_cv_linux_dvb_5_1=no
2043 ])])
2044 AM_CONDITIONAL([HAVE_LINUX_DVB], [test "$ac_cv_linux_dvb_5_1" = "yes"])
2047 dnl  Screen capture module
2049 AC_ARG_ENABLE([screen],
2050   AS_HELP_STRING([--enable-screen],
2051     [disable screen capture (default enabled)]))
2052 if test "${enable_screen}" != "no"; then
2053   if test "${SYS}" = "darwin"; then
2054     AC_CHECK_HEADERS([ApplicationServices/ApplicationServices.h], [
2055       VLC_ADD_PLUGIN([screen])
2056     ])
2057   fi
2059 AM_CONDITIONAL([HAVE_MAC_SCREEN], [test "${SYS}" = "darwin" -a "x${enable_screen}" != "xno"])
2062 dnl  VNC/RFB access module
2064 PKG_ENABLE_MODULES_VLC([VNC], [vnc], [libvncclient >= 0.9.9], (VNC/rfb client support), [auto])
2066 dnl  RDP/Remote Desktop access module
2068 PKG_ENABLE_MODULES_VLC([FREERDP], [rdp], [freerdp >= 1.0.1], (RDP/Remote Desktop client support) )
2071 dnl AVFoundation
2072 AC_SUBST([have_avfoundation], ["no"])
2073 AC_ARG_ENABLE([macosx-avfoundation],
2074   AS_HELP_STRING([--enable-macosx-avfoundation], [Mac OS X avcapture (video) module (default enabled on Mac OS X)]))
2075 if test "x${enable_macosx_avfoundation}" != "xno" &&
2076   (test "${SYS}" = "darwin" || test "${enable_macosx_avfoundation}" = "yes")
2077 then
2078   SAVED_LIBS="${LIBS}"
2079   LIBS="-framework AVFoundation"
2080   AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [])],[have_avfoundation=yes],[have_avfoundation=no])
2081   LIBS="${SAVED_LIBS}"
2082   if test "${have_avfoundation}" != "no"
2083   then
2084     VLC_ADD_PLUGIN([avcapture])
2085   fi
2087 AM_CONDITIONAL([HAVE_AVFOUNDATION], [test "${have_avfoundation}" != "no"])
2090 dnl  DCP plugin (using asdcplib)
2092 PKG_WITH_MODULES([ASDCP], [asdcplib], [have_asdcp="yes"])
2093 AM_CONDITIONAL([HAVE_ASDCP], [test "${have_asdcp}" = "yes"])
2096 dnl  Demux plugins
2099 EXTEND_HELP_STRING([Mux/Demux plugins:])
2102 dnl  libdvbpsi check for ts mux/demux
2104 have_dvbpsi="no"
2105 PKG_WITH_MODULES([DVBPSI], [libdvbpsi >= 1.2.0], [have_dvbpsi="yes"])
2106 AM_CONDITIONAL([HAVE_DVBPSI], [test "${have_dvbpsi}" = "yes"])
2110 dnl  GME demux plugin
2112 AC_ARG_ENABLE([gme],
2113   AS_HELP_STRING([--enable-gme],
2114     [use Game Music Emu (default auto)]))
2115 AS_IF([test "${enable_gme}" != "no"], [
2116   AC_CHECK_HEADER([gme/gme.h], [
2117     AC_CHECK_LIB([gme], [gme_identify_header], [
2118       VLC_ADD_PLUGIN([gme])
2119     ], [
2120       AC_CHECK_LIB([gme], [gme_identify_extension], [
2121          VLC_ADD_LIBS([gme], [-lstdc++ $LIBM])
2122          VLC_ADD_PLUGIN([gme])
2123       ],, [-lstdc++ $LIBM])
2124     ])
2125     VLC_ADD_LIBS([gme], [-lgme])
2126   ], [
2127     AS_IF([test "x${enable_gme}" != "x"], [
2128       AC_MSG_ERROR([GME cannot be found. Please install the development files.])
2129     ])
2130   ])
2135 dnl  SIDPlay plugin
2137 AC_ARG_ENABLE([sid],
2138     AS_HELP_STRING([--enable-sid],[C64 sid demux support (default auto)]))
2139 AS_IF([test "${enable_sid}" != "no"], [
2140     PKG_CHECK_MODULES(SID, [libsidplay2], [
2141         AC_LANG_PUSH(C++)
2142         oldCPPFLAGS="$CPPFLAGS"
2143         CPPFLAGS="$CPPFLAGS $SID_CFLAGS"
2144         AC_CHECK_HEADER([sidplay/builders/resid.h], [
2145             VLC_ADD_PLUGIN([sid])
2146             VLC_ADD_CFLAGS([sid], [$SID_CFLAGS])
2147             VLC_ADD_LIBS([sid], [$SID_LIBS] [-lresid-builder])
2148         ], [
2149             AS_IF([test -n "${enable_sid}"],
2150                 [AC_MSG_ERROR([${SID_PKG_ERRORS} (required for sid).])],
2151                 [AC_MSG_WARN([${SID_PKG_ERRORS} (required for sid).])]
2152                 )
2153         ])
2154         CPPFLAGS="$oldCPPFLAGS"
2155         AC_LANG_POP(C++)
2156     ], [
2157         AS_IF([test "x${enable_sid}" = "xyes"],
2158             [AC_MSG_ERROR([${SID_PKG_ERRORS} (required for sid).])],
2159             [AC_MSG_WARN([${SID_PKG_ERRORS} (required for sid).])]
2160             )
2161     ])
2166 dnl  ogg demux plugin
2168 PKG_ENABLE_MODULES_VLC([OGG], [mux_ogg], [ogg >= 1.0], [Ogg demux support], [auto])
2169 PKG_CHECK_MODULES(LIBVORBIS, [vorbis >= 1.1], [
2170     AC_DEFINE(HAVE_LIBVORBIS, 1, [Define to 1 if you have the libvorbis])
2171 ],[true])
2172 PKG_ENABLE_MODULES_VLC([OGG], [], [ogg >= 1.0], [Ogg demux support], [auto], [${LIBVORBIS_CFLAGS}], [${LIBVORBIS_LIBS}])
2173 if test "${enable_sout}" != "no"; then
2174 dnl Check for libshout
2175     PKG_ENABLE_MODULES_VLC([SHOUT], [access_output_shout], [shout >= 2.1], [libshout output plugin], [auto])
2179 dnl  matroska demux plugin
2181 PKG_WITH_MODULES([MATROSKA], [libebml libmatroska], [
2182        VLC_ADD_PLUGIN([mkv])
2183        VLC_ADD_CFLAGS([mkv], [$MATROSKA_CFLAGS])
2184        VLC_ADD_LIBS([mkv], [$MATROSKA_LIBS])
2185        have_matroska="yes"
2186    ],,[MKV format support], [auto])
2187 AM_CONDITIONAL([HAVE_MATROSKA], [test "${have_matroska}" = "yes"])
2190 dnl  modplug demux plugin
2192 AC_ARG_ENABLE([mod],
2193   AS_HELP_STRING([--disable-mod],
2194     [do not use libmodplug (default auto)]))
2195 if test "${enable_mod}" != "no" ; then
2196     PKG_CHECK_MODULES(LIBMODPLUG, [libmodplug >= 0.8.4 libmodplug != 0.8.8], [
2197           VLC_ADD_PLUGIN([mod])
2198           VLC_ADD_CXXFLAGS([mod],[$LIBMODPLUG_CFLAGS])
2199           VLC_ADD_CFLAGS([mod],[$LIBMODPLUG_CFLAGS]) #modules/demux/mod.c needs CFLAGS_mod, not CXXFLAGS_mod
2200           VLC_ADD_LIBS([mod],[$LIBMODPLUG_LIBS])
2201     ],[
2202        AS_IF([test -n "${enable_mod}"],
2203          [AC_MSG_ERROR([${LIBMODPLUG_PKG_ERRORS}.])],
2204          [AC_MSG_WARN([${LIBMODPLUG_PKG_ERRORS}.])])
2205     ])
2209 dnl  mpc demux plugin
2211 AC_ARG_ENABLE([mpc],
2212   AS_HELP_STRING([--disable-mpc], [do not use libmpcdec (default auto)]))
2213 if test "${enable_mpc}" != "no"
2214 then
2215     AC_CHECK_HEADERS([mpcdec/mpcdec.h], [
2216     VLC_ADD_PLUGIN([mpc])
2217     VLC_ADD_LIBS([mpc],[-lmpcdec])])
2221 dnl  Codec plugins
2224 EXTEND_HELP_STRING([Codec plugins:])
2227 dnl wmafixed plugin
2229 AC_ARG_ENABLE([wma-fixed],
2230   AS_HELP_STRING([--enable-wma-fixed], [libwma-fixed module (default disabled)]))
2231 if test "${enable_wma_fixed}" = "yes"
2232 then
2233   VLC_ADD_PLUGIN([wma_fixed])
2237 dnl shine encoder plugin
2239 PKG_ENABLE_MODULES_VLC([SHINE], [], [shine >= 3.0.0], [MPEG Audio Layer 3 encoder], [auto], [], [], [])
2243 dnl openmax il codec plugin
2245 AC_ARG_ENABLE([omxil],
2246   AS_HELP_STRING([--enable-omxil], [openmax il codec module (default disabled)]))
2247 if test "${enable_omxil}" = "yes"
2248 then
2249   VLC_ADD_PLUGIN([omxil])
2253 dnl raspberry pi openmax il configuration
2255 AC_ARG_ENABLE([rpi-omxil],
2256   AS_HELP_STRING([--enable-rpi-omxil], [openmax il configured for raspberry pi (default disabled)]))
2257 if test "${enable_rpi_omxil}" = "yes"
2258 then
2259   VLC_ADD_PLUGIN([omxil])
2260   VLC_ADD_CFLAGS([omxil],[-DRPI_OMX])
2264 dnl CrystalHD codec plugin
2266 AC_ARG_ENABLE([crystalhd],
2267   AS_HELP_STRING([--enable-crystalhd], [crystalhd codec plugin (default auto)]))
2268 if test "${enable_crystalhd}" != "no"; then
2269     AC_CHECK_HEADER(libcrystalhd/libcrystalhd_if.h, [
2270       VLC_ADD_PLUGIN([crystalhd])
2271       VLC_ADD_LIBS([crystalhd], [-lcrystalhd])
2272     ],[
2273       if test "${SYS}" = "mingw32" ; then
2274         AC_CHECK_HEADERS([libcrystalhd/bc_dts_defs.h], [
2275           VLC_ADD_PLUGIN([crystalhd])
2276           AC_CHECK_HEADERS([libcrystalhd/bc_drv_if.h], [
2277             VLC_ADD_LIBS([crystalhd], [-lbcmDIL])
2278             ])
2279         ],[
2280           AS_IF([test x"${enable_crystalhd}" = "xyes"],
2281                 [AC_MSG_ERROR("Could not find CrystalHD development headers")],
2282                 [AC_MSG_WARN("Could not find CrystalHD development headers")])
2283         ],[#define __LINUX_USER__
2284                #include <libcrystalhd/bc_dts_types.h>
2285         ])
2286       fi
2287     ],[
2288        #include <libcrystalhd/bc_dts_types.h>
2289       ])
2293 dnl  mad plugin
2295 have_mad="no"
2296 MAD_CFLAGS=""
2297 MAD_LIBS=""
2299 AC_ARG_WITH(mad, AS_HELP_STRING([--with-mad=PATH], [path to libmad]), [
2300   enable_mad="yes"
2301 ], [
2302   with_mad="no"
2304 AS_IF([test "${with_mad}" != "no"], [
2305   MAD_CFLAGS="-I${with_mad}/include"
2306   MAD_LIBS="-L${with_mad}/lib"
2309 AC_ARG_ENABLE([mad],
2310   AS_HELP_STRING([--enable-mad], [libmad module (default enabled)]))
2311 AS_IF([test "${enable_mad}" != "no"], [
2312   VLC_SAVE_FLAGS
2313   CPPFLAGS="${CPPFLAGS} ${MAD_CFLAGS}"
2314   LDFLAGS="${LDFLAGS} ${MAD_LIBS}"
2315   AC_CHECK_HEADERS([mad.h], [
2316     AC_CHECK_LIB([mad], [mad_bit_init], [
2317       have_mad="yes"
2318       MAD_LIBS="${MAD_LIBS} -lmad"
2319     ])
2320   ])
2321   VLC_RESTORE_FLAGS
2322   AS_IF([test -n "$enable_mad" -a "${have_mad}" = "no"], [
2323     AC_MSG_ERROR([Could not find libmad. Install it or pass --disable-mad to disable it.])
2324   ])
2326 AC_SUBST([MAD_CFLAGS])
2327 AC_SUBST([MAD_LIBS])
2328 AM_CONDITIONAL([HAVE_MAD], [test "${have_mad}" = "yes"])
2330 dnl  mpg123 plugin
2333 PKG_ENABLE_MODULES_VLC([MPG123], [mpg123], [libmpg123], [libmpg123 decoder support], [auto])
2336 dnl gstreamer stuff
2338 AC_ARG_ENABLE([gst-decode],
2339   AS_HELP_STRING([--enable-gst-decode], [GStreamer based decoding support (currently supports only video decoding) (default auto)]))
2341 have_gst_decode="no"
2342 AS_IF([test "${enable_gst_decode}" != "no"], [
2343   PKG_CHECK_MODULES([GST_APP], [gstreamer-app-1.0], [
2344     PKG_CHECK_MODULES([GST_VIDEO], [gstreamer-video-1.0], [
2345       have_gst_decode="yes"
2346     ], [
2347       AC_MSG_WARN([${GST_VIDEO_PKG_ERRORS}. GStreamer decoder module will not be built.])
2348     ])
2349   ], [
2350     AC_MSG_WARN([${GST_APP_PKG_ERRORS}. GStreamer modules will not be built.])
2351   ])
2353 AM_CONDITIONAL([HAVE_GST_DECODE], [test "${have_gst_decode}" = "yes"])
2356 dnl  avcodec decoder/encoder plugin
2358 AC_ARG_ENABLE([merge-ffmpeg],
2359 AS_HELP_STRING([--enable-merge-ffmpeg], [merge FFmpeg-based plugins (default disabled)]),, [
2360   enable_merge_ffmpeg="no"
2362 AM_CONDITIONAL([MERGE_FFMPEG], [test "$enable_merge_ffmpeg" != "no"])
2364 AC_MSG_CHECKING([for libavutil variant])
2365 PKG_CHECK_EXISTS([libavutil], [
2366   libavutil_version="$(${PKG_CONFIG} --modversion libavutil)"
2367   libavutil_micro="${libavutil_version##*.}"
2368   AS_IF([test ${libavutil_micro} -le 99], [
2369     avfork="libav"
2370   ], [
2371     avfork="ffmpeg"
2372   ])
2373 ], [
2374   avfork="none"
2376 AC_MSG_RESULT([${avfork}])
2378 AC_ARG_ENABLE([avcodec],
2379 AS_HELP_STRING([--enable-avcodec], [libavcodec codec (default enabled)]))
2380 AS_IF([test "${enable_avcodec}" != "no"], [
2381   dnl We need >=57.16.0 from libav or >=57.37.100 from ffmpeg
2382   case "${avfork}" in
2383     libav) av_codec_ver="57.16.0" ;;
2384     dnl 05f66706d182eb0c36af54d72614bf4c33e957a9  includes libavutil 55.9.0
2385     ffmpeg) av_codec_ver="57.37.100" ;;
2386     dnl 7fc329e2dd6226dfecaa4a1d7adf353bf2773726  include libavutil 55.22.101
2387     *) AC_MSG_ERROR([Missing libav or FFmpeg. Pass --disable-avcodec to ignore this error.])
2388   esac
2389   PKG_CHECK_MODULES(AVCODEC,[libavcodec >= ${av_codec_ver} libavutil >= 55.9.0], [
2390     VLC_SAVE_FLAGS
2391     CPPFLAGS="${CPPFLAGS} ${AVCODEC_CFLAGS}"
2392     CFLAGS="${CFLAGS} ${AVCODEC_CFLAGS}"
2393     AC_CHECK_HEADERS([libavcodec/avcodec.h])
2394     AC_CHECK_HEADERS([libavutil/avutil.h])
2395     VLC_RESTORE_FLAGS
2396     have_avcodec="yes"
2397   ],[
2398     AC_MSG_ERROR([${AVCODEC_PKG_ERRORS}. Pass --disable-avcodec to ignore this error.])
2399   ])
2400 ], [
2401   have_avcodec="no"
2403 AM_CONDITIONAL([HAVE_AVCODEC], [test "${have_avcodec}" != "no"])
2406 dnl libva needs avcodec
2408 AC_ARG_ENABLE([libva],
2409   AS_HELP_STRING([--enable-libva], [VAAPI GPU decoding support (libVA) (default auto)]))
2411 AS_IF([test "${enable_libva}" = "yes" -a "${have_avcodec}" != "yes" ], [
2412   AC_MSG_ERROR([--enable-libva and --disable-avcodec options are mutually exclusive. Use --enable-avcodec.])
2415 have_vaapi="no"
2416 have_vaapi_drm="no"
2417 have_vaapi_x11="no"
2418 have_vaapi_wl="no"
2419 AS_IF([test "${enable_libva}" != "no"], [
2420   PKG_CHECK_MODULES([LIBVA], [libva >= 0.38], [
2421     have_vaapi="yes"
2422   ], [
2423     AS_IF([test -n "${enable_libva}"], [
2424       AC_MSG_ERROR([${LIBVA_PKG_ERRORS}.])
2425     ], [
2426       AC_MSG_WARN([${LIBVA_PKG_ERRORS}.])
2427     ])
2428   ])
2429   PKG_CHECK_MODULES([LIBVA_DRM], [libva-drm], [
2430     have_vaapi_drm="yes"
2431   ], [
2432     AC_MSG_WARN([${LIBVA_DRM_PKG_ERRORS}.])
2433   ])
2434   PKG_CHECK_MODULES(LIBVA_X11, [libva-x11], [
2435     have_vaapi_x11="yes"
2436   ], [
2437     AC_MSG_WARN([${LIBVA_X11_PKG_ERRORS}.])
2438   ])
2439   PKG_CHECK_MODULES(LIBVA_WL, [libva-wayland], [
2440     have_vaapi_wl="yes"
2441   ], [
2442     AC_MSG_WARN([${LIBVA_WL_PKG_ERRORS}.])
2443   ])
2445 AM_CONDITIONAL([HAVE_VAAPI], [test "${have_vaapi}" = "yes"])
2446 AM_CONDITIONAL([HAVE_VAAPI_DRM], [test "${have_vaapi_drm}" = "yes"])
2447 AM_CONDITIONAL([HAVE_VAAPI_X11], [test "${have_vaapi_x11}" = "yes"])
2448 AM_CONDITIONAL([HAVE_VAAPI_WL], [test "${have_vaapi_wl}" = "yes"])
2450 have_avcodec_vaapi="no"
2451 AS_IF([test "${have_vaapi}" = "yes" -a "${have_avcodec}" = "yes"], [
2452   VLC_SAVE_FLAGS
2453   CPPFLAGS="${CPPFLAGS} ${AVCODEC_CFLAGS}"
2454   CFLAGS="${CFLAGS} ${AVCODEC_CFLAGS}"
2455   AC_CHECK_HEADERS([libavcodec/vaapi.h], [
2456     AC_MSG_NOTICE([VA API acceleration activated])
2457     have_avcodec_vaapi="yes"
2458   ],[
2459     AS_IF([test -n "${enable_libva}"], [
2460       AC_MSG_ERROR([libva is present but libavcodec/vaapi.h is missing])
2461     ], [
2462       AC_MSG_WARN([libva is present but libavcodec/vaapi.h is missing ])
2463     ])
2464   ])
2465   VLC_RESTORE_FLAGS
2467 AM_CONDITIONAL([HAVE_AVCODEC_VAAPI], [test "${have_avcodec_vaapi}" = "yes"])
2470 dnl dxva2 needs avcodec
2472 AC_ARG_ENABLE([dxva2],
2473   AS_HELP_STRING([--enable-dxva2], [DxVA2 GPU decoding support (default auto)]))
2475 have_avcodec_dxva2="no"
2476 AS_IF([test "${enable_dxva2}" != "no"], [
2477   if test "${SYS}" = "mingw32"; then
2478   AS_IF([test "x${have_avcodec}" = "xyes"], [
2479     AC_CHECK_HEADERS([dxva2api.h],
2480       [
2481         AC_CHECK_HEADERS([libavcodec/dxva2.h], [
2482            AC_MSG_NOTICE([DxVA2 acceleration activated])
2483            have_avcodec_dxva2="yes"
2484         ],[
2485     AS_IF([test "${enable_dxva2}" = "yes"],
2486           [AC_MSG_ERROR([dxva2 is present but libavcodec/dxva2.h is missing])],
2487               [AC_MSG_WARN([dxva2 is present but libavcodec/dxva2.h is missing ])])
2488         ], [#undef _WIN32_WINNT
2489             /* DXVA2 is only available in Vista and above */
2490             #define _WIN32_WINNT 0x600])
2491       ],[
2492     AS_IF([test "${enable_dxva2}" = "yes"],
2493               [AC_MSG_ERROR([Could not find required dxva2api.h])],
2494               [AC_MSG_WARN([dxva2api.h not found])])
2495       ],[#include <d3d9.h>])
2496   ],[
2497     AS_IF([test "x${enable_dxva2}" != "x"], [
2498       AC_MSG_ERROR([--enable-dxva2 and --disable-avcodec options are mutually exclusive.])
2499     ])
2500   ])
2501   fi
2503 AM_CONDITIONAL([HAVE_AVCODEC_DXVA2], [test "${have_avcodec_dxva2}" = "yes"])
2506 dnl d3d11va needs avcodec
2508 AC_ARG_ENABLE([d3d11va],
2509   AS_HELP_STRING([--enable-d3d11va], [D3D11 GPU decoding support (default auto)]))
2511 have_avcodec_d3d11va="no"
2512 AS_IF([test "${enable_d3d11va}" != "no"], [
2513   if test "${SYS}" = "mingw32"; then
2514   AS_IF([test "x${have_avcodec}" = "xyes"], [
2515         AC_CHECK_TYPES([ID3D11VideoDecoder],
2516           [
2517             AC_CHECK_HEADERS([dxva2api.h],
2518               [
2519                 AC_CHECK_HEADERS([libavcodec/d3d11va.h], [
2520                    AC_MSG_NOTICE([D3D11 acceleration activated])
2521                    AC_DEFINE([HAVE_AVCODEC_D3D11VA], [1], [Define if the d3d11va module is built])
2522                    have_avcodec_d3d11va="yes"
2523                 ],[
2524                   AS_IF([test "${enable_d3d11va}" = "yes"],
2525                     [AC_MSG_ERROR([d3d11va is present but libavcodec/d3d11va.h is missing])],
2526                         [AC_MSG_WARN([d3d11va is present but libavcodec/d3d11va.h is missing ])])
2527                   ], [#undef _WIN32_WINNT
2528                       /* D3D11 is only available in Vista and above */
2529                       #define _WIN32_WINNT 0x600])
2530                   ],[
2531                     AS_IF([test "${enable_d3d11va}" = "yes"],
2532                           [AC_MSG_ERROR([Could not find required dxva2api.h])],
2533                           [AC_MSG_WARN([dxva2api.h not found])])
2534                   ],[#include <d3d9.h>])
2535           ],[
2536             AS_IF([test "${enable_d3d11va}" = "yes"],
2537                   [AC_MSG_ERROR([Could not find required ID3D11VideoDecoder in d3d11.h])],
2538                   [AC_MSG_WARN([ID3D11VideoDecoder not found])])
2539           ], [#include <d3d11.h>])
2540   ],[
2541     AS_IF([test "x${enable_d3d11va}" != "x"], [
2542       AC_MSG_ERROR([--enable-d3d11va and --disable-avcodec options are mutually exclusive.])
2543     ])
2544   ])
2545   fi
2547 AM_CONDITIONAL([HAVE_AVCODEC_D3D11VA], [test "${have_avcodec_d3d11va}" = "yes"])
2550 dnl DXGI debug
2552 AC_CHECK_HEADERS([dxgidebug.h dxgi1_6.h])
2555 dnl  avformat demuxer/muxer plugin
2558 AC_ARG_ENABLE([avformat],
2559 AS_HELP_STRING([--enable-avformat], [libavformat containers (default enabled)]),, [
2560   enable_avformat="${have_avcodec}"
2562 have_avformat="no"
2563 AS_IF([test "${enable_avformat}" != "no"], [
2564   PKG_CHECK_MODULES(AVFORMAT,[libavformat >= 53.21.0 libavcodec libavutil], [
2565       have_avformat="yes"
2566       VLC_SAVE_FLAGS
2567       CPPFLAGS="${CPPFLAGS} ${AVFORMAT_CFLAGS}"
2568       CFLAGS="${CFLAGS} ${AVFORMAT_CFLAGS}"
2569       AC_CHECK_HEADERS([libavformat/avformat.h libavformat/avio.h])
2570       AC_CHECK_HEADERS([libavcodec/avcodec.h])
2571       AC_CHECK_HEADERS([libavutil/avutil.h])
2572       AS_IF([test "$enable_merge_ffmpeg" = "no"], [
2573         have_avformat="no"
2574       ])
2575       VLC_RESTORE_FLAGS
2576     ],[
2577       AC_MSG_ERROR([${AVFORMAT_PKG_ERRORS}. Pass --disable-avformat to ignore this error.])
2578   ])
2580 AM_CONDITIONAL([HAVE_AVFORMAT], [test "${enable_avformat}" != "no"])
2583 dnl  swscale image scaling and conversion plugin
2586 AC_ARG_ENABLE([swscale],
2587   AS_HELP_STRING([--enable-swscale],[libswscale image scaling and conversion
2588           (default enabled)]))
2589 if test "${enable_swscale}" != "no"
2590 then
2591   PKG_CHECK_MODULES(SWSCALE,[libswscale],
2592     [
2593       VLC_SAVE_FLAGS
2594       CPPFLAGS="${CPPFLAGS} ${SWSCALE_CFLAGS}"
2595       CFLAGS="${CFLAGS} ${SWSCALE_CFLAGS}"
2596       AC_CHECK_HEADERS([libswscale/swscale.h])
2597       AC_CHECK_HEADERS([libavutil/avutil.h])
2598       VLC_ADD_PLUGIN([swscale])
2599       VLC_ADD_LIBS([swscale],[$SWSCALE_LIBS])
2600       VLC_ADD_CFLAGS([swscale],[$SWSCALE_CFLAGS])
2601       AS_IF([test -n "${ac_cv_ld_bsymbolic}"], [
2602         VLC_ADD_LIBS([swscale],[${ac_cv_ld_bsymbolic}])
2603       ])
2604       VLC_RESTORE_FLAGS
2605     ],[
2606       AC_MSG_ERROR([${SWSCALE_PKG_ERRORS}. Pass --disable-swscale to ignore this error. Proper software scaling and some video chroma conversion will be missing.])
2607   ])
2611 dnl  postproc plugin
2614 AC_ARG_ENABLE([postproc],
2615 AS_HELP_STRING([--enable-postproc], [libpostproc image post-processing (default auto)]))
2616 if test "${enable_postproc}" != "no"
2617 then
2618   PKG_CHECK_MODULES(POSTPROC,[libpostproc libavutil],
2619     [
2620       VLC_SAVE_FLAGS
2621       CPPFLAGS="${CPPFLAGS} ${POSTPROC_CFLAGS}"
2622       CFLAGS="${CFLAGS} ${POSTPROC_CFLAGS}"
2623       AC_CHECK_HEADERS([postproc/postprocess.h])
2624       VLC_ADD_PLUGIN([postproc])
2625       VLC_RESTORE_FLAGS
2626     ],[
2627       AC_MSG_WARN([${POSTPROC_PKG_ERRORS}.])
2628   ])
2632 dnl  faad decoder plugin
2634 AC_ARG_ENABLE([faad],
2635 AS_HELP_STRING([--enable-faad], [faad codec (default auto)]))
2636 have_faad="no"
2637 AS_IF([test "${enable_faad}" != "no"], [
2638   AC_CHECK_HEADERS([neaacdec.h], [
2639     AC_CHECK_LIB([faad], [NeAACDecOpen], [have_faad="yes"],, [$LIBM])
2641     AS_IF([test "${have_faad}" = "yes"], [
2642       VLC_ADD_PLUGIN([faad])
2643       VLC_ADD_LIBS([faad],[-lfaad])
2644     ], [
2645       AS_IF([test "${enable_faad}" = "yes"], [
2646         AC_MSG_ERROR([cannot find FAAD library])
2647       ], [
2648         AC_MSG_WARN([cannot find FAAD library])
2649       ])
2650     ])
2651   ])
2655 dnl  AOM decoder plugin
2657 PKG_ENABLE_MODULES_VLC([AOM], [], [aom], [experimental AV1 codec (default auto)])
2660 dnl  Dav1d decoder plugin
2662 PKG_ENABLE_MODULES_VLC([DAV1D], [], [dav1d], [AV1 decoder (default auto)])
2665 dnl libvpx decoder plugin
2667 AC_ARG_ENABLE([vpx],
2668     AS_HELP_STRING([--enable-vpx],[libvpx VP8/VP9 encoder and decoder (default auto)]))
2669 AS_IF([test "${enable_vpx}" != "no"],[
2670     PKG_CHECK_MODULES([VPX], [vpx >= 1.5.0], [
2671         VLC_ADD_PLUGIN([vpx])
2672         VLC_ADD_CPPFLAGS([vpx], [${VPX_CFLAGS}])
2673         VLC_ADD_LIBS([vpx], [${VPX_LIBS}])
2674         AC_CHECK_LIB([vpx],[vpx_codec_vp8_dx], [
2675             VLC_ADD_CPPFLAGS([vpx], [-DENABLE_VP8_DECODER])
2676         ], [], [${VPX_LIBS}])
2677         AC_CHECK_LIB([vpx],[vpx_codec_vp9_dx], [
2678             VLC_ADD_CPPFLAGS([vpx], [-DENABLE_VP9_DECODER])
2679         ], [], [${VPX_LIBS}])
2680         AC_CHECK_LIB([vpx],[vpx_codec_vp8_cx], [
2681             VLC_ADD_CPPFLAGS([vpx], [-DENABLE_VP8_ENCODER])
2682         ], [], [${VPX_LIBS}])
2683         AC_CHECK_LIB([vpx],[vpx_codec_vp9_cx], [
2684             VLC_ADD_CPPFLAGS([vpx], [-DENABLE_VP9_ENCODER])
2685         ], [], [${VPX_LIBS}])
2686     ], [
2687     AS_IF([test "${enable_vpx}" = "yes"],[
2688         AC_MSG_ERROR([libvpx 1.5.0 or higher was not found])
2689     ])])
2693 dnl twolame encoder plugin
2695 PKG_ENABLE_MODULES_VLC([TWOLAME], [], [twolame], [MPEG Audio Layer 2 encoder], [auto], [], [], [ -DLIBTWOLAME_STATIC])
2698 dnl fdk-aac encoder plugin
2700 PKG_ENABLE_MODULES_VLC([FDKAAC], [], [fdk-aac], [FDK-AAC encoder], [disabled])
2704 dnl A52/AC3 decoder plugin
2706 AC_ARG_ENABLE([a52],
2707   AS_HELP_STRING([--enable-a52], [A/52 support with liba52 (default enabled)]))
2708 if test "${enable_a52}" != "no"
2709 then
2710   AC_ARG_WITH([a52],
2711     AS_HELP_STRING([--with-a52=PATH], [a52 headers and libraries]))
2712     if test -z "${with_a52}"
2713     then
2714       LDFLAGS_test=""
2715       CPPFLAGS_test=""
2716     else
2717       LDFLAGS_test="-L${with_a52}/lib"
2718       CPPFLAGS_test="-I${with_a52}/include"
2719     fi
2720     VLC_SAVE_FLAGS
2721     CPPFLAGS="${CPPFLAGS} ${CPPFLAGS_test} ${CPPFLAGS_a52}"
2722     LDFLAGS="${LDFLAGS} ${LDFLAGS_test} ${LIBS_a52}"
2723     AC_CHECK_HEADERS([a52dec/a52.h], [
2724       AC_CHECK_LIB([a52], [a52_free], [
2725         VLC_ADD_PLUGIN([a52])
2726         VLC_ADD_LIBS([a52],[${LDFLAGS_test} -la52 $LIBM])
2727         VLC_ADD_CPPFLAGS([a52],[${CPPFLAGS_test}])
2728       ],[
2729         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.])
2730         ], [$LIBM])
2731     ],[
2732       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.])
2733     ])
2734     VLC_RESTORE_FLAGS
2738 dnl DTS Coherent Acoustics decoder plugin
2740 PKG_ENABLE_MODULES_VLC([DCA], [dca], [libdca >= 0.0.5], [DTS Coherent Acoustics support with libdca], [auto])
2743 dnl  Flac plugin
2745 PKG_ENABLE_MODULES_VLC([FLAC], [], [flac], [libflac decoder/encoder support], [auto])
2748 dnl  Libmpeg2 plugin
2750 PKG_ENABLE_MODULES_VLC([LIBMPEG2], [], [libmpeg2 > 0.3.2], [libmpeg2 decoder support], [auto])
2753 dnl  Vorbis plugin
2755 PKG_ENABLE_MODULES_VLC([VORBIS], [], [ogg vorbis >= 1.1 vorbisenc >= 1.1], [Vorbis decoder and encoder], [auto])
2758 dnl  Tremor plugin
2760 AC_ARG_ENABLE([tremor],
2761   AS_HELP_STRING([--enable-tremor], [Tremor decoder support (default disabled)]))
2762 if test "${enable_tremor}" = "yes"
2763 then
2764   AC_CHECK_HEADERS([tremor/ivorbiscodec.h], [
2765     VLC_ADD_PLUGIN([tremor])
2766    ],[])
2770 dnl  Speex plugins
2772 PKG_ENABLE_MODULES_VLC([SPEEX], [], [ogg speex >= 1.0.5], [Speex support], [auto])
2773 have_speexdsp="no"
2774 AS_IF([test "${enable_speex}" != "no"], [
2775   PKG_CHECK_MODULES([SPEEXDSP], [speexdsp], [
2776     have_speexdsp="yes"
2777   ], [
2778     AC_MSG_WARN([${SPEEXDSP_PKG_ERRORS}.])
2779   ])
2781 AM_CONDITIONAL([HAVE_SPEEXDSP], [test "$have_speexdsp" = "yes"])
2784 dnl  Opus plugin
2786 PKG_ENABLE_MODULES_VLC([OPUS], [], [ogg opus >= 1.0.3], [Opus support], [auto])
2789 dnl  Ambisonic channel mixer and binauralizer plugin
2791 PKG_ENABLE_MODULES_VLC([SPATIALAUDIO], [], [spatialaudio], [Ambisonic channel mixer and binauralizer], [auto])
2794 dnl  theora decoder plugin
2796 PKG_ENABLE_MODULES_VLC([THEORA], [], [ogg theoradec >= 1.0 theoraenc], [experimental theora codec], [auto])
2799 dnl  OggSpots decoder plugin
2801 PKG_ENABLE_MODULES_VLC([OGGSPOTS], [], [ogg], [experimental OggSpots codec], [auto])
2804 dnl  Daala decoder plugin
2806 PKG_ENABLE_MODULES_VLC([DAALA], [], [daaladec daalaenc], [experimental daala codec], [disabled])
2809 dnl  schroedinger decoder plugin (for dirac format video)
2811 PKG_ENABLE_MODULES_VLC([SCHROEDINGER], [], [schroedinger-1.0 >= 1.0.10], [dirac decoder and encoder using schroedinger], [auto])
2814 dnl  PNG decoder module
2816 AC_ARG_ENABLE([png],
2817   AS_HELP_STRING([--enable-png], [PNG support (default enabled)]))
2818 AS_IF([test "${enable_png}" != "no"], [
2819 AC_CHECK_HEADERS([png.h], [
2820   VLC_SAVE_FLAGS
2821   LDFLAGS="${LDFLAGS} -lz $LIBM"
2822   AC_CHECK_LIB([png], [png_set_alpha_mode], [
2823     VLC_ADD_PLUGIN([png])
2824   ], [], [-lz $LIBM])
2825   VLC_RESTORE_FLAGS
2826   ])
2830 dnl  JPEG decoder module
2832 AC_ARG_ENABLE([jpeg],
2833   AS_HELP_STRING([--enable-jpeg], [JPEG support (default enabled)]))
2834 AS_IF([test "${enable_jpeg}" != "no"], [
2835 AC_CHECK_HEADERS([jpeglib.h], [
2836   VLC_ADD_PLUGIN([jpeg])
2837   ])
2841 dnl  BPG decoder module
2843 AC_ARG_ENABLE([bpg],
2844   AS_HELP_STRING([--enable-bpg], [BPG support (default disabled)]))
2845 AS_IF([test "${enable_bpg}" != "no"], [
2846 AC_CHECK_HEADERS([libbpg.h], [
2847   VLC_ADD_PLUGIN([bpg])
2848   ])
2852 dnl H262 encoder plugin (lib262)
2854 AC_ARG_ENABLE([x262],
2855   AS_HELP_STRING([--enable-x262], [H262 encoding support with static libx262 (default disabled)]))
2856 if test "${enable_x262}" != "no"; then
2857     PKG_CHECK_MODULES(X262, x262, [
2858         VLC_ADD_PLUGIN([x262])
2859         VLC_ADD_LDFLAGS([x262],[${X262_LIBS}])
2860         AS_IF([test -n "${ac_cv_ld_bsymbolic}"], [
2861           VLC_ADD_LIBS([x262],[${av_cv_ld_bsymbolic}])
2862         ])
2863         VLC_ADD_CFLAGS([x262],[${X262_CFLAGS}])
2864         if echo ${X262_LIBS} |grep -q 'pthreadGC2'; then
2865           VLC_ADD_CFLAGS([x262], [-DPTW32_STATIC_LIB])
2866         fi
2867     ], [
2868        if test "${enable_x262}" = "yes"; then
2869         AC_MSG_ERROR([x262 module doesn't work without staticly compiled libx262.a])
2870        fi
2871     ])
2874 dnl x265 encoder
2875 PKG_ENABLE_MODULES_VLC([X265],, [x265], [HEVC/H.265 encoder], [auto])
2878 dnl H264 encoder plugin (using libx264)
2880 AC_ARG_ENABLE([x264],
2881   AS_HELP_STRING([--enable-x264], [H264 encoding support with libx264 (default enabled)]))
2882 if test "${enable_x264}" != "no"; then
2883       PKG_CHECK_MODULES(X264,x264 >= 0.148, [
2884         VLC_ADD_PLUGIN([x264])
2885         VLC_ADD_LIBS([x264],[${X264_LIBS}])
2887         AS_IF([test -n "${ac_cv_ld_bsymbolic}"], [
2888           VLC_ADD_LDFLAGS([x264],[${ac_cv_ld_bsymbolic}])
2889         ])
2891         VLC_ADD_CFLAGS([x264],[${X264_CFLAGS}])
2892         if echo ${X264_LIBS} |grep -q 'pthreadGC2'; then
2893           VLC_ADD_CFLAGS([x264], [-DPTW32_STATIC_LIB])
2894         fi
2895       ],[
2896         if test "${enable_x264}" = "yes"; then
2897             AC_MSG_ERROR([${X264_PKG_ERRORS}: you may get it from http://www.videolan.org/x264.html])
2898           fi
2899       ])
2903 dnl H264 encoder plugin (libx264 > 153)
2905 AC_ARG_ENABLE([x26410b],
2906   AS_HELP_STRING([--enable-x26410b], [H264 10-bit encoding support with libx264 (default enabled)]))
2907 if test "${enable_x26410b}" != "no"; then
2908       PKG_CHECK_MODULES(X26410b,x264 >= 0.153, [
2909         VLC_ADD_PLUGIN([x26410b])
2910         VLC_ADD_LIBS([x26410b],[${X264_LIBS}])
2912         AS_IF([test -n "${ac_cv_ld_bsymbolic}"], [
2913           VLC_ADD_LDFLAGS([x26410b],[${ac_cv_ld_bsymbolic}])
2914         ])
2916         VLC_ADD_CFLAGS([x26410b],[${X264_CFLAGS}])
2917         if echo ${X264_LIBS} |grep -q 'pthreadGC2'; then
2918           VLC_ADD_CFLAGS([x26410b], [-DPTW32_STATIC_LIB])
2919         fi
2920       ],[
2921         if test "${enable_x26410b}" = "yes"; then
2922             AC_MSG_ERROR([${X264_PKG_ERRORS}: you may get it from http://www.videolan.org/x264.html])
2923           fi
2924       ])
2929 dnl Intel QuickSync (aka MediaSDK) H264/H262 encoder
2931 PKG_ENABLE_MODULES_VLC([MFX], [qsv], [libmfx], [Intel QuickSync MPEG4-Part10/MPEG2 (aka H.264/H.262) encoder], [auto])
2934 dnl libfluidsynth (MIDI synthetizer) plugin
2936 PKG_ENABLE_MODULES_VLC([FLUIDSYNTH], [], [fluidsynth >= 1.1.2], [MIDI synthetiser with libfluidsynth], [auto])
2937 PKG_ENABLE_MODULES_VLC([FLUIDLITE], [fluidsynth], [fluidlite], [MIDI synthetiser with libfluidsynth], [auto])
2938 AC_CHECK_HEADERS([fluidlite.h], [AC_SUBST([FLUIDSYNTH_LIBS], ${FLUIDLITE_LIBS})])
2941 dnl Teletext Modules
2942 dnl vbi decoder plugin (using libzbvi)
2943 dnl telx module
2944 dnl uncompatible
2946 AC_ARG_ENABLE([zvbi],
2947   AS_HELP_STRING([--enable-zvbi],[VBI (inc. Teletext) decoding support with
2948                   libzvbi (default enabled)]))
2949 AC_ARG_ENABLE([telx],
2950   AS_HELP_STRING([--enable-telx],[Teletext decoding module (conflicting with
2951                   zvbi) (default enabled if zvbi is absent)]))
2953 AS_IF( [test "${enable_zvbi}" != "no"],[
2954     PKG_CHECK_MODULES(ZVBI, [zvbi-0.2 >= 0.2.28],
2955         [
2956           VLC_ADD_PLUGIN([zvbi])
2957           AC_DEFINE(ZVBI_COMPILED, 1, [Define if the zvbi module is built])
2958           AS_IF( [test "${enable_telx}" = "yes"],[
2959                   AC_MSG_WARN([The zvbi and telx modules are incompatible. Using zvbi.])
2960                   ])
2961         ],[
2962           AC_MSG_WARN([${ZVBI_PKG_ERRORS}. Enabling the telx module instead.])
2963         ])
2964     ])
2965 AS_IF( [test "${enable_telx}" != "no" ],[
2966   VLC_ADD_PLUGIN([telx])
2967   ])
2970 dnl ARIB subtitles rendering module
2972 AC_ARG_ENABLE([aribsub],
2973   AS_HELP_STRING([--enable-aribsub],[ARIB Subtitles support (default enabled)]))
2974 AS_IF( [test "${enable_aribsub}" != "no" ],[
2975   PKG_CHECK_MODULES(ARIBB24, [aribb24 >= 1.0.1], [
2976       have_aribb24="yes"
2977       VLC_ADD_PLUGIN([aribsub])
2978       VLC_ADD_LIBS([aribsub],[-laribb24])
2979       AC_DEFINE(HAVE_ARIBB24, 1, [Define if libaribb24 is available.])
2980     ],[
2981       AC_MSG_WARN(Library [aribb24] needed for [aribsub] was not found)
2982       have_aribb24="no"
2983   ])
2985 AM_CONDITIONAL([HAVE_ARIBB24], [test x"${have_aribb24}" = x"yes"])
2988 dnl ARIB B25
2990 PKG_ENABLE_MODULES_VLC([ARIBB25], [aribcam], [aribb25 >= 0.2.6], [ARIB STD-B25], [auto])
2993 dnl  kate decoder plugin
2995 PKG_ENABLE_MODULES_VLC([KATE], [], [kate >= 0.3.0], [kate codec], [auto])
2998 dnl  tiger rendering for kate decoder plugin
3000 AC_ARG_ENABLE([tiger],
3001 AS_HELP_STRING([--enable-tiger], [Tiger rendering library for Kate streams (default auto)]))
3002 AS_IF([test "${enable_tiger}" != "no"], [
3003   PKG_CHECK_MODULES(TIGER,[tiger >= 0.3.1], [
3004       AC_DEFINE(HAVE_TIGER, 1, [Define if libtiger is available.])],[
3005         AS_IF([test -n "${enable_tiger}"], [
3006           AC_MSG_ERROR([${TIGER_PKG_ERRORS}.])
3007         ])
3008   ])
3012 dnl  check if we can build the css selector engine
3014 AC_ARG_ENABLE([css],
3015 AS_HELP_STRING([--enable-css], [CSS selector engine (default auto)]))
3016 AS_IF([test "${enable_css}" != "no"], [
3017   with_css="yes"
3018   AC_DEFINE(HAVE_CSS, 1, [Define if CSS engine is built])
3020 AM_CONDITIONAL([ENABLE_CSS], [test "${with_css}" = "yes"])
3024 dnl  Video plugins
3027 EXTEND_HELP_STRING([Video plugins:])
3030 dnl  libplacebo support
3032 AC_ARG_ENABLE([libplacebo],
3033   AS_HELP_STRING([--disable-libplacebo],
3034       [disable libplacebo support (default auto)]))
3036 AS_IF([test "$enable_libplacebo" != "no"], [
3037   PKG_CHECK_MODULES([LIBPLACEBO], [libplacebo >= 0.5], [
3038     AC_DEFINE([HAVE_LIBPLACEBO], [1], [Define to 1 if libplacebo is enabled.])
3039     PKG_CHECK_MODULES([LIBPLACEBO], [libplacebo >= 1.7],
3040       [have_libplacebo_vk="yes"], [have_libplacebo_vk="no"])
3041   ], [
3042     AS_IF([test -n "${enable_libplacebo}"], [
3043       AC_MSG_ERROR([${LIBPLACEBO_PKG_ERRORS}.])
3044     ])
3045     enable_libplacebo="no"
3046   ])
3048 AM_CONDITIONAL([HAVE_LIBPLACEBO], [test "$enable_libplacebo" != "no"])
3051 dnl  OpenGL
3053 PKG_CHECK_MODULES([EGL], [egl], [
3054   have_egl="yes"
3055 ], [
3056   have_egl="no"
3058 AM_CONDITIONAL([HAVE_EGL], [test "${have_egl}" = "yes"])
3060 have_gl="no"
3061 PKG_CHECK_MODULES([GL], [gl], [
3062   have_gl="yes"
3063 ], [
3064   AC_MSG_CHECKING([for OpenGL])
3065   AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
3066 #ifdef _WIN32
3067 # include <GL/glew.h>
3068 #endif
3069 #include <GL/gl.h>
3070 ]], [
3071     [int t0 = GL_TEXTURE0;]])
3072   ], [
3073     GL_CFLAGS=""
3074     have_gl="yes"
3075     AS_IF([test "${SYS}" != "mingw32"], [
3076       GL_LIBS="-lGL"
3077     ], [
3078       GL_LIBS="-lopengl32"
3079     ])
3080   ])
3081   AC_MSG_RESULT([${have_gl}])
3083 AM_CONDITIONAL([HAVE_GL], [test "${have_gl}" = "yes"])
3084 AS_IF([test "${have_gl}" = "yes"], [
3085   AC_DEFINE([HAVE_GL], 1, [Defined if having OpenGL])
3088 dnl OpenGL ES 2: depends on EGL 1.1
3089 PKG_ENABLE_MODULES_VLC([GLES2], [], [glesv2], [OpenGL ES v2 support], [disabled])
3092 dnl Vulkan
3094 AC_ARG_ENABLE(vulkan,
3095   [AS_HELP_STRING([--disable-vulkan],
3096       [disable Vulkan support (default auto)])])
3098 AS_IF([test "$enable_vulkan" != "no"], [
3099   AS_IF([test "$have_libplacebo_vk" = "yes"], [
3100     PKG_CHECK_MODULES([VULKAN], [vulkan >= 1.0.26], [
3101       AC_DEFINE([HAVE_VULKAN], [1], [Define to 1 if vulkan is enabled.])
3102     ], [
3103       AS_IF([test -n "${enable_vulkan}"], [
3104         AC_MSG_ERROR([${VULKAN_PKG_ERRORS}.])
3105       ])
3106       enable_vulkan="no"
3107     ])
3108   ], [
3109     AS_IF([test -n "${enable_vulkan}"], [
3110       AC_MSG_ERROR([Vulkan support requires libplacebo 1.7 as well. Do not use --disable-libplacebo.])
3111     ])
3112     enable_vulkan="no"
3113   ])
3115 AM_CONDITIONAL(HAVE_VULKAN, [test "$enable_vulkan" != "no"])
3118 dnl  Xlib
3121 AC_PATH_XTRA()
3122 AC_CHECK_HEADERS([X11/Xlib.h])
3125 dnl  X C Bindings modules
3127 AC_ARG_ENABLE([xcb],
3128   AS_HELP_STRING([--enable-xcb], [X11 support with XCB (default enabled)]),, [
3129   AS_IF([test "${SYS}" != "mingw32" -a "${SYS}" != "darwin"], [
3130     enable_xcb="yes"
3131   ], [
3132     enable_xcb="no"
3133   ])
3136 have_xcb="no"
3137 have_xkbcommon_x11="no"
3138 have_xcb_keysyms="no"
3139 AS_IF([test "${enable_xcb}" != "no"], [
3140   xcb_err=""
3142   dnl libxcb
3143   PKG_CHECK_MODULES([XCB], [xcb >= 1.6],, [
3144     xcb_err="$xcb_err ${XCB_PKG_ERRORS}."])
3145   PKG_CHECK_MODULES([XCB_COMPOSITE], [xcb-composite],, [
3146     xcb_err="$xcb_err ${XCB_COMPOSITE_PKG_ERRORS}."])
3147   PKG_CHECK_MODULES([XCB_RANDR], [xcb-randr >= 1.3],, [
3148     xcb_err="$xcb_err ${XCB_RANDR_PKG_ERRORS}."])
3149   PKG_CHECK_MODULES([XCB_RENDER], [xcb-render],, [
3150     xcb_err="$xcb_err ${XCB_RENDER_PKG_ERRORS}."])
3151   PKG_CHECK_MODULES([XCB_SHM], [xcb-shm >= 1.9.2],, [
3152     xcb_err="$xcb_err ${XCB_SHM_PKG_ERRORS}."])
3153   PKG_CHECK_MODULES([XCB_XKB], [xcb-xkb],, [
3154     xcb_err="$xcb_err ${XCB_XKB_PKG_ERRORS}."])
3155   PKG_CHECK_MODULES([XCB_XV], [xcb-xv >= 1.1.90.1],, [
3156     xcb_err="$xcb_err ${XCB_XV_PKG_ERRORS}."])
3158   dnl xproto
3159   PKG_CHECK_MODULES(XPROTO, [xproto],, [
3160     xcb_err="$xcb_err ${XPROTO_PKG_ERRORS}."])
3162   AS_IF([test -n "$xcb_err"], [
3163     AC_MSG_ERROR([$xcb_err Pass --disable-xcb to skip X11 support.])
3164   ])
3166   dnl xkbcommon
3167   PKG_CHECK_MODULES([XKBCOMMON_X11], [xkbcommon-x11], [
3168     have_xkbcommon_x11="yes"
3169   ], [
3170     AC_MSG_WARN([${XKBCOMMON_X11_PKG_ERRORS}. Hotkeys are disabled.])
3171   ])
3173   dnl xcb-utils
3174   PKG_CHECK_MODULES([XCB_KEYSYMS], [xcb-keysyms >= 0.3.4], [
3175     have_xcb_keysyms="yes"
3176   ], [
3177     AC_MSG_WARN([${XCB_KEYSYMS_PKG_ERRORS}. Global hotkeys are disabled.])
3178   ])
3180   have_xcb="yes"
3182 AM_CONDITIONAL([HAVE_XCB], [test "${have_xcb}" = "yes"])
3183 AM_CONDITIONAL([HAVE_XKBCOMMON_X11], [test "${have_xkbcommon_x11}" = "yes"])
3184 AM_CONDITIONAL([HAVE_XCB_KEYSYMS], [test "${have_xcb_keysyms}" = "yes"])
3188 dnl VDPAU needs X11
3190 AC_ARG_ENABLE([vdpau],
3191   [AS_HELP_STRING([--enable-vdpau], [VDPAU hardware support (default auto)])])
3192 have_vdpau="no"
3193 AS_IF([test "${enable_vdpau}" != "no"], [
3194   PKG_CHECK_MODULES([VDPAU], [vdpau >= 0.6], [
3195     have_vdpau="yes"
3196     AS_IF([test "${no_x}" = "yes"], [
3197       AC_MSG_ERROR([VDPAU requires Xlib (X11).])
3198     ])
3199   ], [
3200     AS_IF([test -n "${enable_vdpau}"], [
3201       AC_MSG_ERROR([${VDPAU_PKG_ERRORS}.])
3202     ])
3203   ])
3205 AM_CONDITIONAL([HAVE_VDPAU], [test "${have_vdpau}" = "yes"])
3207 have_avcodec_vdpau="no"
3208 AS_IF([test "${have_vdpau}" = "yes" -a "${have_avcodec}" = "yes"], [
3209   case "${avfork}" in
3210     libav) av_vdpau_ver="56.10.0" ;;
3211     ffmpeg) av_vdpau_ver="56.19.100" ;;
3212   esac
3213   PKG_CHECK_EXISTS([libavcodec >= ${av_vdpau_ver}], [
3214     have_avcodec_vdpau="yes"
3215     AC_MSG_NOTICE([VDPAU decoding acceleration activated])
3216   ], [
3217     AS_IF([test -n "${enable_vdpau}"], [
3218       AC_MSG_ERROR([libavcodec >= 56.10.0 is required for VDPAU decoding.])
3219     ], [
3220       AC_MSG_WARN([libavcodec >= 56.10.0 are required for VDPAU decoding.])
3221     ])
3222   ])
3224 AM_CONDITIONAL([HAVE_AVCODEC_VDPAU], [test "${have_avcodec_vdpau}" = "yes"])
3228 dnl  Wayland
3230 AC_ARG_ENABLE([wayland],
3231   AS_HELP_STRING([--enable-wayland], [Wayland support (default auto)]))
3233 have_wayland="no"
3234 AS_IF([test "${enable_wayland}" != "no"], [
3235   wl_err=""
3237   dnl wayland
3238   PKG_CHECK_MODULES([WAYLAND_CLIENT], [wayland-client >= 1.5.91],, [
3239     wl_err="$wl_err ${WAYLAND_CLIENT_PKG_ERRORS}."
3240   ])
3241   PKG_CHECK_MODULES([WAYLAND_CURSOR], [wayland-cursor],, [
3242     wl_err="$wl_err ${WAYLAND_CURSOR_PKG_ERRORS}."
3243   ])
3244   PKG_CHECK_MODULES([WAYLAND_EGL], [wayland-egl],, [
3245     wl_err="$wl_err ${WAYLAND_EGL_PKG_ERRORS}."
3246   ])
3247   PKG_CHECK_MODULES([WAYLAND_SCANNER], [wayland-scanner >= 1.15], [
3248     WAYLAND_SCANNER="$(${PKG_CONFIG} wayland-scanner --variable wayland_scanner)"
3249   ], [
3250     wl_err="$wl_err ${WAYLAND_SCANNER_PKG_ERRORS}."
3251   ])
3253   dnl wayland-protocols
3254   PKG_CHECK_MODULES([WAYLAND_PROTOCOLS], [wayland-protocols >= 1.15], [
3255     WAYLAND_PROTOCOLS="$(${PKG_CONFIG} wayland-protocols --variable pkgdatadir)"
3256   ], [
3257     wl_err="$wl_err ${WAYLAND_PROTOCOLS_PKG_ERRORS}."
3258   ])
3260   AS_IF([test -n "$wl_err"], [
3261     AS_IF([test -n "$enable_wayland"], [
3262       AC_MSG_ERROR([$wl_err])
3263     ], [
3264       AC_MSG_WARN([$wl_err])
3265     ])
3266   ], [
3267     have_wayland="yes"
3268   ])
3270   dnl xkbcommon
3271   PKG_CHECK_MODULES([XKBCOMMON], [xkbcommon], [
3272     have_xkbcommon="yes"
3273   ], [
3274     AC_MSG_WARN([${XKBCOMMON_PKG_ERRORS}. Hotkeys are disabled.])
3275   ])
3277 AM_CONDITIONAL([HAVE_WAYLAND], [test "${have_wayland}" = "yes"])
3278 AC_SUBST([WAYLAND_PROTOCOLS])
3279 AC_SUBST([WAYLAND_SCANNER])
3280 AM_CONDITIONAL([HAVE_XKBCOMMON], [test "${have_xkbcommon}" = "yes"])
3284 dnl  SDL image decoder module
3286 AC_ARG_ENABLE([sdl-image],
3287   AS_HELP_STRING([--enable-sdl-image], [SDL image support (default enabled)]))
3288 AS_IF([test "${enable_sdl_image}" != "no"],[
3289   PKG_CHECK_MODULES(SDL_IMAGE, [SDL_image >= 1.2.10], [
3290     VLC_ADD_PLUGIN([sdl_image])
3291   ], [
3292     AC_MSG_WARN([${SDL_IMAGE_PKG_ERRORS}. You should install it alongside your SDL package.])
3293   ])
3297 dnl  freetype module
3299 AC_ARG_ENABLE([freetype],
3300   AS_HELP_STRING([--enable-freetype],   [freetype support   (default auto)]))
3301 AC_ARG_ENABLE([fribidi],
3302   AS_HELP_STRING([--enable-fribidi],    [fribidi support    (default auto)]))
3303 AC_ARG_ENABLE([harfbuzz],
3304   AS_HELP_STRING([--enable-harfbuzz],   [harfbuzz support   (default auto)]))
3305 AC_ARG_ENABLE([fontconfig],
3306   AS_HELP_STRING([--enable-fontconfig], [fontconfig support (default auto)]))
3308 AC_ARG_WITH([default-font],
3309     AS_HELP_STRING([--with-default-font=PATH],
3310         [Path to the default font]),
3311         [AC_DEFINE_UNQUOTED([DEFAULT_FONT_FILE],
3312             "$withval", [Default font])])
3313 AC_ARG_WITH([default-monospace-font],
3314     AS_HELP_STRING([--with-default-monospace-font=PATH],
3315         [Path to the default font]),
3316         [AC_DEFINE_UNQUOTED([DEFAULT_MONOSPACE_FONT_FILE],
3317             "$withval", [Default monospace font])])
3319 AC_ARG_WITH([default-font-family],
3320     AS_HELP_STRING([--with-default-font-family=NAME],
3321         [Name of the default font family]),
3322         [AC_DEFINE_UNQUOTED([DEFAULT_FAMILY],
3323             "$withval", [Default font family])])
3324 AC_ARG_WITH([default-monospace-font-family],
3325     AS_HELP_STRING([--with-default-monospace-font-family=NAME],
3326         [Name of the default font family]),
3327         [AC_DEFINE_UNQUOTED([DEFAULT_MONOSPACE_FAMILY],
3328             "$withval", [Default monospace font family])])
3330 have_freetype="no"
3331 have_fontconfig="no"
3332 have_fribidi="no"
3333 have_harfbuzz="no"
3335 if test "${enable_freetype}" != "no"; then
3336    PKG_CHECK_MODULES(FREETYPE, freetype2, [
3337       have_freetype="yes"
3338       VLC_ADD_CPPFLAGS([skins2],[${FREETYPE_CFLAGS}])
3339       VLC_ADD_LIBS([skins2],[${FREETYPE_LIBS}])
3341     dnl fontconfig support
3342     AS_IF([test "${enable_fontconfig}" != "no" -a "${SYS}" != "mingw32" -a "${SYS}" != "darwin"], [
3343       PKG_CHECK_MODULES(FONTCONFIG, [fontconfig >= 2.11], [
3344         have_fontconfig="yes"
3345       ], [
3346         AC_MSG_WARN([${FONTCONFIG_PKG_ERRORS}. Styles will be disabled in FreeType.])
3347       ])
3348     ])
3350       dnl fribidi support
3351       if test "${enable_fribidi}" != "no"; then
3352         PKG_CHECK_MODULES(FRIBIDI, fribidi, [
3353           have_fribidi="yes"
3354           VLC_ADD_CPPFLAGS([skins2], [${FRIBIDI_CFLAGS} -DHAVE_FRIBIDI])
3355           VLC_ADD_LIBS([skins2], [${FRIBIDI_LIBS}])
3356         ],[AC_MSG_WARN([${FRIBIDI_PKG_ERRORS}. Bidirectional text and complex scripts (Arabic, Farsi, Thai...) will be disabled in FreeType.])])
3357       fi
3359       dnl harfbuzz support
3360       if test "${have_fribidi}" != "no"; then
3361         if test "${enable_harfbuzz}" != "no"; then
3362           PKG_CHECK_MODULES(HARFBUZZ, harfbuzz, [
3363             have_harfbuzz="yes"
3364             VLC_ADD_CPPFLAGS([skins2], [${HARFBUZZ_CFLAGS} -DHAVE_HARFBUZZ])
3365             VLC_ADD_LIBS([skins2], [${HARFBUZZ_LIBS}])
3366           ],[AC_MSG_WARN([${HARFBUZZ_PKG_ERRORS}. Support for complex scripts (Arabic, Farsi, Thai...) will be disabled in FreeType.])])
3367         fi
3368       fi
3369   ],[
3370   AS_IF([test -n "${enable_freetype}"],[
3371     AC_MSG_ERROR([${FREETYPE_PKG_ERRORS}. Install FreeType2 development or configure with --disable-freetype.])
3372     ])
3373   ])
3376 AM_CONDITIONAL([HAVE_FREETYPE], [test "${have_freetype}" = "yes"])
3377 AM_CONDITIONAL([HAVE_FONTCONFIG], [test "${have_fontconfig}" = "yes"])
3378 AM_CONDITIONAL([HAVE_FRIBIDI], [test "${have_fribidi}" = "yes"])
3379 AM_CONDITIONAL([HAVE_HARFBUZZ], [test "${have_harfbuzz}" = "yes"])
3382 dnl libass subtitle rendering module
3384 AC_ARG_ENABLE([libass],
3385   AS_HELP_STRING([--enable-libass], [Subtitle support using libass (default enabled)]))
3386 AS_IF( [test "${enable_libass}" != "no"], [
3387   PKG_CHECK_MODULES(LIBASS, [libass >= 0.9.8],
3388       [
3389         VLC_ADD_PLUGIN([libass])
3391         if test "${have_fontconfig}" != "no"; then
3392             VLC_ADD_CPPFLAGS([libass],[-DHAVE_FONTCONFIG])
3393             VLC_ADD_LIBS([libass],[${FONTCONFIG_LIBS}])
3394         fi
3395       ],[
3396         AC_MSG_WARN([${LIBASS_PKG_ERRORS}.])
3397       ])
3398   ])
3401 dnl SAPI (text to Speech renderer for Windows)
3403 AC_LANG_PUSH([C++])
3404 AC_CHECK_TYPES([ISpObjectToken],[
3405               have_sapi="yes"
3406             ],[AC_MSG_WARN([sapi.h not found. Text to Speech renderer for Windows disabled])],
3407               [#include <windows.h>
3408                #include <sapi.h>
3409                #include <sphelper.h>])
3410 AM_CONDITIONAL([HAVE_SAPI], [test "${have_sapi}" = "yes"])
3411 AC_LANG_POP([C++])
3414 dnl  SVG module (text rendering and image decoding)
3416 PKG_ENABLE_MODULES_VLC([SVG], [], [librsvg-2.0 >= 2.9.0], [SVG rendering library],[auto])
3417 PKG_ENABLE_MODULES_VLC([SVGDEC], [], [librsvg-2.0 >= 2.9.0 cairo >= 1.13.1], [SVG image decoder library],[auto])
3420 dnl  Windows DirectX module
3423 AC_ARG_ENABLE([directx],
3424   AS_HELP_STRING([--enable-directx],
3425     [Microsoft DirectX support (default enabled on Windows)]),, [
3426   AS_IF([test "${SYS}" = "mingw32"], [
3427     enable_directx="yes"
3428   ], [
3429     enable_directx="no"
3430   ])
3432 AS_IF([test "${enable_directx}" != "no"], [
3433   dnl DirectDraw
3434   AC_CHECK_HEADERS([ddraw.h], [
3435     VLC_ADD_PLUGIN([directdraw])
3436   ])
3438   dnl OpenGL
3439   AC_CHECK_HEADERS([GL/glew.h], [
3440     AC_CHECK_HEADERS([GL/wglew.h], [
3441         VLC_ADD_PLUGIN([glwin32 wgl])
3442       ],, [
3443         #include <windows.h>
3444         #include <GL/glew.h>
3445       ])],, [
3446       #include <windows.h>
3447    ])
3449   dnl Direct3D11
3450   AC_CHECK_HEADERS([d3d11.h], [
3451     VLC_ADD_PLUGIN([direct3d11 direct3d11_filters])
3452   ])
3454   dnl Direct3D9
3455   AC_CHECK_HEADERS([d3d9.h], [
3456     VLC_ADD_PLUGIN([direct3d9])
3457     AC_CHECK_HEADERS([d3dx9effect.h])
3459     AC_PREPROC_IFELSE([AC_LANG_PROGRAM(
3460         [[#define COBJMACROS
3461           #include <d3d9.h>
3462           #include <dxva2api.h>
3463           #ifndef IDirectXVideoProcessorService_GetVideoProcessorDeviceGuids
3464           # error dxva2 too old
3465           #endif
3466         ]],[[;]])
3467       ],[
3468         VLC_ADD_PLUGIN([direct3d9_filters])
3469       ],
3470       [AC_MSG_WARN([Could not find required IDirectXVideoDecoder in dxva2api.h])])
3472   ])
3476 dnl  Linux framebuffer module
3478 AC_CHECK_HEADER([linux/fb.h], [
3479   VLC_ADD_PLUGIN([fb])
3483 dnl  Linux kernel mode setting module
3485 PKG_ENABLE_MODULES_VLC([KMS], [], [libdrm >= 2.4.83], [Linux kernel mode setting output], [auto])
3488 dnl  libcaca plugin
3490 PKG_ENABLE_MODULES_VLC([CACA], [], [caca >= 0.99.beta14], [libcaca output],[auto])
3493 dnl  OS/2 KVA plugin
3495 AC_ARG_ENABLE([kva],
3496   AS_HELP_STRING([--enable-kva],
3497     [support the K Video Accelerator KVA (default enabled on OS/2)]),, [
3498   AS_IF([test "$SYS" = "os2"], [
3499     enable_kva="yes"
3500   ])
3502 have_kva="no"
3503 KVA_LIBS=""
3504 AS_IF([test "$enable_kva" != "no"], [
3505   AC_CHECK_HEADERS([kva.h], [
3506     have_kva="yes"
3507     AC_CHECK_LIB([kva], [main], [
3508       KVA_LIBS="-lkva"
3509     ])
3510   ])
3512 AC_SUBST([KVA_LIBS])
3513 AM_CONDITIONAL([HAVE_KVA], [test "${have_kva}" = "yes"])
3516 dnl MMAL plugin
3518 AC_ARG_ENABLE([mmal],
3519   AS_HELP_STRING([--enable-mmal],
3520     [Multi-Media Abstraction Layer (MMAL) hardware plugin (default enable)]))
3521 if test "${enable_mmal}" != "no"; then
3522   VLC_SAVE_FLAGS
3523   LDFLAGS="${LDFLAGS} -L/opt/vc/lib -lvchostif"
3524   CPPFLAGS="${CPPFLAGS} -isystem /opt/vc/include -isystem /opt/vc/include/interface/vcos/pthreads -isystem /opt/vc/include/interface/vmcs_host/linux"
3525   AC_CHECK_HEADERS([interface/mmal/mmal.h],
3526     [ AC_CHECK_LIB([bcm_host], [vc_tv_unregister_callback_full], [
3527         have_mmal="yes"
3528         VLC_ADD_PLUGIN([mmal])
3529         VLC_ADD_LDFLAGS([mmal],[ -L/opt/vc/lib ])
3530         VLC_ADD_CFLAGS([mmal],[ -isystem /opt/vc/include -isystem /opt/vc/include/interface/vcos/pthreads -isystem /opt/vc/include/interface/vmcs_host/linux ])
3531         VLC_ADD_LIBS([mmal],[ -lbcm_host -lmmal -lmmal_core -lmmal_components -lmmal_util -lvchostif ]) ], [
3532           AS_IF([test "${enable_mmal}" = "yes"],
3533             [ AC_MSG_ERROR([Cannot find bcm library...]) ],
3534             [ AC_MSG_WARN([Cannot find bcm library...]) ])
3535           ],
3536         [])
3537     ] , [ AS_IF([test "${enable_mmal}" = "yes"],
3538       [ AC_MSG_ERROR([Cannot find development headers for mmal...]) ],
3539       [ AC_MSG_WARN([Cannot find development headers for mmal...]) ]) ])
3540   VLC_RESTORE_FLAGS
3542 AM_CONDITIONAL([HAVE_MMAL], [test "${have_mmal}" = "yes"])
3545 dnl  Audio plugins
3548 EXTEND_HELP_STRING([Audio plugins:])
3551 dnl  Pulseaudio module
3553 AC_ARG_ENABLE([pulse],
3554   AS_HELP_STRING([--enable-pulse],
3555     [use the PulseAudio client library (default auto)]))
3556 have_pulse="no"
3557 AS_IF([test "${enable_pulse}" != "no"], [
3558   PKG_CHECK_MODULES([PULSE], [libpulse >= 1.0], [
3559     have_pulse="yes"
3560   ], [
3561     AS_IF([test "x${enable_pulse}" != "x"], [
3562       AC_MSG_ERROR([$PULSE_PKG_ERRORS. PulseAudio 1.0 or later required.])
3563     ])
3564   ])
3566 AM_CONDITIONAL([HAVE_PULSE], [test "${have_pulse}" = "yes"])
3569 dnl  ALSA module
3571 AC_ARG_ENABLE([alsa],
3572   AS_HELP_STRING([--enable-alsa],
3573     [support the Advanced Linux Sound Architecture (default auto)]),, [
3574   AS_IF([test "$SYS" = "linux" -a "${have_pulse}" = "no"], [
3575     enable_alsa="yes"
3576   ])
3578 have_alsa="no"
3579 AS_IF([test "${enable_alsa}" != "no"], [
3580   PKG_CHECK_MODULES([ALSA], [alsa >= 1.0.24], [
3581     have_alsa="yes"
3582   ], [
3583     AS_IF([test "x${enable_alsa}" != "x"], [
3584       AC_MSG_ERROR([$ALSA_PKG_ERRORS. alsa-lib 1.0.24 or later required. Pass --disable-alsa to ignore this error.])
3585     ])
3586   ])
3588 AM_CONDITIONAL([HAVE_ALSA], [test "${have_alsa}" = "yes"])
3591 dnl  Open Sound System module
3593 AC_ARG_ENABLE([oss],
3594   AS_HELP_STRING([--enable-oss],
3595     [support the Open Sound System OSS (default enabled on FreeBSD/NetBSD/DragonFlyBSD)]),, [
3596   AS_IF([test "$SYS" = "mingw32" -o "$SYS" = "linux" -o "$SYS" = "openbsd"], [
3597     enable_oss="no"
3598   ])
3600 have_oss="no"
3601 OSS_LIBS=""
3602 AS_IF([test "$enable_oss" != "no"], [
3603   AC_CHECK_HEADERS([soundcard.h sys/soundcard.h], [
3604     have_oss="yes"
3605     AC_CHECK_LIB([ossaudio], [main], [
3606       OSS_LIBS="-lossaudio"
3607     ])
3608   ])
3610 AC_SUBST([OSS_LIBS])
3611 AM_CONDITIONAL([HAVE_OSS], [test "${have_oss}" = "yes"])
3614 dnl  OpenBSD sndio module
3616 AC_ARG_ENABLE([sndio],
3617   AS_HELP_STRING([--disable-sndio],
3618     [support the OpenBSD sndio (default auto)]),, [
3619   AS_IF([test "$SYS" = "openbsd"], [
3620     enable_sndio="yes"
3621   ])
3623 have_sndio="no"
3624 AS_IF([test "$enable_sndio" != "no"], [
3625   AC_CHECK_HEADER([sndio.h], [
3626     have_sndio="yes"
3627   ])
3629 AM_CONDITIONAL([HAVE_SNDIO], [test "${have_sndio}" = "yes"])
3632 dnl  Windows Audio Session plugin
3634 AC_ARG_ENABLE([wasapi],
3635   AS_HELP_STRING([--enable-wasapi],
3636     [use the Windows Audio Session API (default auto)])
3638 have_wasapi="no"
3639 AS_IF([test "$enable_wasapi" != "no"], [
3640   AC_CHECK_HEADER([audioclient.h], [
3641     have_wasapi="yes"
3642   ], [
3643     AS_IF([test "x${enable_wasapi}" != "x"], [
3644       AC_MSG_ERROR([Windows Audio Session API not found.])
3645     ])
3646   ])
3648 AM_CONDITIONAL([HAVE_WASAPI], [test "${have_wasapi}" = "yes"])
3651 dnl  JACK modules
3653 AC_ARG_ENABLE([jack],
3654   AS_HELP_STRING([--disable-jack],
3655     [do not use jack (default auto)]))
3656 have_jack="no"
3657 AS_IF([test "${enable_jack}" != "no"], [
3658     PKG_CHECK_MODULES(JACK, jack >= 1.9.7,
3659       [ have_jack=yes ],
3660       [
3661       AC_MSG_WARN([${JACK_PKG_ERRORS}, trying jack1 instead])
3663       PKG_CHECK_MODULES(JACK, jack >= 0.120.1 jack < 1.0,
3664       [ have_jack=yes ],
3665       [
3666       AS_IF([test -n "${enable_jack}"],
3667          [AC_MSG_ERROR([${JACK_PKG_ERRORS}.])],
3668          [AC_MSG_WARN([${JACK_PKG_ERRORS}.])])
3669       ])
3670     ])
3672 AM_CONDITIONAL([HAVE_JACK], [test "${have_jack}" != "no"])
3675 dnl  OpenSLES Android
3677 AC_ARG_ENABLE([opensles],
3678   AS_HELP_STRING([--enable-opensles], [Android OpenSL ES audio module (default disabled)]))
3679 if test "${HAVE_ANDROID}" = "1"; then
3680   if test "${enable_opensles}" = "yes"; then
3681       AC_CHECK_HEADERS([SLES/OpenSLES.h],
3682         [ VLC_ADD_PLUGIN([opensles_android]) ],
3683         [ AC_MSG_ERROR([cannot find OpenSLES headers])] )
3684   fi
3688 dnl  Tizen audio
3690 AC_ARG_ENABLE([tizen_audio],
3691   AS_HELP_STRING([--enable-tizen-audio],
3692     [Tizen audio module (default enabled on Tizen)]),, [
3693   AS_IF([test "$HAVE_TIZEN" = "1"], [
3694     enable_tizen_audio="yes"
3695   ])
3697 if test "${enable_tizen_audio}" = "yes"; then
3698   AC_CHECK_HEADERS([audio_io.h],
3699     [ VLC_ADD_PLUGIN([tizen_audio]) ],
3700     [ AC_MSG_ERROR([cannot find Tizen audio_io headers])] )
3704 dnl libsamplerate plugin
3706 PKG_ENABLE_MODULES_VLC([SAMPLERATE], [], [samplerate], [Resampler with libsamplerate], [auto])
3709 dnl  soxr module
3711 PKG_ENABLE_MODULES_VLC([SOXR], [], [soxr >= 0.1.2], [SoX Resampler library], [auto])
3714 dnl  OS/2 KAI plugin
3716 AC_ARG_ENABLE([kai],
3717   AS_HELP_STRING([--enable-kai],
3718     [support the K Audio Interface KAI (default enabled on OS/2)]),, [
3719   AS_IF([test "$SYS" = "os2"], [
3720     enable_kai="yes"
3721   ])
3723 have_kai="no"
3724 KAI_LIBS=""
3725 AS_IF([test "$enable_kai" != "no"], [
3726   AC_CHECK_HEADERS([kai.h], [
3727     have_kai="yes"
3728     AC_CHECK_LIB([kai], [main], [
3729       KAI_LIBS="-lkai"
3730     ])
3731   ])
3733 AC_SUBST([KAI_LIBS])
3734 AM_CONDITIONAL([HAVE_KAI], [test "${have_kai}" = "yes"])
3737 dnl  chromaprint audio track fingerprinter
3739 m4_pushdef([libchromaprint_version], 0.6.0)
3740 PKG_WITH_MODULES([CHROMAPRINT],[libchromaprint >= libchromaprint_version],
3741     VLC_ADD_PLUGIN([stream_out_chromaprint]),
3742     AS_IF([test "${enable_chromaprint}" = "yes"],
3743         [AC_MSG_ERROR(Library [libchromaprint >= libchromaprint_version] needed for [chromaprint] was not found)],
3744         [AC_MSG_WARN(Library [libchromaprint >= libchromaprint_version] needed for [chromaprint] was not found)]
3745          ),
3746     [(Chromaprint based audio fingerprinter)],[auto])
3747 m4_popdef([libchromaprint_version])
3750 dnl  Chromecast streaming support
3752 m4_pushdef([protobuf_lite_version], 2.5.0)
3753 AC_ARG_VAR(PROTOC, [protobuf compiler])
3754 AC_CHECK_PROGS(PROTOC, protoc, no)
3755 PKG_WITH_MODULES([CHROMECAST],[protobuf-lite >= protobuf_lite_version], [
3756     AS_IF([test "x${PROTOC}" != "xno"], [
3757         build_chromecast="yes"
3758     ], [
3759     AC_MSG_ERROR(protoc compiler needed for [chromecast] was not found)
3760     ])
3761 ], [
3762     AS_IF([test "${enable_chromecast}" = "yes"],
3763         AC_MSG_ERROR(Library [protobuf-lite >= protobuf_lite_version] needed for [chromecast] was not found),
3764         AC_MSG_WARN(Library [protobuf-lite >= protobuf_lite_version] needed for [chromecast] was not found)
3765     )
3766     enable_chromecast="no"
3767 ], [(Chromecast streaming support)], [auto])
3768 AM_CONDITIONAL([BUILD_CHROMECAST], [test "${build_chromecast}" = "yes"])
3769 m4_popdef([protobuf_lite_version])
3772 dnl  Interface plugins
3775 EXTEND_HELP_STRING([Interface plugins:])
3778 dnl QT
3780 AC_ARG_ENABLE([qt],
3781   AS_HELP_STRING([--disable-qt], [Qt UI support (default enabled)]),, [
3782   AS_IF([test "${enable_vlc}" != "no"], [enable_qt="yes"])
3783   AS_IF([test "${SYS}" = "darwin"], [
3784     enable_qt="no"
3785   ])
3787 have_qt5_x11="no"
3788 AS_IF([test "${enable_qt}" != "no"], [
3789   PKG_CHECK_MODULES([QT], [Qt5Core >= 5.9.0 Qt5Widgets Qt5Gui Qt5Svg], [
3790       PKG_CHECK_MODULES([QT5_X11], [Qt5X11Extras], [
3791           have_qt5_x11="yes"
3792       ],[
3793           AC_MSG_WARN([Not building Qt Interface with X11 helpers.])
3794       ])
3795       QT_PATH="$(eval $PKG_CONFIG --variable=exec_prefix Qt5Core)"
3796       QT_HOST_PATH="$(eval $PKG_CONFIG --variable=host_bins Qt5Core)"
3797       QT_VERSION="$(eval $PKG_CONFIG --modversion Qt5Gui)"
3798       AC_PATH_PROGS(MOC, [moc-qt5 moc], moc, ["${QT_HOST_PATH}" "${QT_PATH}/bin"])
3799       AC_PATH_PROGS(RCC, [rcc-qt5 rcc], rcc, ["${QT_HOST_PATH}" "${QT_PATH}/bin"])
3800       AC_PATH_PROGS(UIC, [uic-qt5 uic], uic, ["${QT_HOST_PATH}" "${QT_PATH}/bin"])
3801     ], [
3802       AS_IF([test -n "${enable_qt}"],[
3803         AC_MSG_ERROR([${QT_PKG_ERRORS}. If you want to build VLC without GUI, pass --disable-qt.])
3804       ],[
3805         AC_MSG_WARN([${QT_PKG_ERRORS}.])
3806       ])
3807       enable_qt="no"
3808     ])
3811 AS_IF([test "${enable_qt}" != "no"], [
3812   ALIASES="${ALIASES} qvlc"
3814 AC_SUBST([QT_VERSION])
3815 AM_CONDITIONAL([ENABLE_QT], [test "$enable_qt" != "no"])
3816 AM_CONDITIONAL([HAVE_QT5_X11], [test "${have_qt5_x11}" = "yes"])
3819 dnl detect kde4-config patch (used for kde solids).
3821 AC_ARG_VAR([KDE4_CONFIG], [kde4-config utility])
3822 AS_IF([test "x$KDE4_CONFIG" = "x"], [
3823   KDE4_CONFIG="kde4-config"
3827 dnl Simple test for skins2 dependency
3829 AS_IF([test "$enable_qt" = "no"], [
3830   AS_IF([test "${enable_skins2}" = "yes"], [
3831     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.])
3832   ], [
3833     enable_skins2="no"
3834     AC_MSG_WARN([The skins2 module depends on the Qt interface, Qt is not built so skins2 is disabled.])
3835   ])
3839 dnl Skins2 module
3841 AC_ARG_ENABLE([skins2],
3842   AS_HELP_STRING([--enable-skins2], [skins interface module (default auto)]))
3843 AS_IF([test "${enable_skins2}" != "no"], [
3844   have_skins_deps="yes"
3846   dnl Win32
3847   AS_IF([test "${SYS}" = "mingw32"], [
3848     VLC_ADD_CPPFLAGS([skins2],[-U_OFF_T_ -U_off_t -DWIN32_SKINS])
3849     VLC_ADD_LIBS([skins2],[-lgdi32 -lole32 -luuid -lmsimg32])
3850   dnl OS/2
3851   ], [test "${SYS}" = "os2"], [
3852     VLC_ADD_CPPFLAGS([skins2],[ -DOS2_SKINS])
3853   dnl Linux/Unix
3854   ], [
3855     PKG_CHECK_MODULES([XPM], [xpm],, [have_skins_deps="no"])
3856     PKG_CHECK_MODULES([XINERAMA], [xinerama],, [have_skins_deps="no"])
3857     PKG_CHECK_MODULES([XCURSOR], [xcursor],, [have_skins_deps="no"])
3858     PKG_CHECK_MODULES([XEXT], [xext],, [have_skins_deps="no"])
3859     VLC_ADD_CPPFLAGS([skins2],[${X_CFLAGS} ${XEXT_CFLAGS} ${XPM_CFLAGS} -DX11_SKINS])
3860     VLC_ADD_LIBS([skins2],[${X_LIBS} ${X_PRE_LIBS} ${XEXT_LIBS} ${XPM_LIBS} ${XINERAMA_LIBS} ${XCURSOR_LIBS} -lX11])
3861   ])
3863   dnl we need freetype
3864   AS_IF([test "${have_freetype}" != "yes"], [
3865     have_skins_deps="no"
3866   ])
3868   AS_IF([test "${have_skins_deps}" = "no"], [
3869     AS_IF([test "x${enable_skins2}" = "x"], [
3870       AC_MSG_WARN([Skins2 interface disabled due to missing dependencies.])
3871     ], [
3872       AC_MSG_ERROR([Skins2 interface requires FreeType, libxcursor, libxpm, libxext and libxinerama])
3873     ])
3874     enable_skins2="no"
3875   ], [
3876     ALIASES="${ALIASES} svlc"
3877     enable_skins2="yes"
3878   ])
3880 AM_CONDITIONAL([BUILD_SKINS], [test "${enable_skins2}" = "yes"])
3882 AC_ARG_ENABLE([libtar],
3883   AS_HELP_STRING([--enable-libtar], [libtar support for skins2 (default auto)]))
3884 AS_IF([test "${enable_skins2}" = "yes" && test "${enable_libtar}" != "no"], [
3885   AC_CHECK_HEADERS([libtar.h], [
3886     VLC_ADD_LIBS([skins2],[-ltar])
3887   ])
3891 dnl  MacOS X gui module
3893 AC_ARG_ENABLE([macosx],
3894   AS_HELP_STRING([--enable-macosx], [Mac OS X gui support (default enabled on Mac OS X)]))
3895 if test "x${enable_macosx}" != "xno" -a "${SYS}" = "darwin"
3896 then
3898   dnl
3899   dnl If possible, use xcrun to find the right ibtool
3900   dnl
3902   AC_PATH_PROG([XCRUN], [xcrun], [no])
3903   AS_IF([test ! "x${XCRUN}" = "xno"], [
3904     AC_MSG_CHECKING([for ibtool (using xcrun)])
3905     XIB="$(eval $XCRUN -f ibtool 2>/dev/null || echo no)"
3906     AC_MSG_RESULT([${XIB}])
3907   ], [
3908     AC_MSG_WARN([Looking for tools without using xcrun])
3909   ])
3911   AS_IF([test "x${XIB}" = "xno"], [
3912     AC_PATH_PROG(XIB, [ibtool], [no])
3913     AS_IF([test "x${XIB}" = "xno"], [
3914       AC_MSG_ERROR([ibtool was not found, but is required for --enable-macosx])
3915     ])
3916   ])
3918 AM_CONDITIONAL([ENABLE_MACOSX_UI], [test "$enable_macosx" != "no" -a "${SYS}" = "darwin"])
3921 dnl  MacOS X sparkle update support
3923 AC_ARG_ENABLE([sparkle],
3924   AS_HELP_STRING([--enable-sparkle], [Sparkle update support for OS X (default enabled on Mac OS X)]))
3925 if test "x${enable_sparkle}" != "xno" -a "${HAVE_OSX}" = "1"
3926 then
3927   if test ! -d ${CONTRIB_DIR}/Sparkle.framework -a ! -d ${CONTRIB_DIR}/Frameworks/Sparkle.framework
3928   then
3929     AC_MSG_ERROR([Sparkle framework is required and was not found in ${CONTRIB_DIR}])
3930   fi
3932   AC_DEFINE([HAVE_SPARKLE], [1], [Define to 1 if sparkle is enabled.])
3934 AM_CONDITIONAL([HAVE_SPARKLE], [test "$enable_sparkle" != "no"])
3937 dnl  MacOS X breakpad creash reporter support
3939 AC_ARG_WITH([breakpad],
3940   AS_HELP_STRING([--with-breakpad=URL], [Enable Breakpad reporter using given URL]), [], [with_breakpad=no])
3942 AS_IF([test "$with_breakpad" != "no"], [
3944   AS_IF([test "$with_breakpad" = "yes"], [
3945     AC_MSG_ERROR([You need to supply the CrashDragon Server URL as value for --with-breakpad])
3946   ])
3948   AS_IF([test "$HAVE_OSX" = "1"], [
3949     AC_MSG_CHECKING([for Breakpad framework])
3950     AS_IF([test ! -d ${CONTRIB_DIR}/Breakpad.framework -a \
3951                 ! -d ${CONTRIB_DIR}/Frameworks/Breakpad.framework], [
3952       AC_MSG_RESULT([no])
3953       with_breakpad="no"
3954       AC_MSG_ERROR([Breakpad framework is required and was not found in ${CONTRIB_DIR}])
3955     ], [
3956       AC_MSG_RESULT([yes])
3957     ])
3958   ],[
3959     PKG_CHECK_MODULES([BREAKPAD], [breakpad-client], [
3960       LDFLAGS="${LDFLAGS} -Wl,--build-id"
3961     ], [
3962       AC_MSG_ERROR(["breakpad not found"])
3963     ])
3964   ])
3967 AM_CONDITIONAL([HAVE_BREAKPAD], [test "$with_breakpad" != "no"])
3968 AS_IF([test "$with_breakpad" != "no"], [
3969   AC_SUBST([BREAKPAD_URL], ["${with_breakpad}"])
3973 dnl  Minimal Mac OS X module
3975 AC_ARG_ENABLE([minimal-macosx],
3976   AS_HELP_STRING([--enable-minimal-macosx], [Minimal Mac OS X support (default disabled)]))
3977 if test "${enable_minimal_macosx}" = "yes" -a "${SYS}" = "darwin"
3978 then
3979   VLC_ADD_PLUGIN([minimal_macosx])
3983 dnl Mac OS X fancy dmg build tool
3985 if test "${HAVE_OSX}" = "1"
3986 then
3987   AC_PATH_PROG(DMGBUILD, dmgbuild, no)
3988   AS_IF([test "x${DMGBUILD}" = "xno"], [
3989     AC_MSG_WARN([dmgbuild not found -- unable to build fancy DMGs])
3990   ])
3992 AM_CONDITIONAL([HAVE_DMGBUILD], [test "x$DMGBUILD" != "xno" -a "${HAVE_OSX}" = "1"])
3995 dnl  VideoToolbox plugins
3996 AC_CHECK_HEADERS([VideoToolbox/VideoToolbox.h], [
3997     VLC_ADD_PLUGIN([videotoolbox])
3998     VLC_ADD_PLUGIN([cvpx])
3999   ])
4002 dnl  AudioToolbox MIDI plugin
4003 AC_CHECK_HEADERS([AudioToolbox/AudioToolbox.h], [
4004   VLC_ADD_PLUGIN([audiotoolboxmidi])
4008 dnl  ncurses module
4010 AC_ARG_ENABLE([ncurses],
4011 AS_HELP_STRING([--disable-ncurses],[ncurses text-based interface (default auto)]))
4012 have_ncurses="no"
4013 AS_IF([test "${enable_ncurses}" != "no"] ,[
4014   PKG_CHECK_MODULES([NCURSES], [ncursesw], [
4015     have_ncurses="yes"
4016     ALIASES="${ALIASES} nvlc"
4017   ], [
4018     AS_IF([test -n "${enable_ncurses}"], [
4019       AC_MSG_ERROR([${NCURSES_PKG_ERRORS}.])
4020     ])
4021   ])
4023 AM_CONDITIONAL([HAVE_NCURSES], [test "${have_ncurses}" = "yes"])
4026 dnl  Lirc plugin
4028 AC_ARG_ENABLE([lirc],
4029   AS_HELP_STRING([--enable-lirc], [lirc support (default disabled)]))
4030 have_lirc="no"
4031 AS_IF([test "${enable_lirc}" = "yes"], [
4032   AC_CHECK_HEADER(lirc/lirc_client.h, [
4033     AC_CHECK_LIB([lirc_client], [lirc_init], [
4034       have_lirc="yes"
4035     ])
4036   ])
4038 AM_CONDITIONAL([HAVE_LIRC], [test "${have_lirc}" = "yes"])
4041 dnl  Bitstream
4043 PKG_CHECK_MODULES([BITSTREAM], [bitstream > 1.4],[have_bitstream="yes"], [have_bitstream="no"])
4044 AM_CONDITIONAL([HAVE_BITSTREAM], [test "${have_bitstream}" = "yes"])
4047 dnl  SRT plugin
4049 PKG_ENABLE_MODULES_VLC([SRT], [access_srt access_output_srt], [srt >= 1.2.2], [SRT input/output plugin], [auto], [], [], [-DENABLE_SRT])
4051 EXTEND_HELP_STRING([Visualisations and Video filter plugins:])
4053 dnl  goom visualization plugin
4055 PKG_ENABLE_MODULES_VLC([GOOM], [], [libgoom2], [goom visualization plugin], [auto])
4058 dnl libprojectM visualization plugin
4060 AC_ARG_ENABLE([projectm],
4061   AS_HELP_STRING([--enable-projectm], [projectM visualization plugin (default enabled)]))
4062 AS_IF([test "${enable_projectm}" != "no"],
4063   [
4064     PKG_CHECK_MODULES(PROJECTM, libprojectM,
4065     [
4066       VLC_ADD_PLUGIN([projectm])
4067       PKG_CHECK_EXISTS([libprojectM >= 2.0.0],
4068         [ AC_DEFINE([HAVE_PROJECTM2], 1, [Define to 1 if using libprojectM 2.x]) ],
4069         [ AC_MSG_WARN( [Using libprojectM version 1] )
4070       ])
4071     ],[
4072       AC_MSG_WARN([${PROJECTM_PKG_ERRORS}.])
4073     ])
4074   ])
4077 dnl Vovoid VSXu visualization plugin
4079 AC_ARG_ENABLE([vsxu],
4080   AS_HELP_STRING([--enable-vsxu], [Vovoid VSXu visualization plugin (default auto)]))
4081 AS_IF([test "${enable_vsxu}" != "no"],
4082   [
4083     PKG_CHECK_MODULES(VSXU, libvsxu,
4084     [
4085       VLC_ADD_PLUGIN([vsxu])
4086     ],[
4087       AC_MSG_WARN([${VSXU_PKG_ERRORS}.])
4088     ])
4089   ])
4091 EXTEND_HELP_STRING([Service Discovery plugins:])
4093 dnl  Avahi-Zeroconf services discovery
4094 PKG_ENABLE_MODULES_VLC([AVAHI], [], [avahi-client >= 0.6], [Zeroconf services discovery], [auto])
4097 dnl  libudev services discovery
4098 PKG_ENABLE_MODULES_VLC([UDEV], [], [libudev >= 142], [Linux udev services discovery], [auto])
4101 dnl MTP devices services discovery
4102 PKG_ENABLE_MODULES_VLC([MTP], [mtp access_mtp], [libmtp >= 1.0.0], [MTP devices support], [auto])
4105 dnl UPnP Plugin (Intel SDK)
4107 PKG_ENABLE_MODULES_VLC([UPNP], [upnp], [libupnp], [Intel UPNP SDK],[auto])
4110 dnl mDNS using libmicrodns
4112 PKG_ENABLE_MODULES_VLC([MICRODNS], [], [microdns], [mDNS services discovery], [auto])
4115 EXTEND_HELP_STRING([Misc options:])
4118 dnl  libxml2 module
4120 PKG_ENABLE_MODULES_VLC([LIBXML2], [xml], [libxml-2.0 >= 2.5], [libxml2 support],[auto])
4124 dnl libgcrypt
4126 AC_ARG_ENABLE([libgcrypt],
4127   AS_HELP_STRING([--disable-libgcrypt], [gcrypt support (default enabled)]))
4128 AC_ARG_VAR([GCRYPT_CFLAGS], [C compiler flags for gcrypt])
4129 AC_ARG_VAR([GCRYPT_LIBS], [linker flags flags for gcrypt])
4131 # require libgcrypt >= 1.6.0
4132 AS_IF([test "${enable_libgcrypt}" != "no"], [
4133   AC_CACHE_CHECK([for gcrypt 1.6.0 or later], [ac_cv_lib_gcrypt], [
4134     VLC_SAVE_FLAGS
4135     CFLAGS="${CFLAGS} ${GCRYPT_CFLAGS}"
4136     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([
4137 [#include <gcrypt.h>
4138 #if GCRYPT_VERSION_NUMBER < 0x010600
4139 #error
4140 #endif]])], [
4141       ac_cv_lib_gcrypt=yes
4142     ], [
4143       ac_cv_lib_gcrypt=no
4144     ])
4145     VLC_RESTORE_FLAGS
4146   ])
4148   AS_IF([test "${ac_cv_lib_gcrypt}" = "yes"], [
4149     AC_DEFINE([HAVE_GCRYPT], 1, [Defined if having gcrypt])
4150   ], [
4151     AS_IF([test "${enable_libgcrypt}" = "yes"], [
4152       AC_MSG_ERROR([libgcrypt version 1.6.0 or higher not found. Install libgcrypt or pass --disable-libgcrypt.])
4153     ])
4154   ])
4157 AS_IF([test -z "$GCRYPT_LIBS"], [
4158   GCRYPT_LIBS="-lgcrypt -lgpg-error"
4161 AC_SUBST([GCRYPT_CFLAGS])
4162 AC_SUBST([GCRYPT_LIBS])
4163 AM_CONDITIONAL([HAVE_GCRYPT], [test "${ac_cv_lib_gcrypt}" = "yes"])
4166 dnl TLS/SSL
4168 AC_ARG_ENABLE([gnutls],
4169   AS_HELP_STRING([--enable-gnutls], [GNU TLS TLS/SSL support (default enabled)]))
4170 AS_IF([test "${enable_gnutls}" != "no"], [
4171   PKG_CHECK_MODULES(GNUTLS, [gnutls >= 3.3.6], [
4172     VLC_ADD_PLUGIN([gnutls])
4173   ], [
4174     AS_IF([test -n "${enable_gnutls}"], [
4175       AC_MSG_ERROR([${GNUTLS_PKG_ERRORS}.)])
4176     ])
4177   ])
4182 dnl Taglib plugin
4184 AC_ARG_ENABLE([taglib],
4185   AS_HELP_STRING([--disable-taglib],
4186     [do not use TagLib (default enabled)]))
4187 AS_IF([test "${enable_taglib}" != "no"], [
4188   PKG_CHECK_MODULES(TAGLIB, taglib >= 1.9, [
4189     VLC_ADD_PLUGIN([taglib])
4190   ], [
4191     AC_MSG_WARN([${TAGLIB_PKG_ERRORS}.])])
4195 dnl  libsecret
4197 PKG_ENABLE_MODULES_VLC([SECRET], [], [libsecret-1 >= 0.18], [use libsecret for keystore], [auto])
4200 dnl  kwallet
4202 AC_ARG_ENABLE([kwallet],
4203   AS_HELP_STRING([--enable-kwallet],
4204     [use kwallet (via D-Bus) for keystore (default enabled)]))
4205 AS_IF([test "${enable_kwallet}" != "no" -a "${have_dbus}" = "yes"], [
4206   VLC_ADD_PLUGIN([kwallet])
4210 dnl update checking system
4212 AC_ARG_ENABLE([update-check],
4213   AS_HELP_STRING([--enable-update-check], [update checking system (default disabled)]))
4214 if test "${enable_update_check}" = "yes"
4215 then
4216  AS_IF([test "${ac_cv_lib_gcrypt}" != "yes"],[
4217     AC_MSG_ERROR([libgcrypt is required for update checking system]) ])
4219 AM_CONDITIONAL([UPDATE_CHECK], [test "${enable_update_check}" = "yes"])
4222 dnl OS X notification plugin
4224 AC_ARG_ENABLE([osx_notifications],
4225   AS_HELP_STRING([--enable-osx-notifications],
4226     [macOS notification plugin (default disabled)]),,
4227   [enable_osx_notifications=no])
4228 AS_IF([test "${enable_osx_notifications}" != "no"], [
4229   VLC_ADD_PLUGIN([osx_notifications])
4233 dnl Libnotify notification plugin
4235 PKG_ENABLE_MODULES_VLC([NOTIFY], [], [libnotify gtk+-3.0], [libnotify notification], [auto])
4237 PKG_ENABLE_MODULES_VLC([MEDIALIBRARY], [medialibrary], [medialibrary], (medialibrary support), [auto])
4240 dnl  Endianness check
4242 AC_C_BIGENDIAN
4243 AS_IF([test "${ac_cv_c_bigendian}" = "yes"], [
4244   DEFS_BIGENDIAN="-DWORDS_BIGENDIAN=1"
4245 ], [
4246   DEFS_BIGENDIAN=""
4248 AC_SUBST([DEFS_BIGENDIAN])
4251 dnl Where to install KDE solid .desktop
4253 AC_ARG_WITH(kde-solid,
4254   AS_HELP_STRING([--with-kde-solid=PATH],
4255                  [KDE Solid actions directory (auto)]),, [
4257 if test "${SYS}" != "mingw32" -a "${SYS}" != "darwin" ; then
4258   with_kde_solid="yes"
4261 soliddatadir=""
4262 AS_IF([test "${with_kde_solid}" != "no"], [
4263   AS_IF([test "${with_kde_solid}" = "yes"], [
4264     kde4datadir="`${KDE4_CONFIG} --install data`"
4265     AS_IF([test "x$kde4datadir" = "x"], [kde4datadir='${datadir}/kde4/apps'])
4266     soliddatadir="${kde4datadir}/solid/actions"
4267   ], [
4268     soliddatadir="${with_kde_solid}"
4269   ])
4271 AC_SUBST([soliddatadir])
4272 AM_CONDITIONAL([KDE_SOLID], [test "x${soliddatadir}" != "x"])
4275 dnl  Find tools for win32 packaging
4277 AS_IF([test "${SYS}" = "mingw32"], [
4278     dnl
4279     dnl Find makensis required to build the NSIS installer
4280     dnl
4281     nsis_major_required="3"
4282     nsis_version_ok="no"
4283     AC_PATH_PROG([MAKENSIS], [makensis], [no])
4284     AS_IF([test "$MAKENSIS" != "no"], [
4285         # Check version
4286         AC_MSG_CHECKING([makensis version])
4287         nsis_version=$($MAKENSIS -VERSION)
4288         AC_MSG_RESULT([$nsis_version])
4289         nsis_version_major=$(echo "$nsis_version" | awk -F \. '{print $1}' | sed 's/v//')
4290         # Check if major version is a valid number
4291         AS_IF([test -n "$nsis_version_major" && \
4292                test "$nsis_version_major" -eq "$nsis_version_major" 2> /dev/null], [
4293             # Do the version check using major version
4294             AS_IF([test "$nsis_version_major" -lt "$nsis_major_required"], [
4295                 AC_MSG_WARN([makensis too old, (needs ${nsis_major_required}.x, have ${nsis_version_major}.x)])
4296             ], [
4297                 nsis_version_ok="yes"
4298             ])
4299         ], [
4300             AC_MSG_WARN([failed to check the makensis version])
4301         ])
4302     ])
4303     dnl
4304     dnl Find 7zip
4305     dnl
4306     AC_PATH_PROG([SEVENZIP], [7z], [7z])
4308 AM_CONDITIONAL([HAVE_MAKENSIS], [test "x$MAKENSIS" != "xno" && test "$nsis_version_ok" = "yes"])
4311 dnl Check wether we have the PROCESS_MITIGATION_IMAGE_LOAD_POLICY
4312 dnl It should only be available when building for win10, but some SDKs define it unconditionnaly
4314 if test "${SYS}" = "mingw32"; then
4315     AC_CHECK_TYPES([PROCESS_MITIGATION_IMAGE_LOAD_POLICY],,,[#include <windows.h>])
4318 EXTEND_HELP_STRING([Components:])
4321 dnl  the VLC binary
4323 AC_ARG_ENABLE([vlc],
4324   AS_HELP_STRING([--enable-vlc], [build the VLC media player (default enabled)]))
4325 AM_CONDITIONAL([BUILD_VLC], [test "${enable_vlc}" != "no"])
4328 dnl Fuzzer (at the end in order to don't mess dependencies FLAGS)
4330 AS_VAR_IF(with_libfuzzer, no, [], [
4331     LIBS="-lstdc++ ${LIBM} -L${with_libfuzzer} -lFuzzer"
4332     AX_CHECK_COMPILE_FLAG(-fsanitize-coverage=trace-pc-guard, [
4333         AX_APPEND_FLAG([-fsanitize-coverage=trace-pc-guard])
4334         AX_APPEND_FLAG([-fsanitize-coverage=trace-pc-guard], [CXXFLAGS])
4335         AX_APPEND_COMPILE_FLAGS([-fsanitize-coverage=trace-cmp])
4336         AX_APPEND_COMPILE_FLAGS([-fsanitize-coverage=trace-cmp], [CXXFLAGS])
4337     ], [
4338         AX_CHECK_COMPILE_FLAG(-fsanitize-coverage=trace-pc, [
4339             AX_APPEND_FLAG([-fsanitize-coverage=trace-pc])
4340             AX_APPEND_FLAG([-fsanitize-coverage=trace-pc], [CXXFLAGS])
4341         ], [
4342             AC_MSG_ERROR([Sanitizer coverage not supported by your compiler])
4343         ])
4344     ])
4348 dnl  Stuff used by the program
4350 VERSION_MESSAGE="${VERSION} ${CODENAME}"
4351 COPYRIGHT_MESSAGE="Copyright © ${COPYRIGHT_YEARS} the VideoLAN team"
4352 AC_DEFINE_UNQUOTED([VERSION_MESSAGE], "${VERSION_MESSAGE}", [Simple version string])
4353 AC_DEFINE_UNQUOTED([COPYRIGHT_MESSAGE], "${COPYRIGHT_MESSAGE}", [Copyright string])
4354 AC_DEFINE_UNQUOTED([COPYRIGHT_YEARS], "${COPYRIGHT_YEARS}", [The copyright years])
4355 AC_DEFINE_UNQUOTED([CONFIGURE_LINE], "${CONFIGURE_LINE}", [The ./configure command line])
4356 AC_DEFINE_UNQUOTED([PACKAGE_VERSION_MAJOR],${VERSION_MAJOR}, [version major number])
4357 AC_DEFINE_UNQUOTED([PACKAGE_VERSION_MINOR],${VERSION_MINOR}, [version minor number])
4358 AC_DEFINE_UNQUOTED([PACKAGE_VERSION_REVISION],${VERSION_REVISION}, [version revision number])
4359 AC_DEFINE_UNQUOTED([PACKAGE_VERSION_EXTRA],${VERSION_EXTRA}, [version extra number])
4360 AC_DEFINE_UNQUOTED([PACKAGE_VERSION_DEV],"${VERSION_DEV}", [version development string])
4361 AC_SUBST([COPYRIGHT_MESSAGE])
4362 AC_SUBST([VERSION_MESSAGE])
4363 AC_SUBST([VERSION_MAJOR])
4364 AC_SUBST([VERSION_MINOR])
4365 AC_SUBST([VERSION_REVISION])
4366 AC_SUBST([VERSION_EXTRA])
4367 AC_SUBST([COPYRIGHT_YEARS])
4368 AC_DEFINE_UNQUOTED([VLC_COMPILE_BY], "`whoami|sed -e 's/\\\/\\\\\\\/g'`", [user who ran configure])
4369 AC_DEFINE_UNQUOTED([VLC_COMPILE_HOST], "`hostname -f 2>/dev/null || hostname`", [host which ran configure])
4370 AC_DEFINE_UNQUOTED([VLC_COMPILER], "`$CC -v 2>&1 | tail -n 1 | sed -e 's/ *$//'`", [compiler])
4372 dnl  Handle substvars that use $(top_srcdir)
4374 CPPFLAGS="-I\$(top_srcdir)/include -I\$(top_builddir)/include ${CPPFLAGS}"
4377 dnl  Configuration is finished
4379 AC_SUBST([SYS])
4380 AC_SUBST([ARCH])
4381 AC_SUBST([ALIASES])
4382 AC_SUBST([ASM])
4383 AC_SUBST([MOC])
4384 AC_SUBST([RCC])
4385 AC_SUBST([UIC])
4386 AC_SUBST([WINDRES])
4387 AC_SUBST([WINE_SDK_PATH])
4388 AC_SUBST([LIBEXT])
4389 AC_SUBST([AM_CPPFLAGS])
4390 AC_SUBST([MACOSX_DEPLOYMENT_TARGET])
4391 AC_SUBST([FILE_LIBVLCCORE_DLL])
4392 AC_SUBST([FILE_LIBVLC_DLL])
4394 AC_CONFIG_FILES([
4395   Makefile
4396   doc/Makefile
4397   modules/Makefile
4398   m4/Makefile
4399   po/Makefile.in
4400   share/Makefile
4401   compat/Makefile
4402   src/Makefile
4403   lib/Makefile
4404   bin/Makefile
4405   test/Makefile
4406   modules/hw/mmal/Makefile
4407   share/vlc.appdata.xml.in
4410 AM_COND_IF([HAVE_WIN32], [
4411   AC_CONFIG_FILES([
4412     extras/package/win32/NSIS/spad.nsi
4413     extras/package/win32/NSIS/vlc.win32.nsi
4414     extras/package/win32/msi/config.wxi
4415   ])
4418 AM_COND_IF([HAVE_DARWIN], [
4419   AC_CONFIG_FILES([
4420     modules/gui/macosx/UI/InfoPlist.strings:modules/gui/macosx/Resources/InfoPlist.strings.in
4421     share/macosx/Info.plist:share/Info.plist.in
4422   ])
4425 dnl Generate makefiles
4426 AC_OUTPUT
4428 dnl Do we have to use make or gmake ?
4429 if make --version 2>&1|grep -q GNU
4430 then
4431     # GNU make, all seems good
4432     MAKE=make
4433 else
4434     # Known GNU make alias (on BSD)
4435     MAKE=gmake
4437 dnl Shortcut to nice compile message
4438 if test -n $SHELL; then
4439   SHELL=${CONFIG_SHELL-/bin/sh}
4441 rm -f compile
4442 compile_top_srcdir=`sed -ne "s/^top_srcdir *= *//p" < Makefile`
4443 echo "#! $SHELL
4444 rm -f .error\$\$
4445 ERROR=0
4446 export PATH=\"$PATH\" LANG=C
4447 ($MAKE V=1 \$@ 2>&1 || touch .error\$\$)| $compile_top_srcdir/extras/buildsystem/make.pl
4448 test -f .error\$\$ && ERROR=1
4449 rm -f .error\$\$
4450 exit \$ERROR" >compile
4451 chmod a+x compile
4453 echo "
4454 libvlc configuration
4455 --------------------
4456 version               : ${VERSION}
4457 system                : ${SYS}
4458 architecture          : ${ARCH}
4459 optimizations         : ${enable_optimizations}"
4460 if test "${enable_vlc}" != "no"; then
4461 echo "vlc aliases           :${ALIASES}"
4462 else
4463 echo "build vlc executable  : no"
4465 echo "
4466 To build vlc and its plugins, type \`$MAKE', or \`./compile' if you like nice colors."