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