]> git.sesse.net Git - vlc/blob - configure.ac
packetizer: remove Makefile recursion
[vlc] / configure.ac
1 dnl Autoconf settings for vlc
2
3 AC_COPYRIGHT([Copyright 1999-2015 VLC authors and VideoLAN])
4
5 AC_INIT(vlc, 3.0.0-git)
6 VERSION_MAJOR=3
7 VERSION_MINOR=0
8 VERSION_REVISION=0
9 VERSION_EXTRA=0
10 VERSION_DEV=git
11
12 PKGDIR="vlc"
13 AC_SUBST(PKGDIR)
14
15 CONFIGURE_LINE="`echo "$0 $ac_configure_args" | sed -e 's/\\\/\\\\\\\/g'`"
16 CODENAME="Vetinari"
17 COPYRIGHT_YEARS="1996-2015"
18
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
26
27 AM_INIT_AUTOMAKE(tar-ustar color-tests foreign)
28 AC_CONFIG_HEADERS([config.h])
29
30 # Disable with "./configure --disable-silent-rules" or "make V=1"
31 AM_SILENT_RULES([yes])
32
33 dnl Too many people are not aware of maintainer mode:
34 dnl If you want to use it, you definitely know what you are doing, so
35 dnl you can specify "--disable-maintainer-mode". But if you want the default
36 dnl automake behavior, you've likely never heard of maintainer mode, so we
37 dnl can't expect you to enable it manually.
38 AS_IF([test "x${enable_maintainer_mode}" != "xno"],
39     [enable_maintainer_mode="yes"])
40 AM_MAINTAINER_MODE
41
42 dnl
43 dnl Directories
44 dnl
45 dnl vlcincludedir="\${includedir}/\${PKGDIR}"
46 dnl AC_SUBST(vlcincludedir)
47 vlcdatadir="\${datadir}/\${PKGDIR}"
48 AC_SUBST(vlcdatadir)
49 vlclibdir="\${libdir}/\${PKGDIR}"
50 AC_SUBST(vlclibdir)
51
52 dnl
53 dnl Check for tools
54 dnl
55 AC_PROG_CC_C99
56 AC_USE_SYSTEM_EXTENSIONS
57 AC_DEFINE([_FORTIFY_SOURCE], 2, [Define to 2 to get glibc warnings.])
58 AC_DEFINE([_FILE_OFFSET_BITS], 64, [Define to 64 for large files support.])
59 AH_TOP([
60 #ifndef _REENTRANT
61 # define _REENTRANT
62 #endif
63 ])
64 AC_DEFINE([_THREAD_SAFE],, [Same as _REENTANT for some other OSes.])
65 AC_DEFINE([__LIBVLC__],, [Define within the LibVLC source code tree.])
66 AC_DEFINE([WIN32_LEAN_AND_MEAN],, [Define to limit the scope of <windows.h>.])
67
68 AM_PROG_CC_C_O
69 AC_PROG_CXX
70 AC_PROG_CPP
71 AC_PROG_OBJC
72 _AM_DEPENDENCIES([OBJC])
73 AC_PROG_EGREP
74 AC_PROG_MAKE_SET
75 AC_PROG_INSTALL
76 AM_PROG_AS
77
78 AC_ARG_VAR([DESKTOP_FILE_VALIDATE], [Validator for desktop entry files])
79 AC_CHECK_PROGS(DESKTOP_FILE_VALIDATE, [${DESKTOP_FILE_VALIDATE} desktop-file-validate], :)
80 AC_PATH_PROG(YASM, yasm)
81
82 dnl Check for compiler properties
83 AC_C_CONST
84 AC_C_INLINE
85 AC_C_RESTRICT
86
87 dnl Extend the --help string at the current spot.
88 AC_DEFUN([EXTEND_HELP_STRING], [m4_divert_once([HELP_ENABLE], [$1])])
89
90 dnl Allow binary package maintainer to pass a custom string to avoid
91 dnl cache problem
92 AC_ARG_WITH(binary-version,
93     AS_HELP_STRING([--with-binary-version=STRING],
94          [To avoid plugins cache problem between binary version]),[],[])
95 AS_IF([test -n "${with_binary_version}"],[
96     AC_DEFINE_UNQUOTED([DISTRO_VERSION],["${with_binary_version}"],
97          [Binary specific version])
98 ])
99
100 dnl
101 dnl  Check the operating system
102 dnl
103 HAVE_WIN64="0"
104 HAVE_IOS="0"
105 HAVE_OSX="0"
106
107 YASMFLAGS=""
108 case "${host}" in
109     i?86*)
110     YASMFLAGS="-f elf32"
111         ;;
112     x86_64*)
113     YASMFLAGS="-f elf64"
114         ;;
115 esac
116
117
118 case "${host_os}" in
119   "")
120     SYS=unknown
121     ;;
122   linux*)
123     SYS=linux
124     ;;
125   bsdi*)
126     SYS=bsdi
127     CFLAGS="${CFLAGS} -pthread"
128     ;;
129   freebsd*)
130     SYS=freebsd
131     CFLAGS="${CFLAGS} -pthread"
132     CPPFLAGS="${CPPFLAGS} -I/usr/local/include"
133     LDFLAGS="${LDFLAGS} -L/usr/local/lib"
134     ;;
135   openbsd*)
136     SYS=openbsd
137     CPPFLAGS="${CPPFLAGS} -I/usr/local/include -I/usr/X11R6/include"
138     LDFLAGS="${LDFLAGS} -L/usr/local/lib -L/usr/X11R6/lib/"
139     ;;
140   netbsd*)
141     SYS=netbsd
142     ;;
143   dragonfly*)
144     SYS=dragonfly
145     ;;
146   darwin*)
147
148     dnl Force gcc "-arch" flag
149     ARCH_flag=""
150     case "${host}" in
151       i?86*)
152         ARCH_flag="-arch i386"
153         YASMFLAGS="-f macho32"
154       ;;
155       ppc64*)
156         ARCH_flag="-arch ppc64"
157       ;;
158       ppc*)
159         ARCH_flag="-arch ppc"
160       ;;
161       x86_64*)
162         ARCH_flag="-arch x86_64"
163         YASMFLAGS="-f macho64"
164       ;;
165       arm*)
166         ac_cv_c_bigendian="no"
167         ac_cv_c_attribute_packed="no"
168       ;;
169     esac
170
171     SYS=darwin
172     CFLAGS="${CFLAGS} -D_INTL_REDIRECT_MACROS ${ARCH_flag}"
173     CXXFLAGS="${CXXFLAGS} -D_INTL_REDIRECT_MACROS ${ARCH_flag}"
174     CPPFLAGS="${CPPFLAGS} ${ARCH_flag}"
175     OBJCFLAGS="${OBJCFLAGS} -D_INTL_REDIRECT_MACROS -std=gnu99 ${ARCH_flag}"
176     LDFLAGS="${LDFLAGS} -Wl,-headerpad_max_install_names ${ARCH_flag}"
177     VLC_ADD_LIBS([libvlc vlc],[-Wl,-undefined,dynamic_lookup,-framework,AppKit])
178     VLC_ADD_LIBS([libvlccore],[-Wl,-framework,CoreFoundation,-framework,CoreServices])
179
180     AC_EGREP_CPP(yes,
181             [#import <TargetConditionals.h>
182              #if TARGET_OS_IPHONE
183              yes
184              #endif],
185              [HAVE_IOS="1"],
186              [HAVE_OSX="1"])
187
188     dnl Allow binaries created on Lion to run on earlier releases
189     AC_EGREP_CPP(yes,
190            [#import <Cocoa/Cocoa.h>
191             #ifdef MAC_OS_X_VERSION_10_7
192             yes
193             #endif],
194             [AC_MSG_RESULT([yes])
195             AC_LIBOBJ([getdelim])
196             AC_LIBOBJ([strndup])
197             AC_LIBOBJ([strnlen])],)
198
199     dnl
200     dnl  Handle Mac OS X SDK flags
201     dnl
202     AC_ARG_WITH(macosx-sdk,
203       [AS_HELP_STRING([--with-macosx-sdk=DIR],
204         [compile using the SDK in DIR])])
205     if test "${with_macosx_sdk}" != "" ; then
206         test ! -d "${with_macosx_sdk}" && AC_MSG_ERROR([SDK "${with_macosx_sdk}" not found])
207         CPP="${CPP} -isysroot ${with_macosx_sdk}"
208         CC="${CC} -isysroot ${with_macosx_sdk}"
209         CXX="${CXX} -isysroot ${with_macosx_sdk}"
210         OBJC="${OBJC} -isysroot ${with_macosx_sdk}"
211         LD="${LD} -syslibroot ${with_macosx_sdk}"
212     fi
213     AC_ARG_WITH(macosx-version-min,
214       [AS_HELP_STRING([--with-macosx-version-min=VERSION],
215         [compile for Mac OS X VERSION and above])])
216     if test "${with_macosx_version_min}" != "" ; then
217         CPP="${CPP} -mmacosx-version-min=${with_macosx_version_min}"
218         CC="${CC} -mmacosx-version-min=${with_macosx_version_min}"
219         CXX="${CXX} -mmacosx-version-min=${with_macosx_version_min}"
220         OBJC="${OBJC} -mmacosx-version-min=${with_macosx_version_min}"
221         LD="${LD} -mmacosx_version_min=${with_macosx_version_min}"
222     fi
223     ;;
224   *mingw32* | *cygwin* | *wince* | *mingwce*)
225     AC_CHECK_TOOL(WINDRES, windres, :)
226     AC_CHECK_TOOL(OBJCOPY, objcopy, :)
227     AH_TOP([#if defined(_WIN32) && !defined(_WIN32_WINNT)])
228     AH_TOP([# define _WIN32_WINNT 0x0502 /* Windows XP SP2 */])
229     AH_TOP([#endif])
230     AC_DEFINE([_WIN32_IE], 0x0600, [Define to '0x0600' for IE 6.0 (and shell) APIs.])
231     AC_DEFINE([_UNICODE], [1], [Define to 1 for Unicode (Wide Chars) APIs.])
232     AC_DEFINE([UNICODE], [1], [Define to 1 for Unicode (Wide Chars) APIs.])
233     AC_DEFINE([_ISOC99_SOURCE], [1], [Extensions to ISO C89 from ISO C99.])
234     AC_DEFINE([_ISOC11_SOURCE], [1], [Extensions to ISO C99 from ISO C11.])
235     AC_DEFINE([_POSIX_SOURCE], [1], [IEEE Std 1003.1.])
236     AC_DEFINE([_POSIX_C_SOURCE], [200809L], [IEEE Std 1003.1.])
237     AC_DEFINE([_XOPEN_SOURCE], [700], [POSIX and XPG 7th edition])
238     AC_DEFINE([_XOPEN_SOURCE_EXTENDED], [1], [XPG things and X/Open Unix extensions.])
239     AC_DEFINE([_BSD_SOURCE], [1], [ISO C, POSIX, and 4.3BSD things.])
240     AC_DEFINE([_SVID_SOURCE], [1], [ISO C, POSIX, and SVID things.])
241
242     case "${host_os}" in
243       *mingw32*)
244         SYS=mingw32
245         ;;
246       *cygwin*)
247         dnl Check if we are using the mno-cygwin mode in which case we are
248         dnl actually dealing with a mingw32 compiler.
249         AC_EGREP_CPP(yes,
250             [#ifdef _WIN32
251              yes
252              #endif],
253             SYS=mingw32, AC_MSG_ERROR([VLC requires -mno-cygwin]))
254         ;;
255     esac
256
257     if test "${SYS}" = "mingw32"; then
258         # DEP, ASLR, NO SEH
259         LDFLAGS="${LDFLAGS} -Wl,--nxcompat -Wl,--no-seh -Wl,--dynamicbase"
260
261         AC_CHECK_PROGS(U2D, [unix2dos todos], unix2dos)
262         ac_default_prefix="`pwd`/_win32"
263         DESTDIR="`pwd`/_win32/"
264
265         dnl
266         dnl NSIS/MSI Installer prefix and WIN64
267         dnl
268         case "${host}" in
269             amd64*|x86_64*)
270                 HAVE_WIN64="1"
271                 WINDOWS_ARCH="x64"
272                 PROGRAMFILES="PROGRAMFILES64"
273                 YASMFLAGS="-f win64"
274             ;;
275             *)
276                 WINDOWS_ARCH="x86"
277                 PROGRAMFILES="PROGRAMFILES"
278                 YASMFLAGS="-f win32"
279             ;;
280         esac
281         AC_SUBST(WINDOWS_ARCH)
282         AC_SUBST(PROGRAMFILES)
283
284     fi
285     ;;
286   *nto*)
287     SYS=nto
288     ;;
289   solaris*)
290     SYS=solaris
291     ;;
292   hpux*)
293     SYS=hpux
294     ;;
295   symbian*)
296     SYS=symbian
297     ;;
298   *os2*)
299     SYS=os2
300     LDFLAGS="${LDFLAGS} -Zomf -Zbin-files -Zargs-wild -Zhigh-mem"
301     AC_LIBOBJ([freeaddrinfo])
302     ;;
303   *)
304     SYS="${host_os}"
305     ;;
306 esac
307 AM_CONDITIONAL(HAVE_DARWIN,  test "${SYS}" = "darwin")
308 AM_CONDITIONAL(HAVE_LINUX,   test "${SYS}" = "linux")
309 AM_CONDITIONAL(HAVE_OS2,     test "${SYS}" = "os2")
310 AM_CONDITIONAL(HAVE_WIN32,   test "${SYS}" = "mingw32")
311 AM_CONDITIONAL(HAVE_WIN64,   test "${HAVE_WIN64}" = "1")
312 AM_CONDITIONAL(HAVE_SYMBIAN, test "${SYS}" = "symbian")
313 AM_CONDITIONAL(HAVE_IOS,   test "${HAVE_IOS}" = "1")
314 AM_CONDITIONAL(HAVE_OSX,   test "${HAVE_OSX}" = "1")
315
316 AC_SUBST(YASMFLAGS)
317
318 dnl
319 dnl Sadly autoconf does not think about testing foo.exe when ask to test
320 dnl for program foo on win32
321 case "${build_os}" in
322     cygwin|msys)
323         ac_executable_extensions=".exe"
324     ;;
325     *)
326     ;;
327 esac
328
329 dnl Android is linux, but a bit different
330 AS_IF([test "$SYS" = linux],[
331     AC_MSG_CHECKING([for an Android system])
332     AC_PREPROC_IFELSE([AC_LANG_PROGRAM(
333         [[#ifndef __ANDROID__
334          # error Not Android
335          #endif
336         ]],[[;]])
337     ],[
338       HAVE_ANDROID="1"
339       AC_MSG_RESULT([yes])
340     ],[
341       AC_MSG_RESULT([no])
342     ])
343 ])
344 AM_CONDITIONAL(HAVE_ANDROID, test "${HAVE_ANDROID}" = "1")
345
346
347 dnl
348 dnl  Check for the contrib directory
349 dnl
350 AC_ARG_WITH(contrib,
351   [AS_HELP_STRING([--with-contrib[=DIR]],
352     [search for 3rd party libraries in DIR/include and DIR/lib])
353 ])
354 AC_MSG_CHECKING([for 3rd party libraries path])
355 AS_IF([test -z "${with_contrib}" || test "${with_contrib}" = "yes"], [
356   CONTRIB_DIR="${srcdir}/contrib/${host}"
357   AS_IF([test ! -d "${CONTRIB_DIR}"], [
358     echo "${CONTRIB_DIR} not found" >&AS_MESSAGE_LOG_FD
359     CONTRIB_DIR="${srcdir}/contrib/`$CC -dumpmachine`"
360     AS_IF([test ! -d "${CONTRIB_DIR}"], [
361       echo "${CONTRIB_DIR} not found" >&AS_MESSAGE_LOG_FD
362       CONTRIB_DIR="${srcdir}/extras/contrib/hosts/${host}"
363       AS_IF([test ! -d "${CONTRIB_DIR}"], [
364         echo "${CONTRIB_DIR} not found" >&AS_MESSAGE_LOG_FD
365         CONTRIB_DIR="${srcdir}/extras/contrib/hosts/`$CC -dumpmachine`"
366         AS_IF([test ! -d "${CONTRIB_DIR}"], [
367           echo "${CONTRIB_DIR} not found" >&AS_MESSAGE_LOG_FD
368           CONTRIB_DIR=""
369           AC_MSG_RESULT([not found])
370         ])
371       ])
372     ])
373   ])
374 ], [
375   AS_IF([test "${with_contrib}" != "no"], [
376     CONTRIB_DIR="${with_contrib}"
377   ], [
378     CONTRIB_DIR=""
379     AC_MSG_RESULT([disabled])
380   ])
381 ])
382 AS_IF([test -n "${CONTRIB_DIR}"], [
383   AS_IF([test -d "${CONTRIB_DIR}/lib"],[
384     CONTRIB_DIR=`cd "${CONTRIB_DIR}" && pwd`
385   ], [
386     echo "${CONTRIB_DIR}/lib not found" >&AS_MESSAGE_LOG_FD
387     CONTRIB_DIR=""
388     AC_MSG_RESULT([not usable])
389   ])
390
391 ])
392 AS_IF([test -n "${CONTRIB_DIR}"], [
393   AC_MSG_RESULT([${CONTRIB_DIR}])
394   export PATH=${CONTRIB_DIR}/bin:$PATH
395   CPPFLAGS="${CPPFLAGS} -I${CONTRIB_DIR}/include"
396   CFLAGS="${CFLAGS} -I${CONTRIB_DIR}/include"
397   CXXFLAGS="${CXXFLAGS} -I${CONTRIB_DIR}/include"
398   OBJCFLAGS="${OBJCFLAGS} -I${CONTRIB_DIR}/include"
399   export PKG_CONFIG_PATH="${CONTRIB_DIR}/lib/pkgconfig:$PKG_CONFIG_PATH"
400   LDFLAGS="${LDFLAGS} -L${CONTRIB_DIR}/lib"
401
402   AS_IF([test "${SYS}" = "darwin"], [
403     export LD_LIBRARY_PATH="${CONTRIB_DIR}/lib:$LD_LIBRARY_PATH"
404     export DYLD_LIBRARY_PATH="${CONTRIB_DIR}/lib:$DYLD_LIBRARY_PATH"
405   ])
406 ], [
407   AS_IF([test -n "${with_contrib}" && test "${with_contrib}" != "no"], [
408     AC_MSG_ERROR([Third party libraries not found!])
409   ])
410 ])
411 AC_SUBST(CONTRIB_DIR)
412
413 dnl Add extras/tools to the PATH
414 TOOLS_DIR="${srcdir}/extras/tools/build/bin"
415 AS_IF([test -d "${TOOLS_DIR}"], [
416     TOOLS_DIR=`cd "${TOOLS_DIR}" && pwd`
417     export PATH="${TOOLS_DIR}":$PATH
418 ])
419
420 dnl
421 dnl  Libtool
422 dnl  It's very bad, but our former custom system was worst
423 dnl  -- Courmisch
424 dnl
425
426 dnl override platform specific check for dependent libraries
427 dnl otherwise libtool linking of shared libraries will
428 dnl fail on anything other than pass_all.
429 AC_CACHE_VAL(lt_cv_deplibs_check_method,
430     [lt_cv_deplibs_check_method=pass_all])
431
432 LT_INIT([dlopen win32-dll shared disable-static])
433 LT_LANG([C++])
434 LT_LANG([Windows Resource])
435
436 DOLT
437
438 lt_cv_deplibs_check_method=pass_all
439
440 AS_IF([test "${enable_shared}" = "no" -a "${enable_vlc}" != "no"], [
441   AC_MSG_ERROR([VLC is based on plugins. Shared libraries cannot be disabled.])
442 ])
443
444 dnl
445 dnl Gettext stuff
446 dnl
447 AM_GNU_GETTEXT_VERSION([0.19.2])
448 AM_GNU_GETTEXT([external], [need-ngettext])
449
450 dnl
451 dnl Iconv stuff
452 dnl
453 AM_ICONV
454
455 dnl
456 dnl checks for mingw
457 AS_IF([test "${SYS}" = "mingw32"], [
458
459 dnl Check for broken versions of mingw-runtime compatability library
460     AC_MSG_CHECKING(for broken mingw-runtime)
461     AC_PREPROC_IFELSE([AC_LANG_SOURCE([
462 #include <_mingw.h>
463 #if defined(__MINGW64_VERSION_MAJOR)
464 # if __MINGW64_VERSION_MAJOR < 3
465 #  error Attempting to use mingw-runtime with broken vsnprintf and direct2d support
466 # endif
467 #elif __MINGW32_MAJOR_VERSION == 3 && __MINGW32_MINOR_VERSION < 15
468 # error Attempting to use mingw-runtime with broken vsnprintf support
469 #endif
470     ])], [
471         AC_MSG_RESULT([ok])
472     ], [
473         AC_MSG_RESULT([present])
474         AC_MSG_ERROR([LibVLC requires mingw-runtime version 3.15 or higher, or mingw-w64 version 3.0 or higher!])
475     ])
476
477     dnl force use of mingw provided c99 *printf over msvcrt
478     CPPFLAGS="${CPPFLAGS} -D__USE_MINGW_ANSI_STDIO=1"
479
480     dnl Add WinMainCRTStartup entry point to show it's a WinMain application
481     VLC_ADD_LDFLAGS([vlc],[-mwindows])
482
483     dnl Check for the need to include the mingwex lib for mingw32
484     VLC_SAVE_FLAGS
485     AC_CHECK_LIB(mingwex,opendir,
486         AC_CHECK_LIB(mingw32,opendir,,
487             [VLC_ADD_LIBS([libvlccore],[-lmingwex])])
488     )
489     VLC_RESTORE_FLAGS
490
491     dnl Check for fnative-struct or mms-bitfields support for mingw32
492     VLC_SAVE_FLAGS
493     CFLAGS="${CFLAGS} -mms-bitfields"
494     CXXFLAGS="${CXXFLAGS} -mms-bitfields"
495     AC_CACHE_CHECK([if \$CC accepts -mms-bitfields],
496         [ac_cv_c_mms_bitfields],
497         [AC_TRY_COMPILE([],,ac_cv_c_mms_bitfields=yes, ac_cv_c_mms_bitfields=no)])
498     if test "${ac_cv_c_mms_bitfields}" = "no"; then
499         VLC_RESTORE_FLAGS
500         CFLAGS="${CFLAGS} -fnative-struct"
501         CXXFLAGS="${CXXFLAGS} -fnative-struct"
502         AC_CACHE_CHECK([if \$CC accepts -fnative-struct],
503             [ac_cv_c_fnative_struct],
504             [AC_TRY_COMPILE([],,ac_cv_c_fnative_struct=yes, ac_cv_c_fnative_struct=no)])
505         "${ac_cv_c_fnative_struct}" = "no" && VLC_RESTORE_FLAGS
506     fi
507 ])
508
509 AC_ARG_ENABLE(winstore_app,
510      AS_HELP_STRING([--enable-winstore-app],
511                     [Build targetted for Windows Store apps (default disabled)]))
512
513 vlc_winstore_app=0
514 AS_IF([test "${SYS}" = "mingw32"],[
515   AS_IF([test "${enable_winstore_app}" = "yes"], [
516     vlc_winstore_app=1
517      VLC_ADD_LIBS([libvlccore], [-lole32 -lruntimeobject])
518     ],[
519      VLC_ADD_LIBS([win32text],[-lgdi32])
520      VLC_ADD_LIBS([libvlccore],[-lwinmm])
521     ])
522   ])
523 AC_DEFINE_UNQUOTED(VLC_WINSTORE_APP, ${vlc_winstore_app}, [Define to 1 if you want to build for Windows Store apps])
524 AM_CONDITIONAL([HAVE_WINSTORE], [test "$vlc_winstore_app" = "1"])
525
526
527 dnl
528 dnl Buggy glibc prevention. Purposedly not cached.
529 dnl See sourceware.org bugs 5058 and 5443.
530 dnl Ubuntu alone has 20 bug numbers for this...
531 dnl
532 AC_MSG_CHECKING(for buggy GNU/libc versions)
533 AC_PREPROC_IFELSE([AC_LANG_SOURCE([
534 #include <limits.h>
535 #if defined (__GLIBC__) && (__GLIBC__ == 2) \
536   && (__GLIBC_MINOR__ >= 5) && (__GLIBC_MINOR__ <= 7)
537 # error GNU/libc with dcgettext killer bug!
538 #endif
539 ])], [
540   AC_MSG_RESULT([not present])
541 ], [
542   AC_MSG_RESULT([found])
543   AS_IF([test "x${enable_nls}" != "xno"], [
544     AC_MSG_ERROR([Buggy GNU/libc (version 2.5 - 2.7) present. VLC would crash; there is no viable
545 work-around for this. Check with your distribution vendor on how to update the
546 glibc run-time. Alternatively, build with --disable-nls.])
547   ])
548 ])
549
550 dnl Plugin compilation stuff
551
552 VLC_LIBRARY_SUFFIX
553
554 dnl Check for system libs needed
555 need_libc=false
556
557 dnl Check for usual libc functions
558 AC_CHECK_DECLS([nanosleep],,,[#include <time.h>])
559 AC_CHECK_FUNCS([daemon fcntl fstatvfs fork getenv getpwuid_r isatty lstat memalign mmap open_memstream openat pread posix_fadvise posix_madvise setlocale stricmp strnicmp strptime uselocale pthread_cond_timedwait_monotonic_np pthread_condattr_setclock])
560 AC_REPLACE_FUNCS([atof atoll dirfd fdopendir flockfile fsync getdelim getpid gmtime_r lldiv localtime_r nrand48 poll posix_memalign rewind setenv strcasecmp strcasestr strdup strlcpy strndup strnlen strsep strtof strtok_r strtoll swab tdestroy strverscmp])
561 AC_CHECK_FUNCS(fdatasync,,
562   [AC_DEFINE(fdatasync, fsync, [Alias fdatasync() to fsync() if missing.])
563 ])
564
565 dnl mingw64 implements those as static inline, not functions with C linkage
566 AC_LINK_IFELSE([
567     AC_LANG_PROGRAM([#include <stdio.h>], [
568         char *c;
569         if (asprintf(&c, "%s %d", "string", 1) == -1)
570             c = NULL;
571     ])],[AC_DEFINE([HAVE_ASPRINTF],[1],[Define to 1 if you have asprintf function])],[AC_LIBOBJ([asprintf])])
572 AC_LINK_IFELSE([
573     AC_LANG_PROGRAM([#include <stdio.h>
574                      #include <stdarg.h>], [
575         char *c;
576         va_list ap;
577         if (vasprintf(&c, "%s %d", ap) == -1)
578             c = NULL;
579     ])],[AC_DEFINE([HAVE_VASPRINTF],[1],[Define to 1 if you have asprintf function])],[AC_LIBOBJ([vasprintf])])
580
581 dnl C11 static_assert()
582 AC_MSG_CHECKING([for static_assert in assert.h])
583 AC_LINK_IFELSE([AC_LANG_PROGRAM([#include <assert.h>], [
584 static_assert(1, "The impossible happened.");
585 ])], [
586   AC_MSG_RESULT([yes])
587   AC_DEFINE([HAVE_STATIC_ASSERT], [1], [Define to 1 if <assert.h> defines static_assert.])
588 ], [
589   AC_MSG_RESULT([no])
590 ])
591
592 # Windows CE does not have strcoll()
593 AC_FUNC_STRCOLL
594
595 dnl Check for non-standard system calls
596 case "$SYS" in
597   "linux")
598     AC_CHECK_FUNCS([accept4 pipe2 eventfd vmsplice sched_getaffinity])
599     ;;
600   "mingw32")
601     AC_CHECK_FUNCS([_lock_file])
602     ;;
603 esac
604
605 AH_BOTTOM([#include <vlc_fixups.h>])
606
607 dnl Check for struct pollfd
608 AC_CHECK_TYPES([struct pollfd],,,
609 [#include <sys/types.h>
610 #if HAVE_POLL
611 # include <poll.h>
612 #elif defined (_WIN32)
613 # include <winsock2.h>
614 #endif
615 ])
616
617 dnl Checks for socket stuff
618 VLC_SAVE_FLAGS
619 SOCKET_LIBS=""
620 AC_SEARCH_LIBS(connect, [socket], [
621   AS_IF([test "$ac_cv_search_connect" != "none required"], [
622     SOCKET_LIBS="$ac_cv_search_connect"
623   ])
624 ], [
625   AS_IF([test "${SYS}" = "mingw32"], [
626     SOCKET_LIBS="-lws2_32"
627   ])
628 ])
629
630 AC_SEARCH_LIBS([inet_pton], [nsl], [
631  AS_IF([test "$ac_cv_search_inet_pton" != "none required"], [
632     SOCKET_LIBS="$ac_cv_search_inet_pton $SOCKET_LIBS"
633   ])
634 ],, [${SOCKET_LIBS}])
635
636 LIBS="${LIBS} ${SOCKET_LIBS}"
637 AC_LINK_IFELSE([
638     AC_LANG_PROGRAM([#ifdef _WIN32
639         # if _WIN32_WINNT < 0x600
640         #  error Needs vista+
641         # endif
642         #include <ws2tcpip.h>
643         #else
644         #include <sys/socket.h>
645         #include <arpa/inet.h>
646         #endif], [
647         char dst[[sizeof(struct in_addr)]];
648         inet_pton(AF_INET, "127.0.0.1", dst);
649     ])],[AC_DEFINE([HAVE_INET_PTON],[1],[Define to 1 if you have inet_pton function])],[AC_LIBOBJ([inet_pton])])
650 AC_CHECK_FUNCS([if_nameindex if_nametoindex])
651 VLC_RESTORE_FLAGS
652
653 AS_IF([test -n "$SOCKET_LIBS"], [
654   VLC_ADD_LIBS([access_rtmp access_output_shout sap stream_out_standard stream_out_rtp stream_out_raop stream_out_chromecast oldrc netsync ts remoteosd audiobargraph_a],[${SOCKET_LIBS}])
655 ])
656 AC_SUBST(SOCKET_LIBS)
657
658 dnl Check for socklen_t
659 AH_TEMPLATE(socklen_t, [Define to `int' if <sys/socket.h> does not define.])
660 AC_CACHE_CHECK([for socklen_t in sys/socket.h], dnl ` (fix VIM syntax highlight
661 ac_cv_type_socklen_t,
662 [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([
663 [#include <sys/types.h>
664 #ifdef _WIN32
665 # include <winsock2.h>
666 # include <ws2tcpip.h>
667 #else
668 # include <sys/socket.h>
669 #endif]], [[socklen_t len; len = 0;]])],
670 ac_cv_type_socklen_t=yes,
671 ac_cv_type_socklen_t=no)])
672 AS_IF([test "$ac_cv_type_socklen_t" = no],
673  [AC_DEFINE(socklen_t, int)])
674
675 dnl Check for struct sockaddr_storage
676 AH_TEMPLATE(sockaddr_storage, [Define to `sockaddr' if <sys/socket.h> does not define.]) dnl ` (fix VIM syntax highlight
677 AH_TEMPLATE(ss_family, [Define to `sa_family' if <sys/socket.h> does not define.]) dnl ` (fix VIM syntax highlight
678 AC_CACHE_CHECK([for struct sockaddr_storage], ac_cv_struct_sockaddr_storage,
679   [AC_TRY_COMPILE(
680     [#include <sys/types.h>
681      #if defined( _WIN32 )
682      # include <winsock2.h>
683      #else
684      # include <sys/socket.h>
685      #endif], [struct sockaddr_storage addr;],
686      ac_cv_struct_sockaddr_storage=yes,
687      ac_cv_struct_sockaddr_storage=no)])
688 AS_IF([test "${ac_cv_struct_sockaddr_storage}" = no], [
689   AC_DEFINE(sockaddr_storage, sockaddr)
690   AC_DEFINE(ss_family, sa_family)
691 ])
692
693 dnl FreeBSD has a gnugetopt library for this:
694 GNUGETOPT_LIBS=""
695 AC_CHECK_FUNC(getopt_long,, [
696   AC_CHECK_LIB([gnugetopt],[getopt_long], [
697     GNUGETOPT_LIBS="-lgnugetopt"
698   ])
699 ])
700 AC_SUBST(GNUGETOPT_LIBS)
701
702 AC_CHECK_LIB(m,cos,[
703   VLC_ADD_LIBS([adjust wave ripple psychedelic gradient a52tofloat32 dtstofloat32 x264 goom noise grain scene chorus_flanger freetype swscale postproc equalizer spatializer param_eq samplerate freetype mpc qt4 compressor headphone_channel_mixer normvol audiobargraph_a audiobargraph_v mono colorthres extract ball hotkeys mosaic gaussianblur x262 x26410b hqdn3d anaglyph oldrc ncurses oldmovie glspectrum smooth],[-lm])
704   LIBM="-lm"
705 ], [
706   LIBM=""
707 ])
708 AC_SUBST(LIBM)
709
710 AC_CHECK_LIB(m,lrintf, [
711   AC_DEFINE(HAVE_LRINTF, 1, [Define to 1 if you have the lrintf function])
712   VLC_ADD_LIBS([skins2],[-lm])
713 ])
714 AC_CHECK_LIB(m,nanf,
715   AC_DEFINE(HAVE_NANF, 1, [Define to 1 if you have the NANF function])
716 )
717
718 dnl Check for dynamic plugins
719 LIBDL=""
720 have_dynamic_objects="no"
721 VLC_SAVE_FLAGS
722 AC_SEARCH_LIBS(dlsym, [dl svld], [
723   AS_IF([test "$ac_cv_search_dlsym" != "none required"], [
724     LIBDL="$ac_cv_search_dlsym"
725   ])
726   have_dynamic_objects="yes"
727 ])
728 VLC_RESTORE_FLAGS
729
730 # Windows
731 AS_IF([test "${SYS}" = "mingw32"], [
732   LIBDL=""
733   have_dynamic_objects="yes" #assume we can use shared objects
734 ])
735
736 AS_IF([test "${enable_shared}" = "no"], [
737   have_dynamic_objects=no
738 ])
739 AM_CONDITIONAL(HAVE_DYNAMIC_PLUGINS, [test "${have_dynamic_objects}" != "no"])
740
741 AC_SUBST(LIBDL)
742
743 dnl Check for thread library
744 LIBPTHREAD=""
745 AS_IF([test "${SYS}" != "mingw32"], [
746   VLC_SAVE_FLAGS
747   LIBS=""
748   AC_SEARCH_LIBS(pthread_rwlock_init, pthread pthreads c_r, [
749     AS_IF([test "$ac_cv_search_pthread_rwlock_init" != "none required"], [
750       LIBPTHREAD="$ac_cv_search_pthread_rwlock_init"
751     ])
752   ])
753   VLC_RESTORE_FLAGS
754
755   AC_CHECK_LIB(rt, clock_nanosleep, [
756     VLC_ADD_LIBS([libvlccore],[-lrt])
757   ], [
758     AC_CHECK_FUNC(nanosleep,,[
759       AC_CHECK_LIB(rt,nanosleep, [
760         VLC_ADD_LIBS([libvlccore],[-lrt])
761       ], [
762         AC_CHECK_LIB(posix4,nanosleep, [
763           VLC_ADD_LIBS([libvlccore],[-lposix4])
764         ])
765       ])
766     ])
767     dnl HP/UX port
768     AC_CHECK_LIB(rt,sem_init, [VLC_ADD_LIBS([libvlccore],[-lrt])])
769   ])
770 ])
771 AC_SUBST(LIBPTHREAD)
772
773 dnl
774 dnl Check for headers
775 dnl
776
777 dnl  POSIX
778 AC_CHECK_HEADERS([arpa/inet.h pthread.h search.h sys/shm.h sys/socket.h])
779 AC_CHECK_HEADERS([net/if.h], [], [],
780 [
781 #include <sys/types.h>
782 #include <sys/socket.h>
783 ])
784 AC_CHECK_HEADER([syslog.h], [have_syslog="yes"], [have_syslog="no"])
785 AM_CONDITIONAL([HAVE_SYSLOG], [test "$have_syslog" = "yes"])
786
787 dnl  BSD
788 AC_CHECK_HEADERS([netinet/udplite.h sys/param.h sys/mount.h])
789
790 dnl  GNU/Linux
791 AC_CHECK_HEADERS([getopt.h linux/dccp.h linux/magic.h mntent.h sys/eventfd.h])
792
793 dnl  MacOS
794 AC_CHECK_HEADERS([xlocale.h])
795
796 dnl LP64 and LLP64 architectures had better define ssize_t by themselves...
797 AH_TEMPLATE(ssize_t, [Define to `int' if <stddef.h> does not define.]) dnl ` (fix VIM syntax highlight
798 AC_CHECK_TYPE(ssize_t,, [
799   AC_DEFINE(ssize_t, int)
800 ])
801
802 dnl It seems that autoconf detects pkg-config only during the first
803 dnl PKG_CHECK_MODULES from configure.ac - which makes sense. But in our case,
804 dnl it is nested within a conditional block, so it was not working right.
805 dnl Make PKG_CONFIG_PATH precious so that it appears in the help and get saved
806 AC_ARG_VAR(PKG_CONFIG_PATH,
807        [Paths where to find .pc not at the default location])
808 PKG_PROG_PKG_CONFIG()
809
810 dnl On some OS we need static linking
811 AS_IF([test -n "${PKG_CONFIG}" ],[
812     AS_IF([test "${SYS}" = "mingw32" -o "${SYS}" = "darwin" -o "${SYS}" = "os2" ],[
813         PKG_CONFIG="${PKG_CONFIG} --static"
814     ])
815 ])
816
817
818 dnl
819 dnl Check for zlib.h and -lz along with system -lminizip if available
820 dnl
821 AC_CHECK_HEADERS(zlib.h, [ have_zlib=yes ], [ have_zlib=no ])
822 AM_CONDITIONAL(HAVE_ZLIB, [ test "${have_zlib}" = "yes" ])
823 if test "${have_zlib}" = "yes"
824 then
825   VLC_ADD_LIBS([skins2 sap unzip zip],[-lz])
826   PKG_CHECK_MODULES([MINIZIP], [minizip] , [ have_minizip=yes ], [
827     AC_CHECK_HEADERS([unzip.h], [
828       have_minizip=yes
829       MINIZIP_LIBS="-lminizip -lz"
830     ], [
831       VLC_ADD_CPPFLAGS([skins2], [-I\\\$(top_srcdir)/modules/access/zip/unzip])
832       VLC_ADD_LIBS([skins2], [\\\$(top_builddir)/modules/libunzip.la])
833       have_minizip=no
834     ])
835   ])
836   VLC_ADD_CPPFLAGS([skins2],[$MINIZIP_CFLAGS])
837   VLC_ADD_LIBS([skins2],[$MINIZIP_LIBS])
838 fi
839 AM_CONDITIONAL(HAVE_MINIZIP, [ test "${have_minizip}" = "yes" ])
840
841
842 dnl
843 dnl Domain name i18n support via GNU libidn
844 dnl
845 PKG_CHECK_MODULES([IDN], [libidn], [
846   have_libidn="yes"
847   AC_DEFINE([HAVE_IDN], 1, [Define to 1 if you have GNU libidn.])
848 ], [
849   have_libidn="no"
850 ])
851
852
853 dnl Check for dbus
854 AC_ARG_ENABLE(dbus,
855   [AS_HELP_STRING([--enable-dbus],
856     [compile D-Bus message bus support (default enabled)])])
857 have_dbus="no"
858 AS_IF([test "${enable_dbus}" != "no"], [
859   PKG_CHECK_MODULES(DBUS, [dbus-1 >= 1.6.0], [
860     have_dbus="yes"
861   ], [
862     AS_IF([test -n "${enable_dbus}"], [
863       AC_MSG_ERROR([${DBUS_PKG_ERRORS}.])
864     ], [
865       AC_MSG_WARN([${DBUS_PKG_ERRORS}.])
866     ])
867   ])
868 ])
869 AM_CONDITIONAL([HAVE_DBUS], [test "${have_dbus}" = "yes"])
870
871
872 dnl Check for systemd
873 PKG_CHECK_MODULES([SYSTEMD], [libsystemd], [
874   have_systemd="yes"
875 ], [
876   AC_MSG_WARN([${SYSTEMD_PKG_ERRORS}.])
877 ])
878 AM_CONDITIONAL([HAVE_SYSTEMD], [test "${have_systemd}" = "yes"])
879
880
881 dnl Check for ntohl, etc.
882 VLC_SAVE_FLAGS
883 CFLAGS="${CFLAGS} -Wall -Werror"
884 AC_CACHE_CHECK([for ntohl in sys/param.h],
885     [ac_cv_c_ntohl_sys_param_h],
886     [     AC_TRY_COMPILE([#include <sys/param.h>],
887         [int meuh; ntohl(meuh);],
888         ac_cv_c_ntohl_sys_param_h=yes, ac_cv_c_ntohl_sys_param_h=no)])
889 if test "${ac_cv_c_ntohl_sys_param_h}" != "no"; then
890     AC_DEFINE(NTOHL_IN_SYS_PARAM_H, 1, Define if <sys/param.h> defines ntohl.)
891 fi
892 VLC_RESTORE_FLAGS
893
894 EXTEND_HELP_STRING([Optimization options:])
895 dnl
896 dnl  Compiler warnings
897 dnl
898
899 RDC_PROG_CC_WFLAGS([all extra sign-compare undef pointer-arith bad-function-cast write-strings missing-prototypes volatile-register-var error-implicit-function-declaration init-self logical-op])
900 RDC_PROG_CC_FLAGS([-pipe])
901 AC_LANG_PUSH([C++])
902 RDC_PROG_CXX_WFLAGS([all extra sign-compare undef pointer-arith volatile-register-var])
903 AC_LANG_POP([C++])
904
905 dnl
906 dnl  Debugging mode
907 dnl
908 AC_ARG_ENABLE(debug,
909   [AS_HELP_STRING([--enable-debug],
910     [build with run-time assertions (default disabled)])],,
911   [enable_debug="no"])
912 AH_TEMPLATE(NDEBUG,
913             [Define to 1 if debug code should NOT be compiled])
914 AS_IF([test "${enable_debug}" != "no"], [
915   AC_CHECK_HEADERS([valgrind/valgrind.h])
916 ], [
917   AC_DEFINE(NDEBUG)
918 ])
919
920 dnl
921 dnl  Profiling
922 dnl
923 AC_ARG_ENABLE(gprof,
924   [AS_HELP_STRING([--enable-gprof],[profile with gprof (default disabled)])],,
925   [enable_gprof="no"])
926 AS_IF([test "${enable_gprof}" != "no"], [
927   CFLAGS="${CFLAGS} -pg"
928   CXXFLAGS="${CXXFLAGS} -pg"
929   OBJCFLAGS="${OBJCFLAGS} -pg"
930   LDFLAGS="${LDFLAGS} -pg"
931 ])
932
933 AC_ARG_ENABLE(cprof,
934   [AS_HELP_STRING([--enable-cprof],[profile with cprof (default disabled)])],,
935   [enable_cprof="no"])
936 AS_IF([test "${enable_gprof}" != "no"], [
937   CFLAGS="${CFLAGS} -finstrument-functions"
938   CXXFLAGS="${CXXFLAGS} -finstrument-functions"
939   OBJCFLAGS="${OBJCFLAGS} -finstrument-functions"
940   LDFLAGS="${LDFLAGS} -finstrument-functions"
941 ])
942
943 dnl
944 dnl  Test coverage
945 dnl
946 AC_ARG_ENABLE(coverage,
947   [AS_HELP_STRING([--enable-coverage],
948     [build for test coverage (default disabled)])],,
949   [enable_coverage="no"])
950 AS_IF([test "${enable_coverage}" != "no"], [
951   CFLAGS="-fprofile-arcs -ftest-coverage ${CFLAGS}"
952   CXXFLAGS="-fprofile-arcs -ftest-coverage ${CXXFLAGS}"
953   LDFLAGS="-lgcov ${LDFLAGS}"
954 ])
955
956 AS_IF([test "${SYS}" != "mingw32" -a "${SYS}" != "os2"], [
957   VLC_SAVE_FLAGS
958   CFLAGS="${CFLAGS} -fvisibility=hidden"
959   CXXFLAGS="${CXXFLAGS} -fvisibility=hidden"
960   OBJCFLAGS="${OBJCFLAGS} -fvisibility=hidden"
961   AC_CACHE_CHECK([if $CC accepts -fvisibility=hidden],
962                  [ac_cv_c_visibility_hidden], [
963     AC_COMPILE_IFELSE([AC_LANG_PROGRAM()], [
964       ac_cv_c_visibility_hidden=yes
965     ], [
966       ac_cv_c_visibility_hidden=no
967     ])
968   ])
969   AS_IF([test "${ac_cv_c_visibility_hidden}" = "no"], [VLC_RESTORE_FLAGS])
970 ])
971
972
973 dnl
974 dnl  Enable/disable optimizations
975 dnl
976 AC_ARG_ENABLE(optimizations,
977   [AS_HELP_STRING([--disable-optimizations],
978     [disable compiler optimizations (default enabled)])],,
979   [enable_optimizations="yes"])
980
981 dnl Check for various optimization flags
982 AS_IF([test "${enable_optimizations}" != "no"], [
983
984   dnl -O3 only in production builds
985   AS_IF([test "${enable_debug}" = "no"], [
986     VLC_SAVE_FLAGS
987     CFLAGS="${CFLAGS} -O3"
988     CXXFLAGS="${CXXFLAGS} -O3"
989     OBJCFLAGS="${OBJCFLAGS} -O3"
990     AC_CACHE_CHECK([if $CC accepts -O3],  [ac_cv_c_o3], [
991       AC_COMPILE_IFELSE([AC_LANG_PROGRAM()], [
992         ac_cv_c_o3=yes
993       ], [
994         ac_cv_c_o3=no
995       ])
996     ])
997     AS_IF([test "${ac_cv_c_o3}" = "no"], [VLC_RESTORE_FLAGS])
998   ])
999
1000   dnl Check for -ffast-math
1001   VLC_SAVE_FLAGS
1002   CFLAGS="${CFLAGS} -ffast-math"
1003   CXXFLAGS="${CXXFLAGS} -ffast-math"
1004   OBJCFLAGS="${OBJCFLAGS} -ffast-math"
1005   AC_CACHE_CHECK([if $CC accepts -ffast-math], [ac_cv_c_fast_math], [
1006     AC_COMPILE_IFELSE([AC_LANG_PROGRAM()], [
1007       ac_cv_c_fast_math=yes
1008     ], [
1009       ac_cv_c_fast_math=no
1010     ])
1011   ])
1012   AS_IF([test "${ac_cv_c_fast_math}" = "no"], [VLC_RESTORE_FLAGS])
1013   AH_BOTTOM([
1014 #ifndef __FAST_MATH__
1015 # ifndef _MSC_VER
1016 #  pragma STDC FENV_ACCESS OFF
1017 #  pragma STDC FP_CONTRACT ON
1018 # else
1019 #  pragma fenv_access(off)
1020 #  pragma fp_contract(on)
1021 # endif
1022 #endif
1023 ])
1024
1025   dnl Check for -funroll-loops
1026   VLC_SAVE_FLAGS
1027   CFLAGS="${CFLAGS} -funroll-loops"
1028   CXXFLAGS="${CXXFLAGS} -funroll-loops"
1029   OBJCFLAGS="${OBJCFLAGS} -funroll-loops"
1030   AC_CACHE_CHECK([if $CC accepts -funroll-loops], [ac_cv_c_unroll_loops], [
1031     AC_COMPILE_IFELSE([AC_LANG_PROGRAM()], [
1032       ac_cv_c_unroll_loops=yes
1033     ], [
1034       ac_cv_c_unroll_loops=no
1035     ])
1036   ])
1037   AS_IF([test "${ac_cv_c_unroll_loops}" = "no"], [VLC_RESTORE_FLAGS])
1038
1039   AS_IF([test "$enable_debug" = "no"], [
1040     dnl Check for -fomit-frame-pointer
1041     VLC_SAVE_FLAGS
1042     CFLAGS="${CFLAGS} -fomit-frame-pointer"
1043     CXXFLAGS="${CXXFLAGS} -fomit-frame-pointer"
1044     OBJCFLAGS="${OBJCFLAGS} -fomit-frame-pointer"
1045     AC_CACHE_CHECK([if $CC accepts -fomit-frame-pointer],
1046       [ac_cv_c_omit_frame_pointer], [
1047       AC_COMPILE_IFELSE([AC_LANG_PROGRAM()], [
1048         ac_cv_c_omit_frame_pointer=yes
1049       ], [
1050         ac_cv_c_omit_frame_pointer=no
1051       ])
1052     ])
1053     AS_IF([test "${ac_cv_c_omit_frame_pointer}" = "no"], [VLC_RESTORE_FLAGS])
1054   ])
1055 ])
1056
1057 VLC_SAVE_FLAGS
1058 LDFLAGS="${LDFLAGS} -Wl,-Bsymbolic"
1059 AC_CACHE_CHECK([if linker supports -Bsymbolic], [ac_cv_ld_bsymbolic], [
1060   AC_TRY_LINK([],, [
1061     ac_cv_ld_bsymbolic="-Wl,-Bsymbolic"
1062   ], [
1063     ac_cv_ld_bsymbolic=""
1064   ])
1065 ])
1066 VLC_RESTORE_FLAGS
1067 SYMBOLIC_LDFLAGS="${ac_cv_ld_bsymbolic}"
1068 AC_SUBST(SYMBOLIC_LDFLAGS)
1069
1070 dnl Checks for __attribute__(aligned()) directive
1071 VLC_SAVE_FLAGS
1072 CFLAGS="${CFLAGS} -Werror"
1073 AC_CACHE_CHECK([__attribute__ ((aligned ())) support],
1074     [ac_cv_c_attribute_aligned],
1075     [ac_cv_c_attribute_aligned=0
1076     for ac_cv_c_attr_align_try in 2 4 8 16 32 64; do
1077         AC_TRY_COMPILE([],
1078         [static char c __attribute__ ((aligned(${ac_cv_c_attr_align_try}))) = 0; return c;],
1079         [ac_cv_c_attribute_aligned="${ac_cv_c_attr_align_try}"])
1080     done])
1081 VLC_RESTORE_FLAGS
1082 if test "${ac_cv_c_attribute_aligned}" != "0"; then
1083     AC_DEFINE_UNQUOTED([ATTRIBUTE_ALIGNED_MAX],
1084         [${ac_cv_c_attribute_aligned}],[Maximum supported data alignment])
1085 fi
1086
1087 dnl Check for __attribute__((packed))
1088 AC_CACHE_CHECK([for __attribute__((packed))],
1089   [ac_cv_c_attribute_packed],
1090   [ac_cv_c_attribute_packed=no
1091    AC_TRY_COMPILE(, [struct __attribute__((__packed__)) foo { int a; } b; (void)b;],
1092                     [ac_cv_c_attribute_packed=yes])])
1093 if test "${ac_cv_c_attribute_packed}" != "no"; then
1094   AC_DEFINE(HAVE_ATTRIBUTE_PACKED, 1, Support for __attribute__((packed)) for structs)
1095 fi
1096
1097 dnl
1098 dnl  Check the CPU
1099 dnl
1100 case "${host_cpu}" in
1101   "")
1102     ARCH=unknown
1103     ;;
1104   *)
1105     ARCH="${host_cpu}"
1106     ;;
1107 esac
1108
1109 dnl Check for backtrace() support
1110 AC_CHECK_HEADERS(execinfo.h)
1111 AC_CHECK_FUNCS(backtrace)
1112
1113 dnl
1114 dnl  default modules
1115 dnl
1116 ALIASES="${ALIASES} cvlc rvlc"
1117
1118 dnl
1119 dnl  Accelerated modules
1120 dnl
1121
1122 dnl  Check for fully working MMX intrinsics
1123 dnl  We need support for -mmmx, we need <mmintrin.h>, and we also need a
1124 dnl  working compiler (http://gcc.gnu.org/bugzilla/show_bug.cgi?id=23963)
1125 AC_ARG_ENABLE(mmx,
1126   [AS_HELP_STRING([--disable-mmx],
1127     [disable MMX optimizations (default auto)])],,[
1128   case "${host_cpu}" in
1129     i?86|x86_64)
1130       enable_mmx="yes"
1131       ;;
1132     *)
1133       enable_mmx="no"
1134       ;;
1135   esac
1136 ])
1137 have_mmx="no"
1138 have_mmxext="no"
1139 AS_IF([test "${enable_mmx}" != "no"], [
1140   ARCH="${ARCH} mmx"
1141   VLC_SAVE_FLAGS
1142   CFLAGS="${CFLAGS} -mmmx"
1143   AC_CACHE_CHECK([if $CC groks MMX intrinsics], [ac_cv_c_mmx_intrinsics], [
1144     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([
1145 [#include <mmintrin.h>
1146 #include <stdint.h>
1147 uint64_t frobzor;]], [
1148 [__m64 a, b, c;
1149 a = b = c = (__m64)frobzor;
1150 a = _mm_slli_pi16(a, 3);
1151 a = _mm_adds_pi16(a, b);
1152 c = _mm_srli_pi16(c, 8);
1153 c = _mm_slli_pi16(c, 3);
1154 b = _mm_adds_pi16(b, c);
1155 a = _mm_unpacklo_pi8(a, b);
1156 frobzor = (uint64_t)a;]])], [
1157       ac_cv_c_mmx_intrinsics=yes
1158     ], [
1159       ac_cv_c_mmx_intrinsics=no
1160     ])
1161   ])
1162   VLC_RESTORE_FLAGS
1163   AS_IF([test "${ac_cv_c_mmx_intrinsics}" != "no"], [
1164     AC_DEFINE(HAVE_MMX_INTRINSICS, 1, [Define to 1 if MMX intrinsics are available.])
1165   ])
1166
1167   VLC_SAVE_FLAGS
1168   CFLAGS="${CFLAGS} -mmmx"
1169   AC_CACHE_CHECK([if $CC groks MMX inline assembly], [ac_cv_mmx_inline], [
1170     AC_COMPILE_IFELSE([AC_LANG_PROGRAM(,[[
1171 void *p;
1172 asm volatile("packuswb %%mm1,%%mm2"::"r"(p):"mm1", "mm2");
1173 ]])
1174     ], [
1175       ac_cv_mmx_inline=yes
1176     ], [
1177       ac_cv_mmx_inline=no
1178     ])
1179   ])
1180   AS_IF([test "${ac_cv_mmx_inline}" != "no"], [
1181     AC_DEFINE(CAN_COMPILE_MMX, 1, [Define to 1 inline MMX assembly is available.])
1182     have_mmx="yes"
1183   ])
1184
1185   AC_CACHE_CHECK([if $CC groks MMX EXT inline assembly],
1186                  [ac_cv_mmxext_inline], [
1187     AC_COMPILE_IFELSE([AC_LANG_PROGRAM(,[[
1188 void *p;
1189 asm volatile("maskmovq %%mm1,%%mm2"::"r"(p):"mm1", "mm2");
1190 ]])
1191     ], [
1192       ac_cv_mmxext_inline=yes
1193     ], [
1194       ac_cv_mmxext_inline=no
1195     ])
1196   ])
1197   VLC_RESTORE_FLAGS
1198   AS_IF([test "${ac_cv_mmxext_inline}" != "no"], [
1199     AC_DEFINE(CAN_COMPILE_MMXEXT, 1, [Define to 1 if MMX EXT inline assembly is available.])
1200     have_mmxext="yes"
1201   ])
1202 ])
1203 AM_CONDITIONAL([HAVE_MMX], [test "${have_mmx}" = "yes"])
1204 AM_CONDITIONAL([HAVE_MMXEXT], [test "${have_mmxext}" = "yes"])
1205
1206 dnl  Check for fully workin SSE2 intrinsics
1207 dnl  We need support for -mmmx, we need <emmintrin.h>, and we also need a
1208 dnl  working compiler (http://gcc.gnu.org/bugzilla/show_bug.cgi?id=23963)
1209 AC_ARG_ENABLE(sse,
1210   [AS_HELP_STRING([--disable-sse],
1211     [disable SSE (1-4) optimizations (default auto)])],, [
1212   case "${host_cpu}" in
1213     i?86|x86_64)
1214       enable_sse=yes
1215       ;;
1216     *)
1217       enable_sse=no
1218       ;;
1219   esac
1220 ])
1221 have_sse2="no"
1222 AS_IF([test "${enable_sse}" != "no"], [
1223   ARCH="${ARCH} sse sse2"
1224
1225   VLC_SAVE_FLAGS
1226   CFLAGS="${CFLAGS} -msse2"
1227   AC_CACHE_CHECK([if $CC groks SSE2 intrinsics], [ac_cv_c_sse2_intrinsics], [
1228     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([
1229 [#include <emmintrin.h>
1230 #include <stdint.h>
1231 uint64_t frobzor;]], [
1232 [__m128i a, b, c;
1233 a = b = c = _mm_set1_epi64((__m64)frobzor);
1234 a = _mm_slli_epi16(a, 3);
1235 a = _mm_adds_epi16(a, b);
1236 c = _mm_srli_epi16(c, 8);
1237 c = _mm_slli_epi16(c, 3);
1238 b = _mm_adds_epi16(b, c);
1239 a = _mm_unpacklo_epi8(a, b);
1240 frobzor = (uint64_t)_mm_movepi64_pi64(a);]])], [
1241       ac_cv_c_sse2_intrinsics=yes
1242     ], [
1243       ac_cv_c_sse2_intrinsics=no
1244     ])
1245   ])
1246   VLC_RESTORE_FLAGS
1247   AS_IF([test "${ac_cv_c_sse2_intrinsics}" != "no"], [
1248     AC_DEFINE(HAVE_SSE2_INTRINSICS, 1, [Define to 1 if SSE2 intrinsics are available.])
1249   ])
1250
1251   VLC_SAVE_FLAGS
1252   CFLAGS="${CFLAGS} -msse"
1253   AC_CACHE_CHECK([if $CC groks SSE inline assembly], [ac_cv_sse_inline], [
1254     AC_COMPILE_IFELSE([AC_LANG_PROGRAM(,[[
1255 void *p;
1256 asm volatile("xorps %%xmm1,%%xmm2"::"r"(p):"xmm1", "xmm2");
1257 ]])
1258     ], [
1259       ac_cv_sse_inline=yes
1260     ], [
1261       ac_cv_sse_inline=no
1262     ])
1263   ])
1264
1265   AS_IF([test "${ac_cv_sse_inline}" != "no" -a "${SYS}" != "solaris"], [
1266     AC_DEFINE(CAN_COMPILE_SSE, 1, [Define to 1 if SSE inline assembly is available.])
1267   ])
1268
1269   AC_CACHE_CHECK([if $CC groks SSE2 inline assembly], [ac_cv_sse2_inline], [
1270     AC_COMPILE_IFELSE([AC_LANG_PROGRAM(,[[
1271 void *p;
1272 asm volatile("punpckhqdq %%xmm1,%%xmm2"::"r"(p):"xmm1", "xmm2");
1273 ]])
1274     ], [
1275       ac_cv_sse2_inline=yes
1276     ], [
1277       ac_cv_sse2_inline=no
1278     ])
1279   ])
1280   AS_IF([test "${ac_cv_sse2_inline}" != "no" -a "${SYS}" != "solaris"], [
1281     AC_DEFINE(CAN_COMPILE_SSE2, 1, [Define to 1 if SSE2 inline assembly is available.])
1282     have_sse2="yes"
1283   ])
1284
1285   # SSE3
1286   AC_CACHE_CHECK([if $CC groks SSE3 inline assembly], [ac_cv_sse3_inline], [
1287     AC_COMPILE_IFELSE([AC_LANG_PROGRAM(,[[
1288 void *p;
1289 asm volatile("movsldup %%xmm1,%%xmm0"::"r"(p):"xmm0", "xmm1");
1290 ]])
1291     ], [
1292       ac_cv_sse3_inline=yes
1293     ], [
1294       ac_cv_sse3_inline=no
1295     ])
1296   ])
1297
1298   AS_IF([test "${ac_cv_sse3_inline}" != "no"], [
1299     AC_DEFINE(CAN_COMPILE_SSE3, 1, [Define to 1 if SSE3 inline assembly is available.]) ])
1300   # SSSE3
1301   AC_CACHE_CHECK([if $CC groks SSSE3 inline assembly], [ac_cv_ssse3_inline], [
1302     AC_COMPILE_IFELSE([AC_LANG_PROGRAM(,[[
1303 void *p;
1304 asm volatile("pabsw %%xmm0,%%xmm0"::"r"(p):"xmm0");
1305 ]])
1306     ], [
1307       ac_cv_ssse3_inline=yes
1308     ], [
1309       ac_cv_ssse3_inline=no
1310     ])
1311   ])
1312
1313   AS_IF([test "${ac_cv_ssse3_inline}" != "no"], [
1314     AC_DEFINE(CAN_COMPILE_SSSE3, 1, [Define to 1 if SSSE3 inline assembly is available.]) ])
1315
1316   # SSE4.1
1317   AC_CACHE_CHECK([if $CC groks SSE4.1 inline assembly],
1318                  [ac_cv_sse4_1_inline], [
1319     AC_COMPILE_IFELSE([AC_LANG_PROGRAM(,[[
1320 void *p;
1321 asm volatile("pmaxsb %%xmm1,%%xmm0"::"r"(p):"xmm0", "xmm1");
1322 ]])
1323     ], [
1324       ac_cv_sse4_1_inline=yes
1325     ], [
1326       ac_cv_sse4_1_inline=no
1327     ])
1328   ])
1329
1330   AS_IF([test "${ac_cv_sse4_1_inline}" != "no"], [
1331     AC_DEFINE(CAN_COMPILE_SSE4_1, 1, [Define to 1 if SSE4_1 inline assembly is available.]) ])
1332
1333   # SSE4.2
1334   AC_CACHE_CHECK([if $CC groks SSE4.2 inline assembly],
1335                  [ac_cv_sse4_2_inline], [
1336     AC_COMPILE_IFELSE([AC_LANG_PROGRAM(,[[
1337 void *p;
1338 asm volatile("pcmpgtq %%xmm1,%%xmm0"::"r"(p):"xmm0", "xmm1");
1339 ]])
1340     ], [
1341       ac_cv_sse4_2_inline=yes
1342     ], [
1343       ac_cv_sse4_2_inline=no
1344     ])
1345   ])
1346
1347   AS_IF([test "${ac_cv_sse4_2_inline}" != "no"], [
1348     AC_DEFINE(CAN_COMPILE_SSE4_2, 1, [Define to 1 if SSE4_2 inline assembly is available.]) ])
1349
1350   # SSE4A
1351   AC_CACHE_CHECK([if $CC groks SSE4A inline assembly], [ac_cv_sse4a_inline], [
1352     AC_COMPILE_IFELSE([AC_LANG_PROGRAM(,[[
1353 void *p;
1354 asm volatile("insertq %%xmm1,%%xmm0"::"r"(p):"xmm0", "xmm1");
1355 ]])
1356     ], [
1357       ac_cv_sse4a_inline=yes
1358     ], [
1359       ac_cv_sse4a_inline=no
1360     ])
1361   ])
1362   VLC_RESTORE_FLAGS
1363   AS_IF([test "${ac_cv_sse4a_inline}" != "no"], [
1364     AC_DEFINE(CAN_COMPILE_SSE4A, 1, [Define to 1 if SSE4A inline assembly is available.]) ])
1365 ])
1366 AM_CONDITIONAL([HAVE_SSE2], [test "$have_sse2" = "yes"])
1367
1368 VLC_SAVE_FLAGS
1369 CFLAGS="${CFLAGS} -mmmx"
1370 have_3dnow="no"
1371 AC_CACHE_CHECK([if $CC groks 3D Now! inline assembly], [ac_cv_3dnow_inline], [
1372   AC_COMPILE_IFELSE([AC_LANG_PROGRAM(,[[
1373 void *p;
1374 asm volatile("pfadd %%mm1,%%mm2"::"r"(p):"mm1", "mm2");
1375 ]])
1376   ], [
1377     ac_cv_3dnow_inline=yes
1378   ], [
1379     ac_cv_3dnow_inline=no
1380   ])
1381 ])
1382 VLC_RESTORE_FLAGS
1383 AS_IF([test "${ac_cv_3dnow_inline}" != "no"], [
1384   AC_DEFINE(CAN_COMPILE_3DNOW, 1,
1385             [Define to 1 if 3D Now! inline assembly is available.])
1386   have_3dnow="yes"
1387 ])
1388 AM_CONDITIONAL([HAVE_3DNOW], [test "$have_3dnow" = "yes"])
1389
1390
1391 AC_ARG_ENABLE(neon,
1392   [AS_HELP_STRING([--disable-neon],
1393     [disable NEON optimizations (default auto)])],, [
1394   AS_IF([test "${host_cpu}" = "arm"], [enable_neon="yes"] ,[enable_neon="no"])
1395 ])
1396 AS_IF([test "${enable_neon}" != "no"], [
1397   VLC_SAVE_FLAGS
1398   CFLAGS="${CFLAGS} -mfpu=neon -mhard-float"
1399   AC_CACHE_CHECK([if $CCAS groks ARM NEON assembly], [ac_cv_arm_neon], [
1400     AC_COMPILE_IFELSE([
1401       AC_LANG_PROGRAM(,[[
1402 asm volatile("vqmovun.s64 d0, q1":::"d0");
1403 ]])
1404     ], [
1405       ac_cv_arm_neon="yes"
1406     ], [
1407       ac_cv_arm_neon="no"
1408     ])
1409   ])
1410   VLC_RESTORE_FLAGS
1411 ])
1412 AM_CONDITIONAL(HAVE_NEON, [test "${ac_cv_arm_neon}" = "yes"])
1413
1414
1415 AC_ARG_ENABLE(altivec,
1416   [AS_HELP_STRING([--disable-altivec],
1417     [disable AltiVec optimizations (default auto)])],, [
1418   AS_CASE("${host_cpu}", [powerpc*],
1419         [enable_altivec=yes], [enable_altivec=no])
1420 ])
1421 have_altivec="no"
1422 ALTIVEC_CFLAGS=""
1423 AS_IF([test "${enable_altivec}" = "yes"], [
1424   ARCH="${ARCH} altivec";
1425   VLC_SAVE_FLAGS
1426   AC_CACHE_CHECK([if $CC groks AltiVec inline assembly],
1427     [ac_cv_altivec_inline],
1428     [AC_TRY_COMPILE(,[asm volatile("vperm 0,1,2,3");],
1429          ac_cv_altivec_inline="yes",
1430          [CFLAGS="${CFLAGS} -Wa,-maltivec"
1431           AC_TRY_COMPILE(,[asm volatile("vperm 0,1,2,3");],
1432             [ac_cv_altivec_inline="-Wa,-maltivec"],
1433             ac_cv_altivec_inline=no)
1434          ])])
1435   VLC_RESTORE_FLAGS
1436   AS_IF([test "${ac_cv_altivec_inline}" != "no"], [
1437     AC_DEFINE(CAN_COMPILE_ALTIVEC, 1,
1438               [Define to 1 if AltiVec inline assembly is available.])
1439     AS_IF([test "${ac_cv_altivec_inline}" != "yes"], [
1440       ALTIVEC_CFLAGS="${ac_cv_altivec_inline}"
1441       VLC_ADD_CFLAGS([libvlccore],[${ac_cv_altivec_inline}])
1442     ])
1443     have_altivec="yes"
1444   ])
1445
1446   VLC_SAVE_FLAGS
1447   AC_CACHE_CHECK([if \$CC groks AltiVec C extensions],
1448   [ac_cv_c_altivec], [
1449     CFLAGS="${CFLAGS} -maltivec"
1450     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([
1451 [#include <altivec.h>]], [
1452 [vec_ld(0, (unsigned char *)0);]])], [
1453       ac_cv_c_altivec="-maltivec"
1454     ], [
1455       ac_cv_c_altivec="no"
1456     ])
1457   ])
1458   VLC_RESTORE_FLAGS
1459   AS_IF([test "${ac_cv_c_altivec}" != "no"], [
1460     CPPFLAGS="${CPPFLAGS} ${ac_cv_c_altivec}"
1461     AC_DEFINE(CAN_COMPILE_C_ALTIVEC, 1, [Define to 1 if C AltiVec extensions are available.])
1462     VLC_ADD_CFLAGS([libvlccore],[${ac_cv_c_altivec}])
1463     ALTIVEC_CFLAGS="$ALTIVEC_FLAGS ${ac_cv_c_altivec} ${ac_cv_c_altivec_abi}"
1464     VLC_ADD_CFLAGS([deinterlace],[${ac_cv_c_altivec} ${ac_cv_c_altivec_abi}])
1465     have_altivec="yes"
1466   ])
1467   AC_CHECK_HEADERS(altivec.h)
1468
1469   VLC_SAVE_FLAGS
1470   LDFLAGS="${LDFLAGS} -Wl,-framework,vecLib"
1471   AC_CACHE_CHECK([if linker needs -framework vecLib],
1472     [ac_cv_ld_altivec],
1473     [AC_TRY_LINK([],,ac_cv_ld_altivec=yes,ac_cv_ld_altivec=no)])
1474   VLC_RESTORE_FLAGS
1475   AS_IF([test "${ac_cv_ld_altivec}" != "no"], [
1476     VLC_ADD_LIBS([libvlccore],[-Wl,-framework,vecLib])
1477   ])
1478 ])
1479 AC_SUBST(ALTIVEC_CFLAGS)
1480 AM_CONDITIONAL([HAVE_ALTIVEC], [test "$have_altivec" = "yes"])
1481
1482 dnl
1483 dnl  Memory usage
1484 dnl
1485 AC_ARG_ENABLE(optimize-memory,
1486   [AS_HELP_STRING([--enable-optimize-memory],
1487     [optimize memory usage over performance])])
1488 if test "${enable_optimize_memory}" = "yes"; then
1489   AC_DEFINE(OPTIMIZE_MEMORY, 1, Define if you want to optimize memory usage over performance)
1490 fi
1491
1492 dnl
1493 dnl Allow running as root (useful for people running on embedded platforms)
1494 dnl
1495 AC_ARG_ENABLE(run-as-root,
1496   [AS_HELP_STRING([--enable-run-as-root],
1497     [allow running VLC as root (default disabled)])])
1498 AS_IF([test "${enable_run_as_root}" = "yes"],[
1499     AC_DEFINE(ALLOW_RUN_AS_ROOT, 1,
1500               [Define to 1 to allow running VLC as root (uid 0).])
1501 ])
1502
1503 dnl
1504 dnl Stream output
1505 dnl
1506 AC_ARG_ENABLE(sout,
1507   [AS_HELP_STRING([--disable-sout],
1508     [disable streaming output (default enabled)])])
1509 AS_IF([test "${enable_sout}" != "no"], [
1510   AC_DEFINE(ENABLE_SOUT, 1, [Define to 1 for stream output support.])
1511 ])
1512 AM_CONDITIONAL(ENABLE_SOUT, [test "${enable_sout}" != "no"])
1513
1514 dnl Lua modules
1515 AC_ARG_ENABLE(lua,
1516   [AS_HELP_STRING([--disable-lua],
1517     [disable LUA scripting support (default enabled)])])
1518 if test "${enable_lua}" != "no"
1519 then
1520   PKG_CHECK_MODULES(LUA, lua5.2,
1521     [ have_lua=yes ],
1522     [
1523     AC_MSG_WARN([${LUA_PKG_ERRORS}, trying lua 5.1 instead])
1524
1525     PKG_CHECK_MODULES(LUA, lua5.1,
1526       [ have_lua=yes ],
1527       [
1528       AC_MSG_WARN([${LUA_PKG_ERRORS}, trying lua >= 5.1 instead])
1529       PKG_CHECK_MODULES(LUA, lua >= 5.1,
1530         [ have_lua=yes ],
1531         [
1532           AC_MSG_WARN([${LUA_PKG_ERRORS}, trying manual detection instead])
1533           have_lua=yes
1534           AC_CHECK_HEADERS([lua.h lauxlib.h lualib.h],
1535             [],
1536             [ have_lua=no ] )
1537           AC_CHECK_LIB(  lua5.2 , luaL_newstate,
1538             [LUA_LIBS="-llua5.2"],
1539           AC_CHECK_LIB( lua5.1 , luaL_newstate,
1540             [LUA_LIBS="-llua5.1"],
1541             AC_CHECK_LIB( lua51 , luaL_newstate,
1542               [LUA_LIBS="-llua51"],
1543               AC_CHECK_LIB( lua , luaL_newstate,
1544                 [LUA_LIBS="-llua"],
1545                 [ have_lua=no
1546                 ], [-lm])
1547             )))
1548         ])
1549       ])
1550     ])
1551   if test "x${have_lua}" != "xyes" ;  then
1552       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.])
1553   fi
1554   AC_ARG_VAR([LUAC], [LUA byte compiler])
1555   AC_PATH_PROGS(LUAC,[${LUAC} luac], [false])
1556   AS_IF([test "${LUAC}" = "false"], [
1557     AC_MSG_ERROR([Could not find the LUA byte compiler.])
1558   ])
1559   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], [
1560     AC_MSG_ERROR([You need 32-bits luac when using using lua from contrib.])
1561   ])
1562 fi
1563 AM_CONDITIONAL(BUILD_LUA, [test "${have_lua}" = "yes"])
1564
1565
1566 dnl
1567 dnl HTTP daemon
1568 dnl
1569 AC_ARG_ENABLE(httpd,
1570   [AS_HELP_STRING([--disable-httpd],
1571     [disable the built-in HTTP server (default enabled)])])
1572 if test "${enable_httpd}" != "no"
1573 then
1574   AC_DEFINE(ENABLE_HTTPD, 1, Define if you want the HTTP daemon support)
1575 fi
1576 AM_CONDITIONAL(BUILD_HTTPD, [test "${enable_httpd}" != "no"])
1577
1578
1579 dnl
1580 dnl VideoLAN manager
1581 dnl
1582 AC_ARG_ENABLE(vlm,
1583   [AS_HELP_STRING([--disable-vlm],
1584     [disable the stream manager (default enabled)])],,
1585   [enable_vlm="${enable_sout}"])
1586 AS_IF([test "${enable_vlm}" != "no"], [
1587   AS_IF([test "${enable_sout}" = "no"], [
1588     AC_MSG_ERROR([VLM requires the stream output. Do not use --disable-sout.])
1589   ])
1590   AC_DEFINE(ENABLE_VLM, 1, [Define if you want the VideoLAN manager support])
1591 ])
1592 AM_CONDITIONAL([ENABLE_VLM], [test "${enable_vlm}" != "no"])
1593
1594
1595 dnl
1596 dnl Addons manager storage and repositories modules
1597 dnl
1598 AC_ARG_ENABLE(addonmanagermodules,
1599   [AS_HELP_STRING([--disable-addonmanagermodules],
1600     [disable the addons manager modules (default enabled)])])
1601 if test "${enable_addonmanagermodules}" != "no"
1602 then
1603   AC_DEFINE(ENABLE_ADDONMANAGERMODULES, 1, [Define if you want the addons manager modules])
1604 fi
1605 AM_CONDITIONAL([ENABLE_ADDONMANAGERMODULES], [test "${enable_addonmanagermodules}" != "no"])
1606
1607
1608 dnl
1609 dnl  Input plugins
1610 dnl
1611
1612 EXTEND_HELP_STRING([Input plugins:])
1613
1614 dnl
1615 dnl  libarchive access module
1616 dnl
1617 PKG_ENABLE_MODULES_VLC([ARCHIVE], [access_archive], [libarchive >= 3.1.0], (libarchive support), [auto])
1618
1619 dnl
1620 dnl  live555 input
1621 dnl
1622 AC_ARG_ENABLE(live555,
1623   [AS_HELP_STRING([--enable-live555],
1624     [enable RTSP input through live555 (default enabled)])])
1625
1626 AS_IF([test "${enable_live555}" != "no" -a -n "${CXX}"], [
1627   PKG_CHECK_MODULES(LIVE555, live555, [
1628     VLC_ADD_PLUGIN([live555])
1629     VLC_ADD_CXXFLAGS([live555], [$LIVE555_CFLAGS])
1630     VLC_ADD_LIBS([live555],[$LIVE555_LIBS])
1631   ], [
1632     AC_MSG_WARN([${LIVE555_PKG_ERRORS}.])
1633
1634     AC_LANG_PUSH(C++)
1635     VLC_SAVE_FLAGS
1636
1637     dnl detect include paths
1638     AS_IF([test -f "${CONTRIB_DIR}/include/UsageEnvironment.hh"], [
1639       CPPFLAGS_live555="-I${CONTRIB_DIR}/include/liveMedia -I${CONTRIB_DIR}/include/groupsock -I${CONTRIB_DIR}/include/BasicUsageEnvironment -I${CONTRIB_DIR}/include/UsageEnvironment"
1640     ], [
1641       AS_IF([test "${SYS}" != "os2"], [
1642         LIVE555_PREFIX=${LIVE555_PREFIX-"/usr"}
1643         CPPFLAGS_live555="-I${LIVE555_PREFIX}/include/liveMedia -I${LIVE555_PREFIX}/include/groupsock -I${LIVE555_PREFIX}/include/BasicUsageEnvironment -I${LIVE555_PREFIX}/include/UsageEnvironment"
1644       ], [
1645         LIVE555_PREFIX=${LIVE555_PREFIX-"/usr/lib/live"}
1646         CPPFLAGS_live555="-I${LIVE555_PREFIX}/liveMedia/include -I${LIVE555_PREFIX}/groupsock/include -I${LIVE555_PREFIX}/BasicUsageEnvironment/include -I${LIVE555_PREFIX}/UsageEnvironment/include"
1647         LDFLAGS_live555="-L${LIVE555_PREFIX}/liveMedia -L${LIVE555_PREFIX}/groupsock -L${LIVE555_PREFIX}/BasicUsageEnvironment -L${LIVE555_PREFIX}/UsageEnvironment"
1648       ])
1649     ])
1650
1651     dnl CPP Flags
1652     AS_IF([test "${SYS}" = "solaris"], [
1653       CPPFLAGS_live555="${CPPFLAGS_live555} -DSOLARIS"
1654     ])
1655     CPPFLAGS="${CPPFLAGS} ${CPPFLAGS_live555}"
1656     LDFLAGS="${LDFLAGS} ${LDFLAGS_live555}"
1657
1658     dnl version check
1659     AC_CACHE_CHECK([for live555 version 1324598400 or later], [ac_cv_live555], [
1660       AC_PREPROC_IFELSE([AC_LANG_PROGRAM([
1661 [#include <liveMedia_version.hh>
1662 #if !defined (LIVEMEDIA_LIBRARY_VERSION_INT) || (LIVEMEDIA_LIBRARY_VERSION_INT < 1324598400)
1663 # error BOOM
1664 #endif]])
1665       ], [
1666         ac_cv_live555="yes"
1667       ], [
1668         ac_cv_live555="no"
1669       ])
1670     ])
1671
1672     AS_IF([test "$ac_cv_live555" = "no"], [
1673       AC_MSG_WARN([live555 is missing or its installed version is too old:
1674 Version 2011.12.23 or later is required to proceed.
1675 You can get an updated one from http://www.live555.com/liveMedia .])
1676       AS_IF([test -n "${enable_live555}"], [
1677         AC_MSG_ERROR([Update live555 or pass --disable-live555 to disable RTSP input support.])
1678       ])
1679     ], [
1680       other_libs="-lgroupsock -lBasicUsageEnvironment -lUsageEnvironment"
1681       other_libs_pic="-lgroupsock_pic -lBasicUsageEnvironment_pic -lUsageEnvironment_pic"
1682       AS_IF([test "${SYS}" = "mingw32"], [
1683         # add ws2_32 for closesocket, select, recv
1684         other_libs="$other_libs -lws2_32"
1685       ])
1686
1687       dnl We need to check for pic because live555 don't provide shared libs
1688       dnl and we want to build a plugins so we need -fPIC on some arch.
1689       VLC_ADD_CXXFLAGS([live555], [${CPPFLAGS_live555}])
1690       VLC_ADD_LDFLAGS([live555], [${LDFLAGS_live555}])
1691       AC_CHECK_LIB(liveMedia_pic, main, [
1692         VLC_ADD_PLUGIN([live555])
1693         VLC_ADD_LIBS([live555], [-lliveMedia_pic ${other_libs_pic}])
1694       ],[
1695         AC_CHECK_LIB(liveMedia, main, [
1696           VLC_ADD_PLUGIN([live555])
1697           VLC_ADD_LIBS([live555], [-lliveMedia ${other_libs}])
1698         ],[],[${other_libs}])
1699       ],[${other_libs_pic}])
1700     ])
1701     VLC_RESTORE_FLAGS
1702     AC_LANG_POP(C++)
1703   ])
1704 ])
1705
1706 dnl
1707 dnl IIDC and DV FireWire input modules
1708 dnl
1709 PKG_ENABLE_MODULES_VLC([DC1394], [], [libdc1394-2 >= 2.1.0], [IIDC FireWire input module], [auto])
1710 PKG_ENABLE_MODULES_VLC([DV1394], [], [libraw1394 >= 2.0.1 libavc1394 >= 0.5.3], [DV FireWire input module], [auto])
1711
1712 dnl
1713 dnl - linsys modules: access module check for libzvbi
1714 dnl
1715 AC_ARG_ENABLE(linsys,
1716   [AS_HELP_STRING([--enable-linsys],
1717     [Linux Linear Systems Ltd. SDI and HD-SDI input cards (default enabled)])])
1718 AS_IF([test "$SYS" = "linux" -a "${enable_linsys}" != "no"], [
1719   VLC_ADD_PLUGIN([linsys_hdsdi])
1720   PKG_CHECK_MODULES(LINSYS_SDI, [zvbi-0.2 >= 0.2.28], [
1721     VLC_ADD_PLUGIN([linsys_sdi])
1722   ], [
1723     AC_MSG_WARN([${LINSYS_SDI_PKG_ERRORS}.])
1724   ])
1725 ])
1726
1727 dnl
1728 dnl dvdread module: check for libdvdread
1729 dnl
1730 PKG_ENABLE_MODULES_VLC([DVDREAD], [], [dvdread > 4.9.0], [dvdread input module], [auto])
1731
1732 dnl
1733 dnl libdvdnav plugin
1734 dnl
1735 PKG_ENABLE_MODULES_VLC([DVDNAV], [], [dvdnav > 4.9.0], [DVD with navigation input module (dvdnav)], [auto])
1736
1737 dnl
1738 dnl  Blu-ray Disc Support with libbluray
1739 dnl
1740 PKG_ENABLE_MODULES_VLC([BLURAY], [libbluray], [libbluray >= 0.5.0], (libbluray for Blu-ray disc support ) )
1741
1742 dnl
1743 dnl  OpenCV wrapper and example filters
1744 dnl
1745 PKG_ENABLE_MODULES_VLC([OPENCV], [opencv_example opencv_wrapper], [opencv > 2.0], (OpenCV (computer vision) filter), [auto])
1746
1747
1748 dnl
1749 dnl  libsmbclient plugin
1750 dnl
1751 PKG_ENABLE_MODULES_VLC([SMBCLIENT], [smb], [smbclient], (SMB/CIFS support), [auto])
1752 AS_IF([test "${SYS}" = "mingw32"], [ VLC_ADD_PLUGIN([access_smb]) ])
1753
1754 dnl
1755 dnl  liBDSM access module
1756 dnl
1757 PKG_ENABLE_MODULES_VLC([DSM], [dsm], [libdsm >= 0.0.4], [libdsm SMB/CIFS access/sd module], [auto])
1758
1759 dnl
1760 dnl sftp access support
1761 dnl
1762 PKG_ENABLE_MODULES_VLC([SFTP], [sftp], [libssh2], (support SFTP file transfer via libssh2), [auto])
1763
1764 dnl
1765 dnl  Video4Linux 2
1766 dnl
1767 AC_ARG_ENABLE(v4l2, [AS_HELP_STRING([--disable-v4l2],
1768   [disable Video4Linux version 2 (default auto)])])
1769 have_v4l2="no"
1770 AS_IF([test "$enable_v4l2" != "no"], [
1771   AC_CHECK_HEADERS([linux/videodev2.h sys/videoio.h], [
1772     have_v4l2="yes"
1773   ])
1774 ])
1775 AM_CONDITIONAL(HAVE_V4L2, [test "${have_v4l2}" != "no"])
1776
1777 dnl
1778 dnl special access module for Blackmagic SDI cards
1779 dnl
1780 AC_ARG_ENABLE(decklink,
1781   [AS_HELP_STRING([--disable-decklink],
1782     [disable Blackmagic DeckLink SDI input (default auto)])])
1783 AC_ARG_WITH(decklink_sdk,
1784   [AS_HELP_STRING[--with-decklink-sdk=DIR],
1785     [                        location of Blackmagic DeckLink SDI SDK])])
1786 have_decklink=no
1787 if test "${enable_decklink}" != "no"
1788 then
1789   if test "${with_decklink_sdk}" != "no" -a -n "${with_decklink_sdk}"
1790   then
1791     VLC_ADD_CPPFLAGS([decklink decklinkoutput],[-I${with_decklink_sdk}/include])
1792   fi
1793   VLC_SAVE_FLAGS
1794   CPPFLAGS="${CPPFLAGS} ${CPPFLAGS_decklink}"
1795   AC_LANG_PUSH(C++)
1796   AC_CHECK_HEADERS(DeckLinkAPIDispatch.cpp, [
1797       have_decklink=yes
1798   ], [
1799       AC_MSG_WARN(Blackmagic DeckLink SDI include files not found, decklink disabled)
1800   ])
1801   AC_LANG_POP(C++)
1802   VLC_RESTORE_FLAGS
1803 fi
1804 AM_CONDITIONAL(HAVE_DECKLINK, [ test "${have_decklink}" != "no" ])
1805
1806
1807 dnl
1808 dnl  gnomeVFS access module
1809 dnl
1810 PKG_ENABLE_MODULES_VLC([GNOMEVFS], [gnomevfs], [gnome-vfs-2.0], [GnomeVFS access module], [auto])
1811
1812 dnl
1813 dnl  VCDX modules
1814 dnl
1815 PKG_ENABLE_MODULES_VLC([VCDX], [vcdx], [libcdio >= 0.78.2 libiso9660 >= 0.72 libvcdinfo >= 0.7.22], [navigate VCD with libvcdinfo], [no])
1816
1817 dnl
1818 dnl  Built-in CD-DA and VCD module
1819 dnl
1820 AC_ARG_ENABLE(vcd,
1821   [AS_HELP_STRING([--disable-vcd],
1822     [disable built-in VCD and CD-DA support (default enabled)])])
1823
1824 AC_ARG_ENABLE(libcddb,
1825   [AS_HELP_STRING([--disable-libcddb],
1826     [disable CDDB for Audio CD (default enabled)])])
1827
1828 if test "${enable_vcd}" != "no"
1829 then
1830   AC_MSG_CHECKING(for cdrom_msf0 in linux/cdrom.h)
1831   AC_EGREP_HEADER(cdrom_msf0,linux/cdrom.h,[
1832     AC_MSG_RESULT(yes)
1833     VLC_ADD_PLUGIN([vcd cdda])
1834   ],[
1835     AC_MSG_RESULT(no)
1836   ])
1837
1838   AC_MSG_CHECKING(for scsireq in sys/scsiio.h)
1839   AC_EGREP_HEADER(scsireq,sys/scsiio.h,[
1840     AC_MSG_RESULT(yes)
1841     VLC_ADD_PLUGIN([vcd cdda])
1842     AC_DEFINE(HAVE_SCSIREQ_IN_SYS_SCSIIO_H, 1, For NetBSD VCD support)
1843   ],[
1844     AC_MSG_RESULT(no)
1845   ])
1846
1847   AC_MSG_CHECKING(for ioc_toc_header in sys/cdio.h)
1848   AC_EGREP_HEADER(ioc_toc_header ,sys/cdio.h,[
1849     AC_MSG_RESULT(yes)
1850     VLC_ADD_PLUGIN([vcd cdda])
1851     AC_DEFINE(HAVE_IOC_TOC_HEADER_IN_SYS_CDIO_H, 1, For FreeBSD VCD support)
1852   ],[
1853     AC_MSG_RESULT(no)
1854   ])
1855
1856   if test "${SYS}" = "bsdi" -o "${SYS}" = "mingw32" -o "${SYS}" = "os2" -o "${SYS}" = "darwin"
1857   then
1858     VLC_ADD_PLUGIN([vcd cdda])
1859   fi
1860
1861   if test "$enable_libcddb" != "no"; then
1862     PKG_CHECK_MODULES(LIBCDDB, [libcddb >= 0.9.5], [
1863       HAVE_LIBCDDB=yes
1864       AC_DEFINE(HAVE_LIBCDDB, 1, [Define this if you have libcddb installed])
1865       VLC_ADD_LIBS([cdda],[$LIBCDDB_LIBS])
1866       VLC_ADD_CFLAGS([cdda],[$LIBCDDB_CFLAGS])
1867       ],:
1868       [AC_MSG_WARN([${LIBCDDB_PKG_ERRORS}: CDDB access disabled.])
1869       HAVE_LIBCDDB=no])
1870   fi
1871 fi
1872
1873 dnl
1874 dnl Linux DVB
1875 dnl
1876 AC_CACHE_CHECK([for Linux DVB version 5.1], [ac_cv_linux_dvb_5_1], [
1877   AC_PREPROC_IFELSE([AC_LANG_PROGRAM([
1878 [#include <linux/dvb/version.h>
1879 #if (DVB_API_VERSION < 5)
1880 # error Linux DVB API v3.2 and older are not supported.
1881 #endif
1882 #if (DVB_API_VERSION == 5 && DVB_API_VERSION_MINOR < 1)
1883 # error Linux DVB API v5.0 is unsupported. Please update.
1884 #endif
1885 ]])], [
1886   ac_cv_linux_dvb_5_1=yes
1887 ], [
1888   ac_cv_linux_dvb_5_1=no
1889 ])])
1890 AM_CONDITIONAL([HAVE_LINUX_DVB], [test "$ac_cv_linux_dvb_5_1" = "yes"])
1891
1892 dnl
1893 dnl  Screen capture module
1894 dnl
1895 AC_ARG_ENABLE(screen,
1896   [AS_HELP_STRING([--enable-screen],
1897     [disable screen capture (default enabled)])])
1898 if test "${enable_screen}" != "no"; then
1899   if test "${SYS}" = "darwin"; then
1900     AC_CHECK_HEADERS(ApplicationServices/ApplicationServices.h, [
1901       VLC_ADD_PLUGIN([screen])
1902     ])
1903   fi
1904 fi
1905 AM_CONDITIONAL(HAVE_MAC_SCREEN, [test "${SYS}" = "darwin" -a "x${enable_screen}" != "xno"])
1906
1907 dnl
1908 dnl  VNC/RFB access module
1909 dnl
1910 PKG_ENABLE_MODULES_VLC([VNC], [vnc], [libvncclient >= 0.9.9], (VNC/rfb client support), [auto])
1911
1912 dnl  RDP/Remote Desktop access module
1913 dnl
1914 PKG_ENABLE_MODULES_VLC([FREERDP], [rdp], [freerdp >= 1.0.1], (RDP/Remote Desktop client support) )
1915
1916 dnl
1917 dnl  Real RTSP plugin
1918 dnl
1919 AC_ARG_ENABLE(realrtsp,
1920   [  --enable-realrtsp       Real RTSP module (default disabled)])
1921 if test "${enable_realrtsp}" = "yes"; then
1922   VLC_ADD_PLUGIN([access_realrtsp])
1923 fi
1924
1925 dnl
1926 dnl MacOS eyeTV
1927 AC_ARG_ENABLE(macosx-eyetv,
1928   [  --enable-macosx-eyetv   Mac OS X EyeTV (TNT Tuner) module (default enabled on Mac OS X)])
1929 if test "x${enable_macosx_eyetv}" != "xno" &&
1930   (test "${SYS}" = "darwin" || test "${enable_macosx_eyetv}" = "yes")
1931 then
1932   VLC_ADD_PLUGIN([access_eyetv])
1933 fi
1934
1935 dnl
1936 dnl QTKit
1937 AC_ARG_ENABLE(macosx-qtkit,
1938   [  --enable-macosx-qtkit Mac OS X qtcapture (video) and qtsound (audio) module (default enabled on Mac OS X)])
1939 if test "x${enable_macosx_qtkit}" != "xno" &&
1940   (test "${SYS}" = "darwin" || test "${enable_macosx_qtkit}" = "yes")
1941 then
1942   VLC_ADD_PLUGIN([qtcapture])
1943   VLC_ADD_PLUGIN([qtsound])
1944 fi
1945 AM_CONDITIONAL(HAVE_QTKIT, [test "${SYS}" = "darwin" -a "x${enable_macosx_qtkit}" != "xno"])
1946
1947 dnl
1948 dnl AVFoundation
1949 AC_SUBST(have_avfoundation, ["no"])
1950 AC_ARG_ENABLE(macosx-avfoundation,
1951   [  --enable-macosx-avfoundation Mac OS X avcapture (video) module (default enabled on Mac OS X)])
1952 if test "x${enable_macosx_avfoundation}" != "xno" &&
1953   (test "${SYS}" = "darwin" || test "${enable_macosx_avfoundation}" = "yes")
1954 then
1955   SAVED_LIBS="${LIBS}"
1956   LIBS="-framework AVFoundation"
1957   AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [])],[have_avfoundation=yes],[have_avfoundation=no])
1958   LIBS="${SAVED_LIBS}"
1959   if test "${have_avfoundation}" != "no"
1960   then
1961     VLC_ADD_PLUGIN([avcapture])
1962   fi
1963 fi
1964 AM_CONDITIONAL(HAVE_AVFOUNDATION, [test "${have_avfoundation}" != "no"])
1965
1966 dnl
1967 dnl  DCP plugin (using asdcplib)
1968 dnl
1969 PKG_WITH_MODULES([ASDCP], [asdcplib], [have_asdcp="yes"])
1970 AM_CONDITIONAL(HAVE_ASDCP, [test "${have_asdcp}" = "yes"])
1971
1972 dnl
1973 dnl  Demux plugins
1974 dnl
1975
1976 EXTEND_HELP_STRING([Mux/Demux plugins:])
1977
1978 dnl
1979 dnl  libdvbpsi check for ts mux/demux
1980 dnl
1981 have_dvbpsi="no"
1982 PKG_WITH_MODULES([DVBPSI], [libdvbpsi], [have_dvbpsi="yes"])
1983 AM_CONDITIONAL(HAVE_DVBPSI, [test "${have_dvbpsi}" = "yes"])
1984
1985
1986 dnl
1987 dnl  GME demux plugin
1988 dnl
1989 AC_ARG_ENABLE(gme,
1990   [AS_HELP_STRING([--enable-gme],
1991     [use Game Music Emu (default auto)])])
1992 AS_IF([test "${enable_gme}" != "no"], [
1993   AC_CHECK_HEADER([gme/gme.h], [
1994     VLC_ADD_LIBS([gme], [-lgme])
1995     VLC_ADD_PLUGIN([gme])
1996   ], [
1997     AS_IF([test "x${enable_gme}" != "x"], [
1998       AC_MSG_ERROR([GME cannot be found. Please install the development files.])
1999     ])
2000   ])
2001 ])
2002
2003
2004 dnl
2005 dnl  SIDPlay plugin
2006 dnl
2007 AC_ARG_ENABLE(sid,
2008     [AS_HELP_STRING([--enable-sid],[C64 sid demux support (default auto)])])
2009 AS_IF([test "${enable_sid}" != "no"], [
2010     PKG_CHECK_MODULES(SID, [libsidplay2], [
2011         AC_LANG_PUSH(C++)
2012         oldCPPFLAGS="$CPPFLAGS"
2013         CPPFLAGS="$CPPFLAGS $SID_CFLAGS"
2014         AC_CHECK_HEADER([sidplay/builders/resid.h], [
2015             VLC_ADD_PLUGIN([sid])
2016             VLC_ADD_CFLAGS([sid], [$SID_CFLAGS])
2017             VLC_ADD_LIBS([sid], [$SID_LIBS] [-lresid-builder])
2018         ], [
2019             AS_IF([test -n "${enable_sid}"],
2020                 [AC_MSG_ERROR([${SID_PKG_ERRORS} (required for sid).])],
2021                 [AC_MSG_WARN([${SID_PKG_ERRORS} (required for sid).])]
2022                 )
2023         ])
2024         CPPFLAGS="$oldCPPFLAGS"
2025         AC_LANG_POP(C++)
2026     ], [
2027         AS_IF([test "x${enable_sid}" = "xyes"],
2028             [AC_MSG_ERROR([${SID_PKG_ERRORS} (required for sid).])],
2029             [AC_MSG_WARN([${SID_PKG_ERRORS} (required for sid).])]
2030             )
2031     ])
2032 ])
2033
2034
2035 dnl
2036 dnl  ogg demux plugin
2037 dnl
2038 PKG_ENABLE_MODULES_VLC([OGG], [], [ogg >= 1.0], [Ogg demux support], [auto])
2039 PKG_CHECK_MODULES(LIBVORBIS, [vorbis >= 1.1], [
2040     AC_DEFINE(HAVE_LIBVORBIS, 1, [Define to 1 if you have the libvorbis])
2041 ],[true])
2042 PKG_ENABLE_MODULES_VLC([OGG], [], [ogg >= 1.0], [Ogg demux support], [auto], [${LIBVORBIS_CFLAGS}], [${LIBVORBIS_LIBS}])
2043 if test "${enable_sout}" != "no"; then
2044     PKG_ENABLE_MODULES_VLC([MUX_OGG], [], [ogg >= 1.0], [Ogg mux support], [auto])
2045 dnl Check for libshout
2046     PKG_ENABLE_MODULES_VLC([SHOUT], [access_output_shout], [shout >= 2.1], [libshout output plugin], [auto])
2047 fi
2048
2049 dnl
2050 dnl  matroska demux plugin
2051 dnl
2052 AC_ARG_ENABLE(mkv,
2053   [AS_HELP_STRING([--disable-mkv],
2054     [do not use libmatroska (default auto)])])
2055 if test "${enable_mkv}" != "no" -a "${CXX}" != ""; then
2056   AC_LANG_PUSH(C++)
2057   AC_CHECK_HEADERS(ebml/EbmlVersion.h, [
2058     AC_MSG_CHECKING(for libebml version >= 1.0.0)
2059     AC_EGREP_CPP(yes,
2060       [#include <ebml/EbmlVersion.h>
2061        #ifdef LIBEBML_VERSION
2062        #if LIBEBML_VERSION >= 0x010000
2063        yes
2064        #endif
2065        #endif],
2066       [AC_MSG_RESULT([yes])
2067         AC_CHECK_HEADERS(matroska/KaxVersion.h, [
2068           AC_MSG_CHECKING(for libmatroska version >= 1.0.0)
2069           AC_EGREP_CPP(yes,
2070             [#include <matroska/KaxVersion.h>
2071              #ifdef LIBMATROSKA_VERSION
2072              #if LIBMATROSKA_VERSION >= 0x010000
2073              yes
2074              #endif
2075              #endif],
2076             [AC_MSG_RESULT([yes])
2077               AC_CHECK_HEADERS(matroska/KaxAttachments.h)
2078               AC_CHECK_LIB(ebml_pic, main, [
2079                 VLC_ADD_PLUGIN([mkv])
2080                 VLC_ADD_LIBS([mkv],[-lmatroska -lebml_pic])
2081               ],[
2082                 AC_CHECK_LIB(ebml, main, [
2083                   VLC_ADD_PLUGIN([mkv])
2084                   VLC_ADD_LIBS([mkv],[-lmatroska -lebml])
2085                 ])
2086               ])
2087             ], [
2088               AC_MSG_RESULT([no])
2089               AC_MSG_ERROR([Your libmatroska is too old: you may get a more recent one from http://dl.matroska.org/downloads/libmatroska/. Alternatively you can use --disable-mkv to disable the matroska plugin.])
2090           ])
2091         ])
2092       ],
2093       [AC_MSG_RESULT([no])
2094         AC_MSG_ERROR([Your libebml is too old: you may get a more recent one from http://dl.matroska.org/downloads/libebml/. Alternatively you can use --disable-mkv to disable the matroska plugin.])
2095     ])
2096   ])
2097   AC_LANG_POP(C++)
2098 fi
2099
2100 dnl
2101 dnl  modplug demux plugin
2102 dnl
2103 AC_ARG_ENABLE(mod,
2104   [AS_HELP_STRING([--disable-mod],
2105     [do not use libmodplug (default auto)])])
2106 if test "${enable_mod}" != "no" ; then
2107     PKG_CHECK_MODULES(LIBMODPLUG, [libmodplug >= 0.8.4 libmodplug != 0.8.8], [
2108           VLC_ADD_PLUGIN([mod])
2109           VLC_ADD_CXXFLAGS([mod],[$LIBMODPLUG_CFLAGS])
2110           VLC_ADD_CFLAGS([mod],[$LIBMODPLUG_CFLAGS]) #modules/demux/mod.c needs CFLAGS_mod, not CXXFLAGS_mod
2111           VLC_ADD_LIBS([mod],[$LIBMODPLUG_LIBS])
2112     ],[
2113        AS_IF([test -n "${enable_mod}"],
2114          [AC_MSG_ERROR([${LIBMODPLUG_PKG_ERRORS}.])],
2115          [AC_MSG_WARN([${LIBMODPLUG_PKG_ERRORS}.])])
2116     ])
2117 fi
2118
2119 dnl
2120 dnl  mpc demux plugin
2121 dnl
2122 AC_ARG_ENABLE(mpc,
2123   [AS_HELP_STRING([--disable-mpc], [do not use libmpcdec (default auto)])])
2124 if test "${enable_mpc}" != "no"
2125 then
2126   AC_CHECK_HEADERS([mpc/mpcdec.h], [
2127     VLC_ADD_PLUGIN([mpc])
2128     VLC_ADD_LIBS([mpc],[-lmpcdec])],
2129     [AC_CHECK_HEADERS([mpcdec/mpcdec.h], [
2130     VLC_ADD_PLUGIN([mpc])
2131     VLC_ADD_LIBS([mpc],[-lmpcdec])])])
2132 fi
2133
2134 dnl
2135 dnl  Codec plugins
2136 dnl
2137
2138 EXTEND_HELP_STRING([Codec plugins:])
2139
2140 dnl
2141 dnl wmafixed plugin
2142 dnl
2143 AC_ARG_ENABLE(wma-fixed,
2144   [  --enable-wma-fixed      libwma-fixed module (default disabled)])
2145 if test "${enable_wma_fixed}" = "yes"
2146 then
2147   VLC_ADD_PLUGIN([wma_fixed])
2148 fi
2149
2150 dnl
2151 dnl shine encoder plugin
2152 dnl
2153 PKG_ENABLE_MODULES_VLC([SHINE], [], [shine >= 3.0.0], [MPEG Audio Layer 3 encoder], [auto], [], [], [])
2154
2155
2156 dnl
2157 dnl openmax il codec plugin
2158 dnl
2159 AC_ARG_ENABLE(omxil,
2160   [  --enable-omxil          openmax il codec module (default disabled)])
2161 if test "${enable_omxil}" = "yes"
2162 then
2163   VLC_ADD_PLUGIN([omxil])
2164 fi
2165
2166 dnl
2167 dnl openmax il vout plugin
2168 dnl
2169 AC_ARG_ENABLE(omxil-vout,
2170   [  --enable-omxil-vout     openmax il video output module (default disabled)])
2171 if test "${enable_omxil_vout}" = "yes"
2172 then
2173   VLC_ADD_PLUGIN([omxil_vout])
2174 fi
2175
2176 dnl
2177 dnl raspberry pi openmax il configuration
2178 dnl
2179 AC_ARG_ENABLE(rpi-omxil,
2180   [  --enable-rpi-omxil     openmax il configured for raspberry pi (default disabled)])
2181 if test "${enable_rpi_omxil}" = "yes"
2182 then
2183   VLC_ADD_PLUGIN([omxil omxil_vout])
2184   VLC_ADD_CFLAGS([omxil omxil_vout],[-DRPI_OMX])
2185 fi
2186
2187 dnl
2188 dnl CrystalHD codec plugin
2189 dnl
2190 AC_ARG_ENABLE(crystalhd,
2191   [  --enable-crystalhd      crystalhd codec plugin (default auto)])
2192 if test "${enable_crystalhd}" != "no"; then
2193     AC_CHECK_HEADER(libcrystalhd/libcrystalhd_if.h, [
2194       VLC_ADD_PLUGIN([crystalhd])
2195       VLC_ADD_LIBS([crystalhd], [-lcrystalhd])
2196     ],[
2197       if test "${SYS}" = "mingw32" ; then
2198         AC_CHECK_HEADERS(libcrystalhd/bc_dts_defs.h, [
2199           VLC_ADD_PLUGIN([crystalhd])
2200           AC_CHECK_HEADERS(libcrystalhd/bc_drv_if.h, [
2201             VLC_ADD_LIBS([crystalhd], [-lbcmDIL])
2202             ])
2203         ],[
2204           AS_IF([test x"${enable_crystalhd}" = "xyes"],
2205                 [AC_MSG_ERROR("Could not find CrystalHD development headers")],
2206                 [AC_MSG_WARN("Could not find CrystalHD development headers")])
2207         ],[#define __LINUX_USER__
2208                #include <libcrystalhd/bc_dts_types.h>
2209         ])
2210       fi
2211     ],[
2212        #include <libcrystalhd/bc_dts_types.h>
2213       ])
2214 fi
2215
2216 dnl
2217 dnl  mad plugin
2218 dnl
2219 have_mad="no"
2220 MAD_CFLAGS=""
2221 MAD_LIBS=""
2222
2223 AC_ARG_WITH(mad, [  --with-mad=PATH         path to libmad], [
2224   enable_mad="yes"
2225 ], [
2226   with_mad="no"
2227 ])
2228 AS_IF([test "${with_mad}" != "no"], [
2229   MAD_CFLAGS="-I${with_mad}/include"
2230   MAD_LIBS="-L${with_mad}/lib"
2231 ])
2232
2233 AC_ARG_ENABLE(mad,
2234   [  --enable-mad            libmad module (default enabled)])
2235 AS_IF([test "${enable_mad}" != "no"], [
2236   VLC_SAVE_FLAGS
2237   CPPFLAGS="${CPPFLAGS} ${MAD_CFLAGS}"
2238   LDFLAGS="${LDFLAGS} ${MAD_LIBS}"
2239   AC_CHECK_HEADERS(mad.h, [
2240     AC_CHECK_LIB(mad, mad_bit_init, [
2241       have_mad="yes"
2242       MAD_LIBS="${MAD_LIBS} -lmad"
2243     ])
2244   ])
2245   VLC_RESTORE_FLAGS
2246   AS_IF([test -n "$enable_mad" -a "${have_mad}" = "no"], [
2247     AC_MSG_ERROR([Could not find libmad. Install it or pass --disable-mad to disable it.])
2248   ])
2249 ])
2250 AC_SUBST(MAD_CFLAGS)
2251 AC_SUBST(MAD_LIBS)
2252 AM_CONDITIONAL([HAVE_MAD], [test "${have_mad}" = "yes"])
2253
2254 dnl  mpg123 plugin
2255 dnl
2256 dnl
2257 PKG_ENABLE_MODULES_VLC([MPG123], [mpg123], [libmpg123], [libmpg123 decoder support], [auto])
2258
2259
2260 AC_ARG_ENABLE(merge-ffmpeg,
2261 [  --enable-merge-ffmpeg   merge FFmpeg-based plugins (default disabled)],, [
2262   enable_merge_ffmpeg="no"
2263 ])
2264 AM_CONDITIONAL([MERGE_FFMPEG], [test "$enable_merge_ffmpeg" != "no"])
2265
2266 AC_MSG_CHECKING([for libavutil variant])
2267 PKG_CHECK_EXISTS([libavutil], [
2268   libavutil_version="$(${PKG_CONFIG} --modversion libavutil)"
2269   libavutil_micro="${libavutil_version##*.}"
2270   AS_IF([test ${libavutil_micro} -le 99], [
2271     avfork="libav"
2272   ], [
2273     avfork="ffmpeg"
2274   ])
2275 ], [
2276   avfork="none"
2277 ])
2278 AC_MSG_RESULT([${avfork}])
2279
2280 dnl
2281 dnl gstreamer stuff
2282 dnl
2283 AC_ARG_ENABLE(gst-decode,
2284   [  --enable-gst-decode     GStreamer based decoding support (currently supports only video decoding) (default auto)])
2285
2286 have_gst_decode="no"
2287 AS_IF([test "${enable_gst_decode}" != "no"], [
2288   PKG_CHECK_MODULES([GST_APP], [gstreamer-app-1.0], [
2289     PKG_CHECK_MODULES([GST_VIDEO], [gstreamer-video-1.0], [
2290       have_gst_decode="yes"
2291     ], [
2292       AC_MSG_WARN([${GST_VIDEO_PKG_ERRORS}. GStreamer decoder module will not be built.])
2293     ])
2294   ], [
2295     AC_MSG_WARN([${GST_APP_PKG_ERRORS}. GStreamer modules will not be built.])
2296   ])
2297 ])
2298 AM_CONDITIONAL([HAVE_GST_DECODE], [test "${have_gst_decode}" = "yes"])
2299
2300 dnl
2301 dnl  avcodec decoder/encoder plugin
2302 dnl
2303 AC_ARG_ENABLE(avcodec,
2304 [  --enable-avcodec        libavcodec codec (default enabled)])
2305 AS_IF([test "${enable_avcodec}" != "no"], [
2306   PKG_CHECK_MODULES(AVCODEC,[libavcodec >= 54.25.0 libavutil >= 52.0.0], [
2307     dnl PKG_CHECK_EXISTS([libavcodec < 56],, [
2308     dnl   AC_MSG_ERROR([libavcodec versions 56 and later are not supported yet.])
2309     dnl ])
2310     VLC_SAVE_FLAGS
2311     CPPFLAGS="${CPPFLAGS} ${AVCODEC_CFLAGS}"
2312     CFLAGS="${CFLAGS} ${AVCODEC_CFLAGS}"
2313     AC_CHECK_HEADERS(libavcodec/avcodec.h)
2314     AC_CHECK_HEADERS(libavutil/avutil.h)
2315     VLC_RESTORE_FLAGS
2316     have_avcodec="yes"
2317   ],[
2318     AC_MSG_ERROR([${AVCODEC_PKG_ERRORS}. Pass --disable-avcodec to ignore this error.])
2319   ])
2320 ], [
2321   have_avcodec="no"
2322 ])
2323 AM_CONDITIONAL([HAVE_AVCODEC], [test "${have_avcodec}" != "no"])
2324
2325 dnl
2326 dnl libva needs avcodec
2327 dnl
2328 AC_ARG_ENABLE(libva,
2329   [  --enable-libva          VAAPI GPU decoding support (libVA) (default auto)])
2330
2331 AS_IF([test "${enable_libva}" = "yes" -a "${have_avcodec}" != "yes" ], [
2332   AC_MSG_ERROR([--enable-libva and --disable-avcodec options are mutually exclusive. Use --enable-avcodec.])
2333 ])
2334
2335 have_vaapi="no"
2336 have_vaapi_drm="no"
2337 have_vaapi_x11="no"
2338 AS_IF([test "${enable_libva}" != "no"], [
2339   PKG_CHECK_EXISTS([libva], [
2340     have_vaapi="yes"
2341   ], [
2342     AS_IF([test -n "${enable_libva}"], [
2343       AC_MSG_ERROR([${LIBVA_PKG_ERRORS}.])
2344     ], [
2345       AC_MSG_WARN([${LIBVA_PKG_ERRORS}.])
2346     ])
2347   ])
2348   PKG_CHECK_MODULES([LIBVA_DRM], [libva-drm], [
2349     have_vaapi_drm="yes"
2350   ], [
2351     AC_MSG_WARN([${LIBVA_DRM_PKG_ERRORS}.])
2352   ])
2353   PKG_CHECK_MODULES(LIBVA_X11, [libva-x11], [
2354     have_vaapi_x11="yes"
2355   ], [
2356     AC_MSG_WARN([${LIBVA_X11_PKG_ERRORS}.])
2357   ])
2358 ])
2359 AM_CONDITIONAL([HAVE_VAAPI_DRM], [test "${have_vaapi_drm}" = "yes"])
2360 AM_CONDITIONAL([HAVE_VAAPI_X11], [test "${have_vaapi_x11}" = "yes"])
2361
2362 have_avcodec_vaapi="no"
2363 AS_IF([test "${have_vaapi}" = "yes" -a "${have_avcodec}" = "yes"], [
2364   VLC_SAVE_FLAGS
2365   CPPFLAGS="${CPPFLAGS} ${AVCODEC_CFLAGS}"
2366   CFLAGS="${CFLAGS} ${AVCODEC_CFLAGS}"
2367   AC_CHECK_HEADERS([libavcodec/vaapi.h], [
2368     AC_MSG_NOTICE([VAAPI acceleration activated])
2369     have_avcodec_vaapi="yes"
2370   ],[
2371     AS_IF([test -n "${enable_libva}"], [
2372       AC_MSG_ERROR([libva is present but libavcodec/vaapi.h is missing])
2373     ], [
2374       AC_MSG_WARN([libva is present but libavcodec/vaapi.h is missing ])
2375     ])
2376   ])
2377   VLC_RESTORE_FLAGS
2378 ])
2379 AM_CONDITIONAL([HAVE_AVCODEC_VAAPI], [test "${have_avcodec_vaapi}" = "yes"])
2380
2381 dnl
2382 dnl dxva2 needs avcodec
2383 dnl
2384 AC_ARG_ENABLE(dxva2,
2385   [  --enable-dxva2          DxVA2 GPU decoding support (default auto)])
2386
2387 have_avcodec_dxva2="no"
2388 AS_IF([test "${enable_dxva2}" != "no"], [
2389   if test "${SYS}" = "mingw32"; then
2390   AS_IF([test "x${have_avcodec}" = "xyes"], [
2391     AC_CHECK_HEADERS(dxva2api.h,
2392       [
2393         AC_CHECK_HEADERS(libavcodec/dxva2.h, [
2394            AC_MSG_NOTICE([DxVA2 acceleration activated])
2395            have_avcodec_dxva2="yes"
2396         ],[
2397     AS_IF([test "${enable_dxva2}" = "yes"],
2398           [AC_MSG_ERROR([dxva2 is present but libavcodec/dxva2.h is missing])],
2399               [AC_MSG_WARN([dxva2 is present but libavcodec/dxva2.h is missing ])])
2400         ], [#undef _WIN32_WINNT
2401             /* DXVA2 is only available in Vista and above */
2402             #define _WIN32_WINNT 0x600])
2403       ],[
2404     AS_IF([test "${enable_dxva2}" = "yes"],
2405               [AC_MSG_ERROR([Could not find required dxva2api.h])],
2406               [AC_MSG_WARN([dxva2api.h not found])])
2407       ])
2408   ],[
2409     AS_IF([test "x${enable_dxva2}" != "x"], [
2410       AC_MSG_ERROR([--enable-dxva2 and --disable-avcodec options are mutually exclusive.])
2411     ])
2412   ])
2413   fi
2414 ])
2415 AM_CONDITIONAL([HAVE_AVCODEC_DXVA2], [test "${have_avcodec_dxva2}" = "yes"])
2416
2417 dnl
2418 dnl vda needs avcodec
2419 dnl
2420 AC_ARG_ENABLE(vda,
2421   [  --enable-vda          VDA  support (default auto)])
2422
2423 have_avcodec_vda="no"
2424 AS_IF([test "${enable_vda}" != "no"], [
2425   if test "${SYS}" = "darwin"; then
2426   AS_IF([test "x${have_avcodec}" = "xyes"], [
2427     AC_CHECK_HEADERS(VideoDecodeAcceleration/VDADecoder.h,
2428       [
2429         AC_CHECK_HEADERS(libavcodec/vda.h, [
2430            have_avcodec_vda="yes"
2431         ],[
2432         AS_IF([test "${enable_vda}" = "yes"],
2433               [AC_MSG_ERROR([vda is present but libavcodec/vda.h is missing])],
2434               [AC_MSG_WARN([vda is present but libavcodec/vda.h is missing ])])
2435         ])
2436   ],[
2437         AS_IF([test "${enable_vda}" = "yes"],
2438               [AC_MSG_ERROR([Could not find required VideoDecodeAcceleration/VDADecoder.h])],
2439               [AC_MSG_WARN([VideoDecodeAcceleration/VDADecoder.h not found])])
2440       ])
2441   ],[
2442     AS_IF([test "x${enable_vda}" != "x"], [
2443       AC_MSG_ERROR([--enable-vda and --disable-avcodec options are mutually exclusive.])
2444     ])
2445  ])
2446  AS_IF([test "${have_avcodec_vda}" = "yes"], [
2447      SAVE_LIBS=$LIBS
2448      LIBS="$LIBS $AVCODEC_LIBS"
2449      AC_CHECK_FUNCS([av_vda_alloc_context])
2450      LIBS=$SAVE_LIBS
2451  ])
2452  fi
2453 ])
2454 AM_CONDITIONAL([HAVE_AVCODEC_VDA], [test "${have_avcodec_vda}" = "yes"])
2455
2456 dnl
2457 dnl  avformat demuxer/muxer plugin
2458 dnl
2459
2460 AC_ARG_ENABLE(avformat,
2461 [  --enable-avformat       libavformat containers (default enabled)],, [
2462   enable_avformat="${have_avcodec}"
2463 ])
2464 have_avformat="no"
2465 AS_IF([test "${enable_avformat}" != "no"], [
2466   PKG_CHECK_MODULES(AVFORMAT,[libavformat >= 53.21.0 libavcodec libavutil], [
2467       have_avformat="yes"
2468       VLC_SAVE_FLAGS
2469       CPPFLAGS="${CPPFLAGS} ${AVFORMAT_CFLAGS}"
2470       CFLAGS="${CFLAGS} ${AVFORMAT_CFLAGS}"
2471       AC_CHECK_HEADERS(libavformat/avformat.h libavformat/avio.h)
2472       AC_CHECK_HEADERS(libavcodec/avcodec.h)
2473       AC_CHECK_HEADERS(libavutil/avutil.h)
2474       AS_IF([test "$enable_merge_ffmpeg" = "no"], [
2475         have_avformat="no"
2476       ])
2477       VLC_RESTORE_FLAGS
2478     ],[
2479       AC_MSG_ERROR([${AVFORMAT_PKG_ERRORS}. Pass --disable-avformat to ignore this error.])
2480   ])
2481 ])
2482 AM_CONDITIONAL([HAVE_AVFORMAT], [test "${enable_avformat}" != "no"])
2483
2484 dnl
2485 dnl  swscale image scaling and conversion plugin
2486 dnl
2487
2488 AC_ARG_ENABLE(swscale,
2489   AS_HELP_STRING([--enable-swscale],[libswscale image scaling and conversion
2490           (default enabled)]))
2491 if test "${enable_swscale}" != "no"
2492 then
2493   PKG_CHECK_MODULES(SWSCALE,[libswscale],
2494     [
2495       VLC_SAVE_FLAGS
2496       CPPFLAGS="${CPPFLAGS} ${SWSCALE_CFLAGS}"
2497       CFLAGS="${CFLAGS} ${SWSCALE_CFLAGS}"
2498       AC_CHECK_HEADERS(libswscale/swscale.h)
2499       AC_CHECK_HEADERS(libavutil/avutil.h)
2500       VLC_ADD_PLUGIN([swscale])
2501       VLC_ADD_LIBS([swscale],[$SWSCALE_LIBS])
2502       VLC_ADD_CFLAGS([swscale],[$SWSCALE_CFLAGS])
2503       AS_IF([test -n "${ac_cv_ld_bsymbolic}"], [
2504         VLC_ADD_LIBS([swscale],[${ac_cv_ld_bsymbolic}])
2505       ])
2506       VLC_RESTORE_FLAGS
2507     ],[
2508       AC_MSG_ERROR([${SWSCALE_PKG_ERRORS}. Pass --disable-swscale to ignore this error. Proper software scaling and some video chroma conversion will be missing.])
2509   ])
2510 fi
2511
2512 dnl
2513 dnl  postproc plugin
2514 dnl
2515
2516 AC_ARG_ENABLE(postproc,
2517 [  --enable-postproc       libpostproc image post-processing (default auto)])
2518 if test "${enable_postproc}" != "no"
2519 then
2520   PKG_CHECK_MODULES(POSTPROC,[libpostproc libavutil],
2521     [
2522       VLC_SAVE_FLAGS
2523       CPPFLAGS="${CPPFLAGS} ${POSTPROC_CFLAGS}"
2524       CFLAGS="${CFLAGS} ${POSTPROC_CFLAGS}"
2525       AC_CHECK_HEADERS(postproc/postprocess.h)
2526       VLC_ADD_PLUGIN([postproc])
2527       VLC_ADD_LIBS([postproc],[$POSTPROC_LIBS $AVUTIL_LIBS])
2528       VLC_ADD_CFLAGS([postproc],[$POSTPROC_CFLAGS $AVUTIL_CFLAGS])
2529       VLC_RESTORE_FLAGS
2530     ],[
2531       AC_MSG_WARN([${POSTPROC_PKG_ERRORS}.])
2532   ])
2533 fi
2534
2535 dnl
2536 dnl  faad decoder plugin
2537 dnl
2538 AC_ARG_ENABLE(faad,
2539 [  --enable-faad           faad codec (default auto)])
2540 have_faad="no"
2541 AS_IF([test "${enable_faad}" != "no"], [
2542   AC_CHECK_HEADERS([faad.h], [
2543     AC_CHECK_LIB(faad, faacDecOpen, [have_faad="yes"],, [$LIBM])
2544     AC_CHECK_LIB(faad, NeAACDecOpen, [have_faad="yes"],, [$LIBM])
2545
2546     AS_IF([test "${have_faad}" = "yes"], [
2547       VLC_ADD_PLUGIN([faad])
2548       VLC_ADD_LIBS([faad],[-lfaad])
2549     ], [
2550       AS_IF([test "${enable_faad}" = "yes"], [
2551         AC_MSG_ERROR([cannot find FAAD library])
2552       ], [
2553         AC_MSG_WARN([cannot find FAAD library])
2554       ])
2555     ])
2556   ])
2557 ])
2558
2559 dnl
2560 dnl libvpx decoder plugin
2561 dnl
2562 AC_ARG_ENABLE(vpx,
2563     AS_HELP_STRING([--enable-vpx],[libvpx VP8/VP9 decoder (default auto)]))
2564 AS_IF([test "${enable_vpx}" != "no"],[
2565     PKG_CHECK_MODULES([VPX], [vpx] , [
2566         VLC_ADD_PLUGIN([vpx])
2567         VLC_ADD_CPPFLAGS([vpx], [${VPX_CFLAGS}])
2568         VLC_ADD_LIBS([vpx], [${VPX_LIBS}])
2569         AC_CHECK_LIB([vpx],[vpx_codec_vp8_dx], [
2570             VLC_ADD_CPPFLAGS([vpx], [-DENABLE_VP8_DECODER])
2571         ], [], [${VPX_LIBS}])
2572         AC_CHECK_LIB([vpx],[vpx_codec_vp9_dx], [
2573             VLC_ADD_CPPFLAGS([vpx], [-DENABLE_VP9_DECODER])
2574         ], [], [${VPX_LIBS}])
2575     ], [
2576     AS_IF([test "${enable_vpx}" = "yes"],[
2577         AC_MSG_ERROR([libvpx was not found])
2578     ])])
2579 ])
2580
2581 dnl
2582 dnl twolame encoder plugin
2583 dnl
2584 PKG_ENABLE_MODULES_VLC([TWOLAME], [], [twolame], [MPEG Audio Layer 2 encoder], [auto], [], [], [ -DLIBTWOLAME_STATIC])
2585
2586 dnl
2587 dnl fdk-aac encoder plugin
2588 dnl
2589 PKG_ENABLE_MODULES_VLC([FDKAAC], [], [fdk-aac], [FDK-AAC encoder], [disabled])
2590
2591 dnl
2592 dnl  QuickTime plugin
2593 dnl
2594 AC_ARG_ENABLE(quicktime,
2595   [  --enable-quicktime      QuickTime module (deprecated)])
2596 if test "${enable_quicktime}" = "yes"; then
2597   if test "${SYS}" = "mingw32"; then
2598     VLC_ADD_PLUGIN([quicktime])
2599   else
2600   AC_CHECK_HEADERS(QuickTime/QuickTime.h,
2601     [ VLC_ADD_PLUGIN([quicktime])
2602       VLC_ADD_LIBS([quicktime],[-Wl,-framework,QuickTime,-framework,Carbon])
2603     ], [ AC_MSG_ERROR([cannot find QuickTime headers]) ])
2604   fi
2605 fi
2606
2607 dnl
2608 dnl A52/AC3 decoder plugin
2609 dnl
2610 AC_ARG_ENABLE(a52,
2611   [  --enable-a52            A/52 support with liba52 (default enabled)])
2612 if test "${enable_a52}" != "no"
2613 then
2614   AC_ARG_WITH(a52,
2615     [  --with-a52=PATH         a52 headers and libraries])
2616     if test -z "${with_a52}"
2617     then
2618       LDFLAGS_test=""
2619       CPPFLAGS_test=""
2620     else
2621       LDFLAGS_test="-L${with_a52}/lib"
2622       CPPFLAGS_test="-I${with_a52}/include"
2623     fi
2624     VLC_SAVE_FLAGS
2625     CPPFLAGS="${CPPFLAGS} ${CPPFLAGS_test} ${CPPFLAGS_a52tofloat32}"
2626     LDFLAGS="${LDFLAGS} ${LDFLAGS_test} ${LIBS_a52tofloat32}"
2627     AC_CHECK_HEADERS(a52dec/a52.h, [
2628       AC_CHECK_LIB(a52, a52_free, [
2629         VLC_ADD_PLUGIN([a52tofloat32])
2630         VLC_ADD_LIBS([a52tofloat32],[${LDFLAGS_test} -la52])
2631         VLC_ADD_CPPFLAGS([a52tofloat32],[${CPPFLAGS_test}])
2632       ],[
2633         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.])
2634         ], [$LIBM])
2635     ],[
2636       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.])
2637     ])
2638     VLC_RESTORE_FLAGS
2639 fi
2640
2641 dnl
2642 dnl DTS Coherent Acoustics decoder plugin
2643 dnl
2644 PKG_ENABLE_MODULES_VLC([DCA], [dtstofloat32], [libdca >= 0.0.5], [DTS Coherent Acoustics support with libdca], [auto])
2645
2646 dnl
2647 dnl  Flac plugin
2648 dnl
2649 PKG_ENABLE_MODULES_VLC([FLAC], [], [flac], [libflac decoder/encoder support], [auto])
2650
2651 dnl
2652 dnl  Libmpeg2 plugin
2653 dnl
2654 PKG_ENABLE_MODULES_VLC([LIBMPEG2], [], [libmpeg2 > 0.3.2], [libmpeg2 decoder support], [auto])
2655
2656 dnl
2657 dnl  Vorbis plugin
2658 dnl
2659 PKG_ENABLE_MODULES_VLC([VORBIS], [], [ogg vorbis >= 1.1 vorbisenc >= 1.1], [Vorbis decoder and encoder], [auto])
2660
2661 dnl
2662 dnl  Tremor plugin
2663 dnl
2664 AC_ARG_ENABLE(tremor,
2665   [  --enable-tremor         Tremor decoder support (default disabled)])
2666 if test "${enable_tremor}" = "yes"
2667 then
2668   AC_CHECK_HEADERS(tremor/ivorbiscodec.h, [
2669     VLC_ADD_PLUGIN([tremor])
2670    ],[])
2671 fi
2672
2673 dnl
2674 dnl  Speex plugins
2675 dnl
2676 PKG_ENABLE_MODULES_VLC([SPEEX], [], [ogg speex >= 1.0.5], [Speex support], [auto])
2677 have_speexdsp="no"
2678 AS_IF([test "${enable_speex}" != "no"], [
2679   PKG_CHECK_MODULES([SPEEXDSP], [speexdsp], [
2680     have_speexdsp="yes"
2681   ], [
2682     AC_MSG_WARN([${SPEEXDSP_PKG_ERRORS}.])
2683   ])
2684 ])
2685 AM_CONDITIONAL([HAVE_SPEEXDSP], [test "$have_speexdsp" = "yes"])
2686
2687 dnl
2688 dnl  Opus plugin
2689 dnl
2690 PKG_ENABLE_MODULES_VLC([OPUS], [], [ogg opus >= 1.0.3], [Opus support], [auto])
2691
2692 dnl
2693 dnl  theora decoder plugin
2694 dnl
2695 PKG_ENABLE_MODULES_VLC([THEORA], [], [ogg theoradec >= 1.0 theoraenc], [experimental theora codec], [auto])
2696
2697 dnl
2698 dnl  Daala decoder plugin
2699 dnl
2700 PKG_ENABLE_MODULES_VLC([DAALA], [], [ogg daaladec daalaenc], [experimental daala codec], [disabled])
2701
2702 dnl
2703 dnl  schroedinger decoder plugin (for dirac format video)
2704 dnl
2705 PKG_ENABLE_MODULES_VLC([SCHROEDINGER], [], [schroedinger-1.0 >= 1.0.10], [dirac decoder and encoder using schroedinger], [auto])
2706
2707 dnl
2708 dnl  PNG decoder module
2709 dnl
2710 AC_ARG_ENABLE(png,
2711   [  --enable-png            PNG support (default enabled)])
2712 AS_IF([test "${enable_png}" != "no"], [
2713 AC_CHECK_HEADERS(png.h, [
2714   VLC_SAVE_FLAGS
2715   LDFLAGS="${LDFLAGS} -lz $LIBM"
2716   AC_CHECK_LIB(png, png_set_rows, [
2717     VLC_ADD_PLUGIN([png])
2718   ], [], [-lz $LIBM])
2719   VLC_RESTORE_FLAGS
2720   ])
2721 ])
2722
2723 dnl
2724 dnl  JPEG decoder module
2725 dnl
2726 AC_ARG_ENABLE(jpeg,
2727   [  --enable-jpeg           JPEG support (default enabled)])
2728 AS_IF([test "${enable_jpeg}" != "no"], [
2729 AC_CHECK_HEADERS(jpeglib.h, [
2730   VLC_ADD_PLUGIN([jpeg])
2731   ])
2732 ])
2733
2734 dnl
2735 dnl  BPG decoder module
2736 dnl
2737 AC_ARG_ENABLE(bpg,
2738   [  --enable-bpg           BPG support (default disabled)])
2739 AS_IF([test "${enable_bpg}" != "no"], [
2740 AC_CHECK_HEADERS(libbpg.h, [
2741   VLC_ADD_PLUGIN([bpg])
2742   ])
2743 ])
2744
2745 dnl
2746 dnl H262 encoder plugin (lib262)
2747 dnl
2748 AC_ARG_ENABLE(x262,
2749   [  --enable-x262           H262 encoding support with static libx262 (default disabled)])
2750 if test "${enable_x262}" != "no"; then
2751     PKG_CHECK_MODULES(X262, x262, [
2752         VLC_ADD_PLUGIN([x262])
2753         VLC_ADD_LDFLAGS([x262],[${X262_LIBS}])
2754         AS_IF([test -n "${ac_cv_ld_bsymbolic}"], [
2755           VLC_ADD_LIBS([x262],[${av_cv_ld_bsymbolic}])
2756         ])
2757         VLC_ADD_CFLAGS([x262],[${X262_CFLAGS}])
2758         if echo ${X262_LIBS} |grep -q 'pthreadGC2'; then
2759           VLC_ADD_CFLAGS([x262], [-DPTW32_STATIC_LIB])
2760         fi
2761     ], [
2762        if test "${enable_x262}" = "yes"; then
2763         AC_MSG_ERROR([x262 module doesn't work without staticly compiled libx262.a])
2764        fi
2765     ])
2766 fi
2767
2768 dnl x265 encoder
2769 PKG_ENABLE_MODULES_VLC([X265],, [x265], [HEVC/H.265 encoder], [auto])
2770
2771 dnl
2772 dnl H264 encoder plugin (10-bit lib264)
2773 dnl
2774 AC_ARG_ENABLE(x26410b,
2775   [  --enable-x26410b           H264 10-bit encoding support with static libx264 (default disabled)])
2776 if test "${enable_x26410b}" != "no"; then
2777     PKG_CHECK_MODULES(X26410B, x26410b, [
2778         VLC_ADD_PLUGIN([x26410b])
2779         VLC_ADD_LIBS([x26410b],[${X26410B_LIBS}])
2780         AS_IF([test -n "${ac_cv_ld_bsymbolic}"], [
2781           VLC_ADD_LDFLAGS([x26410b],[${ac_cv_ld_bsymbolic}])
2782         ])
2783         VLC_ADD_CFLAGS([x26410b],[${X26410B_CFLAGS}])
2784         if echo ${X26410B_LIBS} |grep -q 'pthreadGC2'; then
2785           VLC_ADD_CFLAGS([x26410b], [-DPTW32_STATIC_LIB])
2786         fi
2787     ], [
2788        if test "${enable_x26410b}" = "yes"; then
2789         AC_MSG_ERROR([x26410b module doesn't work without staticly compiled libx264.a])
2790        fi
2791     ])
2792 fi
2793
2794
2795 dnl
2796 dnl H264 encoder plugin (using libx264)
2797 dnl
2798 AC_ARG_ENABLE(x264,
2799   [  --enable-x264           H264 encoding support with libx264 (default enabled)])
2800 if test "${enable_x264}" != "no"; then
2801       PKG_CHECK_MODULES(X264,x264 >= 0.86, [
2802         VLC_ADD_PLUGIN([x264])
2803         VLC_ADD_LIBS([x264],[${X264_LIBS}])
2804
2805         AS_IF([test -n "${ac_cv_ld_bsymbolic}"], [
2806           VLC_ADD_LDFLAGS([x264],[${ac_cv_ld_bsymbolic}])
2807         ])
2808
2809         VLC_ADD_CFLAGS([x264],[${X264_CFLAGS}])
2810         if echo ${X264_LIBS} |grep -q 'pthreadGC2'; then
2811           VLC_ADD_CFLAGS([x264], [-DPTW32_STATIC_LIB])
2812         fi
2813       ],[
2814         if test "${enable_x264}" = "yes"; then
2815             AC_MSG_ERROR([${X264_PKG_ERRORS}: you may get it from http://www.videolan.org/x264.html])
2816           fi
2817       ])
2818 fi
2819
2820 dnl
2821 dnl Intel QuickSync (aka MediaSDK) H264/H262 encoder
2822 dnl
2823 PKG_ENABLE_MODULES_VLC([MFX], [qsv], [libmfx], [Intel QuickSync MPEG4-Part10/MPEG2 (aka H.264/H.262) encoder], [auto])
2824
2825 dnl
2826 dnl libfluidsynth (MIDI synthetizer) plugin
2827 dnl
2828 PKG_ENABLE_MODULES_VLC([FLUIDSYNTH], [], [fluidsynth >= 1.1.2], [MIDI synthetiser with libfluidsynth], [auto])
2829
2830 dnl
2831 dnl Teletext Modules
2832 dnl vbi decoder plugin (using libzbvi)
2833 dnl telx module
2834 dnl uncompatible
2835 dnl
2836 AC_ARG_ENABLE(zvbi,
2837   AS_HELP_STRING([--enable-zvbi],[VBI (inc. Teletext) decoding support with
2838                   libzvbi (default enabled)]))
2839 AC_ARG_ENABLE(telx,
2840   AS_HELP_STRING([--enable-telx],[Teletext decoding module (conflicting with
2841                   zvbi) (default enabled if zvbi is absent)]))
2842
2843 AS_IF( [test "${enable_zvbi}" != "no"],[
2844     PKG_CHECK_MODULES(ZVBI, [zvbi-0.2 >= 0.2.28],
2845         [
2846           VLC_ADD_PLUGIN([zvbi])
2847           AC_DEFINE(ZVBI_COMPILED, 1, [Define if the zvbi module is built])
2848           AS_IF( [test "${enable_telx}" = "yes"],[
2849                   AC_MSG_WARN([The zvbi and telx modules are incompatible. Using zvbi.])
2850                   ])
2851         ],[
2852           AC_MSG_WARN([${ZVBI_PKG_ERRORS}. Enabling the telx module instead.])
2853         ])
2854     ])
2855 AS_IF( [test "${enable_telx}" != "no" ],[
2856   VLC_ADD_PLUGIN([telx])
2857   ])
2858
2859 dnl
2860 dnl libass subtitle rendering module
2861 dnl
2862 AC_ARG_ENABLE(libass,
2863   [  --enable-libass         Subtitle support using libass (default enabled)])
2864 AS_IF( [test "${enable_libass}" != "no"], [
2865   PKG_CHECK_MODULES(LIBASS, [libass >= 0.9.8],
2866       [
2867         VLC_ADD_PLUGIN([libass])
2868
2869         AC_CHECK_HEADERS(fontconfig/fontconfig.h,
2870           [VLC_ADD_CPPFLAGS([libass],[-DHAVE_FONTCONFIG])
2871            VLC_ADD_LIBS([libass],[-lfontconfig])
2872        ])
2873       ],[
2874         AC_MSG_WARN([${LIBASS_PKG_ERRORS}.])
2875       ])
2876   ])
2877
2878 dnl
2879 dnl ARIB subtitles rendering module
2880 dnl
2881 AC_ARG_ENABLE(aribsub,
2882   [  --enable-aribsub        ARIB Subtitles support (default enabled)])
2883 AS_IF( [test "${enable_aribsub}" != "no" ],[
2884   PKG_CHECK_MODULES(ARIBB24, [aribb24 >= 1.0.1], [
2885       have_aribb24="yes"
2886       VLC_ADD_PLUGIN([aribsub])
2887       VLC_ADD_LIBS([aribsub],[-laribb24])
2888       AC_DEFINE(HAVE_ARIBB24, 1, [Define if libaribb24 is available.])
2889     ],[
2890       AC_MSG_WARN(Library [aribb24] needed for [aribsub] was not found)
2891       have_aribb24="no"
2892   ])
2893 ])
2894 AM_CONDITIONAL([HAVE_ARIBB24], [test x"${have_aribb24}" = x"yes"])
2895
2896 dnl
2897 dnl ARIB B25
2898 dnl
2899 PKG_ENABLE_MODULES_VLC([ARIBB25], [aribcam], [aribb25 >= 0.2.6], [ARIB STD-B25], [auto])
2900
2901 dnl
2902 dnl  kate decoder plugin
2903 dnl
2904 PKG_ENABLE_MODULES_VLC([KATE], [], [kate >= 0.3.0], [kate codec], [auto])
2905
2906 dnl
2907 dnl  tiger rendering for kate decoder plugin
2908 dnl
2909 AC_ARG_ENABLE(tiger,
2910 [  --enable-tiger          Tiger rendering library for Kate streams (default auto)])
2911 AS_IF([test "${enable_tiger}" != "no"], [
2912   PKG_CHECK_MODULES(TIGER,[tiger >= 0.3.1], [
2913       AC_DEFINE(HAVE_TIGER, 1, [Define if libtiger is available.])],[
2914         AS_IF([test -n "${enable_tiger}"], [
2915           AC_MSG_ERROR([${TIGER_PKG_ERRORS}.])
2916         ])
2917   ])
2918 ])
2919
2920
2921 dnl
2922 dnl  Video plugins
2923 dnl
2924
2925 EXTEND_HELP_STRING([Video plugins:])
2926
2927 dnl
2928 dnl  OpenGL
2929 dnl
2930 PKG_CHECK_MODULES([EGL], [egl], [
2931   have_egl="yes"
2932 ], [
2933   have_egl="no"
2934 ])
2935 AM_CONDITIONAL([HAVE_EGL], [test "${have_egl}" = "yes"])
2936
2937 have_gl="no"
2938 PKG_CHECK_MODULES([GL], [gl], [
2939   have_gl="yes"
2940 ], [
2941   AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
2942 #ifdef _WIN32
2943 # include <GL/glew.h>
2944 #endif
2945 #include <GL/gl.h>
2946 ]], [
2947     [int t0 = GL_TEXTURE0;]])
2948   ], [
2949     GL_CFLAGS=""
2950     have_gl="yes"
2951     AS_IF([test "${SYS}" != "mingw32"], [
2952       GL_LIBS="-lGL"
2953     ], [
2954       GL_LIBS="-lopengl32"
2955     ])
2956   ])
2957 ])
2958 AM_CONDITIONAL([HAVE_GL], [test "${have_gl}" = "yes"])
2959
2960 dnl OpenGL ES 2: depends on EGL 1.1
2961 PKG_ENABLE_MODULES_VLC([GLES2], [], [glesv2], [OpenGL ES v2 support], [disabled])
2962 dnl OpenGL ES 1: depends on EGL 1.0
2963 PKG_ENABLE_MODULES_VLC([GLES1], [], [glesv1_cm], [OpenGL ES v1 support], [disabled])
2964
2965 dnl
2966 dnl  Xlib
2967 dnl
2968
2969 AC_PATH_XTRA()
2970 AC_CHECK_HEADERS(X11/Xlib.h)
2971
2972 dnl
2973 dnl  X C Bindings modules
2974 dnl
2975 AC_ARG_ENABLE(xcb,
2976   [  --enable-xcb            X11 support with XCB (default enabled)],, [
2977   AS_IF([test "${SYS}" != "mingw32" -a "${SYS}" != "darwin" -a "${SYS}" != "symbian"], [
2978     enable_xcb="yes"
2979   ], [
2980     enable_xcb="no"
2981   ])
2982 ])
2983 AC_ARG_ENABLE(xvideo,
2984   [  --enable-xvideo         XVideo support (default enabled)],, [
2985     enable_xvideo="$enable_xcb"
2986 ])
2987
2988 have_xcb="no"
2989 have_xcb_keysyms="no"
2990 have_xcb_randr="no"
2991 have_xcb_xvideo="no"
2992 AS_IF([test "${enable_xcb}" != "no"], [
2993   dnl libxcb
2994   PKG_CHECK_MODULES(XCB, [xcb >= 1.6])
2995   have_xcb="yes"
2996   PKG_CHECK_MODULES(XCB_SHM, [xcb-shm])
2997   PKG_CHECK_MODULES(XCB_COMPOSITE, [xcb-composite])
2998   PKG_CHECK_MODULES(XPROTO, [xproto])
2999
3000   AS_IF([test "${enable_xvideo}" != "no"], [
3001     PKG_CHECK_MODULES(XCB_XV, [xcb-xv >= 1.1.90.1], [have_xcb_xvideo="yes"])
3002   ])
3003
3004   PKG_CHECK_MODULES(XCB_RANDR, [xcb-randr >= 1.3], [have_xcb_randr="yes"])
3005
3006   dnl xcb-utils
3007   PKG_CHECK_MODULES(XCB_KEYSYMS, [xcb-keysyms >= 0.3.4], [have_xcb_keysyms="yes"], [
3008     AC_MSG_WARN([${XCB_KEYSYMS_PKG_ERRORS}. Hotkeys will not work.])
3009   ])
3010 ])
3011 AM_CONDITIONAL([HAVE_XCB], [test "${have_xcb}" = "yes"])
3012 AM_CONDITIONAL([HAVE_XCB_KEYSYMS], [test "${have_xcb_keysyms}" = "yes"])
3013 AM_CONDITIONAL([HAVE_XCB_RANDR], [test "${have_xcb_randr}" = "yes"])
3014 AM_CONDITIONAL([HAVE_XCB_XVIDEO], [test "${have_xcb_xvideo}" = "yes"])
3015
3016
3017 dnl
3018 dnl VDPAU needs X11
3019 dnl
3020 AC_ARG_ENABLE(vdpau,
3021   [AS_HELP_STRING([--enable-vdpau], [VDPAU hardware support (default auto)])])
3022 have_vdpau="no"
3023 AS_IF([test "${enable_vdpau}" != "no"], [
3024   PKG_CHECK_MODULES([VDPAU], [vdpau >= 0.6], [
3025     have_vdpau="yes"
3026     AS_IF([test "${no_x}" = "yes"], [
3027       AC_MSG_ERROR([VDPAU requires Xlib (X11).])
3028     ])
3029   ], [
3030     AS_IF([test -n "${enable_vdpau}"], [
3031       AC_MSG_ERROR([${VDPAU_PKG_ERRORS}.])
3032     ])
3033   ])
3034 ])
3035 AM_CONDITIONAL([HAVE_VDPAU], [test "${have_vdpau}" = "yes"])
3036
3037 have_avcodec_vdpau="no"
3038 AS_IF([test "${have_vdpau}" = "yes" -a "${have_avcodec}" = "yes"], [
3039   case "${avfork}" in
3040     libav) av_vdpau_ver="55.26.0" ;;
3041     ffmpeg) av_vdpau_ver="55.42.100" ;;
3042   esac
3043   PKG_CHECK_EXISTS([libavutil >= 52.4.0 libavcodec >= ${av_vdpau_ver}], [
3044     have_avcodec_vdpau="yes"
3045     AC_MSG_NOTICE([VDPAU decoding acceleration activated])
3046   ], [
3047     AS_IF([test -n "${enable_vdpau}"], [
3048       AC_MSG_ERROR([libavutil >= 52.4.0 and libavcodec >= 55.26.0 are required for VDPAU decoding.])
3049     ], [
3050       AC_MSG_WARN([libavutil >= 52.4.0 and libavcodec >= 55.26.0 are required for VDPAU decoding.])
3051     ])
3052   ])
3053 ])
3054 AM_CONDITIONAL([HAVE_AVCODEC_VDPAU], [test "${have_avcodec_vdpau}" = "yes"])
3055
3056
3057 dnl
3058 dnl  Wayland
3059 dnl
3060 AC_ARG_ENABLE(wayland,
3061   [AS_HELP_STRING([--enable-wayland], [Wayland support (default auto)])])
3062 have_wayland="no"
3063 AC_ARG_VAR([WAYLAND_SCANNER], [Wayland scanner utility])
3064
3065 AS_IF([test "${enable_wayland}" != "no"], [
3066   AC_MSG_CHECKING([for the Wayland scanner])
3067   AS_IF([test -z "$WAYLAND_SCANNER"], [
3068     PKG_CHECK_EXISTS([wayland-scanner], [
3069       WAYLAND_SCANNER="$(${PKG_CONFIG} wayland-scanner --variable wayland_scanner)"
3070     ], [
3071       WAYLAND_SCANNER="wayland-scanner"
3072     ])
3073   ])
3074   AC_MSG_RESULT([$WAYLAND_SCANNER])
3075
3076   PKG_CHECK_MODULES([WAYLAND_CLIENT], [wayland-client >= 1.5.91], [
3077     have_wayland="yes"
3078   ], [
3079     AS_IF([test -n "${enable_wayland}"], [
3080       AC_MSG_ERROR([${WAYLAND_CLIENT_PKG_ERRORS}.])
3081     ])
3082   ])
3083
3084   AS_IF([test "${have_egl}" = "yes"], [
3085     PKG_CHECK_MODULES([WAYLAND_EGL], [wayland-egl], [
3086       have_wayland_egl="yes"
3087     ], [
3088       AS_IF([test -n "${enable_wayland}"], [
3089         AC_MSG_ERROR([${WAYLAND_EGL_PKG_ERRORS}.])
3090       ])
3091     ])
3092   ])
3093 ])
3094 AM_CONDITIONAL([HAVE_WAYLAND], [test "${have_wayland}" = "yes"])
3095 AM_CONDITIONAL([HAVE_WAYLAND_EGL], [test "${have_wayland_egl}" = "yes"])
3096
3097
3098 dnl
3099 dnl  SDL module
3100 dnl
3101 AC_ARG_ENABLE(sdl,
3102   [  --enable-sdl            SDL support (default enabled)])
3103 AC_ARG_ENABLE(sdl-image,
3104   [  --enable-sdl-image      SDL image support (default enabled)])
3105 if test "${enable_sdl}" != "no"
3106 then
3107    PKG_CHECK_MODULES(SDL, [sdl >= 1.2.10], [
3108       # SDL on Darwin is heavily patched and can only run SDL_image
3109       if test "${SYS}" != "darwin"; then
3110         VLC_ADD_PLUGIN([vout_sdl])
3111       fi
3112
3113       # SDL_image
3114       AS_IF([ test "${enable_sdl_image}" != "no"],[
3115         PKG_CHECK_MODULES(SDL_IMAGE, [SDL_image >= 1.2.10], [
3116           VLC_ADD_PLUGIN([sdl_image])],
3117           [ AC_MSG_WARN([${SDL_IMAGE_PKG_ERRORS}. You should install it alongside your SDL package.])
3118           ])
3119       ])
3120    ],[
3121      AC_MSG_WARN([${SDL_PKG_ERRORS}.])
3122    ])
3123 fi
3124
3125 dnl
3126 dnl  freetype module
3127 dnl
3128 AC_ARG_ENABLE(freetype,
3129   [  --enable-freetype       freetype support   (default auto)])
3130 AC_ARG_ENABLE(fribidi,
3131   [  --enable-fribidi        fribidi support    (default auto)])
3132 AC_ARG_ENABLE(fontconfig,
3133   [  --enable-fontconfig     fontconfig support (default auto)])
3134
3135 AC_ARG_WITH([default-font],
3136     AS_HELP_STRING([--with-default-font=PATH],
3137         [Path to the default font]),
3138         [AC_DEFINE_UNQUOTED([DEFAULT_FONT_FILE],
3139             "$withval", [Default font])])
3140 AC_ARG_WITH([default-monospace-font],
3141     AS_HELP_STRING([--with-default-monospace-font=PATH],
3142         [Path to the default font]),
3143         [AC_DEFINE_UNQUOTED([DEFAULT_MONOSPACE_FONT_FILE],
3144             "$withval", [Default monospace font])])
3145
3146 AC_ARG_WITH([default-font-family],
3147     AS_HELP_STRING([--with-default-font-family=NAME],
3148         [Path to the default font family]),
3149         [AC_DEFINE_UNQUOTED([DEFAULT_FAMILY],
3150             "$withval", [Default font family])])
3151 AC_ARG_WITH([default-monospace-font-family],
3152     AS_HELP_STRING([--with-default-monospace-font-family=NAME],
3153         [Path to the default font family]),
3154         [AC_DEFINE_UNQUOTED([DEFAULT_MONOSPACE_FAMILY],
3155             "$withval", [Default monospace font family])])
3156
3157 if test "${enable_freetype}" != "no"; then
3158    PKG_CHECK_MODULES(FREETYPE, freetype2, [
3159       have_freetype=yes
3160       VLC_ADD_PLUGIN([freetype])
3161       VLC_ADD_CPPFLAGS([freetype skins2],[${FREETYPE_CFLAGS}])
3162       if test "${SYS}" = "mingw32"; then
3163         VLC_ADD_LIBS([freetype],[-liconv -lz])
3164       fi
3165       VLC_ADD_LIBS([freetype skins2],[${FREETYPE_LIBS}])
3166
3167       AC_CHECK_HEADERS(Carbon/Carbon.h,
3168                        [VLC_ADD_LIBS([freetype],[-Wl,-framework,Carbon])])
3169
3170       dnl fontconfig support
3171       if test "${SYS}" != "mingw32"; then
3172           if test "${enable_fontconfig}" != "no"; then
3173             AC_CHECK_HEADERS(fontconfig/fontconfig.h, [
3174               VLC_ADD_CPPFLAGS([freetype],[-DHAVE_FONTCONFIG])
3175               VLC_ADD_LIBS([freetype],[-lfontconfig])
3176             ],[AC_MSG_WARN([library fontconfig not found. Styles will be disabled in freetype])])
3177           fi
3178       else
3179           AS_IF([test "$vlc_winstore_app" != "1"],[
3180             VLC_ADD_LIBS([freetype],[-lgdi32])
3181           ])
3182       fi
3183
3184       dnl fribidi support
3185       if test "${enable_fribidi}" != "no"; then
3186         PKG_CHECK_MODULES(FRIBIDI, fribidi, [
3187           VLC_ADD_CPPFLAGS([freetype skins2], [${FRIBIDI_CFLAGS} -DHAVE_FRIBIDI])
3188           VLC_ADD_LIBS([freetype skins2], [${FRIBIDI_LIBS}])
3189         ],[AC_MSG_WARN([${FRIBIDI_PKG_ERRORS}. Bidirectional support will be disabled in FreeType.])])
3190       fi
3191
3192   ],[
3193   have_freetype=no
3194   AS_IF([test -n "${enable_freetype}"],[
3195     AC_MSG_ERROR([${FREETYPE_PKG_ERRORS}. Install FreeType2 development or configure with --disable-freetype.])
3196     ])
3197   ])
3198 fi
3199
3200
3201 dnl
3202 dnl  QuartzText vout module (iOS/Mac OS)
3203 dnl
3204 AC_ARG_ENABLE(macosx-quartztext,
3205   [  --enable-macosx-quartztext   Mac OS X quartz text module (default enabled on Mac OS X)])
3206 if test "x${enable_macosx_quartztext}" != "xno" &&
3207   (test "${SYS}" = "darwin" || test "${enable_macosx_quartztext}" = "yes")
3208 then
3209   VLC_ADD_PLUGIN([quartztext])
3210   VLC_ADD_LIBS([quartztext],[-Wl,-framework,ApplicationServices])
3211 fi
3212
3213 dnl
3214 dnl  SVG module (text rendering and image decoding)
3215 dnl
3216 PKG_ENABLE_MODULES_VLC([SVG], [], [librsvg-2.0 >= 2.9.0], [SVG rendering library],[auto])
3217 PKG_ENABLE_MODULES_VLC([SVGDEC], [], [librsvg-2.0 >= 2.9.0 cairo >= 1.13.1], [SVG image decoder library],[auto])
3218
3219 dnl
3220 dnl  android surface module
3221 dnl
3222 AC_ARG_ENABLE(android-surface,
3223   [  --enable-android-surface   Android Surface video output module (default disabled)])
3224 if test "${enable_android_surface}" = "yes"; then
3225      VLC_ADD_PLUGIN([android_surface])
3226      VLC_ADD_PLUGIN([android_window])
3227 fi
3228
3229 dnl
3230 dnl  Windows DirectX module
3231 dnl
3232
3233 AC_ARG_ENABLE(directx,
3234   [AS_HELP_STRING([--enable-directx],
3235     [Microsoft DirectX support (default enabled on Windows)])],, [
3236   AS_IF([test "${SYS}" = "mingw32"], [
3237     enable_directx="yes"
3238   ], [
3239     enable_directx="no"
3240   ])
3241 ])
3242 have_directx="no"
3243 AS_IF([test "${enable_directx}" != "no"], [
3244   dnl DirectDraw
3245   AC_CHECK_HEADERS(ddraw.h, [
3246     have_directx="yes"
3247   ], [
3248     AC_MSG_ERROR([Cannot find DirectX headers!])
3249   ])
3250
3251   dnl OpenGL
3252   AC_CHECK_HEADERS(GL/wglew.h, [
3253     VLC_ADD_PLUGIN([glwin32])
3254   ],, [
3255     #include <windows.h>
3256     #include <GL/gl.h>
3257   ])
3258
3259   dnl Direct3D
3260   AC_CHECK_HEADERS(d3d9.h, [
3261     VLC_ADD_PLUGIN([direct3d9])
3262   ])
3263
3264   dnl Direct2D
3265   AC_CHECK_HEADERS(d2d1.h, [
3266     VLC_ADD_PLUGIN([direct2d])
3267   ])
3268 ])
3269 AM_CONDITIONAL([HAVE_DIRECTX], [test "$have_directx" = "yes"])
3270
3271 dnl
3272 dnl  Linux framebuffer module
3273 dnl
3274 AC_CHECK_HEADER([linux/fb.h], [
3275   VLC_ADD_PLUGIN([fb])
3276 ])
3277
3278
3279 dnl
3280 dnl  DirectFB module
3281 dnl  try to find using: 1 - given location; 2 - directfb-config; 3 - pkg-config
3282 dnl  TODO: support for static linking
3283 dnl
3284 AC_ARG_ENABLE(directfb,
3285   [  --enable-directfb       DirectFB support (default disabled)])
3286 AC_ARG_WITH(directfb,
3287   [  --with-directfb=PATH    path to DirectFB headers and libraries])
3288
3289 if test "${enable_directfb}" = "yes"; then
3290     have_directfb="false"
3291     CPPFLAGS_mydirectfb=
3292     LIBS_mydirectfb=
3293     if test "${with_directfb}" != "no" -a -n "${with_directfb}"; then
3294         dnl Trying the given location
3295         VLC_SAVE_FLAGS
3296
3297         CPPFLAGS_new="-I${with_directfb}/include -D_REENTRANT -D_GNU_SOURCE"
3298         LIBS_new="-L${with_directfb}/lib/fusion/.libs/ -L${with_directfb}/lib/direct/.libs/ -L${with_directfb}/src/.libs/"
3299
3300         CPPFLAGS="${CPPFLAGS} ${CPPFLAGS_new}"
3301         LIBS="${LIBS} ${LIBS_new}"
3302
3303         dnl FIXME: too obscure
3304         AC_CHECK_HEADER([directfb.h], [
3305             AC_CHECK_LIB([direct],[direct_initialize], [
3306                 AC_CHECK_LIB([fusion], [fusion_enter], [
3307                     AC_CHECK_LIB([directfb], [DirectFBInit], have_directfb="true", have_directfb="false")
3308                 ], have_directfb="false")
3309             ], have_directfb="false")
3310         ], have_directfb="false")
3311
3312         VLC_RESTORE_FLAGS
3313
3314         if test "${have_directfb}" = "true"; then
3315             LIBS_mydirectfb="${LIBS_new} -lz $LIBDL -ldirectfb -lfusion -ldirect -lpthread"
3316             CPPFLAGS_mydirectfb="${CPPFLAGS_new}"
3317         fi
3318     else
3319         dnl Look for directfb-config
3320         AC_PATH_PROG(DIRECTFB_CONFIG, directfb-config, no, ${PATH})
3321         if test "${DIRECTFB_CONFIG}" != "no"; then
3322             CPPFLAGS_mydirectfb="`${DIRECTFB_CONFIG} --cflags`"
3323             LIBS_mydirectfb="`${DIRECTFB_CONFIG} --libs`"
3324             have_directfb="true"
3325         else
3326             dnl Trying with pkg-config
3327             PKG_CHECK_MODULES(DIRECTFB, directfb, [
3328                 CPPFLAGS_mydirectfb="${DIRECTFB_CFLAGS}"
3329                 LIBS_mydirectfb="${DIRECTFB_LIBS}"
3330                 have_directfb="true"
3331                 ], [have_directfb="false"])
3332         fi
3333     fi
3334     if test "${have_directfb}" = "true"; then
3335         VLC_ADD_PLUGIN([directfb])
3336         VLC_ADD_CPPFLAGS([directfb],[${CPPFLAGS_mydirectfb}])
3337         VLC_ADD_LIBS([directfb],[${LIBS_mydirectfb}])
3338     else
3339         AC_MSG_ERROR([${DIRECTFB_PKG_ERRORS}.])
3340     fi
3341 fi
3342
3343 dnl
3344 dnl  AA plugin
3345 dnl
3346 AC_ARG_ENABLE(aa,
3347   [  --enable-aa             aalib output (default disabled)])
3348 if test "${enable_aa}" = "yes"
3349 then
3350   AC_CHECK_HEADER(aalib.h,have_aa="true",have_aa="false")
3351   if test "${have_aa}" = "true"
3352   then
3353     VLC_ADD_PLUGIN([aa])
3354   fi
3355 fi
3356
3357 dnl
3358 dnl  libcaca plugin
3359 dnl
3360 PKG_ENABLE_MODULES_VLC([CACA], [], [caca >= 0.99.beta14], [libcaca output],[auto])
3361
3362 dnl
3363 dnl  OS/2 KVA plugin
3364 dnl
3365 AC_ARG_ENABLE(kva,
3366   [AS_HELP_STRING([--enable-kva],
3367     [support the K Video Accelerator KVA (default enabled on OS/2)])],, [
3368   AS_IF([test "$SYS" = "os2"], [
3369     enable_kva="yes"
3370   ])
3371 ])
3372 have_kva="no"
3373 KVA_LIBS=""
3374 AS_IF([test "$enable_kva" != "no"], [
3375   AC_CHECK_HEADERS([kva.h], [
3376     have_kva="yes"
3377     AC_CHECK_LIB(kva, main, [
3378       KVA_LIBS="-lkva"
3379     ])
3380   ])
3381 ])
3382 AC_SUBST(KVA_LIBS)
3383 AM_CONDITIONAL([HAVE_KVA], [test "${have_kva}" = "yes"])
3384
3385 dnl
3386 dnl MMAL plugin
3387 dnl
3388 AC_ARG_ENABLE(mmal,
3389   AS_HELP_STRING([--enable-mmal],
3390     [Multi-Media Abstraction Layer (MMAL) hardware plugin (default enable)]))
3391 if test "${enable_mmal}" != "no"; then
3392   VLC_SAVE_FLAGS
3393   LDFLAGS="${LDFLAGS} -L/opt/vc/lib -lvchostif"
3394   CPPFLAGS="${CPPFLAGS} -I/opt/vc/include -I/opt/vc/include/interface/vcos/pthreads -I/opt/vc/include/interface/vmcs_host/linux"
3395   AC_CHECK_HEADERS(interface/mmal/mmal.h,
3396     [ AC_CHECK_LIB(bcm_host, vc_tv_unregister_callback_full, [
3397         have_mmal="yes"
3398         VLC_ADD_PLUGIN([mmal])
3399         VLC_ADD_LDFLAGS([mmal],[ -L/opt/vc/lib ])
3400         VLC_ADD_CFLAGS([mmal],[ -I/opt/vc/include -I/opt/vc/include/interface/vcos/pthreads -I/opt/vc/include/interface/vmcs_host/linux ])
3401         VLC_ADD_LIBS([mmal],[ -lbcm_host -lmmal -lvchostif ]) ], [
3402           AS_IF([test "${enable_mmal}" = "yes"],
3403             [ AC_MSG_ERROR([Cannot find bcm library...]) ],
3404             [ AC_MSG_WARN([Cannot find bcm library...]) ])
3405           ],
3406         [])
3407     ] , [ AS_IF([test "${enable_mmal}" = "yes"],
3408       [ AC_MSG_ERROR([Cannot find development headers for mmal...]) ],
3409       [ AC_MSG_WARN([Cannot find development headers for mmal...]) ]) ])
3410   VLC_RESTORE_FLAGS
3411 fi
3412 AM_CONDITIONAL([HAVE_MMAL], [test "${have_mmal}" = "yes"])
3413
3414 dnl
3415 dnl  Audio plugins
3416 dnl
3417
3418 EXTEND_HELP_STRING([Audio plugins:])
3419
3420 dnl
3421 dnl  Pulseaudio module
3422 dnl
3423 AC_ARG_ENABLE(pulse,
3424   [AS_HELP_STRING([--enable-pulse],
3425     [use the PulseAudio client library (default auto)])])
3426 have_pulse="no"
3427 AS_IF([test "${enable_pulse}" != "no"], [
3428   PKG_CHECK_MODULES([PULSE], [libpulse >= 1.0], [
3429     have_pulse="yes"
3430   ], [
3431     AS_IF([test "x${enable_pulse}" != "x"], [
3432       AC_MSG_ERROR([$PULSE_PKG_ERRORS. PulseAudio 1.0 or later required.])
3433     ])
3434   ])
3435 ])
3436 AM_CONDITIONAL([HAVE_PULSE], [test "${have_pulse}" = "yes"])
3437
3438 dnl
3439 dnl  ALSA module
3440 dnl
3441 AC_ARG_ENABLE(alsa,
3442   [AS_HELP_STRING([--enable-alsa],
3443     [support the Advanced Linux Sound Architecture (default auto)])],, [
3444   AS_IF([test "$SYS" = "linux" -a "${have_pulse}" = "no"], [
3445     enable_alsa="yes"
3446   ])
3447 ])
3448 have_alsa="no"
3449 AS_IF([test "${enable_alsa}" != "no"], [
3450   PKG_CHECK_MODULES([ALSA], [alsa >= 1.0.24], [
3451     have_alsa="yes"
3452   ], [
3453     AS_IF([test "x${enable_alsa}" != "x"], [
3454       AC_MSG_ERROR([$ALSA_PKG_ERRORS. alsa-lib 1.0.24 or later required.])
3455     ])
3456   ])
3457 ])
3458 AM_CONDITIONAL([HAVE_ALSA], [test "${have_alsa}" = "yes"])
3459
3460 dnl
3461 dnl  Open Sound System module
3462 dnl
3463 AC_ARG_ENABLE(oss,
3464   [AS_HELP_STRING([--enable-oss],
3465     [support the Open Sound System OSS (default enabled on FreeBSD/NetBSD/DragonFlyBSD)])],, [
3466   AS_IF([test "$SYS" = "mingw32" -o "$SYS" = "linux" -o "$SYS" = "openbsd"], [
3467     enable_oss="no"
3468   ])
3469 ])
3470 have_oss="no"
3471 OSS_LIBS=""
3472 AS_IF([test "$enable_oss" != "no"], [
3473   AC_CHECK_HEADERS([soundcard.h sys/soundcard.h], [
3474     have_oss="yes"
3475     AC_CHECK_LIB(ossaudio, main, [
3476       OSS_LIBS="-lossaudio"
3477     ])
3478   ])
3479 ])
3480 AC_SUBST(OSS_LIBS)
3481 AM_CONDITIONAL([HAVE_OSS], [test "${have_oss}" = "yes"])
3482
3483 dnl
3484 dnl  OpenBSD sndio module
3485 dnl
3486 AC_ARG_ENABLE([sndio],
3487   [AS_HELP_STRING([--disable-sndio],
3488     [support the OpenBSD sndio (default auto)])],, [
3489   AS_IF([test "$SYS" = "openbsd"], [
3490     enable_sndio="yes"
3491   ])
3492 ])
3493 have_sndio="no"
3494 AS_IF([test "$enable_sndio" != "no"], [
3495   AC_CHECK_HEADER([sndio.h], [
3496     have_sndio="yes"
3497   ])
3498 ])
3499 AM_CONDITIONAL([HAVE_SNDIO], [test "${have_sndio}" = "yes"])
3500
3501 dnl
3502 dnl  Windows Audio Session plugin
3503 dnl
3504 AC_ARG_ENABLE([wasapi],
3505   [AS_HELP_STRING([--enable-wasapi],
3506     [use the Windows Audio Session API (default auto)])
3507 ])
3508 have_wasapi="no"
3509 AS_IF([test "$enable_wasapi" != "no"], [
3510   AC_CHECK_HEADER([audioclient.h], [
3511     have_wasapi="yes"
3512   ], [
3513     AS_IF([test "x${enable_wasapi}" != "x"], [
3514       AC_MSG_ERROR([Windows Audio Session API not found.])
3515     ])
3516   ])
3517 ])
3518 AM_CONDITIONAL([HAVE_WASAPI], [test "${have_wasapi}" = "yes"])
3519
3520 dnl
3521 dnl  AudioQueue plugin
3522 dnl
3523 AC_ARG_ENABLE(audioqueue,
3524   [  --enable-audioqueue     AudioQueue audio module (default disabled)])
3525 if test "${enable_audioqueue}" = "yes"
3526 then
3527   VLC_ADD_PLUGIN([audioqueue])
3528 fi
3529
3530 dnl
3531 dnl  JACK modules
3532 dnl
3533 AC_ARG_ENABLE(jack,
3534   [AS_HELP_STRING([--disable-jack],
3535     [do not use jack (default auto)])])
3536 have_jack="no"
3537 AS_IF([test "${enable_jack}" != "no"], [
3538     PKG_CHECK_MODULES(JACK, jack >= 1.9.7,
3539       [ have_jack=yes ],
3540       [
3541       AC_MSG_WARN([${JACK_PKG_ERRORS}, trying jack1 instead])
3542
3543       PKG_CHECK_MODULES(JACK, jack >= 0.120.1 jack < 1.0,
3544       [ have_jack=yes ],
3545       [
3546       AS_IF([test -n "${enable_jack}"],
3547          [AC_MSG_ERROR([${JACK_PKG_ERRORS}.])],
3548          [AC_MSG_WARN([${JACK_PKG_ERRORS}.])])
3549       ])
3550     ])
3551 ])
3552 AM_CONDITIONAL([HAVE_JACK], [test "${have_jack}" != "no"])
3553
3554 dnl
3555 dnl  OpenSLES Android
3556 dnl
3557 AC_ARG_ENABLE(opensles,
3558   [  --enable-opensles       Android OpenSL ES audio module (default disabled)])
3559 if test "${HAVE_ANDROID}" = "1"; then
3560   if test "${enable_opensles}" = "yes"; then
3561       AC_CHECK_HEADERS(SLES/OpenSLES.h,
3562         [ VLC_ADD_PLUGIN([opensles_android]) ],
3563         [ AC_MSG_ERROR([cannot find OpenSLES headers])] )
3564   fi
3565 fi
3566
3567 dnl
3568 dnl libsamplerate plugin
3569 dnl
3570 PKG_ENABLE_MODULES_VLC([SAMPLERATE], [], [samplerate], [Resampler with libsamplerate], [auto])
3571
3572 dnl
3573 dnl  OS/2 KAI plugin
3574 dnl
3575 AC_ARG_ENABLE(kai,
3576   [AS_HELP_STRING([--enable-kai],
3577     [support the K Audio Interface KAI (default enabled on OS/2)])],, [
3578   AS_IF([test "$SYS" = "os2"], [
3579     enable_kai="yes"
3580   ])
3581 ])
3582 have_kai="no"
3583 KAI_LIBS=""
3584 AS_IF([test "$enable_kai" != "no"], [
3585   AC_CHECK_HEADERS([kai.h], [
3586     have_kai="yes"
3587     AC_CHECK_LIB(kai, main, [
3588       KAI_LIBS="-lkai"
3589     ])
3590   ])
3591 ])
3592 AC_SUBST(KAI_LIBS)
3593 AM_CONDITIONAL([HAVE_KAI], [test "${have_kai}" = "yes"])
3594
3595 dnl
3596 dnl  chromaprint audio track fingerprinter
3597 dnl
3598 m4_pushdef([libchromaprint_version], 0.6.0)
3599 PKG_WITH_MODULES([CHROMAPRINT],[libchromaprint >= libchromaprint_version],
3600     VLC_ADD_PLUGIN([stream_out_chromaprint])
3601     VLC_ADD_CFLAGS([stream_out_chromaprint],[${CHROMAPRINT_CFLAGS}] [-I./webservices -I../stream_out])
3602     VLC_ADD_LIBS([stream_out_chromaprint],[${CHROMAPRINT_LIBS}]),
3603     AS_IF([test "${enable_chromaprint}" = "yes"],
3604         [AC_MSG_ERROR(Library [libchromaprint >= libchromaprint_version] needed for [chromaprint] was not found)],
3605         [AC_MSG_WARN(Library [libchromaprint >= libchromaprint_version] needed for [chromaprint] was not found)]
3606          ),
3607     [(Chromaprint based audio fingerprinter)],[auto])
3608 m4_popdef([libchromaprint_version])
3609
3610 dnl
3611 dnl  Chromecast streaming support
3612 dnl
3613 m4_pushdef([protobuf_lite_version], 2.5.0)
3614 AC_ARG_VAR(PROTOC, [protobuf compiler])
3615 AC_PATH_PROGS(PROTOC, protoc, no)
3616 PKG_WITH_MODULES([CHROMECAST],[protobuf-lite >= protobuf_lite_version], [
3617     AS_IF([test "x${PROTOC}" != "xno"], [
3618         VLC_ADD_PLUGIN([stream_out_chromecast])
3619         VLC_ADD_CXXFLAGS([stream_out_chromecast],[${CHROMECAST_CFLAGS}] [-I./chromecast])
3620         VLC_ADD_LIBS([stream_out_chromecast],[${CHROMECAST_LIBS}])
3621         build_chromecast="yes"
3622     ], [
3623     AC_MSG_ERROR(protoc compiler needed for [chromecast] was not found)
3624     ])
3625 ], [
3626     AS_IF([test "${enable_chromecast}" = "yes"],
3627         AC_MSG_ERROR(Library [protobuf-lite >= protobuf_lite_version] needed for [chromecast] was not found),
3628         AC_MSG_WARN(Library [protobuf-lite >= protobuf_lite_version] needed for [chromecast] was not found)
3629     )
3630     enable_chromecast="no"
3631 ], [(Chromecast streaming support)], [auto])
3632 AM_CONDITIONAL([BUILD_CHROMECAST], [test "${build_chromecast}" = "yes"])
3633 m4_popdef([protobuf_lite_version])
3634
3635 dnl
3636 dnl  Interface plugins
3637 dnl
3638
3639 EXTEND_HELP_STRING([Interface plugins:])
3640
3641 dnl
3642 dnl QT
3643 dnl
3644 AC_ARG_ENABLE(qt, [
3645   AS_HELP_STRING([--disable-qt], [Qt UI support (default enabled)])],, [
3646   AS_IF([test "${SYS}" = "darwin"], [
3647     enable_qt="no"
3648   ])
3649 ])
3650 AS_IF([test "${enable_qt}" != "no"], [
3651   PKG_CHECK_MODULES([QT], [Qt5Core >= 5.1.0 Qt5Widgets Qt5Gui], [
3652       PKG_CHECK_MODULES([QTX11], [Qt5X11Extras], [
3653           VLC_ADD_LIBS([qt4],[${QTX11_LIBS}])
3654           VLC_ADD_CXXFLAGS([qt4],[${QTX11_CFLAGS} -DQT5_HAS_X11])
3655       ],[
3656           AC_MSG_WARN([Not building Qt Interface with X11 helpers.])
3657       ])
3658       QT_PATH="$(eval $PKG_CONFIG --variable=exec_prefix Qt5Core)"
3659       QT_HOST_PATH="$(eval $PKG_CONFIG --variable=host_bins Qt5Core)"
3660       AC_PATH_PROGS(MOC, [moc-qt5 moc], moc, ["${QT_HOST_PATH}" "${QT_PATH}/bin" "${CONTRIB_DIR}/bin"])
3661       AC_PATH_PROGS(RCC, [rcc-qt5 rcc], rcc, ["${QT_HOST_PATH}" "${QT_PATH}/bin" "${CONTRIB_DIR}/bin"])
3662       AC_PATH_PROGS(UIC, [uic-qt5 uic], uic, ["${QT_HOST_PATH}" "${QT_PATH}/bin" "${CONTRIB_DIR}/bin"])
3663     ], [
3664       PKG_CHECK_MODULES([QT], [QtCore QtGui >= 4.6.0],, [
3665         AS_IF([test -n "${enable_qt}"],[
3666           AC_MSG_ERROR([${QT_PKG_ERRORS}.])
3667         ],[
3668           AC_MSG_WARN([${QT_PKG_ERRORS}.])
3669         ])
3670         enable_qt="no"
3671       ])
3672       QT_PATH="$(eval $PKG_CONFIG --variable=exec_prefix QtCore)"
3673       AC_PATH_PROGS(MOC, [moc-qt4 moc], moc, ["${QT_PATH}/bin" "${CONTRIB_DIR}/bin"])
3674       AC_PATH_PROG(RCC, rcc, rcc, [${QT_PATH}/bin ${CONTRIB_DIR}/bin])
3675       AC_PATH_PROGS(UIC, [uic-qt4 uic], uic, ["${QT_PATH}/bin" "${CONTRIB_DIR}/bin"])
3676     ])
3677 ])
3678 AS_IF([test "${enable_qt}" != "no"], [
3679   VLC_ADD_PLUGIN([qt4])
3680   ALIASES="${ALIASES} qvlc"
3681 ])
3682 AM_CONDITIONAL(ENABLE_QT4, [test "$enable_qt" != "no"])
3683
3684 dnl
3685 dnl Simple test for skins2 dependency
3686 dnl
3687 AS_IF([test "$enable_qt" = "no"], [
3688   AS_IF([test "${enable_skins2}" = "yes"], [
3689     AC_MSG_ERROR([The skins2 module depends on the Qt4 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 Qt4 development package or alternatively you can also configure with: --disable-qt4 --disable-skins2.])
3690   ], [
3691     enable_skins2="no"
3692     AC_MSG_WARN([The skins2 module depends on the Qt4 interface, Qt4 is not built so skins2 is disabled.])
3693   ])
3694 ])
3695
3696 dnl
3697 dnl Skins2 module
3698 dnl
3699 AC_ARG_ENABLE(skins2,
3700   [AS_HELP_STRING([--enable-skins2], [skins interface module (default auto)])])
3701 AS_IF([test "${enable_skins2}" != "no"], [
3702   have_skins_deps="yes"
3703
3704   dnl Win32
3705   AS_IF([test "${SYS}" = "mingw32"], [
3706     VLC_ADD_CPPFLAGS([skins2],[-U_OFF_T_ -U_off_t -DWIN32_SKINS])
3707     VLC_ADD_LIBS([skins2],[-lgdi32 -lole32 -luuid -lmsimg32])
3708   dnl MacOS
3709   ], [test "${SYS}" = "darwin"], [
3710     VLC_ADD_CPPFLAGS([skins2],[ -DMACOSX_SKINS])
3711     VLC_ADD_LIBS([skins2],[-Wl,-framework,Carbon])
3712   dnl OS/2
3713   ], [test "${SYS}" = "os2"], [
3714     VLC_ADD_CPPFLAGS([skins2],[ -DOS2_SKINS])
3715   dnl Linux/Unix
3716   ], [
3717     PKG_CHECK_MODULES([XPM], [xpm],, [have_skins_deps="no"])
3718     PKG_CHECK_MODULES([XINERAMA], [xinerama],, [have_skins_deps="no"])
3719     PKG_CHECK_MODULES([XEXT], [xext],, [have_skins_deps="no"])
3720     VLC_ADD_CPPFLAGS([skins2],[${X_CFLAGS} ${XEXT_CFLAGS} ${XPM_CFLAGS} -DX11_SKINS])
3721     VLC_ADD_LIBS([skins2],[${X_LIBS} ${X_PRE_LIBS} ${XEXT_LIBS} ${XPM_LIBS} ${XINERAMA_LIBS} -lX11])
3722   ])
3723
3724   dnl for All OSes
3725   VLC_ADD_CXXFLAGS([skins2],[-O2 -fno-rtti])
3726
3727   dnl we need freetype
3728   AS_IF([test "${have_freetype}" != "yes"], [
3729     have_skins_deps="no"
3730   ])
3731
3732   AS_IF([test "${have_skins_deps}" = "no"], [
3733     AS_IF([test "x${enable_skins2}" = "x"], [
3734       AC_MSG_WARN([Skins2 interface disabled due to missing dependencies.])
3735     ], [
3736       AC_MSG_ERROR([Skins2 interface requires FreeType, libxpm, libxext and libxinerama])
3737     ])
3738     enable_skins2="no"
3739   ], [
3740     VLC_ADD_PLUGIN([skins2])
3741     ALIASES="${ALIASES} svlc"
3742     enable_skins2="yes"
3743   ])
3744 ])
3745 AM_CONDITIONAL(BUILD_SKINS, [test "${enable_skins2}" = "yes"])
3746
3747 AC_ARG_ENABLE(libtar,
3748   [  --enable-libtar         libtar support for skins2 (default auto)])
3749 AS_IF([test "${enable_skins2}" = "yes" && test "${enable_libtar}" != "no"], [
3750   AC_CHECK_HEADERS(libtar.h, [
3751     VLC_ADD_LIBS([skins2],[-ltar])
3752   ])
3753 ])
3754
3755 dnl
3756 dnl  MacOS X gui module
3757 dnl
3758 AC_ARG_ENABLE(macosx,
3759   [  --enable-macosx         Mac OS X gui support (default enabled on Mac OS X)])
3760 if test "x${enable_macosx}" != "xno" -a "${SYS}" = "darwin"
3761 then
3762   VLC_ADD_LIBS([macosx], [-Wl,-framework,Cocoa -Wl,-framework,Carbon -Wl,-framework,CoreServices])
3763   VLC_ADD_OBJCFLAGS([macosx], [-fobjc-exceptions] )
3764   VLC_ADD_PLUGIN([macosx])
3765
3766   VLC_ADD_LIBS([macosx], [-Wl,-framework,QTKit -Wl,-framework,IOKit -Wl,-framework,AddressBook -Wl,-framework,WebKit -Wl,-framework,CoreAudio -Wl,-framework,SystemConfiguration -Wl,-framework,ScriptingBridge])
3767
3768   if test ! -d ${CONTRIB_DIR}/Sparkle.framework
3769   then
3770     AC_MSG_ERROR([Sparkle framework is required and was not found in ${CONTRIB_DIR}])
3771   fi
3772   VLC_ADD_LIBS([macosx], [-F${CONTRIB_DIR} -Wl,-framework,Sparkle])
3773   VLC_ADD_OBJCFLAGS([macosx], [-F${CONTRIB_DIR}])
3774
3775   if test ! -d ${CONTRIB_DIR}/BGHUDAppKit.framework
3776   then
3777     AC_MSG_ERROR([BGHUDAppKit framework is required and was not found in ${CONTRIB_DIR}])
3778   fi
3779   VLC_ADD_LIBS([macosx], [-F${CONTRIB_DIR} -Wl,-framework,BGHUDAppKit])
3780   VLC_ADD_OBJCFLAGS([macosx], [-F${CONTRIB_DIR}])
3781 fi
3782 AM_CONDITIONAL(ENABLE_MACOSX_UI, [test "$enable_macosx" != "no"])
3783
3784 dnl
3785 dnl  Minimal Mac OS X module
3786 dnl
3787 AC_ARG_ENABLE(minimal-macosx,
3788   [  --enable-minimal-macosx Minimal Mac OS X support (default disabled)])
3789 if test "${enable_minimal_macosx}" = "yes" -a "${SYS}" = "darwin"
3790 then
3791   VLC_ADD_LIBS([minimal_macosx], [-Wl,-framework,Cocoa])
3792   VLC_ADD_OBJCFLAGS([minimal_macosx], [-fobjc-exceptions] )
3793   VLC_ADD_PLUGIN([minimal_macosx])
3794 fi
3795 AM_CONDITIONAL(ENABLE_MINIMAL_MACOSX, [test "$enable_minimal_macosx" != "no"])
3796
3797 dnl
3798 dnl  MacOS X dialog provider
3799 dnl
3800 AC_ARG_ENABLE(macosx-dialog-provider,
3801   [  --enable-macosx-dialog-provider Mac OS X dialog module (default enabled on Mac OS X)])
3802 if test "x${enable_macosx_dialog_provider}" != "xno" &&
3803   (test "${SYS}" = "darwin" || test "${enable_macosx_dialog_provider}" = "yes")
3804 then
3805   VLC_ADD_LIBS([macosx_dialog_provider],[-Wl,-framework,Cocoa])
3806   VLC_ADD_PLUGIN([macosx_dialog_provider])
3807 fi
3808 AM_CONDITIONAL(ENABLE_MACOSX_DIALOG_PROVIDER, [test "$enable_macosx_dialog_provider" != "no"])
3809
3810 dnl
3811 dnl  ncurses module
3812 dnl
3813 AC_ARG_ENABLE(ncurses,
3814 [AS_HELP_STRING([--disable-ncurses],[ncurses text-based interface (default auto)])])
3815 AS_IF([test "${enable_ncurses}" != "no"] ,[
3816   PKG_CHECK_MODULES([NCURSES], [ncursesw], [
3817     VLC_ADD_PLUGIN([ncurses])
3818     VLC_ADD_CFLAGS([ncurses],[${NCURSES_CFLAGS}])
3819     VLC_ADD_LIBS([ncurses],[${NCURSES_LIBS} ${LIBPTHREAD}])
3820     ALIASES="${ALIASES} nvlc"
3821   ], [
3822     AS_IF([test -n "${enable_ncurses}"], [
3823       AC_MSG_ERROR([${NCURSES_PKG_ERRORS}.])
3824     ])
3825   ])
3826 ])
3827
3828 dnl
3829 dnl  Lirc plugin
3830 dnl
3831 AC_ARG_ENABLE(lirc,
3832   [  --enable-lirc           lirc support (default disabled)])
3833 if test "${enable_lirc}" = "yes"
3834 then
3835   AC_CHECK_HEADER(lirc/lirc_client.h, AC_CHECK_LIB(lirc_client, lirc_init, have_lirc="true", have_lirc="false"),have_lirc="false")
3836   if test "${have_lirc}" = "true"
3837   then
3838     VLC_ADD_PLUGIN([lirc])
3839     VLC_ADD_LIBS([lirc],[-llirc_client])
3840   fi
3841 fi
3842
3843 EXTEND_HELP_STRING([Visualisations and Video filter plugins:])
3844 dnl
3845 dnl  goom visualization plugin
3846 dnl
3847 PKG_ENABLE_MODULES_VLC([GOOM], [], [libgoom2], [goom visualization plugin], [auto])
3848
3849 dnl
3850 dnl libprojectM visualization plugin
3851 dnl
3852 AC_ARG_ENABLE(projectm,
3853   [  --enable-projectm       projectM visualization plugin (default enabled)])
3854 AS_IF([test "${enable_projectm}" != "no"],
3855   [
3856     PKG_CHECK_MODULES(PROJECTM, libprojectM,
3857     [
3858       VLC_ADD_PLUGIN([projectm])
3859       PKG_CHECK_EXISTS([libprojectM >= 2.0.0],
3860         [ AC_DEFINE([HAVE_PROJECTM2], 1, [Define to 1 if using libprojectM 2.x]) ],
3861         [ AC_MSG_WARN( [Using libprojectM version 1] )
3862       ])
3863     ],[
3864       AC_MSG_WARN([${PROJECTM_PKG_ERRORS}.])
3865     ])
3866   ])
3867
3868 dnl
3869 dnl Vovoid VSXu visualization plugin
3870 dnl
3871 AC_ARG_ENABLE(vsxu,
3872   [  --enable-vsxu           Vovoid VSXu visualization plugin (default auto)])
3873 AS_IF([test "${enable_vsxu}" != "no"],
3874   [
3875     PKG_CHECK_MODULES(VSXU, libvsxu,
3876     [
3877       VLC_ADD_PLUGIN([vsxu])
3878       VLC_ADD_CXXFLAGS([vsxu],[$VSXU_CFLAGS])
3879       VLC_ADD_LIBS([vsxu],[$VSXU_LIBS])
3880     ],[
3881       AC_MSG_WARN([${VSXU_PKG_ERRORS}.])
3882     ])
3883   ])
3884
3885 dnl
3886 dnl  AtmoLight (homemade Philips Ambilight clone)
3887 dnl
3888 AC_ARG_ENABLE(atmo,
3889 AS_HELP_STRING([--disable-atmo],[AtmoLight (homemade Philips Ambilight clone)
3890                 (default enabled)]),, [enable_atmo="yes"])
3891 AS_IF([test "${enable_atmo}" != no], [
3892   AS_IF([test "${SYS}" = "mingw32" -o "${SYS}" = "linux"], [
3893     AC_LANG_PUSH(C++)
3894     VLC_ADD_PLUGIN([atmo])
3895     AC_LANG_POP(C++)
3896   ])
3897 ])
3898
3899 dnl
3900 dnl  glSpectrum
3901 dnl
3902 AC_ARG_ENABLE(glspectrum,
3903   [  --enable-glspectrum    3D OpenGL spectrum visualization (default auto)])
3904 if test "${enable_glspectrum}" != "no" && test "${have_gl}" = "yes"
3905 then
3906     VLC_ADD_PLUGIN([glspectrum])
3907     VLC_ADD_LIBS([glspectrum],[$GL_LIBS])
3908 fi
3909
3910 EXTEND_HELP_STRING([Service Discovery plugins:])
3911 dnl
3912 dnl  Bonjour services discovery
3913 PKG_ENABLE_MODULES_VLC([BONJOUR], [], [avahi-client >= 0.6], [Bonjour services discovery], [auto])
3914
3915 dnl
3916 dnl  libudev services discovery
3917 PKG_ENABLE_MODULES_VLC([UDEV], [], [libudev >= 142], [Linux udev services discovery], [auto])
3918
3919 dnl
3920 dnl MTP devices services discovery
3921 PKG_ENABLE_MODULES_VLC([MTP], [mtp access_mtp], [libmtp >= 1.0.0], [MTP devices support], [auto])
3922
3923 dnl
3924 dnl UPnP Plugin (Intel SDK)
3925 dnl
3926 PKG_ENABLE_MODULES_VLC([UPNP], [upnp], [libupnp], [Intel UPNP SDK],[auto])
3927
3928 EXTEND_HELP_STRING([Misc options:])
3929
3930 dnl
3931 dnl  libxml2 module
3932 dnl
3933 PKG_ENABLE_MODULES_VLC([LIBXML2], [xml], [libxml-2.0 >= 2.5], [libxml2 support],[auto])
3934
3935
3936 dnl
3937 dnl libgcrypt
3938 dnl
3939 AC_ARG_ENABLE(libgcrypt,
3940   [  --disable-libgcrypt     gcrypt support (default enabled)])
3941 AS_IF([test "${enable_libgcrypt}" != "no"], [
3942   AC_CHECK_DECL([GCRYCTL_SET_THREAD_CBS], [
3943     libgcrypt-config --version >/dev/null || \
3944         AC_MSG_ERROR([gcrypt.h present but libgcrypt-config could not be found])
3945     AC_CHECK_LIB(gcrypt, gcry_control, [
3946       have_libgcrypt="yes"
3947       GCRYPT_CFLAGS="`libgcrypt-config --cflags`"
3948       GCRYPT_LIBS="`libgcrypt-config --libs`"
3949     ], [
3950       AC_MSG_ERROR([libgcrypt not found. Install libgcrypt or pass --disable-libgcrypt.])
3951     ], [`libgcrypt-config --libs`])
3952   ], [
3953     AC_MSG_ERROR([libgcrypt version 1.1.94 or higher not found. Install libgcrypt or pass --disable-libgcrypt.])
3954   ], [#include <gcrypt.h>]
3955   )
3956 ])
3957
3958 AC_SUBST(GCRYPT_CFLAGS)
3959 AC_SUBST(GCRYPT_LIBS)
3960 AM_CONDITIONAL([HAVE_GCRYPT], [test "${have_libgcrypt}" = "yes"])
3961
3962 dnl
3963 dnl TLS/SSL
3964 dnl
3965 AC_ARG_ENABLE(gnutls,
3966   [  --enable-gnutls         GNU TLS TLS/SSL support (default enabled)])
3967 AS_IF([test "${enable_gnutls}" != "no"], [
3968   PKG_CHECK_MODULES(GNUTLS, [gnutls >= 3.2.0], [
3969     VLC_ADD_PLUGIN([gnutls])
3970   ], [
3971     AS_IF([test -n "${enable_gnutls}"], [
3972       AC_MSG_ERROR([${GNUTLS_PKG_ERRORS}.)])
3973     ])
3974   ])
3975 ])
3976
3977
3978 dnl
3979 dnl Taglib plugin
3980 dnl
3981 AC_ARG_ENABLE(taglib,
3982   [AS_HELP_STRING([--disable-taglib],
3983     [do not use TagLib (default enabled)])])
3984 AS_IF([test "${enable_taglib}" != "no"], [
3985   PKG_CHECK_MODULES(TAGLIB, taglib >= 1.9, [
3986     VLC_ADD_PLUGIN([taglib])
3987   ], [
3988     AC_MSG_WARN([${TAGLIB_PKG_ERRORS}.])])
3989 ])
3990
3991
3992 dnl
3993 dnl update checking system
3994 dnl
3995 AC_ARG_ENABLE(update-check,
3996   [  --enable-update-check   update checking system (default disabled)])
3997 if test "${enable_update_check}" = "yes"
3998 then
3999   if test "${have_libgcrypt}" != "yes"
4000   then
4001     AC_MSG_ERROR([libgcrypt is required for update checking system])
4002   fi
4003   VLC_ADD_LIBS([libvlccore], [${GCRYPT_LIBS}])
4004   VLC_ADD_CFLAGS([libvlccore], [${GCRYPT_CFLAGS}])
4005   AC_DEFINE([UPDATE_CHECK], 1, [Define if you want to use the VLC update mechanism])
4006 fi
4007
4008 dnl
4009 dnl Growl notification plugin
4010 dnl
4011 AC_ARG_ENABLE(growl,
4012   [  --enable-growl          growl notification plugin (default disabled)],,
4013   [enable_growl=no])
4014 AS_IF([test "${enable_growl}" != "no"], [
4015     AC_CHECK_HEADERS(${CONTRIB_DIR}/Growl.framework/Versions/A/Headers/Growl.h, [
4016       VLC_ADD_PLUGIN([growl])
4017       VLC_ADD_LIBS([growl], [-F${CONTRIB_DIR} -Wl,-framework,Growl,-framework,Foundation])
4018       VLC_ADD_OBJCFLAGS([growl], [-F${CONTRIB_DIR}])
4019       VLC_ADD_OBJCFLAGS([growl], [-fobjc-exceptions] )
4020     ])
4021   ]
4022 )
4023
4024 dnl
4025 dnl Libnotify notification plugin
4026 dnl
4027 PKG_ENABLE_MODULES_VLC([NOTIFY], [], [libnotify gtk+-2.0], [libnotify notification], [auto])
4028
4029 dnl
4030 dnl  Endianness check
4031 dnl
4032 AC_C_BIGENDIAN
4033 AS_IF([test "${ac_cv_c_bigendian}" = "yes"], [
4034   DEFS_BIGENDIAN="-DWORDS_BIGENDIAN=1"
4035 ], [
4036   DEFS_BIGENDIAN=""
4037 ])
4038 AC_SUBST(DEFS_BIGENDIAN)
4039
4040 dnl
4041 dnl Where to install KDE solid .desktop
4042 dnl
4043 AC_ARG_VAR([KDE4_CONFIG], [kde4-config utility])
4044 AS_IF([test "x$KDE4_CONFIG" = "x"], [
4045   KDE4_CONFIG="kde4-config"
4046 ])
4047
4048 AC_ARG_WITH(kde-solid,
4049   AS_HELP_STRING([--with-kde-solid=PATH],
4050                  [KDE Solid actions directory (auto)]),, [
4051
4052 if test "${SYS}" != "mingw32" -a "${SYS}" != "darwin" ; then
4053   with_kde_solid="yes"
4054 fi
4055 ])
4056 soliddatadir=""
4057 AS_IF([test "${with_kde_solid}" != "no"], [
4058   AS_IF([test "${with_kde_solid}" = "yes"], [
4059     kde4datadir="`${KDE4_CONFIG} --install data`"
4060     AS_IF([test "x$kde4datadir" = "x"], [kde4datadir='${datadir}/kde4/apps'])
4061     soliddatadir="${kde4datadir}/solid/actions"
4062   ], [
4063     soliddatadir="${with_kde_solid}"
4064   ])
4065 ])
4066 AC_SUBST(soliddatadir)
4067 AM_CONDITIONAL(KDE_SOLID, [test "x${soliddatadir}" != "x"])
4068
4069 EXTEND_HELP_STRING([Components:])
4070
4071 dnl
4072 dnl  the VLC binary
4073 dnl
4074 AC_ARG_ENABLE(vlc,
4075   [  --enable-vlc            build the VLC media player (default enabled)])
4076 AM_CONDITIONAL(BUILD_VLC, [test "${enable_vlc}" != "no"])
4077
4078 AC_ARG_ENABLE(macosx-vlc-app,
4079   [  --enable-macosx-vlc-app build the VLC media player (default enabled on Mac OS X)])
4080 AM_CONDITIONAL(BUILD_MACOSX_VLC_APP, [test "${enable_macosx_vlc_app}" != "no" &&
4081     (test "${SYS}" = "darwin" || test "${enable_macosx_vlc_app}" = "yes") ])
4082
4083 dnl
4084 dnl  Stuff used by the program
4085 dnl
4086 VERSION_MESSAGE="${VERSION} ${CODENAME}"
4087 COPYRIGHT_MESSAGE="Copyright © ${COPYRIGHT_YEARS} the VideoLAN team"
4088 AC_DEFINE_UNQUOTED(VERSION_MESSAGE, "${VERSION_MESSAGE}", [Simple version string])
4089 AC_DEFINE_UNQUOTED(COPYRIGHT_MESSAGE, "${COPYRIGHT_MESSAGE}", [Copyright string])
4090 AC_DEFINE_UNQUOTED(COPYRIGHT_YEARS, "${COPYRIGHT_YEARS}", [The copyright years])
4091 AC_DEFINE_UNQUOTED(CONFIGURE_LINE, "${CONFIGURE_LINE}", [The ./configure command line])
4092 AC_DEFINE_UNQUOTED(PACKAGE_VERSION_MAJOR,${VERSION_MAJOR}, [version major number])
4093 AC_DEFINE_UNQUOTED(PACKAGE_VERSION_MINOR,${VERSION_MINOR}, [version minor number])
4094 AC_DEFINE_UNQUOTED(PACKAGE_VERSION_REVISION,${VERSION_REVISION}, [version revision number])
4095 AC_DEFINE_UNQUOTED(PACKAGE_VERSION_EXTRA,${VERSION_EXTRA}, [version extra number])
4096 AC_DEFINE_UNQUOTED(PACKAGE_VERSION_DEV,"${VERSION_DEV}", [version development string])
4097 AC_SUBST(COPYRIGHT_MESSAGE)
4098 AC_SUBST(VERSION_MESSAGE)
4099 AC_SUBST(VERSION_MAJOR)
4100 AC_SUBST(VERSION_MINOR)
4101 AC_SUBST(VERSION_REVISION)
4102 AC_SUBST(VERSION_EXTRA)
4103 AC_SUBST(COPYRIGHT_YEARS)
4104 AC_DEFINE_UNQUOTED(VLC_COMPILE_BY, "`whoami|sed -e 's/\\\/\\\\\\\/g'`", [user who ran configure])
4105 AC_DEFINE_UNQUOTED(VLC_COMPILE_HOST, "`hostname -f 2>/dev/null || hostname`", [host which ran configure])
4106 AC_DEFINE_UNQUOTED(VLC_COMPILER, "`$CC -v 2>&1 | tail -n 1 | sed -e 's/ *$//'`", [compiler])
4107 dnl
4108 dnl  Handle substvars that use $(top_srcdir)
4109 dnl
4110 CPPFLAGS="-I\$(top_srcdir)/include -I\$(top_builddir)/include ${CPPFLAGS}"
4111
4112 dnl
4113 dnl  Configuration is finished
4114 dnl
4115 AC_SUBST(SYS)
4116 AC_SUBST(ARCH)
4117 AC_SUBST(ALIASES)
4118 AC_SUBST(ASM)
4119 AC_SUBST(MOC)
4120 AC_SUBST(RCC)
4121 AC_SUBST(UIC)
4122 AC_SUBST(WINDRES)
4123 AC_SUBST(WINE_SDK_PATH)
4124 AC_SUBST(LIBEXT)
4125 AC_SUBST(AM_CPPFLAGS)
4126 AC_SUBST(MACOSX_DEPLOYMENT_TARGET)
4127 AC_SUBST(FILE_LIBVLCCORE_DLL)
4128 AC_SUBST(FILE_LIBVLC_DLL)
4129
4130 AC_CONFIG_FILES([
4131   Makefile
4132   doc/Makefile
4133   modules/Makefile
4134   m4/Makefile
4135   po/Makefile.in
4136   share/Makefile
4137   compat/Makefile
4138   src/Makefile
4139   lib/Makefile
4140   bin/Makefile
4141   test/Makefile
4142   modules/access_output/Makefile
4143   modules/audio_filter/Makefile
4144   modules/control/Makefile
4145   modules/gui/Makefile
4146   modules/gui/ios_dialog_provider/Makefile
4147   modules/gui/macosx/Makefile
4148   modules/gui/minimal_macosx/Makefile
4149   modules/gui/macosx_dialog_provider/Makefile
4150   modules/gui/qt4/Makefile
4151   modules/gui/skins2/Makefile
4152   modules/mux/Makefile
4153   modules/stream_out/Makefile
4154   modules/text_renderer/Makefile
4155   modules/video_filter/Makefile
4156   modules/visualization/Makefile
4157   modules/hw/mmal/Makefile
4158 ])
4159
4160 AM_COND_IF([HAVE_WIN32], [
4161   AC_CONFIG_FILES([
4162     extras/package/win32/NSIS/spad.nsi
4163     extras/package/win32/NSIS/vlc.win32.nsi
4164     extras/package/win32/msi/config.wxi
4165   ])
4166 ])
4167
4168 AM_COND_IF([HAVE_DARWIN], [
4169   AC_CONFIG_FILES([
4170     extras/package/macosx/Info.plist
4171     extras/package/macosx/Resources/English.lproj/InfoPlist.strings
4172   ])
4173 ])
4174
4175 dnl Generate makefiles
4176 AC_OUTPUT
4177
4178 dnl Do we have to use make or gmake ?
4179 if make --version 2>&1|grep -q GNU
4180 then
4181     # GNU make, all seems good
4182     MAKE=make
4183 else
4184     # Known GNU make alias (on BSD)
4185     MAKE=gmake
4186 fi
4187 dnl Shortcut to nice compile message
4188 if test -n $SHELL; then
4189   SHELL=${CONFIG_SHELL-/bin/sh}
4190 fi
4191 rm -f compile
4192 compile_top_srcdir=`sed -ne "s/^top_srcdir *= *//p" < Makefile`
4193 echo "#! $SHELL
4194 rm -f .error\$\$
4195 ERROR=0
4196 export PATH=\"$PATH\" LANG=C
4197 ($MAKE V=1 \$@ 2>&1 || touch .error\$\$)| $compile_top_srcdir/extras/buildsystem/make.pl
4198 test -f .error\$\$ && ERROR=1
4199 rm -f .error\$\$
4200 exit \$ERROR" >compile
4201 chmod a+x compile
4202
4203 echo "
4204 libvlc configuration
4205 --------------------
4206 version               : ${VERSION}
4207 system                : ${SYS}
4208 architecture          : ${ARCH}
4209 optimizations         : ${enable_optimizations}"
4210 if test "${enable_vlc}" != "no"; then
4211 echo "vlc aliases           :${ALIASES}"
4212 else
4213 echo "build vlc executable  : no"
4214 fi
4215 echo "
4216 To build vlc and its plugins, type \`$MAKE', or \`./compile' if you like nice colors."