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