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