access: bluray: fix unmatched PID with menuless blurays
[vlc.git] / configure.ac
blob9453dd852b2430d0a44bf6764e8c25924860df88
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 dnl  Set x86 asm flags and defines
99 X86ASMFLAGS=""
100 case "${host_cpu}" in
101     i?86)
102     X86ASMFLAGS="-f elf32"
103     X86ASMDEFS="-DARCH_X86_32=1 -DARCH_X86_64=0"
104         ;;
105     x86_64)
106     X86ASMFLAGS="-f elf64"
107     X86ASMDEFS="-DARCH_X86_32=0 -DARCH_X86_64=1"
108         ;;
109 esac
111 case "${host_os}" in
112   "")
113     SYS=unknown
114     ;;
115   linux*)
116     SYS=linux
117     CFLAGS="${CFLAGS} -pthread"
118     ;;
119   bsdi*)
120     SYS=bsdi
121     CFLAGS="${CFLAGS} -pthread"
122     ;;
123   freebsd*)
124     SYS=freebsd
125     CFLAGS="${CFLAGS} -pthread"
126     CPPFLAGS="${CPPFLAGS} -I/usr/local/include"
127     LDFLAGS="${LDFLAGS} -L/usr/local/lib"
128     ac_cv_ld_z_defs=no
129     ;;
130   openbsd*)
131     SYS=openbsd
132     CPPFLAGS="${CPPFLAGS} -I/usr/local/include -I/usr/X11R6/include"
133     LDFLAGS="${LDFLAGS} -L/usr/local/lib -L/usr/X11R6/lib/"
134     ;;
135   netbsd*)
136     SYS=netbsd
137     ;;
138   dragonfly*)
139     SYS=dragonfly
140     ;;
141   darwin*)
143     dnl Force gcc "-arch" flag
144     ARCH_flag=""
145     case "${host_cpu}" in
146       i?86)
147         ARCH_flag="-arch i386"
148         X86ASMFLAGS="-f macho32"
149         X86ASMDEFS="${X86ASMDEFS} -DPREFIX"
150       ;;
151       ppc64*)
152         ARCH_flag="-arch ppc64"
153       ;;
154       ppc*)
155         ARCH_flag="-arch ppc"
156       ;;
157       x86_64)
158         ARCH_flag="-arch x86_64"
159         X86ASMFLAGS="-f macho64"
160         X86ASMDEFS="${X86ASMDEFS} -DPREFIX"
161       ;;
162       arm*)
163         ac_cv_c_bigendian="no"
164         ac_cv_c_attribute_packed="no"
165       ;;
166     esac
168     SYS=darwin
169     CFLAGS="${CFLAGS} -D_INTL_REDIRECT_MACROS -std=gnu11 ${ARCH_flag}"
170     CXX="${CXX} -stdlib=libc++ -std=c++11"
171     CXXFLAGS="${CXXFLAGS} -D_INTL_REDIRECT_MACROS ${ARCH_flag}"
172     CPPFLAGS="${CPPFLAGS} ${ARCH_flag}"
173     OBJCFLAGS="${OBJCFLAGS} -D_INTL_REDIRECT_MACROS -std=gnu11 ${ARCH_flag} -Werror=partial-availability"
174     LDFLAGS="${LDFLAGS} -Wl,-headerpad_max_install_names ${ARCH_flag}"
175     VLC_ADD_LIBS([libvlc vlc],[-Wl,-undefined,dynamic_lookup,-framework,AppKit])
176     VLC_ADD_LIBS([libvlccore],[-Wl,-framework,CoreFoundation,-framework,CoreServices])
178     AC_EGREP_CPP(yes,
179             [#import <TargetConditionals.h>
180              #if TARGET_OS_IPHONE
181              yes
182              #endif],
183              [HAVE_IOS="1"],
184              [HAVE_OSX="1"])
186     AC_EGREP_CPP(yes,
187             [#import <TargetConditionals.h>
188              #if TARGET_OS_TV
189              yes
190              #endif],
191              [HAVE_TVOS="1"
192              HAVE_IOS="0"
193              HAVE_OSX="0"
194              ],)
196     dnl
197     dnl  Handle Mac OS X SDK flags
198     dnl
199     AC_ARG_WITH(macosx-sdk,
200       AS_HELP_STRING([--with-macosx-sdk=DIR],
201         [compile using the SDK in DIR]))
202     if test "${with_macosx_sdk}" != "" ; then
203         test ! -d "${with_macosx_sdk}" && AC_MSG_ERROR([SDK "${with_macosx_sdk}" not found])
204         CPP="${CPP} -isysroot ${with_macosx_sdk}"
205         CC="${CC} -isysroot ${with_macosx_sdk}"
206         CXX="${CXX} -isysroot ${with_macosx_sdk}"
207         OBJC="${OBJC} -isysroot ${with_macosx_sdk}"
208         LD="${LD} -syslibroot ${with_macosx_sdk}"
209     fi
210     AC_ARG_WITH(macosx-version-min,
211       AS_HELP_STRING([--with-macosx-version-min=VERSION],
212         [compile for Mac OS X VERSION and above]))
213     if test "${with_macosx_version_min}" != "" ; then
214         CPP="${CPP} -mmacosx-version-min=${with_macosx_version_min}"
215         CC="${CC} -mmacosx-version-min=${with_macosx_version_min}"
216         CXX="${CXX} -mmacosx-version-min=${with_macosx_version_min}"
217         OBJC="${OBJC} -mmacosx-version-min=${with_macosx_version_min}"
218         LD="${LD} -mmacosx_version_min=${with_macosx_version_min}"
219     fi
220     ;;
221   *mingw32* | *cygwin* | *wince* | *mingwce*)
222     dnl Force libtool to not link to (shared) libgcc_s when detecting C++ dependencies
223     dnl When doing this test with -static-libgcc it will link on (static) libgcc_eh
224     CXXFLAGS="${CXXFLAGS} -static-libgcc"
225     AC_CHECK_TOOL(WINDRES, windres, :)
226     AC_CHECK_TOOL(OBJCOPY, objcopy, :)
227     AC_PREPROC_IFELSE([AC_LANG_PROGRAM(
228       [[#ifdef _WIN32_WINNT
229        # error _WIN32_WINNT already defined
230        #endif
231       ]],[[;]])
232     ],[
233       AC_DEFINE([_WIN32_WINNT], 0x0601, [Define to '0x0601' for Windows 7 APIs.])
234     ])
235     AC_DEFINE([_WIN32_IE], 0x0600, [Define to '0x0600' for IE 6.0 (and shell) APIs.])
236     AC_DEFINE([_UNICODE], [1], [Define to 1 for Unicode (Wide Chars) APIs.])
237     AC_DEFINE([UNICODE], [1], [Define to 1 for Unicode (Wide Chars) APIs.])
238     AC_DEFINE([_ISOC99_SOURCE], [1], [Extensions to ISO C89 from ISO C99.])
239     AC_DEFINE([_ISOC11_SOURCE], [1], [Extensions to ISO C99 from ISO C11.])
240     AC_DEFINE([_POSIX_SOURCE], [1], [IEEE Std 1003.1.])
241     AC_DEFINE([_POSIX_C_SOURCE], [200809L], [IEEE Std 1003.1.])
242     AC_DEFINE([_XOPEN_SOURCE], [700], [POSIX and XPG 7th edition])
243     AC_DEFINE([_XOPEN_SOURCE_EXTENDED], [1], [XPG things and X/Open Unix extensions.])
244     AC_DEFINE([_BSD_SOURCE], [1], [ISO C, POSIX, and 4.3BSD things.])
245     AC_DEFINE([_SVID_SOURCE], [1], [ISO C, POSIX, and SVID things.])
247     case "${host_os}" in
248       *mingw32*)
249         SYS=mingw32
250         ;;
251       *cygwin*)
252         dnl Check if we are using the mno-cygwin mode in which case we are
253         dnl actually dealing with a mingw32 compiler.
254         AC_EGREP_CPP(yes,
255             [#ifdef _WIN32
256              yes
257              #endif],
258             SYS=mingw32, AC_MSG_ERROR([VLC requires -mno-cygwin]))
259         ;;
260     esac
262     if test "${SYS}" = "mingw32"; then
263         # DEP, ASLR, NO SEH
264         LDFLAGS="${LDFLAGS} -Wl,--nxcompat -Wl,--no-seh -Wl,--dynamicbase"
266         AC_CHECK_PROGS(U2D, [unix2dos todos], unix2dos)
267         ac_default_prefix="`pwd`/_win32"
268         DESTDIR="`pwd`/_win32/"
270         dnl
271         dnl NSIS/MSI Installer prefix and WIN64
272         dnl
273         case "${host_cpu}" in
274             amd64|x86_64|aarch64)
275                 HAVE_WIN64="1"
276                 WINDOWS_ARCH="x64"
277                 PROGRAMFILES="PROGRAMFILES64"
278                 LDFLAGS="${LDFLAGS} -Wl,--high-entropy-va -Wl,--image-base,0x140000000"
279                 X86ASMFLAGS="-f win64"
280             ;;
281             *)
282                 WINDOWS_ARCH="x86"
283                 PROGRAMFILES="PROGRAMFILES"
284                 X86ASMFLAGS="-f win32"
285                 X86ASMDEFS="${X86ASMDEFS} -DPREFIX"
286             ;;
287         esac
288         AC_SUBST([WINDOWS_ARCH])
289         AC_SUBST([PROGRAMFILES])
291     fi
292     ;;
293   *nto*)
294     SYS=nto
295     ;;
296   solaris*)
297     SYS=solaris
298     ;;
299   hpux*)
300     SYS=hpux
301     ;;
302   *os2*)
303     SYS=os2
304     LDFLAGS="${LDFLAGS} -Zomf -Zbin-files -Zargs-wild -Zhigh-mem"
305     AC_LIBOBJ([freeaddrinfo])
306     AC_LIBOBJ([gai_strerror])
307     AC_CHECK_FUNCS([if_nametoindex])
308     ;;
309   *nacl*)
310     SYS=nacl
311     AC_DEFINE([_XOPEN_SOURCE], [700], [POSIX and XPG 7th edition])
312     AC_LIBOBJ([sigwait])
313     AC_LIBOBJ([recvmsg])
314     AC_LIBOBJ([sendmsg])
315     ;;
316   *)
317     SYS="${host_os}"
318     ;;
319 esac
321 dnl WinRT
322 AC_ARG_ENABLE([winstore_app],
323      AS_HELP_STRING([--enable-winstore-app],
324                     [Build targetted for Windows Store apps (default disabled)]))
326 vlc_winstore_app=0
327 AS_IF([test "${SYS}" = "mingw32"],[
328   LIBCOM="-lole32"
329   AS_IF([test "${enable_winstore_app}" = "yes"], [
330     vlc_winstore_app=1
331     LIBCOM=""
332      VLC_ADD_LIBS([libvlccore], [-lruntimeobject])
333      AC_LIBOBJ([gai_strerror])
334     ],[])
335   AC_SUBST([LIBCOM])
336   ])
337 AC_DEFINE_UNQUOTED(VLC_WINSTORE_APP, ${vlc_winstore_app}, [Define to 1 if you want to build for Windows Store apps])
339 AM_CONDITIONAL([HAVE_LINUX],   [test "${SYS}" = "linux"])
340 AM_CONDITIONAL([HAVE_OS2],     [test "${SYS}" = "os2"])
342 AM_CONDITIONAL([HAVE_DARWIN],  [test "${SYS}" = "darwin"])
343 AM_CONDITIONAL([HAVE_IOS],     [test "${HAVE_IOS}" = "1"])
344 AM_CONDITIONAL([HAVE_OSX],     [test "${HAVE_OSX}" = "1"])
345 AM_CONDITIONAL([HAVE_TVOS],    [test "${HAVE_TVOS}" = "1"])
347 AM_CONDITIONAL([HAVE_NACL],    [test "${SYS}" = "nacl"])
348 AM_CONDITIONAL([HAVE_LIBANL],  [test "${HAVE_LIBANL}" = "1"])
350 AM_CONDITIONAL([HAVE_WIN32],   [test "${SYS}" = "mingw32"])
351 AM_CONDITIONAL([HAVE_WIN64],   [test "${HAVE_WIN64}" = "1"]) dnl Only used for the packaging
352 AM_CONDITIONAL([HAVE_WINSTORE], [test "$vlc_winstore_app" = "1"])
353 AM_CONDITIONAL([HAVE_WIN32_DESKTOP], [test "${SYS}" = "mingw32" -a "$vlc_winstore_app" = "0"])
355 dnl Use nasm/yasm only on x86
356 AC_CHECK_PROGS(X86ASM, [nasm yasm])
357 AM_CONDITIONAL([HAVE_X86ASM], [test -n "${X86ASM}" && test -n "{X86ASMFLAGS}"])
358 AM_COND_IF([HAVE_X86ASM], [
359   AC_DEFINE([HAVE_X86ASM], [1], [Use external asm on x86.])
361 AC_SUBST([X86ASMFLAGS])
362 AC_SUBST([X86ASMDEFS])
365 dnl Sadly autoconf does not think about testing foo.exe when ask to test
366 dnl for program foo on win32
367 case "${build_os}" in
368     cygwin|msys|mingw32)
369         ac_executable_extensions=".exe"
370         BUILDEXEEXT=".exe"
371     ;;
372     os2*)
373         BUILDEXEEXT=".exe"
374     ;;
375     *)
376     ;;
377 esac
378 AC_SUBST([BUILDEXEEXT])
380 dnl Android is linux, but a bit different
381 AS_IF([test "$SYS" = linux],[
382     AC_MSG_CHECKING([for an Android system])
383     AC_PREPROC_IFELSE([AC_LANG_PROGRAM(
384         [[#ifndef __ANDROID__
385          # error Not Android
386          #endif
387         ]],[[;]])
388     ],[
389       HAVE_ANDROID="1"
390       AC_MSG_RESULT([yes])
391     ],[
392       AC_MSG_RESULT([no])
393     ])
395 AM_CONDITIONAL([HAVE_ANDROID], [test "${HAVE_ANDROID}" = "1"])
397 dnl Tizen (minimum SDK version: 2.3)
398 AS_IF([test "$SYS" = linux],[
399     AC_MSG_CHECKING([for Tizen])
400     AC_PREPROC_IFELSE([AC_LANG_PROGRAM(
401         [[#include <tizen.h>
402         ]],[[;]])
403     ],[
404       HAVE_TIZEN="1"
405       AC_DEFINE([HAVE_TIZEN_SDK], [1], [Define to 1 if vlc is built against Tizen SDK])
406       AC_MSG_RESULT([yes])
407     ],[
408       AC_MSG_RESULT([no])
409     ])
411 AM_CONDITIONAL([HAVE_TIZEN], [test "${HAVE_TIZEN}" = "1"])
414 dnl  Check for the contrib directory
416 AC_ARG_WITH(contrib,
417   AS_HELP_STRING([--with-contrib[=DIR]],
418     [search for 3rd party libraries in DIR/include and DIR/lib])
420 AC_MSG_CHECKING([for 3rd party libraries path])
421 AS_IF([test -z "${with_contrib}" || test "${with_contrib}" = "yes"], [
422   CONTRIB_DIR="${srcdir}/contrib/${host}"
423   AS_IF([test ! -d "${CONTRIB_DIR}"], [
424     echo "${CONTRIB_DIR} not found" >&AS_MESSAGE_LOG_FD
425     CONTRIB_DIR="${srcdir}/contrib/`$CC -dumpmachine`"
426     AS_IF([test ! -d "${CONTRIB_DIR}"], [
427       echo "${CONTRIB_DIR} not found" >&AS_MESSAGE_LOG_FD
428       CONTRIB_DIR=""
429       AC_MSG_RESULT([not found])
430     ])
431   ])
432 ], [
433   AS_IF([test "${with_contrib}" != "no"], [
434     CONTRIB_DIR="${with_contrib}"
435   ], [
436     CONTRIB_DIR=""
437     AC_MSG_RESULT([disabled])
438   ])
440 AS_IF([test -n "${CONTRIB_DIR}"], [
441   AS_IF([test -d "${CONTRIB_DIR}/lib"],[
442     CONTRIB_DIR=`cd "${CONTRIB_DIR}" && pwd`
443   ], [
444     echo "${CONTRIB_DIR}/lib not found" >&AS_MESSAGE_LOG_FD
445     CONTRIB_DIR=""
446     AC_MSG_RESULT([not usable])
447   ])
450 AS_IF([test -n "${CONTRIB_DIR}"], [
451   AC_MSG_RESULT([${CONTRIB_DIR}])
452   CPPFLAGS="${CPPFLAGS} -I${CONTRIB_DIR}/include"
453   CFLAGS="${CFLAGS} -I${CONTRIB_DIR}/include"
454   CXXFLAGS="${CXXFLAGS} -I${CONTRIB_DIR}/include"
455   OBJCFLAGS="${OBJCFLAGS} -I${CONTRIB_DIR}/include -F${CONTRIB_DIR} -F${CONTRIB_DIR}/Frameworks"
456   export PKG_CONFIG_PATH="${CONTRIB_DIR}/lib/pkgconfig:${CONTRIB_DIR}/share/pkgconfig:$PKG_CONFIG_PATH"
457   LDFLAGS="${LDFLAGS} -L${CONTRIB_DIR}/lib"
459   AS_IF([test -z "$LUAC"], [
460     dnl Old contribs mixed cross-tools and cross-compiled executables
461     AS_IF([test -x "${CONTRIB_DIR}/bin/luac${BUILDEXEEXT}"], [
462       LUAC="${CONTRIB_DIR}/bin/luac${BUILDEXEEXT}"
463     ])
465     dnl Newer contribs follow usual name space rules
466     AS_IF([test -x "${CONTRIB_DIR}/../bin/${host_alias}-luac${BUILDEXEEXT}"], [
467       LUAC="${CONTRIB_DIR}/../bin/${host_alias}-luac${BUILDEXEEXT}"
468     ])
469   ])
471   AS_IF([test "${SYS}" = "darwin"], [
472     export LD_LIBRARY_PATH="${CONTRIB_DIR}/lib:$LD_LIBRARY_PATH"
473     export DYLD_LIBRARY_PATH="${CONTRIB_DIR}/lib:$DYLD_LIBRARY_PATH"
474   ])
475 ], [
476   AS_IF([test -n "${with_contrib}" && test "${with_contrib}" != "no"], [
477     AC_MSG_ERROR([Third party libraries not found!])
478   ])
480 AC_SUBST([CONTRIB_DIR])
482 dnl Add extras/tools to the PATH
483 TOOLS_DIR="${srcdir}/extras/tools/build/bin"
484 AS_IF([test -d "${TOOLS_DIR}"], [
485     TOOLS_DIR=`cd "${TOOLS_DIR}" && pwd`
486     export PATH="${TOOLS_DIR}":$PATH
490 dnl  Libtool
491 dnl  It's very bad, but our former custom system was worst
492 dnl  -- Courmisch
495 dnl override platform specific check for dependent libraries
496 dnl otherwise libtool linking of shared libraries will
497 dnl fail on anything other than pass_all.
498 AC_CACHE_VAL(lt_cv_deplibs_check_method,
499     [lt_cv_deplibs_check_method=pass_all])
501 LT_INIT([dlopen win32-dll shared disable-static])
502 LT_LANG([C++])
503 LT_LANG([Windows Resource])
505 DOLT
507 lt_cv_deplibs_check_method=pass_all
509 AS_IF([test "${enable_shared}" = "no" -a "${enable_vlc}" != "no"], [
510   AC_MSG_ERROR([VLC is based on plugins. Shared libraries cannot be disabled.])
514 dnl Gettext stuff
516 AM_GNU_GETTEXT_VERSION([0.19.8])
517 AM_GNU_GETTEXT([external], [need-formatstring-macros])
520 dnl Iconv stuff
522 AM_ICONV
525 dnl checks for mingw
526 AS_IF([test "${SYS}" = "mingw32"], [
528 AC_PREPROC_IFELSE([AC_LANG_SOURCE([
529 #if !defined(__MINGW32__)
530 # error Not compiling with mingw
531 #endif
532     ])], [
534 dnl Check for broken versions of mingw-runtime compatability library
535     AC_MSG_CHECKING(for broken mingw-runtime)
536     AC_PREPROC_IFELSE([AC_LANG_SOURCE([
537 #include <_mingw.h>
538 #if defined(__MINGW64_VERSION_MAJOR)
539 # if __MINGW64_VERSION_MAJOR < 5
540 #  error Update your mingw-w64! This one is too old.
541 # endif
542 #else
543 # error You cannot compile with Mingw. Use Mingw-w64!
544 #endif
545     ])], [
546         AC_MSG_RESULT([ok])
547     ], [
548         AC_MSG_RESULT([present])
549         AC_MSG_ERROR([LibVLC requires Mingw-w64 version 5.0 or higher!])
550     ])
552     dnl force use of mingw provided c99 *printf over msvcrt
553     CPPFLAGS="${CPPFLAGS} -D__USE_MINGW_ANSI_STDIO=1"
555     dnl Check for the need to include the mingwex lib for mingw32
556     VLC_SAVE_FLAGS
557     AC_CHECK_LIB([mingwex], [opendir],
558         AC_CHECK_LIB([mingw32], [opendir],,
559             [VLC_ADD_LIBS([libvlccore],[-lmingwex])])
560     )
561     VLC_RESTORE_FLAGS
562     ], [
563         AC_MSG_RESULT([Not compiling with mingw])
564     ])
566     dnl Check for fnative-struct or mms-bitfields support for mingw32
567     AX_CHECK_COMPILE_FLAG([-mms-bitfields], [
568         AX_APPEND_FLAG([-mms-bitfields], [CFLAGS])
569         AX_APPEND_FLAG([-mms-bitfields], [CXXFLAGS])
570         # Check for the warning flag without "-Wno-", GCC accepts
571         # -Wno-<anything> for unsupported warnings, which can trigger
572         # other warnings instead.
573         AX_CHECK_COMPILE_FLAG([-Wincompatible-ms-struct], [
574             AX_APPEND_FLAG([-Wno-incompatible-ms-struct], [CFLAGS])
575             AX_APPEND_FLAG([-Wno-incompatible-ms-struct], [CXXFLAGS])
576         ])
577     ], [
578         AX_CHECK_COMPILE_FLAG([-fnative-struct], [
579             AX_APPEND_FLAG([-fnative-struct], [CFLAGS])
580             AX_APPEND_FLAG([-fnative-struct], [CXXFLAGS])
581         ])
582     ])
587 dnl Buggy glibc prevention. Purposedly not cached.
588 dnl See sourceware.org bugs 5058 and 5443.
589 dnl Ubuntu alone has 20 bug numbers for this...
591 AC_MSG_CHECKING(for buggy GNU/libc versions)
592 AC_PREPROC_IFELSE([AC_LANG_SOURCE([
593 #include <limits.h>
594 #if defined (__GLIBC__) && (__GLIBC__ == 2) \
595   && (__GLIBC_MINOR__ >= 5) && (__GLIBC_MINOR__ <= 7)
596 # error GNU/libc with dcgettext killer bug!
597 #endif
598 ])], [
599   AC_MSG_RESULT([not present])
600 ], [
601   AC_MSG_RESULT([found])
602   AS_IF([test "x${enable_nls}" != "xno"], [
603     AC_MSG_ERROR([Buggy GNU/libc (version 2.5 - 2.7) present. VLC would crash; there is no viable
604 work-around for this. Check with your distribution vendor on how to update the
605 glibc run-time. Alternatively, build with --disable-nls.])
606   ])
609 dnl Plugin compilation stuff
611 VLC_LIBRARY_SUFFIX
613 dnl Check for system libs needed
614 need_libc=false
616 dnl Check for usual libc functions
617 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])
618 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])
619 AC_REPLACE_FUNCS([gettimeofday])
620 AC_CHECK_FUNC(fdatasync,,
621   [AC_DEFINE(fdatasync, fsync, [Alias fdatasync() to fsync() if missing.])
624 VLC_REPLACE_DECL([realpath], [#include <stdlib.h>])
626 dnl mingw64 implements those as static inline, not functions with C linkage
627 VLC_REPLACE_DECL([asprintf], [#include <stdio.h>])
628 VLC_REPLACE_DECL([vasprintf], [#include <stdio.h>])
629 VLC_REPLACE_DECL([gmtime_r], [#include <time.h>])
630 VLC_REPLACE_DECL([localtime_r], [#include <time.h>])
632 dnl C11 static_assert()
633 AC_MSG_CHECKING([for static_assert in assert.h])
634 AC_LINK_IFELSE([AC_LANG_PROGRAM([#include <assert.h>], [
635 static_assert(1, "The impossible happened.");
636 ])], [
637   AC_MSG_RESULT([yes])
638   AC_DEFINE([HAVE_STATIC_ASSERT], [1], [Define to 1 if <assert.h> defines static_assert.])
639 ], [
640   AC_MSG_RESULT([no])
643 # Windows CE does not have strcoll()
644 AC_FUNC_STRCOLL
646 dnl Check for non-standard system calls
647 case "$SYS" in
648   "linux")
649     AC_CHECK_FUNCS([eventfd vmsplice sched_getaffinity recvmmsg memfd_create])
650     ;;
651   "mingw32")
652     AC_CHECK_FUNCS([_lock_file])
653     ;;
654 esac
656 AH_BOTTOM([#include <vlc_fixups.h>])
658 dnl Check for struct pollfd
659 AC_CHECK_TYPES([struct pollfd],,,
660 [#include <sys/types.h>
661 #if HAVE_POLL
662 # include <poll.h>
663 #elif defined (_WIN32)
664 # include <winsock2.h>
665 #endif
668 dnl Check for struct timespec
669 AC_CHECK_TYPES([struct timespec],,,
670 [#include <time.h>])
672 dnl Check for max_align_t
673 AC_CHECK_TYPES([max_align_t],,,
674 [#include <stddef.h>])
676 dnl Checks for socket stuff
677 VLC_SAVE_FLAGS
678 SOCKET_LIBS=""
679 AC_SEARCH_LIBS(connect, [socket], [
680   AS_IF([test "$ac_cv_search_connect" != "none required"], [
681     SOCKET_LIBS="$ac_cv_search_connect"
682   ])
683 ], [
684   AS_IF([test "${SYS}" = "mingw32"], [
685     SOCKET_LIBS="-lws2_32 -liphlpapi"
686   ])
689 AC_SEARCH_LIBS([inet_pton], [nsl], [
690  AS_IF([test "$ac_cv_search_inet_pton" != "none required"], [
691     SOCKET_LIBS="$ac_cv_search_inet_pton $SOCKET_LIBS"
692   ])
693 ],, [${SOCKET_LIBS}])
695 LIBS="${LIBS} ${SOCKET_LIBS}"
696 AC_LINK_IFELSE([
697     AC_LANG_PROGRAM([#ifdef _WIN32
698         #include <ws2tcpip.h>
699         #include <windows.h>
700         # if _WIN32_WINNT < 0x600
701         #  error Needs vista+
702         # endif
703         #else
704         #include <sys/socket.h>
705         #include <arpa/inet.h>
706         #endif], [
707         char dst[[sizeof(struct in_addr)]];
708         inet_pton(AF_INET, "127.0.0.1", dst);
709     ])],[AC_DEFINE([HAVE_INET_PTON],[1],[Define to 1 if you have inet_pton function])],[AC_LIBOBJ([inet_pton])])
710 AC_CHECK_TYPES([struct if_nameindex],,,[#include <net/if.h>])
711 AC_CHECK_FUNCS([if_nameindex])
712 VLC_RESTORE_FLAGS
713 AC_SUBST([SOCKET_LIBS])
715 dnl Check for socklen_t
716 AH_TEMPLATE(socklen_t, [Define to `int' if <sys/socket.h> does not define.])
717 AC_CACHE_CHECK([for socklen_t in sys/socket.h], dnl ` (fix VIM syntax highlight
718 ac_cv_type_socklen_t,
719 [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([
720 [#include <sys/types.h>
721 #ifdef _WIN32
722 # include <winsock2.h>
723 # include <ws2tcpip.h>
724 #else
725 # include <sys/socket.h>
726 #endif]], [[socklen_t len; len = 0;]])],
727 ac_cv_type_socklen_t=yes,
728 ac_cv_type_socklen_t=no)])
729 AS_IF([test "$ac_cv_type_socklen_t" = no],
730  [AC_DEFINE(socklen_t, int)])
732 dnl Check for struct sockaddr_storage
733 AH_TEMPLATE(sockaddr_storage, [Define to `sockaddr' if <sys/socket.h> does not define.]) dnl ` (fix VIM syntax highlight
734 AH_TEMPLATE(ss_family, [Define to `sa_family' if <sys/socket.h> does not define.]) dnl ` (fix VIM syntax highlight
735 AC_CACHE_CHECK([for struct sockaddr_storage], ac_cv_struct_sockaddr_storage,
736   [AC_TRY_COMPILE(
737     [#include <sys/types.h>
738      #if defined( _WIN32 )
739      # include <winsock2.h>
740      #else
741      # include <sys/socket.h>
742      #endif], [struct sockaddr_storage addr;],
743      ac_cv_struct_sockaddr_storage=yes,
744      ac_cv_struct_sockaddr_storage=no)])
745 AS_IF([test "${ac_cv_struct_sockaddr_storage}" = no], [
746   AC_DEFINE(sockaddr_storage, sockaddr)
747   AC_DEFINE(ss_family, sa_family)
750 dnl FreeBSD has a gnugetopt library for this:
751 GNUGETOPT_LIBS=""
752 AC_CHECK_FUNC(getopt_long,, [
753   AC_CHECK_LIB([gnugetopt],[getopt_long], [
754     GNUGETOPT_LIBS="-lgnugetopt"
755   ])
757 AC_SUBST([GNUGETOPT_LIBS])
759 AC_CHECK_LIB([m], [cos], [
760   LIBM="-lm"
761 ], [
762   LIBM=""
764 AC_SUBST([LIBM])
766 AC_CHECK_LIB([m], [lrintf], [
767   AC_DEFINE(HAVE_LRINTF, 1, [Define to 1 if you have the lrintf function])
768   VLC_ADD_LIBS([skins2],[-lm])
770 AC_CHECK_LIB([m], [nanf],
771   AC_DEFINE(HAVE_NANF, 1, [Define to 1 if you have the NANF function])
773 AC_CHECK_LIB([m], [sincos], [
774   AC_DEFINE(HAVE_SINCOS, 1, [Define to 1 if you have the sincos function.])
775 ], [
776   AC_LIBOBJ([sincos])
779 AC_MSG_CHECKING([broken qsort_r prototype])
780 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([#include <stdlib.h>
782 _Static_assert(_Generic((qsort_r),
783     void (*)(void *, size_t, size_t, void *,
784              int (*)(void *, const void *, const void *)) : 1, default: 0),
785     "Bad prototype not matched");
786 ])], [
787   AC_MSG_RESULT([broken])
788   AC_DEFINE([HAVE_BROKEN_QSORT_R], 1, [Defined to 1 if the qsort_r() prototype contradicts the upcoming POSIX standard.])
789 ], [
790   AC_MSG_RESULT([no])
793 AC_MSG_CHECKING([_Thread_local support])
794 AC_COMPILE_IFELSE([AC_LANG_SOURCE([_Thread_local int foo = 0;
795                    int main() {}])], [
796     AC_MSG_RESULT([ok])
797     AC_DEFINE(HAVE_THREAD_LOCAL, 1, [Defined to 1 if C11 _Thread_local storage qualifier is supported])
798 ],[ AC_MSG_RESULT([no])])
800 dnl __STDC_NO_THREADS__ can't be trusted on some platforms.
801 dnl check for its availability explicitely
802 AC_CHECK_HEADERS([threads.h])
804 AC_CHECK_LIB([anl],[getaddrinfo_a],[
805   AC_DEFINE(HAVE_LIBANL, 1, [Define to 1 if you have the anl library])
808 dnl Check for dynamic plugins
809 LIBDL=""
810 have_dynamic_objects="no"
811 VLC_SAVE_FLAGS
812 AC_SEARCH_LIBS(dlsym, [dl svld], [
813   AS_IF([test "$ac_cv_search_dlsym" != "none required"], [
814     LIBDL="$ac_cv_search_dlsym"
815   ])
816   have_dynamic_objects="yes"
818 VLC_RESTORE_FLAGS
820 # Windows
821 AS_IF([test "${SYS}" = "mingw32"], [
822   LIBDL=""
823   have_dynamic_objects="yes" #assume we can use shared objects
826 AC_ARG_WITH([libfuzzer],
827     AS_HELP_STRING([--with-libfuzzer=DIR],
828         [use libFuzzer library from DIR and triggers sanitize coverage (default disabled)]),
829      [],
830      [with_libfuzzer=no])
831 AS_VAR_IF(with_libfuzzer, no, [], [
832     enable_shared=no
833     enable_static=yes
834     enable_vlc=no
836 AM_CONDITIONAL([HAVE_LIBFUZZER], [test "${with_libfuzzer}" != "no"])
838 AS_IF([test "${enable_shared}" = "no"], [
839   have_dynamic_objects=no
841 AM_CONDITIONAL([HAVE_DYNAMIC_PLUGINS], [test "${have_dynamic_objects}" != "no"])
843 AC_SUBST([LIBDL])
845 AS_IF([test "${SYS}" != "mingw32"], [
846   AC_SEARCH_LIBS([clock_nanosleep], [rt pthread], [
847     AS_IF([test "$ac_cv_search_clock_nanosleep" != "none required"], [
848       LIBRT="$ac_cv_search_clock_nanosleep"
849     ])
850   ], [
851     AC_SEARCH_LIBS([nanosleep], [rt pthread posix4], [
852       AS_IF([test "$ac_cv_search_nanosleep" != "none required"], [
853         LIBRT="$ac_cv_search_nanosleep"
854       ])
855     ])
856   ])
858 AC_SUBST([LIBRT])
861 dnl Check for headers
864 dnl  POSIX
865 AC_CHECK_HEADERS([arpa/inet.h pthread.h search.h sys/shm.h sys/socket.h sys/uio.h])
866 AC_CHECK_HEADERS([net/if.h], [], [],
868 #include <sys/types.h>
869 #include <sys/socket.h>
871 AC_CHECK_HEADER([syslog.h], [have_syslog="yes"], [have_syslog="no"])
872 AM_CONDITIONAL([HAVE_SYSLOG], [test "$have_syslog" = "yes"])
874 dnl  BSD
875 AC_CHECK_HEADERS([netinet/tcp.h netinet/udplite.h sys/param.h sys/mount.h])
877 dnl  GNU/Linux
878 AC_CHECK_HEADERS([features.h getopt.h linux/dccp.h linux/magic.h mntent.h sys/eventfd.h])
880 dnl  MacOS
881 AC_CHECK_HEADERS([xlocale.h])
883 dnl Check if C++ headers define locale_t
884 AC_LANG_PUSH(C++)
885 AC_CACHE_CHECK([if C++ headers define locale_t],
886   [ac_cv_cxx_locale_t],
887   [ac_cv_cxx_locale_t=no
888    AC_TRY_COMPILE([#include <locale>], [locale_t loc;],
889                     [ac_cv_cxx_locale_t=yes])])
890 if test "${ac_cv_cxx_locale_t}" != "no"; then
891   AC_DEFINE(HAVE_CXX_LOCALE_T, 1, Define to 1 if C++ headers define locale_t)
893 AC_LANG_POP(C++)
895 dnl LP64 and LLP64 architectures had better define ssize_t by themselves...
896 AH_TEMPLATE(ssize_t, [Define to `int' if <stddef.h> does not define.]) dnl ` (fix VIM syntax highlight
897 AC_CHECK_TYPE(ssize_t,, [
898   AC_DEFINE(ssize_t, int)
901 dnl It seems that autoconf detects pkg-config only during the first
902 dnl PKG_CHECK_MODULES from configure.ac - which makes sense. But in our case,
903 dnl it is nested within a conditional block, so it was not working right.
904 dnl Make PKG_CONFIG_PATH precious so that it appears in the help and get saved
905 AC_ARG_VAR(PKG_CONFIG_PATH,
906        [Paths where to find .pc not at the default location])
907 PKG_PROG_PKG_CONFIG()
909 dnl On some OS we need static linking
910 AS_IF([test -n "${PKG_CONFIG}" ],[
911     AS_IF([test "${SYS}" = "mingw32" -o "${SYS}" = "darwin" -o "${SYS}" = "os2" ],[
912         PKG_CONFIG="${PKG_CONFIG} --static"
913     ])
918 dnl Check for zlib.h and -lz if available
920 AC_CHECK_HEADERS([zlib.h], [ have_zlib=yes ], [ have_zlib=no ])
921 AM_CONDITIONAL([HAVE_ZLIB], [ test "${have_zlib}" = "yes" ])
922 if test "${have_zlib}" = "yes"
923 then
924   VLC_ADD_LIBS([sap],[-lz])
929 dnl Domain name i18n support via GNU libidn
931 PKG_CHECK_MODULES([IDN], [libidn], [
932   have_libidn="yes"
933   AC_DEFINE([HAVE_IDN], 1, [Define to 1 if you have GNU libidn.])
934 ], [
935   have_libidn="no"
939 dnl Check for dbus
940 AC_ARG_ENABLE([dbus],
941   AS_HELP_STRING([--enable-dbus],
942     [compile D-Bus message bus support (default enabled)]))
943 have_dbus="no"
944 AS_IF([test "${enable_dbus}" != "no"], [
945   PKG_CHECK_MODULES(DBUS, [dbus-1 >= 1.6.0], [
946     have_dbus="yes"
947   ], [
948     AS_IF([test -n "${enable_dbus}"], [
949       AC_MSG_ERROR([${DBUS_PKG_ERRORS}.])
950     ], [
951       AC_MSG_WARN([${DBUS_PKG_ERRORS}.])
952     ])
953   ])
955 AM_CONDITIONAL([HAVE_DBUS], [test "${have_dbus}" = "yes"])
958 dnl Check for systemd
959 PKG_CHECK_MODULES([SYSTEMD], [libsystemd], [
960   have_systemd="yes"
961 ], [
962   AC_MSG_WARN([${SYSTEMD_PKG_ERRORS}.])
964 AM_CONDITIONAL([HAVE_SYSTEMD], [test "${have_systemd}" = "yes"])
967 EXTEND_HELP_STRING([Optimization options:])
969 dnl  Compiler warnings
972 AX_APPEND_COMPILE_FLAGS([-Wall -Wextra -Wsign-compare -Wundef -Wpointer-arith -Wvolatile-register-var -Wformat -Wformat-security -Wduplicated-branches -Wduplicated-cond], [CFLAGS])
973 AX_APPEND_COMPILE_FLAGS([-Wall -Wextra -Wsign-compare -Wundef -Wpointer-arith -Wvolatile-register-var -Wformat -Wformat-security -Wduplicated-branches -Wduplicated-cond], [CXXFLAGS])
975 AX_APPEND_COMPILE_FLAGS([-Wbad-function-cast -Wwrite-strings -Wmissing-prototypes -Werror-implicit-function-declaration -Winit-self -Wlogical-op -Wshadow=local -Wmultistatement-macros], [CFLAGS])
976 AX_APPEND_COMPILE_FLAGS([-pipe], [CFLAGS])
979 dnl  Debugging mode
981 AC_ARG_ENABLE([debug],
982   AS_HELP_STRING([--enable-debug],
983     [build with run-time assertions (default disabled)]),,
984   [enable_debug="no"])
985 AH_TEMPLATE(NDEBUG,
986             [Define to 1 if debug code should NOT be compiled])
987 AS_IF([test "${enable_debug}" != "no"], [
988   AC_CHECK_HEADERS([valgrind/valgrind.h])
989 ], [
990   AC_DEFINE(NDEBUG)
994 dnl  Profiling
996 AC_ARG_ENABLE([gprof],
997   AS_HELP_STRING([--enable-gprof],[profile with gprof (default disabled)]),,
998   [enable_gprof="no"])
999 AS_IF([test "${enable_gprof}" != "no"], [
1000   CFLAGS="${CFLAGS} -pg"
1001   CXXFLAGS="${CXXFLAGS} -pg"
1002   OBJCFLAGS="${OBJCFLAGS} -pg"
1003   LDFLAGS="${LDFLAGS} -pg"
1006 AC_ARG_ENABLE([cprof],
1007   AS_HELP_STRING([--enable-cprof],[profile with cprof (default disabled)]),,
1008   [enable_cprof="no"])
1009 AS_IF([test "${enable_gprof}" != "no"], [
1010   CFLAGS="${CFLAGS} -finstrument-functions"
1011   CXXFLAGS="${CXXFLAGS} -finstrument-functions"
1012   OBJCFLAGS="${OBJCFLAGS} -finstrument-functions"
1013   LDFLAGS="${LDFLAGS} -finstrument-functions"
1017 dnl  Test coverage
1019 AC_ARG_ENABLE([coverage],
1020   AS_HELP_STRING([--enable-coverage],
1021     [build for test coverage (default disabled)]),,
1022   [enable_coverage="no"])
1023 AS_IF([test "${enable_coverage}" != "no"], [
1024   CFLAGS="-fprofile-arcs -ftest-coverage ${CFLAGS}"
1025   CXXFLAGS="-fprofile-arcs -ftest-coverage ${CXXFLAGS}"
1026   LDFLAGS="-lgcov ${LDFLAGS}"
1029 AS_IF([test "${SYS}" != "mingw32" -a "${SYS}" != "os2"], [
1030   VLC_SAVE_FLAGS
1031   CFLAGS="${CFLAGS} -fvisibility=hidden"
1032   CXXFLAGS="${CXXFLAGS} -fvisibility=hidden"
1033   OBJCFLAGS="${OBJCFLAGS} -fvisibility=hidden"
1034   AC_CACHE_CHECK([if $CC accepts -fvisibility=hidden],
1035                  [ac_cv_c_visibility_hidden], [
1036     AC_COMPILE_IFELSE([AC_LANG_PROGRAM()], [
1037       ac_cv_c_visibility_hidden=yes
1038     ], [
1039       ac_cv_c_visibility_hidden=no
1040     ])
1041   ])
1042   AS_IF([test "${ac_cv_c_visibility_hidden}" = "no"], [VLC_RESTORE_FLAGS])
1046 dnl Sanitizer flags
1048 AC_ARG_WITH([sanitizer],
1049     AS_HELP_STRING([--with-sanitizer=(address/memory/undefined/thread)],
1050         [build with sanitizer flags (default disabled)]),
1051      [],
1052      [with_sanitizer=no])
1054 AS_VAR_IF(with_sanitizer, no, [], [
1055     AX_CHECK_COMPILE_FLAG([-fsanitize=${with_sanitizer}], [
1056         AX_APPEND_FLAG([-fsanitize=${with_sanitizer}])
1057         AX_APPEND_FLAG([-fsanitize=${with_sanitizer}], [CXXFLAGS])
1058         AX_APPEND_FLAG([-fsanitize=${with_sanitizer}], [LDFLAGS])
1059     ], [
1060         AC_MSG_ERROR(["-fsanitize=${with_sanitizer} not supported!"])
1061     ])
1062     AX_APPEND_FLAG([-g])
1063     AX_APPEND_FLAG([-g], [CXXFLAGS])
1065     AS_IF([test -z "${with_sanitizer##*address*}" ], [
1066        AX_APPEND_COMPILE_FLAGS([-fsanitize-address-use-after-scope -fno-omit-frame-pointer -fsanitize=pointer-compare -fsanitize=pointer-subtract])
1067        AX_APPEND_COMPILE_FLAGS([-fsanitize-address-use-after-scope -fno-omit-frame-pointer -fsanitize=pointer-compare -fsanitize=pointer-subtract], [CXXFLAGS])
1068     ])
1069     AS_IF([test -z "${with_sanitizer##*memory*}" ], [
1070         AX_APPEND_COMPILE_FLAGS([-fPIE -pie])
1071         AX_APPEND_COMPILE_FLAGS([-fPIE -pie], [CXXFLAGS])
1072     ])
1073     AS_IF([test -z "${with_sanitizer##*thread*}" ], [
1074         AX_APPEND_COMPILE_FLAGS([-fPIE -pie])
1075         AX_APPEND_COMPILE_FLAGS([-fPIE -pie], [CXXFLAGS])
1076     ])
1080 dnl  Enable/disable optimizations
1082 AC_ARG_ENABLE([optimizations],
1083   AS_HELP_STRING([--disable-optimizations],
1084     [disable compiler optimizations (default enabled)]),,
1085   [enable_optimizations="yes"])
1087 dnl Check for various optimization flags
1088 AS_IF([test "${enable_optimizations}" != "no"], [
1090   dnl -O3 only in production builds
1091   AS_IF([test "${enable_debug}" = "no"], [
1092     VLC_SAVE_FLAGS
1093     CFLAGS="${CFLAGS} -O3"
1094     CXXFLAGS="${CXXFLAGS} -O3"
1095     OBJCFLAGS="${OBJCFLAGS} -O3"
1096     AC_CACHE_CHECK([if $CC accepts -O3],  [ac_cv_c_o3], [
1097       AC_COMPILE_IFELSE([AC_LANG_PROGRAM()], [
1098         ac_cv_c_o3=yes
1099       ], [
1100         ac_cv_c_o3=no
1101       ])
1102     ])
1103     AS_IF([test "${ac_cv_c_o3}" = "no"], [VLC_RESTORE_FLAGS])
1104   ])
1106   dnl Check for fast maths
1107   AX_APPEND_COMPILE_FLAGS([-fno-math-errno -funsafe-math-optimizations -fno-rounding-math -fno-signaling-nans -fcx-limited-range], [CFLAGS])
1108   AX_APPEND_COMPILE_FLAGS([-fno-math-errno -funsafe-math-optimizations -fno-rounding-math -fno-signaling-nans -fcx-limited-range], [CXXFLAGS])
1110 AH_BOTTOM([
1111 #if defined(_MSC_VER) && !defined(__clang__)
1112 # pragma fenv_access(off)
1113 # pragma fp_contract(on)
1114 #elif defined(__GNUC__)
1115 /* Not supported so far */
1116 #else
1117 # pragma STDC FENV_ACCESS OFF
1118 # pragma STDC FP_CONTRACT ON
1119 #endif
1122   dnl Check for -funroll-loops
1123   VLC_SAVE_FLAGS
1124   CFLAGS="${CFLAGS} -funroll-loops"
1125   CXXFLAGS="${CXXFLAGS} -funroll-loops"
1126   OBJCFLAGS="${OBJCFLAGS} -funroll-loops"
1127   AC_CACHE_CHECK([if $CC accepts -funroll-loops], [ac_cv_c_unroll_loops], [
1128     AC_COMPILE_IFELSE([AC_LANG_PROGRAM()], [
1129       ac_cv_c_unroll_loops=yes
1130     ], [
1131       ac_cv_c_unroll_loops=no
1132     ])
1133   ])
1134   AS_IF([test "${ac_cv_c_unroll_loops}" = "no"], [VLC_RESTORE_FLAGS])
1136   AS_IF([test "$enable_debug" = "no"], [
1137     dnl Check for -fomit-frame-pointer
1138     VLC_SAVE_FLAGS
1139     CFLAGS="${CFLAGS} -fomit-frame-pointer"
1140     CXXFLAGS="${CXXFLAGS} -fomit-frame-pointer"
1141     OBJCFLAGS="${OBJCFLAGS} -fomit-frame-pointer"
1142     AC_CACHE_CHECK([if $CC accepts -fomit-frame-pointer],
1143       [ac_cv_c_omit_frame_pointer], [
1144       AC_COMPILE_IFELSE([AC_LANG_PROGRAM()], [
1145         ac_cv_c_omit_frame_pointer=yes
1146       ], [
1147         ac_cv_c_omit_frame_pointer=no
1148       ])
1149     ])
1150     AS_IF([test "${ac_cv_c_omit_frame_pointer}" = "no"], [VLC_RESTORE_FLAGS])
1151   ])
1155 AC_ARG_ENABLE([ssp],
1156   AS_HELP_STRING([--disable-ssp],
1157   [disable stack smashing protection (default enabled for optimized builds)]), [],
1158   [enable_ssp="yes"])
1160 AS_IF([test "${enable_ssp}" != "no" -a "${enable_optimizations}" != "no"], [
1161   VLC_SAVE_FLAGS
1162   AX_APPEND_COMPILE_FLAGS([-fstack-protector-strong])
1163   AX_APPEND_COMPILE_FLAGS([-fstack-protector-strong], [CXXFLAGS])
1164   dnl Win32 requires linking to ssp for stack-protection
1165   AS_IF([test "${SYS}" = "mingw32"], [
1166       LDFLAGS="${LDFLAGS} -lssp"
1167       AC_CACHE_CHECK([if linker supports stack protectors], [ac_cv_ld_ssp], [
1168         AC_TRY_LINK([#include <stdio.h>],[char buf[100]; fgets(buf, sizeof(buf), stdin);], [
1169           ac_cv_ld_ssp="yes"
1170         ], [
1171           ac_cv_ld_ssp="no"
1172         ])
1173       ])
1174       AS_IF([test "${ac_cv_ld_ssp}" = "no"], [VLC_RESTORE_FLAGS])
1175   ])
1178 AS_IF([test "${SYS}" = "mingw32"], [
1179     dnl library for BCrypt APIs
1180     AS_IF([test "${vlc_winstore_app}" = 1],
1181           [LDFLAGS="${LDFLAGS} -lbcrypt"])
1184 VLC_SAVE_FLAGS
1185 LDFLAGS="${LDFLAGS} -Wl,-Bsymbolic"
1186 AC_CACHE_CHECK([if linker supports -Bsymbolic], [ac_cv_ld_bsymbolic], [
1187   AC_TRY_LINK([],, [
1188     ac_cv_ld_bsymbolic="-Wl,-Bsymbolic"
1189   ], [
1190     ac_cv_ld_bsymbolic=""
1191   ])
1193 VLC_RESTORE_FLAGS
1194 SYMBOLIC_LDFLAGS="${ac_cv_ld_bsymbolic}"
1195 AC_SUBST([SYMBOLIC_LDFLAGS])
1197 VLC_SAVE_FLAGS
1198 LDFLAGS="${LDFLAGS} -Wl,-z,defs"
1199 AC_CACHE_CHECK([if linker supports -z,defs], [ac_cv_ld_z_defs], [
1200   AC_TRY_LINK([],, [
1201     ac_cv_ld_z_defs="yes"
1202   ], [
1203     ac_cv_ld_z_defs="no"
1204   ])
1206 AS_IF([test "${ac_cv_ld_z_defs}" = "no"], [VLC_RESTORE_FLAGS])
1208 dnl Check for __attribute__((packed))
1209 AC_CACHE_CHECK([for __attribute__((packed))],
1210   [ac_cv_c_attribute_packed],
1211   [ac_cv_c_attribute_packed=no
1212    AC_TRY_COMPILE(, [struct __attribute__((__packed__)) foo { int a; } b; (void)b;],
1213                     [ac_cv_c_attribute_packed=yes])])
1214 if test "${ac_cv_c_attribute_packed}" != "no"; then
1215   AC_DEFINE(HAVE_ATTRIBUTE_PACKED, 1, Support for __attribute__((packed)) for structs)
1219 dnl  Check the CPU
1221 case "${host_cpu}" in
1222   "")
1223     ARCH=unknown
1224     ;;
1225   armv*)
1226     ARCH="arm"
1227     host_cpu="arm"
1228     ;;
1229   *)
1230     ARCH="${host_cpu}"
1231     ;;
1232 esac
1234 dnl Check for backtrace() support
1235 AC_CHECK_HEADERS([execinfo.h])
1236 AC_CHECK_FUNCS([backtrace])
1239 dnl  default modules
1241 ALIASES="${ALIASES} cvlc rvlc"
1244 dnl  Accelerated modules
1247 dnl  Check for fully working MMX intrinsics
1248 dnl  We need support for -mmmx, we need <mmintrin.h>, and we also need a
1249 dnl  working compiler (http://gcc.gnu.org/bugzilla/show_bug.cgi?id=23963)
1250 AC_ARG_ENABLE([mmx],
1251   AS_HELP_STRING([--disable-mmx],
1252     [disable MMX optimizations (default auto)]),,[
1253   case "${host_cpu}" in
1254     i?86|x86_64)
1255       enable_mmx="yes"
1256       ;;
1257     *)
1258       enable_mmx="no"
1259       ;;
1260   esac
1262 have_mmx="no"
1263 have_mmxext="no"
1264 AS_IF([test "${enable_mmx}" != "no"], [
1265   ARCH="${ARCH} mmx"
1266   VLC_SAVE_FLAGS
1267   CFLAGS="${CFLAGS} -mmmx"
1268   AC_CACHE_CHECK([if $CC groks MMX intrinsics], [ac_cv_c_mmx_intrinsics], [
1269     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([
1270 [#include <mmintrin.h>
1271 #include <stdint.h>
1272 uint64_t frobzor;]], [
1273 [__m64 a, b, c;
1274 a = b = c = (__m64)frobzor;
1275 a = _mm_slli_pi16(a, 3);
1276 a = _mm_adds_pi16(a, b);
1277 c = _mm_srli_pi16(c, 8);
1278 c = _mm_slli_pi16(c, 3);
1279 b = _mm_adds_pi16(b, c);
1280 a = _mm_unpacklo_pi8(a, b);
1281 frobzor = (uint64_t)a;]])], [
1282       ac_cv_c_mmx_intrinsics=yes
1283     ], [
1284       ac_cv_c_mmx_intrinsics=no
1285     ])
1286   ])
1287   VLC_RESTORE_FLAGS
1288   AS_IF([test "${ac_cv_c_mmx_intrinsics}" != "no"], [
1289     AC_DEFINE(HAVE_MMX_INTRINSICS, 1, [Define to 1 if MMX intrinsics are available.])
1290   ])
1292   VLC_SAVE_FLAGS
1293   CFLAGS="${CFLAGS} -mmmx"
1294   AC_CACHE_CHECK([if $CC groks MMX inline assembly], [ac_cv_mmx_inline], [
1295     AC_COMPILE_IFELSE([AC_LANG_PROGRAM(,[[
1296 void *p;
1297 asm volatile("packuswb %%mm1,%%mm2"::"r"(p):"mm1", "mm2");
1299     ], [
1300       ac_cv_mmx_inline=yes
1301     ], [
1302       ac_cv_mmx_inline=no
1303     ])
1304   ])
1305   AS_IF([test "${ac_cv_mmx_inline}" != "no"], [
1306     AC_DEFINE(CAN_COMPILE_MMX, 1, [Define to 1 inline MMX assembly is available.])
1307     have_mmx="yes"
1308   ])
1310   AC_CACHE_CHECK([if $CC groks MMX EXT inline assembly],
1311                  [ac_cv_mmxext_inline], [
1312     AC_COMPILE_IFELSE([AC_LANG_PROGRAM(,[[
1313 void *p;
1314 asm volatile("maskmovq %%mm1,%%mm2"::"r"(p):"mm1", "mm2");
1316     ], [
1317       ac_cv_mmxext_inline=yes
1318     ], [
1319       ac_cv_mmxext_inline=no
1320     ])
1321   ])
1322   VLC_RESTORE_FLAGS
1323   AS_IF([test "${ac_cv_mmxext_inline}" != "no"], [
1324     AC_DEFINE(CAN_COMPILE_MMXEXT, 1, [Define to 1 if MMX EXT inline assembly is available.])
1325     have_mmxext="yes"
1326   ])
1328 AM_CONDITIONAL([HAVE_MMX], [test "${have_mmx}" = "yes"])
1329 AM_CONDITIONAL([HAVE_MMXEXT], [test "${have_mmxext}" = "yes"])
1331 dnl  Check for fully workin SSE2 intrinsics
1332 dnl  We need support for -mmmx, we need <emmintrin.h>, and we also need a
1333 dnl  working compiler (http://gcc.gnu.org/bugzilla/show_bug.cgi?id=23963)
1334 AC_ARG_ENABLE([sse],
1335   AS_HELP_STRING([--disable-sse],
1336     [disable SSE (1-4) optimizations (default auto)]),, [
1337   case "${host_cpu}" in
1338     i?86|x86_64)
1339       enable_sse=yes
1340       ;;
1341     *)
1342       enable_sse=no
1343       ;;
1344   esac
1346 have_sse2="no"
1347 AS_IF([test "${enable_sse}" != "no"], [
1348   ARCH="${ARCH} sse sse2"
1350   VLC_SAVE_FLAGS
1351   CFLAGS="${CFLAGS} -msse2"
1352   AC_CACHE_CHECK([if $CC groks SSE2 intrinsics], [ac_cv_c_sse2_intrinsics], [
1353     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([
1354 [#include <emmintrin.h>
1355 #include <stdint.h>
1356 uint64_t frobzor;]], [
1357 [__m128i a, b, c;
1358 a = b = c = _mm_set1_epi64((__m64)frobzor);
1359 a = _mm_slli_epi16(a, 3);
1360 a = _mm_adds_epi16(a, b);
1361 c = _mm_srli_epi16(c, 8);
1362 c = _mm_slli_epi16(c, 3);
1363 b = _mm_adds_epi16(b, c);
1364 a = _mm_unpacklo_epi8(a, b);
1365 frobzor = (uint64_t)_mm_movepi64_pi64(a);]])], [
1366       ac_cv_c_sse2_intrinsics=yes
1367     ], [
1368       ac_cv_c_sse2_intrinsics=no
1369     ])
1370   ])
1371   VLC_RESTORE_FLAGS
1372   AS_IF([test "${ac_cv_c_sse2_intrinsics}" != "no"], [
1373     AC_DEFINE(HAVE_SSE2_INTRINSICS, 1, [Define to 1 if SSE2 intrinsics are available.])
1374   ])
1376   VLC_SAVE_FLAGS
1377   CFLAGS="${CFLAGS} -msse"
1378   AC_CACHE_CHECK([if $CC groks SSE inline assembly], [ac_cv_sse_inline], [
1379     AC_COMPILE_IFELSE([AC_LANG_PROGRAM(,[[
1380 void *p;
1381 asm volatile("xorps %%xmm1,%%xmm2"::"r"(p):"xmm1", "xmm2");
1383     ], [
1384       ac_cv_sse_inline=yes
1385     ], [
1386       ac_cv_sse_inline=no
1387     ])
1388   ])
1390   AS_IF([test "${ac_cv_sse_inline}" != "no" -a "${SYS}" != "solaris"], [
1391     AC_DEFINE(CAN_COMPILE_SSE, 1, [Define to 1 if SSE inline assembly is available.])
1392   ])
1394   AC_CACHE_CHECK([if $CC groks SSE2 inline assembly], [ac_cv_sse2_inline], [
1395     AC_COMPILE_IFELSE([AC_LANG_PROGRAM(,[[
1396 void *p;
1397 asm volatile("punpckhqdq %%xmm1,%%xmm2"::"r"(p):"xmm1", "xmm2");
1399     ], [
1400       ac_cv_sse2_inline=yes
1401     ], [
1402       ac_cv_sse2_inline=no
1403     ])
1404   ])
1405   AS_IF([test "${ac_cv_sse2_inline}" != "no" -a "${SYS}" != "solaris"], [
1406     AC_DEFINE(CAN_COMPILE_SSE2, 1, [Define to 1 if SSE2 inline assembly is available.])
1407     have_sse2="yes"
1408   ])
1410   # SSE3
1411   AC_CACHE_CHECK([if $CC groks SSE3 inline assembly], [ac_cv_sse3_inline], [
1412     AC_COMPILE_IFELSE([AC_LANG_PROGRAM(,[[
1413 void *p;
1414 asm volatile("movsldup %%xmm1,%%xmm0"::"r"(p):"xmm0", "xmm1");
1416     ], [
1417       ac_cv_sse3_inline=yes
1418     ], [
1419       ac_cv_sse3_inline=no
1420     ])
1421   ])
1423   AS_IF([test "${ac_cv_sse3_inline}" != "no"], [
1424     AC_DEFINE(CAN_COMPILE_SSE3, 1, [Define to 1 if SSE3 inline assembly is available.]) ])
1425   # SSSE3
1426   AC_CACHE_CHECK([if $CC groks SSSE3 inline assembly], [ac_cv_ssse3_inline], [
1427     AC_COMPILE_IFELSE([AC_LANG_PROGRAM(,[[
1428 void *p;
1429 asm volatile("pabsw %%xmm0,%%xmm0"::"r"(p):"xmm0");
1431     ], [
1432       ac_cv_ssse3_inline=yes
1433     ], [
1434       ac_cv_ssse3_inline=no
1435     ])
1436   ])
1438   AS_IF([test "${ac_cv_ssse3_inline}" != "no"], [
1439     AC_DEFINE(CAN_COMPILE_SSSE3, 1, [Define to 1 if SSSE3 inline assembly is available.]) ])
1441   # SSE4.1
1442   AC_CACHE_CHECK([if $CC groks SSE4.1 inline assembly],
1443                  [ac_cv_sse4_1_inline], [
1444     AC_COMPILE_IFELSE([AC_LANG_PROGRAM(,[[
1445 void *p;
1446 asm volatile("pmaxsb %%xmm1,%%xmm0"::"r"(p):"xmm0", "xmm1");
1448     ], [
1449       ac_cv_sse4_1_inline=yes
1450     ], [
1451       ac_cv_sse4_1_inline=no
1452     ])
1453   ])
1455   AS_IF([test "${ac_cv_sse4_1_inline}" != "no"], [
1456     AC_DEFINE(CAN_COMPILE_SSE4_1, 1, [Define to 1 if SSE4_1 inline assembly is available.]) ])
1458   # SSE4.2
1459   AC_CACHE_CHECK([if $CC groks SSE4.2 inline assembly],
1460                  [ac_cv_sse4_2_inline], [
1461     AC_COMPILE_IFELSE([AC_LANG_PROGRAM(,[[
1462 void *p;
1463 asm volatile("pcmpgtq %%xmm1,%%xmm0"::"r"(p):"xmm0", "xmm1");
1465     ], [
1466       ac_cv_sse4_2_inline=yes
1467     ], [
1468       ac_cv_sse4_2_inline=no
1469     ])
1470   ])
1472   AS_IF([test "${ac_cv_sse4_2_inline}" != "no"], [
1473     AC_DEFINE(CAN_COMPILE_SSE4_2, 1, [Define to 1 if SSE4_2 inline assembly is available.]) ])
1475   # SSE4A
1476   AC_CACHE_CHECK([if $CC groks SSE4A inline assembly], [ac_cv_sse4a_inline], [
1477     AC_COMPILE_IFELSE([AC_LANG_PROGRAM(,[[
1478 void *p;
1479 asm volatile("insertq %%xmm1,%%xmm0"::"r"(p):"xmm0", "xmm1");
1481     ], [
1482       ac_cv_sse4a_inline=yes
1483     ], [
1484       ac_cv_sse4a_inline=no
1485     ])
1486   ])
1487   VLC_RESTORE_FLAGS
1488   AS_IF([test "${ac_cv_sse4a_inline}" != "no"], [
1489     AC_DEFINE([CAN_COMPILE_SSE4A], [1], [Define to 1 if SSE4A inline assembly is available.]) ])
1491 AM_CONDITIONAL([HAVE_SSE2], [test "$have_sse2" = "yes"])
1493 VLC_SAVE_FLAGS
1494 CFLAGS="${CFLAGS} -mmmx"
1495 have_3dnow="no"
1496 AC_CACHE_CHECK([if $CC groks 3D Now! inline assembly], [ac_cv_3dnow_inline], [
1497   AC_COMPILE_IFELSE([AC_LANG_PROGRAM(,[[
1498 void *p;
1499 asm volatile("pfadd %%mm1,%%mm2"::"r"(p):"mm1", "mm2");
1501   ], [
1502     ac_cv_3dnow_inline=yes
1503   ], [
1504     ac_cv_3dnow_inline=no
1505   ])
1507 VLC_RESTORE_FLAGS
1508 AS_IF([test "${ac_cv_3dnow_inline}" != "no"], [
1509   AC_DEFINE([CAN_COMPILE_3DNOW], 1,
1510             [Define to 1 if 3D Now! inline assembly is available.])
1511   have_3dnow="yes"
1513 AM_CONDITIONAL([HAVE_3DNOW], [test "$have_3dnow" = "yes"])
1516 AC_ARG_ENABLE([neon],
1517   AS_HELP_STRING([--disable-neon],
1518     [disable ARM NEON optimizations (default auto)]),, [
1519   case "${host_cpu}" in
1520     "arm")
1521       enable_neon="32"
1522       ;;
1523     "aarch64")
1524       enable_neon="64"
1525       ;;
1526     *)
1527       enable_neon="no"
1528       ;;
1529   esac
1531 AS_IF([test "${enable_neon}" != "no"], [
1532   VLC_SAVE_FLAGS
1533   AC_CACHE_CHECK([if $CCAS groks ARM NEON assembly], [ac_cv_arm_neon], [
1534     AS_IF([test "${enable_neon}" != "64"], [
1535       CFLAGS="${CFLAGS} -mfpu=neon -mhard-float"
1536       AC_COMPILE_IFELSE([
1537         AC_LANG_PROGRAM(,[[
1538 asm volatile("vqmovun.s64 d0, q1":::"d0");
1540       ], [
1541         ac_cv_arm_neon="32"
1542       ], [
1543         ac_cv_arm_neon="no"
1544       ])
1545     ], [
1546       CFLAGS="${CFLAGS} -march=armv8-a+simd"
1547       AC_COMPILE_IFELSE([
1548         AC_LANG_PROGRAM(,[[
1549 asm volatile("uhadd v0.8b, v0.8b, v1.8b":::"v0");
1551       ], [
1552         ac_cv_arm_neon="64"
1553       ], [
1554         ac_cv_arm_neon="no"
1555       ])
1556     ])
1557   ])
1558   VLC_RESTORE_FLAGS
1560 AM_CONDITIONAL([HAVE_NEON], [test "${ac_cv_arm_neon}" = "32"])
1561 AM_CONDITIONAL([HAVE_ARM64], [test "${ac_cv_arm_neon}" = "64"])
1563 AC_ARG_ENABLE([sve],
1564   AS_HELP_STRING([--disable-sve],
1565     [disable ARM SVE optimizations (default auto)]),, [
1566   AS_IF([test "${host_cpu}" = "aarch64"], [enable_sve="yes"] ,[enable_sve="no"])
1568 AS_IF([test "${enable_sve}" != "no"], [
1569   VLC_SAVE_FLAGS
1570   CFLAGS="${CFLAGS} -march=armv8-a+sve"
1571   AC_CACHE_CHECK([if $CCAS groks ARM SVE assembly], [ac_cv_arm_sve], [
1572     AC_COMPILE_IFELSE([
1573       AC_LANG_PROGRAM(,[[
1574 asm volatile("ptrue p0.s" ::: "p0");
1576     ], [
1577       ac_cv_arm_sve="yes"
1578     ], [
1579       ac_cv_arm_sve="no"
1580     ])
1581   ])
1582   VLC_RESTORE_FLAGS
1584 AM_CONDITIONAL([HAVE_SVE], [test "${ac_cv_arm_sve}" = "yes"])
1587 AC_ARG_ENABLE([altivec],
1588   AS_HELP_STRING([--disable-altivec],
1589     [disable AltiVec optimizations (default auto)]),, [
1590   AS_CASE("${host_cpu}", [powerpc*],
1591         [enable_altivec=yes], [enable_altivec=no])
1593 have_altivec="no"
1594 ALTIVEC_CFLAGS=""
1595 AS_IF([test "${enable_altivec}" = "yes"], [
1596   ARCH="${ARCH} altivec";
1597   VLC_SAVE_FLAGS
1598   AC_CACHE_CHECK([if $CC groks AltiVec inline assembly],
1599     [ac_cv_altivec_inline],
1600     [AC_TRY_COMPILE(,[asm volatile("vperm 0,1,2,3");],
1601          ac_cv_altivec_inline="yes",
1602          [CFLAGS="${CFLAGS} -Wa,-maltivec"
1603           AC_TRY_COMPILE(,[asm volatile("vperm 0,1,2,3");],
1604             [ac_cv_altivec_inline="-Wa,-maltivec"],
1605             ac_cv_altivec_inline=no)
1606          ])])
1607   VLC_RESTORE_FLAGS
1608   AS_IF([test "${ac_cv_altivec_inline}" != "no"], [
1609     AC_DEFINE(CAN_COMPILE_ALTIVEC, 1,
1610               [Define to 1 if AltiVec inline assembly is available.])
1611     AS_IF([test "${ac_cv_altivec_inline}" != "yes"], [
1612       ALTIVEC_CFLAGS="${ac_cv_altivec_inline}"
1613       VLC_ADD_CFLAGS([libvlccore],[${ac_cv_altivec_inline}])
1614     ])
1615     have_altivec="yes"
1616   ])
1618   VLC_SAVE_FLAGS
1619   AC_CACHE_CHECK([if \$CC groks AltiVec C extensions],
1620   [ac_cv_c_altivec], [
1621     CFLAGS="${CFLAGS} -maltivec"
1622     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([
1623 [#include <altivec.h>]], [
1624 [vec_ld(0, (unsigned char *)0);]])], [
1625       ac_cv_c_altivec="-maltivec"
1626     ], [
1627       ac_cv_c_altivec="no"
1628     ])
1629   ])
1630   VLC_RESTORE_FLAGS
1631   AS_IF([test "${ac_cv_c_altivec}" != "no"], [
1632     CPPFLAGS="${CPPFLAGS} ${ac_cv_c_altivec}"
1633     AC_DEFINE(CAN_COMPILE_C_ALTIVEC, 1, [Define to 1 if C AltiVec extensions are available.])
1634     VLC_ADD_CFLAGS([libvlccore],[${ac_cv_c_altivec}])
1635     ALTIVEC_CFLAGS="$ALTIVEC_CFLAGS ${ac_cv_c_altivec}"
1636     VLC_ADD_CFLAGS([deinterlace],[${ac_cv_c_altivec}])
1637     have_altivec="yes"
1638   ])
1639   AC_CHECK_HEADERS([altivec.h])
1641   VLC_SAVE_FLAGS
1642   LDFLAGS="${LDFLAGS} -Wl,-framework,vecLib"
1643   AC_CACHE_CHECK([if linker needs -framework vecLib],
1644     [ac_cv_ld_altivec],
1645     [AC_TRY_LINK([],,ac_cv_ld_altivec=yes,ac_cv_ld_altivec=no)])
1646   VLC_RESTORE_FLAGS
1647   AS_IF([test "${ac_cv_ld_altivec}" != "no"], [
1648     VLC_ADD_LIBS([libvlccore],[-Wl,-framework,vecLib])
1649   ])
1651 AC_SUBST([ALTIVEC_CFLAGS])
1652 AM_CONDITIONAL([HAVE_ALTIVEC], [test "$have_altivec" = "yes"])
1655 dnl  Memory usage
1657 AC_ARG_ENABLE([optimize-memory],
1658   AS_HELP_STRING([--enable-optimize-memory],
1659     [optimize memory usage over performance]))
1660 if test "${enable_optimize_memory}" = "yes"; then
1661   AC_DEFINE(OPTIMIZE_MEMORY, 1, Define if you want to optimize memory usage over performance)
1665 dnl Allow running as root (useful for people running on embedded platforms)
1667 AC_ARG_ENABLE([run-as-root],
1668   AS_HELP_STRING([--enable-run-as-root],
1669     [allow running VLC as root (default disabled)]))
1670 AS_IF([test "${enable_run_as_root}" = "yes"],[
1671     AC_DEFINE(ALLOW_RUN_AS_ROOT, 1,
1672               [Define to 1 to allow running VLC as root (uid 0).])
1676 dnl Stream output
1678 AC_ARG_ENABLE([sout],
1679   AS_HELP_STRING([--disable-sout],
1680     [disable streaming output (default enabled)]))
1681 AS_IF([test "${enable_sout}" != "no"], [
1682   AC_DEFINE(ENABLE_SOUT, 1, [Define to 1 for stream output support.])
1684 AM_CONDITIONAL([ENABLE_SOUT], [test "${enable_sout}" != "no"])
1686 dnl Lua modules
1687 AC_ARG_ENABLE([lua],
1688   AS_HELP_STRING([--disable-lua],
1689     [disable LUA scripting support (default enabled)]))
1690 if test "${enable_lua}" != "no"
1691 then
1692   PKG_CHECK_MODULES(LUA, lua5.2,
1693     [ have_lua=yes ],
1694     [
1695     AC_MSG_WARN([${LUA_PKG_ERRORS}, trying lua 5.1 instead])
1697     PKG_CHECK_MODULES(LUA, lua5.1,
1698       [ have_lua=yes ],
1699       [
1700       AC_MSG_WARN([${LUA_PKG_ERRORS}, trying lua >= 5.1 instead])
1701       PKG_CHECK_MODULES(LUA, lua >= 5.1,
1702         [ have_lua=yes ],
1703         [
1704           AC_MSG_WARN([${LUA_PKG_ERRORS}, trying manual detection instead])
1705           have_lua=yes
1706           AC_CHECK_HEADERS([lua.h lauxlib.h lualib.h],
1707             [],
1708             [ have_lua=no ] )
1709           AC_CHECK_LIB(  lua5.2 , luaL_newstate,
1710             [LUA_LIBS="-llua5.2"],
1711           AC_CHECK_LIB( lua5.1 , luaL_newstate,
1712             [LUA_LIBS="-llua5.1"],
1713             AC_CHECK_LIB( lua51 , luaL_newstate,
1714               [LUA_LIBS="-llua51"],
1715               AC_CHECK_LIB( lua , luaL_newstate,
1716                 [LUA_LIBS="-llua"],
1717                 [ have_lua=no
1718                 ], [-lm])
1719             )))
1720         ])
1721       ])
1722     ])
1723   if test "x${have_lua}" != "xyes" ;  then
1724       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.])
1725   fi
1726   AC_ARG_VAR([LUAC], [LUA byte compiler])
1727   AS_IF([test -z "$LUAC"], [
1728      AC_CHECK_TOOL(LUAC, [luac], [false])
1729   ])
1730   AS_IF([test "${LUAC}" = "false"], [
1731     AC_MSG_ERROR([Could not find the LUA byte compiler.])
1732   ])
1733   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], [
1734     AC_MSG_ERROR([You need 32-bits luac when using lua from contrib.])
1735   ])
1737 AM_CONDITIONAL([BUILD_LUA], [test "${have_lua}" = "yes"])
1741 dnl VideoLAN manager
1743 AC_ARG_ENABLE([vlm],
1744   AS_HELP_STRING([--disable-vlm],
1745     [disable the stream manager (default enabled)]),,
1746   [enable_vlm="${enable_sout}"])
1747 AS_IF([test "${enable_vlm}" != "no"], [
1748   AS_IF([test "${enable_sout}" = "no"], [
1749     AC_MSG_ERROR([VLM requires the stream output. Do not use --disable-sout.])
1750   ])
1751   AC_DEFINE(ENABLE_VLM, 1, [Define if you want the VideoLAN manager support])
1753 AM_CONDITIONAL([ENABLE_VLM], [test "${enable_vlm}" != "no"])
1757 dnl Addons manager storage and repositories modules
1759 AC_ARG_ENABLE([addonmanagermodules],
1760   AS_HELP_STRING([--disable-addonmanagermodules],
1761     [disable the addons manager modules (default enabled)]))
1762 if test "${enable_addonmanagermodules}" != "no"
1763 then
1764   AC_DEFINE(ENABLE_ADDONMANAGERMODULES, 1, [Define if you want the addons manager modules])
1766 AM_CONDITIONAL([ENABLE_ADDONMANAGERMODULES], [test "${enable_addonmanagermodules}" != "no"])
1770 dnl  Input plugins
1773 EXTEND_HELP_STRING([Input plugins:])
1776 dnl  libarchive access module
1778 PKG_ENABLE_MODULES_VLC([ARCHIVE], [archive], [libarchive >= 3.1.0], (libarchive support), [auto])
1781 dnl  live555 input
1783 AC_ARG_ENABLE([live555],
1784   AS_HELP_STRING([--enable-live555],
1785     [enable RTSP input through live555 (default enabled)]))
1787 AS_IF([test "${enable_live555}" != "no" -a -n "${CXX}"], [
1788   PKG_CHECK_MODULES(LIVE555, live555, [
1789     VLC_ADD_PLUGIN([live555])
1790     VLC_ADD_CXXFLAGS([live555], [$LIVE555_CFLAGS])
1791     VLC_ADD_LIBS([live555],[$LIVE555_LIBS])
1792   ], [
1793     AC_MSG_WARN([${LIVE555_PKG_ERRORS}.])
1795     AC_LANG_PUSH(C++)
1796     VLC_SAVE_FLAGS
1798     dnl detect include paths
1799     AS_IF([test -f "${CONTRIB_DIR}/include/UsageEnvironment/UsageEnvironment.hh"], [
1800       CPPFLAGS_live555="-I${CONTRIB_DIR}/include/liveMedia -I${CONTRIB_DIR}/include/groupsock -I${CONTRIB_DIR}/include/BasicUsageEnvironment -I${CONTRIB_DIR}/include/UsageEnvironment"
1801     ], [
1802       AS_IF([test "${SYS}" != "os2"], [
1803         LIVE555_PREFIX=${LIVE555_PREFIX-"/usr"}
1804         CPPFLAGS_live555="-I${LIVE555_PREFIX}/include/liveMedia -I${LIVE555_PREFIX}/include/groupsock -I${LIVE555_PREFIX}/include/BasicUsageEnvironment -I${LIVE555_PREFIX}/include/UsageEnvironment"
1805       ], [
1806         LIVE555_PREFIX=${LIVE555_PREFIX-"/usr/lib/live"}
1807         CPPFLAGS_live555="-I${LIVE555_PREFIX}/liveMedia/include -I${LIVE555_PREFIX}/groupsock/include -I${LIVE555_PREFIX}/BasicUsageEnvironment/include -I${LIVE555_PREFIX}/UsageEnvironment/include"
1808         LDFLAGS_live555="-L${LIVE555_PREFIX}/liveMedia -L${LIVE555_PREFIX}/groupsock -L${LIVE555_PREFIX}/BasicUsageEnvironment -L${LIVE555_PREFIX}/UsageEnvironment"
1809       ])
1810     ])
1812     dnl CPP Flags
1813     AS_IF([test "${SYS}" = "solaris"], [
1814       CPPFLAGS_live555="${CPPFLAGS_live555} -DSOLARIS"
1815     ])
1816     CPPFLAGS="${CPPFLAGS} ${CPPFLAGS_live555}"
1817     LDFLAGS="${LDFLAGS} ${LDFLAGS_live555}"
1819     dnl version check
1820     AC_CACHE_CHECK([for live555 version 1324598400 or later], [ac_cv_live555], [
1821       AC_PREPROC_IFELSE([AC_LANG_PROGRAM([
1822 [#include <liveMedia_version.hh>
1823 #if !defined (LIVEMEDIA_LIBRARY_VERSION_INT) || (LIVEMEDIA_LIBRARY_VERSION_INT < 1324598400)
1824 # error BOOM
1825 #endif]])
1826       ], [
1827         ac_cv_live555="yes"
1828       ], [
1829         ac_cv_live555="no"
1830       ])
1831     ])
1833     AS_IF([test "$ac_cv_live555" = "no"], [
1834       AC_MSG_WARN([live555 is missing or its installed version is too old:
1835 Version 2011.12.23 or later is required to proceed.
1836 You can get an updated one from http://www.live555.com/liveMedia .])
1837       AS_IF([test -n "${enable_live555}"], [
1838         AC_MSG_ERROR([Update live555 or pass --disable-live555 to disable RTSP input support.])
1839       ])
1840     ], [
1841       other_libs="-lgroupsock -lBasicUsageEnvironment -lUsageEnvironment"
1842       other_libs_pic="-lgroupsock_pic -lBasicUsageEnvironment_pic -lUsageEnvironment_pic"
1843       AS_IF([test "${SYS}" = "mingw32"], [
1844         # add ws2_32 for closesocket, select, recv
1845         other_libs="$other_libs -lws2_32"
1846       ])
1848       dnl We need to check for pic because live555 don't provide shared libs
1849       dnl and we want to build a plugins so we need -fPIC on some arch.
1850       VLC_ADD_CXXFLAGS([live555], [${CPPFLAGS_live555}])
1851       VLC_ADD_LDFLAGS([live555], [${LDFLAGS_live555}])
1852       AC_CHECK_LIB([liveMedia_pic], [main], [
1853         VLC_ADD_PLUGIN([live555])
1854         VLC_ADD_LIBS([live555], [-lliveMedia_pic ${other_libs_pic}])
1855       ],[
1856         AC_CHECK_LIB([liveMedia], [main], [
1857           VLC_ADD_PLUGIN([live555])
1858           VLC_ADD_LIBS([live555], [-lliveMedia ${other_libs}])
1859         ],[],[${other_libs}])
1860       ],[${other_libs_pic}])
1861     ])
1862     VLC_RESTORE_FLAGS
1863     AC_LANG_POP(C++)
1864   ])
1868 dnl IIDC and DV FireWire input modules
1870 PKG_ENABLE_MODULES_VLC([DC1394], [], [libdc1394-2 >= 2.1.0], [IIDC FireWire input module], [auto])
1871 PKG_ENABLE_MODULES_VLC([DV1394], [], [libraw1394 >= 2.0.1 libavc1394 >= 0.5.3], [DV FireWire input module], [auto])
1874 dnl - linsys modules: access module check for libzvbi
1876 AC_ARG_ENABLE([linsys],
1877   AS_HELP_STRING([--enable-linsys],
1878     [Linux Linear Systems Ltd. SDI and HD-SDI input cards (default enabled)]))
1879 AS_IF([test "$SYS" = "linux" -a "${enable_linsys}" != "no"], [
1880   VLC_ADD_PLUGIN([linsys_hdsdi])
1881   PKG_CHECK_MODULES(LINSYS_SDI, [zvbi-0.2 >= 0.2.28], [
1882     VLC_ADD_PLUGIN([linsys_sdi])
1883   ], [
1884     AC_MSG_WARN([${LINSYS_SDI_PKG_ERRORS}.])
1885   ])
1889 dnl dvdread module: check for libdvdread
1891 PKG_ENABLE_MODULES_VLC([DVDREAD], [], [dvdread > 4.9.0], [dvdread input module], [auto])
1894 dnl libdvdnav plugin
1896 PKG_ENABLE_MODULES_VLC([DVDNAV], [], [dvdnav > 4.9.0], [DVD with navigation input module (dvdnav)], [auto])
1897 AS_IF([test "${enable_dvdnav}" != "no"], [
1898   AC_MSG_CHECKING(for dvdnav_stream_cb in dvdnav/dvdnav.h)
1899     AC_EGREP_HEADER(dvdnav_stream_cb,dvdnav/dvdnav.h,[
1900       AC_MSG_RESULT(yes)
1901       AC_DEFINE(HAVE_STREAM_CB_IN_DVDNAV_H, 1, For dvdnav demux support)
1902       ],[
1903       AC_MSG_RESULT(no)
1904     ])
1908 dnl  Blu-ray Disc Support with libbluray
1910 PKG_ENABLE_MODULES_VLC([BLURAY], [libbluray], [libbluray >= 0.6.2], (libbluray for Blu-ray disc support ) )
1913 dnl  OpenCV wrapper and example filters
1915 PKG_ENABLE_MODULES_VLC([OPENCV], [opencv_example opencv_wrapper], [opencv > 2.0], (OpenCV (computer vision) filter), [auto])
1919 dnl  libsmbclient plugin
1921 PKG_ENABLE_MODULES_VLC([SMBCLIENT], [smbc], [smbclient], (SMB/CIFS support), [auto])
1924 dnl  liBDSM access module
1926 AM_CONDITIONAL([HAVE_DSM], [test "$AS_TR_SH(with_dsm)" = "yes"])
1927 PKG_WITH_MODULES([DSM], [libdsm >= 0.2.0], [
1928        VLC_ADD_PLUGIN([dsm])
1929        VLC_ADD_CFLAGS([dsm], [$DSM_CFLAGS])
1930        VLC_ADD_LIBS([dsm], [$DSM_LIBS])
1931        have_dsm="yes"
1932    ],,[libdsm SMB/CIFS access/sd module], [auto])
1933 AM_CONDITIONAL([HAVE_DSM], [test "${have_dsm}" = "yes"])
1936 dnl sftp access support
1938 PKG_ENABLE_MODULES_VLC([SFTP], [sftp], [libssh2], (support SFTP file transfer via libssh2), [auto])
1941 dnl nfs access support
1943 PKG_ENABLE_MODULES_VLC([NFS], [nfs], [libnfs >= 1.10.0], (support nfs protocol via libnfs), [auto])
1946 dnl smb2 access support
1948 PKG_ENABLE_MODULES_VLC([SMB2], [smb2], [libsmb2 >= 2.0.0], (support smb2 protocol via libsmb2), [auto])
1951 dnl  Video4Linux 2
1953 AC_ARG_ENABLE([v4l2], AS_HELP_STRING([--disable-v4l2],
1954   [disable Video4Linux version 2 (default auto)]))
1955 have_v4l2="no"
1956 AS_IF([test "$enable_v4l2" != "no"], [
1957   AC_CHECK_HEADERS([linux/videodev2.h], [
1958     have_v4l2="yes"
1959   ])
1961 AM_CONDITIONAL([HAVE_V4L2], [test "${have_v4l2}" != "no"])
1964 dnl special access module for Blackmagic SDI cards
1966 AC_ARG_ENABLE([decklink],
1967   AS_HELP_STRING([--disable-decklink],
1968     [disable Blackmagic DeckLink SDI input (default auto)]))
1969 AC_ARG_WITH([decklink_sdk],
1970   AS_HELP_STRING([--with-decklink-sdk=DIR],
1971     [location of Blackmagic DeckLink SDI SDK]))
1972 have_decklink=no
1973 if test "${enable_decklink}" != "no"
1974 then
1975   if test "${with_decklink_sdk}" != "no" -a -n "${with_decklink_sdk}"
1976   then
1977     VLC_ADD_CPPFLAGS([decklink decklinkoutput stream_out_sdi],[-I${with_decklink_sdk}/include])
1978   fi
1979   VLC_SAVE_FLAGS
1980   CPPFLAGS="${CPPFLAGS} ${CPPFLAGS_decklink}"
1981   AC_LANG_PUSH([C++])
1982   AC_CHECK_HEADERS([DeckLinkAPIDispatch.cpp], [
1983       have_decklink=yes
1984       AS_IF([test "${SYS}" = "darwin"], [
1985         VLC_ADD_LIBS([decklink decklinkoutput],[-Wl,-framework,CoreFoundation])
1986       ])
1987   ], [
1988       AS_IF([test "${enable_decklink}" = "yes"], [
1989         AC_MSG_ERROR([Blackmagic DeckLink SDI include files not found!])
1990       ], [
1991         AC_MSG_WARN([Blackmagic DeckLink SDI include files not found, decklink disabled])
1992       ])
1993   ])
1994   AC_LANG_POP([C++])
1995   VLC_RESTORE_FLAGS
1997 AM_CONDITIONAL([HAVE_DECKLINK], [ test "${have_decklink}" != "no" ])
2001 dnl  Built-in CD-DA and VCD module
2003 AC_ARG_ENABLE([vcd],
2004   AS_HELP_STRING([--disable-vcd],
2005     [disable built-in VCD and CD-DA support (default enabled)]))
2007 AC_ARG_ENABLE([libcddb],
2008   AS_HELP_STRING([--disable-libcddb],
2009     [disable CDDB for Audio CD (default enabled)]))
2011 if test "${enable_vcd}" != "no"
2012 then
2013   AC_MSG_CHECKING(for cdrom_msf0 in linux/cdrom.h)
2014   AC_EGREP_HEADER(cdrom_msf0,linux/cdrom.h,[
2015     AC_MSG_RESULT(yes)
2016     VLC_ADD_PLUGIN([vcd cdda])
2017   ],[
2018     AC_MSG_RESULT(no)
2019   ])
2021   AC_MSG_CHECKING(for scsireq in sys/scsiio.h)
2022   AC_EGREP_HEADER(scsireq,sys/scsiio.h,[
2023     AC_MSG_RESULT(yes)
2024     VLC_ADD_PLUGIN([vcd cdda])
2025     AC_DEFINE(HAVE_SCSIREQ_IN_SYS_SCSIIO_H, 1, For NetBSD VCD support)
2026   ],[
2027     AC_MSG_RESULT(no)
2028   ])
2030   AC_MSG_CHECKING(for ioc_toc_header in sys/cdio.h)
2031   AC_EGREP_HEADER(ioc_toc_header ,sys/cdio.h,[
2032     AC_MSG_RESULT(yes)
2033     VLC_ADD_PLUGIN([vcd cdda])
2034     AC_DEFINE(HAVE_IOC_TOC_HEADER_IN_SYS_CDIO_H, 1, For FreeBSD VCD support)
2035   ],[
2036     AC_MSG_RESULT(no)
2037   ])
2039   if test "${SYS}" = "bsdi" -o "${SYS}" = "mingw32" -o "${SYS}" = "os2" -o "${SYS}" = "darwin"
2040   then
2041     VLC_ADD_PLUGIN([vcd cdda])
2042   fi
2044   if test "$enable_libcddb" != "no"; then
2045     PKG_CHECK_MODULES(LIBCDDB, [libcddb >= 0.9.5], [
2046       HAVE_LIBCDDB=yes
2047       AC_DEFINE(HAVE_LIBCDDB, 1, [Define this if you have libcddb installed])
2048       VLC_ADD_LIBS([cdda],[$LIBCDDB_LIBS])
2049       VLC_ADD_CFLAGS([cdda],[$LIBCDDB_CFLAGS])
2050       ],:
2051       [AC_MSG_WARN([${LIBCDDB_PKG_ERRORS}: CDDB access disabled.])
2052       HAVE_LIBCDDB=no])
2053   fi
2057 dnl Linux DVB
2059 AC_CACHE_CHECK([for Linux DVB version 5.1], [ac_cv_linux_dvb_5_1], [
2060   AC_PREPROC_IFELSE([AC_LANG_PROGRAM([
2061 [#include <linux/dvb/version.h>
2062 #if (DVB_API_VERSION < 5)
2063 # error Linux DVB API v3.2 and older are not supported.
2064 #endif
2065 #if (DVB_API_VERSION == 5 && DVB_API_VERSION_MINOR < 1)
2066 # error Linux DVB API v5.0 is unsupported. Please update.
2067 #endif
2068 ]])], [
2069   ac_cv_linux_dvb_5_1=yes
2070 ], [
2071   ac_cv_linux_dvb_5_1=no
2072 ])])
2073 AM_CONDITIONAL([HAVE_LINUX_DVB], [test "$ac_cv_linux_dvb_5_1" = "yes"])
2076 dnl  Screen capture module
2078 AC_ARG_ENABLE([screen],
2079   AS_HELP_STRING([--enable-screen],
2080     [disable screen capture (default enabled)]))
2081 if test "${enable_screen}" != "no"; then
2082   if test "${SYS}" = "darwin"; then
2083     AC_CHECK_HEADERS([ApplicationServices/ApplicationServices.h], [
2084       VLC_ADD_PLUGIN([screen])
2085     ])
2086   fi
2088 AM_CONDITIONAL([HAVE_MAC_SCREEN], [test "${SYS}" = "darwin" -a "x${enable_screen}" != "xno"])
2091 dnl  VNC/RFB access module
2093 PKG_ENABLE_MODULES_VLC([VNC], [vnc], [libvncclient >= 0.9.9], (VNC/rfb client support), [auto])
2095 dnl  RDP/Remote Desktop access module
2097 PKG_ENABLE_MODULES_VLC([FREERDP], [rdp], [freerdp >= 1.0.1], (RDP/Remote Desktop client support) )
2100 dnl AVFoundation
2101 AC_SUBST([have_avfoundation], ["no"])
2102 AC_ARG_ENABLE([macosx-avfoundation],
2103   AS_HELP_STRING([--enable-macosx-avfoundation], [Mac OS X avcapture (video) module (default enabled on Mac OS X)]))
2104 if test "x${enable_macosx_avfoundation}" != "xno" &&
2105   (test "${SYS}" = "darwin" || test "${enable_macosx_avfoundation}" = "yes")
2106 then
2107   SAVED_LIBS="${LIBS}"
2108   LIBS="-framework AVFoundation"
2109   AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [])],[have_avfoundation=yes],[have_avfoundation=no])
2110   LIBS="${SAVED_LIBS}"
2111   if test "${have_avfoundation}" != "no"
2112   then
2113     VLC_ADD_PLUGIN([avcapture])
2114   fi
2116 AM_CONDITIONAL([HAVE_AVFOUNDATION], [test "${have_avfoundation}" != "no"])
2119 dnl  DCP plugin (using asdcplib)
2121 PKG_WITH_MODULES([ASDCP], [asdcplib], [have_asdcp="yes"])
2122 AM_CONDITIONAL([HAVE_ASDCP], [test "${have_asdcp}" = "yes"])
2125 dnl  Demux plugins
2128 EXTEND_HELP_STRING([Mux/Demux plugins:])
2131 dnl  libdvbpsi check for ts mux/demux
2133 have_dvbpsi="no"
2134 PKG_WITH_MODULES([DVBPSI], [libdvbpsi >= 1.2.0], [have_dvbpsi="yes"])
2135 AM_CONDITIONAL([HAVE_DVBPSI], [test "${have_dvbpsi}" = "yes"])
2139 dnl  GME demux plugin
2141 AC_ARG_ENABLE([gme],
2142   AS_HELP_STRING([--enable-gme],
2143     [use Game Music Emu (default auto)]))
2144 AS_IF([test "${enable_gme}" != "no"], [
2145   AC_CHECK_HEADER([gme/gme.h], [
2146     AC_CHECK_LIB([gme], [gme_identify_header], [
2147       VLC_ADD_PLUGIN([gme])
2148     ], [
2149       AC_CHECK_LIB([gme], [gme_identify_extension], [
2150          VLC_ADD_LIBS([gme], [-lstdc++ $LIBM])
2151          VLC_ADD_PLUGIN([gme])
2152       ],, [-lstdc++ $LIBM])
2153     ])
2154     VLC_ADD_LIBS([gme], [-lgme])
2155   ], [
2156     AS_IF([test "x${enable_gme}" != "x"], [
2157       AC_MSG_ERROR([GME cannot be found. Please install the development files.])
2158     ])
2159   ])
2164 dnl  SIDPlay plugin
2166 AC_ARG_ENABLE([sid],
2167     AS_HELP_STRING([--enable-sid],[C64 sid demux support (default auto)]))
2168 AS_IF([test "${enable_sid}" != "no"], [
2169     PKG_CHECK_MODULES(SID, [libsidplay2], [
2170         AC_LANG_PUSH(C++)
2171         oldCPPFLAGS="$CPPFLAGS"
2172         CPPFLAGS="$CPPFLAGS $SID_CFLAGS"
2173         AC_CHECK_HEADER([sidplay/builders/resid.h], [
2174             VLC_ADD_PLUGIN([sid])
2175             VLC_ADD_CFLAGS([sid], [$SID_CFLAGS])
2176             VLC_ADD_LIBS([sid], [$SID_LIBS] [-lresid-builder])
2177         ], [
2178             AS_IF([test -n "${enable_sid}"],
2179                 [AC_MSG_ERROR([${SID_PKG_ERRORS} (required for sid).])],
2180                 [AC_MSG_WARN([${SID_PKG_ERRORS} (required for sid).])]
2181                 )
2182         ])
2183         CPPFLAGS="$oldCPPFLAGS"
2184         AC_LANG_POP(C++)
2185     ], [
2186         AS_IF([test "x${enable_sid}" = "xyes"],
2187             [AC_MSG_ERROR([${SID_PKG_ERRORS} (required for sid).])],
2188             [AC_MSG_WARN([${SID_PKG_ERRORS} (required for sid).])]
2189             )
2190     ])
2195 dnl  ogg demux plugin
2197 PKG_ENABLE_MODULES_VLC([OGG], [mux_ogg], [ogg >= 1.0], [Ogg demux support], [auto])
2198 PKG_CHECK_MODULES(LIBVORBIS, [vorbis >= 1.1], [
2199     AC_DEFINE(HAVE_LIBVORBIS, 1, [Define to 1 if you have the libvorbis])
2200 ],[true])
2201 PKG_ENABLE_MODULES_VLC([OGG], [], [ogg >= 1.0], [Ogg demux support], [auto], [${LIBVORBIS_CFLAGS}], [${LIBVORBIS_LIBS}])
2202 if test "${enable_sout}" != "no"; then
2203 dnl Check for libshout
2204     PKG_ENABLE_MODULES_VLC([SHOUT], [access_output_shout], [shout >= 2.1], [libshout output plugin], [auto])
2208 dnl  matroska demux plugin
2210 PKG_WITH_MODULES([MATROSKA], [libebml libmatroska], [
2211        VLC_ADD_PLUGIN([mkv])
2212        VLC_ADD_CFLAGS([mkv], [$MATROSKA_CFLAGS])
2213        VLC_ADD_LIBS([mkv], [$MATROSKA_LIBS])
2214        have_matroska="yes"
2215    ],,[MKV format support], [auto])
2216 AM_CONDITIONAL([HAVE_MATROSKA], [test "${have_matroska}" = "yes"])
2219 dnl  modplug demux plugin
2221 AC_ARG_ENABLE([mod],
2222   AS_HELP_STRING([--disable-mod],
2223     [do not use libmodplug (default auto)]))
2224 if test "${enable_mod}" != "no" ; then
2225     PKG_CHECK_MODULES(LIBMODPLUG, [libmodplug >= 0.8.4 libmodplug != 0.8.8], [
2226           VLC_ADD_PLUGIN([mod])
2227           VLC_ADD_CXXFLAGS([mod],[$LIBMODPLUG_CFLAGS])
2228           VLC_ADD_CFLAGS([mod],[$LIBMODPLUG_CFLAGS]) #modules/demux/mod.c needs CFLAGS_mod, not CXXFLAGS_mod
2229           VLC_ADD_LIBS([mod],[$LIBMODPLUG_LIBS])
2230     ],[
2231        AS_IF([test -n "${enable_mod}"],
2232          [AC_MSG_ERROR([${LIBMODPLUG_PKG_ERRORS}.])],
2233          [AC_MSG_WARN([${LIBMODPLUG_PKG_ERRORS}.])])
2234     ])
2238 dnl  mpc demux plugin
2240 AC_ARG_ENABLE([mpc],
2241   AS_HELP_STRING([--disable-mpc], [do not use libmpcdec (default auto)]))
2242 if test "${enable_mpc}" != "no"
2243 then
2244     AC_CHECK_HEADERS([mpcdec/mpcdec.h], [
2245     VLC_ADD_PLUGIN([mpc])
2246     VLC_ADD_LIBS([mpc],[-lmpcdec])])
2250 dnl  Codec plugins
2253 EXTEND_HELP_STRING([Codec plugins:])
2256 dnl wmafixed plugin
2258 AC_ARG_ENABLE([wma-fixed],
2259   AS_HELP_STRING([--enable-wma-fixed], [libwma-fixed module (default disabled)]))
2260 if test "${enable_wma_fixed}" = "yes"
2261 then
2262   VLC_ADD_PLUGIN([wma_fixed])
2266 dnl shine encoder plugin
2268 PKG_ENABLE_MODULES_VLC([SHINE], [], [shine >= 3.0.0], [MPEG Audio Layer 3 encoder], [auto], [], [], [])
2272 dnl openmax il codec plugin
2274 AC_ARG_ENABLE([omxil],
2275   AS_HELP_STRING([--enable-omxil], [openmax il codec module (default disabled)]))
2276 if test "${enable_omxil}" = "yes"
2277 then
2278   VLC_ADD_PLUGIN([omxil])
2282 dnl raspberry pi openmax il configuration
2284 AC_ARG_ENABLE([rpi-omxil],
2285   AS_HELP_STRING([--enable-rpi-omxil], [openmax il configured for raspberry pi (default disabled)]))
2286 if test "${enable_rpi_omxil}" = "yes"
2287 then
2288   VLC_ADD_PLUGIN([omxil])
2289   VLC_ADD_CFLAGS([omxil],[-DRPI_OMX])
2293 dnl CrystalHD codec plugin
2295 AC_ARG_ENABLE([crystalhd],
2296   AS_HELP_STRING([--enable-crystalhd], [crystalhd codec plugin (default auto)]))
2297 if test "${enable_crystalhd}" != "no"; then
2298     AC_CHECK_HEADER(libcrystalhd/libcrystalhd_if.h, [
2299       VLC_ADD_PLUGIN([crystalhd])
2300       VLC_ADD_LIBS([crystalhd], [-lcrystalhd])
2301     ],[
2302       if test "${SYS}" = "mingw32" ; then
2303         AC_CHECK_HEADERS([libcrystalhd/bc_dts_defs.h], [
2304           VLC_ADD_PLUGIN([crystalhd])
2305           AC_CHECK_HEADERS([libcrystalhd/bc_drv_if.h], [
2306             VLC_ADD_LIBS([crystalhd], [-lbcmDIL])
2307             ])
2308         ],[
2309           AS_IF([test x"${enable_crystalhd}" = "xyes"],
2310                 [AC_MSG_ERROR("Could not find CrystalHD development headers")],
2311                 [AC_MSG_WARN("Could not find CrystalHD development headers")])
2312         ],[#define __LINUX_USER__
2313                #include <libcrystalhd/bc_dts_types.h>
2314         ])
2315       fi
2316     ],[
2317        #include <libcrystalhd/bc_dts_types.h>
2318       ])
2322 dnl  mad plugin
2324 have_mad="no"
2325 MAD_CFLAGS=""
2326 MAD_LIBS=""
2328 AC_ARG_WITH(mad, AS_HELP_STRING([--with-mad=PATH], [path to libmad]), [
2329   enable_mad="yes"
2330 ], [
2331   with_mad="no"
2333 AS_IF([test "${with_mad}" != "no"], [
2334   MAD_CFLAGS="-I${with_mad}/include"
2335   MAD_LIBS="-L${with_mad}/lib"
2338 AC_ARG_ENABLE([mad],
2339   AS_HELP_STRING([--enable-mad], [libmad module (default enabled)]))
2340 AS_IF([test "${enable_mad}" != "no"], [
2341   VLC_SAVE_FLAGS
2342   CPPFLAGS="${CPPFLAGS} ${MAD_CFLAGS}"
2343   LDFLAGS="${LDFLAGS} ${MAD_LIBS}"
2344   AC_CHECK_HEADERS([mad.h], [
2345     AC_CHECK_LIB([mad], [mad_bit_init], [
2346       have_mad="yes"
2347       MAD_LIBS="${MAD_LIBS} -lmad"
2348     ])
2349   ])
2350   VLC_RESTORE_FLAGS
2351   AS_IF([test -n "$enable_mad" -a "${have_mad}" = "no"], [
2352     AC_MSG_ERROR([Could not find libmad. Install it or pass --disable-mad to disable it.])
2353   ])
2355 AC_SUBST([MAD_CFLAGS])
2356 AC_SUBST([MAD_LIBS])
2357 AM_CONDITIONAL([HAVE_MAD], [test "${have_mad}" = "yes"])
2359 dnl  mpg123 plugin
2362 PKG_ENABLE_MODULES_VLC([MPG123], [mpg123], [libmpg123], [libmpg123 decoder support], [auto])
2365 dnl gstreamer stuff
2367 AC_ARG_ENABLE([gst-decode],
2368   AS_HELP_STRING([--enable-gst-decode], [GStreamer based decoding support (currently supports only video decoding) (default auto)]))
2370 have_gst_decode="no"
2371 AS_IF([test "${enable_gst_decode}" != "no"], [
2372   PKG_CHECK_MODULES([GST_APP], [gstreamer-app-1.0], [
2373     PKG_CHECK_MODULES([GST_VIDEO], [gstreamer-video-1.0], [
2374       have_gst_decode="yes"
2375     ], [
2376       AC_MSG_WARN([${GST_VIDEO_PKG_ERRORS}. GStreamer decoder module will not be built.])
2377     ])
2378   ], [
2379     AC_MSG_WARN([${GST_APP_PKG_ERRORS}. GStreamer modules will not be built.])
2380   ])
2382 AM_CONDITIONAL([HAVE_GST_DECODE], [test "${have_gst_decode}" = "yes"])
2385 dnl  avcodec decoder/encoder plugin
2387 AC_ARG_ENABLE([merge-ffmpeg],
2388 AS_HELP_STRING([--enable-merge-ffmpeg], [merge FFmpeg-based plugins (default disabled)]),, [
2389   enable_merge_ffmpeg="no"
2391 AM_CONDITIONAL([MERGE_FFMPEG], [test "$enable_merge_ffmpeg" != "no"])
2393 AC_MSG_CHECKING([for libavutil variant])
2394 PKG_CHECK_EXISTS([libavutil], [
2395   libavutil_version="$(${PKG_CONFIG} --modversion libavutil)"
2396   libavutil_micro="${libavutil_version##*.}"
2397   AS_IF([test ${libavutil_micro} -le 99], [
2398     avfork="libav"
2399   ], [
2400     avfork="ffmpeg"
2401   ])
2402 ], [
2403   avfork="none"
2405 AC_MSG_RESULT([${avfork}])
2407 AC_ARG_ENABLE([avcodec],
2408 AS_HELP_STRING([--enable-avcodec], [libavcodec codec (default enabled)]))
2409 AS_IF([test "${enable_avcodec}" != "no"], [
2410   dnl We need >=57.16.0 from libav or >=57.37.100 from ffmpeg
2411   case "${avfork}" in
2412     libav) av_codec_ver="57.16.0" ;;
2413     dnl 05f66706d182eb0c36af54d72614bf4c33e957a9  includes libavutil 55.9.0
2414     ffmpeg) av_codec_ver="57.37.100" ;;
2415     dnl 7fc329e2dd6226dfecaa4a1d7adf353bf2773726  include libavutil 55.22.101
2416     *) AC_MSG_ERROR([Missing libav or FFmpeg. Pass --disable-avcodec to ignore this error.])
2417   esac
2418   PKG_CHECK_MODULES(AVCODEC,[libavcodec >= ${av_codec_ver} libavutil >= 55.9.0], [
2419     VLC_SAVE_FLAGS
2420     CPPFLAGS="${CPPFLAGS} ${AVCODEC_CFLAGS}"
2421     CFLAGS="${CFLAGS} ${AVCODEC_CFLAGS}"
2422     AC_CHECK_HEADERS([libavcodec/avcodec.h])
2423     AC_CHECK_HEADERS([libavutil/avutil.h])
2424     VLC_RESTORE_FLAGS
2425     have_avcodec="yes"
2426   ],[
2427     AC_MSG_ERROR([${AVCODEC_PKG_ERRORS}. Pass --disable-avcodec to ignore this error.])
2428   ])
2429 ], [
2430   have_avcodec="no"
2432 AM_CONDITIONAL([HAVE_AVCODEC], [test "${have_avcodec}" != "no"])
2435 dnl libva needs avcodec
2437 AC_ARG_ENABLE([libva],
2438   AS_HELP_STRING([--enable-libva], [VAAPI GPU decoding support (libVA) (default auto)]))
2440 AS_IF([test "${enable_libva}" = "yes" -a "${have_avcodec}" != "yes" ], [
2441   AC_MSG_ERROR([--enable-libva and --disable-avcodec options are mutually exclusive. Use --enable-avcodec.])
2444 have_vaapi="no"
2445 have_vaapi_drm="no"
2446 have_vaapi_x11="no"
2447 have_vaapi_wl="no"
2448 AS_IF([test "${enable_libva}" != "no"], [
2449   PKG_CHECK_MODULES([LIBVA], [libva >= 0.38], [
2450     have_vaapi="yes"
2451   ], [
2452     AS_IF([test -n "${enable_libva}"], [
2453       AC_MSG_ERROR([${LIBVA_PKG_ERRORS}.])
2454     ], [
2455       AC_MSG_WARN([${LIBVA_PKG_ERRORS}.])
2456     ])
2457   ])
2458   PKG_CHECK_MODULES([LIBVA_DRM], [libva-drm], [
2459     have_vaapi_drm="yes"
2460   ], [
2461     AC_MSG_WARN([${LIBVA_DRM_PKG_ERRORS}.])
2462   ])
2463   PKG_CHECK_MODULES(LIBVA_X11, [libva-x11], [
2464     have_vaapi_x11="yes"
2465   ], [
2466     AC_MSG_WARN([${LIBVA_X11_PKG_ERRORS}.])
2467   ])
2468   PKG_CHECK_MODULES(LIBVA_WL, [libva-wayland], [
2469     have_vaapi_wl="yes"
2470   ], [
2471     AC_MSG_WARN([${LIBVA_WL_PKG_ERRORS}.])
2472   ])
2474 AM_CONDITIONAL([HAVE_VAAPI], [test "${have_vaapi}" = "yes"])
2475 AM_CONDITIONAL([HAVE_VAAPI_DRM], [test "${have_vaapi_drm}" = "yes"])
2476 AM_CONDITIONAL([HAVE_VAAPI_X11], [test "${have_vaapi_x11}" = "yes"])
2477 AM_CONDITIONAL([HAVE_VAAPI_WL], [test "${have_vaapi_wl}" = "yes"])
2479 have_avcodec_vaapi="no"
2480 AS_IF([test "${have_vaapi}" = "yes" -a "${have_avcodec}" = "yes"], [
2481   VLC_SAVE_FLAGS
2482   CPPFLAGS="${CPPFLAGS} ${AVCODEC_CFLAGS}"
2483   CFLAGS="${CFLAGS} ${AVCODEC_CFLAGS}"
2484   AC_CHECK_HEADERS([libavcodec/vaapi.h], [
2485     AC_MSG_NOTICE([VA API acceleration activated])
2486     have_avcodec_vaapi="yes"
2487   ],[
2488     AS_IF([test -n "${enable_libva}"], [
2489       AC_MSG_ERROR([libva is present but libavcodec/vaapi.h is missing])
2490     ], [
2491       AC_MSG_WARN([libva is present but libavcodec/vaapi.h is missing ])
2492     ])
2493   ])
2494   VLC_RESTORE_FLAGS
2496 AM_CONDITIONAL([HAVE_AVCODEC_VAAPI], [test "${have_avcodec_vaapi}" = "yes"])
2499 dnl dxva2 needs avcodec
2501 AC_ARG_ENABLE([dxva2],
2502   AS_HELP_STRING([--enable-dxva2], [DxVA2 GPU decoding support (default auto)]))
2504 have_avcodec_dxva2="no"
2505 AS_IF([test "${enable_dxva2}" != "no"], [
2506   if test "${SYS}" = "mingw32"; then
2507   AS_IF([test "x${have_avcodec}" = "xyes"], [
2508     AC_CHECK_HEADERS([dxva2api.h],
2509       [
2510         AC_CHECK_HEADERS([libavcodec/dxva2.h], [
2511            AC_MSG_NOTICE([DxVA2 acceleration activated])
2512            have_avcodec_dxva2="yes"
2513         ],[
2514     AS_IF([test "${enable_dxva2}" = "yes"],
2515           [AC_MSG_ERROR([dxva2 is present but libavcodec/dxva2.h is missing])],
2516               [AC_MSG_WARN([dxva2 is present but libavcodec/dxva2.h is missing ])])
2517         ], [#undef _WIN32_WINNT
2518             /* DXVA2 is only available in Vista and above */
2519             #define _WIN32_WINNT 0x600])
2520       ],[
2521     AS_IF([test "${enable_dxva2}" = "yes"],
2522               [AC_MSG_ERROR([Could not find required dxva2api.h])],
2523               [AC_MSG_WARN([dxva2api.h not found])])
2524       ],[#include <d3d9.h>])
2525   ],[
2526     AS_IF([test "x${enable_dxva2}" != "x"], [
2527       AC_MSG_ERROR([--enable-dxva2 and --disable-avcodec options are mutually exclusive.])
2528     ])
2529   ])
2530   fi
2532 AM_CONDITIONAL([HAVE_AVCODEC_DXVA2], [test "${have_avcodec_dxva2}" = "yes"])
2535 dnl d3d11va needs avcodec
2537 AC_ARG_ENABLE([d3d11va],
2538   AS_HELP_STRING([--enable-d3d11va], [D3D11 GPU decoding support (default auto)]))
2540 have_avcodec_d3d11va="no"
2541 AS_IF([test "${enable_d3d11va}" != "no"], [
2542   if test "${SYS}" = "mingw32"; then
2543   AS_IF([test "x${have_avcodec}" = "xyes"], [
2544         AC_CHECK_TYPES([ID3D11VideoDecoder],
2545           [
2546             AC_CHECK_HEADERS([dxva2api.h],
2547               [
2548                 AC_CHECK_HEADERS([libavcodec/d3d11va.h], [
2549                    AC_MSG_NOTICE([D3D11 acceleration activated])
2550                    AC_DEFINE([HAVE_AVCODEC_D3D11VA], [1], [Define if the d3d11va module is built])
2551                    have_avcodec_d3d11va="yes"
2552                 ],[
2553                   AS_IF([test "${enable_d3d11va}" = "yes"],
2554                     [AC_MSG_ERROR([d3d11va is present but libavcodec/d3d11va.h is missing])],
2555                         [AC_MSG_WARN([d3d11va is present but libavcodec/d3d11va.h is missing ])])
2556                   ], [#undef _WIN32_WINNT
2557                       /* D3D11 is only available in Vista and above */
2558                       #define _WIN32_WINNT 0x600])
2559                   ],[
2560                     AS_IF([test "${enable_d3d11va}" = "yes"],
2561                           [AC_MSG_ERROR([Could not find required dxva2api.h])],
2562                           [AC_MSG_WARN([dxva2api.h not found])])
2563                   ],[#include <d3d9.h>])
2564           ],[
2565             AS_IF([test "${enable_d3d11va}" = "yes"],
2566                   [AC_MSG_ERROR([Could not find required ID3D11VideoDecoder in d3d11.h])],
2567                   [AC_MSG_WARN([ID3D11VideoDecoder not found])])
2568           ], [#include <d3d11.h>])
2569   ],[
2570     AS_IF([test "x${enable_d3d11va}" != "x"], [
2571       AC_MSG_ERROR([--enable-d3d11va and --disable-avcodec options are mutually exclusive.])
2572     ])
2573   ])
2574   fi
2576 AM_CONDITIONAL([HAVE_AVCODEC_D3D11VA], [test "${have_avcodec_d3d11va}" = "yes"])
2579 dnl DXGI debug
2581 AC_CHECK_HEADERS([dxgidebug.h dxgi1_6.h])
2584 dnl  avformat demuxer/muxer plugin
2587 AC_ARG_ENABLE([avformat],
2588 AS_HELP_STRING([--enable-avformat], [libavformat containers (default enabled)]),, [
2589   enable_avformat="${have_avcodec}"
2591 have_avformat="no"
2592 AS_IF([test "${enable_avformat}" != "no"], [
2593   PKG_CHECK_MODULES(AVFORMAT,[libavformat >= 53.21.0 libavcodec libavutil], [
2594       have_avformat="yes"
2595       VLC_SAVE_FLAGS
2596       CPPFLAGS="${CPPFLAGS} ${AVFORMAT_CFLAGS}"
2597       CFLAGS="${CFLAGS} ${AVFORMAT_CFLAGS}"
2598       AC_CHECK_HEADERS([libavformat/avformat.h libavformat/avio.h])
2599       AC_CHECK_HEADERS([libavcodec/avcodec.h])
2600       AC_CHECK_HEADERS([libavutil/avutil.h])
2601       AS_IF([test "$enable_merge_ffmpeg" = "no"], [
2602         have_avformat="no"
2603       ])
2604       VLC_RESTORE_FLAGS
2605     ],[
2606       AC_MSG_ERROR([${AVFORMAT_PKG_ERRORS}. Pass --disable-avformat to ignore this error.])
2607   ])
2609 AM_CONDITIONAL([HAVE_AVFORMAT], [test "${enable_avformat}" != "no"])
2612 dnl  swscale image scaling and conversion plugin
2615 AC_ARG_ENABLE([swscale],
2616   AS_HELP_STRING([--enable-swscale],[libswscale image scaling and conversion
2617           (default enabled)]))
2618 if test "${enable_swscale}" != "no"
2619 then
2620   PKG_CHECK_MODULES(SWSCALE,[libswscale],
2621     [
2622       VLC_SAVE_FLAGS
2623       CPPFLAGS="${CPPFLAGS} ${SWSCALE_CFLAGS}"
2624       CFLAGS="${CFLAGS} ${SWSCALE_CFLAGS}"
2625       AC_CHECK_HEADERS([libswscale/swscale.h])
2626       AC_CHECK_HEADERS([libavutil/avutil.h])
2627       VLC_ADD_PLUGIN([swscale])
2628       VLC_ADD_LIBS([swscale],[$SWSCALE_LIBS])
2629       VLC_ADD_CFLAGS([swscale],[$SWSCALE_CFLAGS])
2630       AS_IF([test -n "${ac_cv_ld_bsymbolic}"], [
2631         VLC_ADD_LIBS([swscale],[${ac_cv_ld_bsymbolic}])
2632       ])
2633       VLC_RESTORE_FLAGS
2634     ],[
2635       AC_MSG_ERROR([${SWSCALE_PKG_ERRORS}. Pass --disable-swscale to ignore this error. Proper software scaling and some video chroma conversion will be missing.])
2636   ])
2640 dnl  postproc plugin
2643 AC_ARG_ENABLE([postproc],
2644 AS_HELP_STRING([--enable-postproc], [libpostproc image post-processing (default auto)]))
2645 if test "${enable_postproc}" != "no"
2646 then
2647   PKG_CHECK_MODULES(POSTPROC,[libpostproc libavutil],
2648     [
2649       VLC_SAVE_FLAGS
2650       CPPFLAGS="${CPPFLAGS} ${POSTPROC_CFLAGS}"
2651       CFLAGS="${CFLAGS} ${POSTPROC_CFLAGS}"
2652       AC_CHECK_HEADERS([postproc/postprocess.h])
2653       VLC_ADD_PLUGIN([postproc])
2654       VLC_RESTORE_FLAGS
2655     ],[
2656       AC_MSG_WARN([${POSTPROC_PKG_ERRORS}.])
2657   ])
2661 dnl  faad decoder plugin
2663 AC_ARG_ENABLE([faad],
2664 AS_HELP_STRING([--enable-faad], [faad codec (default auto)]))
2665 have_faad="no"
2666 AS_IF([test "${enable_faad}" != "no"], [
2667   AC_CHECK_HEADERS([neaacdec.h], [
2668     AC_CHECK_LIB([faad], [NeAACDecOpen], [have_faad="yes"],, [$LIBM])
2670     AS_IF([test "${have_faad}" = "yes"], [
2671       VLC_ADD_PLUGIN([faad])
2672       VLC_ADD_LIBS([faad],[-lfaad])
2673     ], [
2674       AS_IF([test "${enable_faad}" = "yes"], [
2675         AC_MSG_ERROR([cannot find FAAD library])
2676       ], [
2677         AC_MSG_WARN([cannot find FAAD library])
2678       ])
2679     ])
2680   ])
2684 dnl  AOM decoder plugin
2686 PKG_ENABLE_MODULES_VLC([AOM], [], [aom], [experimental AV1 codec (default auto)])
2689 dnl  Dav1d decoder plugin
2691 PKG_ENABLE_MODULES_VLC([DAV1D], [], [dav1d], [AV1 decoder (default auto)])
2694 dnl libvpx decoder plugin
2696 AC_ARG_ENABLE([vpx],
2697     AS_HELP_STRING([--enable-vpx],[libvpx VP8/VP9 encoder and decoder (default auto)]))
2698 AS_IF([test "${enable_vpx}" != "no"],[
2699     PKG_CHECK_MODULES([VPX], [vpx >= 1.5.0], [
2700         VLC_ADD_PLUGIN([vpx])
2701         VLC_ADD_CPPFLAGS([vpx], [${VPX_CFLAGS}])
2702         VLC_ADD_LIBS([vpx], [${VPX_LIBS}])
2703         AC_CHECK_LIB([vpx],[vpx_codec_vp8_dx], [
2704             VLC_ADD_CPPFLAGS([vpx], [-DENABLE_VP8_DECODER])
2705         ], [], [${VPX_LIBS}])
2706         AC_CHECK_LIB([vpx],[vpx_codec_vp9_dx], [
2707             VLC_ADD_CPPFLAGS([vpx], [-DENABLE_VP9_DECODER])
2708         ], [], [${VPX_LIBS}])
2709         AC_CHECK_LIB([vpx],[vpx_codec_vp8_cx], [
2710             VLC_ADD_CPPFLAGS([vpx], [-DENABLE_VP8_ENCODER])
2711         ], [], [${VPX_LIBS}])
2712         AC_CHECK_LIB([vpx],[vpx_codec_vp9_cx], [
2713             VLC_ADD_CPPFLAGS([vpx], [-DENABLE_VP9_ENCODER])
2714         ], [], [${VPX_LIBS}])
2715     ], [
2716     AS_IF([test "${enable_vpx}" = "yes"],[
2717         AC_MSG_ERROR([libvpx 1.5.0 or higher was not found])
2718     ])])
2722 dnl twolame encoder plugin
2724 PKG_ENABLE_MODULES_VLC([TWOLAME], [], [twolame], [MPEG Audio Layer 2 encoder], [auto], [], [], [ -DLIBTWOLAME_STATIC])
2727 dnl fdk-aac encoder plugin
2729 PKG_ENABLE_MODULES_VLC([FDKAAC], [], [fdk-aac], [FDK-AAC encoder], [disabled])
2733 dnl A52/AC3 decoder plugin
2735 AC_ARG_ENABLE([a52],
2736   AS_HELP_STRING([--enable-a52], [A/52 support with liba52 (default enabled)]))
2737 if test "${enable_a52}" != "no"
2738 then
2739   AC_ARG_WITH([a52],
2740     AS_HELP_STRING([--with-a52=PATH], [a52 headers and libraries]))
2741     if test -z "${with_a52}"
2742     then
2743       LDFLAGS_test=""
2744       CPPFLAGS_test=""
2745     else
2746       LDFLAGS_test="-L${with_a52}/lib"
2747       CPPFLAGS_test="-I${with_a52}/include"
2748     fi
2749     VLC_SAVE_FLAGS
2750     CPPFLAGS="${CPPFLAGS} ${CPPFLAGS_test} ${CPPFLAGS_a52}"
2751     LDFLAGS="${LDFLAGS} ${LDFLAGS_test} ${LIBS_a52}"
2752     AC_CHECK_HEADERS([a52dec/a52.h], [
2753       AC_CHECK_LIB([a52], [a52_free], [
2754         VLC_ADD_PLUGIN([a52])
2755         VLC_ADD_LIBS([a52],[${LDFLAGS_test} -la52 $LIBM])
2756         VLC_ADD_CPPFLAGS([a52],[${CPPFLAGS_test}])
2757       ],[
2758         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.])
2759         ], [$LIBM])
2760     ],[
2761       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.])
2762     ])
2763     VLC_RESTORE_FLAGS
2767 dnl DTS Coherent Acoustics decoder plugin
2769 PKG_ENABLE_MODULES_VLC([DCA], [dca], [libdca >= 0.0.5], [DTS Coherent Acoustics support with libdca], [auto])
2772 dnl  Flac plugin
2774 PKG_ENABLE_MODULES_VLC([FLAC], [], [flac], [libflac decoder/encoder support], [auto])
2777 dnl  Libmpeg2 plugin
2779 PKG_ENABLE_MODULES_VLC([LIBMPEG2], [], [libmpeg2 > 0.3.2], [libmpeg2 decoder support], [auto])
2782 dnl  Vorbis plugin
2784 PKG_ENABLE_MODULES_VLC([VORBIS], [], [ogg vorbis >= 1.1 vorbisenc >= 1.1], [Vorbis decoder and encoder], [auto])
2787 dnl  Tremor plugin
2789 AC_ARG_ENABLE([tremor],
2790   AS_HELP_STRING([--enable-tremor], [Tremor decoder support (default disabled)]))
2791 if test "${enable_tremor}" = "yes"
2792 then
2793   AC_CHECK_HEADERS([tremor/ivorbiscodec.h], [
2794     VLC_ADD_PLUGIN([tremor])
2795    ],[])
2799 dnl  Speex plugins
2801 PKG_ENABLE_MODULES_VLC([SPEEX], [], [ogg speex >= 1.0.5], [Speex support], [auto])
2802 have_speexdsp="no"
2803 AS_IF([test "${enable_speex}" != "no"], [
2804   PKG_CHECK_MODULES([SPEEXDSP], [speexdsp], [
2805     have_speexdsp="yes"
2806   ], [
2807     AC_MSG_WARN([${SPEEXDSP_PKG_ERRORS}.])
2808   ])
2810 AM_CONDITIONAL([HAVE_SPEEXDSP], [test "$have_speexdsp" = "yes"])
2813 dnl  Opus plugin
2815 PKG_ENABLE_MODULES_VLC([OPUS], [], [ogg opus >= 1.0.3], [Opus support], [auto])
2818 dnl  Ambisonic channel mixer and binauralizer plugin
2820 PKG_ENABLE_MODULES_VLC([SPATIALAUDIO], [], [spatialaudio], [Ambisonic channel mixer and binauralizer], [auto])
2823 dnl  theora decoder plugin
2825 PKG_ENABLE_MODULES_VLC([THEORA], [], [ogg theoradec >= 1.0 theoraenc], [experimental theora codec], [auto])
2828 dnl  OggSpots decoder plugin
2830 PKG_ENABLE_MODULES_VLC([OGGSPOTS], [], [ogg], [experimental OggSpots codec], [auto])
2833 dnl  Daala decoder plugin
2835 PKG_ENABLE_MODULES_VLC([DAALA], [], [daaladec daalaenc], [experimental daala codec], [disabled])
2838 dnl  schroedinger decoder plugin (for dirac format video)
2840 PKG_ENABLE_MODULES_VLC([SCHROEDINGER], [], [schroedinger-1.0 >= 1.0.10], [dirac decoder and encoder using schroedinger], [auto])
2843 dnl  PNG decoder module
2845 AC_ARG_ENABLE([png],
2846   AS_HELP_STRING([--enable-png], [PNG support (default enabled)]))
2847 AS_IF([test "${enable_png}" != "no"], [
2848 AC_CHECK_HEADERS([png.h], [
2849   VLC_SAVE_FLAGS
2850   LDFLAGS="${LDFLAGS} -lz $LIBM"
2851   AC_CHECK_LIB([png], [png_set_alpha_mode], [
2852     VLC_ADD_PLUGIN([png])
2853   ], [], [-lz $LIBM])
2854   VLC_RESTORE_FLAGS
2855   ])
2859 dnl  JPEG decoder module
2861 AC_ARG_ENABLE([jpeg],
2862   AS_HELP_STRING([--enable-jpeg], [JPEG support (default enabled)]))
2863 AS_IF([test "${enable_jpeg}" != "no"], [
2864 AC_CHECK_HEADERS([jpeglib.h], [
2865   VLC_ADD_PLUGIN([jpeg])
2866   ])
2870 dnl  BPG decoder module
2872 AC_ARG_ENABLE([bpg],
2873   AS_HELP_STRING([--enable-bpg], [BPG support (default disabled)]))
2874 AS_IF([test "${enable_bpg}" != "no"], [
2875 AC_CHECK_HEADERS([libbpg.h], [
2876   VLC_ADD_PLUGIN([bpg])
2877   ])
2881 dnl H262 encoder plugin (lib262)
2883 AC_ARG_ENABLE([x262],
2884   AS_HELP_STRING([--enable-x262], [H262 encoding support with static libx262 (default disabled)]))
2885 if test "${enable_x262}" != "no"; then
2886     PKG_CHECK_MODULES(X262, x262, [
2887         VLC_ADD_PLUGIN([x262])
2888         VLC_ADD_LDFLAGS([x262],[${X262_LIBS}])
2889         AS_IF([test -n "${ac_cv_ld_bsymbolic}"], [
2890           VLC_ADD_LIBS([x262],[${av_cv_ld_bsymbolic}])
2891         ])
2892         VLC_ADD_CFLAGS([x262],[${X262_CFLAGS}])
2893         if echo ${X262_LIBS} |grep -q 'pthreadGC2'; then
2894           VLC_ADD_CFLAGS([x262], [-DPTW32_STATIC_LIB])
2895         fi
2896     ], [
2897        if test "${enable_x262}" = "yes"; then
2898         AC_MSG_ERROR([x262 module doesn't work without staticly compiled libx262.a])
2899        fi
2900     ])
2903 dnl x265 encoder
2904 PKG_ENABLE_MODULES_VLC([X265],, [x265], [HEVC/H.265 encoder], [auto])
2907 dnl H264 encoder plugin (using libx264)
2909 AC_ARG_ENABLE([x264],
2910   AS_HELP_STRING([--enable-x264], [H264 encoding support with libx264 (default enabled)]))
2911 if test "${enable_x264}" != "no"; then
2912       PKG_CHECK_MODULES(X264,x264 >= 0.148, [
2913         VLC_ADD_PLUGIN([x264])
2914         VLC_ADD_LIBS([x264],[${X264_LIBS}])
2916         AS_IF([test -n "${ac_cv_ld_bsymbolic}"], [
2917           VLC_ADD_LDFLAGS([x264],[${ac_cv_ld_bsymbolic}])
2918         ])
2920         VLC_ADD_CFLAGS([x264],[${X264_CFLAGS}])
2921         if echo ${X264_LIBS} |grep -q 'pthreadGC2'; then
2922           VLC_ADD_CFLAGS([x264], [-DPTW32_STATIC_LIB])
2923         fi
2924       ],[
2925         if test "${enable_x264}" = "yes"; then
2926             AC_MSG_ERROR([${X264_PKG_ERRORS}: you may get it from http://www.videolan.org/x264.html])
2927           fi
2928       ])
2932 dnl H264 encoder plugin (libx264 > 153)
2934 AC_ARG_ENABLE([x26410b],
2935   AS_HELP_STRING([--enable-x26410b], [H264 10-bit encoding support with libx264 (default enabled)]))
2936 if test "${enable_x26410b}" != "no"; then
2937       PKG_CHECK_MODULES(X26410b,x264 >= 0.153, [
2938         VLC_ADD_PLUGIN([x26410b])
2939         VLC_ADD_LIBS([x26410b],[${X264_LIBS}])
2941         AS_IF([test -n "${ac_cv_ld_bsymbolic}"], [
2942           VLC_ADD_LDFLAGS([x26410b],[${ac_cv_ld_bsymbolic}])
2943         ])
2945         VLC_ADD_CFLAGS([x26410b],[${X264_CFLAGS}])
2946         if echo ${X264_LIBS} |grep -q 'pthreadGC2'; then
2947           VLC_ADD_CFLAGS([x26410b], [-DPTW32_STATIC_LIB])
2948         fi
2949       ],[
2950         if test "${enable_x26410b}" = "yes"; then
2951             AC_MSG_ERROR([${X264_PKG_ERRORS}: you may get it from http://www.videolan.org/x264.html])
2952           fi
2953       ])
2958 dnl Intel QuickSync (aka MediaSDK) H264/H262 encoder
2960 PKG_ENABLE_MODULES_VLC([MFX], [qsv], [libmfx], [Intel QuickSync MPEG4-Part10/MPEG2 (aka H.264/H.262) encoder], [auto])
2963 dnl libfluidsynth (MIDI synthetizer) plugin
2965 PKG_ENABLE_MODULES_VLC([FLUIDSYNTH], [], [fluidsynth >= 1.1.2], [MIDI synthetiser with libfluidsynth], [auto])
2966 PKG_ENABLE_MODULES_VLC([FLUIDLITE], [fluidsynth], [fluidlite], [MIDI synthetiser with libfluidsynth], [auto])
2967 AC_CHECK_HEADERS([fluidlite.h], [AC_SUBST([FLUIDSYNTH_LIBS], ${FLUIDLITE_LIBS})])
2970 dnl Teletext Modules
2971 dnl vbi decoder plugin (using libzbvi)
2972 dnl telx module
2973 dnl uncompatible
2975 AC_ARG_ENABLE([zvbi],
2976   AS_HELP_STRING([--enable-zvbi],[VBI (inc. Teletext) decoding support with
2977                   libzvbi (default enabled)]))
2978 AC_ARG_ENABLE([telx],
2979   AS_HELP_STRING([--enable-telx],[Teletext decoding module (conflicting with
2980                   zvbi) (default enabled if zvbi is absent)]))
2982 AS_IF( [test "${enable_zvbi}" != "no"],[
2983     PKG_CHECK_MODULES(ZVBI, [zvbi-0.2 >= 0.2.28],
2984         [
2985           VLC_ADD_PLUGIN([zvbi])
2986           AC_DEFINE(ZVBI_COMPILED, 1, [Define if the zvbi module is built])
2987           AS_IF( [test "${enable_telx}" = "yes"],[
2988                   AC_MSG_WARN([The zvbi and telx modules are incompatible. Using zvbi.])
2989                   ])
2990         ],[
2991           AC_MSG_WARN([${ZVBI_PKG_ERRORS}. Enabling the telx module instead.])
2992         ])
2993     ])
2994 AS_IF( [test "${enable_telx}" != "no" ],[
2995   VLC_ADD_PLUGIN([telx])
2996   ])
2999 dnl ARIB subtitles rendering module
3001 AC_ARG_ENABLE([aribsub],
3002   AS_HELP_STRING([--enable-aribsub],[ARIB Subtitles support (default enabled)]))
3003 AS_IF( [test "${enable_aribsub}" != "no" ],[
3004   PKG_CHECK_MODULES(ARIBB24, [aribb24 >= 1.0.1], [
3005       have_aribb24="yes"
3006       VLC_ADD_PLUGIN([aribsub])
3007       VLC_ADD_LIBS([aribsub],[-laribb24])
3008       AC_DEFINE(HAVE_ARIBB24, 1, [Define if libaribb24 is available.])
3009     ],[
3010       AC_MSG_WARN(Library [aribb24] needed for [aribsub] was not found)
3011       have_aribb24="no"
3012   ])
3014 AM_CONDITIONAL([HAVE_ARIBB24], [test x"${have_aribb24}" = x"yes"])
3017 dnl ARIB B25
3019 PKG_ENABLE_MODULES_VLC([ARIBB25], [aribcam], [aribb25 >= 0.2.6], [ARIB STD-B25], [auto])
3022 dnl  kate decoder plugin
3024 PKG_ENABLE_MODULES_VLC([KATE], [], [kate >= 0.3.0], [kate codec], [auto])
3027 dnl  tiger rendering for kate decoder plugin
3029 AC_ARG_ENABLE([tiger],
3030 AS_HELP_STRING([--enable-tiger], [Tiger rendering library for Kate streams (default auto)]))
3031 AS_IF([test "${enable_tiger}" != "no"], [
3032   PKG_CHECK_MODULES(TIGER,[tiger >= 0.3.1], [
3033       AC_DEFINE(HAVE_TIGER, 1, [Define if libtiger is available.])],[
3034         AS_IF([test -n "${enable_tiger}"], [
3035           AC_MSG_ERROR([${TIGER_PKG_ERRORS}.])
3036         ])
3037   ])
3041 dnl  check if we can build the css selector engine
3043 AC_ARG_ENABLE([css],
3044 AS_HELP_STRING([--enable-css], [CSS selector engine (default auto)]))
3045 AS_IF([test "${enable_css}" != "no"], [
3046   with_css="yes"
3047   AC_DEFINE(HAVE_CSS, 1, [Define if CSS engine is built])
3049 AM_CONDITIONAL([ENABLE_CSS], [test "${with_css}" = "yes"])
3053 dnl  Video plugins
3056 EXTEND_HELP_STRING([Video plugins:])
3059 dnl  libplacebo support
3061 AC_ARG_ENABLE([libplacebo],
3062   AS_HELP_STRING([--disable-libplacebo],
3063       [disable libplacebo support (default auto)]))
3065 AS_IF([test "$enable_libplacebo" != "no"], [
3066   PKG_CHECK_MODULES([LIBPLACEBO], [libplacebo >= 0.5], [
3067     AC_DEFINE([HAVE_LIBPLACEBO], [1], [Define to 1 if libplacebo is enabled.])
3068     PKG_CHECK_MODULES([LIBPLACEBO], [libplacebo >= 1.7],
3069       [have_libplacebo_vk="yes"], [have_libplacebo_vk="no"])
3070   ], [
3071     AS_IF([test -n "${enable_libplacebo}"], [
3072       AC_MSG_ERROR([${LIBPLACEBO_PKG_ERRORS}.])
3073     ])
3074     enable_libplacebo="no"
3075   ])
3077 AM_CONDITIONAL([HAVE_LIBPLACEBO], [test "$enable_libplacebo" != "no"])
3080 dnl  OpenGL
3082 PKG_CHECK_MODULES([EGL], [egl], [
3083   have_egl="yes"
3084 ], [
3085   have_egl="no"
3087 AM_CONDITIONAL([HAVE_EGL], [test "${have_egl}" = "yes"])
3089 have_gl="no"
3090 PKG_CHECK_MODULES([GL], [gl], [
3091   have_gl="yes"
3092 ], [
3093   AC_MSG_CHECKING([for OpenGL])
3094   AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
3095 #ifdef _WIN32
3096 # include <GL/glew.h>
3097 #endif
3098 #include <GL/gl.h>
3099 ]], [
3100     [int t0 = GL_TEXTURE0;]])
3101   ], [
3102     GL_CFLAGS=""
3103     have_gl="yes"
3104     AS_IF([test "${SYS}" != "mingw32"], [
3105       GL_LIBS="-lGL"
3106     ], [
3107       GL_LIBS="-lopengl32"
3108     ])
3109   ])
3110   AC_MSG_RESULT([${have_gl}])
3112 AM_CONDITIONAL([HAVE_GL], [test "${have_gl}" = "yes"])
3113 AS_IF([test "${have_gl}" = "yes"], [
3114   AC_DEFINE([HAVE_GL], 1, [Defined if having OpenGL])
3117 dnl OpenGL ES 2: depends on EGL 1.1
3118 PKG_ENABLE_MODULES_VLC([GLES2], [], [glesv2], [OpenGL ES v2 support], [disabled])
3121 dnl Vulkan
3123 AC_ARG_ENABLE(vulkan,
3124   [AS_HELP_STRING([--disable-vulkan],
3125       [disable Vulkan support (default auto)])])
3127 AS_IF([test "$enable_vulkan" != "no"], [
3128   AS_IF([test "$have_libplacebo_vk" = "yes"], [
3129     PKG_CHECK_MODULES([VULKAN], [vulkan >= 1.0.26], [
3130       AC_DEFINE([HAVE_VULKAN], [1], [Define to 1 if vulkan is enabled.])
3131     ], [
3132       AS_IF([test -n "${enable_vulkan}"], [
3133         AC_MSG_ERROR([${VULKAN_PKG_ERRORS}.])
3134       ])
3135       enable_vulkan="no"
3136     ])
3137   ], [
3138     AS_IF([test -n "${enable_vulkan}"], [
3139       AC_MSG_ERROR([Vulkan support requires libplacebo 1.7 as well. Do not use --disable-libplacebo.])
3140     ])
3141     enable_vulkan="no"
3142   ])
3144 AM_CONDITIONAL(HAVE_VULKAN, [test "$enable_vulkan" != "no"])
3147 dnl  Xlib
3150 AC_PATH_XTRA()
3151 AC_CHECK_HEADERS([X11/Xlib.h])
3154 dnl  X C Bindings modules
3156 AC_ARG_ENABLE([xcb],
3157   AS_HELP_STRING([--enable-xcb], [X11 support with XCB (default enabled)]),, [
3158   AS_IF([test "${SYS}" != "mingw32" -a "${SYS}" != "darwin"], [
3159     enable_xcb="yes"
3160   ], [
3161     enable_xcb="no"
3162   ])
3165 have_xcb="no"
3166 have_xkbcommon_x11="no"
3167 have_xcb_keysyms="no"
3168 AS_IF([test "${enable_xcb}" != "no"], [
3169   xcb_err=""
3171   dnl libxcb
3172   PKG_CHECK_MODULES([XCB], [xcb >= 1.6],, [
3173     xcb_err="$xcb_err ${XCB_PKG_ERRORS}."])
3174   PKG_CHECK_MODULES([XCB_COMPOSITE], [xcb-composite],, [
3175     xcb_err="$xcb_err ${XCB_COMPOSITE_PKG_ERRORS}."])
3176   PKG_CHECK_MODULES([XCB_RANDR], [xcb-randr >= 1.3],, [
3177     xcb_err="$xcb_err ${XCB_RANDR_PKG_ERRORS}."])
3178   PKG_CHECK_MODULES([XCB_RENDER], [xcb-render],, [
3179     xcb_err="$xcb_err ${XCB_RENDER_PKG_ERRORS}."])
3180   PKG_CHECK_MODULES([XCB_SHM], [xcb-shm >= 1.9.2],, [
3181     xcb_err="$xcb_err ${XCB_SHM_PKG_ERRORS}."])
3182   PKG_CHECK_MODULES([XCB_XKB], [xcb-xkb],, [
3183     xcb_err="$xcb_err ${XCB_XKB_PKG_ERRORS}."])
3184   PKG_CHECK_MODULES([XCB_XV], [xcb-xv >= 1.1.90.1],, [
3185     xcb_err="$xcb_err ${XCB_XV_PKG_ERRORS}."])
3187   dnl xproto
3188   PKG_CHECK_MODULES(XPROTO, [xproto],, [
3189     xcb_err="$xcb_err ${XPROTO_PKG_ERRORS}."])
3191   AS_IF([test -n "$xcb_err"], [
3192     AC_MSG_ERROR([$xcb_err Pass --disable-xcb to skip X11 support.])
3193   ])
3195   dnl xkbcommon
3196   PKG_CHECK_MODULES([XKBCOMMON_X11], [xkbcommon-x11], [
3197     have_xkbcommon_x11="yes"
3198   ], [
3199     AC_MSG_WARN([${XKBCOMMON_X11_PKG_ERRORS}. Hotkeys are disabled.])
3200   ])
3202   dnl xcb-utils
3203   PKG_CHECK_MODULES([XCB_KEYSYMS], [xcb-keysyms >= 0.3.4], [
3204     have_xcb_keysyms="yes"
3205   ], [
3206     AC_MSG_WARN([${XCB_KEYSYMS_PKG_ERRORS}. Global hotkeys are disabled.])
3207   ])
3209   have_xcb="yes"
3211 AM_CONDITIONAL([HAVE_XCB], [test "${have_xcb}" = "yes"])
3212 AM_CONDITIONAL([HAVE_XKBCOMMON_X11], [test "${have_xkbcommon_x11}" = "yes"])
3213 AM_CONDITIONAL([HAVE_XCB_KEYSYMS], [test "${have_xcb_keysyms}" = "yes"])
3217 dnl VDPAU needs X11
3219 AC_ARG_ENABLE([vdpau],
3220   [AS_HELP_STRING([--enable-vdpau], [VDPAU hardware support (default auto)])])
3221 have_vdpau="no"
3222 AS_IF([test "${enable_vdpau}" != "no"], [
3223   PKG_CHECK_MODULES([VDPAU], [vdpau >= 0.6], [
3224     have_vdpau="yes"
3225     AS_IF([test "${no_x}" = "yes"], [
3226       AC_MSG_ERROR([VDPAU requires Xlib (X11).])
3227     ])
3228   ], [
3229     AS_IF([test -n "${enable_vdpau}"], [
3230       AC_MSG_ERROR([${VDPAU_PKG_ERRORS}.])
3231     ])
3232   ])
3234 AM_CONDITIONAL([HAVE_VDPAU], [test "${have_vdpau}" = "yes"])
3236 have_avcodec_vdpau="no"
3237 AS_IF([test "${have_vdpau}" = "yes" -a "${have_avcodec}" = "yes"], [
3238   case "${avfork}" in
3239     libav) av_vdpau_ver="56.10.0" ;;
3240     ffmpeg) av_vdpau_ver="56.19.100" ;;
3241   esac
3242   PKG_CHECK_EXISTS([libavcodec >= ${av_vdpau_ver}], [
3243     have_avcodec_vdpau="yes"
3244     AC_MSG_NOTICE([VDPAU decoding acceleration activated])
3245   ], [
3246     AS_IF([test -n "${enable_vdpau}"], [
3247       AC_MSG_ERROR([libavcodec >= 56.10.0 is required for VDPAU decoding.])
3248     ], [
3249       AC_MSG_WARN([libavcodec >= 56.10.0 are required for VDPAU decoding.])
3250     ])
3251   ])
3253 AM_CONDITIONAL([HAVE_AVCODEC_VDPAU], [test "${have_avcodec_vdpau}" = "yes"])
3257 dnl  Wayland
3259 AC_ARG_ENABLE([wayland],
3260   AS_HELP_STRING([--enable-wayland], [Wayland support (default auto)]))
3262 have_wayland="no"
3263 AS_IF([test "${enable_wayland}" != "no"], [
3264   wl_err=""
3266   dnl wayland
3267   PKG_CHECK_MODULES([WAYLAND_CLIENT], [wayland-client >= 1.5.91],, [
3268     wl_err="$wl_err ${WAYLAND_CLIENT_PKG_ERRORS}."
3269   ])
3270   PKG_CHECK_MODULES([WAYLAND_CURSOR], [wayland-cursor],, [
3271     wl_err="$wl_err ${WAYLAND_CURSOR_PKG_ERRORS}."
3272   ])
3273   PKG_CHECK_MODULES([WAYLAND_EGL], [wayland-egl],, [
3274     wl_err="$wl_err ${WAYLAND_EGL_PKG_ERRORS}."
3275   ])
3276   PKG_CHECK_MODULES([WAYLAND_SCANNER], [wayland-scanner >= 1.15], [
3277     WAYLAND_SCANNER="$(${PKG_CONFIG} wayland-scanner --variable wayland_scanner)"
3278   ], [
3279     wl_err="$wl_err ${WAYLAND_SCANNER_PKG_ERRORS}."
3280   ])
3282   dnl wayland-protocols
3283   PKG_CHECK_MODULES([WAYLAND_PROTOCOLS], [wayland-protocols >= 1.15], [
3284     WAYLAND_PROTOCOLS="$(${PKG_CONFIG} wayland-protocols --variable pkgdatadir)"
3285   ], [
3286     wl_err="$wl_err ${WAYLAND_PROTOCOLS_PKG_ERRORS}."
3287   ])
3289   AS_IF([test -n "$wl_err"], [
3290     AS_IF([test -n "$enable_wayland"], [
3291       AC_MSG_ERROR([$wl_err])
3292     ], [
3293       AC_MSG_WARN([$wl_err])
3294     ])
3295   ], [
3296     have_wayland="yes"
3297   ])
3299   dnl xkbcommon
3300   PKG_CHECK_MODULES([XKBCOMMON], [xkbcommon], [
3301     have_xkbcommon="yes"
3302   ], [
3303     AC_MSG_WARN([${XKBCOMMON_PKG_ERRORS}. Hotkeys are disabled.])
3304   ])
3306 AM_CONDITIONAL([HAVE_WAYLAND], [test "${have_wayland}" = "yes"])
3307 AC_SUBST([WAYLAND_PROTOCOLS])
3308 AC_SUBST([WAYLAND_SCANNER])
3309 AM_CONDITIONAL([HAVE_XKBCOMMON], [test "${have_xkbcommon}" = "yes"])
3313 dnl  SDL image decoder module
3315 AC_ARG_ENABLE([sdl-image],
3316   AS_HELP_STRING([--enable-sdl-image], [SDL image support (default enabled)]))
3317 AS_IF([test "${enable_sdl_image}" != "no"],[
3318   PKG_CHECK_MODULES(SDL_IMAGE, [SDL_image >= 1.2.10], [
3319     VLC_ADD_PLUGIN([sdl_image])
3320   ], [
3321     AC_MSG_WARN([${SDL_IMAGE_PKG_ERRORS}. You should install it alongside your SDL package.])
3322   ])
3326 dnl  freetype module
3328 AC_ARG_ENABLE([freetype],
3329   AS_HELP_STRING([--enable-freetype],   [freetype support   (default auto)]))
3330 AC_ARG_ENABLE([fribidi],
3331   AS_HELP_STRING([--enable-fribidi],    [fribidi support    (default auto)]))
3332 AC_ARG_ENABLE([harfbuzz],
3333   AS_HELP_STRING([--enable-harfbuzz],   [harfbuzz support   (default auto)]))
3334 AC_ARG_ENABLE([fontconfig],
3335   AS_HELP_STRING([--enable-fontconfig], [fontconfig support (default auto)]))
3337 AC_ARG_WITH([default-font],
3338     AS_HELP_STRING([--with-default-font=PATH],
3339         [Path to the default font]),
3340         [AC_DEFINE_UNQUOTED([DEFAULT_FONT_FILE],
3341             "$withval", [Default font])])
3342 AC_ARG_WITH([default-monospace-font],
3343     AS_HELP_STRING([--with-default-monospace-font=PATH],
3344         [Path to the default font]),
3345         [AC_DEFINE_UNQUOTED([DEFAULT_MONOSPACE_FONT_FILE],
3346             "$withval", [Default monospace font])])
3348 AC_ARG_WITH([default-font-family],
3349     AS_HELP_STRING([--with-default-font-family=NAME],
3350         [Name of the default font family]),
3351         [AC_DEFINE_UNQUOTED([DEFAULT_FAMILY],
3352             "$withval", [Default font family])])
3353 AC_ARG_WITH([default-monospace-font-family],
3354     AS_HELP_STRING([--with-default-monospace-font-family=NAME],
3355         [Name of the default font family]),
3356         [AC_DEFINE_UNQUOTED([DEFAULT_MONOSPACE_FAMILY],
3357             "$withval", [Default monospace font family])])
3359 have_freetype="no"
3360 have_fontconfig="no"
3361 have_fribidi="no"
3362 have_harfbuzz="no"
3364 if test "${enable_freetype}" != "no"; then
3365    PKG_CHECK_MODULES(FREETYPE, freetype2, [
3366       have_freetype="yes"
3367       VLC_ADD_CPPFLAGS([skins2],[${FREETYPE_CFLAGS}])
3368       VLC_ADD_LIBS([skins2],[${FREETYPE_LIBS}])
3370     dnl fontconfig support
3371     AS_IF([test "${enable_fontconfig}" != "no" -a "${SYS}" != "mingw32" -a "${SYS}" != "darwin"], [
3372       PKG_CHECK_MODULES(FONTCONFIG, [fontconfig >= 2.11], [
3373         have_fontconfig="yes"
3374       ], [
3375         AC_MSG_WARN([${FONTCONFIG_PKG_ERRORS}. Styles will be disabled in FreeType.])
3376       ])
3377     ])
3379       dnl fribidi support
3380       if test "${enable_fribidi}" != "no"; then
3381         PKG_CHECK_MODULES(FRIBIDI, fribidi, [
3382           have_fribidi="yes"
3383           VLC_ADD_CPPFLAGS([skins2], [${FRIBIDI_CFLAGS} -DHAVE_FRIBIDI])
3384           VLC_ADD_LIBS([skins2], [${FRIBIDI_LIBS}])
3385         ],[AC_MSG_WARN([${FRIBIDI_PKG_ERRORS}. Bidirectional text and complex scripts (Arabic, Farsi, Thai...) will be disabled in FreeType.])])
3386       fi
3388       dnl harfbuzz support
3389       if test "${have_fribidi}" != "no"; then
3390         if test "${enable_harfbuzz}" != "no"; then
3391           PKG_CHECK_MODULES(HARFBUZZ, harfbuzz, [
3392             have_harfbuzz="yes"
3393             VLC_ADD_CPPFLAGS([skins2], [${HARFBUZZ_CFLAGS} -DHAVE_HARFBUZZ])
3394             VLC_ADD_LIBS([skins2], [${HARFBUZZ_LIBS}])
3395           ],[AC_MSG_WARN([${HARFBUZZ_PKG_ERRORS}. Support for complex scripts (Arabic, Farsi, Thai...) will be disabled in FreeType.])])
3396         fi
3397       fi
3398   ],[
3399   AS_IF([test -n "${enable_freetype}"],[
3400     AC_MSG_ERROR([${FREETYPE_PKG_ERRORS}. Install FreeType2 development or configure with --disable-freetype.])
3401     ])
3402   ])
3405 AM_CONDITIONAL([HAVE_FREETYPE], [test "${have_freetype}" = "yes"])
3406 AM_CONDITIONAL([HAVE_FONTCONFIG], [test "${have_fontconfig}" = "yes"])
3407 AM_CONDITIONAL([HAVE_FRIBIDI], [test "${have_fribidi}" = "yes"])
3408 AM_CONDITIONAL([HAVE_HARFBUZZ], [test "${have_harfbuzz}" = "yes"])
3411 dnl libass subtitle rendering module
3413 AC_ARG_ENABLE([libass],
3414   AS_HELP_STRING([--enable-libass], [Subtitle support using libass (default enabled)]))
3415 AS_IF( [test "${enable_libass}" != "no"], [
3416   PKG_CHECK_MODULES(LIBASS, [libass >= 0.9.8],
3417       [
3418         VLC_ADD_PLUGIN([libass])
3420         if test "${have_fontconfig}" != "no"; then
3421             VLC_ADD_CPPFLAGS([libass],[-DHAVE_FONTCONFIG])
3422             VLC_ADD_LIBS([libass],[${FONTCONFIG_LIBS}])
3423         fi
3424       ],[
3425         AC_MSG_WARN([${LIBASS_PKG_ERRORS}.])
3426       ])
3427   ])
3430 dnl SAPI (text to Speech renderer for Windows)
3432 AC_LANG_PUSH([C++])
3433 AC_CHECK_TYPES([ISpObjectToken],[
3434               have_sapi="yes"
3435             ],[AC_MSG_WARN([sapi.h not found. Text to Speech renderer for Windows disabled])],
3436               [#include <windows.h>
3437                #include <sapi.h>
3438                #include <sphelper.h>])
3439 AM_CONDITIONAL([HAVE_SAPI], [test "${have_sapi}" = "yes"])
3440 AC_LANG_POP([C++])
3443 dnl  SVG module (text rendering and image decoding)
3445 PKG_ENABLE_MODULES_VLC([SVG], [], [librsvg-2.0 >= 2.9.0], [SVG rendering library],[auto])
3446 PKG_ENABLE_MODULES_VLC([SVGDEC], [], [librsvg-2.0 >= 2.9.0 cairo >= 1.13.1], [SVG image decoder library],[auto])
3449 dnl  Windows DirectX module
3452 AC_ARG_ENABLE([directx],
3453   AS_HELP_STRING([--enable-directx],
3454     [Microsoft DirectX support (default enabled on Windows)]),, [
3455   AS_IF([test "${SYS}" = "mingw32"], [
3456     enable_directx="yes"
3457   ], [
3458     enable_directx="no"
3459   ])
3461 AS_IF([test "${enable_directx}" != "no"], [
3462   dnl DirectDraw
3463   AC_CHECK_HEADERS([ddraw.h], [
3464     VLC_ADD_PLUGIN([directdraw])
3465   ])
3467   dnl OpenGL
3468   AC_CHECK_HEADERS([GL/glew.h], [
3469     AC_CHECK_HEADERS([GL/wglew.h], [
3470         VLC_ADD_PLUGIN([glwin32 wgl])
3471       ],, [
3472         #include <windows.h>
3473         #include <GL/glew.h>
3474       ])],, [
3475       #include <windows.h>
3476    ])
3478   dnl Direct3D11
3479   AC_CHECK_HEADERS([d3d11.h], [
3480     VLC_ADD_PLUGIN([direct3d11 direct3d11_filters])
3481   ])
3483   dnl Direct3D9
3484   AC_CHECK_HEADERS([d3d9.h], [
3485     VLC_ADD_PLUGIN([direct3d9])
3486     AC_CHECK_HEADERS([d3dx9effect.h])
3488     AC_PREPROC_IFELSE([AC_LANG_PROGRAM(
3489         [[#define COBJMACROS
3490           #include <d3d9.h>
3491           #include <dxva2api.h>
3492           #ifndef IDirectXVideoProcessorService_GetVideoProcessorDeviceGuids
3493           # error dxva2 too old
3494           #endif
3495         ]],[[;]])
3496       ],[
3497         VLC_ADD_PLUGIN([direct3d9_filters])
3498       ],
3499       [AC_MSG_WARN([Could not find required IDirectXVideoDecoder in dxva2api.h])])
3501   ])
3505 dnl  Linux framebuffer module
3507 AC_CHECK_HEADER([linux/fb.h], [
3508   VLC_ADD_PLUGIN([fb])
3512 dnl  Linux kernel mode setting module
3514 PKG_ENABLE_MODULES_VLC([KMS], [], [libdrm >= 2.4.83], [Linux kernel mode setting output], [auto])
3517 dnl  libcaca plugin
3519 PKG_ENABLE_MODULES_VLC([CACA], [], [caca >= 0.99.beta14], [libcaca output],[auto])
3522 dnl  OS/2 KVA plugin
3524 AC_ARG_ENABLE([kva],
3525   AS_HELP_STRING([--enable-kva],
3526     [support the K Video Accelerator KVA (default enabled on OS/2)]),, [
3527   AS_IF([test "$SYS" = "os2"], [
3528     enable_kva="yes"
3529   ])
3531 have_kva="no"
3532 KVA_LIBS=""
3533 AS_IF([test "$enable_kva" != "no"], [
3534   AC_CHECK_HEADERS([kva.h], [
3535     have_kva="yes"
3536     AC_CHECK_LIB([kva], [main], [
3537       KVA_LIBS="-lkva"
3538     ])
3539   ])
3541 AC_SUBST([KVA_LIBS])
3542 AM_CONDITIONAL([HAVE_KVA], [test "${have_kva}" = "yes"])
3545 dnl MMAL plugin
3547 AC_ARG_ENABLE([mmal],
3548   AS_HELP_STRING([--enable-mmal],
3549     [Multi-Media Abstraction Layer (MMAL) hardware plugin (default enable)]))
3550 if test "${enable_mmal}" != "no"; then
3551   VLC_SAVE_FLAGS
3552   LDFLAGS="${LDFLAGS} -L/opt/vc/lib -lvchostif"
3553   CPPFLAGS="${CPPFLAGS} -isystem /opt/vc/include -isystem /opt/vc/include/interface/vcos/pthreads -isystem /opt/vc/include/interface/vmcs_host/linux"
3554   AC_CHECK_HEADERS([interface/mmal/mmal.h],
3555     [ AC_CHECK_LIB([bcm_host], [vc_tv_unregister_callback_full], [
3556         have_mmal="yes"
3557         VLC_ADD_PLUGIN([mmal])
3558         VLC_ADD_LDFLAGS([mmal],[ -L/opt/vc/lib ])
3559         VLC_ADD_CFLAGS([mmal],[ -isystem /opt/vc/include -isystem /opt/vc/include/interface/vcos/pthreads -isystem /opt/vc/include/interface/vmcs_host/linux ])
3560         VLC_ADD_LIBS([mmal],[ -lbcm_host -lmmal -lmmal_core -lmmal_components -lmmal_util -lvchostif ]) ], [
3561           AS_IF([test "${enable_mmal}" = "yes"],
3562             [ AC_MSG_ERROR([Cannot find bcm library...]) ],
3563             [ AC_MSG_WARN([Cannot find bcm library...]) ])
3564           ],
3565         [])
3566     ] , [ AS_IF([test "${enable_mmal}" = "yes"],
3567       [ AC_MSG_ERROR([Cannot find development headers for mmal...]) ],
3568       [ AC_MSG_WARN([Cannot find development headers for mmal...]) ]) ])
3569   VLC_RESTORE_FLAGS
3571 AM_CONDITIONAL([HAVE_MMAL], [test "${have_mmal}" = "yes"])
3574 dnl  Audio plugins
3577 EXTEND_HELP_STRING([Audio plugins:])
3580 dnl  Pulseaudio module
3582 AC_ARG_ENABLE([pulse],
3583   AS_HELP_STRING([--enable-pulse],
3584     [use the PulseAudio client library (default auto)]))
3585 have_pulse="no"
3586 AS_IF([test "${enable_pulse}" != "no"], [
3587   PKG_CHECK_MODULES([PULSE], [libpulse >= 1.0], [
3588     have_pulse="yes"
3589   ], [
3590     AS_IF([test "x${enable_pulse}" != "x"], [
3591       AC_MSG_ERROR([$PULSE_PKG_ERRORS. PulseAudio 1.0 or later required.])
3592     ])
3593   ])
3595 AM_CONDITIONAL([HAVE_PULSE], [test "${have_pulse}" = "yes"])
3598 dnl  ALSA module
3600 AC_ARG_ENABLE([alsa],
3601   AS_HELP_STRING([--enable-alsa],
3602     [support the Advanced Linux Sound Architecture (default auto)]),, [
3603   AS_IF([test "$SYS" = "linux" -a "${have_pulse}" = "no"], [
3604     enable_alsa="yes"
3605   ])
3607 have_alsa="no"
3608 AS_IF([test "${enable_alsa}" != "no"], [
3609   PKG_CHECK_MODULES([ALSA], [alsa >= 1.0.24], [
3610     have_alsa="yes"
3611   ], [
3612     AS_IF([test "x${enable_alsa}" != "x"], [
3613       AC_MSG_ERROR([$ALSA_PKG_ERRORS. alsa-lib 1.0.24 or later required. Pass --disable-alsa to ignore this error.])
3614     ])
3615   ])
3617 AM_CONDITIONAL([HAVE_ALSA], [test "${have_alsa}" = "yes"])
3620 dnl  Open Sound System module
3622 AC_ARG_ENABLE([oss],
3623   AS_HELP_STRING([--enable-oss],
3624     [support the Open Sound System OSS (default enabled on FreeBSD/NetBSD/DragonFlyBSD)]),, [
3625   AS_IF([test "$SYS" = "mingw32" -o "$SYS" = "linux" -o "$SYS" = "openbsd"], [
3626     enable_oss="no"
3627   ])
3629 have_oss="no"
3630 OSS_LIBS=""
3631 AS_IF([test "$enable_oss" != "no"], [
3632   AC_CHECK_HEADERS([soundcard.h sys/soundcard.h], [
3633     have_oss="yes"
3634     AC_CHECK_LIB([ossaudio], [main], [
3635       OSS_LIBS="-lossaudio"
3636     ])
3637   ])
3639 AC_SUBST([OSS_LIBS])
3640 AM_CONDITIONAL([HAVE_OSS], [test "${have_oss}" = "yes"])
3643 dnl  OpenBSD sndio module
3645 AC_ARG_ENABLE([sndio],
3646   AS_HELP_STRING([--disable-sndio],
3647     [support the OpenBSD sndio (default auto)]),, [
3648   AS_IF([test "$SYS" = "openbsd"], [
3649     enable_sndio="yes"
3650   ])
3652 have_sndio="no"
3653 AS_IF([test "$enable_sndio" != "no"], [
3654   AC_CHECK_HEADER([sndio.h], [
3655     have_sndio="yes"
3656   ])
3658 AM_CONDITIONAL([HAVE_SNDIO], [test "${have_sndio}" = "yes"])
3661 dnl  Windows Audio Session plugin
3663 AC_ARG_ENABLE([wasapi],
3664   AS_HELP_STRING([--enable-wasapi],
3665     [use the Windows Audio Session API (default auto)])
3667 have_wasapi="no"
3668 AS_IF([test "$enable_wasapi" != "no"], [
3669   AC_CHECK_HEADER([audioclient.h], [
3670     have_wasapi="yes"
3671   ], [
3672     AS_IF([test "x${enable_wasapi}" != "x"], [
3673       AC_MSG_ERROR([Windows Audio Session API not found.])
3674     ])
3675   ])
3677 AM_CONDITIONAL([HAVE_WASAPI], [test "${have_wasapi}" = "yes"])
3680 dnl  JACK modules
3682 AC_ARG_ENABLE([jack],
3683   AS_HELP_STRING([--disable-jack],
3684     [do not use jack (default auto)]))
3685 have_jack="no"
3686 AS_IF([test "${enable_jack}" != "no"], [
3687     PKG_CHECK_MODULES(JACK, jack >= 1.9.7,
3688       [ have_jack=yes ],
3689       [
3690       AC_MSG_WARN([${JACK_PKG_ERRORS}, trying jack1 instead])
3692       PKG_CHECK_MODULES(JACK, jack >= 0.120.1 jack < 1.0,
3693       [ have_jack=yes ],
3694       [
3695       AS_IF([test -n "${enable_jack}"],
3696          [AC_MSG_ERROR([${JACK_PKG_ERRORS}.])],
3697          [AC_MSG_WARN([${JACK_PKG_ERRORS}.])])
3698       ])
3699     ])
3701 AM_CONDITIONAL([HAVE_JACK], [test "${have_jack}" != "no"])
3704 dnl  OpenSLES Android
3706 AC_ARG_ENABLE([opensles],
3707   AS_HELP_STRING([--enable-opensles], [Android OpenSL ES audio module (default disabled)]))
3708 if test "${HAVE_ANDROID}" = "1"; then
3709   if test "${enable_opensles}" = "yes"; then
3710       AC_CHECK_HEADERS([SLES/OpenSLES.h],
3711         [ VLC_ADD_PLUGIN([opensles_android]) ],
3712         [ AC_MSG_ERROR([cannot find OpenSLES headers])] )
3713   fi
3717 dnl  Tizen audio
3719 AC_ARG_ENABLE([tizen_audio],
3720   AS_HELP_STRING([--enable-tizen-audio],
3721     [Tizen audio module (default enabled on Tizen)]),, [
3722   AS_IF([test "$HAVE_TIZEN" = "1"], [
3723     enable_tizen_audio="yes"
3724   ])
3726 if test "${enable_tizen_audio}" = "yes"; then
3727   AC_CHECK_HEADERS([audio_io.h],
3728     [ VLC_ADD_PLUGIN([tizen_audio]) ],
3729     [ AC_MSG_ERROR([cannot find Tizen audio_io headers])] )
3733 dnl libsamplerate plugin
3735 PKG_ENABLE_MODULES_VLC([SAMPLERATE], [], [samplerate], [Resampler with libsamplerate], [auto])
3738 dnl  soxr module
3740 PKG_ENABLE_MODULES_VLC([SOXR], [], [soxr >= 0.1.2], [SoX Resampler library], [auto])
3743 dnl  OS/2 KAI plugin
3745 AC_ARG_ENABLE([kai],
3746   AS_HELP_STRING([--enable-kai],
3747     [support the K Audio Interface KAI (default enabled on OS/2)]),, [
3748   AS_IF([test "$SYS" = "os2"], [
3749     enable_kai="yes"
3750   ])
3752 have_kai="no"
3753 KAI_LIBS=""
3754 AS_IF([test "$enable_kai" != "no"], [
3755   AC_CHECK_HEADERS([kai.h], [
3756     have_kai="yes"
3757     AC_CHECK_LIB([kai], [main], [
3758       KAI_LIBS="-lkai"
3759     ])
3760   ])
3762 AC_SUBST([KAI_LIBS])
3763 AM_CONDITIONAL([HAVE_KAI], [test "${have_kai}" = "yes"])
3766 dnl  chromaprint audio track fingerprinter
3768 m4_pushdef([libchromaprint_version], 0.6.0)
3769 PKG_WITH_MODULES([CHROMAPRINT],[libchromaprint >= libchromaprint_version],
3770     VLC_ADD_PLUGIN([stream_out_chromaprint]),
3771     AS_IF([test "${enable_chromaprint}" = "yes"],
3772         [AC_MSG_ERROR(Library [libchromaprint >= libchromaprint_version] needed for [chromaprint] was not found)],
3773         [AC_MSG_WARN(Library [libchromaprint >= libchromaprint_version] needed for [chromaprint] was not found)]
3774          ),
3775     [(Chromaprint based audio fingerprinter)],[auto])
3776 m4_popdef([libchromaprint_version])
3779 dnl  Chromecast streaming support
3781 m4_pushdef([protobuf_lite_version], 2.5.0)
3782 AC_ARG_VAR(PROTOC, [protobuf compiler])
3783 AC_CHECK_PROGS(PROTOC, protoc, no)
3784 PKG_WITH_MODULES([CHROMECAST],[protobuf-lite >= protobuf_lite_version], [
3785     AS_IF([test "x${PROTOC}" != "xno"], [
3786         build_chromecast="yes"
3787     ], [
3788     AC_MSG_ERROR(protoc compiler needed for [chromecast] was not found)
3789     ])
3790 ], [
3791     AS_IF([test "${enable_chromecast}" = "yes"],
3792         AC_MSG_ERROR(Library [protobuf-lite >= protobuf_lite_version] needed for [chromecast] was not found),
3793         AC_MSG_WARN(Library [protobuf-lite >= protobuf_lite_version] needed for [chromecast] was not found)
3794     )
3795     enable_chromecast="no"
3796 ], [(Chromecast streaming support)], [auto])
3797 AM_CONDITIONAL([BUILD_CHROMECAST], [test "${build_chromecast}" = "yes"])
3798 m4_popdef([protobuf_lite_version])
3801 dnl  Interface plugins
3804 EXTEND_HELP_STRING([Interface plugins:])
3807 dnl QT
3809 AC_ARG_ENABLE([qt],
3810   AS_HELP_STRING([--disable-qt], [Qt UI support (default enabled)]),, [
3811   AS_IF([test "${enable_vlc}" != "no"], [enable_qt="yes"])
3812   AS_IF([test "${SYS}" = "darwin"], [
3813     enable_qt="no"
3814   ])
3816 have_qt5_x11="no"
3817 AS_IF([test "${enable_qt}" != "no"], [
3818   PKG_CHECK_MODULES([QT], [Qt5Core >= 5.9.0 Qt5Widgets Qt5Gui Qt5Svg], [
3819       PKG_CHECK_MODULES([QT5_X11], [Qt5X11Extras], [
3820           have_qt5_x11="yes"
3821       ],[
3822           AC_MSG_WARN([Not building Qt Interface with X11 helpers.])
3823       ])
3824       QT_PATH="$(eval $PKG_CONFIG --variable=exec_prefix Qt5Core)"
3825       QT_HOST_PATH="$(eval $PKG_CONFIG --variable=host_bins Qt5Core)"
3826       QT_VERSION="$(eval $PKG_CONFIG --modversion Qt5Gui)"
3827       AC_PATH_PROGS(MOC, [moc-qt5 moc], moc, ["${QT_HOST_PATH}" "${QT_PATH}/bin"])
3828       AC_PATH_PROGS(RCC, [rcc-qt5 rcc], rcc, ["${QT_HOST_PATH}" "${QT_PATH}/bin"])
3829       AC_PATH_PROGS(UIC, [uic-qt5 uic], uic, ["${QT_HOST_PATH}" "${QT_PATH}/bin"])
3830     ], [
3831       AS_IF([test -n "${enable_qt}"],[
3832         AC_MSG_ERROR([${QT_PKG_ERRORS}. If you want to build VLC without GUI, pass --disable-qt.])
3833       ],[
3834         AC_MSG_WARN([${QT_PKG_ERRORS}.])
3835       ])
3836       enable_qt="no"
3837     ])
3840 AS_IF([test "${enable_qt}" != "no"], [
3841   ALIASES="${ALIASES} qvlc"
3843 AC_SUBST([QT_VERSION])
3844 AM_CONDITIONAL([ENABLE_QT], [test "$enable_qt" != "no"])
3845 AM_CONDITIONAL([HAVE_QT5_X11], [test "${have_qt5_x11}" = "yes"])
3848 dnl detect kde4-config patch (used for kde solids).
3850 AC_ARG_VAR([KDE4_CONFIG], [kde4-config utility])
3851 AS_IF([test "x$KDE4_CONFIG" = "x"], [
3852   KDE4_CONFIG="kde4-config"
3856 dnl Simple test for skins2 dependency
3858 AS_IF([test "$enable_qt" = "no"], [
3859   AS_IF([test "${enable_skins2}" = "yes"], [
3860     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.])
3861   ], [
3862     enable_skins2="no"
3863     AC_MSG_WARN([The skins2 module depends on the Qt interface, Qt is not built so skins2 is disabled.])
3864   ])
3868 dnl Skins2 module
3870 AC_ARG_ENABLE([skins2],
3871   AS_HELP_STRING([--enable-skins2], [skins interface module (default auto)]))
3872 AS_IF([test "${enable_skins2}" != "no"], [
3873   have_skins_deps="yes"
3875   dnl Win32
3876   AS_IF([test "${SYS}" = "mingw32"], [
3877     VLC_ADD_CPPFLAGS([skins2],[-U_OFF_T_ -U_off_t -DWIN32_SKINS])
3878     VLC_ADD_LIBS([skins2],[-lgdi32 -lole32 -luuid -lmsimg32])
3879   dnl OS/2
3880   ], [test "${SYS}" = "os2"], [
3881     VLC_ADD_CPPFLAGS([skins2],[ -DOS2_SKINS])
3882   dnl Linux/Unix
3883   ], [
3884     PKG_CHECK_MODULES([XPM], [xpm],, [have_skins_deps="no"])
3885     PKG_CHECK_MODULES([XINERAMA], [xinerama],, [have_skins_deps="no"])
3886     PKG_CHECK_MODULES([XCURSOR], [xcursor],, [have_skins_deps="no"])
3887     PKG_CHECK_MODULES([XEXT], [xext],, [have_skins_deps="no"])
3888     VLC_ADD_CPPFLAGS([skins2],[${X_CFLAGS} ${XEXT_CFLAGS} ${XPM_CFLAGS} -DX11_SKINS])
3889     VLC_ADD_LIBS([skins2],[${X_LIBS} ${X_PRE_LIBS} ${XEXT_LIBS} ${XPM_LIBS} ${XINERAMA_LIBS} ${XCURSOR_LIBS} -lX11])
3890   ])
3892   dnl we need freetype
3893   AS_IF([test "${have_freetype}" != "yes"], [
3894     have_skins_deps="no"
3895   ])
3897   AS_IF([test "${have_skins_deps}" = "no"], [
3898     AS_IF([test "x${enable_skins2}" = "x"], [
3899       AC_MSG_WARN([Skins2 interface disabled due to missing dependencies.])
3900     ], [
3901       AC_MSG_ERROR([Skins2 interface requires FreeType, libxcursor, libxpm, libxext and libxinerama])
3902     ])
3903     enable_skins2="no"
3904   ], [
3905     ALIASES="${ALIASES} svlc"
3906     enable_skins2="yes"
3907   ])
3909 AM_CONDITIONAL([BUILD_SKINS], [test "${enable_skins2}" = "yes"])
3911 AC_ARG_ENABLE([libtar],
3912   AS_HELP_STRING([--enable-libtar], [libtar support for skins2 (default auto)]))
3913 AS_IF([test "${enable_skins2}" = "yes" && test "${enable_libtar}" != "no"], [
3914   AC_CHECK_HEADERS([libtar.h], [
3915     VLC_ADD_LIBS([skins2],[-ltar])
3916   ])
3920 dnl  MacOS X gui module
3922 AC_ARG_ENABLE([macosx],
3923   AS_HELP_STRING([--enable-macosx], [Mac OS X gui support (default enabled on Mac OS X)]))
3924 if test "x${enable_macosx}" != "xno" -a "${SYS}" = "darwin"
3925 then
3927   dnl
3928   dnl If possible, use xcrun to find the right ibtool
3929   dnl
3931   AC_PATH_PROG([XCRUN], [xcrun], [no])
3932   AS_IF([test ! "x${XCRUN}" = "xno"], [
3933     AC_MSG_CHECKING([for ibtool (using xcrun)])
3934     XIB="$(eval $XCRUN -f ibtool 2>/dev/null || echo no)"
3935     AC_MSG_RESULT([${XIB}])
3936   ], [
3937     AC_MSG_WARN([Looking for tools without using xcrun])
3938   ])
3940   AS_IF([test "x${XIB}" = "xno"], [
3941     AC_PATH_PROG(XIB, [ibtool], [no])
3942     AS_IF([test "x${XIB}" = "xno"], [
3943       AC_MSG_ERROR([ibtool was not found, but is required for --enable-macosx])
3944     ])
3945   ])
3947 AM_CONDITIONAL([ENABLE_MACOSX_UI], [test "$enable_macosx" != "no" -a "${SYS}" = "darwin"])
3950 dnl  MacOS X sparkle update support
3952 AC_ARG_ENABLE([sparkle],
3953   AS_HELP_STRING([--enable-sparkle], [Sparkle update support for OS X (default enabled on Mac OS X)]))
3954 if test "x${enable_sparkle}" != "xno" -a "${HAVE_OSX}" = "1"
3955 then
3956   if test ! -d ${CONTRIB_DIR}/Sparkle.framework -a ! -d ${CONTRIB_DIR}/Frameworks/Sparkle.framework
3957   then
3958     AC_MSG_ERROR([Sparkle framework is required and was not found in ${CONTRIB_DIR}])
3959   fi
3961   AC_DEFINE([HAVE_SPARKLE], [1], [Define to 1 if sparkle is enabled.])
3963 AM_CONDITIONAL([HAVE_SPARKLE], [test "$enable_sparkle" != "no"])
3966 dnl  MacOS X breakpad creash reporter support
3968 AC_ARG_WITH([breakpad],
3969   AS_HELP_STRING([--with-breakpad=URL], [Enable Breakpad reporter using given URL]), [], [with_breakpad=no])
3971 AS_IF([test "$with_breakpad" != "no"], [
3973   AS_IF([test "$with_breakpad" = "yes"], [
3974     AC_MSG_ERROR([You need to supply the CrashDragon Server URL as value for --with-breakpad])
3975   ])
3977   AS_IF([test "$HAVE_OSX" = "1"], [
3978     AC_MSG_CHECKING([for Breakpad framework])
3979     AS_IF([test ! -d ${CONTRIB_DIR}/Breakpad.framework -a \
3980                 ! -d ${CONTRIB_DIR}/Frameworks/Breakpad.framework], [
3981       AC_MSG_RESULT([no])
3982       with_breakpad="no"
3983       AC_MSG_ERROR([Breakpad framework is required and was not found in ${CONTRIB_DIR}])
3984     ], [
3985       AC_MSG_RESULT([yes])
3986     ])
3987   ],[
3988     PKG_CHECK_MODULES([BREAKPAD], [breakpad-client], [
3989       LDFLAGS="${LDFLAGS} -Wl,--build-id"
3990     ], [
3991       AC_MSG_ERROR(["breakpad not found"])
3992     ])
3993   ])
3996 AM_CONDITIONAL([HAVE_BREAKPAD], [test "$with_breakpad" != "no"])
3997 AS_IF([test "$with_breakpad" != "no"], [
3998   AC_SUBST([BREAKPAD_URL], ["${with_breakpad}"])
4002 dnl  Minimal Mac OS X module
4004 AC_ARG_ENABLE([minimal-macosx],
4005   AS_HELP_STRING([--enable-minimal-macosx], [Minimal Mac OS X support (default disabled)]))
4006 if test "${enable_minimal_macosx}" = "yes" -a "${SYS}" = "darwin"
4007 then
4008   VLC_ADD_PLUGIN([minimal_macosx])
4012 dnl Mac OS X fancy dmg build tool
4014 if test "${HAVE_OSX}" = "1"
4015 then
4016   AC_PATH_PROG(DMGBUILD, dmgbuild, no)
4017   AS_IF([test "x${DMGBUILD}" = "xno"], [
4018     AC_MSG_WARN([dmgbuild not found -- unable to build fancy DMGs])
4019   ])
4021 AM_CONDITIONAL([HAVE_DMGBUILD], [test "x$DMGBUILD" != "xno" -a "${HAVE_OSX}" = "1"])
4024 dnl  VideoToolbox plugins
4025 AC_CHECK_HEADERS([VideoToolbox/VideoToolbox.h], [
4026     VLC_ADD_PLUGIN([videotoolbox])
4027     VLC_ADD_PLUGIN([cvpx])
4028   ])
4031 dnl  AudioToolbox MIDI plugin
4032 AC_CHECK_HEADERS([AudioToolbox/AudioToolbox.h], [
4033   VLC_ADD_PLUGIN([audiotoolboxmidi])
4037 dnl  ncurses module
4039 AC_ARG_ENABLE([ncurses],
4040 AS_HELP_STRING([--disable-ncurses],[ncurses text-based interface (default auto)]))
4041 have_ncurses="no"
4042 AS_IF([test "${enable_ncurses}" != "no"] ,[
4043   PKG_CHECK_MODULES([NCURSES], [ncursesw], [
4044     have_ncurses="yes"
4045     ALIASES="${ALIASES} nvlc"
4046   ], [
4047     AS_IF([test -n "${enable_ncurses}"], [
4048       AC_MSG_ERROR([${NCURSES_PKG_ERRORS}.])
4049     ])
4050   ])
4052 AM_CONDITIONAL([HAVE_NCURSES], [test "${have_ncurses}" = "yes"])
4055 dnl  Lirc plugin
4057 AC_ARG_ENABLE([lirc],
4058   AS_HELP_STRING([--enable-lirc], [lirc support (default disabled)]))
4059 have_lirc="no"
4060 AS_IF([test "${enable_lirc}" = "yes"], [
4061   AC_CHECK_HEADER(lirc/lirc_client.h, [
4062     AC_CHECK_LIB([lirc_client], [lirc_init], [
4063       have_lirc="yes"
4064     ])
4065   ])
4067 AM_CONDITIONAL([HAVE_LIRC], [test "${have_lirc}" = "yes"])
4070 dnl  Bitstream
4072 PKG_CHECK_MODULES([BITSTREAM], [bitstream > 1.4],[have_bitstream="yes"], [have_bitstream="no"])
4073 AM_CONDITIONAL([HAVE_BITSTREAM], [test "${have_bitstream}" = "yes"])
4076 dnl  SRT plugin
4078 PKG_ENABLE_MODULES_VLC([SRT], [access_srt access_output_srt], [srt >= 1.2.2], [SRT input/output plugin], [auto], [], [], [-DENABLE_SRT])
4080 EXTEND_HELP_STRING([Visualisations and Video filter plugins:])
4082 dnl  goom visualization plugin
4084 PKG_ENABLE_MODULES_VLC([GOOM], [], [libgoom2], [goom visualization plugin], [auto])
4087 dnl libprojectM visualization plugin
4089 AC_ARG_ENABLE([projectm],
4090   AS_HELP_STRING([--enable-projectm], [projectM visualization plugin (default enabled)]))
4091 AS_IF([test "${enable_projectm}" != "no"],
4092   [
4093     PKG_CHECK_MODULES(PROJECTM, libprojectM,
4094     [
4095       VLC_ADD_PLUGIN([projectm])
4096       PKG_CHECK_EXISTS([libprojectM >= 2.0.0],
4097         [ AC_DEFINE([HAVE_PROJECTM2], 1, [Define to 1 if using libprojectM 2.x]) ],
4098         [ AC_MSG_WARN( [Using libprojectM version 1] )
4099       ])
4100     ],[
4101       AC_MSG_WARN([${PROJECTM_PKG_ERRORS}.])
4102     ])
4103   ])
4106 dnl Vovoid VSXu visualization plugin
4108 AC_ARG_ENABLE([vsxu],
4109   AS_HELP_STRING([--enable-vsxu], [Vovoid VSXu visualization plugin (default auto)]))
4110 AS_IF([test "${enable_vsxu}" != "no"],
4111   [
4112     PKG_CHECK_MODULES(VSXU, libvsxu,
4113     [
4114       VLC_ADD_PLUGIN([vsxu])
4115     ],[
4116       AC_MSG_WARN([${VSXU_PKG_ERRORS}.])
4117     ])
4118   ])
4120 EXTEND_HELP_STRING([Service Discovery plugins:])
4122 dnl  Avahi-Zeroconf services discovery
4123 PKG_ENABLE_MODULES_VLC([AVAHI], [], [avahi-client >= 0.6], [Zeroconf services discovery], [auto])
4126 dnl  libudev services discovery
4127 PKG_ENABLE_MODULES_VLC([UDEV], [], [libudev >= 142], [Linux udev services discovery], [auto])
4130 dnl MTP devices services discovery
4131 PKG_ENABLE_MODULES_VLC([MTP], [mtp access_mtp], [libmtp >= 1.0.0], [MTP devices support], [auto])
4134 dnl UPnP Plugin (Intel SDK)
4136 PKG_ENABLE_MODULES_VLC([UPNP], [upnp], [libupnp], [Intel UPNP SDK],[auto])
4139 dnl mDNS using libmicrodns
4141 PKG_ENABLE_MODULES_VLC([MICRODNS], [], [microdns], [mDNS services discovery], [auto])
4144 EXTEND_HELP_STRING([Misc options:])
4147 dnl  libxml2 module
4149 PKG_ENABLE_MODULES_VLC([LIBXML2], [xml], [libxml-2.0 >= 2.5], [libxml2 support],[auto])
4153 dnl libgcrypt
4155 AC_ARG_ENABLE([libgcrypt],
4156   AS_HELP_STRING([--disable-libgcrypt], [gcrypt support (default enabled)]))
4157 AC_ARG_VAR([GCRYPT_CFLAGS], [C compiler flags for gcrypt])
4158 AC_ARG_VAR([GCRYPT_LIBS], [linker flags flags for gcrypt])
4160 # require libgcrypt >= 1.6.0
4161 AS_IF([test "${enable_libgcrypt}" != "no"], [
4162   AC_CACHE_CHECK([for gcrypt 1.6.0 or later], [ac_cv_lib_gcrypt], [
4163     VLC_SAVE_FLAGS
4164     CFLAGS="${CFLAGS} ${GCRYPT_CFLAGS}"
4165     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([
4166 [#include <gcrypt.h>
4167 #if GCRYPT_VERSION_NUMBER < 0x010600
4168 #error
4169 #endif]])], [
4170       ac_cv_lib_gcrypt=yes
4171     ], [
4172       ac_cv_lib_gcrypt=no
4173     ])
4174     VLC_RESTORE_FLAGS
4175   ])
4177   AS_IF([test "${ac_cv_lib_gcrypt}" = "yes"], [
4178     AC_DEFINE([HAVE_GCRYPT], 1, [Defined if having gcrypt])
4179   ], [
4180     AS_IF([test "${enable_libgcrypt}" = "yes"], [
4181       AC_MSG_ERROR([libgcrypt version 1.6.0 or higher not found. Install libgcrypt or pass --disable-libgcrypt.])
4182     ])
4183   ])
4186 AS_IF([test -z "$GCRYPT_LIBS"], [
4187   GCRYPT_LIBS="-lgcrypt -lgpg-error"
4190 AC_SUBST([GCRYPT_CFLAGS])
4191 AC_SUBST([GCRYPT_LIBS])
4192 AM_CONDITIONAL([HAVE_GCRYPT], [test "${ac_cv_lib_gcrypt}" = "yes"])
4195 dnl TLS/SSL
4197 AC_ARG_ENABLE([gnutls],
4198   AS_HELP_STRING([--enable-gnutls], [GNU TLS TLS/SSL support (default enabled)]))
4199 AS_IF([test "${enable_gnutls}" != "no"], [
4200   PKG_CHECK_MODULES(GNUTLS, [gnutls >= 3.3.6], [
4201     VLC_ADD_PLUGIN([gnutls])
4202   ], [
4203     AS_IF([test -n "${enable_gnutls}"], [
4204       AC_MSG_ERROR([${GNUTLS_PKG_ERRORS}.)])
4205     ])
4206   ])
4211 dnl Taglib plugin
4213 AC_ARG_ENABLE([taglib],
4214   AS_HELP_STRING([--disable-taglib],
4215     [do not use TagLib (default enabled)]))
4216 AS_IF([test "${enable_taglib}" != "no"], [
4217   PKG_CHECK_MODULES(TAGLIB, taglib >= 1.9, [
4218     VLC_ADD_PLUGIN([taglib])
4219   ], [
4220     AC_MSG_WARN([${TAGLIB_PKG_ERRORS}.])])
4224 dnl  libsecret
4226 PKG_ENABLE_MODULES_VLC([SECRET], [], [libsecret-1 >= 0.18], [use libsecret for keystore], [auto])
4229 dnl  kwallet
4231 AC_ARG_ENABLE([kwallet],
4232   AS_HELP_STRING([--enable-kwallet],
4233     [use kwallet (via D-Bus) for keystore (default enabled)]))
4234 AS_IF([test "${enable_kwallet}" != "no" -a "${have_dbus}" = "yes"], [
4235   VLC_ADD_PLUGIN([kwallet])
4239 dnl update checking system
4241 AC_ARG_ENABLE([update-check],
4242   AS_HELP_STRING([--enable-update-check], [update checking system (default disabled)]))
4243 if test "${enable_update_check}" = "yes"
4244 then
4245  AS_IF([test "${ac_cv_lib_gcrypt}" != "yes"],[
4246     AC_MSG_ERROR([libgcrypt is required for update checking system]) ])
4248 AM_CONDITIONAL([UPDATE_CHECK], [test "${enable_update_check}" = "yes"])
4251 dnl OS X notification plugin
4253 AC_ARG_ENABLE([osx_notifications],
4254   AS_HELP_STRING([--enable-osx-notifications],
4255     [macOS notification plugin (default disabled)]),,
4256   [enable_osx_notifications=no])
4257 AS_IF([test "${enable_osx_notifications}" != "no"], [
4258   VLC_ADD_PLUGIN([osx_notifications])
4262 dnl Libnotify notification plugin
4264 PKG_ENABLE_MODULES_VLC([NOTIFY], [], [libnotify gtk+-3.0], [libnotify notification], [auto])
4266 PKG_ENABLE_MODULES_VLC([MEDIALIBRARY], [medialibrary], [medialibrary], (medialibrary support), [auto])
4269 dnl  Endianness check
4271 AC_C_BIGENDIAN
4272 AS_IF([test "${ac_cv_c_bigendian}" = "yes"], [
4273   DEFS_BIGENDIAN="-DWORDS_BIGENDIAN=1"
4274 ], [
4275   DEFS_BIGENDIAN=""
4277 AC_SUBST([DEFS_BIGENDIAN])
4280 dnl Where to install KDE solid .desktop
4282 AC_ARG_WITH(kde-solid,
4283   AS_HELP_STRING([--with-kde-solid=PATH],
4284                  [KDE Solid actions directory (auto)]),, [
4286 if test "${SYS}" != "mingw32" -a "${SYS}" != "darwin" ; then
4287   with_kde_solid="yes"
4290 soliddatadir=""
4291 AS_IF([test "${with_kde_solid}" != "no"], [
4292   AS_IF([test "${with_kde_solid}" = "yes"], [
4293     kde4datadir="`${KDE4_CONFIG} --install data`"
4294     AS_IF([test "x$kde4datadir" = "x"], [kde4datadir='${datadir}/kde4/apps'])
4295     soliddatadir="${kde4datadir}/solid/actions"
4296   ], [
4297     soliddatadir="${with_kde_solid}"
4298   ])
4300 AC_SUBST([soliddatadir])
4301 AM_CONDITIONAL([KDE_SOLID], [test "x${soliddatadir}" != "x"])
4304 dnl  Find tools for win32 packaging
4306 AS_IF([test "${SYS}" = "mingw32"], [
4307     dnl
4308     dnl Find makensis required to build the NSIS installer
4309     dnl
4310     nsis_major_required="3"
4311     nsis_version_ok="no"
4312     AC_PATH_PROG([MAKENSIS], [makensis], [no])
4313     AS_IF([test "$MAKENSIS" != "no"], [
4314         # Check version
4315         AC_MSG_CHECKING([makensis version])
4316         nsis_version=$($MAKENSIS -VERSION)
4317         AC_MSG_RESULT([$nsis_version])
4318         nsis_version_major=$(echo "$nsis_version" | awk -F \. '{print $1}' | sed 's/v//')
4319         # Check if major version is a valid number
4320         AS_IF([test -n "$nsis_version_major" && \
4321                test "$nsis_version_major" -eq "$nsis_version_major" 2> /dev/null], [
4322             # Do the version check using major version
4323             AS_IF([test "$nsis_version_major" -lt "$nsis_major_required"], [
4324                 AC_MSG_WARN([makensis too old, (needs ${nsis_major_required}.x, have ${nsis_version_major}.x)])
4325             ], [
4326                 nsis_version_ok="yes"
4327             ])
4328         ], [
4329             AC_MSG_WARN([failed to check the makensis version])
4330         ])
4331     ])
4332     dnl
4333     dnl Find 7zip
4334     dnl
4335     AC_PATH_PROG([SEVENZIP], [7z], [7z])
4337 AM_CONDITIONAL([HAVE_MAKENSIS], [test "x$MAKENSIS" != "xno" && test "$nsis_version_ok" = "yes"])
4340 dnl Check wether we have the PROCESS_MITIGATION_IMAGE_LOAD_POLICY
4341 dnl It should only be available when building for win10, but some SDKs define it unconditionnaly
4343 if test "${SYS}" = "mingw32"; then
4344     AC_CHECK_TYPES([PROCESS_MITIGATION_IMAGE_LOAD_POLICY],,,[#include <windows.h>])
4347 EXTEND_HELP_STRING([Components:])
4350 dnl  the VLC binary
4352 AC_ARG_ENABLE([vlc],
4353   AS_HELP_STRING([--enable-vlc], [build the VLC media player (default enabled)]))
4354 AM_CONDITIONAL([BUILD_VLC], [test "${enable_vlc}" != "no"])
4357 dnl Fuzzer (at the end in order to don't mess dependencies FLAGS)
4359 AS_VAR_IF(with_libfuzzer, no, [], [
4360     LIBS="-lstdc++ ${LIBM} -L${with_libfuzzer} -lFuzzer"
4361     AX_CHECK_COMPILE_FLAG(-fsanitize-coverage=trace-pc-guard, [
4362         AX_APPEND_FLAG([-fsanitize-coverage=trace-pc-guard])
4363         AX_APPEND_FLAG([-fsanitize-coverage=trace-pc-guard], [CXXFLAGS])
4364         AX_APPEND_COMPILE_FLAGS([-fsanitize-coverage=trace-cmp])
4365         AX_APPEND_COMPILE_FLAGS([-fsanitize-coverage=trace-cmp], [CXXFLAGS])
4366     ], [
4367         AX_CHECK_COMPILE_FLAG(-fsanitize-coverage=trace-pc, [
4368             AX_APPEND_FLAG([-fsanitize-coverage=trace-pc])
4369             AX_APPEND_FLAG([-fsanitize-coverage=trace-pc], [CXXFLAGS])
4370         ], [
4371             AC_MSG_ERROR([Sanitizer coverage not supported by your compiler])
4372         ])
4373     ])
4377 dnl  Stuff used by the program
4379 VERSION_MESSAGE="${VERSION} ${CODENAME}"
4380 COPYRIGHT_MESSAGE="Copyright © ${COPYRIGHT_YEARS} the VideoLAN team"
4381 AC_DEFINE_UNQUOTED([VERSION_MESSAGE], "${VERSION_MESSAGE}", [Simple version string])
4382 AC_DEFINE_UNQUOTED([COPYRIGHT_MESSAGE], "${COPYRIGHT_MESSAGE}", [Copyright string])
4383 AC_DEFINE_UNQUOTED([COPYRIGHT_YEARS], "${COPYRIGHT_YEARS}", [The copyright years])
4384 AC_DEFINE_UNQUOTED([CONFIGURE_LINE], "${CONFIGURE_LINE}", [The ./configure command line])
4385 AC_DEFINE_UNQUOTED([PACKAGE_VERSION_MAJOR],${VERSION_MAJOR}, [version major number])
4386 AC_DEFINE_UNQUOTED([PACKAGE_VERSION_MINOR],${VERSION_MINOR}, [version minor number])
4387 AC_DEFINE_UNQUOTED([PACKAGE_VERSION_REVISION],${VERSION_REVISION}, [version revision number])
4388 AC_DEFINE_UNQUOTED([PACKAGE_VERSION_EXTRA],${VERSION_EXTRA}, [version extra number])
4389 AC_DEFINE_UNQUOTED([PACKAGE_VERSION_DEV],"${VERSION_DEV}", [version development string])
4390 AC_SUBST([COPYRIGHT_MESSAGE])
4391 AC_SUBST([VERSION_MESSAGE])
4392 AC_SUBST([VERSION_MAJOR])
4393 AC_SUBST([VERSION_MINOR])
4394 AC_SUBST([VERSION_REVISION])
4395 AC_SUBST([VERSION_EXTRA])
4396 AC_SUBST([COPYRIGHT_YEARS])
4397 AC_DEFINE_UNQUOTED([VLC_COMPILE_BY], "`whoami|sed -e 's/\\\/\\\\\\\/g'`", [user who ran configure])
4398 AC_DEFINE_UNQUOTED([VLC_COMPILE_HOST], "`hostname -f 2>/dev/null || hostname`", [host which ran configure])
4399 AC_DEFINE_UNQUOTED([VLC_COMPILER], "`$CC -v 2>&1 | tail -n 1 | sed -e 's/ *$//'`", [compiler])
4401 dnl  Handle substvars that use $(top_srcdir)
4403 CPPFLAGS="-I\$(top_srcdir)/include -I\$(top_builddir)/include ${CPPFLAGS}"
4406 dnl  Configuration is finished
4408 AC_SUBST([SYS])
4409 AC_SUBST([ARCH])
4410 AC_SUBST([ALIASES])
4411 AC_SUBST([ASM])
4412 AC_SUBST([MOC])
4413 AC_SUBST([RCC])
4414 AC_SUBST([UIC])
4415 AC_SUBST([WINDRES])
4416 AC_SUBST([WINE_SDK_PATH])
4417 AC_SUBST([LIBEXT])
4418 AC_SUBST([AM_CPPFLAGS])
4419 AC_SUBST([MACOSX_DEPLOYMENT_TARGET])
4420 AC_SUBST([FILE_LIBVLCCORE_DLL])
4421 AC_SUBST([FILE_LIBVLC_DLL])
4423 AC_CONFIG_FILES([
4424   Makefile
4425   doc/Makefile
4426   modules/Makefile
4427   m4/Makefile
4428   po/Makefile.in
4429   share/Makefile
4430   compat/Makefile
4431   src/Makefile
4432   lib/Makefile
4433   bin/Makefile
4434   test/Makefile
4435   modules/hw/mmal/Makefile
4436   share/vlc.appdata.xml.in
4439 AM_COND_IF([HAVE_WIN32], [
4440   AC_CONFIG_FILES([
4441     extras/package/win32/NSIS/spad.nsi
4442     extras/package/win32/NSIS/vlc.win32.nsi
4443     extras/package/win32/msi/config.wxi
4444   ])
4447 AM_COND_IF([HAVE_DARWIN], [
4448   AC_CONFIG_FILES([
4449     modules/gui/macosx/UI/InfoPlist.strings:modules/gui/macosx/Resources/InfoPlist.strings.in
4450     share/macosx/Info.plist:share/Info.plist.in
4451   ])
4454 dnl Generate makefiles
4455 AC_OUTPUT
4457 dnl Do we have to use make or gmake ?
4458 if make --version 2>&1|grep -q GNU
4459 then
4460     # GNU make, all seems good
4461     MAKE=make
4462 else
4463     # Known GNU make alias (on BSD)
4464     MAKE=gmake
4466 dnl Shortcut to nice compile message
4467 if test -n $SHELL; then
4468   SHELL=${CONFIG_SHELL-/bin/sh}
4470 rm -f compile
4471 compile_top_srcdir=`sed -ne "s/^top_srcdir *= *//p" < Makefile`
4472 echo "#! $SHELL
4473 rm -f .error\$\$
4474 ERROR=0
4475 export PATH=\"$PATH\" LANG=C
4476 ($MAKE V=1 \$@ 2>&1 || touch .error\$\$)| $compile_top_srcdir/extras/buildsystem/make.pl
4477 test -f .error\$\$ && ERROR=1
4478 rm -f .error\$\$
4479 exit \$ERROR" >compile
4480 chmod a+x compile
4482 echo "
4483 libvlc configuration
4484 --------------------
4485 version               : ${VERSION}
4486 system                : ${SYS}
4487 architecture          : ${ARCH}
4488 optimizations         : ${enable_optimizations}"
4489 if test "${enable_vlc}" != "no"; then
4490 echo "vlc aliases           :${ALIASES}"
4491 else
4492 echo "build vlc executable  : no"
4494 echo "
4495 To build vlc and its plugins, type \`$MAKE', or \`./compile' if you like nice colors."