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