demux: avi: flag discontinuity on seek
[vlc.git] / configure.ac
blobb4b731a7882f74cbf4283155ec9f4ba6050fa31f
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 _AM_DEPENDENCIES([OBJC])
65 AC_PROG_EGREP
66 AC_PROG_MAKE_SET
67 AC_PROG_INSTALL
68 AM_PROG_AS
70 AC_ARG_VAR([DESKTOP_FILE_VALIDATE], [Validator for desktop entry files])
71 AC_CHECK_PROGS(DESKTOP_FILE_VALIDATE, [${DESKTOP_FILE_VALIDATE} desktop-file-validate], :)
72 AC_ARG_VAR([BUILDCC], [Build system C11 or C99 compiler command])
73 AC_CHECK_PROGS(BUILDCC, [c11-gcc c11 c99-gcc c99], [false])
74 AS_IF([test "$BUILDCC" = "false"], [
75   AC_MSG_ERROR([Cannot find native C99 compiler: please define BUILDCC.])
78 dnl Check for compiler properties
79 AC_C_CONST
80 AC_C_INLINE
81 AC_C_RESTRICT
82 AX_CXX_COMPILE_STDCXX_11(noext, mandatory)
84 dnl Extend the --help string at the current spot.
85 AC_DEFUN([EXTEND_HELP_STRING], [m4_divert_once([HELP_ENABLE], [$1])])
87 dnl Allow binary package maintainer to pass a custom string to avoid
88 dnl cache problem
89 AC_ARG_WITH(binary-version,
90     AS_HELP_STRING([--with-binary-version=STRING],
91          [To avoid plugins cache problem between binary version]),[],[])
92 AS_IF([test -n "${with_binary_version}"],[
93     AC_DEFINE_UNQUOTED([DISTRO_VERSION],["${with_binary_version}"],
94          [Binary specific version])
97 dnl Prevent clang from accepting unknown flags with a mere warning
98 AX_APPEND_COMPILE_FLAGS([-Werror=unknown-warning-option -Werror=invalid-command-line-argument], [CFLAGS])
99 AX_APPEND_COMPILE_FLAGS([-Werror=unknown-warning-option -Werror=invalid-command-line-argument], [CXXFLAGS])
102 dnl  Check the operating system
104 HAVE_WIN64="0"
105 HAVE_IOS="0"
106 HAVE_OSX="0"
107 HAVE_TVOS="0"
109 case "${host_os}" in
110   "")
111     SYS=unknown
112     ;;
113   linux*)
114     SYS=linux
115     ;;
116   bsdi*)
117     SYS=bsdi
118     CFLAGS="${CFLAGS} -pthread"
119     ;;
120   freebsd*)
121     SYS=freebsd
122     CFLAGS="${CFLAGS} -pthread"
123     CPPFLAGS="${CPPFLAGS} -I/usr/local/include"
124     LDFLAGS="${LDFLAGS} -L/usr/local/lib"
125     ac_cv_ld_z_defs=no
126     ;;
127   openbsd*)
128     SYS=openbsd
129     CPPFLAGS="${CPPFLAGS} -I/usr/local/include -I/usr/X11R6/include"
130     LDFLAGS="${LDFLAGS} -L/usr/local/lib -L/usr/X11R6/lib/"
131     ;;
132   netbsd*)
133     SYS=netbsd
134     ;;
135   dragonfly*)
136     SYS=dragonfly
137     ;;
138   darwin*)
140     dnl Force gcc "-arch" flag
141     ARCH_flag=""
142     case "${host}" in
143       i?86*)
144         ARCH_flag="-arch i386"
145       ;;
146       ppc64*)
147         ARCH_flag="-arch ppc64"
148       ;;
149       ppc*)
150         ARCH_flag="-arch ppc"
151       ;;
152       x86_64*)
153         ARCH_flag="-arch x86_64"
154       ;;
155       arm*)
156         ac_cv_c_bigendian="no"
157         ac_cv_c_attribute_packed="no"
158       ;;
159     esac
161     SYS=darwin
162     CFLAGS="${CFLAGS} -D_INTL_REDIRECT_MACROS -std=gnu11 ${ARCH_flag}"
163     CXX="${CXX} -stdlib=libc++ -std=c++11"
164     CXXFLAGS="${CXXFLAGS} -D_INTL_REDIRECT_MACROS ${ARCH_flag}"
165     CPPFLAGS="${CPPFLAGS} ${ARCH_flag}"
166     OBJCFLAGS="${OBJCFLAGS} -D_INTL_REDIRECT_MACROS -std=gnu11 ${ARCH_flag} -Werror=partial-availability"
167     LDFLAGS="${LDFLAGS} -Wl,-headerpad_max_install_names ${ARCH_flag}"
168     VLC_ADD_LIBS([libvlc vlc],[-Wl,-undefined,dynamic_lookup,-framework,AppKit])
169     VLC_ADD_LIBS([libvlccore],[-Wl,-framework,CoreFoundation,-framework,CoreServices])
171     AC_EGREP_CPP(yes,
172             [#import <TargetConditionals.h>
173              #if TARGET_OS_IPHONE
174              yes
175              #endif],
176              [HAVE_IOS="1"],
177              [HAVE_OSX="1"])
179     AC_EGREP_CPP(yes,
180             [#import <TargetConditionals.h>
181              #if TARGET_OS_TV
182              yes
183              #endif],
184              [HAVE_TVOS="1"
185              HAVE_IOS="0"
186              HAVE_OSX="0"
187              ],)
189     dnl Allow binaries created on Lion to run on earlier releases
190     AC_EGREP_CPP(yes,
191            [#import <Cocoa/Cocoa.h>
192             #ifdef MAC_OS_X_VERSION_10_7
193             yes
194             #endif],
195             [AC_MSG_RESULT([yes])
196             AC_LIBOBJ([getdelim])
197             AC_LIBOBJ([strndup])
198             AC_LIBOBJ([strnlen])],)
200     dnl
201     dnl  Handle Mac OS X SDK flags
202     dnl
203     AC_ARG_WITH(macosx-sdk,
204       [AS_HELP_STRING([--with-macosx-sdk=DIR],
205         [compile using the SDK in DIR])])
206     if test "${with_macosx_sdk}" != "" ; then
207         test ! -d "${with_macosx_sdk}" && AC_MSG_ERROR([SDK "${with_macosx_sdk}" not found])
208         CPP="${CPP} -isysroot ${with_macosx_sdk}"
209         CC="${CC} -isysroot ${with_macosx_sdk}"
210         CXX="${CXX} -isysroot ${with_macosx_sdk}"
211         OBJC="${OBJC} -isysroot ${with_macosx_sdk}"
212         LD="${LD} -syslibroot ${with_macosx_sdk}"
213     fi
214     AC_ARG_WITH(macosx-version-min,
215       [AS_HELP_STRING([--with-macosx-version-min=VERSION],
216         [compile for Mac OS X VERSION and above])])
217     if test "${with_macosx_version_min}" != "" ; then
218         CPP="${CPP} -mmacosx-version-min=${with_macosx_version_min}"
219         CC="${CC} -mmacosx-version-min=${with_macosx_version_min}"
220         CXX="${CXX} -mmacosx-version-min=${with_macosx_version_min}"
221         OBJC="${OBJC} -mmacosx-version-min=${with_macosx_version_min}"
222         LD="${LD} -mmacosx_version_min=${with_macosx_version_min}"
223     fi
224     ;;
225   *mingw32* | *cygwin* | *wince* | *mingwce*)
226     dnl Force libtool to not link to (shared) libgcc_s when detecting C++ dependencies
227     dnl When doing this test with -static-libgcc it will link on (static) libgcc_eh
228     CXXFLAGS="${CXXFLAGS} -static-libgcc"
229     AC_CHECK_TOOL(WINDRES, windres, :)
230     AC_CHECK_TOOL(OBJCOPY, objcopy, :)
231     AH_TOP([#if defined(_WIN32) && !defined(_WIN32_WINNT)])
232     AH_TOP([# define _WIN32_WINNT 0x0502 /* Windows XP SP2 */])
233     AH_TOP([#endif])
234     AC_DEFINE([_WIN32_IE], 0x0600, [Define to '0x0600' for IE 6.0 (and shell) APIs.])
235     AC_DEFINE([_UNICODE], [1], [Define to 1 for Unicode (Wide Chars) APIs.])
236     AC_DEFINE([UNICODE], [1], [Define to 1 for Unicode (Wide Chars) APIs.])
237     AC_DEFINE([_ISOC99_SOURCE], [1], [Extensions to ISO C89 from ISO C99.])
238     AC_DEFINE([_ISOC11_SOURCE], [1], [Extensions to ISO C99 from ISO C11.])
239     AC_DEFINE([_POSIX_SOURCE], [1], [IEEE Std 1003.1.])
240     AC_DEFINE([_POSIX_C_SOURCE], [200809L], [IEEE Std 1003.1.])
241     AC_DEFINE([_XOPEN_SOURCE], [700], [POSIX and XPG 7th edition])
242     AC_DEFINE([_XOPEN_SOURCE_EXTENDED], [1], [XPG things and X/Open Unix extensions.])
243     AC_DEFINE([_BSD_SOURCE], [1], [ISO C, POSIX, and 4.3BSD things.])
244     AC_DEFINE([_SVID_SOURCE], [1], [ISO C, POSIX, and SVID things.])
246     case "${host_os}" in
247       *mingw32*)
248         SYS=mingw32
249         ;;
250       *cygwin*)
251         dnl Check if we are using the mno-cygwin mode in which case we are
252         dnl actually dealing with a mingw32 compiler.
253         AC_EGREP_CPP(yes,
254             [#ifdef _WIN32
255              yes
256              #endif],
257             SYS=mingw32, AC_MSG_ERROR([VLC requires -mno-cygwin]))
258         ;;
259     esac
261     if test "${SYS}" = "mingw32"; then
262         # DEP, ASLR, NO SEH
263         LDFLAGS="${LDFLAGS} -Wl,--nxcompat -Wl,--no-seh -Wl,--dynamicbase"
265         AC_CHECK_PROGS(U2D, [unix2dos todos], unix2dos)
266         ac_default_prefix="`pwd`/_win32"
267         DESTDIR="`pwd`/_win32/"
269         dnl
270         dnl NSIS/MSI Installer prefix and WIN64
271         dnl
272         case "${host}" in
273             amd64*|x86_64*)
274                 HAVE_WIN64="1"
275                 WINDOWS_ARCH="x64"
276                 PROGRAMFILES="PROGRAMFILES64"
277                 LDFLAGS="${LDFLAGS} -Wl,--high-entropy-va -Wl,--image-base,0x140000000"
278             ;;
279             *)
280                 WINDOWS_ARCH="x86"
281                 PROGRAMFILES="PROGRAMFILES"
282             ;;
283         esac
284         AC_SUBST(WINDOWS_ARCH)
285         AC_SUBST(PROGRAMFILES)
287     fi
288     ;;
289   *nto*)
290     SYS=nto
291     ;;
292   solaris*)
293     SYS=solaris
294     ;;
295   hpux*)
296     SYS=hpux
297     ;;
298   *os2*)
299     SYS=os2
300     LDFLAGS="${LDFLAGS} -Zomf -Zbin-files -Zargs-wild -Zhigh-mem"
301     AC_LIBOBJ([freeaddrinfo])
302     AC_LIBOBJ([gai_strerror])
303     ;;
304   *nacl*)
305     SYS=nacl
306     AC_DEFINE([_XOPEN_SOURCE], [700], [POSIX and XPG 7th edition])
307     AC_LIBOBJ([sigwait])
308     AC_LIBOBJ([recvmsg])
309     AC_LIBOBJ([sendmsg])
310     ;;
311   *)
312     SYS="${host_os}"
313     ;;
314 esac
316 dnl WinRT
317 AC_ARG_ENABLE(winstore_app,
318      AS_HELP_STRING([--enable-winstore-app],
319                     [Build targetted for Windows Store apps (default disabled)]))
321 vlc_winstore_app=0
322 AS_IF([test "${SYS}" = "mingw32"],[
323   LIBCOM="-lole32"
324   AS_IF([test "${enable_winstore_app}" = "yes"], [
325     vlc_winstore_app=1
326     LIBCOM=""
327      VLC_ADD_LIBS([libvlccore], [-lruntimeobject])
328      AC_LIBOBJ([gai_strerror])
329     ],[])
330   AC_SUBST(LIBCOM)
331   ])
332 AC_DEFINE_UNQUOTED(VLC_WINSTORE_APP, ${vlc_winstore_app}, [Define to 1 if you want to build for Windows Store apps])
334 AM_CONDITIONAL(HAVE_LINUX,   test "${SYS}" = "linux")
335 AM_CONDITIONAL(HAVE_OS2,     test "${SYS}" = "os2")
337 AM_CONDITIONAL(HAVE_DARWIN,  test "${SYS}" = "darwin")
338 AM_CONDITIONAL(HAVE_IOS,     test "${HAVE_IOS}" = "1")
339 AM_CONDITIONAL(HAVE_OSX,     test "${HAVE_OSX}" = "1")
340 AM_CONDITIONAL(HAVE_TVOS,    test "${HAVE_TVOS}" = "1")
342 AM_CONDITIONAL(HAVE_NACL,    test "${SYS}" = "nacl")
344 AM_CONDITIONAL(HAVE_WIN32,   test "${SYS}" = "mingw32")
345 AM_CONDITIONAL(HAVE_WIN64,   test "${HAVE_WIN64}" = "1") dnl Only used for the packaging
346 AM_CONDITIONAL([HAVE_WINSTORE], [test "$vlc_winstore_app" = "1"])
347 AM_CONDITIONAL([HAVE_WIN32_DESKTOP], [test "${SYS}" = "mingw32" -a "$vlc_winstore_app" = "0"])
350 dnl Sadly autoconf does not think about testing foo.exe when ask to test
351 dnl for program foo on win32
352 case "${build_os}" in
353     cygwin|msys|mingw32)
354         ac_executable_extensions=".exe"
355         BUILDEXEEXT=".exe"
356     ;;
357     os2*)
358         BUILDEXEEXT=".exe"
359     ;;
360     *)
361     ;;
362 esac
363 AC_SUBST(BUILDEXEEXT)
365 dnl Android is linux, but a bit different
366 AS_IF([test "$SYS" = linux],[
367     AC_MSG_CHECKING([for an Android system])
368     AC_PREPROC_IFELSE([AC_LANG_PROGRAM(
369         [[#ifndef __ANDROID__
370          # error Not Android
371          #endif
372         ]],[[;]])
373     ],[
374       HAVE_ANDROID="1"
375       AC_MSG_RESULT([yes])
376     ],[
377       AC_MSG_RESULT([no])
378     ])
380 AM_CONDITIONAL(HAVE_ANDROID, test "${HAVE_ANDROID}" = "1")
382 dnl Tizen (minimum SDK version: 2.3)
383 AS_IF([test "$SYS" = linux],[
384     AC_MSG_CHECKING([for Tizen])
385     AC_PREPROC_IFELSE([AC_LANG_PROGRAM(
386         [[#include <tizen.h>
387         ]],[[;]])
388     ],[
389       HAVE_TIZEN="1"
390       AC_DEFINE([HAVE_TIZEN_SDK], [1], [Define to 1 if vlc is built against Tizen SDK])
391       AC_MSG_RESULT([yes])
392     ],[
393       AC_MSG_RESULT([no])
394     ])
396 AM_CONDITIONAL(HAVE_TIZEN, test "${HAVE_TIZEN}" = "1")
399 dnl  Check for the contrib directory
401 AC_ARG_WITH(contrib,
402   [AS_HELP_STRING([--with-contrib[=DIR]],
403     [search for 3rd party libraries in DIR/include and DIR/lib])
405 AC_MSG_CHECKING([for 3rd party libraries path])
406 AS_IF([test -z "${with_contrib}" || test "${with_contrib}" = "yes"], [
407   CONTRIB_DIR="${srcdir}/contrib/${host}"
408   AS_IF([test ! -d "${CONTRIB_DIR}"], [
409     echo "${CONTRIB_DIR} not found" >&AS_MESSAGE_LOG_FD
410     CONTRIB_DIR="${srcdir}/contrib/`$CC -dumpmachine`"
411     AS_IF([test ! -d "${CONTRIB_DIR}"], [
412       echo "${CONTRIB_DIR} not found" >&AS_MESSAGE_LOG_FD
413       CONTRIB_DIR=""
414       AC_MSG_RESULT([not found])
415     ])
416   ])
417 ], [
418   AS_IF([test "${with_contrib}" != "no"], [
419     CONTRIB_DIR="${with_contrib}"
420   ], [
421     CONTRIB_DIR=""
422     AC_MSG_RESULT([disabled])
423   ])
425 AS_IF([test -n "${CONTRIB_DIR}"], [
426   AS_IF([test -d "${CONTRIB_DIR}/lib"],[
427     CONTRIB_DIR=`cd "${CONTRIB_DIR}" && pwd`
428   ], [
429     echo "${CONTRIB_DIR}/lib not found" >&AS_MESSAGE_LOG_FD
430     CONTRIB_DIR=""
431     AC_MSG_RESULT([not usable])
432   ])
435 AS_IF([test -n "${CONTRIB_DIR}"], [
436   AC_MSG_RESULT([${CONTRIB_DIR}])
437   CPPFLAGS="${CPPFLAGS} -I${CONTRIB_DIR}/include"
438   CFLAGS="${CFLAGS} -I${CONTRIB_DIR}/include"
439   CXXFLAGS="${CXXFLAGS} -I${CONTRIB_DIR}/include"
440   OBJCFLAGS="${OBJCFLAGS} -I${CONTRIB_DIR}/include -F${CONTRIB_DIR} -F${CONTRIB_DIR}/Frameworks"
441   export PKG_CONFIG_PATH="${CONTRIB_DIR}/lib/pkgconfig:$PKG_CONFIG_PATH"
442   LDFLAGS="${LDFLAGS} -L${CONTRIB_DIR}/lib"
444   AS_IF([test -z "$LUAC"], [
445     dnl Old contribs mixed cross-tools and cross-compiled executables
446     AS_IF([test -x "${CONTRIB_DIR}/bin/luac${BUILDEXEEXT}"], [
447       LUAC="${CONTRIB_DIR}/bin/luac${BUILDEXEEXT}"
448     ])
450     dnl Newer contribs follow usual name space rules
451     AS_IF([test -x "${CONTRIB_DIR}/../bin/${host_alias}-luac${BUILDEXEEXT}"], [
452       LUAC="${CONTRIB_DIR}/../bin/${host_alias}-luac${BUILDEXEEXT}"
453     ])
454   ])
456   AS_IF([test "${SYS}" = "darwin"], [
457     export LD_LIBRARY_PATH="${CONTRIB_DIR}/lib:$LD_LIBRARY_PATH"
458     export DYLD_LIBRARY_PATH="${CONTRIB_DIR}/lib:$DYLD_LIBRARY_PATH"
459   ])
460 ], [
461   AS_IF([test -n "${with_contrib}" && test "${with_contrib}" != "no"], [
462     AC_MSG_ERROR([Third party libraries not found!])
463   ])
465 AC_SUBST(CONTRIB_DIR)
467 dnl Add extras/tools to the PATH
468 TOOLS_DIR="${srcdir}/extras/tools/build/bin"
469 AS_IF([test -d "${TOOLS_DIR}"], [
470     TOOLS_DIR=`cd "${TOOLS_DIR}" && pwd`
471     export PATH="${TOOLS_DIR}":$PATH
475 dnl  Libtool
476 dnl  It's very bad, but our former custom system was worst
477 dnl  -- Courmisch
480 dnl override platform specific check for dependent libraries
481 dnl otherwise libtool linking of shared libraries will
482 dnl fail on anything other than pass_all.
483 AC_CACHE_VAL(lt_cv_deplibs_check_method,
484     [lt_cv_deplibs_check_method=pass_all])
486 LT_INIT([dlopen win32-dll shared disable-static])
487 LT_LANG([C++])
488 LT_LANG([Windows Resource])
490 DOLT
492 lt_cv_deplibs_check_method=pass_all
494 AS_IF([test "${enable_shared}" = "no" -a "${enable_vlc}" != "no"], [
495   AC_MSG_ERROR([VLC is based on plugins. Shared libraries cannot be disabled.])
499 dnl Gettext stuff
501 AM_GNU_GETTEXT_VERSION([0.19.8])
502 AM_GNU_GETTEXT([external], [need-formatstring-macros])
505 dnl Iconv stuff
507 AM_ICONV
510 dnl checks for mingw
511 AS_IF([test "${SYS}" = "mingw32"], [
513 AC_PREPROC_IFELSE([AC_LANG_SOURCE([
514 #if !defined(__MINGW32__)
515 # error Not compiling with mingw
516 #endif
517     ])], [
519 dnl Check for broken versions of mingw-runtime compatability library
520     AC_MSG_CHECKING(for broken mingw-runtime)
521     AC_PREPROC_IFELSE([AC_LANG_SOURCE([
522 #include <_mingw.h>
523 #if defined(__MINGW64_VERSION_MAJOR)
524 # if __MINGW64_VERSION_MAJOR < 3
525 #  error Attempting to use mingw-runtime with broken vsnprintf support
526 # endif
527 #elif __MINGW32_MAJOR_VERSION == 3 && __MINGW32_MINOR_VERSION < 15
528 # error Attempting to use mingw-runtime with broken vsnprintf support
529 #endif
530     ])], [
531         AC_MSG_RESULT([ok])
532     ], [
533         AC_MSG_RESULT([present])
534         AC_MSG_ERROR([LibVLC requires mingw-runtime version 3.15 or higher, or mingw-w64 version 3.0 or higher!])
535     ])
537     dnl force use of mingw provided c99 *printf over msvcrt
538     CPPFLAGS="${CPPFLAGS} -D__USE_MINGW_ANSI_STDIO=1"
540     dnl Check for the need to include the mingwex lib for mingw32
541     VLC_SAVE_FLAGS
542     AC_CHECK_LIB(mingwex,opendir,
543         AC_CHECK_LIB(mingw32,opendir,,
544             [VLC_ADD_LIBS([libvlccore],[-lmingwex])])
545     )
546     VLC_RESTORE_FLAGS
547     ], [
548         AC_MSG_RESULT([Not compiling with mingw])
549     ])
551     dnl Check for fnative-struct or mms-bitfields support for mingw32
552     VLC_SAVE_FLAGS
553     CFLAGS="${CFLAGS} -mms-bitfields"
554     CXXFLAGS="${CXXFLAGS} -mms-bitfields"
555     AC_CACHE_CHECK([if \$CC accepts -mms-bitfields],
556         [ac_cv_c_mms_bitfields],
557         [AC_TRY_COMPILE([],,ac_cv_c_mms_bitfields=yes, ac_cv_c_mms_bitfields=no)])
558     if test "${ac_cv_c_mms_bitfields}" = "no"; then
559         VLC_RESTORE_FLAGS
560         CFLAGS="${CFLAGS} -fnative-struct"
561         CXXFLAGS="${CXXFLAGS} -fnative-struct"
562         AC_CACHE_CHECK([if \$CC accepts -fnative-struct],
563             [ac_cv_c_fnative_struct],
564             [AC_TRY_COMPILE([],,ac_cv_c_fnative_struct=yes, ac_cv_c_fnative_struct=no)])
565         "${ac_cv_c_fnative_struct}" = "no" && VLC_RESTORE_FLAGS
566     fi
571 dnl Buggy glibc prevention. Purposedly not cached.
572 dnl See sourceware.org bugs 5058 and 5443.
573 dnl Ubuntu alone has 20 bug numbers for this...
575 AC_MSG_CHECKING(for buggy GNU/libc versions)
576 AC_PREPROC_IFELSE([AC_LANG_SOURCE([
577 #include <limits.h>
578 #if defined (__GLIBC__) && (__GLIBC__ == 2) \
579   && (__GLIBC_MINOR__ >= 5) && (__GLIBC_MINOR__ <= 7)
580 # error GNU/libc with dcgettext killer bug!
581 #endif
582 ])], [
583   AC_MSG_RESULT([not present])
584 ], [
585   AC_MSG_RESULT([found])
586   AS_IF([test "x${enable_nls}" != "xno"], [
587     AC_MSG_ERROR([Buggy GNU/libc (version 2.5 - 2.7) present. VLC would crash; there is no viable
588 work-around for this. Check with your distribution vendor on how to update the
589 glibc run-time. Alternatively, build with --disable-nls.])
590   ])
593 dnl Plugin compilation stuff
595 VLC_LIBRARY_SUFFIX
597 dnl Check for system libs needed
598 need_libc=false
600 dnl Check for usual libc functions
601 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])
602 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])
603 AC_REPLACE_FUNCS([gettimeofday])
604 AC_CHECK_FUNC(fdatasync,,
605   [AC_DEFINE(fdatasync, fsync, [Alias fdatasync() to fsync() if missing.])
608 VLC_REPLACE_DECL([realpath], [#include <stdlib.h>])
610 dnl mingw64 implements those as static inline, not functions with C linkage
611 VLC_REPLACE_DECL([asprintf], [#include <stdio.h>])
612 VLC_REPLACE_DECL([vasprintf], [#include <stdio.h>])
613 VLC_REPLACE_DECL([gmtime_r], [#include <time.h>])
614 VLC_REPLACE_DECL([localtime_r], [#include <time.h>])
616 dnl C11 static_assert()
617 AC_MSG_CHECKING([for static_assert in assert.h])
618 AC_LINK_IFELSE([AC_LANG_PROGRAM([#include <assert.h>], [
619 static_assert(1, "The impossible happened.");
620 ])], [
621   AC_MSG_RESULT([yes])
622   AC_DEFINE([HAVE_STATIC_ASSERT], [1], [Define to 1 if <assert.h> defines static_assert.])
623 ], [
624   AC_MSG_RESULT([no])
627 # Windows CE does not have strcoll()
628 AC_FUNC_STRCOLL
630 dnl Check for non-standard system calls
631 case "$SYS" in
632   "linux")
633     AC_CHECK_FUNCS([accept4 pipe2 eventfd vmsplice sched_getaffinity recvmmsg])
634     ;;
635   "mingw32")
636     AC_CHECK_FUNCS([_lock_file])
637     ;;
638 esac
640 AH_BOTTOM([#include <vlc_fixups.h>])
642 dnl Check for struct pollfd
643 AC_CHECK_TYPES([struct pollfd],,,
644 [#include <sys/types.h>
645 #if HAVE_POLL
646 # include <poll.h>
647 #elif defined (_WIN32)
648 # include <winsock2.h>
649 #endif
652 dnl Check for struct timespec
653 AC_CHECK_TYPES([struct timespec],,,
654 [#include <time.h>])
656 dnl Check for max_align_t
657 AC_CHECK_TYPES([max_align_t],,,
658 [#include <stddef.h>])
660 dnl Checks for socket stuff
661 VLC_SAVE_FLAGS
662 SOCKET_LIBS=""
663 AC_SEARCH_LIBS(connect, [socket], [
664   AS_IF([test "$ac_cv_search_connect" != "none required"], [
665     SOCKET_LIBS="$ac_cv_search_connect"
666   ])
667 ], [
668   AS_IF([test "${SYS}" = "mingw32"], [
669     SOCKET_LIBS="-lws2_32"
670   ])
673 AC_SEARCH_LIBS([inet_pton], [nsl], [
674  AS_IF([test "$ac_cv_search_inet_pton" != "none required"], [
675     SOCKET_LIBS="$ac_cv_search_inet_pton $SOCKET_LIBS"
676   ])
677 ],, [${SOCKET_LIBS}])
679 LIBS="${LIBS} ${SOCKET_LIBS}"
680 AC_LINK_IFELSE([
681     AC_LANG_PROGRAM([#ifdef _WIN32
682         # if _WIN32_WINNT < 0x600
683         #  error Needs vista+
684         # endif
685         #include <ws2tcpip.h>
686         #else
687         #include <sys/socket.h>
688         #include <arpa/inet.h>
689         #endif], [
690         char dst[[sizeof(struct in_addr)]];
691         inet_pton(AF_INET, "127.0.0.1", dst);
692     ])],[AC_DEFINE([HAVE_INET_PTON],[1],[Define to 1 if you have inet_pton function])],[AC_LIBOBJ([inet_pton])])
693 AC_CHECK_FUNCS([if_nameindex if_nametoindex])
694 VLC_RESTORE_FLAGS
695 AC_SUBST(SOCKET_LIBS)
697 dnl Check for socklen_t
698 AH_TEMPLATE(socklen_t, [Define to `int' if <sys/socket.h> does not define.])
699 AC_CACHE_CHECK([for socklen_t in sys/socket.h], dnl ` (fix VIM syntax highlight
700 ac_cv_type_socklen_t,
701 [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([
702 [#include <sys/types.h>
703 #ifdef _WIN32
704 # include <winsock2.h>
705 # include <ws2tcpip.h>
706 #else
707 # include <sys/socket.h>
708 #endif]], [[socklen_t len; len = 0;]])],
709 ac_cv_type_socklen_t=yes,
710 ac_cv_type_socklen_t=no)])
711 AS_IF([test "$ac_cv_type_socklen_t" = no],
712  [AC_DEFINE(socklen_t, int)])
714 dnl Check for struct sockaddr_storage
715 AH_TEMPLATE(sockaddr_storage, [Define to `sockaddr' if <sys/socket.h> does not define.]) dnl ` (fix VIM syntax highlight
716 AH_TEMPLATE(ss_family, [Define to `sa_family' if <sys/socket.h> does not define.]) dnl ` (fix VIM syntax highlight
717 AC_CACHE_CHECK([for struct sockaddr_storage], ac_cv_struct_sockaddr_storage,
718   [AC_TRY_COMPILE(
719     [#include <sys/types.h>
720      #if defined( _WIN32 )
721      # include <winsock2.h>
722      #else
723      # include <sys/socket.h>
724      #endif], [struct sockaddr_storage addr;],
725      ac_cv_struct_sockaddr_storage=yes,
726      ac_cv_struct_sockaddr_storage=no)])
727 AS_IF([test "${ac_cv_struct_sockaddr_storage}" = no], [
728   AC_DEFINE(sockaddr_storage, sockaddr)
729   AC_DEFINE(ss_family, sa_family)
732 dnl FreeBSD has a gnugetopt library for this:
733 GNUGETOPT_LIBS=""
734 AC_CHECK_FUNC(getopt_long,, [
735   AC_CHECK_LIB([gnugetopt],[getopt_long], [
736     GNUGETOPT_LIBS="-lgnugetopt"
737   ])
739 AC_SUBST(GNUGETOPT_LIBS)
741 AC_CHECK_LIB(m,cos,[
742   LIBM="-lm"
743 ], [
744   LIBM=""
746 AC_SUBST(LIBM)
748 AC_CHECK_LIB(m,lrintf, [
749   AC_DEFINE(HAVE_LRINTF, 1, [Define to 1 if you have the lrintf function])
750   VLC_ADD_LIBS([skins2],[-lm])
752 AC_CHECK_LIB(m,nanf,
753   AC_DEFINE(HAVE_NANF, 1, [Define to 1 if you have the NANF function])
755 AC_CHECK_LIB(m,sincos, [
756   AC_DEFINE(HAVE_SINCOS, 1, [Define to 1 if you have the sincos function.])
757 ], [
758   AC_LIBOBJ([sincos])
761 AC_MSG_CHECKING([_Thread_local support])
762 AC_COMPILE_IFELSE([AC_LANG_SOURCE([_Thread_local int foo = 0;
763                    int main() {}])], [
764     AC_MSG_RESULT([ok])
765     AC_DEFINE(HAVE_THREAD_LOCAL, 1, [Defined to 1 if C11 _Thread_local storage qualifier is supported])
766 ],[ AC_MSG_RESULT([no])])
768 dnl __STDC_NO_THREADS__ can't be trusted on some platforms.
769 dnl check for its availability explicitely
770 AC_CHECK_HEADERS([threads.h])
772 dnl Check for dynamic plugins
773 LIBDL=""
774 have_dynamic_objects="no"
775 VLC_SAVE_FLAGS
776 AC_SEARCH_LIBS(dlsym, [dl svld], [
777   AS_IF([test "$ac_cv_search_dlsym" != "none required"], [
778     LIBDL="$ac_cv_search_dlsym"
779   ])
780   have_dynamic_objects="yes"
782 VLC_RESTORE_FLAGS
784 # Windows
785 AS_IF([test "${SYS}" = "mingw32"], [
786   LIBDL=""
787   have_dynamic_objects="yes" #assume we can use shared objects
790 AS_IF([test "${enable_shared}" = "no"], [
791   have_dynamic_objects=no
793 AM_CONDITIONAL(HAVE_DYNAMIC_PLUGINS, [test "${have_dynamic_objects}" != "no"])
795 AC_SUBST(LIBDL)
797 dnl Check for thread library
798 LIBPTHREAD=""
799 AS_IF([test "${SYS}" != "mingw32"], [
800   VLC_SAVE_FLAGS
801   LIBS=""
802   AC_SEARCH_LIBS(pthread_rwlock_init, pthread pthreads c_r, [
803     AS_IF([test "$ac_cv_search_pthread_rwlock_init" != "none required"], [
804       LIBPTHREAD="$ac_cv_search_pthread_rwlock_init"
805     ])
806   ])
807   VLC_RESTORE_FLAGS
809 AC_SUBST(LIBPTHREAD)
811 AC_SEARCH_LIBS([clock_nanosleep], [rt pthread], [
812   AS_IF([test "$ac_cv_search_clock_nanosleep" != "none required"], [
813     LIBRT="$ac_cv_search_clock_nanosleep"
814   ])
815 ], [
816   AC_SEARCH_LIBS([nanosleep], [rt pthread posix4], [
817     AS_IF([test "$ac_cv_search_nanosleep" != "none required"], [
818       LIBRT="$ac_cv_search_nanosleep"
819     ])
820   ])
822 AC_SUBST(LIBRT)
825 dnl Check for headers
828 dnl  POSIX
829 AC_CHECK_HEADERS([arpa/inet.h pthread.h search.h sys/shm.h sys/socket.h sys/uio.h])
830 AC_CHECK_HEADERS([net/if.h], [], [],
832 #include <sys/types.h>
833 #include <sys/socket.h>
835 AC_CHECK_HEADER([syslog.h], [have_syslog="yes"], [have_syslog="no"])
836 AM_CONDITIONAL([HAVE_SYSLOG], [test "$have_syslog" = "yes"])
838 dnl  BSD
839 AC_CHECK_HEADERS([netinet/tcp.h netinet/udplite.h sys/param.h sys/mount.h])
841 dnl  GNU/Linux
842 AC_CHECK_HEADERS([features.h getopt.h linux/dccp.h linux/magic.h mntent.h sys/eventfd.h])
844 dnl  MacOS
845 AC_CHECK_HEADERS([xlocale.h])
847 dnl LP64 and LLP64 architectures had better define ssize_t by themselves...
848 AH_TEMPLATE(ssize_t, [Define to `int' if <stddef.h> does not define.]) dnl ` (fix VIM syntax highlight
849 AC_CHECK_TYPE(ssize_t,, [
850   AC_DEFINE(ssize_t, int)
853 dnl It seems that autoconf detects pkg-config only during the first
854 dnl PKG_CHECK_MODULES from configure.ac - which makes sense. But in our case,
855 dnl it is nested within a conditional block, so it was not working right.
856 dnl Make PKG_CONFIG_PATH precious so that it appears in the help and get saved
857 AC_ARG_VAR(PKG_CONFIG_PATH,
858        [Paths where to find .pc not at the default location])
859 PKG_PROG_PKG_CONFIG()
861 dnl On some OS we need static linking
862 AS_IF([test -n "${PKG_CONFIG}" ],[
863     AS_IF([test "${SYS}" = "mingw32" -o "${SYS}" = "darwin" -o "${SYS}" = "os2" ],[
864         PKG_CONFIG="${PKG_CONFIG} --static"
865     ])
870 dnl Check for zlib.h and -lz along with system -lminizip if available
872 AC_CHECK_HEADERS(zlib.h, [ have_zlib=yes ], [ have_zlib=no ])
873 AM_CONDITIONAL(HAVE_ZLIB, [ test "${have_zlib}" = "yes" ])
874 if test "${have_zlib}" = "yes"
875 then
876   VLC_ADD_LIBS([sap],[-lz])
877   PKG_CHECK_MODULES([MINIZIP], [minizip] , [ have_minizip=yes ], [
878     AC_CHECK_HEADERS([unzip.h], [
879       have_minizip=yes
880       MINIZIP_LIBS="-lminizip -lz"
881     ], [
882       have_minizip=no
883     ])
884   ])
886 AM_CONDITIONAL(HAVE_MINIZIP, [ test "${have_minizip}" = "yes" ])
890 dnl Domain name i18n support via GNU libidn
892 PKG_CHECK_MODULES([IDN], [libidn], [
893   have_libidn="yes"
894   AC_DEFINE([HAVE_IDN], 1, [Define to 1 if you have GNU libidn.])
895 ], [
896   have_libidn="no"
900 dnl Check for dbus
901 AC_ARG_ENABLE(dbus,
902   [AS_HELP_STRING([--enable-dbus],
903     [compile D-Bus message bus support (default enabled)])])
904 have_dbus="no"
905 AS_IF([test "${enable_dbus}" != "no"], [
906   PKG_CHECK_MODULES(DBUS, [dbus-1 >= 1.6.0], [
907     have_dbus="yes"
908   ], [
909     AS_IF([test -n "${enable_dbus}"], [
910       AC_MSG_ERROR([${DBUS_PKG_ERRORS}.])
911     ], [
912       AC_MSG_WARN([${DBUS_PKG_ERRORS}.])
913     ])
914   ])
916 AM_CONDITIONAL([HAVE_DBUS], [test "${have_dbus}" = "yes"])
919 dnl Check for systemd
920 PKG_CHECK_MODULES([SYSTEMD], [libsystemd], [
921   have_systemd="yes"
922 ], [
923   AC_MSG_WARN([${SYSTEMD_PKG_ERRORS}.])
925 AM_CONDITIONAL([HAVE_SYSTEMD], [test "${have_systemd}" = "yes"])
928 EXTEND_HELP_STRING([Optimization options:])
930 dnl  Compiler warnings
933 AX_APPEND_COMPILE_FLAGS([-Wall -Wextra -Wsign-compare -Wundef -Wpointer-arith -Wvolatile-register-var -Wformat -Wformat-security], [CFLAGS])
934 AX_APPEND_COMPILE_FLAGS([-Wall -Wextra -Wsign-compare -Wundef -Wpointer-arith -Wvolatile-register-var -Wformat -Wformat-security], [CXXFLAGS])
936 AX_APPEND_COMPILE_FLAGS([-Wbad-function-cast -Wwrite-strings -Wmissing-prototypes -Werror-implicit-function-declaration -Winit-self -Wlogical-op -Wshadow=local], [CFLAGS])
937 AX_APPEND_COMPILE_FLAGS([-pipe], [CFLAGS])
940 dnl  Debugging mode
942 AC_ARG_ENABLE(debug,
943   [AS_HELP_STRING([--enable-debug],
944     [build with run-time assertions (default disabled)])],,
945   [enable_debug="no"])
946 AH_TEMPLATE(NDEBUG,
947             [Define to 1 if debug code should NOT be compiled])
948 AS_IF([test "${enable_debug}" != "no"], [
949   AC_CHECK_HEADERS([valgrind/valgrind.h])
950 ], [
951   AC_DEFINE(NDEBUG)
955 dnl  Profiling
957 AC_ARG_ENABLE(gprof,
958   [AS_HELP_STRING([--enable-gprof],[profile with gprof (default disabled)])],,
959   [enable_gprof="no"])
960 AS_IF([test "${enable_gprof}" != "no"], [
961   CFLAGS="${CFLAGS} -pg"
962   CXXFLAGS="${CXXFLAGS} -pg"
963   OBJCFLAGS="${OBJCFLAGS} -pg"
964   LDFLAGS="${LDFLAGS} -pg"
967 AC_ARG_ENABLE(cprof,
968   [AS_HELP_STRING([--enable-cprof],[profile with cprof (default disabled)])],,
969   [enable_cprof="no"])
970 AS_IF([test "${enable_gprof}" != "no"], [
971   CFLAGS="${CFLAGS} -finstrument-functions"
972   CXXFLAGS="${CXXFLAGS} -finstrument-functions"
973   OBJCFLAGS="${OBJCFLAGS} -finstrument-functions"
974   LDFLAGS="${LDFLAGS} -finstrument-functions"
978 dnl  Test coverage
980 AC_ARG_ENABLE(coverage,
981   [AS_HELP_STRING([--enable-coverage],
982     [build for test coverage (default disabled)])],,
983   [enable_coverage="no"])
984 AS_IF([test "${enable_coverage}" != "no"], [
985   CFLAGS="-fprofile-arcs -ftest-coverage ${CFLAGS}"
986   CXXFLAGS="-fprofile-arcs -ftest-coverage ${CXXFLAGS}"
987   LDFLAGS="-lgcov ${LDFLAGS}"
990 AS_IF([test "${SYS}" != "mingw32" -a "${SYS}" != "os2"], [
991   VLC_SAVE_FLAGS
992   CFLAGS="${CFLAGS} -fvisibility=hidden"
993   CXXFLAGS="${CXXFLAGS} -fvisibility=hidden"
994   OBJCFLAGS="${OBJCFLAGS} -fvisibility=hidden"
995   AC_CACHE_CHECK([if $CC accepts -fvisibility=hidden],
996                  [ac_cv_c_visibility_hidden], [
997     AC_COMPILE_IFELSE([AC_LANG_PROGRAM()], [
998       ac_cv_c_visibility_hidden=yes
999     ], [
1000       ac_cv_c_visibility_hidden=no
1001     ])
1002   ])
1003   AS_IF([test "${ac_cv_c_visibility_hidden}" = "no"], [VLC_RESTORE_FLAGS])
1007 dnl Sanitizer flags
1009 AC_ARG_WITH([sanitizer],
1010     [AS_HELP_STRING([--with-sanitizer=(address/memory/undefined/thread)],
1011         [build with sanitizer flags (default disabled)])],
1012      [],
1013      [with_sanitizer=no])
1015 AS_VAR_IF(with_sanitizer, no, [], [
1016     AX_CHECK_COMPILE_FLAG([-fsanitize=${with_sanitizer}], [
1017         AX_APPEND_FLAG([-fsanitize=${with_sanitizer}])
1018         AX_APPEND_FLAG([-fsanitize=${with_sanitizer}], [CXXFLAGS])
1019         AX_APPEND_FLAG([-fsanitize=${with_sanitizer}], [LDFLAGS])
1020     ], [
1021         AC_MSG_ERROR(["-fsanitize=${with_sanitizer} not supported!"])
1022     ])
1023     AX_APPEND_FLAG([-g])
1024     AX_APPEND_FLAG([-g], [CXXFLAGS])
1026     AS_IF([test -z "${with_sanitizer##*address*}" ], [
1027        AX_APPEND_COMPILE_FLAGS([-fsanitize-address-use-after-scope -fno-omit-frame-pointer])
1028        AX_APPEND_COMPILE_FLAGS([-fsanitize-address-use-after-scope -fno-omit-frame-pointer], [CXXFLAGS])
1029     ])
1030     AS_IF([test -z "${with_sanitizer##*memory*}" ], [
1031         AX_APPEND_COMPILE_FLAGS([-fPIE -pie])
1032         AX_APPEND_COMPILE_FLAGS([-fPIE -pie], [CXXFLAGS])
1033     ])
1034     AS_IF([test -z "${with_sanitizer##*thread*}" ], [
1035         AX_APPEND_COMPILE_FLAGS([-fPIE -pie])
1036         AX_APPEND_COMPILE_FLAGS([-fPIE -pie], [CXXFLAGS])
1037     ])
1041 dnl  Enable/disable optimizations
1043 AC_ARG_ENABLE(optimizations,
1044   [AS_HELP_STRING([--disable-optimizations],
1045     [disable compiler optimizations (default enabled)])],,
1046   [enable_optimizations="yes"])
1048 dnl Check for various optimization flags
1049 AS_IF([test "${enable_optimizations}" != "no"], [
1051   dnl -O3 only in production builds
1052   AS_IF([test "${enable_debug}" = "no"], [
1053     VLC_SAVE_FLAGS
1054     CFLAGS="${CFLAGS} -O3"
1055     CXXFLAGS="${CXXFLAGS} -O3"
1056     OBJCFLAGS="${OBJCFLAGS} -O3"
1057     AC_CACHE_CHECK([if $CC accepts -O3],  [ac_cv_c_o3], [
1058       AC_COMPILE_IFELSE([AC_LANG_PROGRAM()], [
1059         ac_cv_c_o3=yes
1060       ], [
1061         ac_cv_c_o3=no
1062       ])
1063     ])
1064     AS_IF([test "${ac_cv_c_o3}" = "no"], [VLC_RESTORE_FLAGS])
1065   ])
1067   dnl Check for fast maths
1068   AX_APPEND_COMPILE_FLAGS([-fno-math-errno -funsafe-math-optimizations -fno-rounding-math -fno-signaling-nans -fcx-limited-range], [CFLAGS])
1069   AX_APPEND_COMPILE_FLAGS([-fno-math-errno -funsafe-math-optimizations -fno-rounding-math -fno-signaling-nans -fcx-limited-range], [CXXFLAGS])
1071 AH_BOTTOM([
1072 #if defined(_MSC_VER) && !defined(__clang__)
1073 # pragma fenv_access(off)
1074 # pragma fp_contract(on)
1075 #elif defined(__GNUC__)
1076 /* Not supported so far */
1077 #else
1078 # pragma STDC FENV_ACCESS OFF
1079 # pragma STDC FP_CONTRACT ON
1080 #endif
1083   dnl Check for -funroll-loops
1084   VLC_SAVE_FLAGS
1085   CFLAGS="${CFLAGS} -funroll-loops"
1086   CXXFLAGS="${CXXFLAGS} -funroll-loops"
1087   OBJCFLAGS="${OBJCFLAGS} -funroll-loops"
1088   AC_CACHE_CHECK([if $CC accepts -funroll-loops], [ac_cv_c_unroll_loops], [
1089     AC_COMPILE_IFELSE([AC_LANG_PROGRAM()], [
1090       ac_cv_c_unroll_loops=yes
1091     ], [
1092       ac_cv_c_unroll_loops=no
1093     ])
1094   ])
1095   AS_IF([test "${ac_cv_c_unroll_loops}" = "no"], [VLC_RESTORE_FLAGS])
1097   AS_IF([test "$enable_debug" = "no"], [
1098     dnl Check for -fomit-frame-pointer
1099     VLC_SAVE_FLAGS
1100     CFLAGS="${CFLAGS} -fomit-frame-pointer"
1101     CXXFLAGS="${CXXFLAGS} -fomit-frame-pointer"
1102     OBJCFLAGS="${OBJCFLAGS} -fomit-frame-pointer"
1103     AC_CACHE_CHECK([if $CC accepts -fomit-frame-pointer],
1104       [ac_cv_c_omit_frame_pointer], [
1105       AC_COMPILE_IFELSE([AC_LANG_PROGRAM()], [
1106         ac_cv_c_omit_frame_pointer=yes
1107       ], [
1108         ac_cv_c_omit_frame_pointer=no
1109       ])
1110     ])
1111     AS_IF([test "${ac_cv_c_omit_frame_pointer}" = "no"], [VLC_RESTORE_FLAGS])
1112   ])
1115 VLC_SAVE_FLAGS
1116 LDFLAGS="${LDFLAGS} -Wl,-Bsymbolic"
1117 AC_CACHE_CHECK([if linker supports -Bsymbolic], [ac_cv_ld_bsymbolic], [
1118   AC_TRY_LINK([],, [
1119     ac_cv_ld_bsymbolic="-Wl,-Bsymbolic"
1120   ], [
1121     ac_cv_ld_bsymbolic=""
1122   ])
1124 VLC_RESTORE_FLAGS
1125 SYMBOLIC_LDFLAGS="${ac_cv_ld_bsymbolic}"
1126 AC_SUBST(SYMBOLIC_LDFLAGS)
1128 VLC_SAVE_FLAGS
1129 LDFLAGS="${LDFLAGS} -Wl,-z,defs"
1130 AC_CACHE_CHECK([if linker supports -z,defs], [ac_cv_ld_z_defs], [
1131   AC_TRY_LINK([],, [
1132     ac_cv_ld_z_defs="yes"
1133   ], [
1134     ac_cv_ld_z_defs="no"
1135   ])
1137 AS_IF([test "${ac_cv_ld_z_defs}" = "no" -o "${with_sanitizer}" != "no"], [VLC_RESTORE_FLAGS])
1139 AM_COND_IF([HAVE_DARWIN], [], [
1140   AS_IF([test "${with_sanitizer}" = "no"], [
1141     AC_SUBST([LDFLAGS_no_undefined], [-no-undefined])
1142   ])
1145 dnl Check for __attribute__((packed))
1146 AC_CACHE_CHECK([for __attribute__((packed))],
1147   [ac_cv_c_attribute_packed],
1148   [ac_cv_c_attribute_packed=no
1149    AC_TRY_COMPILE(, [struct __attribute__((__packed__)) foo { int a; } b; (void)b;],
1150                     [ac_cv_c_attribute_packed=yes])])
1151 if test "${ac_cv_c_attribute_packed}" != "no"; then
1152   AC_DEFINE(HAVE_ATTRIBUTE_PACKED, 1, Support for __attribute__((packed)) for structs)
1156 dnl  Check the CPU
1158 case "${host_cpu}" in
1159   "")
1160     ARCH=unknown
1161     ;;
1162   *)
1163     ARCH="${host_cpu}"
1164     ;;
1165 esac
1167 dnl Check for backtrace() support
1168 AC_CHECK_HEADERS(execinfo.h)
1169 AC_CHECK_FUNCS(backtrace)
1172 dnl  default modules
1174 ALIASES="${ALIASES} cvlc rvlc"
1177 dnl  Accelerated modules
1180 dnl  Check for fully working MMX intrinsics
1181 dnl  We need support for -mmmx, we need <mmintrin.h>, and we also need a
1182 dnl  working compiler (http://gcc.gnu.org/bugzilla/show_bug.cgi?id=23963)
1183 AC_ARG_ENABLE(mmx,
1184   [AS_HELP_STRING([--disable-mmx],
1185     [disable MMX optimizations (default auto)])],,[
1186   case "${host_cpu}" in
1187     i?86|x86_64)
1188       enable_mmx="yes"
1189       ;;
1190     *)
1191       enable_mmx="no"
1192       ;;
1193   esac
1195 have_mmx="no"
1196 have_mmxext="no"
1197 AS_IF([test "${enable_mmx}" != "no"], [
1198   ARCH="${ARCH} mmx"
1199   VLC_SAVE_FLAGS
1200   CFLAGS="${CFLAGS} -mmmx"
1201   AC_CACHE_CHECK([if $CC groks MMX intrinsics], [ac_cv_c_mmx_intrinsics], [
1202     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([
1203 [#include <mmintrin.h>
1204 #include <stdint.h>
1205 uint64_t frobzor;]], [
1206 [__m64 a, b, c;
1207 a = b = c = (__m64)frobzor;
1208 a = _mm_slli_pi16(a, 3);
1209 a = _mm_adds_pi16(a, b);
1210 c = _mm_srli_pi16(c, 8);
1211 c = _mm_slli_pi16(c, 3);
1212 b = _mm_adds_pi16(b, c);
1213 a = _mm_unpacklo_pi8(a, b);
1214 frobzor = (uint64_t)a;]])], [
1215       ac_cv_c_mmx_intrinsics=yes
1216     ], [
1217       ac_cv_c_mmx_intrinsics=no
1218     ])
1219   ])
1220   VLC_RESTORE_FLAGS
1221   AS_IF([test "${ac_cv_c_mmx_intrinsics}" != "no"], [
1222     AC_DEFINE(HAVE_MMX_INTRINSICS, 1, [Define to 1 if MMX intrinsics are available.])
1223   ])
1225   VLC_SAVE_FLAGS
1226   CFLAGS="${CFLAGS} -mmmx"
1227   AC_CACHE_CHECK([if $CC groks MMX inline assembly], [ac_cv_mmx_inline], [
1228     AC_COMPILE_IFELSE([AC_LANG_PROGRAM(,[[
1229 void *p;
1230 asm volatile("packuswb %%mm1,%%mm2"::"r"(p):"mm1", "mm2");
1232     ], [
1233       ac_cv_mmx_inline=yes
1234     ], [
1235       ac_cv_mmx_inline=no
1236     ])
1237   ])
1238   AS_IF([test "${ac_cv_mmx_inline}" != "no"], [
1239     AC_DEFINE(CAN_COMPILE_MMX, 1, [Define to 1 inline MMX assembly is available.])
1240     have_mmx="yes"
1241   ])
1243   AC_CACHE_CHECK([if $CC groks MMX EXT inline assembly],
1244                  [ac_cv_mmxext_inline], [
1245     AC_COMPILE_IFELSE([AC_LANG_PROGRAM(,[[
1246 void *p;
1247 asm volatile("maskmovq %%mm1,%%mm2"::"r"(p):"mm1", "mm2");
1249     ], [
1250       ac_cv_mmxext_inline=yes
1251     ], [
1252       ac_cv_mmxext_inline=no
1253     ])
1254   ])
1255   VLC_RESTORE_FLAGS
1256   AS_IF([test "${ac_cv_mmxext_inline}" != "no"], [
1257     AC_DEFINE(CAN_COMPILE_MMXEXT, 1, [Define to 1 if MMX EXT inline assembly is available.])
1258     have_mmxext="yes"
1259   ])
1261 AM_CONDITIONAL([HAVE_MMX], [test "${have_mmx}" = "yes"])
1262 AM_CONDITIONAL([HAVE_MMXEXT], [test "${have_mmxext}" = "yes"])
1264 dnl  Check for fully workin SSE2 intrinsics
1265 dnl  We need support for -mmmx, we need <emmintrin.h>, and we also need a
1266 dnl  working compiler (http://gcc.gnu.org/bugzilla/show_bug.cgi?id=23963)
1267 AC_ARG_ENABLE(sse,
1268   [AS_HELP_STRING([--disable-sse],
1269     [disable SSE (1-4) optimizations (default auto)])],, [
1270   case "${host_cpu}" in
1271     i?86|x86_64)
1272       enable_sse=yes
1273       ;;
1274     *)
1275       enable_sse=no
1276       ;;
1277   esac
1279 have_sse2="no"
1280 AS_IF([test "${enable_sse}" != "no"], [
1281   ARCH="${ARCH} sse sse2"
1283   VLC_SAVE_FLAGS
1284   CFLAGS="${CFLAGS} -msse2"
1285   AC_CACHE_CHECK([if $CC groks SSE2 intrinsics], [ac_cv_c_sse2_intrinsics], [
1286     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([
1287 [#include <emmintrin.h>
1288 #include <stdint.h>
1289 uint64_t frobzor;]], [
1290 [__m128i a, b, c;
1291 a = b = c = _mm_set1_epi64((__m64)frobzor);
1292 a = _mm_slli_epi16(a, 3);
1293 a = _mm_adds_epi16(a, b);
1294 c = _mm_srli_epi16(c, 8);
1295 c = _mm_slli_epi16(c, 3);
1296 b = _mm_adds_epi16(b, c);
1297 a = _mm_unpacklo_epi8(a, b);
1298 frobzor = (uint64_t)_mm_movepi64_pi64(a);]])], [
1299       ac_cv_c_sse2_intrinsics=yes
1300     ], [
1301       ac_cv_c_sse2_intrinsics=no
1302     ])
1303   ])
1304   VLC_RESTORE_FLAGS
1305   AS_IF([test "${ac_cv_c_sse2_intrinsics}" != "no"], [
1306     AC_DEFINE(HAVE_SSE2_INTRINSICS, 1, [Define to 1 if SSE2 intrinsics are available.])
1307   ])
1309   VLC_SAVE_FLAGS
1310   CFLAGS="${CFLAGS} -msse"
1311   AC_CACHE_CHECK([if $CC groks SSE inline assembly], [ac_cv_sse_inline], [
1312     AC_COMPILE_IFELSE([AC_LANG_PROGRAM(,[[
1313 void *p;
1314 asm volatile("xorps %%xmm1,%%xmm2"::"r"(p):"xmm1", "xmm2");
1316     ], [
1317       ac_cv_sse_inline=yes
1318     ], [
1319       ac_cv_sse_inline=no
1320     ])
1321   ])
1323   AS_IF([test "${ac_cv_sse_inline}" != "no" -a "${SYS}" != "solaris"], [
1324     AC_DEFINE(CAN_COMPILE_SSE, 1, [Define to 1 if SSE inline assembly is available.])
1325   ])
1327   AC_CACHE_CHECK([if $CC groks SSE2 inline assembly], [ac_cv_sse2_inline], [
1328     AC_COMPILE_IFELSE([AC_LANG_PROGRAM(,[[
1329 void *p;
1330 asm volatile("punpckhqdq %%xmm1,%%xmm2"::"r"(p):"xmm1", "xmm2");
1332     ], [
1333       ac_cv_sse2_inline=yes
1334     ], [
1335       ac_cv_sse2_inline=no
1336     ])
1337   ])
1338   AS_IF([test "${ac_cv_sse2_inline}" != "no" -a "${SYS}" != "solaris"], [
1339     AC_DEFINE(CAN_COMPILE_SSE2, 1, [Define to 1 if SSE2 inline assembly is available.])
1340     have_sse2="yes"
1341   ])
1343   # SSE3
1344   AC_CACHE_CHECK([if $CC groks SSE3 inline assembly], [ac_cv_sse3_inline], [
1345     AC_COMPILE_IFELSE([AC_LANG_PROGRAM(,[[
1346 void *p;
1347 asm volatile("movsldup %%xmm1,%%xmm0"::"r"(p):"xmm0", "xmm1");
1349     ], [
1350       ac_cv_sse3_inline=yes
1351     ], [
1352       ac_cv_sse3_inline=no
1353     ])
1354   ])
1356   AS_IF([test "${ac_cv_sse3_inline}" != "no"], [
1357     AC_DEFINE(CAN_COMPILE_SSE3, 1, [Define to 1 if SSE3 inline assembly is available.]) ])
1358   # SSSE3
1359   AC_CACHE_CHECK([if $CC groks SSSE3 inline assembly], [ac_cv_ssse3_inline], [
1360     AC_COMPILE_IFELSE([AC_LANG_PROGRAM(,[[
1361 void *p;
1362 asm volatile("pabsw %%xmm0,%%xmm0"::"r"(p):"xmm0");
1364     ], [
1365       ac_cv_ssse3_inline=yes
1366     ], [
1367       ac_cv_ssse3_inline=no
1368     ])
1369   ])
1371   AS_IF([test "${ac_cv_ssse3_inline}" != "no"], [
1372     AC_DEFINE(CAN_COMPILE_SSSE3, 1, [Define to 1 if SSSE3 inline assembly is available.]) ])
1374   # SSE4.1
1375   AC_CACHE_CHECK([if $CC groks SSE4.1 inline assembly],
1376                  [ac_cv_sse4_1_inline], [
1377     AC_COMPILE_IFELSE([AC_LANG_PROGRAM(,[[
1378 void *p;
1379 asm volatile("pmaxsb %%xmm1,%%xmm0"::"r"(p):"xmm0", "xmm1");
1381     ], [
1382       ac_cv_sse4_1_inline=yes
1383     ], [
1384       ac_cv_sse4_1_inline=no
1385     ])
1386   ])
1388   AS_IF([test "${ac_cv_sse4_1_inline}" != "no"], [
1389     AC_DEFINE(CAN_COMPILE_SSE4_1, 1, [Define to 1 if SSE4_1 inline assembly is available.]) ])
1391   # SSE4.2
1392   AC_CACHE_CHECK([if $CC groks SSE4.2 inline assembly],
1393                  [ac_cv_sse4_2_inline], [
1394     AC_COMPILE_IFELSE([AC_LANG_PROGRAM(,[[
1395 void *p;
1396 asm volatile("pcmpgtq %%xmm1,%%xmm0"::"r"(p):"xmm0", "xmm1");
1398     ], [
1399       ac_cv_sse4_2_inline=yes
1400     ], [
1401       ac_cv_sse4_2_inline=no
1402     ])
1403   ])
1405   AS_IF([test "${ac_cv_sse4_2_inline}" != "no"], [
1406     AC_DEFINE(CAN_COMPILE_SSE4_2, 1, [Define to 1 if SSE4_2 inline assembly is available.]) ])
1408   # SSE4A
1409   AC_CACHE_CHECK([if $CC groks SSE4A inline assembly], [ac_cv_sse4a_inline], [
1410     AC_COMPILE_IFELSE([AC_LANG_PROGRAM(,[[
1411 void *p;
1412 asm volatile("insertq %%xmm1,%%xmm0"::"r"(p):"xmm0", "xmm1");
1414     ], [
1415       ac_cv_sse4a_inline=yes
1416     ], [
1417       ac_cv_sse4a_inline=no
1418     ])
1419   ])
1420   VLC_RESTORE_FLAGS
1421   AS_IF([test "${ac_cv_sse4a_inline}" != "no"], [
1422     AC_DEFINE(CAN_COMPILE_SSE4A, 1, [Define to 1 if SSE4A inline assembly is available.]) ])
1424 AM_CONDITIONAL([HAVE_SSE2], [test "$have_sse2" = "yes"])
1426 VLC_SAVE_FLAGS
1427 CFLAGS="${CFLAGS} -mmmx"
1428 have_3dnow="no"
1429 AC_CACHE_CHECK([if $CC groks 3D Now! inline assembly], [ac_cv_3dnow_inline], [
1430   AC_COMPILE_IFELSE([AC_LANG_PROGRAM(,[[
1431 void *p;
1432 asm volatile("pfadd %%mm1,%%mm2"::"r"(p):"mm1", "mm2");
1434   ], [
1435     ac_cv_3dnow_inline=yes
1436   ], [
1437     ac_cv_3dnow_inline=no
1438   ])
1440 VLC_RESTORE_FLAGS
1441 AS_IF([test "${ac_cv_3dnow_inline}" != "no"], [
1442   AC_DEFINE(CAN_COMPILE_3DNOW, 1,
1443             [Define to 1 if 3D Now! inline assembly is available.])
1444   have_3dnow="yes"
1446 AM_CONDITIONAL([HAVE_3DNOW], [test "$have_3dnow" = "yes"])
1449 AC_ARG_ENABLE(neon,
1450   [AS_HELP_STRING([--disable-neon],
1451     [disable NEON optimizations (default auto)])],, [
1452   AS_IF([test "${host_cpu}" = "arm"], [enable_neon="yes"] ,[enable_neon="no"])
1454 AS_IF([test "${enable_neon}" != "no"], [
1455   VLC_SAVE_FLAGS
1456   CFLAGS="${CFLAGS} -mfpu=neon -mhard-float"
1457   AC_CACHE_CHECK([if $CCAS groks ARM NEON assembly], [ac_cv_arm_neon], [
1458     AC_COMPILE_IFELSE([
1459       AC_LANG_PROGRAM(,[[
1460 asm volatile("vqmovun.s64 d0, q1":::"d0");
1462     ], [
1463       ac_cv_arm_neon="yes"
1464     ], [
1465       ac_cv_arm_neon="no"
1466     ])
1467   ])
1468   VLC_RESTORE_FLAGS
1470 AM_CONDITIONAL(HAVE_NEON, [test "${ac_cv_arm_neon}" = "yes"])
1472 AC_ARG_ENABLE(arm64,
1473   [AS_HELP_STRING([--disable-arm64],
1474     [disable arm 64-bit optimizations (default auto)])],, [
1475   AS_IF([test "${host_cpu}" = "aarch64"], [enable_arm64="yes"] ,[enable_arm64="no"])
1477 AS_IF([test "${enable_arm64}" != "no"], [
1478   AC_CACHE_CHECK([if $CCAS groks ARM 64 SIMD assembly], [ac_cv_arm64], [
1479     AC_COMPILE_IFELSE([
1480       AC_LANG_PROGRAM(,[[
1481 asm volatile("uhadd v0.8b, v0.8b, v1.8b":::"v0");
1483     ], [
1484       ac_cv_arm64="yes"
1485     ], [
1486       ac_cv_arm64="no"
1487     ])
1488   ])
1490 AM_CONDITIONAL(HAVE_ARM64, [test "${ac_cv_arm64}" = "yes"])
1493 AC_ARG_ENABLE(altivec,
1494   [AS_HELP_STRING([--disable-altivec],
1495     [disable AltiVec optimizations (default auto)])],, [
1496   AS_CASE("${host_cpu}", [powerpc*],
1497         [enable_altivec=yes], [enable_altivec=no])
1499 have_altivec="no"
1500 ALTIVEC_CFLAGS=""
1501 AS_IF([test "${enable_altivec}" = "yes"], [
1502   ARCH="${ARCH} altivec";
1503   VLC_SAVE_FLAGS
1504   AC_CACHE_CHECK([if $CC groks AltiVec inline assembly],
1505     [ac_cv_altivec_inline],
1506     [AC_TRY_COMPILE(,[asm volatile("vperm 0,1,2,3");],
1507          ac_cv_altivec_inline="yes",
1508          [CFLAGS="${CFLAGS} -Wa,-maltivec"
1509           AC_TRY_COMPILE(,[asm volatile("vperm 0,1,2,3");],
1510             [ac_cv_altivec_inline="-Wa,-maltivec"],
1511             ac_cv_altivec_inline=no)
1512          ])])
1513   VLC_RESTORE_FLAGS
1514   AS_IF([test "${ac_cv_altivec_inline}" != "no"], [
1515     AC_DEFINE(CAN_COMPILE_ALTIVEC, 1,
1516               [Define to 1 if AltiVec inline assembly is available.])
1517     AS_IF([test "${ac_cv_altivec_inline}" != "yes"], [
1518       ALTIVEC_CFLAGS="${ac_cv_altivec_inline}"
1519       VLC_ADD_CFLAGS([libvlccore],[${ac_cv_altivec_inline}])
1520     ])
1521     have_altivec="yes"
1522   ])
1524   VLC_SAVE_FLAGS
1525   AC_CACHE_CHECK([if \$CC groks AltiVec C extensions],
1526   [ac_cv_c_altivec], [
1527     CFLAGS="${CFLAGS} -maltivec"
1528     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([
1529 [#include <altivec.h>]], [
1530 [vec_ld(0, (unsigned char *)0);]])], [
1531       ac_cv_c_altivec="-maltivec"
1532     ], [
1533       ac_cv_c_altivec="no"
1534     ])
1535   ])
1536   VLC_RESTORE_FLAGS
1537   AS_IF([test "${ac_cv_c_altivec}" != "no"], [
1538     CPPFLAGS="${CPPFLAGS} ${ac_cv_c_altivec}"
1539     AC_DEFINE(CAN_COMPILE_C_ALTIVEC, 1, [Define to 1 if C AltiVec extensions are available.])
1540     VLC_ADD_CFLAGS([libvlccore],[${ac_cv_c_altivec}])
1541     ALTIVEC_CFLAGS="$ALTIVEC_CFLAGS ${ac_cv_c_altivec}"
1542     VLC_ADD_CFLAGS([deinterlace],[${ac_cv_c_altivec}])
1543     have_altivec="yes"
1544   ])
1545   AC_CHECK_HEADERS(altivec.h)
1547   VLC_SAVE_FLAGS
1548   LDFLAGS="${LDFLAGS} -Wl,-framework,vecLib"
1549   AC_CACHE_CHECK([if linker needs -framework vecLib],
1550     [ac_cv_ld_altivec],
1551     [AC_TRY_LINK([],,ac_cv_ld_altivec=yes,ac_cv_ld_altivec=no)])
1552   VLC_RESTORE_FLAGS
1553   AS_IF([test "${ac_cv_ld_altivec}" != "no"], [
1554     VLC_ADD_LIBS([libvlccore],[-Wl,-framework,vecLib])
1555   ])
1557 AC_SUBST(ALTIVEC_CFLAGS)
1558 AM_CONDITIONAL([HAVE_ALTIVEC], [test "$have_altivec" = "yes"])
1561 dnl  Memory usage
1563 AC_ARG_ENABLE(optimize-memory,
1564   [AS_HELP_STRING([--enable-optimize-memory],
1565     [optimize memory usage over performance])])
1566 if test "${enable_optimize_memory}" = "yes"; then
1567   AC_DEFINE(OPTIMIZE_MEMORY, 1, Define if you want to optimize memory usage over performance)
1571 dnl Allow running as root (useful for people running on embedded platforms)
1573 AC_ARG_ENABLE(run-as-root,
1574   [AS_HELP_STRING([--enable-run-as-root],
1575     [allow running VLC as root (default disabled)])])
1576 AS_IF([test "${enable_run_as_root}" = "yes"],[
1577     AC_DEFINE(ALLOW_RUN_AS_ROOT, 1,
1578               [Define to 1 to allow running VLC as root (uid 0).])
1582 dnl Stream output
1584 AC_ARG_ENABLE(sout,
1585   [AS_HELP_STRING([--disable-sout],
1586     [disable streaming output (default enabled)])])
1587 AS_IF([test "${enable_sout}" != "no"], [
1588   AC_DEFINE(ENABLE_SOUT, 1, [Define to 1 for stream output support.])
1590 AM_CONDITIONAL(ENABLE_SOUT, [test "${enable_sout}" != "no"])
1592 dnl Lua modules
1593 AC_ARG_ENABLE(lua,
1594   [AS_HELP_STRING([--disable-lua],
1595     [disable LUA scripting support (default enabled)])])
1596 if test "${enable_lua}" != "no"
1597 then
1598   PKG_CHECK_MODULES(LUA, lua5.2,
1599     [ have_lua=yes ],
1600     [
1601     AC_MSG_WARN([${LUA_PKG_ERRORS}, trying lua 5.1 instead])
1603     PKG_CHECK_MODULES(LUA, lua5.1,
1604       [ have_lua=yes ],
1605       [
1606       AC_MSG_WARN([${LUA_PKG_ERRORS}, trying lua >= 5.1 instead])
1607       PKG_CHECK_MODULES(LUA, lua >= 5.1,
1608         [ have_lua=yes ],
1609         [
1610           AC_MSG_WARN([${LUA_PKG_ERRORS}, trying manual detection instead])
1611           have_lua=yes
1612           AC_CHECK_HEADERS([lua.h lauxlib.h lualib.h],
1613             [],
1614             [ have_lua=no ] )
1615           AC_CHECK_LIB(  lua5.2 , luaL_newstate,
1616             [LUA_LIBS="-llua5.2"],
1617           AC_CHECK_LIB( lua5.1 , luaL_newstate,
1618             [LUA_LIBS="-llua5.1"],
1619             AC_CHECK_LIB( lua51 , luaL_newstate,
1620               [LUA_LIBS="-llua51"],
1621               AC_CHECK_LIB( lua , luaL_newstate,
1622                 [LUA_LIBS="-llua"],
1623                 [ have_lua=no
1624                 ], [-lm])
1625             )))
1626         ])
1627       ])
1628     ])
1629   if test "x${have_lua}" != "xyes" ;  then
1630       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.])
1631   fi
1632   AC_ARG_VAR([LUAC], [LUA byte compiler])
1633   AS_IF([test -z "$LUAC"], [
1634      AC_CHECK_TOOL(LUAC, [luac], [false])
1635   ])
1636   AS_IF([test "${LUAC}" = "false"], [
1637     AC_MSG_ERROR([Could not find the LUA byte compiler.])
1638   ])
1639   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], [
1640     AC_MSG_ERROR([You need 32-bits luac when using lua from contrib.])
1641   ])
1643 AM_CONDITIONAL(BUILD_LUA, [test "${have_lua}" = "yes"])
1647 dnl VideoLAN manager
1649 AC_ARG_ENABLE(vlm,
1650   [AS_HELP_STRING([--disable-vlm],
1651     [disable the stream manager (default enabled)])],,
1652   [enable_vlm="${enable_sout}"])
1653 AS_IF([test "${enable_vlm}" != "no"], [
1654   AS_IF([test "${enable_sout}" = "no"], [
1655     AC_MSG_ERROR([VLM requires the stream output. Do not use --disable-sout.])
1656   ])
1657   AC_DEFINE(ENABLE_VLM, 1, [Define if you want the VideoLAN manager support])
1659 AM_CONDITIONAL([ENABLE_VLM], [test "${enable_vlm}" != "no"])
1663 dnl Addons manager storage and repositories modules
1665 AC_ARG_ENABLE(addonmanagermodules,
1666   [AS_HELP_STRING([--disable-addonmanagermodules],
1667     [disable the addons manager modules (default enabled)])])
1668 if test "${enable_addonmanagermodules}" != "no"
1669 then
1670   AC_DEFINE(ENABLE_ADDONMANAGERMODULES, 1, [Define if you want the addons manager modules])
1672 AM_CONDITIONAL([ENABLE_ADDONMANAGERMODULES], [test "${enable_addonmanagermodules}" != "no"])
1676 dnl  Input plugins
1679 EXTEND_HELP_STRING([Input plugins:])
1682 dnl  libarchive access module
1684 PKG_ENABLE_MODULES_VLC([ARCHIVE], [archive], [libarchive >= 3.1.0], (libarchive support), [auto])
1687 dnl  live555 input
1689 AC_ARG_ENABLE(live555,
1690   [AS_HELP_STRING([--enable-live555],
1691     [enable RTSP input through live555 (default enabled)])])
1693 AS_IF([test "${enable_live555}" != "no" -a -n "${CXX}"], [
1694   PKG_CHECK_MODULES(LIVE555, live555, [
1695     VLC_ADD_PLUGIN([live555])
1696     VLC_ADD_CXXFLAGS([live555], [$LIVE555_CFLAGS])
1697     VLC_ADD_LIBS([live555],[$LIVE555_LIBS])
1698   ], [
1699     AC_MSG_WARN([${LIVE555_PKG_ERRORS}.])
1701     AC_LANG_PUSH(C++)
1702     VLC_SAVE_FLAGS
1704     dnl detect include paths
1705     AS_IF([test -f "${CONTRIB_DIR}/include/UsageEnvironment/UsageEnvironment.hh"], [
1706       CPPFLAGS_live555="-I${CONTRIB_DIR}/include/liveMedia -I${CONTRIB_DIR}/include/groupsock -I${CONTRIB_DIR}/include/BasicUsageEnvironment -I${CONTRIB_DIR}/include/UsageEnvironment"
1707     ], [
1708       AS_IF([test "${SYS}" != "os2"], [
1709         LIVE555_PREFIX=${LIVE555_PREFIX-"/usr"}
1710         CPPFLAGS_live555="-I${LIVE555_PREFIX}/include/liveMedia -I${LIVE555_PREFIX}/include/groupsock -I${LIVE555_PREFIX}/include/BasicUsageEnvironment -I${LIVE555_PREFIX}/include/UsageEnvironment"
1711       ], [
1712         LIVE555_PREFIX=${LIVE555_PREFIX-"/usr/lib/live"}
1713         CPPFLAGS_live555="-I${LIVE555_PREFIX}/liveMedia/include -I${LIVE555_PREFIX}/groupsock/include -I${LIVE555_PREFIX}/BasicUsageEnvironment/include -I${LIVE555_PREFIX}/UsageEnvironment/include"
1714         LDFLAGS_live555="-L${LIVE555_PREFIX}/liveMedia -L${LIVE555_PREFIX}/groupsock -L${LIVE555_PREFIX}/BasicUsageEnvironment -L${LIVE555_PREFIX}/UsageEnvironment"
1715       ])
1716     ])
1718     dnl CPP Flags
1719     AS_IF([test "${SYS}" = "solaris"], [
1720       CPPFLAGS_live555="${CPPFLAGS_live555} -DSOLARIS"
1721     ])
1722     CPPFLAGS="${CPPFLAGS} ${CPPFLAGS_live555}"
1723     LDFLAGS="${LDFLAGS} ${LDFLAGS_live555}"
1725     dnl version check
1726     AC_CACHE_CHECK([for live555 version 1324598400 or later], [ac_cv_live555], [
1727       AC_PREPROC_IFELSE([AC_LANG_PROGRAM([
1728 [#include <liveMedia_version.hh>
1729 #if !defined (LIVEMEDIA_LIBRARY_VERSION_INT) || (LIVEMEDIA_LIBRARY_VERSION_INT < 1324598400)
1730 # error BOOM
1731 #endif]])
1732       ], [
1733         ac_cv_live555="yes"
1734       ], [
1735         ac_cv_live555="no"
1736       ])
1737     ])
1739     AS_IF([test "$ac_cv_live555" = "no"], [
1740       AC_MSG_WARN([live555 is missing or its installed version is too old:
1741 Version 2011.12.23 or later is required to proceed.
1742 You can get an updated one from http://www.live555.com/liveMedia .])
1743       AS_IF([test -n "${enable_live555}"], [
1744         AC_MSG_ERROR([Update live555 or pass --disable-live555 to disable RTSP input support.])
1745       ])
1746     ], [
1747       other_libs="-lgroupsock -lBasicUsageEnvironment -lUsageEnvironment"
1748       other_libs_pic="-lgroupsock_pic -lBasicUsageEnvironment_pic -lUsageEnvironment_pic"
1749       AS_IF([test "${SYS}" = "mingw32"], [
1750         # add ws2_32 for closesocket, select, recv
1751         other_libs="$other_libs -lws2_32"
1752       ])
1754       dnl We need to check for pic because live555 don't provide shared libs
1755       dnl and we want to build a plugins so we need -fPIC on some arch.
1756       VLC_ADD_CXXFLAGS([live555], [${CPPFLAGS_live555}])
1757       VLC_ADD_LDFLAGS([live555], [${LDFLAGS_live555}])
1758       AC_CHECK_LIB(liveMedia_pic, main, [
1759         VLC_ADD_PLUGIN([live555])
1760         VLC_ADD_LIBS([live555], [-lliveMedia_pic ${other_libs_pic}])
1761       ],[
1762         AC_CHECK_LIB(liveMedia, main, [
1763           VLC_ADD_PLUGIN([live555])
1764           VLC_ADD_LIBS([live555], [-lliveMedia ${other_libs}])
1765         ],[],[${other_libs}])
1766       ],[${other_libs_pic}])
1767     ])
1768     VLC_RESTORE_FLAGS
1769     AC_LANG_POP(C++)
1770   ])
1774 dnl IIDC and DV FireWire input modules
1776 PKG_ENABLE_MODULES_VLC([DC1394], [], [libdc1394-2 >= 2.1.0], [IIDC FireWire input module], [auto])
1777 PKG_ENABLE_MODULES_VLC([DV1394], [], [libraw1394 >= 2.0.1 libavc1394 >= 0.5.3], [DV FireWire input module], [auto])
1780 dnl - linsys modules: access module check for libzvbi
1782 AC_ARG_ENABLE(linsys,
1783   [AS_HELP_STRING([--enable-linsys],
1784     [Linux Linear Systems Ltd. SDI and HD-SDI input cards (default enabled)])])
1785 AS_IF([test "$SYS" = "linux" -a "${enable_linsys}" != "no"], [
1786   VLC_ADD_PLUGIN([linsys_hdsdi])
1787   PKG_CHECK_MODULES(LINSYS_SDI, [zvbi-0.2 >= 0.2.28], [
1788     VLC_ADD_PLUGIN([linsys_sdi])
1789   ], [
1790     AC_MSG_WARN([${LINSYS_SDI_PKG_ERRORS}.])
1791   ])
1795 dnl dvdread module: check for libdvdread
1797 PKG_ENABLE_MODULES_VLC([DVDREAD], [], [dvdread > 4.9.0], [dvdread input module], [auto])
1800 dnl libdvdnav plugin
1802 PKG_ENABLE_MODULES_VLC([DVDNAV], [], [dvdnav > 4.9.0], [DVD with navigation input module (dvdnav)], [auto])
1803 AS_IF([test "${enable_dvdnav}" != "no"], [
1804   AC_MSG_CHECKING(for dvdnav_stream_cb in dvdnav/dvdnav.h)
1805     AC_EGREP_HEADER(dvdnav_stream_cb,dvdnav/dvdnav.h,[
1806       AC_MSG_RESULT(yes)
1807       AC_DEFINE(HAVE_STREAM_CB_IN_DVDNAV_H, 1, For dvdnav demux support)
1808       ],[
1809       AC_MSG_RESULT(no)
1810     ])
1814 dnl  Blu-ray Disc Support with libbluray
1816 PKG_ENABLE_MODULES_VLC([BLURAY], [libbluray], [libbluray >= 0.6.2], (libbluray for Blu-ray disc support ) )
1819 dnl  OpenCV wrapper and example filters
1821 PKG_ENABLE_MODULES_VLC([OPENCV], [opencv_example opencv_wrapper], [opencv > 2.0], (OpenCV (computer vision) filter), [auto])
1825 dnl  libsmbclient plugin
1827 PKG_ENABLE_MODULES_VLC([SMBCLIENT], [smb], [smbclient], (SMB/CIFS support), [auto])
1828 AS_IF([test "${SYS}" = "mingw32" -a "${enable_winstore_app}" != "yes"], [ VLC_ADD_PLUGIN([smb]) ])
1831 dnl  liBDSM access module
1833 PKG_ENABLE_MODULES_VLC([DSM], [dsm], [libdsm >= 0.2.0], [libdsm SMB/CIFS access/sd module], [auto])
1836 dnl sftp access support
1838 PKG_ENABLE_MODULES_VLC([SFTP], [sftp], [libssh2], (support SFTP file transfer via libssh2), [auto])
1841 dnl nfs access support
1843 PKG_ENABLE_MODULES_VLC([NFS], [nfs], [libnfs >= 1.10.0], (support nfs protocol via libnfs), [auto])
1846 dnl  Video4Linux 2
1848 AC_ARG_ENABLE(v4l2, [AS_HELP_STRING([--disable-v4l2],
1849   [disable Video4Linux version 2 (default auto)])])
1850 have_v4l2="no"
1851 AS_IF([test "$enable_v4l2" != "no"], [
1852   AC_CHECK_HEADERS([linux/videodev2.h sys/videoio.h], [
1853     have_v4l2="yes"
1854   ])
1856 AM_CONDITIONAL(HAVE_V4L2, [test "${have_v4l2}" != "no"])
1859 dnl special access module for Blackmagic SDI cards
1861 AC_ARG_ENABLE(decklink,
1862   [AS_HELP_STRING([--disable-decklink],
1863     [disable Blackmagic DeckLink SDI input (default auto)])])
1864 AC_ARG_WITH(decklink_sdk,
1865   [AS_HELP_STRING[--with-decklink-sdk=DIR],
1866     [                        location of Blackmagic DeckLink SDI SDK])])
1867 have_decklink=no
1868 if test "${enable_decklink}" != "no"
1869 then
1870   if test "${with_decklink_sdk}" != "no" -a -n "${with_decklink_sdk}"
1871   then
1872     VLC_ADD_CPPFLAGS([decklink decklinkoutput],[-I${with_decklink_sdk}/include])
1873   fi
1874   VLC_SAVE_FLAGS
1875   CPPFLAGS="${CPPFLAGS} ${CPPFLAGS_decklink}"
1876   AC_LANG_PUSH(C++)
1877   AC_CHECK_HEADERS(DeckLinkAPIDispatch.cpp, [
1878       have_decklink=yes
1879   ], [
1880       AC_MSG_WARN(Blackmagic DeckLink SDI include files not found, decklink disabled)
1881   ])
1882   AC_LANG_POP(C++)
1883   VLC_RESTORE_FLAGS
1885 AM_CONDITIONAL(HAVE_DECKLINK, [ test "${have_decklink}" != "no" ])
1889 dnl  Built-in CD-DA and VCD module
1891 AC_ARG_ENABLE(vcd,
1892   [AS_HELP_STRING([--disable-vcd],
1893     [disable built-in VCD and CD-DA support (default enabled)])])
1895 AC_ARG_ENABLE(libcddb,
1896   [AS_HELP_STRING([--disable-libcddb],
1897     [disable CDDB for Audio CD (default enabled)])])
1899 if test "${enable_vcd}" != "no"
1900 then
1901   AC_MSG_CHECKING(for cdrom_msf0 in linux/cdrom.h)
1902   AC_EGREP_HEADER(cdrom_msf0,linux/cdrom.h,[
1903     AC_MSG_RESULT(yes)
1904     VLC_ADD_PLUGIN([vcd cdda])
1905   ],[
1906     AC_MSG_RESULT(no)
1907   ])
1909   AC_MSG_CHECKING(for scsireq in sys/scsiio.h)
1910   AC_EGREP_HEADER(scsireq,sys/scsiio.h,[
1911     AC_MSG_RESULT(yes)
1912     VLC_ADD_PLUGIN([vcd cdda])
1913     AC_DEFINE(HAVE_SCSIREQ_IN_SYS_SCSIIO_H, 1, For NetBSD VCD support)
1914   ],[
1915     AC_MSG_RESULT(no)
1916   ])
1918   AC_MSG_CHECKING(for ioc_toc_header in sys/cdio.h)
1919   AC_EGREP_HEADER(ioc_toc_header ,sys/cdio.h,[
1920     AC_MSG_RESULT(yes)
1921     VLC_ADD_PLUGIN([vcd cdda])
1922     AC_DEFINE(HAVE_IOC_TOC_HEADER_IN_SYS_CDIO_H, 1, For FreeBSD VCD support)
1923   ],[
1924     AC_MSG_RESULT(no)
1925   ])
1927   if test "${SYS}" = "bsdi" -o "${SYS}" = "mingw32" -o "${SYS}" = "os2" -o "${SYS}" = "darwin"
1928   then
1929     VLC_ADD_PLUGIN([vcd cdda])
1930   fi
1932   if test "$enable_libcddb" != "no"; then
1933     PKG_CHECK_MODULES(LIBCDDB, [libcddb >= 0.9.5], [
1934       HAVE_LIBCDDB=yes
1935       AC_DEFINE(HAVE_LIBCDDB, 1, [Define this if you have libcddb installed])
1936       VLC_ADD_LIBS([cdda],[$LIBCDDB_LIBS])
1937       VLC_ADD_CFLAGS([cdda],[$LIBCDDB_CFLAGS])
1938       ],:
1939       [AC_MSG_WARN([${LIBCDDB_PKG_ERRORS}: CDDB access disabled.])
1940       HAVE_LIBCDDB=no])
1941   fi
1945 dnl Linux DVB
1947 AC_CACHE_CHECK([for Linux DVB version 5.1], [ac_cv_linux_dvb_5_1], [
1948   AC_PREPROC_IFELSE([AC_LANG_PROGRAM([
1949 [#include <linux/dvb/version.h>
1950 #if (DVB_API_VERSION < 5)
1951 # error Linux DVB API v3.2 and older are not supported.
1952 #endif
1953 #if (DVB_API_VERSION == 5 && DVB_API_VERSION_MINOR < 1)
1954 # error Linux DVB API v5.0 is unsupported. Please update.
1955 #endif
1956 ]])], [
1957   ac_cv_linux_dvb_5_1=yes
1958 ], [
1959   ac_cv_linux_dvb_5_1=no
1960 ])])
1961 AM_CONDITIONAL([HAVE_LINUX_DVB], [test "$ac_cv_linux_dvb_5_1" = "yes"])
1964 dnl  Screen capture module
1966 AC_ARG_ENABLE(screen,
1967   [AS_HELP_STRING([--enable-screen],
1968     [disable screen capture (default enabled)])])
1969 if test "${enable_screen}" != "no"; then
1970   if test "${SYS}" = "darwin"; then
1971     AC_CHECK_HEADERS(ApplicationServices/ApplicationServices.h, [
1972       VLC_ADD_PLUGIN([screen])
1973     ])
1974   fi
1976 AM_CONDITIONAL(HAVE_MAC_SCREEN, [test "${SYS}" = "darwin" -a "x${enable_screen}" != "xno"])
1979 dnl  VNC/RFB access module
1981 PKG_ENABLE_MODULES_VLC([VNC], [vnc], [libvncclient >= 0.9.9], (VNC/rfb client support), [auto])
1983 dnl  RDP/Remote Desktop access module
1985 PKG_ENABLE_MODULES_VLC([FREERDP], [rdp], [freerdp >= 1.0.1], (RDP/Remote Desktop client support) )
1988 dnl  Real RTSP plugin
1990 AC_ARG_ENABLE(realrtsp,
1991   [  --enable-realrtsp       Real RTSP module (default disabled)])
1992 if test "${enable_realrtsp}" = "yes"; then
1993   VLC_ADD_PLUGIN([access_realrtsp])
1997 dnl QTKit
1998 AC_ARG_ENABLE(macosx-qtkit,
1999   [  --enable-macosx-qtkit Mac OS X qtsound (audio) module (default enabled on Mac OS X <= v10.11)])
2000 if test "x${enable_macosx_qtkit}" != "xno" &&
2001   (test "${SYS}" = "darwin" || test "${enable_macosx_qtkit}" = "yes")
2002 then
2003   AC_CHECK_HEADERS(QTKit/QTKit.h, [
2004       VLC_ADD_PLUGIN([qtsound])
2005     ])
2009 dnl AVFoundation
2010 AC_SUBST(have_avfoundation, ["no"])
2011 AC_ARG_ENABLE(macosx-avfoundation,
2012   [  --enable-macosx-avfoundation Mac OS X avcapture (video) module (default enabled on Mac OS X)])
2013 if test "x${enable_macosx_avfoundation}" != "xno" &&
2014   (test "${SYS}" = "darwin" || test "${enable_macosx_avfoundation}" = "yes")
2015 then
2016   SAVED_LIBS="${LIBS}"
2017   LIBS="-framework AVFoundation"
2018   AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [])],[have_avfoundation=yes],[have_avfoundation=no])
2019   LIBS="${SAVED_LIBS}"
2020   if test "${have_avfoundation}" != "no"
2021   then
2022     VLC_ADD_PLUGIN([avcapture])
2023   fi
2025 AM_CONDITIONAL(HAVE_AVFOUNDATION, [test "${have_avfoundation}" != "no"])
2028 dnl  DCP plugin (using asdcplib)
2030 PKG_WITH_MODULES([ASDCP], [asdcplib], [have_asdcp="yes"])
2031 AM_CONDITIONAL(HAVE_ASDCP, [test "${have_asdcp}" = "yes"])
2034 dnl  Demux plugins
2037 EXTEND_HELP_STRING([Mux/Demux plugins:])
2040 dnl  libdvbpsi check for ts mux/demux
2042 have_dvbpsi="no"
2043 PKG_WITH_MODULES([DVBPSI], [libdvbpsi >= 1.2.0], [have_dvbpsi="yes"])
2044 AM_CONDITIONAL(HAVE_DVBPSI, [test "${have_dvbpsi}" = "yes"])
2048 dnl  GME demux plugin
2050 AC_ARG_ENABLE(gme,
2051   [AS_HELP_STRING([--enable-gme],
2052     [use Game Music Emu (default auto)])])
2053 AS_IF([test "${enable_gme}" != "no"], [
2054   AC_CHECK_HEADER([gme/gme.h], [
2055     VLC_ADD_LIBS([gme], [-lgme])
2056     VLC_ADD_PLUGIN([gme])
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)
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} -I/opt/vc/include -I/opt/vc/include/interface/vcos/pthreads -I/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],[ -I/opt/vc/include -I/opt/vc/include/interface/vcos/pthreads -I/opt/vc/include/interface/vmcs_host/linux ])
3381         VLC_ADD_LIBS([mmal],[ -lbcm_host -lmmal -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.2.0 Qt5Widgets Qt5Gui], [
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       PKG_CHECK_MODULES([QT], [QtCore QtGui >= 4.8.0],, [
3671         AS_IF([test -n "${enable_qt}"],[
3672           AC_MSG_ERROR([${QT_PKG_ERRORS}.])
3673         ],[
3674           AC_MSG_WARN([${QT_PKG_ERRORS}.])
3675         ])
3676         enable_qt="no"
3677       ])
3678       QT_PATH="$(eval $PKG_CONFIG --variable=exec_prefix QtCore)"
3679       AC_PATH_PROGS(MOC, [moc-qt4 moc], moc, ["${QT_PATH}/bin"])
3680       AC_PATH_PROG(RCC, rcc, rcc, ["${QT_PATH}/bin"])
3681       AC_PATH_PROGS(UIC, [uic-qt4 uic], uic, ["${QT_PATH}/bin"])
3682     ])
3684 AS_IF([test "${enable_qt}" != "no"], [
3685   ALIASES="${ALIASES} qvlc"
3687 AC_SUBST(QT_VERSION)
3688 AM_CONDITIONAL(ENABLE_QT, [test "$enable_qt" != "no"])
3689 AM_CONDITIONAL([HAVE_QT5_X11], [test "${have_qt5_x11}" = "yes"])
3692 dnl detect kde4-config patch (used for kde solids).
3694 AC_ARG_VAR([KDE4_CONFIG], [kde4-config utility])
3695 AS_IF([test "x$KDE4_CONFIG" = "x"], [
3696   KDE4_CONFIG="kde4-config"
3700 dnl Simple test for skins2 dependency
3702 AS_IF([test "$enable_qt" = "no"], [
3703   AS_IF([test "${enable_skins2}" = "yes"], [
3704     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.])
3705   ], [
3706     enable_skins2="no"
3707     AC_MSG_WARN([The skins2 module depends on the Qt interface, Qt is not built so skins2 is disabled.])
3708   ])
3712 dnl Skins2 module
3714 AC_ARG_ENABLE(skins2,
3715   [AS_HELP_STRING([--enable-skins2], [skins interface module (default auto)])])
3716 AS_IF([test "${enable_skins2}" != "no"], [
3717   have_skins_deps="yes"
3719   dnl Win32
3720   AS_IF([test "${SYS}" = "mingw32"], [
3721     VLC_ADD_CPPFLAGS([skins2],[-U_OFF_T_ -U_off_t -DWIN32_SKINS])
3722     VLC_ADD_LIBS([skins2],[-lgdi32 -lole32 -luuid -lmsimg32])
3723   dnl OS/2
3724   ], [test "${SYS}" = "os2"], [
3725     VLC_ADD_CPPFLAGS([skins2],[ -DOS2_SKINS])
3726   dnl Linux/Unix
3727   ], [
3728     PKG_CHECK_MODULES([XPM], [xpm],, [have_skins_deps="no"])
3729     PKG_CHECK_MODULES([XINERAMA], [xinerama],, [have_skins_deps="no"])
3730     PKG_CHECK_MODULES([XEXT], [xext],, [have_skins_deps="no"])
3731     VLC_ADD_CPPFLAGS([skins2],[${X_CFLAGS} ${XEXT_CFLAGS} ${XPM_CFLAGS} -DX11_SKINS])
3732     VLC_ADD_LIBS([skins2],[${X_LIBS} ${X_PRE_LIBS} ${XEXT_LIBS} ${XPM_LIBS} ${XINERAMA_LIBS} -lX11])
3733   ])
3735   dnl we need freetype
3736   AS_IF([test "${have_freetype}" != "yes"], [
3737     have_skins_deps="no"
3738   ])
3740   AS_IF([test "${have_skins_deps}" = "no"], [
3741     AS_IF([test "x${enable_skins2}" = "x"], [
3742       AC_MSG_WARN([Skins2 interface disabled due to missing dependencies.])
3743     ], [
3744       AC_MSG_ERROR([Skins2 interface requires FreeType, libxpm, libxext and libxinerama])
3745     ])
3746     enable_skins2="no"
3747   ], [
3748     ALIASES="${ALIASES} svlc"
3749     enable_skins2="yes"
3750   ])
3752 AM_CONDITIONAL(BUILD_SKINS, [test "${enable_skins2}" = "yes"])
3754 AC_ARG_ENABLE(libtar,
3755   [  --enable-libtar         libtar support for skins2 (default auto)])
3756 AS_IF([test "${enable_skins2}" = "yes" && test "${enable_libtar}" != "no"], [
3757   AC_CHECK_HEADERS(libtar.h, [
3758     VLC_ADD_LIBS([skins2],[-ltar])
3759   ])
3763 dnl  MacOS X gui module
3765 AC_ARG_ENABLE(macosx,
3766   [  --enable-macosx         Mac OS X gui support (default enabled on Mac OS X)])
3767 if test "x${enable_macosx}" != "xno" -a "${SYS}" = "darwin"
3768 then
3770   dnl
3771   dnl If possible, use xcrun to find the right ibtool
3772   dnl
3774   AC_PATH_PROG([XCRUN], [xcrun], [no])
3775   AS_IF([test ! "x${XCRUN}" = "xno"], [
3776     AC_MSG_CHECKING([for ibtool (using xcrun)])
3777     XIB="$(eval $XCRUN -f ibtool 2>/dev/null || echo no)"
3778     AC_MSG_RESULT([${XIB}])
3779   ], [
3780     AC_MSG_WARN([Looking for tools without using xcrun])
3781   ])
3783   AS_IF([test "x${XIB}" = "xno"], [
3784     AC_PATH_PROG(XIB, [ibtool], [no])
3785     AS_IF([test "x${XIB}" = "xno"], [
3786       AC_MSG_ERROR([ibtool was not found, but is required for --enable-macosx])
3787     ])
3788   ])
3790 AM_CONDITIONAL(ENABLE_MACOSX_UI, [test "$enable_macosx" != "no" -a "${SYS}" = "darwin"])
3793 dnl  MacOS X sparkle update support
3795 AC_ARG_ENABLE(sparkle,
3796   [  --enable-sparkle        Sparkle update support for OS X (default enabled on Mac OS X)])
3797 if test "x${enable_sparkle}" != "xno" -a "${HAVE_OSX}" = "1"
3798 then
3799   if test ! -d ${CONTRIB_DIR}/Sparkle.framework -a ! -d ${CONTRIB_DIR}/Frameworks/Sparkle.framework
3800   then
3801     AC_MSG_ERROR([Sparkle framework is required and was not found in ${CONTRIB_DIR}])
3802   fi
3804   AC_DEFINE([HAVE_SPARKLE], [1], [Define to 1 if sparkle is enabled.])
3806 AM_CONDITIONAL(HAVE_SPARKLE, [test "$enable_sparkle" != "no"])
3809 dnl  MacOS X breakpad creash reporter support
3811 AC_ARG_ENABLE(breakpad,
3812   [  --enable-breakpad       Breakpad crash reporter support for OS X (default enabled on Mac OS X)])
3813 if test "x${enable_breakpad}" != "xno" -a "${HAVE_OSX}" = "1"
3814 then
3815   if test ! -d ${CONTRIB_DIR}/Breakpad.framework -a ! -d ${CONTRIB_DIR}/Frameworks/Breakpad.framework
3816   then
3817     AC_MSG_ERROR([Breakpad framework is required and was not found in ${CONTRIB_DIR}])
3818   fi
3820   AC_DEFINE([HAVE_BREAKPAD], [1], [Define to 1 if breakpad is enabled.])
3822 AM_CONDITIONAL(HAVE_BREAKPAD, [test "$enable_breakpad" != "no"])
3826 dnl  Minimal Mac OS X module
3828 AC_ARG_ENABLE(minimal-macosx,
3829   [  --enable-minimal-macosx Minimal Mac OS X support (default disabled)])
3830 if test "${enable_minimal_macosx}" = "yes" -a "${SYS}" = "darwin"
3831 then
3832   VLC_ADD_PLUGIN([minimal_macosx])
3836 dnl Mac OS X fancy dmg build tool
3838 if test "${HAVE_OSX}" = "1"
3839 then
3840   AC_PATH_PROG(DMGBUILD, dmgbuild, no)
3841   AS_IF([test "x${DMGBUILD}" = "xno"], [
3842     AC_MSG_WARN([dmgbuild not found -- unable to build fancy DMGs])
3843   ])
3845 AM_CONDITIONAL(HAVE_DMGBUILD, [test "x$DMGBUILD" != "xno" -a "${HAVE_OSX}" = "1"])
3848 dnl  VideoToolbox plugins
3849 AC_CHECK_HEADERS(VideoToolbox/VideoToolbox.h, [
3850     VLC_ADD_PLUGIN([videotoolbox])
3851     VLC_ADD_PLUGIN([cvpx])
3852   ])
3855 dnl  ncurses module
3857 AC_ARG_ENABLE(ncurses,
3858 [AS_HELP_STRING([--disable-ncurses],[ncurses text-based interface (default auto)])])
3859 have_ncurses="no"
3860 AS_IF([test "${enable_ncurses}" != "no"] ,[
3861   PKG_CHECK_MODULES([NCURSES], [ncursesw], [
3862     have_ncurses="yes"
3863     ALIASES="${ALIASES} nvlc"
3864   ], [
3865     AS_IF([test -n "${enable_ncurses}"], [
3866       AC_MSG_ERROR([${NCURSES_PKG_ERRORS}.])
3867     ])
3868   ])
3870 AM_CONDITIONAL([HAVE_NCURSES], [test "${have_ncurses}" = "yes"])
3873 dnl  Lirc plugin
3875 AC_ARG_ENABLE(lirc,
3876   [  --enable-lirc           lirc support (default disabled)])
3877 have_lirc="no"
3878 AS_IF([test "${enable_lirc}" = "yes"], [
3879   AC_CHECK_HEADER(lirc/lirc_client.h, [
3880     AC_CHECK_LIB(lirc_client, lirc_init, [
3881       have_lirc="yes"
3882     ])
3883   ])
3885 AM_CONDITIONAL([HAVE_LIRC], [test "${have_lirc}" = "yes"])
3888 dnl  SRT plugin
3890 PKG_ENABLE_MODULES_VLC([SRT], [access_srt access_output_srt], [srt >= 1.2.0], [SRT input/output plugin], [auto], [], [], [-DENABLE_SRT])
3892 EXTEND_HELP_STRING([Visualisations and Video filter plugins:])
3894 dnl  goom visualization plugin
3896 PKG_ENABLE_MODULES_VLC([GOOM], [], [libgoom2], [goom visualization plugin], [auto])
3899 dnl libprojectM visualization plugin
3901 AC_ARG_ENABLE(projectm,
3902   [  --enable-projectm       projectM visualization plugin (default enabled)])
3903 AS_IF([test "${enable_projectm}" != "no"],
3904   [
3905     PKG_CHECK_MODULES(PROJECTM, libprojectM,
3906     [
3907       VLC_ADD_PLUGIN([projectm])
3908       PKG_CHECK_EXISTS([libprojectM >= 2.0.0],
3909         [ AC_DEFINE([HAVE_PROJECTM2], 1, [Define to 1 if using libprojectM 2.x]) ],
3910         [ AC_MSG_WARN( [Using libprojectM version 1] )
3911       ])
3912     ],[
3913       AC_MSG_WARN([${PROJECTM_PKG_ERRORS}.])
3914     ])
3915   ])
3918 dnl Vovoid VSXu visualization plugin
3920 AC_ARG_ENABLE(vsxu,
3921   [  --enable-vsxu           Vovoid VSXu visualization plugin (default auto)])
3922 AS_IF([test "${enable_vsxu}" != "no"],
3923   [
3924     PKG_CHECK_MODULES(VSXU, libvsxu,
3925     [
3926       VLC_ADD_PLUGIN([vsxu])
3927     ],[
3928       AC_MSG_WARN([${VSXU_PKG_ERRORS}.])
3929     ])
3930   ])
3932 EXTEND_HELP_STRING([Service Discovery plugins:])
3934 dnl  Avahi-Zeroconf services discovery
3935 PKG_ENABLE_MODULES_VLC([AVAHI], [], [avahi-client >= 0.6], [Zeroconf services discovery], [auto])
3938 dnl  libudev services discovery
3939 PKG_ENABLE_MODULES_VLC([UDEV], [], [libudev >= 142], [Linux udev services discovery], [auto])
3942 dnl MTP devices services discovery
3943 PKG_ENABLE_MODULES_VLC([MTP], [mtp access_mtp], [libmtp >= 1.0.0], [MTP devices support], [auto])
3946 dnl UPnP Plugin (Intel SDK)
3948 PKG_ENABLE_MODULES_VLC([UPNP], [upnp], [libupnp], [Intel UPNP SDK],[auto])
3951 dnl mDNS using libmicrodns
3953 PKG_ENABLE_MODULES_VLC([MICRODNS], [], [microdns], [mDNS services discovery], [auto])
3956 EXTEND_HELP_STRING([Misc options:])
3959 dnl  libxml2 module
3961 PKG_ENABLE_MODULES_VLC([LIBXML2], [xml], [libxml-2.0 >= 2.5], [libxml2 support],[auto])
3965 dnl libgcrypt
3967 AC_ARG_ENABLE(libgcrypt,
3968   [  --disable-libgcrypt     gcrypt support (default enabled)])
3969 AC_ARG_VAR([GCRYPT_CFLAGS], [C compiler flags for gcrypt])
3970 AC_ARG_VAR([GCRYPT_LIBS], [linker flags flags for gcrypt])
3972 # require libgcrypt >= 1.6.0
3973 AS_IF([test "${enable_libgcrypt}" != "no"], [
3974   AC_CACHE_CHECK([for gcrypt 1.6.0 or later], [ac_cv_lib_gcrypt], [
3975     VLC_SAVE_FLAGS
3976     CFLAGS="${CFLAGS} ${GCRYPT_CFLAGS}"
3977     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([
3978 [#include <gcrypt.h>
3979 #if GCRYPT_VERSION_NUMBER < 0x010600
3980 #error
3981 #endif]])], [
3982       ac_cv_lib_gcrypt=yes
3983     ], [
3984       ac_cv_lib_gcrypt=no
3985     ])
3986     VLC_RESTORE_FLAGS
3987   ])
3989   AS_IF([test "${ac_cv_lib_gcrypt}" = "yes"], [
3990     AC_DEFINE([HAVE_GCRYPT], 1, [Defined if having gcrypt])
3991   ], [
3992     AS_IF([test "${enable_libgcrypt}" = "yes"], [
3993       AC_MSG_ERROR([libgcrypt version 1.6.0 or higher not found. Install libgcrypt or pass --disable-libgcrypt.])
3994     ])
3995   ])
3998 AS_IF([test -z "$GCRYPT_LIBS"], [
3999   GCRYPT_LIBS="-lgcrypt -lgpg-error"
4002 AC_SUBST(GCRYPT_CFLAGS)
4003 AC_SUBST(GCRYPT_LIBS)
4004 AM_CONDITIONAL([HAVE_GCRYPT], [test "${ac_cv_lib_gcrypt}" = "yes"])
4007 dnl TLS/SSL
4009 AC_ARG_ENABLE(gnutls,
4010   [  --enable-gnutls         GNU TLS TLS/SSL support (default enabled)])
4011 AS_IF([test "${enable_gnutls}" != "no"], [
4012   PKG_CHECK_MODULES(GNUTLS, [gnutls >= 3.3.6], [
4013     VLC_ADD_PLUGIN([gnutls])
4014   ], [
4015     AS_IF([test -n "${enable_gnutls}"], [
4016       AC_MSG_ERROR([${GNUTLS_PKG_ERRORS}.)])
4017     ])
4018   ])
4023 dnl Taglib plugin
4025 AC_ARG_ENABLE(taglib,
4026   [AS_HELP_STRING([--disable-taglib],
4027     [do not use TagLib (default enabled)])])
4028 AS_IF([test "${enable_taglib}" != "no"], [
4029   PKG_CHECK_MODULES(TAGLIB, taglib >= 1.9, [
4030     VLC_ADD_PLUGIN([taglib])
4031   ], [
4032     AC_MSG_WARN([${TAGLIB_PKG_ERRORS}.])])
4036 dnl  libsecret
4038 PKG_ENABLE_MODULES_VLC([SECRET], [], [libsecret-1 >= 0.18], [use libsecret for keystore], [auto])
4041 dnl  kwallet
4043 AC_ARG_ENABLE(kwallet,
4044   [AS_HELP_STRING([--enable-kwallet],
4045     [use kwallet (via D-Bus) for keystore (default enabled)])])
4046 AS_IF([test "${enable_kwallet}" != "no" -a "${have_dbus}" = "yes"], [
4047   VLC_ADD_PLUGIN([kwallet])
4051 dnl  Developers helper modules (should be hidden from configure help)
4053 AC_ARG_ENABLE(devtools, [], [], [enable_devtools="no"])
4054 AS_IF([test "${enable_devtools}" != "no"], [
4055   VLC_ADD_PLUGIN([accesstweaks])
4059 dnl update checking system
4061 AC_ARG_ENABLE(update-check,
4062   [  --enable-update-check   update checking system (default disabled)])
4063 if test "${enable_update_check}" = "yes"
4064 then
4065  AS_IF([test "${ac_cv_lib_gcrypt}" != "yes"],[
4066     AC_MSG_ERROR([libgcrypt is required for update checking system]) ])
4068 AM_CONDITIONAL(UPDATE_CHECK, [test "${enable_update_check}" = "yes"])
4071 dnl OS X notification plugin
4073 AC_ARG_ENABLE(osx_notifications,
4074   [  --enable-osx-notifications          osx notification plugin (default disabled)],,
4075   [enable_osx_notifications=no])
4076 AS_IF([test "${enable_osx_notifications}" != "no"], [
4077   if test -d ${CONTRIB_DIR}/Growl.framework -o -d ${CONTRIB_DIR}/Frameworks/Growl.framework
4078   then
4079       VLC_ADD_PLUGIN([osx_notifications])
4080       VLC_ADD_LIBS([osx_notifications], [-Wl,-framework,Growl,-framework,Foundation])
4081       VLC_ADD_OBJCFLAGS([osx_notifications], [-fobjc-exceptions] )
4082   fi
4086 dnl Libnotify notification plugin
4088 PKG_ENABLE_MODULES_VLC([NOTIFY], [], [libnotify gtk+-2.0], [libnotify notification], [auto])
4091 dnl  Endianness check
4093 AC_C_BIGENDIAN
4094 AS_IF([test "${ac_cv_c_bigendian}" = "yes"], [
4095   DEFS_BIGENDIAN="-DWORDS_BIGENDIAN=1"
4096 ], [
4097   DEFS_BIGENDIAN=""
4099 AC_SUBST(DEFS_BIGENDIAN)
4102 dnl Where to install KDE solid .desktop
4104 AC_ARG_WITH(kde-solid,
4105   AS_HELP_STRING([--with-kde-solid=PATH],
4106                  [KDE Solid actions directory (auto)]),, [
4108 if test "${SYS}" != "mingw32" -a "${SYS}" != "darwin" ; then
4109   with_kde_solid="yes"
4112 soliddatadir=""
4113 AS_IF([test "${with_kde_solid}" != "no"], [
4114   AS_IF([test "${with_kde_solid}" = "yes"], [
4115     kde4datadir="`${KDE4_CONFIG} --install data`"
4116     AS_IF([test "x$kde4datadir" = "x"], [kde4datadir='${datadir}/kde4/apps'])
4117     soliddatadir="${kde4datadir}/solid/actions"
4118   ], [
4119     soliddatadir="${with_kde_solid}"
4120   ])
4122 AC_SUBST(soliddatadir)
4123 AM_CONDITIONAL(KDE_SOLID, [test "x${soliddatadir}" != "x"])
4126 dnl Check wether we have the PROCESS_MITIGATION_IMAGE_LOAD_POLICY 
4127 dnl It should only be available when building for win10, but some SDKs define it unconditionnaly
4129 if test "${SYS}" = "mingw32"; then
4130     AC_CHECK_TYPES([PROCESS_MITIGATION_IMAGE_LOAD_POLICY],,,[#include <windows.h>])
4133 EXTEND_HELP_STRING([Components:])
4136 dnl  the VLC binary
4138 AC_ARG_ENABLE(vlc,
4139   [  --enable-vlc            build the VLC media player (default enabled)])
4140 AM_CONDITIONAL(BUILD_VLC, [test "${enable_vlc}" != "no"])
4143 dnl  Stuff used by the program
4145 VERSION_MESSAGE="${VERSION} ${CODENAME}"
4146 COPYRIGHT_MESSAGE="Copyright © ${COPYRIGHT_YEARS} the VideoLAN team"
4147 AC_DEFINE_UNQUOTED(VERSION_MESSAGE, "${VERSION_MESSAGE}", [Simple version string])
4148 AC_DEFINE_UNQUOTED(COPYRIGHT_MESSAGE, "${COPYRIGHT_MESSAGE}", [Copyright string])
4149 AC_DEFINE_UNQUOTED(COPYRIGHT_YEARS, "${COPYRIGHT_YEARS}", [The copyright years])
4150 AC_DEFINE_UNQUOTED(CONFIGURE_LINE, "${CONFIGURE_LINE}", [The ./configure command line])
4151 AC_DEFINE_UNQUOTED(PACKAGE_VERSION_MAJOR,${VERSION_MAJOR}, [version major number])
4152 AC_DEFINE_UNQUOTED(PACKAGE_VERSION_MINOR,${VERSION_MINOR}, [version minor number])
4153 AC_DEFINE_UNQUOTED(PACKAGE_VERSION_REVISION,${VERSION_REVISION}, [version revision number])
4154 AC_DEFINE_UNQUOTED(PACKAGE_VERSION_EXTRA,${VERSION_EXTRA}, [version extra number])
4155 AC_DEFINE_UNQUOTED(PACKAGE_VERSION_DEV,"${VERSION_DEV}", [version development string])
4156 AC_SUBST(COPYRIGHT_MESSAGE)
4157 AC_SUBST(VERSION_MESSAGE)
4158 AC_SUBST(VERSION_MAJOR)
4159 AC_SUBST(VERSION_MINOR)
4160 AC_SUBST(VERSION_REVISION)
4161 AC_SUBST(VERSION_EXTRA)
4162 AC_SUBST(COPYRIGHT_YEARS)
4163 AC_DEFINE_UNQUOTED(VLC_COMPILE_BY, "`whoami|sed -e 's/\\\/\\\\\\\/g'`", [user who ran configure])
4164 AC_DEFINE_UNQUOTED(VLC_COMPILE_HOST, "`hostname -f 2>/dev/null || hostname`", [host which ran configure])
4165 AC_DEFINE_UNQUOTED(VLC_COMPILER, "`$CC -v 2>&1 | tail -n 1 | sed -e 's/ *$//'`", [compiler])
4167 dnl  Handle substvars that use $(top_srcdir)
4169 CPPFLAGS="-I\$(top_srcdir)/include -I\$(top_builddir)/include ${CPPFLAGS}"
4172 dnl  Configuration is finished
4174 AC_SUBST(SYS)
4175 AC_SUBST(ARCH)
4176 AC_SUBST(ALIASES)
4177 AC_SUBST(ASM)
4178 AC_SUBST(MOC)
4179 AC_SUBST(RCC)
4180 AC_SUBST(UIC)
4181 AC_SUBST(WINDRES)
4182 AC_SUBST(WINE_SDK_PATH)
4183 AC_SUBST(LIBEXT)
4184 AC_SUBST(AM_CPPFLAGS)
4185 AC_SUBST(MACOSX_DEPLOYMENT_TARGET)
4186 AC_SUBST(FILE_LIBVLCCORE_DLL)
4187 AC_SUBST(FILE_LIBVLC_DLL)
4189 AC_CONFIG_FILES([
4190   Makefile
4191   doc/Makefile
4192   modules/Makefile
4193   m4/Makefile
4194   po/Makefile.in
4195   share/Makefile
4196   compat/Makefile
4197   src/Makefile
4198   lib/Makefile
4199   bin/Makefile
4200   test/Makefile
4201   modules/hw/mmal/Makefile
4202   share/vlc.appdata.xml.in
4205 AM_COND_IF([HAVE_WIN32], [
4206   AC_CONFIG_FILES([
4207     extras/package/win32/NSIS/spad.nsi
4208     extras/package/win32/NSIS/vlc.win32.nsi
4209     extras/package/win32/msi/config.wxi
4210   ])
4213 AM_COND_IF([HAVE_DARWIN], [
4214   AC_CONFIG_FILES([
4215     modules/gui/macosx/UI/InfoPlist.strings:modules/gui/macosx/Resources/InfoPlist.strings.in
4216     share/macosx/Info.plist:share/Info.plist.in
4217   ])
4220 dnl Generate makefiles
4221 AC_OUTPUT
4223 dnl Do we have to use make or gmake ?
4224 if make --version 2>&1|grep -q GNU
4225 then
4226     # GNU make, all seems good
4227     MAKE=make
4228 else
4229     # Known GNU make alias (on BSD)
4230     MAKE=gmake
4232 dnl Shortcut to nice compile message
4233 if test -n $SHELL; then
4234   SHELL=${CONFIG_SHELL-/bin/sh}
4236 rm -f compile
4237 compile_top_srcdir=`sed -ne "s/^top_srcdir *= *//p" < Makefile`
4238 echo "#! $SHELL
4239 rm -f .error\$\$
4240 ERROR=0
4241 export PATH=\"$PATH\" LANG=C
4242 ($MAKE V=1 \$@ 2>&1 || touch .error\$\$)| $compile_top_srcdir/extras/buildsystem/make.pl
4243 test -f .error\$\$ && ERROR=1
4244 rm -f .error\$\$
4245 exit \$ERROR" >compile
4246 chmod a+x compile
4248 echo "
4249 libvlc configuration
4250 --------------------
4251 version               : ${VERSION}
4252 system                : ${SYS}
4253 architecture          : ${ARCH}
4254 optimizations         : ${enable_optimizations}"
4255 if test "${enable_vlc}" != "no"; then
4256 echo "vlc aliases           :${ALIASES}"
4257 else
4258 echo "build vlc executable  : no"
4260 echo "
4261 To build vlc and its plugins, type \`$MAKE', or \`./compile' if you like nice colors."