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