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