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