satip: convert the hardcoded seconds to ticks using vlc_tick_from_sec()
[vlc.git] / configure.ac
blob5e5ec7f22c9f8c2e7ec66aec6b797c166f8339ff
1 dnl Autoconf settings for vlc
3 AC_COPYRIGHT([Copyright 1999-2018 VLC authors and VideoLAN])
5 AC_INIT(vlc, 4.0.0-dev)
6 VERSION_MAJOR=4
7 VERSION_MINOR=0
8 VERSION_REVISION=0
9 VERSION_EXTRA=0
10 VERSION_DEV=dev
12 PKGDIR="vlc"
13 AC_SUBST(PKGDIR)
15 CONFIGURE_LINE="`echo "$0 $ac_configure_args" | sed -e 's/\\\/\\\\\\\/g'`"
16 CODENAME="Otto Chriek"
17 COPYRIGHT_YEARS="1996-2018"
19 AC_CONFIG_SRCDIR(src/libvlc.c)
20 AC_CONFIG_AUX_DIR(autotools)
21 AC_CONFIG_MACRO_DIR(m4)
22 AC_CONFIG_LIBOBJ_DIR(compat)
23 AC_CANONICAL_BUILD
24 AC_CANONICAL_HOST
25 AC_PRESERVE_HELP_ORDER
27 AM_INIT_AUTOMAKE(tar-ustar color-tests foreign)
28 AC_CONFIG_HEADERS([config.h])
30 AM_SILENT_RULES([yes])
31 AM_MAINTAINER_MODE([enable])
33 dnl
34 dnl Check for tools
35 dnl
36 AC_PROG_CC
37 AC_USE_SYSTEM_EXTENSIONS
38 VLC_PROG_CC_C11
39 AC_DEFINE([_FORTIFY_SOURCE], 2, [Define to 2 to get glibc warnings.])
40 AC_DEFINE([_FILE_OFFSET_BITS], 64, [Define to 64 for large files support.])
41 AC_DEFINE([__LIBVLC__],, [Define within the LibVLC source code tree.])
42 AC_DEFINE([WIN32_LEAN_AND_MEAN],, [Define to limit the scope of <windows.h>.])
44 AC_PROG_CXX
45 AC_PROG_CPP
46 AC_PROG_OBJC
47 AC_PROG_EGREP
48 AC_PROG_MAKE_SET
49 AC_PROG_INSTALL
50 AM_PROG_AS
51 AC_PROG_LEX
52 AC_PROG_YACC
54 AC_ARG_VAR([DESKTOP_FILE_VALIDATE], [Validator for desktop entry files])
55 AC_CHECK_PROGS(DESKTOP_FILE_VALIDATE, [${DESKTOP_FILE_VALIDATE} desktop-file-validate], :)
56 AC_ARG_VAR([BUILDCC], [Build system C11 or C99 compiler command])
57 AC_CHECK_PROGS(BUILDCC, [c11-gcc c11 c99-gcc c99], [false])
58 AS_IF([test "$BUILDCC" = "false"], [
59   AC_MSG_ERROR([Cannot find native C99 compiler: please define BUILDCC.])
62 dnl Check for compiler properties
63 AC_C_CONST
64 AC_C_INLINE
65 AC_C_RESTRICT
66 AX_CXX_COMPILE_STDCXX_11(noext, mandatory)
68 dnl Extend the --help string at the current spot.
69 AC_DEFUN([EXTEND_HELP_STRING], [m4_divert_once([HELP_ENABLE], [$1])])
71 dnl Allow binary package maintainer to pass a custom string to avoid
72 dnl cache problem
73 AC_ARG_WITH(binary-version,
74     AS_HELP_STRING([--with-binary-version=STRING],
75          [To avoid plugins cache problem between binary version]),[],[])
76 AS_IF([test -n "${with_binary_version}"],[
77     AC_DEFINE_UNQUOTED([DISTRO_VERSION],["${with_binary_version}"],
78          [Binary specific version])
81 dnl Prevent clang from accepting unknown flags with a mere warning
82 AX_APPEND_COMPILE_FLAGS([-Werror=unknown-warning-option -Werror=invalid-command-line-argument], [CFLAGS])
83 AX_APPEND_COMPILE_FLAGS([-Werror=unknown-warning-option -Werror=invalid-command-line-argument], [CXXFLAGS])
85 dnl
86 dnl  Check the operating system
87 dnl
88 HAVE_WIN64="0"
89 HAVE_IOS="0"
90 HAVE_OSX="0"
91 HAVE_TVOS="0"
93 case "${host_os}" in
94   "")
95     SYS=unknown
96     ;;
97   linux*)
98     SYS=linux
99     CFLAGS="${CFLAGS} -pthread"
100     ;;
101   bsdi*)
102     SYS=bsdi
103     CFLAGS="${CFLAGS} -pthread"
104     ;;
105   freebsd*)
106     SYS=freebsd
107     CFLAGS="${CFLAGS} -pthread"
108     CPPFLAGS="${CPPFLAGS} -I/usr/local/include"
109     LDFLAGS="${LDFLAGS} -L/usr/local/lib"
110     ac_cv_ld_z_defs=no
111     ;;
112   openbsd*)
113     SYS=openbsd
114     CPPFLAGS="${CPPFLAGS} -I/usr/local/include -I/usr/X11R6/include"
115     LDFLAGS="${LDFLAGS} -L/usr/local/lib -L/usr/X11R6/lib/"
116     ;;
117   netbsd*)
118     SYS=netbsd
119     ;;
120   dragonfly*)
121     SYS=dragonfly
122     ;;
123   darwin*)
125     dnl Force gcc "-arch" flag
126     ARCH_flag=""
127     case "${host_cpu}" in
128       i?86)
129         ARCH_flag="-arch i386"
130       ;;
131       ppc64*)
132         ARCH_flag="-arch ppc64"
133       ;;
134       ppc*)
135         ARCH_flag="-arch ppc"
136       ;;
137       x86_64)
138         ARCH_flag="-arch x86_64"
139       ;;
140       arm*)
141         ac_cv_c_bigendian="no"
142         ac_cv_c_attribute_packed="no"
143       ;;
144     esac
146     SYS=darwin
147     CFLAGS="${CFLAGS} -D_INTL_REDIRECT_MACROS -std=gnu11 ${ARCH_flag}"
148     CXX="${CXX} -stdlib=libc++ -std=c++11"
149     CXXFLAGS="${CXXFLAGS} -D_INTL_REDIRECT_MACROS ${ARCH_flag}"
150     CPPFLAGS="${CPPFLAGS} ${ARCH_flag}"
151     OBJCFLAGS="${OBJCFLAGS} -D_INTL_REDIRECT_MACROS -std=gnu11 ${ARCH_flag} -Werror=partial-availability"
152     LDFLAGS="${LDFLAGS} -Wl,-headerpad_max_install_names ${ARCH_flag}"
153     VLC_ADD_LIBS([libvlc vlc],[-Wl,-undefined,dynamic_lookup,-framework,AppKit])
154     VLC_ADD_LIBS([libvlccore],[-Wl,-framework,CoreFoundation,-framework,CoreServices])
156     AC_EGREP_CPP(yes,
157             [#import <TargetConditionals.h>
158              #if TARGET_OS_IPHONE
159              yes
160              #endif],
161              [HAVE_IOS="1"],
162              [HAVE_OSX="1"])
164     AC_EGREP_CPP(yes,
165             [#import <TargetConditionals.h>
166              #if TARGET_OS_TV
167              yes
168              #endif],
169              [HAVE_TVOS="1"
170              HAVE_IOS="0"
171              HAVE_OSX="0"
172              ],)
174     dnl
175     dnl  Handle Mac OS X SDK flags
176     dnl
177     AC_ARG_WITH(macosx-sdk,
178       [AS_HELP_STRING([--with-macosx-sdk=DIR],
179         [compile using the SDK in DIR])])
180     if test "${with_macosx_sdk}" != "" ; then
181         test ! -d "${with_macosx_sdk}" && AC_MSG_ERROR([SDK "${with_macosx_sdk}" not found])
182         CPP="${CPP} -isysroot ${with_macosx_sdk}"
183         CC="${CC} -isysroot ${with_macosx_sdk}"
184         CXX="${CXX} -isysroot ${with_macosx_sdk}"
185         OBJC="${OBJC} -isysroot ${with_macosx_sdk}"
186         LD="${LD} -syslibroot ${with_macosx_sdk}"
187     fi
188     AC_ARG_WITH(macosx-version-min,
189       [AS_HELP_STRING([--with-macosx-version-min=VERSION],
190         [compile for Mac OS X VERSION and above])])
191     if test "${with_macosx_version_min}" != "" ; then
192         CPP="${CPP} -mmacosx-version-min=${with_macosx_version_min}"
193         CC="${CC} -mmacosx-version-min=${with_macosx_version_min}"
194         CXX="${CXX} -mmacosx-version-min=${with_macosx_version_min}"
195         OBJC="${OBJC} -mmacosx-version-min=${with_macosx_version_min}"
196         LD="${LD} -mmacosx_version_min=${with_macosx_version_min}"
197     fi
198     ;;
199   *mingw32* | *cygwin* | *wince* | *mingwce*)
200     dnl Force libtool to not link to (shared) libgcc_s when detecting C++ dependencies
201     dnl When doing this test with -static-libgcc it will link on (static) libgcc_eh
202     CXXFLAGS="${CXXFLAGS} -static-libgcc"
203     AC_CHECK_TOOL(WINDRES, windres, :)
204     AC_CHECK_TOOL(OBJCOPY, objcopy, :)
205     AH_TOP([#if defined(_WIN32) && !defined(_WIN32_WINNT)])
206     AH_TOP([# define _WIN32_WINNT 0x0601 /* Windows 7 */])
207     AH_TOP([#endif])
208     AC_DEFINE([_WIN32_WINNT], 0x0601, [Define to '0x0601' for Windows 7 APIs.])
209     AC_DEFINE([_WIN32_IE], 0x0600, [Define to '0x0600' for IE 6.0 (and shell) APIs.])
210     AC_DEFINE([_UNICODE], [1], [Define to 1 for Unicode (Wide Chars) APIs.])
211     AC_DEFINE([UNICODE], [1], [Define to 1 for Unicode (Wide Chars) APIs.])
212     AC_DEFINE([_ISOC99_SOURCE], [1], [Extensions to ISO C89 from ISO C99.])
213     AC_DEFINE([_ISOC11_SOURCE], [1], [Extensions to ISO C99 from ISO C11.])
214     AC_DEFINE([_POSIX_SOURCE], [1], [IEEE Std 1003.1.])
215     AC_DEFINE([_POSIX_C_SOURCE], [200809L], [IEEE Std 1003.1.])
216     AC_DEFINE([_XOPEN_SOURCE], [700], [POSIX and XPG 7th edition])
217     AC_DEFINE([_XOPEN_SOURCE_EXTENDED], [1], [XPG things and X/Open Unix extensions.])
218     AC_DEFINE([_BSD_SOURCE], [1], [ISO C, POSIX, and 4.3BSD things.])
219     AC_DEFINE([_SVID_SOURCE], [1], [ISO C, POSIX, and SVID things.])
221     case "${host_os}" in
222       *mingw32*)
223         SYS=mingw32
224         ;;
225       *cygwin*)
226         dnl Check if we are using the mno-cygwin mode in which case we are
227         dnl actually dealing with a mingw32 compiler.
228         AC_EGREP_CPP(yes,
229             [#ifdef _WIN32
230              yes
231              #endif],
232             SYS=mingw32, AC_MSG_ERROR([VLC requires -mno-cygwin]))
233         ;;
234     esac
236     if test "${SYS}" = "mingw32"; then
237         # DEP, ASLR, NO SEH
238         LDFLAGS="${LDFLAGS} -Wl,--nxcompat -Wl,--no-seh -Wl,--dynamicbase"
240         AC_CHECK_PROGS(U2D, [unix2dos todos], unix2dos)
241         ac_default_prefix="`pwd`/_win32"
242         DESTDIR="`pwd`/_win32/"
244         dnl
245         dnl NSIS/MSI Installer prefix and WIN64
246         dnl
247         case "${host_cpu}" in
248             amd64|x86_64)
249                 HAVE_WIN64="1"
250                 WINDOWS_ARCH="x64"
251                 PROGRAMFILES="PROGRAMFILES64"
252                 LDFLAGS="${LDFLAGS} -Wl,--high-entropy-va -Wl,--image-base,0x140000000"
253             ;;
254             *)
255                 WINDOWS_ARCH="x86"
256                 PROGRAMFILES="PROGRAMFILES"
257             ;;
258         esac
259         AC_SUBST(WINDOWS_ARCH)
260         AC_SUBST(PROGRAMFILES)
262     fi
263     ;;
264   *nto*)
265     SYS=nto
266     ;;
267   solaris*)
268     SYS=solaris
269     ;;
270   hpux*)
271     SYS=hpux
272     ;;
273   *os2*)
274     SYS=os2
275     LDFLAGS="${LDFLAGS} -Zomf -Zbin-files -Zargs-wild -Zhigh-mem"
276     AC_LIBOBJ([freeaddrinfo])
277     AC_LIBOBJ([gai_strerror])
278     AC_CHECK_FUNCS([if_nametoindex])
279     ;;
280   *nacl*)
281     SYS=nacl
282     AC_DEFINE([_XOPEN_SOURCE], [700], [POSIX and XPG 7th edition])
283     AC_LIBOBJ([sigwait])
284     AC_LIBOBJ([recvmsg])
285     AC_LIBOBJ([sendmsg])
286     ;;
287   *)
288     SYS="${host_os}"
289     ;;
290 esac
292 dnl WinRT
293 AC_ARG_ENABLE(winstore_app,
294      AS_HELP_STRING([--enable-winstore-app],
295                     [Build targetted for Windows Store apps (default disabled)]))
297 vlc_winstore_app=0
298 AS_IF([test "${SYS}" = "mingw32"],[
299   LIBCOM="-lole32"
300   AS_IF([test "${enable_winstore_app}" = "yes"], [
301     vlc_winstore_app=1
302     LIBCOM=""
303      VLC_ADD_LIBS([libvlccore], [-lruntimeobject])
304      AC_LIBOBJ([gai_strerror])
305     ],[])
306   AC_SUBST(LIBCOM)
307   ])
308 AC_DEFINE_UNQUOTED(VLC_WINSTORE_APP, ${vlc_winstore_app}, [Define to 1 if you want to build for Windows Store apps])
310 AM_CONDITIONAL(HAVE_LINUX,   test "${SYS}" = "linux")
311 AM_CONDITIONAL(HAVE_OS2,     test "${SYS}" = "os2")
313 AM_CONDITIONAL(HAVE_DARWIN,  test "${SYS}" = "darwin")
314 AM_CONDITIONAL(HAVE_IOS,     test "${HAVE_IOS}" = "1")
315 AM_CONDITIONAL(HAVE_OSX,     test "${HAVE_OSX}" = "1")
316 AM_CONDITIONAL(HAVE_TVOS,    test "${HAVE_TVOS}" = "1")
318 AM_CONDITIONAL(HAVE_NACL,    test "${SYS}" = "nacl")
319 AM_CONDITIONAL(HAVE_LIBANL,  test "${HAVE_LIBANL}" = "1")
321 AM_CONDITIONAL(HAVE_WIN32,   test "${SYS}" = "mingw32")
322 AM_CONDITIONAL(HAVE_WIN64,   test "${HAVE_WIN64}" = "1") dnl Only used for the packaging
323 AM_CONDITIONAL([HAVE_WINSTORE], [test "$vlc_winstore_app" = "1"])
324 AM_CONDITIONAL([HAVE_WIN32_DESKTOP], [test "${SYS}" = "mingw32" -a "$vlc_winstore_app" = "0"])
327 dnl Sadly autoconf does not think about testing foo.exe when ask to test
328 dnl for program foo on win32
329 case "${build_os}" in
330     cygwin|msys|mingw32)
331         ac_executable_extensions=".exe"
332         BUILDEXEEXT=".exe"
333     ;;
334     os2*)
335         BUILDEXEEXT=".exe"
336     ;;
337     *)
338     ;;
339 esac
340 AC_SUBST(BUILDEXEEXT)
342 dnl Android is linux, but a bit different
343 AS_IF([test "$SYS" = linux],[
344     AC_MSG_CHECKING([for an Android system])
345     AC_PREPROC_IFELSE([AC_LANG_PROGRAM(
346         [[#ifndef __ANDROID__
347          # error Not Android
348          #endif
349         ]],[[;]])
350     ],[
351       HAVE_ANDROID="1"
352       AC_MSG_RESULT([yes])
353     ],[
354       AC_MSG_RESULT([no])
355     ])
357 AM_CONDITIONAL(HAVE_ANDROID, test "${HAVE_ANDROID}" = "1")
359 dnl Tizen (minimum SDK version: 2.3)
360 AS_IF([test "$SYS" = linux],[
361     AC_MSG_CHECKING([for Tizen])
362     AC_PREPROC_IFELSE([AC_LANG_PROGRAM(
363         [[#include <tizen.h>
364         ]],[[;]])
365     ],[
366       HAVE_TIZEN="1"
367       AC_DEFINE([HAVE_TIZEN_SDK], [1], [Define to 1 if vlc is built against Tizen SDK])
368       AC_MSG_RESULT([yes])
369     ],[
370       AC_MSG_RESULT([no])
371     ])
373 AM_CONDITIONAL(HAVE_TIZEN, test "${HAVE_TIZEN}" = "1")
376 dnl  Check for the contrib directory
378 AC_ARG_WITH(contrib,
379   [AS_HELP_STRING([--with-contrib[=DIR]],
380     [search for 3rd party libraries in DIR/include and DIR/lib])
382 AC_MSG_CHECKING([for 3rd party libraries path])
383 AS_IF([test -z "${with_contrib}" || test "${with_contrib}" = "yes"], [
384   CONTRIB_DIR="${srcdir}/contrib/${host}"
385   AS_IF([test ! -d "${CONTRIB_DIR}"], [
386     echo "${CONTRIB_DIR} not found" >&AS_MESSAGE_LOG_FD
387     CONTRIB_DIR="${srcdir}/contrib/`$CC -dumpmachine`"
388     AS_IF([test ! -d "${CONTRIB_DIR}"], [
389       echo "${CONTRIB_DIR} not found" >&AS_MESSAGE_LOG_FD
390       CONTRIB_DIR=""
391       AC_MSG_RESULT([not found])
392     ])
393   ])
394 ], [
395   AS_IF([test "${with_contrib}" != "no"], [
396     CONTRIB_DIR="${with_contrib}"
397   ], [
398     CONTRIB_DIR=""
399     AC_MSG_RESULT([disabled])
400   ])
402 AS_IF([test -n "${CONTRIB_DIR}"], [
403   AS_IF([test -d "${CONTRIB_DIR}/lib"],[
404     CONTRIB_DIR=`cd "${CONTRIB_DIR}" && pwd`
405   ], [
406     echo "${CONTRIB_DIR}/lib not found" >&AS_MESSAGE_LOG_FD
407     CONTRIB_DIR=""
408     AC_MSG_RESULT([not usable])
409   ])
412 AS_IF([test -n "${CONTRIB_DIR}"], [
413   AC_MSG_RESULT([${CONTRIB_DIR}])
414   CPPFLAGS="${CPPFLAGS} -I${CONTRIB_DIR}/include"
415   CFLAGS="${CFLAGS} -I${CONTRIB_DIR}/include"
416   CXXFLAGS="${CXXFLAGS} -I${CONTRIB_DIR}/include"
417   OBJCFLAGS="${OBJCFLAGS} -I${CONTRIB_DIR}/include -F${CONTRIB_DIR} -F${CONTRIB_DIR}/Frameworks"
418   export PKG_CONFIG_PATH="${CONTRIB_DIR}/lib/pkgconfig:$PKG_CONFIG_PATH"
419   LDFLAGS="${LDFLAGS} -L${CONTRIB_DIR}/lib"
421   AS_IF([test -z "$LUAC"], [
422     dnl Old contribs mixed cross-tools and cross-compiled executables
423     AS_IF([test -x "${CONTRIB_DIR}/bin/luac${BUILDEXEEXT}"], [
424       LUAC="${CONTRIB_DIR}/bin/luac${BUILDEXEEXT}"
425     ])
427     dnl Newer contribs follow usual name space rules
428     AS_IF([test -x "${CONTRIB_DIR}/../bin/${host_alias}-luac${BUILDEXEEXT}"], [
429       LUAC="${CONTRIB_DIR}/../bin/${host_alias}-luac${BUILDEXEEXT}"
430     ])
431   ])
433   AS_IF([test "${SYS}" = "darwin"], [
434     export LD_LIBRARY_PATH="${CONTRIB_DIR}/lib:$LD_LIBRARY_PATH"
435     export DYLD_LIBRARY_PATH="${CONTRIB_DIR}/lib:$DYLD_LIBRARY_PATH"
436   ])
437 ], [
438   AS_IF([test -n "${with_contrib}" && test "${with_contrib}" != "no"], [
439     AC_MSG_ERROR([Third party libraries not found!])
440   ])
442 AC_SUBST(CONTRIB_DIR)
444 dnl Add extras/tools to the PATH
445 TOOLS_DIR="${srcdir}/extras/tools/build/bin"
446 AS_IF([test -d "${TOOLS_DIR}"], [
447     TOOLS_DIR=`cd "${TOOLS_DIR}" && pwd`
448     export PATH="${TOOLS_DIR}":$PATH
452 dnl  Libtool
453 dnl  It's very bad, but our former custom system was worst
454 dnl  -- Courmisch
457 dnl override platform specific check for dependent libraries
458 dnl otherwise libtool linking of shared libraries will
459 dnl fail on anything other than pass_all.
460 AC_CACHE_VAL(lt_cv_deplibs_check_method,
461     [lt_cv_deplibs_check_method=pass_all])
463 LT_INIT([dlopen win32-dll shared disable-static])
464 LT_LANG([C++])
465 LT_LANG([Windows Resource])
467 DOLT
469 lt_cv_deplibs_check_method=pass_all
471 AS_IF([test "${enable_shared}" = "no" -a "${enable_vlc}" != "no"], [
472   AC_MSG_ERROR([VLC is based on plugins. Shared libraries cannot be disabled.])
476 dnl Gettext stuff
478 AM_GNU_GETTEXT_VERSION([0.19.8])
479 AM_GNU_GETTEXT([external], [need-formatstring-macros])
482 dnl Iconv stuff
484 AM_ICONV
487 dnl checks for mingw
488 AS_IF([test "${SYS}" = "mingw32"], [
490 AC_PREPROC_IFELSE([AC_LANG_SOURCE([
491 #if !defined(__MINGW32__)
492 # error Not compiling with mingw
493 #endif
494     ])], [
496 dnl Check for broken versions of mingw-runtime compatability library
497     AC_MSG_CHECKING(for broken mingw-runtime)
498     AC_PREPROC_IFELSE([AC_LANG_SOURCE([
499 #include <_mingw.h>
500 #if defined(__MINGW64_VERSION_MAJOR)
501 # if __MINGW64_VERSION_MAJOR < 5
502 #  error Update your mingw-w64! This one is too old.
503 # endif
504 #else
505 # error You cannot compile with Mingw. Use Mingw-w64!
506 #endif
507     ])], [
508         AC_MSG_RESULT([ok])
509     ], [
510         AC_MSG_RESULT([present])
511         AC_MSG_ERROR([LibVLC requires Mingw-w64 version 5.0 or higher!])
512     ])
514     dnl force use of mingw provided c99 *printf over msvcrt
515     CPPFLAGS="${CPPFLAGS} -D__USE_MINGW_ANSI_STDIO=1"
517     dnl Check for the need to include the mingwex lib for mingw32
518     VLC_SAVE_FLAGS
519     AC_CHECK_LIB(mingwex,opendir,
520         AC_CHECK_LIB(mingw32,opendir,,
521             [VLC_ADD_LIBS([libvlccore],[-lmingwex])])
522     )
523     VLC_RESTORE_FLAGS
524     ], [
525         AC_MSG_RESULT([Not compiling with mingw])
526     ])
528     dnl Check for fnative-struct or mms-bitfields support for mingw32
529     AX_CHECK_COMPILE_FLAG([-mms-bitfields], [
530         AX_APPEND_FLAG([-mms-bitfields], [CFLAGS])
531         AX_APPEND_FLAG([-mms-bitfields], [CXXFLAGS])
532         # Check for the warning flag without "-Wno-", GCC accepts
533         # -Wno-<anything> for unsupported warnings, which can trigger
534         # other warnings instead.
535         AX_CHECK_COMPILE_FLAG([-Wincompatible-ms-struct], [
536             AX_APPEND_FLAG([-Wno-incompatible-ms-struct], [CFLAGS])
537             AX_APPEND_FLAG([-Wno-incompatible-ms-struct], [CXXFLAGS])
538         ])
539     ], [
540         AX_CHECK_COMPILE_FLAG([-fnative-struct], [
541             AX_APPEND_FLAG([-fnative-struct], [CFLAGS])
542             AX_APPEND_FLAG([-fnative-struct], [CXXFLAGS])
543         ])
544     ])
549 dnl Buggy glibc prevention. Purposedly not cached.
550 dnl See sourceware.org bugs 5058 and 5443.
551 dnl Ubuntu alone has 20 bug numbers for this...
553 AC_MSG_CHECKING(for buggy GNU/libc versions)
554 AC_PREPROC_IFELSE([AC_LANG_SOURCE([
555 #include <limits.h>
556 #if defined (__GLIBC__) && (__GLIBC__ == 2) \
557   && (__GLIBC_MINOR__ >= 5) && (__GLIBC_MINOR__ <= 7)
558 # error GNU/libc with dcgettext killer bug!
559 #endif
560 ])], [
561   AC_MSG_RESULT([not present])
562 ], [
563   AC_MSG_RESULT([found])
564   AS_IF([test "x${enable_nls}" != "xno"], [
565     AC_MSG_ERROR([Buggy GNU/libc (version 2.5 - 2.7) present. VLC would crash; there is no viable
566 work-around for this. Check with your distribution vendor on how to update the
567 glibc run-time. Alternatively, build with --disable-nls.])
568   ])
571 dnl Plugin compilation stuff
573 VLC_LIBRARY_SUFFIX
575 dnl Check for system libs needed
576 need_libc=false
578 dnl Check for usual libc functions
579 AC_CHECK_FUNCS([accept4 daemon fcntl flock fstatvfs fork getenv getpwuid_r isatty memalign mkostemp mmap open_memstream newlocale openat pipe2 pread posix_fadvise posix_madvise posix_memalign setlocale stricmp strnicmp strptime uselocale])
580 AC_REPLACE_FUNCS([aligned_alloc atof atoll dirfd fdopendir flockfile fsync getdelim getpid lldiv memrchr nrand48 poll recvmsg rewind sendmsg setenv strcasecmp strcasestr strdup strlcpy strndup strnlen strnstr strsep strtof strtok_r strtoll swab tdestroy tfind timegm timespec_get strverscmp pathconf])
581 AC_REPLACE_FUNCS([gettimeofday])
582 AC_CHECK_FUNC(fdatasync,,
583   [AC_DEFINE(fdatasync, fsync, [Alias fdatasync() to fsync() if missing.])
586 VLC_REPLACE_DECL([realpath], [#include <stdlib.h>])
588 dnl mingw64 implements those as static inline, not functions with C linkage
589 VLC_REPLACE_DECL([asprintf], [#include <stdio.h>])
590 VLC_REPLACE_DECL([vasprintf], [#include <stdio.h>])
591 VLC_REPLACE_DECL([gmtime_r], [#include <time.h>])
592 VLC_REPLACE_DECL([localtime_r], [#include <time.h>])
594 dnl C11 static_assert()
595 AC_MSG_CHECKING([for static_assert in assert.h])
596 AC_LINK_IFELSE([AC_LANG_PROGRAM([#include <assert.h>], [
597 static_assert(1, "The impossible happened.");
598 ])], [
599   AC_MSG_RESULT([yes])
600   AC_DEFINE([HAVE_STATIC_ASSERT], [1], [Define to 1 if <assert.h> defines static_assert.])
601 ], [
602   AC_MSG_RESULT([no])
605 # Windows CE does not have strcoll()
606 AC_FUNC_STRCOLL
608 dnl Check for non-standard system calls
609 case "$SYS" in
610   "linux")
611     AC_CHECK_FUNCS([eventfd vmsplice sched_getaffinity recvmmsg memfd_create])
612     ;;
613   "mingw32")
614     AC_CHECK_FUNCS([_lock_file])
615     ;;
616 esac
618 AH_BOTTOM([#include <vlc_fixups.h>])
620 dnl Check for struct pollfd
621 AC_CHECK_TYPES([struct pollfd],,,
622 [#include <sys/types.h>
623 #if HAVE_POLL
624 # include <poll.h>
625 #elif defined (_WIN32)
626 # include <winsock2.h>
627 #endif
630 dnl Check for struct timespec
631 AC_CHECK_TYPES([struct timespec],,,
632 [#include <time.h>])
634 dnl Check for max_align_t
635 AC_CHECK_TYPES([max_align_t],,,
636 [#include <stddef.h>])
638 dnl Checks for socket stuff
639 VLC_SAVE_FLAGS
640 SOCKET_LIBS=""
641 AC_SEARCH_LIBS(connect, [socket], [
642   AS_IF([test "$ac_cv_search_connect" != "none required"], [
643     SOCKET_LIBS="$ac_cv_search_connect"
644   ])
645 ], [
646   AS_IF([test "${SYS}" = "mingw32"], [
647     SOCKET_LIBS="-lws2_32 -liphlpapi"
648   ])
651 AC_SEARCH_LIBS([inet_pton], [nsl], [
652  AS_IF([test "$ac_cv_search_inet_pton" != "none required"], [
653     SOCKET_LIBS="$ac_cv_search_inet_pton $SOCKET_LIBS"
654   ])
655 ],, [${SOCKET_LIBS}])
657 LIBS="${LIBS} ${SOCKET_LIBS}"
658 AC_LINK_IFELSE([
659     AC_LANG_PROGRAM([#ifdef _WIN32
660         #include <ws2tcpip.h>
661         #include <windows.h>
662         # if _WIN32_WINNT < 0x600
663         #  error Needs vista+
664         # endif
665         #else
666         #include <sys/socket.h>
667         #include <arpa/inet.h>
668         #endif], [
669         char dst[[sizeof(struct in_addr)]];
670         inet_pton(AF_INET, "127.0.0.1", dst);
671     ])],[AC_DEFINE([HAVE_INET_PTON],[1],[Define to 1 if you have inet_pton function])],[AC_LIBOBJ([inet_pton])])
672 AC_CHECK_FUNCS([if_nameindex])
673 VLC_RESTORE_FLAGS
674 AC_SUBST(SOCKET_LIBS)
676 dnl Check for socklen_t
677 AH_TEMPLATE(socklen_t, [Define to `int' if <sys/socket.h> does not define.])
678 AC_CACHE_CHECK([for socklen_t in sys/socket.h], dnl ` (fix VIM syntax highlight
679 ac_cv_type_socklen_t,
680 [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([
681 [#include <sys/types.h>
682 #ifdef _WIN32
683 # include <winsock2.h>
684 # include <ws2tcpip.h>
685 #else
686 # include <sys/socket.h>
687 #endif]], [[socklen_t len; len = 0;]])],
688 ac_cv_type_socklen_t=yes,
689 ac_cv_type_socklen_t=no)])
690 AS_IF([test "$ac_cv_type_socklen_t" = no],
691  [AC_DEFINE(socklen_t, int)])
693 dnl Check for struct sockaddr_storage
694 AH_TEMPLATE(sockaddr_storage, [Define to `sockaddr' if <sys/socket.h> does not define.]) dnl ` (fix VIM syntax highlight
695 AH_TEMPLATE(ss_family, [Define to `sa_family' if <sys/socket.h> does not define.]) dnl ` (fix VIM syntax highlight
696 AC_CACHE_CHECK([for struct sockaddr_storage], ac_cv_struct_sockaddr_storage,
697   [AC_TRY_COMPILE(
698     [#include <sys/types.h>
699      #if defined( _WIN32 )
700      # include <winsock2.h>
701      #else
702      # include <sys/socket.h>
703      #endif], [struct sockaddr_storage addr;],
704      ac_cv_struct_sockaddr_storage=yes,
705      ac_cv_struct_sockaddr_storage=no)])
706 AS_IF([test "${ac_cv_struct_sockaddr_storage}" = no], [
707   AC_DEFINE(sockaddr_storage, sockaddr)
708   AC_DEFINE(ss_family, sa_family)
711 dnl FreeBSD has a gnugetopt library for this:
712 GNUGETOPT_LIBS=""
713 AC_CHECK_FUNC(getopt_long,, [
714   AC_CHECK_LIB([gnugetopt],[getopt_long], [
715     GNUGETOPT_LIBS="-lgnugetopt"
716   ])
718 AC_SUBST(GNUGETOPT_LIBS)
720 AC_CHECK_LIB(m,cos,[
721   LIBM="-lm"
722 ], [
723   LIBM=""
725 AC_SUBST(LIBM)
727 AC_CHECK_LIB(m,lrintf, [
728   AC_DEFINE(HAVE_LRINTF, 1, [Define to 1 if you have the lrintf function])
729   VLC_ADD_LIBS([skins2],[-lm])
731 AC_CHECK_LIB(m,nanf,
732   AC_DEFINE(HAVE_NANF, 1, [Define to 1 if you have the NANF function])
734 AC_CHECK_LIB(m,sincos, [
735   AC_DEFINE(HAVE_SINCOS, 1, [Define to 1 if you have the sincos function.])
736 ], [
737   AC_LIBOBJ([sincos])
740 AC_MSG_CHECKING([_Thread_local support])
741 AC_COMPILE_IFELSE([AC_LANG_SOURCE([_Thread_local int foo = 0;
742                    int main() {}])], [
743     AC_MSG_RESULT([ok])
744     AC_DEFINE(HAVE_THREAD_LOCAL, 1, [Defined to 1 if C11 _Thread_local storage qualifier is supported])
745 ],[ AC_MSG_RESULT([no])])
747 dnl __STDC_NO_THREADS__ can't be trusted on some platforms.
748 dnl check for its availability explicitely
749 AC_CHECK_HEADERS([threads.h])
751 AC_CHECK_LIB([anl],[getaddrinfo_a],[
752   AC_DEFINE(HAVE_LIBANL, 1, [Define to 1 if you have the anl library])
755 dnl Check for dynamic plugins
756 LIBDL=""
757 have_dynamic_objects="no"
758 VLC_SAVE_FLAGS
759 AC_SEARCH_LIBS(dlsym, [dl svld], [
760   AS_IF([test "$ac_cv_search_dlsym" != "none required"], [
761     LIBDL="$ac_cv_search_dlsym"
762   ])
763   have_dynamic_objects="yes"
765 VLC_RESTORE_FLAGS
767 # Windows
768 AS_IF([test "${SYS}" = "mingw32"], [
769   LIBDL=""
770   have_dynamic_objects="yes" #assume we can use shared objects
773 AC_ARG_WITH([libfuzzer],
774     [AS_HELP_STRING([--with-libfuzzer=DIR],
775         [use libFuzzer library from DIR and triggers sanitize coverage (default disabled)])],
776      [],
777      [with_libfuzzer=no])
778 AS_VAR_IF(with_libfuzzer, no, [], [
779     enable_shared=no
780     enable_static=yes
781     enable_vlc=no
783 AM_CONDITIONAL(HAVE_LIBFUZZER, [test "${with_libfuzzer}" != "no"])
785 AS_IF([test "${enable_shared}" = "no"], [
786   have_dynamic_objects=no
788 AM_CONDITIONAL(HAVE_DYNAMIC_PLUGINS, [test "${have_dynamic_objects}" != "no"])
790 AC_SUBST(LIBDL)
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/tcp.h 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 Check if C++ headers define locale_t
829 AC_LANG_PUSH(C++)
830 AC_CACHE_CHECK([if C++ headers define locale_t],
831   [ac_cv_cxx_locale_t],
832   [ac_cv_cxx_locale_t=no
833    AC_TRY_COMPILE([#include <locale>], [locale_t loc;],
834                     [ac_cv_cxx_locale_t=yes])])
835 if test "${ac_cv_cxx_locale_t}" != "no"; then
836   AC_DEFINE(HAVE_CXX_LOCALE_T, 1, Define to 1 if C++ headers define locale_t)
838 AC_LANG_POP(C++)
840 dnl LP64 and LLP64 architectures had better define ssize_t by themselves...
841 AH_TEMPLATE(ssize_t, [Define to `int' if <stddef.h> does not define.]) dnl ` (fix VIM syntax highlight
842 AC_CHECK_TYPE(ssize_t,, [
843   AC_DEFINE(ssize_t, int)
846 dnl It seems that autoconf detects pkg-config only during the first
847 dnl PKG_CHECK_MODULES from configure.ac - which makes sense. But in our case,
848 dnl it is nested within a conditional block, so it was not working right.
849 dnl Make PKG_CONFIG_PATH precious so that it appears in the help and get saved
850 AC_ARG_VAR(PKG_CONFIG_PATH,
851        [Paths where to find .pc not at the default location])
852 PKG_PROG_PKG_CONFIG()
854 dnl On some OS we need static linking
855 AS_IF([test -n "${PKG_CONFIG}" ],[
856     AS_IF([test "${SYS}" = "mingw32" -o "${SYS}" = "darwin" -o "${SYS}" = "os2" ],[
857         PKG_CONFIG="${PKG_CONFIG} --static"
858     ])
863 dnl Check for zlib.h and -lz if available
865 AC_CHECK_HEADERS(zlib.h, [ have_zlib=yes ], [ have_zlib=no ])
866 AM_CONDITIONAL(HAVE_ZLIB, [ test "${have_zlib}" = "yes" ])
867 if test "${have_zlib}" = "yes"
868 then
869   VLC_ADD_LIBS([sap],[-lz])
874 dnl Domain name i18n support via GNU libidn
876 PKG_CHECK_MODULES([IDN], [libidn], [
877   have_libidn="yes"
878   AC_DEFINE([HAVE_IDN], 1, [Define to 1 if you have GNU libidn.])
879 ], [
880   have_libidn="no"
884 dnl Check for dbus
885 AC_ARG_ENABLE(dbus,
886   [AS_HELP_STRING([--enable-dbus],
887     [compile D-Bus message bus support (default enabled)])])
888 have_dbus="no"
889 AS_IF([test "${enable_dbus}" != "no"], [
890   PKG_CHECK_MODULES(DBUS, [dbus-1 >= 1.6.0], [
891     have_dbus="yes"
892   ], [
893     AS_IF([test -n "${enable_dbus}"], [
894       AC_MSG_ERROR([${DBUS_PKG_ERRORS}.])
895     ], [
896       AC_MSG_WARN([${DBUS_PKG_ERRORS}.])
897     ])
898   ])
900 AM_CONDITIONAL([HAVE_DBUS], [test "${have_dbus}" = "yes"])
903 dnl Check for systemd
904 PKG_CHECK_MODULES([SYSTEMD], [libsystemd], [
905   have_systemd="yes"
906 ], [
907   AC_MSG_WARN([${SYSTEMD_PKG_ERRORS}.])
909 AM_CONDITIONAL([HAVE_SYSTEMD], [test "${have_systemd}" = "yes"])
912 EXTEND_HELP_STRING([Optimization options:])
914 dnl  Compiler warnings
917 AX_APPEND_COMPILE_FLAGS([-Wall -Wextra -Wsign-compare -Wundef -Wpointer-arith -Wvolatile-register-var -Wformat -Wformat-security -Wduplicated-branches -Wduplicated-cond], [CFLAGS])
918 AX_APPEND_COMPILE_FLAGS([-Wall -Wextra -Wsign-compare -Wundef -Wpointer-arith -Wvolatile-register-var -Wformat -Wformat-security -Wduplicated-branches -Wduplicated-cond], [CXXFLAGS])
920 AX_APPEND_COMPILE_FLAGS([-Wbad-function-cast -Wwrite-strings -Wmissing-prototypes -Werror-implicit-function-declaration -Winit-self -Wlogical-op -Wshadow=local -Wmultistatement-macros], [CFLAGS])
921 AX_APPEND_COMPILE_FLAGS([-pipe], [CFLAGS])
924 dnl  Debugging mode
926 AC_ARG_ENABLE(debug,
927   [AS_HELP_STRING([--enable-debug],
928     [build with run-time assertions (default disabled)])],,
929   [enable_debug="no"])
930 AH_TEMPLATE(NDEBUG,
931             [Define to 1 if debug code should NOT be compiled])
932 AS_IF([test "${enable_debug}" != "no"], [
933   AC_CHECK_HEADERS([valgrind/valgrind.h])
934 ], [
935   AC_DEFINE(NDEBUG)
939 dnl  Profiling
941 AC_ARG_ENABLE(gprof,
942   [AS_HELP_STRING([--enable-gprof],[profile with gprof (default disabled)])],,
943   [enable_gprof="no"])
944 AS_IF([test "${enable_gprof}" != "no"], [
945   CFLAGS="${CFLAGS} -pg"
946   CXXFLAGS="${CXXFLAGS} -pg"
947   OBJCFLAGS="${OBJCFLAGS} -pg"
948   LDFLAGS="${LDFLAGS} -pg"
951 AC_ARG_ENABLE(cprof,
952   [AS_HELP_STRING([--enable-cprof],[profile with cprof (default disabled)])],,
953   [enable_cprof="no"])
954 AS_IF([test "${enable_gprof}" != "no"], [
955   CFLAGS="${CFLAGS} -finstrument-functions"
956   CXXFLAGS="${CXXFLAGS} -finstrument-functions"
957   OBJCFLAGS="${OBJCFLAGS} -finstrument-functions"
958   LDFLAGS="${LDFLAGS} -finstrument-functions"
962 dnl  Test coverage
964 AC_ARG_ENABLE(coverage,
965   [AS_HELP_STRING([--enable-coverage],
966     [build for test coverage (default disabled)])],,
967   [enable_coverage="no"])
968 AS_IF([test "${enable_coverage}" != "no"], [
969   CFLAGS="-fprofile-arcs -ftest-coverage ${CFLAGS}"
970   CXXFLAGS="-fprofile-arcs -ftest-coverage ${CXXFLAGS}"
971   LDFLAGS="-lgcov ${LDFLAGS}"
974 AS_IF([test "${SYS}" != "mingw32" -a "${SYS}" != "os2"], [
975   VLC_SAVE_FLAGS
976   CFLAGS="${CFLAGS} -fvisibility=hidden"
977   CXXFLAGS="${CXXFLAGS} -fvisibility=hidden"
978   OBJCFLAGS="${OBJCFLAGS} -fvisibility=hidden"
979   AC_CACHE_CHECK([if $CC accepts -fvisibility=hidden],
980                  [ac_cv_c_visibility_hidden], [
981     AC_COMPILE_IFELSE([AC_LANG_PROGRAM()], [
982       ac_cv_c_visibility_hidden=yes
983     ], [
984       ac_cv_c_visibility_hidden=no
985     ])
986   ])
987   AS_IF([test "${ac_cv_c_visibility_hidden}" = "no"], [VLC_RESTORE_FLAGS])
991 dnl Sanitizer flags
993 AC_ARG_WITH([sanitizer],
994     [AS_HELP_STRING([--with-sanitizer=(address/memory/undefined/thread)],
995         [build with sanitizer flags (default disabled)])],
996      [],
997      [with_sanitizer=no])
999 AS_VAR_IF(with_sanitizer, no, [], [
1000     AX_CHECK_COMPILE_FLAG([-fsanitize=${with_sanitizer}], [
1001         AX_APPEND_FLAG([-fsanitize=${with_sanitizer}])
1002         AX_APPEND_FLAG([-fsanitize=${with_sanitizer}], [CXXFLAGS])
1003         AX_APPEND_FLAG([-fsanitize=${with_sanitizer}], [LDFLAGS])
1004     ], [
1005         AC_MSG_ERROR(["-fsanitize=${with_sanitizer} not supported!"])
1006     ])
1007     AX_APPEND_FLAG([-g])
1008     AX_APPEND_FLAG([-g], [CXXFLAGS])
1010     AS_IF([test -z "${with_sanitizer##*address*}" ], [
1011        AX_APPEND_COMPILE_FLAGS([-fsanitize-address-use-after-scope -fno-omit-frame-pointer -fsanitize=pointer-compare -fsanitize=pointer-subtract])
1012        AX_APPEND_COMPILE_FLAGS([-fsanitize-address-use-after-scope -fno-omit-frame-pointer -fsanitize=pointer-compare -fsanitize=pointer-subtract], [CXXFLAGS])
1013     ])
1014     AS_IF([test -z "${with_sanitizer##*memory*}" ], [
1015         AX_APPEND_COMPILE_FLAGS([-fPIE -pie])
1016         AX_APPEND_COMPILE_FLAGS([-fPIE -pie], [CXXFLAGS])
1017     ])
1018     AS_IF([test -z "${with_sanitizer##*thread*}" ], [
1019         AX_APPEND_COMPILE_FLAGS([-fPIE -pie])
1020         AX_APPEND_COMPILE_FLAGS([-fPIE -pie], [CXXFLAGS])
1021     ])
1025 dnl  Enable/disable optimizations
1027 AC_ARG_ENABLE(optimizations,
1028   [AS_HELP_STRING([--disable-optimizations],
1029     [disable compiler optimizations (default enabled)])],,
1030   [enable_optimizations="yes"])
1032 dnl Check for various optimization flags
1033 AS_IF([test "${enable_optimizations}" != "no"], [
1035   dnl -O3 only in production builds
1036   AS_IF([test "${enable_debug}" = "no"], [
1037     VLC_SAVE_FLAGS
1038     CFLAGS="${CFLAGS} -O3"
1039     CXXFLAGS="${CXXFLAGS} -O3"
1040     OBJCFLAGS="${OBJCFLAGS} -O3"
1041     AC_CACHE_CHECK([if $CC accepts -O3],  [ac_cv_c_o3], [
1042       AC_COMPILE_IFELSE([AC_LANG_PROGRAM()], [
1043         ac_cv_c_o3=yes
1044       ], [
1045         ac_cv_c_o3=no
1046       ])
1047     ])
1048     AS_IF([test "${ac_cv_c_o3}" = "no"], [VLC_RESTORE_FLAGS])
1049   ])
1051   dnl Check for fast maths
1052   AX_APPEND_COMPILE_FLAGS([-fno-math-errno -funsafe-math-optimizations -fno-rounding-math -fno-signaling-nans -fcx-limited-range], [CFLAGS])
1053   AX_APPEND_COMPILE_FLAGS([-fno-math-errno -funsafe-math-optimizations -fno-rounding-math -fno-signaling-nans -fcx-limited-range], [CXXFLAGS])
1055 AH_BOTTOM([
1056 #if defined(_MSC_VER) && !defined(__clang__)
1057 # pragma fenv_access(off)
1058 # pragma fp_contract(on)
1059 #elif defined(__GNUC__)
1060 /* Not supported so far */
1061 #else
1062 # pragma STDC FENV_ACCESS OFF
1063 # pragma STDC FP_CONTRACT ON
1064 #endif
1067   dnl Check for -funroll-loops
1068   VLC_SAVE_FLAGS
1069   CFLAGS="${CFLAGS} -funroll-loops"
1070   CXXFLAGS="${CXXFLAGS} -funroll-loops"
1071   OBJCFLAGS="${OBJCFLAGS} -funroll-loops"
1072   AC_CACHE_CHECK([if $CC accepts -funroll-loops], [ac_cv_c_unroll_loops], [
1073     AC_COMPILE_IFELSE([AC_LANG_PROGRAM()], [
1074       ac_cv_c_unroll_loops=yes
1075     ], [
1076       ac_cv_c_unroll_loops=no
1077     ])
1078   ])
1079   AS_IF([test "${ac_cv_c_unroll_loops}" = "no"], [VLC_RESTORE_FLAGS])
1081   AS_IF([test "$enable_debug" = "no"], [
1082     dnl Check for -fomit-frame-pointer
1083     VLC_SAVE_FLAGS
1084     CFLAGS="${CFLAGS} -fomit-frame-pointer"
1085     CXXFLAGS="${CXXFLAGS} -fomit-frame-pointer"
1086     OBJCFLAGS="${OBJCFLAGS} -fomit-frame-pointer"
1087     AC_CACHE_CHECK([if $CC accepts -fomit-frame-pointer],
1088       [ac_cv_c_omit_frame_pointer], [
1089       AC_COMPILE_IFELSE([AC_LANG_PROGRAM()], [
1090         ac_cv_c_omit_frame_pointer=yes
1091       ], [
1092         ac_cv_c_omit_frame_pointer=no
1093       ])
1094     ])
1095     AS_IF([test "${ac_cv_c_omit_frame_pointer}" = "no"], [VLC_RESTORE_FLAGS])
1096   ])
1100 AC_ARG_ENABLE(ssp, [
1101   AS_HELP_STRING([--disable-ssp],
1102   [disable stack smashing protection (default enabled for optimized builds)])
1103 ],,[enable_ssp="yes"])
1105 AS_IF([test "${enable_ssp}" != "no" -a "${enable_optimizations}" != "no"], [
1106   VLC_SAVE_FLAGS
1107   AX_APPEND_COMPILE_FLAGS([-fstack-protector-strong])
1108   AX_APPEND_COMPILE_FLAGS([-fstack-protector-strong], [CXXFLAGS])
1109   dnl Win32 requires linking to ssp for stack-protection
1110   AS_IF([test "${SYS}" = "mingw32"], [
1111       LDFLAGS="${LDFLAGS} -lssp"
1112       AC_CACHE_CHECK([if linker supports stack protectors], [ac_cv_ld_ssp], [
1113         AC_TRY_LINK([#include <stdio.h>],[char buf[100]; fgets(buf, sizeof(buf), stdin);], [
1114           ac_cv_ld_ssp="yes"
1115         ], [
1116           ac_cv_ld_ssp="no"
1117         ])
1118       ])
1119       AS_IF([test "${ac_cv_ld_ssp}" = "no"], [VLC_RESTORE_FLAGS])
1120   ])
1123 AS_IF([test "${SYS}" = "mingw32"], [
1124     dnl library for BCrypt APIs
1125     AS_IF([test "${vlc_winstore_app}" = 1],
1126           [LDFLAGS="${LDFLAGS} -lbcrypt"])
1129 VLC_SAVE_FLAGS
1130 LDFLAGS="${LDFLAGS} -Wl,-Bsymbolic"
1131 AC_CACHE_CHECK([if linker supports -Bsymbolic], [ac_cv_ld_bsymbolic], [
1132   AC_TRY_LINK([],, [
1133     ac_cv_ld_bsymbolic="-Wl,-Bsymbolic"
1134   ], [
1135     ac_cv_ld_bsymbolic=""
1136   ])
1138 VLC_RESTORE_FLAGS
1139 SYMBOLIC_LDFLAGS="${ac_cv_ld_bsymbolic}"
1140 AC_SUBST(SYMBOLIC_LDFLAGS)
1142 VLC_SAVE_FLAGS
1143 LDFLAGS="${LDFLAGS} -Wl,-z,defs"
1144 AC_CACHE_CHECK([if linker supports -z,defs], [ac_cv_ld_z_defs], [
1145   AC_TRY_LINK([],, [
1146     ac_cv_ld_z_defs="yes"
1147   ], [
1148     ac_cv_ld_z_defs="no"
1149   ])
1151 AS_IF([test "${ac_cv_ld_z_defs}" = "no"], [VLC_RESTORE_FLAGS])
1153 dnl Check for __attribute__((packed))
1154 AC_CACHE_CHECK([for __attribute__((packed))],
1155   [ac_cv_c_attribute_packed],
1156   [ac_cv_c_attribute_packed=no
1157    AC_TRY_COMPILE(, [struct __attribute__((__packed__)) foo { int a; } b; (void)b;],
1158                     [ac_cv_c_attribute_packed=yes])])
1159 if test "${ac_cv_c_attribute_packed}" != "no"; then
1160   AC_DEFINE(HAVE_ATTRIBUTE_PACKED, 1, Support for __attribute__((packed)) for structs)
1164 dnl  Check the CPU
1166 case "${host_cpu}" in
1167   "")
1168     ARCH=unknown
1169     ;;
1170   armv*)
1171     ARCH="arm"
1172     host_cpu="arm"
1173     ;;
1174   *)
1175     ARCH="${host_cpu}"
1176     ;;
1177 esac
1179 dnl Check for backtrace() support
1180 AC_CHECK_HEADERS(execinfo.h)
1181 AC_CHECK_FUNCS(backtrace)
1184 dnl  default modules
1186 ALIASES="${ALIASES} cvlc rvlc"
1189 dnl  Accelerated modules
1192 dnl  Check for fully working MMX intrinsics
1193 dnl  We need support for -mmmx, we need <mmintrin.h>, and we also need a
1194 dnl  working compiler (http://gcc.gnu.org/bugzilla/show_bug.cgi?id=23963)
1195 AC_ARG_ENABLE(mmx,
1196   [AS_HELP_STRING([--disable-mmx],
1197     [disable MMX optimizations (default auto)])],,[
1198   case "${host_cpu}" in
1199     i?86|x86_64)
1200       enable_mmx="yes"
1201       ;;
1202     *)
1203       enable_mmx="no"
1204       ;;
1205   esac
1207 have_mmx="no"
1208 have_mmxext="no"
1209 AS_IF([test "${enable_mmx}" != "no"], [
1210   ARCH="${ARCH} mmx"
1211   VLC_SAVE_FLAGS
1212   CFLAGS="${CFLAGS} -mmmx"
1213   AC_CACHE_CHECK([if $CC groks MMX intrinsics], [ac_cv_c_mmx_intrinsics], [
1214     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([
1215 [#include <mmintrin.h>
1216 #include <stdint.h>
1217 uint64_t frobzor;]], [
1218 [__m64 a, b, c;
1219 a = b = c = (__m64)frobzor;
1220 a = _mm_slli_pi16(a, 3);
1221 a = _mm_adds_pi16(a, b);
1222 c = _mm_srli_pi16(c, 8);
1223 c = _mm_slli_pi16(c, 3);
1224 b = _mm_adds_pi16(b, c);
1225 a = _mm_unpacklo_pi8(a, b);
1226 frobzor = (uint64_t)a;]])], [
1227       ac_cv_c_mmx_intrinsics=yes
1228     ], [
1229       ac_cv_c_mmx_intrinsics=no
1230     ])
1231   ])
1232   VLC_RESTORE_FLAGS
1233   AS_IF([test "${ac_cv_c_mmx_intrinsics}" != "no"], [
1234     AC_DEFINE(HAVE_MMX_INTRINSICS, 1, [Define to 1 if MMX intrinsics are available.])
1235   ])
1237   VLC_SAVE_FLAGS
1238   CFLAGS="${CFLAGS} -mmmx"
1239   AC_CACHE_CHECK([if $CC groks MMX inline assembly], [ac_cv_mmx_inline], [
1240     AC_COMPILE_IFELSE([AC_LANG_PROGRAM(,[[
1241 void *p;
1242 asm volatile("packuswb %%mm1,%%mm2"::"r"(p):"mm1", "mm2");
1244     ], [
1245       ac_cv_mmx_inline=yes
1246     ], [
1247       ac_cv_mmx_inline=no
1248     ])
1249   ])
1250   AS_IF([test "${ac_cv_mmx_inline}" != "no"], [
1251     AC_DEFINE(CAN_COMPILE_MMX, 1, [Define to 1 inline MMX assembly is available.])
1252     have_mmx="yes"
1253   ])
1255   AC_CACHE_CHECK([if $CC groks MMX EXT inline assembly],
1256                  [ac_cv_mmxext_inline], [
1257     AC_COMPILE_IFELSE([AC_LANG_PROGRAM(,[[
1258 void *p;
1259 asm volatile("maskmovq %%mm1,%%mm2"::"r"(p):"mm1", "mm2");
1261     ], [
1262       ac_cv_mmxext_inline=yes
1263     ], [
1264       ac_cv_mmxext_inline=no
1265     ])
1266   ])
1267   VLC_RESTORE_FLAGS
1268   AS_IF([test "${ac_cv_mmxext_inline}" != "no"], [
1269     AC_DEFINE(CAN_COMPILE_MMXEXT, 1, [Define to 1 if MMX EXT inline assembly is available.])
1270     have_mmxext="yes"
1271   ])
1273 AM_CONDITIONAL([HAVE_MMX], [test "${have_mmx}" = "yes"])
1274 AM_CONDITIONAL([HAVE_MMXEXT], [test "${have_mmxext}" = "yes"])
1276 dnl  Check for fully workin SSE2 intrinsics
1277 dnl  We need support for -mmmx, we need <emmintrin.h>, and we also need a
1278 dnl  working compiler (http://gcc.gnu.org/bugzilla/show_bug.cgi?id=23963)
1279 AC_ARG_ENABLE(sse,
1280   [AS_HELP_STRING([--disable-sse],
1281     [disable SSE (1-4) optimizations (default auto)])],, [
1282   case "${host_cpu}" in
1283     i?86|x86_64)
1284       enable_sse=yes
1285       ;;
1286     *)
1287       enable_sse=no
1288       ;;
1289   esac
1291 have_sse2="no"
1292 AS_IF([test "${enable_sse}" != "no"], [
1293   ARCH="${ARCH} sse sse2"
1295   VLC_SAVE_FLAGS
1296   CFLAGS="${CFLAGS} -msse2"
1297   AC_CACHE_CHECK([if $CC groks SSE2 intrinsics], [ac_cv_c_sse2_intrinsics], [
1298     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([
1299 [#include <emmintrin.h>
1300 #include <stdint.h>
1301 uint64_t frobzor;]], [
1302 [__m128i a, b, c;
1303 a = b = c = _mm_set1_epi64((__m64)frobzor);
1304 a = _mm_slli_epi16(a, 3);
1305 a = _mm_adds_epi16(a, b);
1306 c = _mm_srli_epi16(c, 8);
1307 c = _mm_slli_epi16(c, 3);
1308 b = _mm_adds_epi16(b, c);
1309 a = _mm_unpacklo_epi8(a, b);
1310 frobzor = (uint64_t)_mm_movepi64_pi64(a);]])], [
1311       ac_cv_c_sse2_intrinsics=yes
1312     ], [
1313       ac_cv_c_sse2_intrinsics=no
1314     ])
1315   ])
1316   VLC_RESTORE_FLAGS
1317   AS_IF([test "${ac_cv_c_sse2_intrinsics}" != "no"], [
1318     AC_DEFINE(HAVE_SSE2_INTRINSICS, 1, [Define to 1 if SSE2 intrinsics are available.])
1319   ])
1321   VLC_SAVE_FLAGS
1322   CFLAGS="${CFLAGS} -msse"
1323   AC_CACHE_CHECK([if $CC groks SSE inline assembly], [ac_cv_sse_inline], [
1324     AC_COMPILE_IFELSE([AC_LANG_PROGRAM(,[[
1325 void *p;
1326 asm volatile("xorps %%xmm1,%%xmm2"::"r"(p):"xmm1", "xmm2");
1328     ], [
1329       ac_cv_sse_inline=yes
1330     ], [
1331       ac_cv_sse_inline=no
1332     ])
1333   ])
1335   AS_IF([test "${ac_cv_sse_inline}" != "no" -a "${SYS}" != "solaris"], [
1336     AC_DEFINE(CAN_COMPILE_SSE, 1, [Define to 1 if SSE inline assembly is available.])
1337   ])
1339   AC_CACHE_CHECK([if $CC groks SSE2 inline assembly], [ac_cv_sse2_inline], [
1340     AC_COMPILE_IFELSE([AC_LANG_PROGRAM(,[[
1341 void *p;
1342 asm volatile("punpckhqdq %%xmm1,%%xmm2"::"r"(p):"xmm1", "xmm2");
1344     ], [
1345       ac_cv_sse2_inline=yes
1346     ], [
1347       ac_cv_sse2_inline=no
1348     ])
1349   ])
1350   AS_IF([test "${ac_cv_sse2_inline}" != "no" -a "${SYS}" != "solaris"], [
1351     AC_DEFINE(CAN_COMPILE_SSE2, 1, [Define to 1 if SSE2 inline assembly is available.])
1352     have_sse2="yes"
1353   ])
1355   # SSE3
1356   AC_CACHE_CHECK([if $CC groks SSE3 inline assembly], [ac_cv_sse3_inline], [
1357     AC_COMPILE_IFELSE([AC_LANG_PROGRAM(,[[
1358 void *p;
1359 asm volatile("movsldup %%xmm1,%%xmm0"::"r"(p):"xmm0", "xmm1");
1361     ], [
1362       ac_cv_sse3_inline=yes
1363     ], [
1364       ac_cv_sse3_inline=no
1365     ])
1366   ])
1368   AS_IF([test "${ac_cv_sse3_inline}" != "no"], [
1369     AC_DEFINE(CAN_COMPILE_SSE3, 1, [Define to 1 if SSE3 inline assembly is available.]) ])
1370   # SSSE3
1371   AC_CACHE_CHECK([if $CC groks SSSE3 inline assembly], [ac_cv_ssse3_inline], [
1372     AC_COMPILE_IFELSE([AC_LANG_PROGRAM(,[[
1373 void *p;
1374 asm volatile("pabsw %%xmm0,%%xmm0"::"r"(p):"xmm0");
1376     ], [
1377       ac_cv_ssse3_inline=yes
1378     ], [
1379       ac_cv_ssse3_inline=no
1380     ])
1381   ])
1383   AS_IF([test "${ac_cv_ssse3_inline}" != "no"], [
1384     AC_DEFINE(CAN_COMPILE_SSSE3, 1, [Define to 1 if SSSE3 inline assembly is available.]) ])
1386   # SSE4.1
1387   AC_CACHE_CHECK([if $CC groks SSE4.1 inline assembly],
1388                  [ac_cv_sse4_1_inline], [
1389     AC_COMPILE_IFELSE([AC_LANG_PROGRAM(,[[
1390 void *p;
1391 asm volatile("pmaxsb %%xmm1,%%xmm0"::"r"(p):"xmm0", "xmm1");
1393     ], [
1394       ac_cv_sse4_1_inline=yes
1395     ], [
1396       ac_cv_sse4_1_inline=no
1397     ])
1398   ])
1400   AS_IF([test "${ac_cv_sse4_1_inline}" != "no"], [
1401     AC_DEFINE(CAN_COMPILE_SSE4_1, 1, [Define to 1 if SSE4_1 inline assembly is available.]) ])
1403   # SSE4.2
1404   AC_CACHE_CHECK([if $CC groks SSE4.2 inline assembly],
1405                  [ac_cv_sse4_2_inline], [
1406     AC_COMPILE_IFELSE([AC_LANG_PROGRAM(,[[
1407 void *p;
1408 asm volatile("pcmpgtq %%xmm1,%%xmm0"::"r"(p):"xmm0", "xmm1");
1410     ], [
1411       ac_cv_sse4_2_inline=yes
1412     ], [
1413       ac_cv_sse4_2_inline=no
1414     ])
1415   ])
1417   AS_IF([test "${ac_cv_sse4_2_inline}" != "no"], [
1418     AC_DEFINE(CAN_COMPILE_SSE4_2, 1, [Define to 1 if SSE4_2 inline assembly is available.]) ])
1420   # SSE4A
1421   AC_CACHE_CHECK([if $CC groks SSE4A inline assembly], [ac_cv_sse4a_inline], [
1422     AC_COMPILE_IFELSE([AC_LANG_PROGRAM(,[[
1423 void *p;
1424 asm volatile("insertq %%xmm1,%%xmm0"::"r"(p):"xmm0", "xmm1");
1426     ], [
1427       ac_cv_sse4a_inline=yes
1428     ], [
1429       ac_cv_sse4a_inline=no
1430     ])
1431   ])
1432   VLC_RESTORE_FLAGS
1433   AS_IF([test "${ac_cv_sse4a_inline}" != "no"], [
1434     AC_DEFINE(CAN_COMPILE_SSE4A, 1, [Define to 1 if SSE4A inline assembly is available.]) ])
1436 AM_CONDITIONAL([HAVE_SSE2], [test "$have_sse2" = "yes"])
1438 VLC_SAVE_FLAGS
1439 CFLAGS="${CFLAGS} -mmmx"
1440 have_3dnow="no"
1441 AC_CACHE_CHECK([if $CC groks 3D Now! inline assembly], [ac_cv_3dnow_inline], [
1442   AC_COMPILE_IFELSE([AC_LANG_PROGRAM(,[[
1443 void *p;
1444 asm volatile("pfadd %%mm1,%%mm2"::"r"(p):"mm1", "mm2");
1446   ], [
1447     ac_cv_3dnow_inline=yes
1448   ], [
1449     ac_cv_3dnow_inline=no
1450   ])
1452 VLC_RESTORE_FLAGS
1453 AS_IF([test "${ac_cv_3dnow_inline}" != "no"], [
1454   AC_DEFINE(CAN_COMPILE_3DNOW, 1,
1455             [Define to 1 if 3D Now! inline assembly is available.])
1456   have_3dnow="yes"
1458 AM_CONDITIONAL([HAVE_3DNOW], [test "$have_3dnow" = "yes"])
1461 AC_ARG_ENABLE(neon,
1462   [AS_HELP_STRING([--disable-neon],
1463     [disable NEON optimizations (default auto)])],, [
1464   AS_IF([test "${host_cpu}" = "arm"], [enable_neon="yes"] ,[enable_neon="no"])
1466 AS_IF([test "${enable_neon}" != "no"], [
1467   VLC_SAVE_FLAGS
1468   CFLAGS="${CFLAGS} -mfpu=neon -mhard-float"
1469   AC_CACHE_CHECK([if $CCAS groks ARM NEON assembly], [ac_cv_arm_neon], [
1470     AC_COMPILE_IFELSE([
1471       AC_LANG_PROGRAM(,[[
1472 asm volatile("vqmovun.s64 d0, q1":::"d0");
1474     ], [
1475       ac_cv_arm_neon="yes"
1476     ], [
1477       ac_cv_arm_neon="no"
1478     ])
1479   ])
1480   VLC_RESTORE_FLAGS
1482 AM_CONDITIONAL(HAVE_NEON, [test "${ac_cv_arm_neon}" = "yes"])
1484 AC_ARG_ENABLE(arm64,
1485   [AS_HELP_STRING([--disable-arm64],
1486     [disable arm 64-bit optimizations (default auto)])],, [
1487   AS_IF([test "${host_cpu}" = "aarch64"], [enable_arm64="yes"] ,[enable_arm64="no"])
1489 AS_IF([test "${enable_arm64}" != "no"], [
1490   AC_CACHE_CHECK([if $CCAS groks ARM 64 SIMD assembly], [ac_cv_arm64], [
1491     AC_COMPILE_IFELSE([
1492       AC_LANG_PROGRAM(,[[
1493 asm volatile("uhadd v0.8b, v0.8b, v1.8b":::"v0");
1495     ], [
1496       ac_cv_arm64="yes"
1497     ], [
1498       ac_cv_arm64="no"
1499     ])
1500   ])
1502 AM_CONDITIONAL(HAVE_ARM64, [test "${ac_cv_arm64}" = "yes"])
1505 AC_ARG_ENABLE(altivec,
1506   [AS_HELP_STRING([--disable-altivec],
1507     [disable AltiVec optimizations (default auto)])],, [
1508   AS_CASE("${host_cpu}", [powerpc*],
1509         [enable_altivec=yes], [enable_altivec=no])
1511 have_altivec="no"
1512 ALTIVEC_CFLAGS=""
1513 AS_IF([test "${enable_altivec}" = "yes"], [
1514   ARCH="${ARCH} altivec";
1515   VLC_SAVE_FLAGS
1516   AC_CACHE_CHECK([if $CC groks AltiVec inline assembly],
1517     [ac_cv_altivec_inline],
1518     [AC_TRY_COMPILE(,[asm volatile("vperm 0,1,2,3");],
1519          ac_cv_altivec_inline="yes",
1520          [CFLAGS="${CFLAGS} -Wa,-maltivec"
1521           AC_TRY_COMPILE(,[asm volatile("vperm 0,1,2,3");],
1522             [ac_cv_altivec_inline="-Wa,-maltivec"],
1523             ac_cv_altivec_inline=no)
1524          ])])
1525   VLC_RESTORE_FLAGS
1526   AS_IF([test "${ac_cv_altivec_inline}" != "no"], [
1527     AC_DEFINE(CAN_COMPILE_ALTIVEC, 1,
1528               [Define to 1 if AltiVec inline assembly is available.])
1529     AS_IF([test "${ac_cv_altivec_inline}" != "yes"], [
1530       ALTIVEC_CFLAGS="${ac_cv_altivec_inline}"
1531       VLC_ADD_CFLAGS([libvlccore],[${ac_cv_altivec_inline}])
1532     ])
1533     have_altivec="yes"
1534   ])
1536   VLC_SAVE_FLAGS
1537   AC_CACHE_CHECK([if \$CC groks AltiVec C extensions],
1538   [ac_cv_c_altivec], [
1539     CFLAGS="${CFLAGS} -maltivec"
1540     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([
1541 [#include <altivec.h>]], [
1542 [vec_ld(0, (unsigned char *)0);]])], [
1543       ac_cv_c_altivec="-maltivec"
1544     ], [
1545       ac_cv_c_altivec="no"
1546     ])
1547   ])
1548   VLC_RESTORE_FLAGS
1549   AS_IF([test "${ac_cv_c_altivec}" != "no"], [
1550     CPPFLAGS="${CPPFLAGS} ${ac_cv_c_altivec}"
1551     AC_DEFINE(CAN_COMPILE_C_ALTIVEC, 1, [Define to 1 if C AltiVec extensions are available.])
1552     VLC_ADD_CFLAGS([libvlccore],[${ac_cv_c_altivec}])
1553     ALTIVEC_CFLAGS="$ALTIVEC_CFLAGS ${ac_cv_c_altivec}"
1554     VLC_ADD_CFLAGS([deinterlace],[${ac_cv_c_altivec}])
1555     have_altivec="yes"
1556   ])
1557   AC_CHECK_HEADERS(altivec.h)
1559   VLC_SAVE_FLAGS
1560   LDFLAGS="${LDFLAGS} -Wl,-framework,vecLib"
1561   AC_CACHE_CHECK([if linker needs -framework vecLib],
1562     [ac_cv_ld_altivec],
1563     [AC_TRY_LINK([],,ac_cv_ld_altivec=yes,ac_cv_ld_altivec=no)])
1564   VLC_RESTORE_FLAGS
1565   AS_IF([test "${ac_cv_ld_altivec}" != "no"], [
1566     VLC_ADD_LIBS([libvlccore],[-Wl,-framework,vecLib])
1567   ])
1569 AC_SUBST(ALTIVEC_CFLAGS)
1570 AM_CONDITIONAL([HAVE_ALTIVEC], [test "$have_altivec" = "yes"])
1573 dnl  Memory usage
1575 AC_ARG_ENABLE(optimize-memory,
1576   [AS_HELP_STRING([--enable-optimize-memory],
1577     [optimize memory usage over performance])])
1578 if test "${enable_optimize_memory}" = "yes"; then
1579   AC_DEFINE(OPTIMIZE_MEMORY, 1, Define if you want to optimize memory usage over performance)
1583 dnl Allow running as root (useful for people running on embedded platforms)
1585 AC_ARG_ENABLE(run-as-root,
1586   [AS_HELP_STRING([--enable-run-as-root],
1587     [allow running VLC as root (default disabled)])])
1588 AS_IF([test "${enable_run_as_root}" = "yes"],[
1589     AC_DEFINE(ALLOW_RUN_AS_ROOT, 1,
1590               [Define to 1 to allow running VLC as root (uid 0).])
1594 dnl Stream output
1596 AC_ARG_ENABLE(sout,
1597   [AS_HELP_STRING([--disable-sout],
1598     [disable streaming output (default enabled)])])
1599 AS_IF([test "${enable_sout}" != "no"], [
1600   AC_DEFINE(ENABLE_SOUT, 1, [Define to 1 for stream output support.])
1602 AM_CONDITIONAL(ENABLE_SOUT, [test "${enable_sout}" != "no"])
1604 dnl Lua modules
1605 AC_ARG_ENABLE(lua,
1606   [AS_HELP_STRING([--disable-lua],
1607     [disable LUA scripting support (default enabled)])])
1608 if test "${enable_lua}" != "no"
1609 then
1610   PKG_CHECK_MODULES(LUA, lua5.2,
1611     [ have_lua=yes ],
1612     [
1613     AC_MSG_WARN([${LUA_PKG_ERRORS}, trying lua 5.1 instead])
1615     PKG_CHECK_MODULES(LUA, lua5.1,
1616       [ have_lua=yes ],
1617       [
1618       AC_MSG_WARN([${LUA_PKG_ERRORS}, trying lua >= 5.1 instead])
1619       PKG_CHECK_MODULES(LUA, lua >= 5.1,
1620         [ have_lua=yes ],
1621         [
1622           AC_MSG_WARN([${LUA_PKG_ERRORS}, trying manual detection instead])
1623           have_lua=yes
1624           AC_CHECK_HEADERS([lua.h lauxlib.h lualib.h],
1625             [],
1626             [ have_lua=no ] )
1627           AC_CHECK_LIB(  lua5.2 , luaL_newstate,
1628             [LUA_LIBS="-llua5.2"],
1629           AC_CHECK_LIB( lua5.1 , luaL_newstate,
1630             [LUA_LIBS="-llua5.1"],
1631             AC_CHECK_LIB( lua51 , luaL_newstate,
1632               [LUA_LIBS="-llua51"],
1633               AC_CHECK_LIB( lua , luaL_newstate,
1634                 [LUA_LIBS="-llua"],
1635                 [ have_lua=no
1636                 ], [-lm])
1637             )))
1638         ])
1639       ])
1640     ])
1641   if test "x${have_lua}" != "xyes" ;  then
1642       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.])
1643   fi
1644   AC_ARG_VAR([LUAC], [LUA byte compiler])
1645   AS_IF([test -z "$LUAC"], [
1646      AC_CHECK_TOOL(LUAC, [luac], [false])
1647   ])
1648   AS_IF([test "${LUAC}" = "false"], [
1649     AC_MSG_ERROR([Could not find the LUA byte compiler.])
1650   ])
1651   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], [
1652     AC_MSG_ERROR([You need 32-bits luac when using lua from contrib.])
1653   ])
1655 AM_CONDITIONAL(BUILD_LUA, [test "${have_lua}" = "yes"])
1659 dnl VideoLAN manager
1661 AC_ARG_ENABLE(vlm,
1662   [AS_HELP_STRING([--disable-vlm],
1663     [disable the stream manager (default enabled)])],,
1664   [enable_vlm="${enable_sout}"])
1665 AS_IF([test "${enable_vlm}" != "no"], [
1666   AS_IF([test "${enable_sout}" = "no"], [
1667     AC_MSG_ERROR([VLM requires the stream output. Do not use --disable-sout.])
1668   ])
1669   AC_DEFINE(ENABLE_VLM, 1, [Define if you want the VideoLAN manager support])
1671 AM_CONDITIONAL([ENABLE_VLM], [test "${enable_vlm}" != "no"])
1675 dnl Addons manager storage and repositories modules
1677 AC_ARG_ENABLE(addonmanagermodules,
1678   [AS_HELP_STRING([--disable-addonmanagermodules],
1679     [disable the addons manager modules (default enabled)])])
1680 if test "${enable_addonmanagermodules}" != "no"
1681 then
1682   AC_DEFINE(ENABLE_ADDONMANAGERMODULES, 1, [Define if you want the addons manager modules])
1684 AM_CONDITIONAL([ENABLE_ADDONMANAGERMODULES], [test "${enable_addonmanagermodules}" != "no"])
1688 dnl  Input plugins
1691 EXTEND_HELP_STRING([Input plugins:])
1694 dnl  libarchive access module
1696 PKG_ENABLE_MODULES_VLC([ARCHIVE], [archive], [libarchive >= 3.1.0], (libarchive support), [auto])
1699 dnl  live555 input
1701 AC_ARG_ENABLE(live555,
1702   [AS_HELP_STRING([--enable-live555],
1703     [enable RTSP input through live555 (default enabled)])])
1705 AS_IF([test "${enable_live555}" != "no" -a -n "${CXX}"], [
1706   PKG_CHECK_MODULES(LIVE555, live555, [
1707     VLC_ADD_PLUGIN([live555])
1708     VLC_ADD_CXXFLAGS([live555], [$LIVE555_CFLAGS])
1709     VLC_ADD_LIBS([live555],[$LIVE555_LIBS])
1710   ], [
1711     AC_MSG_WARN([${LIVE555_PKG_ERRORS}.])
1713     AC_LANG_PUSH(C++)
1714     VLC_SAVE_FLAGS
1716     dnl detect include paths
1717     AS_IF([test -f "${CONTRIB_DIR}/include/UsageEnvironment/UsageEnvironment.hh"], [
1718       CPPFLAGS_live555="-I${CONTRIB_DIR}/include/liveMedia -I${CONTRIB_DIR}/include/groupsock -I${CONTRIB_DIR}/include/BasicUsageEnvironment -I${CONTRIB_DIR}/include/UsageEnvironment"
1719     ], [
1720       AS_IF([test "${SYS}" != "os2"], [
1721         LIVE555_PREFIX=${LIVE555_PREFIX-"/usr"}
1722         CPPFLAGS_live555="-I${LIVE555_PREFIX}/include/liveMedia -I${LIVE555_PREFIX}/include/groupsock -I${LIVE555_PREFIX}/include/BasicUsageEnvironment -I${LIVE555_PREFIX}/include/UsageEnvironment"
1723       ], [
1724         LIVE555_PREFIX=${LIVE555_PREFIX-"/usr/lib/live"}
1725         CPPFLAGS_live555="-I${LIVE555_PREFIX}/liveMedia/include -I${LIVE555_PREFIX}/groupsock/include -I${LIVE555_PREFIX}/BasicUsageEnvironment/include -I${LIVE555_PREFIX}/UsageEnvironment/include"
1726         LDFLAGS_live555="-L${LIVE555_PREFIX}/liveMedia -L${LIVE555_PREFIX}/groupsock -L${LIVE555_PREFIX}/BasicUsageEnvironment -L${LIVE555_PREFIX}/UsageEnvironment"
1727       ])
1728     ])
1730     dnl CPP Flags
1731     AS_IF([test "${SYS}" = "solaris"], [
1732       CPPFLAGS_live555="${CPPFLAGS_live555} -DSOLARIS"
1733     ])
1734     CPPFLAGS="${CPPFLAGS} ${CPPFLAGS_live555}"
1735     LDFLAGS="${LDFLAGS} ${LDFLAGS_live555}"
1737     dnl version check
1738     AC_CACHE_CHECK([for live555 version 1324598400 or later], [ac_cv_live555], [
1739       AC_PREPROC_IFELSE([AC_LANG_PROGRAM([
1740 [#include <liveMedia_version.hh>
1741 #if !defined (LIVEMEDIA_LIBRARY_VERSION_INT) || (LIVEMEDIA_LIBRARY_VERSION_INT < 1324598400)
1742 # error BOOM
1743 #endif]])
1744       ], [
1745         ac_cv_live555="yes"
1746       ], [
1747         ac_cv_live555="no"
1748       ])
1749     ])
1751     AS_IF([test "$ac_cv_live555" = "no"], [
1752       AC_MSG_WARN([live555 is missing or its installed version is too old:
1753 Version 2011.12.23 or later is required to proceed.
1754 You can get an updated one from http://www.live555.com/liveMedia .])
1755       AS_IF([test -n "${enable_live555}"], [
1756         AC_MSG_ERROR([Update live555 or pass --disable-live555 to disable RTSP input support.])
1757       ])
1758     ], [
1759       other_libs="-lgroupsock -lBasicUsageEnvironment -lUsageEnvironment"
1760       other_libs_pic="-lgroupsock_pic -lBasicUsageEnvironment_pic -lUsageEnvironment_pic"
1761       AS_IF([test "${SYS}" = "mingw32"], [
1762         # add ws2_32 for closesocket, select, recv
1763         other_libs="$other_libs -lws2_32"
1764       ])
1766       dnl We need to check for pic because live555 don't provide shared libs
1767       dnl and we want to build a plugins so we need -fPIC on some arch.
1768       VLC_ADD_CXXFLAGS([live555], [${CPPFLAGS_live555}])
1769       VLC_ADD_LDFLAGS([live555], [${LDFLAGS_live555}])
1770       AC_CHECK_LIB(liveMedia_pic, main, [
1771         VLC_ADD_PLUGIN([live555])
1772         VLC_ADD_LIBS([live555], [-lliveMedia_pic ${other_libs_pic}])
1773       ],[
1774         AC_CHECK_LIB(liveMedia, main, [
1775           VLC_ADD_PLUGIN([live555])
1776           VLC_ADD_LIBS([live555], [-lliveMedia ${other_libs}])
1777         ],[],[${other_libs}])
1778       ],[${other_libs_pic}])
1779     ])
1780     VLC_RESTORE_FLAGS
1781     AC_LANG_POP(C++)
1782   ])
1786 dnl IIDC and DV FireWire input modules
1788 PKG_ENABLE_MODULES_VLC([DC1394], [], [libdc1394-2 >= 2.1.0], [IIDC FireWire input module], [auto])
1789 PKG_ENABLE_MODULES_VLC([DV1394], [], [libraw1394 >= 2.0.1 libavc1394 >= 0.5.3], [DV FireWire input module], [auto])
1792 dnl - linsys modules: access module check for libzvbi
1794 AC_ARG_ENABLE(linsys,
1795   [AS_HELP_STRING([--enable-linsys],
1796     [Linux Linear Systems Ltd. SDI and HD-SDI input cards (default enabled)])])
1797 AS_IF([test "$SYS" = "linux" -a "${enable_linsys}" != "no"], [
1798   VLC_ADD_PLUGIN([linsys_hdsdi])
1799   PKG_CHECK_MODULES(LINSYS_SDI, [zvbi-0.2 >= 0.2.28], [
1800     VLC_ADD_PLUGIN([linsys_sdi])
1801   ], [
1802     AC_MSG_WARN([${LINSYS_SDI_PKG_ERRORS}.])
1803   ])
1807 dnl dvdread module: check for libdvdread
1809 PKG_ENABLE_MODULES_VLC([DVDREAD], [], [dvdread > 4.9.0], [dvdread input module], [auto])
1812 dnl libdvdnav plugin
1814 PKG_ENABLE_MODULES_VLC([DVDNAV], [], [dvdnav > 4.9.0], [DVD with navigation input module (dvdnav)], [auto])
1815 AS_IF([test "${enable_dvdnav}" != "no"], [
1816   AC_MSG_CHECKING(for dvdnav_stream_cb in dvdnav/dvdnav.h)
1817     AC_EGREP_HEADER(dvdnav_stream_cb,dvdnav/dvdnav.h,[
1818       AC_MSG_RESULT(yes)
1819       AC_DEFINE(HAVE_STREAM_CB_IN_DVDNAV_H, 1, For dvdnav demux support)
1820       ],[
1821       AC_MSG_RESULT(no)
1822     ])
1826 dnl  Blu-ray Disc Support with libbluray
1828 PKG_ENABLE_MODULES_VLC([BLURAY], [libbluray], [libbluray >= 0.6.2], (libbluray for Blu-ray disc support ) )
1831 dnl  OpenCV wrapper and example filters
1833 PKG_ENABLE_MODULES_VLC([OPENCV], [opencv_example opencv_wrapper], [opencv > 2.0], (OpenCV (computer vision) filter), [auto])
1837 dnl  libsmbclient plugin
1839 PKG_ENABLE_MODULES_VLC([SMBCLIENT], [smbc], [smbclient], (SMB/CIFS support), [auto])
1842 dnl  liBDSM access module
1844 PKG_ENABLE_MODULES_VLC([DSM], [dsm], [libdsm >= 0.2.0], [libdsm SMB/CIFS access/sd module], [auto])
1847 dnl sftp access support
1849 PKG_ENABLE_MODULES_VLC([SFTP], [sftp], [libssh2], (support SFTP file transfer via libssh2), [auto])
1852 dnl nfs access support
1854 PKG_ENABLE_MODULES_VLC([NFS], [nfs], [libnfs >= 1.10.0], (support nfs protocol via libnfs), [auto])
1857 dnl  Video4Linux 2
1859 AC_ARG_ENABLE(v4l2, [AS_HELP_STRING([--disable-v4l2],
1860   [disable Video4Linux version 2 (default auto)])])
1861 have_v4l2="no"
1862 AS_IF([test "$enable_v4l2" != "no"], [
1863   AC_CHECK_HEADERS([linux/videodev2.h], [
1864     have_v4l2="yes"
1865   ])
1867 AM_CONDITIONAL(HAVE_V4L2, [test "${have_v4l2}" != "no"])
1870 dnl special access module for Blackmagic SDI cards
1872 AC_ARG_ENABLE(decklink,
1873   [AS_HELP_STRING([--disable-decklink],
1874     [disable Blackmagic DeckLink SDI input (default auto)])])
1875 AC_ARG_WITH(decklink_sdk,
1876   [AS_HELP_STRING[--with-decklink-sdk=DIR],
1877     [                        location of Blackmagic DeckLink SDI SDK])])
1878 have_decklink=no
1879 if test "${enable_decklink}" != "no"
1880 then
1881   if test "${with_decklink_sdk}" != "no" -a -n "${with_decklink_sdk}"
1882   then
1883     VLC_ADD_CPPFLAGS([decklink decklinkoutput],[-I${with_decklink_sdk}/include])
1884   fi
1885   VLC_SAVE_FLAGS
1886   CPPFLAGS="${CPPFLAGS} ${CPPFLAGS_decklink}"
1887   AC_LANG_PUSH(C++)
1888   AC_CHECK_HEADERS(DeckLinkAPIDispatch.cpp, [
1889       have_decklink=yes
1890   ], [
1891       AC_MSG_WARN(Blackmagic DeckLink SDI include files not found, decklink disabled)
1892   ])
1893   AC_LANG_POP(C++)
1894   VLC_RESTORE_FLAGS
1896 AM_CONDITIONAL(HAVE_DECKLINK, [ test "${have_decklink}" != "no" ])
1900 dnl  Built-in CD-DA and VCD module
1902 AC_ARG_ENABLE(vcd,
1903   [AS_HELP_STRING([--disable-vcd],
1904     [disable built-in VCD and CD-DA support (default enabled)])])
1906 AC_ARG_ENABLE(libcddb,
1907   [AS_HELP_STRING([--disable-libcddb],
1908     [disable CDDB for Audio CD (default enabled)])])
1910 if test "${enable_vcd}" != "no"
1911 then
1912   AC_MSG_CHECKING(for cdrom_msf0 in linux/cdrom.h)
1913   AC_EGREP_HEADER(cdrom_msf0,linux/cdrom.h,[
1914     AC_MSG_RESULT(yes)
1915     VLC_ADD_PLUGIN([vcd cdda])
1916   ],[
1917     AC_MSG_RESULT(no)
1918   ])
1920   AC_MSG_CHECKING(for scsireq in sys/scsiio.h)
1921   AC_EGREP_HEADER(scsireq,sys/scsiio.h,[
1922     AC_MSG_RESULT(yes)
1923     VLC_ADD_PLUGIN([vcd cdda])
1924     AC_DEFINE(HAVE_SCSIREQ_IN_SYS_SCSIIO_H, 1, For NetBSD VCD support)
1925   ],[
1926     AC_MSG_RESULT(no)
1927   ])
1929   AC_MSG_CHECKING(for ioc_toc_header in sys/cdio.h)
1930   AC_EGREP_HEADER(ioc_toc_header ,sys/cdio.h,[
1931     AC_MSG_RESULT(yes)
1932     VLC_ADD_PLUGIN([vcd cdda])
1933     AC_DEFINE(HAVE_IOC_TOC_HEADER_IN_SYS_CDIO_H, 1, For FreeBSD VCD support)
1934   ],[
1935     AC_MSG_RESULT(no)
1936   ])
1938   if test "${SYS}" = "bsdi" -o "${SYS}" = "mingw32" -o "${SYS}" = "os2" -o "${SYS}" = "darwin"
1939   then
1940     VLC_ADD_PLUGIN([vcd cdda])
1941   fi
1943   if test "$enable_libcddb" != "no"; then
1944     PKG_CHECK_MODULES(LIBCDDB, [libcddb >= 0.9.5], [
1945       HAVE_LIBCDDB=yes
1946       AC_DEFINE(HAVE_LIBCDDB, 1, [Define this if you have libcddb installed])
1947       VLC_ADD_LIBS([cdda],[$LIBCDDB_LIBS])
1948       VLC_ADD_CFLAGS([cdda],[$LIBCDDB_CFLAGS])
1949       ],:
1950       [AC_MSG_WARN([${LIBCDDB_PKG_ERRORS}: CDDB access disabled.])
1951       HAVE_LIBCDDB=no])
1952   fi
1956 dnl Linux DVB
1958 AC_CACHE_CHECK([for Linux DVB version 5.1], [ac_cv_linux_dvb_5_1], [
1959   AC_PREPROC_IFELSE([AC_LANG_PROGRAM([
1960 [#include <linux/dvb/version.h>
1961 #if (DVB_API_VERSION < 5)
1962 # error Linux DVB API v3.2 and older are not supported.
1963 #endif
1964 #if (DVB_API_VERSION == 5 && DVB_API_VERSION_MINOR < 1)
1965 # error Linux DVB API v5.0 is unsupported. Please update.
1966 #endif
1967 ]])], [
1968   ac_cv_linux_dvb_5_1=yes
1969 ], [
1970   ac_cv_linux_dvb_5_1=no
1971 ])])
1972 AM_CONDITIONAL([HAVE_LINUX_DVB], [test "$ac_cv_linux_dvb_5_1" = "yes"])
1975 dnl  Screen capture module
1977 AC_ARG_ENABLE(screen,
1978   [AS_HELP_STRING([--enable-screen],
1979     [disable screen capture (default enabled)])])
1980 if test "${enable_screen}" != "no"; then
1981   if test "${SYS}" = "darwin"; then
1982     AC_CHECK_HEADERS(ApplicationServices/ApplicationServices.h, [
1983       VLC_ADD_PLUGIN([screen])
1984     ])
1985   fi
1987 AM_CONDITIONAL(HAVE_MAC_SCREEN, [test "${SYS}" = "darwin" -a "x${enable_screen}" != "xno"])
1990 dnl  VNC/RFB access module
1992 PKG_ENABLE_MODULES_VLC([VNC], [vnc], [libvncclient >= 0.9.9], (VNC/rfb client support), [auto])
1994 dnl  RDP/Remote Desktop access module
1996 PKG_ENABLE_MODULES_VLC([FREERDP], [rdp], [freerdp >= 1.0.1], (RDP/Remote Desktop client support) )
1999 dnl  Real RTSP plugin
2001 AC_ARG_ENABLE(realrtsp,
2002   [  --enable-realrtsp       Real RTSP module (default disabled)])
2003 if test "${enable_realrtsp}" = "yes"; then
2004   VLC_ADD_PLUGIN([access_realrtsp])
2008 dnl QTKit
2009 AC_ARG_ENABLE(macosx-qtkit,
2010   [  --enable-macosx-qtkit Mac OS X qtsound (audio) module (default enabled on Mac OS X <= v10.11)])
2011 if test "x${enable_macosx_qtkit}" != "xno" &&
2012   (test "${SYS}" = "darwin" || test "${enable_macosx_qtkit}" = "yes")
2013 then
2014   AC_CHECK_HEADERS(QTKit/QTKit.h, [
2015       VLC_ADD_PLUGIN([qtsound])
2016     ])
2020 dnl AVFoundation
2021 AC_SUBST(have_avfoundation, ["no"])
2022 AC_ARG_ENABLE(macosx-avfoundation,
2023   [  --enable-macosx-avfoundation Mac OS X avcapture (video) module (default enabled on Mac OS X)])
2024 if test "x${enable_macosx_avfoundation}" != "xno" &&
2025   (test "${SYS}" = "darwin" || test "${enable_macosx_avfoundation}" = "yes")
2026 then
2027   SAVED_LIBS="${LIBS}"
2028   LIBS="-framework AVFoundation"
2029   AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [])],[have_avfoundation=yes],[have_avfoundation=no])
2030   LIBS="${SAVED_LIBS}"
2031   if test "${have_avfoundation}" != "no"
2032   then
2033     VLC_ADD_PLUGIN([avcapture])
2034   fi
2036 AM_CONDITIONAL(HAVE_AVFOUNDATION, [test "${have_avfoundation}" != "no"])
2039 dnl  DCP plugin (using asdcplib)
2041 PKG_WITH_MODULES([ASDCP], [asdcplib], [have_asdcp="yes"])
2042 AM_CONDITIONAL(HAVE_ASDCP, [test "${have_asdcp}" = "yes"])
2045 dnl  Demux plugins
2048 EXTEND_HELP_STRING([Mux/Demux plugins:])
2051 dnl  libdvbpsi check for ts mux/demux
2053 have_dvbpsi="no"
2054 PKG_WITH_MODULES([DVBPSI], [libdvbpsi >= 1.2.0], [have_dvbpsi="yes"])
2055 AM_CONDITIONAL(HAVE_DVBPSI, [test "${have_dvbpsi}" = "yes"])
2059 dnl  GME demux plugin
2061 AC_ARG_ENABLE(gme,
2062   [AS_HELP_STRING([--enable-gme],
2063     [use Game Music Emu (default auto)])])
2064 AS_IF([test "${enable_gme}" != "no"], [
2065   AC_CHECK_HEADER([gme/gme.h], [
2066     AC_CHECK_LIB([gme], [gme_identify_header], [
2067       VLC_ADD_PLUGIN([gme])
2068     ], [
2069       AC_CHECK_LIB([gme], [gme_identify_extension], [
2070          VLC_ADD_LIBS([gme], [-lstdc++ $LIBM])
2071          VLC_ADD_PLUGIN([gme])
2072       ],, [-lstdc++ $LIBM])
2073     ])
2074     VLC_ADD_LIBS([gme], [-lgme])
2075   ], [
2076     AS_IF([test "x${enable_gme}" != "x"], [
2077       AC_MSG_ERROR([GME cannot be found. Please install the development files.])
2078     ])
2079   ])
2084 dnl  SIDPlay plugin
2086 AC_ARG_ENABLE(sid,
2087     [AS_HELP_STRING([--enable-sid],[C64 sid demux support (default auto)])])
2088 AS_IF([test "${enable_sid}" != "no"], [
2089     PKG_CHECK_MODULES(SID, [libsidplay2], [
2090         AC_LANG_PUSH(C++)
2091         oldCPPFLAGS="$CPPFLAGS"
2092         CPPFLAGS="$CPPFLAGS $SID_CFLAGS"
2093         AC_CHECK_HEADER([sidplay/builders/resid.h], [
2094             VLC_ADD_PLUGIN([sid])
2095             VLC_ADD_CFLAGS([sid], [$SID_CFLAGS])
2096             VLC_ADD_LIBS([sid], [$SID_LIBS] [-lresid-builder])
2097         ], [
2098             AS_IF([test -n "${enable_sid}"],
2099                 [AC_MSG_ERROR([${SID_PKG_ERRORS} (required for sid).])],
2100                 [AC_MSG_WARN([${SID_PKG_ERRORS} (required for sid).])]
2101                 )
2102         ])
2103         CPPFLAGS="$oldCPPFLAGS"
2104         AC_LANG_POP(C++)
2105     ], [
2106         AS_IF([test "x${enable_sid}" = "xyes"],
2107             [AC_MSG_ERROR([${SID_PKG_ERRORS} (required for sid).])],
2108             [AC_MSG_WARN([${SID_PKG_ERRORS} (required for sid).])]
2109             )
2110     ])
2115 dnl  ogg demux plugin
2117 PKG_ENABLE_MODULES_VLC([OGG], [mux_ogg], [ogg >= 1.0], [Ogg demux support], [auto])
2118 PKG_CHECK_MODULES(LIBVORBIS, [vorbis >= 1.1], [
2119     AC_DEFINE(HAVE_LIBVORBIS, 1, [Define to 1 if you have the libvorbis])
2120 ],[true])
2121 PKG_ENABLE_MODULES_VLC([OGG], [], [ogg >= 1.0], [Ogg demux support], [auto], [${LIBVORBIS_CFLAGS}], [${LIBVORBIS_LIBS}])
2122 if test "${enable_sout}" != "no"; then
2123 dnl Check for libshout
2124     PKG_ENABLE_MODULES_VLC([SHOUT], [access_output_shout], [shout >= 2.1], [libshout output plugin], [auto])
2128 dnl  matroska demux plugin
2130 PKG_WITH_MODULES([MATROSKA], [libebml libmatroska], [
2131        VLC_ADD_PLUGIN([mkv])
2132        VLC_ADD_CFLAGS([mkv], [$MATROSKA_CFLAGS])
2133        VLC_ADD_LIBS([mkv], [$MATROSKA_LIBS])
2134        have_matroska="yes"
2135    ],,[MKV format support], [auto])
2136 AM_CONDITIONAL([HAVE_MATROSKA], [test "${have_matroska}" = "yes"])
2139 dnl  modplug demux plugin
2141 AC_ARG_ENABLE(mod,
2142   [AS_HELP_STRING([--disable-mod],
2143     [do not use libmodplug (default auto)])])
2144 if test "${enable_mod}" != "no" ; then
2145     PKG_CHECK_MODULES(LIBMODPLUG, [libmodplug >= 0.8.4 libmodplug != 0.8.8], [
2146           VLC_ADD_PLUGIN([mod])
2147           VLC_ADD_CXXFLAGS([mod],[$LIBMODPLUG_CFLAGS])
2148           VLC_ADD_CFLAGS([mod],[$LIBMODPLUG_CFLAGS]) #modules/demux/mod.c needs CFLAGS_mod, not CXXFLAGS_mod
2149           VLC_ADD_LIBS([mod],[$LIBMODPLUG_LIBS])
2150     ],[
2151        AS_IF([test -n "${enable_mod}"],
2152          [AC_MSG_ERROR([${LIBMODPLUG_PKG_ERRORS}.])],
2153          [AC_MSG_WARN([${LIBMODPLUG_PKG_ERRORS}.])])
2154     ])
2158 dnl  mpc demux plugin
2160 AC_ARG_ENABLE(mpc,
2161   [AS_HELP_STRING([--disable-mpc], [do not use libmpcdec (default auto)])])
2162 if test "${enable_mpc}" != "no"
2163 then
2164   AC_CHECK_HEADERS([mpc/mpcdec.h], [
2165     VLC_ADD_PLUGIN([mpc])
2166     VLC_ADD_LIBS([mpc],[-lmpcdec])],
2167     [AC_CHECK_HEADERS([mpcdec/mpcdec.h], [
2168     VLC_ADD_PLUGIN([mpc])
2169     VLC_ADD_LIBS([mpc],[-lmpcdec])])])
2173 dnl  Codec plugins
2176 EXTEND_HELP_STRING([Codec plugins:])
2179 dnl wmafixed plugin
2181 AC_ARG_ENABLE(wma-fixed,
2182   [  --enable-wma-fixed      libwma-fixed module (default disabled)])
2183 if test "${enable_wma_fixed}" = "yes"
2184 then
2185   VLC_ADD_PLUGIN([wma_fixed])
2189 dnl shine encoder plugin
2191 PKG_ENABLE_MODULES_VLC([SHINE], [], [shine >= 3.0.0], [MPEG Audio Layer 3 encoder], [auto], [], [], [])
2195 dnl openmax il codec plugin
2197 AC_ARG_ENABLE(omxil,
2198   [  --enable-omxil          openmax il codec module (default disabled)])
2199 if test "${enable_omxil}" = "yes"
2200 then
2201   VLC_ADD_PLUGIN([omxil])
2205 dnl raspberry pi openmax il configuration
2207 AC_ARG_ENABLE(rpi-omxil,
2208   [  --enable-rpi-omxil     openmax il configured for raspberry pi (default disabled)])
2209 if test "${enable_rpi_omxil}" = "yes"
2210 then
2211   VLC_ADD_PLUGIN([omxil])
2212   VLC_ADD_CFLAGS([omxil],[-DRPI_OMX])
2216 dnl CrystalHD codec plugin
2218 AC_ARG_ENABLE(crystalhd,
2219   [  --enable-crystalhd      crystalhd codec plugin (default auto)])
2220 if test "${enable_crystalhd}" != "no"; then
2221     AC_CHECK_HEADER(libcrystalhd/libcrystalhd_if.h, [
2222       VLC_ADD_PLUGIN([crystalhd])
2223       VLC_ADD_LIBS([crystalhd], [-lcrystalhd])
2224     ],[
2225       if test "${SYS}" = "mingw32" ; then
2226         AC_CHECK_HEADERS(libcrystalhd/bc_dts_defs.h, [
2227           VLC_ADD_PLUGIN([crystalhd])
2228           AC_CHECK_HEADERS(libcrystalhd/bc_drv_if.h, [
2229             VLC_ADD_LIBS([crystalhd], [-lbcmDIL])
2230             ])
2231         ],[
2232           AS_IF([test x"${enable_crystalhd}" = "xyes"],
2233                 [AC_MSG_ERROR("Could not find CrystalHD development headers")],
2234                 [AC_MSG_WARN("Could not find CrystalHD development headers")])
2235         ],[#define __LINUX_USER__
2236                #include <libcrystalhd/bc_dts_types.h>
2237         ])
2238       fi
2239     ],[
2240        #include <libcrystalhd/bc_dts_types.h>
2241       ])
2245 dnl  mad plugin
2247 have_mad="no"
2248 MAD_CFLAGS=""
2249 MAD_LIBS=""
2251 AC_ARG_WITH(mad, [  --with-mad=PATH         path to libmad], [
2252   enable_mad="yes"
2253 ], [
2254   with_mad="no"
2256 AS_IF([test "${with_mad}" != "no"], [
2257   MAD_CFLAGS="-I${with_mad}/include"
2258   MAD_LIBS="-L${with_mad}/lib"
2261 AC_ARG_ENABLE(mad,
2262   [  --enable-mad            libmad module (default enabled)])
2263 AS_IF([test "${enable_mad}" != "no"], [
2264   VLC_SAVE_FLAGS
2265   CPPFLAGS="${CPPFLAGS} ${MAD_CFLAGS}"
2266   LDFLAGS="${LDFLAGS} ${MAD_LIBS}"
2267   AC_CHECK_HEADERS(mad.h, [
2268     AC_CHECK_LIB(mad, mad_bit_init, [
2269       have_mad="yes"
2270       MAD_LIBS="${MAD_LIBS} -lmad"
2271     ])
2272   ])
2273   VLC_RESTORE_FLAGS
2274   AS_IF([test -n "$enable_mad" -a "${have_mad}" = "no"], [
2275     AC_MSG_ERROR([Could not find libmad. Install it or pass --disable-mad to disable it.])
2276   ])
2278 AC_SUBST(MAD_CFLAGS)
2279 AC_SUBST(MAD_LIBS)
2280 AM_CONDITIONAL([HAVE_MAD], [test "${have_mad}" = "yes"])
2282 dnl  mpg123 plugin
2285 PKG_ENABLE_MODULES_VLC([MPG123], [mpg123], [libmpg123], [libmpg123 decoder support], [auto])
2288 dnl gstreamer stuff
2290 AC_ARG_ENABLE(gst-decode,
2291   [  --enable-gst-decode     GStreamer based decoding support (currently supports only video decoding) (default auto)])
2293 have_gst_decode="no"
2294 AS_IF([test "${enable_gst_decode}" != "no"], [
2295   PKG_CHECK_MODULES([GST_APP], [gstreamer-app-1.0], [
2296     PKG_CHECK_MODULES([GST_VIDEO], [gstreamer-video-1.0], [
2297       have_gst_decode="yes"
2298     ], [
2299       AC_MSG_WARN([${GST_VIDEO_PKG_ERRORS}. GStreamer decoder module will not be built.])
2300     ])
2301   ], [
2302     AC_MSG_WARN([${GST_APP_PKG_ERRORS}. GStreamer modules will not be built.])
2303   ])
2305 AM_CONDITIONAL([HAVE_GST_DECODE], [test "${have_gst_decode}" = "yes"])
2308 dnl  avcodec decoder/encoder plugin
2310 AC_ARG_ENABLE(merge-ffmpeg,
2311 [  --enable-merge-ffmpeg   merge FFmpeg-based plugins (default disabled)],, [
2312   enable_merge_ffmpeg="no"
2314 AM_CONDITIONAL([MERGE_FFMPEG], [test "$enable_merge_ffmpeg" != "no"])
2316 AC_MSG_CHECKING([for libavutil variant])
2317 PKG_CHECK_EXISTS([libavutil], [
2318   libavutil_version="$(${PKG_CONFIG} --modversion libavutil)"
2319   libavutil_micro="${libavutil_version##*.}"
2320   AS_IF([test ${libavutil_micro} -le 99], [
2321     avfork="libav"
2322   ], [
2323     avfork="ffmpeg"
2324   ])
2325 ], [
2326   avfork="none"
2328 AC_MSG_RESULT([${avfork}])
2330 AC_ARG_ENABLE(avcodec,
2331 [  --enable-avcodec        libavcodec codec (default enabled)])
2332 AS_IF([test "${enable_avcodec}" != "no"], [
2333   dnl We need >=57.16.0 from libav or >=57.37.100 from ffmpeg
2334   case "${avfork}" in
2335     libav) av_codec_ver="57.16.0" ;;
2336     ffmpeg) av_codec_ver="57.37.100" ;;
2337     *) AC_MSG_ERROR([Missing libav or FFmpeg. Pass --disable-avcodec to ignore this error.])
2338   esac
2339   PKG_CHECK_MODULES(AVCODEC,[libavcodec >= ${av_codec_ver} libavutil >= 52.0.0], [
2340     VLC_SAVE_FLAGS
2341     CPPFLAGS="${CPPFLAGS} ${AVCODEC_CFLAGS}"
2342     CFLAGS="${CFLAGS} ${AVCODEC_CFLAGS}"
2343     AC_CHECK_HEADERS(libavcodec/avcodec.h)
2344     AC_CHECK_HEADERS(libavutil/avutil.h)
2345     VLC_RESTORE_FLAGS
2346     have_avcodec="yes"
2347   ],[
2348     AC_MSG_ERROR([${AVCODEC_PKG_ERRORS}. Pass --disable-avcodec to ignore this error.])
2349   ])
2350 ], [
2351   have_avcodec="no"
2353 AM_CONDITIONAL([HAVE_AVCODEC], [test "${have_avcodec}" != "no"])
2356 dnl libva needs avcodec
2358 AC_ARG_ENABLE(libva,
2359   [  --enable-libva          VAAPI GPU decoding support (libVA) (default auto)])
2361 AS_IF([test "${enable_libva}" = "yes" -a "${have_avcodec}" != "yes" ], [
2362   AC_MSG_ERROR([--enable-libva and --disable-avcodec options are mutually exclusive. Use --enable-avcodec.])
2365 have_vaapi="no"
2366 have_vaapi_drm="no"
2367 have_vaapi_x11="no"
2368 have_vaapi_wl="no"
2369 AS_IF([test "${enable_libva}" != "no"], [
2370   PKG_CHECK_MODULES([LIBVA], [libva >= 0.38], [
2371     have_vaapi="yes"
2372   ], [
2373     AS_IF([test -n "${enable_libva}"], [
2374       AC_MSG_ERROR([${LIBVA_PKG_ERRORS}.])
2375     ], [
2376       AC_MSG_WARN([${LIBVA_PKG_ERRORS}.])
2377     ])
2378   ])
2379   PKG_CHECK_MODULES([LIBVA_DRM], [libva-drm], [
2380     have_vaapi_drm="yes"
2381   ], [
2382     AC_MSG_WARN([${LIBVA_DRM_PKG_ERRORS}.])
2383   ])
2384   PKG_CHECK_MODULES(LIBVA_X11, [libva-x11], [
2385     have_vaapi_x11="yes"
2386   ], [
2387     AC_MSG_WARN([${LIBVA_X11_PKG_ERRORS}.])
2388   ])
2389   PKG_CHECK_MODULES(LIBVA_WL, [libva-wayland], [
2390     have_vaapi_wl="yes"
2391   ], [
2392     AC_MSG_WARN([${LIBVA_WL_PKG_ERRORS}.])
2393   ])
2395 AM_CONDITIONAL([HAVE_VAAPI], [test "${have_vaapi}" = "yes"])
2396 AM_CONDITIONAL([HAVE_VAAPI_DRM], [test "${have_vaapi_drm}" = "yes"])
2397 AM_CONDITIONAL([HAVE_VAAPI_X11], [test "${have_vaapi_x11}" = "yes"])
2398 AM_CONDITIONAL([HAVE_VAAPI_WL], [test "${have_vaapi_wl}" = "yes"])
2400 have_avcodec_vaapi="no"
2401 AS_IF([test "${have_vaapi}" = "yes" -a "${have_avcodec}" = "yes"], [
2402   VLC_SAVE_FLAGS
2403   CPPFLAGS="${CPPFLAGS} ${AVCODEC_CFLAGS}"
2404   CFLAGS="${CFLAGS} ${AVCODEC_CFLAGS}"
2405   AC_CHECK_HEADERS([libavcodec/vaapi.h], [
2406     AC_MSG_NOTICE([VA API acceleration activated])
2407     have_avcodec_vaapi="yes"
2408   ],[
2409     AS_IF([test -n "${enable_libva}"], [
2410       AC_MSG_ERROR([libva is present but libavcodec/vaapi.h is missing])
2411     ], [
2412       AC_MSG_WARN([libva is present but libavcodec/vaapi.h is missing ])
2413     ])
2414   ])
2415   VLC_RESTORE_FLAGS
2417 AM_CONDITIONAL([HAVE_AVCODEC_VAAPI], [test "${have_avcodec_vaapi}" = "yes"])
2420 dnl dxva2 needs avcodec
2422 AC_ARG_ENABLE(dxva2,
2423   [  --enable-dxva2          DxVA2 GPU decoding support (default auto)])
2425 have_avcodec_dxva2="no"
2426 AS_IF([test "${enable_dxva2}" != "no"], [
2427   if test "${SYS}" = "mingw32"; then
2428   AS_IF([test "x${have_avcodec}" = "xyes"], [
2429     AC_CHECK_HEADERS(dxva2api.h,
2430       [
2431         AC_CHECK_HEADERS(libavcodec/dxva2.h, [
2432            AC_MSG_NOTICE([DxVA2 acceleration activated])
2433            have_avcodec_dxva2="yes"
2434         ],[
2435     AS_IF([test "${enable_dxva2}" = "yes"],
2436           [AC_MSG_ERROR([dxva2 is present but libavcodec/dxva2.h is missing])],
2437               [AC_MSG_WARN([dxva2 is present but libavcodec/dxva2.h is missing ])])
2438         ], [#undef _WIN32_WINNT
2439             /* DXVA2 is only available in Vista and above */
2440             #define _WIN32_WINNT 0x600])
2441       ],[
2442     AS_IF([test "${enable_dxva2}" = "yes"],
2443               [AC_MSG_ERROR([Could not find required dxva2api.h])],
2444               [AC_MSG_WARN([dxva2api.h not found])])
2445       ],[#include <d3d9.h>])
2446   ],[
2447     AS_IF([test "x${enable_dxva2}" != "x"], [
2448       AC_MSG_ERROR([--enable-dxva2 and --disable-avcodec options are mutually exclusive.])
2449     ])
2450   ])
2451   fi
2453 AM_CONDITIONAL([HAVE_AVCODEC_DXVA2], [test "${have_avcodec_dxva2}" = "yes"])
2456 dnl d3d11va needs avcodec
2458 AC_ARG_ENABLE(d3d11va,
2459   [  --enable-d3d11va          D3D11 GPU decoding support (default auto)])
2461 have_avcodec_d3d11va="no"
2462 AS_IF([test "${enable_d3d11va}" != "no"], [
2463   if test "${SYS}" = "mingw32"; then
2464   AS_IF([test "x${have_avcodec}" = "xyes"], [
2465         AC_CHECK_TYPES([ID3D11VideoDecoder],
2466           [
2467             AC_CHECK_HEADERS(dxva2api.h,
2468               [
2469                 AC_CHECK_HEADERS(libavcodec/d3d11va.h, [
2470                    AC_MSG_NOTICE([D3D11 acceleration activated])
2471                    AC_DEFINE(HAVE_AVCODEC_D3D11VA, 1, [Define if the d3d11va module is built])
2472                    have_avcodec_d3d11va="yes"
2473                 ],[
2474                   AS_IF([test "${enable_d3d11va}" = "yes"],
2475                     [AC_MSG_ERROR([d3d11va is present but libavcodec/d3d11va.h is missing])],
2476                         [AC_MSG_WARN([d3d11va is present but libavcodec/d3d11va.h is missing ])])
2477                   ], [#undef _WIN32_WINNT
2478                       /* D3D11 is only available in Vista and above */
2479                       #define _WIN32_WINNT 0x600])
2480                   ],[
2481                     AS_IF([test "${enable_d3d11va}" = "yes"],
2482                           [AC_MSG_ERROR([Could not find required dxva2api.h])],
2483                           [AC_MSG_WARN([dxva2api.h not found])])
2484                   ],[#include <d3d9.h>])
2485           ],[
2486             AS_IF([test "${enable_d3d11va}" = "yes"],
2487                   [AC_MSG_ERROR([Could not find required ID3D11VideoDecoder in d3d11.h])],
2488                   [AC_MSG_WARN([ID3D11VideoDecoder not found])])
2489           ], [#include <d3d11.h>])
2490   ],[
2491     AS_IF([test "x${enable_d3d11va}" != "x"], [
2492       AC_MSG_ERROR([--enable-d3d11va and --disable-avcodec options are mutually exclusive.])
2493     ])
2494   ])
2495   fi
2497 AM_CONDITIONAL([HAVE_AVCODEC_D3D11VA], [test "${have_avcodec_d3d11va}" = "yes"])
2500 dnl DXGI debug
2502 AC_CHECK_HEADERS(dxgidebug.h dxgi1_6.h)
2505 dnl  avformat demuxer/muxer plugin
2508 AC_ARG_ENABLE(avformat,
2509 [  --enable-avformat       libavformat containers (default enabled)],, [
2510   enable_avformat="${have_avcodec}"
2512 have_avformat="no"
2513 AS_IF([test "${enable_avformat}" != "no"], [
2514   PKG_CHECK_MODULES(AVFORMAT,[libavformat >= 53.21.0 libavcodec libavutil], [
2515       have_avformat="yes"
2516       VLC_SAVE_FLAGS
2517       CPPFLAGS="${CPPFLAGS} ${AVFORMAT_CFLAGS}"
2518       CFLAGS="${CFLAGS} ${AVFORMAT_CFLAGS}"
2519       AC_CHECK_HEADERS(libavformat/avformat.h libavformat/avio.h)
2520       AC_CHECK_HEADERS(libavcodec/avcodec.h)
2521       AC_CHECK_HEADERS(libavutil/avutil.h)
2522       AS_IF([test "$enable_merge_ffmpeg" = "no"], [
2523         have_avformat="no"
2524       ])
2525       VLC_RESTORE_FLAGS
2526     ],[
2527       AC_MSG_ERROR([${AVFORMAT_PKG_ERRORS}. Pass --disable-avformat to ignore this error.])
2528   ])
2530 AM_CONDITIONAL([HAVE_AVFORMAT], [test "${enable_avformat}" != "no"])
2533 dnl  swscale image scaling and conversion plugin
2536 AC_ARG_ENABLE(swscale,
2537   AS_HELP_STRING([--enable-swscale],[libswscale image scaling and conversion
2538           (default enabled)]))
2539 if test "${enable_swscale}" != "no"
2540 then
2541   PKG_CHECK_MODULES(SWSCALE,[libswscale],
2542     [
2543       VLC_SAVE_FLAGS
2544       CPPFLAGS="${CPPFLAGS} ${SWSCALE_CFLAGS}"
2545       CFLAGS="${CFLAGS} ${SWSCALE_CFLAGS}"
2546       AC_CHECK_HEADERS(libswscale/swscale.h)
2547       AC_CHECK_HEADERS(libavutil/avutil.h)
2548       VLC_ADD_PLUGIN([swscale])
2549       VLC_ADD_LIBS([swscale],[$SWSCALE_LIBS])
2550       VLC_ADD_CFLAGS([swscale],[$SWSCALE_CFLAGS])
2551       AS_IF([test -n "${ac_cv_ld_bsymbolic}"], [
2552         VLC_ADD_LIBS([swscale],[${ac_cv_ld_bsymbolic}])
2553       ])
2554       VLC_RESTORE_FLAGS
2555     ],[
2556       AC_MSG_ERROR([${SWSCALE_PKG_ERRORS}. Pass --disable-swscale to ignore this error. Proper software scaling and some video chroma conversion will be missing.])
2557   ])
2561 dnl  postproc plugin
2564 AC_ARG_ENABLE(postproc,
2565 [  --enable-postproc       libpostproc image post-processing (default auto)])
2566 if test "${enable_postproc}" != "no"
2567 then
2568   PKG_CHECK_MODULES(POSTPROC,[libpostproc libavutil],
2569     [
2570       VLC_SAVE_FLAGS
2571       CPPFLAGS="${CPPFLAGS} ${POSTPROC_CFLAGS}"
2572       CFLAGS="${CFLAGS} ${POSTPROC_CFLAGS}"
2573       AC_CHECK_HEADERS(postproc/postprocess.h)
2574       VLC_ADD_PLUGIN([postproc])
2575       VLC_RESTORE_FLAGS
2576     ],[
2577       AC_MSG_WARN([${POSTPROC_PKG_ERRORS}.])
2578   ])
2582 dnl  faad decoder plugin
2584 AC_ARG_ENABLE(faad,
2585 [  --enable-faad           faad codec (default auto)])
2586 have_faad="no"
2587 AS_IF([test "${enable_faad}" != "no"], [
2588   AC_CHECK_HEADERS([neaacdec.h], [
2589     AC_CHECK_LIB(faad, NeAACDecOpen, [have_faad="yes"],, [$LIBM])
2591     AS_IF([test "${have_faad}" = "yes"], [
2592       VLC_ADD_PLUGIN([faad])
2593       VLC_ADD_LIBS([faad],[-lfaad])
2594     ], [
2595       AS_IF([test "${enable_faad}" = "yes"], [
2596         AC_MSG_ERROR([cannot find FAAD library])
2597       ], [
2598         AC_MSG_WARN([cannot find FAAD library])
2599       ])
2600     ])
2601   ])
2605 dnl  AOM decoder plugin
2607 PKG_ENABLE_MODULES_VLC([AOM], [], [aom], [experimental AV1 codec (default auto)])
2610 dnl libvpx decoder plugin
2612 AC_ARG_ENABLE(vpx,
2613     AS_HELP_STRING([--enable-vpx],[libvpx VP8/VP9 encoder and decoder (default auto)]))
2614 AS_IF([test "${enable_vpx}" != "no"],[
2615     PKG_CHECK_MODULES([VPX], [vpx >= 1.5.0], [
2616         VLC_ADD_PLUGIN([vpx])
2617         VLC_ADD_CPPFLAGS([vpx], [${VPX_CFLAGS}])
2618         VLC_ADD_LIBS([vpx], [${VPX_LIBS}])
2619         AC_CHECK_LIB([vpx],[vpx_codec_vp8_dx], [
2620             VLC_ADD_CPPFLAGS([vpx], [-DENABLE_VP8_DECODER])
2621         ], [], [${VPX_LIBS}])
2622         AC_CHECK_LIB([vpx],[vpx_codec_vp9_dx], [
2623             VLC_ADD_CPPFLAGS([vpx], [-DENABLE_VP9_DECODER])
2624         ], [], [${VPX_LIBS}])
2625         AC_CHECK_LIB([vpx],[vpx_codec_vp8_cx], [
2626             VLC_ADD_CPPFLAGS([vpx], [-DENABLE_VP8_ENCODER])
2627         ], [], [${VPX_LIBS}])
2628         AC_CHECK_LIB([vpx],[vpx_codec_vp9_cx], [
2629             VLC_ADD_CPPFLAGS([vpx], [-DENABLE_VP9_ENCODER])
2630         ], [], [${VPX_LIBS}])
2631     ], [
2632     AS_IF([test "${enable_vpx}" = "yes"],[
2633         AC_MSG_ERROR([libvpx 1.5.0 or higher was not found])
2634     ])])
2638 dnl twolame encoder plugin
2640 PKG_ENABLE_MODULES_VLC([TWOLAME], [], [twolame], [MPEG Audio Layer 2 encoder], [auto], [], [], [ -DLIBTWOLAME_STATIC])
2643 dnl fdk-aac encoder plugin
2645 PKG_ENABLE_MODULES_VLC([FDKAAC], [], [fdk-aac], [FDK-AAC encoder], [disabled])
2649 dnl A52/AC3 decoder plugin
2651 AC_ARG_ENABLE(a52,
2652   [  --enable-a52            A/52 support with liba52 (default enabled)])
2653 if test "${enable_a52}" != "no"
2654 then
2655   AC_ARG_WITH(a52,
2656     [  --with-a52=PATH         a52 headers and libraries])
2657     if test -z "${with_a52}"
2658     then
2659       LDFLAGS_test=""
2660       CPPFLAGS_test=""
2661     else
2662       LDFLAGS_test="-L${with_a52}/lib"
2663       CPPFLAGS_test="-I${with_a52}/include"
2664     fi
2665     VLC_SAVE_FLAGS
2666     CPPFLAGS="${CPPFLAGS} ${CPPFLAGS_test} ${CPPFLAGS_a52}"
2667     LDFLAGS="${LDFLAGS} ${LDFLAGS_test} ${LIBS_a52}"
2668     AC_CHECK_HEADERS(a52dec/a52.h, [
2669       AC_CHECK_LIB(a52, a52_free, [
2670         VLC_ADD_PLUGIN([a52])
2671         VLC_ADD_LIBS([a52],[${LDFLAGS_test} -la52 $LIBM])
2672         VLC_ADD_CPPFLAGS([a52],[${CPPFLAGS_test}])
2673       ],[
2674         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.])
2675         ], [$LIBM])
2676     ],[
2677       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.])
2678     ])
2679     VLC_RESTORE_FLAGS
2683 dnl DTS Coherent Acoustics decoder plugin
2685 PKG_ENABLE_MODULES_VLC([DCA], [dca], [libdca >= 0.0.5], [DTS Coherent Acoustics support with libdca], [auto])
2688 dnl  Flac plugin
2690 PKG_ENABLE_MODULES_VLC([FLAC], [], [flac], [libflac decoder/encoder support], [auto])
2693 dnl  Libmpeg2 plugin
2695 PKG_ENABLE_MODULES_VLC([LIBMPEG2], [], [libmpeg2 > 0.3.2], [libmpeg2 decoder support], [auto])
2698 dnl  Vorbis plugin
2700 PKG_ENABLE_MODULES_VLC([VORBIS], [], [ogg vorbis >= 1.1 vorbisenc >= 1.1], [Vorbis decoder and encoder], [auto])
2703 dnl  Tremor plugin
2705 AC_ARG_ENABLE(tremor,
2706   [  --enable-tremor         Tremor decoder support (default disabled)])
2707 if test "${enable_tremor}" = "yes"
2708 then
2709   AC_CHECK_HEADERS(tremor/ivorbiscodec.h, [
2710     VLC_ADD_PLUGIN([tremor])
2711    ],[])
2715 dnl  Speex plugins
2717 PKG_ENABLE_MODULES_VLC([SPEEX], [], [ogg speex >= 1.0.5], [Speex support], [auto])
2718 have_speexdsp="no"
2719 AS_IF([test "${enable_speex}" != "no"], [
2720   PKG_CHECK_MODULES([SPEEXDSP], [speexdsp], [
2721     have_speexdsp="yes"
2722   ], [
2723     AC_MSG_WARN([${SPEEXDSP_PKG_ERRORS}.])
2724   ])
2726 AM_CONDITIONAL([HAVE_SPEEXDSP], [test "$have_speexdsp" = "yes"])
2729 dnl  Opus plugin
2731 PKG_ENABLE_MODULES_VLC([OPUS], [], [ogg opus >= 1.0.3], [Opus support], [auto])
2734 dnl  Ambisonic channel mixer and binauralizer plugin
2736 PKG_ENABLE_MODULES_VLC([SPATIALAUDIO], [], [spatialaudio], [Ambisonic channel mixer and binauralizer], [auto])
2739 dnl  theora decoder plugin
2741 PKG_ENABLE_MODULES_VLC([THEORA], [], [ogg theoradec >= 1.0 theoraenc], [experimental theora codec], [auto])
2744 dnl  OggSpots decoder plugin
2746 PKG_ENABLE_MODULES_VLC([OGGSPOTS], [], [ogg], [experimental OggSpots codec], [auto])
2749 dnl  Daala decoder plugin
2751 PKG_ENABLE_MODULES_VLC([DAALA], [], [daaladec daalaenc], [experimental daala codec], [disabled])
2754 dnl  schroedinger decoder plugin (for dirac format video)
2756 PKG_ENABLE_MODULES_VLC([SCHROEDINGER], [], [schroedinger-1.0 >= 1.0.10], [dirac decoder and encoder using schroedinger], [auto])
2759 dnl  PNG decoder module
2761 AC_ARG_ENABLE(png,
2762   [  --enable-png            PNG support (default enabled)])
2763 AS_IF([test "${enable_png}" != "no"], [
2764 AC_CHECK_HEADERS(png.h, [
2765   VLC_SAVE_FLAGS
2766   LDFLAGS="${LDFLAGS} -lz $LIBM"
2767   AC_CHECK_LIB(png, png_set_alpha_mode, [
2768     VLC_ADD_PLUGIN([png])
2769   ], [], [-lz $LIBM])
2770   VLC_RESTORE_FLAGS
2771   ])
2775 dnl  JPEG decoder module
2777 AC_ARG_ENABLE(jpeg,
2778   [  --enable-jpeg           JPEG support (default enabled)])
2779 AS_IF([test "${enable_jpeg}" != "no"], [
2780 AC_CHECK_HEADERS(jpeglib.h, [
2781   VLC_ADD_PLUGIN([jpeg])
2782   ])
2786 dnl  BPG decoder module
2788 AC_ARG_ENABLE(bpg,
2789   [  --enable-bpg           BPG support (default disabled)])
2790 AS_IF([test "${enable_bpg}" != "no"], [
2791 AC_CHECK_HEADERS(libbpg.h, [
2792   VLC_ADD_PLUGIN([bpg])
2793   ])
2797 dnl H262 encoder plugin (lib262)
2799 AC_ARG_ENABLE(x262,
2800   [  --enable-x262           H262 encoding support with static libx262 (default disabled)])
2801 if test "${enable_x262}" != "no"; then
2802     PKG_CHECK_MODULES(X262, x262, [
2803         VLC_ADD_PLUGIN([x262])
2804         VLC_ADD_LDFLAGS([x262],[${X262_LIBS}])
2805         AS_IF([test -n "${ac_cv_ld_bsymbolic}"], [
2806           VLC_ADD_LIBS([x262],[${av_cv_ld_bsymbolic}])
2807         ])
2808         VLC_ADD_CFLAGS([x262],[${X262_CFLAGS}])
2809         if echo ${X262_LIBS} |grep -q 'pthreadGC2'; then
2810           VLC_ADD_CFLAGS([x262], [-DPTW32_STATIC_LIB])
2811         fi
2812     ], [
2813        if test "${enable_x262}" = "yes"; then
2814         AC_MSG_ERROR([x262 module doesn't work without staticly compiled libx262.a])
2815        fi
2816     ])
2819 dnl x265 encoder
2820 PKG_ENABLE_MODULES_VLC([X265],, [x265], [HEVC/H.265 encoder], [auto])
2823 dnl H264 encoder plugin (using libx264)
2825 AC_ARG_ENABLE(x264,
2826   [  --enable-x264           H264 encoding support with libx264 (default enabled)])
2827 if test "${enable_x264}" != "no"; then
2828       PKG_CHECK_MODULES(X264,x264 >= 0.148, [
2829         VLC_ADD_PLUGIN([x264])
2830         VLC_ADD_LIBS([x264],[${X264_LIBS}])
2832         AS_IF([test -n "${ac_cv_ld_bsymbolic}"], [
2833           VLC_ADD_LDFLAGS([x264],[${ac_cv_ld_bsymbolic}])
2834         ])
2836         VLC_ADD_CFLAGS([x264],[${X264_CFLAGS}])
2837         if echo ${X264_LIBS} |grep -q 'pthreadGC2'; then
2838           VLC_ADD_CFLAGS([x264], [-DPTW32_STATIC_LIB])
2839         fi
2840       ],[
2841         if test "${enable_x264}" = "yes"; then
2842             AC_MSG_ERROR([${X264_PKG_ERRORS}: you may get it from http://www.videolan.org/x264.html])
2843           fi
2844       ])
2848 dnl H264 encoder plugin (libx264 > 153)
2850 AC_ARG_ENABLE(x26410b,
2851   [  --enable-x26410b           H264 10-bit encoding support with libx264 (default enabled)])
2852 if test "${enable_x26410b}" != "no"; then
2853       PKG_CHECK_MODULES(X26410b,x264 >= 0.153, [
2854         VLC_ADD_PLUGIN([x26410b])
2855         VLC_ADD_LIBS([x26410b],[${X264_LIBS}])
2857         AS_IF([test -n "${ac_cv_ld_bsymbolic}"], [
2858           VLC_ADD_LDFLAGS([x26410b],[${ac_cv_ld_bsymbolic}])
2859         ])
2861         VLC_ADD_CFLAGS([x26410b],[${X264_CFLAGS}])
2862         if echo ${X264_LIBS} |grep -q 'pthreadGC2'; then
2863           VLC_ADD_CFLAGS([x26410b], [-DPTW32_STATIC_LIB])
2864         fi
2865       ],[
2866         if test "${enable_x26410b}" = "yes"; then
2867             AC_MSG_ERROR([${X264_PKG_ERRORS}: you may get it from http://www.videolan.org/x264.html])
2868           fi
2869       ])
2874 dnl Intel QuickSync (aka MediaSDK) H264/H262 encoder
2876 PKG_ENABLE_MODULES_VLC([MFX], [qsv], [libmfx], [Intel QuickSync MPEG4-Part10/MPEG2 (aka H.264/H.262) encoder], [auto])
2879 dnl libfluidsynth (MIDI synthetizer) plugin
2881 PKG_ENABLE_MODULES_VLC([FLUIDSYNTH], [], [fluidsynth >= 1.1.2], [MIDI synthetiser with libfluidsynth], [auto])
2882 PKG_ENABLE_MODULES_VLC([FLUIDLITE], [fluidsynth], [fluidlite], [MIDI synthetiser with libfluidsynth], [auto])
2883 AC_CHECK_HEADERS(fluidlite.h, [AC_SUBST([FLUIDSYNTH_LIBS], ${FLUIDLITE_LIBS})])
2886 dnl Teletext Modules
2887 dnl vbi decoder plugin (using libzbvi)
2888 dnl telx module
2889 dnl uncompatible
2891 AC_ARG_ENABLE(zvbi,
2892   AS_HELP_STRING([--enable-zvbi],[VBI (inc. Teletext) decoding support with
2893                   libzvbi (default enabled)]))
2894 AC_ARG_ENABLE(telx,
2895   AS_HELP_STRING([--enable-telx],[Teletext decoding module (conflicting with
2896                   zvbi) (default enabled if zvbi is absent)]))
2898 AS_IF( [test "${enable_zvbi}" != "no"],[
2899     PKG_CHECK_MODULES(ZVBI, [zvbi-0.2 >= 0.2.28],
2900         [
2901           VLC_ADD_PLUGIN([zvbi])
2902           AC_DEFINE(ZVBI_COMPILED, 1, [Define if the zvbi module is built])
2903           AS_IF( [test "${enable_telx}" = "yes"],[
2904                   AC_MSG_WARN([The zvbi and telx modules are incompatible. Using zvbi.])
2905                   ])
2906         ],[
2907           AC_MSG_WARN([${ZVBI_PKG_ERRORS}. Enabling the telx module instead.])
2908         ])
2909     ])
2910 AS_IF( [test "${enable_telx}" != "no" ],[
2911   VLC_ADD_PLUGIN([telx])
2912   ])
2915 dnl ARIB subtitles rendering module
2917 AC_ARG_ENABLE(aribsub,
2918   [  --enable-aribsub        ARIB Subtitles support (default enabled)])
2919 AS_IF( [test "${enable_aribsub}" != "no" ],[
2920   PKG_CHECK_MODULES(ARIBB24, [aribb24 >= 1.0.1], [
2921       have_aribb24="yes"
2922       VLC_ADD_PLUGIN([aribsub])
2923       VLC_ADD_LIBS([aribsub],[-laribb24])
2924       AC_DEFINE(HAVE_ARIBB24, 1, [Define if libaribb24 is available.])
2925     ],[
2926       AC_MSG_WARN(Library [aribb24] needed for [aribsub] was not found)
2927       have_aribb24="no"
2928   ])
2930 AM_CONDITIONAL([HAVE_ARIBB24], [test x"${have_aribb24}" = x"yes"])
2933 dnl ARIB B25
2935 PKG_ENABLE_MODULES_VLC([ARIBB25], [aribcam], [aribb25 >= 0.2.6], [ARIB STD-B25], [auto])
2938 dnl  kate decoder plugin
2940 PKG_ENABLE_MODULES_VLC([KATE], [], [kate >= 0.3.0], [kate codec], [auto])
2943 dnl  tiger rendering for kate decoder plugin
2945 AC_ARG_ENABLE(tiger,
2946 [  --enable-tiger          Tiger rendering library for Kate streams (default auto)])
2947 AS_IF([test "${enable_tiger}" != "no"], [
2948   PKG_CHECK_MODULES(TIGER,[tiger >= 0.3.1], [
2949       AC_DEFINE(HAVE_TIGER, 1, [Define if libtiger is available.])],[
2950         AS_IF([test -n "${enable_tiger}"], [
2951           AC_MSG_ERROR([${TIGER_PKG_ERRORS}.])
2952         ])
2953   ])
2957 dnl  check if we can build the css selector engine 
2959 AC_ARG_ENABLE(css,
2960 [  --enable-css            CSS selector engine (default auto)])
2961 AS_IF([test "${enable_css}" != "no"], [
2962   with_css="yes"
2963   AC_DEFINE(HAVE_CSS, 1, [Define if CSS engine is built])
2965 AM_CONDITIONAL([ENABLE_CSS], [test "${with_css}" = "yes"])
2969 dnl  Video plugins
2972 EXTEND_HELP_STRING([Video plugins:])
2975 dnl  OpenGL
2977 PKG_CHECK_MODULES([EGL], [egl], [
2978   have_egl="yes"
2979 ], [
2980   have_egl="no"
2982 AM_CONDITIONAL([HAVE_EGL], [test "${have_egl}" = "yes"])
2984 have_gl="no"
2985 PKG_CHECK_MODULES([GL], [gl], [
2986   have_gl="yes"
2987 ], [
2988   AC_MSG_CHECKING([for OpenGL])
2989   AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
2990 #ifdef _WIN32
2991 # include <GL/glew.h>
2992 #endif
2993 #include <GL/gl.h>
2994 ]], [
2995     [int t0 = GL_TEXTURE0;]])
2996   ], [
2997     GL_CFLAGS=""
2998     have_gl="yes"
2999     AS_IF([test "${SYS}" != "mingw32"], [
3000       GL_LIBS="-lGL"
3001     ], [
3002       GL_LIBS="-lopengl32"
3003     ])
3004   ])
3005   AC_MSG_RESULT([${have_gl}])
3007 AM_CONDITIONAL([HAVE_GL], [test "${have_gl}" = "yes"])
3008 AS_IF([test "${have_gl}" = "yes"], [
3009   AC_DEFINE([HAVE_GL], 1, [Defined if having OpenGL])
3012 dnl OpenGL ES 2: depends on EGL 1.1
3013 PKG_ENABLE_MODULES_VLC([GLES2], [], [glesv2], [OpenGL ES v2 support], [disabled])
3016 dnl  Xlib
3019 AC_PATH_XTRA()
3020 AC_CHECK_HEADERS(X11/Xlib.h)
3023 dnl  X C Bindings modules
3025 AC_ARG_ENABLE(xcb,
3026   [  --enable-xcb            X11 support with XCB (default enabled)],, [
3027   AS_IF([test "${SYS}" != "mingw32" -a "${SYS}" != "darwin"], [
3028     enable_xcb="yes"
3029   ], [
3030     enable_xcb="no"
3031   ])
3034 have_xcb="no"
3035 have_xkbcommon_x11="no"
3036 have_xcb_keysyms="no"
3037 AS_IF([test "${enable_xcb}" != "no"], [
3038   xcb_err=""
3040   dnl libxcb
3041   PKG_CHECK_MODULES([XCB], [xcb >= 1.6],, [
3042     xcb_err="$xcb_err ${XCB_PKG_ERRORS}."])
3043   PKG_CHECK_MODULES([XCB_COMPOSITE], [xcb-composite],, [
3044     xcb_err="$xcb_err ${XCB_COMPOSITE_PKG_ERRORS}."])
3045   PKG_CHECK_MODULES([XCB_RANDR], [xcb-randr >= 1.3],, [
3046     xcb_err="$xcb_err ${XCB_RANDR_PKG_ERRORS}."])
3047   PKG_CHECK_MODULES([XCB_SHM], [xcb-shm],, [
3048     xcb_err="$xcb_err ${XCB_SHM_PKG_ERRORS}."])
3049   PKG_CHECK_MODULES([XCB_XKB], [xcb-xkb],, [
3050     xcb_err="$xcb_err ${XCB_XKB_PKG_ERRORS}."])
3051   PKG_CHECK_MODULES([XCB_XV], [xcb-xv >= 1.1.90.1],, [
3052     xcb_err="$xcb_err ${XCB_XV_PKG_ERRORS}."])
3054   dnl xproto
3055   PKG_CHECK_MODULES(XPROTO, [xproto],, [
3056     xcb_err="$xcb_err ${XPROTO_PKG_ERRORS}."])
3058   AS_IF([test -n "$xcb_err"], [
3059     AC_MSG_ERROR([$xcb_err Pass --disable-xcb to skip X11 support.])
3060   ])
3062   dnl xkbcommon
3063   PKG_CHECK_MODULES([XKBCOMMON_X11], [xkbcommon-x11], [
3064     have_xkbcommon_x11="yes"
3065   ], [
3066     AC_MSG_WARN([${XKBCOMMON_X11_PKG_ERRORS}. Hotkeys are disabled.])
3067   ])
3069   dnl xcb-utils
3070   PKG_CHECK_MODULES([XCB_KEYSYMS], [xcb-keysyms >= 0.3.4], [
3071     have_xcb_keysyms="yes"
3072   ], [
3073     AC_MSG_WARN([${XCB_KEYSYMS_PKG_ERRORS}. Global hotkeys are disabled.])
3074   ])
3076   have_xcb="yes"
3078 AM_CONDITIONAL([HAVE_XCB], [test "${have_xcb}" = "yes"])
3079 AM_CONDITIONAL([HAVE_XKBCOMMON_X11], [test "${have_xkbcommon_x11}" = "yes"])
3080 AM_CONDITIONAL([HAVE_XCB_KEYSYMS], [test "${have_xcb_keysyms}" = "yes"])
3084 dnl VDPAU needs X11
3086 AC_ARG_ENABLE(vdpau,
3087   [AS_HELP_STRING([--enable-vdpau], [VDPAU hardware support (default auto)])])
3088 have_vdpau="no"
3089 AS_IF([test "${enable_vdpau}" != "no"], [
3090   PKG_CHECK_MODULES([VDPAU], [vdpau >= 0.6], [
3091     have_vdpau="yes"
3092     AS_IF([test "${no_x}" = "yes"], [
3093       AC_MSG_ERROR([VDPAU requires Xlib (X11).])
3094     ])
3095   ], [
3096     AS_IF([test -n "${enable_vdpau}"], [
3097       AC_MSG_ERROR([${VDPAU_PKG_ERRORS}.])
3098     ])
3099   ])
3101 AM_CONDITIONAL([HAVE_VDPAU], [test "${have_vdpau}" = "yes"])
3103 have_avcodec_vdpau="no"
3104 AS_IF([test "${have_vdpau}" = "yes" -a "${have_avcodec}" = "yes"], [
3105   case "${avfork}" in
3106     libav) av_vdpau_ver="56.10.0" ;;
3107     ffmpeg) av_vdpau_ver="56.19.100" ;;
3108   esac
3109   PKG_CHECK_EXISTS([libavcodec >= ${av_vdpau_ver}], [
3110     have_avcodec_vdpau="yes"
3111     AC_MSG_NOTICE([VDPAU decoding acceleration activated])
3112   ], [
3113     AS_IF([test -n "${enable_vdpau}"], [
3114       AC_MSG_ERROR([libavcodec >= 56.10.0 is required for VDPAU decoding.])
3115     ], [
3116       AC_MSG_WARN([libavcodec >= 56.10.0 are required for VDPAU decoding.])
3117     ])
3118   ])
3120 AM_CONDITIONAL([HAVE_AVCODEC_VDPAU], [test "${have_avcodec_vdpau}" = "yes"])
3124 dnl  Wayland
3126 AC_ARG_ENABLE(wayland,
3127   [AS_HELP_STRING([--enable-wayland], [Wayland support (default auto)])])
3129 have_wayland="no"
3130 AS_IF([test "${enable_wayland}" != "no"], [
3131   wl_err=""
3133   dnl wayland
3134   PKG_CHECK_MODULES([WAYLAND_CLIENT], [wayland-client >= 1.5.91],, [
3135     wl_err="$wl_err ${WAYLAND_CLIENT_PKG_ERRORS}."
3136   ])
3137   PKG_CHECK_MODULES([WAYLAND_CURSOR], [wayland-cursor],, [
3138     wl_err="$wl_err ${WAYLAND_CURSOR_PKG_ERRORS}."
3139   ])
3140   PKG_CHECK_MODULES([WAYLAND_EGL], [wayland-egl],, [
3141     wl_err="$wl_err ${WAYLAND_EGL_PKG_ERRORS}."
3142   ])
3143   PKG_CHECK_MODULES([WAYLAND_SCANNER], [wayland-scanner >= 1.15], [
3144     WAYLAND_SCANNER="$(${PKG_CONFIG} wayland-scanner --variable wayland_scanner)"
3145   ], [
3146     wl_err="$wl_err ${WAYLAND_SCANNER_PKG_ERRORS}."
3147   ])
3149   dnl wayland-protocols
3150   PKG_CHECK_MODULES([WAYLAND_PROTOCOLS], [wayland-protocols >= 1.12], [
3151     WAYLAND_PROTOCOLS="$(${PKG_CONFIG} wayland-protocols --variable pkgdatadir)"
3152   ], [
3153     wl_err="$wl_err ${WAYLAND_PROTOCOLS_PKG_ERRORS}."
3154   ])
3156   AS_IF([test -n "$wl_err"], [
3157     AS_IF([test -n "$enable_wayland"], [
3158       AC_MSG_ERROR([$wl_err])
3159     ], [
3160       AC_MSG_WARN([$wl_err])
3161     ])
3162   ], [
3163     have_wayland="yes"
3164   ])
3166   dnl xkbcommon
3167   PKG_CHECK_MODULES([XKBCOMMON], [xkbcommon], [
3168     have_xkbcommon="yes"
3169   ], [
3170     AC_MSG_WARN([${XKBCOMMON_PKG_ERRORS}. Hotkeys are disabled.])
3171   ])
3173 AM_CONDITIONAL([HAVE_WAYLAND], [test "${have_wayland}" = "yes"])
3174 AC_SUBST([WAYLAND_PROTOCOLS])
3175 AC_SUBST([WAYLAND_SCANNER])
3176 AM_CONDITIONAL([HAVE_XKBCOMMON], [test "${have_xkbcommon}" = "yes"])
3180 dnl  SDL image decoder module
3182 AC_ARG_ENABLE(sdl-image,
3183   [  --enable-sdl-image      SDL image support (default enabled)])
3184 AS_IF([test "${enable_sdl_image}" != "no"],[
3185   PKG_CHECK_MODULES(SDL_IMAGE, [SDL_image >= 1.2.10], [
3186     VLC_ADD_PLUGIN([sdl_image])
3187   ], [
3188     AC_MSG_WARN([${SDL_IMAGE_PKG_ERRORS}. You should install it alongside your SDL package.])
3189   ])
3193 dnl  freetype module
3195 AC_ARG_ENABLE(freetype,
3196   [  --enable-freetype       freetype support   (default auto)])
3197 AC_ARG_ENABLE(fribidi,
3198   [  --enable-fribidi        fribidi support    (default auto)])
3199 AC_ARG_ENABLE(harfbuzz,
3200   [  --enable-harfbuzz       harfbuzz support   (default auto)])
3201 AC_ARG_ENABLE(fontconfig,
3202   [  --enable-fontconfig     fontconfig support (default auto)])
3204 AC_ARG_WITH([default-font],
3205     AS_HELP_STRING([--with-default-font=PATH],
3206         [Path to the default font]),
3207         [AC_DEFINE_UNQUOTED([DEFAULT_FONT_FILE],
3208             "$withval", [Default font])])
3209 AC_ARG_WITH([default-monospace-font],
3210     AS_HELP_STRING([--with-default-monospace-font=PATH],
3211         [Path to the default font]),
3212         [AC_DEFINE_UNQUOTED([DEFAULT_MONOSPACE_FONT_FILE],
3213             "$withval", [Default monospace font])])
3215 AC_ARG_WITH([default-font-family],
3216     AS_HELP_STRING([--with-default-font-family=NAME],
3217         [Path to the default font family]),
3218         [AC_DEFINE_UNQUOTED([DEFAULT_FAMILY],
3219             "$withval", [Default font family])])
3220 AC_ARG_WITH([default-monospace-font-family],
3221     AS_HELP_STRING([--with-default-monospace-font-family=NAME],
3222         [Path to the default font family]),
3223         [AC_DEFINE_UNQUOTED([DEFAULT_MONOSPACE_FAMILY],
3224             "$withval", [Default monospace font family])])
3226 have_freetype="no"
3227 have_fontconfig="no"
3228 have_fribidi="no"
3229 have_harfbuzz="no"
3231 if test "${enable_freetype}" != "no"; then
3232    PKG_CHECK_MODULES(FREETYPE, freetype2, [
3233       have_freetype="yes"
3234       VLC_ADD_CPPFLAGS([skins2],[${FREETYPE_CFLAGS}])
3235       VLC_ADD_LIBS([skins2],[${FREETYPE_LIBS}])
3237     dnl fontconfig support
3238     AS_IF([test "${enable_fontconfig}" != "no" -a "${SYS}" != "mingw32" -a "${SYS}" != "darwin"], [
3239       PKG_CHECK_MODULES(FONTCONFIG, [fontconfig >= 2.11], [
3240         have_fontconfig="yes"
3241       ], [
3242         AC_MSG_WARN([${FONTCONFIG_PKG_ERRORS}. Styles will be disabled in FreeType.])
3243       ])
3244     ])
3246       dnl fribidi support
3247       if test "${enable_fribidi}" != "no"; then
3248         PKG_CHECK_MODULES(FRIBIDI, fribidi, [
3249           have_fribidi="yes"
3250           VLC_ADD_CPPFLAGS([skins2], [${FRIBIDI_CFLAGS} -DHAVE_FRIBIDI])
3251           VLC_ADD_LIBS([skins2], [${FRIBIDI_LIBS}])
3252         ],[AC_MSG_WARN([${FRIBIDI_PKG_ERRORS}. Bidirectional text and complex scripts (Arabic, Farsi, Thai...) will be disabled in FreeType.])])
3253       fi
3255       dnl harfbuzz support
3256       if test "${have_fribidi}" != "no"; then
3257         if test "${enable_harfbuzz}" != "no"; then
3258           PKG_CHECK_MODULES(HARFBUZZ, harfbuzz, [
3259             have_harfbuzz="yes"
3260             VLC_ADD_CPPFLAGS([skins2], [${HARFBUZZ_CFLAGS} -DHAVE_HARFBUZZ])
3261             VLC_ADD_LIBS([skins2], [${HARFBUZZ_LIBS}])
3262           ],[AC_MSG_WARN([${HARFBUZZ_PKG_ERRORS}. Support for complex scripts (Arabic, Farsi, Thai...) will be disabled in FreeType.])])
3263         fi
3264       fi
3265   ],[
3266   AS_IF([test -n "${enable_freetype}"],[
3267     AC_MSG_ERROR([${FREETYPE_PKG_ERRORS}. Install FreeType2 development or configure with --disable-freetype.])
3268     ])
3269   ])
3272 AM_CONDITIONAL([HAVE_FREETYPE], [test "${have_freetype}" = "yes"])
3273 AM_CONDITIONAL([HAVE_FONTCONFIG], [test "${have_fontconfig}" = "yes"])
3274 AM_CONDITIONAL([HAVE_FRIBIDI], [test "${have_fribidi}" = "yes"])
3275 AM_CONDITIONAL([HAVE_HARFBUZZ], [test "${have_harfbuzz}" = "yes"])
3278 dnl libass subtitle rendering module
3280 AC_ARG_ENABLE(libass,
3281   [  --enable-libass         Subtitle support using libass (default enabled)])
3282 AS_IF( [test "${enable_libass}" != "no"], [
3283   PKG_CHECK_MODULES(LIBASS, [libass >= 0.9.8],
3284       [
3285         VLC_ADD_PLUGIN([libass])
3287         if test "${have_fontconfig}" != "no"; then
3288             VLC_ADD_CPPFLAGS([libass],[-DHAVE_FONTCONFIG])
3289             VLC_ADD_LIBS([libass],[${FONTCONFIG_LIBS}])
3290         fi
3291       ],[
3292         AC_MSG_WARN([${LIBASS_PKG_ERRORS}.])
3293       ])
3294   ])
3297 dnl SAPI (text to Speech renderer for Windows)
3299 AC_LANG_PUSH([C++])
3300 AC_CHECK_TYPES([ISpObjectToken],[
3301               have_sapi="yes"
3302             ],[AC_MSG_WARN([sapi.h not found. Text to Speech renderer for Windows disabled])],
3303               [#include <windows.h>
3304                #include <sapi.h>
3305                #include <sphelper.h>])
3306 AM_CONDITIONAL([HAVE_SAPI], [test "${have_sapi}" = "yes"])
3307 AC_LANG_POP([C++])
3310 dnl  SVG module (text rendering and image decoding)
3312 PKG_ENABLE_MODULES_VLC([SVG], [], [librsvg-2.0 >= 2.9.0], [SVG rendering library],[auto])
3313 PKG_ENABLE_MODULES_VLC([SVGDEC], [], [librsvg-2.0 >= 2.9.0 cairo >= 1.13.1], [SVG image decoder library],[auto])
3316 dnl  Windows DirectX module
3319 AC_ARG_ENABLE(directx,
3320   [AS_HELP_STRING([--enable-directx],
3321     [Microsoft DirectX support (default enabled on Windows)])],, [
3322   AS_IF([test "${SYS}" = "mingw32"], [
3323     enable_directx="yes"
3324   ], [
3325     enable_directx="no"
3326   ])
3328 AS_IF([test "${enable_directx}" != "no"], [
3329   dnl DirectDraw
3330   AC_CHECK_HEADERS(ddraw.h, [
3331     VLC_ADD_PLUGIN([directdraw])
3332   ])
3334   dnl OpenGL
3335   AC_CHECK_HEADERS(GL/wglew.h, [
3336     VLC_ADD_PLUGIN([glwin32 wgl])
3337   ],, [
3338     #include <windows.h>
3339     #include <GL/gl.h>
3340   ])
3342   dnl Direct3D11
3343   AC_CHECK_HEADERS(d3d11.h, [
3344     VLC_ADD_PLUGIN([direct3d11 direct3d11_filters])
3345   ])
3347   dnl Direct3D9
3348   AC_CHECK_HEADERS(d3d9.h, [
3349     VLC_ADD_PLUGIN([direct3d9])
3350     AC_CHECK_HEADERS(d3dx9effect.h)
3352     AC_PREPROC_IFELSE([AC_LANG_PROGRAM(
3353         [[#define COBJMACROS
3354           #include <d3d9.h>
3355           #include <dxva2api.h>
3356           #ifndef IDirectXVideoProcessorService_GetVideoProcessorDeviceGuids
3357           # error dxva2 too old
3358           #endif
3359         ]],[[;]])
3360       ],[
3361         VLC_ADD_PLUGIN([direct3d9_filters])
3362       ],
3363       [AC_MSG_WARN([Could not find required IDirectXVideoDecoder in dxva2api.h])])
3365   ])
3369 dnl  Linux framebuffer module
3371 AC_CHECK_HEADER([linux/fb.h], [
3372   VLC_ADD_PLUGIN([fb])
3376 dnl  Linux kernel mode setting module
3378 PKG_ENABLE_MODULES_VLC([KMS], [], [libdrm >= 2.4.83], [Linux kernel mode setting output], [auto])
3381 dnl  libcaca plugin
3383 PKG_ENABLE_MODULES_VLC([CACA], [], [caca >= 0.99.beta14], [libcaca output],[auto])
3386 dnl  OS/2 KVA plugin
3388 AC_ARG_ENABLE(kva,
3389   [AS_HELP_STRING([--enable-kva],
3390     [support the K Video Accelerator KVA (default enabled on OS/2)])],, [
3391   AS_IF([test "$SYS" = "os2"], [
3392     enable_kva="yes"
3393   ])
3395 have_kva="no"
3396 KVA_LIBS=""
3397 AS_IF([test "$enable_kva" != "no"], [
3398   AC_CHECK_HEADERS([kva.h], [
3399     have_kva="yes"
3400     AC_CHECK_LIB(kva, main, [
3401       KVA_LIBS="-lkva"
3402     ])
3403   ])
3405 AC_SUBST(KVA_LIBS)
3406 AM_CONDITIONAL([HAVE_KVA], [test "${have_kva}" = "yes"])
3409 dnl MMAL plugin
3411 AC_ARG_ENABLE(mmal,
3412   AS_HELP_STRING([--enable-mmal],
3413     [Multi-Media Abstraction Layer (MMAL) hardware plugin (default enable)]))
3414 if test "${enable_mmal}" != "no"; then
3415   VLC_SAVE_FLAGS
3416   LDFLAGS="${LDFLAGS} -L/opt/vc/lib -lvchostif"
3417   CPPFLAGS="${CPPFLAGS} -isystem /opt/vc/include -isystem /opt/vc/include/interface/vcos/pthreads -isystem /opt/vc/include/interface/vmcs_host/linux"
3418   AC_CHECK_HEADERS(interface/mmal/mmal.h,
3419     [ AC_CHECK_LIB(bcm_host, vc_tv_unregister_callback_full, [
3420         have_mmal="yes"
3421         VLC_ADD_PLUGIN([mmal])
3422         VLC_ADD_LDFLAGS([mmal],[ -L/opt/vc/lib ])
3423         VLC_ADD_CFLAGS([mmal],[ -isystem /opt/vc/include -isystem /opt/vc/include/interface/vcos/pthreads -isystem /opt/vc/include/interface/vmcs_host/linux ])
3424         VLC_ADD_LIBS([mmal],[ -lbcm_host -lmmal -lmmal_core -lmmal_components -lmmal_util -lvchostif ]) ], [
3425           AS_IF([test "${enable_mmal}" = "yes"],
3426             [ AC_MSG_ERROR([Cannot find bcm library...]) ],
3427             [ AC_MSG_WARN([Cannot find bcm library...]) ])
3428           ],
3429         [])
3430     ] , [ AS_IF([test "${enable_mmal}" = "yes"],
3431       [ AC_MSG_ERROR([Cannot find development headers for mmal...]) ],
3432       [ AC_MSG_WARN([Cannot find development headers for mmal...]) ]) ])
3433   VLC_RESTORE_FLAGS
3435 AM_CONDITIONAL([HAVE_MMAL], [test "${have_mmal}" = "yes"])
3438 dnl  Audio plugins
3441 EXTEND_HELP_STRING([Audio plugins:])
3444 dnl  Pulseaudio module
3446 AC_ARG_ENABLE(pulse,
3447   [AS_HELP_STRING([--enable-pulse],
3448     [use the PulseAudio client library (default auto)])])
3449 have_pulse="no"
3450 AS_IF([test "${enable_pulse}" != "no"], [
3451   PKG_CHECK_MODULES([PULSE], [libpulse >= 1.0], [
3452     have_pulse="yes"
3453   ], [
3454     AS_IF([test "x${enable_pulse}" != "x"], [
3455       AC_MSG_ERROR([$PULSE_PKG_ERRORS. PulseAudio 1.0 or later required.])
3456     ])
3457   ])
3459 AM_CONDITIONAL([HAVE_PULSE], [test "${have_pulse}" = "yes"])
3462 dnl  ALSA module
3464 AC_ARG_ENABLE(alsa,
3465   [AS_HELP_STRING([--enable-alsa],
3466     [support the Advanced Linux Sound Architecture (default auto)])],, [
3467   AS_IF([test "$SYS" = "linux" -a "${have_pulse}" = "no"], [
3468     enable_alsa="yes"
3469   ])
3471 have_alsa="no"
3472 AS_IF([test "${enable_alsa}" != "no"], [
3473   PKG_CHECK_MODULES([ALSA], [alsa >= 1.0.24], [
3474     have_alsa="yes"
3475   ], [
3476     AS_IF([test "x${enable_alsa}" != "x"], [
3477       AC_MSG_ERROR([$ALSA_PKG_ERRORS. alsa-lib 1.0.24 or later required. Pass --disable-alsa to ignore this error.])
3478     ])
3479   ])
3481 AM_CONDITIONAL([HAVE_ALSA], [test "${have_alsa}" = "yes"])
3484 dnl  Open Sound System module
3486 AC_ARG_ENABLE(oss,
3487   [AS_HELP_STRING([--enable-oss],
3488     [support the Open Sound System OSS (default enabled on FreeBSD/NetBSD/DragonFlyBSD)])],, [
3489   AS_IF([test "$SYS" = "mingw32" -o "$SYS" = "linux" -o "$SYS" = "openbsd"], [
3490     enable_oss="no"
3491   ])
3493 have_oss="no"
3494 OSS_LIBS=""
3495 AS_IF([test "$enable_oss" != "no"], [
3496   AC_CHECK_HEADERS([soundcard.h sys/soundcard.h], [
3497     have_oss="yes"
3498     AC_CHECK_LIB(ossaudio, main, [
3499       OSS_LIBS="-lossaudio"
3500     ])
3501   ])
3503 AC_SUBST(OSS_LIBS)
3504 AM_CONDITIONAL([HAVE_OSS], [test "${have_oss}" = "yes"])
3507 dnl  OpenBSD sndio module
3509 AC_ARG_ENABLE([sndio],
3510   [AS_HELP_STRING([--disable-sndio],
3511     [support the OpenBSD sndio (default auto)])],, [
3512   AS_IF([test "$SYS" = "openbsd"], [
3513     enable_sndio="yes"
3514   ])
3516 have_sndio="no"
3517 AS_IF([test "$enable_sndio" != "no"], [
3518   AC_CHECK_HEADER([sndio.h], [
3519     have_sndio="yes"
3520   ])
3522 AM_CONDITIONAL([HAVE_SNDIO], [test "${have_sndio}" = "yes"])
3525 dnl  Windows Audio Session plugin
3527 AC_ARG_ENABLE([wasapi],
3528   [AS_HELP_STRING([--enable-wasapi],
3529     [use the Windows Audio Session API (default auto)])
3531 have_wasapi="no"
3532 AS_IF([test "$enable_wasapi" != "no"], [
3533   AC_CHECK_HEADER([audioclient.h], [
3534     have_wasapi="yes"
3535   ], [
3536     AS_IF([test "x${enable_wasapi}" != "x"], [
3537       AC_MSG_ERROR([Windows Audio Session API not found.])
3538     ])
3539   ])
3541 AM_CONDITIONAL([HAVE_WASAPI], [test "${have_wasapi}" = "yes"])
3544 dnl  JACK modules
3546 AC_ARG_ENABLE(jack,
3547   [AS_HELP_STRING([--disable-jack],
3548     [do not use jack (default auto)])])
3549 have_jack="no"
3550 AS_IF([test "${enable_jack}" != "no"], [
3551     PKG_CHECK_MODULES(JACK, jack >= 1.9.7,
3552       [ have_jack=yes ],
3553       [
3554       AC_MSG_WARN([${JACK_PKG_ERRORS}, trying jack1 instead])
3556       PKG_CHECK_MODULES(JACK, jack >= 0.120.1 jack < 1.0,
3557       [ have_jack=yes ],
3558       [
3559       AS_IF([test -n "${enable_jack}"],
3560          [AC_MSG_ERROR([${JACK_PKG_ERRORS}.])],
3561          [AC_MSG_WARN([${JACK_PKG_ERRORS}.])])
3562       ])
3563     ])
3565 AM_CONDITIONAL([HAVE_JACK], [test "${have_jack}" != "no"])
3568 dnl  OpenSLES Android
3570 AC_ARG_ENABLE(opensles,
3571   [  --enable-opensles       Android OpenSL ES audio module (default disabled)])
3572 if test "${HAVE_ANDROID}" = "1"; then
3573   if test "${enable_opensles}" = "yes"; then
3574       AC_CHECK_HEADERS(SLES/OpenSLES.h,
3575         [ VLC_ADD_PLUGIN([opensles_android]) ],
3576         [ AC_MSG_ERROR([cannot find OpenSLES headers])] )
3577   fi
3581 dnl  Tizen audio
3583 AC_ARG_ENABLE(tizen_audio,
3584   [AS_HELP_STRING([--enable-tizen-audio],
3585     [Tizen audio module (default enabled on Tizen)])],, [
3586   AS_IF([test "$HAVE_TIZEN" = "1"], [
3587     enable_tizen_audio="yes"
3588   ])
3590 if test "${enable_tizen_audio}" = "yes"; then
3591   AC_CHECK_HEADERS(audio_io.h,
3592     [ VLC_ADD_PLUGIN([tizen_audio]) ],
3593     [ AC_MSG_ERROR([cannot find Tizen audio_io headers])] )
3597 dnl libsamplerate plugin
3599 PKG_ENABLE_MODULES_VLC([SAMPLERATE], [], [samplerate], [Resampler with libsamplerate], [auto])
3602 dnl  soxr module
3604 PKG_ENABLE_MODULES_VLC([SOXR], [], [soxr >= 0.1.2], [SoX Resampler library], [auto])
3607 dnl  OS/2 KAI plugin
3609 AC_ARG_ENABLE(kai,
3610   [AS_HELP_STRING([--enable-kai],
3611     [support the K Audio Interface KAI (default enabled on OS/2)])],, [
3612   AS_IF([test "$SYS" = "os2"], [
3613     enable_kai="yes"
3614   ])
3616 have_kai="no"
3617 KAI_LIBS=""
3618 AS_IF([test "$enable_kai" != "no"], [
3619   AC_CHECK_HEADERS([kai.h], [
3620     have_kai="yes"
3621     AC_CHECK_LIB(kai, main, [
3622       KAI_LIBS="-lkai"
3623     ])
3624   ])
3626 AC_SUBST(KAI_LIBS)
3627 AM_CONDITIONAL([HAVE_KAI], [test "${have_kai}" = "yes"])
3630 dnl  chromaprint audio track fingerprinter
3632 m4_pushdef([libchromaprint_version], 0.6.0)
3633 PKG_WITH_MODULES([CHROMAPRINT],[libchromaprint >= libchromaprint_version],
3634     VLC_ADD_PLUGIN([stream_out_chromaprint]),
3635     AS_IF([test "${enable_chromaprint}" = "yes"],
3636         [AC_MSG_ERROR(Library [libchromaprint >= libchromaprint_version] needed for [chromaprint] was not found)],
3637         [AC_MSG_WARN(Library [libchromaprint >= libchromaprint_version] needed for [chromaprint] was not found)]
3638          ),
3639     [(Chromaprint based audio fingerprinter)],[auto])
3640 m4_popdef([libchromaprint_version])
3643 dnl  Chromecast streaming support
3645 m4_pushdef([protobuf_lite_version], 2.5.0)
3646 AC_ARG_VAR(PROTOC, [protobuf compiler])
3647 AC_CHECK_PROGS(PROTOC, protoc, no)
3648 PKG_WITH_MODULES([CHROMECAST],[protobuf-lite >= protobuf_lite_version], [
3649     AS_IF([test "x${PROTOC}" != "xno"], [
3650         build_chromecast="yes"
3651     ], [
3652     AC_MSG_ERROR(protoc compiler needed for [chromecast] was not found)
3653     ])
3654 ], [
3655     AS_IF([test "${enable_chromecast}" = "yes"],
3656         AC_MSG_ERROR(Library [protobuf-lite >= protobuf_lite_version] needed for [chromecast] was not found),
3657         AC_MSG_WARN(Library [protobuf-lite >= protobuf_lite_version] needed for [chromecast] was not found)
3658     )
3659     enable_chromecast="no"
3660 ], [(Chromecast streaming support)], [auto])
3661 AM_CONDITIONAL([BUILD_CHROMECAST], [test "${build_chromecast}" = "yes"])
3662 m4_popdef([protobuf_lite_version])
3665 dnl  Interface plugins
3668 EXTEND_HELP_STRING([Interface plugins:])
3671 dnl QT
3673 AC_ARG_ENABLE(qt, [
3674   AS_HELP_STRING([--disable-qt], [Qt UI support (default enabled)])],, [
3675   AS_IF([test "${SYS}" = "darwin"], [
3676     enable_qt="no"
3677   ])
3679 have_qt5_x11="no"
3680 AS_IF([test "${enable_qt}" != "no"], [
3681   PKG_CHECK_MODULES([QT], [Qt5Core >= 5.9.0 Qt5Widgets Qt5Gui Qt5Svg], [
3682       PKG_CHECK_MODULES([QT5_X11], [Qt5X11Extras], [
3683           have_qt5_x11="yes"
3684       ],[
3685           AC_MSG_WARN([Not building Qt Interface with X11 helpers.])
3686       ])
3687       QT_PATH="$(eval $PKG_CONFIG --variable=exec_prefix Qt5Core)"
3688       QT_HOST_PATH="$(eval $PKG_CONFIG --variable=host_bins Qt5Core)"
3689       QT_VERSION="$(eval $PKG_CONFIG --modversion Qt5Gui)"
3690       AC_PATH_PROGS(MOC, [moc-qt5 moc], moc, ["${QT_HOST_PATH}" "${QT_PATH}/bin"])
3691       AC_PATH_PROGS(RCC, [rcc-qt5 rcc], rcc, ["${QT_HOST_PATH}" "${QT_PATH}/bin"])
3692       AC_PATH_PROGS(UIC, [uic-qt5 uic], uic, ["${QT_HOST_PATH}" "${QT_PATH}/bin"])
3693     ], [
3694       AS_IF([test -n "${enable_qt}"],[
3695         AC_MSG_ERROR([${QT_PKG_ERRORS}.])
3696       ],[
3697         AC_MSG_WARN([${QT_PKG_ERRORS}.])
3698       ])
3699       enable_qt="no"
3700     ])
3703 AS_IF([test "${enable_qt}" != "no"], [
3704   ALIASES="${ALIASES} qvlc"
3706 AC_SUBST(QT_VERSION)
3707 AM_CONDITIONAL(ENABLE_QT, [test "$enable_qt" != "no"])
3708 AM_CONDITIONAL([HAVE_QT5_X11], [test "${have_qt5_x11}" = "yes"])
3711 dnl detect kde4-config patch (used for kde solids).
3713 AC_ARG_VAR([KDE4_CONFIG], [kde4-config utility])
3714 AS_IF([test "x$KDE4_CONFIG" = "x"], [
3715   KDE4_CONFIG="kde4-config"
3719 dnl Simple test for skins2 dependency
3721 AS_IF([test "$enable_qt" = "no"], [
3722   AS_IF([test "${enable_skins2}" = "yes"], [
3723     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.])
3724   ], [
3725     enable_skins2="no"
3726     AC_MSG_WARN([The skins2 module depends on the Qt interface, Qt is not built so skins2 is disabled.])
3727   ])
3731 dnl Skins2 module
3733 AC_ARG_ENABLE(skins2,
3734   [AS_HELP_STRING([--enable-skins2], [skins interface module (default auto)])])
3735 AS_IF([test "${enable_skins2}" != "no"], [
3736   have_skins_deps="yes"
3738   dnl Win32
3739   AS_IF([test "${SYS}" = "mingw32"], [
3740     VLC_ADD_CPPFLAGS([skins2],[-U_OFF_T_ -U_off_t -DWIN32_SKINS])
3741     VLC_ADD_LIBS([skins2],[-lgdi32 -lole32 -luuid -lmsimg32])
3742   dnl OS/2
3743   ], [test "${SYS}" = "os2"], [
3744     VLC_ADD_CPPFLAGS([skins2],[ -DOS2_SKINS])
3745   dnl Linux/Unix
3746   ], [
3747     PKG_CHECK_MODULES([XPM], [xpm],, [have_skins_deps="no"])
3748     PKG_CHECK_MODULES([XINERAMA], [xinerama],, [have_skins_deps="no"])
3749     PKG_CHECK_MODULES([XCURSOR], [xcursor],, [have_skins_deps="no"])
3750     PKG_CHECK_MODULES([XEXT], [xext],, [have_skins_deps="no"])
3751     VLC_ADD_CPPFLAGS([skins2],[${X_CFLAGS} ${XEXT_CFLAGS} ${XPM_CFLAGS} -DX11_SKINS])
3752     VLC_ADD_LIBS([skins2],[${X_LIBS} ${X_PRE_LIBS} ${XEXT_LIBS} ${XPM_LIBS} ${XINERAMA_LIBS} ${XCURSOR_LIBS} -lX11])
3753   ])
3755   dnl we need freetype
3756   AS_IF([test "${have_freetype}" != "yes"], [
3757     have_skins_deps="no"
3758   ])
3760   AS_IF([test "${have_skins_deps}" = "no"], [
3761     AS_IF([test "x${enable_skins2}" = "x"], [
3762       AC_MSG_WARN([Skins2 interface disabled due to missing dependencies.])
3763     ], [
3764       AC_MSG_ERROR([Skins2 interface requires FreeType, libxcursor, libxpm, libxext and libxinerama])
3765     ])
3766     enable_skins2="no"
3767   ], [
3768     ALIASES="${ALIASES} svlc"
3769     enable_skins2="yes"
3770   ])
3772 AM_CONDITIONAL(BUILD_SKINS, [test "${enable_skins2}" = "yes"])
3774 AC_ARG_ENABLE(libtar,
3775   [  --enable-libtar         libtar support for skins2 (default auto)])
3776 AS_IF([test "${enable_skins2}" = "yes" && test "${enable_libtar}" != "no"], [
3777   AC_CHECK_HEADERS(libtar.h, [
3778     VLC_ADD_LIBS([skins2],[-ltar])
3779   ])
3783 dnl  MacOS X gui module
3785 AC_ARG_ENABLE(macosx,
3786   [  --enable-macosx         Mac OS X gui support (default enabled on Mac OS X)])
3787 if test "x${enable_macosx}" != "xno" -a "${SYS}" = "darwin"
3788 then
3790   dnl
3791   dnl If possible, use xcrun to find the right ibtool
3792   dnl
3794   AC_PATH_PROG([XCRUN], [xcrun], [no])
3795   AS_IF([test ! "x${XCRUN}" = "xno"], [
3796     AC_MSG_CHECKING([for ibtool (using xcrun)])
3797     XIB="$(eval $XCRUN -f ibtool 2>/dev/null || echo no)"
3798     AC_MSG_RESULT([${XIB}])
3799   ], [
3800     AC_MSG_WARN([Looking for tools without using xcrun])
3801   ])
3803   AS_IF([test "x${XIB}" = "xno"], [
3804     AC_PATH_PROG(XIB, [ibtool], [no])
3805     AS_IF([test "x${XIB}" = "xno"], [
3806       AC_MSG_ERROR([ibtool was not found, but is required for --enable-macosx])
3807     ])
3808   ])
3810 AM_CONDITIONAL(ENABLE_MACOSX_UI, [test "$enable_macosx" != "no" -a "${SYS}" = "darwin"])
3813 dnl  MacOS X sparkle update support
3815 AC_ARG_ENABLE(sparkle,
3816   [  --enable-sparkle        Sparkle update support for OS X (default enabled on Mac OS X)])
3817 if test "x${enable_sparkle}" != "xno" -a "${HAVE_OSX}" = "1"
3818 then
3819   if test ! -d ${CONTRIB_DIR}/Sparkle.framework -a ! -d ${CONTRIB_DIR}/Frameworks/Sparkle.framework
3820   then
3821     AC_MSG_ERROR([Sparkle framework is required and was not found in ${CONTRIB_DIR}])
3822   fi
3824   AC_DEFINE([HAVE_SPARKLE], [1], [Define to 1 if sparkle is enabled.])
3826 AM_CONDITIONAL(HAVE_SPARKLE, [test "$enable_sparkle" != "no"])
3829 dnl  MacOS X breakpad creash reporter support
3831 AC_ARG_WITH([breakpad],
3832   AS_HELP_STRING([--with-breakpad=URL], [Enable Breakpad reporter using given URL]), [], [with_breakpad=no])
3834 AS_IF([test "$with_breakpad" != "no"], [
3836   AS_IF([test "$with_breakpad" = "yes"], [
3837     AC_MSG_ERROR([You need to supply the CrashDragon Server URL as value for --with-breakpad])
3838   ])
3840   AS_IF([test "$HAVE_OSX" = "1"], [
3841     AC_MSG_CHECKING([for Breakpad framework])
3842     AS_IF([test ! -d ${CONTRIB_DIR}/Breakpad.framework -a \
3843                 ! -d ${CONTRIB_DIR}/Frameworks/Breakpad.framework], [
3844       AC_MSG_RESULT([no])
3845       with_breakpad="no"
3846       AC_MSG_ERROR([Breakpad framework is required and was not found in ${CONTRIB_DIR}])
3847     ], [
3848       AC_MSG_RESULT([yes])
3849     ])
3850   ],[
3851     PKG_CHECK_MODULES([BREAKPAD], [breakpad-client], [
3852       LDFLAGS="${LDFLAGS} -Wl,--build-id"
3853     ], [
3854       AC_MSG_ERROR(["breakpad not found"])
3855     ])
3856   ])
3859 AM_CONDITIONAL(HAVE_BREAKPAD, [test "$with_breakpad" != "no"])
3860 AS_IF([test "$with_breakpad" != "no"], [
3861   AC_SUBST(BREAKPAD_URL, ["${with_breakpad}"])
3865 dnl  Minimal Mac OS X module
3867 AC_ARG_ENABLE(minimal-macosx,
3868   [  --enable-minimal-macosx Minimal Mac OS X support (default disabled)])
3869 if test "${enable_minimal_macosx}" = "yes" -a "${SYS}" = "darwin"
3870 then
3871   VLC_ADD_PLUGIN([minimal_macosx])
3875 dnl Mac OS X fancy dmg build tool
3877 if test "${HAVE_OSX}" = "1"
3878 then
3879   AC_PATH_PROG(DMGBUILD, dmgbuild, no)
3880   AS_IF([test "x${DMGBUILD}" = "xno"], [
3881     AC_MSG_WARN([dmgbuild not found -- unable to build fancy DMGs])
3882   ])
3884 AM_CONDITIONAL(HAVE_DMGBUILD, [test "x$DMGBUILD" != "xno" -a "${HAVE_OSX}" = "1"])
3887 dnl  VideoToolbox plugins
3888 AC_CHECK_HEADERS(VideoToolbox/VideoToolbox.h, [
3889     VLC_ADD_PLUGIN([videotoolbox])
3890     VLC_ADD_PLUGIN([cvpx])
3891   ])
3894 dnl  AudioToolbox MIDI plugin
3895 AC_CHECK_HEADERS([AudioToolbox/AudioToolbox.h], [
3896   VLC_ADD_PLUGIN([audiotoolboxmidi])
3900 dnl  ncurses module
3902 AC_ARG_ENABLE(ncurses,
3903 [AS_HELP_STRING([--disable-ncurses],[ncurses text-based interface (default auto)])])
3904 have_ncurses="no"
3905 AS_IF([test "${enable_ncurses}" != "no"] ,[
3906   PKG_CHECK_MODULES([NCURSES], [ncursesw], [
3907     have_ncurses="yes"
3908     ALIASES="${ALIASES} nvlc"
3909   ], [
3910     AS_IF([test -n "${enable_ncurses}"], [
3911       AC_MSG_ERROR([${NCURSES_PKG_ERRORS}.])
3912     ])
3913   ])
3915 AM_CONDITIONAL([HAVE_NCURSES], [test "${have_ncurses}" = "yes"])
3918 dnl  Lirc plugin
3920 AC_ARG_ENABLE(lirc,
3921   [  --enable-lirc           lirc support (default disabled)])
3922 have_lirc="no"
3923 AS_IF([test "${enable_lirc}" = "yes"], [
3924   AC_CHECK_HEADER(lirc/lirc_client.h, [
3925     AC_CHECK_LIB(lirc_client, lirc_init, [
3926       have_lirc="yes"
3927     ])
3928   ])
3930 AM_CONDITIONAL([HAVE_LIRC], [test "${have_lirc}" = "yes"])
3933 dnl  SRT plugin
3935 PKG_ENABLE_MODULES_VLC([SRT], [access_srt access_output_srt], [srt >= 1.2.2], [SRT input/output plugin], [auto], [], [], [-DENABLE_SRT])
3937 EXTEND_HELP_STRING([Visualisations and Video filter plugins:])
3939 dnl  goom visualization plugin
3941 PKG_ENABLE_MODULES_VLC([GOOM], [], [libgoom2], [goom visualization plugin], [auto])
3944 dnl libprojectM visualization plugin
3946 AC_ARG_ENABLE(projectm,
3947   [  --enable-projectm       projectM visualization plugin (default enabled)])
3948 AS_IF([test "${enable_projectm}" != "no"],
3949   [
3950     PKG_CHECK_MODULES(PROJECTM, libprojectM,
3951     [
3952       VLC_ADD_PLUGIN([projectm])
3953       PKG_CHECK_EXISTS([libprojectM >= 2.0.0],
3954         [ AC_DEFINE([HAVE_PROJECTM2], 1, [Define to 1 if using libprojectM 2.x]) ],
3955         [ AC_MSG_WARN( [Using libprojectM version 1] )
3956       ])
3957     ],[
3958       AC_MSG_WARN([${PROJECTM_PKG_ERRORS}.])
3959     ])
3960   ])
3963 dnl Vovoid VSXu visualization plugin
3965 AC_ARG_ENABLE(vsxu,
3966   [  --enable-vsxu           Vovoid VSXu visualization plugin (default auto)])
3967 AS_IF([test "${enable_vsxu}" != "no"],
3968   [
3969     PKG_CHECK_MODULES(VSXU, libvsxu,
3970     [
3971       VLC_ADD_PLUGIN([vsxu])
3972     ],[
3973       AC_MSG_WARN([${VSXU_PKG_ERRORS}.])
3974     ])
3975   ])
3977 EXTEND_HELP_STRING([Service Discovery plugins:])
3979 dnl  Avahi-Zeroconf services discovery
3980 PKG_ENABLE_MODULES_VLC([AVAHI], [], [avahi-client >= 0.6], [Zeroconf services discovery], [auto])
3983 dnl  libudev services discovery
3984 PKG_ENABLE_MODULES_VLC([UDEV], [], [libudev >= 142], [Linux udev services discovery], [auto])
3987 dnl MTP devices services discovery
3988 PKG_ENABLE_MODULES_VLC([MTP], [mtp access_mtp], [libmtp >= 1.0.0], [MTP devices support], [auto])
3991 dnl UPnP Plugin (Intel SDK)
3993 PKG_ENABLE_MODULES_VLC([UPNP], [upnp], [libupnp], [Intel UPNP SDK],[auto])
3996 dnl mDNS using libmicrodns
3998 PKG_ENABLE_MODULES_VLC([MICRODNS], [], [microdns], [mDNS services discovery], [auto])
4001 EXTEND_HELP_STRING([Misc options:])
4004 dnl  libxml2 module
4006 PKG_ENABLE_MODULES_VLC([LIBXML2], [xml], [libxml-2.0 >= 2.5], [libxml2 support],[auto])
4010 dnl libgcrypt
4012 AC_ARG_ENABLE(libgcrypt,
4013   [  --disable-libgcrypt     gcrypt support (default enabled)])
4014 AC_ARG_VAR([GCRYPT_CFLAGS], [C compiler flags for gcrypt])
4015 AC_ARG_VAR([GCRYPT_LIBS], [linker flags flags for gcrypt])
4017 # require libgcrypt >= 1.6.0
4018 AS_IF([test "${enable_libgcrypt}" != "no"], [
4019   AC_CACHE_CHECK([for gcrypt 1.6.0 or later], [ac_cv_lib_gcrypt], [
4020     VLC_SAVE_FLAGS
4021     CFLAGS="${CFLAGS} ${GCRYPT_CFLAGS}"
4022     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([
4023 [#include <gcrypt.h>
4024 #if GCRYPT_VERSION_NUMBER < 0x010600
4025 #error
4026 #endif]])], [
4027       ac_cv_lib_gcrypt=yes
4028     ], [
4029       ac_cv_lib_gcrypt=no
4030     ])
4031     VLC_RESTORE_FLAGS
4032   ])
4034   AS_IF([test "${ac_cv_lib_gcrypt}" = "yes"], [
4035     AC_DEFINE([HAVE_GCRYPT], 1, [Defined if having gcrypt])
4036   ], [
4037     AS_IF([test "${enable_libgcrypt}" = "yes"], [
4038       AC_MSG_ERROR([libgcrypt version 1.6.0 or higher not found. Install libgcrypt or pass --disable-libgcrypt.])
4039     ])
4040   ])
4043 AS_IF([test -z "$GCRYPT_LIBS"], [
4044   GCRYPT_LIBS="-lgcrypt -lgpg-error"
4047 AC_SUBST(GCRYPT_CFLAGS)
4048 AC_SUBST(GCRYPT_LIBS)
4049 AM_CONDITIONAL([HAVE_GCRYPT], [test "${ac_cv_lib_gcrypt}" = "yes"])
4052 dnl TLS/SSL
4054 AC_ARG_ENABLE(gnutls,
4055   [  --enable-gnutls         GNU TLS TLS/SSL support (default enabled)])
4056 AS_IF([test "${enable_gnutls}" != "no"], [
4057   PKG_CHECK_MODULES(GNUTLS, [gnutls >= 3.3.6], [
4058     VLC_ADD_PLUGIN([gnutls])
4059   ], [
4060     AS_IF([test -n "${enable_gnutls}"], [
4061       AC_MSG_ERROR([${GNUTLS_PKG_ERRORS}.)])
4062     ])
4063   ])
4068 dnl Taglib plugin
4070 AC_ARG_ENABLE(taglib,
4071   [AS_HELP_STRING([--disable-taglib],
4072     [do not use TagLib (default enabled)])])
4073 AS_IF([test "${enable_taglib}" != "no"], [
4074   PKG_CHECK_MODULES(TAGLIB, taglib >= 1.9, [
4075     VLC_ADD_PLUGIN([taglib])
4076   ], [
4077     AC_MSG_WARN([${TAGLIB_PKG_ERRORS}.])])
4081 dnl  libsecret
4083 PKG_ENABLE_MODULES_VLC([SECRET], [], [libsecret-1 >= 0.18], [use libsecret for keystore], [auto])
4086 dnl  kwallet
4088 AC_ARG_ENABLE(kwallet,
4089   [AS_HELP_STRING([--enable-kwallet],
4090     [use kwallet (via D-Bus) for keystore (default enabled)])])
4091 AS_IF([test "${enable_kwallet}" != "no" -a "${have_dbus}" = "yes"], [
4092   VLC_ADD_PLUGIN([kwallet])
4096 dnl update checking system
4098 AC_ARG_ENABLE(update-check,
4099   [  --enable-update-check   update checking system (default disabled)])
4100 if test "${enable_update_check}" = "yes"
4101 then
4102  AS_IF([test "${ac_cv_lib_gcrypt}" != "yes"],[
4103     AC_MSG_ERROR([libgcrypt is required for update checking system]) ])
4105 AM_CONDITIONAL(UPDATE_CHECK, [test "${enable_update_check}" = "yes"])
4108 dnl OS X notification plugin
4110 AC_ARG_ENABLE(osx_notifications,
4111   [AS_HELP_STRING([--enable-osx-notifications],
4112     [macOS notification plugin (default disabled)])],,
4113   [enable_osx_notifications=no])
4114 AS_IF([test "${enable_osx_notifications}" != "no"], [
4115   VLC_ADD_PLUGIN([osx_notifications])
4119 dnl Libnotify notification plugin
4121 PKG_ENABLE_MODULES_VLC([NOTIFY], [], [libnotify gtk+-3.0], [libnotify notification], [auto])
4124 dnl  libplacebo support
4126 AC_ARG_ENABLE(libplacebo,
4127   [AS_HELP_STRING([--disable-libplacebo],
4128       [disable libplacebo support (default auto)])])
4130 AS_IF([test "$enable_libplacebo" != "no"], [
4131   PKG_CHECK_MODULES([LIBPLACEBO], [libplacebo >= 0.2.1], [
4132     AC_DEFINE([HAVE_LIBPLACEBO], [1], [Define to 1 if libplacebo is enabled.])
4133   ], [
4134     AS_IF([test -n "${enable_libplacebo}"], [
4135       AC_MSG_ERROR([${LIBPLACEBO_PKG_ERRORS}.])
4136     ])
4137     enable_libplacebo="no"
4138   ])
4140 AM_CONDITIONAL(HAVE_LIBPLACEBO, [test "$enable_libplacebo" != "no"])
4144 dnl  Endianness check
4146 AC_C_BIGENDIAN
4147 AS_IF([test "${ac_cv_c_bigendian}" = "yes"], [
4148   DEFS_BIGENDIAN="-DWORDS_BIGENDIAN=1"
4149 ], [
4150   DEFS_BIGENDIAN=""
4152 AC_SUBST(DEFS_BIGENDIAN)
4155 dnl Where to install KDE solid .desktop
4157 AC_ARG_WITH(kde-solid,
4158   AS_HELP_STRING([--with-kde-solid=PATH],
4159                  [KDE Solid actions directory (auto)]),, [
4161 if test "${SYS}" != "mingw32" -a "${SYS}" != "darwin" ; then
4162   with_kde_solid="yes"
4165 soliddatadir=""
4166 AS_IF([test "${with_kde_solid}" != "no"], [
4167   AS_IF([test "${with_kde_solid}" = "yes"], [
4168     kde4datadir="`${KDE4_CONFIG} --install data`"
4169     AS_IF([test "x$kde4datadir" = "x"], [kde4datadir='${datadir}/kde4/apps'])
4170     soliddatadir="${kde4datadir}/solid/actions"
4171   ], [
4172     soliddatadir="${with_kde_solid}"
4173   ])
4175 AC_SUBST(soliddatadir)
4176 AM_CONDITIONAL(KDE_SOLID, [test "x${soliddatadir}" != "x"])
4179 dnl  Find tools for win32 packaging
4181 AS_IF([test "${SYS}" = "mingw32"], [
4182     dnl
4183     dnl Find makensis required to build the NSIS installer
4184     dnl
4185     nsis_major_required="3"
4186     nsis_version_ok="no"
4187     AC_PATH_PROG([MAKENSIS], [makensis], [no])
4188     AS_IF([test "$MAKENSIS" != "no"], [
4189         # Check version
4190         AC_MSG_CHECKING([makensis version])
4191         nsis_version=$($MAKENSIS -VERSION)
4192         AC_MSG_RESULT([$nsis_version])
4193         nsis_version_major=$(echo "$nsis_version" | awk -F \. '{print $1}' | sed 's/v//')
4194         # Check if major version is a valid number
4195         AS_IF([test -n "$nsis_version_major" && \
4196                test "$nsis_version_major" -eq "$nsis_version_major" 2> /dev/null], [
4197             # Do the version check using major version
4198             AS_IF([test "$nsis_version_major" -lt "$nsis_major_required"], [
4199                 AC_MSG_WARN([makensis too old, (needs ${nsis_major_required}.x, have ${nsis_version_major}.x)])
4200             ], [
4201                 nsis_version_ok="yes"
4202             ])
4203         ], [
4204             AC_MSG_WARN([failed to check the makensis version])
4205         ])
4206     ])
4207     dnl
4208     dnl Find 7zip
4209     dnl
4210     AC_PATH_PROG([SEVENZIP], [7z], [7z])
4212 AM_CONDITIONAL(HAVE_MAKENSIS, [test "x$MAKENSIS" != "xno" && test "$nsis_version_ok" = "yes"])
4215 dnl Check wether we have the PROCESS_MITIGATION_IMAGE_LOAD_POLICY 
4216 dnl It should only be available when building for win10, but some SDKs define it unconditionnaly
4218 if test "${SYS}" = "mingw32"; then
4219     AC_CHECK_TYPES([PROCESS_MITIGATION_IMAGE_LOAD_POLICY],,,[#include <windows.h>])
4222 EXTEND_HELP_STRING([Components:])
4225 dnl  the VLC binary
4227 AC_ARG_ENABLE(vlc,
4228   [  --enable-vlc            build the VLC media player (default enabled)])
4229 AM_CONDITIONAL(BUILD_VLC, [test "${enable_vlc}" != "no"])
4232 dnl Fuzzer (at the end in order to don't mess dependencies FLAGS)
4234 AS_VAR_IF(with_libfuzzer, no, [], [
4235     LIBS="-lstdc++ ${LIBM} -L${with_libfuzzer} -lFuzzer"
4236     AX_CHECK_COMPILE_FLAG(-fsanitize-coverage=trace-pc-guard, [
4237         AX_APPEND_FLAG([-fsanitize-coverage=trace-pc-guard])
4238         AX_APPEND_FLAG([-fsanitize-coverage=trace-pc-guard], [CXXFLAGS])
4239         AX_APPEND_COMPILE_FLAGS([-fsanitize-coverage=trace-cmp])
4240         AX_APPEND_COMPILE_FLAGS([-fsanitize-coverage=trace-cmp], [CXXFLAGS])
4241     ], [
4242         AX_CHECK_COMPILE_FLAG(-fsanitize-coverage=trace-pc, [
4243             AX_APPEND_FLAG([-fsanitize-coverage=trace-pc])
4244             AX_APPEND_FLAG([-fsanitize-coverage=trace-pc], [CXXFLAGS])
4245         ], [
4246             AC_MSG_ERROR([Sanitizer coverage not supported by your compiler])
4247         ])
4248     ])
4252 dnl  Stuff used by the program
4254 VERSION_MESSAGE="${VERSION} ${CODENAME}"
4255 COPYRIGHT_MESSAGE="Copyright © ${COPYRIGHT_YEARS} the VideoLAN team"
4256 AC_DEFINE_UNQUOTED(VERSION_MESSAGE, "${VERSION_MESSAGE}", [Simple version string])
4257 AC_DEFINE_UNQUOTED(COPYRIGHT_MESSAGE, "${COPYRIGHT_MESSAGE}", [Copyright string])
4258 AC_DEFINE_UNQUOTED(COPYRIGHT_YEARS, "${COPYRIGHT_YEARS}", [The copyright years])
4259 AC_DEFINE_UNQUOTED(CONFIGURE_LINE, "${CONFIGURE_LINE}", [The ./configure command line])
4260 AC_DEFINE_UNQUOTED(PACKAGE_VERSION_MAJOR,${VERSION_MAJOR}, [version major number])
4261 AC_DEFINE_UNQUOTED(PACKAGE_VERSION_MINOR,${VERSION_MINOR}, [version minor number])
4262 AC_DEFINE_UNQUOTED(PACKAGE_VERSION_REVISION,${VERSION_REVISION}, [version revision number])
4263 AC_DEFINE_UNQUOTED(PACKAGE_VERSION_EXTRA,${VERSION_EXTRA}, [version extra number])
4264 AC_DEFINE_UNQUOTED(PACKAGE_VERSION_DEV,"${VERSION_DEV}", [version development string])
4265 AC_SUBST(COPYRIGHT_MESSAGE)
4266 AC_SUBST(VERSION_MESSAGE)
4267 AC_SUBST(VERSION_MAJOR)
4268 AC_SUBST(VERSION_MINOR)
4269 AC_SUBST(VERSION_REVISION)
4270 AC_SUBST(VERSION_EXTRA)
4271 AC_SUBST(COPYRIGHT_YEARS)
4272 AC_DEFINE_UNQUOTED(VLC_COMPILE_BY, "`whoami|sed -e 's/\\\/\\\\\\\/g'`", [user who ran configure])
4273 AC_DEFINE_UNQUOTED(VLC_COMPILE_HOST, "`hostname -f 2>/dev/null || hostname`", [host which ran configure])
4274 AC_DEFINE_UNQUOTED(VLC_COMPILER, "`$CC -v 2>&1 | tail -n 1 | sed -e 's/ *$//'`", [compiler])
4276 dnl  Handle substvars that use $(top_srcdir)
4278 CPPFLAGS="-I\$(top_srcdir)/include -I\$(top_builddir)/include ${CPPFLAGS}"
4281 dnl  Configuration is finished
4283 AC_SUBST(SYS)
4284 AC_SUBST(ARCH)
4285 AC_SUBST(ALIASES)
4286 AC_SUBST(ASM)
4287 AC_SUBST(MOC)
4288 AC_SUBST(RCC)
4289 AC_SUBST(UIC)
4290 AC_SUBST(WINDRES)
4291 AC_SUBST(WINE_SDK_PATH)
4292 AC_SUBST(LIBEXT)
4293 AC_SUBST(AM_CPPFLAGS)
4294 AC_SUBST(MACOSX_DEPLOYMENT_TARGET)
4295 AC_SUBST(FILE_LIBVLCCORE_DLL)
4296 AC_SUBST(FILE_LIBVLC_DLL)
4298 AC_CONFIG_FILES([
4299   Makefile
4300   doc/Makefile
4301   modules/Makefile
4302   m4/Makefile
4303   po/Makefile.in
4304   share/Makefile
4305   compat/Makefile
4306   src/Makefile
4307   lib/Makefile
4308   bin/Makefile
4309   test/Makefile
4310   modules/hw/mmal/Makefile
4311   share/vlc.appdata.xml.in
4314 AM_COND_IF([HAVE_WIN32], [
4315   AC_CONFIG_FILES([
4316     extras/package/win32/NSIS/spad.nsi
4317     extras/package/win32/NSIS/vlc.win32.nsi
4318     extras/package/win32/msi/config.wxi
4319   ])
4322 AM_COND_IF([HAVE_DARWIN], [
4323   AC_CONFIG_FILES([
4324     modules/gui/macosx/UI/InfoPlist.strings:modules/gui/macosx/Resources/InfoPlist.strings.in
4325     share/macosx/Info.plist:share/Info.plist.in
4326   ])
4329 dnl Generate makefiles
4330 AC_OUTPUT
4332 dnl Do we have to use make or gmake ?
4333 if make --version 2>&1|grep -q GNU
4334 then
4335     # GNU make, all seems good
4336     MAKE=make
4337 else
4338     # Known GNU make alias (on BSD)
4339     MAKE=gmake
4341 dnl Shortcut to nice compile message
4342 if test -n $SHELL; then
4343   SHELL=${CONFIG_SHELL-/bin/sh}
4345 rm -f compile
4346 compile_top_srcdir=`sed -ne "s/^top_srcdir *= *//p" < Makefile`
4347 echo "#! $SHELL
4348 rm -f .error\$\$
4349 ERROR=0
4350 export PATH=\"$PATH\" LANG=C
4351 ($MAKE V=1 \$@ 2>&1 || touch .error\$\$)| $compile_top_srcdir/extras/buildsystem/make.pl
4352 test -f .error\$\$ && ERROR=1
4353 rm -f .error\$\$
4354 exit \$ERROR" >compile
4355 chmod a+x compile
4357 echo "
4358 libvlc configuration
4359 --------------------
4360 version               : ${VERSION}
4361 system                : ${SYS}
4362 architecture          : ${ARCH}
4363 optimizations         : ${enable_optimizations}"
4364 if test "${enable_vlc}" != "no"; then
4365 echo "vlc aliases           :${ALIASES}"
4366 else
4367 echo "build vlc executable  : no"
4369 echo "
4370 To build vlc and its plugins, type \`$MAKE', or \`./compile' if you like nice colors."