demux: adaptive: clear eof flag of AbstractStream after seek
[vlc.git] / configure.ac
blobf4e5aa9d30b3cbbbdf3f961d7d8b0841c9b643bc
1 dnl Autoconf settings for vlc
3 AC_COPYRIGHT([Copyright 1999-2017 VLC authors and VideoLAN])
5 AC_INIT(vlc, 3.0.0-git)
6 VERSION_MAJOR=3
7 VERSION_MINOR=0
8 VERSION_REVISION=0
9 VERSION_EXTRA=0
10 VERSION_DEV=git
12 PKGDIR="vlc"
13 AC_SUBST(PKGDIR)
15 CONFIGURE_LINE="`echo "$0 $ac_configure_args" | sed -e 's/\\\/\\\\\\\/g'`"
16 CODENAME="Vetinari"
17 COPYRIGHT_YEARS="1996-2017"
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 Directories
35 dnl
36 dnl vlcincludedir="\${includedir}/\${PKGDIR}"
37 dnl AC_SUBST(vlcincludedir)
38 vlcdatadir="\${datadir}/\${PKGDIR}"
39 AC_SUBST(vlcdatadir)
40 vlclibdir="\${libdir}/\${PKGDIR}"
41 AC_SUBST(vlclibdir)
43 dnl
44 dnl Check for tools
45 dnl
46 AC_PROG_CC_C99
47 AC_USE_SYSTEM_EXTENSIONS
48 VLC_PROG_CC_C11
49 AC_DEFINE([_FORTIFY_SOURCE], 2, [Define to 2 to get glibc warnings.])
50 AC_DEFINE([_FILE_OFFSET_BITS], 64, [Define to 64 for large files support.])
51 AH_TOP([
52 #ifndef _REENTRANT
53 # define _REENTRANT
54 #endif
56 AC_DEFINE([_THREAD_SAFE],, [Same as _REENTANT for some other OSes.])
57 AC_DEFINE([__LIBVLC__],, [Define within the LibVLC source code tree.])
58 AC_DEFINE([WIN32_LEAN_AND_MEAN],, [Define to limit the scope of <windows.h>.])
60 AM_PROG_CC_C_O
61 AC_PROG_CXX
62 AC_PROG_CPP
63 AC_PROG_OBJC
64 AC_PROG_EGREP
65 AC_PROG_MAKE_SET
66 AC_PROG_INSTALL
67 AM_PROG_AS
69 AC_ARG_VAR([DESKTOP_FILE_VALIDATE], [Validator for desktop entry files])
70 AC_CHECK_PROGS(DESKTOP_FILE_VALIDATE, [${DESKTOP_FILE_VALIDATE} desktop-file-validate], :)
71 AC_ARG_VAR([BUILDCC], [Build system C11 or C99 compiler command])
72 AC_CHECK_PROGS(BUILDCC, [c11-gcc c11 c99-gcc c99], [false])
73 AS_IF([test "$BUILDCC" = "false"], [
74   AC_MSG_ERROR([Cannot find native C99 compiler: please define BUILDCC.])
77 dnl Check for compiler properties
78 AC_C_CONST
79 AC_C_INLINE
80 AC_C_RESTRICT
81 AX_CXX_COMPILE_STDCXX_11(noext, mandatory)
83 dnl Extend the --help string at the current spot.
84 AC_DEFUN([EXTEND_HELP_STRING], [m4_divert_once([HELP_ENABLE], [$1])])
86 dnl Allow binary package maintainer to pass a custom string to avoid
87 dnl cache problem
88 AC_ARG_WITH(binary-version,
89     AS_HELP_STRING([--with-binary-version=STRING],
90          [To avoid plugins cache problem between binary version]),[],[])
91 AS_IF([test -n "${with_binary_version}"],[
92     AC_DEFINE_UNQUOTED([DISTRO_VERSION],["${with_binary_version}"],
93          [Binary specific version])
96 dnl Prevent clang from accepting unknown flags with a mere warning
97 AX_APPEND_COMPILE_FLAGS([-Werror=unknown-warning-option -Werror=invalid-command-line-argument], [CFLAGS])
98 AX_APPEND_COMPILE_FLAGS([-Werror=unknown-warning-option -Werror=invalid-command-line-argument], [CXXFLAGS])
101 dnl  Check the operating system
103 HAVE_WIN64="0"
104 HAVE_IOS="0"
105 HAVE_OSX="0"
106 HAVE_TVOS="0"
108 case "${host_os}" in
109   "")
110     SYS=unknown
111     ;;
112   linux*)
113     SYS=linux
114     ;;
115   bsdi*)
116     SYS=bsdi
117     CFLAGS="${CFLAGS} -pthread"
118     ;;
119   freebsd*)
120     SYS=freebsd
121     CFLAGS="${CFLAGS} -pthread"
122     CPPFLAGS="${CPPFLAGS} -I/usr/local/include"
123     LDFLAGS="${LDFLAGS} -L/usr/local/lib"
124     ac_cv_ld_z_defs=no
125     ;;
126   openbsd*)
127     SYS=openbsd
128     CPPFLAGS="${CPPFLAGS} -I/usr/local/include -I/usr/X11R6/include"
129     LDFLAGS="${LDFLAGS} -L/usr/local/lib -L/usr/X11R6/lib/"
130     ;;
131   netbsd*)
132     SYS=netbsd
133     ;;
134   dragonfly*)
135     SYS=dragonfly
136     ;;
137   darwin*)
139     dnl Force gcc "-arch" flag
140     ARCH_flag=""
141     case "${host}" in
142       i?86*)
143         ARCH_flag="-arch i386"
144       ;;
145       ppc64*)
146         ARCH_flag="-arch ppc64"
147       ;;
148       ppc*)
149         ARCH_flag="-arch ppc"
150       ;;
151       x86_64*)
152         ARCH_flag="-arch x86_64"
153       ;;
154       arm*)
155         ac_cv_c_bigendian="no"
156         ac_cv_c_attribute_packed="no"
157       ;;
158     esac
160     SYS=darwin
161     CFLAGS="${CFLAGS} -D_INTL_REDIRECT_MACROS -std=gnu11 ${ARCH_flag}"
162     CXX="${CXX} -stdlib=libc++ -std=c++11"
163     CXXFLAGS="${CXXFLAGS} -D_INTL_REDIRECT_MACROS ${ARCH_flag}"
164     CPPFLAGS="${CPPFLAGS} ${ARCH_flag}"
165     OBJCFLAGS="${OBJCFLAGS} -D_INTL_REDIRECT_MACROS -std=gnu11 ${ARCH_flag} -Werror=partial-availability"
166     LDFLAGS="${LDFLAGS} -Wl,-headerpad_max_install_names ${ARCH_flag}"
167     VLC_ADD_LIBS([libvlc vlc],[-Wl,-undefined,dynamic_lookup,-framework,AppKit])
168     VLC_ADD_LIBS([libvlccore],[-Wl,-framework,CoreFoundation,-framework,CoreServices])
170     AC_EGREP_CPP(yes,
171             [#import <TargetConditionals.h>
172              #if TARGET_OS_IPHONE
173              yes
174              #endif],
175              [HAVE_IOS="1"],
176              [HAVE_OSX="1"])
178     AC_EGREP_CPP(yes,
179             [#import <TargetConditionals.h>
180              #if TARGET_OS_TV
181              yes
182              #endif],
183              [HAVE_TVOS="1"
184              HAVE_IOS="0"
185              HAVE_OSX="0"
186              ],)
188     dnl Allow binaries created on Lion to run on earlier releases
189     AC_EGREP_CPP(yes,
190            [#import <Cocoa/Cocoa.h>
191             #ifdef MAC_OS_X_VERSION_10_7
192             yes
193             #endif],
194             [AC_MSG_RESULT([yes])
195             AC_LIBOBJ([getdelim])
196             AC_LIBOBJ([strndup])
197             AC_LIBOBJ([strnlen])],)
199     dnl
200     dnl  Handle Mac OS X SDK flags
201     dnl
202     AC_ARG_WITH(macosx-sdk,
203       [AS_HELP_STRING([--with-macosx-sdk=DIR],
204         [compile using the SDK in DIR])])
205     if test "${with_macosx_sdk}" != "" ; then
206         test ! -d "${with_macosx_sdk}" && AC_MSG_ERROR([SDK "${with_macosx_sdk}" not found])
207         CPP="${CPP} -isysroot ${with_macosx_sdk}"
208         CC="${CC} -isysroot ${with_macosx_sdk}"
209         CXX="${CXX} -isysroot ${with_macosx_sdk}"
210         OBJC="${OBJC} -isysroot ${with_macosx_sdk}"
211         LD="${LD} -syslibroot ${with_macosx_sdk}"
212     fi
213     AC_ARG_WITH(macosx-version-min,
214       [AS_HELP_STRING([--with-macosx-version-min=VERSION],
215         [compile for Mac OS X VERSION and above])])
216     if test "${with_macosx_version_min}" != "" ; then
217         CPP="${CPP} -mmacosx-version-min=${with_macosx_version_min}"
218         CC="${CC} -mmacosx-version-min=${with_macosx_version_min}"
219         CXX="${CXX} -mmacosx-version-min=${with_macosx_version_min}"
220         OBJC="${OBJC} -mmacosx-version-min=${with_macosx_version_min}"
221         LD="${LD} -mmacosx_version_min=${with_macosx_version_min}"
222     fi
223     ;;
224   *mingw32* | *cygwin* | *wince* | *mingwce*)
225     dnl Force libtool to not link to (shared) libgcc_s when detecting C++ dependencies
226     dnl When doing this test with -static-libgcc it will link on (static) libgcc_eh
227     CXXFLAGS="${CXXFLAGS} -static-libgcc"
228     AC_CHECK_TOOL(WINDRES, windres, :)
229     AC_CHECK_TOOL(OBJCOPY, objcopy, :)
230     AH_TOP([#if defined(_WIN32) && !defined(_WIN32_WINNT)])
231     AH_TOP([# define _WIN32_WINNT 0x0502 /* Windows XP SP2 */])
232     AH_TOP([#endif])
233     AC_DEFINE([_WIN32_IE], 0x0600, [Define to '0x0600' for IE 6.0 (and shell) APIs.])
234     AC_DEFINE([_UNICODE], [1], [Define to 1 for Unicode (Wide Chars) APIs.])
235     AC_DEFINE([UNICODE], [1], [Define to 1 for Unicode (Wide Chars) APIs.])
236     AC_DEFINE([_ISOC99_SOURCE], [1], [Extensions to ISO C89 from ISO C99.])
237     AC_DEFINE([_ISOC11_SOURCE], [1], [Extensions to ISO C99 from ISO C11.])
238     AC_DEFINE([_POSIX_SOURCE], [1], [IEEE Std 1003.1.])
239     AC_DEFINE([_POSIX_C_SOURCE], [200809L], [IEEE Std 1003.1.])
240     AC_DEFINE([_XOPEN_SOURCE], [700], [POSIX and XPG 7th edition])
241     AC_DEFINE([_XOPEN_SOURCE_EXTENDED], [1], [XPG things and X/Open Unix extensions.])
242     AC_DEFINE([_BSD_SOURCE], [1], [ISO C, POSIX, and 4.3BSD things.])
243     AC_DEFINE([_SVID_SOURCE], [1], [ISO C, POSIX, and SVID things.])
245     case "${host_os}" in
246       *mingw32*)
247         SYS=mingw32
248         ;;
249       *cygwin*)
250         dnl Check if we are using the mno-cygwin mode in which case we are
251         dnl actually dealing with a mingw32 compiler.
252         AC_EGREP_CPP(yes,
253             [#ifdef _WIN32
254              yes
255              #endif],
256             SYS=mingw32, AC_MSG_ERROR([VLC requires -mno-cygwin]))
257         ;;
258     esac
260     if test "${SYS}" = "mingw32"; then
261         # DEP, ASLR, NO SEH
262         LDFLAGS="${LDFLAGS} -Wl,--nxcompat -Wl,--no-seh -Wl,--dynamicbase"
264         AC_CHECK_PROGS(U2D, [unix2dos todos], unix2dos)
265         ac_default_prefix="`pwd`/_win32"
266         DESTDIR="`pwd`/_win32/"
268         dnl
269         dnl NSIS/MSI Installer prefix and WIN64
270         dnl
271         case "${host}" in
272             amd64*|x86_64*)
273                 HAVE_WIN64="1"
274                 WINDOWS_ARCH="x64"
275                 PROGRAMFILES="PROGRAMFILES64"
276                 LDFLAGS="${LDFLAGS} -Wl,--high-entropy-va -Wl,--image-base,0x140000000"
277             ;;
278             *)
279                 WINDOWS_ARCH="x86"
280                 PROGRAMFILES="PROGRAMFILES"
281             ;;
282         esac
283         AC_SUBST(WINDOWS_ARCH)
284         AC_SUBST(PROGRAMFILES)
286     fi
287     ;;
288   *nto*)
289     SYS=nto
290     ;;
291   solaris*)
292     SYS=solaris
293     ;;
294   hpux*)
295     SYS=hpux
296     ;;
297   *os2*)
298     SYS=os2
299     LDFLAGS="${LDFLAGS} -Zomf -Zbin-files -Zargs-wild -Zhigh-mem"
300     AC_LIBOBJ([freeaddrinfo])
301     AC_LIBOBJ([gai_strerror])
302     ;;
303   *nacl*)
304     SYS=nacl
305     AC_DEFINE([_XOPEN_SOURCE], [700], [POSIX and XPG 7th edition])
306     AC_LIBOBJ([sigwait])
307     AC_LIBOBJ([recvmsg])
308     AC_LIBOBJ([sendmsg])
309     ;;
310   *)
311     SYS="${host_os}"
312     ;;
313 esac
315 dnl WinRT
316 AC_ARG_ENABLE(winstore_app,
317      AS_HELP_STRING([--enable-winstore-app],
318                     [Build targetted for Windows Store apps (default disabled)]))
320 vlc_winstore_app=0
321 AS_IF([test "${SYS}" = "mingw32"],[
322   LIBCOM="-lole32"
323   AS_IF([test "${enable_winstore_app}" = "yes"], [
324     vlc_winstore_app=1
325     LIBCOM=""
326      VLC_ADD_LIBS([libvlccore], [-lruntimeobject])
327      AC_LIBOBJ([gai_strerror])
328     ],[])
329   AC_SUBST(LIBCOM)
330   ])
331 AC_DEFINE_UNQUOTED(VLC_WINSTORE_APP, ${vlc_winstore_app}, [Define to 1 if you want to build for Windows Store apps])
333 AM_CONDITIONAL(HAVE_LINUX,   test "${SYS}" = "linux")
334 AM_CONDITIONAL(HAVE_OS2,     test "${SYS}" = "os2")
336 AM_CONDITIONAL(HAVE_DARWIN,  test "${SYS}" = "darwin")
337 AM_CONDITIONAL(HAVE_IOS,     test "${HAVE_IOS}" = "1")
338 AM_CONDITIONAL(HAVE_OSX,     test "${HAVE_OSX}" = "1")
339 AM_CONDITIONAL(HAVE_TVOS,    test "${HAVE_TVOS}" = "1")
341 AM_CONDITIONAL(HAVE_NACL,    test "${SYS}" = "nacl")
343 AM_CONDITIONAL(HAVE_WIN32,   test "${SYS}" = "mingw32")
344 AM_CONDITIONAL(HAVE_WIN64,   test "${HAVE_WIN64}" = "1") dnl Only used for the packaging
345 AM_CONDITIONAL([HAVE_WINSTORE], [test "$vlc_winstore_app" = "1"])
346 AM_CONDITIONAL([HAVE_WIN32_DESKTOP], [test "${SYS}" = "mingw32" -a "$vlc_winstore_app" = "0"])
349 dnl Sadly autoconf does not think about testing foo.exe when ask to test
350 dnl for program foo on win32
351 case "${build_os}" in
352     cygwin|msys|mingw32)
353         ac_executable_extensions=".exe"
354         BUILDEXEEXT=".exe"
355     ;;
356     os2*)
357         BUILDEXEEXT=".exe"
358     ;;
359     *)
360     ;;
361 esac
362 AC_SUBST(BUILDEXEEXT)
364 dnl Android is linux, but a bit different
365 AS_IF([test "$SYS" = linux],[
366     AC_MSG_CHECKING([for an Android system])
367     AC_PREPROC_IFELSE([AC_LANG_PROGRAM(
368         [[#ifndef __ANDROID__
369          # error Not Android
370          #endif
371         ]],[[;]])
372     ],[
373       HAVE_ANDROID="1"
374       AC_MSG_RESULT([yes])
375     ],[
376       AC_MSG_RESULT([no])
377     ])
379 AM_CONDITIONAL(HAVE_ANDROID, test "${HAVE_ANDROID}" = "1")
381 dnl Tizen (minimum SDK version: 2.3)
382 AS_IF([test "$SYS" = linux],[
383     AC_MSG_CHECKING([for Tizen])
384     AC_PREPROC_IFELSE([AC_LANG_PROGRAM(
385         [[#include <tizen.h>
386         ]],[[;]])
387     ],[
388       HAVE_TIZEN="1"
389       AC_DEFINE([HAVE_TIZEN_SDK], [1], [Define to 1 if vlc is built against Tizen SDK])
390       AC_MSG_RESULT([yes])
391     ],[
392       AC_MSG_RESULT([no])
393     ])
395 AM_CONDITIONAL(HAVE_TIZEN, test "${HAVE_TIZEN}" = "1")
398 dnl  Check for the contrib directory
400 AC_ARG_WITH(contrib,
401   [AS_HELP_STRING([--with-contrib[=DIR]],
402     [search for 3rd party libraries in DIR/include and DIR/lib])
404 AC_MSG_CHECKING([for 3rd party libraries path])
405 AS_IF([test -z "${with_contrib}" || test "${with_contrib}" = "yes"], [
406   CONTRIB_DIR="${srcdir}/contrib/${host}"
407   AS_IF([test ! -d "${CONTRIB_DIR}"], [
408     echo "${CONTRIB_DIR} not found" >&AS_MESSAGE_LOG_FD
409     CONTRIB_DIR="${srcdir}/contrib/`$CC -dumpmachine`"
410     AS_IF([test ! -d "${CONTRIB_DIR}"], [
411       echo "${CONTRIB_DIR} not found" >&AS_MESSAGE_LOG_FD
412       CONTRIB_DIR=""
413       AC_MSG_RESULT([not found])
414     ])
415   ])
416 ], [
417   AS_IF([test "${with_contrib}" != "no"], [
418     CONTRIB_DIR="${with_contrib}"
419   ], [
420     CONTRIB_DIR=""
421     AC_MSG_RESULT([disabled])
422   ])
424 AS_IF([test -n "${CONTRIB_DIR}"], [
425   AS_IF([test -d "${CONTRIB_DIR}/lib"],[
426     CONTRIB_DIR=`cd "${CONTRIB_DIR}" && pwd`
427   ], [
428     echo "${CONTRIB_DIR}/lib not found" >&AS_MESSAGE_LOG_FD
429     CONTRIB_DIR=""
430     AC_MSG_RESULT([not usable])
431   ])
434 AS_IF([test -n "${CONTRIB_DIR}"], [
435   AC_MSG_RESULT([${CONTRIB_DIR}])
436   CPPFLAGS="${CPPFLAGS} -I${CONTRIB_DIR}/include"
437   CFLAGS="${CFLAGS} -I${CONTRIB_DIR}/include"
438   CXXFLAGS="${CXXFLAGS} -I${CONTRIB_DIR}/include"
439   OBJCFLAGS="${OBJCFLAGS} -I${CONTRIB_DIR}/include -F${CONTRIB_DIR} -F${CONTRIB_DIR}/Frameworks"
440   export PKG_CONFIG_PATH="${CONTRIB_DIR}/lib/pkgconfig:$PKG_CONFIG_PATH"
441   LDFLAGS="${LDFLAGS} -L${CONTRIB_DIR}/lib"
443   AS_IF([test -z "$LUAC"], [
444     dnl Old contribs mixed cross-tools and cross-compiled executables
445     AS_IF([test -x "${CONTRIB_DIR}/bin/luac${BUILDEXEEXT}"], [
446       LUAC="${CONTRIB_DIR}/bin/luac${BUILDEXEEXT}"
447     ])
449     dnl Newer contribs follow usual name space rules
450     AS_IF([test -x "${CONTRIB_DIR}/../bin/${host_alias}-luac${BUILDEXEEXT}"], [
451       LUAC="${CONTRIB_DIR}/../bin/${host_alias}-luac${BUILDEXEEXT}"
452     ])
453   ])
455   AS_IF([test "${SYS}" = "darwin"], [
456     export LD_LIBRARY_PATH="${CONTRIB_DIR}/lib:$LD_LIBRARY_PATH"
457     export DYLD_LIBRARY_PATH="${CONTRIB_DIR}/lib:$DYLD_LIBRARY_PATH"
458   ])
459 ], [
460   AS_IF([test -n "${with_contrib}" && test "${with_contrib}" != "no"], [
461     AC_MSG_ERROR([Third party libraries not found!])
462   ])
464 AC_SUBST(CONTRIB_DIR)
466 dnl Add extras/tools to the PATH
467 TOOLS_DIR="${srcdir}/extras/tools/build/bin"
468 AS_IF([test -d "${TOOLS_DIR}"], [
469     TOOLS_DIR=`cd "${TOOLS_DIR}" && pwd`
470     export PATH="${TOOLS_DIR}":$PATH
474 dnl  Libtool
475 dnl  It's very bad, but our former custom system was worst
476 dnl  -- Courmisch
479 dnl override platform specific check for dependent libraries
480 dnl otherwise libtool linking of shared libraries will
481 dnl fail on anything other than pass_all.
482 AC_CACHE_VAL(lt_cv_deplibs_check_method,
483     [lt_cv_deplibs_check_method=pass_all])
485 LT_INIT([dlopen win32-dll shared disable-static])
486 LT_LANG([C++])
487 LT_LANG([Windows Resource])
489 DOLT
491 lt_cv_deplibs_check_method=pass_all
493 AS_IF([test "${enable_shared}" = "no" -a "${enable_vlc}" != "no"], [
494   AC_MSG_ERROR([VLC is based on plugins. Shared libraries cannot be disabled.])
498 dnl Gettext stuff
500 AM_GNU_GETTEXT_VERSION([0.19.8])
501 AM_GNU_GETTEXT([external], [need-formatstring-macros])
504 dnl Iconv stuff
506 AM_ICONV
509 dnl checks for mingw
510 AS_IF([test "${SYS}" = "mingw32"], [
512 AC_PREPROC_IFELSE([AC_LANG_SOURCE([
513 #if !defined(__MINGW32__)
514 # error Not compiling with mingw
515 #endif
516     ])], [
518 dnl Check for broken versions of mingw-runtime compatability library
519     AC_MSG_CHECKING(for broken mingw-runtime)
520     AC_PREPROC_IFELSE([AC_LANG_SOURCE([
521 #include <_mingw.h>
522 #if defined(__MINGW64_VERSION_MAJOR)
523 # if __MINGW64_VERSION_MAJOR < 3
524 #  error Attempting to use mingw-runtime with broken vsnprintf support
525 # endif
526 #elif __MINGW32_MAJOR_VERSION == 3 && __MINGW32_MINOR_VERSION < 15
527 # error Attempting to use mingw-runtime with broken vsnprintf support
528 #endif
529     ])], [
530         AC_MSG_RESULT([ok])
531     ], [
532         AC_MSG_RESULT([present])
533         AC_MSG_ERROR([LibVLC requires mingw-runtime version 3.15 or higher, or mingw-w64 version 3.0 or higher!])
534     ])
536     dnl force use of mingw provided c99 *printf over msvcrt
537     CPPFLAGS="${CPPFLAGS} -D__USE_MINGW_ANSI_STDIO=1"
539     dnl Check for the need to include the mingwex lib for mingw32
540     VLC_SAVE_FLAGS
541     AC_CHECK_LIB(mingwex,opendir,
542         AC_CHECK_LIB(mingw32,opendir,,
543             [VLC_ADD_LIBS([libvlccore],[-lmingwex])])
544     )
545     VLC_RESTORE_FLAGS
546     ], [
547         AC_MSG_RESULT([Not compiling with mingw])
548     ])
550     dnl Check for fnative-struct or mms-bitfields support for mingw32
551     VLC_SAVE_FLAGS
552     CFLAGS="${CFLAGS} -mms-bitfields"
553     CXXFLAGS="${CXXFLAGS} -mms-bitfields"
554     AC_CACHE_CHECK([if \$CC accepts -mms-bitfields],
555         [ac_cv_c_mms_bitfields],
556         [AC_TRY_COMPILE([],,ac_cv_c_mms_bitfields=yes, ac_cv_c_mms_bitfields=no)])
557     if test "${ac_cv_c_mms_bitfields}" = "no"; then
558         VLC_RESTORE_FLAGS
559         CFLAGS="${CFLAGS} -fnative-struct"
560         CXXFLAGS="${CXXFLAGS} -fnative-struct"
561         AC_CACHE_CHECK([if \$CC accepts -fnative-struct],
562             [ac_cv_c_fnative_struct],
563             [AC_TRY_COMPILE([],,ac_cv_c_fnative_struct=yes, ac_cv_c_fnative_struct=no)])
564         "${ac_cv_c_fnative_struct}" = "no" && VLC_RESTORE_FLAGS
565     fi
570 dnl Buggy glibc prevention. Purposedly not cached.
571 dnl See sourceware.org bugs 5058 and 5443.
572 dnl Ubuntu alone has 20 bug numbers for this...
574 AC_MSG_CHECKING(for buggy GNU/libc versions)
575 AC_PREPROC_IFELSE([AC_LANG_SOURCE([
576 #include <limits.h>
577 #if defined (__GLIBC__) && (__GLIBC__ == 2) \
578   && (__GLIBC_MINOR__ >= 5) && (__GLIBC_MINOR__ <= 7)
579 # error GNU/libc with dcgettext killer bug!
580 #endif
581 ])], [
582   AC_MSG_RESULT([not present])
583 ], [
584   AC_MSG_RESULT([found])
585   AS_IF([test "x${enable_nls}" != "xno"], [
586     AC_MSG_ERROR([Buggy GNU/libc (version 2.5 - 2.7) present. VLC would crash; there is no viable
587 work-around for this. Check with your distribution vendor on how to update the
588 glibc run-time. Alternatively, build with --disable-nls.])
589   ])
592 dnl Plugin compilation stuff
594 VLC_LIBRARY_SUFFIX
596 dnl Check for system libs needed
597 need_libc=false
599 dnl Check for usual libc functions
600 AC_CHECK_FUNCS([daemon fcntl flock fstatvfs fork getenv getpwuid_r isatty lstat memalign mkostemp mmap open_memstream openat pread posix_fadvise posix_madvise posix_memalign setlocale stricmp strnicmp strptime tdestroy uselocale])
601 AC_REPLACE_FUNCS([aligned_alloc atof atoll dirfd fdopendir ffsll flockfile fsync getdelim getpid lldiv memrchr nrand48 poll recvmsg rewind sendmsg setenv strcasecmp strcasestr strdup strlcpy strndup strnlen strnstr strsep strtof strtok_r strtoll swab tfind timegm timespec_get strverscmp pathconf])
602 AC_REPLACE_FUNCS([gettimeofday])
603 AC_CHECK_FUNC(fdatasync,,
604   [AC_DEFINE(fdatasync, fsync, [Alias fdatasync() to fsync() if missing.])
607 VLC_REPLACE_DECL([realpath], [#include <stdlib.h>])
609 dnl mingw64 implements those as static inline, not functions with C linkage
610 VLC_REPLACE_DECL([asprintf], [#include <stdio.h>])
611 VLC_REPLACE_DECL([vasprintf], [#include <stdio.h>])
612 VLC_REPLACE_DECL([gmtime_r], [#include <time.h>])
613 VLC_REPLACE_DECL([localtime_r], [#include <time.h>])
615 dnl C11 static_assert()
616 AC_MSG_CHECKING([for static_assert in assert.h])
617 AC_LINK_IFELSE([AC_LANG_PROGRAM([#include <assert.h>], [
618 static_assert(1, "The impossible happened.");
619 ])], [
620   AC_MSG_RESULT([yes])
621   AC_DEFINE([HAVE_STATIC_ASSERT], [1], [Define to 1 if <assert.h> defines static_assert.])
622 ], [
623   AC_MSG_RESULT([no])
626 # Windows CE does not have strcoll()
627 AC_FUNC_STRCOLL
629 dnl Check for non-standard system calls
630 case "$SYS" in
631   "linux")
632     AC_CHECK_FUNCS([accept4 pipe2 eventfd vmsplice sched_getaffinity recvmmsg])
633     ;;
634   "mingw32")
635     AC_CHECK_FUNCS([_lock_file])
636     ;;
637 esac
639 AH_BOTTOM([#include <vlc_fixups.h>])
641 dnl Check for struct pollfd
642 AC_CHECK_TYPES([struct pollfd],,,
643 [#include <sys/types.h>
644 #if HAVE_POLL
645 # include <poll.h>
646 #elif defined (_WIN32)
647 # include <winsock2.h>
648 #endif
651 dnl Check for struct timespec
652 AC_CHECK_TYPES([struct timespec],,,
653 [#include <time.h>])
655 dnl Check for max_align_t
656 AC_CHECK_TYPES([max_align_t],,,
657 [#include <stddef.h>])
659 dnl Checks for socket stuff
660 VLC_SAVE_FLAGS
661 SOCKET_LIBS=""
662 AC_SEARCH_LIBS(connect, [socket], [
663   AS_IF([test "$ac_cv_search_connect" != "none required"], [
664     SOCKET_LIBS="$ac_cv_search_connect"
665   ])
666 ], [
667   AS_IF([test "${SYS}" = "mingw32"], [
668     SOCKET_LIBS="-lws2_32"
669   ])
672 AC_SEARCH_LIBS([inet_pton], [nsl], [
673  AS_IF([test "$ac_cv_search_inet_pton" != "none required"], [
674     SOCKET_LIBS="$ac_cv_search_inet_pton $SOCKET_LIBS"
675   ])
676 ],, [${SOCKET_LIBS}])
678 LIBS="${LIBS} ${SOCKET_LIBS}"
679 AC_LINK_IFELSE([
680     AC_LANG_PROGRAM([#ifdef _WIN32
681         # if _WIN32_WINNT < 0x600
682         #  error Needs vista+
683         # endif
684         #include <ws2tcpip.h>
685         #else
686         #include <sys/socket.h>
687         #include <arpa/inet.h>
688         #endif], [
689         char dst[[sizeof(struct in_addr)]];
690         inet_pton(AF_INET, "127.0.0.1", dst);
691     ])],[AC_DEFINE([HAVE_INET_PTON],[1],[Define to 1 if you have inet_pton function])],[AC_LIBOBJ([inet_pton])])
692 AC_CHECK_FUNCS([if_nameindex if_nametoindex])
693 VLC_RESTORE_FLAGS
694 AC_SUBST(SOCKET_LIBS)
696 dnl Check for socklen_t
697 AH_TEMPLATE(socklen_t, [Define to `int' if <sys/socket.h> does not define.])
698 AC_CACHE_CHECK([for socklen_t in sys/socket.h], dnl ` (fix VIM syntax highlight
699 ac_cv_type_socklen_t,
700 [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([
701 [#include <sys/types.h>
702 #ifdef _WIN32
703 # include <winsock2.h>
704 # include <ws2tcpip.h>
705 #else
706 # include <sys/socket.h>
707 #endif]], [[socklen_t len; len = 0;]])],
708 ac_cv_type_socklen_t=yes,
709 ac_cv_type_socklen_t=no)])
710 AS_IF([test "$ac_cv_type_socklen_t" = no],
711  [AC_DEFINE(socklen_t, int)])
713 dnl Check for struct sockaddr_storage
714 AH_TEMPLATE(sockaddr_storage, [Define to `sockaddr' if <sys/socket.h> does not define.]) dnl ` (fix VIM syntax highlight
715 AH_TEMPLATE(ss_family, [Define to `sa_family' if <sys/socket.h> does not define.]) dnl ` (fix VIM syntax highlight
716 AC_CACHE_CHECK([for struct sockaddr_storage], ac_cv_struct_sockaddr_storage,
717   [AC_TRY_COMPILE(
718     [#include <sys/types.h>
719      #if defined( _WIN32 )
720      # include <winsock2.h>
721      #else
722      # include <sys/socket.h>
723      #endif], [struct sockaddr_storage addr;],
724      ac_cv_struct_sockaddr_storage=yes,
725      ac_cv_struct_sockaddr_storage=no)])
726 AS_IF([test "${ac_cv_struct_sockaddr_storage}" = no], [
727   AC_DEFINE(sockaddr_storage, sockaddr)
728   AC_DEFINE(ss_family, sa_family)
731 dnl FreeBSD has a gnugetopt library for this:
732 GNUGETOPT_LIBS=""
733 AC_CHECK_FUNC(getopt_long,, [
734   AC_CHECK_LIB([gnugetopt],[getopt_long], [
735     GNUGETOPT_LIBS="-lgnugetopt"
736   ])
738 AC_SUBST(GNUGETOPT_LIBS)
740 AC_CHECK_LIB(m,cos,[
741   LIBM="-lm"
742 ], [
743   LIBM=""
745 AC_SUBST(LIBM)
747 AC_CHECK_LIB(m,lrintf, [
748   AC_DEFINE(HAVE_LRINTF, 1, [Define to 1 if you have the lrintf function])
749   VLC_ADD_LIBS([skins2],[-lm])
751 AC_CHECK_LIB(m,nanf,
752   AC_DEFINE(HAVE_NANF, 1, [Define to 1 if you have the NANF function])
754 AC_CHECK_LIB(m,sincos, [
755   AC_DEFINE(HAVE_SINCOS, 1, [Define to 1 if you have the sincos function.])
756 ], [
757   AC_LIBOBJ([sincos])
760 AC_MSG_CHECKING([_Thread_local support])
761 AC_COMPILE_IFELSE([AC_LANG_SOURCE([_Thread_local int foo = 0;
762                    int main() {}])], [
763     AC_MSG_RESULT([ok])
764     AC_DEFINE(HAVE_THREAD_LOCAL, 1, [Defined to 1 if C11 _Thread_local storage qualifier is supported])
765 ],[ AC_MSG_RESULT([no])])
767 dnl __STDC_NO_THREADS__ can't be trusted on some platforms.
768 dnl check for its availability explicitely
769 AC_CHECK_HEADERS([threads.h])
771 dnl Check for dynamic plugins
772 LIBDL=""
773 have_dynamic_objects="no"
774 VLC_SAVE_FLAGS
775 AC_SEARCH_LIBS(dlsym, [dl svld], [
776   AS_IF([test "$ac_cv_search_dlsym" != "none required"], [
777     LIBDL="$ac_cv_search_dlsym"
778   ])
779   have_dynamic_objects="yes"
781 VLC_RESTORE_FLAGS
783 # Windows
784 AS_IF([test "${SYS}" = "mingw32"], [
785   LIBDL=""
786   have_dynamic_objects="yes" #assume we can use shared objects
789 AS_IF([test "${enable_shared}" = "no"], [
790   have_dynamic_objects=no
792 AM_CONDITIONAL(HAVE_DYNAMIC_PLUGINS, [test "${have_dynamic_objects}" != "no"])
794 AC_SUBST(LIBDL)
796 dnl Check for thread library
797 LIBPTHREAD=""
798 AS_IF([test "${SYS}" != "mingw32"], [
799   VLC_SAVE_FLAGS
800   LIBS=""
801   AC_SEARCH_LIBS(pthread_rwlock_init, pthread pthreads c_r, [
802     AS_IF([test "$ac_cv_search_pthread_rwlock_init" != "none required"], [
803       LIBPTHREAD="$ac_cv_search_pthread_rwlock_init"
804     ])
805   ])
806   VLC_RESTORE_FLAGS
808 AC_SUBST(LIBPTHREAD)
810 AC_SEARCH_LIBS([clock_nanosleep], [rt pthread], [
811   AS_IF([test "$ac_cv_search_clock_nanosleep" != "none required"], [
812     LIBRT="$ac_cv_search_clock_nanosleep"
813   ])
814 ], [
815   AC_SEARCH_LIBS([nanosleep], [rt pthread posix4], [
816     AS_IF([test "$ac_cv_search_nanosleep" != "none required"], [
817       LIBRT="$ac_cv_search_nanosleep"
818     ])
819   ])
821 AC_SUBST(LIBRT)
824 dnl Check for headers
827 dnl  POSIX
828 AC_CHECK_HEADERS([arpa/inet.h pthread.h search.h sys/shm.h sys/socket.h sys/uio.h])
829 AC_CHECK_HEADERS([net/if.h], [], [],
831 #include <sys/types.h>
832 #include <sys/socket.h>
834 AC_CHECK_HEADER([syslog.h], [have_syslog="yes"], [have_syslog="no"])
835 AM_CONDITIONAL([HAVE_SYSLOG], [test "$have_syslog" = "yes"])
837 dnl  BSD
838 AC_CHECK_HEADERS([netinet/tcp.h netinet/udplite.h sys/param.h sys/mount.h])
840 dnl  GNU/Linux
841 AC_CHECK_HEADERS([features.h getopt.h linux/dccp.h linux/magic.h mntent.h sys/eventfd.h])
843 dnl  MacOS
844 AC_CHECK_HEADERS([xlocale.h])
846 dnl LP64 and LLP64 architectures had better define ssize_t by themselves...
847 AH_TEMPLATE(ssize_t, [Define to `int' if <stddef.h> does not define.]) dnl ` (fix VIM syntax highlight
848 AC_CHECK_TYPE(ssize_t,, [
849   AC_DEFINE(ssize_t, int)
852 dnl It seems that autoconf detects pkg-config only during the first
853 dnl PKG_CHECK_MODULES from configure.ac - which makes sense. But in our case,
854 dnl it is nested within a conditional block, so it was not working right.
855 dnl Make PKG_CONFIG_PATH precious so that it appears in the help and get saved
856 AC_ARG_VAR(PKG_CONFIG_PATH,
857        [Paths where to find .pc not at the default location])
858 PKG_PROG_PKG_CONFIG()
860 dnl On some OS we need static linking
861 AS_IF([test -n "${PKG_CONFIG}" ],[
862     AS_IF([test "${SYS}" = "mingw32" -o "${SYS}" = "darwin" -o "${SYS}" = "os2" ],[
863         PKG_CONFIG="${PKG_CONFIG} --static"
864     ])
869 dnl Check for zlib.h and -lz along with system -lminizip if available
871 AC_CHECK_HEADERS(zlib.h, [ have_zlib=yes ], [ have_zlib=no ])
872 AM_CONDITIONAL(HAVE_ZLIB, [ test "${have_zlib}" = "yes" ])
873 if test "${have_zlib}" = "yes"
874 then
875   VLC_ADD_LIBS([sap],[-lz])
876   PKG_CHECK_MODULES([MINIZIP], [minizip] , [ have_minizip=yes ], [
877     AC_CHECK_HEADERS([unzip.h], [
878       have_minizip=yes
879       MINIZIP_LIBS="-lminizip -lz"
880     ], [
881       have_minizip=no
882     ])
883   ])
885 AM_CONDITIONAL(HAVE_MINIZIP, [ test "${have_minizip}" = "yes" ])
889 dnl Domain name i18n support via GNU libidn
891 PKG_CHECK_MODULES([IDN], [libidn], [
892   have_libidn="yes"
893   AC_DEFINE([HAVE_IDN], 1, [Define to 1 if you have GNU libidn.])
894 ], [
895   have_libidn="no"
899 dnl Check for dbus
900 AC_ARG_ENABLE(dbus,
901   [AS_HELP_STRING([--enable-dbus],
902     [compile D-Bus message bus support (default enabled)])])
903 have_dbus="no"
904 AS_IF([test "${enable_dbus}" != "no"], [
905   PKG_CHECK_MODULES(DBUS, [dbus-1 >= 1.6.0], [
906     have_dbus="yes"
907   ], [
908     AS_IF([test -n "${enable_dbus}"], [
909       AC_MSG_ERROR([${DBUS_PKG_ERRORS}.])
910     ], [
911       AC_MSG_WARN([${DBUS_PKG_ERRORS}.])
912     ])
913   ])
915 AM_CONDITIONAL([HAVE_DBUS], [test "${have_dbus}" = "yes"])
918 dnl Check for systemd
919 PKG_CHECK_MODULES([SYSTEMD], [libsystemd], [
920   have_systemd="yes"
921 ], [
922   AC_MSG_WARN([${SYSTEMD_PKG_ERRORS}.])
924 AM_CONDITIONAL([HAVE_SYSTEMD], [test "${have_systemd}" = "yes"])
927 EXTEND_HELP_STRING([Optimization options:])
929 dnl  Compiler warnings
932 AX_APPEND_COMPILE_FLAGS([-Wall -Wextra -Wsign-compare -Wundef -Wpointer-arith -Wvolatile-register-var -Wformat -Wformat-security], [CFLAGS])
933 AX_APPEND_COMPILE_FLAGS([-Wall -Wextra -Wsign-compare -Wundef -Wpointer-arith -Wvolatile-register-var -Wformat -Wformat-security], [CXXFLAGS])
935 AX_APPEND_COMPILE_FLAGS([-Wbad-function-cast -Wwrite-strings -Wmissing-prototypes -Werror-implicit-function-declaration -Winit-self -Wlogical-op -Wshadow=local], [CFLAGS])
936 AX_APPEND_COMPILE_FLAGS([-pipe], [CFLAGS])
939 dnl  Debugging mode
941 AC_ARG_ENABLE(debug,
942   [AS_HELP_STRING([--enable-debug],
943     [build with run-time assertions (default disabled)])],,
944   [enable_debug="no"])
945 AH_TEMPLATE(NDEBUG,
946             [Define to 1 if debug code should NOT be compiled])
947 AS_IF([test "${enable_debug}" != "no"], [
948   AC_CHECK_HEADERS([valgrind/valgrind.h])
949 ], [
950   AC_DEFINE(NDEBUG)
954 dnl  Profiling
956 AC_ARG_ENABLE(gprof,
957   [AS_HELP_STRING([--enable-gprof],[profile with gprof (default disabled)])],,
958   [enable_gprof="no"])
959 AS_IF([test "${enable_gprof}" != "no"], [
960   CFLAGS="${CFLAGS} -pg"
961   CXXFLAGS="${CXXFLAGS} -pg"
962   OBJCFLAGS="${OBJCFLAGS} -pg"
963   LDFLAGS="${LDFLAGS} -pg"
966 AC_ARG_ENABLE(cprof,
967   [AS_HELP_STRING([--enable-cprof],[profile with cprof (default disabled)])],,
968   [enable_cprof="no"])
969 AS_IF([test "${enable_gprof}" != "no"], [
970   CFLAGS="${CFLAGS} -finstrument-functions"
971   CXXFLAGS="${CXXFLAGS} -finstrument-functions"
972   OBJCFLAGS="${OBJCFLAGS} -finstrument-functions"
973   LDFLAGS="${LDFLAGS} -finstrument-functions"
977 dnl  Test coverage
979 AC_ARG_ENABLE(coverage,
980   [AS_HELP_STRING([--enable-coverage],
981     [build for test coverage (default disabled)])],,
982   [enable_coverage="no"])
983 AS_IF([test "${enable_coverage}" != "no"], [
984   CFLAGS="-fprofile-arcs -ftest-coverage ${CFLAGS}"
985   CXXFLAGS="-fprofile-arcs -ftest-coverage ${CXXFLAGS}"
986   LDFLAGS="-lgcov ${LDFLAGS}"
989 AS_IF([test "${SYS}" != "mingw32" -a "${SYS}" != "os2"], [
990   VLC_SAVE_FLAGS
991   CFLAGS="${CFLAGS} -fvisibility=hidden"
992   CXXFLAGS="${CXXFLAGS} -fvisibility=hidden"
993   OBJCFLAGS="${OBJCFLAGS} -fvisibility=hidden"
994   AC_CACHE_CHECK([if $CC accepts -fvisibility=hidden],
995                  [ac_cv_c_visibility_hidden], [
996     AC_COMPILE_IFELSE([AC_LANG_PROGRAM()], [
997       ac_cv_c_visibility_hidden=yes
998     ], [
999       ac_cv_c_visibility_hidden=no
1000     ])
1001   ])
1002   AS_IF([test "${ac_cv_c_visibility_hidden}" = "no"], [VLC_RESTORE_FLAGS])
1006 dnl Sanitizer flags
1008 AC_ARG_WITH([sanitizer],
1009     [AS_HELP_STRING([--with-sanitizer=(address/memory/undefined/thread)],
1010         [build with sanitizer flags (default disabled)])],
1011      [],
1012      [with_sanitizer=no])
1014 AS_VAR_IF(with_sanitizer, no, [], [
1015     AX_CHECK_COMPILE_FLAG([-fsanitize=${with_sanitizer}], [
1016         AX_APPEND_FLAG([-fsanitize=${with_sanitizer}])
1017         AX_APPEND_FLAG([-fsanitize=${with_sanitizer}], [CXXFLAGS])
1018         AX_APPEND_FLAG([-fsanitize=${with_sanitizer}], [LDFLAGS])
1019     ], [
1020         AC_MSG_ERROR(["-fsanitize=${with_sanitizer} not supported!"])
1021     ])
1022     AX_APPEND_FLAG([-g])
1023     AX_APPEND_FLAG([-g], [CXXFLAGS])
1025     AS_IF([test -z "${with_sanitizer##*address*}" ], [
1026        AX_APPEND_COMPILE_FLAGS([-fsanitize-address-use-after-scope -fno-omit-frame-pointer])
1027        AX_APPEND_COMPILE_FLAGS([-fsanitize-address-use-after-scope -fno-omit-frame-pointer], [CXXFLAGS])
1028     ])
1029     AS_IF([test -z "${with_sanitizer##*memory*}" ], [
1030         AX_APPEND_COMPILE_FLAGS([-fPIE -pie])
1031         AX_APPEND_COMPILE_FLAGS([-fPIE -pie], [CXXFLAGS])
1032     ])
1033     AS_IF([test -z "${with_sanitizer##*thread*}" ], [
1034         AX_APPEND_COMPILE_FLAGS([-fPIE -pie])
1035         AX_APPEND_COMPILE_FLAGS([-fPIE -pie], [CXXFLAGS])
1036     ])
1040 dnl  Enable/disable optimizations
1042 AC_ARG_ENABLE(optimizations,
1043   [AS_HELP_STRING([--disable-optimizations],
1044     [disable compiler optimizations (default enabled)])],,
1045   [enable_optimizations="yes"])
1047 dnl Check for various optimization flags
1048 AS_IF([test "${enable_optimizations}" != "no"], [
1050   dnl -O3 only in production builds
1051   AS_IF([test "${enable_debug}" = "no"], [
1052     VLC_SAVE_FLAGS
1053     CFLAGS="${CFLAGS} -O3"
1054     CXXFLAGS="${CXXFLAGS} -O3"
1055     OBJCFLAGS="${OBJCFLAGS} -O3"
1056     AC_CACHE_CHECK([if $CC accepts -O3],  [ac_cv_c_o3], [
1057       AC_COMPILE_IFELSE([AC_LANG_PROGRAM()], [
1058         ac_cv_c_o3=yes
1059       ], [
1060         ac_cv_c_o3=no
1061       ])
1062     ])
1063     AS_IF([test "${ac_cv_c_o3}" = "no"], [VLC_RESTORE_FLAGS])
1064   ])
1066   dnl Check for fast maths
1067   AX_APPEND_COMPILE_FLAGS([-fno-math-errno -funsafe-math-optimizations -fno-rounding-math -fno-signaling-nans -fcx-limited-range], [CFLAGS])
1068   AX_APPEND_COMPILE_FLAGS([-fno-math-errno -funsafe-math-optimizations -fno-rounding-math -fno-signaling-nans -fcx-limited-range], [CXXFLAGS])
1070 AH_BOTTOM([
1071 #if defined(_MSC_VER) && !defined(__clang__)
1072 # pragma fenv_access(off)
1073 # pragma fp_contract(on)
1074 #elif defined(__GNUC__)
1075 /* Not supported so far */
1076 #else
1077 # pragma STDC FENV_ACCESS OFF
1078 # pragma STDC FP_CONTRACT ON
1079 #endif
1082   dnl Check for -funroll-loops
1083   VLC_SAVE_FLAGS
1084   CFLAGS="${CFLAGS} -funroll-loops"
1085   CXXFLAGS="${CXXFLAGS} -funroll-loops"
1086   OBJCFLAGS="${OBJCFLAGS} -funroll-loops"
1087   AC_CACHE_CHECK([if $CC accepts -funroll-loops], [ac_cv_c_unroll_loops], [
1088     AC_COMPILE_IFELSE([AC_LANG_PROGRAM()], [
1089       ac_cv_c_unroll_loops=yes
1090     ], [
1091       ac_cv_c_unroll_loops=no
1092     ])
1093   ])
1094   AS_IF([test "${ac_cv_c_unroll_loops}" = "no"], [VLC_RESTORE_FLAGS])
1096   AS_IF([test "$enable_debug" = "no"], [
1097     dnl Check for -fomit-frame-pointer
1098     VLC_SAVE_FLAGS
1099     CFLAGS="${CFLAGS} -fomit-frame-pointer"
1100     CXXFLAGS="${CXXFLAGS} -fomit-frame-pointer"
1101     OBJCFLAGS="${OBJCFLAGS} -fomit-frame-pointer"
1102     AC_CACHE_CHECK([if $CC accepts -fomit-frame-pointer],
1103       [ac_cv_c_omit_frame_pointer], [
1104       AC_COMPILE_IFELSE([AC_LANG_PROGRAM()], [
1105         ac_cv_c_omit_frame_pointer=yes
1106       ], [
1107         ac_cv_c_omit_frame_pointer=no
1108       ])
1109     ])
1110     AS_IF([test "${ac_cv_c_omit_frame_pointer}" = "no"], [VLC_RESTORE_FLAGS])
1111   ])
1114 VLC_SAVE_FLAGS
1115 LDFLAGS="${LDFLAGS} -Wl,-Bsymbolic"
1116 AC_CACHE_CHECK([if linker supports -Bsymbolic], [ac_cv_ld_bsymbolic], [
1117   AC_TRY_LINK([],, [
1118     ac_cv_ld_bsymbolic="-Wl,-Bsymbolic"
1119   ], [
1120     ac_cv_ld_bsymbolic=""
1121   ])
1123 VLC_RESTORE_FLAGS
1124 SYMBOLIC_LDFLAGS="${ac_cv_ld_bsymbolic}"
1125 AC_SUBST(SYMBOLIC_LDFLAGS)
1127 VLC_SAVE_FLAGS
1128 LDFLAGS="${LDFLAGS} -Wl,-z,defs"
1129 AC_CACHE_CHECK([if linker supports -z,defs], [ac_cv_ld_z_defs], [
1130   AC_TRY_LINK([],, [
1131     ac_cv_ld_z_defs="yes"
1132   ], [
1133     ac_cv_ld_z_defs="no"
1134   ])
1136 AS_IF([test "${ac_cv_ld_z_defs}" = "no" -o "${with_sanitizer}" != "no"], [VLC_RESTORE_FLAGS])
1138 dnl Check for __attribute__((packed))
1139 AC_CACHE_CHECK([for __attribute__((packed))],
1140   [ac_cv_c_attribute_packed],
1141   [ac_cv_c_attribute_packed=no
1142    AC_TRY_COMPILE(, [struct __attribute__((__packed__)) foo { int a; } b; (void)b;],
1143                     [ac_cv_c_attribute_packed=yes])])
1144 if test "${ac_cv_c_attribute_packed}" != "no"; then
1145   AC_DEFINE(HAVE_ATTRIBUTE_PACKED, 1, Support for __attribute__((packed)) for structs)
1149 dnl  Check the CPU
1151 case "${host_cpu}" in
1152   "")
1153     ARCH=unknown
1154     ;;
1155   *)
1156     ARCH="${host_cpu}"
1157     ;;
1158 esac
1160 dnl Check for backtrace() support
1161 AC_CHECK_HEADERS(execinfo.h)
1162 AC_CHECK_FUNCS(backtrace)
1165 dnl  default modules
1167 ALIASES="${ALIASES} cvlc rvlc"
1170 dnl  Accelerated modules
1173 dnl  Check for fully working MMX intrinsics
1174 dnl  We need support for -mmmx, we need <mmintrin.h>, and we also need a
1175 dnl  working compiler (http://gcc.gnu.org/bugzilla/show_bug.cgi?id=23963)
1176 AC_ARG_ENABLE(mmx,
1177   [AS_HELP_STRING([--disable-mmx],
1178     [disable MMX optimizations (default auto)])],,[
1179   case "${host_cpu}" in
1180     i?86|x86_64)
1181       enable_mmx="yes"
1182       ;;
1183     *)
1184       enable_mmx="no"
1185       ;;
1186   esac
1188 have_mmx="no"
1189 have_mmxext="no"
1190 AS_IF([test "${enable_mmx}" != "no"], [
1191   ARCH="${ARCH} mmx"
1192   VLC_SAVE_FLAGS
1193   CFLAGS="${CFLAGS} -mmmx"
1194   AC_CACHE_CHECK([if $CC groks MMX intrinsics], [ac_cv_c_mmx_intrinsics], [
1195     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([
1196 [#include <mmintrin.h>
1197 #include <stdint.h>
1198 uint64_t frobzor;]], [
1199 [__m64 a, b, c;
1200 a = b = c = (__m64)frobzor;
1201 a = _mm_slli_pi16(a, 3);
1202 a = _mm_adds_pi16(a, b);
1203 c = _mm_srli_pi16(c, 8);
1204 c = _mm_slli_pi16(c, 3);
1205 b = _mm_adds_pi16(b, c);
1206 a = _mm_unpacklo_pi8(a, b);
1207 frobzor = (uint64_t)a;]])], [
1208       ac_cv_c_mmx_intrinsics=yes
1209     ], [
1210       ac_cv_c_mmx_intrinsics=no
1211     ])
1212   ])
1213   VLC_RESTORE_FLAGS
1214   AS_IF([test "${ac_cv_c_mmx_intrinsics}" != "no"], [
1215     AC_DEFINE(HAVE_MMX_INTRINSICS, 1, [Define to 1 if MMX intrinsics are available.])
1216   ])
1218   VLC_SAVE_FLAGS
1219   CFLAGS="${CFLAGS} -mmmx"
1220   AC_CACHE_CHECK([if $CC groks MMX inline assembly], [ac_cv_mmx_inline], [
1221     AC_COMPILE_IFELSE([AC_LANG_PROGRAM(,[[
1222 void *p;
1223 asm volatile("packuswb %%mm1,%%mm2"::"r"(p):"mm1", "mm2");
1225     ], [
1226       ac_cv_mmx_inline=yes
1227     ], [
1228       ac_cv_mmx_inline=no
1229     ])
1230   ])
1231   AS_IF([test "${ac_cv_mmx_inline}" != "no"], [
1232     AC_DEFINE(CAN_COMPILE_MMX, 1, [Define to 1 inline MMX assembly is available.])
1233     have_mmx="yes"
1234   ])
1236   AC_CACHE_CHECK([if $CC groks MMX EXT inline assembly],
1237                  [ac_cv_mmxext_inline], [
1238     AC_COMPILE_IFELSE([AC_LANG_PROGRAM(,[[
1239 void *p;
1240 asm volatile("maskmovq %%mm1,%%mm2"::"r"(p):"mm1", "mm2");
1242     ], [
1243       ac_cv_mmxext_inline=yes
1244     ], [
1245       ac_cv_mmxext_inline=no
1246     ])
1247   ])
1248   VLC_RESTORE_FLAGS
1249   AS_IF([test "${ac_cv_mmxext_inline}" != "no"], [
1250     AC_DEFINE(CAN_COMPILE_MMXEXT, 1, [Define to 1 if MMX EXT inline assembly is available.])
1251     have_mmxext="yes"
1252   ])
1254 AM_CONDITIONAL([HAVE_MMX], [test "${have_mmx}" = "yes"])
1255 AM_CONDITIONAL([HAVE_MMXEXT], [test "${have_mmxext}" = "yes"])
1257 dnl  Check for fully workin SSE2 intrinsics
1258 dnl  We need support for -mmmx, we need <emmintrin.h>, and we also need a
1259 dnl  working compiler (http://gcc.gnu.org/bugzilla/show_bug.cgi?id=23963)
1260 AC_ARG_ENABLE(sse,
1261   [AS_HELP_STRING([--disable-sse],
1262     [disable SSE (1-4) optimizations (default auto)])],, [
1263   case "${host_cpu}" in
1264     i?86|x86_64)
1265       enable_sse=yes
1266       ;;
1267     *)
1268       enable_sse=no
1269       ;;
1270   esac
1272 have_sse2="no"
1273 AS_IF([test "${enable_sse}" != "no"], [
1274   ARCH="${ARCH} sse sse2"
1276   VLC_SAVE_FLAGS
1277   CFLAGS="${CFLAGS} -msse2"
1278   AC_CACHE_CHECK([if $CC groks SSE2 intrinsics], [ac_cv_c_sse2_intrinsics], [
1279     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([
1280 [#include <emmintrin.h>
1281 #include <stdint.h>
1282 uint64_t frobzor;]], [
1283 [__m128i a, b, c;
1284 a = b = c = _mm_set1_epi64((__m64)frobzor);
1285 a = _mm_slli_epi16(a, 3);
1286 a = _mm_adds_epi16(a, b);
1287 c = _mm_srli_epi16(c, 8);
1288 c = _mm_slli_epi16(c, 3);
1289 b = _mm_adds_epi16(b, c);
1290 a = _mm_unpacklo_epi8(a, b);
1291 frobzor = (uint64_t)_mm_movepi64_pi64(a);]])], [
1292       ac_cv_c_sse2_intrinsics=yes
1293     ], [
1294       ac_cv_c_sse2_intrinsics=no
1295     ])
1296   ])
1297   VLC_RESTORE_FLAGS
1298   AS_IF([test "${ac_cv_c_sse2_intrinsics}" != "no"], [
1299     AC_DEFINE(HAVE_SSE2_INTRINSICS, 1, [Define to 1 if SSE2 intrinsics are available.])
1300   ])
1302   VLC_SAVE_FLAGS
1303   CFLAGS="${CFLAGS} -msse"
1304   AC_CACHE_CHECK([if $CC groks SSE inline assembly], [ac_cv_sse_inline], [
1305     AC_COMPILE_IFELSE([AC_LANG_PROGRAM(,[[
1306 void *p;
1307 asm volatile("xorps %%xmm1,%%xmm2"::"r"(p):"xmm1", "xmm2");
1309     ], [
1310       ac_cv_sse_inline=yes
1311     ], [
1312       ac_cv_sse_inline=no
1313     ])
1314   ])
1316   AS_IF([test "${ac_cv_sse_inline}" != "no" -a "${SYS}" != "solaris"], [
1317     AC_DEFINE(CAN_COMPILE_SSE, 1, [Define to 1 if SSE inline assembly is available.])
1318   ])
1320   AC_CACHE_CHECK([if $CC groks SSE2 inline assembly], [ac_cv_sse2_inline], [
1321     AC_COMPILE_IFELSE([AC_LANG_PROGRAM(,[[
1322 void *p;
1323 asm volatile("punpckhqdq %%xmm1,%%xmm2"::"r"(p):"xmm1", "xmm2");
1325     ], [
1326       ac_cv_sse2_inline=yes
1327     ], [
1328       ac_cv_sse2_inline=no
1329     ])
1330   ])
1331   AS_IF([test "${ac_cv_sse2_inline}" != "no" -a "${SYS}" != "solaris"], [
1332     AC_DEFINE(CAN_COMPILE_SSE2, 1, [Define to 1 if SSE2 inline assembly is available.])
1333     have_sse2="yes"
1334   ])
1336   # SSE3
1337   AC_CACHE_CHECK([if $CC groks SSE3 inline assembly], [ac_cv_sse3_inline], [
1338     AC_COMPILE_IFELSE([AC_LANG_PROGRAM(,[[
1339 void *p;
1340 asm volatile("movsldup %%xmm1,%%xmm0"::"r"(p):"xmm0", "xmm1");
1342     ], [
1343       ac_cv_sse3_inline=yes
1344     ], [
1345       ac_cv_sse3_inline=no
1346     ])
1347   ])
1349   AS_IF([test "${ac_cv_sse3_inline}" != "no"], [
1350     AC_DEFINE(CAN_COMPILE_SSE3, 1, [Define to 1 if SSE3 inline assembly is available.]) ])
1351   # SSSE3
1352   AC_CACHE_CHECK([if $CC groks SSSE3 inline assembly], [ac_cv_ssse3_inline], [
1353     AC_COMPILE_IFELSE([AC_LANG_PROGRAM(,[[
1354 void *p;
1355 asm volatile("pabsw %%xmm0,%%xmm0"::"r"(p):"xmm0");
1357     ], [
1358       ac_cv_ssse3_inline=yes
1359     ], [
1360       ac_cv_ssse3_inline=no
1361     ])
1362   ])
1364   AS_IF([test "${ac_cv_ssse3_inline}" != "no"], [
1365     AC_DEFINE(CAN_COMPILE_SSSE3, 1, [Define to 1 if SSSE3 inline assembly is available.]) ])
1367   # SSE4.1
1368   AC_CACHE_CHECK([if $CC groks SSE4.1 inline assembly],
1369                  [ac_cv_sse4_1_inline], [
1370     AC_COMPILE_IFELSE([AC_LANG_PROGRAM(,[[
1371 void *p;
1372 asm volatile("pmaxsb %%xmm1,%%xmm0"::"r"(p):"xmm0", "xmm1");
1374     ], [
1375       ac_cv_sse4_1_inline=yes
1376     ], [
1377       ac_cv_sse4_1_inline=no
1378     ])
1379   ])
1381   AS_IF([test "${ac_cv_sse4_1_inline}" != "no"], [
1382     AC_DEFINE(CAN_COMPILE_SSE4_1, 1, [Define to 1 if SSE4_1 inline assembly is available.]) ])
1384   # SSE4.2
1385   AC_CACHE_CHECK([if $CC groks SSE4.2 inline assembly],
1386                  [ac_cv_sse4_2_inline], [
1387     AC_COMPILE_IFELSE([AC_LANG_PROGRAM(,[[
1388 void *p;
1389 asm volatile("pcmpgtq %%xmm1,%%xmm0"::"r"(p):"xmm0", "xmm1");
1391     ], [
1392       ac_cv_sse4_2_inline=yes
1393     ], [
1394       ac_cv_sse4_2_inline=no
1395     ])
1396   ])
1398   AS_IF([test "${ac_cv_sse4_2_inline}" != "no"], [
1399     AC_DEFINE(CAN_COMPILE_SSE4_2, 1, [Define to 1 if SSE4_2 inline assembly is available.]) ])
1401   # SSE4A
1402   AC_CACHE_CHECK([if $CC groks SSE4A inline assembly], [ac_cv_sse4a_inline], [
1403     AC_COMPILE_IFELSE([AC_LANG_PROGRAM(,[[
1404 void *p;
1405 asm volatile("insertq %%xmm1,%%xmm0"::"r"(p):"xmm0", "xmm1");
1407     ], [
1408       ac_cv_sse4a_inline=yes
1409     ], [
1410       ac_cv_sse4a_inline=no
1411     ])
1412   ])
1413   VLC_RESTORE_FLAGS
1414   AS_IF([test "${ac_cv_sse4a_inline}" != "no"], [
1415     AC_DEFINE(CAN_COMPILE_SSE4A, 1, [Define to 1 if SSE4A inline assembly is available.]) ])
1417 AM_CONDITIONAL([HAVE_SSE2], [test "$have_sse2" = "yes"])
1419 VLC_SAVE_FLAGS
1420 CFLAGS="${CFLAGS} -mmmx"
1421 have_3dnow="no"
1422 AC_CACHE_CHECK([if $CC groks 3D Now! inline assembly], [ac_cv_3dnow_inline], [
1423   AC_COMPILE_IFELSE([AC_LANG_PROGRAM(,[[
1424 void *p;
1425 asm volatile("pfadd %%mm1,%%mm2"::"r"(p):"mm1", "mm2");
1427   ], [
1428     ac_cv_3dnow_inline=yes
1429   ], [
1430     ac_cv_3dnow_inline=no
1431   ])
1433 VLC_RESTORE_FLAGS
1434 AS_IF([test "${ac_cv_3dnow_inline}" != "no"], [
1435   AC_DEFINE(CAN_COMPILE_3DNOW, 1,
1436             [Define to 1 if 3D Now! inline assembly is available.])
1437   have_3dnow="yes"
1439 AM_CONDITIONAL([HAVE_3DNOW], [test "$have_3dnow" = "yes"])
1442 AC_ARG_ENABLE(neon,
1443   [AS_HELP_STRING([--disable-neon],
1444     [disable NEON optimizations (default auto)])],, [
1445   AS_IF([test "${host_cpu}" = "arm"], [enable_neon="yes"] ,[enable_neon="no"])
1447 AS_IF([test "${enable_neon}" != "no"], [
1448   VLC_SAVE_FLAGS
1449   CFLAGS="${CFLAGS} -mfpu=neon -mhard-float"
1450   AC_CACHE_CHECK([if $CCAS groks ARM NEON assembly], [ac_cv_arm_neon], [
1451     AC_COMPILE_IFELSE([
1452       AC_LANG_PROGRAM(,[[
1453 asm volatile("vqmovun.s64 d0, q1":::"d0");
1455     ], [
1456       ac_cv_arm_neon="yes"
1457     ], [
1458       ac_cv_arm_neon="no"
1459     ])
1460   ])
1461   VLC_RESTORE_FLAGS
1463 AM_CONDITIONAL(HAVE_NEON, [test "${ac_cv_arm_neon}" = "yes"])
1465 AC_ARG_ENABLE(arm64,
1466   [AS_HELP_STRING([--disable-arm64],
1467     [disable arm 64-bit optimizations (default auto)])],, [
1468   AS_IF([test "${host_cpu}" = "aarch64"], [enable_arm64="yes"] ,[enable_arm64="no"])
1470 AS_IF([test "${enable_arm64}" != "no"], [
1471   AC_CACHE_CHECK([if $CCAS groks ARM 64 SIMD assembly], [ac_cv_arm64], [
1472     AC_COMPILE_IFELSE([
1473       AC_LANG_PROGRAM(,[[
1474 asm volatile("uhadd v0.8b, v0.8b, v1.8b":::"v0");
1476     ], [
1477       ac_cv_arm64="yes"
1478     ], [
1479       ac_cv_arm64="no"
1480     ])
1481   ])
1483 AM_CONDITIONAL(HAVE_ARM64, [test "${ac_cv_arm64}" = "yes"])
1486 AC_ARG_ENABLE(altivec,
1487   [AS_HELP_STRING([--disable-altivec],
1488     [disable AltiVec optimizations (default auto)])],, [
1489   AS_CASE("${host_cpu}", [powerpc*],
1490         [enable_altivec=yes], [enable_altivec=no])
1492 have_altivec="no"
1493 ALTIVEC_CFLAGS=""
1494 AS_IF([test "${enable_altivec}" = "yes"], [
1495   ARCH="${ARCH} altivec";
1496   VLC_SAVE_FLAGS
1497   AC_CACHE_CHECK([if $CC groks AltiVec inline assembly],
1498     [ac_cv_altivec_inline],
1499     [AC_TRY_COMPILE(,[asm volatile("vperm 0,1,2,3");],
1500          ac_cv_altivec_inline="yes",
1501          [CFLAGS="${CFLAGS} -Wa,-maltivec"
1502           AC_TRY_COMPILE(,[asm volatile("vperm 0,1,2,3");],
1503             [ac_cv_altivec_inline="-Wa,-maltivec"],
1504             ac_cv_altivec_inline=no)
1505          ])])
1506   VLC_RESTORE_FLAGS
1507   AS_IF([test "${ac_cv_altivec_inline}" != "no"], [
1508     AC_DEFINE(CAN_COMPILE_ALTIVEC, 1,
1509               [Define to 1 if AltiVec inline assembly is available.])
1510     AS_IF([test "${ac_cv_altivec_inline}" != "yes"], [
1511       ALTIVEC_CFLAGS="${ac_cv_altivec_inline}"
1512       VLC_ADD_CFLAGS([libvlccore],[${ac_cv_altivec_inline}])
1513     ])
1514     have_altivec="yes"
1515   ])
1517   VLC_SAVE_FLAGS
1518   AC_CACHE_CHECK([if \$CC groks AltiVec C extensions],
1519   [ac_cv_c_altivec], [
1520     CFLAGS="${CFLAGS} -maltivec"
1521     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([
1522 [#include <altivec.h>]], [
1523 [vec_ld(0, (unsigned char *)0);]])], [
1524       ac_cv_c_altivec="-maltivec"
1525     ], [
1526       ac_cv_c_altivec="no"
1527     ])
1528   ])
1529   VLC_RESTORE_FLAGS
1530   AS_IF([test "${ac_cv_c_altivec}" != "no"], [
1531     CPPFLAGS="${CPPFLAGS} ${ac_cv_c_altivec}"
1532     AC_DEFINE(CAN_COMPILE_C_ALTIVEC, 1, [Define to 1 if C AltiVec extensions are available.])
1533     VLC_ADD_CFLAGS([libvlccore],[${ac_cv_c_altivec}])
1534     ALTIVEC_CFLAGS="$ALTIVEC_CFLAGS ${ac_cv_c_altivec}"
1535     VLC_ADD_CFLAGS([deinterlace],[${ac_cv_c_altivec}])
1536     have_altivec="yes"
1537   ])
1538   AC_CHECK_HEADERS(altivec.h)
1540   VLC_SAVE_FLAGS
1541   LDFLAGS="${LDFLAGS} -Wl,-framework,vecLib"
1542   AC_CACHE_CHECK([if linker needs -framework vecLib],
1543     [ac_cv_ld_altivec],
1544     [AC_TRY_LINK([],,ac_cv_ld_altivec=yes,ac_cv_ld_altivec=no)])
1545   VLC_RESTORE_FLAGS
1546   AS_IF([test "${ac_cv_ld_altivec}" != "no"], [
1547     VLC_ADD_LIBS([libvlccore],[-Wl,-framework,vecLib])
1548   ])
1550 AC_SUBST(ALTIVEC_CFLAGS)
1551 AM_CONDITIONAL([HAVE_ALTIVEC], [test "$have_altivec" = "yes"])
1554 dnl  Memory usage
1556 AC_ARG_ENABLE(optimize-memory,
1557   [AS_HELP_STRING([--enable-optimize-memory],
1558     [optimize memory usage over performance])])
1559 if test "${enable_optimize_memory}" = "yes"; then
1560   AC_DEFINE(OPTIMIZE_MEMORY, 1, Define if you want to optimize memory usage over performance)
1564 dnl Allow running as root (useful for people running on embedded platforms)
1566 AC_ARG_ENABLE(run-as-root,
1567   [AS_HELP_STRING([--enable-run-as-root],
1568     [allow running VLC as root (default disabled)])])
1569 AS_IF([test "${enable_run_as_root}" = "yes"],[
1570     AC_DEFINE(ALLOW_RUN_AS_ROOT, 1,
1571               [Define to 1 to allow running VLC as root (uid 0).])
1575 dnl Stream output
1577 AC_ARG_ENABLE(sout,
1578   [AS_HELP_STRING([--disable-sout],
1579     [disable streaming output (default enabled)])])
1580 AS_IF([test "${enable_sout}" != "no"], [
1581   AC_DEFINE(ENABLE_SOUT, 1, [Define to 1 for stream output support.])
1583 AM_CONDITIONAL(ENABLE_SOUT, [test "${enable_sout}" != "no"])
1585 dnl Lua modules
1586 AC_ARG_ENABLE(lua,
1587   [AS_HELP_STRING([--disable-lua],
1588     [disable LUA scripting support (default enabled)])])
1589 if test "${enable_lua}" != "no"
1590 then
1591   PKG_CHECK_MODULES(LUA, lua5.2,
1592     [ have_lua=yes ],
1593     [
1594     AC_MSG_WARN([${LUA_PKG_ERRORS}, trying lua 5.1 instead])
1596     PKG_CHECK_MODULES(LUA, lua5.1,
1597       [ have_lua=yes ],
1598       [
1599       AC_MSG_WARN([${LUA_PKG_ERRORS}, trying lua >= 5.1 instead])
1600       PKG_CHECK_MODULES(LUA, lua >= 5.1,
1601         [ have_lua=yes ],
1602         [
1603           AC_MSG_WARN([${LUA_PKG_ERRORS}, trying manual detection instead])
1604           have_lua=yes
1605           AC_CHECK_HEADERS([lua.h lauxlib.h lualib.h],
1606             [],
1607             [ have_lua=no ] )
1608           AC_CHECK_LIB(  lua5.2 , luaL_newstate,
1609             [LUA_LIBS="-llua5.2"],
1610           AC_CHECK_LIB( lua5.1 , luaL_newstate,
1611             [LUA_LIBS="-llua5.1"],
1612             AC_CHECK_LIB( lua51 , luaL_newstate,
1613               [LUA_LIBS="-llua51"],
1614               AC_CHECK_LIB( lua , luaL_newstate,
1615                 [LUA_LIBS="-llua"],
1616                 [ have_lua=no
1617                 ], [-lm])
1618             )))
1619         ])
1620       ])
1621     ])
1622   if test "x${have_lua}" != "xyes" ;  then
1623       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.])
1624   fi
1625   AC_ARG_VAR([LUAC], [LUA byte compiler])
1626   AS_IF([test -z "$LUAC"], [
1627      AC_CHECK_TOOL(LUAC, [luac], [false])
1628   ])
1629   AS_IF([test "${LUAC}" = "false"], [
1630     AC_MSG_ERROR([Could not find the LUA byte compiler.])
1631   ])
1632   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], [
1633     AC_MSG_ERROR([You need 32-bits luac when using lua from contrib.])
1634   ])
1636 AM_CONDITIONAL(BUILD_LUA, [test "${have_lua}" = "yes"])
1640 dnl VideoLAN manager
1642 AC_ARG_ENABLE(vlm,
1643   [AS_HELP_STRING([--disable-vlm],
1644     [disable the stream manager (default enabled)])],,
1645   [enable_vlm="${enable_sout}"])
1646 AS_IF([test "${enable_vlm}" != "no"], [
1647   AS_IF([test "${enable_sout}" = "no"], [
1648     AC_MSG_ERROR([VLM requires the stream output. Do not use --disable-sout.])
1649   ])
1650   AC_DEFINE(ENABLE_VLM, 1, [Define if you want the VideoLAN manager support])
1652 AM_CONDITIONAL([ENABLE_VLM], [test "${enable_vlm}" != "no"])
1656 dnl Addons manager storage and repositories modules
1658 AC_ARG_ENABLE(addonmanagermodules,
1659   [AS_HELP_STRING([--disable-addonmanagermodules],
1660     [disable the addons manager modules (default enabled)])])
1661 if test "${enable_addonmanagermodules}" != "no"
1662 then
1663   AC_DEFINE(ENABLE_ADDONMANAGERMODULES, 1, [Define if you want the addons manager modules])
1665 AM_CONDITIONAL([ENABLE_ADDONMANAGERMODULES], [test "${enable_addonmanagermodules}" != "no"])
1669 dnl  Input plugins
1672 EXTEND_HELP_STRING([Input plugins:])
1675 dnl  libarchive access module
1677 PKG_ENABLE_MODULES_VLC([ARCHIVE], [archive], [libarchive >= 3.1.0], (libarchive support), [auto])
1680 dnl  live555 input
1682 AC_ARG_ENABLE(live555,
1683   [AS_HELP_STRING([--enable-live555],
1684     [enable RTSP input through live555 (default enabled)])])
1686 AS_IF([test "${enable_live555}" != "no" -a -n "${CXX}"], [
1687   PKG_CHECK_MODULES(LIVE555, live555, [
1688     VLC_ADD_PLUGIN([live555])
1689     VLC_ADD_CXXFLAGS([live555], [$LIVE555_CFLAGS])
1690     VLC_ADD_LIBS([live555],[$LIVE555_LIBS])
1691   ], [
1692     AC_MSG_WARN([${LIVE555_PKG_ERRORS}.])
1694     AC_LANG_PUSH(C++)
1695     VLC_SAVE_FLAGS
1697     dnl detect include paths
1698     AS_IF([test -f "${CONTRIB_DIR}/include/UsageEnvironment/UsageEnvironment.hh"], [
1699       CPPFLAGS_live555="-I${CONTRIB_DIR}/include/liveMedia -I${CONTRIB_DIR}/include/groupsock -I${CONTRIB_DIR}/include/BasicUsageEnvironment -I${CONTRIB_DIR}/include/UsageEnvironment"
1700     ], [
1701       AS_IF([test "${SYS}" != "os2"], [
1702         LIVE555_PREFIX=${LIVE555_PREFIX-"/usr"}
1703         CPPFLAGS_live555="-I${LIVE555_PREFIX}/include/liveMedia -I${LIVE555_PREFIX}/include/groupsock -I${LIVE555_PREFIX}/include/BasicUsageEnvironment -I${LIVE555_PREFIX}/include/UsageEnvironment"
1704       ], [
1705         LIVE555_PREFIX=${LIVE555_PREFIX-"/usr/lib/live"}
1706         CPPFLAGS_live555="-I${LIVE555_PREFIX}/liveMedia/include -I${LIVE555_PREFIX}/groupsock/include -I${LIVE555_PREFIX}/BasicUsageEnvironment/include -I${LIVE555_PREFIX}/UsageEnvironment/include"
1707         LDFLAGS_live555="-L${LIVE555_PREFIX}/liveMedia -L${LIVE555_PREFIX}/groupsock -L${LIVE555_PREFIX}/BasicUsageEnvironment -L${LIVE555_PREFIX}/UsageEnvironment"
1708       ])
1709     ])
1711     dnl CPP Flags
1712     AS_IF([test "${SYS}" = "solaris"], [
1713       CPPFLAGS_live555="${CPPFLAGS_live555} -DSOLARIS"
1714     ])
1715     CPPFLAGS="${CPPFLAGS} ${CPPFLAGS_live555}"
1716     LDFLAGS="${LDFLAGS} ${LDFLAGS_live555}"
1718     dnl version check
1719     AC_CACHE_CHECK([for live555 version 1324598400 or later], [ac_cv_live555], [
1720       AC_PREPROC_IFELSE([AC_LANG_PROGRAM([
1721 [#include <liveMedia_version.hh>
1722 #if !defined (LIVEMEDIA_LIBRARY_VERSION_INT) || (LIVEMEDIA_LIBRARY_VERSION_INT < 1324598400)
1723 # error BOOM
1724 #endif]])
1725       ], [
1726         ac_cv_live555="yes"
1727       ], [
1728         ac_cv_live555="no"
1729       ])
1730     ])
1732     AS_IF([test "$ac_cv_live555" = "no"], [
1733       AC_MSG_WARN([live555 is missing or its installed version is too old:
1734 Version 2011.12.23 or later is required to proceed.
1735 You can get an updated one from http://www.live555.com/liveMedia .])
1736       AS_IF([test -n "${enable_live555}"], [
1737         AC_MSG_ERROR([Update live555 or pass --disable-live555 to disable RTSP input support.])
1738       ])
1739     ], [
1740       other_libs="-lgroupsock -lBasicUsageEnvironment -lUsageEnvironment"
1741       other_libs_pic="-lgroupsock_pic -lBasicUsageEnvironment_pic -lUsageEnvironment_pic"
1742       AS_IF([test "${SYS}" = "mingw32"], [
1743         # add ws2_32 for closesocket, select, recv
1744         other_libs="$other_libs -lws2_32"
1745       ])
1747       dnl We need to check for pic because live555 don't provide shared libs
1748       dnl and we want to build a plugins so we need -fPIC on some arch.
1749       VLC_ADD_CXXFLAGS([live555], [${CPPFLAGS_live555}])
1750       VLC_ADD_LDFLAGS([live555], [${LDFLAGS_live555}])
1751       AC_CHECK_LIB(liveMedia_pic, main, [
1752         VLC_ADD_PLUGIN([live555])
1753         VLC_ADD_LIBS([live555], [-lliveMedia_pic ${other_libs_pic}])
1754       ],[
1755         AC_CHECK_LIB(liveMedia, main, [
1756           VLC_ADD_PLUGIN([live555])
1757           VLC_ADD_LIBS([live555], [-lliveMedia ${other_libs}])
1758         ],[],[${other_libs}])
1759       ],[${other_libs_pic}])
1760     ])
1761     VLC_RESTORE_FLAGS
1762     AC_LANG_POP(C++)
1763   ])
1767 dnl IIDC and DV FireWire input modules
1769 PKG_ENABLE_MODULES_VLC([DC1394], [], [libdc1394-2 >= 2.1.0], [IIDC FireWire input module], [auto])
1770 PKG_ENABLE_MODULES_VLC([DV1394], [], [libraw1394 >= 2.0.1 libavc1394 >= 0.5.3], [DV FireWire input module], [auto])
1773 dnl - linsys modules: access module check for libzvbi
1775 AC_ARG_ENABLE(linsys,
1776   [AS_HELP_STRING([--enable-linsys],
1777     [Linux Linear Systems Ltd. SDI and HD-SDI input cards (default enabled)])])
1778 AS_IF([test "$SYS" = "linux" -a "${enable_linsys}" != "no"], [
1779   VLC_ADD_PLUGIN([linsys_hdsdi])
1780   PKG_CHECK_MODULES(LINSYS_SDI, [zvbi-0.2 >= 0.2.28], [
1781     VLC_ADD_PLUGIN([linsys_sdi])
1782   ], [
1783     AC_MSG_WARN([${LINSYS_SDI_PKG_ERRORS}.])
1784   ])
1788 dnl dvdread module: check for libdvdread
1790 PKG_ENABLE_MODULES_VLC([DVDREAD], [], [dvdread > 4.9.0], [dvdread input module], [auto])
1793 dnl libdvdnav plugin
1795 PKG_ENABLE_MODULES_VLC([DVDNAV], [], [dvdnav > 4.9.0], [DVD with navigation input module (dvdnav)], [auto])
1796 AS_IF([test "${enable_dvdnav}" != "no"], [
1797   AC_MSG_CHECKING(for dvdnav_stream_cb in dvdnav/dvdnav.h)
1798     AC_EGREP_HEADER(dvdnav_stream_cb,dvdnav/dvdnav.h,[
1799       AC_MSG_RESULT(yes)
1800       AC_DEFINE(HAVE_STREAM_CB_IN_DVDNAV_H, 1, For dvdnav demux support)
1801       ],[
1802       AC_MSG_RESULT(no)
1803     ])
1807 dnl  Blu-ray Disc Support with libbluray
1809 PKG_ENABLE_MODULES_VLC([BLURAY], [libbluray], [libbluray >= 0.6.2], (libbluray for Blu-ray disc support ) )
1812 dnl  OpenCV wrapper and example filters
1814 PKG_ENABLE_MODULES_VLC([OPENCV], [opencv_example opencv_wrapper], [opencv > 2.0], (OpenCV (computer vision) filter), [auto])
1818 dnl  libsmbclient plugin
1820 PKG_ENABLE_MODULES_VLC([SMBCLIENT], [smb], [smbclient], (SMB/CIFS support), [auto])
1821 AS_IF([test "${SYS}" = "mingw32" -a "${enable_winstore_app}" != "yes"], [ VLC_ADD_PLUGIN([smb]) ])
1824 dnl  liBDSM access module
1826 PKG_ENABLE_MODULES_VLC([DSM], [dsm], [libdsm >= 0.2.0], [libdsm SMB/CIFS access/sd module], [auto])
1829 dnl sftp access support
1831 PKG_ENABLE_MODULES_VLC([SFTP], [sftp], [libssh2], (support SFTP file transfer via libssh2), [auto])
1834 dnl nfs access support
1836 PKG_ENABLE_MODULES_VLC([NFS], [nfs], [libnfs >= 1.10.0], (support nfs protocol via libnfs), [auto])
1839 dnl  Video4Linux 2
1841 AC_ARG_ENABLE(v4l2, [AS_HELP_STRING([--disable-v4l2],
1842   [disable Video4Linux version 2 (default auto)])])
1843 have_v4l2="no"
1844 AS_IF([test "$enable_v4l2" != "no"], [
1845   AC_CHECK_HEADERS([linux/videodev2.h sys/videoio.h], [
1846     have_v4l2="yes"
1847   ])
1849 AM_CONDITIONAL(HAVE_V4L2, [test "${have_v4l2}" != "no"])
1852 dnl special access module for Blackmagic SDI cards
1854 AC_ARG_ENABLE(decklink,
1855   [AS_HELP_STRING([--disable-decklink],
1856     [disable Blackmagic DeckLink SDI input (default auto)])])
1857 AC_ARG_WITH(decklink_sdk,
1858   [AS_HELP_STRING[--with-decklink-sdk=DIR],
1859     [                        location of Blackmagic DeckLink SDI SDK])])
1860 have_decklink=no
1861 if test "${enable_decklink}" != "no"
1862 then
1863   if test "${with_decklink_sdk}" != "no" -a -n "${with_decklink_sdk}"
1864   then
1865     VLC_ADD_CPPFLAGS([decklink decklinkoutput],[-I${with_decklink_sdk}/include])
1866   fi
1867   VLC_SAVE_FLAGS
1868   CPPFLAGS="${CPPFLAGS} ${CPPFLAGS_decklink}"
1869   AC_LANG_PUSH(C++)
1870   AC_CHECK_HEADERS(DeckLinkAPIDispatch.cpp, [
1871       have_decklink=yes
1872   ], [
1873       AC_MSG_WARN(Blackmagic DeckLink SDI include files not found, decklink disabled)
1874   ])
1875   AC_LANG_POP(C++)
1876   VLC_RESTORE_FLAGS
1878 AM_CONDITIONAL(HAVE_DECKLINK, [ test "${have_decklink}" != "no" ])
1882 dnl  Built-in CD-DA and VCD module
1884 AC_ARG_ENABLE(vcd,
1885   [AS_HELP_STRING([--disable-vcd],
1886     [disable built-in VCD and CD-DA support (default enabled)])])
1888 AC_ARG_ENABLE(libcddb,
1889   [AS_HELP_STRING([--disable-libcddb],
1890     [disable CDDB for Audio CD (default enabled)])])
1892 if test "${enable_vcd}" != "no"
1893 then
1894   AC_MSG_CHECKING(for cdrom_msf0 in linux/cdrom.h)
1895   AC_EGREP_HEADER(cdrom_msf0,linux/cdrom.h,[
1896     AC_MSG_RESULT(yes)
1897     VLC_ADD_PLUGIN([vcd cdda])
1898   ],[
1899     AC_MSG_RESULT(no)
1900   ])
1902   AC_MSG_CHECKING(for scsireq in sys/scsiio.h)
1903   AC_EGREP_HEADER(scsireq,sys/scsiio.h,[
1904     AC_MSG_RESULT(yes)
1905     VLC_ADD_PLUGIN([vcd cdda])
1906     AC_DEFINE(HAVE_SCSIREQ_IN_SYS_SCSIIO_H, 1, For NetBSD VCD support)
1907   ],[
1908     AC_MSG_RESULT(no)
1909   ])
1911   AC_MSG_CHECKING(for ioc_toc_header in sys/cdio.h)
1912   AC_EGREP_HEADER(ioc_toc_header ,sys/cdio.h,[
1913     AC_MSG_RESULT(yes)
1914     VLC_ADD_PLUGIN([vcd cdda])
1915     AC_DEFINE(HAVE_IOC_TOC_HEADER_IN_SYS_CDIO_H, 1, For FreeBSD VCD support)
1916   ],[
1917     AC_MSG_RESULT(no)
1918   ])
1920   if test "${SYS}" = "bsdi" -o "${SYS}" = "mingw32" -o "${SYS}" = "os2" -o "${SYS}" = "darwin"
1921   then
1922     VLC_ADD_PLUGIN([vcd cdda])
1923   fi
1925   if test "$enable_libcddb" != "no"; then
1926     PKG_CHECK_MODULES(LIBCDDB, [libcddb >= 0.9.5], [
1927       HAVE_LIBCDDB=yes
1928       AC_DEFINE(HAVE_LIBCDDB, 1, [Define this if you have libcddb installed])
1929       VLC_ADD_LIBS([cdda],[$LIBCDDB_LIBS])
1930       VLC_ADD_CFLAGS([cdda],[$LIBCDDB_CFLAGS])
1931       ],:
1932       [AC_MSG_WARN([${LIBCDDB_PKG_ERRORS}: CDDB access disabled.])
1933       HAVE_LIBCDDB=no])
1934   fi
1938 dnl Linux DVB
1940 AC_CACHE_CHECK([for Linux DVB version 5.1], [ac_cv_linux_dvb_5_1], [
1941   AC_PREPROC_IFELSE([AC_LANG_PROGRAM([
1942 [#include <linux/dvb/version.h>
1943 #if (DVB_API_VERSION < 5)
1944 # error Linux DVB API v3.2 and older are not supported.
1945 #endif
1946 #if (DVB_API_VERSION == 5 && DVB_API_VERSION_MINOR < 1)
1947 # error Linux DVB API v5.0 is unsupported. Please update.
1948 #endif
1949 ]])], [
1950   ac_cv_linux_dvb_5_1=yes
1951 ], [
1952   ac_cv_linux_dvb_5_1=no
1953 ])])
1954 AM_CONDITIONAL([HAVE_LINUX_DVB], [test "$ac_cv_linux_dvb_5_1" = "yes"])
1957 dnl  Screen capture module
1959 AC_ARG_ENABLE(screen,
1960   [AS_HELP_STRING([--enable-screen],
1961     [disable screen capture (default enabled)])])
1962 if test "${enable_screen}" != "no"; then
1963   if test "${SYS}" = "darwin"; then
1964     AC_CHECK_HEADERS(ApplicationServices/ApplicationServices.h, [
1965       VLC_ADD_PLUGIN([screen])
1966     ])
1967   fi
1969 AM_CONDITIONAL(HAVE_MAC_SCREEN, [test "${SYS}" = "darwin" -a "x${enable_screen}" != "xno"])
1972 dnl  VNC/RFB access module
1974 PKG_ENABLE_MODULES_VLC([VNC], [vnc], [libvncclient >= 0.9.9], (VNC/rfb client support), [auto])
1976 dnl  RDP/Remote Desktop access module
1978 PKG_ENABLE_MODULES_VLC([FREERDP], [rdp], [freerdp >= 1.0.1], (RDP/Remote Desktop client support) )
1981 dnl  Real RTSP plugin
1983 AC_ARG_ENABLE(realrtsp,
1984   [  --enable-realrtsp       Real RTSP module (default disabled)])
1985 if test "${enable_realrtsp}" = "yes"; then
1986   VLC_ADD_PLUGIN([access_realrtsp])
1990 dnl QTKit
1991 AC_ARG_ENABLE(macosx-qtkit,
1992   [  --enable-macosx-qtkit Mac OS X qtsound (audio) module (default enabled on Mac OS X <= v10.11)])
1993 if test "x${enable_macosx_qtkit}" != "xno" &&
1994   (test "${SYS}" = "darwin" || test "${enable_macosx_qtkit}" = "yes")
1995 then
1996   AC_CHECK_HEADERS(QTKit/QTKit.h, [
1997       VLC_ADD_PLUGIN([qtsound])
1998     ])
2002 dnl AVFoundation
2003 AC_SUBST(have_avfoundation, ["no"])
2004 AC_ARG_ENABLE(macosx-avfoundation,
2005   [  --enable-macosx-avfoundation Mac OS X avcapture (video) module (default enabled on Mac OS X)])
2006 if test "x${enable_macosx_avfoundation}" != "xno" &&
2007   (test "${SYS}" = "darwin" || test "${enable_macosx_avfoundation}" = "yes")
2008 then
2009   SAVED_LIBS="${LIBS}"
2010   LIBS="-framework AVFoundation"
2011   AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [])],[have_avfoundation=yes],[have_avfoundation=no])
2012   LIBS="${SAVED_LIBS}"
2013   if test "${have_avfoundation}" != "no"
2014   then
2015     VLC_ADD_PLUGIN([avcapture])
2016   fi
2018 AM_CONDITIONAL(HAVE_AVFOUNDATION, [test "${have_avfoundation}" != "no"])
2021 dnl  DCP plugin (using asdcplib)
2023 PKG_WITH_MODULES([ASDCP], [asdcplib], [have_asdcp="yes"])
2024 AM_CONDITIONAL(HAVE_ASDCP, [test "${have_asdcp}" = "yes"])
2027 dnl  Demux plugins
2030 EXTEND_HELP_STRING([Mux/Demux plugins:])
2033 dnl  libdvbpsi check for ts mux/demux
2035 have_dvbpsi="no"
2036 PKG_WITH_MODULES([DVBPSI], [libdvbpsi >= 1.2.0], [have_dvbpsi="yes"])
2037 AM_CONDITIONAL(HAVE_DVBPSI, [test "${have_dvbpsi}" = "yes"])
2041 dnl  GME demux plugin
2043 AC_ARG_ENABLE(gme,
2044   [AS_HELP_STRING([--enable-gme],
2045     [use Game Music Emu (default auto)])])
2046 AS_IF([test "${enable_gme}" != "no"], [
2047   AC_CHECK_HEADER([gme/gme.h], [
2048     AC_CHECK_LIB([gme], [gme_identify_header], [
2049       VLC_ADD_PLUGIN([gme])
2050     ], [
2051       AC_CHECK_LIB([gme], [gme_identify_extension], [
2052          VLC_ADD_LIBS([gme], [-lstdc++ $LIBM])
2053          VLC_ADD_PLUGIN([gme])
2054       ],, [-lstdc++ $LIBM])
2055     ])
2056     VLC_ADD_LIBS([gme], [-lgme])
2057   ], [
2058     AS_IF([test "x${enable_gme}" != "x"], [
2059       AC_MSG_ERROR([GME cannot be found. Please install the development files.])
2060     ])
2061   ])
2066 dnl  SIDPlay plugin
2068 AC_ARG_ENABLE(sid,
2069     [AS_HELP_STRING([--enable-sid],[C64 sid demux support (default auto)])])
2070 AS_IF([test "${enable_sid}" != "no"], [
2071     PKG_CHECK_MODULES(SID, [libsidplay2], [
2072         AC_LANG_PUSH(C++)
2073         oldCPPFLAGS="$CPPFLAGS"
2074         CPPFLAGS="$CPPFLAGS $SID_CFLAGS"
2075         AC_CHECK_HEADER([sidplay/builders/resid.h], [
2076             VLC_ADD_PLUGIN([sid])
2077             VLC_ADD_CFLAGS([sid], [$SID_CFLAGS])
2078             VLC_ADD_LIBS([sid], [$SID_LIBS] [-lresid-builder])
2079         ], [
2080             AS_IF([test -n "${enable_sid}"],
2081                 [AC_MSG_ERROR([${SID_PKG_ERRORS} (required for sid).])],
2082                 [AC_MSG_WARN([${SID_PKG_ERRORS} (required for sid).])]
2083                 )
2084         ])
2085         CPPFLAGS="$oldCPPFLAGS"
2086         AC_LANG_POP(C++)
2087     ], [
2088         AS_IF([test "x${enable_sid}" = "xyes"],
2089             [AC_MSG_ERROR([${SID_PKG_ERRORS} (required for sid).])],
2090             [AC_MSG_WARN([${SID_PKG_ERRORS} (required for sid).])]
2091             )
2092     ])
2097 dnl  ogg demux plugin
2099 PKG_ENABLE_MODULES_VLC([OGG], [mux_ogg], [ogg >= 1.0], [Ogg demux support], [auto])
2100 PKG_CHECK_MODULES(LIBVORBIS, [vorbis >= 1.1], [
2101     AC_DEFINE(HAVE_LIBVORBIS, 1, [Define to 1 if you have the libvorbis])
2102 ],[true])
2103 PKG_ENABLE_MODULES_VLC([OGG], [], [ogg >= 1.0], [Ogg demux support], [auto], [${LIBVORBIS_CFLAGS}], [${LIBVORBIS_LIBS}])
2104 if test "${enable_sout}" != "no"; then
2105 dnl Check for libshout
2106     PKG_ENABLE_MODULES_VLC([SHOUT], [access_output_shout], [shout >= 2.1], [libshout output plugin], [auto])
2110 dnl  matroska demux plugin
2112 PKG_ENABLE_MODULES_VLC([MATROSKA], [mkv], [libebml libmatroska], [MKV format support], [auto])
2115 dnl  modplug demux plugin
2117 AC_ARG_ENABLE(mod,
2118   [AS_HELP_STRING([--disable-mod],
2119     [do not use libmodplug (default auto)])])
2120 if test "${enable_mod}" != "no" ; then
2121     PKG_CHECK_MODULES(LIBMODPLUG, [libmodplug >= 0.8.4 libmodplug != 0.8.8], [
2122           VLC_ADD_PLUGIN([mod])
2123           VLC_ADD_CXXFLAGS([mod],[$LIBMODPLUG_CFLAGS])
2124           VLC_ADD_CFLAGS([mod],[$LIBMODPLUG_CFLAGS]) #modules/demux/mod.c needs CFLAGS_mod, not CXXFLAGS_mod
2125           VLC_ADD_LIBS([mod],[$LIBMODPLUG_LIBS])
2126     ],[
2127        AS_IF([test -n "${enable_mod}"],
2128          [AC_MSG_ERROR([${LIBMODPLUG_PKG_ERRORS}.])],
2129          [AC_MSG_WARN([${LIBMODPLUG_PKG_ERRORS}.])])
2130     ])
2134 dnl  mpc demux plugin
2136 AC_ARG_ENABLE(mpc,
2137   [AS_HELP_STRING([--disable-mpc], [do not use libmpcdec (default auto)])])
2138 if test "${enable_mpc}" != "no"
2139 then
2140   AC_CHECK_HEADERS([mpc/mpcdec.h], [
2141     VLC_ADD_PLUGIN([mpc])
2142     VLC_ADD_LIBS([mpc],[-lmpcdec])],
2143     [AC_CHECK_HEADERS([mpcdec/mpcdec.h], [
2144     VLC_ADD_PLUGIN([mpc])
2145     VLC_ADD_LIBS([mpc],[-lmpcdec])])])
2149 dnl  Codec plugins
2152 EXTEND_HELP_STRING([Codec plugins:])
2155 dnl wmafixed plugin
2157 AC_ARG_ENABLE(wma-fixed,
2158   [  --enable-wma-fixed      libwma-fixed module (default disabled)])
2159 if test "${enable_wma_fixed}" = "yes"
2160 then
2161   VLC_ADD_PLUGIN([wma_fixed])
2165 dnl shine encoder plugin
2167 PKG_ENABLE_MODULES_VLC([SHINE], [], [shine >= 3.0.0], [MPEG Audio Layer 3 encoder], [auto], [], [], [])
2171 dnl openmax il codec plugin
2173 AC_ARG_ENABLE(omxil,
2174   [  --enable-omxil          openmax il codec module (default disabled)])
2175 if test "${enable_omxil}" = "yes"
2176 then
2177   VLC_ADD_PLUGIN([omxil])
2181 dnl openmax il vout plugin
2183 AC_ARG_ENABLE(omxil-vout,
2184   [  --enable-omxil-vout     openmax il video output module (default disabled)])
2185 if test "${enable_omxil_vout}" = "yes"
2186 then
2187   VLC_ADD_PLUGIN([omxil_vout])
2191 dnl raspberry pi openmax il configuration
2193 AC_ARG_ENABLE(rpi-omxil,
2194   [  --enable-rpi-omxil     openmax il configured for raspberry pi (default disabled)])
2195 if test "${enable_rpi_omxil}" = "yes"
2196 then
2197   VLC_ADD_PLUGIN([omxil omxil_vout])
2198   VLC_ADD_CFLAGS([omxil omxil_vout],[-DRPI_OMX])
2202 dnl CrystalHD codec plugin
2204 AC_ARG_ENABLE(crystalhd,
2205   [  --enable-crystalhd      crystalhd codec plugin (default auto)])
2206 if test "${enable_crystalhd}" != "no"; then
2207     AC_CHECK_HEADER(libcrystalhd/libcrystalhd_if.h, [
2208       VLC_ADD_PLUGIN([crystalhd])
2209       VLC_ADD_LIBS([crystalhd], [-lcrystalhd])
2210     ],[
2211       if test "${SYS}" = "mingw32" ; then
2212         AC_CHECK_HEADERS(libcrystalhd/bc_dts_defs.h, [
2213           VLC_ADD_PLUGIN([crystalhd])
2214           AC_CHECK_HEADERS(libcrystalhd/bc_drv_if.h, [
2215             VLC_ADD_LIBS([crystalhd], [-lbcmDIL])
2216             ])
2217         ],[
2218           AS_IF([test x"${enable_crystalhd}" = "xyes"],
2219                 [AC_MSG_ERROR("Could not find CrystalHD development headers")],
2220                 [AC_MSG_WARN("Could not find CrystalHD development headers")])
2221         ],[#define __LINUX_USER__
2222                #include <libcrystalhd/bc_dts_types.h>
2223         ])
2224       fi
2225     ],[
2226        #include <libcrystalhd/bc_dts_types.h>
2227       ])
2231 dnl  mad plugin
2233 have_mad="no"
2234 MAD_CFLAGS=""
2235 MAD_LIBS=""
2237 AC_ARG_WITH(mad, [  --with-mad=PATH         path to libmad], [
2238   enable_mad="yes"
2239 ], [
2240   with_mad="no"
2242 AS_IF([test "${with_mad}" != "no"], [
2243   MAD_CFLAGS="-I${with_mad}/include"
2244   MAD_LIBS="-L${with_mad}/lib"
2247 AC_ARG_ENABLE(mad,
2248   [  --enable-mad            libmad module (default enabled)])
2249 AS_IF([test "${enable_mad}" != "no"], [
2250   VLC_SAVE_FLAGS
2251   CPPFLAGS="${CPPFLAGS} ${MAD_CFLAGS}"
2252   LDFLAGS="${LDFLAGS} ${MAD_LIBS}"
2253   AC_CHECK_HEADERS(mad.h, [
2254     AC_CHECK_LIB(mad, mad_bit_init, [
2255       have_mad="yes"
2256       MAD_LIBS="${MAD_LIBS} -lmad"
2257     ])
2258   ])
2259   VLC_RESTORE_FLAGS
2260   AS_IF([test -n "$enable_mad" -a "${have_mad}" = "no"], [
2261     AC_MSG_ERROR([Could not find libmad. Install it or pass --disable-mad to disable it.])
2262   ])
2264 AC_SUBST(MAD_CFLAGS)
2265 AC_SUBST(MAD_LIBS)
2266 AM_CONDITIONAL([HAVE_MAD], [test "${have_mad}" = "yes"])
2268 dnl  mpg123 plugin
2271 PKG_ENABLE_MODULES_VLC([MPG123], [mpg123], [libmpg123], [libmpg123 decoder support], [auto])
2274 dnl gstreamer stuff
2276 AC_ARG_ENABLE(gst-decode,
2277   [  --enable-gst-decode     GStreamer based decoding support (currently supports only video decoding) (default auto)])
2279 have_gst_decode="no"
2280 AS_IF([test "${enable_gst_decode}" != "no"], [
2281   PKG_CHECK_MODULES([GST_APP], [gstreamer-app-1.0], [
2282     PKG_CHECK_MODULES([GST_VIDEO], [gstreamer-video-1.0], [
2283       have_gst_decode="yes"
2284     ], [
2285       AC_MSG_WARN([${GST_VIDEO_PKG_ERRORS}. GStreamer decoder module will not be built.])
2286     ])
2287   ], [
2288     AC_MSG_WARN([${GST_APP_PKG_ERRORS}. GStreamer modules will not be built.])
2289   ])
2291 AM_CONDITIONAL([HAVE_GST_DECODE], [test "${have_gst_decode}" = "yes"])
2294 dnl  avcodec decoder/encoder plugin
2296 AC_ARG_ENABLE(merge-ffmpeg,
2297 [  --enable-merge-ffmpeg   merge FFmpeg-based plugins (default disabled)],, [
2298   enable_merge_ffmpeg="no"
2300 AM_CONDITIONAL([MERGE_FFMPEG], [test "$enable_merge_ffmpeg" != "no"])
2302 AC_MSG_CHECKING([for libavutil variant])
2303 PKG_CHECK_EXISTS([libavutil], [
2304   libavutil_version="$(${PKG_CONFIG} --modversion libavutil)"
2305   libavutil_micro="${libavutil_version##*.}"
2306   AS_IF([test ${libavutil_micro} -le 99], [
2307     avfork="libav"
2308   ], [
2309     avfork="ffmpeg"
2310   ])
2311 ], [
2312   avfork="none"
2314 AC_MSG_RESULT([${avfork}])
2316 AC_ARG_ENABLE(avcodec,
2317 [  --enable-avcodec        libavcodec codec (default enabled)])
2318 AS_IF([test "${enable_avcodec}" != "no"], [
2319   dnl We need >=57.16.0 from libav or >=57.37.100 from ffmpeg
2320   case "${avfork}" in
2321     libav) av_codec_ver="57.16.0" ;;
2322     ffmpeg) av_codec_ver="57.37.100" ;;
2323     *) AC_MSG_ERROR([Missing libav or FFmpeg. Pass --disable-avcodec to ignore this error.])
2324   esac
2325   PKG_CHECK_MODULES(AVCODEC,[libavcodec >= ${av_codec_ver} libavutil >= 52.0.0], [
2326     VLC_SAVE_FLAGS
2327     CPPFLAGS="${CPPFLAGS} ${AVCODEC_CFLAGS}"
2328     CFLAGS="${CFLAGS} ${AVCODEC_CFLAGS}"
2329     AC_CHECK_HEADERS(libavcodec/avcodec.h)
2330     AC_CHECK_HEADERS(libavutil/avutil.h)
2331     VLC_RESTORE_FLAGS
2332     have_avcodec="yes"
2333   ],[
2334     AC_MSG_ERROR([${AVCODEC_PKG_ERRORS}. Pass --disable-avcodec to ignore this error.])
2335   ])
2336 ], [
2337   have_avcodec="no"
2339 AM_CONDITIONAL([HAVE_AVCODEC], [test "${have_avcodec}" != "no"])
2342 dnl libva needs avcodec
2344 AC_ARG_ENABLE(libva,
2345   [  --enable-libva          VAAPI GPU decoding support (libVA) (default auto)])
2347 AS_IF([test "${enable_libva}" = "yes" -a "${have_avcodec}" != "yes" ], [
2348   AC_MSG_ERROR([--enable-libva and --disable-avcodec options are mutually exclusive. Use --enable-avcodec.])
2351 have_vaapi="no"
2352 have_vaapi_drm="no"
2353 have_vaapi_x11="no"
2354 have_vaapi_wl="no"
2355 AS_IF([test "${enable_libva}" != "no"], [
2356   PKG_CHECK_MODULES([LIBVA], [libva >= 0.38], [
2357     have_vaapi="yes"
2358   ], [
2359     AS_IF([test -n "${enable_libva}"], [
2360       AC_MSG_ERROR([${LIBVA_PKG_ERRORS}.])
2361     ], [
2362       AC_MSG_WARN([${LIBVA_PKG_ERRORS}.])
2363     ])
2364   ])
2365   PKG_CHECK_MODULES([LIBVA_DRM], [libva-drm], [
2366     have_vaapi_drm="yes"
2367   ], [
2368     AC_MSG_WARN([${LIBVA_DRM_PKG_ERRORS}.])
2369   ])
2370   PKG_CHECK_MODULES(LIBVA_X11, [libva-x11], [
2371     have_vaapi_x11="yes"
2372   ], [
2373     AC_MSG_WARN([${LIBVA_X11_PKG_ERRORS}.])
2374   ])
2375   PKG_CHECK_MODULES(LIBVA_WL, [libva-wayland], [
2376     have_vaapi_wl="yes"
2377   ], [
2378     AC_MSG_WARN([${LIBVA_WL_PKG_ERRORS}.])
2379   ])
2381 AM_CONDITIONAL([HAVE_VAAPI], [test "${have_vaapi}" = "yes"])
2382 AM_CONDITIONAL([HAVE_VAAPI_DRM], [test "${have_vaapi_drm}" = "yes"])
2383 AM_CONDITIONAL([HAVE_VAAPI_X11], [test "${have_vaapi_x11}" = "yes"])
2384 AM_CONDITIONAL([HAVE_VAAPI_WL], [test "${have_vaapi_wl}" = "yes"])
2386 have_avcodec_vaapi="no"
2387 AS_IF([test "${have_vaapi}" = "yes" -a "${have_avcodec}" = "yes"], [
2388   VLC_SAVE_FLAGS
2389   CPPFLAGS="${CPPFLAGS} ${AVCODEC_CFLAGS}"
2390   CFLAGS="${CFLAGS} ${AVCODEC_CFLAGS}"
2391   AC_CHECK_HEADERS([libavcodec/vaapi.h], [
2392     AC_MSG_NOTICE([VA API acceleration activated])
2393     have_avcodec_vaapi="yes"
2394   ],[
2395     AS_IF([test -n "${enable_libva}"], [
2396       AC_MSG_ERROR([libva is present but libavcodec/vaapi.h is missing])
2397     ], [
2398       AC_MSG_WARN([libva is present but libavcodec/vaapi.h is missing ])
2399     ])
2400   ])
2401   VLC_RESTORE_FLAGS
2403 AM_CONDITIONAL([HAVE_AVCODEC_VAAPI], [test "${have_avcodec_vaapi}" = "yes"])
2406 dnl dxva2 needs avcodec
2408 AC_ARG_ENABLE(dxva2,
2409   [  --enable-dxva2          DxVA2 GPU decoding support (default auto)])
2411 have_avcodec_dxva2="no"
2412 AS_IF([test "${enable_dxva2}" != "no"], [
2413   if test "${SYS}" = "mingw32"; then
2414   AS_IF([test "x${have_avcodec}" = "xyes"], [
2415     AC_CHECK_HEADERS(dxva2api.h,
2416       [
2417         AC_CHECK_HEADERS(libavcodec/dxva2.h, [
2418            AC_MSG_NOTICE([DxVA2 acceleration activated])
2419            have_avcodec_dxva2="yes"
2420         ],[
2421     AS_IF([test "${enable_dxva2}" = "yes"],
2422           [AC_MSG_ERROR([dxva2 is present but libavcodec/dxva2.h is missing])],
2423               [AC_MSG_WARN([dxva2 is present but libavcodec/dxva2.h is missing ])])
2424         ], [#undef _WIN32_WINNT
2425             /* DXVA2 is only available in Vista and above */
2426             #define _WIN32_WINNT 0x600])
2427       ],[
2428     AS_IF([test "${enable_dxva2}" = "yes"],
2429               [AC_MSG_ERROR([Could not find required dxva2api.h])],
2430               [AC_MSG_WARN([dxva2api.h not found])])
2431       ],[#include <d3d9.h>])
2432   ],[
2433     AS_IF([test "x${enable_dxva2}" != "x"], [
2434       AC_MSG_ERROR([--enable-dxva2 and --disable-avcodec options are mutually exclusive.])
2435     ])
2436   ])
2437   fi
2439 AM_CONDITIONAL([HAVE_AVCODEC_DXVA2], [test "${have_avcodec_dxva2}" = "yes"])
2442 dnl d3d11va needs avcodec
2444 AC_ARG_ENABLE(d3d11va,
2445   [  --enable-d3d11va          D3D11 GPU decoding support (default auto)])
2447 have_avcodec_d3d11va="no"
2448 AS_IF([test "${enable_d3d11va}" != "no"], [
2449   if test "${SYS}" = "mingw32"; then
2450   AS_IF([test "x${have_avcodec}" = "xyes"], [
2451         AC_CHECK_TYPES([ID3D11VideoDecoder],
2452           [
2453             AC_CHECK_HEADERS(dxva2api.h,
2454               [
2455                 AC_CHECK_HEADERS(libavcodec/d3d11va.h, [
2456                    AC_MSG_NOTICE([D3D11 acceleration activated])
2457                    AC_DEFINE(HAVE_AVCODEC_D3D11VA, 1, [Define if the d3d11va module is built])
2458                    have_avcodec_d3d11va="yes"
2459                 ],[
2460                   AS_IF([test "${enable_d3d11va}" = "yes"],
2461                     [AC_MSG_ERROR([d3d11va is present but libavcodec/d3d11va.h is missing])],
2462                         [AC_MSG_WARN([d3d11va is present but libavcodec/d3d11va.h is missing ])])
2463                   ], [#undef _WIN32_WINNT
2464                       /* D3D11 is only available in Vista and above */
2465                       #define _WIN32_WINNT 0x600])
2466                   ],[
2467                     AS_IF([test "${enable_d3d11va}" = "yes"],
2468                           [AC_MSG_ERROR([Could not find required dxva2api.h])],
2469                           [AC_MSG_WARN([dxva2api.h not found])])
2470                   ],[#include <d3d9.h>])
2471           ],[
2472             AS_IF([test "${enable_d3d11va}" = "yes"],
2473                   [AC_MSG_ERROR([Could not find required ID3D11VideoDecoder in d3d11.h])],
2474                   [AC_MSG_WARN([ID3D11VideoDecoder not found])])
2475           ], [#include <d3d11.h>])
2476   ],[
2477     AS_IF([test "x${enable_d3d11va}" != "x"], [
2478       AC_MSG_ERROR([--enable-d3d11va and --disable-avcodec options are mutually exclusive.])
2479     ])
2480   ])
2481   fi
2483 AM_CONDITIONAL([HAVE_AVCODEC_D3D11VA], [test "${have_avcodec_d3d11va}" = "yes"])
2486 dnl DXGI debug
2488 AC_CHECK_HEADERS(dxgidebug.h dxgi1_6.h)
2491 dnl  avformat demuxer/muxer plugin
2494 AC_ARG_ENABLE(avformat,
2495 [  --enable-avformat       libavformat containers (default enabled)],, [
2496   enable_avformat="${have_avcodec}"
2498 have_avformat="no"
2499 AS_IF([test "${enable_avformat}" != "no"], [
2500   PKG_CHECK_MODULES(AVFORMAT,[libavformat >= 53.21.0 libavcodec libavutil], [
2501       have_avformat="yes"
2502       VLC_SAVE_FLAGS
2503       CPPFLAGS="${CPPFLAGS} ${AVFORMAT_CFLAGS}"
2504       CFLAGS="${CFLAGS} ${AVFORMAT_CFLAGS}"
2505       AC_CHECK_HEADERS(libavformat/avformat.h libavformat/avio.h)
2506       AC_CHECK_HEADERS(libavcodec/avcodec.h)
2507       AC_CHECK_HEADERS(libavutil/avutil.h)
2508       AS_IF([test "$enable_merge_ffmpeg" = "no"], [
2509         have_avformat="no"
2510       ])
2511       VLC_RESTORE_FLAGS
2512     ],[
2513       AC_MSG_ERROR([${AVFORMAT_PKG_ERRORS}. Pass --disable-avformat to ignore this error.])
2514   ])
2516 AM_CONDITIONAL([HAVE_AVFORMAT], [test "${enable_avformat}" != "no"])
2519 dnl  swscale image scaling and conversion plugin
2522 AC_ARG_ENABLE(swscale,
2523   AS_HELP_STRING([--enable-swscale],[libswscale image scaling and conversion
2524           (default enabled)]))
2525 if test "${enable_swscale}" != "no"
2526 then
2527   PKG_CHECK_MODULES(SWSCALE,[libswscale],
2528     [
2529       VLC_SAVE_FLAGS
2530       CPPFLAGS="${CPPFLAGS} ${SWSCALE_CFLAGS}"
2531       CFLAGS="${CFLAGS} ${SWSCALE_CFLAGS}"
2532       AC_CHECK_HEADERS(libswscale/swscale.h)
2533       AC_CHECK_HEADERS(libavutil/avutil.h)
2534       VLC_ADD_PLUGIN([swscale])
2535       VLC_ADD_LIBS([swscale],[$SWSCALE_LIBS])
2536       VLC_ADD_CFLAGS([swscale],[$SWSCALE_CFLAGS])
2537       AS_IF([test -n "${ac_cv_ld_bsymbolic}"], [
2538         VLC_ADD_LIBS([swscale],[${ac_cv_ld_bsymbolic}])
2539       ])
2540       VLC_RESTORE_FLAGS
2541     ],[
2542       AC_MSG_ERROR([${SWSCALE_PKG_ERRORS}. Pass --disable-swscale to ignore this error. Proper software scaling and some video chroma conversion will be missing.])
2543   ])
2547 dnl  postproc plugin
2550 AC_ARG_ENABLE(postproc,
2551 [  --enable-postproc       libpostproc image post-processing (default auto)])
2552 if test "${enable_postproc}" != "no"
2553 then
2554   PKG_CHECK_MODULES(POSTPROC,[libpostproc libavutil],
2555     [
2556       VLC_SAVE_FLAGS
2557       CPPFLAGS="${CPPFLAGS} ${POSTPROC_CFLAGS}"
2558       CFLAGS="${CFLAGS} ${POSTPROC_CFLAGS}"
2559       AC_CHECK_HEADERS(postproc/postprocess.h)
2560       VLC_ADD_PLUGIN([postproc])
2561       VLC_RESTORE_FLAGS
2562     ],[
2563       AC_MSG_WARN([${POSTPROC_PKG_ERRORS}.])
2564   ])
2568 dnl  faad decoder plugin
2570 AC_ARG_ENABLE(faad,
2571 [  --enable-faad           faad codec (default auto)])
2572 have_faad="no"
2573 AS_IF([test "${enable_faad}" != "no"], [
2574   AC_CHECK_HEADERS([neaacdec.h], [
2575     AC_CHECK_LIB(faad, NeAACDecOpen, [have_faad="yes"],, [$LIBM])
2577     AS_IF([test "${have_faad}" = "yes"], [
2578       VLC_ADD_PLUGIN([faad])
2579       VLC_ADD_LIBS([faad],[-lfaad])
2580     ], [
2581       AS_IF([test "${enable_faad}" = "yes"], [
2582         AC_MSG_ERROR([cannot find FAAD library])
2583       ], [
2584         AC_MSG_WARN([cannot find FAAD library])
2585       ])
2586     ])
2587   ])
2591 dnl  AOM decoder plugin
2593 PKG_ENABLE_MODULES_VLC([AOM], [], [aom], [experimental AV1 codec], [disabled])
2596 dnl libvpx decoder plugin
2598 AC_ARG_ENABLE(vpx,
2599     AS_HELP_STRING([--enable-vpx],[libvpx VP8/VP9 encoder and decoder (default auto)]))
2600 AS_IF([test "${enable_vpx}" != "no"],[
2601     PKG_CHECK_MODULES([VPX], [vpx >= 1.5.0], [
2602         VLC_ADD_PLUGIN([vpx])
2603         VLC_ADD_CPPFLAGS([vpx], [${VPX_CFLAGS}])
2604         VLC_ADD_LIBS([vpx], [${VPX_LIBS}])
2605         AC_CHECK_LIB([vpx],[vpx_codec_vp8_dx], [
2606             VLC_ADD_CPPFLAGS([vpx], [-DENABLE_VP8_DECODER])
2607         ], [], [${VPX_LIBS}])
2608         AC_CHECK_LIB([vpx],[vpx_codec_vp9_dx], [
2609             VLC_ADD_CPPFLAGS([vpx], [-DENABLE_VP9_DECODER])
2610         ], [], [${VPX_LIBS}])
2611         AC_CHECK_LIB([vpx],[vpx_codec_vp8_cx], [
2612             VLC_ADD_CPPFLAGS([vpx], [-DENABLE_VP8_ENCODER])
2613         ], [], [${VPX_LIBS}])
2614         AC_CHECK_LIB([vpx],[vpx_codec_vp9_cx], [
2615             VLC_ADD_CPPFLAGS([vpx], [-DENABLE_VP9_ENCODER])
2616         ], [], [${VPX_LIBS}])
2617     ], [
2618     AS_IF([test "${enable_vpx}" = "yes"],[
2619         AC_MSG_ERROR([libvpx 1.5.0 or higher was not found])
2620     ])])
2624 dnl twolame encoder plugin
2626 PKG_ENABLE_MODULES_VLC([TWOLAME], [], [twolame], [MPEG Audio Layer 2 encoder], [auto], [], [], [ -DLIBTWOLAME_STATIC])
2629 dnl fdk-aac encoder plugin
2631 PKG_ENABLE_MODULES_VLC([FDKAAC], [], [fdk-aac], [FDK-AAC encoder], [disabled])
2635 dnl A52/AC3 decoder plugin
2637 AC_ARG_ENABLE(a52,
2638   [  --enable-a52            A/52 support with liba52 (default enabled)])
2639 if test "${enable_a52}" != "no"
2640 then
2641   AC_ARG_WITH(a52,
2642     [  --with-a52=PATH         a52 headers and libraries])
2643     if test -z "${with_a52}"
2644     then
2645       LDFLAGS_test=""
2646       CPPFLAGS_test=""
2647     else
2648       LDFLAGS_test="-L${with_a52}/lib"
2649       CPPFLAGS_test="-I${with_a52}/include"
2650     fi
2651     VLC_SAVE_FLAGS
2652     CPPFLAGS="${CPPFLAGS} ${CPPFLAGS_test} ${CPPFLAGS_a52}"
2653     LDFLAGS="${LDFLAGS} ${LDFLAGS_test} ${LIBS_a52}"
2654     AC_CHECK_HEADERS(a52dec/a52.h, [
2655       AC_CHECK_LIB(a52, a52_free, [
2656         VLC_ADD_PLUGIN([a52])
2657         VLC_ADD_LIBS([a52],[${LDFLAGS_test} -la52 $LIBM])
2658         VLC_ADD_CPPFLAGS([a52],[${CPPFLAGS_test}])
2659       ],[
2660         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.])
2661         ], [$LIBM])
2662     ],[
2663       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.])
2664     ])
2665     VLC_RESTORE_FLAGS
2669 dnl DTS Coherent Acoustics decoder plugin
2671 PKG_ENABLE_MODULES_VLC([DCA], [dca], [libdca >= 0.0.5], [DTS Coherent Acoustics support with libdca], [auto])
2674 dnl  Flac plugin
2676 PKG_ENABLE_MODULES_VLC([FLAC], [], [flac], [libflac decoder/encoder support], [auto])
2679 dnl  Libmpeg2 plugin
2681 PKG_ENABLE_MODULES_VLC([LIBMPEG2], [], [libmpeg2 > 0.3.2], [libmpeg2 decoder support], [auto])
2684 dnl  Vorbis plugin
2686 PKG_ENABLE_MODULES_VLC([VORBIS], [], [ogg vorbis >= 1.1 vorbisenc >= 1.1], [Vorbis decoder and encoder], [auto])
2689 dnl  Tremor plugin
2691 AC_ARG_ENABLE(tremor,
2692   [  --enable-tremor         Tremor decoder support (default disabled)])
2693 if test "${enable_tremor}" = "yes"
2694 then
2695   AC_CHECK_HEADERS(tremor/ivorbiscodec.h, [
2696     VLC_ADD_PLUGIN([tremor])
2697    ],[])
2701 dnl  Speex plugins
2703 PKG_ENABLE_MODULES_VLC([SPEEX], [], [ogg speex >= 1.0.5], [Speex support], [auto])
2704 have_speexdsp="no"
2705 AS_IF([test "${enable_speex}" != "no"], [
2706   PKG_CHECK_MODULES([SPEEXDSP], [speexdsp], [
2707     have_speexdsp="yes"
2708   ], [
2709     AC_MSG_WARN([${SPEEXDSP_PKG_ERRORS}.])
2710   ])
2712 AM_CONDITIONAL([HAVE_SPEEXDSP], [test "$have_speexdsp" = "yes"])
2715 dnl  Opus plugin
2717 PKG_ENABLE_MODULES_VLC([OPUS], [], [ogg opus >= 1.0.3], [Opus support], [auto])
2720 dnl  Ambisonic channel mixer and binauralizer plugin
2722 PKG_ENABLE_MODULES_VLC([SPATIALAUDIO], [], [spatialaudio], [Ambisonic channel mixer and binauralizer], [auto])
2725 dnl  theora decoder plugin
2727 PKG_ENABLE_MODULES_VLC([THEORA], [], [ogg theoradec >= 1.0 theoraenc], [experimental theora codec], [auto])
2730 dnl  OggSpots decoder plugin
2732 PKG_ENABLE_MODULES_VLC([OGGSPOTS], [], [ogg], [experimental OggSpots codec], [auto])
2735 dnl  Daala decoder plugin
2737 PKG_ENABLE_MODULES_VLC([DAALA], [], [daaladec daalaenc], [experimental daala codec], [disabled])
2740 dnl  schroedinger decoder plugin (for dirac format video)
2742 PKG_ENABLE_MODULES_VLC([SCHROEDINGER], [], [schroedinger-1.0 >= 1.0.10], [dirac decoder and encoder using schroedinger], [auto])
2745 dnl  PNG decoder module
2747 AC_ARG_ENABLE(png,
2748   [  --enable-png            PNG support (default enabled)])
2749 AS_IF([test "${enable_png}" != "no"], [
2750 AC_CHECK_HEADERS(png.h, [
2751   VLC_SAVE_FLAGS
2752   LDFLAGS="${LDFLAGS} -lz $LIBM"
2753   AC_CHECK_LIB(png, png_set_alpha_mode, [
2754     VLC_ADD_PLUGIN([png])
2755   ], [], [-lz $LIBM])
2756   VLC_RESTORE_FLAGS
2757   ])
2761 dnl  JPEG decoder module
2763 AC_ARG_ENABLE(jpeg,
2764   [  --enable-jpeg           JPEG support (default enabled)])
2765 AS_IF([test "${enable_jpeg}" != "no"], [
2766 AC_CHECK_HEADERS(jpeglib.h, [
2767   VLC_ADD_PLUGIN([jpeg])
2768   ])
2772 dnl  BPG decoder module
2774 AC_ARG_ENABLE(bpg,
2775   [  --enable-bpg           BPG support (default disabled)])
2776 AS_IF([test "${enable_bpg}" != "no"], [
2777 AC_CHECK_HEADERS(libbpg.h, [
2778   VLC_ADD_PLUGIN([bpg])
2779   ])
2783 dnl H262 encoder plugin (lib262)
2785 AC_ARG_ENABLE(x262,
2786   [  --enable-x262           H262 encoding support with static libx262 (default disabled)])
2787 if test "${enable_x262}" != "no"; then
2788     PKG_CHECK_MODULES(X262, x262, [
2789         VLC_ADD_PLUGIN([x262])
2790         VLC_ADD_LDFLAGS([x262],[${X262_LIBS}])
2791         AS_IF([test -n "${ac_cv_ld_bsymbolic}"], [
2792           VLC_ADD_LIBS([x262],[${av_cv_ld_bsymbolic}])
2793         ])
2794         VLC_ADD_CFLAGS([x262],[${X262_CFLAGS}])
2795         if echo ${X262_LIBS} |grep -q 'pthreadGC2'; then
2796           VLC_ADD_CFLAGS([x262], [-DPTW32_STATIC_LIB])
2797         fi
2798     ], [
2799        if test "${enable_x262}" = "yes"; then
2800         AC_MSG_ERROR([x262 module doesn't work without staticly compiled libx262.a])
2801        fi
2802     ])
2805 dnl x265 encoder
2806 PKG_ENABLE_MODULES_VLC([X265],, [x265], [HEVC/H.265 encoder], [auto])
2809 dnl H264 encoder plugin (10-bit lib264)
2811 AC_ARG_ENABLE(x26410b,
2812   [  --enable-x26410b           H264 10-bit encoding support with static libx264 (default disabled)])
2813 if test "${enable_x26410b}" != "no"; then
2814     PKG_CHECK_MODULES(X26410B, x26410b, [
2815         VLC_ADD_PLUGIN([x26410b])
2816         VLC_ADD_LIBS([x26410b],[${X26410B_LIBS}])
2817         AS_IF([test -n "${ac_cv_ld_bsymbolic}"], [
2818           VLC_ADD_LDFLAGS([x26410b],[${ac_cv_ld_bsymbolic}])
2819         ])
2820         VLC_ADD_CFLAGS([x26410b],[${X26410B_CFLAGS}])
2821         if echo ${X26410B_LIBS} |grep -q 'pthreadGC2'; then
2822           VLC_ADD_CFLAGS([x26410b], [-DPTW32_STATIC_LIB])
2823         fi
2824     ], [
2825        if test "${enable_x26410b}" = "yes"; then
2826         AC_MSG_ERROR([x26410b module doesn't work without staticly compiled libx264.a])
2827        fi
2828     ])
2833 dnl H264 encoder plugin (using libx264)
2835 AC_ARG_ENABLE(x264,
2836   [  --enable-x264           H264 encoding support with libx264 (default enabled)])
2837 if test "${enable_x264}" != "no"; then
2838       PKG_CHECK_MODULES(X264,x264 >= 0.86, [
2839         VLC_ADD_PLUGIN([x264])
2840         VLC_ADD_LIBS([x264],[${X264_LIBS}])
2842         AS_IF([test -n "${ac_cv_ld_bsymbolic}"], [
2843           VLC_ADD_LDFLAGS([x264],[${ac_cv_ld_bsymbolic}])
2844         ])
2846         VLC_ADD_CFLAGS([x264],[${X264_CFLAGS}])
2847         if echo ${X264_LIBS} |grep -q 'pthreadGC2'; then
2848           VLC_ADD_CFLAGS([x264], [-DPTW32_STATIC_LIB])
2849         fi
2850       ],[
2851         if test "${enable_x264}" = "yes"; then
2852             AC_MSG_ERROR([${X264_PKG_ERRORS}: you may get it from http://www.videolan.org/x264.html])
2853           fi
2854       ])
2858 dnl Intel QuickSync (aka MediaSDK) H264/H262 encoder
2860 PKG_ENABLE_MODULES_VLC([MFX], [qsv], [libmfx], [Intel QuickSync MPEG4-Part10/MPEG2 (aka H.264/H.262) encoder], [auto])
2863 dnl libfluidsynth (MIDI synthetizer) plugin
2865 PKG_ENABLE_MODULES_VLC([FLUIDSYNTH], [], [fluidsynth >= 1.1.2], [MIDI synthetiser with libfluidsynth], [auto])
2866 PKG_ENABLE_MODULES_VLC([FLUIDLITE], [fluidsynth], [fluidlite], [MIDI synthetiser with libfluidsynth], [auto])
2867 AC_CHECK_HEADERS(fluidlite.h, [AC_SUBST([FLUIDSYNTH_LIBS], ${FLUIDLITE_LIBS})])
2870 dnl Teletext Modules
2871 dnl vbi decoder plugin (using libzbvi)
2872 dnl telx module
2873 dnl uncompatible
2875 AC_ARG_ENABLE(zvbi,
2876   AS_HELP_STRING([--enable-zvbi],[VBI (inc. Teletext) decoding support with
2877                   libzvbi (default enabled)]))
2878 AC_ARG_ENABLE(telx,
2879   AS_HELP_STRING([--enable-telx],[Teletext decoding module (conflicting with
2880                   zvbi) (default enabled if zvbi is absent)]))
2882 AS_IF( [test "${enable_zvbi}" != "no"],[
2883     PKG_CHECK_MODULES(ZVBI, [zvbi-0.2 >= 0.2.28],
2884         [
2885           VLC_ADD_PLUGIN([zvbi])
2886           AC_DEFINE(ZVBI_COMPILED, 1, [Define if the zvbi module is built])
2887           AS_IF( [test "${enable_telx}" = "yes"],[
2888                   AC_MSG_WARN([The zvbi and telx modules are incompatible. Using zvbi.])
2889                   ])
2890         ],[
2891           AC_MSG_WARN([${ZVBI_PKG_ERRORS}. Enabling the telx module instead.])
2892         ])
2893     ])
2894 AS_IF( [test "${enable_telx}" != "no" ],[
2895   VLC_ADD_PLUGIN([telx])
2896   ])
2899 dnl libass subtitle rendering module
2901 AC_ARG_ENABLE(libass,
2902   [  --enable-libass         Subtitle support using libass (default enabled)])
2903 AS_IF( [test "${enable_libass}" != "no"], [
2904   PKG_CHECK_MODULES(LIBASS, [libass >= 0.9.8],
2905       [
2906         VLC_ADD_PLUGIN([libass])
2908         AC_CHECK_HEADERS(fontconfig/fontconfig.h,
2909           [VLC_ADD_CPPFLAGS([libass],[-DHAVE_FONTCONFIG])
2910            VLC_ADD_LIBS([libass],[-lfontconfig])
2911        ])
2912       ],[
2913         AC_MSG_WARN([${LIBASS_PKG_ERRORS}.])
2914       ])
2915   ])
2918 dnl ARIB subtitles rendering module
2920 AC_ARG_ENABLE(aribsub,
2921   [  --enable-aribsub        ARIB Subtitles support (default enabled)])
2922 AS_IF( [test "${enable_aribsub}" != "no" ],[
2923   PKG_CHECK_MODULES(ARIBB24, [aribb24 >= 1.0.1], [
2924       have_aribb24="yes"
2925       VLC_ADD_PLUGIN([aribsub])
2926       VLC_ADD_LIBS([aribsub],[-laribb24])
2927       AC_DEFINE(HAVE_ARIBB24, 1, [Define if libaribb24 is available.])
2928     ],[
2929       AC_MSG_WARN(Library [aribb24] needed for [aribsub] was not found)
2930       have_aribb24="no"
2931   ])
2933 AM_CONDITIONAL([HAVE_ARIBB24], [test x"${have_aribb24}" = x"yes"])
2936 dnl ARIB B25
2938 PKG_ENABLE_MODULES_VLC([ARIBB25], [aribcam], [aribb25 >= 0.2.6], [ARIB STD-B25], [auto])
2941 dnl  kate decoder plugin
2943 PKG_ENABLE_MODULES_VLC([KATE], [], [kate >= 0.3.0], [kate codec], [auto])
2946 dnl  tiger rendering for kate decoder plugin
2948 AC_ARG_ENABLE(tiger,
2949 [  --enable-tiger          Tiger rendering library for Kate streams (default auto)])
2950 AS_IF([test "${enable_tiger}" != "no"], [
2951   PKG_CHECK_MODULES(TIGER,[tiger >= 0.3.1], [
2952       AC_DEFINE(HAVE_TIGER, 1, [Define if libtiger is available.])],[
2953         AS_IF([test -n "${enable_tiger}"], [
2954           AC_MSG_ERROR([${TIGER_PKG_ERRORS}.])
2955         ])
2956   ])
2961 dnl  Video plugins
2964 EXTEND_HELP_STRING([Video plugins:])
2967 dnl  OpenGL
2969 PKG_CHECK_MODULES([EGL], [egl], [
2970   have_egl="yes"
2971 ], [
2972   have_egl="no"
2974 AM_CONDITIONAL([HAVE_EGL], [test "${have_egl}" = "yes"])
2976 have_gl="no"
2977 PKG_CHECK_MODULES([GL], [gl], [
2978   have_gl="yes"
2979 ], [
2980   AC_MSG_CHECKING([for OpenGL])
2981   AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
2982 #ifdef _WIN32
2983 # include <GL/glew.h>
2984 #endif
2985 #include <GL/gl.h>
2986 ]], [
2987     [int t0 = GL_TEXTURE0;]])
2988   ], [
2989     GL_CFLAGS=""
2990     have_gl="yes"
2991     AS_IF([test "${SYS}" != "mingw32"], [
2992       GL_LIBS="-lGL"
2993     ], [
2994       GL_LIBS="-lopengl32"
2995     ])
2996   ])
2997   AC_MSG_RESULT([${have_gl}])
2999 AM_CONDITIONAL([HAVE_GL], [test "${have_gl}" = "yes"])
3001 dnl OpenGL ES 2: depends on EGL 1.1
3002 PKG_ENABLE_MODULES_VLC([GLES2], [], [glesv2], [OpenGL ES v2 support], [disabled])
3005 dnl  Xlib
3008 AC_PATH_XTRA()
3009 AC_CHECK_HEADERS(X11/Xlib.h)
3012 dnl  X C Bindings modules
3014 AC_ARG_ENABLE(xcb,
3015   [  --enable-xcb            X11 support with XCB (default enabled)],, [
3016   AS_IF([test "${SYS}" != "mingw32" -a "${SYS}" != "darwin"], [
3017     enable_xcb="yes"
3018   ], [
3019     enable_xcb="no"
3020   ])
3022 AC_ARG_ENABLE(xvideo,
3023   [  --enable-xvideo         XVideo support (default enabled)],, [
3024     enable_xvideo="$enable_xcb"
3027 have_xcb="no"
3028 have_xcb_keysyms="no"
3029 have_xcb_randr="no"
3030 have_xcb_xvideo="no"
3031 AS_IF([test "${enable_xcb}" != "no"], [
3032   dnl libxcb
3033   PKG_CHECK_MODULES(XCB, [xcb >= 1.6])
3034   have_xcb="yes"
3035   PKG_CHECK_MODULES(XCB_SHM, [xcb-shm])
3036   PKG_CHECK_MODULES(XCB_COMPOSITE, [xcb-composite])
3037   PKG_CHECK_MODULES(XPROTO, [xproto])
3039   AS_IF([test "${enable_xvideo}" != "no"], [
3040     PKG_CHECK_MODULES(XCB_XV, [xcb-xv >= 1.1.90.1], [have_xcb_xvideo="yes"])
3041   ])
3043   PKG_CHECK_MODULES(XCB_RANDR, [xcb-randr >= 1.3], [have_xcb_randr="yes"])
3045   dnl xcb-utils
3046   PKG_CHECK_MODULES(XCB_KEYSYMS, [xcb-keysyms >= 0.3.4], [have_xcb_keysyms="yes"], [
3047     AC_MSG_WARN([${XCB_KEYSYMS_PKG_ERRORS}. Hotkeys will not work.])
3048   ])
3050 AM_CONDITIONAL([HAVE_XCB], [test "${have_xcb}" = "yes"])
3051 AM_CONDITIONAL([HAVE_XCB_KEYSYMS], [test "${have_xcb_keysyms}" = "yes"])
3052 AM_CONDITIONAL([HAVE_XCB_RANDR], [test "${have_xcb_randr}" = "yes"])
3053 AM_CONDITIONAL([HAVE_XCB_XVIDEO], [test "${have_xcb_xvideo}" = "yes"])
3057 dnl VDPAU needs X11
3059 AC_ARG_ENABLE(vdpau,
3060   [AS_HELP_STRING([--enable-vdpau], [VDPAU hardware support (default auto)])])
3061 have_vdpau="no"
3062 AS_IF([test "${enable_vdpau}" != "no"], [
3063   PKG_CHECK_MODULES([VDPAU], [vdpau >= 0.6], [
3064     have_vdpau="yes"
3065     AS_IF([test "${no_x}" = "yes"], [
3066       AC_MSG_ERROR([VDPAU requires Xlib (X11).])
3067     ])
3068   ], [
3069     AS_IF([test -n "${enable_vdpau}"], [
3070       AC_MSG_ERROR([${VDPAU_PKG_ERRORS}.])
3071     ])
3072   ])
3074 AM_CONDITIONAL([HAVE_VDPAU], [test "${have_vdpau}" = "yes"])
3076 have_avcodec_vdpau="no"
3077 AS_IF([test "${have_vdpau}" = "yes" -a "${have_avcodec}" = "yes"], [
3078   case "${avfork}" in
3079     libav) av_vdpau_ver="56.10.0" ;;
3080     ffmpeg) av_vdpau_ver="56.19.100" ;;
3081   esac
3082   PKG_CHECK_EXISTS([libavcodec >= ${av_vdpau_ver}], [
3083     have_avcodec_vdpau="yes"
3084     AC_MSG_NOTICE([VDPAU decoding acceleration activated])
3085   ], [
3086     AS_IF([test -n "${enable_vdpau}"], [
3087       AC_MSG_ERROR([libavcodec >= 56.10.0 is required for VDPAU decoding.])
3088     ], [
3089       AC_MSG_WARN([libavcodec >= 56.10.0 are required for VDPAU decoding.])
3090     ])
3091   ])
3093 AM_CONDITIONAL([HAVE_AVCODEC_VDPAU], [test "${have_avcodec_vdpau}" = "yes"])
3097 dnl  Wayland
3099 AC_ARG_ENABLE(wayland,
3100   [AS_HELP_STRING([--enable-wayland], [Wayland support (default auto)])])
3101 have_wayland="no"
3102 have_wayland_egl="no"
3104 AS_IF([test "${enable_wayland}" != "no"], [
3105   PKG_CHECK_MODULES([WAYLAND_CLIENT], [wayland-client >= 1.5.91], [
3106     AC_MSG_CHECKING([for the Wayland protocols])
3107     PKG_CHECK_EXISTS([wayland-protocols >= 1.4], [
3108       WAYLAND_PROTOCOLS="$(${PKG_CONFIG} wayland-protocols --variable pkgdatadir)"
3109       AC_MSG_RESULT([${WAYLAND_PROTOCOLS}])
3110     ], [
3111       AC_MSG_RESULT([not found])
3112       AC_MSG_ERROR([$(${PKG_CONFIG} --print-errors 'wayland-protocols >= 1.4')])
3113     ])
3115     AC_MSG_CHECKING([for the Wayland scanner])
3116     PKG_CHECK_EXISTS([wayland-scanner], [
3117       WAYLAND_SCANNER="$(${PKG_CONFIG} wayland-scanner --variable wayland_scanner)"
3118       AC_MSG_RESULT([${WAYLAND_SCANNER}])
3119     ], [
3120       AC_MSG_RESULT([not found])
3121       AC_MSG_ERROR([$(${PKG_CONFIG} --print-errors wayland-scanner)])
3122     ])
3124     have_wayland="yes"
3126     AS_IF([test "${have_egl}" = "yes"], [
3127       PKG_CHECK_MODULES([WAYLAND_EGL], [wayland-egl], [
3128         have_wayland_egl="yes"
3129       ], [
3130         AC_MSG_ERROR([${WAYLAND_EGL_PKG_ERRORS}.])
3131       ])
3132     ])
3133   ], [
3134     AS_IF([test -n "${enable_wayland}"], [
3135       AC_MSG_ERROR([${WAYLAND_CLIENT_PKG_ERRORS}.])
3136     ])
3137   ])
3139 AC_SUBST([WAYLAND_PROTOCOLS])
3140 AC_SUBST([WAYLAND_SCANNER])
3141 AM_CONDITIONAL([HAVE_WAYLAND], [test "${have_wayland}" = "yes"])
3142 AM_CONDITIONAL([HAVE_WAYLAND_EGL], [test "${have_wayland_egl}" = "yes"])
3146 dnl  SDL image decoder module
3148 AC_ARG_ENABLE(sdl-image,
3149   [  --enable-sdl-image      SDL image support (default enabled)])
3150 AS_IF([test "${enable_sdl_image}" != "no"],[
3151   PKG_CHECK_MODULES(SDL_IMAGE, [SDL_image >= 1.2.10], [
3152     VLC_ADD_PLUGIN([sdl_image])
3153   ], [
3154     AC_MSG_WARN([${SDL_IMAGE_PKG_ERRORS}. You should install it alongside your SDL package.])
3155   ])
3159 dnl  freetype module
3161 AC_ARG_ENABLE(freetype,
3162   [  --enable-freetype       freetype support   (default auto)])
3163 AC_ARG_ENABLE(fribidi,
3164   [  --enable-fribidi        fribidi support    (default auto)])
3165 AC_ARG_ENABLE(harfbuzz,
3166   [  --enable-harfbuzz       harfbuzz support   (default auto)])
3167 AC_ARG_ENABLE(fontconfig,
3168   [  --enable-fontconfig     fontconfig support (default auto)])
3170 AC_ARG_WITH([default-font],
3171     AS_HELP_STRING([--with-default-font=PATH],
3172         [Path to the default font]),
3173         [AC_DEFINE_UNQUOTED([DEFAULT_FONT_FILE],
3174             "$withval", [Default font])])
3175 AC_ARG_WITH([default-monospace-font],
3176     AS_HELP_STRING([--with-default-monospace-font=PATH],
3177         [Path to the default font]),
3178         [AC_DEFINE_UNQUOTED([DEFAULT_MONOSPACE_FONT_FILE],
3179             "$withval", [Default monospace font])])
3181 AC_ARG_WITH([default-font-family],
3182     AS_HELP_STRING([--with-default-font-family=NAME],
3183         [Path to the default font family]),
3184         [AC_DEFINE_UNQUOTED([DEFAULT_FAMILY],
3185             "$withval", [Default font family])])
3186 AC_ARG_WITH([default-monospace-font-family],
3187     AS_HELP_STRING([--with-default-monospace-font-family=NAME],
3188         [Path to the default font family]),
3189         [AC_DEFINE_UNQUOTED([DEFAULT_MONOSPACE_FAMILY],
3190             "$withval", [Default monospace font family])])
3192 have_freetype="no"
3193 have_fontconfig="no"
3194 have_fribidi="no"
3195 have_harfbuzz="no"
3197 if test "${enable_freetype}" != "no"; then
3198    PKG_CHECK_MODULES(FREETYPE, freetype2, [
3199       have_freetype="yes"
3200       VLC_ADD_CPPFLAGS([skins2],[${FREETYPE_CFLAGS}])
3201       VLC_ADD_LIBS([skins2],[${FREETYPE_LIBS}])
3203     dnl fontconfig support
3204     AS_IF([test "${enable_fontconfig}" != "no" -a "${SYS}" != "mingw32" -a "${SYS}" != "darwin"], [
3205       PKG_CHECK_MODULES(FONTCONFIG, [fontconfig >= 2.11], [
3206         have_fontconfig="yes"
3207       ], [
3208         AC_MSG_WARN([${FONTCONFIG_PKG_ERRORS}. Styles will be disabled in FreeType.])
3209       ])
3210     ])
3212       dnl fribidi support
3213       if test "${enable_fribidi}" != "no"; then
3214         PKG_CHECK_MODULES(FRIBIDI, fribidi, [
3215           have_fribidi="yes"
3216           VLC_ADD_CPPFLAGS([skins2], [${FRIBIDI_CFLAGS} -DHAVE_FRIBIDI])
3217           VLC_ADD_LIBS([skins2], [${FRIBIDI_LIBS}])
3218         ],[AC_MSG_WARN([${FRIBIDI_PKG_ERRORS}. Bidirectional text and complex scripts (Arabic, Farsi, Thai...) will be disabled in FreeType.])])
3219       fi
3221       dnl harfbuzz support
3222       if test "${have_fribidi}" != "no"; then
3223         if test "${enable_harfbuzz}" != "no"; then
3224           PKG_CHECK_MODULES(HARFBUZZ, harfbuzz, [
3225             have_harfbuzz="yes"
3226             VLC_ADD_CPPFLAGS([skins2], [${HARFBUZZ_CFLAGS} -DHAVE_HARFBUZZ])
3227             VLC_ADD_LIBS([skins2], [${HARFBUZZ_LIBS}])
3228           ],[AC_MSG_WARN([${HARFBUZZ_PKG_ERRORS}. Support for complex scripts (Arabic, Farsi, Thai...) will be disabled in FreeType.])])
3229         fi
3230       fi
3231   ],[
3232   AS_IF([test -n "${enable_freetype}"],[
3233     AC_MSG_ERROR([${FREETYPE_PKG_ERRORS}. Install FreeType2 development or configure with --disable-freetype.])
3234     ])
3235   ])
3238 AM_CONDITIONAL([HAVE_FREETYPE], [test "${have_freetype}" = "yes"])
3239 AM_CONDITIONAL([HAVE_FONTCONFIG], [test "${have_fontconfig}" = "yes"])
3240 AM_CONDITIONAL([HAVE_FRIBIDI], [test "${have_fribidi}" = "yes"])
3241 AM_CONDITIONAL([HAVE_HARFBUZZ], [test "${have_harfbuzz}" = "yes"])
3244 dnl SAPI (text to Speech renderer for Windows)
3246 AC_LANG_PUSH([C++])
3247 AC_CHECK_TYPES([ISpObjectToken],[
3248               have_sapi="yes"
3249             ],[AC_MSG_WARN([sapi.h not found. Text to Speech renderer for Windows disabled])],
3250               [#include <windows.h>
3251                #include <sapi.h>
3252                #include <sphelper.h>])
3253 AM_CONDITIONAL([HAVE_SAPI], [test "${have_sapi}" = "yes"])
3254 AC_LANG_POP([C++])
3257 dnl  SVG module (text rendering and image decoding)
3259 PKG_ENABLE_MODULES_VLC([SVG], [], [librsvg-2.0 >= 2.9.0], [SVG rendering library],[auto])
3260 PKG_ENABLE_MODULES_VLC([SVGDEC], [], [librsvg-2.0 >= 2.9.0 cairo >= 1.13.1], [SVG image decoder library],[auto])
3263 dnl  Windows DirectX module
3266 AC_ARG_ENABLE(directx,
3267   [AS_HELP_STRING([--enable-directx],
3268     [Microsoft DirectX support (default enabled on Windows)])],, [
3269   AS_IF([test "${SYS}" = "mingw32"], [
3270     enable_directx="yes"
3271   ], [
3272     enable_directx="no"
3273   ])
3275 AS_IF([test "${enable_directx}" != "no"], [
3276   dnl DirectDraw
3277   AC_CHECK_HEADERS(ddraw.h, [
3278     VLC_ADD_PLUGIN([directdraw])
3279   ])
3281   dnl OpenGL
3282   AC_CHECK_HEADERS(GL/wglew.h, [
3283     VLC_ADD_PLUGIN([glwin32 wgl])
3284   ],, [
3285     #include <windows.h>
3286     #include <GL/gl.h>
3287   ])
3289   dnl Direct3D11
3290   AC_CHECK_HEADERS(d3d11.h, [
3291     VLC_ADD_PLUGIN([direct3d11 direct3d11_deinterlace direct3d11_adjust])
3292   ])
3294   dnl Direct3D9
3295   AC_CHECK_HEADERS(d3d9.h, [
3296     VLC_ADD_PLUGIN([direct3d9])
3297     AC_CHECK_HEADERS(d3dx9effect.h)
3299     AC_PREPROC_IFELSE([AC_LANG_PROGRAM(
3300         [[#define COBJMACROS
3301           #include <d3d9.h>
3302           #include <dxva2api.h>
3303           #ifndef IDirectXVideoProcessorService_GetVideoProcessorDeviceGuids
3304           # error dxva2 too old
3305           #endif
3306         ]],[[;]])
3307       ],[
3308         VLC_ADD_PLUGIN([direct3d9_deinterlace direct3d9_adjust])
3309       ],
3310       [AC_MSG_WARN([Could not find required IDirectXVideoDecoder in dxva2api.h])])
3312   ])
3316 dnl  Linux framebuffer module
3318 AC_CHECK_HEADER([linux/fb.h], [
3319   VLC_ADD_PLUGIN([fb])
3324 dnl  AA plugin
3326 AC_ARG_ENABLE(aa,
3327   [  --enable-aa             aalib output (default disabled)])
3328 if test "${enable_aa}" = "yes"
3329 then
3330   AC_CHECK_HEADER(aalib.h,have_aa="true",have_aa="false")
3331   if test "${have_aa}" = "true"
3332   then
3333     VLC_ADD_PLUGIN([aa])
3334   fi
3338 dnl  libcaca plugin
3340 PKG_ENABLE_MODULES_VLC([CACA], [], [caca >= 0.99.beta14], [libcaca output],[auto])
3343 dnl  OS/2 KVA plugin
3345 AC_ARG_ENABLE(kva,
3346   [AS_HELP_STRING([--enable-kva],
3347     [support the K Video Accelerator KVA (default enabled on OS/2)])],, [
3348   AS_IF([test "$SYS" = "os2"], [
3349     enable_kva="yes"
3350   ])
3352 have_kva="no"
3353 KVA_LIBS=""
3354 AS_IF([test "$enable_kva" != "no"], [
3355   AC_CHECK_HEADERS([kva.h], [
3356     have_kva="yes"
3357     AC_CHECK_LIB(kva, main, [
3358       KVA_LIBS="-lkva"
3359     ])
3360   ])
3362 AC_SUBST(KVA_LIBS)
3363 AM_CONDITIONAL([HAVE_KVA], [test "${have_kva}" = "yes"])
3366 dnl MMAL plugin
3368 AC_ARG_ENABLE(mmal,
3369   AS_HELP_STRING([--enable-mmal],
3370     [Multi-Media Abstraction Layer (MMAL) hardware plugin (default enable)]))
3371 if test "${enable_mmal}" != "no"; then
3372   VLC_SAVE_FLAGS
3373   LDFLAGS="${LDFLAGS} -L/opt/vc/lib -lvchostif"
3374   CPPFLAGS="${CPPFLAGS} -isystem /opt/vc/include -isystem /opt/vc/include/interface/vcos/pthreads -isystem /opt/vc/include/interface/vmcs_host/linux"
3375   AC_CHECK_HEADERS(interface/mmal/mmal.h,
3376     [ AC_CHECK_LIB(bcm_host, vc_tv_unregister_callback_full, [
3377         have_mmal="yes"
3378         VLC_ADD_PLUGIN([mmal])
3379         VLC_ADD_LDFLAGS([mmal],[ -L/opt/vc/lib ])
3380         VLC_ADD_CFLAGS([mmal],[ -isystem /opt/vc/include -isystem /opt/vc/include/interface/vcos/pthreads -isystem /opt/vc/include/interface/vmcs_host/linux ])
3381         VLC_ADD_LIBS([mmal],[ -lbcm_host -lmmal -lmmal_core -lmmal_components -lmmal_util -lvchostif ]) ], [
3382           AS_IF([test "${enable_mmal}" = "yes"],
3383             [ AC_MSG_ERROR([Cannot find bcm library...]) ],
3384             [ AC_MSG_WARN([Cannot find bcm library...]) ])
3385           ],
3386         [])
3387     ] , [ AS_IF([test "${enable_mmal}" = "yes"],
3388       [ AC_MSG_ERROR([Cannot find development headers for mmal...]) ],
3389       [ AC_MSG_WARN([Cannot find development headers for mmal...]) ]) ])
3390   VLC_RESTORE_FLAGS
3392 AM_CONDITIONAL([HAVE_MMAL], [test "${have_mmal}" = "yes"])
3395 dnl evas plugin
3397 AC_ARG_ENABLE(evas,
3398   [AS_HELP_STRING([--enable-evas],
3399     [use evas output module (default disabled)])])
3400 have_evas="no"
3401 AS_IF([test "${enable_evas}" = "yes"], [
3402   PKG_CHECK_MODULES(EVAS, [evas >= 1.15.99 ecore >= 1.15.99], [
3403       have_evas="yes"
3404       AC_DEFINE([HAVE_EVAS], [1], [Define to 1 if evas is enabled.])
3405     ],[
3406     AS_IF([test "x${enable_evas}" != "x"], [
3407       AC_MSG_ERROR([$EVAS_PKG_ERRORS. libevas and libecore 1.15.99 or later required.])
3408     ])
3409   ])
3411 AM_CONDITIONAL([HAVE_EVAS], [test "${have_evas}" = "yes"])
3414 dnl  Audio plugins
3417 EXTEND_HELP_STRING([Audio plugins:])
3420 dnl  Pulseaudio module
3422 AC_ARG_ENABLE(pulse,
3423   [AS_HELP_STRING([--enable-pulse],
3424     [use the PulseAudio client library (default auto)])])
3425 have_pulse="no"
3426 AS_IF([test "${enable_pulse}" != "no"], [
3427   PKG_CHECK_MODULES([PULSE], [libpulse >= 1.0], [
3428     have_pulse="yes"
3429   ], [
3430     AS_IF([test "x${enable_pulse}" != "x"], [
3431       AC_MSG_ERROR([$PULSE_PKG_ERRORS. PulseAudio 1.0 or later required.])
3432     ])
3433   ])
3435 AM_CONDITIONAL([HAVE_PULSE], [test "${have_pulse}" = "yes"])
3438 dnl  ALSA module
3440 AC_ARG_ENABLE(alsa,
3441   [AS_HELP_STRING([--enable-alsa],
3442     [support the Advanced Linux Sound Architecture (default auto)])],, [
3443   AS_IF([test "$SYS" = "linux" -a "${have_pulse}" = "no"], [
3444     enable_alsa="yes"
3445   ])
3447 have_alsa="no"
3448 AS_IF([test "${enable_alsa}" != "no"], [
3449   PKG_CHECK_MODULES([ALSA], [alsa >= 1.0.24], [
3450     have_alsa="yes"
3451   ], [
3452     AS_IF([test "x${enable_alsa}" != "x"], [
3453       AC_MSG_ERROR([$ALSA_PKG_ERRORS. alsa-lib 1.0.24 or later required. Pass --disable-alsa to ignore this error.])
3454     ])
3455   ])
3457 AM_CONDITIONAL([HAVE_ALSA], [test "${have_alsa}" = "yes"])
3460 dnl  Open Sound System module
3462 AC_ARG_ENABLE(oss,
3463   [AS_HELP_STRING([--enable-oss],
3464     [support the Open Sound System OSS (default enabled on FreeBSD/NetBSD/DragonFlyBSD)])],, [
3465   AS_IF([test "$SYS" = "mingw32" -o "$SYS" = "linux" -o "$SYS" = "openbsd"], [
3466     enable_oss="no"
3467   ])
3469 have_oss="no"
3470 OSS_LIBS=""
3471 AS_IF([test "$enable_oss" != "no"], [
3472   AC_CHECK_HEADERS([soundcard.h sys/soundcard.h], [
3473     have_oss="yes"
3474     AC_CHECK_LIB(ossaudio, main, [
3475       OSS_LIBS="-lossaudio"
3476     ])
3477   ])
3479 AC_SUBST(OSS_LIBS)
3480 AM_CONDITIONAL([HAVE_OSS], [test "${have_oss}" = "yes"])
3483 dnl  OpenBSD sndio module
3485 AC_ARG_ENABLE([sndio],
3486   [AS_HELP_STRING([--disable-sndio],
3487     [support the OpenBSD sndio (default auto)])],, [
3488   AS_IF([test "$SYS" = "openbsd"], [
3489     enable_sndio="yes"
3490   ])
3492 have_sndio="no"
3493 AS_IF([test "$enable_sndio" != "no"], [
3494   AC_CHECK_HEADER([sndio.h], [
3495     have_sndio="yes"
3496   ])
3498 AM_CONDITIONAL([HAVE_SNDIO], [test "${have_sndio}" = "yes"])
3501 dnl  Windows Audio Session plugin
3503 AC_ARG_ENABLE([wasapi],
3504   [AS_HELP_STRING([--enable-wasapi],
3505     [use the Windows Audio Session API (default auto)])
3507 have_wasapi="no"
3508 AS_IF([test "$enable_wasapi" != "no"], [
3509   AC_CHECK_HEADER([audioclient.h], [
3510     have_wasapi="yes"
3511   ], [
3512     AS_IF([test "x${enable_wasapi}" != "x"], [
3513       AC_MSG_ERROR([Windows Audio Session API not found.])
3514     ])
3515   ])
3517 AM_CONDITIONAL([HAVE_WASAPI], [test "${have_wasapi}" = "yes"])
3520 dnl  JACK modules
3522 AC_ARG_ENABLE(jack,
3523   [AS_HELP_STRING([--disable-jack],
3524     [do not use jack (default auto)])])
3525 have_jack="no"
3526 AS_IF([test "${enable_jack}" != "no"], [
3527     PKG_CHECK_MODULES(JACK, jack >= 1.9.7,
3528       [ have_jack=yes ],
3529       [
3530       AC_MSG_WARN([${JACK_PKG_ERRORS}, trying jack1 instead])
3532       PKG_CHECK_MODULES(JACK, jack >= 0.120.1 jack < 1.0,
3533       [ have_jack=yes ],
3534       [
3535       AS_IF([test -n "${enable_jack}"],
3536          [AC_MSG_ERROR([${JACK_PKG_ERRORS}.])],
3537          [AC_MSG_WARN([${JACK_PKG_ERRORS}.])])
3538       ])
3539     ])
3541 AM_CONDITIONAL([HAVE_JACK], [test "${have_jack}" != "no"])
3544 dnl  OpenSLES Android
3546 AC_ARG_ENABLE(opensles,
3547   [  --enable-opensles       Android OpenSL ES audio module (default disabled)])
3548 if test "${HAVE_ANDROID}" = "1"; then
3549   if test "${enable_opensles}" = "yes"; then
3550       AC_CHECK_HEADERS(SLES/OpenSLES.h,
3551         [ VLC_ADD_PLUGIN([opensles_android]) ],
3552         [ AC_MSG_ERROR([cannot find OpenSLES headers])] )
3553   fi
3557 dnl  Tizen audio
3559 AC_ARG_ENABLE(tizen_audio,
3560   [AS_HELP_STRING([--enable-tizen-audio],
3561     [Tizen audio module (default enabled on Tizen)])],, [
3562   AS_IF([test "$HAVE_TIZEN" = "1"], [
3563     enable_tizen_audio="yes"
3564   ])
3566 if test "${enable_tizen_audio}" = "yes"; then
3567   AC_CHECK_HEADERS(audio_io.h,
3568     [ VLC_ADD_PLUGIN([tizen_audio]) ],
3569     [ AC_MSG_ERROR([cannot find Tizen audio_io headers])] )
3573 dnl libsamplerate plugin
3575 PKG_ENABLE_MODULES_VLC([SAMPLERATE], [], [samplerate], [Resampler with libsamplerate], [auto])
3578 dnl  soxr module
3580 PKG_ENABLE_MODULES_VLC([SOXR], [], [soxr >= 0.1.2], [SoX Resampler library], [auto])
3583 dnl  OS/2 KAI plugin
3585 AC_ARG_ENABLE(kai,
3586   [AS_HELP_STRING([--enable-kai],
3587     [support the K Audio Interface KAI (default enabled on OS/2)])],, [
3588   AS_IF([test "$SYS" = "os2"], [
3589     enable_kai="yes"
3590   ])
3592 have_kai="no"
3593 KAI_LIBS=""
3594 AS_IF([test "$enable_kai" != "no"], [
3595   AC_CHECK_HEADERS([kai.h], [
3596     have_kai="yes"
3597     AC_CHECK_LIB(kai, main, [
3598       KAI_LIBS="-lkai"
3599     ])
3600   ])
3602 AC_SUBST(KAI_LIBS)
3603 AM_CONDITIONAL([HAVE_KAI], [test "${have_kai}" = "yes"])
3606 dnl  chromaprint audio track fingerprinter
3608 m4_pushdef([libchromaprint_version], 0.6.0)
3609 PKG_WITH_MODULES([CHROMAPRINT],[libchromaprint >= libchromaprint_version],
3610     VLC_ADD_PLUGIN([stream_out_chromaprint]),
3611     AS_IF([test "${enable_chromaprint}" = "yes"],
3612         [AC_MSG_ERROR(Library [libchromaprint >= libchromaprint_version] needed for [chromaprint] was not found)],
3613         [AC_MSG_WARN(Library [libchromaprint >= libchromaprint_version] needed for [chromaprint] was not found)]
3614          ),
3615     [(Chromaprint based audio fingerprinter)],[auto])
3616 m4_popdef([libchromaprint_version])
3619 dnl  Chromecast streaming support
3621 m4_pushdef([protobuf_lite_version], 2.5.0)
3622 AC_ARG_VAR(PROTOC, [protobuf compiler])
3623 AC_CHECK_PROGS(PROTOC, protoc, no)
3624 PKG_WITH_MODULES([CHROMECAST],[protobuf-lite >= protobuf_lite_version], [
3625     AS_IF([test "x${PROTOC}" != "xno"], [
3626         build_chromecast="yes"
3627     ], [
3628     AC_MSG_ERROR(protoc compiler needed for [chromecast] was not found)
3629     ])
3630 ], [
3631     AS_IF([test "${enable_chromecast}" = "yes"],
3632         AC_MSG_ERROR(Library [protobuf-lite >= protobuf_lite_version] needed for [chromecast] was not found),
3633         AC_MSG_WARN(Library [protobuf-lite >= protobuf_lite_version] needed for [chromecast] was not found)
3634     )
3635     enable_chromecast="no"
3636 ], [(Chromecast streaming support)], [auto])
3637 AM_CONDITIONAL([BUILD_CHROMECAST], [test "${build_chromecast}" = "yes"])
3638 m4_popdef([protobuf_lite_version])
3641 dnl  Interface plugins
3644 EXTEND_HELP_STRING([Interface plugins:])
3647 dnl QT
3649 AC_ARG_ENABLE(qt, [
3650   AS_HELP_STRING([--disable-qt], [Qt UI support (default enabled)])],, [
3651   AS_IF([test "${SYS}" = "darwin"], [
3652     enable_qt="no"
3653   ])
3655 have_qt5_x11="no"
3656 AS_IF([test "${enable_qt}" != "no"], [
3657   PKG_CHECK_MODULES([QT], [Qt5Core >= 5.5.0 Qt5Widgets Qt5Gui Qt5Svg], [
3658       PKG_CHECK_MODULES([QT5_X11], [Qt5X11Extras], [
3659           have_qt5_x11="yes"
3660       ],[
3661           AC_MSG_WARN([Not building Qt Interface with X11 helpers.])
3662       ])
3663       QT_PATH="$(eval $PKG_CONFIG --variable=exec_prefix Qt5Core)"
3664       QT_HOST_PATH="$(eval $PKG_CONFIG --variable=host_bins Qt5Core)"
3665       QT_VERSION="$(eval $PKG_CONFIG --modversion Qt5Gui)"
3666       AC_PATH_PROGS(MOC, [moc-qt5 moc], moc, ["${QT_HOST_PATH}" "${QT_PATH}/bin"])
3667       AC_PATH_PROGS(RCC, [rcc-qt5 rcc], rcc, ["${QT_HOST_PATH}" "${QT_PATH}/bin"])
3668       AC_PATH_PROGS(UIC, [uic-qt5 uic], uic, ["${QT_HOST_PATH}" "${QT_PATH}/bin"])
3669     ], [
3670       AS_IF([test -n "${enable_qt}"],[
3671         AC_MSG_ERROR([${QT_PKG_ERRORS}.])
3672       ],[
3673         AC_MSG_WARN([${QT_PKG_ERRORS}.])
3674       ])
3675       enable_qt="no"
3676     ])
3679 AS_IF([test "${enable_qt}" != "no"], [
3680   ALIASES="${ALIASES} qvlc"
3682 AC_SUBST(QT_VERSION)
3683 AM_CONDITIONAL(ENABLE_QT, [test "$enable_qt" != "no"])
3684 AM_CONDITIONAL([HAVE_QT5_X11], [test "${have_qt5_x11}" = "yes"])
3687 dnl detect kde4-config patch (used for kde solids).
3689 AC_ARG_VAR([KDE4_CONFIG], [kde4-config utility])
3690 AS_IF([test "x$KDE4_CONFIG" = "x"], [
3691   KDE4_CONFIG="kde4-config"
3695 dnl Simple test for skins2 dependency
3697 AS_IF([test "$enable_qt" = "no"], [
3698   AS_IF([test "${enable_skins2}" = "yes"], [
3699     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.])
3700   ], [
3701     enable_skins2="no"
3702     AC_MSG_WARN([The skins2 module depends on the Qt interface, Qt is not built so skins2 is disabled.])
3703   ])
3707 dnl Skins2 module
3709 AC_ARG_ENABLE(skins2,
3710   [AS_HELP_STRING([--enable-skins2], [skins interface module (default auto)])])
3711 AS_IF([test "${enable_skins2}" != "no"], [
3712   have_skins_deps="yes"
3714   dnl Win32
3715   AS_IF([test "${SYS}" = "mingw32"], [
3716     VLC_ADD_CPPFLAGS([skins2],[-U_OFF_T_ -U_off_t -DWIN32_SKINS])
3717     VLC_ADD_LIBS([skins2],[-lgdi32 -lole32 -luuid -lmsimg32])
3718   dnl OS/2
3719   ], [test "${SYS}" = "os2"], [
3720     VLC_ADD_CPPFLAGS([skins2],[ -DOS2_SKINS])
3721   dnl Linux/Unix
3722   ], [
3723     PKG_CHECK_MODULES([XPM], [xpm],, [have_skins_deps="no"])
3724     PKG_CHECK_MODULES([XINERAMA], [xinerama],, [have_skins_deps="no"])
3725     PKG_CHECK_MODULES([XEXT], [xext],, [have_skins_deps="no"])
3726     VLC_ADD_CPPFLAGS([skins2],[${X_CFLAGS} ${XEXT_CFLAGS} ${XPM_CFLAGS} -DX11_SKINS])
3727     VLC_ADD_LIBS([skins2],[${X_LIBS} ${X_PRE_LIBS} ${XEXT_LIBS} ${XPM_LIBS} ${XINERAMA_LIBS} -lX11])
3728   ])
3730   dnl we need freetype
3731   AS_IF([test "${have_freetype}" != "yes"], [
3732     have_skins_deps="no"
3733   ])
3735   AS_IF([test "${have_skins_deps}" = "no"], [
3736     AS_IF([test "x${enable_skins2}" = "x"], [
3737       AC_MSG_WARN([Skins2 interface disabled due to missing dependencies.])
3738     ], [
3739       AC_MSG_ERROR([Skins2 interface requires FreeType, libxpm, libxext and libxinerama])
3740     ])
3741     enable_skins2="no"
3742   ], [
3743     ALIASES="${ALIASES} svlc"
3744     enable_skins2="yes"
3745   ])
3747 AM_CONDITIONAL(BUILD_SKINS, [test "${enable_skins2}" = "yes"])
3749 AC_ARG_ENABLE(libtar,
3750   [  --enable-libtar         libtar support for skins2 (default auto)])
3751 AS_IF([test "${enable_skins2}" = "yes" && test "${enable_libtar}" != "no"], [
3752   AC_CHECK_HEADERS(libtar.h, [
3753     VLC_ADD_LIBS([skins2],[-ltar])
3754   ])
3758 dnl  MacOS X gui module
3760 AC_ARG_ENABLE(macosx,
3761   [  --enable-macosx         Mac OS X gui support (default enabled on Mac OS X)])
3762 if test "x${enable_macosx}" != "xno" -a "${SYS}" = "darwin"
3763 then
3765   dnl
3766   dnl If possible, use xcrun to find the right ibtool
3767   dnl
3769   AC_PATH_PROG([XCRUN], [xcrun], [no])
3770   AS_IF([test ! "x${XCRUN}" = "xno"], [
3771     AC_MSG_CHECKING([for ibtool (using xcrun)])
3772     XIB="$(eval $XCRUN -f ibtool 2>/dev/null || echo no)"
3773     AC_MSG_RESULT([${XIB}])
3774   ], [
3775     AC_MSG_WARN([Looking for tools without using xcrun])
3776   ])
3778   AS_IF([test "x${XIB}" = "xno"], [
3779     AC_PATH_PROG(XIB, [ibtool], [no])
3780     AS_IF([test "x${XIB}" = "xno"], [
3781       AC_MSG_ERROR([ibtool was not found, but is required for --enable-macosx])
3782     ])
3783   ])
3785 AM_CONDITIONAL(ENABLE_MACOSX_UI, [test "$enable_macosx" != "no" -a "${SYS}" = "darwin"])
3788 dnl  MacOS X sparkle update support
3790 AC_ARG_ENABLE(sparkle,
3791   [  --enable-sparkle        Sparkle update support for OS X (default enabled on Mac OS X)])
3792 if test "x${enable_sparkle}" != "xno" -a "${HAVE_OSX}" = "1"
3793 then
3794   if test ! -d ${CONTRIB_DIR}/Sparkle.framework -a ! -d ${CONTRIB_DIR}/Frameworks/Sparkle.framework
3795   then
3796     AC_MSG_ERROR([Sparkle framework is required and was not found in ${CONTRIB_DIR}])
3797   fi
3799   AC_DEFINE([HAVE_SPARKLE], [1], [Define to 1 if sparkle is enabled.])
3801 AM_CONDITIONAL(HAVE_SPARKLE, [test "$enable_sparkle" != "no"])
3804 dnl  MacOS X breakpad creash reporter support
3806 AC_ARG_ENABLE(breakpad,
3807   [  --enable-breakpad       Breakpad crash reporter support for OS X (default enabled on Mac OS X)])
3808 if test "x${enable_breakpad}" != "xno" -a "${HAVE_OSX}" = "1"
3809 then
3810   if test ! -d ${CONTRIB_DIR}/Breakpad.framework -a ! -d ${CONTRIB_DIR}/Frameworks/Breakpad.framework
3811   then
3812     AC_MSG_ERROR([Breakpad framework is required and was not found in ${CONTRIB_DIR}])
3813   fi
3815   AC_DEFINE([HAVE_BREAKPAD], [1], [Define to 1 if breakpad is enabled.])
3817 AM_CONDITIONAL(HAVE_BREAKPAD, [test "$enable_breakpad" != "no"])
3821 dnl  Minimal Mac OS X module
3823 AC_ARG_ENABLE(minimal-macosx,
3824   [  --enable-minimal-macosx Minimal Mac OS X support (default disabled)])
3825 if test "${enable_minimal_macosx}" = "yes" -a "${SYS}" = "darwin"
3826 then
3827   VLC_ADD_PLUGIN([minimal_macosx])
3831 dnl Mac OS X fancy dmg build tool
3833 if test "${HAVE_OSX}" = "1"
3834 then
3835   AC_PATH_PROG(DMGBUILD, dmgbuild, no)
3836   AS_IF([test "x${DMGBUILD}" = "xno"], [
3837     AC_MSG_WARN([dmgbuild not found -- unable to build fancy DMGs])
3838   ])
3840 AM_CONDITIONAL(HAVE_DMGBUILD, [test "x$DMGBUILD" != "xno" -a "${HAVE_OSX}" = "1"])
3843 dnl  VideoToolbox plugins
3844 AC_CHECK_HEADERS(VideoToolbox/VideoToolbox.h, [
3845     VLC_ADD_PLUGIN([videotoolbox])
3846     VLC_ADD_PLUGIN([cvpx])
3847   ])
3850 dnl  ncurses module
3852 AC_ARG_ENABLE(ncurses,
3853 [AS_HELP_STRING([--disable-ncurses],[ncurses text-based interface (default auto)])])
3854 have_ncurses="no"
3855 AS_IF([test "${enable_ncurses}" != "no"] ,[
3856   PKG_CHECK_MODULES([NCURSES], [ncursesw], [
3857     have_ncurses="yes"
3858     ALIASES="${ALIASES} nvlc"
3859   ], [
3860     AS_IF([test -n "${enable_ncurses}"], [
3861       AC_MSG_ERROR([${NCURSES_PKG_ERRORS}.])
3862     ])
3863   ])
3865 AM_CONDITIONAL([HAVE_NCURSES], [test "${have_ncurses}" = "yes"])
3868 dnl  Lirc plugin
3870 AC_ARG_ENABLE(lirc,
3871   [  --enable-lirc           lirc support (default disabled)])
3872 have_lirc="no"
3873 AS_IF([test "${enable_lirc}" = "yes"], [
3874   AC_CHECK_HEADER(lirc/lirc_client.h, [
3875     AC_CHECK_LIB(lirc_client, lirc_init, [
3876       have_lirc="yes"
3877     ])
3878   ])
3880 AM_CONDITIONAL([HAVE_LIRC], [test "${have_lirc}" = "yes"])
3883 dnl  SRT plugin
3885 PKG_ENABLE_MODULES_VLC([SRT], [access_srt access_output_srt], [srt >= 1.2.0], [SRT input/output plugin], [auto], [], [], [-DENABLE_SRT])
3887 EXTEND_HELP_STRING([Visualisations and Video filter plugins:])
3889 dnl  goom visualization plugin
3891 PKG_ENABLE_MODULES_VLC([GOOM], [], [libgoom2], [goom visualization plugin], [auto])
3894 dnl libprojectM visualization plugin
3896 AC_ARG_ENABLE(projectm,
3897   [  --enable-projectm       projectM visualization plugin (default enabled)])
3898 AS_IF([test "${enable_projectm}" != "no"],
3899   [
3900     PKG_CHECK_MODULES(PROJECTM, libprojectM,
3901     [
3902       VLC_ADD_PLUGIN([projectm])
3903       PKG_CHECK_EXISTS([libprojectM >= 2.0.0],
3904         [ AC_DEFINE([HAVE_PROJECTM2], 1, [Define to 1 if using libprojectM 2.x]) ],
3905         [ AC_MSG_WARN( [Using libprojectM version 1] )
3906       ])
3907     ],[
3908       AC_MSG_WARN([${PROJECTM_PKG_ERRORS}.])
3909     ])
3910   ])
3913 dnl Vovoid VSXu visualization plugin
3915 AC_ARG_ENABLE(vsxu,
3916   [  --enable-vsxu           Vovoid VSXu visualization plugin (default auto)])
3917 AS_IF([test "${enable_vsxu}" != "no"],
3918   [
3919     PKG_CHECK_MODULES(VSXU, libvsxu,
3920     [
3921       VLC_ADD_PLUGIN([vsxu])
3922     ],[
3923       AC_MSG_WARN([${VSXU_PKG_ERRORS}.])
3924     ])
3925   ])
3927 EXTEND_HELP_STRING([Service Discovery plugins:])
3929 dnl  Avahi-Zeroconf services discovery
3930 PKG_ENABLE_MODULES_VLC([AVAHI], [], [avahi-client >= 0.6], [Zeroconf services discovery], [auto])
3933 dnl  libudev services discovery
3934 PKG_ENABLE_MODULES_VLC([UDEV], [], [libudev >= 142], [Linux udev services discovery], [auto])
3937 dnl MTP devices services discovery
3938 PKG_ENABLE_MODULES_VLC([MTP], [mtp access_mtp], [libmtp >= 1.0.0], [MTP devices support], [auto])
3941 dnl UPnP Plugin (Intel SDK)
3943 PKG_ENABLE_MODULES_VLC([UPNP], [upnp], [libupnp], [Intel UPNP SDK],[auto])
3946 dnl mDNS using libmicrodns
3948 PKG_ENABLE_MODULES_VLC([MICRODNS], [], [microdns], [mDNS services discovery], [auto])
3951 EXTEND_HELP_STRING([Misc options:])
3954 dnl  libxml2 module
3956 PKG_ENABLE_MODULES_VLC([LIBXML2], [xml], [libxml-2.0 >= 2.5], [libxml2 support],[auto])
3960 dnl libgcrypt
3962 AC_ARG_ENABLE(libgcrypt,
3963   [  --disable-libgcrypt     gcrypt support (default enabled)])
3964 AC_ARG_VAR([GCRYPT_CFLAGS], [C compiler flags for gcrypt])
3965 AC_ARG_VAR([GCRYPT_LIBS], [linker flags flags for gcrypt])
3967 # require libgcrypt >= 1.6.0
3968 AS_IF([test "${enable_libgcrypt}" != "no"], [
3969   AC_CACHE_CHECK([for gcrypt 1.6.0 or later], [ac_cv_lib_gcrypt], [
3970     VLC_SAVE_FLAGS
3971     CFLAGS="${CFLAGS} ${GCRYPT_CFLAGS}"
3972     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([
3973 [#include <gcrypt.h>
3974 #if GCRYPT_VERSION_NUMBER < 0x010600
3975 #error
3976 #endif]])], [
3977       ac_cv_lib_gcrypt=yes
3978     ], [
3979       ac_cv_lib_gcrypt=no
3980     ])
3981     VLC_RESTORE_FLAGS
3982   ])
3984   AS_IF([test "${ac_cv_lib_gcrypt}" = "yes"], [
3985     AC_DEFINE([HAVE_GCRYPT], 1, [Defined if having gcrypt])
3986   ], [
3987     AS_IF([test "${enable_libgcrypt}" = "yes"], [
3988       AC_MSG_ERROR([libgcrypt version 1.6.0 or higher not found. Install libgcrypt or pass --disable-libgcrypt.])
3989     ])
3990   ])
3993 AS_IF([test -z "$GCRYPT_LIBS"], [
3994   GCRYPT_LIBS="-lgcrypt -lgpg-error"
3997 AC_SUBST(GCRYPT_CFLAGS)
3998 AC_SUBST(GCRYPT_LIBS)
3999 AM_CONDITIONAL([HAVE_GCRYPT], [test "${ac_cv_lib_gcrypt}" = "yes"])
4002 dnl TLS/SSL
4004 AC_ARG_ENABLE(gnutls,
4005   [  --enable-gnutls         GNU TLS TLS/SSL support (default enabled)])
4006 AS_IF([test "${enable_gnutls}" != "no"], [
4007   PKG_CHECK_MODULES(GNUTLS, [gnutls >= 3.3.6], [
4008     VLC_ADD_PLUGIN([gnutls])
4009   ], [
4010     AS_IF([test -n "${enable_gnutls}"], [
4011       AC_MSG_ERROR([${GNUTLS_PKG_ERRORS}.)])
4012     ])
4013   ])
4018 dnl Taglib plugin
4020 AC_ARG_ENABLE(taglib,
4021   [AS_HELP_STRING([--disable-taglib],
4022     [do not use TagLib (default enabled)])])
4023 AS_IF([test "${enable_taglib}" != "no"], [
4024   PKG_CHECK_MODULES(TAGLIB, taglib >= 1.9, [
4025     VLC_ADD_PLUGIN([taglib])
4026   ], [
4027     AC_MSG_WARN([${TAGLIB_PKG_ERRORS}.])])
4031 dnl  libsecret
4033 PKG_ENABLE_MODULES_VLC([SECRET], [], [libsecret-1 >= 0.18], [use libsecret for keystore], [auto])
4036 dnl  kwallet
4038 AC_ARG_ENABLE(kwallet,
4039   [AS_HELP_STRING([--enable-kwallet],
4040     [use kwallet (via D-Bus) for keystore (default enabled)])])
4041 AS_IF([test "${enable_kwallet}" != "no" -a "${have_dbus}" = "yes"], [
4042   VLC_ADD_PLUGIN([kwallet])
4046 dnl  Developers helper modules (should be hidden from configure help)
4048 AC_ARG_ENABLE(devtools, [], [], [enable_devtools="no"])
4049 AS_IF([test "${enable_devtools}" != "no"], [
4050   VLC_ADD_PLUGIN([accesstweaks])
4054 dnl update checking system
4056 AC_ARG_ENABLE(update-check,
4057   [  --enable-update-check   update checking system (default disabled)])
4058 if test "${enable_update_check}" = "yes"
4059 then
4060  AS_IF([test "${ac_cv_lib_gcrypt}" != "yes"],[
4061     AC_MSG_ERROR([libgcrypt is required for update checking system]) ])
4063 AM_CONDITIONAL(UPDATE_CHECK, [test "${enable_update_check}" = "yes"])
4066 dnl OS X notification plugin
4068 AC_ARG_ENABLE(osx_notifications,
4069   [  --enable-osx-notifications          osx notification plugin (default disabled)],,
4070   [enable_osx_notifications=no])
4071 AS_IF([test "${enable_osx_notifications}" != "no"], [
4072   if test -d ${CONTRIB_DIR}/Growl.framework -o -d ${CONTRIB_DIR}/Frameworks/Growl.framework
4073   then
4074       VLC_ADD_PLUGIN([osx_notifications])
4075       VLC_ADD_LIBS([osx_notifications], [-Wl,-framework,Growl,-framework,Foundation])
4076       VLC_ADD_OBJCFLAGS([osx_notifications], [-fobjc-exceptions] )
4077   fi
4081 dnl Libnotify notification plugin
4083 PKG_ENABLE_MODULES_VLC([NOTIFY], [], [libnotify gtk+-2.0], [libnotify notification], [auto])
4086 dnl  Endianness check
4088 AC_C_BIGENDIAN
4089 AS_IF([test "${ac_cv_c_bigendian}" = "yes"], [
4090   DEFS_BIGENDIAN="-DWORDS_BIGENDIAN=1"
4091 ], [
4092   DEFS_BIGENDIAN=""
4094 AC_SUBST(DEFS_BIGENDIAN)
4097 dnl Where to install KDE solid .desktop
4099 AC_ARG_WITH(kde-solid,
4100   AS_HELP_STRING([--with-kde-solid=PATH],
4101                  [KDE Solid actions directory (auto)]),, [
4103 if test "${SYS}" != "mingw32" -a "${SYS}" != "darwin" ; then
4104   with_kde_solid="yes"
4107 soliddatadir=""
4108 AS_IF([test "${with_kde_solid}" != "no"], [
4109   AS_IF([test "${with_kde_solid}" = "yes"], [
4110     kde4datadir="`${KDE4_CONFIG} --install data`"
4111     AS_IF([test "x$kde4datadir" = "x"], [kde4datadir='${datadir}/kde4/apps'])
4112     soliddatadir="${kde4datadir}/solid/actions"
4113   ], [
4114     soliddatadir="${with_kde_solid}"
4115   ])
4117 AC_SUBST(soliddatadir)
4118 AM_CONDITIONAL(KDE_SOLID, [test "x${soliddatadir}" != "x"])
4121 dnl Check wether we have the PROCESS_MITIGATION_IMAGE_LOAD_POLICY 
4122 dnl It should only be available when building for win10, but some SDKs define it unconditionnaly
4124 if test "${SYS}" = "mingw32"; then
4125     AC_CHECK_TYPES([PROCESS_MITIGATION_IMAGE_LOAD_POLICY],,,[#include <windows.h>])
4128 EXTEND_HELP_STRING([Components:])
4131 dnl  the VLC binary
4133 AC_ARG_ENABLE(vlc,
4134   [  --enable-vlc            build the VLC media player (default enabled)])
4135 AM_CONDITIONAL(BUILD_VLC, [test "${enable_vlc}" != "no"])
4138 dnl  Stuff used by the program
4140 VERSION_MESSAGE="${VERSION} ${CODENAME}"
4141 COPYRIGHT_MESSAGE="Copyright © ${COPYRIGHT_YEARS} the VideoLAN team"
4142 AC_DEFINE_UNQUOTED(VERSION_MESSAGE, "${VERSION_MESSAGE}", [Simple version string])
4143 AC_DEFINE_UNQUOTED(COPYRIGHT_MESSAGE, "${COPYRIGHT_MESSAGE}", [Copyright string])
4144 AC_DEFINE_UNQUOTED(COPYRIGHT_YEARS, "${COPYRIGHT_YEARS}", [The copyright years])
4145 AC_DEFINE_UNQUOTED(CONFIGURE_LINE, "${CONFIGURE_LINE}", [The ./configure command line])
4146 AC_DEFINE_UNQUOTED(PACKAGE_VERSION_MAJOR,${VERSION_MAJOR}, [version major number])
4147 AC_DEFINE_UNQUOTED(PACKAGE_VERSION_MINOR,${VERSION_MINOR}, [version minor number])
4148 AC_DEFINE_UNQUOTED(PACKAGE_VERSION_REVISION,${VERSION_REVISION}, [version revision number])
4149 AC_DEFINE_UNQUOTED(PACKAGE_VERSION_EXTRA,${VERSION_EXTRA}, [version extra number])
4150 AC_DEFINE_UNQUOTED(PACKAGE_VERSION_DEV,"${VERSION_DEV}", [version development string])
4151 AC_SUBST(COPYRIGHT_MESSAGE)
4152 AC_SUBST(VERSION_MESSAGE)
4153 AC_SUBST(VERSION_MAJOR)
4154 AC_SUBST(VERSION_MINOR)
4155 AC_SUBST(VERSION_REVISION)
4156 AC_SUBST(VERSION_EXTRA)
4157 AC_SUBST(COPYRIGHT_YEARS)
4158 AC_DEFINE_UNQUOTED(VLC_COMPILE_BY, "`whoami|sed -e 's/\\\/\\\\\\\/g'`", [user who ran configure])
4159 AC_DEFINE_UNQUOTED(VLC_COMPILE_HOST, "`hostname -f 2>/dev/null || hostname`", [host which ran configure])
4160 AC_DEFINE_UNQUOTED(VLC_COMPILER, "`$CC -v 2>&1 | tail -n 1 | sed -e 's/ *$//'`", [compiler])
4162 dnl  Handle substvars that use $(top_srcdir)
4164 CPPFLAGS="-I\$(top_srcdir)/include -I\$(top_builddir)/include ${CPPFLAGS}"
4167 dnl  Configuration is finished
4169 AC_SUBST(SYS)
4170 AC_SUBST(ARCH)
4171 AC_SUBST(ALIASES)
4172 AC_SUBST(ASM)
4173 AC_SUBST(MOC)
4174 AC_SUBST(RCC)
4175 AC_SUBST(UIC)
4176 AC_SUBST(WINDRES)
4177 AC_SUBST(WINE_SDK_PATH)
4178 AC_SUBST(LIBEXT)
4179 AC_SUBST(AM_CPPFLAGS)
4180 AC_SUBST(MACOSX_DEPLOYMENT_TARGET)
4181 AC_SUBST(FILE_LIBVLCCORE_DLL)
4182 AC_SUBST(FILE_LIBVLC_DLL)
4184 AC_CONFIG_FILES([
4185   Makefile
4186   doc/Makefile
4187   modules/Makefile
4188   m4/Makefile
4189   po/Makefile.in
4190   share/Makefile
4191   compat/Makefile
4192   src/Makefile
4193   lib/Makefile
4194   bin/Makefile
4195   test/Makefile
4196   modules/hw/mmal/Makefile
4197   share/vlc.appdata.xml.in
4200 AM_COND_IF([HAVE_WIN32], [
4201   AC_CONFIG_FILES([
4202     extras/package/win32/NSIS/spad.nsi
4203     extras/package/win32/NSIS/vlc.win32.nsi
4204     extras/package/win32/msi/config.wxi
4205   ])
4208 AM_COND_IF([HAVE_DARWIN], [
4209   AC_CONFIG_FILES([
4210     modules/gui/macosx/UI/InfoPlist.strings:modules/gui/macosx/Resources/InfoPlist.strings.in
4211     share/macosx/Info.plist:share/Info.plist.in
4212   ])
4215 dnl Generate makefiles
4216 AC_OUTPUT
4218 dnl Do we have to use make or gmake ?
4219 if make --version 2>&1|grep -q GNU
4220 then
4221     # GNU make, all seems good
4222     MAKE=make
4223 else
4224     # Known GNU make alias (on BSD)
4225     MAKE=gmake
4227 dnl Shortcut to nice compile message
4228 if test -n $SHELL; then
4229   SHELL=${CONFIG_SHELL-/bin/sh}
4231 rm -f compile
4232 compile_top_srcdir=`sed -ne "s/^top_srcdir *= *//p" < Makefile`
4233 echo "#! $SHELL
4234 rm -f .error\$\$
4235 ERROR=0
4236 export PATH=\"$PATH\" LANG=C
4237 ($MAKE V=1 \$@ 2>&1 || touch .error\$\$)| $compile_top_srcdir/extras/buildsystem/make.pl
4238 test -f .error\$\$ && ERROR=1
4239 rm -f .error\$\$
4240 exit \$ERROR" >compile
4241 chmod a+x compile
4243 echo "
4244 libvlc configuration
4245 --------------------
4246 version               : ${VERSION}
4247 system                : ${SYS}
4248 architecture          : ${ARCH}
4249 optimizations         : ${enable_optimizations}"
4250 if test "${enable_vlc}" != "no"; then
4251 echo "vlc aliases           :${ALIASES}"
4252 else
4253 echo "build vlc executable  : no"
4255 echo "
4256 To build vlc and its plugins, type \`$MAKE', or \`./compile' if you like nice colors."