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