darwinvlc: check malloc return and free
[vlc.git] / configure.ac
bloba1ef95598b092533f613c1fdb4d8e3bf61c8e609
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
98 dnl  Check the operating system
99 dnl
100 HAVE_WIN64="0"
101 HAVE_IOS="0"
102 HAVE_OSX="0"
103 HAVE_TVOS="0"
105 case "${host_os}" in
106   "")
107     SYS=unknown
108     ;;
109   linux*)
110     SYS=linux
111     ;;
112   bsdi*)
113     SYS=bsdi
114     CFLAGS="${CFLAGS} -pthread"
115     ;;
116   freebsd*)
117     SYS=freebsd
118     CFLAGS="${CFLAGS} -pthread"
119     CPPFLAGS="${CPPFLAGS} -I/usr/local/include"
120     LDFLAGS="${LDFLAGS} -L/usr/local/lib"
121     ac_cv_ld_z_defs=no
122     ;;
123   openbsd*)
124     SYS=openbsd
125     CPPFLAGS="${CPPFLAGS} -I/usr/local/include -I/usr/X11R6/include"
126     LDFLAGS="${LDFLAGS} -L/usr/local/lib -L/usr/X11R6/lib/"
127     ;;
128   netbsd*)
129     SYS=netbsd
130     ;;
131   dragonfly*)
132     SYS=dragonfly
133     ;;
134   darwin*)
136     dnl Force gcc "-arch" flag
137     ARCH_flag=""
138     case "${host}" in
139       i?86*)
140         ARCH_flag="-arch i386"
141       ;;
142       ppc64*)
143         ARCH_flag="-arch ppc64"
144       ;;
145       ppc*)
146         ARCH_flag="-arch ppc"
147       ;;
148       x86_64*)
149         ARCH_flag="-arch x86_64"
150       ;;
151       arm*)
152         ac_cv_c_bigendian="no"
153         ac_cv_c_attribute_packed="no"
154       ;;
155     esac
157     SYS=darwin
158     CFLAGS="${CFLAGS} -D_INTL_REDIRECT_MACROS -std=gnu11 ${ARCH_flag}"
159     CXX="${CXX} -stdlib=libc++ -std=c++11"
160     CXXFLAGS="${CXXFLAGS} -D_INTL_REDIRECT_MACROS ${ARCH_flag}"
161     CPPFLAGS="${CPPFLAGS} ${ARCH_flag}"
162     OBJCFLAGS="${OBJCFLAGS} -D_INTL_REDIRECT_MACROS -std=gnu11 ${ARCH_flag} -Werror=partial-availability"
163     LDFLAGS="${LDFLAGS} -Wl,-headerpad_max_install_names ${ARCH_flag}"
164     VLC_ADD_LIBS([libvlc vlc],[-Wl,-undefined,dynamic_lookup,-framework,AppKit])
165     VLC_ADD_LIBS([libvlccore],[-Wl,-framework,CoreFoundation,-framework,CoreServices])
167     AC_EGREP_CPP(yes,
168             [#import <TargetConditionals.h>
169              #if TARGET_OS_IPHONE
170              yes
171              #endif],
172              [HAVE_IOS="1"],
173              [HAVE_OSX="1"])
175     AC_EGREP_CPP(yes,
176             [#import <TargetConditionals.h>
177              #if TARGET_OS_TV
178              yes
179              #endif],
180              [HAVE_TVOS="1"
181              HAVE_IOS="0"
182              HAVE_OSX="0"
183              ],)
185     dnl Allow binaries created on Lion to run on earlier releases
186     AC_EGREP_CPP(yes,
187            [#import <Cocoa/Cocoa.h>
188             #ifdef MAC_OS_X_VERSION_10_7
189             yes
190             #endif],
191             [AC_MSG_RESULT([yes])
192             AC_LIBOBJ([getdelim])
193             AC_LIBOBJ([strndup])
194             AC_LIBOBJ([strnlen])],)
196     dnl
197     dnl  Handle Mac OS X SDK flags
198     dnl
199     AC_ARG_WITH(macosx-sdk,
200       [AS_HELP_STRING([--with-macosx-sdk=DIR],
201         [compile using the SDK in DIR])])
202     if test "${with_macosx_sdk}" != "" ; then
203         test ! -d "${with_macosx_sdk}" && AC_MSG_ERROR([SDK "${with_macosx_sdk}" not found])
204         CPP="${CPP} -isysroot ${with_macosx_sdk}"
205         CC="${CC} -isysroot ${with_macosx_sdk}"
206         CXX="${CXX} -isysroot ${with_macosx_sdk}"
207         OBJC="${OBJC} -isysroot ${with_macosx_sdk}"
208         LD="${LD} -syslibroot ${with_macosx_sdk}"
209     fi
210     AC_ARG_WITH(macosx-version-min,
211       [AS_HELP_STRING([--with-macosx-version-min=VERSION],
212         [compile for Mac OS X VERSION and above])])
213     if test "${with_macosx_version_min}" != "" ; then
214         CPP="${CPP} -mmacosx-version-min=${with_macosx_version_min}"
215         CC="${CC} -mmacosx-version-min=${with_macosx_version_min}"
216         CXX="${CXX} -mmacosx-version-min=${with_macosx_version_min}"
217         OBJC="${OBJC} -mmacosx-version-min=${with_macosx_version_min}"
218         LD="${LD} -mmacosx_version_min=${with_macosx_version_min}"
219     fi
220     ;;
221   *mingw32* | *cygwin* | *wince* | *mingwce*)
222     dnl Force libtool to not link to (shared) libgcc_s when detecting C++ dependencies
223     dnl When doing this test with -static-libgcc it will link on (static) libgcc_eh
224     CXXFLAGS="${CXXFLAGS} -static-libgcc"
225     AC_CHECK_TOOL(WINDRES, windres, :)
226     AC_CHECK_TOOL(OBJCOPY, objcopy, :)
227     AH_TOP([#if defined(_WIN32) && !defined(_WIN32_WINNT)])
228     AH_TOP([# define _WIN32_WINNT 0x0502 /* Windows XP SP2 */])
229     AH_TOP([#endif])
230     AC_DEFINE([_WIN32_IE], 0x0600, [Define to '0x0600' for IE 6.0 (and shell) APIs.])
231     AC_DEFINE([_UNICODE], [1], [Define to 1 for Unicode (Wide Chars) APIs.])
232     AC_DEFINE([UNICODE], [1], [Define to 1 for Unicode (Wide Chars) APIs.])
233     AC_DEFINE([_ISOC99_SOURCE], [1], [Extensions to ISO C89 from ISO C99.])
234     AC_DEFINE([_ISOC11_SOURCE], [1], [Extensions to ISO C99 from ISO C11.])
235     AC_DEFINE([_POSIX_SOURCE], [1], [IEEE Std 1003.1.])
236     AC_DEFINE([_POSIX_C_SOURCE], [200809L], [IEEE Std 1003.1.])
237     AC_DEFINE([_XOPEN_SOURCE], [700], [POSIX and XPG 7th edition])
238     AC_DEFINE([_XOPEN_SOURCE_EXTENDED], [1], [XPG things and X/Open Unix extensions.])
239     AC_DEFINE([_BSD_SOURCE], [1], [ISO C, POSIX, and 4.3BSD things.])
240     AC_DEFINE([_SVID_SOURCE], [1], [ISO C, POSIX, and SVID things.])
242     case "${host_os}" in
243       *mingw32*)
244         SYS=mingw32
245         ;;
246       *cygwin*)
247         dnl Check if we are using the mno-cygwin mode in which case we are
248         dnl actually dealing with a mingw32 compiler.
249         AC_EGREP_CPP(yes,
250             [#ifdef _WIN32
251              yes
252              #endif],
253             SYS=mingw32, AC_MSG_ERROR([VLC requires -mno-cygwin]))
254         ;;
255     esac
257     if test "${SYS}" = "mingw32"; then
258         # DEP, ASLR, NO SEH
259         LDFLAGS="${LDFLAGS} -Wl,--nxcompat -Wl,--no-seh -Wl,--dynamicbase"
261         AC_CHECK_PROGS(U2D, [unix2dos todos], unix2dos)
262         ac_default_prefix="`pwd`/_win32"
263         DESTDIR="`pwd`/_win32/"
265         dnl
266         dnl NSIS/MSI Installer prefix and WIN64
267         dnl
268         case "${host}" in
269             amd64*|x86_64*)
270                 HAVE_WIN64="1"
271                 WINDOWS_ARCH="x64"
272                 PROGRAMFILES="PROGRAMFILES64"
273                 LDFLAGS="${LDFLAGS} -Wl,--high-entropy-va -Wl,--image-base,0x140000000"
274             ;;
275             *)
276                 WINDOWS_ARCH="x86"
277                 PROGRAMFILES="PROGRAMFILES"
278             ;;
279         esac
280         AC_SUBST(WINDOWS_ARCH)
281         AC_SUBST(PROGRAMFILES)
283     fi
284     ;;
285   *nto*)
286     SYS=nto
287     ;;
288   solaris*)
289     SYS=solaris
290     ;;
291   hpux*)
292     SYS=hpux
293     ;;
294   *os2*)
295     SYS=os2
296     LDFLAGS="${LDFLAGS} -Zomf -Zbin-files -Zargs-wild -Zhigh-mem"
297     AC_LIBOBJ([freeaddrinfo])
298     AC_LIBOBJ([gai_strerror])
299     ;;
300   *)
301     SYS="${host_os}"
302     ;;
303 esac
305 dnl WinRT
306 AC_ARG_ENABLE(winstore_app,
307      AS_HELP_STRING([--enable-winstore-app],
308                     [Build targetted for Windows Store apps (default disabled)]))
310 vlc_winstore_app=0
311 AS_IF([test "${SYS}" = "mingw32"],[
312   LIBCOM="-lole32"
313   AS_IF([test "${enable_winstore_app}" = "yes"], [
314     vlc_winstore_app=1
315     LIBCOM=""
316      VLC_ADD_LIBS([libvlccore], [-lruntimeobject])
317      AC_LIBOBJ([gai_strerror])
318     ],[
319      VLC_ADD_LIBS([libvlccore],[-lwinmm])
320     ])
321   AC_SUBST(LIBCOM)
322   ])
323 AC_DEFINE_UNQUOTED(VLC_WINSTORE_APP, ${vlc_winstore_app}, [Define to 1 if you want to build for Windows Store apps])
325 AM_CONDITIONAL(HAVE_LINUX,   test "${SYS}" = "linux")
326 AM_CONDITIONAL(HAVE_OS2,     test "${SYS}" = "os2")
328 AM_CONDITIONAL(HAVE_DARWIN,  test "${SYS}" = "darwin")
329 AM_CONDITIONAL(HAVE_IOS,     test "${HAVE_IOS}" = "1")
330 AM_CONDITIONAL(HAVE_OSX,     test "${HAVE_OSX}" = "1")
331 AM_CONDITIONAL(HAVE_TVOS,    test "${HAVE_TVOS}" = "1")
333 AM_CONDITIONAL(HAVE_WIN32,   test "${SYS}" = "mingw32")
334 AM_CONDITIONAL(HAVE_WIN64,   test "${HAVE_WIN64}" = "1") dnl Only used for the packaging
335 AM_CONDITIONAL([HAVE_WINSTORE], [test "$vlc_winstore_app" = "1"])
336 AM_CONDITIONAL([HAVE_WIN32_DESKTOP], [test "${SYS}" = "mingw32" -a "$vlc_winstore_app" = "0"])
339 dnl Sadly autoconf does not think about testing foo.exe when ask to test
340 dnl for program foo on win32
341 case "${build_os}" in
342     cygwin|msys|mingw32)
343         ac_executable_extensions=".exe"
344         BUILDEXEEXT=".exe"
345     ;;
346     os2*)
347         BUILDEXEEXT=".exe"
348     ;;
349     *)
350     ;;
351 esac
352 AC_SUBST(BUILDEXEEXT)
354 dnl Android is linux, but a bit different
355 AS_IF([test "$SYS" = linux],[
356     AC_MSG_CHECKING([for an Android system])
357     AC_PREPROC_IFELSE([AC_LANG_PROGRAM(
358         [[#ifndef __ANDROID__
359          # error Not Android
360          #endif
361         ]],[[;]])
362     ],[
363       HAVE_ANDROID="1"
364       AC_MSG_RESULT([yes])
365     ],[
366       AC_MSG_RESULT([no])
367     ])
369 AM_CONDITIONAL(HAVE_ANDROID, test "${HAVE_ANDROID}" = "1")
371 dnl Tizen (minimum SDK version: 2.3)
372 AS_IF([test "$SYS" = linux],[
373     AC_MSG_CHECKING([for Tizen])
374     AC_PREPROC_IFELSE([AC_LANG_PROGRAM(
375         [[#include <tizen.h>
376         ]],[[;]])
377     ],[
378       HAVE_TIZEN="1"
379       AC_DEFINE([HAVE_TIZEN_SDK], [1], [Define to 1 if vlc is built against Tizen SDK])
380       AC_MSG_RESULT([yes])
381     ],[
382       AC_MSG_RESULT([no])
383     ])
385 AM_CONDITIONAL(HAVE_TIZEN, test "${HAVE_TIZEN}" = "1")
388 dnl  Check for the contrib directory
390 AC_ARG_WITH(contrib,
391   [AS_HELP_STRING([--with-contrib[=DIR]],
392     [search for 3rd party libraries in DIR/include and DIR/lib])
394 AC_MSG_CHECKING([for 3rd party libraries path])
395 AS_IF([test -z "${with_contrib}" || test "${with_contrib}" = "yes"], [
396   CONTRIB_DIR="${srcdir}/contrib/${host}"
397   AS_IF([test ! -d "${CONTRIB_DIR}"], [
398     echo "${CONTRIB_DIR} not found" >&AS_MESSAGE_LOG_FD
399     CONTRIB_DIR="${srcdir}/contrib/`$CC -dumpmachine`"
400     AS_IF([test ! -d "${CONTRIB_DIR}"], [
401       echo "${CONTRIB_DIR} not found" >&AS_MESSAGE_LOG_FD
402       CONTRIB_DIR=""
403       AC_MSG_RESULT([not found])
404     ])
405   ])
406 ], [
407   AS_IF([test "${with_contrib}" != "no"], [
408     CONTRIB_DIR="${with_contrib}"
409   ], [
410     CONTRIB_DIR=""
411     AC_MSG_RESULT([disabled])
412   ])
414 AS_IF([test -n "${CONTRIB_DIR}"], [
415   AS_IF([test -d "${CONTRIB_DIR}/lib"],[
416     CONTRIB_DIR=`cd "${CONTRIB_DIR}" && pwd`
417   ], [
418     echo "${CONTRIB_DIR}/lib not found" >&AS_MESSAGE_LOG_FD
419     CONTRIB_DIR=""
420     AC_MSG_RESULT([not usable])
421   ])
424 AS_IF([test -n "${CONTRIB_DIR}"], [
425   AC_MSG_RESULT([${CONTRIB_DIR}])
426   CPPFLAGS="${CPPFLAGS} -I${CONTRIB_DIR}/include"
427   CFLAGS="${CFLAGS} -I${CONTRIB_DIR}/include"
428   CXXFLAGS="${CXXFLAGS} -I${CONTRIB_DIR}/include"
429   OBJCFLAGS="${OBJCFLAGS} -I${CONTRIB_DIR}/include -F${CONTRIB_DIR} -F${CONTRIB_DIR}/Frameworks"
430   export PKG_CONFIG_PATH="${CONTRIB_DIR}/lib/pkgconfig:$PKG_CONFIG_PATH"
431   LDFLAGS="${LDFLAGS} -L${CONTRIB_DIR}/lib"
433   AS_IF([test -z "$LUAC"], [
434     dnl Old contribs mixed cross-tools and cross-compiled executables
435     AS_IF([test -x "${CONTRIB_DIR}/bin/luac${BUILDEXEEXT}"], [
436       LUAC="${CONTRIB_DIR}/bin/luac${BUILDEXEEXT}"
437     ])
439     dnl Newer contribs follow usual name space rules
440     AS_IF([test -x "${CONTRIB_DIR}/../bin/${host_alias}-luac${BUILDEXEEXT}"], [
441       LUAC="${CONTRIB_DIR}/../bin/${host_alias}-luac${BUILDEXEEXT}"
442     ])
443   ])
445   AS_IF([test "${SYS}" = "darwin"], [
446     export LD_LIBRARY_PATH="${CONTRIB_DIR}/lib:$LD_LIBRARY_PATH"
447     export DYLD_LIBRARY_PATH="${CONTRIB_DIR}/lib:$DYLD_LIBRARY_PATH"
448   ])
449 ], [
450   AS_IF([test -n "${with_contrib}" && test "${with_contrib}" != "no"], [
451     AC_MSG_ERROR([Third party libraries not found!])
452   ])
454 AC_SUBST(CONTRIB_DIR)
456 dnl Add extras/tools to the PATH
457 TOOLS_DIR="${srcdir}/extras/tools/build/bin"
458 AS_IF([test -d "${TOOLS_DIR}"], [
459     TOOLS_DIR=`cd "${TOOLS_DIR}" && pwd`
460     export PATH="${TOOLS_DIR}":$PATH
464 dnl  Libtool
465 dnl  It's very bad, but our former custom system was worst
466 dnl  -- Courmisch
469 dnl override platform specific check for dependent libraries
470 dnl otherwise libtool linking of shared libraries will
471 dnl fail on anything other than pass_all.
472 AC_CACHE_VAL(lt_cv_deplibs_check_method,
473     [lt_cv_deplibs_check_method=pass_all])
475 LT_INIT([dlopen win32-dll shared disable-static])
476 LT_LANG([C++])
477 LT_LANG([Windows Resource])
479 DOLT
481 lt_cv_deplibs_check_method=pass_all
483 AS_IF([test "${enable_shared}" = "no" -a "${enable_vlc}" != "no"], [
484   AC_MSG_ERROR([VLC is based on plugins. Shared libraries cannot be disabled.])
488 dnl Gettext stuff
490 AM_GNU_GETTEXT_VERSION([0.19.8])
491 AM_GNU_GETTEXT([external], [need-formatstring-macros])
494 dnl Iconv stuff
496 AM_ICONV
499 dnl checks for mingw
500 AS_IF([test "${SYS}" = "mingw32"], [
502 AC_PREPROC_IFELSE([AC_LANG_SOURCE([
503 #if !defined(__MINGW32__)
504 # error Not compiling with mingw
505 #endif
506     ])], [
508 dnl Check for broken versions of mingw-runtime compatability library
509     AC_MSG_CHECKING(for broken mingw-runtime)
510     AC_PREPROC_IFELSE([AC_LANG_SOURCE([
511 #include <_mingw.h>
512 #if defined(__MINGW64_VERSION_MAJOR)
513 # if __MINGW64_VERSION_MAJOR < 3
514 #  error Attempting to use mingw-runtime with broken vsnprintf support
515 # endif
516 #elif __MINGW32_MAJOR_VERSION == 3 && __MINGW32_MINOR_VERSION < 15
517 # error Attempting to use mingw-runtime with broken vsnprintf support
518 #endif
519     ])], [
520         AC_MSG_RESULT([ok])
521     ], [
522         AC_MSG_RESULT([present])
523         AC_MSG_ERROR([LibVLC requires mingw-runtime version 3.15 or higher, or mingw-w64 version 3.0 or higher!])
524     ])
526     dnl force use of mingw provided c99 *printf over msvcrt
527     CPPFLAGS="${CPPFLAGS} -D__USE_MINGW_ANSI_STDIO=1"
529     dnl Add WinMainCRTStartup entry point to show it's a WinMain application
530     VLC_ADD_LDFLAGS([vlc],[-mwindows])
532     dnl Check for the need to include the mingwex lib for mingw32
533     VLC_SAVE_FLAGS
534     AC_CHECK_LIB(mingwex,opendir,
535         AC_CHECK_LIB(mingw32,opendir,,
536             [VLC_ADD_LIBS([libvlccore],[-lmingwex])])
537     )
538     VLC_RESTORE_FLAGS
539     ], [
540         AC_MSG_RESULT([Not compiling with mingw])
541     ])
543     dnl Check for fnative-struct or mms-bitfields support for mingw32
544     VLC_SAVE_FLAGS
545     CFLAGS="${CFLAGS} -mms-bitfields"
546     CXXFLAGS="${CXXFLAGS} -mms-bitfields"
547     AC_CACHE_CHECK([if \$CC accepts -mms-bitfields],
548         [ac_cv_c_mms_bitfields],
549         [AC_TRY_COMPILE([],,ac_cv_c_mms_bitfields=yes, ac_cv_c_mms_bitfields=no)])
550     if test "${ac_cv_c_mms_bitfields}" = "no"; then
551         VLC_RESTORE_FLAGS
552         CFLAGS="${CFLAGS} -fnative-struct"
553         CXXFLAGS="${CXXFLAGS} -fnative-struct"
554         AC_CACHE_CHECK([if \$CC accepts -fnative-struct],
555             [ac_cv_c_fnative_struct],
556             [AC_TRY_COMPILE([],,ac_cv_c_fnative_struct=yes, ac_cv_c_fnative_struct=no)])
557         "${ac_cv_c_fnative_struct}" = "no" && VLC_RESTORE_FLAGS
558     fi
563 dnl Buggy glibc prevention. Purposedly not cached.
564 dnl See sourceware.org bugs 5058 and 5443.
565 dnl Ubuntu alone has 20 bug numbers for this...
567 AC_MSG_CHECKING(for buggy GNU/libc versions)
568 AC_PREPROC_IFELSE([AC_LANG_SOURCE([
569 #include <limits.h>
570 #if defined (__GLIBC__) && (__GLIBC__ == 2) \
571   && (__GLIBC_MINOR__ >= 5) && (__GLIBC_MINOR__ <= 7)
572 # error GNU/libc with dcgettext killer bug!
573 #endif
574 ])], [
575   AC_MSG_RESULT([not present])
576 ], [
577   AC_MSG_RESULT([found])
578   AS_IF([test "x${enable_nls}" != "xno"], [
579     AC_MSG_ERROR([Buggy GNU/libc (version 2.5 - 2.7) present. VLC would crash; there is no viable
580 work-around for this. Check with your distribution vendor on how to update the
581 glibc run-time. Alternatively, build with --disable-nls.])
582   ])
585 dnl Plugin compilation stuff
587 VLC_LIBRARY_SUFFIX
589 dnl Check for system libs needed
590 need_libc=false
592 dnl Check for usual libc functions
593 AC_CHECK_FUNCS([daemon fcntl flock fstatvfs fork getenv getpwuid_r isatty lstat memalign mkostemp mmap open_memstream openat pread posix_fadvise posix_madvise setlocale stricmp strnicmp strptime tdestroy uselocale pthread_cond_timedwait_monotonic_np pthread_condattr_setclock])
594 AC_REPLACE_FUNCS([atof atoll dirfd fdopendir ffsll flockfile fsync getdelim getpid lldiv memrchr nrand48 poll posix_memalign recvmsg rewind sendmsg setenv strcasecmp strcasestr strdup strlcpy strndup strnlen strnstr strsep strtof strtok_r strtoll swab tfind timegm timespec_get strverscmp])
595 AC_REPLACE_FUNCS([gettimeofday])
596 AC_CHECK_FUNC(fdatasync,,
597   [AC_DEFINE(fdatasync, fsync, [Alias fdatasync() to fsync() if missing.])
600 VLC_REPLACE_DECL([realpath], [#include <stdlib.h>])
602 dnl mingw64 implements those as static inline, not functions with C linkage
603 VLC_REPLACE_DECL([asprintf], [#include <stdio.h>])
604 VLC_REPLACE_DECL([vasprintf], [#include <stdio.h>])
605 VLC_REPLACE_DECL([gmtime_r], [#include <time.h>])
606 VLC_REPLACE_DECL([localtime_r], [#include <time.h>])
608 dnl C11 static_assert()
609 AC_MSG_CHECKING([for static_assert in assert.h])
610 AC_LINK_IFELSE([AC_LANG_PROGRAM([#include <assert.h>], [
611 static_assert(1, "The impossible happened.");
612 ])], [
613   AC_MSG_RESULT([yes])
614   AC_DEFINE([HAVE_STATIC_ASSERT], [1], [Define to 1 if <assert.h> defines static_assert.])
615 ], [
616   AC_MSG_RESULT([no])
619 # Windows CE does not have strcoll()
620 AC_FUNC_STRCOLL
622 dnl Check for non-standard system calls
623 case "$SYS" in
624   "linux")
625     AC_CHECK_FUNCS([accept4 pipe2 eventfd vmsplice sched_getaffinity recvmmsg])
626     ;;
627   "mingw32")
628     AC_CHECK_FUNCS([_lock_file])
629     ;;
630 esac
632 AH_BOTTOM([#include <vlc_fixups.h>])
634 dnl Check for struct pollfd
635 AC_CHECK_TYPES([struct pollfd],,,
636 [#include <sys/types.h>
637 #if HAVE_POLL
638 # include <poll.h>
639 #elif defined (_WIN32)
640 # include <winsock2.h>
641 #endif
644 dnl Check for struct timespec
645 AC_CHECK_TYPES([struct timespec],,,
646 [#include <time.h>])
648 dnl Check for max_align_t
649 AC_CHECK_TYPES([max_align_t],,,
650 [#include <stddef.h>])
652 dnl Checks for socket stuff
653 VLC_SAVE_FLAGS
654 SOCKET_LIBS=""
655 AC_SEARCH_LIBS(connect, [socket], [
656   AS_IF([test "$ac_cv_search_connect" != "none required"], [
657     SOCKET_LIBS="$ac_cv_search_connect"
658   ])
659 ], [
660   AS_IF([test "${SYS}" = "mingw32"], [
661     SOCKET_LIBS="-lws2_32"
662   ])
665 AC_SEARCH_LIBS([inet_pton], [nsl], [
666  AS_IF([test "$ac_cv_search_inet_pton" != "none required"], [
667     SOCKET_LIBS="$ac_cv_search_inet_pton $SOCKET_LIBS"
668   ])
669 ],, [${SOCKET_LIBS}])
671 LIBS="${LIBS} ${SOCKET_LIBS}"
672 AC_LINK_IFELSE([
673     AC_LANG_PROGRAM([#ifdef _WIN32
674         # if _WIN32_WINNT < 0x600
675         #  error Needs vista+
676         # endif
677         #include <ws2tcpip.h>
678         #else
679         #include <sys/socket.h>
680         #include <arpa/inet.h>
681         #endif], [
682         char dst[[sizeof(struct in_addr)]];
683         inet_pton(AF_INET, "127.0.0.1", dst);
684     ])],[AC_DEFINE([HAVE_INET_PTON],[1],[Define to 1 if you have inet_pton function])],[AC_LIBOBJ([inet_pton])])
685 AC_CHECK_FUNCS([if_nameindex if_nametoindex])
686 VLC_RESTORE_FLAGS
687 AC_SUBST(SOCKET_LIBS)
689 dnl Check for socklen_t
690 AH_TEMPLATE(socklen_t, [Define to `int' if <sys/socket.h> does not define.])
691 AC_CACHE_CHECK([for socklen_t in sys/socket.h], dnl ` (fix VIM syntax highlight
692 ac_cv_type_socklen_t,
693 [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([
694 [#include <sys/types.h>
695 #ifdef _WIN32
696 # include <winsock2.h>
697 # include <ws2tcpip.h>
698 #else
699 # include <sys/socket.h>
700 #endif]], [[socklen_t len; len = 0;]])],
701 ac_cv_type_socklen_t=yes,
702 ac_cv_type_socklen_t=no)])
703 AS_IF([test "$ac_cv_type_socklen_t" = no],
704  [AC_DEFINE(socklen_t, int)])
706 dnl Check for struct sockaddr_storage
707 AH_TEMPLATE(sockaddr_storage, [Define to `sockaddr' if <sys/socket.h> does not define.]) dnl ` (fix VIM syntax highlight
708 AH_TEMPLATE(ss_family, [Define to `sa_family' if <sys/socket.h> does not define.]) dnl ` (fix VIM syntax highlight
709 AC_CACHE_CHECK([for struct sockaddr_storage], ac_cv_struct_sockaddr_storage,
710   [AC_TRY_COMPILE(
711     [#include <sys/types.h>
712      #if defined( _WIN32 )
713      # include <winsock2.h>
714      #else
715      # include <sys/socket.h>
716      #endif], [struct sockaddr_storage addr;],
717      ac_cv_struct_sockaddr_storage=yes,
718      ac_cv_struct_sockaddr_storage=no)])
719 AS_IF([test "${ac_cv_struct_sockaddr_storage}" = no], [
720   AC_DEFINE(sockaddr_storage, sockaddr)
721   AC_DEFINE(ss_family, sa_family)
724 dnl FreeBSD has a gnugetopt library for this:
725 GNUGETOPT_LIBS=""
726 AC_CHECK_FUNC(getopt_long,, [
727   AC_CHECK_LIB([gnugetopt],[getopt_long], [
728     GNUGETOPT_LIBS="-lgnugetopt"
729   ])
731 AC_SUBST(GNUGETOPT_LIBS)
733 AC_CHECK_LIB(m,cos,[
734   LIBM="-lm"
735 ], [
736   LIBM=""
738 AC_SUBST(LIBM)
740 AC_CHECK_LIB(m,lrintf, [
741   AC_DEFINE(HAVE_LRINTF, 1, [Define to 1 if you have the lrintf function])
742   VLC_ADD_LIBS([skins2],[-lm])
744 AC_CHECK_LIB(m,nanf,
745   AC_DEFINE(HAVE_NANF, 1, [Define to 1 if you have the NANF function])
747 AC_CHECK_LIB(m,sincos, [
748   AC_DEFINE(HAVE_SINCOS, 1, [Define to 1 if you have the sincos function.])
749 ], [
750   AC_LIBOBJ([sincos])
753 dnl Check for dynamic plugins
754 LIBDL=""
755 have_dynamic_objects="no"
756 VLC_SAVE_FLAGS
757 AC_SEARCH_LIBS(dlsym, [dl svld], [
758   AS_IF([test "$ac_cv_search_dlsym" != "none required"], [
759     LIBDL="$ac_cv_search_dlsym"
760   ])
761   have_dynamic_objects="yes"
763 VLC_RESTORE_FLAGS
765 # Windows
766 AS_IF([test "${SYS}" = "mingw32"], [
767   LIBDL=""
768   have_dynamic_objects="yes" #assume we can use shared objects
771 AS_IF([test "${enable_shared}" = "no"], [
772   have_dynamic_objects=no
774 AM_CONDITIONAL(HAVE_DYNAMIC_PLUGINS, [test "${have_dynamic_objects}" != "no"])
776 AC_SUBST(LIBDL)
778 dnl Check for thread library
779 LIBPTHREAD=""
780 AS_IF([test "${SYS}" != "mingw32"], [
781   VLC_SAVE_FLAGS
782   LIBS=""
783   AC_SEARCH_LIBS(pthread_rwlock_init, pthread pthreads c_r, [
784     AS_IF([test "$ac_cv_search_pthread_rwlock_init" != "none required"], [
785       LIBPTHREAD="$ac_cv_search_pthread_rwlock_init"
786     ])
787   ])
788   VLC_RESTORE_FLAGS
790 AC_SUBST(LIBPTHREAD)
792 AC_SEARCH_LIBS([clock_nanosleep], [rt pthread], [
793   AS_IF([test "$ac_cv_search_clock_nanosleep" != "none required"], [
794     LIBRT="$ac_cv_search_clock_nanosleep"
795   ])
796 ], [
797   AC_SEARCH_LIBS([nanosleep], [rt pthread posix4], [
798     AS_IF([test "$ac_cv_search_nanosleep" != "none required"], [
799       LIBRT="$ac_cv_search_nanosleep"
800     ])
801   ])
803 AC_SUBST(LIBRT)
806 dnl Check for headers
809 dnl  POSIX
810 AC_CHECK_HEADERS([arpa/inet.h pthread.h search.h sys/shm.h sys/socket.h sys/uio.h])
811 AC_CHECK_HEADERS([net/if.h], [], [],
813 #include <sys/types.h>
814 #include <sys/socket.h>
816 AC_CHECK_HEADER([syslog.h], [have_syslog="yes"], [have_syslog="no"])
817 AM_CONDITIONAL([HAVE_SYSLOG], [test "$have_syslog" = "yes"])
819 dnl  BSD
820 AC_CHECK_HEADERS([netinet/udplite.h sys/param.h sys/mount.h])
822 dnl  GNU/Linux
823 AC_CHECK_HEADERS([features.h getopt.h linux/dccp.h linux/magic.h mntent.h sys/eventfd.h])
825 dnl  MacOS
826 AC_CHECK_HEADERS([xlocale.h])
828 dnl LP64 and LLP64 architectures had better define ssize_t by themselves...
829 AH_TEMPLATE(ssize_t, [Define to `int' if <stddef.h> does not define.]) dnl ` (fix VIM syntax highlight
830 AC_CHECK_TYPE(ssize_t,, [
831   AC_DEFINE(ssize_t, int)
834 dnl It seems that autoconf detects pkg-config only during the first
835 dnl PKG_CHECK_MODULES from configure.ac - which makes sense. But in our case,
836 dnl it is nested within a conditional block, so it was not working right.
837 dnl Make PKG_CONFIG_PATH precious so that it appears in the help and get saved
838 AC_ARG_VAR(PKG_CONFIG_PATH,
839        [Paths where to find .pc not at the default location])
840 PKG_PROG_PKG_CONFIG()
842 dnl On some OS we need static linking
843 AS_IF([test -n "${PKG_CONFIG}" ],[
844     AS_IF([test "${SYS}" = "mingw32" -o "${SYS}" = "darwin" -o "${SYS}" = "os2" ],[
845         PKG_CONFIG="${PKG_CONFIG} --static"
846     ])
851 dnl Check for zlib.h and -lz along with system -lminizip if available
853 AC_CHECK_HEADERS(zlib.h, [ have_zlib=yes ], [ have_zlib=no ])
854 AM_CONDITIONAL(HAVE_ZLIB, [ test "${have_zlib}" = "yes" ])
855 if test "${have_zlib}" = "yes"
856 then
857   VLC_ADD_LIBS([sap],[-lz])
858   PKG_CHECK_MODULES([MINIZIP], [minizip] , [ have_minizip=yes ], [
859     AC_CHECK_HEADERS([unzip.h], [
860       have_minizip=yes
861       MINIZIP_LIBS="-lminizip -lz"
862     ], [
863       have_minizip=no
864     ])
865   ])
867 AM_CONDITIONAL(HAVE_MINIZIP, [ test "${have_minizip}" = "yes" ])
871 dnl Domain name i18n support via GNU libidn
873 PKG_CHECK_MODULES([IDN], [libidn], [
874   have_libidn="yes"
875   AC_DEFINE([HAVE_IDN], 1, [Define to 1 if you have GNU libidn.])
876 ], [
877   have_libidn="no"
881 dnl Check for dbus
882 AC_ARG_ENABLE(dbus,
883   [AS_HELP_STRING([--enable-dbus],
884     [compile D-Bus message bus support (default enabled)])])
885 have_dbus="no"
886 AS_IF([test "${enable_dbus}" != "no"], [
887   PKG_CHECK_MODULES(DBUS, [dbus-1 >= 1.6.0], [
888     have_dbus="yes"
889   ], [
890     AS_IF([test -n "${enable_dbus}"], [
891       AC_MSG_ERROR([${DBUS_PKG_ERRORS}.])
892     ], [
893       AC_MSG_WARN([${DBUS_PKG_ERRORS}.])
894     ])
895   ])
897 AM_CONDITIONAL([HAVE_DBUS], [test "${have_dbus}" = "yes"])
900 dnl Check for systemd
901 PKG_CHECK_MODULES([SYSTEMD], [libsystemd], [
902   have_systemd="yes"
903 ], [
904   AC_MSG_WARN([${SYSTEMD_PKG_ERRORS}.])
906 AM_CONDITIONAL([HAVE_SYSTEMD], [test "${have_systemd}" = "yes"])
909 dnl Check for ntohl, etc.
910 VLC_SAVE_FLAGS
911 CFLAGS="${CFLAGS} -Wall -Werror"
912 AC_CACHE_CHECK([for ntohl in sys/param.h],
913     [ac_cv_c_ntohl_sys_param_h],
914     [     AC_TRY_COMPILE([#include <sys/param.h>],
915         [int meuh; ntohl(meuh);],
916         ac_cv_c_ntohl_sys_param_h=yes, ac_cv_c_ntohl_sys_param_h=no)])
917 if test "${ac_cv_c_ntohl_sys_param_h}" != "no"; then
918     AC_DEFINE(NTOHL_IN_SYS_PARAM_H, 1, Define if <sys/param.h> defines ntohl.)
920 VLC_RESTORE_FLAGS
922 EXTEND_HELP_STRING([Optimization options:])
924 dnl  Compiler warnings
927 RDC_PROG_CC_WFLAGS([all extra sign-compare undef pointer-arith bad-function-cast write-strings missing-prototypes volatile-register-var error-implicit-function-declaration init-self logical-op format-security])
928 RDC_PROG_CC_FLAGS([-pipe])
929 AC_LANG_PUSH([C++])
930 RDC_PROG_CXX_WFLAGS([all extra sign-compare undef pointer-arith volatile-register-var format-security])
931 AC_LANG_POP([C++])
934 dnl  Debugging mode
936 AC_ARG_ENABLE(debug,
937   [AS_HELP_STRING([--enable-debug],
938     [build with run-time assertions (default disabled)])],,
939   [enable_debug="no"])
940 AH_TEMPLATE(NDEBUG,
941             [Define to 1 if debug code should NOT be compiled])
942 AS_IF([test "${enable_debug}" != "no"], [
943   AC_CHECK_HEADERS([valgrind/valgrind.h])
944 ], [
945   AC_DEFINE(NDEBUG)
949 dnl  Profiling
951 AC_ARG_ENABLE(gprof,
952   [AS_HELP_STRING([--enable-gprof],[profile with gprof (default disabled)])],,
953   [enable_gprof="no"])
954 AS_IF([test "${enable_gprof}" != "no"], [
955   CFLAGS="${CFLAGS} -pg"
956   CXXFLAGS="${CXXFLAGS} -pg"
957   OBJCFLAGS="${OBJCFLAGS} -pg"
958   LDFLAGS="${LDFLAGS} -pg"
961 AC_ARG_ENABLE(cprof,
962   [AS_HELP_STRING([--enable-cprof],[profile with cprof (default disabled)])],,
963   [enable_cprof="no"])
964 AS_IF([test "${enable_gprof}" != "no"], [
965   CFLAGS="${CFLAGS} -finstrument-functions"
966   CXXFLAGS="${CXXFLAGS} -finstrument-functions"
967   OBJCFLAGS="${OBJCFLAGS} -finstrument-functions"
968   LDFLAGS="${LDFLAGS} -finstrument-functions"
972 dnl  Test coverage
974 AC_ARG_ENABLE(coverage,
975   [AS_HELP_STRING([--enable-coverage],
976     [build for test coverage (default disabled)])],,
977   [enable_coverage="no"])
978 AS_IF([test "${enable_coverage}" != "no"], [
979   CFLAGS="-fprofile-arcs -ftest-coverage ${CFLAGS}"
980   CXXFLAGS="-fprofile-arcs -ftest-coverage ${CXXFLAGS}"
981   LDFLAGS="-lgcov ${LDFLAGS}"
984 AS_IF([test "${SYS}" != "mingw32" -a "${SYS}" != "os2"], [
985   VLC_SAVE_FLAGS
986   CFLAGS="${CFLAGS} -fvisibility=hidden"
987   CXXFLAGS="${CXXFLAGS} -fvisibility=hidden"
988   OBJCFLAGS="${OBJCFLAGS} -fvisibility=hidden"
989   AC_CACHE_CHECK([if $CC accepts -fvisibility=hidden],
990                  [ac_cv_c_visibility_hidden], [
991     AC_COMPILE_IFELSE([AC_LANG_PROGRAM()], [
992       ac_cv_c_visibility_hidden=yes
993     ], [
994       ac_cv_c_visibility_hidden=no
995     ])
996   ])
997   AS_IF([test "${ac_cv_c_visibility_hidden}" = "no"], [VLC_RESTORE_FLAGS])
1002 dnl  Enable/disable optimizations
1004 AC_ARG_ENABLE(optimizations,
1005   [AS_HELP_STRING([--disable-optimizations],
1006     [disable compiler optimizations (default enabled)])],,
1007   [enable_optimizations="yes"])
1009 dnl Check for various optimization flags
1010 AS_IF([test "${enable_optimizations}" != "no"], [
1012   dnl -O3 only in production builds
1013   AS_IF([test "${enable_debug}" = "no"], [
1014     VLC_SAVE_FLAGS
1015     CFLAGS="${CFLAGS} -O3"
1016     CXXFLAGS="${CXXFLAGS} -O3"
1017     OBJCFLAGS="${OBJCFLAGS} -O3"
1018     AC_CACHE_CHECK([if $CC accepts -O3],  [ac_cv_c_o3], [
1019       AC_COMPILE_IFELSE([AC_LANG_PROGRAM()], [
1020         ac_cv_c_o3=yes
1021       ], [
1022         ac_cv_c_o3=no
1023       ])
1024     ])
1025     AS_IF([test "${ac_cv_c_o3}" = "no"], [VLC_RESTORE_FLAGS])
1026   ])
1028   dnl Check for fast maths
1029   RDC_PROG_CC_FFLAGS([no-math-errno unsafe-math-optimizations no-rounding-math no-signaling-nans cx-limited-range])
1030   AC_LANG_PUSH(C++)
1031   RDC_PROG_CXX_FFLAGS([no-math-errno unsafe-math-optimizations no-rounding-math no-signaling-nans cx-limited-range])
1032   AC_LANG_POP
1034 AH_BOTTOM([
1035 #if defined(_MSC_VER) && !defined(__clang__)
1036 # pragma fenv_access(off)
1037 # pragma fp_contract(on)
1038 #elif defined(__GNUC__)
1039 /* Not supported so far */
1040 #else
1041 # pragma STDC FENV_ACCESS OFF
1042 # pragma STDC FP_CONTRACT ON
1043 #endif
1046   dnl Check for -funroll-loops
1047   VLC_SAVE_FLAGS
1048   CFLAGS="${CFLAGS} -funroll-loops"
1049   CXXFLAGS="${CXXFLAGS} -funroll-loops"
1050   OBJCFLAGS="${OBJCFLAGS} -funroll-loops"
1051   AC_CACHE_CHECK([if $CC accepts -funroll-loops], [ac_cv_c_unroll_loops], [
1052     AC_COMPILE_IFELSE([AC_LANG_PROGRAM()], [
1053       ac_cv_c_unroll_loops=yes
1054     ], [
1055       ac_cv_c_unroll_loops=no
1056     ])
1057   ])
1058   AS_IF([test "${ac_cv_c_unroll_loops}" = "no"], [VLC_RESTORE_FLAGS])
1060   AS_IF([test "$enable_debug" = "no"], [
1061     dnl Check for -fomit-frame-pointer
1062     VLC_SAVE_FLAGS
1063     CFLAGS="${CFLAGS} -fomit-frame-pointer"
1064     CXXFLAGS="${CXXFLAGS} -fomit-frame-pointer"
1065     OBJCFLAGS="${OBJCFLAGS} -fomit-frame-pointer"
1066     AC_CACHE_CHECK([if $CC accepts -fomit-frame-pointer],
1067       [ac_cv_c_omit_frame_pointer], [
1068       AC_COMPILE_IFELSE([AC_LANG_PROGRAM()], [
1069         ac_cv_c_omit_frame_pointer=yes
1070       ], [
1071         ac_cv_c_omit_frame_pointer=no
1072       ])
1073     ])
1074     AS_IF([test "${ac_cv_c_omit_frame_pointer}" = "no"], [VLC_RESTORE_FLAGS])
1075   ])
1078 VLC_SAVE_FLAGS
1079 LDFLAGS="${LDFLAGS} -Wl,-Bsymbolic"
1080 AC_CACHE_CHECK([if linker supports -Bsymbolic], [ac_cv_ld_bsymbolic], [
1081   AC_TRY_LINK([],, [
1082     ac_cv_ld_bsymbolic="-Wl,-Bsymbolic"
1083   ], [
1084     ac_cv_ld_bsymbolic=""
1085   ])
1087 VLC_RESTORE_FLAGS
1088 SYMBOLIC_LDFLAGS="${ac_cv_ld_bsymbolic}"
1089 AC_SUBST(SYMBOLIC_LDFLAGS)
1091 VLC_SAVE_FLAGS
1092 LDFLAGS="${LDFLAGS} -Wl,-z,defs"
1093 AC_CACHE_CHECK([if linker supports -z,defs], [ac_cv_ld_z_defs], [
1094   AC_TRY_LINK([],, [
1095     ac_cv_ld_z_defs="yes"
1096   ], [
1097     ac_cv_ld_z_defs="no"
1098   ])
1100 AS_IF([test "${ac_cv_ld_z_defs}" = "no"], [VLC_RESTORE_FLAGS])
1102 dnl Check for __attribute__((packed))
1103 AC_CACHE_CHECK([for __attribute__((packed))],
1104   [ac_cv_c_attribute_packed],
1105   [ac_cv_c_attribute_packed=no
1106    AC_TRY_COMPILE(, [struct __attribute__((__packed__)) foo { int a; } b; (void)b;],
1107                     [ac_cv_c_attribute_packed=yes])])
1108 if test "${ac_cv_c_attribute_packed}" != "no"; then
1109   AC_DEFINE(HAVE_ATTRIBUTE_PACKED, 1, Support for __attribute__((packed)) for structs)
1113 dnl  Check the CPU
1115 case "${host_cpu}" in
1116   "")
1117     ARCH=unknown
1118     ;;
1119   *)
1120     ARCH="${host_cpu}"
1121     ;;
1122 esac
1124 dnl Check for backtrace() support
1125 AC_CHECK_HEADERS(execinfo.h)
1126 AC_CHECK_FUNCS(backtrace)
1129 dnl  default modules
1131 ALIASES="${ALIASES} cvlc rvlc"
1134 dnl  Accelerated modules
1137 dnl  Check for fully working MMX intrinsics
1138 dnl  We need support for -mmmx, we need <mmintrin.h>, and we also need a
1139 dnl  working compiler (http://gcc.gnu.org/bugzilla/show_bug.cgi?id=23963)
1140 AC_ARG_ENABLE(mmx,
1141   [AS_HELP_STRING([--disable-mmx],
1142     [disable MMX optimizations (default auto)])],,[
1143   case "${host_cpu}" in
1144     i?86|x86_64)
1145       enable_mmx="yes"
1146       ;;
1147     *)
1148       enable_mmx="no"
1149       ;;
1150   esac
1152 have_mmx="no"
1153 have_mmxext="no"
1154 AS_IF([test "${enable_mmx}" != "no"], [
1155   ARCH="${ARCH} mmx"
1156   VLC_SAVE_FLAGS
1157   CFLAGS="${CFLAGS} -mmmx"
1158   AC_CACHE_CHECK([if $CC groks MMX intrinsics], [ac_cv_c_mmx_intrinsics], [
1159     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([
1160 [#include <mmintrin.h>
1161 #include <stdint.h>
1162 uint64_t frobzor;]], [
1163 [__m64 a, b, c;
1164 a = b = c = (__m64)frobzor;
1165 a = _mm_slli_pi16(a, 3);
1166 a = _mm_adds_pi16(a, b);
1167 c = _mm_srli_pi16(c, 8);
1168 c = _mm_slli_pi16(c, 3);
1169 b = _mm_adds_pi16(b, c);
1170 a = _mm_unpacklo_pi8(a, b);
1171 frobzor = (uint64_t)a;]])], [
1172       ac_cv_c_mmx_intrinsics=yes
1173     ], [
1174       ac_cv_c_mmx_intrinsics=no
1175     ])
1176   ])
1177   VLC_RESTORE_FLAGS
1178   AS_IF([test "${ac_cv_c_mmx_intrinsics}" != "no"], [
1179     AC_DEFINE(HAVE_MMX_INTRINSICS, 1, [Define to 1 if MMX intrinsics are available.])
1180   ])
1182   VLC_SAVE_FLAGS
1183   CFLAGS="${CFLAGS} -mmmx"
1184   AC_CACHE_CHECK([if $CC groks MMX inline assembly], [ac_cv_mmx_inline], [
1185     AC_COMPILE_IFELSE([AC_LANG_PROGRAM(,[[
1186 void *p;
1187 asm volatile("packuswb %%mm1,%%mm2"::"r"(p):"mm1", "mm2");
1189     ], [
1190       ac_cv_mmx_inline=yes
1191     ], [
1192       ac_cv_mmx_inline=no
1193     ])
1194   ])
1195   AS_IF([test "${ac_cv_mmx_inline}" != "no"], [
1196     AC_DEFINE(CAN_COMPILE_MMX, 1, [Define to 1 inline MMX assembly is available.])
1197     have_mmx="yes"
1198   ])
1200   AC_CACHE_CHECK([if $CC groks MMX EXT inline assembly],
1201                  [ac_cv_mmxext_inline], [
1202     AC_COMPILE_IFELSE([AC_LANG_PROGRAM(,[[
1203 void *p;
1204 asm volatile("maskmovq %%mm1,%%mm2"::"r"(p):"mm1", "mm2");
1206     ], [
1207       ac_cv_mmxext_inline=yes
1208     ], [
1209       ac_cv_mmxext_inline=no
1210     ])
1211   ])
1212   VLC_RESTORE_FLAGS
1213   AS_IF([test "${ac_cv_mmxext_inline}" != "no"], [
1214     AC_DEFINE(CAN_COMPILE_MMXEXT, 1, [Define to 1 if MMX EXT inline assembly is available.])
1215     have_mmxext="yes"
1216   ])
1218 AM_CONDITIONAL([HAVE_MMX], [test "${have_mmx}" = "yes"])
1219 AM_CONDITIONAL([HAVE_MMXEXT], [test "${have_mmxext}" = "yes"])
1221 dnl  Check for fully workin SSE2 intrinsics
1222 dnl  We need support for -mmmx, we need <emmintrin.h>, and we also need a
1223 dnl  working compiler (http://gcc.gnu.org/bugzilla/show_bug.cgi?id=23963)
1224 AC_ARG_ENABLE(sse,
1225   [AS_HELP_STRING([--disable-sse],
1226     [disable SSE (1-4) optimizations (default auto)])],, [
1227   case "${host_cpu}" in
1228     i?86|x86_64)
1229       enable_sse=yes
1230       ;;
1231     *)
1232       enable_sse=no
1233       ;;
1234   esac
1236 have_sse2="no"
1237 AS_IF([test "${enable_sse}" != "no"], [
1238   ARCH="${ARCH} sse sse2"
1240   VLC_SAVE_FLAGS
1241   CFLAGS="${CFLAGS} -msse2"
1242   AC_CACHE_CHECK([if $CC groks SSE2 intrinsics], [ac_cv_c_sse2_intrinsics], [
1243     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([
1244 [#include <emmintrin.h>
1245 #include <stdint.h>
1246 uint64_t frobzor;]], [
1247 [__m128i a, b, c;
1248 a = b = c = _mm_set1_epi64((__m64)frobzor);
1249 a = _mm_slli_epi16(a, 3);
1250 a = _mm_adds_epi16(a, b);
1251 c = _mm_srli_epi16(c, 8);
1252 c = _mm_slli_epi16(c, 3);
1253 b = _mm_adds_epi16(b, c);
1254 a = _mm_unpacklo_epi8(a, b);
1255 frobzor = (uint64_t)_mm_movepi64_pi64(a);]])], [
1256       ac_cv_c_sse2_intrinsics=yes
1257     ], [
1258       ac_cv_c_sse2_intrinsics=no
1259     ])
1260   ])
1261   VLC_RESTORE_FLAGS
1262   AS_IF([test "${ac_cv_c_sse2_intrinsics}" != "no"], [
1263     AC_DEFINE(HAVE_SSE2_INTRINSICS, 1, [Define to 1 if SSE2 intrinsics are available.])
1264   ])
1266   VLC_SAVE_FLAGS
1267   CFLAGS="${CFLAGS} -msse"
1268   AC_CACHE_CHECK([if $CC groks SSE inline assembly], [ac_cv_sse_inline], [
1269     AC_COMPILE_IFELSE([AC_LANG_PROGRAM(,[[
1270 void *p;
1271 asm volatile("xorps %%xmm1,%%xmm2"::"r"(p):"xmm1", "xmm2");
1273     ], [
1274       ac_cv_sse_inline=yes
1275     ], [
1276       ac_cv_sse_inline=no
1277     ])
1278   ])
1280   AS_IF([test "${ac_cv_sse_inline}" != "no" -a "${SYS}" != "solaris"], [
1281     AC_DEFINE(CAN_COMPILE_SSE, 1, [Define to 1 if SSE inline assembly is available.])
1282   ])
1284   AC_CACHE_CHECK([if $CC groks SSE2 inline assembly], [ac_cv_sse2_inline], [
1285     AC_COMPILE_IFELSE([AC_LANG_PROGRAM(,[[
1286 void *p;
1287 asm volatile("punpckhqdq %%xmm1,%%xmm2"::"r"(p):"xmm1", "xmm2");
1289     ], [
1290       ac_cv_sse2_inline=yes
1291     ], [
1292       ac_cv_sse2_inline=no
1293     ])
1294   ])
1295   AS_IF([test "${ac_cv_sse2_inline}" != "no" -a "${SYS}" != "solaris"], [
1296     AC_DEFINE(CAN_COMPILE_SSE2, 1, [Define to 1 if SSE2 inline assembly is available.])
1297     have_sse2="yes"
1298   ])
1300   # SSE3
1301   AC_CACHE_CHECK([if $CC groks SSE3 inline assembly], [ac_cv_sse3_inline], [
1302     AC_COMPILE_IFELSE([AC_LANG_PROGRAM(,[[
1303 void *p;
1304 asm volatile("movsldup %%xmm1,%%xmm0"::"r"(p):"xmm0", "xmm1");
1306     ], [
1307       ac_cv_sse3_inline=yes
1308     ], [
1309       ac_cv_sse3_inline=no
1310     ])
1311   ])
1313   AS_IF([test "${ac_cv_sse3_inline}" != "no"], [
1314     AC_DEFINE(CAN_COMPILE_SSE3, 1, [Define to 1 if SSE3 inline assembly is available.]) ])
1315   # SSSE3
1316   AC_CACHE_CHECK([if $CC groks SSSE3 inline assembly], [ac_cv_ssse3_inline], [
1317     AC_COMPILE_IFELSE([AC_LANG_PROGRAM(,[[
1318 void *p;
1319 asm volatile("pabsw %%xmm0,%%xmm0"::"r"(p):"xmm0");
1321     ], [
1322       ac_cv_ssse3_inline=yes
1323     ], [
1324       ac_cv_ssse3_inline=no
1325     ])
1326   ])
1328   AS_IF([test "${ac_cv_ssse3_inline}" != "no"], [
1329     AC_DEFINE(CAN_COMPILE_SSSE3, 1, [Define to 1 if SSSE3 inline assembly is available.]) ])
1331   # SSE4.1
1332   AC_CACHE_CHECK([if $CC groks SSE4.1 inline assembly],
1333                  [ac_cv_sse4_1_inline], [
1334     AC_COMPILE_IFELSE([AC_LANG_PROGRAM(,[[
1335 void *p;
1336 asm volatile("pmaxsb %%xmm1,%%xmm0"::"r"(p):"xmm0", "xmm1");
1338     ], [
1339       ac_cv_sse4_1_inline=yes
1340     ], [
1341       ac_cv_sse4_1_inline=no
1342     ])
1343   ])
1345   AS_IF([test "${ac_cv_sse4_1_inline}" != "no"], [
1346     AC_DEFINE(CAN_COMPILE_SSE4_1, 1, [Define to 1 if SSE4_1 inline assembly is available.]) ])
1348   # SSE4.2
1349   AC_CACHE_CHECK([if $CC groks SSE4.2 inline assembly],
1350                  [ac_cv_sse4_2_inline], [
1351     AC_COMPILE_IFELSE([AC_LANG_PROGRAM(,[[
1352 void *p;
1353 asm volatile("pcmpgtq %%xmm1,%%xmm0"::"r"(p):"xmm0", "xmm1");
1355     ], [
1356       ac_cv_sse4_2_inline=yes
1357     ], [
1358       ac_cv_sse4_2_inline=no
1359     ])
1360   ])
1362   AS_IF([test "${ac_cv_sse4_2_inline}" != "no"], [
1363     AC_DEFINE(CAN_COMPILE_SSE4_2, 1, [Define to 1 if SSE4_2 inline assembly is available.]) ])
1365   # SSE4A
1366   AC_CACHE_CHECK([if $CC groks SSE4A inline assembly], [ac_cv_sse4a_inline], [
1367     AC_COMPILE_IFELSE([AC_LANG_PROGRAM(,[[
1368 void *p;
1369 asm volatile("insertq %%xmm1,%%xmm0"::"r"(p):"xmm0", "xmm1");
1371     ], [
1372       ac_cv_sse4a_inline=yes
1373     ], [
1374       ac_cv_sse4a_inline=no
1375     ])
1376   ])
1377   VLC_RESTORE_FLAGS
1378   AS_IF([test "${ac_cv_sse4a_inline}" != "no"], [
1379     AC_DEFINE(CAN_COMPILE_SSE4A, 1, [Define to 1 if SSE4A inline assembly is available.]) ])
1381 AM_CONDITIONAL([HAVE_SSE2], [test "$have_sse2" = "yes"])
1383 VLC_SAVE_FLAGS
1384 CFLAGS="${CFLAGS} -mmmx"
1385 have_3dnow="no"
1386 AC_CACHE_CHECK([if $CC groks 3D Now! inline assembly], [ac_cv_3dnow_inline], [
1387   AC_COMPILE_IFELSE([AC_LANG_PROGRAM(,[[
1388 void *p;
1389 asm volatile("pfadd %%mm1,%%mm2"::"r"(p):"mm1", "mm2");
1391   ], [
1392     ac_cv_3dnow_inline=yes
1393   ], [
1394     ac_cv_3dnow_inline=no
1395   ])
1397 VLC_RESTORE_FLAGS
1398 AS_IF([test "${ac_cv_3dnow_inline}" != "no"], [
1399   AC_DEFINE(CAN_COMPILE_3DNOW, 1,
1400             [Define to 1 if 3D Now! inline assembly is available.])
1401   have_3dnow="yes"
1403 AM_CONDITIONAL([HAVE_3DNOW], [test "$have_3dnow" = "yes"])
1406 AC_ARG_ENABLE(neon,
1407   [AS_HELP_STRING([--disable-neon],
1408     [disable NEON optimizations (default auto)])],, [
1409   AS_IF([test "${host_cpu}" = "arm"], [enable_neon="yes"] ,[enable_neon="no"])
1411 AS_IF([test "${enable_neon}" != "no"], [
1412   VLC_SAVE_FLAGS
1413   CFLAGS="${CFLAGS} -mfpu=neon -mhard-float"
1414   AC_CACHE_CHECK([if $CCAS groks ARM NEON assembly], [ac_cv_arm_neon], [
1415     AC_COMPILE_IFELSE([
1416       AC_LANG_PROGRAM(,[[
1417 asm volatile("vqmovun.s64 d0, q1":::"d0");
1419     ], [
1420       ac_cv_arm_neon="yes"
1421     ], [
1422       ac_cv_arm_neon="no"
1423     ])
1424   ])
1425   VLC_RESTORE_FLAGS
1427 AM_CONDITIONAL(HAVE_NEON, [test "${ac_cv_arm_neon}" = "yes"])
1429 AC_ARG_ENABLE(arm64,
1430   [AS_HELP_STRING([--disable-arm64],
1431     [disable arm 64-bit optimizations (default auto)])],, [
1432   AS_IF([test "${host_cpu}" = "aarch64"], [enable_arm64="yes"] ,[enable_arm64="no"])
1434 AS_IF([test "${enable_arm64}" != "no"], [
1435   AC_CACHE_CHECK([if $CCAS groks ARM 64 SIMD assembly], [ac_cv_arm64], [
1436     AC_COMPILE_IFELSE([
1437       AC_LANG_PROGRAM(,[[
1438 asm volatile("uhadd v0.8b, v0.8b, v1.8b":::"v0");
1440     ], [
1441       ac_cv_arm64="yes"
1442     ], [
1443       ac_cv_arm64="no"
1444     ])
1445   ])
1447 AM_CONDITIONAL(HAVE_ARM64, [test "${ac_cv_arm64}" = "yes"])
1450 AC_ARG_ENABLE(altivec,
1451   [AS_HELP_STRING([--disable-altivec],
1452     [disable AltiVec optimizations (default auto)])],, [
1453   AS_CASE("${host_cpu}", [powerpc*],
1454         [enable_altivec=yes], [enable_altivec=no])
1456 have_altivec="no"
1457 ALTIVEC_CFLAGS=""
1458 AS_IF([test "${enable_altivec}" = "yes"], [
1459   ARCH="${ARCH} altivec";
1460   VLC_SAVE_FLAGS
1461   AC_CACHE_CHECK([if $CC groks AltiVec inline assembly],
1462     [ac_cv_altivec_inline],
1463     [AC_TRY_COMPILE(,[asm volatile("vperm 0,1,2,3");],
1464          ac_cv_altivec_inline="yes",
1465          [CFLAGS="${CFLAGS} -Wa,-maltivec"
1466           AC_TRY_COMPILE(,[asm volatile("vperm 0,1,2,3");],
1467             [ac_cv_altivec_inline="-Wa,-maltivec"],
1468             ac_cv_altivec_inline=no)
1469          ])])
1470   VLC_RESTORE_FLAGS
1471   AS_IF([test "${ac_cv_altivec_inline}" != "no"], [
1472     AC_DEFINE(CAN_COMPILE_ALTIVEC, 1,
1473               [Define to 1 if AltiVec inline assembly is available.])
1474     AS_IF([test "${ac_cv_altivec_inline}" != "yes"], [
1475       ALTIVEC_CFLAGS="${ac_cv_altivec_inline}"
1476       VLC_ADD_CFLAGS([libvlccore],[${ac_cv_altivec_inline}])
1477     ])
1478     have_altivec="yes"
1479   ])
1481   VLC_SAVE_FLAGS
1482   AC_CACHE_CHECK([if \$CC groks AltiVec C extensions],
1483   [ac_cv_c_altivec], [
1484     CFLAGS="${CFLAGS} -maltivec"
1485     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([
1486 [#include <altivec.h>]], [
1487 [vec_ld(0, (unsigned char *)0);]])], [
1488       ac_cv_c_altivec="-maltivec"
1489     ], [
1490       ac_cv_c_altivec="no"
1491     ])
1492   ])
1493   VLC_RESTORE_FLAGS
1494   AS_IF([test "${ac_cv_c_altivec}" != "no"], [
1495     CPPFLAGS="${CPPFLAGS} ${ac_cv_c_altivec}"
1496     AC_DEFINE(CAN_COMPILE_C_ALTIVEC, 1, [Define to 1 if C AltiVec extensions are available.])
1497     VLC_ADD_CFLAGS([libvlccore],[${ac_cv_c_altivec}])
1498     ALTIVEC_CFLAGS="$ALTIVEC_CFLAGS ${ac_cv_c_altivec}"
1499     VLC_ADD_CFLAGS([deinterlace],[${ac_cv_c_altivec}])
1500     have_altivec="yes"
1501   ])
1502   AC_CHECK_HEADERS(altivec.h)
1504   VLC_SAVE_FLAGS
1505   LDFLAGS="${LDFLAGS} -Wl,-framework,vecLib"
1506   AC_CACHE_CHECK([if linker needs -framework vecLib],
1507     [ac_cv_ld_altivec],
1508     [AC_TRY_LINK([],,ac_cv_ld_altivec=yes,ac_cv_ld_altivec=no)])
1509   VLC_RESTORE_FLAGS
1510   AS_IF([test "${ac_cv_ld_altivec}" != "no"], [
1511     VLC_ADD_LIBS([libvlccore],[-Wl,-framework,vecLib])
1512   ])
1514 AC_SUBST(ALTIVEC_CFLAGS)
1515 AM_CONDITIONAL([HAVE_ALTIVEC], [test "$have_altivec" = "yes"])
1518 dnl  Memory usage
1520 AC_ARG_ENABLE(optimize-memory,
1521   [AS_HELP_STRING([--enable-optimize-memory],
1522     [optimize memory usage over performance])])
1523 if test "${enable_optimize_memory}" = "yes"; then
1524   AC_DEFINE(OPTIMIZE_MEMORY, 1, Define if you want to optimize memory usage over performance)
1528 dnl Allow running as root (useful for people running on embedded platforms)
1530 AC_ARG_ENABLE(run-as-root,
1531   [AS_HELP_STRING([--enable-run-as-root],
1532     [allow running VLC as root (default disabled)])])
1533 AS_IF([test "${enable_run_as_root}" = "yes"],[
1534     AC_DEFINE(ALLOW_RUN_AS_ROOT, 1,
1535               [Define to 1 to allow running VLC as root (uid 0).])
1539 dnl Stream output
1541 AC_ARG_ENABLE(sout,
1542   [AS_HELP_STRING([--disable-sout],
1543     [disable streaming output (default enabled)])])
1544 AS_IF([test "${enable_sout}" != "no"], [
1545   AC_DEFINE(ENABLE_SOUT, 1, [Define to 1 for stream output support.])
1547 AM_CONDITIONAL(ENABLE_SOUT, [test "${enable_sout}" != "no"])
1549 dnl Lua modules
1550 AC_ARG_ENABLE(lua,
1551   [AS_HELP_STRING([--disable-lua],
1552     [disable LUA scripting support (default enabled)])])
1553 if test "${enable_lua}" != "no"
1554 then
1555   PKG_CHECK_MODULES(LUA, lua5.2,
1556     [ have_lua=yes ],
1557     [
1558     AC_MSG_WARN([${LUA_PKG_ERRORS}, trying lua 5.1 instead])
1560     PKG_CHECK_MODULES(LUA, lua5.1,
1561       [ have_lua=yes ],
1562       [
1563       AC_MSG_WARN([${LUA_PKG_ERRORS}, trying lua >= 5.1 instead])
1564       PKG_CHECK_MODULES(LUA, lua >= 5.1,
1565         [ have_lua=yes ],
1566         [
1567           AC_MSG_WARN([${LUA_PKG_ERRORS}, trying manual detection instead])
1568           have_lua=yes
1569           AC_CHECK_HEADERS([lua.h lauxlib.h lualib.h],
1570             [],
1571             [ have_lua=no ] )
1572           AC_CHECK_LIB(  lua5.2 , luaL_newstate,
1573             [LUA_LIBS="-llua5.2"],
1574           AC_CHECK_LIB( lua5.1 , luaL_newstate,
1575             [LUA_LIBS="-llua5.1"],
1576             AC_CHECK_LIB( lua51 , luaL_newstate,
1577               [LUA_LIBS="-llua51"],
1578               AC_CHECK_LIB( lua , luaL_newstate,
1579                 [LUA_LIBS="-llua"],
1580                 [ have_lua=no
1581                 ], [-lm])
1582             )))
1583         ])
1584       ])
1585     ])
1586   if test "x${have_lua}" != "xyes" ;  then
1587       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.])
1588   fi
1589   AC_ARG_VAR([LUAC], [LUA byte compiler])
1590   AS_IF([test -z "$LUAC"], [
1591      AC_CHECK_TOOL(LUAC, [luac], [false])
1592   ])
1593   AS_IF([test "${LUAC}" = "false"], [
1594     AC_MSG_ERROR([Could not find the LUA byte compiler.])
1595   ])
1596   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], [
1597     AC_MSG_ERROR([You need 32-bits luac when using lua from contrib.])
1598   ])
1600 AM_CONDITIONAL(BUILD_LUA, [test "${have_lua}" = "yes"])
1604 dnl HTTP daemon
1606 AC_ARG_ENABLE(httpd,
1607   [AS_HELP_STRING([--disable-httpd],
1608     [disable the built-in HTTP server (default enabled)])])
1609 if test "${enable_httpd}" != "no"
1610 then
1611   AC_DEFINE(ENABLE_HTTPD, 1, Define if you want the HTTP daemon support)
1613 AM_CONDITIONAL(BUILD_HTTPD, [test "${enable_httpd}" != "no"])
1617 dnl VideoLAN manager
1619 AC_ARG_ENABLE(vlm,
1620   [AS_HELP_STRING([--disable-vlm],
1621     [disable the stream manager (default enabled)])],,
1622   [enable_vlm="${enable_sout}"])
1623 AS_IF([test "${enable_vlm}" != "no"], [
1624   AS_IF([test "${enable_sout}" = "no"], [
1625     AC_MSG_ERROR([VLM requires the stream output. Do not use --disable-sout.])
1626   ])
1627   AC_DEFINE(ENABLE_VLM, 1, [Define if you want the VideoLAN manager support])
1629 AM_CONDITIONAL([ENABLE_VLM], [test "${enable_vlm}" != "no"])
1633 dnl Addons manager storage and repositories modules
1635 AC_ARG_ENABLE(addonmanagermodules,
1636   [AS_HELP_STRING([--disable-addonmanagermodules],
1637     [disable the addons manager modules (default enabled)])])
1638 if test "${enable_addonmanagermodules}" != "no"
1639 then
1640   AC_DEFINE(ENABLE_ADDONMANAGERMODULES, 1, [Define if you want the addons manager modules])
1642 AM_CONDITIONAL([ENABLE_ADDONMANAGERMODULES], [test "${enable_addonmanagermodules}" != "no"])
1646 dnl  Input plugins
1649 EXTEND_HELP_STRING([Input plugins:])
1652 dnl  libarchive access module
1654 PKG_ENABLE_MODULES_VLC([ARCHIVE], [archive], [libarchive >= 3.1.0], (libarchive support), [auto])
1657 dnl  live555 input
1659 AC_ARG_ENABLE(live555,
1660   [AS_HELP_STRING([--enable-live555],
1661     [enable RTSP input through live555 (default enabled)])])
1663 AS_IF([test "${enable_live555}" != "no" -a -n "${CXX}"], [
1664   PKG_CHECK_MODULES(LIVE555, live555, [
1665     VLC_ADD_PLUGIN([live555])
1666     VLC_ADD_CXXFLAGS([live555], [$LIVE555_CFLAGS])
1667     VLC_ADD_LIBS([live555],[$LIVE555_LIBS])
1668   ], [
1669     AC_MSG_WARN([${LIVE555_PKG_ERRORS}.])
1671     AC_LANG_PUSH(C++)
1672     VLC_SAVE_FLAGS
1674     dnl detect include paths
1675     AS_IF([test -f "${CONTRIB_DIR}/include/UsageEnvironment/UsageEnvironment.hh"], [
1676       CPPFLAGS_live555="-I${CONTRIB_DIR}/include/liveMedia -I${CONTRIB_DIR}/include/groupsock -I${CONTRIB_DIR}/include/BasicUsageEnvironment -I${CONTRIB_DIR}/include/UsageEnvironment"
1677     ], [
1678       AS_IF([test "${SYS}" != "os2"], [
1679         LIVE555_PREFIX=${LIVE555_PREFIX-"/usr"}
1680         CPPFLAGS_live555="-I${LIVE555_PREFIX}/include/liveMedia -I${LIVE555_PREFIX}/include/groupsock -I${LIVE555_PREFIX}/include/BasicUsageEnvironment -I${LIVE555_PREFIX}/include/UsageEnvironment"
1681       ], [
1682         LIVE555_PREFIX=${LIVE555_PREFIX-"/usr/lib/live"}
1683         CPPFLAGS_live555="-I${LIVE555_PREFIX}/liveMedia/include -I${LIVE555_PREFIX}/groupsock/include -I${LIVE555_PREFIX}/BasicUsageEnvironment/include -I${LIVE555_PREFIX}/UsageEnvironment/include"
1684         LDFLAGS_live555="-L${LIVE555_PREFIX}/liveMedia -L${LIVE555_PREFIX}/groupsock -L${LIVE555_PREFIX}/BasicUsageEnvironment -L${LIVE555_PREFIX}/UsageEnvironment"
1685       ])
1686     ])
1688     dnl CPP Flags
1689     AS_IF([test "${SYS}" = "solaris"], [
1690       CPPFLAGS_live555="${CPPFLAGS_live555} -DSOLARIS"
1691     ])
1692     CPPFLAGS="${CPPFLAGS} ${CPPFLAGS_live555}"
1693     LDFLAGS="${LDFLAGS} ${LDFLAGS_live555}"
1695     dnl version check
1696     AC_CACHE_CHECK([for live555 version 1324598400 or later], [ac_cv_live555], [
1697       AC_PREPROC_IFELSE([AC_LANG_PROGRAM([
1698 [#include <liveMedia_version.hh>
1699 #if !defined (LIVEMEDIA_LIBRARY_VERSION_INT) || (LIVEMEDIA_LIBRARY_VERSION_INT < 1324598400)
1700 # error BOOM
1701 #endif]])
1702       ], [
1703         ac_cv_live555="yes"
1704       ], [
1705         ac_cv_live555="no"
1706       ])
1707     ])
1709     AS_IF([test "$ac_cv_live555" = "no"], [
1710       AC_MSG_WARN([live555 is missing or its installed version is too old:
1711 Version 2011.12.23 or later is required to proceed.
1712 You can get an updated one from http://www.live555.com/liveMedia .])
1713       AS_IF([test -n "${enable_live555}"], [
1714         AC_MSG_ERROR([Update live555 or pass --disable-live555 to disable RTSP input support.])
1715       ])
1716     ], [
1717       other_libs="-lgroupsock -lBasicUsageEnvironment -lUsageEnvironment"
1718       other_libs_pic="-lgroupsock_pic -lBasicUsageEnvironment_pic -lUsageEnvironment_pic"
1719       AS_IF([test "${SYS}" = "mingw32"], [
1720         # add ws2_32 for closesocket, select, recv
1721         other_libs="$other_libs -lws2_32"
1722       ])
1724       dnl We need to check for pic because live555 don't provide shared libs
1725       dnl and we want to build a plugins so we need -fPIC on some arch.
1726       VLC_ADD_CXXFLAGS([live555], [${CPPFLAGS_live555}])
1727       VLC_ADD_LDFLAGS([live555], [${LDFLAGS_live555}])
1728       AC_CHECK_LIB(liveMedia_pic, main, [
1729         VLC_ADD_PLUGIN([live555])
1730         VLC_ADD_LIBS([live555], [-lliveMedia_pic ${other_libs_pic}])
1731       ],[
1732         AC_CHECK_LIB(liveMedia, main, [
1733           VLC_ADD_PLUGIN([live555])
1734           VLC_ADD_LIBS([live555], [-lliveMedia ${other_libs}])
1735         ],[],[${other_libs}])
1736       ],[${other_libs_pic}])
1737     ])
1738     VLC_RESTORE_FLAGS
1739     AC_LANG_POP(C++)
1740   ])
1744 dnl IIDC and DV FireWire input modules
1746 PKG_ENABLE_MODULES_VLC([DC1394], [], [libdc1394-2 >= 2.1.0], [IIDC FireWire input module], [auto])
1747 PKG_ENABLE_MODULES_VLC([DV1394], [], [libraw1394 >= 2.0.1 libavc1394 >= 0.5.3], [DV FireWire input module], [auto])
1750 dnl - linsys modules: access module check for libzvbi
1752 AC_ARG_ENABLE(linsys,
1753   [AS_HELP_STRING([--enable-linsys],
1754     [Linux Linear Systems Ltd. SDI and HD-SDI input cards (default enabled)])])
1755 AS_IF([test "$SYS" = "linux" -a "${enable_linsys}" != "no"], [
1756   VLC_ADD_PLUGIN([linsys_hdsdi])
1757   PKG_CHECK_MODULES(LINSYS_SDI, [zvbi-0.2 >= 0.2.28], [
1758     VLC_ADD_PLUGIN([linsys_sdi])
1759   ], [
1760     AC_MSG_WARN([${LINSYS_SDI_PKG_ERRORS}.])
1761   ])
1765 dnl dvdread module: check for libdvdread
1767 PKG_ENABLE_MODULES_VLC([DVDREAD], [], [dvdread > 4.9.0], [dvdread input module], [auto])
1770 dnl libdvdnav plugin
1772 PKG_ENABLE_MODULES_VLC([DVDNAV], [], [dvdnav > 4.9.0], [DVD with navigation input module (dvdnav)], [auto])
1773 AS_IF([test "${enable_dvdnav}" != "no"], [
1774   AC_MSG_CHECKING(for dvdnav_stream_cb in dvdnav/dvdnav.h)
1775     AC_EGREP_HEADER(dvdnav_stream_cb,dvdnav/dvdnav.h,[
1776       AC_MSG_RESULT(yes)
1777       AC_DEFINE(HAVE_STREAM_CB_IN_DVDNAV_H, 1, For dvdnav demux support)
1778       ],[
1779       AC_MSG_RESULT(no)
1780     ])
1784 dnl  Blu-ray Disc Support with libbluray
1786 PKG_ENABLE_MODULES_VLC([BLURAY], [libbluray], [libbluray >= 0.6.2], (libbluray for Blu-ray disc support ) )
1789 dnl  OpenCV wrapper and example filters
1791 PKG_ENABLE_MODULES_VLC([OPENCV], [opencv_example opencv_wrapper], [opencv > 2.0], (OpenCV (computer vision) filter), [auto])
1795 dnl  libsmbclient plugin
1797 PKG_ENABLE_MODULES_VLC([SMBCLIENT], [smb], [smbclient], (SMB/CIFS support), [auto])
1798 AS_IF([test "${SYS}" = "mingw32" -a "${enable_winstore_app}" != "yes"], [ VLC_ADD_PLUGIN([smb]) ])
1801 dnl  liBDSM access module
1803 PKG_ENABLE_MODULES_VLC([DSM], [dsm], [libdsm >= 0.2.0], [libdsm SMB/CIFS access/sd module], [auto])
1806 dnl sftp access support
1808 PKG_ENABLE_MODULES_VLC([SFTP], [sftp], [libssh2], (support SFTP file transfer via libssh2), [auto])
1811 dnl nfs access support
1813 PKG_ENABLE_MODULES_VLC([NFS], [nfs], [libnfs >= 1.10.0], (support nfs protocol via libnfs), [auto])
1816 dnl  Video4Linux 2
1818 AC_ARG_ENABLE(v4l2, [AS_HELP_STRING([--disable-v4l2],
1819   [disable Video4Linux version 2 (default auto)])])
1820 have_v4l2="no"
1821 AS_IF([test "$enable_v4l2" != "no"], [
1822   AC_CHECK_HEADERS([linux/videodev2.h sys/videoio.h], [
1823     have_v4l2="yes"
1824   ])
1826 AM_CONDITIONAL(HAVE_V4L2, [test "${have_v4l2}" != "no"])
1829 dnl special access module for Blackmagic SDI cards
1831 AC_ARG_ENABLE(decklink,
1832   [AS_HELP_STRING([--disable-decklink],
1833     [disable Blackmagic DeckLink SDI input (default auto)])])
1834 AC_ARG_WITH(decklink_sdk,
1835   [AS_HELP_STRING[--with-decklink-sdk=DIR],
1836     [                        location of Blackmagic DeckLink SDI SDK])])
1837 have_decklink=no
1838 if test "${enable_decklink}" != "no"
1839 then
1840   if test "${with_decklink_sdk}" != "no" -a -n "${with_decklink_sdk}"
1841   then
1842     VLC_ADD_CPPFLAGS([decklink decklinkoutput],[-I${with_decklink_sdk}/include])
1843   fi
1844   VLC_SAVE_FLAGS
1845   CPPFLAGS="${CPPFLAGS} ${CPPFLAGS_decklink}"
1846   AC_LANG_PUSH(C++)
1847   AC_CHECK_HEADERS(DeckLinkAPIDispatch.cpp, [
1848       have_decklink=yes
1849   ], [
1850       AC_MSG_WARN(Blackmagic DeckLink SDI include files not found, decklink disabled)
1851   ])
1852   AC_LANG_POP(C++)
1853   VLC_RESTORE_FLAGS
1855 AM_CONDITIONAL(HAVE_DECKLINK, [ test "${have_decklink}" != "no" ])
1859 dnl  Built-in CD-DA and VCD module
1861 AC_ARG_ENABLE(vcd,
1862   [AS_HELP_STRING([--disable-vcd],
1863     [disable built-in VCD and CD-DA support (default enabled)])])
1865 AC_ARG_ENABLE(libcddb,
1866   [AS_HELP_STRING([--disable-libcddb],
1867     [disable CDDB for Audio CD (default enabled)])])
1869 if test "${enable_vcd}" != "no"
1870 then
1871   AC_MSG_CHECKING(for cdrom_msf0 in linux/cdrom.h)
1872   AC_EGREP_HEADER(cdrom_msf0,linux/cdrom.h,[
1873     AC_MSG_RESULT(yes)
1874     VLC_ADD_PLUGIN([vcd cdda])
1875   ],[
1876     AC_MSG_RESULT(no)
1877   ])
1879   AC_MSG_CHECKING(for scsireq in sys/scsiio.h)
1880   AC_EGREP_HEADER(scsireq,sys/scsiio.h,[
1881     AC_MSG_RESULT(yes)
1882     VLC_ADD_PLUGIN([vcd cdda])
1883     AC_DEFINE(HAVE_SCSIREQ_IN_SYS_SCSIIO_H, 1, For NetBSD VCD support)
1884   ],[
1885     AC_MSG_RESULT(no)
1886   ])
1888   AC_MSG_CHECKING(for ioc_toc_header in sys/cdio.h)
1889   AC_EGREP_HEADER(ioc_toc_header ,sys/cdio.h,[
1890     AC_MSG_RESULT(yes)
1891     VLC_ADD_PLUGIN([vcd cdda])
1892     AC_DEFINE(HAVE_IOC_TOC_HEADER_IN_SYS_CDIO_H, 1, For FreeBSD VCD support)
1893   ],[
1894     AC_MSG_RESULT(no)
1895   ])
1897   if test "${SYS}" = "bsdi" -o "${SYS}" = "mingw32" -o "${SYS}" = "os2" -o "${SYS}" = "darwin"
1898   then
1899     VLC_ADD_PLUGIN([vcd cdda])
1900   fi
1902   if test "$enable_libcddb" != "no"; then
1903     PKG_CHECK_MODULES(LIBCDDB, [libcddb >= 0.9.5], [
1904       HAVE_LIBCDDB=yes
1905       AC_DEFINE(HAVE_LIBCDDB, 1, [Define this if you have libcddb installed])
1906       VLC_ADD_LIBS([cdda],[$LIBCDDB_LIBS])
1907       VLC_ADD_CFLAGS([cdda],[$LIBCDDB_CFLAGS])
1908       ],:
1909       [AC_MSG_WARN([${LIBCDDB_PKG_ERRORS}: CDDB access disabled.])
1910       HAVE_LIBCDDB=no])
1911   fi
1915 dnl Linux DVB
1917 AC_CACHE_CHECK([for Linux DVB version 5.1], [ac_cv_linux_dvb_5_1], [
1918   AC_PREPROC_IFELSE([AC_LANG_PROGRAM([
1919 [#include <linux/dvb/version.h>
1920 #if (DVB_API_VERSION < 5)
1921 # error Linux DVB API v3.2 and older are not supported.
1922 #endif
1923 #if (DVB_API_VERSION == 5 && DVB_API_VERSION_MINOR < 1)
1924 # error Linux DVB API v5.0 is unsupported. Please update.
1925 #endif
1926 ]])], [
1927   ac_cv_linux_dvb_5_1=yes
1928 ], [
1929   ac_cv_linux_dvb_5_1=no
1930 ])])
1931 AM_CONDITIONAL([HAVE_LINUX_DVB], [test "$ac_cv_linux_dvb_5_1" = "yes"])
1934 dnl  Screen capture module
1936 AC_ARG_ENABLE(screen,
1937   [AS_HELP_STRING([--enable-screen],
1938     [disable screen capture (default enabled)])])
1939 if test "${enable_screen}" != "no"; then
1940   if test "${SYS}" = "darwin"; then
1941     AC_CHECK_HEADERS(ApplicationServices/ApplicationServices.h, [
1942       VLC_ADD_PLUGIN([screen])
1943     ])
1944   fi
1946 AM_CONDITIONAL(HAVE_MAC_SCREEN, [test "${SYS}" = "darwin" -a "x${enable_screen}" != "xno"])
1949 dnl  VNC/RFB access module
1951 PKG_ENABLE_MODULES_VLC([VNC], [vnc], [libvncclient >= 0.9.9], (VNC/rfb client support), [auto])
1953 dnl  RDP/Remote Desktop access module
1955 PKG_ENABLE_MODULES_VLC([FREERDP], [rdp], [freerdp >= 1.0.1], (RDP/Remote Desktop client support) )
1958 dnl  Real RTSP plugin
1960 AC_ARG_ENABLE(realrtsp,
1961   [  --enable-realrtsp       Real RTSP module (default disabled)])
1962 if test "${enable_realrtsp}" = "yes"; then
1963   VLC_ADD_PLUGIN([access_realrtsp])
1967 dnl QTKit
1968 AC_ARG_ENABLE(macosx-qtkit,
1969   [  --enable-macosx-qtkit Mac OS X qtsound (audio) module (default enabled on Mac OS X <= v10.11)])
1970 if test "x${enable_macosx_qtkit}" != "xno" &&
1971   (test "${SYS}" = "darwin" || test "${enable_macosx_qtkit}" = "yes")
1972 then
1973   AC_CHECK_HEADERS(QTKit/QTKit.h, [
1974       VLC_ADD_PLUGIN([qtsound])
1975     ])
1979 dnl AVFoundation
1980 AC_SUBST(have_avfoundation, ["no"])
1981 AC_ARG_ENABLE(macosx-avfoundation,
1982   [  --enable-macosx-avfoundation Mac OS X avcapture (video) module (default enabled on Mac OS X)])
1983 if test "x${enable_macosx_avfoundation}" != "xno" &&
1984   (test "${SYS}" = "darwin" || test "${enable_macosx_avfoundation}" = "yes")
1985 then
1986   SAVED_LIBS="${LIBS}"
1987   LIBS="-framework AVFoundation"
1988   AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [])],[have_avfoundation=yes],[have_avfoundation=no])
1989   LIBS="${SAVED_LIBS}"
1990   if test "${have_avfoundation}" != "no"
1991   then
1992     VLC_ADD_PLUGIN([avcapture])
1993   fi
1995 AM_CONDITIONAL(HAVE_AVFOUNDATION, [test "${have_avfoundation}" != "no"])
1998 dnl  DCP plugin (using asdcplib)
2000 PKG_WITH_MODULES([ASDCP], [asdcplib], [have_asdcp="yes"])
2001 AM_CONDITIONAL(HAVE_ASDCP, [test "${have_asdcp}" = "yes"])
2004 dnl  Demux plugins
2007 EXTEND_HELP_STRING([Mux/Demux plugins:])
2010 dnl  libdvbpsi check for ts mux/demux
2012 have_dvbpsi="no"
2013 PKG_WITH_MODULES([DVBPSI], [libdvbpsi >= 1.2.0], [have_dvbpsi="yes"])
2014 AM_CONDITIONAL(HAVE_DVBPSI, [test "${have_dvbpsi}" = "yes"])
2018 dnl  GME demux plugin
2020 AC_ARG_ENABLE(gme,
2021   [AS_HELP_STRING([--enable-gme],
2022     [use Game Music Emu (default auto)])])
2023 AS_IF([test "${enable_gme}" != "no"], [
2024   AC_CHECK_HEADER([gme/gme.h], [
2025     VLC_ADD_LIBS([gme], [-lgme])
2026     VLC_ADD_PLUGIN([gme])
2027   ], [
2028     AS_IF([test "x${enable_gme}" != "x"], [
2029       AC_MSG_ERROR([GME cannot be found. Please install the development files.])
2030     ])
2031   ])
2036 dnl  SIDPlay plugin
2038 AC_ARG_ENABLE(sid,
2039     [AS_HELP_STRING([--enable-sid],[C64 sid demux support (default auto)])])
2040 AS_IF([test "${enable_sid}" != "no"], [
2041     PKG_CHECK_MODULES(SID, [libsidplay2], [
2042         AC_LANG_PUSH(C++)
2043         oldCPPFLAGS="$CPPFLAGS"
2044         CPPFLAGS="$CPPFLAGS $SID_CFLAGS"
2045         AC_CHECK_HEADER([sidplay/builders/resid.h], [
2046             VLC_ADD_PLUGIN([sid])
2047             VLC_ADD_CFLAGS([sid], [$SID_CFLAGS])
2048             VLC_ADD_LIBS([sid], [$SID_LIBS] [-lresid-builder])
2049         ], [
2050             AS_IF([test -n "${enable_sid}"],
2051                 [AC_MSG_ERROR([${SID_PKG_ERRORS} (required for sid).])],
2052                 [AC_MSG_WARN([${SID_PKG_ERRORS} (required for sid).])]
2053                 )
2054         ])
2055         CPPFLAGS="$oldCPPFLAGS"
2056         AC_LANG_POP(C++)
2057     ], [
2058         AS_IF([test "x${enable_sid}" = "xyes"],
2059             [AC_MSG_ERROR([${SID_PKG_ERRORS} (required for sid).])],
2060             [AC_MSG_WARN([${SID_PKG_ERRORS} (required for sid).])]
2061             )
2062     ])
2067 dnl  ogg demux plugin
2069 PKG_ENABLE_MODULES_VLC([OGG], [mux_ogg], [ogg >= 1.0], [Ogg demux support], [auto])
2070 PKG_CHECK_MODULES(LIBVORBIS, [vorbis >= 1.1], [
2071     AC_DEFINE(HAVE_LIBVORBIS, 1, [Define to 1 if you have the libvorbis])
2072 ],[true])
2073 PKG_ENABLE_MODULES_VLC([OGG], [], [ogg >= 1.0], [Ogg demux support], [auto], [${LIBVORBIS_CFLAGS}], [${LIBVORBIS_LIBS}])
2074 if test "${enable_sout}" != "no"; then
2075 dnl Check for libshout
2076     PKG_ENABLE_MODULES_VLC([SHOUT], [access_output_shout], [shout >= 2.1], [libshout output plugin], [auto])
2080 dnl  matroska demux plugin
2082 PKG_ENABLE_MODULES_VLC([MATROSKA], [mkv], [libebml libmatroska], [MKV format support], [auto])
2085 dnl  modplug demux plugin
2087 AC_ARG_ENABLE(mod,
2088   [AS_HELP_STRING([--disable-mod],
2089     [do not use libmodplug (default auto)])])
2090 if test "${enable_mod}" != "no" ; then
2091     PKG_CHECK_MODULES(LIBMODPLUG, [libmodplug >= 0.8.4 libmodplug != 0.8.8], [
2092           VLC_ADD_PLUGIN([mod])
2093           VLC_ADD_CXXFLAGS([mod],[$LIBMODPLUG_CFLAGS])
2094           VLC_ADD_CFLAGS([mod],[$LIBMODPLUG_CFLAGS]) #modules/demux/mod.c needs CFLAGS_mod, not CXXFLAGS_mod
2095           VLC_ADD_LIBS([mod],[$LIBMODPLUG_LIBS])
2096     ],[
2097        AS_IF([test -n "${enable_mod}"],
2098          [AC_MSG_ERROR([${LIBMODPLUG_PKG_ERRORS}.])],
2099          [AC_MSG_WARN([${LIBMODPLUG_PKG_ERRORS}.])])
2100     ])
2104 dnl  mpc demux plugin
2106 AC_ARG_ENABLE(mpc,
2107   [AS_HELP_STRING([--disable-mpc], [do not use libmpcdec (default auto)])])
2108 if test "${enable_mpc}" != "no"
2109 then
2110   AC_CHECK_HEADERS([mpc/mpcdec.h], [
2111     VLC_ADD_PLUGIN([mpc])
2112     VLC_ADD_LIBS([mpc],[-lmpcdec])],
2113     [AC_CHECK_HEADERS([mpcdec/mpcdec.h], [
2114     VLC_ADD_PLUGIN([mpc])
2115     VLC_ADD_LIBS([mpc],[-lmpcdec])])])
2119 dnl  Codec plugins
2122 EXTEND_HELP_STRING([Codec plugins:])
2125 dnl wmafixed plugin
2127 AC_ARG_ENABLE(wma-fixed,
2128   [  --enable-wma-fixed      libwma-fixed module (default disabled)])
2129 if test "${enable_wma_fixed}" = "yes"
2130 then
2131   VLC_ADD_PLUGIN([wma_fixed])
2135 dnl shine encoder plugin
2137 PKG_ENABLE_MODULES_VLC([SHINE], [], [shine >= 3.0.0], [MPEG Audio Layer 3 encoder], [auto], [], [], [])
2141 dnl openmax il codec plugin
2143 AC_ARG_ENABLE(omxil,
2144   [  --enable-omxil          openmax il codec module (default disabled)])
2145 if test "${enable_omxil}" = "yes"
2146 then
2147   VLC_ADD_PLUGIN([omxil])
2151 dnl openmax il vout plugin
2153 AC_ARG_ENABLE(omxil-vout,
2154   [  --enable-omxil-vout     openmax il video output module (default disabled)])
2155 if test "${enable_omxil_vout}" = "yes"
2156 then
2157   VLC_ADD_PLUGIN([omxil_vout])
2161 dnl raspberry pi openmax il configuration
2163 AC_ARG_ENABLE(rpi-omxil,
2164   [  --enable-rpi-omxil     openmax il configured for raspberry pi (default disabled)])
2165 if test "${enable_rpi_omxil}" = "yes"
2166 then
2167   VLC_ADD_PLUGIN([omxil omxil_vout])
2168   VLC_ADD_CFLAGS([omxil omxil_vout],[-DRPI_OMX])
2172 dnl CrystalHD codec plugin
2174 AC_ARG_ENABLE(crystalhd,
2175   [  --enable-crystalhd      crystalhd codec plugin (default auto)])
2176 if test "${enable_crystalhd}" != "no"; then
2177     AC_CHECK_HEADER(libcrystalhd/libcrystalhd_if.h, [
2178       VLC_ADD_PLUGIN([crystalhd])
2179       VLC_ADD_LIBS([crystalhd], [-lcrystalhd])
2180     ],[
2181       if test "${SYS}" = "mingw32" ; then
2182         AC_CHECK_HEADERS(libcrystalhd/bc_dts_defs.h, [
2183           VLC_ADD_PLUGIN([crystalhd])
2184           AC_CHECK_HEADERS(libcrystalhd/bc_drv_if.h, [
2185             VLC_ADD_LIBS([crystalhd], [-lbcmDIL])
2186             ])
2187         ],[
2188           AS_IF([test x"${enable_crystalhd}" = "xyes"],
2189                 [AC_MSG_ERROR("Could not find CrystalHD development headers")],
2190                 [AC_MSG_WARN("Could not find CrystalHD development headers")])
2191         ],[#define __LINUX_USER__
2192                #include <libcrystalhd/bc_dts_types.h>
2193         ])
2194       fi
2195     ],[
2196        #include <libcrystalhd/bc_dts_types.h>
2197       ])
2201 dnl  mad plugin
2203 have_mad="no"
2204 MAD_CFLAGS=""
2205 MAD_LIBS=""
2207 AC_ARG_WITH(mad, [  --with-mad=PATH         path to libmad], [
2208   enable_mad="yes"
2209 ], [
2210   with_mad="no"
2212 AS_IF([test "${with_mad}" != "no"], [
2213   MAD_CFLAGS="-I${with_mad}/include"
2214   MAD_LIBS="-L${with_mad}/lib"
2217 AC_ARG_ENABLE(mad,
2218   [  --enable-mad            libmad module (default enabled)])
2219 AS_IF([test "${enable_mad}" != "no"], [
2220   VLC_SAVE_FLAGS
2221   CPPFLAGS="${CPPFLAGS} ${MAD_CFLAGS}"
2222   LDFLAGS="${LDFLAGS} ${MAD_LIBS}"
2223   AC_CHECK_HEADERS(mad.h, [
2224     AC_CHECK_LIB(mad, mad_bit_init, [
2225       have_mad="yes"
2226       MAD_LIBS="${MAD_LIBS} -lmad"
2227     ])
2228   ])
2229   VLC_RESTORE_FLAGS
2230   AS_IF([test -n "$enable_mad" -a "${have_mad}" = "no"], [
2231     AC_MSG_ERROR([Could not find libmad. Install it or pass --disable-mad to disable it.])
2232   ])
2234 AC_SUBST(MAD_CFLAGS)
2235 AC_SUBST(MAD_LIBS)
2236 AM_CONDITIONAL([HAVE_MAD], [test "${have_mad}" = "yes"])
2238 dnl  mpg123 plugin
2241 PKG_ENABLE_MODULES_VLC([MPG123], [mpg123], [libmpg123], [libmpg123 decoder support], [auto])
2244 dnl gstreamer stuff
2246 AC_ARG_ENABLE(gst-decode,
2247   [  --enable-gst-decode     GStreamer based decoding support (currently supports only video decoding) (default auto)])
2249 have_gst_decode="no"
2250 AS_IF([test "${enable_gst_decode}" != "no"], [
2251   PKG_CHECK_MODULES([GST_APP], [gstreamer-app-1.0], [
2252     PKG_CHECK_MODULES([GST_VIDEO], [gstreamer-video-1.0], [
2253       have_gst_decode="yes"
2254     ], [
2255       AC_MSG_WARN([${GST_VIDEO_PKG_ERRORS}. GStreamer decoder module will not be built.])
2256     ])
2257   ], [
2258     AC_MSG_WARN([${GST_APP_PKG_ERRORS}. GStreamer modules will not be built.])
2259   ])
2261 AM_CONDITIONAL([HAVE_GST_DECODE], [test "${have_gst_decode}" = "yes"])
2264 dnl  avcodec decoder/encoder plugin
2266 AC_ARG_ENABLE(merge-ffmpeg,
2267 [  --enable-merge-ffmpeg   merge FFmpeg-based plugins (default disabled)],, [
2268   enable_merge_ffmpeg="no"
2270 AM_CONDITIONAL([MERGE_FFMPEG], [test "$enable_merge_ffmpeg" != "no"])
2272 AC_MSG_CHECKING([for libavutil variant])
2273 PKG_CHECK_EXISTS([libavutil], [
2274   libavutil_version="$(${PKG_CONFIG} --modversion libavutil)"
2275   libavutil_micro="${libavutil_version##*.}"
2276   AS_IF([test ${libavutil_micro} -le 99], [
2277     avfork="libav"
2278   ], [
2279     avfork="ffmpeg"
2280   ])
2281 ], [
2282   avfork="none"
2284 AC_MSG_RESULT([${avfork}])
2286 AC_ARG_ENABLE(avcodec,
2287 [  --enable-avcodec        libavcodec codec (default enabled)])
2288 AS_IF([test "${enable_avcodec}" != "no"], [
2289   dnl We need >=57.16.0 from libav or >=57.37.100 from ffmpeg
2290   case "${avfork}" in
2291     libav) av_codec_ver="57.16.0" ;;
2292     ffmpeg) av_codec_ver="57.37.100" ;;
2293     *) AC_MSG_ERROR([Missing libav or FFmpeg])
2294   esac
2295   PKG_CHECK_MODULES(AVCODEC,[libavcodec >= ${av_codec_ver} libavutil >= 52.0.0], [
2296     VLC_SAVE_FLAGS
2297     CPPFLAGS="${CPPFLAGS} ${AVCODEC_CFLAGS}"
2298     CFLAGS="${CFLAGS} ${AVCODEC_CFLAGS}"
2299     AC_CHECK_HEADERS(libavcodec/avcodec.h)
2300     AC_CHECK_HEADERS(libavutil/avutil.h)
2301     VLC_RESTORE_FLAGS
2302     have_avcodec="yes"
2303   ],[
2304     AC_MSG_ERROR([${AVCODEC_PKG_ERRORS}. Pass --disable-avcodec to ignore this error.])
2305   ])
2306 ], [
2307   have_avcodec="no"
2309 AM_CONDITIONAL([HAVE_AVCODEC], [test "${have_avcodec}" != "no"])
2312 dnl libva needs avcodec
2314 AC_ARG_ENABLE(libva,
2315   [  --enable-libva          VAAPI GPU decoding support (libVA) (default auto)])
2317 AS_IF([test "${enable_libva}" = "yes" -a "${have_avcodec}" != "yes" ], [
2318   AC_MSG_ERROR([--enable-libva and --disable-avcodec options are mutually exclusive. Use --enable-avcodec.])
2321 have_vaapi="no"
2322 have_vaapi_drm="no"
2323 have_vaapi_x11="no"
2324 AS_IF([test "${enable_libva}" != "no"], [
2325   PKG_CHECK_MODULES([LIBVA], [libva >= 0.38], [
2326     have_vaapi="yes"
2327   ], [
2328     AS_IF([test -n "${enable_libva}"], [
2329       AC_MSG_ERROR([${LIBVA_PKG_ERRORS}.])
2330     ], [
2331       AC_MSG_WARN([${LIBVA_PKG_ERRORS}.])
2332     ])
2333   ])
2334   PKG_CHECK_MODULES([LIBVA_DRM], [libva-drm], [
2335     have_vaapi_drm="yes"
2336   ], [
2337     AC_MSG_WARN([${LIBVA_DRM_PKG_ERRORS}.])
2338   ])
2339   PKG_CHECK_MODULES(LIBVA_X11, [libva-x11], [
2340     have_vaapi_x11="yes"
2341   ], [
2342     AC_MSG_WARN([${LIBVA_X11_PKG_ERRORS}.])
2343   ])
2345 AM_CONDITIONAL([HAVE_VAAPI_DRM], [test "${have_vaapi_drm}" = "yes"])
2346 AM_CONDITIONAL([HAVE_VAAPI_X11], [test "${have_vaapi_x11}" = "yes"])
2348 have_avcodec_vaapi="no"
2349 AS_IF([test "${have_vaapi}" = "yes" -a "${have_avcodec}" = "yes"], [
2350   VLC_SAVE_FLAGS
2351   CPPFLAGS="${CPPFLAGS} ${AVCODEC_CFLAGS}"
2352   CFLAGS="${CFLAGS} ${AVCODEC_CFLAGS}"
2353   AC_CHECK_HEADERS([libavcodec/vaapi.h], [
2354     AC_MSG_NOTICE([VA API acceleration activated])
2355     have_avcodec_vaapi="yes"
2356   ],[
2357     AS_IF([test -n "${enable_libva}"], [
2358       AC_MSG_ERROR([libva is present but libavcodec/vaapi.h is missing])
2359     ], [
2360       AC_MSG_WARN([libva is present but libavcodec/vaapi.h is missing ])
2361     ])
2362   ])
2363   VLC_RESTORE_FLAGS
2365 AM_CONDITIONAL([HAVE_AVCODEC_VAAPI], [test "${have_avcodec_vaapi}" = "yes"])
2368 dnl dxva2 needs avcodec
2370 AC_ARG_ENABLE(dxva2,
2371   [  --enable-dxva2          DxVA2 GPU decoding support (default auto)])
2373 have_avcodec_dxva2="no"
2374 AS_IF([test "${enable_dxva2}" != "no"], [
2375   if test "${SYS}" = "mingw32"; then
2376   AS_IF([test "x${have_avcodec}" = "xyes"], [
2377     AC_CHECK_HEADERS(dxva2api.h,
2378       [
2379         AC_CHECK_HEADERS(libavcodec/dxva2.h, [
2380            AC_MSG_NOTICE([DxVA2 acceleration activated])
2381            have_avcodec_dxva2="yes"
2382         ],[
2383     AS_IF([test "${enable_dxva2}" = "yes"],
2384           [AC_MSG_ERROR([dxva2 is present but libavcodec/dxva2.h is missing])],
2385               [AC_MSG_WARN([dxva2 is present but libavcodec/dxva2.h is missing ])])
2386         ], [#undef _WIN32_WINNT
2387             /* DXVA2 is only available in Vista and above */
2388             #define _WIN32_WINNT 0x600])
2389       ],[
2390     AS_IF([test "${enable_dxva2}" = "yes"],
2391               [AC_MSG_ERROR([Could not find required dxva2api.h])],
2392               [AC_MSG_WARN([dxva2api.h not found])])
2393       ],[#include <d3d9.h>])
2394   ],[
2395     AS_IF([test "x${enable_dxva2}" != "x"], [
2396       AC_MSG_ERROR([--enable-dxva2 and --disable-avcodec options are mutually exclusive.])
2397     ])
2398   ])
2399   fi
2401 AM_CONDITIONAL([HAVE_AVCODEC_DXVA2], [test "${have_avcodec_dxva2}" = "yes"])
2404 dnl d3d11va needs avcodec
2406 AC_ARG_ENABLE(d3d11va,
2407   [  --enable-d3d11va          D3D11 GPU decoding support (default auto)])
2409 have_avcodec_d3d11va="no"
2410 AS_IF([test "${enable_d3d11va}" != "no"], [
2411   if test "${SYS}" = "mingw32"; then
2412   AS_IF([test "x${have_avcodec}" = "xyes"], [
2413         AC_CHECK_TYPES([ID3D11VideoDecoder],
2414           [
2415             AC_CHECK_HEADERS(dxva2api.h,
2416               [
2417                 AC_CHECK_HEADERS(libavcodec/d3d11va.h, [
2418                    AC_MSG_NOTICE([D3D11 acceleration activated])
2419                    AC_DEFINE(HAVE_AVCODEC_D3D11VA, 1, [Define if the d3d11va module is built])
2420                    have_avcodec_d3d11va="yes"
2421                 ],[
2422                   AS_IF([test "${enable_d3d11va}" = "yes"],
2423                     [AC_MSG_ERROR([d3d11va is present but libavcodec/d3d11va.h is missing])],
2424                         [AC_MSG_WARN([d3d11va is present but libavcodec/d3d11va.h is missing ])])
2425                   ], [#undef _WIN32_WINNT
2426                       /* D3D11 is only available in Vista and above */
2427                       #define _WIN32_WINNT 0x600])
2428                   ],[
2429                     AS_IF([test "${enable_d3d11va}" = "yes"],
2430                           [AC_MSG_ERROR([Could not find required dxva2api.h])],
2431                           [AC_MSG_WARN([dxva2api.h not found])])
2432                   ],[#include <d3d9.h>])
2433           ],[
2434             AS_IF([test "${enable_d3d11va}" = "yes"],
2435                   [AC_MSG_ERROR([Could not find required ID3D11VideoDecoder in d3d11.h])],
2436                   [AC_MSG_WARN([ID3D11VideoDecoder not found])])
2437           ], [#include <d3d11.h>])
2438   ],[
2439     AS_IF([test "x${enable_d3d11va}" != "x"], [
2440       AC_MSG_ERROR([--enable-d3d11va and --disable-avcodec options are mutually exclusive.])
2441     ])
2442   ])
2443   fi
2445 AM_CONDITIONAL([HAVE_AVCODEC_D3D11VA], [test "${have_avcodec_d3d11va}" = "yes"])
2448 dnl DXGI debug
2450 AC_CHECK_HEADERS(dxgidebug.h)
2453 dnl  avformat demuxer/muxer plugin
2456 AC_ARG_ENABLE(avformat,
2457 [  --enable-avformat       libavformat containers (default enabled)],, [
2458   enable_avformat="${have_avcodec}"
2460 have_avformat="no"
2461 AS_IF([test "${enable_avformat}" != "no"], [
2462   PKG_CHECK_MODULES(AVFORMAT,[libavformat >= 53.21.0 libavcodec libavutil], [
2463       have_avformat="yes"
2464       VLC_SAVE_FLAGS
2465       CPPFLAGS="${CPPFLAGS} ${AVFORMAT_CFLAGS}"
2466       CFLAGS="${CFLAGS} ${AVFORMAT_CFLAGS}"
2467       AC_CHECK_HEADERS(libavformat/avformat.h libavformat/avio.h)
2468       AC_CHECK_HEADERS(libavcodec/avcodec.h)
2469       AC_CHECK_HEADERS(libavutil/avutil.h)
2470       AS_IF([test "$enable_merge_ffmpeg" = "no"], [
2471         have_avformat="no"
2472       ])
2473       VLC_RESTORE_FLAGS
2474     ],[
2475       AC_MSG_ERROR([${AVFORMAT_PKG_ERRORS}. Pass --disable-avformat to ignore this error.])
2476   ])
2478 AM_CONDITIONAL([HAVE_AVFORMAT], [test "${enable_avformat}" != "no"])
2481 dnl  swscale image scaling and conversion plugin
2484 AC_ARG_ENABLE(swscale,
2485   AS_HELP_STRING([--enable-swscale],[libswscale image scaling and conversion
2486           (default enabled)]))
2487 if test "${enable_swscale}" != "no"
2488 then
2489   PKG_CHECK_MODULES(SWSCALE,[libswscale],
2490     [
2491       VLC_SAVE_FLAGS
2492       CPPFLAGS="${CPPFLAGS} ${SWSCALE_CFLAGS}"
2493       CFLAGS="${CFLAGS} ${SWSCALE_CFLAGS}"
2494       AC_CHECK_HEADERS(libswscale/swscale.h)
2495       AC_CHECK_HEADERS(libavutil/avutil.h)
2496       VLC_ADD_PLUGIN([swscale])
2497       VLC_ADD_LIBS([swscale],[$SWSCALE_LIBS])
2498       VLC_ADD_CFLAGS([swscale],[$SWSCALE_CFLAGS])
2499       AS_IF([test -n "${ac_cv_ld_bsymbolic}"], [
2500         VLC_ADD_LIBS([swscale],[${ac_cv_ld_bsymbolic}])
2501       ])
2502       VLC_RESTORE_FLAGS
2503     ],[
2504       AC_MSG_ERROR([${SWSCALE_PKG_ERRORS}. Pass --disable-swscale to ignore this error. Proper software scaling and some video chroma conversion will be missing.])
2505   ])
2509 dnl  postproc plugin
2512 AC_ARG_ENABLE(postproc,
2513 [  --enable-postproc       libpostproc image post-processing (default auto)])
2514 if test "${enable_postproc}" != "no"
2515 then
2516   PKG_CHECK_MODULES(POSTPROC,[libpostproc libavutil],
2517     [
2518       VLC_SAVE_FLAGS
2519       CPPFLAGS="${CPPFLAGS} ${POSTPROC_CFLAGS}"
2520       CFLAGS="${CFLAGS} ${POSTPROC_CFLAGS}"
2521       AC_CHECK_HEADERS(postproc/postprocess.h)
2522       VLC_ADD_PLUGIN([postproc])
2523       VLC_RESTORE_FLAGS
2524     ],[
2525       AC_MSG_WARN([${POSTPROC_PKG_ERRORS}.])
2526   ])
2530 dnl  faad decoder plugin
2532 AC_ARG_ENABLE(faad,
2533 [  --enable-faad           faad codec (default auto)])
2534 have_faad="no"
2535 AS_IF([test "${enable_faad}" != "no"], [
2536   AC_CHECK_HEADERS([neaacdec.h], [
2537     AC_CHECK_LIB(faad, NeAACDecOpen, [have_faad="yes"],, [$LIBM])
2539     AS_IF([test "${have_faad}" = "yes"], [
2540       VLC_ADD_PLUGIN([faad])
2541       VLC_ADD_LIBS([faad],[-lfaad])
2542     ], [
2543       AS_IF([test "${enable_faad}" = "yes"], [
2544         AC_MSG_ERROR([cannot find FAAD library])
2545       ], [
2546         AC_MSG_WARN([cannot find FAAD library])
2547       ])
2548     ])
2549   ])
2553 dnl  AOM decoder plugin
2555 PKG_ENABLE_MODULES_VLC([AOM], [], [aom], [experimental AV1 codec], [disabled])
2558 dnl libvpx decoder plugin
2560 AC_ARG_ENABLE(vpx,
2561     AS_HELP_STRING([--enable-vpx],[libvpx VP8/VP9 encoder and decoder (default auto)]))
2562 AS_IF([test "${enable_vpx}" != "no"],[
2563     PKG_CHECK_MODULES([VPX], [vpx >= 1.5.0], [
2564         VLC_ADD_PLUGIN([vpx])
2565         VLC_ADD_CPPFLAGS([vpx], [${VPX_CFLAGS}])
2566         VLC_ADD_LIBS([vpx], [${VPX_LIBS}])
2567         AC_CHECK_LIB([vpx],[vpx_codec_vp8_dx], [
2568             VLC_ADD_CPPFLAGS([vpx], [-DENABLE_VP8_DECODER])
2569         ], [], [${VPX_LIBS}])
2570         AC_CHECK_LIB([vpx],[vpx_codec_vp9_dx], [
2571             VLC_ADD_CPPFLAGS([vpx], [-DENABLE_VP9_DECODER])
2572         ], [], [${VPX_LIBS}])
2573         AC_CHECK_LIB([vpx],[vpx_codec_vp8_cx], [
2574             VLC_ADD_CPPFLAGS([vpx], [-DENABLE_VP8_ENCODER])
2575         ], [], [${VPX_LIBS}])
2576         AC_CHECK_LIB([vpx],[vpx_codec_vp9_cx], [
2577             VLC_ADD_CPPFLAGS([vpx], [-DENABLE_VP9_ENCODER])
2578         ], [], [${VPX_LIBS}])
2579     ], [
2580     AS_IF([test "${enable_vpx}" = "yes"],[
2581         AC_MSG_ERROR([libvpx 1.5.0 or higher was not found])
2582     ])])
2586 dnl twolame encoder plugin
2588 PKG_ENABLE_MODULES_VLC([TWOLAME], [], [twolame], [MPEG Audio Layer 2 encoder], [auto], [], [], [ -DLIBTWOLAME_STATIC])
2591 dnl fdk-aac encoder plugin
2593 PKG_ENABLE_MODULES_VLC([FDKAAC], [], [fdk-aac], [FDK-AAC encoder], [disabled])
2597 dnl A52/AC3 decoder plugin
2599 AC_ARG_ENABLE(a52,
2600   [  --enable-a52            A/52 support with liba52 (default enabled)])
2601 if test "${enable_a52}" != "no"
2602 then
2603   AC_ARG_WITH(a52,
2604     [  --with-a52=PATH         a52 headers and libraries])
2605     if test -z "${with_a52}"
2606     then
2607       LDFLAGS_test=""
2608       CPPFLAGS_test=""
2609     else
2610       LDFLAGS_test="-L${with_a52}/lib"
2611       CPPFLAGS_test="-I${with_a52}/include"
2612     fi
2613     VLC_SAVE_FLAGS
2614     CPPFLAGS="${CPPFLAGS} ${CPPFLAGS_test} ${CPPFLAGS_a52}"
2615     LDFLAGS="${LDFLAGS} ${LDFLAGS_test} ${LIBS_a52}"
2616     AC_CHECK_HEADERS(a52dec/a52.h, [
2617       AC_CHECK_LIB(a52, a52_free, [
2618         VLC_ADD_PLUGIN([a52])
2619         VLC_ADD_LIBS([a52],[${LDFLAGS_test} -la52 $LIBM])
2620         VLC_ADD_CPPFLAGS([a52],[${CPPFLAGS_test}])
2621       ],[
2622         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.])
2623         ], [$LIBM])
2624     ],[
2625       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.])
2626     ])
2627     VLC_RESTORE_FLAGS
2631 dnl DTS Coherent Acoustics decoder plugin
2633 PKG_ENABLE_MODULES_VLC([DCA], [dca], [libdca >= 0.0.5], [DTS Coherent Acoustics support with libdca], [auto])
2636 dnl  Flac plugin
2638 PKG_ENABLE_MODULES_VLC([FLAC], [], [flac], [libflac decoder/encoder support], [auto])
2641 dnl  Libmpeg2 plugin
2643 PKG_ENABLE_MODULES_VLC([LIBMPEG2], [], [libmpeg2 > 0.3.2], [libmpeg2 decoder support], [auto])
2646 dnl  Vorbis plugin
2648 PKG_ENABLE_MODULES_VLC([VORBIS], [], [ogg vorbis >= 1.1 vorbisenc >= 1.1], [Vorbis decoder and encoder], [auto])
2651 dnl  Tremor plugin
2653 AC_ARG_ENABLE(tremor,
2654   [  --enable-tremor         Tremor decoder support (default disabled)])
2655 if test "${enable_tremor}" = "yes"
2656 then
2657   AC_CHECK_HEADERS(tremor/ivorbiscodec.h, [
2658     VLC_ADD_PLUGIN([tremor])
2659    ],[])
2663 dnl  Speex plugins
2665 PKG_ENABLE_MODULES_VLC([SPEEX], [], [ogg speex >= 1.0.5], [Speex support], [auto])
2666 have_speexdsp="no"
2667 AS_IF([test "${enable_speex}" != "no"], [
2668   PKG_CHECK_MODULES([SPEEXDSP], [speexdsp], [
2669     have_speexdsp="yes"
2670   ], [
2671     AC_MSG_WARN([${SPEEXDSP_PKG_ERRORS}.])
2672   ])
2674 AM_CONDITIONAL([HAVE_SPEEXDSP], [test "$have_speexdsp" = "yes"])
2677 dnl  Opus plugin
2679 PKG_ENABLE_MODULES_VLC([OPUS], [], [ogg opus >= 1.0.3], [Opus support], [auto])
2682 dnl  theora decoder plugin
2684 PKG_ENABLE_MODULES_VLC([THEORA], [], [ogg theoradec >= 1.0 theoraenc], [experimental theora codec], [auto])
2687 dnl  OggSpots decoder plugin
2689 PKG_ENABLE_MODULES_VLC([OGGSPOTS], [], [ogg], [experimental OggSpots codec], [auto])
2692 dnl  Daala decoder plugin
2694 PKG_ENABLE_MODULES_VLC([DAALA], [], [daaladec daalaenc], [experimental daala codec], [disabled])
2697 dnl  schroedinger decoder plugin (for dirac format video)
2699 PKG_ENABLE_MODULES_VLC([SCHROEDINGER], [], [schroedinger-1.0 >= 1.0.10], [dirac decoder and encoder using schroedinger], [auto])
2702 dnl  PNG decoder module
2704 AC_ARG_ENABLE(png,
2705   [  --enable-png            PNG support (default enabled)])
2706 AS_IF([test "${enable_png}" != "no"], [
2707 AC_CHECK_HEADERS(png.h, [
2708   VLC_SAVE_FLAGS
2709   LDFLAGS="${LDFLAGS} -lz $LIBM"
2710   AC_CHECK_LIB(png, png_set_rows, [
2711     VLC_ADD_PLUGIN([png])
2712   ], [], [-lz $LIBM])
2713   VLC_RESTORE_FLAGS
2714   ])
2718 dnl  JPEG decoder module
2720 AC_ARG_ENABLE(jpeg,
2721   [  --enable-jpeg           JPEG support (default enabled)])
2722 AS_IF([test "${enable_jpeg}" != "no"], [
2723 AC_CHECK_HEADERS(jpeglib.h, [
2724   VLC_ADD_PLUGIN([jpeg])
2725   ])
2729 dnl  BPG decoder module
2731 AC_ARG_ENABLE(bpg,
2732   [  --enable-bpg           BPG support (default disabled)])
2733 AS_IF([test "${enable_bpg}" != "no"], [
2734 AC_CHECK_HEADERS(libbpg.h, [
2735   VLC_ADD_PLUGIN([bpg])
2736   ])
2740 dnl H262 encoder plugin (lib262)
2742 AC_ARG_ENABLE(x262,
2743   [  --enable-x262           H262 encoding support with static libx262 (default disabled)])
2744 if test "${enable_x262}" != "no"; then
2745     PKG_CHECK_MODULES(X262, x262, [
2746         VLC_ADD_PLUGIN([x262])
2747         VLC_ADD_LDFLAGS([x262],[${X262_LIBS}])
2748         AS_IF([test -n "${ac_cv_ld_bsymbolic}"], [
2749           VLC_ADD_LIBS([x262],[${av_cv_ld_bsymbolic}])
2750         ])
2751         VLC_ADD_CFLAGS([x262],[${X262_CFLAGS}])
2752         if echo ${X262_LIBS} |grep -q 'pthreadGC2'; then
2753           VLC_ADD_CFLAGS([x262], [-DPTW32_STATIC_LIB])
2754         fi
2755     ], [
2756        if test "${enable_x262}" = "yes"; then
2757         AC_MSG_ERROR([x262 module doesn't work without staticly compiled libx262.a])
2758        fi
2759     ])
2762 dnl x265 encoder
2763 PKG_ENABLE_MODULES_VLC([X265],, [x265], [HEVC/H.265 encoder], [auto])
2766 dnl H264 encoder plugin (10-bit lib264)
2768 AC_ARG_ENABLE(x26410b,
2769   [  --enable-x26410b           H264 10-bit encoding support with static libx264 (default disabled)])
2770 if test "${enable_x26410b}" != "no"; then
2771     PKG_CHECK_MODULES(X26410B, x26410b, [
2772         VLC_ADD_PLUGIN([x26410b])
2773         VLC_ADD_LIBS([x26410b],[${X26410B_LIBS}])
2774         AS_IF([test -n "${ac_cv_ld_bsymbolic}"], [
2775           VLC_ADD_LDFLAGS([x26410b],[${ac_cv_ld_bsymbolic}])
2776         ])
2777         VLC_ADD_CFLAGS([x26410b],[${X26410B_CFLAGS}])
2778         if echo ${X26410B_LIBS} |grep -q 'pthreadGC2'; then
2779           VLC_ADD_CFLAGS([x26410b], [-DPTW32_STATIC_LIB])
2780         fi
2781     ], [
2782        if test "${enable_x26410b}" = "yes"; then
2783         AC_MSG_ERROR([x26410b module doesn't work without staticly compiled libx264.a])
2784        fi
2785     ])
2790 dnl H264 encoder plugin (using libx264)
2792 AC_ARG_ENABLE(x264,
2793   [  --enable-x264           H264 encoding support with libx264 (default enabled)])
2794 if test "${enable_x264}" != "no"; then
2795       PKG_CHECK_MODULES(X264,x264 >= 0.86, [
2796         VLC_ADD_PLUGIN([x264])
2797         VLC_ADD_LIBS([x264],[${X264_LIBS}])
2799         AS_IF([test -n "${ac_cv_ld_bsymbolic}"], [
2800           VLC_ADD_LDFLAGS([x264],[${ac_cv_ld_bsymbolic}])
2801         ])
2803         VLC_ADD_CFLAGS([x264],[${X264_CFLAGS}])
2804         if echo ${X264_LIBS} |grep -q 'pthreadGC2'; then
2805           VLC_ADD_CFLAGS([x264], [-DPTW32_STATIC_LIB])
2806         fi
2807       ],[
2808         if test "${enable_x264}" = "yes"; then
2809             AC_MSG_ERROR([${X264_PKG_ERRORS}: you may get it from http://www.videolan.org/x264.html])
2810           fi
2811       ])
2815 dnl Intel QuickSync (aka MediaSDK) H264/H262 encoder
2817 PKG_ENABLE_MODULES_VLC([MFX], [qsv], [libmfx], [Intel QuickSync MPEG4-Part10/MPEG2 (aka H.264/H.262) encoder], [auto])
2820 dnl libfluidsynth (MIDI synthetizer) plugin
2822 PKG_ENABLE_MODULES_VLC([FLUIDSYNTH], [], [fluidsynth >= 1.1.2], [MIDI synthetiser with libfluidsynth], [auto])
2823 PKG_ENABLE_MODULES_VLC([FLUIDLITE], [fluidsynth], [fluidlite], [MIDI synthetiser with libfluidsynth], [auto])
2824 AC_CHECK_HEADERS(fluidlite.h, [AC_SUBST([FLUIDSYNTH_LIBS], ${FLUIDLITE_LIBS})])
2827 dnl Teletext Modules
2828 dnl vbi decoder plugin (using libzbvi)
2829 dnl telx module
2830 dnl uncompatible
2832 AC_ARG_ENABLE(zvbi,
2833   AS_HELP_STRING([--enable-zvbi],[VBI (inc. Teletext) decoding support with
2834                   libzvbi (default enabled)]))
2835 AC_ARG_ENABLE(telx,
2836   AS_HELP_STRING([--enable-telx],[Teletext decoding module (conflicting with
2837                   zvbi) (default enabled if zvbi is absent)]))
2839 AS_IF( [test "${enable_zvbi}" != "no"],[
2840     PKG_CHECK_MODULES(ZVBI, [zvbi-0.2 >= 0.2.28],
2841         [
2842           VLC_ADD_PLUGIN([zvbi])
2843           AC_DEFINE(ZVBI_COMPILED, 1, [Define if the zvbi module is built])
2844           AS_IF( [test "${enable_telx}" = "yes"],[
2845                   AC_MSG_WARN([The zvbi and telx modules are incompatible. Using zvbi.])
2846                   ])
2847         ],[
2848           AC_MSG_WARN([${ZVBI_PKG_ERRORS}. Enabling the telx module instead.])
2849         ])
2850     ])
2851 AS_IF( [test "${enable_telx}" != "no" ],[
2852   VLC_ADD_PLUGIN([telx])
2853   ])
2856 dnl libass subtitle rendering module
2858 AC_ARG_ENABLE(libass,
2859   [  --enable-libass         Subtitle support using libass (default enabled)])
2860 AS_IF( [test "${enable_libass}" != "no"], [
2861   PKG_CHECK_MODULES(LIBASS, [libass >= 0.9.8],
2862       [
2863         VLC_ADD_PLUGIN([libass])
2865         AC_CHECK_HEADERS(fontconfig/fontconfig.h,
2866           [VLC_ADD_CPPFLAGS([libass],[-DHAVE_FONTCONFIG])
2867            VLC_ADD_LIBS([libass],[-lfontconfig])
2868        ])
2869       ],[
2870         AC_MSG_WARN([${LIBASS_PKG_ERRORS}.])
2871       ])
2872   ])
2875 dnl ARIB subtitles rendering module
2877 AC_ARG_ENABLE(aribsub,
2878   [  --enable-aribsub        ARIB Subtitles support (default enabled)])
2879 AS_IF( [test "${enable_aribsub}" != "no" ],[
2880   PKG_CHECK_MODULES(ARIBB24, [aribb24 >= 1.0.1], [
2881       have_aribb24="yes"
2882       VLC_ADD_PLUGIN([aribsub])
2883       VLC_ADD_LIBS([aribsub],[-laribb24])
2884       AC_DEFINE(HAVE_ARIBB24, 1, [Define if libaribb24 is available.])
2885     ],[
2886       AC_MSG_WARN(Library [aribb24] needed for [aribsub] was not found)
2887       have_aribb24="no"
2888   ])
2890 AM_CONDITIONAL([HAVE_ARIBB24], [test x"${have_aribb24}" = x"yes"])
2893 dnl ARIB B25
2895 PKG_ENABLE_MODULES_VLC([ARIBB25], [aribcam], [aribb25 >= 0.2.6], [ARIB STD-B25], [auto])
2898 dnl  kate decoder plugin
2900 PKG_ENABLE_MODULES_VLC([KATE], [], [kate >= 0.3.0], [kate codec], [auto])
2903 dnl  tiger rendering for kate decoder plugin
2905 AC_ARG_ENABLE(tiger,
2906 [  --enable-tiger          Tiger rendering library for Kate streams (default auto)])
2907 AS_IF([test "${enable_tiger}" != "no"], [
2908   PKG_CHECK_MODULES(TIGER,[tiger >= 0.3.1], [
2909       AC_DEFINE(HAVE_TIGER, 1, [Define if libtiger is available.])],[
2910         AS_IF([test -n "${enable_tiger}"], [
2911           AC_MSG_ERROR([${TIGER_PKG_ERRORS}.])
2912         ])
2913   ])
2918 dnl  Video plugins
2921 EXTEND_HELP_STRING([Video plugins:])
2924 dnl  OpenGL
2926 PKG_CHECK_MODULES([EGL], [egl], [
2927   have_egl="yes"
2928 ], [
2929   have_egl="no"
2931 AM_CONDITIONAL([HAVE_EGL], [test "${have_egl}" = "yes"])
2933 have_gl="no"
2934 PKG_CHECK_MODULES([GL], [gl], [
2935   have_gl="yes"
2936 ], [
2937   AC_MSG_CHECKING([for OpenGL])
2938   AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
2939 #ifdef _WIN32
2940 # include <GL/glew.h>
2941 #endif
2942 #include <GL/gl.h>
2943 ]], [
2944     [int t0 = GL_TEXTURE0;]])
2945   ], [
2946     GL_CFLAGS=""
2947     have_gl="yes"
2948     AS_IF([test "${SYS}" != "mingw32"], [
2949       GL_LIBS="-lGL"
2950     ], [
2951       GL_LIBS="-lopengl32"
2952     ])
2953   ])
2954   AC_MSG_RESULT([${have_gl}])
2956 AM_CONDITIONAL([HAVE_GL], [test "${have_gl}" = "yes"])
2958 dnl OpenGL ES 2: depends on EGL 1.1
2959 PKG_ENABLE_MODULES_VLC([GLES2], [], [glesv2], [OpenGL ES v2 support], [disabled])
2962 dnl  Xlib
2965 AC_PATH_XTRA()
2966 AC_CHECK_HEADERS(X11/Xlib.h)
2969 dnl  X C Bindings modules
2971 AC_ARG_ENABLE(xcb,
2972   [  --enable-xcb            X11 support with XCB (default enabled)],, [
2973   AS_IF([test "${SYS}" != "mingw32" -a "${SYS}" != "darwin"], [
2974     enable_xcb="yes"
2975   ], [
2976     enable_xcb="no"
2977   ])
2979 AC_ARG_ENABLE(xvideo,
2980   [  --enable-xvideo         XVideo support (default enabled)],, [
2981     enable_xvideo="$enable_xcb"
2984 have_xcb="no"
2985 have_xcb_keysyms="no"
2986 have_xcb_randr="no"
2987 have_xcb_xvideo="no"
2988 AS_IF([test "${enable_xcb}" != "no"], [
2989   dnl libxcb
2990   PKG_CHECK_MODULES(XCB, [xcb >= 1.6])
2991   have_xcb="yes"
2992   PKG_CHECK_MODULES(XCB_SHM, [xcb-shm])
2993   PKG_CHECK_MODULES(XCB_COMPOSITE, [xcb-composite])
2994   PKG_CHECK_MODULES(XPROTO, [xproto])
2996   AS_IF([test "${enable_xvideo}" != "no"], [
2997     PKG_CHECK_MODULES(XCB_XV, [xcb-xv >= 1.1.90.1], [have_xcb_xvideo="yes"])
2998   ])
3000   PKG_CHECK_MODULES(XCB_RANDR, [xcb-randr >= 1.3], [have_xcb_randr="yes"])
3002   dnl xcb-utils
3003   PKG_CHECK_MODULES(XCB_KEYSYMS, [xcb-keysyms >= 0.3.4], [have_xcb_keysyms="yes"], [
3004     AC_MSG_WARN([${XCB_KEYSYMS_PKG_ERRORS}. Hotkeys will not work.])
3005   ])
3007 AM_CONDITIONAL([HAVE_XCB], [test "${have_xcb}" = "yes"])
3008 AM_CONDITIONAL([HAVE_XCB_KEYSYMS], [test "${have_xcb_keysyms}" = "yes"])
3009 AM_CONDITIONAL([HAVE_XCB_RANDR], [test "${have_xcb_randr}" = "yes"])
3010 AM_CONDITIONAL([HAVE_XCB_XVIDEO], [test "${have_xcb_xvideo}" = "yes"])
3014 dnl VDPAU needs X11
3016 AC_ARG_ENABLE(vdpau,
3017   [AS_HELP_STRING([--enable-vdpau], [VDPAU hardware support (default auto)])])
3018 have_vdpau="no"
3019 AS_IF([test "${enable_vdpau}" != "no"], [
3020   PKG_CHECK_MODULES([VDPAU], [vdpau >= 0.6], [
3021     have_vdpau="yes"
3022     AS_IF([test "${no_x}" = "yes"], [
3023       AC_MSG_ERROR([VDPAU requires Xlib (X11).])
3024     ])
3025   ], [
3026     AS_IF([test -n "${enable_vdpau}"], [
3027       AC_MSG_ERROR([${VDPAU_PKG_ERRORS}.])
3028     ])
3029   ])
3031 AM_CONDITIONAL([HAVE_VDPAU], [test "${have_vdpau}" = "yes"])
3033 have_avcodec_vdpau="no"
3034 AS_IF([test "${have_vdpau}" = "yes" -a "${have_avcodec}" = "yes"], [
3035   case "${avfork}" in
3036     libav) av_vdpau_ver="56.10.0" ;;
3037     ffmpeg) av_vdpau_ver="56.19.100" ;;
3038   esac
3039   PKG_CHECK_EXISTS([libavcodec >= ${av_vdpau_ver}], [
3040     have_avcodec_vdpau="yes"
3041     AC_MSG_NOTICE([VDPAU decoding acceleration activated])
3042   ], [
3043     AS_IF([test -n "${enable_vdpau}"], [
3044       AC_MSG_ERROR([libavcodec >= 56.10.0 is required for VDPAU decoding.])
3045     ], [
3046       AC_MSG_WARN([libavcodec >= 56.10.0 are required for VDPAU decoding.])
3047     ])
3048   ])
3050 AM_CONDITIONAL([HAVE_AVCODEC_VDPAU], [test "${have_avcodec_vdpau}" = "yes"])
3054 dnl  Wayland
3056 AC_ARG_ENABLE(wayland,
3057   [AS_HELP_STRING([--enable-wayland], [Wayland support (default auto)])])
3058 have_wayland="no"
3059 have_wayland_egl="no"
3061 AS_IF([test "${enable_wayland}" != "no"], [
3062   PKG_CHECK_MODULES([WAYLAND_CLIENT], [wayland-client >= 1.5.91], [
3063     AC_MSG_CHECKING([for the Wayland protocols])
3064     PKG_CHECK_EXISTS([wayland-protocols >= 1.4], [
3065       WAYLAND_PROTOCOLS="$(${PKG_CONFIG} wayland-protocols --variable pkgdatadir)"
3066       AC_MSG_RESULT([${WAYLAND_PROTOCOLS}])
3067     ], [
3068       AC_MSG_RESULT([not found])
3069       AC_MSG_ERROR([$(${PKG_CONFIG} --print-errors 'wayland-protocols >= 1.4')])
3070     ])
3072     AC_MSG_CHECKING([for the Wayland scanner])
3073     PKG_CHECK_EXISTS([wayland-scanner], [
3074       WAYLAND_SCANNER="$(${PKG_CONFIG} wayland-scanner --variable wayland_scanner)"
3075       AC_MSG_RESULT([${WAYLAND_SCANNER}])
3076     ], [
3077       AC_MSG_RESULT([not found])
3078       AC_MSG_ERROR([$(${PKG_CONFIG} --print-errors wayland-scanner)])
3079     ])
3081     have_wayland="yes"
3083     AS_IF([test "${have_egl}" = "yes"], [
3084       PKG_CHECK_MODULES([WAYLAND_EGL], [wayland-egl], [
3085         have_wayland_egl="yes"
3086       ], [
3087         AC_MSG_ERROR([${WAYLAND_EGL_PKG_ERRORS}.])
3088       ])
3089     ])
3090   ], [
3091     AS_IF([test -n "${enable_wayland}"], [
3092       AC_MSG_ERROR([${WAYLAND_CLIENT_PKG_ERRORS}.])
3093     ])
3094   ])
3096 AC_SUBST([WAYLAND_PROTOCOLS])
3097 AC_SUBST([WAYLAND_SCANNER])
3098 AM_CONDITIONAL([HAVE_WAYLAND], [test "${have_wayland}" = "yes"])
3099 AM_CONDITIONAL([HAVE_WAYLAND_EGL], [test "${have_wayland_egl}" = "yes"])
3103 dnl  SDL module
3105 AC_ARG_ENABLE(sdl,
3106   [  --enable-sdl            SDL support (default enabled)])
3107 AC_ARG_ENABLE(sdl-image,
3108   [  --enable-sdl-image      SDL image support (default enabled)])
3109 if test "${enable_sdl}" != "no"
3110 then
3111    PKG_CHECK_MODULES(SDL, [sdl >= 1.2.10], [
3112       # SDL on Darwin is heavily patched and can only run SDL_image
3113       if test "${SYS}" != "darwin"; then
3114         VLC_ADD_PLUGIN([vout_sdl])
3115       fi
3117       # SDL_image
3118       AS_IF([ test "${enable_sdl_image}" != "no"],[
3119         PKG_CHECK_MODULES(SDL_IMAGE, [SDL_image >= 1.2.10], [
3120           VLC_ADD_PLUGIN([sdl_image])],
3121           [ AC_MSG_WARN([${SDL_IMAGE_PKG_ERRORS}. You should install it alongside your SDL package.])
3122           ])
3123       ])
3124    ],[
3125      AC_MSG_WARN([${SDL_PKG_ERRORS}.])
3126    ])
3130 dnl  freetype module
3132 AC_ARG_ENABLE(freetype,
3133   [  --enable-freetype       freetype support   (default auto)])
3134 AC_ARG_ENABLE(fribidi,
3135   [  --enable-fribidi        fribidi support    (default auto)])
3136 AC_ARG_ENABLE(harfbuzz,
3137   [  --enable-harfbuzz       harfbuzz support   (default auto)])
3138 AC_ARG_ENABLE(fontconfig,
3139   [  --enable-fontconfig     fontconfig support (default auto)])
3141 AC_ARG_WITH([default-font],
3142     AS_HELP_STRING([--with-default-font=PATH],
3143         [Path to the default font]),
3144         [AC_DEFINE_UNQUOTED([DEFAULT_FONT_FILE],
3145             "$withval", [Default font])])
3146 AC_ARG_WITH([default-monospace-font],
3147     AS_HELP_STRING([--with-default-monospace-font=PATH],
3148         [Path to the default font]),
3149         [AC_DEFINE_UNQUOTED([DEFAULT_MONOSPACE_FONT_FILE],
3150             "$withval", [Default monospace font])])
3152 AC_ARG_WITH([default-font-family],
3153     AS_HELP_STRING([--with-default-font-family=NAME],
3154         [Path to the default font family]),
3155         [AC_DEFINE_UNQUOTED([DEFAULT_FAMILY],
3156             "$withval", [Default font family])])
3157 AC_ARG_WITH([default-monospace-font-family],
3158     AS_HELP_STRING([--with-default-monospace-font-family=NAME],
3159         [Path to the default font family]),
3160         [AC_DEFINE_UNQUOTED([DEFAULT_MONOSPACE_FAMILY],
3161             "$withval", [Default monospace font family])])
3163 have_freetype="no"
3164 have_fontconfig="no"
3165 have_fribidi="no"
3166 have_harfbuzz="no"
3168 if test "${enable_freetype}" != "no"; then
3169    PKG_CHECK_MODULES(FREETYPE, freetype2, [
3170       have_freetype="yes"
3171       VLC_ADD_CPPFLAGS([skins2],[${FREETYPE_CFLAGS}])
3172       VLC_ADD_LIBS([skins2],[${FREETYPE_LIBS}])
3174       dnl fontconfig support
3175       if test "${SYS}" != "mingw32" -a "${SYS}" != "darwin" ; then
3176           if test "${enable_fontconfig}" != "no"; then
3177             AC_CHECK_HEADERS(fontconfig/fontconfig.h, [
3178               have_fontconfig="yes"
3179             ],[AC_MSG_WARN([library fontconfig not found. Styles will be disabled in freetype])])
3180           fi
3181       fi
3183       dnl fribidi support
3184       if test "${enable_fribidi}" != "no"; then
3185         PKG_CHECK_MODULES(FRIBIDI, fribidi, [
3186           have_fribidi="yes"
3187           VLC_ADD_CPPFLAGS([skins2], [${FRIBIDI_CFLAGS} -DHAVE_FRIBIDI])
3188           VLC_ADD_LIBS([skins2], [${FRIBIDI_LIBS}])
3189         ],[AC_MSG_WARN([${FRIBIDI_PKG_ERRORS}. Bidirectional text and complex scripts (Arabic, Farsi, Thai...) will be disabled in FreeType.])])
3190       fi
3192       dnl harfbuzz support
3193       if test "${have_fribidi}" != "no"; then
3194         if test "${enable_harfbuzz}" != "no"; then
3195           PKG_CHECK_MODULES(HARFBUZZ, harfbuzz, [
3196             have_harfbuzz="yes"
3197             VLC_ADD_CPPFLAGS([skins2], [${HARFBUZZ_CFLAGS} -DHAVE_HARFBUZZ])
3198             VLC_ADD_LIBS([skins2], [${HARFBUZZ_LIBS}])
3199           ],[AC_MSG_WARN([${HARFBUZZ_PKG_ERRORS}. Support for complex scripts (Arabic, Farsi, Thai...) will be disabled in FreeType.])])
3200         fi
3201       fi
3202   ],[
3203   AS_IF([test -n "${enable_freetype}"],[
3204     AC_MSG_ERROR([${FREETYPE_PKG_ERRORS}. Install FreeType2 development or configure with --disable-freetype.])
3205     ])
3206   ])
3209 AM_CONDITIONAL([HAVE_FREETYPE], [test "${have_freetype}" = "yes"])
3210 AM_CONDITIONAL([HAVE_FONTCONFIG], [test "${have_fontconfig}" = "yes"])
3211 AM_CONDITIONAL([HAVE_FRIBIDI], [test "${have_fribidi}" = "yes"])
3212 AM_CONDITIONAL([HAVE_HARFBUZZ], [test "${have_harfbuzz}" = "yes"])
3215 dnl SAPI (text to Speech renderer for Windows)
3217 AC_LANG_PUSH([C++])
3218 AC_CHECK_TYPES([ISpObjectToken],[
3219               have_sapi="yes"
3220             ],[AC_MSG_WARN([sapi.h not found. Text to Speech renderer for Windows disabled])],
3221               [#include <windows.h>
3222                #include <sapi.h>
3223                #include <sphelper.h>])
3224 AM_CONDITIONAL([HAVE_SAPI], [test "${have_sapi}" = "yes"])
3225 AC_LANG_POP([C++])
3228 dnl  SVG module (text rendering and image decoding)
3230 PKG_ENABLE_MODULES_VLC([SVG], [], [librsvg-2.0 >= 2.9.0], [SVG rendering library],[auto])
3231 PKG_ENABLE_MODULES_VLC([SVGDEC], [], [librsvg-2.0 >= 2.9.0 cairo >= 1.13.1], [SVG image decoder library],[auto])
3234 dnl  Windows DirectX module
3237 AC_ARG_ENABLE(directx,
3238   [AS_HELP_STRING([--enable-directx],
3239     [Microsoft DirectX support (default enabled on Windows)])],, [
3240   AS_IF([test "${SYS}" = "mingw32"], [
3241     enable_directx="yes"
3242   ], [
3243     enable_directx="no"
3244   ])
3246 AS_IF([test "${enable_directx}" != "no"], [
3247   dnl DirectDraw
3248   AC_CHECK_HEADERS(ddraw.h, [
3249     VLC_ADD_PLUGIN([directdraw])
3250   ])
3252   dnl OpenGL
3253   AC_CHECK_HEADERS(GL/wglew.h, [
3254     VLC_ADD_PLUGIN([glwin32 wgl])
3255   ],, [
3256     #include <windows.h>
3257     #include <GL/gl.h>
3258   ])
3260   dnl Direct3D11
3261   AC_CHECK_HEADERS(d3d11.h, [
3262     VLC_ADD_PLUGIN([direct3d11])
3263   ])
3265   dnl Direct3D9
3266   AC_CHECK_HEADERS(d3d9.h, [
3267     VLC_ADD_PLUGIN([direct3d9])
3268   ])
3273 dnl  Linux framebuffer module
3275 AC_CHECK_HEADER([linux/fb.h], [
3276   VLC_ADD_PLUGIN([fb])
3281 dnl  DirectFB module
3282 dnl  try to find using: 1 - given location; 2 - directfb-config; 3 - pkg-config
3283 dnl  TODO: support for static linking
3285 AC_ARG_ENABLE(directfb,
3286   [  --enable-directfb       DirectFB support (default disabled)])
3287 AC_ARG_WITH(directfb,
3288   [  --with-directfb=PATH    path to DirectFB headers and libraries])
3290 if test "${enable_directfb}" = "yes"; then
3291     have_directfb="false"
3292     CPPFLAGS_mydirectfb=
3293     LIBS_mydirectfb=
3294     if test "${with_directfb}" != "no" -a -n "${with_directfb}"; then
3295         dnl Trying the given location
3296         VLC_SAVE_FLAGS
3298         CPPFLAGS_new="-I${with_directfb}/include -D_REENTRANT -D_GNU_SOURCE"
3299         LIBS_new="-L${with_directfb}/lib/fusion/.libs/ -L${with_directfb}/lib/direct/.libs/ -L${with_directfb}/src/.libs/"
3301         CPPFLAGS="${CPPFLAGS} ${CPPFLAGS_new}"
3302         LIBS="${LIBS} ${LIBS_new}"
3304         dnl FIXME: too obscure
3305         AC_CHECK_HEADER([directfb.h], [
3306             AC_CHECK_LIB([direct],[direct_initialize], [
3307                 AC_CHECK_LIB([fusion], [fusion_enter], [
3308                     AC_CHECK_LIB([directfb], [DirectFBInit], have_directfb="true", have_directfb="false")
3309                 ], have_directfb="false")
3310             ], have_directfb="false")
3311         ], have_directfb="false")
3313         VLC_RESTORE_FLAGS
3315         if test "${have_directfb}" = "true"; then
3316             LIBS_mydirectfb="${LIBS_new} -lz $LIBDL -ldirectfb -lfusion -ldirect -lpthread"
3317             CPPFLAGS_mydirectfb="${CPPFLAGS_new}"
3318         fi
3319     else
3320         dnl Look for directfb-config
3321         AC_CHECK_PROG(DIRECTFB_CONFIG, [directfb-config], [false])
3322         AS_IF(["${DIRECTFB_CONFIG}" != "false"], [
3323             CPPFLAGS_mydirectfb="`${DIRECTFB_CONFIG} --cflags`"
3324             LIBS_mydirectfb="`${DIRECTFB_CONFIG} --libs`"
3325             have_directfb="true"
3326         ], [
3327             dnl Trying with pkg-config
3328             PKG_CHECK_MODULES(DIRECTFB, directfb, [
3329                 CPPFLAGS_mydirectfb="${DIRECTFB_CFLAGS}"
3330                 LIBS_mydirectfb="${DIRECTFB_LIBS}"
3331                 have_directfb="true"
3332                 ], [have_directfb="false"])
3333         ])
3334     fi
3335     if test "${have_directfb}" = "true"; then
3336         VLC_ADD_PLUGIN([directfb])
3337         VLC_ADD_CPPFLAGS([directfb],[${CPPFLAGS_mydirectfb}])
3338         VLC_ADD_LIBS([directfb],[${LIBS_mydirectfb}])
3339     else
3340         AC_MSG_ERROR([${DIRECTFB_PKG_ERRORS}.])
3341     fi
3345 dnl  AA plugin
3347 AC_ARG_ENABLE(aa,
3348   [  --enable-aa             aalib output (default disabled)])
3349 if test "${enable_aa}" = "yes"
3350 then
3351   AC_CHECK_HEADER(aalib.h,have_aa="true",have_aa="false")
3352   if test "${have_aa}" = "true"
3353   then
3354     VLC_ADD_PLUGIN([aa])
3355   fi
3359 dnl  libcaca plugin
3361 PKG_ENABLE_MODULES_VLC([CACA], [], [caca >= 0.99.beta14], [libcaca output],[auto])
3364 dnl  OS/2 KVA plugin
3366 AC_ARG_ENABLE(kva,
3367   [AS_HELP_STRING([--enable-kva],
3368     [support the K Video Accelerator KVA (default enabled on OS/2)])],, [
3369   AS_IF([test "$SYS" = "os2"], [
3370     enable_kva="yes"
3371   ])
3373 have_kva="no"
3374 KVA_LIBS=""
3375 AS_IF([test "$enable_kva" != "no"], [
3376   AC_CHECK_HEADERS([kva.h], [
3377     have_kva="yes"
3378     AC_CHECK_LIB(kva, main, [
3379       KVA_LIBS="-lkva"
3380     ])
3381   ])
3383 AC_SUBST(KVA_LIBS)
3384 AM_CONDITIONAL([HAVE_KVA], [test "${have_kva}" = "yes"])
3387 dnl MMAL plugin
3389 AC_ARG_ENABLE(mmal,
3390   AS_HELP_STRING([--enable-mmal],
3391     [Multi-Media Abstraction Layer (MMAL) hardware plugin (default enable)]))
3392 if test "${enable_mmal}" != "no"; then
3393   VLC_SAVE_FLAGS
3394   LDFLAGS="${LDFLAGS} -L/opt/vc/lib -lvchostif"
3395   CPPFLAGS="${CPPFLAGS} -I/opt/vc/include -I/opt/vc/include/interface/vcos/pthreads -I/opt/vc/include/interface/vmcs_host/linux"
3396   AC_CHECK_HEADERS(interface/mmal/mmal.h,
3397     [ AC_CHECK_LIB(bcm_host, vc_tv_unregister_callback_full, [
3398         have_mmal="yes"
3399         VLC_ADD_PLUGIN([mmal])
3400         VLC_ADD_LDFLAGS([mmal],[ -L/opt/vc/lib ])
3401         VLC_ADD_CFLAGS([mmal],[ -I/opt/vc/include -I/opt/vc/include/interface/vcos/pthreads -I/opt/vc/include/interface/vmcs_host/linux ])
3402         VLC_ADD_LIBS([mmal],[ -lbcm_host -lmmal -lvchostif ]) ], [
3403           AS_IF([test "${enable_mmal}" = "yes"],
3404             [ AC_MSG_ERROR([Cannot find bcm library...]) ],
3405             [ AC_MSG_WARN([Cannot find bcm library...]) ])
3406           ],
3407         [])
3408     ] , [ AS_IF([test "${enable_mmal}" = "yes"],
3409       [ AC_MSG_ERROR([Cannot find development headers for mmal...]) ],
3410       [ AC_MSG_WARN([Cannot find development headers for mmal...]) ]) ])
3411   VLC_RESTORE_FLAGS
3413 AM_CONDITIONAL([HAVE_MMAL], [test "${have_mmal}" = "yes"])
3416 dnl evas plugin
3418 AC_ARG_ENABLE(evas,
3419   [AS_HELP_STRING([--enable-evas],
3420     [use evas output module (default disabled)])])
3421 have_evas="no"
3422 AS_IF([test "${enable_evas}" = "yes"], [
3423   PKG_CHECK_MODULES(EVAS, [evas >= 1.15.99 ecore >= 1.15.99], [
3424       have_evas="yes"
3425       AC_DEFINE([HAVE_EVAS], [1], [Define to 1 if evas is enabled.])
3426     ],[
3427     AS_IF([test "x${enable_evas}" != "x"], [
3428       AC_MSG_ERROR([$EVAS_PKG_ERRORS. libevas and libecore 1.15.99 or later required.])
3429     ])
3430   ])
3432 AM_CONDITIONAL([HAVE_EVAS], [test "${have_evas}" = "yes"])
3435 dnl  Audio plugins
3438 EXTEND_HELP_STRING([Audio plugins:])
3441 dnl  Pulseaudio module
3443 AC_ARG_ENABLE(pulse,
3444   [AS_HELP_STRING([--enable-pulse],
3445     [use the PulseAudio client library (default auto)])])
3446 have_pulse="no"
3447 AS_IF([test "${enable_pulse}" != "no"], [
3448   PKG_CHECK_MODULES([PULSE], [libpulse >= 1.0], [
3449     have_pulse="yes"
3450   ], [
3451     AS_IF([test "x${enable_pulse}" != "x"], [
3452       AC_MSG_ERROR([$PULSE_PKG_ERRORS. PulseAudio 1.0 or later required.])
3453     ])
3454   ])
3456 AM_CONDITIONAL([HAVE_PULSE], [test "${have_pulse}" = "yes"])
3459 dnl  ALSA module
3461 AC_ARG_ENABLE(alsa,
3462   [AS_HELP_STRING([--enable-alsa],
3463     [support the Advanced Linux Sound Architecture (default auto)])],, [
3464   AS_IF([test "$SYS" = "linux" -a "${have_pulse}" = "no"], [
3465     enable_alsa="yes"
3466   ])
3468 have_alsa="no"
3469 AS_IF([test "${enable_alsa}" != "no"], [
3470   PKG_CHECK_MODULES([ALSA], [alsa >= 1.0.24], [
3471     have_alsa="yes"
3472   ], [
3473     AS_IF([test "x${enable_alsa}" != "x"], [
3474       AC_MSG_ERROR([$ALSA_PKG_ERRORS. alsa-lib 1.0.24 or later required.])
3475     ])
3476   ])
3478 AM_CONDITIONAL([HAVE_ALSA], [test "${have_alsa}" = "yes"])
3481 dnl  Open Sound System module
3483 AC_ARG_ENABLE(oss,
3484   [AS_HELP_STRING([--enable-oss],
3485     [support the Open Sound System OSS (default enabled on FreeBSD/NetBSD/DragonFlyBSD)])],, [
3486   AS_IF([test "$SYS" = "mingw32" -o "$SYS" = "linux" -o "$SYS" = "openbsd"], [
3487     enable_oss="no"
3488   ])
3490 have_oss="no"
3491 OSS_LIBS=""
3492 AS_IF([test "$enable_oss" != "no"], [
3493   AC_CHECK_HEADERS([soundcard.h sys/soundcard.h], [
3494     have_oss="yes"
3495     AC_CHECK_LIB(ossaudio, main, [
3496       OSS_LIBS="-lossaudio"
3497     ])
3498   ])
3500 AC_SUBST(OSS_LIBS)
3501 AM_CONDITIONAL([HAVE_OSS], [test "${have_oss}" = "yes"])
3504 dnl  OpenBSD sndio module
3506 AC_ARG_ENABLE([sndio],
3507   [AS_HELP_STRING([--disable-sndio],
3508     [support the OpenBSD sndio (default auto)])],, [
3509   AS_IF([test "$SYS" = "openbsd"], [
3510     enable_sndio="yes"
3511   ])
3513 have_sndio="no"
3514 AS_IF([test "$enable_sndio" != "no"], [
3515   AC_CHECK_HEADER([sndio.h], [
3516     have_sndio="yes"
3517   ])
3519 AM_CONDITIONAL([HAVE_SNDIO], [test "${have_sndio}" = "yes"])
3522 dnl  Windows Audio Session plugin
3524 AC_ARG_ENABLE([wasapi],
3525   [AS_HELP_STRING([--enable-wasapi],
3526     [use the Windows Audio Session API (default auto)])
3528 have_wasapi="no"
3529 AS_IF([test "$enable_wasapi" != "no"], [
3530   AC_CHECK_HEADER([audioclient.h], [
3531     have_wasapi="yes"
3532   ], [
3533     AS_IF([test "x${enable_wasapi}" != "x"], [
3534       AC_MSG_ERROR([Windows Audio Session API not found.])
3535     ])
3536   ])
3538 AM_CONDITIONAL([HAVE_WASAPI], [test "${have_wasapi}" = "yes"])
3541 dnl  JACK modules
3543 AC_ARG_ENABLE(jack,
3544   [AS_HELP_STRING([--disable-jack],
3545     [do not use jack (default auto)])])
3546 have_jack="no"
3547 AS_IF([test "${enable_jack}" != "no"], [
3548     PKG_CHECK_MODULES(JACK, jack >= 1.9.7,
3549       [ have_jack=yes ],
3550       [
3551       AC_MSG_WARN([${JACK_PKG_ERRORS}, trying jack1 instead])
3553       PKG_CHECK_MODULES(JACK, jack >= 0.120.1 jack < 1.0,
3554       [ have_jack=yes ],
3555       [
3556       AS_IF([test -n "${enable_jack}"],
3557          [AC_MSG_ERROR([${JACK_PKG_ERRORS}.])],
3558          [AC_MSG_WARN([${JACK_PKG_ERRORS}.])])
3559       ])
3560     ])
3562 AM_CONDITIONAL([HAVE_JACK], [test "${have_jack}" != "no"])
3565 dnl  OpenSLES Android
3567 AC_ARG_ENABLE(opensles,
3568   [  --enable-opensles       Android OpenSL ES audio module (default disabled)])
3569 if test "${HAVE_ANDROID}" = "1"; then
3570   if test "${enable_opensles}" = "yes"; then
3571       AC_CHECK_HEADERS(SLES/OpenSLES.h,
3572         [ VLC_ADD_PLUGIN([opensles_android]) ],
3573         [ AC_MSG_ERROR([cannot find OpenSLES headers])] )
3574   fi
3578 dnl  Tizen audio
3580 AC_ARG_ENABLE(tizen_audio,
3581   [AS_HELP_STRING([--enable-tizen-audio],
3582     [Tizen audio module (default enabled on Tizen)])],, [
3583   AS_IF([test "$HAVE_TIZEN" = "1"], [
3584     enable_tizen_audio="yes"
3585   ])
3587 if test "${enable_tizen_audio}" = "yes"; then
3588   AC_CHECK_HEADERS(audio_io.h,
3589     [ VLC_ADD_PLUGIN([tizen_audio]) ],
3590     [ AC_MSG_ERROR([cannot find Tizen audio_io headers])] )
3594 dnl libsamplerate plugin
3596 PKG_ENABLE_MODULES_VLC([SAMPLERATE], [], [samplerate], [Resampler with libsamplerate], [auto])
3599 dnl  soxr module
3601 PKG_ENABLE_MODULES_VLC([SOXR], [], [soxr >= 0.1.2], [SoX Resampler library], [auto])
3604 dnl  OS/2 KAI plugin
3606 AC_ARG_ENABLE(kai,
3607   [AS_HELP_STRING([--enable-kai],
3608     [support the K Audio Interface KAI (default enabled on OS/2)])],, [
3609   AS_IF([test "$SYS" = "os2"], [
3610     enable_kai="yes"
3611   ])
3613 have_kai="no"
3614 KAI_LIBS=""
3615 AS_IF([test "$enable_kai" != "no"], [
3616   AC_CHECK_HEADERS([kai.h], [
3617     have_kai="yes"
3618     AC_CHECK_LIB(kai, main, [
3619       KAI_LIBS="-lkai"
3620     ])
3621   ])
3623 AC_SUBST(KAI_LIBS)
3624 AM_CONDITIONAL([HAVE_KAI], [test "${have_kai}" = "yes"])
3627 dnl  chromaprint audio track fingerprinter
3629 m4_pushdef([libchromaprint_version], 0.6.0)
3630 PKG_WITH_MODULES([CHROMAPRINT],[libchromaprint >= libchromaprint_version],
3631     VLC_ADD_PLUGIN([stream_out_chromaprint]),
3632     AS_IF([test "${enable_chromaprint}" = "yes"],
3633         [AC_MSG_ERROR(Library [libchromaprint >= libchromaprint_version] needed for [chromaprint] was not found)],
3634         [AC_MSG_WARN(Library [libchromaprint >= libchromaprint_version] needed for [chromaprint] was not found)]
3635          ),
3636     [(Chromaprint based audio fingerprinter)],[auto])
3637 m4_popdef([libchromaprint_version])
3640 dnl  Chromecast streaming support
3642 m4_pushdef([protobuf_lite_version], 2.5.0)
3643 AC_ARG_VAR(PROTOC, [protobuf compiler])
3644 AC_CHECK_PROGS(PROTOC, protoc, no)
3645 PKG_WITH_MODULES([CHROMECAST],[protobuf-lite >= protobuf_lite_version], [
3646     AS_IF([test "x${PROTOC}" != "xno"], [
3647         build_chromecast="yes"
3648     ], [
3649     AC_MSG_ERROR(protoc compiler needed for [chromecast] was not found)
3650     ])
3651 ], [
3652     AS_IF([test "${enable_chromecast}" = "yes"],
3653         AC_MSG_ERROR(Library [protobuf-lite >= protobuf_lite_version] needed for [chromecast] was not found),
3654         AC_MSG_WARN(Library [protobuf-lite >= protobuf_lite_version] needed for [chromecast] was not found)
3655     )
3656     enable_chromecast="no"
3657 ], [(Chromecast streaming support)], [auto])
3658 AM_CONDITIONAL([BUILD_CHROMECAST], [test "${build_chromecast}" = "yes"])
3659 m4_popdef([protobuf_lite_version])
3662 dnl  Interface plugins
3665 EXTEND_HELP_STRING([Interface plugins:])
3668 dnl QT
3670 AC_ARG_ENABLE(qt, [
3671   AS_HELP_STRING([--disable-qt], [Qt UI support (default enabled)])],, [
3672   AS_IF([test "${SYS}" = "darwin"], [
3673     enable_qt="no"
3674   ])
3676 have_qt5_x11="no"
3677 AS_IF([test "${enable_qt}" != "no"], [
3678   PKG_CHECK_MODULES([QT], [Qt5Core >= 5.2.0 Qt5Widgets Qt5Gui], [
3679       PKG_CHECK_MODULES([QT5_X11], [Qt5X11Extras], [
3680           have_qt5_x11="yes"
3681       ],[
3682           AC_MSG_WARN([Not building Qt Interface with X11 helpers.])
3683       ])
3684       QT_PATH="$(eval $PKG_CONFIG --variable=exec_prefix Qt5Core)"
3685       QT_HOST_PATH="$(eval $PKG_CONFIG --variable=host_bins Qt5Core)"
3686       QT_VERSION="$(eval $PKG_CONFIG --modversion Qt5Gui)"
3687       AC_PATH_PROGS(MOC, [moc-qt5 moc], moc, ["${QT_HOST_PATH}" "${QT_PATH}/bin"])
3688       AC_PATH_PROGS(RCC, [rcc-qt5 rcc], rcc, ["${QT_HOST_PATH}" "${QT_PATH}/bin"])
3689       AC_PATH_PROGS(UIC, [uic-qt5 uic], uic, ["${QT_HOST_PATH}" "${QT_PATH}/bin"])
3690     ], [
3691       PKG_CHECK_MODULES([QT], [QtCore QtGui >= 4.8.0],, [
3692         AS_IF([test -n "${enable_qt}"],[
3693           AC_MSG_ERROR([${QT_PKG_ERRORS}.])
3694         ],[
3695           AC_MSG_WARN([${QT_PKG_ERRORS}.])
3696         ])
3697         enable_qt="no"
3698       ])
3699       QT_PATH="$(eval $PKG_CONFIG --variable=exec_prefix QtCore)"
3700       AC_PATH_PROGS(MOC, [moc-qt4 moc], moc, ["${QT_PATH}/bin"])
3701       AC_PATH_PROG(RCC, rcc, rcc, ["${QT_PATH}/bin"])
3702       AC_PATH_PROGS(UIC, [uic-qt4 uic], uic, ["${QT_PATH}/bin"])
3703     ])
3705 AS_IF([test "${enable_qt}" != "no"], [
3706   VLC_ADD_PLUGIN([qt])
3707   ALIASES="${ALIASES} qvlc"
3709 AC_SUBST(QT_VERSION)
3710 AM_CONDITIONAL(ENABLE_QT, [test "$enable_qt" != "no"])
3711 AM_CONDITIONAL([HAVE_QT5_X11], [test "${have_qt5_x11}" = "yes"])
3714 dnl detect kde4-config patch (used for kde solids).
3716 AC_ARG_VAR([KDE4_CONFIG], [kde4-config utility])
3717 AS_IF([test "x$KDE4_CONFIG" = "x"], [
3718   KDE4_CONFIG="kde4-config"
3722 dnl Simple test for skins2 dependency
3724 AS_IF([test "$enable_qt" = "no"], [
3725   AS_IF([test "${enable_skins2}" = "yes"], [
3726     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.])
3727   ], [
3728     enable_skins2="no"
3729     AC_MSG_WARN([The skins2 module depends on the Qt interface, Qt is not built so skins2 is disabled.])
3730   ])
3734 dnl Skins2 module
3736 AC_ARG_ENABLE(skins2,
3737   [AS_HELP_STRING([--enable-skins2], [skins interface module (default auto)])])
3738 AS_IF([test "${enable_skins2}" != "no"], [
3739   have_skins_deps="yes"
3741   dnl Win32
3742   AS_IF([test "${SYS}" = "mingw32"], [
3743     VLC_ADD_CPPFLAGS([skins2],[-U_OFF_T_ -U_off_t -DWIN32_SKINS])
3744     VLC_ADD_LIBS([skins2],[-lgdi32 -lole32 -luuid -lmsimg32])
3745   dnl OS/2
3746   ], [test "${SYS}" = "os2"], [
3747     VLC_ADD_CPPFLAGS([skins2],[ -DOS2_SKINS])
3748   dnl Linux/Unix
3749   ], [
3750     PKG_CHECK_MODULES([XPM], [xpm],, [have_skins_deps="no"])
3751     PKG_CHECK_MODULES([XINERAMA], [xinerama],, [have_skins_deps="no"])
3752     PKG_CHECK_MODULES([XEXT], [xext],, [have_skins_deps="no"])
3753     VLC_ADD_CPPFLAGS([skins2],[${X_CFLAGS} ${XEXT_CFLAGS} ${XPM_CFLAGS} -DX11_SKINS])
3754     VLC_ADD_LIBS([skins2],[${X_LIBS} ${X_PRE_LIBS} ${XEXT_LIBS} ${XPM_LIBS} ${XINERAMA_LIBS} -lX11])
3755   ])
3757   dnl we need freetype
3758   AS_IF([test "${have_freetype}" != "yes"], [
3759     have_skins_deps="no"
3760   ])
3762   AS_IF([test "${have_skins_deps}" = "no"], [
3763     AS_IF([test "x${enable_skins2}" = "x"], [
3764       AC_MSG_WARN([Skins2 interface disabled due to missing dependencies.])
3765     ], [
3766       AC_MSG_ERROR([Skins2 interface requires FreeType, libxpm, libxext and libxinerama])
3767     ])
3768     enable_skins2="no"
3769   ], [
3770     ALIASES="${ALIASES} svlc"
3771     enable_skins2="yes"
3772   ])
3774 AM_CONDITIONAL(BUILD_SKINS, [test "${enable_skins2}" = "yes"])
3776 AC_ARG_ENABLE(libtar,
3777   [  --enable-libtar         libtar support for skins2 (default auto)])
3778 AS_IF([test "${enable_skins2}" = "yes" && test "${enable_libtar}" != "no"], [
3779   AC_CHECK_HEADERS(libtar.h, [
3780     VLC_ADD_LIBS([skins2],[-ltar])
3781   ])
3785 dnl  MacOS X gui module
3787 AC_ARG_ENABLE(macosx,
3788   [  --enable-macosx         Mac OS X gui support (default enabled on Mac OS X)])
3789 if test "x${enable_macosx}" != "xno" -a "${SYS}" = "darwin"
3790 then
3791   VLC_ADD_PLUGIN([macosx])
3792   AC_PATH_PROGS(XIB, [ibtool], ibtool, ["/usr/bin"])
3794 AM_CONDITIONAL(ENABLE_MACOSX_UI, [test "$enable_macosx" != "no" -a "${SYS}" = "darwin"])
3797 dnl  MacOS X sparkle update support
3799 AC_ARG_ENABLE(sparkle,
3800   [  --enable-sparkle        Sparkle update support for OS X (default enabled on Mac OS X)])
3801 if test "x${enable_sparkle}" != "xno" -a "${HAVE_OSX}" = "1"
3802 then
3803   if test ! -d ${CONTRIB_DIR}/Sparkle.framework -a ! -d ${CONTRIB_DIR}/Frameworks/Sparkle.framework
3804   then
3805     AC_MSG_ERROR([Sparkle framework is required and was not found in ${CONTRIB_DIR}])
3806   fi
3808   AC_DEFINE([HAVE_SPARKLE], [1], [Define to 1 if sparkle is enabled.])
3810 AM_CONDITIONAL(HAVE_SPARKLE, [test "$enable_sparkle" != "no"])
3813 dnl  MacOS X breakpad creash reporter support
3815 AC_ARG_ENABLE(breakpad,
3816   [  --enable-breakpad       Breakpad crash reporter support for OS X (default enabled on Mac OS X)])
3817 if test "x${enable_breakpad}" != "xno" -a "${HAVE_OSX}" = "1"
3818 then
3819   if test ! -d ${CONTRIB_DIR}/Breakpad.framework -a ! -d ${CONTRIB_DIR}/Frameworks/Breakpad.framework
3820   then
3821     AC_MSG_ERROR([Breakpad framework is required and was not found in ${CONTRIB_DIR}])
3822   fi
3824   AC_DEFINE([HAVE_BREAKPAD], [1], [Define to 1 if breakpad is enabled.])
3826 AM_CONDITIONAL(HAVE_BREAKPAD, [test "$enable_breakpad" != "no"])
3830 dnl  Minimal Mac OS X module
3832 AC_ARG_ENABLE(minimal-macosx,
3833   [  --enable-minimal-macosx Minimal Mac OS X support (default disabled)])
3834 if test "${enable_minimal_macosx}" = "yes" -a "${SYS}" = "darwin"
3835 then
3836   VLC_ADD_PLUGIN([minimal_macosx])
3840 dnl Mac OS X fancy dmg build tool
3842 if test "${HAVE_OSX}" = "1"
3843 then
3844   AC_PATH_PROG(DMGBUILD, dmgbuild, no)
3845   AS_IF([test "x${DMGBUILD}" = "xno"], [
3846     AC_MSG_WARN([dmgbuild not found -- unable to build fancy DMGs])
3847   ])
3849 AM_CONDITIONAL(HAVE_DMGBUILD, [test "x$DMGBUILD" != "xno" -a "${HAVE_OSX}" = "1"])
3852 dnl  VideoToolbox plugins
3853 AC_CHECK_HEADERS(VideoToolbox/VideoToolbox.h, [
3854     VLC_ADD_PLUGIN([videotoolbox])
3855     VLC_ADD_PLUGIN([cvpx_i420])
3856   ])
3859 dnl  ncurses module
3861 AC_ARG_ENABLE(ncurses,
3862 [AS_HELP_STRING([--disable-ncurses],[ncurses text-based interface (default auto)])])
3863 have_ncurses="no"
3864 AS_IF([test "${enable_ncurses}" != "no"] ,[
3865   PKG_CHECK_MODULES([NCURSES], [ncursesw], [
3866     have_ncurses="yes"
3867     ALIASES="${ALIASES} nvlc"
3868   ], [
3869     AS_IF([test -n "${enable_ncurses}"], [
3870       AC_MSG_ERROR([${NCURSES_PKG_ERRORS}.])
3871     ])
3872   ])
3874 AM_CONDITIONAL([HAVE_NCURSES], [test "${have_ncurses}" = "yes"])
3877 dnl  Lirc plugin
3879 AC_ARG_ENABLE(lirc,
3880   [  --enable-lirc           lirc support (default disabled)])
3881 have_lirc="no"
3882 AS_IF([test "${enable_lirc}" = "yes"], [
3883   AC_CHECK_HEADER(lirc/lirc_client.h, [
3884     AC_CHECK_LIB(lirc_client, lirc_init, [
3885       have_lirc="yes"
3886     ])
3887   ])
3889 AM_CONDITIONAL([HAVE_LIRC], [test "${have_lirc}" = "yes"])
3891 EXTEND_HELP_STRING([Visualisations and Video filter plugins:])
3893 dnl  goom visualization plugin
3895 PKG_ENABLE_MODULES_VLC([GOOM], [], [libgoom2], [goom visualization plugin], [auto])
3898 dnl libprojectM visualization plugin
3900 AC_ARG_ENABLE(projectm,
3901   [  --enable-projectm       projectM visualization plugin (default enabled)])
3902 AS_IF([test "${enable_projectm}" != "no"],
3903   [
3904     PKG_CHECK_MODULES(PROJECTM, libprojectM,
3905     [
3906       VLC_ADD_PLUGIN([projectm])
3907       PKG_CHECK_EXISTS([libprojectM >= 2.0.0],
3908         [ AC_DEFINE([HAVE_PROJECTM2], 1, [Define to 1 if using libprojectM 2.x]) ],
3909         [ AC_MSG_WARN( [Using libprojectM version 1] )
3910       ])
3911     ],[
3912       AC_MSG_WARN([${PROJECTM_PKG_ERRORS}.])
3913     ])
3914   ])
3917 dnl Vovoid VSXu visualization plugin
3919 AC_ARG_ENABLE(vsxu,
3920   [  --enable-vsxu           Vovoid VSXu visualization plugin (default auto)])
3921 AS_IF([test "${enable_vsxu}" != "no"],
3922   [
3923     PKG_CHECK_MODULES(VSXU, libvsxu,
3924     [
3925       VLC_ADD_PLUGIN([vsxu])
3926     ],[
3927       AC_MSG_WARN([${VSXU_PKG_ERRORS}.])
3928     ])
3929   ])
3931 EXTEND_HELP_STRING([Service Discovery plugins:])
3933 dnl  Avahi-Zeroconf services discovery
3934 PKG_ENABLE_MODULES_VLC([AVAHI], [], [avahi-client >= 0.6], [Zeroconf services discovery], [auto])
3937 dnl  libudev services discovery
3938 PKG_ENABLE_MODULES_VLC([UDEV], [], [libudev >= 142], [Linux udev services discovery], [auto])
3941 dnl MTP devices services discovery
3942 PKG_ENABLE_MODULES_VLC([MTP], [mtp access_mtp], [libmtp >= 1.0.0], [MTP devices support], [auto])
3945 dnl UPnP Plugin (Intel SDK)
3947 PKG_ENABLE_MODULES_VLC([UPNP], [upnp], [libupnp], [Intel UPNP SDK],[auto])
3950 dnl mDNS using libmicrodns
3952 PKG_ENABLE_MODULES_VLC([MICRODNS], [], [microdns], [mDNS services discovery], [auto])
3955 EXTEND_HELP_STRING([Misc options:])
3958 dnl  libxml2 module
3960 PKG_ENABLE_MODULES_VLC([LIBXML2], [xml], [libxml-2.0 >= 2.5], [libxml2 support],[auto])
3964 dnl libgcrypt
3966 AC_ARG_ENABLE(libgcrypt,
3967   [  --disable-libgcrypt     gcrypt support (default enabled)])
3968 AC_ARG_VAR([GCRYPT_CFLAGS], [C compiler flags for gcrypt])
3969 AC_ARG_VAR([GCRYPT_LIBS], [linker flags flags for gcrypt])
3971 # require libgcrypt >= 1.6.0
3972 AS_IF([test "${enable_libgcrypt}" != "no"], [
3973   AC_CACHE_CHECK([for gcrypt 1.6.0 or later], [ac_cv_lib_gcrypt], [
3974     VLC_SAVE_FLAGS
3975     CFLAGS="${CFLAGS} ${GCRYPT_CFLAGS}"
3976     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([
3977 [#include <gcrypt.h>
3978 #if GCRYPT_VERSION_NUMBER < 0x010600
3979 #error
3980 #endif]])], [
3981       ac_cv_lib_gcrypt=yes
3982     ], [
3983       ac_cv_lib_gcrypt=no
3984     ])
3985     VLC_RESTORE_FLAGS
3986   ])
3988   AS_IF([test "${ac_cv_lib_gcrypt}" = "yes"], [
3989     AC_DEFINE([HAVE_GCRYPT], 1, [Defined if having gcrypt])
3990   ], [
3991     AS_IF([test "${enable_libgcrypt}" = "yes"], [
3992       AC_MSG_ERROR([libgcrypt version 1.6.0 or higher not found. Install libgcrypt or pass --disable-libgcrypt.])
3993     ])
3994   ])
3997 AS_IF([test -z "$GCRYPT_LIBS"], [
3998   GCRYPT_LIBS="-lgcrypt -lgpg-error"
4001 AC_SUBST(GCRYPT_CFLAGS)
4002 AC_SUBST(GCRYPT_LIBS)
4003 AM_CONDITIONAL([HAVE_GCRYPT], [test "${ac_cv_lib_gcrypt}" = "yes"])
4006 dnl TLS/SSL
4008 AC_ARG_ENABLE(gnutls,
4009   [  --enable-gnutls         GNU TLS TLS/SSL support (default enabled)])
4010 AS_IF([test "${enable_gnutls}" != "no"], [
4011   PKG_CHECK_MODULES(GNUTLS, [gnutls >= 3.3.6], [
4012     VLC_ADD_PLUGIN([gnutls])
4013   ], [
4014     AS_IF([test -n "${enable_gnutls}"], [
4015       AC_MSG_ERROR([${GNUTLS_PKG_ERRORS}.)])
4016     ])
4017   ])
4022 dnl Taglib plugin
4024 AC_ARG_ENABLE(taglib,
4025   [AS_HELP_STRING([--disable-taglib],
4026     [do not use TagLib (default enabled)])])
4027 AS_IF([test "${enable_taglib}" != "no"], [
4028   PKG_CHECK_MODULES(TAGLIB, taglib >= 1.9, [
4029     VLC_ADD_PLUGIN([taglib])
4030   ], [
4031     AC_MSG_WARN([${TAGLIB_PKG_ERRORS}.])])
4035 dnl  libsecret
4037 PKG_ENABLE_MODULES_VLC([SECRET], [], [libsecret-1 >= 0.18], [use libsecret for keystore], [auto])
4040 dnl  kwallet
4042 AC_ARG_ENABLE(kwallet,
4043   [AS_HELP_STRING([--enable-kwallet],
4044     [use kwallet (via D-Bus) for keystore (default enabled)])])
4045 AS_IF([test "${enable_kwallet}" != "no" -a "${have_dbus}" = "yes"], [
4046   VLC_ADD_PLUGIN([kwallet])
4050 dnl  Developers helper modules (should be hidden from configure help)
4052 AC_ARG_ENABLE(devtools, [], [], [enable_devtools="no"])
4053 AS_IF([test "${enable_devtools}" != "no"], [
4054   VLC_ADD_PLUGIN([accesstweaks])
4058 dnl update checking system
4060 AC_ARG_ENABLE(update-check,
4061   [  --enable-update-check   update checking system (default disabled)])
4062 if test "${enable_update_check}" = "yes"
4063 then
4064  AS_IF([test "${ac_cv_lib_gcrypt}" != "yes"],[
4065     AC_MSG_ERROR([libgcrypt is required for update checking system]) ])
4067 AM_CONDITIONAL(UPDATE_CHECK, [test "${enable_update_check}" = "yes"])
4070 dnl OS X notification plugin
4072 AC_ARG_ENABLE(osx_notifications,
4073   [  --enable-osx-notifications          osx notification plugin (default disabled)],,
4074   [enable_osx_notifications=no])
4075 AS_IF([test "${enable_osx_notifications}" != "no"], [
4076   if test ! -d ${CONTRIB_DIR}/Growl.framework -a ! -d ${CONTRIB_DIR}/Frameworks/Growl.framework
4077   then
4078       VLC_ADD_PLUGIN([osx_notifications])
4079       VLC_ADD_LIBS([osx_notifications], [-Wl,-framework,Growl,-framework,Foundation])
4080       VLC_ADD_OBJCFLAGS([osx_notifications], [-fobjc-exceptions] )
4081   fi
4085 dnl Libnotify notification plugin
4087 PKG_ENABLE_MODULES_VLC([NOTIFY], [], [libnotify gtk+-2.0], [libnotify notification], [auto])
4090 dnl  Endianness check
4092 AC_C_BIGENDIAN
4093 AS_IF([test "${ac_cv_c_bigendian}" = "yes"], [
4094   DEFS_BIGENDIAN="-DWORDS_BIGENDIAN=1"
4095 ], [
4096   DEFS_BIGENDIAN=""
4098 AC_SUBST(DEFS_BIGENDIAN)
4101 dnl Where to install KDE solid .desktop
4103 AC_ARG_WITH(kde-solid,
4104   AS_HELP_STRING([--with-kde-solid=PATH],
4105                  [KDE Solid actions directory (auto)]),, [
4107 if test "${SYS}" != "mingw32" -a "${SYS}" != "darwin" ; then
4108   with_kde_solid="yes"
4111 soliddatadir=""
4112 AS_IF([test "${with_kde_solid}" != "no"], [
4113   AS_IF([test "${with_kde_solid}" = "yes"], [
4114     kde4datadir="`${KDE4_CONFIG} --install data`"
4115     AS_IF([test "x$kde4datadir" = "x"], [kde4datadir='${datadir}/kde4/apps'])
4116     soliddatadir="${kde4datadir}/solid/actions"
4117   ], [
4118     soliddatadir="${with_kde_solid}"
4119   ])
4121 AC_SUBST(soliddatadir)
4122 AM_CONDITIONAL(KDE_SOLID, [test "x${soliddatadir}" != "x"])
4124 EXTEND_HELP_STRING([Components:])
4127 dnl  the VLC binary
4129 AC_ARG_ENABLE(vlc,
4130   [  --enable-vlc            build the VLC media player (default enabled)])
4131 AM_CONDITIONAL(BUILD_VLC, [test "${enable_vlc}" != "no"])
4134 dnl  Stuff used by the program
4136 VERSION_MESSAGE="${VERSION} ${CODENAME}"
4137 COPYRIGHT_MESSAGE="Copyright © ${COPYRIGHT_YEARS} the VideoLAN team"
4138 AC_DEFINE_UNQUOTED(VERSION_MESSAGE, "${VERSION_MESSAGE}", [Simple version string])
4139 AC_DEFINE_UNQUOTED(COPYRIGHT_MESSAGE, "${COPYRIGHT_MESSAGE}", [Copyright string])
4140 AC_DEFINE_UNQUOTED(COPYRIGHT_YEARS, "${COPYRIGHT_YEARS}", [The copyright years])
4141 AC_DEFINE_UNQUOTED(CONFIGURE_LINE, "${CONFIGURE_LINE}", [The ./configure command line])
4142 AC_DEFINE_UNQUOTED(PACKAGE_VERSION_MAJOR,${VERSION_MAJOR}, [version major number])
4143 AC_DEFINE_UNQUOTED(PACKAGE_VERSION_MINOR,${VERSION_MINOR}, [version minor number])
4144 AC_DEFINE_UNQUOTED(PACKAGE_VERSION_REVISION,${VERSION_REVISION}, [version revision number])
4145 AC_DEFINE_UNQUOTED(PACKAGE_VERSION_EXTRA,${VERSION_EXTRA}, [version extra number])
4146 AC_DEFINE_UNQUOTED(PACKAGE_VERSION_DEV,"${VERSION_DEV}", [version development string])
4147 AC_SUBST(COPYRIGHT_MESSAGE)
4148 AC_SUBST(VERSION_MESSAGE)
4149 AC_SUBST(VERSION_MAJOR)
4150 AC_SUBST(VERSION_MINOR)
4151 AC_SUBST(VERSION_REVISION)
4152 AC_SUBST(VERSION_EXTRA)
4153 AC_SUBST(COPYRIGHT_YEARS)
4154 AC_DEFINE_UNQUOTED(VLC_COMPILE_BY, "`whoami|sed -e 's/\\\/\\\\\\\/g'`", [user who ran configure])
4155 AC_DEFINE_UNQUOTED(VLC_COMPILE_HOST, "`hostname -f 2>/dev/null || hostname`", [host which ran configure])
4156 AC_DEFINE_UNQUOTED(VLC_COMPILER, "`$CC -v 2>&1 | tail -n 1 | sed -e 's/ *$//'`", [compiler])
4158 dnl  Handle substvars that use $(top_srcdir)
4160 CPPFLAGS="-I\$(top_srcdir)/include -I\$(top_builddir)/include ${CPPFLAGS}"
4163 dnl  Configuration is finished
4165 AC_SUBST(SYS)
4166 AC_SUBST(ARCH)
4167 AC_SUBST(ALIASES)
4168 AC_SUBST(ASM)
4169 AC_SUBST(MOC)
4170 AC_SUBST(RCC)
4171 AC_SUBST(UIC)
4172 AC_SUBST(WINDRES)
4173 AC_SUBST(WINE_SDK_PATH)
4174 AC_SUBST(LIBEXT)
4175 AC_SUBST(AM_CPPFLAGS)
4176 AC_SUBST(MACOSX_DEPLOYMENT_TARGET)
4177 AC_SUBST(FILE_LIBVLCCORE_DLL)
4178 AC_SUBST(FILE_LIBVLC_DLL)
4180 AC_CONFIG_FILES([
4181   Makefile
4182   doc/Makefile
4183   modules/Makefile
4184   m4/Makefile
4185   po/Makefile.in
4186   share/Makefile
4187   compat/Makefile
4188   src/Makefile
4189   lib/Makefile
4190   bin/Makefile
4191   test/Makefile
4192   modules/gui/macosx/Makefile
4193   modules/gui/qt/Makefile
4194   modules/hw/mmal/Makefile
4195   share/vlc.appdata.xml.in
4198 AM_COND_IF([HAVE_WIN32], [
4199   AC_CONFIG_FILES([
4200     extras/package/win32/NSIS/spad.nsi
4201     extras/package/win32/NSIS/vlc.win32.nsi
4202     extras/package/win32/msi/config.wxi
4203   ])
4206 AM_COND_IF([HAVE_DARWIN], [
4207   AC_CONFIG_FILES([
4208     modules/gui/macosx/UI/InfoPlist.strings:modules/gui/macosx/Resources/InfoPlist.strings.in
4209     share/macosx/Info.plist:share/Info.plist.in
4210   ])
4213 dnl Generate makefiles
4214 AC_OUTPUT
4216 dnl Do we have to use make or gmake ?
4217 if make --version 2>&1|grep -q GNU
4218 then
4219     # GNU make, all seems good
4220     MAKE=make
4221 else
4222     # Known GNU make alias (on BSD)
4223     MAKE=gmake
4225 dnl Shortcut to nice compile message
4226 if test -n $SHELL; then
4227   SHELL=${CONFIG_SHELL-/bin/sh}
4229 rm -f compile
4230 compile_top_srcdir=`sed -ne "s/^top_srcdir *= *//p" < Makefile`
4231 echo "#! $SHELL
4232 rm -f .error\$\$
4233 ERROR=0
4234 export PATH=\"$PATH\" LANG=C
4235 ($MAKE V=1 \$@ 2>&1 || touch .error\$\$)| $compile_top_srcdir/extras/buildsystem/make.pl
4236 test -f .error\$\$ && ERROR=1
4237 rm -f .error\$\$
4238 exit \$ERROR" >compile
4239 chmod a+x compile
4241 echo "
4242 libvlc configuration
4243 --------------------
4244 version               : ${VERSION}
4245 system                : ${SYS}
4246 architecture          : ${ARCH}
4247 optimizations         : ${enable_optimizations}"
4248 if test "${enable_vlc}" != "no"; then
4249 echo "vlc aliases           :${ALIASES}"
4250 else
4251 echo "build vlc executable  : no"
4253 echo "
4254 To build vlc and its plugins, type \`$MAKE', or \`./compile' if you like nice colors."