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