substext: pass margin and font to regions
[vlc.git] / configure.ac
blob0230807515ba27c382ab9f963ad928c0cd4baed2
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 "x$with_sanitizer" != xno], [VLC_RESTORE_FLAGS])
1139 dnl Check for __attribute__((packed))
1140 AC_CACHE_CHECK([for __attribute__((packed))],
1141   [ac_cv_c_attribute_packed],
1142   [ac_cv_c_attribute_packed=no
1143    AC_TRY_COMPILE(, [struct __attribute__((__packed__)) foo { int a; } b; (void)b;],
1144                     [ac_cv_c_attribute_packed=yes])])
1145 if test "${ac_cv_c_attribute_packed}" != "no"; then
1146   AC_DEFINE(HAVE_ATTRIBUTE_PACKED, 1, Support for __attribute__((packed)) for structs)
1150 dnl  Check the CPU
1152 case "${host_cpu}" in
1153   "")
1154     ARCH=unknown
1155     ;;
1156   *)
1157     ARCH="${host_cpu}"
1158     ;;
1159 esac
1161 dnl Check for backtrace() support
1162 AC_CHECK_HEADERS(execinfo.h)
1163 AC_CHECK_FUNCS(backtrace)
1166 dnl  default modules
1168 ALIASES="${ALIASES} cvlc rvlc"
1171 dnl  Accelerated modules
1174 dnl  Check for fully working MMX intrinsics
1175 dnl  We need support for -mmmx, we need <mmintrin.h>, and we also need a
1176 dnl  working compiler (http://gcc.gnu.org/bugzilla/show_bug.cgi?id=23963)
1177 AC_ARG_ENABLE(mmx,
1178   [AS_HELP_STRING([--disable-mmx],
1179     [disable MMX optimizations (default auto)])],,[
1180   case "${host_cpu}" in
1181     i?86|x86_64)
1182       enable_mmx="yes"
1183       ;;
1184     *)
1185       enable_mmx="no"
1186       ;;
1187   esac
1189 have_mmx="no"
1190 have_mmxext="no"
1191 AS_IF([test "${enable_mmx}" != "no"], [
1192   ARCH="${ARCH} mmx"
1193   VLC_SAVE_FLAGS
1194   CFLAGS="${CFLAGS} -mmmx"
1195   AC_CACHE_CHECK([if $CC groks MMX intrinsics], [ac_cv_c_mmx_intrinsics], [
1196     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([
1197 [#include <mmintrin.h>
1198 #include <stdint.h>
1199 uint64_t frobzor;]], [
1200 [__m64 a, b, c;
1201 a = b = c = (__m64)frobzor;
1202 a = _mm_slli_pi16(a, 3);
1203 a = _mm_adds_pi16(a, b);
1204 c = _mm_srli_pi16(c, 8);
1205 c = _mm_slli_pi16(c, 3);
1206 b = _mm_adds_pi16(b, c);
1207 a = _mm_unpacklo_pi8(a, b);
1208 frobzor = (uint64_t)a;]])], [
1209       ac_cv_c_mmx_intrinsics=yes
1210     ], [
1211       ac_cv_c_mmx_intrinsics=no
1212     ])
1213   ])
1214   VLC_RESTORE_FLAGS
1215   AS_IF([test "${ac_cv_c_mmx_intrinsics}" != "no"], [
1216     AC_DEFINE(HAVE_MMX_INTRINSICS, 1, [Define to 1 if MMX intrinsics are available.])
1217   ])
1219   VLC_SAVE_FLAGS
1220   CFLAGS="${CFLAGS} -mmmx"
1221   AC_CACHE_CHECK([if $CC groks MMX inline assembly], [ac_cv_mmx_inline], [
1222     AC_COMPILE_IFELSE([AC_LANG_PROGRAM(,[[
1223 void *p;
1224 asm volatile("packuswb %%mm1,%%mm2"::"r"(p):"mm1", "mm2");
1226     ], [
1227       ac_cv_mmx_inline=yes
1228     ], [
1229       ac_cv_mmx_inline=no
1230     ])
1231   ])
1232   AS_IF([test "${ac_cv_mmx_inline}" != "no"], [
1233     AC_DEFINE(CAN_COMPILE_MMX, 1, [Define to 1 inline MMX assembly is available.])
1234     have_mmx="yes"
1235   ])
1237   AC_CACHE_CHECK([if $CC groks MMX EXT inline assembly],
1238                  [ac_cv_mmxext_inline], [
1239     AC_COMPILE_IFELSE([AC_LANG_PROGRAM(,[[
1240 void *p;
1241 asm volatile("maskmovq %%mm1,%%mm2"::"r"(p):"mm1", "mm2");
1243     ], [
1244       ac_cv_mmxext_inline=yes
1245     ], [
1246       ac_cv_mmxext_inline=no
1247     ])
1248   ])
1249   VLC_RESTORE_FLAGS
1250   AS_IF([test "${ac_cv_mmxext_inline}" != "no"], [
1251     AC_DEFINE(CAN_COMPILE_MMXEXT, 1, [Define to 1 if MMX EXT inline assembly is available.])
1252     have_mmxext="yes"
1253   ])
1255 AM_CONDITIONAL([HAVE_MMX], [test "${have_mmx}" = "yes"])
1256 AM_CONDITIONAL([HAVE_MMXEXT], [test "${have_mmxext}" = "yes"])
1258 dnl  Check for fully workin SSE2 intrinsics
1259 dnl  We need support for -mmmx, we need <emmintrin.h>, and we also need a
1260 dnl  working compiler (http://gcc.gnu.org/bugzilla/show_bug.cgi?id=23963)
1261 AC_ARG_ENABLE(sse,
1262   [AS_HELP_STRING([--disable-sse],
1263     [disable SSE (1-4) optimizations (default auto)])],, [
1264   case "${host_cpu}" in
1265     i?86|x86_64)
1266       enable_sse=yes
1267       ;;
1268     *)
1269       enable_sse=no
1270       ;;
1271   esac
1273 have_sse2="no"
1274 AS_IF([test "${enable_sse}" != "no"], [
1275   ARCH="${ARCH} sse sse2"
1277   VLC_SAVE_FLAGS
1278   CFLAGS="${CFLAGS} -msse2"
1279   AC_CACHE_CHECK([if $CC groks SSE2 intrinsics], [ac_cv_c_sse2_intrinsics], [
1280     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([
1281 [#include <emmintrin.h>
1282 #include <stdint.h>
1283 uint64_t frobzor;]], [
1284 [__m128i a, b, c;
1285 a = b = c = _mm_set1_epi64((__m64)frobzor);
1286 a = _mm_slli_epi16(a, 3);
1287 a = _mm_adds_epi16(a, b);
1288 c = _mm_srli_epi16(c, 8);
1289 c = _mm_slli_epi16(c, 3);
1290 b = _mm_adds_epi16(b, c);
1291 a = _mm_unpacklo_epi8(a, b);
1292 frobzor = (uint64_t)_mm_movepi64_pi64(a);]])], [
1293       ac_cv_c_sse2_intrinsics=yes
1294     ], [
1295       ac_cv_c_sse2_intrinsics=no
1296     ])
1297   ])
1298   VLC_RESTORE_FLAGS
1299   AS_IF([test "${ac_cv_c_sse2_intrinsics}" != "no"], [
1300     AC_DEFINE(HAVE_SSE2_INTRINSICS, 1, [Define to 1 if SSE2 intrinsics are available.])
1301   ])
1303   VLC_SAVE_FLAGS
1304   CFLAGS="${CFLAGS} -msse"
1305   AC_CACHE_CHECK([if $CC groks SSE inline assembly], [ac_cv_sse_inline], [
1306     AC_COMPILE_IFELSE([AC_LANG_PROGRAM(,[[
1307 void *p;
1308 asm volatile("xorps %%xmm1,%%xmm2"::"r"(p):"xmm1", "xmm2");
1310     ], [
1311       ac_cv_sse_inline=yes
1312     ], [
1313       ac_cv_sse_inline=no
1314     ])
1315   ])
1317   AS_IF([test "${ac_cv_sse_inline}" != "no" -a "${SYS}" != "solaris"], [
1318     AC_DEFINE(CAN_COMPILE_SSE, 1, [Define to 1 if SSE inline assembly is available.])
1319   ])
1321   AC_CACHE_CHECK([if $CC groks SSE2 inline assembly], [ac_cv_sse2_inline], [
1322     AC_COMPILE_IFELSE([AC_LANG_PROGRAM(,[[
1323 void *p;
1324 asm volatile("punpckhqdq %%xmm1,%%xmm2"::"r"(p):"xmm1", "xmm2");
1326     ], [
1327       ac_cv_sse2_inline=yes
1328     ], [
1329       ac_cv_sse2_inline=no
1330     ])
1331   ])
1332   AS_IF([test "${ac_cv_sse2_inline}" != "no" -a "${SYS}" != "solaris"], [
1333     AC_DEFINE(CAN_COMPILE_SSE2, 1, [Define to 1 if SSE2 inline assembly is available.])
1334     have_sse2="yes"
1335   ])
1337   # SSE3
1338   AC_CACHE_CHECK([if $CC groks SSE3 inline assembly], [ac_cv_sse3_inline], [
1339     AC_COMPILE_IFELSE([AC_LANG_PROGRAM(,[[
1340 void *p;
1341 asm volatile("movsldup %%xmm1,%%xmm0"::"r"(p):"xmm0", "xmm1");
1343     ], [
1344       ac_cv_sse3_inline=yes
1345     ], [
1346       ac_cv_sse3_inline=no
1347     ])
1348   ])
1350   AS_IF([test "${ac_cv_sse3_inline}" != "no"], [
1351     AC_DEFINE(CAN_COMPILE_SSE3, 1, [Define to 1 if SSE3 inline assembly is available.]) ])
1352   # SSSE3
1353   AC_CACHE_CHECK([if $CC groks SSSE3 inline assembly], [ac_cv_ssse3_inline], [
1354     AC_COMPILE_IFELSE([AC_LANG_PROGRAM(,[[
1355 void *p;
1356 asm volatile("pabsw %%xmm0,%%xmm0"::"r"(p):"xmm0");
1358     ], [
1359       ac_cv_ssse3_inline=yes
1360     ], [
1361       ac_cv_ssse3_inline=no
1362     ])
1363   ])
1365   AS_IF([test "${ac_cv_ssse3_inline}" != "no"], [
1366     AC_DEFINE(CAN_COMPILE_SSSE3, 1, [Define to 1 if SSSE3 inline assembly is available.]) ])
1368   # SSE4.1
1369   AC_CACHE_CHECK([if $CC groks SSE4.1 inline assembly],
1370                  [ac_cv_sse4_1_inline], [
1371     AC_COMPILE_IFELSE([AC_LANG_PROGRAM(,[[
1372 void *p;
1373 asm volatile("pmaxsb %%xmm1,%%xmm0"::"r"(p):"xmm0", "xmm1");
1375     ], [
1376       ac_cv_sse4_1_inline=yes
1377     ], [
1378       ac_cv_sse4_1_inline=no
1379     ])
1380   ])
1382   AS_IF([test "${ac_cv_sse4_1_inline}" != "no"], [
1383     AC_DEFINE(CAN_COMPILE_SSE4_1, 1, [Define to 1 if SSE4_1 inline assembly is available.]) ])
1385   # SSE4.2
1386   AC_CACHE_CHECK([if $CC groks SSE4.2 inline assembly],
1387                  [ac_cv_sse4_2_inline], [
1388     AC_COMPILE_IFELSE([AC_LANG_PROGRAM(,[[
1389 void *p;
1390 asm volatile("pcmpgtq %%xmm1,%%xmm0"::"r"(p):"xmm0", "xmm1");
1392     ], [
1393       ac_cv_sse4_2_inline=yes
1394     ], [
1395       ac_cv_sse4_2_inline=no
1396     ])
1397   ])
1399   AS_IF([test "${ac_cv_sse4_2_inline}" != "no"], [
1400     AC_DEFINE(CAN_COMPILE_SSE4_2, 1, [Define to 1 if SSE4_2 inline assembly is available.]) ])
1402   # SSE4A
1403   AC_CACHE_CHECK([if $CC groks SSE4A inline assembly], [ac_cv_sse4a_inline], [
1404     AC_COMPILE_IFELSE([AC_LANG_PROGRAM(,[[
1405 void *p;
1406 asm volatile("insertq %%xmm1,%%xmm0"::"r"(p):"xmm0", "xmm1");
1408     ], [
1409       ac_cv_sse4a_inline=yes
1410     ], [
1411       ac_cv_sse4a_inline=no
1412     ])
1413   ])
1414   VLC_RESTORE_FLAGS
1415   AS_IF([test "${ac_cv_sse4a_inline}" != "no"], [
1416     AC_DEFINE(CAN_COMPILE_SSE4A, 1, [Define to 1 if SSE4A inline assembly is available.]) ])
1418 AM_CONDITIONAL([HAVE_SSE2], [test "$have_sse2" = "yes"])
1420 VLC_SAVE_FLAGS
1421 CFLAGS="${CFLAGS} -mmmx"
1422 have_3dnow="no"
1423 AC_CACHE_CHECK([if $CC groks 3D Now! inline assembly], [ac_cv_3dnow_inline], [
1424   AC_COMPILE_IFELSE([AC_LANG_PROGRAM(,[[
1425 void *p;
1426 asm volatile("pfadd %%mm1,%%mm2"::"r"(p):"mm1", "mm2");
1428   ], [
1429     ac_cv_3dnow_inline=yes
1430   ], [
1431     ac_cv_3dnow_inline=no
1432   ])
1434 VLC_RESTORE_FLAGS
1435 AS_IF([test "${ac_cv_3dnow_inline}" != "no"], [
1436   AC_DEFINE(CAN_COMPILE_3DNOW, 1,
1437             [Define to 1 if 3D Now! inline assembly is available.])
1438   have_3dnow="yes"
1440 AM_CONDITIONAL([HAVE_3DNOW], [test "$have_3dnow" = "yes"])
1443 AC_ARG_ENABLE(neon,
1444   [AS_HELP_STRING([--disable-neon],
1445     [disable NEON optimizations (default auto)])],, [
1446   AS_IF([test "${host_cpu}" = "arm"], [enable_neon="yes"] ,[enable_neon="no"])
1448 AS_IF([test "${enable_neon}" != "no"], [
1449   VLC_SAVE_FLAGS
1450   CFLAGS="${CFLAGS} -mfpu=neon -mhard-float"
1451   AC_CACHE_CHECK([if $CCAS groks ARM NEON assembly], [ac_cv_arm_neon], [
1452     AC_COMPILE_IFELSE([
1453       AC_LANG_PROGRAM(,[[
1454 asm volatile("vqmovun.s64 d0, q1":::"d0");
1456     ], [
1457       ac_cv_arm_neon="yes"
1458     ], [
1459       ac_cv_arm_neon="no"
1460     ])
1461   ])
1462   VLC_RESTORE_FLAGS
1464 AM_CONDITIONAL(HAVE_NEON, [test "${ac_cv_arm_neon}" = "yes"])
1466 AC_ARG_ENABLE(arm64,
1467   [AS_HELP_STRING([--disable-arm64],
1468     [disable arm 64-bit optimizations (default auto)])],, [
1469   AS_IF([test "${host_cpu}" = "aarch64"], [enable_arm64="yes"] ,[enable_arm64="no"])
1471 AS_IF([test "${enable_arm64}" != "no"], [
1472   AC_CACHE_CHECK([if $CCAS groks ARM 64 SIMD assembly], [ac_cv_arm64], [
1473     AC_COMPILE_IFELSE([
1474       AC_LANG_PROGRAM(,[[
1475 asm volatile("uhadd v0.8b, v0.8b, v1.8b":::"v0");
1477     ], [
1478       ac_cv_arm64="yes"
1479     ], [
1480       ac_cv_arm64="no"
1481     ])
1482   ])
1484 AM_CONDITIONAL(HAVE_ARM64, [test "${ac_cv_arm64}" = "yes"])
1487 AC_ARG_ENABLE(altivec,
1488   [AS_HELP_STRING([--disable-altivec],
1489     [disable AltiVec optimizations (default auto)])],, [
1490   AS_CASE("${host_cpu}", [powerpc*],
1491         [enable_altivec=yes], [enable_altivec=no])
1493 have_altivec="no"
1494 ALTIVEC_CFLAGS=""
1495 AS_IF([test "${enable_altivec}" = "yes"], [
1496   ARCH="${ARCH} altivec";
1497   VLC_SAVE_FLAGS
1498   AC_CACHE_CHECK([if $CC groks AltiVec inline assembly],
1499     [ac_cv_altivec_inline],
1500     [AC_TRY_COMPILE(,[asm volatile("vperm 0,1,2,3");],
1501          ac_cv_altivec_inline="yes",
1502          [CFLAGS="${CFLAGS} -Wa,-maltivec"
1503           AC_TRY_COMPILE(,[asm volatile("vperm 0,1,2,3");],
1504             [ac_cv_altivec_inline="-Wa,-maltivec"],
1505             ac_cv_altivec_inline=no)
1506          ])])
1507   VLC_RESTORE_FLAGS
1508   AS_IF([test "${ac_cv_altivec_inline}" != "no"], [
1509     AC_DEFINE(CAN_COMPILE_ALTIVEC, 1,
1510               [Define to 1 if AltiVec inline assembly is available.])
1511     AS_IF([test "${ac_cv_altivec_inline}" != "yes"], [
1512       ALTIVEC_CFLAGS="${ac_cv_altivec_inline}"
1513       VLC_ADD_CFLAGS([libvlccore],[${ac_cv_altivec_inline}])
1514     ])
1515     have_altivec="yes"
1516   ])
1518   VLC_SAVE_FLAGS
1519   AC_CACHE_CHECK([if \$CC groks AltiVec C extensions],
1520   [ac_cv_c_altivec], [
1521     CFLAGS="${CFLAGS} -maltivec"
1522     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([
1523 [#include <altivec.h>]], [
1524 [vec_ld(0, (unsigned char *)0);]])], [
1525       ac_cv_c_altivec="-maltivec"
1526     ], [
1527       ac_cv_c_altivec="no"
1528     ])
1529   ])
1530   VLC_RESTORE_FLAGS
1531   AS_IF([test "${ac_cv_c_altivec}" != "no"], [
1532     CPPFLAGS="${CPPFLAGS} ${ac_cv_c_altivec}"
1533     AC_DEFINE(CAN_COMPILE_C_ALTIVEC, 1, [Define to 1 if C AltiVec extensions are available.])
1534     VLC_ADD_CFLAGS([libvlccore],[${ac_cv_c_altivec}])
1535     ALTIVEC_CFLAGS="$ALTIVEC_CFLAGS ${ac_cv_c_altivec}"
1536     VLC_ADD_CFLAGS([deinterlace],[${ac_cv_c_altivec}])
1537     have_altivec="yes"
1538   ])
1539   AC_CHECK_HEADERS(altivec.h)
1541   VLC_SAVE_FLAGS
1542   LDFLAGS="${LDFLAGS} -Wl,-framework,vecLib"
1543   AC_CACHE_CHECK([if linker needs -framework vecLib],
1544     [ac_cv_ld_altivec],
1545     [AC_TRY_LINK([],,ac_cv_ld_altivec=yes,ac_cv_ld_altivec=no)])
1546   VLC_RESTORE_FLAGS
1547   AS_IF([test "${ac_cv_ld_altivec}" != "no"], [
1548     VLC_ADD_LIBS([libvlccore],[-Wl,-framework,vecLib])
1549   ])
1551 AC_SUBST(ALTIVEC_CFLAGS)
1552 AM_CONDITIONAL([HAVE_ALTIVEC], [test "$have_altivec" = "yes"])
1555 dnl  Memory usage
1557 AC_ARG_ENABLE(optimize-memory,
1558   [AS_HELP_STRING([--enable-optimize-memory],
1559     [optimize memory usage over performance])])
1560 if test "${enable_optimize_memory}" = "yes"; then
1561   AC_DEFINE(OPTIMIZE_MEMORY, 1, Define if you want to optimize memory usage over performance)
1565 dnl Allow running as root (useful for people running on embedded platforms)
1567 AC_ARG_ENABLE(run-as-root,
1568   [AS_HELP_STRING([--enable-run-as-root],
1569     [allow running VLC as root (default disabled)])])
1570 AS_IF([test "${enable_run_as_root}" = "yes"],[
1571     AC_DEFINE(ALLOW_RUN_AS_ROOT, 1,
1572               [Define to 1 to allow running VLC as root (uid 0).])
1576 dnl Stream output
1578 AC_ARG_ENABLE(sout,
1579   [AS_HELP_STRING([--disable-sout],
1580     [disable streaming output (default enabled)])])
1581 AS_IF([test "${enable_sout}" != "no"], [
1582   AC_DEFINE(ENABLE_SOUT, 1, [Define to 1 for stream output support.])
1584 AM_CONDITIONAL(ENABLE_SOUT, [test "${enable_sout}" != "no"])
1586 dnl Lua modules
1587 AC_ARG_ENABLE(lua,
1588   [AS_HELP_STRING([--disable-lua],
1589     [disable LUA scripting support (default enabled)])])
1590 if test "${enable_lua}" != "no"
1591 then
1592   PKG_CHECK_MODULES(LUA, lua5.2,
1593     [ have_lua=yes ],
1594     [
1595     AC_MSG_WARN([${LUA_PKG_ERRORS}, trying lua 5.1 instead])
1597     PKG_CHECK_MODULES(LUA, lua5.1,
1598       [ have_lua=yes ],
1599       [
1600       AC_MSG_WARN([${LUA_PKG_ERRORS}, trying lua >= 5.1 instead])
1601       PKG_CHECK_MODULES(LUA, lua >= 5.1,
1602         [ have_lua=yes ],
1603         [
1604           AC_MSG_WARN([${LUA_PKG_ERRORS}, trying manual detection instead])
1605           have_lua=yes
1606           AC_CHECK_HEADERS([lua.h lauxlib.h lualib.h],
1607             [],
1608             [ have_lua=no ] )
1609           AC_CHECK_LIB(  lua5.2 , luaL_newstate,
1610             [LUA_LIBS="-llua5.2"],
1611           AC_CHECK_LIB( lua5.1 , luaL_newstate,
1612             [LUA_LIBS="-llua5.1"],
1613             AC_CHECK_LIB( lua51 , luaL_newstate,
1614               [LUA_LIBS="-llua51"],
1615               AC_CHECK_LIB( lua , luaL_newstate,
1616                 [LUA_LIBS="-llua"],
1617                 [ have_lua=no
1618                 ], [-lm])
1619             )))
1620         ])
1621       ])
1622     ])
1623   if test "x${have_lua}" != "xyes" ;  then
1624       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.])
1625   fi
1626   AC_ARG_VAR([LUAC], [LUA byte compiler])
1627   AS_IF([test -z "$LUAC"], [
1628      AC_CHECK_TOOL(LUAC, [luac], [false])
1629   ])
1630   AS_IF([test "${LUAC}" = "false"], [
1631     AC_MSG_ERROR([Could not find the LUA byte compiler.])
1632   ])
1633   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], [
1634     AC_MSG_ERROR([You need 32-bits luac when using lua from contrib.])
1635   ])
1637 AM_CONDITIONAL(BUILD_LUA, [test "${have_lua}" = "yes"])
1641 dnl VideoLAN manager
1643 AC_ARG_ENABLE(vlm,
1644   [AS_HELP_STRING([--disable-vlm],
1645     [disable the stream manager (default enabled)])],,
1646   [enable_vlm="${enable_sout}"])
1647 AS_IF([test "${enable_vlm}" != "no"], [
1648   AS_IF([test "${enable_sout}" = "no"], [
1649     AC_MSG_ERROR([VLM requires the stream output. Do not use --disable-sout.])
1650   ])
1651   AC_DEFINE(ENABLE_VLM, 1, [Define if you want the VideoLAN manager support])
1653 AM_CONDITIONAL([ENABLE_VLM], [test "${enable_vlm}" != "no"])
1657 dnl Addons manager storage and repositories modules
1659 AC_ARG_ENABLE(addonmanagermodules,
1660   [AS_HELP_STRING([--disable-addonmanagermodules],
1661     [disable the addons manager modules (default enabled)])])
1662 if test "${enable_addonmanagermodules}" != "no"
1663 then
1664   AC_DEFINE(ENABLE_ADDONMANAGERMODULES, 1, [Define if you want the addons manager modules])
1666 AM_CONDITIONAL([ENABLE_ADDONMANAGERMODULES], [test "${enable_addonmanagermodules}" != "no"])
1670 dnl  Input plugins
1673 EXTEND_HELP_STRING([Input plugins:])
1676 dnl  libarchive access module
1678 PKG_ENABLE_MODULES_VLC([ARCHIVE], [archive], [libarchive >= 3.1.0], (libarchive support), [auto])
1681 dnl  live555 input
1683 AC_ARG_ENABLE(live555,
1684   [AS_HELP_STRING([--enable-live555],
1685     [enable RTSP input through live555 (default enabled)])])
1687 AS_IF([test "${enable_live555}" != "no" -a -n "${CXX}"], [
1688   PKG_CHECK_MODULES(LIVE555, live555, [
1689     VLC_ADD_PLUGIN([live555])
1690     VLC_ADD_CXXFLAGS([live555], [$LIVE555_CFLAGS])
1691     VLC_ADD_LIBS([live555],[$LIVE555_LIBS])
1692   ], [
1693     AC_MSG_WARN([${LIVE555_PKG_ERRORS}.])
1695     AC_LANG_PUSH(C++)
1696     VLC_SAVE_FLAGS
1698     dnl detect include paths
1699     AS_IF([test -f "${CONTRIB_DIR}/include/UsageEnvironment/UsageEnvironment.hh"], [
1700       CPPFLAGS_live555="-I${CONTRIB_DIR}/include/liveMedia -I${CONTRIB_DIR}/include/groupsock -I${CONTRIB_DIR}/include/BasicUsageEnvironment -I${CONTRIB_DIR}/include/UsageEnvironment"
1701     ], [
1702       AS_IF([test "${SYS}" != "os2"], [
1703         LIVE555_PREFIX=${LIVE555_PREFIX-"/usr"}
1704         CPPFLAGS_live555="-I${LIVE555_PREFIX}/include/liveMedia -I${LIVE555_PREFIX}/include/groupsock -I${LIVE555_PREFIX}/include/BasicUsageEnvironment -I${LIVE555_PREFIX}/include/UsageEnvironment"
1705       ], [
1706         LIVE555_PREFIX=${LIVE555_PREFIX-"/usr/lib/live"}
1707         CPPFLAGS_live555="-I${LIVE555_PREFIX}/liveMedia/include -I${LIVE555_PREFIX}/groupsock/include -I${LIVE555_PREFIX}/BasicUsageEnvironment/include -I${LIVE555_PREFIX}/UsageEnvironment/include"
1708         LDFLAGS_live555="-L${LIVE555_PREFIX}/liveMedia -L${LIVE555_PREFIX}/groupsock -L${LIVE555_PREFIX}/BasicUsageEnvironment -L${LIVE555_PREFIX}/UsageEnvironment"
1709       ])
1710     ])
1712     dnl CPP Flags
1713     AS_IF([test "${SYS}" = "solaris"], [
1714       CPPFLAGS_live555="${CPPFLAGS_live555} -DSOLARIS"
1715     ])
1716     CPPFLAGS="${CPPFLAGS} ${CPPFLAGS_live555}"
1717     LDFLAGS="${LDFLAGS} ${LDFLAGS_live555}"
1719     dnl version check
1720     AC_CACHE_CHECK([for live555 version 1324598400 or later], [ac_cv_live555], [
1721       AC_PREPROC_IFELSE([AC_LANG_PROGRAM([
1722 [#include <liveMedia_version.hh>
1723 #if !defined (LIVEMEDIA_LIBRARY_VERSION_INT) || (LIVEMEDIA_LIBRARY_VERSION_INT < 1324598400)
1724 # error BOOM
1725 #endif]])
1726       ], [
1727         ac_cv_live555="yes"
1728       ], [
1729         ac_cv_live555="no"
1730       ])
1731     ])
1733     AS_IF([test "$ac_cv_live555" = "no"], [
1734       AC_MSG_WARN([live555 is missing or its installed version is too old:
1735 Version 2011.12.23 or later is required to proceed.
1736 You can get an updated one from http://www.live555.com/liveMedia .])
1737       AS_IF([test -n "${enable_live555}"], [
1738         AC_MSG_ERROR([Update live555 or pass --disable-live555 to disable RTSP input support.])
1739       ])
1740     ], [
1741       other_libs="-lgroupsock -lBasicUsageEnvironment -lUsageEnvironment"
1742       other_libs_pic="-lgroupsock_pic -lBasicUsageEnvironment_pic -lUsageEnvironment_pic"
1743       AS_IF([test "${SYS}" = "mingw32"], [
1744         # add ws2_32 for closesocket, select, recv
1745         other_libs="$other_libs -lws2_32"
1746       ])
1748       dnl We need to check for pic because live555 don't provide shared libs
1749       dnl and we want to build a plugins so we need -fPIC on some arch.
1750       VLC_ADD_CXXFLAGS([live555], [${CPPFLAGS_live555}])
1751       VLC_ADD_LDFLAGS([live555], [${LDFLAGS_live555}])
1752       AC_CHECK_LIB(liveMedia_pic, main, [
1753         VLC_ADD_PLUGIN([live555])
1754         VLC_ADD_LIBS([live555], [-lliveMedia_pic ${other_libs_pic}])
1755       ],[
1756         AC_CHECK_LIB(liveMedia, main, [
1757           VLC_ADD_PLUGIN([live555])
1758           VLC_ADD_LIBS([live555], [-lliveMedia ${other_libs}])
1759         ],[],[${other_libs}])
1760       ],[${other_libs_pic}])
1761     ])
1762     VLC_RESTORE_FLAGS
1763     AC_LANG_POP(C++)
1764   ])
1768 dnl IIDC and DV FireWire input modules
1770 PKG_ENABLE_MODULES_VLC([DC1394], [], [libdc1394-2 >= 2.1.0], [IIDC FireWire input module], [auto])
1771 PKG_ENABLE_MODULES_VLC([DV1394], [], [libraw1394 >= 2.0.1 libavc1394 >= 0.5.3], [DV FireWire input module], [auto])
1774 dnl - linsys modules: access module check for libzvbi
1776 AC_ARG_ENABLE(linsys,
1777   [AS_HELP_STRING([--enable-linsys],
1778     [Linux Linear Systems Ltd. SDI and HD-SDI input cards (default enabled)])])
1779 AS_IF([test "$SYS" = "linux" -a "${enable_linsys}" != "no"], [
1780   VLC_ADD_PLUGIN([linsys_hdsdi])
1781   PKG_CHECK_MODULES(LINSYS_SDI, [zvbi-0.2 >= 0.2.28], [
1782     VLC_ADD_PLUGIN([linsys_sdi])
1783   ], [
1784     AC_MSG_WARN([${LINSYS_SDI_PKG_ERRORS}.])
1785   ])
1789 dnl dvdread module: check for libdvdread
1791 PKG_ENABLE_MODULES_VLC([DVDREAD], [], [dvdread > 4.9.0], [dvdread input module], [auto])
1794 dnl libdvdnav plugin
1796 PKG_ENABLE_MODULES_VLC([DVDNAV], [], [dvdnav > 4.9.0], [DVD with navigation input module (dvdnav)], [auto])
1797 AS_IF([test "${enable_dvdnav}" != "no"], [
1798   AC_MSG_CHECKING(for dvdnav_stream_cb in dvdnav/dvdnav.h)
1799     AC_EGREP_HEADER(dvdnav_stream_cb,dvdnav/dvdnav.h,[
1800       AC_MSG_RESULT(yes)
1801       AC_DEFINE(HAVE_STREAM_CB_IN_DVDNAV_H, 1, For dvdnav demux support)
1802       ],[
1803       AC_MSG_RESULT(no)
1804     ])
1808 dnl  Blu-ray Disc Support with libbluray
1810 PKG_ENABLE_MODULES_VLC([BLURAY], [libbluray], [libbluray >= 0.6.2], (libbluray for Blu-ray disc support ) )
1813 dnl  OpenCV wrapper and example filters
1815 PKG_ENABLE_MODULES_VLC([OPENCV], [opencv_example opencv_wrapper], [opencv > 2.0], (OpenCV (computer vision) filter), [auto])
1819 dnl  libsmbclient plugin
1821 PKG_ENABLE_MODULES_VLC([SMBCLIENT], [smb], [smbclient], (SMB/CIFS support), [auto])
1822 AS_IF([test "${SYS}" = "mingw32" -a "${enable_winstore_app}" != "yes"], [ VLC_ADD_PLUGIN([smb]) ])
1825 dnl  liBDSM access module
1827 PKG_ENABLE_MODULES_VLC([DSM], [dsm], [libdsm >= 0.2.0], [libdsm SMB/CIFS access/sd module], [auto])
1830 dnl sftp access support
1832 PKG_ENABLE_MODULES_VLC([SFTP], [sftp], [libssh2], (support SFTP file transfer via libssh2), [auto])
1835 dnl nfs access support
1837 PKG_ENABLE_MODULES_VLC([NFS], [nfs], [libnfs >= 1.10.0], (support nfs protocol via libnfs), [auto])
1840 dnl  Video4Linux 2
1842 AC_ARG_ENABLE(v4l2, [AS_HELP_STRING([--disable-v4l2],
1843   [disable Video4Linux version 2 (default auto)])])
1844 have_v4l2="no"
1845 AS_IF([test "$enable_v4l2" != "no"], [
1846   AC_CHECK_HEADERS([linux/videodev2.h sys/videoio.h], [
1847     have_v4l2="yes"
1848   ])
1850 AM_CONDITIONAL(HAVE_V4L2, [test "${have_v4l2}" != "no"])
1853 dnl special access module for Blackmagic SDI cards
1855 AC_ARG_ENABLE(decklink,
1856   [AS_HELP_STRING([--disable-decklink],
1857     [disable Blackmagic DeckLink SDI input (default auto)])])
1858 AC_ARG_WITH(decklink_sdk,
1859   [AS_HELP_STRING[--with-decklink-sdk=DIR],
1860     [                        location of Blackmagic DeckLink SDI SDK])])
1861 have_decklink=no
1862 if test "${enable_decklink}" != "no"
1863 then
1864   if test "${with_decklink_sdk}" != "no" -a -n "${with_decklink_sdk}"
1865   then
1866     VLC_ADD_CPPFLAGS([decklink decklinkoutput],[-I${with_decklink_sdk}/include])
1867   fi
1868   VLC_SAVE_FLAGS
1869   CPPFLAGS="${CPPFLAGS} ${CPPFLAGS_decklink}"
1870   AC_LANG_PUSH(C++)
1871   AC_CHECK_HEADERS(DeckLinkAPIDispatch.cpp, [
1872       have_decklink=yes
1873   ], [
1874       AC_MSG_WARN(Blackmagic DeckLink SDI include files not found, decklink disabled)
1875   ])
1876   AC_LANG_POP(C++)
1877   VLC_RESTORE_FLAGS
1879 AM_CONDITIONAL(HAVE_DECKLINK, [ test "${have_decklink}" != "no" ])
1883 dnl  Built-in CD-DA and VCD module
1885 AC_ARG_ENABLE(vcd,
1886   [AS_HELP_STRING([--disable-vcd],
1887     [disable built-in VCD and CD-DA support (default enabled)])])
1889 AC_ARG_ENABLE(libcddb,
1890   [AS_HELP_STRING([--disable-libcddb],
1891     [disable CDDB for Audio CD (default enabled)])])
1893 if test "${enable_vcd}" != "no"
1894 then
1895   AC_MSG_CHECKING(for cdrom_msf0 in linux/cdrom.h)
1896   AC_EGREP_HEADER(cdrom_msf0,linux/cdrom.h,[
1897     AC_MSG_RESULT(yes)
1898     VLC_ADD_PLUGIN([vcd cdda])
1899   ],[
1900     AC_MSG_RESULT(no)
1901   ])
1903   AC_MSG_CHECKING(for scsireq in sys/scsiio.h)
1904   AC_EGREP_HEADER(scsireq,sys/scsiio.h,[
1905     AC_MSG_RESULT(yes)
1906     VLC_ADD_PLUGIN([vcd cdda])
1907     AC_DEFINE(HAVE_SCSIREQ_IN_SYS_SCSIIO_H, 1, For NetBSD VCD support)
1908   ],[
1909     AC_MSG_RESULT(no)
1910   ])
1912   AC_MSG_CHECKING(for ioc_toc_header in sys/cdio.h)
1913   AC_EGREP_HEADER(ioc_toc_header ,sys/cdio.h,[
1914     AC_MSG_RESULT(yes)
1915     VLC_ADD_PLUGIN([vcd cdda])
1916     AC_DEFINE(HAVE_IOC_TOC_HEADER_IN_SYS_CDIO_H, 1, For FreeBSD VCD support)
1917   ],[
1918     AC_MSG_RESULT(no)
1919   ])
1921   if test "${SYS}" = "bsdi" -o "${SYS}" = "mingw32" -o "${SYS}" = "os2" -o "${SYS}" = "darwin"
1922   then
1923     VLC_ADD_PLUGIN([vcd cdda])
1924   fi
1926   if test "$enable_libcddb" != "no"; then
1927     PKG_CHECK_MODULES(LIBCDDB, [libcddb >= 0.9.5], [
1928       HAVE_LIBCDDB=yes
1929       AC_DEFINE(HAVE_LIBCDDB, 1, [Define this if you have libcddb installed])
1930       VLC_ADD_LIBS([cdda],[$LIBCDDB_LIBS])
1931       VLC_ADD_CFLAGS([cdda],[$LIBCDDB_CFLAGS])
1932       ],:
1933       [AC_MSG_WARN([${LIBCDDB_PKG_ERRORS}: CDDB access disabled.])
1934       HAVE_LIBCDDB=no])
1935   fi
1939 dnl Linux DVB
1941 AC_CACHE_CHECK([for Linux DVB version 5.1], [ac_cv_linux_dvb_5_1], [
1942   AC_PREPROC_IFELSE([AC_LANG_PROGRAM([
1943 [#include <linux/dvb/version.h>
1944 #if (DVB_API_VERSION < 5)
1945 # error Linux DVB API v3.2 and older are not supported.
1946 #endif
1947 #if (DVB_API_VERSION == 5 && DVB_API_VERSION_MINOR < 1)
1948 # error Linux DVB API v5.0 is unsupported. Please update.
1949 #endif
1950 ]])], [
1951   ac_cv_linux_dvb_5_1=yes
1952 ], [
1953   ac_cv_linux_dvb_5_1=no
1954 ])])
1955 AM_CONDITIONAL([HAVE_LINUX_DVB], [test "$ac_cv_linux_dvb_5_1" = "yes"])
1958 dnl  Screen capture module
1960 AC_ARG_ENABLE(screen,
1961   [AS_HELP_STRING([--enable-screen],
1962     [disable screen capture (default enabled)])])
1963 if test "${enable_screen}" != "no"; then
1964   if test "${SYS}" = "darwin"; then
1965     AC_CHECK_HEADERS(ApplicationServices/ApplicationServices.h, [
1966       VLC_ADD_PLUGIN([screen])
1967     ])
1968   fi
1970 AM_CONDITIONAL(HAVE_MAC_SCREEN, [test "${SYS}" = "darwin" -a "x${enable_screen}" != "xno"])
1973 dnl  VNC/RFB access module
1975 PKG_ENABLE_MODULES_VLC([VNC], [vnc], [libvncclient >= 0.9.9], (VNC/rfb client support), [auto])
1977 dnl  RDP/Remote Desktop access module
1979 PKG_ENABLE_MODULES_VLC([FREERDP], [rdp], [freerdp >= 1.0.1], (RDP/Remote Desktop client support) )
1982 dnl  Real RTSP plugin
1984 AC_ARG_ENABLE(realrtsp,
1985   [  --enable-realrtsp       Real RTSP module (default disabled)])
1986 if test "${enable_realrtsp}" = "yes"; then
1987   VLC_ADD_PLUGIN([access_realrtsp])
1991 dnl QTKit
1992 AC_ARG_ENABLE(macosx-qtkit,
1993   [  --enable-macosx-qtkit Mac OS X qtsound (audio) module (default enabled on Mac OS X <= v10.11)])
1994 if test "x${enable_macosx_qtkit}" != "xno" &&
1995   (test "${SYS}" = "darwin" || test "${enable_macosx_qtkit}" = "yes")
1996 then
1997   AC_CHECK_HEADERS(QTKit/QTKit.h, [
1998       VLC_ADD_PLUGIN([qtsound])
1999     ])
2003 dnl AVFoundation
2004 AC_SUBST(have_avfoundation, ["no"])
2005 AC_ARG_ENABLE(macosx-avfoundation,
2006   [  --enable-macosx-avfoundation Mac OS X avcapture (video) module (default enabled on Mac OS X)])
2007 if test "x${enable_macosx_avfoundation}" != "xno" &&
2008   (test "${SYS}" = "darwin" || test "${enable_macosx_avfoundation}" = "yes")
2009 then
2010   SAVED_LIBS="${LIBS}"
2011   LIBS="-framework AVFoundation"
2012   AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [])],[have_avfoundation=yes],[have_avfoundation=no])
2013   LIBS="${SAVED_LIBS}"
2014   if test "${have_avfoundation}" != "no"
2015   then
2016     VLC_ADD_PLUGIN([avcapture])
2017   fi
2019 AM_CONDITIONAL(HAVE_AVFOUNDATION, [test "${have_avfoundation}" != "no"])
2022 dnl  DCP plugin (using asdcplib)
2024 PKG_WITH_MODULES([ASDCP], [asdcplib], [have_asdcp="yes"])
2025 AM_CONDITIONAL(HAVE_ASDCP, [test "${have_asdcp}" = "yes"])
2028 dnl  Demux plugins
2031 EXTEND_HELP_STRING([Mux/Demux plugins:])
2034 dnl  libdvbpsi check for ts mux/demux
2036 have_dvbpsi="no"
2037 PKG_WITH_MODULES([DVBPSI], [libdvbpsi >= 1.2.0], [have_dvbpsi="yes"])
2038 AM_CONDITIONAL(HAVE_DVBPSI, [test "${have_dvbpsi}" = "yes"])
2042 dnl  GME demux plugin
2044 AC_ARG_ENABLE(gme,
2045   [AS_HELP_STRING([--enable-gme],
2046     [use Game Music Emu (default auto)])])
2047 AS_IF([test "${enable_gme}" != "no"], [
2048   AC_CHECK_HEADER([gme/gme.h], [
2049     VLC_ADD_LIBS([gme], [-lgme])
2050     VLC_ADD_PLUGIN([gme])
2051   ], [
2052     AS_IF([test "x${enable_gme}" != "x"], [
2053       AC_MSG_ERROR([GME cannot be found. Please install the development files.])
2054     ])
2055   ])
2060 dnl  SIDPlay plugin
2062 AC_ARG_ENABLE(sid,
2063     [AS_HELP_STRING([--enable-sid],[C64 sid demux support (default auto)])])
2064 AS_IF([test "${enable_sid}" != "no"], [
2065     PKG_CHECK_MODULES(SID, [libsidplay2], [
2066         AC_LANG_PUSH(C++)
2067         oldCPPFLAGS="$CPPFLAGS"
2068         CPPFLAGS="$CPPFLAGS $SID_CFLAGS"
2069         AC_CHECK_HEADER([sidplay/builders/resid.h], [
2070             VLC_ADD_PLUGIN([sid])
2071             VLC_ADD_CFLAGS([sid], [$SID_CFLAGS])
2072             VLC_ADD_LIBS([sid], [$SID_LIBS] [-lresid-builder])
2073         ], [
2074             AS_IF([test -n "${enable_sid}"],
2075                 [AC_MSG_ERROR([${SID_PKG_ERRORS} (required for sid).])],
2076                 [AC_MSG_WARN([${SID_PKG_ERRORS} (required for sid).])]
2077                 )
2078         ])
2079         CPPFLAGS="$oldCPPFLAGS"
2080         AC_LANG_POP(C++)
2081     ], [
2082         AS_IF([test "x${enable_sid}" = "xyes"],
2083             [AC_MSG_ERROR([${SID_PKG_ERRORS} (required for sid).])],
2084             [AC_MSG_WARN([${SID_PKG_ERRORS} (required for sid).])]
2085             )
2086     ])
2091 dnl  ogg demux plugin
2093 PKG_ENABLE_MODULES_VLC([OGG], [mux_ogg], [ogg >= 1.0], [Ogg demux support], [auto])
2094 PKG_CHECK_MODULES(LIBVORBIS, [vorbis >= 1.1], [
2095     AC_DEFINE(HAVE_LIBVORBIS, 1, [Define to 1 if you have the libvorbis])
2096 ],[true])
2097 PKG_ENABLE_MODULES_VLC([OGG], [], [ogg >= 1.0], [Ogg demux support], [auto], [${LIBVORBIS_CFLAGS}], [${LIBVORBIS_LIBS}])
2098 if test "${enable_sout}" != "no"; then
2099 dnl Check for libshout
2100     PKG_ENABLE_MODULES_VLC([SHOUT], [access_output_shout], [shout >= 2.1], [libshout output plugin], [auto])
2104 dnl  matroska demux plugin
2106 PKG_ENABLE_MODULES_VLC([MATROSKA], [mkv], [libebml libmatroska], [MKV format support], [auto])
2109 dnl  modplug demux plugin
2111 AC_ARG_ENABLE(mod,
2112   [AS_HELP_STRING([--disable-mod],
2113     [do not use libmodplug (default auto)])])
2114 if test "${enable_mod}" != "no" ; then
2115     PKG_CHECK_MODULES(LIBMODPLUG, [libmodplug >= 0.8.4 libmodplug != 0.8.8], [
2116           VLC_ADD_PLUGIN([mod])
2117           VLC_ADD_CXXFLAGS([mod],[$LIBMODPLUG_CFLAGS])
2118           VLC_ADD_CFLAGS([mod],[$LIBMODPLUG_CFLAGS]) #modules/demux/mod.c needs CFLAGS_mod, not CXXFLAGS_mod
2119           VLC_ADD_LIBS([mod],[$LIBMODPLUG_LIBS])
2120     ],[
2121        AS_IF([test -n "${enable_mod}"],
2122          [AC_MSG_ERROR([${LIBMODPLUG_PKG_ERRORS}.])],
2123          [AC_MSG_WARN([${LIBMODPLUG_PKG_ERRORS}.])])
2124     ])
2128 dnl  mpc demux plugin
2130 AC_ARG_ENABLE(mpc,
2131   [AS_HELP_STRING([--disable-mpc], [do not use libmpcdec (default auto)])])
2132 if test "${enable_mpc}" != "no"
2133 then
2134   AC_CHECK_HEADERS([mpc/mpcdec.h], [
2135     VLC_ADD_PLUGIN([mpc])
2136     VLC_ADD_LIBS([mpc],[-lmpcdec])],
2137     [AC_CHECK_HEADERS([mpcdec/mpcdec.h], [
2138     VLC_ADD_PLUGIN([mpc])
2139     VLC_ADD_LIBS([mpc],[-lmpcdec])])])
2143 dnl  Codec plugins
2146 EXTEND_HELP_STRING([Codec plugins:])
2149 dnl wmafixed plugin
2151 AC_ARG_ENABLE(wma-fixed,
2152   [  --enable-wma-fixed      libwma-fixed module (default disabled)])
2153 if test "${enable_wma_fixed}" = "yes"
2154 then
2155   VLC_ADD_PLUGIN([wma_fixed])
2159 dnl shine encoder plugin
2161 PKG_ENABLE_MODULES_VLC([SHINE], [], [shine >= 3.0.0], [MPEG Audio Layer 3 encoder], [auto], [], [], [])
2165 dnl openmax il codec plugin
2167 AC_ARG_ENABLE(omxil,
2168   [  --enable-omxil          openmax il codec module (default disabled)])
2169 if test "${enable_omxil}" = "yes"
2170 then
2171   VLC_ADD_PLUGIN([omxil])
2175 dnl openmax il vout plugin
2177 AC_ARG_ENABLE(omxil-vout,
2178   [  --enable-omxil-vout     openmax il video output module (default disabled)])
2179 if test "${enable_omxil_vout}" = "yes"
2180 then
2181   VLC_ADD_PLUGIN([omxil_vout])
2185 dnl raspberry pi openmax il configuration
2187 AC_ARG_ENABLE(rpi-omxil,
2188   [  --enable-rpi-omxil     openmax il configured for raspberry pi (default disabled)])
2189 if test "${enable_rpi_omxil}" = "yes"
2190 then
2191   VLC_ADD_PLUGIN([omxil omxil_vout])
2192   VLC_ADD_CFLAGS([omxil omxil_vout],[-DRPI_OMX])
2196 dnl CrystalHD codec plugin
2198 AC_ARG_ENABLE(crystalhd,
2199   [  --enable-crystalhd      crystalhd codec plugin (default auto)])
2200 if test "${enable_crystalhd}" != "no"; then
2201     AC_CHECK_HEADER(libcrystalhd/libcrystalhd_if.h, [
2202       VLC_ADD_PLUGIN([crystalhd])
2203       VLC_ADD_LIBS([crystalhd], [-lcrystalhd])
2204     ],[
2205       if test "${SYS}" = "mingw32" ; then
2206         AC_CHECK_HEADERS(libcrystalhd/bc_dts_defs.h, [
2207           VLC_ADD_PLUGIN([crystalhd])
2208           AC_CHECK_HEADERS(libcrystalhd/bc_drv_if.h, [
2209             VLC_ADD_LIBS([crystalhd], [-lbcmDIL])
2210             ])
2211         ],[
2212           AS_IF([test x"${enable_crystalhd}" = "xyes"],
2213                 [AC_MSG_ERROR("Could not find CrystalHD development headers")],
2214                 [AC_MSG_WARN("Could not find CrystalHD development headers")])
2215         ],[#define __LINUX_USER__
2216                #include <libcrystalhd/bc_dts_types.h>
2217         ])
2218       fi
2219     ],[
2220        #include <libcrystalhd/bc_dts_types.h>
2221       ])
2225 dnl  mad plugin
2227 have_mad="no"
2228 MAD_CFLAGS=""
2229 MAD_LIBS=""
2231 AC_ARG_WITH(mad, [  --with-mad=PATH         path to libmad], [
2232   enable_mad="yes"
2233 ], [
2234   with_mad="no"
2236 AS_IF([test "${with_mad}" != "no"], [
2237   MAD_CFLAGS="-I${with_mad}/include"
2238   MAD_LIBS="-L${with_mad}/lib"
2241 AC_ARG_ENABLE(mad,
2242   [  --enable-mad            libmad module (default enabled)])
2243 AS_IF([test "${enable_mad}" != "no"], [
2244   VLC_SAVE_FLAGS
2245   CPPFLAGS="${CPPFLAGS} ${MAD_CFLAGS}"
2246   LDFLAGS="${LDFLAGS} ${MAD_LIBS}"
2247   AC_CHECK_HEADERS(mad.h, [
2248     AC_CHECK_LIB(mad, mad_bit_init, [
2249       have_mad="yes"
2250       MAD_LIBS="${MAD_LIBS} -lmad"
2251     ])
2252   ])
2253   VLC_RESTORE_FLAGS
2254   AS_IF([test -n "$enable_mad" -a "${have_mad}" = "no"], [
2255     AC_MSG_ERROR([Could not find libmad. Install it or pass --disable-mad to disable it.])
2256   ])
2258 AC_SUBST(MAD_CFLAGS)
2259 AC_SUBST(MAD_LIBS)
2260 AM_CONDITIONAL([HAVE_MAD], [test "${have_mad}" = "yes"])
2262 dnl  mpg123 plugin
2265 PKG_ENABLE_MODULES_VLC([MPG123], [mpg123], [libmpg123], [libmpg123 decoder support], [auto])
2268 dnl gstreamer stuff
2270 AC_ARG_ENABLE(gst-decode,
2271   [  --enable-gst-decode     GStreamer based decoding support (currently supports only video decoding) (default auto)])
2273 have_gst_decode="no"
2274 AS_IF([test "${enable_gst_decode}" != "no"], [
2275   PKG_CHECK_MODULES([GST_APP], [gstreamer-app-1.0], [
2276     PKG_CHECK_MODULES([GST_VIDEO], [gstreamer-video-1.0], [
2277       have_gst_decode="yes"
2278     ], [
2279       AC_MSG_WARN([${GST_VIDEO_PKG_ERRORS}. GStreamer decoder module will not be built.])
2280     ])
2281   ], [
2282     AC_MSG_WARN([${GST_APP_PKG_ERRORS}. GStreamer modules will not be built.])
2283   ])
2285 AM_CONDITIONAL([HAVE_GST_DECODE], [test "${have_gst_decode}" = "yes"])
2288 dnl  avcodec decoder/encoder plugin
2290 AC_ARG_ENABLE(merge-ffmpeg,
2291 [  --enable-merge-ffmpeg   merge FFmpeg-based plugins (default disabled)],, [
2292   enable_merge_ffmpeg="no"
2294 AM_CONDITIONAL([MERGE_FFMPEG], [test "$enable_merge_ffmpeg" != "no"])
2296 AC_MSG_CHECKING([for libavutil variant])
2297 PKG_CHECK_EXISTS([libavutil], [
2298   libavutil_version="$(${PKG_CONFIG} --modversion libavutil)"
2299   libavutil_micro="${libavutil_version##*.}"
2300   AS_IF([test ${libavutil_micro} -le 99], [
2301     avfork="libav"
2302   ], [
2303     avfork="ffmpeg"
2304   ])
2305 ], [
2306   avfork="none"
2308 AC_MSG_RESULT([${avfork}])
2310 AC_ARG_ENABLE(avcodec,
2311 [  --enable-avcodec        libavcodec codec (default enabled)])
2312 AS_IF([test "${enable_avcodec}" != "no"], [
2313   dnl We need >=57.16.0 from libav or >=57.37.100 from ffmpeg
2314   case "${avfork}" in
2315     libav) av_codec_ver="57.16.0" ;;
2316     ffmpeg) av_codec_ver="57.37.100" ;;
2317     *) AC_MSG_ERROR([Missing libav or FFmpeg. Pass --disable-avcodec to ignore this error.])
2318   esac
2319   PKG_CHECK_MODULES(AVCODEC,[libavcodec >= ${av_codec_ver} libavutil >= 52.0.0], [
2320     VLC_SAVE_FLAGS
2321     CPPFLAGS="${CPPFLAGS} ${AVCODEC_CFLAGS}"
2322     CFLAGS="${CFLAGS} ${AVCODEC_CFLAGS}"
2323     AC_CHECK_HEADERS(libavcodec/avcodec.h)
2324     AC_CHECK_HEADERS(libavutil/avutil.h)
2325     VLC_RESTORE_FLAGS
2326     have_avcodec="yes"
2327   ],[
2328     AC_MSG_ERROR([${AVCODEC_PKG_ERRORS}. Pass --disable-avcodec to ignore this error.])
2329   ])
2330 ], [
2331   have_avcodec="no"
2333 AM_CONDITIONAL([HAVE_AVCODEC], [test "${have_avcodec}" != "no"])
2336 dnl libva needs avcodec
2338 AC_ARG_ENABLE(libva,
2339   [  --enable-libva          VAAPI GPU decoding support (libVA) (default auto)])
2341 AS_IF([test "${enable_libva}" = "yes" -a "${have_avcodec}" != "yes" ], [
2342   AC_MSG_ERROR([--enable-libva and --disable-avcodec options are mutually exclusive. Use --enable-avcodec.])
2345 have_vaapi="no"
2346 have_vaapi_drm="no"
2347 have_vaapi_x11="no"
2348 have_vaapi_wl="no"
2349 AS_IF([test "${enable_libva}" != "no"], [
2350   PKG_CHECK_MODULES([LIBVA], [libva >= 0.38], [
2351     have_vaapi="yes"
2352   ], [
2353     AS_IF([test -n "${enable_libva}"], [
2354       AC_MSG_ERROR([${LIBVA_PKG_ERRORS}.])
2355     ], [
2356       AC_MSG_WARN([${LIBVA_PKG_ERRORS}.])
2357     ])
2358   ])
2359   PKG_CHECK_MODULES([LIBVA_DRM], [libva-drm], [
2360     have_vaapi_drm="yes"
2361   ], [
2362     AC_MSG_WARN([${LIBVA_DRM_PKG_ERRORS}.])
2363   ])
2364   PKG_CHECK_MODULES(LIBVA_X11, [libva-x11], [
2365     have_vaapi_x11="yes"
2366   ], [
2367     AC_MSG_WARN([${LIBVA_X11_PKG_ERRORS}.])
2368   ])
2369   PKG_CHECK_MODULES(LIBVA_WL, [libva-wayland], [
2370     have_vaapi_wl="yes"
2371   ], [
2372     AC_MSG_WARN([${LIBVA_WL_PKG_ERRORS}.])
2373   ])
2375 AM_CONDITIONAL([HAVE_VAAPI], [test "${have_vaapi}" = "yes"])
2376 AM_CONDITIONAL([HAVE_VAAPI_DRM], [test "${have_vaapi_drm}" = "yes"])
2377 AM_CONDITIONAL([HAVE_VAAPI_X11], [test "${have_vaapi_x11}" = "yes"])
2378 AM_CONDITIONAL([HAVE_VAAPI_WL], [test "${have_vaapi_wl}" = "yes"])
2380 have_avcodec_vaapi="no"
2381 AS_IF([test "${have_vaapi}" = "yes" -a "${have_avcodec}" = "yes"], [
2382   VLC_SAVE_FLAGS
2383   CPPFLAGS="${CPPFLAGS} ${AVCODEC_CFLAGS}"
2384   CFLAGS="${CFLAGS} ${AVCODEC_CFLAGS}"
2385   AC_CHECK_HEADERS([libavcodec/vaapi.h], [
2386     AC_MSG_NOTICE([VA API acceleration activated])
2387     have_avcodec_vaapi="yes"
2388   ],[
2389     AS_IF([test -n "${enable_libva}"], [
2390       AC_MSG_ERROR([libva is present but libavcodec/vaapi.h is missing])
2391     ], [
2392       AC_MSG_WARN([libva is present but libavcodec/vaapi.h is missing ])
2393     ])
2394   ])
2395   VLC_RESTORE_FLAGS
2397 AM_CONDITIONAL([HAVE_AVCODEC_VAAPI], [test "${have_avcodec_vaapi}" = "yes"])
2400 dnl dxva2 needs avcodec
2402 AC_ARG_ENABLE(dxva2,
2403   [  --enable-dxva2          DxVA2 GPU decoding support (default auto)])
2405 have_avcodec_dxva2="no"
2406 AS_IF([test "${enable_dxva2}" != "no"], [
2407   if test "${SYS}" = "mingw32"; then
2408   AS_IF([test "x${have_avcodec}" = "xyes"], [
2409     AC_CHECK_HEADERS(dxva2api.h,
2410       [
2411         AC_CHECK_HEADERS(libavcodec/dxva2.h, [
2412            AC_MSG_NOTICE([DxVA2 acceleration activated])
2413            have_avcodec_dxva2="yes"
2414         ],[
2415     AS_IF([test "${enable_dxva2}" = "yes"],
2416           [AC_MSG_ERROR([dxva2 is present but libavcodec/dxva2.h is missing])],
2417               [AC_MSG_WARN([dxva2 is present but libavcodec/dxva2.h is missing ])])
2418         ], [#undef _WIN32_WINNT
2419             /* DXVA2 is only available in Vista and above */
2420             #define _WIN32_WINNT 0x600])
2421       ],[
2422     AS_IF([test "${enable_dxva2}" = "yes"],
2423               [AC_MSG_ERROR([Could not find required dxva2api.h])],
2424               [AC_MSG_WARN([dxva2api.h not found])])
2425       ],[#include <d3d9.h>])
2426   ],[
2427     AS_IF([test "x${enable_dxva2}" != "x"], [
2428       AC_MSG_ERROR([--enable-dxva2 and --disable-avcodec options are mutually exclusive.])
2429     ])
2430   ])
2431   fi
2433 AM_CONDITIONAL([HAVE_AVCODEC_DXVA2], [test "${have_avcodec_dxva2}" = "yes"])
2436 dnl d3d11va needs avcodec
2438 AC_ARG_ENABLE(d3d11va,
2439   [  --enable-d3d11va          D3D11 GPU decoding support (default auto)])
2441 have_avcodec_d3d11va="no"
2442 AS_IF([test "${enable_d3d11va}" != "no"], [
2443   if test "${SYS}" = "mingw32"; then
2444   AS_IF([test "x${have_avcodec}" = "xyes"], [
2445         AC_CHECK_TYPES([ID3D11VideoDecoder],
2446           [
2447             AC_CHECK_HEADERS(dxva2api.h,
2448               [
2449                 AC_CHECK_HEADERS(libavcodec/d3d11va.h, [
2450                    AC_MSG_NOTICE([D3D11 acceleration activated])
2451                    AC_DEFINE(HAVE_AVCODEC_D3D11VA, 1, [Define if the d3d11va module is built])
2452                    have_avcodec_d3d11va="yes"
2453                 ],[
2454                   AS_IF([test "${enable_d3d11va}" = "yes"],
2455                     [AC_MSG_ERROR([d3d11va is present but libavcodec/d3d11va.h is missing])],
2456                         [AC_MSG_WARN([d3d11va is present but libavcodec/d3d11va.h is missing ])])
2457                   ], [#undef _WIN32_WINNT
2458                       /* D3D11 is only available in Vista and above */
2459                       #define _WIN32_WINNT 0x600])
2460                   ],[
2461                     AS_IF([test "${enable_d3d11va}" = "yes"],
2462                           [AC_MSG_ERROR([Could not find required dxva2api.h])],
2463                           [AC_MSG_WARN([dxva2api.h not found])])
2464                   ],[#include <d3d9.h>])
2465           ],[
2466             AS_IF([test "${enable_d3d11va}" = "yes"],
2467                   [AC_MSG_ERROR([Could not find required ID3D11VideoDecoder in d3d11.h])],
2468                   [AC_MSG_WARN([ID3D11VideoDecoder not found])])
2469           ], [#include <d3d11.h>])
2470   ],[
2471     AS_IF([test "x${enable_d3d11va}" != "x"], [
2472       AC_MSG_ERROR([--enable-d3d11va and --disable-avcodec options are mutually exclusive.])
2473     ])
2474   ])
2475   fi
2477 AM_CONDITIONAL([HAVE_AVCODEC_D3D11VA], [test "${have_avcodec_d3d11va}" = "yes"])
2480 dnl DXGI debug
2482 AC_CHECK_HEADERS(dxgidebug.h)
2485 dnl  avformat demuxer/muxer plugin
2488 AC_ARG_ENABLE(avformat,
2489 [  --enable-avformat       libavformat containers (default enabled)],, [
2490   enable_avformat="${have_avcodec}"
2492 have_avformat="no"
2493 AS_IF([test "${enable_avformat}" != "no"], [
2494   PKG_CHECK_MODULES(AVFORMAT,[libavformat >= 53.21.0 libavcodec libavutil], [
2495       have_avformat="yes"
2496       VLC_SAVE_FLAGS
2497       CPPFLAGS="${CPPFLAGS} ${AVFORMAT_CFLAGS}"
2498       CFLAGS="${CFLAGS} ${AVFORMAT_CFLAGS}"
2499       AC_CHECK_HEADERS(libavformat/avformat.h libavformat/avio.h)
2500       AC_CHECK_HEADERS(libavcodec/avcodec.h)
2501       AC_CHECK_HEADERS(libavutil/avutil.h)
2502       AS_IF([test "$enable_merge_ffmpeg" = "no"], [
2503         have_avformat="no"
2504       ])
2505       VLC_RESTORE_FLAGS
2506     ],[
2507       AC_MSG_ERROR([${AVFORMAT_PKG_ERRORS}. Pass --disable-avformat to ignore this error.])
2508   ])
2510 AM_CONDITIONAL([HAVE_AVFORMAT], [test "${enable_avformat}" != "no"])
2513 dnl  swscale image scaling and conversion plugin
2516 AC_ARG_ENABLE(swscale,
2517   AS_HELP_STRING([--enable-swscale],[libswscale image scaling and conversion
2518           (default enabled)]))
2519 if test "${enable_swscale}" != "no"
2520 then
2521   PKG_CHECK_MODULES(SWSCALE,[libswscale],
2522     [
2523       VLC_SAVE_FLAGS
2524       CPPFLAGS="${CPPFLAGS} ${SWSCALE_CFLAGS}"
2525       CFLAGS="${CFLAGS} ${SWSCALE_CFLAGS}"
2526       AC_CHECK_HEADERS(libswscale/swscale.h)
2527       AC_CHECK_HEADERS(libavutil/avutil.h)
2528       VLC_ADD_PLUGIN([swscale])
2529       VLC_ADD_LIBS([swscale],[$SWSCALE_LIBS])
2530       VLC_ADD_CFLAGS([swscale],[$SWSCALE_CFLAGS])
2531       AS_IF([test -n "${ac_cv_ld_bsymbolic}"], [
2532         VLC_ADD_LIBS([swscale],[${ac_cv_ld_bsymbolic}])
2533       ])
2534       VLC_RESTORE_FLAGS
2535     ],[
2536       AC_MSG_ERROR([${SWSCALE_PKG_ERRORS}. Pass --disable-swscale to ignore this error. Proper software scaling and some video chroma conversion will be missing.])
2537   ])
2541 dnl  postproc plugin
2544 AC_ARG_ENABLE(postproc,
2545 [  --enable-postproc       libpostproc image post-processing (default auto)])
2546 if test "${enable_postproc}" != "no"
2547 then
2548   PKG_CHECK_MODULES(POSTPROC,[libpostproc libavutil],
2549     [
2550       VLC_SAVE_FLAGS
2551       CPPFLAGS="${CPPFLAGS} ${POSTPROC_CFLAGS}"
2552       CFLAGS="${CFLAGS} ${POSTPROC_CFLAGS}"
2553       AC_CHECK_HEADERS(postproc/postprocess.h)
2554       VLC_ADD_PLUGIN([postproc])
2555       VLC_RESTORE_FLAGS
2556     ],[
2557       AC_MSG_WARN([${POSTPROC_PKG_ERRORS}.])
2558   ])
2562 dnl  faad decoder plugin
2564 AC_ARG_ENABLE(faad,
2565 [  --enable-faad           faad codec (default auto)])
2566 have_faad="no"
2567 AS_IF([test "${enable_faad}" != "no"], [
2568   AC_CHECK_HEADERS([neaacdec.h], [
2569     AC_CHECK_LIB(faad, NeAACDecOpen, [have_faad="yes"],, [$LIBM])
2571     AS_IF([test "${have_faad}" = "yes"], [
2572       VLC_ADD_PLUGIN([faad])
2573       VLC_ADD_LIBS([faad],[-lfaad])
2574     ], [
2575       AS_IF([test "${enable_faad}" = "yes"], [
2576         AC_MSG_ERROR([cannot find FAAD library])
2577       ], [
2578         AC_MSG_WARN([cannot find FAAD library])
2579       ])
2580     ])
2581   ])
2585 dnl  AOM decoder plugin
2587 PKG_ENABLE_MODULES_VLC([AOM], [], [aom], [experimental AV1 codec], [disabled])
2590 dnl libvpx decoder plugin
2592 AC_ARG_ENABLE(vpx,
2593     AS_HELP_STRING([--enable-vpx],[libvpx VP8/VP9 encoder and decoder (default auto)]))
2594 AS_IF([test "${enable_vpx}" != "no"],[
2595     PKG_CHECK_MODULES([VPX], [vpx >= 1.5.0], [
2596         VLC_ADD_PLUGIN([vpx])
2597         VLC_ADD_CPPFLAGS([vpx], [${VPX_CFLAGS}])
2598         VLC_ADD_LIBS([vpx], [${VPX_LIBS}])
2599         AC_CHECK_LIB([vpx],[vpx_codec_vp8_dx], [
2600             VLC_ADD_CPPFLAGS([vpx], [-DENABLE_VP8_DECODER])
2601         ], [], [${VPX_LIBS}])
2602         AC_CHECK_LIB([vpx],[vpx_codec_vp9_dx], [
2603             VLC_ADD_CPPFLAGS([vpx], [-DENABLE_VP9_DECODER])
2604         ], [], [${VPX_LIBS}])
2605         AC_CHECK_LIB([vpx],[vpx_codec_vp8_cx], [
2606             VLC_ADD_CPPFLAGS([vpx], [-DENABLE_VP8_ENCODER])
2607         ], [], [${VPX_LIBS}])
2608         AC_CHECK_LIB([vpx],[vpx_codec_vp9_cx], [
2609             VLC_ADD_CPPFLAGS([vpx], [-DENABLE_VP9_ENCODER])
2610         ], [], [${VPX_LIBS}])
2611     ], [
2612     AS_IF([test "${enable_vpx}" = "yes"],[
2613         AC_MSG_ERROR([libvpx 1.5.0 or higher was not found])
2614     ])])
2618 dnl twolame encoder plugin
2620 PKG_ENABLE_MODULES_VLC([TWOLAME], [], [twolame], [MPEG Audio Layer 2 encoder], [auto], [], [], [ -DLIBTWOLAME_STATIC])
2623 dnl fdk-aac encoder plugin
2625 PKG_ENABLE_MODULES_VLC([FDKAAC], [], [fdk-aac], [FDK-AAC encoder], [disabled])
2629 dnl A52/AC3 decoder plugin
2631 AC_ARG_ENABLE(a52,
2632   [  --enable-a52            A/52 support with liba52 (default enabled)])
2633 if test "${enable_a52}" != "no"
2634 then
2635   AC_ARG_WITH(a52,
2636     [  --with-a52=PATH         a52 headers and libraries])
2637     if test -z "${with_a52}"
2638     then
2639       LDFLAGS_test=""
2640       CPPFLAGS_test=""
2641     else
2642       LDFLAGS_test="-L${with_a52}/lib"
2643       CPPFLAGS_test="-I${with_a52}/include"
2644     fi
2645     VLC_SAVE_FLAGS
2646     CPPFLAGS="${CPPFLAGS} ${CPPFLAGS_test} ${CPPFLAGS_a52}"
2647     LDFLAGS="${LDFLAGS} ${LDFLAGS_test} ${LIBS_a52}"
2648     AC_CHECK_HEADERS(a52dec/a52.h, [
2649       AC_CHECK_LIB(a52, a52_free, [
2650         VLC_ADD_PLUGIN([a52])
2651         VLC_ADD_LIBS([a52],[${LDFLAGS_test} -la52 $LIBM])
2652         VLC_ADD_CPPFLAGS([a52],[${CPPFLAGS_test}])
2653       ],[
2654         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.])
2655         ], [$LIBM])
2656     ],[
2657       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.])
2658     ])
2659     VLC_RESTORE_FLAGS
2663 dnl DTS Coherent Acoustics decoder plugin
2665 PKG_ENABLE_MODULES_VLC([DCA], [dca], [libdca >= 0.0.5], [DTS Coherent Acoustics support with libdca], [auto])
2668 dnl  Flac plugin
2670 PKG_ENABLE_MODULES_VLC([FLAC], [], [flac], [libflac decoder/encoder support], [auto])
2673 dnl  Libmpeg2 plugin
2675 PKG_ENABLE_MODULES_VLC([LIBMPEG2], [], [libmpeg2 > 0.3.2], [libmpeg2 decoder support], [auto])
2678 dnl  Vorbis plugin
2680 PKG_ENABLE_MODULES_VLC([VORBIS], [], [ogg vorbis >= 1.1 vorbisenc >= 1.1], [Vorbis decoder and encoder], [auto])
2683 dnl  Tremor plugin
2685 AC_ARG_ENABLE(tremor,
2686   [  --enable-tremor         Tremor decoder support (default disabled)])
2687 if test "${enable_tremor}" = "yes"
2688 then
2689   AC_CHECK_HEADERS(tremor/ivorbiscodec.h, [
2690     VLC_ADD_PLUGIN([tremor])
2691    ],[])
2695 dnl  Speex plugins
2697 PKG_ENABLE_MODULES_VLC([SPEEX], [], [ogg speex >= 1.0.5], [Speex support], [auto])
2698 have_speexdsp="no"
2699 AS_IF([test "${enable_speex}" != "no"], [
2700   PKG_CHECK_MODULES([SPEEXDSP], [speexdsp], [
2701     have_speexdsp="yes"
2702   ], [
2703     AC_MSG_WARN([${SPEEXDSP_PKG_ERRORS}.])
2704   ])
2706 AM_CONDITIONAL([HAVE_SPEEXDSP], [test "$have_speexdsp" = "yes"])
2709 dnl  Opus plugin
2711 PKG_ENABLE_MODULES_VLC([OPUS], [], [ogg opus >= 1.0.3], [Opus support], [auto])
2714 dnl  Ambisonic channel mixer and binauralizer plugin
2716 PKG_ENABLE_MODULES_VLC([SPATIALAUDIO], [], [spatialaudio], [Ambisonic channel mixer and binauralizer], [auto])
2719 dnl  theora decoder plugin
2721 PKG_ENABLE_MODULES_VLC([THEORA], [], [ogg theoradec >= 1.0 theoraenc], [experimental theora codec], [auto])
2724 dnl  OggSpots decoder plugin
2726 PKG_ENABLE_MODULES_VLC([OGGSPOTS], [], [ogg], [experimental OggSpots codec], [auto])
2729 dnl  Daala decoder plugin
2731 PKG_ENABLE_MODULES_VLC([DAALA], [], [daaladec daalaenc], [experimental daala codec], [disabled])
2734 dnl  schroedinger decoder plugin (for dirac format video)
2736 PKG_ENABLE_MODULES_VLC([SCHROEDINGER], [], [schroedinger-1.0 >= 1.0.10], [dirac decoder and encoder using schroedinger], [auto])
2739 dnl  PNG decoder module
2741 AC_ARG_ENABLE(png,
2742   [  --enable-png            PNG support (default enabled)])
2743 AS_IF([test "${enable_png}" != "no"], [
2744 AC_CHECK_HEADERS(png.h, [
2745   VLC_SAVE_FLAGS
2746   LDFLAGS="${LDFLAGS} -lz $LIBM"
2747   AC_CHECK_LIB(png, png_set_alpha_mode, [
2748     VLC_ADD_PLUGIN([png])
2749   ], [], [-lz $LIBM])
2750   VLC_RESTORE_FLAGS
2751   ])
2755 dnl  JPEG decoder module
2757 AC_ARG_ENABLE(jpeg,
2758   [  --enable-jpeg           JPEG support (default enabled)])
2759 AS_IF([test "${enable_jpeg}" != "no"], [
2760 AC_CHECK_HEADERS(jpeglib.h, [
2761   VLC_ADD_PLUGIN([jpeg])
2762   ])
2766 dnl  BPG decoder module
2768 AC_ARG_ENABLE(bpg,
2769   [  --enable-bpg           BPG support (default disabled)])
2770 AS_IF([test "${enable_bpg}" != "no"], [
2771 AC_CHECK_HEADERS(libbpg.h, [
2772   VLC_ADD_PLUGIN([bpg])
2773   ])
2777 dnl H262 encoder plugin (lib262)
2779 AC_ARG_ENABLE(x262,
2780   [  --enable-x262           H262 encoding support with static libx262 (default disabled)])
2781 if test "${enable_x262}" != "no"; then
2782     PKG_CHECK_MODULES(X262, x262, [
2783         VLC_ADD_PLUGIN([x262])
2784         VLC_ADD_LDFLAGS([x262],[${X262_LIBS}])
2785         AS_IF([test -n "${ac_cv_ld_bsymbolic}"], [
2786           VLC_ADD_LIBS([x262],[${av_cv_ld_bsymbolic}])
2787         ])
2788         VLC_ADD_CFLAGS([x262],[${X262_CFLAGS}])
2789         if echo ${X262_LIBS} |grep -q 'pthreadGC2'; then
2790           VLC_ADD_CFLAGS([x262], [-DPTW32_STATIC_LIB])
2791         fi
2792     ], [
2793        if test "${enable_x262}" = "yes"; then
2794         AC_MSG_ERROR([x262 module doesn't work without staticly compiled libx262.a])
2795        fi
2796     ])
2799 dnl x265 encoder
2800 PKG_ENABLE_MODULES_VLC([X265],, [x265], [HEVC/H.265 encoder], [auto])
2803 dnl H264 encoder plugin (10-bit lib264)
2805 AC_ARG_ENABLE(x26410b,
2806   [  --enable-x26410b           H264 10-bit encoding support with static libx264 (default disabled)])
2807 if test "${enable_x26410b}" != "no"; then
2808     PKG_CHECK_MODULES(X26410B, x26410b, [
2809         VLC_ADD_PLUGIN([x26410b])
2810         VLC_ADD_LIBS([x26410b],[${X26410B_LIBS}])
2811         AS_IF([test -n "${ac_cv_ld_bsymbolic}"], [
2812           VLC_ADD_LDFLAGS([x26410b],[${ac_cv_ld_bsymbolic}])
2813         ])
2814         VLC_ADD_CFLAGS([x26410b],[${X26410B_CFLAGS}])
2815         if echo ${X26410B_LIBS} |grep -q 'pthreadGC2'; then
2816           VLC_ADD_CFLAGS([x26410b], [-DPTW32_STATIC_LIB])
2817         fi
2818     ], [
2819        if test "${enable_x26410b}" = "yes"; then
2820         AC_MSG_ERROR([x26410b module doesn't work without staticly compiled libx264.a])
2821        fi
2822     ])
2827 dnl H264 encoder plugin (using libx264)
2829 AC_ARG_ENABLE(x264,
2830   [  --enable-x264           H264 encoding support with libx264 (default enabled)])
2831 if test "${enable_x264}" != "no"; then
2832       PKG_CHECK_MODULES(X264,x264 >= 0.86, [
2833         VLC_ADD_PLUGIN([x264])
2834         VLC_ADD_LIBS([x264],[${X264_LIBS}])
2836         AS_IF([test -n "${ac_cv_ld_bsymbolic}"], [
2837           VLC_ADD_LDFLAGS([x264],[${ac_cv_ld_bsymbolic}])
2838         ])
2840         VLC_ADD_CFLAGS([x264],[${X264_CFLAGS}])
2841         if echo ${X264_LIBS} |grep -q 'pthreadGC2'; then
2842           VLC_ADD_CFLAGS([x264], [-DPTW32_STATIC_LIB])
2843         fi
2844       ],[
2845         if test "${enable_x264}" = "yes"; then
2846             AC_MSG_ERROR([${X264_PKG_ERRORS}: you may get it from http://www.videolan.org/x264.html])
2847           fi
2848       ])
2852 dnl Intel QuickSync (aka MediaSDK) H264/H262 encoder
2854 PKG_ENABLE_MODULES_VLC([MFX], [qsv], [libmfx], [Intel QuickSync MPEG4-Part10/MPEG2 (aka H.264/H.262) encoder], [auto])
2857 dnl libfluidsynth (MIDI synthetizer) plugin
2859 PKG_ENABLE_MODULES_VLC([FLUIDSYNTH], [], [fluidsynth >= 1.1.2], [MIDI synthetiser with libfluidsynth], [auto])
2860 PKG_ENABLE_MODULES_VLC([FLUIDLITE], [fluidsynth], [fluidlite], [MIDI synthetiser with libfluidsynth], [auto])
2861 AC_CHECK_HEADERS(fluidlite.h, [AC_SUBST([FLUIDSYNTH_LIBS], ${FLUIDLITE_LIBS})])
2864 dnl Teletext Modules
2865 dnl vbi decoder plugin (using libzbvi)
2866 dnl telx module
2867 dnl uncompatible
2869 AC_ARG_ENABLE(zvbi,
2870   AS_HELP_STRING([--enable-zvbi],[VBI (inc. Teletext) decoding support with
2871                   libzvbi (default enabled)]))
2872 AC_ARG_ENABLE(telx,
2873   AS_HELP_STRING([--enable-telx],[Teletext decoding module (conflicting with
2874                   zvbi) (default enabled if zvbi is absent)]))
2876 AS_IF( [test "${enable_zvbi}" != "no"],[
2877     PKG_CHECK_MODULES(ZVBI, [zvbi-0.2 >= 0.2.28],
2878         [
2879           VLC_ADD_PLUGIN([zvbi])
2880           AC_DEFINE(ZVBI_COMPILED, 1, [Define if the zvbi module is built])
2881           AS_IF( [test "${enable_telx}" = "yes"],[
2882                   AC_MSG_WARN([The zvbi and telx modules are incompatible. Using zvbi.])
2883                   ])
2884         ],[
2885           AC_MSG_WARN([${ZVBI_PKG_ERRORS}. Enabling the telx module instead.])
2886         ])
2887     ])
2888 AS_IF( [test "${enable_telx}" != "no" ],[
2889   VLC_ADD_PLUGIN([telx])
2890   ])
2893 dnl libass subtitle rendering module
2895 AC_ARG_ENABLE(libass,
2896   [  --enable-libass         Subtitle support using libass (default enabled)])
2897 AS_IF( [test "${enable_libass}" != "no"], [
2898   PKG_CHECK_MODULES(LIBASS, [libass >= 0.9.8],
2899       [
2900         VLC_ADD_PLUGIN([libass])
2902         AC_CHECK_HEADERS(fontconfig/fontconfig.h,
2903           [VLC_ADD_CPPFLAGS([libass],[-DHAVE_FONTCONFIG])
2904            VLC_ADD_LIBS([libass],[-lfontconfig])
2905        ])
2906       ],[
2907         AC_MSG_WARN([${LIBASS_PKG_ERRORS}.])
2908       ])
2909   ])
2912 dnl ARIB subtitles rendering module
2914 AC_ARG_ENABLE(aribsub,
2915   [  --enable-aribsub        ARIB Subtitles support (default enabled)])
2916 AS_IF( [test "${enable_aribsub}" != "no" ],[
2917   PKG_CHECK_MODULES(ARIBB24, [aribb24 >= 1.0.1], [
2918       have_aribb24="yes"
2919       VLC_ADD_PLUGIN([aribsub])
2920       VLC_ADD_LIBS([aribsub],[-laribb24])
2921       AC_DEFINE(HAVE_ARIBB24, 1, [Define if libaribb24 is available.])
2922     ],[
2923       AC_MSG_WARN(Library [aribb24] needed for [aribsub] was not found)
2924       have_aribb24="no"
2925   ])
2927 AM_CONDITIONAL([HAVE_ARIBB24], [test x"${have_aribb24}" = x"yes"])
2930 dnl ARIB B25
2932 PKG_ENABLE_MODULES_VLC([ARIBB25], [aribcam], [aribb25 >= 0.2.6], [ARIB STD-B25], [auto])
2935 dnl  kate decoder plugin
2937 PKG_ENABLE_MODULES_VLC([KATE], [], [kate >= 0.3.0], [kate codec], [auto])
2940 dnl  tiger rendering for kate decoder plugin
2942 AC_ARG_ENABLE(tiger,
2943 [  --enable-tiger          Tiger rendering library for Kate streams (default auto)])
2944 AS_IF([test "${enable_tiger}" != "no"], [
2945   PKG_CHECK_MODULES(TIGER,[tiger >= 0.3.1], [
2946       AC_DEFINE(HAVE_TIGER, 1, [Define if libtiger is available.])],[
2947         AS_IF([test -n "${enable_tiger}"], [
2948           AC_MSG_ERROR([${TIGER_PKG_ERRORS}.])
2949         ])
2950   ])
2955 dnl  Video plugins
2958 EXTEND_HELP_STRING([Video plugins:])
2961 dnl  OpenGL
2963 PKG_CHECK_MODULES([EGL], [egl], [
2964   have_egl="yes"
2965 ], [
2966   have_egl="no"
2968 AM_CONDITIONAL([HAVE_EGL], [test "${have_egl}" = "yes"])
2970 have_gl="no"
2971 PKG_CHECK_MODULES([GL], [gl], [
2972   have_gl="yes"
2973 ], [
2974   AC_MSG_CHECKING([for OpenGL])
2975   AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
2976 #ifdef _WIN32
2977 # include <GL/glew.h>
2978 #endif
2979 #include <GL/gl.h>
2980 ]], [
2981     [int t0 = GL_TEXTURE0;]])
2982   ], [
2983     GL_CFLAGS=""
2984     have_gl="yes"
2985     AS_IF([test "${SYS}" != "mingw32"], [
2986       GL_LIBS="-lGL"
2987     ], [
2988       GL_LIBS="-lopengl32"
2989     ])
2990   ])
2991   AC_MSG_RESULT([${have_gl}])
2993 AM_CONDITIONAL([HAVE_GL], [test "${have_gl}" = "yes"])
2995 dnl OpenGL ES 2: depends on EGL 1.1
2996 PKG_ENABLE_MODULES_VLC([GLES2], [], [glesv2], [OpenGL ES v2 support], [disabled])
2999 dnl  Xlib
3002 AC_PATH_XTRA()
3003 AC_CHECK_HEADERS(X11/Xlib.h)
3006 dnl  X C Bindings modules
3008 AC_ARG_ENABLE(xcb,
3009   [  --enable-xcb            X11 support with XCB (default enabled)],, [
3010   AS_IF([test "${SYS}" != "mingw32" -a "${SYS}" != "darwin"], [
3011     enable_xcb="yes"
3012   ], [
3013     enable_xcb="no"
3014   ])
3016 AC_ARG_ENABLE(xvideo,
3017   [  --enable-xvideo         XVideo support (default enabled)],, [
3018     enable_xvideo="$enable_xcb"
3021 have_xcb="no"
3022 have_xcb_keysyms="no"
3023 have_xcb_randr="no"
3024 have_xcb_xvideo="no"
3025 AS_IF([test "${enable_xcb}" != "no"], [
3026   dnl libxcb
3027   PKG_CHECK_MODULES(XCB, [xcb >= 1.6])
3028   have_xcb="yes"
3029   PKG_CHECK_MODULES(XCB_SHM, [xcb-shm])
3030   PKG_CHECK_MODULES(XCB_COMPOSITE, [xcb-composite])
3031   PKG_CHECK_MODULES(XPROTO, [xproto])
3033   AS_IF([test "${enable_xvideo}" != "no"], [
3034     PKG_CHECK_MODULES(XCB_XV, [xcb-xv >= 1.1.90.1], [have_xcb_xvideo="yes"])
3035   ])
3037   PKG_CHECK_MODULES(XCB_RANDR, [xcb-randr >= 1.3], [have_xcb_randr="yes"])
3039   dnl xcb-utils
3040   PKG_CHECK_MODULES(XCB_KEYSYMS, [xcb-keysyms >= 0.3.4], [have_xcb_keysyms="yes"], [
3041     AC_MSG_WARN([${XCB_KEYSYMS_PKG_ERRORS}. Hotkeys will not work.])
3042   ])
3044 AM_CONDITIONAL([HAVE_XCB], [test "${have_xcb}" = "yes"])
3045 AM_CONDITIONAL([HAVE_XCB_KEYSYMS], [test "${have_xcb_keysyms}" = "yes"])
3046 AM_CONDITIONAL([HAVE_XCB_RANDR], [test "${have_xcb_randr}" = "yes"])
3047 AM_CONDITIONAL([HAVE_XCB_XVIDEO], [test "${have_xcb_xvideo}" = "yes"])
3051 dnl VDPAU needs X11
3053 AC_ARG_ENABLE(vdpau,
3054   [AS_HELP_STRING([--enable-vdpau], [VDPAU hardware support (default auto)])])
3055 have_vdpau="no"
3056 AS_IF([test "${enable_vdpau}" != "no"], [
3057   PKG_CHECK_MODULES([VDPAU], [vdpau >= 0.6], [
3058     have_vdpau="yes"
3059     AS_IF([test "${no_x}" = "yes"], [
3060       AC_MSG_ERROR([VDPAU requires Xlib (X11).])
3061     ])
3062   ], [
3063     AS_IF([test -n "${enable_vdpau}"], [
3064       AC_MSG_ERROR([${VDPAU_PKG_ERRORS}.])
3065     ])
3066   ])
3068 AM_CONDITIONAL([HAVE_VDPAU], [test "${have_vdpau}" = "yes"])
3070 have_avcodec_vdpau="no"
3071 AS_IF([test "${have_vdpau}" = "yes" -a "${have_avcodec}" = "yes"], [
3072   case "${avfork}" in
3073     libav) av_vdpau_ver="56.10.0" ;;
3074     ffmpeg) av_vdpau_ver="56.19.100" ;;
3075   esac
3076   PKG_CHECK_EXISTS([libavcodec >= ${av_vdpau_ver}], [
3077     have_avcodec_vdpau="yes"
3078     AC_MSG_NOTICE([VDPAU decoding acceleration activated])
3079   ], [
3080     AS_IF([test -n "${enable_vdpau}"], [
3081       AC_MSG_ERROR([libavcodec >= 56.10.0 is required for VDPAU decoding.])
3082     ], [
3083       AC_MSG_WARN([libavcodec >= 56.10.0 are required for VDPAU decoding.])
3084     ])
3085   ])
3087 AM_CONDITIONAL([HAVE_AVCODEC_VDPAU], [test "${have_avcodec_vdpau}" = "yes"])
3091 dnl  Wayland
3093 AC_ARG_ENABLE(wayland,
3094   [AS_HELP_STRING([--enable-wayland], [Wayland support (default auto)])])
3095 have_wayland="no"
3096 have_wayland_egl="no"
3098 AS_IF([test "${enable_wayland}" != "no"], [
3099   PKG_CHECK_MODULES([WAYLAND_CLIENT], [wayland-client >= 1.5.91], [
3100     AC_MSG_CHECKING([for the Wayland protocols])
3101     PKG_CHECK_EXISTS([wayland-protocols >= 1.4], [
3102       WAYLAND_PROTOCOLS="$(${PKG_CONFIG} wayland-protocols --variable pkgdatadir)"
3103       AC_MSG_RESULT([${WAYLAND_PROTOCOLS}])
3104     ], [
3105       AC_MSG_RESULT([not found])
3106       AC_MSG_ERROR([$(${PKG_CONFIG} --print-errors 'wayland-protocols >= 1.4')])
3107     ])
3109     AC_MSG_CHECKING([for the Wayland scanner])
3110     PKG_CHECK_EXISTS([wayland-scanner], [
3111       WAYLAND_SCANNER="$(${PKG_CONFIG} wayland-scanner --variable wayland_scanner)"
3112       AC_MSG_RESULT([${WAYLAND_SCANNER}])
3113     ], [
3114       AC_MSG_RESULT([not found])
3115       AC_MSG_ERROR([$(${PKG_CONFIG} --print-errors wayland-scanner)])
3116     ])
3118     have_wayland="yes"
3120     AS_IF([test "${have_egl}" = "yes"], [
3121       PKG_CHECK_MODULES([WAYLAND_EGL], [wayland-egl], [
3122         have_wayland_egl="yes"
3123       ], [
3124         AC_MSG_ERROR([${WAYLAND_EGL_PKG_ERRORS}.])
3125       ])
3126     ])
3127   ], [
3128     AS_IF([test -n "${enable_wayland}"], [
3129       AC_MSG_ERROR([${WAYLAND_CLIENT_PKG_ERRORS}.])
3130     ])
3131   ])
3133 AC_SUBST([WAYLAND_PROTOCOLS])
3134 AC_SUBST([WAYLAND_SCANNER])
3135 AM_CONDITIONAL([HAVE_WAYLAND], [test "${have_wayland}" = "yes"])
3136 AM_CONDITIONAL([HAVE_WAYLAND_EGL], [test "${have_wayland_egl}" = "yes"])
3140 dnl  SDL image decoder module
3142 AC_ARG_ENABLE(sdl-image,
3143   [  --enable-sdl-image      SDL image support (default enabled)])
3144 AS_IF([test "${enable_sdl_image}" != "no"],[
3145   PKG_CHECK_MODULES(SDL_IMAGE, [SDL_image >= 1.2.10], [
3146     VLC_ADD_PLUGIN([sdl_image])
3147   ], [
3148     AC_MSG_WARN([${SDL_IMAGE_PKG_ERRORS}. You should install it alongside your SDL package.])
3149   ])
3153 dnl  freetype module
3155 AC_ARG_ENABLE(freetype,
3156   [  --enable-freetype       freetype support   (default auto)])
3157 AC_ARG_ENABLE(fribidi,
3158   [  --enable-fribidi        fribidi support    (default auto)])
3159 AC_ARG_ENABLE(harfbuzz,
3160   [  --enable-harfbuzz       harfbuzz support   (default auto)])
3161 AC_ARG_ENABLE(fontconfig,
3162   [  --enable-fontconfig     fontconfig support (default auto)])
3164 AC_ARG_WITH([default-font],
3165     AS_HELP_STRING([--with-default-font=PATH],
3166         [Path to the default font]),
3167         [AC_DEFINE_UNQUOTED([DEFAULT_FONT_FILE],
3168             "$withval", [Default font])])
3169 AC_ARG_WITH([default-monospace-font],
3170     AS_HELP_STRING([--with-default-monospace-font=PATH],
3171         [Path to the default font]),
3172         [AC_DEFINE_UNQUOTED([DEFAULT_MONOSPACE_FONT_FILE],
3173             "$withval", [Default monospace font])])
3175 AC_ARG_WITH([default-font-family],
3176     AS_HELP_STRING([--with-default-font-family=NAME],
3177         [Path to the default font family]),
3178         [AC_DEFINE_UNQUOTED([DEFAULT_FAMILY],
3179             "$withval", [Default font family])])
3180 AC_ARG_WITH([default-monospace-font-family],
3181     AS_HELP_STRING([--with-default-monospace-font-family=NAME],
3182         [Path to the default font family]),
3183         [AC_DEFINE_UNQUOTED([DEFAULT_MONOSPACE_FAMILY],
3184             "$withval", [Default monospace font family])])
3186 have_freetype="no"
3187 have_fontconfig="no"
3188 have_fribidi="no"
3189 have_harfbuzz="no"
3191 if test "${enable_freetype}" != "no"; then
3192    PKG_CHECK_MODULES(FREETYPE, freetype2, [
3193       have_freetype="yes"
3194       VLC_ADD_CPPFLAGS([skins2],[${FREETYPE_CFLAGS}])
3195       VLC_ADD_LIBS([skins2],[${FREETYPE_LIBS}])
3197     dnl fontconfig support
3198     AS_IF([test "${enable_fontconfig}" != "no" -a "${SYS}" != "mingw32" -a "${SYS}" != "darwin"], [
3199       PKG_CHECK_MODULES(FONTCONFIG, [fontconfig >= 2.11], [
3200         have_fontconfig="yes"
3201       ], [
3202         AC_MSG_WARN([${FONTCONFIG_PKG_ERRORS}. Styles will be disabled in FreeType.])
3203       ])
3204     ])
3206       dnl fribidi support
3207       if test "${enable_fribidi}" != "no"; then
3208         PKG_CHECK_MODULES(FRIBIDI, fribidi, [
3209           have_fribidi="yes"
3210           VLC_ADD_CPPFLAGS([skins2], [${FRIBIDI_CFLAGS} -DHAVE_FRIBIDI])
3211           VLC_ADD_LIBS([skins2], [${FRIBIDI_LIBS}])
3212         ],[AC_MSG_WARN([${FRIBIDI_PKG_ERRORS}. Bidirectional text and complex scripts (Arabic, Farsi, Thai...) will be disabled in FreeType.])])
3213       fi
3215       dnl harfbuzz support
3216       if test "${have_fribidi}" != "no"; then
3217         if test "${enable_harfbuzz}" != "no"; then
3218           PKG_CHECK_MODULES(HARFBUZZ, harfbuzz, [
3219             have_harfbuzz="yes"
3220             VLC_ADD_CPPFLAGS([skins2], [${HARFBUZZ_CFLAGS} -DHAVE_HARFBUZZ])
3221             VLC_ADD_LIBS([skins2], [${HARFBUZZ_LIBS}])
3222           ],[AC_MSG_WARN([${HARFBUZZ_PKG_ERRORS}. Support for complex scripts (Arabic, Farsi, Thai...) will be disabled in FreeType.])])
3223         fi
3224       fi
3225   ],[
3226   AS_IF([test -n "${enable_freetype}"],[
3227     AC_MSG_ERROR([${FREETYPE_PKG_ERRORS}. Install FreeType2 development or configure with --disable-freetype.])
3228     ])
3229   ])
3232 AM_CONDITIONAL([HAVE_FREETYPE], [test "${have_freetype}" = "yes"])
3233 AM_CONDITIONAL([HAVE_FONTCONFIG], [test "${have_fontconfig}" = "yes"])
3234 AM_CONDITIONAL([HAVE_FRIBIDI], [test "${have_fribidi}" = "yes"])
3235 AM_CONDITIONAL([HAVE_HARFBUZZ], [test "${have_harfbuzz}" = "yes"])
3238 dnl SAPI (text to Speech renderer for Windows)
3240 AC_LANG_PUSH([C++])
3241 AC_CHECK_TYPES([ISpObjectToken],[
3242               have_sapi="yes"
3243             ],[AC_MSG_WARN([sapi.h not found. Text to Speech renderer for Windows disabled])],
3244               [#include <windows.h>
3245                #include <sapi.h>
3246                #include <sphelper.h>])
3247 AM_CONDITIONAL([HAVE_SAPI], [test "${have_sapi}" = "yes"])
3248 AC_LANG_POP([C++])
3251 dnl  SVG module (text rendering and image decoding)
3253 PKG_ENABLE_MODULES_VLC([SVG], [], [librsvg-2.0 >= 2.9.0], [SVG rendering library],[auto])
3254 PKG_ENABLE_MODULES_VLC([SVGDEC], [], [librsvg-2.0 >= 2.9.0 cairo >= 1.13.1], [SVG image decoder library],[auto])
3257 dnl  Windows DirectX module
3260 AC_ARG_ENABLE(directx,
3261   [AS_HELP_STRING([--enable-directx],
3262     [Microsoft DirectX support (default enabled on Windows)])],, [
3263   AS_IF([test "${SYS}" = "mingw32"], [
3264     enable_directx="yes"
3265   ], [
3266     enable_directx="no"
3267   ])
3269 AS_IF([test "${enable_directx}" != "no"], [
3270   dnl DirectDraw
3271   AC_CHECK_HEADERS(ddraw.h, [
3272     VLC_ADD_PLUGIN([directdraw])
3273   ])
3275   dnl OpenGL
3276   AC_CHECK_HEADERS(GL/wglew.h, [
3277     VLC_ADD_PLUGIN([glwin32 wgl])
3278   ],, [
3279     #include <windows.h>
3280     #include <GL/gl.h>
3281   ])
3283   dnl Direct3D11
3284   AC_CHECK_HEADERS(d3d11.h, [
3285     VLC_ADD_PLUGIN([direct3d11 direct3d11_deinterlace direct3d11_adjust])
3286   ])
3288   dnl Direct3D9
3289   AC_CHECK_HEADERS(d3d9.h, [
3290     VLC_ADD_PLUGIN([direct3d9])
3291     AC_CHECK_HEADERS(d3dx9effect.h)
3293     AC_PREPROC_IFELSE([AC_LANG_PROGRAM(
3294         [[#define COBJMACROS
3295           #include <d3d9.h>
3296           #include <dxva2api.h>
3297           #ifndef IDirectXVideoProcessorService_GetVideoProcessorDeviceGuids
3298           # error dxva2 too old
3299           #endif
3300         ]],[[;]])
3301       ],[
3302         VLC_ADD_PLUGIN([direct3d9_deinterlace direct3d9_adjust])
3303       ],
3304       [AC_MSG_WARN([Could not find required IDirectXVideoDecoder in dxva2api.h])])
3306   ])
3310 dnl  Linux framebuffer module
3312 AC_CHECK_HEADER([linux/fb.h], [
3313   VLC_ADD_PLUGIN([fb])
3318 dnl  AA plugin
3320 AC_ARG_ENABLE(aa,
3321   [  --enable-aa             aalib output (default disabled)])
3322 if test "${enable_aa}" = "yes"
3323 then
3324   AC_CHECK_HEADER(aalib.h,have_aa="true",have_aa="false")
3325   if test "${have_aa}" = "true"
3326   then
3327     VLC_ADD_PLUGIN([aa])
3328   fi
3332 dnl  libcaca plugin
3334 PKG_ENABLE_MODULES_VLC([CACA], [], [caca >= 0.99.beta14], [libcaca output],[auto])
3337 dnl  OS/2 KVA plugin
3339 AC_ARG_ENABLE(kva,
3340   [AS_HELP_STRING([--enable-kva],
3341     [support the K Video Accelerator KVA (default enabled on OS/2)])],, [
3342   AS_IF([test "$SYS" = "os2"], [
3343     enable_kva="yes"
3344   ])
3346 have_kva="no"
3347 KVA_LIBS=""
3348 AS_IF([test "$enable_kva" != "no"], [
3349   AC_CHECK_HEADERS([kva.h], [
3350     have_kva="yes"
3351     AC_CHECK_LIB(kva, main, [
3352       KVA_LIBS="-lkva"
3353     ])
3354   ])
3356 AC_SUBST(KVA_LIBS)
3357 AM_CONDITIONAL([HAVE_KVA], [test "${have_kva}" = "yes"])
3360 dnl MMAL plugin
3362 AC_ARG_ENABLE(mmal,
3363   AS_HELP_STRING([--enable-mmal],
3364     [Multi-Media Abstraction Layer (MMAL) hardware plugin (default enable)]))
3365 if test "${enable_mmal}" != "no"; then
3366   VLC_SAVE_FLAGS
3367   LDFLAGS="${LDFLAGS} -L/opt/vc/lib -lvchostif"
3368   CPPFLAGS="${CPPFLAGS} -I/opt/vc/include -I/opt/vc/include/interface/vcos/pthreads -I/opt/vc/include/interface/vmcs_host/linux"
3369   AC_CHECK_HEADERS(interface/mmal/mmal.h,
3370     [ AC_CHECK_LIB(bcm_host, vc_tv_unregister_callback_full, [
3371         have_mmal="yes"
3372         VLC_ADD_PLUGIN([mmal])
3373         VLC_ADD_LDFLAGS([mmal],[ -L/opt/vc/lib ])
3374         VLC_ADD_CFLAGS([mmal],[ -I/opt/vc/include -I/opt/vc/include/interface/vcos/pthreads -I/opt/vc/include/interface/vmcs_host/linux ])
3375         VLC_ADD_LIBS([mmal],[ -lbcm_host -lmmal -lvchostif ]) ], [
3376           AS_IF([test "${enable_mmal}" = "yes"],
3377             [ AC_MSG_ERROR([Cannot find bcm library...]) ],
3378             [ AC_MSG_WARN([Cannot find bcm library...]) ])
3379           ],
3380         [])
3381     ] , [ AS_IF([test "${enable_mmal}" = "yes"],
3382       [ AC_MSG_ERROR([Cannot find development headers for mmal...]) ],
3383       [ AC_MSG_WARN([Cannot find development headers for mmal...]) ]) ])
3384   VLC_RESTORE_FLAGS
3386 AM_CONDITIONAL([HAVE_MMAL], [test "${have_mmal}" = "yes"])
3389 dnl evas plugin
3391 AC_ARG_ENABLE(evas,
3392   [AS_HELP_STRING([--enable-evas],
3393     [use evas output module (default disabled)])])
3394 have_evas="no"
3395 AS_IF([test "${enable_evas}" = "yes"], [
3396   PKG_CHECK_MODULES(EVAS, [evas >= 1.15.99 ecore >= 1.15.99], [
3397       have_evas="yes"
3398       AC_DEFINE([HAVE_EVAS], [1], [Define to 1 if evas is enabled.])
3399     ],[
3400     AS_IF([test "x${enable_evas}" != "x"], [
3401       AC_MSG_ERROR([$EVAS_PKG_ERRORS. libevas and libecore 1.15.99 or later required.])
3402     ])
3403   ])
3405 AM_CONDITIONAL([HAVE_EVAS], [test "${have_evas}" = "yes"])
3408 dnl  Audio plugins
3411 EXTEND_HELP_STRING([Audio plugins:])
3414 dnl  Pulseaudio module
3416 AC_ARG_ENABLE(pulse,
3417   [AS_HELP_STRING([--enable-pulse],
3418     [use the PulseAudio client library (default auto)])])
3419 have_pulse="no"
3420 AS_IF([test "${enable_pulse}" != "no"], [
3421   PKG_CHECK_MODULES([PULSE], [libpulse >= 1.0], [
3422     have_pulse="yes"
3423   ], [
3424     AS_IF([test "x${enable_pulse}" != "x"], [
3425       AC_MSG_ERROR([$PULSE_PKG_ERRORS. PulseAudio 1.0 or later required.])
3426     ])
3427   ])
3429 AM_CONDITIONAL([HAVE_PULSE], [test "${have_pulse}" = "yes"])
3432 dnl  ALSA module
3434 AC_ARG_ENABLE(alsa,
3435   [AS_HELP_STRING([--enable-alsa],
3436     [support the Advanced Linux Sound Architecture (default auto)])],, [
3437   AS_IF([test "$SYS" = "linux" -a "${have_pulse}" = "no"], [
3438     enable_alsa="yes"
3439   ])
3441 have_alsa="no"
3442 AS_IF([test "${enable_alsa}" != "no"], [
3443   PKG_CHECK_MODULES([ALSA], [alsa >= 1.0.24], [
3444     have_alsa="yes"
3445   ], [
3446     AS_IF([test "x${enable_alsa}" != "x"], [
3447       AC_MSG_ERROR([$ALSA_PKG_ERRORS. alsa-lib 1.0.24 or later required. Pass --disable-alsa to ignore this error.])
3448     ])
3449   ])
3451 AM_CONDITIONAL([HAVE_ALSA], [test "${have_alsa}" = "yes"])
3454 dnl  Open Sound System module
3456 AC_ARG_ENABLE(oss,
3457   [AS_HELP_STRING([--enable-oss],
3458     [support the Open Sound System OSS (default enabled on FreeBSD/NetBSD/DragonFlyBSD)])],, [
3459   AS_IF([test "$SYS" = "mingw32" -o "$SYS" = "linux" -o "$SYS" = "openbsd"], [
3460     enable_oss="no"
3461   ])
3463 have_oss="no"
3464 OSS_LIBS=""
3465 AS_IF([test "$enable_oss" != "no"], [
3466   AC_CHECK_HEADERS([soundcard.h sys/soundcard.h], [
3467     have_oss="yes"
3468     AC_CHECK_LIB(ossaudio, main, [
3469       OSS_LIBS="-lossaudio"
3470     ])
3471   ])
3473 AC_SUBST(OSS_LIBS)
3474 AM_CONDITIONAL([HAVE_OSS], [test "${have_oss}" = "yes"])
3477 dnl  OpenBSD sndio module
3479 AC_ARG_ENABLE([sndio],
3480   [AS_HELP_STRING([--disable-sndio],
3481     [support the OpenBSD sndio (default auto)])],, [
3482   AS_IF([test "$SYS" = "openbsd"], [
3483     enable_sndio="yes"
3484   ])
3486 have_sndio="no"
3487 AS_IF([test "$enable_sndio" != "no"], [
3488   AC_CHECK_HEADER([sndio.h], [
3489     have_sndio="yes"
3490   ])
3492 AM_CONDITIONAL([HAVE_SNDIO], [test "${have_sndio}" = "yes"])
3495 dnl  Windows Audio Session plugin
3497 AC_ARG_ENABLE([wasapi],
3498   [AS_HELP_STRING([--enable-wasapi],
3499     [use the Windows Audio Session API (default auto)])
3501 have_wasapi="no"
3502 AS_IF([test "$enable_wasapi" != "no"], [
3503   AC_CHECK_HEADER([audioclient.h], [
3504     have_wasapi="yes"
3505   ], [
3506     AS_IF([test "x${enable_wasapi}" != "x"], [
3507       AC_MSG_ERROR([Windows Audio Session API not found.])
3508     ])
3509   ])
3511 AM_CONDITIONAL([HAVE_WASAPI], [test "${have_wasapi}" = "yes"])
3514 dnl  JACK modules
3516 AC_ARG_ENABLE(jack,
3517   [AS_HELP_STRING([--disable-jack],
3518     [do not use jack (default auto)])])
3519 have_jack="no"
3520 AS_IF([test "${enable_jack}" != "no"], [
3521     PKG_CHECK_MODULES(JACK, jack >= 1.9.7,
3522       [ have_jack=yes ],
3523       [
3524       AC_MSG_WARN([${JACK_PKG_ERRORS}, trying jack1 instead])
3526       PKG_CHECK_MODULES(JACK, jack >= 0.120.1 jack < 1.0,
3527       [ have_jack=yes ],
3528       [
3529       AS_IF([test -n "${enable_jack}"],
3530          [AC_MSG_ERROR([${JACK_PKG_ERRORS}.])],
3531          [AC_MSG_WARN([${JACK_PKG_ERRORS}.])])
3532       ])
3533     ])
3535 AM_CONDITIONAL([HAVE_JACK], [test "${have_jack}" != "no"])
3538 dnl  OpenSLES Android
3540 AC_ARG_ENABLE(opensles,
3541   [  --enable-opensles       Android OpenSL ES audio module (default disabled)])
3542 if test "${HAVE_ANDROID}" = "1"; then
3543   if test "${enable_opensles}" = "yes"; then
3544       AC_CHECK_HEADERS(SLES/OpenSLES.h,
3545         [ VLC_ADD_PLUGIN([opensles_android]) ],
3546         [ AC_MSG_ERROR([cannot find OpenSLES headers])] )
3547   fi
3551 dnl  Tizen audio
3553 AC_ARG_ENABLE(tizen_audio,
3554   [AS_HELP_STRING([--enable-tizen-audio],
3555     [Tizen audio module (default enabled on Tizen)])],, [
3556   AS_IF([test "$HAVE_TIZEN" = "1"], [
3557     enable_tizen_audio="yes"
3558   ])
3560 if test "${enable_tizen_audio}" = "yes"; then
3561   AC_CHECK_HEADERS(audio_io.h,
3562     [ VLC_ADD_PLUGIN([tizen_audio]) ],
3563     [ AC_MSG_ERROR([cannot find Tizen audio_io headers])] )
3567 dnl libsamplerate plugin
3569 PKG_ENABLE_MODULES_VLC([SAMPLERATE], [], [samplerate], [Resampler with libsamplerate], [auto])
3572 dnl  soxr module
3574 PKG_ENABLE_MODULES_VLC([SOXR], [], [soxr >= 0.1.2], [SoX Resampler library], [auto])
3577 dnl  OS/2 KAI plugin
3579 AC_ARG_ENABLE(kai,
3580   [AS_HELP_STRING([--enable-kai],
3581     [support the K Audio Interface KAI (default enabled on OS/2)])],, [
3582   AS_IF([test "$SYS" = "os2"], [
3583     enable_kai="yes"
3584   ])
3586 have_kai="no"
3587 KAI_LIBS=""
3588 AS_IF([test "$enable_kai" != "no"], [
3589   AC_CHECK_HEADERS([kai.h], [
3590     have_kai="yes"
3591     AC_CHECK_LIB(kai, main, [
3592       KAI_LIBS="-lkai"
3593     ])
3594   ])
3596 AC_SUBST(KAI_LIBS)
3597 AM_CONDITIONAL([HAVE_KAI], [test "${have_kai}" = "yes"])
3600 dnl  chromaprint audio track fingerprinter
3602 m4_pushdef([libchromaprint_version], 0.6.0)
3603 PKG_WITH_MODULES([CHROMAPRINT],[libchromaprint >= libchromaprint_version],
3604     VLC_ADD_PLUGIN([stream_out_chromaprint]),
3605     AS_IF([test "${enable_chromaprint}" = "yes"],
3606         [AC_MSG_ERROR(Library [libchromaprint >= libchromaprint_version] needed for [chromaprint] was not found)],
3607         [AC_MSG_WARN(Library [libchromaprint >= libchromaprint_version] needed for [chromaprint] was not found)]
3608          ),
3609     [(Chromaprint based audio fingerprinter)],[auto])
3610 m4_popdef([libchromaprint_version])
3613 dnl  Chromecast streaming support
3615 m4_pushdef([protobuf_lite_version], 2.5.0)
3616 AC_ARG_VAR(PROTOC, [protobuf compiler])
3617 AC_CHECK_PROGS(PROTOC, protoc, no)
3618 PKG_WITH_MODULES([CHROMECAST],[protobuf-lite >= protobuf_lite_version], [
3619     AS_IF([test "x${PROTOC}" != "xno"], [
3620         build_chromecast="yes"
3621     ], [
3622     AC_MSG_ERROR(protoc compiler needed for [chromecast] was not found)
3623     ])
3624 ], [
3625     AS_IF([test "${enable_chromecast}" = "yes"],
3626         AC_MSG_ERROR(Library [protobuf-lite >= protobuf_lite_version] needed for [chromecast] was not found),
3627         AC_MSG_WARN(Library [protobuf-lite >= protobuf_lite_version] needed for [chromecast] was not found)
3628     )
3629     enable_chromecast="no"
3630 ], [(Chromecast streaming support)], [auto])
3631 AM_CONDITIONAL([BUILD_CHROMECAST], [test "${build_chromecast}" = "yes"])
3632 m4_popdef([protobuf_lite_version])
3635 dnl  Interface plugins
3638 EXTEND_HELP_STRING([Interface plugins:])
3641 dnl QT
3643 AC_ARG_ENABLE(qt, [
3644   AS_HELP_STRING([--disable-qt], [Qt UI support (default enabled)])],, [
3645   AS_IF([test "${SYS}" = "darwin"], [
3646     enable_qt="no"
3647   ])
3649 have_qt5_x11="no"
3650 AS_IF([test "${enable_qt}" != "no"], [
3651   PKG_CHECK_MODULES([QT], [Qt5Core >= 5.2.0 Qt5Widgets Qt5Gui], [
3652       PKG_CHECK_MODULES([QT5_X11], [Qt5X11Extras], [
3653           have_qt5_x11="yes"
3654       ],[
3655           AC_MSG_WARN([Not building Qt Interface with X11 helpers.])
3656       ])
3657       QT_PATH="$(eval $PKG_CONFIG --variable=exec_prefix Qt5Core)"
3658       QT_HOST_PATH="$(eval $PKG_CONFIG --variable=host_bins Qt5Core)"
3659       QT_VERSION="$(eval $PKG_CONFIG --modversion Qt5Gui)"
3660       AC_PATH_PROGS(MOC, [moc-qt5 moc], moc, ["${QT_HOST_PATH}" "${QT_PATH}/bin"])
3661       AC_PATH_PROGS(RCC, [rcc-qt5 rcc], rcc, ["${QT_HOST_PATH}" "${QT_PATH}/bin"])
3662       AC_PATH_PROGS(UIC, [uic-qt5 uic], uic, ["${QT_HOST_PATH}" "${QT_PATH}/bin"])
3663     ], [
3664       PKG_CHECK_MODULES([QT], [QtCore QtGui >= 4.8.0],, [
3665         AS_IF([test -n "${enable_qt}"],[
3666           AC_MSG_ERROR([${QT_PKG_ERRORS}.])
3667         ],[
3668           AC_MSG_WARN([${QT_PKG_ERRORS}.])
3669         ])
3670         enable_qt="no"
3671       ])
3672       QT_PATH="$(eval $PKG_CONFIG --variable=exec_prefix QtCore)"
3673       AC_PATH_PROGS(MOC, [moc-qt4 moc], moc, ["${QT_PATH}/bin"])
3674       AC_PATH_PROG(RCC, rcc, rcc, ["${QT_PATH}/bin"])
3675       AC_PATH_PROGS(UIC, [uic-qt4 uic], uic, ["${QT_PATH}/bin"])
3676     ])
3678 AS_IF([test "${enable_qt}" != "no"], [
3679   ALIASES="${ALIASES} qvlc"
3681 AC_SUBST(QT_VERSION)
3682 AM_CONDITIONAL(ENABLE_QT, [test "$enable_qt" != "no"])
3683 AM_CONDITIONAL([HAVE_QT5_X11], [test "${have_qt5_x11}" = "yes"])
3686 dnl detect kde4-config patch (used for kde solids).
3688 AC_ARG_VAR([KDE4_CONFIG], [kde4-config utility])
3689 AS_IF([test "x$KDE4_CONFIG" = "x"], [
3690   KDE4_CONFIG="kde4-config"
3694 dnl Simple test for skins2 dependency
3696 AS_IF([test "$enable_qt" = "no"], [
3697   AS_IF([test "${enable_skins2}" = "yes"], [
3698     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.])
3699   ], [
3700     enable_skins2="no"
3701     AC_MSG_WARN([The skins2 module depends on the Qt interface, Qt is not built so skins2 is disabled.])
3702   ])
3706 dnl Skins2 module
3708 AC_ARG_ENABLE(skins2,
3709   [AS_HELP_STRING([--enable-skins2], [skins interface module (default auto)])])
3710 AS_IF([test "${enable_skins2}" != "no"], [
3711   have_skins_deps="yes"
3713   dnl Win32
3714   AS_IF([test "${SYS}" = "mingw32"], [
3715     VLC_ADD_CPPFLAGS([skins2],[-U_OFF_T_ -U_off_t -DWIN32_SKINS])
3716     VLC_ADD_LIBS([skins2],[-lgdi32 -lole32 -luuid -lmsimg32])
3717   dnl OS/2
3718   ], [test "${SYS}" = "os2"], [
3719     VLC_ADD_CPPFLAGS([skins2],[ -DOS2_SKINS])
3720   dnl Linux/Unix
3721   ], [
3722     PKG_CHECK_MODULES([XPM], [xpm],, [have_skins_deps="no"])
3723     PKG_CHECK_MODULES([XINERAMA], [xinerama],, [have_skins_deps="no"])
3724     PKG_CHECK_MODULES([XEXT], [xext],, [have_skins_deps="no"])
3725     VLC_ADD_CPPFLAGS([skins2],[${X_CFLAGS} ${XEXT_CFLAGS} ${XPM_CFLAGS} -DX11_SKINS])
3726     VLC_ADD_LIBS([skins2],[${X_LIBS} ${X_PRE_LIBS} ${XEXT_LIBS} ${XPM_LIBS} ${XINERAMA_LIBS} -lX11])
3727   ])
3729   dnl we need freetype
3730   AS_IF([test "${have_freetype}" != "yes"], [
3731     have_skins_deps="no"
3732   ])
3734   AS_IF([test "${have_skins_deps}" = "no"], [
3735     AS_IF([test "x${enable_skins2}" = "x"], [
3736       AC_MSG_WARN([Skins2 interface disabled due to missing dependencies.])
3737     ], [
3738       AC_MSG_ERROR([Skins2 interface requires FreeType, libxpm, libxext and libxinerama])
3739     ])
3740     enable_skins2="no"
3741   ], [
3742     ALIASES="${ALIASES} svlc"
3743     enable_skins2="yes"
3744   ])
3746 AM_CONDITIONAL(BUILD_SKINS, [test "${enable_skins2}" = "yes"])
3748 AC_ARG_ENABLE(libtar,
3749   [  --enable-libtar         libtar support for skins2 (default auto)])
3750 AS_IF([test "${enable_skins2}" = "yes" && test "${enable_libtar}" != "no"], [
3751   AC_CHECK_HEADERS(libtar.h, [
3752     VLC_ADD_LIBS([skins2],[-ltar])
3753   ])
3757 dnl  MacOS X gui module
3759 AC_ARG_ENABLE(macosx,
3760   [  --enable-macosx         Mac OS X gui support (default enabled on Mac OS X)])
3761 if test "x${enable_macosx}" != "xno" -a "${SYS}" = "darwin"
3762 then
3764   dnl
3765   dnl If possible, use xcrun to find the right ibtool
3766   dnl
3768   AC_PATH_PROG([XCRUN], [xcrun], [no])
3769   AS_IF([test ! "x${XCRUN}" = "xno"], [
3770     AC_MSG_CHECKING([for ibtool (using xcrun)])
3771     XIB="$(eval $XCRUN -f ibtool 2>/dev/null || echo no)"
3772     AC_MSG_RESULT([${XIB}])
3773   ], [
3774     AC_MSG_WARN([Looking for tools without using xcrun])
3775   ])
3777   AS_IF([test "x${XIB}" = "xno"], [
3778     AC_PATH_PROG(XIB, [ibtool], [no])
3779     AS_IF([test "x${XIB}" = "xno"], [
3780       AC_MSG_ERROR([ibtool was not found, but is required for --enable-macosx])
3781     ])
3782   ])
3784 AM_CONDITIONAL(ENABLE_MACOSX_UI, [test "$enable_macosx" != "no" -a "${SYS}" = "darwin"])
3787 dnl  MacOS X sparkle update support
3789 AC_ARG_ENABLE(sparkle,
3790   [  --enable-sparkle        Sparkle update support for OS X (default enabled on Mac OS X)])
3791 if test "x${enable_sparkle}" != "xno" -a "${HAVE_OSX}" = "1"
3792 then
3793   if test ! -d ${CONTRIB_DIR}/Sparkle.framework -a ! -d ${CONTRIB_DIR}/Frameworks/Sparkle.framework
3794   then
3795     AC_MSG_ERROR([Sparkle framework is required and was not found in ${CONTRIB_DIR}])
3796   fi
3798   AC_DEFINE([HAVE_SPARKLE], [1], [Define to 1 if sparkle is enabled.])
3800 AM_CONDITIONAL(HAVE_SPARKLE, [test "$enable_sparkle" != "no"])
3803 dnl  MacOS X breakpad creash reporter support
3805 AC_ARG_ENABLE(breakpad,
3806   [  --enable-breakpad       Breakpad crash reporter support for OS X (default enabled on Mac OS X)])
3807 if test "x${enable_breakpad}" != "xno" -a "${HAVE_OSX}" = "1"
3808 then
3809   if test ! -d ${CONTRIB_DIR}/Breakpad.framework -a ! -d ${CONTRIB_DIR}/Frameworks/Breakpad.framework
3810   then
3811     AC_MSG_ERROR([Breakpad framework is required and was not found in ${CONTRIB_DIR}])
3812   fi
3814   AC_DEFINE([HAVE_BREAKPAD], [1], [Define to 1 if breakpad is enabled.])
3816 AM_CONDITIONAL(HAVE_BREAKPAD, [test "$enable_breakpad" != "no"])
3820 dnl  Minimal Mac OS X module
3822 AC_ARG_ENABLE(minimal-macosx,
3823   [  --enable-minimal-macosx Minimal Mac OS X support (default disabled)])
3824 if test "${enable_minimal_macosx}" = "yes" -a "${SYS}" = "darwin"
3825 then
3826   VLC_ADD_PLUGIN([minimal_macosx])
3830 dnl Mac OS X fancy dmg build tool
3832 if test "${HAVE_OSX}" = "1"
3833 then
3834   AC_PATH_PROG(DMGBUILD, dmgbuild, no)
3835   AS_IF([test "x${DMGBUILD}" = "xno"], [
3836     AC_MSG_WARN([dmgbuild not found -- unable to build fancy DMGs])
3837   ])
3839 AM_CONDITIONAL(HAVE_DMGBUILD, [test "x$DMGBUILD" != "xno" -a "${HAVE_OSX}" = "1"])
3842 dnl  VideoToolbox plugins
3843 AC_CHECK_HEADERS(VideoToolbox/VideoToolbox.h, [
3844     VLC_ADD_PLUGIN([videotoolbox])
3845     VLC_ADD_PLUGIN([cvpx])
3846   ])
3849 dnl  ncurses module
3851 AC_ARG_ENABLE(ncurses,
3852 [AS_HELP_STRING([--disable-ncurses],[ncurses text-based interface (default auto)])])
3853 have_ncurses="no"
3854 AS_IF([test "${enable_ncurses}" != "no"] ,[
3855   PKG_CHECK_MODULES([NCURSES], [ncursesw], [
3856     have_ncurses="yes"
3857     ALIASES="${ALIASES} nvlc"
3858   ], [
3859     AS_IF([test -n "${enable_ncurses}"], [
3860       AC_MSG_ERROR([${NCURSES_PKG_ERRORS}.])
3861     ])
3862   ])
3864 AM_CONDITIONAL([HAVE_NCURSES], [test "${have_ncurses}" = "yes"])
3867 dnl  Lirc plugin
3869 AC_ARG_ENABLE(lirc,
3870   [  --enable-lirc           lirc support (default disabled)])
3871 have_lirc="no"
3872 AS_IF([test "${enable_lirc}" = "yes"], [
3873   AC_CHECK_HEADER(lirc/lirc_client.h, [
3874     AC_CHECK_LIB(lirc_client, lirc_init, [
3875       have_lirc="yes"
3876     ])
3877   ])
3879 AM_CONDITIONAL([HAVE_LIRC], [test "${have_lirc}" = "yes"])
3881 EXTEND_HELP_STRING([Visualisations and Video filter plugins:])
3883 dnl  goom visualization plugin
3885 PKG_ENABLE_MODULES_VLC([GOOM], [], [libgoom2], [goom visualization plugin], [auto])
3888 dnl libprojectM visualization plugin
3890 AC_ARG_ENABLE(projectm,
3891   [  --enable-projectm       projectM visualization plugin (default enabled)])
3892 AS_IF([test "${enable_projectm}" != "no"],
3893   [
3894     PKG_CHECK_MODULES(PROJECTM, libprojectM,
3895     [
3896       VLC_ADD_PLUGIN([projectm])
3897       PKG_CHECK_EXISTS([libprojectM >= 2.0.0],
3898         [ AC_DEFINE([HAVE_PROJECTM2], 1, [Define to 1 if using libprojectM 2.x]) ],
3899         [ AC_MSG_WARN( [Using libprojectM version 1] )
3900       ])
3901     ],[
3902       AC_MSG_WARN([${PROJECTM_PKG_ERRORS}.])
3903     ])
3904   ])
3907 dnl Vovoid VSXu visualization plugin
3909 AC_ARG_ENABLE(vsxu,
3910   [  --enable-vsxu           Vovoid VSXu visualization plugin (default auto)])
3911 AS_IF([test "${enable_vsxu}" != "no"],
3912   [
3913     PKG_CHECK_MODULES(VSXU, libvsxu,
3914     [
3915       VLC_ADD_PLUGIN([vsxu])
3916     ],[
3917       AC_MSG_WARN([${VSXU_PKG_ERRORS}.])
3918     ])
3919   ])
3921 EXTEND_HELP_STRING([Service Discovery plugins:])
3923 dnl  Avahi-Zeroconf services discovery
3924 PKG_ENABLE_MODULES_VLC([AVAHI], [], [avahi-client >= 0.6], [Zeroconf services discovery], [auto])
3927 dnl  libudev services discovery
3928 PKG_ENABLE_MODULES_VLC([UDEV], [], [libudev >= 142], [Linux udev services discovery], [auto])
3931 dnl MTP devices services discovery
3932 PKG_ENABLE_MODULES_VLC([MTP], [mtp access_mtp], [libmtp >= 1.0.0], [MTP devices support], [auto])
3935 dnl UPnP Plugin (Intel SDK)
3937 PKG_ENABLE_MODULES_VLC([UPNP], [upnp], [libupnp], [Intel UPNP SDK],[auto])
3940 dnl mDNS using libmicrodns
3942 PKG_ENABLE_MODULES_VLC([MICRODNS], [], [microdns], [mDNS services discovery], [auto])
3945 EXTEND_HELP_STRING([Misc options:])
3948 dnl  libxml2 module
3950 PKG_ENABLE_MODULES_VLC([LIBXML2], [xml], [libxml-2.0 >= 2.5], [libxml2 support],[auto])
3954 dnl libgcrypt
3956 AC_ARG_ENABLE(libgcrypt,
3957   [  --disable-libgcrypt     gcrypt support (default enabled)])
3958 AC_ARG_VAR([GCRYPT_CFLAGS], [C compiler flags for gcrypt])
3959 AC_ARG_VAR([GCRYPT_LIBS], [linker flags flags for gcrypt])
3961 # require libgcrypt >= 1.6.0
3962 AS_IF([test "${enable_libgcrypt}" != "no"], [
3963   AC_CACHE_CHECK([for gcrypt 1.6.0 or later], [ac_cv_lib_gcrypt], [
3964     VLC_SAVE_FLAGS
3965     CFLAGS="${CFLAGS} ${GCRYPT_CFLAGS}"
3966     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([
3967 [#include <gcrypt.h>
3968 #if GCRYPT_VERSION_NUMBER < 0x010600
3969 #error
3970 #endif]])], [
3971       ac_cv_lib_gcrypt=yes
3972     ], [
3973       ac_cv_lib_gcrypt=no
3974     ])
3975     VLC_RESTORE_FLAGS
3976   ])
3978   AS_IF([test "${ac_cv_lib_gcrypt}" = "yes"], [
3979     AC_DEFINE([HAVE_GCRYPT], 1, [Defined if having gcrypt])
3980   ], [
3981     AS_IF([test "${enable_libgcrypt}" = "yes"], [
3982       AC_MSG_ERROR([libgcrypt version 1.6.0 or higher not found. Install libgcrypt or pass --disable-libgcrypt.])
3983     ])
3984   ])
3987 AS_IF([test -z "$GCRYPT_LIBS"], [
3988   GCRYPT_LIBS="-lgcrypt -lgpg-error"
3991 AC_SUBST(GCRYPT_CFLAGS)
3992 AC_SUBST(GCRYPT_LIBS)
3993 AM_CONDITIONAL([HAVE_GCRYPT], [test "${ac_cv_lib_gcrypt}" = "yes"])
3996 dnl TLS/SSL
3998 AC_ARG_ENABLE(gnutls,
3999   [  --enable-gnutls         GNU TLS TLS/SSL support (default enabled)])
4000 AS_IF([test "${enable_gnutls}" != "no"], [
4001   PKG_CHECK_MODULES(GNUTLS, [gnutls >= 3.3.6], [
4002     VLC_ADD_PLUGIN([gnutls])
4003   ], [
4004     AS_IF([test -n "${enable_gnutls}"], [
4005       AC_MSG_ERROR([${GNUTLS_PKG_ERRORS}.)])
4006     ])
4007   ])
4012 dnl Taglib plugin
4014 AC_ARG_ENABLE(taglib,
4015   [AS_HELP_STRING([--disable-taglib],
4016     [do not use TagLib (default enabled)])])
4017 AS_IF([test "${enable_taglib}" != "no"], [
4018   PKG_CHECK_MODULES(TAGLIB, taglib >= 1.9, [
4019     VLC_ADD_PLUGIN([taglib])
4020   ], [
4021     AC_MSG_WARN([${TAGLIB_PKG_ERRORS}.])])
4025 dnl  libsecret
4027 PKG_ENABLE_MODULES_VLC([SECRET], [], [libsecret-1 >= 0.18], [use libsecret for keystore], [auto])
4030 dnl  kwallet
4032 AC_ARG_ENABLE(kwallet,
4033   [AS_HELP_STRING([--enable-kwallet],
4034     [use kwallet (via D-Bus) for keystore (default enabled)])])
4035 AS_IF([test "${enable_kwallet}" != "no" -a "${have_dbus}" = "yes"], [
4036   VLC_ADD_PLUGIN([kwallet])
4040 dnl  Developers helper modules (should be hidden from configure help)
4042 AC_ARG_ENABLE(devtools, [], [], [enable_devtools="no"])
4043 AS_IF([test "${enable_devtools}" != "no"], [
4044   VLC_ADD_PLUGIN([accesstweaks])
4048 dnl update checking system
4050 AC_ARG_ENABLE(update-check,
4051   [  --enable-update-check   update checking system (default disabled)])
4052 if test "${enable_update_check}" = "yes"
4053 then
4054  AS_IF([test "${ac_cv_lib_gcrypt}" != "yes"],[
4055     AC_MSG_ERROR([libgcrypt is required for update checking system]) ])
4057 AM_CONDITIONAL(UPDATE_CHECK, [test "${enable_update_check}" = "yes"])
4060 dnl OS X notification plugin
4062 AC_ARG_ENABLE(osx_notifications,
4063   [  --enable-osx-notifications          osx notification plugin (default disabled)],,
4064   [enable_osx_notifications=no])
4065 AS_IF([test "${enable_osx_notifications}" != "no"], [
4066   if test -d ${CONTRIB_DIR}/Growl.framework -o -d ${CONTRIB_DIR}/Frameworks/Growl.framework
4067   then
4068       VLC_ADD_PLUGIN([osx_notifications])
4069       VLC_ADD_LIBS([osx_notifications], [-Wl,-framework,Growl,-framework,Foundation])
4070       VLC_ADD_OBJCFLAGS([osx_notifications], [-fobjc-exceptions] )
4071   fi
4075 dnl Libnotify notification plugin
4077 PKG_ENABLE_MODULES_VLC([NOTIFY], [], [libnotify gtk+-2.0], [libnotify notification], [auto])
4080 dnl  Endianness check
4082 AC_C_BIGENDIAN
4083 AS_IF([test "${ac_cv_c_bigendian}" = "yes"], [
4084   DEFS_BIGENDIAN="-DWORDS_BIGENDIAN=1"
4085 ], [
4086   DEFS_BIGENDIAN=""
4088 AC_SUBST(DEFS_BIGENDIAN)
4091 dnl Where to install KDE solid .desktop
4093 AC_ARG_WITH(kde-solid,
4094   AS_HELP_STRING([--with-kde-solid=PATH],
4095                  [KDE Solid actions directory (auto)]),, [
4097 if test "${SYS}" != "mingw32" -a "${SYS}" != "darwin" ; then
4098   with_kde_solid="yes"
4101 soliddatadir=""
4102 AS_IF([test "${with_kde_solid}" != "no"], [
4103   AS_IF([test "${with_kde_solid}" = "yes"], [
4104     kde4datadir="`${KDE4_CONFIG} --install data`"
4105     AS_IF([test "x$kde4datadir" = "x"], [kde4datadir='${datadir}/kde4/apps'])
4106     soliddatadir="${kde4datadir}/solid/actions"
4107   ], [
4108     soliddatadir="${with_kde_solid}"
4109   ])
4111 AC_SUBST(soliddatadir)
4112 AM_CONDITIONAL(KDE_SOLID, [test "x${soliddatadir}" != "x"])
4115 dnl Check wether we have the PROCESS_MITIGATION_IMAGE_LOAD_POLICY 
4116 dnl It should only be available when building for win10, but some SDKs define it unconditionnaly
4118 if test "${SYS}" = "mingw32"; then
4119     AC_CHECK_TYPES([PROCESS_MITIGATION_IMAGE_LOAD_POLICY],,,[#include <windows.h>])
4122 EXTEND_HELP_STRING([Components:])
4125 dnl  the VLC binary
4127 AC_ARG_ENABLE(vlc,
4128   [  --enable-vlc            build the VLC media player (default enabled)])
4129 AM_CONDITIONAL(BUILD_VLC, [test "${enable_vlc}" != "no"])
4132 dnl  Stuff used by the program
4134 VERSION_MESSAGE="${VERSION} ${CODENAME}"
4135 COPYRIGHT_MESSAGE="Copyright © ${COPYRIGHT_YEARS} the VideoLAN team"
4136 AC_DEFINE_UNQUOTED(VERSION_MESSAGE, "${VERSION_MESSAGE}", [Simple version string])
4137 AC_DEFINE_UNQUOTED(COPYRIGHT_MESSAGE, "${COPYRIGHT_MESSAGE}", [Copyright string])
4138 AC_DEFINE_UNQUOTED(COPYRIGHT_YEARS, "${COPYRIGHT_YEARS}", [The copyright years])
4139 AC_DEFINE_UNQUOTED(CONFIGURE_LINE, "${CONFIGURE_LINE}", [The ./configure command line])
4140 AC_DEFINE_UNQUOTED(PACKAGE_VERSION_MAJOR,${VERSION_MAJOR}, [version major number])
4141 AC_DEFINE_UNQUOTED(PACKAGE_VERSION_MINOR,${VERSION_MINOR}, [version minor number])
4142 AC_DEFINE_UNQUOTED(PACKAGE_VERSION_REVISION,${VERSION_REVISION}, [version revision number])
4143 AC_DEFINE_UNQUOTED(PACKAGE_VERSION_EXTRA,${VERSION_EXTRA}, [version extra number])
4144 AC_DEFINE_UNQUOTED(PACKAGE_VERSION_DEV,"${VERSION_DEV}", [version development string])
4145 AC_SUBST(COPYRIGHT_MESSAGE)
4146 AC_SUBST(VERSION_MESSAGE)
4147 AC_SUBST(VERSION_MAJOR)
4148 AC_SUBST(VERSION_MINOR)
4149 AC_SUBST(VERSION_REVISION)
4150 AC_SUBST(VERSION_EXTRA)
4151 AC_SUBST(COPYRIGHT_YEARS)
4152 AC_DEFINE_UNQUOTED(VLC_COMPILE_BY, "`whoami|sed -e 's/\\\/\\\\\\\/g'`", [user who ran configure])
4153 AC_DEFINE_UNQUOTED(VLC_COMPILE_HOST, "`hostname -f 2>/dev/null || hostname`", [host which ran configure])
4154 AC_DEFINE_UNQUOTED(VLC_COMPILER, "`$CC -v 2>&1 | tail -n 1 | sed -e 's/ *$//'`", [compiler])
4156 dnl  Handle substvars that use $(top_srcdir)
4158 CPPFLAGS="-I\$(top_srcdir)/include -I\$(top_builddir)/include ${CPPFLAGS}"
4161 dnl  Configuration is finished
4163 AC_SUBST(SYS)
4164 AC_SUBST(ARCH)
4165 AC_SUBST(ALIASES)
4166 AC_SUBST(ASM)
4167 AC_SUBST(MOC)
4168 AC_SUBST(RCC)
4169 AC_SUBST(UIC)
4170 AC_SUBST(WINDRES)
4171 AC_SUBST(WINE_SDK_PATH)
4172 AC_SUBST(LIBEXT)
4173 AC_SUBST(AM_CPPFLAGS)
4174 AC_SUBST(MACOSX_DEPLOYMENT_TARGET)
4175 AC_SUBST(FILE_LIBVLCCORE_DLL)
4176 AC_SUBST(FILE_LIBVLC_DLL)
4178 AC_CONFIG_FILES([
4179   Makefile
4180   doc/Makefile
4181   modules/Makefile
4182   m4/Makefile
4183   po/Makefile.in
4184   share/Makefile
4185   compat/Makefile
4186   src/Makefile
4187   lib/Makefile
4188   bin/Makefile
4189   test/Makefile
4190   modules/hw/mmal/Makefile
4191   share/vlc.appdata.xml.in
4194 AM_COND_IF([HAVE_WIN32], [
4195   AC_CONFIG_FILES([
4196     extras/package/win32/NSIS/spad.nsi
4197     extras/package/win32/NSIS/vlc.win32.nsi
4198     extras/package/win32/msi/config.wxi
4199   ])
4202 AM_COND_IF([HAVE_DARWIN], [
4203   AC_CONFIG_FILES([
4204     modules/gui/macosx/UI/InfoPlist.strings:modules/gui/macosx/Resources/InfoPlist.strings.in
4205     share/macosx/Info.plist:share/Info.plist.in
4206   ])
4209 dnl Generate makefiles
4210 AC_OUTPUT
4212 dnl Do we have to use make or gmake ?
4213 if make --version 2>&1|grep -q GNU
4214 then
4215     # GNU make, all seems good
4216     MAKE=make
4217 else
4218     # Known GNU make alias (on BSD)
4219     MAKE=gmake
4221 dnl Shortcut to nice compile message
4222 if test -n $SHELL; then
4223   SHELL=${CONFIG_SHELL-/bin/sh}
4225 rm -f compile
4226 compile_top_srcdir=`sed -ne "s/^top_srcdir *= *//p" < Makefile`
4227 echo "#! $SHELL
4228 rm -f .error\$\$
4229 ERROR=0
4230 export PATH=\"$PATH\" LANG=C
4231 ($MAKE V=1 \$@ 2>&1 || touch .error\$\$)| $compile_top_srcdir/extras/buildsystem/make.pl
4232 test -f .error\$\$ && ERROR=1
4233 rm -f .error\$\$
4234 exit \$ERROR" >compile
4235 chmod a+x compile
4237 echo "
4238 libvlc configuration
4239 --------------------
4240 version               : ${VERSION}
4241 system                : ${SYS}
4242 architecture          : ${ARCH}
4243 optimizations         : ${enable_optimizations}"
4244 if test "${enable_vlc}" != "no"; then
4245 echo "vlc aliases           :${ALIASES}"
4246 else
4247 echo "build vlc executable  : no"
4249 echo "
4250 To build vlc and its plugins, type \`$MAKE', or \`./compile' if you like nice colors."