]> git.sesse.net Git - vlc/blob - configure.ac
More avoidable directories
[vlc] / configure.ac
1 dnl Autoconf settings for vlc
2
3 AC_INIT(vlc,0.9.0-git)
4 VERSION_MAJOR="0"
5 VERSION_MINOR="9"
6 VERSION_REVISION="0"
7 VERSION_EXTRA="git"
8
9 CONFIGURE_LINE="`echo "$0 $ac_configure_args" | sed -e 's/\\\/\\\\\\\/g'`"
10 CODENAME="Grishenko"
11 COPYRIGHT_YEARS="1996-2008"
12
13 AC_PREREQ(2.59c)
14 AC_CONFIG_SRCDIR(src/libvlc.c)
15 AC_CONFIG_AUX_DIR(autotools)
16 AC_CANONICAL_BUILD
17 AC_CANONICAL_HOST
18
19 AM_INIT_AUTOMAKE(tar-ustar)
20 AM_CONFIG_HEADER(config.h)
21
22 dnl Too many people are not aware of maintainer mode:
23 dnl If you want to use it, you definitely know what you are doing, so
24 dnl you can specify "--disable-maintainer-mode". But if you want the default
25 dnl automake behavior, you've likely never heard of maintainer mode, so we
26 dnl can't expect you to enable it manually.
27
28 AS_IF([test "x${enable_maintainer_mode}" != "xno"],
29         [enable_maintainer_mode="yes"])
30 AM_MAINTAINER_MODE
31
32 dnl
33 dnl  Save *FLAGS
34 dnl
35 VLC_SAVE_FLAGS
36
37 dnl
38 dnl Check for tools
39 dnl
40 AC_PROG_CC_C99
41 AC_USE_SYSTEM_EXTENSIONS
42 AC_DEFINE([_FORTIFY_SOURCE], 2, [Define to `2' to get glibc warnings.])
43 AM_PROG_CC_C_O
44 AC_PROG_CXX
45 AC_PROG_CPP
46 AC_PROG_OBJC
47 _AM_DEPENDENCIES([OBJC])
48 AC_PROG_EGREP
49 AC_PROG_MAKE_SET
50 AC_PROG_INSTALL
51 AM_PROG_AS
52
53 dnl Find the right ranlib, even when cross-compiling
54 AC_CHECK_TOOL(RANLIB, ranlib, :)
55 AC_CHECK_TOOL(STRIP, strip, :)
56 AC_CHECK_TOOL(AR, ar, :)
57 AC_CHECK_TOOL(LD, ld, :)
58 AC_CHECK_TOOL(DLLTOOL, dlltool, :)
59
60 dnl Check for compiler properties
61 AC_C_CONST
62 AC_C_INLINE
63 AC_C_RESTRICT
64
65 dnl
66 dnl  Check for the contrib directory
67 dnl
68 AC_ARG_WITH(contrib,
69     [  --without-contrib       do not use the libraries in extras/contrib],[],[])
70   if test "${with_contrib}" != "no"; then 
71     AC_MSG_CHECKING([for libs in extras/contrib])
72     topdir="`dirname $0`"
73     if test "`echo \"$topdir\" | cut -c 1`" != "/"; then
74        topdir="`pwd`/$topdir"
75     fi
76    if test "`grep HOST ${topdir}/extras/contrib/config.mak 2>/dev/null|awk '{print $3}'`" != "`$CC -dumpmachine`"; then
77       if test "${with_contrib}" = "yes"; then
78         AC_MSG_RESULT([no])
79         AC_MSG_ERROR([ not using the libs in extras/contrib as it is not the same host])
80       else
81         AC_MSG_RESULT([no])
82         AC_MSG_WARN([ not using the libs in extras/contrib as it is not the same host])
83       fi
84      else
85   if test -d ${topdir}/extras/contrib/lib; then
86     AC_MSG_RESULT([yes])
87     export PATH=${topdir}/extras/contrib/bin:$PATH
88     CPPFLAGS="${CPPFLAGS} -I${topdir}/extras/contrib/include"
89     CPPFLAGS_save="${CPPFLAGS_save} -I${topdir}/extras/contrib/include"
90     CFLAGS="${CFLAGS} -I${topdir}/extras/contrib/include"
91     CFLAGS_save="${CFLAGS_save} -I${topdir}/extras/contrib/include"
92     CXXFLAGS="${CXXFLAGS} -I${topdir}/extras/contrib/include"
93     CXXFLAGS_save="${CXXFLAGS_save} -I${topdir}/extras/contrib/include"
94     OBJCFLAGS="${OBJCFLAGS} -I${topdir}/extras/contrib/include"
95     OBJCFLAGS_save="${OBJCFLAGS_save} -I${topdir}/extras/contrib/include"
96     if test $build = $host -o "$PKG_CONFIG_LIBDIR"; then
97         export PKG_CONFIG_PATH=${topdir}/extras/contrib/lib/pkgconfig:$PKG_CONFIG_PATH
98     else
99         export PKG_CONFIG_LIBDIR=${topdir}/extras/contrib/lib/pkgconfig
100     fi
101     LDFLAGS="${LDFLAGS} -L${topdir}/extras/contrib/lib"
102     LDFLAGS_save="${LDFLAGS_save} -L${topdir}/extras/contrib/lib"
103
104     if test -z $with_live555_tree; then
105        with_live555_tree=${topdir}/extras/contrib/src/live
106     fi
107     if test -z $with_goom_tree; then
108        with_goom_tree=${topdir}/extras/contrib/src/goom
109     fi
110     if test -z $with_mozilla_sdk_path; then
111        with_mozilla_sdk_path=${topdir}/extras/contrib/gecko-sdk
112     fi
113     if test -z $with_cyberlink_tree; then
114        with_cyberlink_tree=${topdir}/extras/contrib/src/clinkcc
115     fi
116     if test -z $with_libmpeg2_tree; then
117        with_libmpeg2_tree=${topdir}/extras/contrib/src/mpeg2dec
118     fi
119     if test -z $with_a52_tree; then
120        with_a52_tree=${topdir}/extras/contrib/src/a52dec
121     fi
122
123     if test ".`uname -s`" = ".Darwin"; then
124       export LD_LIBRARY_PATH=${topdir}/extras/contrib/lib:$LD_LIBRARY_PATH
125       export DYLD_LIBRARY_PATH=${topdir}/extras/contrib/lib:$DYLD_LIBRARY_PATH
126     elif test ".`uname -s`" = ".BeOS"; then
127       export LIBRARY_PATH=${topdir}/extras/contrib/lib:$LIBRARY_PATH
128       export BELIBRARIES=${topdir}/extras/contrib/lib:$BELIBRARIES
129     fi
130   else
131      AC_MSG_RESULT([no])
132   fi
133   fi
134 fi
135 dnl
136 dnl  Set default values
137 dnl
138 LDFLAGS_vlc="${LDFLAGS}"
139
140 dnl
141 dnl  Check the operating system
142 dnl
143 case "${host_os}" in
144   "")
145     SYS=unknown
146     ;;
147   linux*)
148     SYS=linux
149     ;;
150   bsdi*)
151     SYS=bsdi
152     CFLAGS_save="${CFLAGS_save} -pthread"; CFLAGS="${CFLAGS_save}"
153     VLC_ADD_LIBS([dvd dvdcss vcd cdda vcdx cddax],[-ldvd])
154     ;;
155   *bsd*)
156     SYS="${host_os}"
157     CFLAGS_save="${CFLAGS_save} -pthread"; CFLAGS="${CFLAGS_save}"
158     case "${host_os}" in
159       freebsd*)
160         CPPFLAGS_save="${CPPFLAGS_save} -I/usr/local/include"
161         CPPFLAGS="${CPPFLAGS_save}"
162         LDFLAGS_save="${LDFLAGS_save} -L/usr/local/lib"
163         LDFLAGS="${LDFLAGS_save}"
164         ;;
165     esac
166     ;;
167   darwin*)
168     SYS=darwin
169     CFLAGS_save="${CFLAGS_save} -D_INTL_REDIRECT_MACROS"; CFLAGS="${CFLAGS_save}"
170     CXXFLAGS_save="${CXXFLAGS_save} -D_INTL_REDIRECT_MACROS"; CXXFLAGS="${CXXFLAGS_save}"
171     OBJCFLAGS_save="${OBJCFLAGS_save} -D_INTL_REDIRECT_MACROS -std=gnu99"; OBJCFLAGS="${OBJCFLAGS_save}"
172     LDFLAGS_save="${LDFLAGS_save} -Wl,-headerpad_max_install_names"; LDFLAGS="${LDFLAGS_save}"
173     VLC_ADD_LDFLAGS([mp4], [-Wl,-framework,IOKit,-framework,CoreFoundation])
174     VLC_ADD_LDFLAGS([mkv mp4], [-Wl,-framework,IOKit,-framework,CoreFoundation])
175     VLC_ADD_LDFLAGS([vlc],[-Wl,-undefined,dynamic_lookup])
176     VLC_ADD_LDFLAGS([libvlc_control],[-Wl,dynamic_lookup])
177     VLC_ADD_LDFLAGS([ffmpeg i420_rgb_mmx x264],[-Wl,-read_only_relocs,suppress])
178     VLC_ADD_CFLAGS([motion],[-fconstant-cfstrings])
179     VLC_ADD_LDFLAGS([libvlc],[-Wl,-framework,Cocoa,-framework,CoreFoundation])
180     VLC_ADD_LDFLAGS([motion],[-Wl,-framework,IOKit,-framework,CoreFoundation])
181     AC_ARG_ENABLE(macosx-defaults,
182         [  --enable-macosx-defaults Build the default configuration on Mac OS X (default enabled)])
183     if test "x${enable_macosx_defaults}" != "xno"
184     then
185         echo ""
186         echo "Building with Mac OS X defaults:"
187         with_macosx_version_min="10.4"
188         echo "  Assuming --with-macosx-version-min=10.4"
189         build_dir=`pwd`
190         echo "  Assuming --prefix=${build_dir}/vlc_install_dir"
191         ac_default_prefix="${build_dir}/vlc_install_dir"
192         enable_macosx="yes"
193         echo "  Assuming --enable-macosx"
194         enable_faad="yes"
195         echo "  Assuming --enable-faad"
196         enable_flac="yes"
197         echo "  Assuming --enable-flac"
198         enable_theora="yes"
199         echo "  Assuming --enable-theora"
200         enable_shout="yes"
201         echo "  Assuming --enable-shout"
202         enable_cddax="yes"
203         echo "  Assuming --enable-cddax"
204         enable_vcdx="yes"
205         echo "  Assuming --enable-vcdx"
206         enable_caca="yes"
207         echo "  Assuming --enable-caca"
208         enable_goom="yes"
209         echo "  Assuming --enable-goom"
210         enable_ncurses="yes"
211         echo "  Assuming --enable-ncurses"
212         enable_twolame="yes"
213         echo "  Assuming --enable-twolame"
214         enable_realrtsp="yes"
215         echo "  Assuming --enable-realrtsp"
216
217         enable_skins2="no"
218         echo "  Assuming --disable-skins2"
219         enable_x11="no"
220         echo "  Assuming --disable-x11"
221         enable_glx="no"
222         echo "  Assuming --disable-glx"
223         enable_xvideo="no"
224         echo "  Assuming --disable-xvideo"
225     fi
226     if test ".`uname -p`" = ".i386"; then
227         dnl Due to a ld(64) bug in 10.5 we cannot use our mmx code
228         dnl without hacking it a lot, we disable mmx and sse.
229         dnl (that bug is about ld being unable to handle
230         dnl text relocation)
231         save_cflags="$CFLAGS"
232         CFLAGS="$CFLAGS -dynamiclib -single_module -read_only_relocs suppress"
233         AC_TRY_LINK(
234             [int a;], [asm("movq _a,%mm0\n");],
235             ac_ld_does_not_support_text_reloc=no,
236             ac_ld_does_not_support_text_reloc=yes)
237         CFLAGS="$save_cflags"
238
239         if test "x$ac_ld_does_not_support_text_reloc" = "xyes"; then
240             enable_mmx="no"
241             echo "  Assuming --disable-mmx (due to a bug in ld)"
242             enable_sse="no"
243             echo "  Assuming --disable-sse (due to a bug in ld)"
244         fi
245     fi
246     dnl
247     dnl  Check for Mac OS X SDK settings
248     dnl
249     AC_ARG_WITH(macosx-sdk,
250        [  --with-macosx-sdk=DIR   compile using the SDK in DIR])
251     if test "${with_macosx_sdk}" != "" ; then
252         CC="${CC} -isysroot ${with_macosx_sdk}" 
253         CXX="${CXX} -isysroot ${with_macosx_sdk}"
254         OBJC="${OBJC} -isysroot ${with_macosx_sdk}"
255         LD="${LD} -syslibroot ${with_macosx_sdk}"
256     fi
257     AC_ARG_WITH(macosx-version-min,
258        [  --with-macosx-version-min=VERSION  compile for MacOSX VERSION and above])
259     if test "${with_macosx_version_min}" != "" ; then
260         CC="${CC} -mmacosx-version-min=${with_macosx_version_min}" 
261         CXX="${CXX} -mmacosx-version-min=${with_macosx_version_min}"
262         OBJC="${OBJC} -mmacosx-version-min=${with_macosx_version_min}"
263         LD="${LD} -macosx_version_min=${with_macosx_version_min}"
264         CFLAGS_save="${CFLAGS_save} -DMACOSX_DEPLOYMENT_TARGET=${with_macosx_version_min}"; CFLAGS="${CFLAGS_save}"
265         CXXFLAGS_save="${CXXFLAGS_save} -DMACOSX_DEPLOYMENT_TARGET=${with_macosx_version_min}"; CXXFLAGS="${CXXFLAGS_save}"
266         OBJCFLAGS_save="${OBJCFLAGS_save} -DMACOSX_DEPLOYMENT_TARGET=${with_macosx_version_min}"; OBJCFLAGS="${OBJCFLAGS_save}"
267         MACOSX_DEPLOYMENT_TARGET=${with_macosx_version_min}
268         export MACOSX_DEPLOYMENT_TARGET
269     fi
270     ;;
271   *mingw32* | *cygwin* | *wince* | *mingwce* | *pe*)
272     AC_CHECK_TOOL(WINDRES, windres, :)
273
274     case "${host_os}" in
275       *wince* | *mingwce* | *mingw32ce* | *pe*)
276         SYS=mingwce
277         ;;
278       *mingw32*)
279         SYS=mingw32
280         ;;
281       *cygwin*)
282         dnl Check if we are using the mno-cygwin mode in which case we are
283         dnl actually dealing with a mingw32 compiler.
284         AC_EGREP_CPP(yes,
285             [#ifdef WIN32
286              yes
287              #endif],
288             SYS=mingw32, SYS=cygwin)
289         ;;
290     esac
291
292     if test "${SYS}" = "mingw32"; then
293         # add ws2_32 for closesocket, select, recv
294         VLC_ADD_LIBS([libvlc],[-lws2_32 -lnetapi32 -lwinmm])
295         VLC_ADD_LDFLAGS([vlc],[-mwindows])
296         VLC_ADD_LIBS([activex mozilla],[-lgdi32])
297         VLC_ADD_LIBS([cdda vcdx cddax sdl_image],[-lwinmm])
298         VLC_ADD_LIBS([access_http access_mms access_udp access_tcp access_ftp access_rtmp access_output_udp access_output_shout sap slp http stream_out_standard stream_out_rtp vod_rtsp access_realrtsp telnet rc netsync gnutls growl_udp flac ts audioscrobbler lua],[-lws2_32])
299     fi
300     if test "${SYS}" = "mingwce"; then
301         # add ws2 for closesocket, select, recv
302         VLC_ADD_CPPFLAGS([libvlc vlc],[-Dmain(a,b)=maince(a,b)])
303         VLC_ADD_LDFLAGS([libvlc vlc],[-e WinMainCRTStartup])
304         VLC_ADD_LIBS([libvlc access_http access_mms access_udp access_tcp access_ftp access_rtmp access_output_udp sap http netsync audioscrobbler growl rtp stream_out_rtp],[-lws2])
305         VLC_ADD_LIBS([libvlc],[-lmmtimer])
306    fi
307     ;;
308   *nto*)
309     SYS=nto
310     VLC_ADD_LIBS([x11 xvideo],[-lsocket])
311     ;;
312   solaris*)
313     SYS=solaris
314     # _POSIX_PTHREAD_SEMANTICS is needed to get the POSIX ctime_r
315     # Perhaps it is useful other places as well? 
316     CFLAGS_save="${CFLAGS_save} -D_POSIX_PTHREAD_SEMANTICS"; CFLAGS="${CFLAGS_save}"
317     ;;
318   hpux*)
319     SYS=hpux
320     ;;
321   beos)
322     SYS=beos
323     CFLAGS_save="${CFLAGS_save} -Wno-multichar"; CFLAGS="${CFLAGS_save}"
324     CXXFLAGS_save="${CXXFLAGS_save} -Wno-multichar"; CXXFLAGS="${CXXFLAGS_save}"
325     VLC_ADD_CXXFLAGS([beos],[])
326     VLC_ADD_LIBS([vlc libvlc logger],[-lbe])
327     VLC_ADD_LIBS([beos],[-lbe -lmedia -ltranslation -ltracker -lgame])
328     VLC_ADD_LIBS([dvdnav dvdread],[-ldl])
329     VLC_ADD_LIBS([access_file],[-lpoll])
330     LDFLAGS_save="${LDFLAGS_save} -lintl"; LDFLAGS="${LDFLAGS_save}"
331     dnl Check for BONE
332     if test -f /boot/beos/system/lib/libbind.so; then
333         VLC_ADD_LIBS([access_file access_ftp access_mms access_output_udp telnet netsync sap libvlc growl_udp],[-lbind -lsocket])
334     else
335         VLC_ADD_LIBS([access_file access_ftp access_mms access_output_udp telnet netsync sap libvlc growl_udp],[-lnet])
336     fi
337
338     dnl Ugly check for Zeta
339     if test -f /boot/beos/system/lib/libzeta.so; then
340         VLC_ADD_LIBS([beos],[-lzeta])
341     fi
342     ;;
343   *)
344     SYS="${host_os}"
345     ;;
346 esac
347 AM_CONDITIONAL(HAVE_BEOS, test "${SYS}" = "beos")
348 AM_CONDITIONAL(HAVE_DARWIN, test "${SYS}" = "darwin")
349 AM_CONDITIONAL(HAVE_WIN32, test "${SYS}" = "mingw32")
350 AM_CONDITIONAL(HAVE_WINCE, test "${SYS}" = "mingwce")
351
352 dnl
353 dnl Sadly autoconf doesn't think about testing foo.exe when ask to test 
354 dnl for program foo on win32
355
356 case "${build_os}" in
357     cygwin|msys)
358         ac_executable_extensions=".exe"
359     ;;
360     *)
361     ;;
362 esac
363
364 dnl 
365 dnl  Libtool
366 dnl  It's very bad, but our former custom system was worst
367 dnl  -- Courmisch
368 dnl
369
370 dnl override platform specific check for dependent libraries
371 dnl otherwise libtool linking of shared libraries will
372 dnl fail on anything other than pass_all.
373 AC_CACHE_VAL(lt_cv_deplibs_check_method,
374     [lt_cv_deplibs_check_method=pass_all])
375
376 AC_DISABLE_STATIC
377 AC_DISABLE_FAST_INSTALL
378 AC_LIBTOOL_DLOPEN
379 AC_LIBTOOL_WIN32_DLL
380 m4_undefine([AC_PROG_F77])
381 m4_defun([AC_PROG_F77],[])
382 AC_PROG_LIBTOOL
383
384 m4_undefine([AC_DEPLIBS_CHECK_METHOD])
385 m4_defun([AC_DEPLIBS_CHECK_METHOD],[])
386
387 lt_cv_deplibs_check_method=pass_all
388
389
390 dnl
391 dnl Gettext stuff
392 dnl
393 AM_GNU_GETTEXT_VERSION([0.17])
394 AM_GNU_GETTEXT([external])
395 VLC_ADD_LIBS([libvlc vlc], [${LTLIBINTL}])
396
397 dnl
398 dnl Iconv stuff
399 dnl
400 AM_ICONV
401 AS_IF([test "$am_cv_func_iconv" != "yes"],
402         [AC_MSG_ERROR([libiconv is needed for VLC to work properly])])
403 VLC_ADD_CFLAGS([libvlc],[${INCICONV}])
404 VLC_ADD_LIBS([libvlc],[${LTLIBICONV}])
405
406 dnl Check for the need to include the mingwex lib for mingw32
407 if test "${SYS}" = "mingw32"
408 then
409     AC_CHECK_LIB(mingwex,opendir,
410         AC_CHECK_LIB(mingw32,opendir,,
411             [VLC_ADD_LIBS([libvlc gtk],[-lmingwex])])
412     )
413 fi
414
415 dnl Check for fnative-struct or mms-bitfields support for mingw32
416 if test "${SYS}" = "mingw32"
417 then
418     AC_CACHE_CHECK([if \$CC accepts -mms-bitfields],
419         [ac_cv_c_mms_bitfields],
420         [CFLAGS="${CFLAGS_save} -mms-bitfields"
421          AC_TRY_COMPILE([],,ac_cv_c_mms_bitfields=yes, ac_cv_c_mms_bitfields=no)])
422     if test "${ac_cv_c_mms_bitfields}" != "no"; then
423         CFLAGS_save="${CFLAGS_save} -mms-bitfields";
424         CXXFLAGS_save="${CXXFLAGS_save} -mms-bitfields";
425     else
426         AC_CACHE_CHECK([if \$CC accepts -fnative-struct],
427             [ac_cv_c_fnative_struct],
428             [CFLAGS="${CFLAGS_save} -fnative-struct"
429              AC_TRY_COMPILE([],,ac_cv_c_fnative_struct=yes, ac_cv_c_fnative_struct=no)])
430         if test "${ac_cv_c_fnative_struct}" != "no"; then
431             CFLAGS_save="${CFLAGS_save} -fnative-struct";
432             CXXFLAGS_save="${CXXFLAGS_save} -fnative-struct";
433         fi
434     fi
435
436     CFLAGS="${CFLAGS_save}"; CXXFLAGS="${CXXFLAGS_save}"
437 fi
438
439 dnl Check for fvtable-thunks support for mingw32
440 if test "${SYS}" = "mingw32" -a "${CXX}" != ""
441 then
442 AC_LANG_PUSH(C++)
443     AC_CACHE_CHECK([if \$CXX accepts -fvtable-thunks],
444         [ac_cv_cxx_fvtable_thunks],
445         [CXXFLAGS="${CXXFLAGS_save} -Wall -Werror -fvtable-thunks"
446          AC_TRY_COMPILE([],,ac_cv_cxx_fvtable_thunks=yes,
447                         ac_cv_cxx_fvtable_thunks=no)])
448     if test "${ac_cv_cxx_fvtable_thunks}" = "yes"; then
449         CXXFLAGS_mingw32_special="-fvtable-thunks"
450     fi
451
452     CXXFLAGS_save="${CXXFLAGS_save} ${CXXFLAGS_mingw32_special}"; CXXFLAGS="${CXXFLAGS_save}"
453 AC_LANG_POP(C++)
454 fi
455
456 dnl Plugin compilation stuff
457
458 VLC_LIBRARY_SUFFIX
459
460 dnl The -DSYS_FOO flag
461 CPPFLAGS_save="${CPPFLAGS_save} -DSYS_`echo ${SYS} | sed -e 's/-.*//' | tr 'abcdefghijklmnopqrstuvwxyz.' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ_'`"; CPPFLAGS="${CPPFLAGS_save}"
462
463 dnl Check for system libs needed
464 need_libc=false
465
466 dnl Check for usual libc functions
467 AC_CHECK_FUNCS([gettimeofday strtod strtol strtof strtoll strtoull strsep isatty vasprintf asprintf swab sigrelse getpwuid memalign posix_memalign if_nametoindex atoll getenv putenv setenv gmtime_r ctime_r localtime_r lrintf daemon scandir fork bsearch lstat strlcpy strdup strndup strnlen atof lldiv posix_fadvise posix_madvise])
468 AC_CHECK_FUNCS(strcasecmp,,[AC_CHECK_FUNCS(stricmp)])
469 AC_CHECK_FUNCS(strncasecmp,,[AC_CHECK_FUNCS(strnicmp)])
470 AC_CHECK_FUNCS(strcasestr,,[AC_CHECK_FUNCS(stristr)])
471 AC_FUNC_ALLOCA
472
473 AH_BOTTOM([#include <vlc_fixups.h>])
474
475 AC_CHECK_FUNCS(mmap, [VLC_ADD_PLUGIN([access_mmap])])
476
477 dnl Check for setlocal and langinfo
478 AC_CHECK_FUNCS(setlocale)
479 AC_CHECK_HEADERS(langinfo.h)
480 AC_CHECK_FUNCS(nl_langinfo)
481
482 AC_CACHE_CHECK([for nl_langinfo and CODESET], ac_cv_langinfo_codeset,
483   [AC_TRY_LINK([#include <langinfo.h>],
484     [char* cs = nl_langinfo(CODESET);],
485     ac_cv_langinfo_codeset=yes,
486     ac_cv_langinfo_codeset=no)
487   ])
488 if test ${ac_cv_langinfo_codeset} = yes; then
489   AC_DEFINE(HAVE_LANGINFO_CODESET, 1,
490     [Define if you have <langinfo.h> and nl_langinfo(CODESET).])
491 fi
492
493 AC_CHECK_FUNCS(connect,,[
494   AC_CHECK_LIB(socket,connect,[
495     VLC_ADD_LIBS([libvlc cdda cddax],-lsocket)
496     LIBS_socket="-lsocket"
497   ])
498 ])
499
500 AC_CHECK_FUNCS(send,,[
501   AC_CHECK_LIB(socket,send,[
502     VLC_ADD_LIBS([access_http access_mms access_udp access_tcp access_ftp access_rtmp sap access_output_udp stream_out_standard growl_udp],[-lsocket])
503   ])
504 ])
505
506 AC_CHECK_FUNCS(gethostbyname,,[
507   AC_CHECK_LIB(nsl,gethostbyname,[
508     VLC_ADD_LIBS([cdda cddax libvlc],[-lnsl])
509   ],[
510     AC_CHECK_LIB(bind,gethostbyname,[
511       VLC_ADD_LIBS([access_mms],[-lbind])
512     ])
513   ])
514 ])
515
516 AC_CHECK_HEADERS(zlib.h, [
517   VLC_ADD_LIBS([access_http],[-lz])
518 ])
519
520 dnl Check for socklen_t
521 AH_TEMPLATE(socklen_t, [Define to `int' if <sys/socket.h> does not define.])
522 AC_CACHE_CHECK([for socklen_t in sys/socket.h],
523 ac_cv_type_socklen_t,
524 [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([
525 [#include <sys/types.h>
526 #ifdef WIN32
527 # include <winsock2.h>
528 # include <ws2tcpip.h>
529 #else
530 # include <sys/socket.h>
531 #endif]], [[socklen_t len; len = 0;]])],
532 ac_cv_type_socklen_t=yes,
533 ac_cv_type_socklen_t=no)])
534 AS_IF([test "$ac_cv_type_socklen_t" = no],
535  [AC_DEFINE(socklen_t, int)])
536
537 dnl Check for struct sockaddr_storage
538 AH_TEMPLATE(sockaddr_storage, [Define to `sockaddr' if <sys/socket.h> does not define.])
539 AH_TEMPLATE(ss_family, [Define to `sa_family' if <sys/socket.h> does not define.])
540 AC_CACHE_CHECK([for struct sockaddr_storage], ac_cv_struct_sockaddr_storage,
541   [AC_TRY_COMPILE(
542     [#include <sys/types.h>
543      #if defined( UNDER_CE )
544      # include <winsock.h>
545      #elif defined( WIN32 )
546      # include <winsock2.h>
547      #else
548      # include <sys/socket.h>
549      #endif], [struct sockaddr_storage addr;],
550      ac_cv_struct_sockaddr_storage=yes,
551      ac_cv_struct_sockaddr_storage=no)])
552 AS_IF([test "${ac_cv_struct_sockaddr_storage}" = no], [
553   AC_DEFINE(sockaddr_storage, sockaddr)
554   AC_DEFINE(ss_family, sa_family)
555 ])
556
557 dnl getaddrinfo, getnameinfo and gai_strerror check
558 dnl  -lnsl and -lsocket are needed on Solaris;
559 dnl  we purposedly make the test fail on Windows
560 LIBS_save="${LIBS}"
561 AH_TEMPLATE(HAVE_GETADDRINFO, [Define to 1 if you have the `getaddrinfo' function.])
562 AC_SEARCH_LIBS([getaddrinfo], [nsl], [AC_DEFINE(HAVE_GETADDRINFO)],, [${LIBS_socket}])
563
564 dnl NOTE: we assume getaddrinfo will be present if getnameinfo or gai_strerro
565 dnl are
566 LIBS="${LIBS_gai}"
567 AC_CHECK_FUNCS([getnameinfo gai_strerror])
568 LIBS="${LIBS_save}"
569
570 AH_TEMPLATE(HAVE_ADDRINFO, [Define to 1 if <netdb.h> defines `struct addrinfo'.])
571 AC_CHECK_TYPES([struct addrinfo],[AC_DEFINE(HAVE_ADDRINFO)],,
572 [#include <sys/types.h>
573 #if defined( WIN32 ) || defined( UNDER_CE )
574 # if defined(UNDER_CE) && defined(sockaddr_storage)
575 #  undef sockaddr_storage
576 # endif
577 # include <winsock2.h>
578 # include <ws2tcpip.h>
579 #else
580 # include <netdb.h>
581 #endif])
582
583 dnl Check for va_copy
584 AC_CACHE_CHECK([for va_copy], ac_cv_c_va_copy,
585   AC_TRY_LINK(
586     [#include <stdarg.h>],
587     [va_list ap1, ap2; va_copy(ap1,ap2);],
588     [ac_cv_c_va_copy="yes"],
589     [ac_cv_c_va_copy="no"]))
590 if test "${ac_cv_c_va_copy}" = "yes"; then
591   AC_DEFINE(HAVE_VA_COPY, 1, [Define if <stdarg.h> defines va_copy.])
592 fi
593 AC_CACHE_CHECK([for __va_copy], ac_cv_c___va_copy,
594   AC_TRY_LINK(
595     [#include <stdarg.h>],
596     [va_list ap1, ap2; __va_copy(ap1,ap2);],
597     [ac_cv_c___va_copy="yes"],
598     [ac_cv_c___va_copy="no"]))
599 if test "${ac_cv_c___va_copy}" = "yes"; then
600   AC_DEFINE(HAVE___VA_COPY, 1, [Define if <stdarg.h> defines __va_copy.])
601 fi
602
603 AC_CHECK_FUNCS(inet_aton,,[
604   AC_CHECK_LIB(resolv,inet_aton,[
605     VLC_ADD_LIBS([libvlc],[-lresolv])
606   ])
607 ])
608
609 dnl Check for getopt (always use builtin one on win32)
610 if test "${SYS}" = "mingw32" -o "${SYS}" = "mingwce"; then
611 need_getopt=:
612 else
613 need_getopt=false
614 AC_CHECK_FUNCS(getopt_long,[AC_DEFINE(HAVE_GETOPT_LONG,1,long getopt support)],
615 [ # FreeBSD has a gnugetopt library for this:
616   AC_CHECK_LIB([gnugetopt],[getopt_long],
617     [AC_DEFINE(HAVE_GETOPT_LONG,1,getopt support)
618      VLC_ADD_LIBS([libvlc],[-lgnugetopt])],
619     [need_getopt=:])])
620 fi
621 AM_CONDITIONAL(BUILD_GETOPT, ${need_getopt})
622
623 if test "${SYS}" != "mingw32" -a "${SYS}" != "mingwce"; then
624 AC_TYPE_SIGNAL
625 AC_CHECK_LIB(m,cos,[
626   VLC_ADD_LIBS([adjust wave ripple psychedelic gradient a52tofloat32 dtstofloat32 x264 goom visual panoramix rotate noise grain],[-lm])
627 ])
628 AC_CHECK_LIB(m,pow,[
629   VLC_ADD_LIBS([ffmpeg ffmpegaltivec stream_out_transrate i420_rgb faad twolame equalizer spatializer param_eq libvlc vorbis freetype mod mpc dmo quicktime realaudio galaktos opengl],[-lm])
630 ])
631 AC_CHECK_LIB(m,sqrt,[
632   VLC_ADD_LIBS([headphone_channel_mixer normvol speex mono colorthres extract],[-lm])
633 ])
634 AC_CHECK_LIB(m,ceil,[
635   VLC_ADD_LIBS([mosaic],[-lm])
636 ])
637 AC_CHECK_LIB(m,exp,[
638   VLC_ADD_LIBS([gaussianblur],[-lm])
639 ])
640 AC_CHECK_LIB(mx,sqrtf,[
641   VLC_ADD_LIBS([x264],[-lmx])
642 ])
643 fi # end "${SYS}" != "mingw32" -a "${SYS}" != "mingwce"
644
645 dnl Check for dynamic plugins
646 ac_cv_have_plugins=no
647
648 # OS X style
649 AC_CHECK_HEADERS(mach-o/dyld.h,
650   [AC_CHECK_FUNCS(NSLinkModule,
651     [AC_DEFINE(HAVE_DL_DYLD, 1, [Define if you have the Darwin dyld API])
652      ac_cv_have_plugins=yes])])
653
654 # HP-UX style
655 if test "${ac_cv_have_plugins}" = "no"; then
656   AC_CHECK_HEADERS(dl.h)
657   ac_cv_my_have_shl_load=no
658   AC_CHECK_FUNC(shl_load,
659    [ac_cv_my_have_shl_load=yes,
660     AC_CHECK_LIB(dld, shl_load,
661      [ac_cv_my_have_shl_load=yes
662       VLC_ADD_LIBS([libvlc],[-ldld])])])
663   if test "${ac_cv_my_have_shl_load}" = "yes"; then
664     AC_DEFINE(HAVE_DL_SHL_LOAD, 1, [Define if you have the shl_load API])
665     ac_cv_have_plugins=yes
666   fi
667 fi
668
669 # Whatever style
670 if test "${ac_cv_have_plugins}" = "no"; then
671   AC_CHECK_LIB(dld, dld_link,
672    [VLC_ADD_LIBS([libvlc],[-ldld])
673     AC_DEFINE(HAVE_DL_DLD_LINK, 1, [Define if you have the GNU dld library])
674     ac_cv_have_plugins=yes])
675 fi
676
677 # Win32 style
678 if test "${ac_cv_have_plugins}" = "no"; then
679   if test "${SYS}" = "mingw32" -o "${SYS}" = "cygwin"; then
680     AC_CHECK_LIB(kernel32, main,
681      [VLC_ADD_LIBS([libvlc],[-lkernel32])
682       AC_DEFINE(HAVE_DL_WINDOWS, 1, [Define if you have Windows' LoadLibrary])
683       ac_cv_have_plugins=yes])
684   fi
685 fi
686
687 # WinCE style
688 if test "${ac_cv_have_plugins}" = "no"; then
689   if test "${SYS}" = "mingwce"; then
690     AC_DEFINE(HAVE_DL_WINDOWS, 1, [Define if you have Windows' LoadLibrary])
691     ac_cv_have_plugins=yes
692   fi
693 fi
694
695 # BeOS style
696 if test "${ac_cv_have_plugins}" = "no"; then
697   AC_CHECK_HEADERS(image.h)
698   AC_CHECK_FUNCS(load_add_on,
699    [AC_DEFINE(HAVE_DL_BEOS, 1, [Define if you have the BeOS dl])
700     ac_cv_have_plugins=yes])
701 fi
702
703 # Only test for dlopen() if the others didn't work
704 if test "${ac_cv_have_plugins}" = "no"; then
705   AC_CHECK_HEADERS(dlfcn.h sys/dl.h)
706   ac_cv_my_have_dlopen=no
707   AC_CHECK_FUNC(dlopen,
708     ac_cv_my_have_dlopen=yes,
709     AC_CHECK_LIB(dl, dlopen,
710       ac_cv_my_have_dlopen=yes
711       VLC_ADD_LIBS([libvlc realaudio],[-ldl]),
712       AC_CHECK_LIB(svld, dlopen,
713         ac_cv_my_have_dlopen=yes
714         VLC_ADD_LIBS([libvlc],[-lsvld]))))
715   if test "${ac_cv_my_have_dlopen}" = "yes"; then
716     AC_DEFINE(HAVE_DL_DLOPEN, 1, [Define if you have the dlopen API])
717     ac_cv_have_plugins=yes
718   fi
719 fi
720
721 if test "${SYS}" != "mingw32" -a "${SYS}" != "mingwce"; then
722 dnl Check for pthreads - borrowed from XMMS
723 THREAD_LIB=error
724 if test "${THREAD_LIB}" = "error"; then
725   AC_CHECK_LIB(pthread,main,THREAD_LIB="-lpthread")
726 fi
727 if test "${THREAD_LIB}" = "error"; then
728   AC_CHECK_LIB(pthreads,main,THREAD_LIB="-lpthreads")
729 fi
730 if test "${THREAD_LIB}" = "error"; then
731   AC_CHECK_LIB(c_r,main,THREAD_LIB="-lc_r")
732 fi
733 if test "${THREAD_LIB}" = "error"; then
734   AC_CHECK_FUNCS(pthread_mutex_lock)
735   THREAD_LIB=""
736 fi
737
738 VLC_ADD_LIBS([libvlc plugin],[${THREAD_LIB}])
739
740 AC_CHECK_LIB(rt, clock_nanosleep, [
741   VLC_ADD_LIBS([libvlc],[-lrt])
742   AC_DEFINE(HAVE_CLOCK_NANOSLEEP, 1, [Define to 1 if you have clock_nanosleep.])
743 ], [
744   dnl HP/UX port
745   AC_CHECK_LIB(rt,sem_init, [VLC_ADD_LIBS([libvlc],[-lrt])])
746 ])
747
748 have_nanosleep=false
749 AC_CHECK_FUNCS(nanosleep,have_nanosleep=:,[
750   AC_CHECK_LIB(rt,nanosleep,
751     [VLC_ADD_LIBS([libvlc],[-lrt]) have_nanosleep=:],
752     [AC_CHECK_LIB(posix4,nanosleep,
753         [VLC_ADD_LIBS([libvlc],[-lposix4]) have_nanosleep=:])]
754   )
755 ])
756 if ${have_nanosleep}; then
757   AC_DEFINE(HAVE_NANOSLEEP, 1, [Define if nanosleep is available.])
758 fi
759 fi # end "${SYS}" != "mingw32" -a "${SYS}" != "mingwce" 
760
761 dnl Check for misc headers
762 AC_MSG_CHECKING(for strncasecmp in strings.h)
763 AC_EGREP_HEADER(strncasecmp,strings.h,[
764   AC_MSG_RESULT(yes)
765   AC_DEFINE(STRNCASECMP_IN_STRINGS_H, 1,
766             Define if <strings.h> defines strncasecmp.)],[
767   AC_MSG_RESULT(no)])
768
769 dnl Check for headers
770 AC_CHECK_HEADERS(signal.h time.h errno.h stdint.h stdbool.h getopt.h strings.h inttypes.h sys/int_types.h wchar.h locale.h)
771 AC_CHECK_HEADERS(sys/sockio.h fcntl.h sys/types.h sys/time.h sys/times.h sys/ioctl.h sys/stat.h)
772 AC_CHECK_HEADERS([arpa/inet.h netinet/in.h netinet/udplite.h])
773 AC_CHECK_HEADERS([net/if.h], [], [],
774   [
775     #include <sys/socket.h>
776   ])
777 if test "${SYS}" != "mingw32" -a "${SYS}" != "mingwce"; then
778 AC_CHECK_HEADERS(machine/param.h sys/shm.h)
779 AC_CHECK_HEADERS([linux/version.h linux/dccp.h])
780 AC_CHECK_HEADERS(syslog.h)
781 fi # end "${SYS}" != "mingw32" -a "${SYS}" != "mingwce"
782
783 AC_HEADER_TIME
784
785 dnl LP64 adn LLP64 architectures had better define ssize_t by themselves...
786 AH_TEMPLATE(ssize_t, [Define to `int' if <stddef.h> does not define.])
787 AC_CHECK_TYPE(ssize_t,, [
788   AC_DEFINE(ssize_t, int)
789 ])
790
791 dnl don't attemp to use poll on darwin, it can't poll a tty. select will do a better job.
792 if test "${SYS}" != "darwin"; then
793   AC_SEARCH_LIBS(poll, [poll], [AC_DEFINE(HAVE_POLL, 1, [Define to 1 if the OS is usabl... err, has poll().])])
794 fi
795
796 dnl Check for dirent
797 need_dirent=false
798 AC_CHECK_HEADERS(dirent.h,,[need_dirent=:])
799 AM_CONDITIONAL(BUILD_DIRENT, ${need_dirent})
800
801 dnl Mac OS X and other OSes don't have declaration for nanosleep
802 if test "${SYS}" != "mingw32" -a "${SYS}" != "mingwce"; then
803 AC_MSG_CHECKING(for nanosleep in time.h)
804 AC_EGREP_HEADER(nanosleep,time.h,[
805   AC_MSG_RESULT(yes)
806   AC_DEFINE(HAVE_DECL_NANOSLEEP, 1,
807             Define if <time.h> defines nanosleep.)
808 ],[
809   AC_MSG_RESULT(no)
810 ])
811 fi # end "${SYS}" != "mingw32" -a "${SYS}" != "mingwce"
812
813 dnl Make sure we have timespecs
814 AC_MSG_CHECKING(for timespec in sys/time.h)
815 AC_EGREP_HEADER(timespec,sys/time.h,[
816   AC_MSG_RESULT(yes)
817   AC_DEFINE(HAVE_STRUCT_TIMESPEC, 1,
818             Define if <sys/time.h> defines struct timespec.)
819 ],[
820   AC_MSG_RESULT(no)
821 ])
822
823 dnl Check for threads library
824 if test "${SYS}" != "mingw32" -a "${SYS}" != "mingwce"; then
825 AC_CHECK_HEADERS(pthread.h kernel/scheduler.h kernel/OS.h)
826 fi # end "${SYS}" != "mingw32" -a "${SYS}" != "mingwce"
827
828 dnl Find where are the X headers and libraries
829 AC_PATH_XTRA()
830
831 dnl it seems that autoconf do the pkg-config detection only for the first PKG_CHECK_MODULES in the configure.ac ( which is logical) but in our case it is nested in a if so it was not working if you're not on linux or have disable hal.
832
833 PKG_PROG_PKG_CONFIG()
834
835 dnl Check for hal
836 AC_ARG_ENABLE(hal,
837   [  --enable-hal            Linux HAL services discovery (default enabled)])
838  
839 if test "${enable_hal}" != "no"
840 then
841   PKG_CHECK_MODULES(HAL, hal >= 0.5.0,
842     [ AC_DEFINE( HAVE_HAL_1, 1 , [Define if you have the new HAL library API])
843       AC_DEFINE( HAVE_HAL, 1, [Define if you have the HAL library] )
844       VLC_ADD_PLUGIN([hal])
845       VLC_ADD_PLUGIN([probe_hal])
846       VLC_ADD_LIBS([libvlc hal probe_hal],[$HAL_LIBS])
847       VLC_ADD_CFLAGS([libvlc hal probe_hal],[$HAL_CFLAGS])],   
848     dnl No hal 0.5 Test for 0.2
849     [ PKG_CHECK_MODULES( HAL, hal >= 0.2.97, 
850        [AC_DEFINE(HAVE_HAL, 1, [Define if you have the HAL library])
851         VLC_ADD_PLUGIN([hal])
852         VLC_ADD_LIBS([libvlc hal],[$HAL_LIBS])
853         VLC_ADD_CFLAGS([libvlc hal],[$HAL_CFLAGS])],
854        [AC_MSG_WARN(HAL library not found)])
855     ]
856   )
857 fi
858
859 dnl Check for dbus
860 AC_ARG_ENABLE(dbus,
861   [  --enable-dbus           Linux D-BUS message bus system (default enabled)])
862 case "${SYS}" in
863     linux*|*bsd*)
864 if test "${enable_dbus}" != "no"
865 then
866   dnl api stable dbus
867   PKG_CHECK_MODULES(DBUS, dbus-1 >= 1.0.0,
868     [ AC_DEFINE( HAVE_DBUS_3, 1, [Define if you have the D-BUS library API >= 1.0.0] )
869       AC_DEFINE( HAVE_DBUS_2, 1, [Define if you have the D-BUS library API >= 0.92] )
870       AC_DEFINE( HAVE_DBUS_1, 1, [Define if you have the D-BUS library API >= 0.30] )
871       AC_DEFINE( HAVE_DBUS, 1, [Define if you have the D-BUS library] )
872       VLC_ADD_LIBS([screensaver libvlc],[$DBUS_LIBS])
873       VLC_ADD_CFLAGS([screensaver libvlc],[$DBUS_CFLAGS])
874       dnl Check for dbus control interface
875         AC_ARG_ENABLE(dbus-control, [  --disable-dbus-control  D-BUS control interface (default enabled)])
876         if test "${enable_dbus_control}" != "no"
877         then
878           VLC_ADD_PLUGIN([dbus])
879           VLC_ADD_LIBS([dbus],[$DBUS_LIBS])
880           VLC_ADD_CFLAGS([dbus],[$DBUS_CFLAGS])
881         fi
882       dnl Check for Telepathy
883         AC_ARG_ENABLE(telepathy, [  --enable-telepathy      Telepathy Presence plugin through DBus(default enabled)])
884         if test "${enable_telepathy}" != "no"; then
885           VLC_ADD_PLUGIN([telepathy])
886           VLC_ADD_LIBS([telepathy],[$DBUS_LIBS])
887           VLC_ADD_CFLAGS([telepathy],[$DBUS_CFLAGS])
888         fi
889         dnl Power Management Inhibiter
890         VLC_ADD_PLUGIN([inhibit])
891         VLC_ADD_LIBS([inhibit],[$DBUS_LIBS])
892         VLC_ADD_CFLAGS([inhibit],[$DBUS_CFLAGS])
893         ],
894     if ${PKG_CONFIG} --exists dbus-1
895     then
896       [AC_ARG_ENABLE(old-dbus,
897         [  --enable-old-dbus       Deprecated D-Bus support (default disabled)])]
898
899       if test "${enable_old_dbus}" != "yes"
900       then
901         echo ""
902         echo "****** WARNING **** WARNING ***** WARNING *************"
903         echo "*** Your D-Bus version is < 1.0.0"
904         echo "*** You are using old and buggy software and so"
905         echo "*** D-Bus support has been disabled."
906         echo "*** Please upgrade D-Bus : http://dbus.freedesktop.org"
907         echo "*** Alternatively you can force the use of your old and"
908         echo "*** buggy D-Bus version by specifying --enable-old-dbus"
909         echo "*******************************************************"
910         echo ""
911       else
912         dnl not too old dbus
913         [ PKG_CHECK_MODULES(DBUS, dbus-1 >= 0.92,
914           [ AC_DEFINE( HAVE_DBUS_2, 1, [Define if you have the D-BUS library API >= 0.92] )
915             AC_DEFINE( HAVE_DBUS_1, 1, [Define if you have the D-BUS library API >= 0.30] )
916             AC_DEFINE( HAVE_DBUS, 1, [Define if you have the D-BUS library] )
917             VLC_ADD_LIBS([screensaver],[$DBUS_LIBS])
918             VLC_ADD_CFLAGS([screensaver],[$DBUS_CFLAGS])],
919           dnl older dbus
920           [ PKG_CHECK_MODULES(DBUS, dbus-1 >= 0.30,
921             [ AC_DEFINE( HAVE_DBUS_1, 1, [Define if you have the D-BUS library API >= 0.30 ] )
922               AC_DEFINE( HAVE_DBUS, 1, [Define if you have the D-BUS library] )
923               VLC_ADD_LIBS([screensaver],[$DBUS_LIBS])
924               VLC_ADD_CFLAGS([screensaver],[$DBUS_CFLAGS])],
925             dnl much older dbus
926             [ PKG_CHECK_MODULES( DBUS, dbus-1, 
927                [AC_DEFINE(HAVE_DBUS, 1, [Define if you have the D-BUS library])
928                 VLC_ADD_LIBS([screensaver],[$DBUS_LIBS])
929                 VLC_ADD_CFLAGS([screensaver],[$DBUS_CFLAGS])],
930                [AC_MSG_WARN(DBUS library not found)])
931             ]
932           )]
933         )]
934       fi
935     fi
936   )
937 fi
938 ;;
939 esac
940
941 dnl Build the gtk_main plugins?
942 NEED_GTK_MAIN=no
943 NEED_GNOME_MAIN=no
944 NEED_GTK2_MAIN=no
945 NEED_GNOME2_MAIN=no
946
947 dnl build the qte plugin ?
948 NEED_QTE_MAIN=no
949
950 dnl Check for ntohl, etc.
951 AC_CACHE_CHECK([for ntohl in sys/param.h],
952     [ac_cv_c_ntohl_sys_param_h],
953     [CFLAGS="${CFLAGS_save} -Wall -Werror"
954      AC_TRY_COMPILE([#include <sys/param.h>],
955         [int meuh; ntohl(meuh);],
956         ac_cv_c_ntohl_sys_param_h=yes, ac_cv_c_ntohl_sys_param_h=no)])
957 if test "${ac_cv_c_ntohl_sys_param_h}" != "no"; then
958     AC_DEFINE(NTOHL_IN_SYS_PARAM_H, 1, Define if <sys/param.h> defines ntohl.)
959 fi
960 CFLAGS="${CFLAGS_save}"
961
962 RDC_PROG_CC_WFLAGS([all extra sign-compare undef pointer-arith bad-function-cast cast-align write-strings missing-prototypes volatile-register-var])
963 RDC_PROG_CC_FLAGS_IFELSE([-pipe])
964
965 dnl Check for various optimization flags
966 AC_CACHE_CHECK([if \$CC accepts -Os],
967     [ac_cv_c_os],
968     [CFLAGS="${CFLAGS_save} -Os"
969      AC_TRY_COMPILE([],,ac_cv_c_os=yes, ac_cv_c_os=no)])
970 if test "${ac_cv_c_os}" != "no"; then
971     CFLAGS_OPTIM_SIZE="${CFLAGS_OPTIM_SIZE} -Os"
972 else 
973     AC_CACHE_CHECK([if \$CC accepts -O],
974         [ac_cv_c_o],
975         [CFLAGS="${CFLAGS_save} -O"
976          AC_TRY_COMPILE([],,ac_cv_c_o=yes, ac_cv_c_o=no)])
977     if test "${ac_cv_c_o}" != "no"; then
978         if test "${ac_cv_c_o3}" = "no"; then
979             CFLAGS_OPTIM_SIZE="${CFLAGS_OPTIM_SIZE} -O"
980         fi
981     fi
982 fi
983
984 AC_CACHE_CHECK([if \$CC accepts -O3],
985     [ac_cv_c_o3],
986     [CFLAGS="${CFLAGS_save} -O3"
987      AC_TRY_COMPILE([],,ac_cv_c_o3=yes, ac_cv_c_o3=no)])
988 if test "${ac_cv_c_o3}" != "no" -a "x${enable_debug}" = "xno"; then
989     CFLAGS_OPTIM_SPEED="${CFLAGS_OPTIM_SPEED} -O3"
990 else
991     AC_CACHE_CHECK([if \$CC accepts -O2],
992         [ac_cv_c_o2],
993         [CFLAGS="${CFLAGS_save} -O2"
994          AC_TRY_COMPILE([],,ac_cv_c_o2=yes, ac_cv_c_o2=no)])
995     if test "${ac_cv_c_o2}" != "no"; then
996         CFLAGS_OPTIM_SPEED="${CFLAGS_OPTIM_SPEED} -O2"
997     else
998         AC_CACHE_CHECK([if \$CC accepts -O],
999             [ac_cv_c_o],
1000             [CFLAGS="${CFLAGS_save} -O"
1001              AC_TRY_COMPILE([],,ac_cv_c_o=yes, ac_cv_c_o=no)])
1002         if test "${ac_cv_c_o}" != "no"; then
1003             CFLAGS_OPTIM_SPEED="${CFLAGS_OPTIM_SPEED} -O"
1004         fi
1005     fi
1006 fi
1007
1008 AC_CACHE_CHECK([if \$CC accepts -O0],
1009     [ac_cv_c_o0],
1010     [CFLAGS="${CFLAGS_save} -O0"
1011      AC_TRY_COMPILE([],,ac_cv_c_o0=yes, ac_cv_c_o0=no)])
1012 if test "${ac_cv_c_o0}" != "no"; then
1013     CFLAGS_NOOPTIM="${CFLAGS_NOOPTIM} -O0"
1014 fi
1015
1016 dnl Check for -ffast-math
1017 AC_CACHE_CHECK([if \$CC accepts -ffast-math],
1018     [ac_cv_c_fast_math],
1019     [CFLAGS="${CFLAGS_save} -ffast-math"
1020      AC_TRY_COMPILE([],,ac_cv_c_fast_math=yes, ac_cv_c_fast_math=no)])
1021 if test "${ac_cv_c_fast_math}" != "no"; then
1022     CFLAGS_OPTIM_SPEED="${CFLAGS_OPTIM_SPEED} -ffast-math"
1023 fi
1024
1025 dnl Check for -funroll-loops
1026 dnl Disabled on BeOS because BeOS' gcc is buggy and may crash with it
1027 if test "${SYS}" != "beos"
1028 then
1029   AC_CACHE_CHECK([if \$CC accepts -funroll-loops],
1030       [ac_cv_c_unroll_loops],
1031       [CFLAGS="${CFLAGS_save} -funroll-loops"
1032        AC_TRY_COMPILE([],,ac_cv_c_unroll_loops=yes, ac_cv_c_unroll_loops=no)])
1033   if test "${ac_cv_c_unroll_loops}" != "no"; then
1034       CFLAGS_OPTIM_SPEED="${CFLAGS_OPTIM_SPEED} -funroll-loops"
1035   fi
1036 fi
1037
1038 dnl Check for -fomit-frame-pointer
1039 AC_CACHE_CHECK([if \$CC accepts -fomit-frame-pointer],
1040     [ac_cv_c_omit_frame_pointer],
1041     [CFLAGS="${CFLAGS_save} -fomit-frame-pointer"
1042      AC_TRY_COMPILE([],,ac_cv_c_omit_frame_pointer=yes, ac_cv_c_omit_frame_pointer=no)])
1043 if test "${ac_cv_c_omit_frame_pointer}" != "no"; then
1044     CFLAGS_OPTIM_NODEBUG="${CFLAGS_OPTIM_NODEBUG} -fomit-frame-pointer"
1045 fi
1046
1047 dnl Check for -fvisibility=hidden
1048 dnl Don't test on mingw32, because it is going to work with just a warning
1049 dnl even if it doesn't support it
1050 if test "${SYS}" != "mingw32"
1051 then
1052 AC_CACHE_CHECK([if \$CC accepts -fvisibility=hidden],
1053     [ac_cv_c_visibility_hidden],
1054     [CFLAGS="${CFLAGS_save} -fvisibility=hidden"
1055      AC_TRY_COMPILE([],,ac_cv_c_visibility_hidden=yes, ac_cv_c_visibility_hidden=no)])
1056 if test "${ac_cv_c_visibility_hidden}" != "no"; then
1057     VLC_ADD_CFLAGS([libvlc plugin],[-fvisibility=hidden])
1058 fi
1059 fi
1060
1061 AM_CONDITIONAL(HAVE_COMPILER_EXPORT, [test "$SYS" = "mingw32" -o "${ac_cv_c_visibility_hidden}" != "no"])
1062
1063 dnl Check for -fvisibility-inlines-hidden (breaks x86_64 linkers)
1064 dnl AC_LANG_PUSH(C++)
1065 dnl     AC_CACHE_CHECK([if \$CXX accepts -fvisibility-inlines-hidden],
1066 dnl         [ac_cv_c_visibility_inlines_hidden],
1067 dnl         [CXXFLAGS="${CXXFLAGS_save} -fvisibility-inlines-hidden"
1068 dnl          AC_TRY_COMPILE([],,ac_cv_c_visibility_inlines_hidden=yes, ac_cv_c_visibility_inlines_hidden=no)])
1069 dnl     if test "${ac_cv_c_visibility_inlines_hidden}" != "no"; then
1070 dnl         VLC_ADD_CXXFLAGS([libvlc plugin],[-fvisibility-inlines-hidden])
1071 dnl     fi
1072 dnl     CXXFLAGS="${CXXFLAGS_save}"
1073 dnl AC_LANG_POP(C++)
1074
1075 dnl Check for -mdynamic-no-pic
1076 dnl AC_CACHE_CHECK([if \$CC accepts -mdynamic-no-pic],
1077 dnl     [ac_cv_c_dynamic_no_pic],
1078 dnl     [CFLAGS="${CFLAGS_save} -mdynamic-no-pic"
1079 dnl      AC_TRY_COMPILE([],,ac_cv_c_dynamic_no_pic=yes, ac_cv_c_dynamic_no_pic=no)])
1080 dnl AS_IF([test "${ac_cv_c_dynamic_no_pic}" != "no"], [
1081 dnl     VLC_ADD_CFLAGS([builtin],[-mdynamic-no-pic])
1082 dnl     VLC_ADD_CFLAGS([libvlc],[-mdynamic-no-pic])
1083 dnl ])
1084
1085 dnl Check for Darwin plugin linking flags
1086 AC_CACHE_CHECK([if \$CC accepts -bundle -undefined error],
1087     [ac_cv_ld_darwin],
1088     [CFLAGS="${CFLAGS_save} -bundle -undefined error"
1089      AC_TRY_COMPILE([],,ac_cv_ld_darwin=yes, ac_cv_ld_darwin=no)])
1090 if test "${ac_cv_ld_darwin}" != "no"; then
1091     VLC_ADD_LDFLAGS([plugin],[-bundle -undefined error])
1092 fi
1093
1094 dnl Check for standard plugin linking flags
1095 dnl BeOS' gcc needs -nostart instead of -shared, even if -shared isn't harmful (just a warning)
1096 dnl AS_IF([test "${SYS}" = "beos"], [
1097 dnl   VLC_ADD_LDFLAGS([plugin mozilla],[-nostart])
1098 dnl ], [
1099 dnl   AC_CACHE_CHECK([if \$CC accepts -shared],
1100 dnl         [ac_cv_ld_plugins],
1101 dnl         [CFLAGS="${CFLAGS_save} -shared"
1102 dnl        AC_TRY_COMPILE([],, ac_cv_ld_plugins=yes, ac_cv_ld_plugins=no)])
1103 dnl   AS_IF([test "${ac_cv_ld_plugins}" != "no"], [
1104 dnl     VLC_ADD_LDFLAGS([plugin mozilla],[-shared])
1105 dnl   ])
1106 dnl ])
1107
1108 dnl Checks for __attribute__(aligned()) directive
1109 AC_CACHE_CHECK([__attribute__ ((aligned ())) support],
1110     [ac_cv_c_attribute_aligned],
1111     [ac_cv_c_attribute_aligned=0
1112         CFLAGS="${CFLAGS_save} -Werror"
1113     for ac_cv_c_attr_align_try in 2 4 8 16 32 64; do
1114         AC_TRY_COMPILE([],
1115         [static char c __attribute__ ((aligned(${ac_cv_c_attr_align_try}))) = 0; return c;],
1116         [ac_cv_c_attribute_aligned="${ac_cv_c_attr_align_try}"])
1117     done
1118         CFLAGS="${CFLAGS_save}"])
1119 if test "${ac_cv_c_attribute_aligned}" != "0"; then
1120     AC_DEFINE_UNQUOTED([ATTRIBUTE_ALIGNED_MAX],
1121         [${ac_cv_c_attribute_aligned}],[Maximum supported data alignment])
1122 fi
1123
1124 dnl Checks for __attribute__(format()) directive
1125 AC_CACHE_CHECK([__attribute__ ((format ())) support with function pointers],
1126     [ac_cv_c_attribute_format],
1127     [ac_cv_c_attribute_format=no
1128         CFLAGS="${CFLAGS_save} -Werror"
1129         AC_TRY_COMPILE([],
1130         [static void (*pf_printf)(const char *, ...) __attribute__ ((format(printf,1,2)));(void)pf_printf;],
1131         [ac_cv_c_attribute_format=yes])
1132         CFLAGS="${CFLAGS_save}"])
1133 if test "${ac_cv_c_attribute_format}" != "no"; then
1134     AC_DEFINE(HAVE_ATTRIBUTE_FORMAT, 1, Support for __attribute__((format())) with function pointers)
1135 fi
1136
1137 dnl Check for __attribute__((packed))
1138 AC_CACHE_CHECK([for __attribute__((packed))],
1139   [ac_cv_c_attribute_packed],
1140   [ac_cv_c_attribute_packed=no
1141    AC_TRY_COMPILE(, [struct __attribute__((__packed__)) foo { int a; } b;],
1142                     [ac_cv_c_attribute_packed=yes])])
1143 if test "${ac_cv_c_attribute_packed}" != "no"; then
1144   AC_DEFINE(HAVE_ATTRIBUTE_PACKED, 1, Support for __attribute__((packed)) for structs)
1145 fi
1146
1147 dnl Check for __attribute__((visibility()))
1148 AC_CACHE_CHECK([for __attribute__((visibility()))],
1149   [ac_cv_c_attribute_visibility],
1150   [ac_cv_c_attribute_visibility=no
1151    AC_TRY_COMPILE(, [extern __attribute__((visibility("default"))) int foo(int);],
1152                     [ac_cv_c_attribute_visibility=yes])])
1153 if test "${ac_cv_c_attribute_visibility}" != "no"; then
1154   AC_DEFINE(HAVE_ATTRIBUTE_VISIBILITY, 1, Support for __attribute__((visibility())) for exporting symbols)
1155 fi
1156
1157 dnl
1158 dnl  Check the CPU
1159 dnl
1160 case "${host_cpu}" in
1161   "")
1162     ARCH=unknown
1163     ;;
1164   *)
1165     ARCH="${host_cpu}"
1166     ;;
1167 esac
1168
1169 dnl
1170 dnl  Enable profiling
1171 dnl
1172 AC_ARG_ENABLE(gprof,
1173 [  --enable-gprof          gprof profiling (default disabled)])
1174 AC_ARG_ENABLE(cprof,
1175 [  --enable-cprof          cprof profiling (default disabled)])
1176 test "${enable_gprof}" != "yes" && enable_gprof="no"
1177 test "${enable_cprof}" != "yes" && enable_cprof="no"
1178
1179 dnl
1180 dnl  default modules
1181 dnl
1182 VLC_ADD_PLUGIN([dummy])
1183 VLC_ADD_PLUGIN([logger])
1184 VLC_ADD_PLUGIN([memcpy])
1185 dnl Demuxers:
1186 VLC_ADD_PLUGIN([mpgv])
1187 VLC_ADD_PLUGIN([mpga])
1188 VLC_ADD_PLUGIN([m4v])
1189 VLC_ADD_PLUGIN([m4a])
1190 VLC_ADD_PLUGIN([h264])
1191 VLC_ADD_PLUGIN([vc1])
1192 VLC_ADD_PLUGIN([demux_cdg])
1193 VLC_ADD_PLUGIN([cdg])
1194 VLC_ADD_PLUGIN([ps])
1195 VLC_ADD_PLUGIN([pva])
1196 VLC_ADD_PLUGIN([avi])
1197 VLC_ADD_PLUGIN([asf])
1198 VLC_ADD_PLUGIN([mp4])
1199 VLC_ADD_PLUGIN([rawdv])
1200 VLC_ADD_PLUGIN([rawvid])
1201 VLC_ADD_PLUGIN([nsv])
1202 VLC_ADD_PLUGIN([real])
1203 VLC_ADD_PLUGIN([aiff])
1204 VLC_ADD_PLUGIN([mjpeg])
1205 VLC_ADD_PLUGIN([wav])
1206 VLC_ADD_PLUGIN([voc])
1207 VLC_ADD_PLUGIN([smf])
1208 VLC_ADD_PLUGIN([demuxdump])
1209 VLC_ADD_PLUGIN([flacsys])
1210 VLC_ADD_PLUGIN([tta])
1211 VLC_ADD_PLUGIN([subtitle])
1212 VLC_ADD_PLUGIN([vobsub])
1213 VLC_ADD_PLUGIN([a52sys])
1214 VLC_ADD_PLUGIN([dtssys])
1215 VLC_ADD_PLUGIN([au])
1216 VLC_ADD_PLUGIN([ty])
1217 VLC_ADD_PLUGIN([xa])
1218 VLC_ADD_PLUGIN([nuv])
1219 dnl Text codecs:
1220 VLC_ADD_PLUGIN([cvdsub])
1221 VLC_ADD_PLUGIN([svcdsub])
1222 VLC_ADD_PLUGIN([spudec])
1223 VLC_ADD_PLUGIN([subsdec])
1224 VLC_ADD_PLUGIN([subsusf])
1225 VLC_ADD_PLUGIN([t140])
1226 VLC_ADD_PLUGIN([dvbsub])
1227 VLC_ADD_PLUGIN([cc])
1228 dnl Video codecs:
1229 VLC_ADD_PLUGIN([cinepak])
1230 dnl Audio codecs:
1231 VLC_ADD_PLUGIN([araw])
1232 VLC_ADD_PLUGIN([adpcm])
1233 VLC_ADD_PLUGIN([mpeg_audio])
1234 VLC_ADD_PLUGIN([lpcm])
1235 VLC_ADD_PLUGIN([a52])
1236 VLC_ADD_PLUGIN([dts])
1237 VLC_ADD_PLUGIN([flac])
1238 dnl Video filters:
1239 VLC_ADD_PLUGIN([deinterlace])
1240 VLC_ADD_PLUGIN([invert])
1241 VLC_ADD_PLUGIN([adjust])
1242 VLC_ADD_PLUGIN([transform])
1243 VLC_ADD_PLUGIN([wave])
1244 VLC_ADD_PLUGIN([ripple])
1245 VLC_ADD_PLUGIN([psychedelic])
1246 VLC_ADD_PLUGIN([gradient])
1247 VLC_ADD_PLUGIN([motionblur])
1248 VLC_ADD_PLUGIN([rv32])
1249 VLC_ADD_PLUGIN([rotate])
1250 VLC_ADD_PLUGIN([noise])
1251 VLC_ADD_PLUGIN([grain])
1252 VLC_ADD_PLUGIN([extract])
1253 VLC_ADD_PLUGIN([sharpen])
1254 VLC_ADD_PLUGIN([seamcarving])
1255 VLC_ADD_PLUGIN([croppadd])
1256 VLC_ADD_PLUGIN([blendbench])
1257 VLC_ADD_PLUGIN([blend])
1258 VLC_ADD_PLUGIN([scale])
1259 VLC_ADD_PLUGIN([image])
1260 VLC_ADD_PLUGIN([vmem])
1261 VLC_ADD_PLUGIN([logo])
1262 VLC_ADD_PLUGIN([magnify])
1263 VLC_ADD_PLUGIN([puzzle])
1264 VLC_ADD_PLUGIN([colorthres])
1265 dnl Meta demuxers:
1266 VLC_ADD_PLUGIN([playlist])
1267 VLC_ADD_PLUGIN([export])
1268 VLC_ADD_PLUGIN([nsc])
1269 VLC_ADD_PLUGIN([xtag])
1270 dnl Channel mixing audio filters:
1271 VLC_ADD_PLUGIN([converter_fixed])
1272 VLC_ADD_PLUGIN([mono])
1273 VLC_ADD_PLUGIN([trivial_channel_mixer])
1274 dnl Resampling audio filters:
1275 VLC_ADD_PLUGIN([trivial_resampler])
1276 VLC_ADD_PLUGIN([ugly_resampler])
1277 dnl Audio mixers:
1278 VLC_ADD_PLUGIN([trivial_mixer])
1279 dnl Video chromas:
1280 VLC_ADD_PLUGIN([i420_rgb])
1281 VLC_ADD_PLUGIN([grey_yuv])
1282 dnl Video codecs:
1283 VLC_ADD_PLUGIN([rawvideo])
1284 dnl Access filters:
1285 VLC_ADD_PLUGIN([access_filter_timeshift])
1286 VLC_ADD_PLUGIN([access_filter_record])
1287 VLC_ADD_PLUGIN([access_filter_dump])
1288 VLC_ADD_PLUGIN([access_filter_bandwidth])
1289
1290 ALIASES="${ALIASES} cvlc"
1291
1292 dnl
1293 dnl default modules that need g++
1294 dnl
1295 AC_LANG_PUSH(C++)
1296 VLC_ADD_PLUGIN([spatializer])
1297 AC_LANG_POP(C++)
1298
1299 if test "${SYS}" != "mingwce"; then
1300   VLC_ADD_PLUGIN([gestures])
1301   VLC_ADD_PLUGIN([rc])
1302   VLC_ADD_PLUGIN([telnet])
1303   VLC_ADD_PLUGIN([hotkeys])
1304   VLC_ADD_PLUGIN([showintf])
1305   VLC_ADD_PLUGIN([marq])
1306   VLC_ADD_PLUGIN([podcast])
1307   VLC_ADD_PLUGIN([shout])
1308   VLC_ADD_PLUGIN([sap])
1309   VLC_ADD_PLUGIN([fake])
1310   VLC_ADD_PLUGIN([folder])
1311   VLC_ADD_PLUGIN([rss])
1312   VLC_ADD_PLUGIN([mosaic])
1313   VLC_ADD_PLUGIN([wall])
1314   VLC_ADD_PLUGIN([motiondetect])
1315   VLC_ADD_PLUGIN([clone])
1316   VLC_ADD_PLUGIN([crop])
1317   VLC_ADD_PLUGIN([erase])
1318   VLC_ADD_PLUGIN([bluescreen])
1319   VLC_ADD_PLUGIN([alphamask])
1320   VLC_ADD_PLUGIN([gaussianblur])
1321   VLC_ADD_PLUGIN([i420_yuy2])
1322   VLC_ADD_PLUGIN([i422_yuy2])
1323   VLC_ADD_PLUGIN([i420_ymga])
1324   VLC_ADD_PLUGIN([i422_i420])
1325   VLC_ADD_PLUGIN([yuy2_i422])
1326   VLC_ADD_PLUGIN([yuy2_i420])
1327   VLC_ADD_PLUGIN([chroma_chain])
1328   VLC_ADD_PLUGIN([aout_file])
1329   VLC_ADD_PLUGIN([linear_resampler])
1330   VLC_ADD_PLUGIN([bandlimited_resampler])
1331   VLC_ADD_PLUGIN([float32_mixer])
1332   VLC_ADD_PLUGIN([spdif_mixer])
1333   VLC_ADD_PLUGIN([simple_channel_mixer])
1334   VLC_ADD_PLUGIN([dolby_surround_decoder])
1335   VLC_ADD_PLUGIN([headphone_channel_mixer])
1336   VLC_ADD_PLUGIN([normvol])
1337   VLC_ADD_PLUGIN([equalizer])
1338   VLC_ADD_PLUGIN([param_eq])
1339   VLC_ADD_PLUGIN([converter_float])
1340   VLC_ADD_PLUGIN([a52tospdif])
1341   VLC_ADD_PLUGIN([dtstospdif])
1342   VLC_ADD_PLUGIN([audio_format])
1343   ALIASES="${ALIASES} rvlc"
1344 fi
1345
1346 dnl
1347 dnl Some plugins aren't useful on some platforms
1348 dnl
1349 if test "${SYS}" != "mingw32" -a "${SYS}" != "mingwce"; then
1350     VLC_ADD_PLUGIN([screensaver])
1351     VLC_ADD_PLUGIN([motion])
1352     VLC_ADD_PLUGIN([dynamicoverlay])
1353 elif test "${SYS}" != "mingwce"; then
1354     VLC_ADD_PLUGIN([ntservice])
1355     VLC_ADD_PLUGIN([access_smb])
1356     VLC_ADD_PLUGIN([dmo])
1357     VLC_ADD_PLUGIN([msn])
1358     VLC_ADD_LIBS([dmo],[-lole32 -luuid])
1359 else
1360     VLC_ADD_PLUGIN([win32text])
1361 fi
1362 if test "${SYS}" = "darwin"; then
1363     VLC_ADD_PLUGIN([quartztext])
1364     VLC_ADD_LDFLAGS([quartztext],[-Wl,-framework,Carbon,-framework,ApplicationServices])
1365 fi
1366
1367 dnl
1368 dnl  Accelerated modules
1369 dnl
1370 AC_ARG_WITH(,[])
1371 AC_ARG_WITH(,[Optimization options:])
1372
1373 dnl  Check for fully working MMX intrinsics
1374 dnl  We need support for -mmmx, we need <mmintrin.h>, and we also need a
1375 dnl  working compiler (http://gcc.gnu.org/bugzilla/show_bug.cgi?id=23963)
1376 AC_ARG_ENABLE(mmx,
1377 [  --disable-mmx       disable MMX optimizations (default auto)],,[
1378   case "${host_cpu}" in
1379     i?86|x86_64)
1380       enable_mmx="yes"
1381       ;;
1382     *)
1383       enable_mmx="no"
1384       ;;
1385   esac
1386 ])
1387 AS_IF([test "${enable_mmx}" != "no"], [
1388   ARCH="${ARCH} mmx"
1389
1390   AC_CACHE_CHECK([if $CC groks MMX intrinsics],
1391     [ac_cv_c_mmx_intrinsics],
1392     [CFLAGS="${CFLAGS_save} -O -mmmx"
1393      AC_TRY_COMPILE([#include <mmintrin.h>
1394                      #include <stdint.h>
1395                      uint64_t frobzor;],
1396                     [__m64 a, b, c;
1397                      a = b = c = (__m64)frobzor;
1398                      a = _mm_slli_pi16(a, 3);
1399                      a = _mm_adds_pi16(a, b);
1400                      c = _mm_srli_pi16(c, 8);
1401                      c = _mm_slli_pi16(c, 3);
1402                      b = _mm_adds_pi16(b, c);
1403                      a = _mm_unpacklo_pi8(a, b);
1404                      frobzor = (uint64_t)a;],
1405                     [ac_cv_c_mmx_intrinsics=yes],
1406                     [ac_cv_c_mmx_intrinsics=no])])
1407   AS_IF([test "${ac_cv_c_mmx_intrinsics}" != "no"], [
1408     AC_DEFINE(HAVE_MMX_INTRINSICS, 1,
1409               [Define to 1 if MMX intrinsics are available.])
1410     VLC_ADD_CFLAGS([memcpymmx i420_rgb_mmx i420_yuy2_mmx i422_yuy2_mmx i420_ymga_mmx],[-mmmx])
1411   ])
1412
1413   AC_CACHE_CHECK([if $CC groks MMX inline assembly],
1414     [ac_cv_mmx_inline],
1415     [CFLAGS="${CFLAGS_save}"
1416      AC_TRY_COMPILE(,[void *p;asm volatile("packuswb %%mm1,%%mm2"::"r"(p));],
1417                     ac_cv_mmx_inline=yes, ac_cv_mmx_inline=no)])
1418   AS_IF([test "${ac_cv_mmx_inline}" != "no"], [
1419     AC_DEFINE(CAN_COMPILE_MMX, 1,
1420               [Define to 1 inline MMX assembly is available.])
1421     VLC_ADD_PLUGIN([memcpymmx])
1422     VLC_ADD_PLUGIN([i420_rgb_mmx])
1423     VLC_ADD_PLUGIN([i420_yuy2_mmx])
1424     VLC_ADD_PLUGIN([i422_yuy2_mmx])
1425     VLC_ADD_PLUGIN([i420_ymga_mmx])
1426   ])
1427
1428   AC_CACHE_CHECK([if $CC groks MMX EXT inline assembly],
1429     [ac_cv_mmxext_inline],
1430     [CFLAGS="${CFLAGS_save}"
1431      AC_TRY_COMPILE(,[void *p;asm volatile("maskmovq %%mm1,%%mm2"::"r"(p));],
1432                     ac_cv_mmxext_inline=yes, ac_cv_mmxext_inline=no)])
1433   AS_IF([test "${ac_cv_mmxext_inline}" != "no"], [
1434     AC_DEFINE(CAN_COMPILE_MMXEXT, 1,
1435               [Define to 1 if MMX EXT inline assembly is available.])
1436     VLC_ADD_PLUGIN([memcpymmxext])
1437   ])
1438 ])
1439
1440 dnl  Check for fully workin SSE2 intrinsics
1441 dnl  We need support for -mmmx, we need <emmintrin.h>, and we also need a
1442 dnl  working compiler (http://gcc.gnu.org/bugzilla/show_bug.cgi?id=23963)
1443 AC_ARG_ENABLE(sse,
1444 [  --disable-sse       disable SSE (1 and 2) optimizations (default auto)],, [
1445   case "${host_cpu}" in
1446     i686|x86_64)
1447       enable_sse=yes
1448       ;;
1449     *)
1450       enable_sse=no
1451       ;;
1452   esac
1453 ])
1454 AS_IF([test "${enable_sse}" != "no"], [
1455   ARCH="${ARCH} sse sse2"
1456
1457   AC_CACHE_CHECK([if $CC groks SSE2 intrinsics],
1458     [ac_cv_c_sse2_intrinsics],
1459     [CFLAGS="${CFLAGS_save} -O -msse2"
1460      AC_TRY_COMPILE([#include <emmintrin.h>
1461                      #include <stdint.h>
1462                      uint64_t frobzor;],
1463                     [__m128i a, b, c;
1464                      a = b = c = _mm_set1_epi64((__m64)frobzor);
1465                      a = _mm_slli_epi16(a, 3);
1466                      a = _mm_adds_epi16(a, b);
1467                      c = _mm_srli_epi16(c, 8);
1468                      c = _mm_slli_epi16(c, 3);
1469                      b = _mm_adds_epi16(b, c);
1470                      a = _mm_unpacklo_epi8(a, b);
1471                      frobzor = (uint64_t)_mm_movepi64_pi64(a);],
1472                     [ac_cv_c_sse2_intrinsics=yes],
1473                     [ac_cv_c_sse2_intrinsics=no])])
1474   AS_IF([test "${ac_cv_c_sse2_intrinsics}" != "no"], [
1475     AC_DEFINE(HAVE_SSE2_INTRINSICS, 1,
1476               [Define to 1 if SSE2 intrinsics are available.])
1477     VLC_ADD_CFLAGS([i420_rgb_sse2 i420_yuy2_sse2 i422_yuy2_sse2],[-msse2])
1478   ])
1479
1480   AC_CACHE_CHECK([if $CC groks SSE inline assembly],
1481     [ac_cv_sse_inline],
1482     [CFLAGS="${CFLAGS_save}"
1483      AC_TRY_COMPILE(,[void *p;asm volatile("xorps %%xmm1,%%xmm2"::"r"(p));],
1484                     ac_cv_sse_inline=yes, ac_cv_sse_inline=no)])
1485   AS_IF([test "${ac_cv_sse_inline}" != "no" -a "${SYS}" != "solaris"], [
1486     AC_DEFINE(CAN_COMPILE_SSE, 1,
1487               [Define to 1 if SSE inline assembly is available.])
1488   ])
1489
1490   AC_CACHE_CHECK([if $CC groks SSE2 inline assembly],
1491     [ac_cv_sse2_inline],
1492     [CFLAGS="${CFLAGS_save}"
1493      AC_TRY_COMPILE(,[void *p;asm volatile("punpckhqdq %%xmm1,%%xmm2"::"r"(p));],
1494                     ac_cv_sse2_inline=yes, ac_cv_sse2_inline=no)])
1495   AS_IF([test "${ac_cv_sse2_inline}" != "no" -a "${SYS}" != "solaris"], [
1496     AC_DEFINE(CAN_COMPILE_SSE2, 1,
1497               [Define to 1 if SSE2 inline assembly is available.])
1498     VLC_ADD_PLUGIN([i420_rgb_sse2])
1499     VLC_ADD_PLUGIN([i420_yuy2_sse2])
1500     VLC_ADD_PLUGIN([i422_yuy2_sse2])
1501   ])
1502 ])
1503
1504 AC_CACHE_CHECK([if $CC groks 3D Now! inline assembly],
1505     [ac_cv_3dnow_inline],
1506     [CFLAGS="${CFLAGS_save}"
1507      AC_TRY_COMPILE(,[void *p;asm volatile("pfadd %%mm1,%%mm2"::"r"(p));],
1508                     ac_cv_3dnow_inline=yes, ac_cv_3dnow_inline=no)])
1509 AS_IF([test "${ac_cv_3dnow_inline}" != "no"], [
1510   AC_DEFINE(CAN_COMPILE_3DNOW, 1,
1511             [Define to 1 if 3D Now! inline assembly is available.])
1512   VLC_ADD_PLUGIN([memcpy3dn])
1513 ])
1514
1515 AC_ARG_ENABLE(altivec,
1516 [  --disable-altivec       disable AltiVec optimizations (default auto)],, [
1517   AS_IF([test "${host_cpu}" = "powerpc"],
1518         [enable_altivec=yes], [enable_altivec=no])
1519 ])
1520 AS_IF([test "${enable_altivec}" = "yes"], [
1521   ARCH="${ARCH} altivec";
1522   AC_CACHE_CHECK([if $CC groks AltiVec inline assembly],
1523     [ac_cv_altivec_inline],
1524     [CFLAGS="${CFLAGS_save}"
1525      AC_TRY_COMPILE(,[asm volatile("vperm 0,1,2,3");],
1526          ac_cv_altivec_inline="yes",
1527          [CFLAGS="${CFLAGS_save} -Wa,-m7400"
1528           AC_TRY_COMPILE(,[asm volatile("vperm 0,1,2,3");],
1529             [ac_cv_altivec_inline="-Wa,-m7400"],
1530             ac_cv_altivec_inline=no)
1531          ])])
1532   AS_IF([test "${ac_cv_altivec_inline}" != "no"], [
1533     AC_DEFINE(CAN_COMPILE_ALTIVEC, 1,
1534               [Define to 1 if AltiVec inline assembly is available.])
1535     AS_IF([test "${ac_cv_altivec_inline}" != "yes"], [
1536       VLC_ADD_CFLAGS([idctaltivec],[${ac_cv_altivec_inline}])
1537       VLC_ADD_CFLAGS([motionaltivec],[${ac_cv_altivec_inline}])
1538       VLC_ADD_CFLAGS([memcpyaltivec],[${ac_cv_altivec_inline}])
1539       VLC_ADD_CFLAGS([i420_yuy2_altivec],[${ac_cv_altivec_inline}])
1540       VLC_ADD_CFLAGS([libvlc],[${ac_cv_altivec_inline}])
1541     ])
1542     VLC_ADD_PLUGIN([memcpyaltivec])
1543     VLC_ADD_PLUGIN([i420_yuy2_altivec])
1544   ])
1545
1546 dnl The AltiVec C extensions
1547 dnl
1548 dnl There are several possible cases:
1549 dnl - OS X PPC, gcc 4.x: use -mpim-altivec -force_cpusubtype_ALL, don't
1550 dnl                      need <altivec.h>
1551 dnl - OS X PPC, gcc 3.x: need -faltivec, don't need <altivec.h>
1552 dnl - Linux PPC, gcc 3.4, 4.x: need <altivec.h> which requires -maltivec
1553 dnl - Linux PPC, gcc 3.3: need <altivec.h> and -maltivec -mabi=altivec
1554 dnl - Linux PPC, gcc 3.x: need <altivec.h> and -fvec
1555 dnl - Others: test should fail
1556   AC_CACHE_CHECK([if \$CC groks AltiVec C extensions],
1557   [ac_cv_c_altivec],
1558   [# OS X/PPC test (gcc 4.x)
1559    CFLAGS="${CFLAGS_save} -mpim-altivec -force_cpusubtype_ALL"
1560    AC_TRY_COMPILE([vector unsigned char foo;],
1561      [vec_ld(0, (unsigned char *)0);],
1562      [ac_cv_c_altivec="-mpim-altivec -force_cpusubtype_ALL"],
1563      [# OS X/PPC test (gcc 3.x)
1564       CFLAGS="${CFLAGS_save} -faltivec"
1565       AC_TRY_COMPILE([vector unsigned char foo;],
1566         [vec_ld(1 * sizeof(vector float), (unsigned char *)0);],
1567         [ac_cv_c_altivec="-faltivec"],
1568         dnl Below this are the Linux tests
1569         [# Linux/PPC test (gcc 4.x)
1570          CFLAGS="${CFLAGS_save} -maltivec"
1571          AC_TRY_COMPILE([#include <altivec.h>],
1572            [vec_ld(0, (unsigned char *)0);],
1573            [ac_cv_c_altivec="-maltivec"],
1574            [# Linux/PPC test (gcc 3.3)
1575             CFLAGS="${CFLAGS_save} -maltivec -mabi=altivec"
1576             AC_TRY_COMPILE([#include <altivec.h>],
1577               [vec_ld(0, (unsigned char *)0);],
1578               [ac_cv_c_altivec=""
1579                ac_cv_c_altivec_abi="-maltivec -mabi=altivec"],
1580               [# Linux/PPC test (gcc 3.3)
1581                CFLAGS="${CFLAGS_save} -fvec"
1582                AC_TRY_COMPILE([#include <altivec.h>],
1583                  [vec_ld(0, (unsigned char *)0);],
1584                  [ac_cv_c_altivec="-fvec"],
1585                  [ac_cv_c_altivec=no])
1586               ])
1587            ])
1588         ])
1589      ])
1590    CFLAGS="${CFLAGS_save}"
1591   ])
1592   AS_IF([test "${ac_cv_c_altivec}" != "no"], [
1593     CPPFLAGS="${CPPFLAGS_save} ${ac_cv_c_altivec}"
1594   ])
1595
1596   AC_CHECK_HEADERS(altivec.h)
1597   CPPFLAGS="${CPPFLAGS_save}"
1598   
1599   AS_IF([test "${ac_cv_c_altivec}" != "no"], [
1600     AC_DEFINE(CAN_COMPILE_C_ALTIVEC, 1,
1601               [Define to 1 if C AltiVec extensions are available.])
1602     VLC_ADD_CFLAGS([libvlc],[${ac_cv_c_altivec}])
1603     VLC_ADD_CFLAGS([idctaltivec motionaltivec],[${ac_cv_c_altivec}])
1604     VLC_ADD_CFLAGS([i420_yuy2_altivec memcpyaltivec deinterlace],[${ac_cv_c_altivec} ${ac_cv_c_altivec_abi}])
1605     VLC_ADD_PLUGIN([memcpyaltivec])
1606     VLC_ADD_PLUGIN([i420_yuy2_altivec])
1607   ])
1608
1609   AC_CACHE_CHECK([if linker needs -framework vecLib],
1610     [ac_cv_ld_altivec],
1611     [LDFLAGS="${LDFLAGS_vlc} -Wl,-framework,vecLib"
1612      AC_TRY_LINK([],,ac_cv_ld_altivec=yes,ac_cv_ld_altivec=no)
1613      LDFLAGS="${LDFLAGS_save}"
1614     ])
1615   AS_IF([test "${ac_cv_ld_altivec}" != "no"], [
1616     VLC_ADD_LDFLAGS([libvlc idctaltivec motionaltivec memcpyaltivec],[-Wl,-framework,vecLib])
1617   ])
1618 ])
1619
1620 dnl
1621 dnl  Special arch tuning
1622 dnl
1623 AC_ARG_WITH(tuning,
1624 [  --with-tuning=ARCH      enable special tuning for an architecture
1625                           (default Pentium 2 on IA-32 and G4 on PPC)])
1626 if test -n "${with_tuning}"; then
1627     if test "${with_tuning}" != "no"; then
1628         CFLAGS_TUNING="-mtune=${with_tuning}"
1629     fi
1630 else
1631     if test "${SYS}" = "darwin" -a "${host_cpu}" != "powerpc"; then
1632         CFLAGS_TUNING="-march=pentium-m -mtune=prescott"
1633     elif test "${host_cpu}" = "i686" -o "${host_cpu}" = "i586" -o "${host_cpu}" = "i486" -o "${host_cpu}" = "i386"; then
1634         CFLAGS_TUNING="-mtune=pentium2"
1635     elif test "${host_cpu}" = "x86_64"; then
1636         CFLAGS_TUNING="-mtune=athlon64"
1637     elif test "${host_cpu}" = "powerpc"; then
1638         CFLAGS_TUNING="-mtune=G4";
1639     fi
1640 fi
1641
1642 dnl NOTE: this can't be cached cleanly
1643 AS_IF([test "${CFLAGS_TUNING}"],
1644    [CFLAGS_save="${CFLAGS}"
1645     CFLAGS="${CFLAGS} ${CFLAGS_TUNING}"
1646
1647     AC_MSG_CHECKING([whether $CC accepts ${CFLAGS_TUNING}])
1648     AC_COMPILE_IFELSE([ ],
1649                       [tuning="yes"],
1650                       [CFLAGS_TUNING=""; tuning="no"
1651                        AS_IF([test "${with_tuning}"],
1652                              [AC_MSG_ERROR([requested tuning not supported])])])
1653
1654     AC_MSG_RESULT([$tuning])
1655     CFLAGS="${CFLAGS_save}"
1656 ])
1657
1658 dnl
1659 dnl  Memory usage
1660 dnl
1661 AC_ARG_ENABLE(optimize-memory,
1662 [  --enable-optimize-memory optimize memory usage over performance])
1663 if test "${enable_optimize_memory}" = "yes"; then
1664   AC_DEFINE(OPTIMIZE_MEMORY, 1, Define if you want to optimize memory usage over performance)
1665 fi
1666
1667 dnl
1668 dnl  Enable/disable optimizations
1669 dnl
1670 AC_ARG_ENABLE(optimizations,
1671 [  --disable-optimizations disable compiler optimizations (default enabled)])
1672 if test "${enable_optimizations}" != "no"; then
1673    if test "${enable_optimize_memory}" = "yes"; then
1674       enable_optimizations="size"
1675    else
1676       enable_optimizations="speed"
1677    fi
1678 fi
1679
1680 dnl
1681 dnl  Debugging mode
1682 dnl
1683 AC_ARG_ENABLE(debug,
1684 [  --enable-debug          debug mode (default disabled)])
1685 test "${enable_debug}" != "yes" && enable_debug="no"
1686 AH_TEMPLATE(NDEBUG,
1687             [Define to 1 if debug code should NOT be compiled])
1688 AS_IF([test "x${enable_debug}" = "xno"], [AC_DEFINE(NDEBUG)])
1689
1690 dnl
1691 dnl  Test coverage
1692 dnl
1693 AC_ARG_ENABLE(coverage,
1694         [  --enable-coverage       build for test coverage (default disabled)],,
1695         [enable_coverage="no"])
1696 AS_IF([test "${enable_coverage}" != "no"], [
1697         CFLAGS="-fprofile-arcs -ftest-coverage ${CFLAGS}"
1698         CXXFLAGS="-fprofile-arcs -ftest-coverage ${CXXFLAGS}"
1699         LDFLAGS="-lgcov ${LDFLAGS}"
1700         dnl ugly...
1701         CFLAGS_save="${CFLAGS}"
1702         CXXFLAGS_save="${CXXFLAGS}"
1703         LDFLAGS_save="${LDFLAGS}"
1704 ])
1705
1706 dnl
1707 dnl  Enable release-specific flags
1708 dnl
1709 AC_ARG_ENABLE(release,
1710 [  --enable-release        activate extra optimizations (default disabled)])
1711 test "${enable_release}" != "yes" && enable_release="no"
1712
1713 dnl
1714 dnl Stream output
1715 dnl
1716 AC_ARG_ENABLE(sout,
1717   [  --enable-sout           Stream output modules (default enabled)])
1718 AS_IF([test "${enable_sout}" != "no"], [
1719   AC_DEFINE(ENABLE_SOUT, 1, [Define to 1 for stream output support.])
1720 ])
1721 AM_CONDITIONAL(ENABLE_SOUT, [test "${enable_sout}" != "no"])
1722
1723 AC_ARG_ENABLE(switcher,
1724   [  --enable-switcher       Stream-out switcher plugin (default disabled)])
1725
1726 dnl Check for libshout
1727 AC_ARG_ENABLE(shout,
1728   [  --enable-shout          libshout output plugin (default disabled)])
1729 if test "${enable_shout}" = "yes"; then
1730   PKG_CHECK_MODULES(SHOUT, shout >= 2.1,
1731     [AC_DEFINE(HAVE_SHOUT, 1, [Define if you have the libshout library])
1732      VLC_ADD_PLUGIN([access_output_shout])
1733      VLC_ADD_LIBS([access_output_shout],[$SHOUT_LIBS])
1734      VLC_ADD_CFLAGS([access_output_shout],[$SHOUT_CFLAGS])],
1735     [AC_MSG_WARN(libshout library not found)])
1736 fi
1737
1738 dnl Lua modules
1739 AC_ARG_ENABLE(lua,
1740   [  --enable-lua            lua playlist and metafetcher plugins (default enabled)])
1741 if test "${enable_lua}" != "no"
1742 then
1743   PKG_CHECK_MODULES(LUA, lua5.1,
1744     [ have_lua=yes ],
1745     [
1746     AC_MSG_WARN([lua5.1 not found, trying lua >= 5.1 instead])
1747     PKG_CHECK_MODULES(LUA, lua >= 5.1,
1748       [ have_lua=yes ],
1749       [
1750         have_lua=yes
1751         AC_CHECK_HEADERS([lua.h lauxlib.h lualib.h],
1752           [],
1753           [ have_lua=no ] )
1754         AC_CHECK_LIB(  lua5.1 , luaL_newstate,
1755           [LUA_LIBS="-llua5.1"],
1756           AC_CHECK_LIB( lua51 , luaL_newstate,
1757             [LUA_LIBS="-llua51"],
1758             AC_CHECK_LIB( lua , luaL_newstate,
1759               [LUA_LIBS="-llua"],
1760               [ have_lua=no
1761                 AC_MSG_WARN([lua >= 5.1 not found!])
1762               ])
1763           )
1764         )
1765       ])
1766     ])
1767   if test "x${have_lua}" = "xyes" ;  then
1768      AC_DEFINE(HAVE_LUA, 1, [Define if you have the lua library])
1769      VLC_ADD_PLUGIN([lua])
1770      VLC_ADD_LIBS([lua],[$LUA_LIBS])
1771      VLC_ADD_CFLAGS([lua],[$LUA_CFLAGS])
1772   fi
1773 fi
1774 AM_CONDITIONAL(BUILD_LUA, [test "${have_lua}" = "yes"])
1775
1776 dnl
1777 dnl HTTP daemon
1778 dnl
1779 AC_ARG_ENABLE(httpd,
1780   [  --enable-httpd          HTTP daemon (default enabled)])
1781 if test "${enable_httpd}" != "no"
1782 then
1783   VLC_ADD_PLUGIN([http])
1784   AC_DEFINE(ENABLE_HTTPD, 1, Define if you want the HTTP dameon support)
1785 fi
1786 AM_CONDITIONAL(BUILD_HTTPD, [test "${enable_httpd}" != "no"])
1787
1788 dnl
1789 dnl VideoLAN manager
1790 dnl
1791 AC_ARG_ENABLE(vlm,
1792   [  --enable-vlm            VideoLAN manager (default enabled)])
1793 if test "${enable_vlm}" != "no"
1794 then
1795   AC_DEFINE(ENABLE_VLM, 1, Define if you want the VideoLAN manager support)
1796 fi
1797
1798 dnl
1799 dnl Growl notification plugin
1800 dnl
1801 AC_ARG_ENABLE(growl,
1802   [  --enable-growl          growl notification plugin (default enabled)])
1803 AS_IF([test "${enable_growl}" != "no"], [
1804     VLC_ADD_PLUGIN([growl_udp])
1805     AC_CHECK_HEADERS(Growl/GrowlDefines.h, [
1806       VLC_ADD_PLUGIN([growl])
1807       VLC_ADD_LDFLAGS([growl], [-Wl,-framework,Growl,-framework,AppKit])
1808     ])
1809   ]
1810 )
1811
1812 dnl
1813 dnl Libnotify notification plugin
1814 dnl
1815
1816 AC_ARG_ENABLE(notify,
1817   [  --enable-notify         libnotify notification plugin (default enabled)])
1818 AS_IF([test "${enable_notify}" != "no" -a "${SYS}" != "mingw32"], [
1819     PKG_CHECK_MODULES(NOTIFY, libnotify,
1820       [
1821         VLC_ADD_PLUGIN([notify])
1822         VLC_ADD_CFLAGS(notify, [$NOTIFY_CFLAGS])
1823         VLC_ADD_LIBS(notify, [$NOTIFY_LIBS])
1824       ],[
1825     AS_IF([test "${enable_notify}" = "yes"],[
1826         AC_MSG_WARN( libnotify not found) ])
1827       ])
1828   ])
1829
1830 dnl
1831 dnl Audioscrobbler plugin
1832 dnl
1833
1834 AC_ARG_ENABLE(audioscrobbler,
1835   [  --disable-audioscrobbler Last.fm submission plugin (default enabled)])
1836 AS_IF([test "${enable_audioscrobbler}" != "no"], [
1837         VLC_ADD_PLUGIN([audioscrobbler])
1838   ])
1839
1840 dnl
1841 dnl Musicbrainz plugin
1842 dnl
1843 AC_ARG_ENABLE(musicbrainz,
1844   [  --enable-musicbrainz    MusicBrainz support (default disabled) ])
1845   AS_IF([test "${enable_musicbrainz}" = "yes"],[
1846       PKG_CHECK_MODULES(MUSICBRAINZ, libmusicbrainz,
1847     [ VLC_ADD_PLUGIN([musicbrainz])
1848       VLC_ADD_LIBS([musicbrainz],[$MUSICBRAINZ_LIBS])
1849       VLC_ADD_CFLAGS([musicbrainz],[$MUSICBRAINZ_CFLAGS])  ],
1850        [AC_MSG_WARN(MusicBrainz library not found)])
1851    ])
1852
1853
1854 dnl
1855 dnl Taglibplugin
1856 dnl
1857 AC_ARG_ENABLE(taglib,
1858   [  --disable-taglib Taglib support (default enabled) ])
1859   AS_IF([test "${enable_taglib}" != "no"],[
1860     PKG_CHECK_MODULES(TAGLIB, taglib,
1861       [ AC_DEFINE( HAVE_TAGLIB, 1, [Define if you have taglib plugin built] )
1862         VLC_ADD_PLUGIN([taglib])
1863         VLC_ADD_LIBS([taglib],[$TAGLIB_LIBS -lz])
1864        VLC_ADD_CXXFLAGS([taglib],[$TAGLIB_CFLAGS]) ],
1865       [AC_MSG_WARN(TagLib library not found)])
1866   ])
1867
1868
1869 dnl
1870 dnl  Input plugins
1871 dnl
1872
1873 AC_ARG_WITH(,[Input plugins:])
1874
1875 dnl  live555 input
1876 dnl
1877 if test "${enable_livedotcom}" 
1878 then
1879   AC_MSG_WARN(--{en|dis}able-livedotcom is deprecated. Use --{en|dis}able-live555 instead.)
1880 fi
1881
1882 if test "${enable_livedotcom}" = "no"
1883 then
1884   enable_live555="no"
1885 fi
1886 AC_ARG_ENABLE(live555,
1887 [  --enable-live555        live555 RTSP input plugin (default enabled)])
1888 if test "${enable_live555}" != "no"; then
1889   AC_ARG_WITH(live555-tree,
1890     [    --with-live555-tree=PATH live.com tree for static linking])
1891
1892   dnl
1893   dnl test for --with-live555-tree
1894   dnl
1895   if test "${with_livedotcom_tree}" 
1896   then
1897     AC_MSG_WARN(--with-livedotcom-tree is deprecated. Use --with-live555-tree instead.)
1898   with_live555_tree="${with_livedotcom_tree}"
1899   fi
1900
1901   if test -z "${with_live555_tree}" -a "${CXX}" != ""; then
1902     AC_LANG_PUSH(C++)
1903     CPPFLAGS_save="${CPPFLAGS}"
1904     CPPFLAGS_live555="-I/usr/include/liveMedia -I/usr/include/groupsock -I/usr/include/BasicUsageEnvironment -I/usr/include/UsageEnvironment"
1905     if test "${SYS}" = "solaris"; then
1906       CPPFLAGS_live555="${CPPFLAGS_live555} -DSOLARIS"
1907     fi
1908     CPPFLAGS="${CPPFLAGS} ${CPPFLAGS_live555}"
1909     AC_CHECK_HEADERS(liveMedia.hh, [
1910       VLC_ADD_CXXFLAGS([live555], [${CPPFLAGS_live555}])
1911       AC_CHECK_LIB(liveMedia_pic, main, [
1912         # We have -lliveMedia_pic, build plugins
1913         VLC_ADD_PLUGIN([live555])
1914         VLC_ADD_LIBS([live555], [-lliveMedia_pic -lgroupsock_pic -lBasicUsageEnvironment_pic -lUsageEnvironment_pic])
1915       ], [
1916         AC_CHECK_LIB(liveMedia, main, [
1917           # We only have -lliveMedia, do builtins
1918           VLC_ADD_BUILTINS([live555])
1919           VLC_ADD_LIBS([live555], [-lliveMedia -lgroupsock -lBasicUsageEnvironment -lUsageEnvironment])
1920         ])
1921       ])
1922       if test "${SYS}" = "mingw32"; then
1923         # add ws2_32 for closesocket, select, recv
1924         VLC_ADD_LIBS([live555],[-lws2_32])
1925       fi
1926     ])
1927     CPPFLAGS="${CPPFLAGS_save}"
1928     AC_LANG_POP(C++)
1929   else
1930     AC_MSG_CHECKING(for liveMedia/libliveMedia.a in ${with_live555_tree})
1931     real_live555_tree="`cd ${with_live555_tree} 2>/dev/null && pwd`"
1932     if test -z "${real_live555_tree}"; then
1933       dnl  The given directory can't be found
1934       AC_MSG_RESULT(no)
1935       AC_MSG_ERROR([cannot cd to ${with_live555_tree}])
1936     fi
1937     if test -f "${real_live555_tree}/liveMedia/libliveMedia.a"; then
1938       AC_MSG_RESULT(${real_live555_tree}/liveMedia/libliveMedia.a)
1939
1940       VLC_ADD_BUILTINS([live555])
1941
1942       if test "${SYS}" = "mingw32"; then
1943         # add ws2_32 for closesocket, select, recv
1944         VLC_ADD_LIBS([live555],[-lws2_32])
1945       fi
1946
1947       VLC_ADD_LIBS([live555],[-L${real_live555_tree}/liveMedia -lliveMedia])
1948       VLC_ADD_LIBS([live555],[-L${real_live555_tree}/BasicUsageEnvironment -lBasicUsageEnvironment])
1949       VLC_ADD_LIBS([live555],[-L${real_live555_tree}/groupsock -lgroupsock])
1950       VLC_ADD_LIBS([live555],[-L${real_live555_tree}/UsageEnvironment -lUsageEnvironment])
1951
1952       VLC_ADD_CXXFLAGS([live555],[-I${real_live555_tree}/BasicUsageEnvironment/include])
1953       VLC_ADD_CXXFLAGS([live555],[-I${real_live555_tree}/groupsock/include])
1954       VLC_ADD_CXXFLAGS([live555],[-I${real_live555_tree}/liveMedia/include])
1955       VLC_ADD_CXXFLAGS([live555],[-I${real_live555_tree}/UsageEnvironment/include ])
1956       if test "${SYS}" = "solaris"; then
1957         VLC_ADD_CXXFLAGS([live555],[-DSOLARIS])
1958       fi
1959     else
1960       dnl  The given live555 wasn't built
1961         AC_MSG_RESULT(no)
1962       if test "${enable_live555}" = "yes"; then
1963         AC_MSG_ERROR([cannot find ${real_live555_tree}/liveMedia/libliveMedia.a, make sure you compiled live555 in ${with_live555_tree}])
1964       fi        
1965     fi
1966   fi
1967 fi
1968
1969 dnl
1970 dnl  special access module for dc1394 input
1971 dnl
1972 AC_ARG_ENABLE(dc1394,
1973   [  --enable-dc1394         dc1394 access module (default disabled)])
1974 if test "${enable_dc1394}" = "yes"
1975 then
1976   AC_CHECK_HEADERS(libraw1394/raw1394.h, [
1977     AC_CHECK_LIB( raw1394, raw1394_get_nodecount, [
1978         AC_CHECK_HEADERS(libdc1394/dc1394_control.h , [
1979 dnl         AC_CHECK_LIB( dc1394_control, dc1394_setup_capture, [
1980               VLC_ADD_PLUGIN([dc1394])
1981               VLC_ADD_LIBS([dc1394],[-ldc1394_control -lraw1394])
1982 dnl         ],
1983 dnl         [
1984 dnl           AC_MSG_ERROR([libdc1394 is mandatory for the dc1394 input module. try --disable-dc1394 or install this library])
1985 dnl         ])
1986       ],
1987       [
1988         AC_MSG_ERROR([libdc1394 is mandatory for the dc1394 input module. try --disable-dc1394 or install this library])
1989       ])
1990     ],
1991     [
1992       AC_MSG_ERROR([libraw1394 is mandatory for the dc1394 input module. try --disable-dc1394 or install this library])
1993     ])
1994   ],
1995   [
1996     AC_MSG_ERROR([libraw1394 is mandatory for the dc1394 input module. try --disable-dc1394 or install this library])
1997   ])
1998 fi
1999
2000 dnl
2001 dnl dv module: digital video module check for libraw1394
2002 dnl
2003 AC_ARG_ENABLE(dv,
2004 [  --enable-dv             dv input module (default disabled)])
2005 if test "${enable_dv}" = "yes"
2006 then
2007   AC_ARG_WITH(dv-raw1394,
2008   [    --with-dv-raw1394=PATH   libraw1394 headers and libraries])
2009   AC_ARG_WITH(dv-raw1394-tree,
2010   [    --with-dv-raw1394=PATH   libraw1394 tree for static linking])
2011
2012   if test -z "${with_dv_raw1394}" -a "${with_dv_raw1394}" != ""
2013   then
2014     AC_MSG_CHECKING(for raw1394 headers in ${with_dv_raw1394})
2015     if test -f ${with_dv_raw1394}/include/libraw1394/raw1394.h
2016     then
2017       dnl  Use ${with_dv_raw1394}/include/libraw1394/raw1394.h
2018       AC_MSG_RESULT(yes)
2019       VLC_ADD_PLUGIN([access_dv])
2020       VLC_ADD_LIBS([access_dv],[-L${with_dv_raw1394}/lib -lraw1394 -lpthread])
2021       VLC_ADD_CPPFLAGS([access_dv],[-I${with_dv_raw1394}/include])
2022     else
2023       dnl  No libraw1394 could be found, sorry
2024       AC_MSG_RESULT(no)
2025       AC_MSG_ERROR([cannot find ${with_dv_raw1394}/include/libraw1394/raw1394.h])
2026     fi
2027   else
2028     AC_CHECK_HEADERS(libraw1394/raw1394.h,
2029     [ VLC_ADD_PLUGIN([access_dv])
2030         VLC_ADD_LIBS([access_dv],[-lraw1394 -lavc1394])
2031     ],[
2032         if test -n "${enable_dv}"
2033         then
2034           AC_MSG_ERROR([cannot find libraw1394 headers])
2035         fi
2036     ])
2037   fi
2038
2039   dnl Check for static linking of libraw1394
2040   if test -z "${with_dv_raw1394_tree}" -a "${with_dv_raw1394_tree}" != ""
2041   then
2042     AC_MSG_CHECKING(for libraw1394.a in ${with_dv_raw1394_tree})
2043     real_dv_raw1394_tree="`cd ${with_dv_raw1394_tree} 2>/dev/null && pwd`"
2044     if test -z "${real_dv_raw1394_tree}"
2045     then
2046       dnl  The given directory can't be found
2047       AC_MSG_RESULT(no)
2048       AC_MSG_ERROR([cannot cd to ${real_dv_raw1394_tree}])
2049     fi
2050     if test -f "${real_dv_raw1394_tree}/src/.libs/libraw1394.a"
2051     then
2052       dnl  Use a custom libraw1394
2053       AC_MSG_RESULT(${real_dv_raw1394_tree}/src/.libs/libraw1394.a)
2054       VLC_ADD_BUILTINS([access_dv])
2055       VLC_ADD_LIBS([access_dv],[-L${real_dv_raw1394_tree}/src/.libs -lraw1394])
2056       VLC_ADD_CPPFLAGS([access_dv],[-I${real_dv_raw1394_tree}])
2057     else
2058       dnl  The given libraw1394 wasn't built
2059       AC_MSG_RESULT(no)
2060       AC_MSG_ERROR([cannot find ${real_dv_raw1394_tree}/src/.libs/libraw1394.a, make sure you compiled libraw1394 in ${with_dv_raw1394_tree}])
2061     fi
2062   fi
2063
2064   dnl
2065   dnl Check for libavc1394
2066   dnl
2067
2068   AC_ARG_WITH(dv-avc1394,
2069   [    --with-dv-avc1394=PATH   libavc1394 headers and libraries])
2070   AC_ARG_WITH(dv-avc1394-tree,
2071   [    --with-dv-avc1394=PATH   libavc1394 tree for static linking])
2072
2073   if test -z "${with_dv_avc1394}" -a "${with_dv_avc1394}" != ""
2074   then
2075     AC_MSG_CHECKING(for avc1394 headers in ${with_dv_avc1394})
2076     if test -f ${with_dv_avc1394}/include/libavc1394/avc1394.h
2077     then
2078       dnl  Use ${with_dv_avc1394}/include/libavc1394/avc1394.h
2079       AC_MSG_RESULT(yes)
2080       VLC_ADD_LIBS([access_dv],[-L${with_dv_avc1394}/lib -lavc1394 -lrom1394 -lpthread])
2081       VLC_ADD_CPPFLAGS([access_dv],[-I${with_avc1394}/include])
2082     else
2083       dnl  No libavc1394 could be found, sorry
2084       AC_MSG_RESULT(no)
2085       AC_MSG_ERROR([cannot find ${with_dv_avc1394}/include/libavc1394/avc1394.h])
2086     fi
2087   else
2088     AC_CHECK_HEADERS(libavc1394/avc1394.h,
2089     [ VLC_ADD_LIBS([access_dv],[-lavc1394 -lrom1394 -lpthread])
2090     ],[
2091         if test -n "${enable_dv}"
2092         then
2093           AC_MSG_ERROR([cannot find libavc1394 headers])
2094         fi
2095     ])
2096   fi
2097
2098   dnl Check for static linking of libavc1394
2099   if test -z "${with_dv_avc1394_tree}" -a "${with_dv_avc1394_tree}" != ""
2100   then
2101     AC_MSG_CHECKING(for libavc1394.a in ${with_dv_avc1394_tree})
2102     real_dv_avc1394_tree="`cd ${with_dv_avc1394_tree} 2>/dev/null && pwd`"
2103     if test -z "${real_dv_avc1394_tree}"
2104     then
2105       dnl  The given directory can't be found
2106       AC_MSG_RESULT(no)
2107       AC_MSG_ERROR([cannot cd to ${real_dv_avc1394_tree}])
2108     fi
2109     if test -f "${real_dv_avc1394_tree}/src/.libs/libavc1394.a"
2110     then
2111       dnl  Use a custom libavc1394
2112       AC_MSG_RESULT(${real_dv_avc1394_tree}/src/.libs/libavc1394.a)
2113       VLC_ADD_LIBS([access_dv],[-L${real_dv_avc1394_tree}/src/.libs -lavc1394 -lrom1394 -lpthread])
2114       VLC_ADD_CPPFLAGS([access_dv],[-I${real_dv_avc1394_tree}])
2115     else
2116       dnl  The given libavc1394 wasn't built
2117       AC_MSG_RESULT(no)
2118       AC_MSG_ERROR([cannot find ${real_dv_avc1394_tree}/src/.libs/libavc1394.a, make sure you compiled libavc1394 in ${with_dv_avc1394_tree}])
2119     fi
2120   fi
2121 fi
2122
2123 dnl
2124 dnl dvdread module: check for libdvdread
2125 dnl
2126 AC_ARG_ENABLE(dvdread,
2127 [  --enable-dvdread        dvdread input module (default disabled)])
2128 if test "${enable_dvdread}" != "no"
2129 then
2130   AC_ARG_WITH(dvdread,
2131   [    --with-dvdread=PATH   libdvdread headers and libraries])
2132   AC_ARG_WITH(dvdread-tree,
2133   [    --with-dvdread-tree=PATH libdvdread tree for static linking])
2134
2135   dnl Temporary hack (yeah, sure ;)
2136   if test "${SYS}" = "mingw32" || test "${SYS}" = "darwin" || test "${SYS}" = "beos" ; then
2137       VLC_ADD_LIBS([dvdread],[-ldvdcss])
2138   fi
2139
2140   if test -z "${with_dvdread}"
2141   then
2142     if test -z "${with_dvdread_tree}"
2143     then
2144       AC_CHECK_HEADERS(dvdread/dvd_reader.h,
2145         [ VLC_ADD_PLUGIN([dvdread])
2146           VLC_ADD_LIBS([dvdread],[-ldvdread ${LIBS_dvdcss}])
2147         ],[
2148           if test -n "${enable_dvdread}"
2149           then
2150             AC_MSG_ERROR([cannot find libdvdread headers])
2151           fi
2152         ])
2153     else
2154       AC_MSG_CHECKING(for libdvdread.a in ${with_dvdread_tree})
2155       real_dvdread_tree="`cd ${with_dvdread_tree} 2>/dev/null && pwd`"
2156       if test -z "${real_dvdread_tree}"
2157       then
2158         dnl  The given directory can't be found
2159         AC_MSG_RESULT(no)
2160         AC_MSG_ERROR([cannot cd to ${with_dvdread_tree}])
2161       fi
2162       if test -f "${real_dvdread_tree}/dvdread/.libs/libdvdread.a"
2163       then
2164         dnl  Use a custom libdvdread
2165         AC_MSG_RESULT(${real_dvdread_tree}/dvdread/.libs/libdvdread.a)
2166         VLC_ADD_BUILTINS([dvdread])
2167         VLC_ADD_LIBS([dvdread],[-L${real_dvdread_tree}/dvdread/.libs -ldvdread ${LIBS_dvdcss}])
2168         VLC_ADD_CPPFLAGS([dvdread],[-I${real_dvdread_tree}])
2169       else
2170         dnl  The given libdvdread wasn't built
2171         AC_MSG_RESULT(no)
2172         AC_MSG_ERROR([cannot find ${real_dvdread_tree}/dvdread/.libs/libdvdread.a, make sure you compiled libdvdread in ${with_dvdread_tree}])
2173       fi
2174     fi
2175   else
2176     AC_MSG_CHECKING(for dvdread headers in ${with_dvdread})
2177     if test -f ${with_dvdread}/include/dvdread/dvd_reader.h
2178     then
2179       dnl  Use ${with_dvdread}/include/dvdread/dvd_reader.h
2180       AC_MSG_RESULT(yes)
2181       VLC_ADD_PLUGIN([dvdread])
2182       VLC_ADD_LIBS([dvdread],[-L${with_dvdread}/lib -ldvdread ${LIBS_dvdcss}])
2183       VLC_ADD_CPPFLAGS([dvdread],[-I${with_dvdread}/include])
2184     else
2185       dnl  No libdvdread could be found, sorry
2186       AC_MSG_RESULT(no)
2187       AC_MSG_ERROR([cannot find ${with_dvdread}/include/dvdread/dvd_reader.h])
2188     fi
2189   fi
2190 fi
2191
2192 dnl
2193 dnl  libdvdnav plugin
2194 dnl
2195 AC_ARG_ENABLE(dvdnav,
2196   [  --enable-dvdnav         dvdnav input module (default enabled)])
2197 if test "${enable_dvdnav}" != "no"
2198 then
2199   dnl Same hack than dvdread
2200   if test "${SYS}" = "mingw32" || test "${SYS}" = "darwin" || test "${SYS}" = "beos" ; then
2201       VLC_ADD_LIBS([dvdnav],[-ldvdcss])
2202   fi
2203
2204   DVDNAV_PATH="${PATH}"
2205   AC_ARG_WITH(dvdnav-config-path,
2206     [    --with-dvdnav-config-path=PATH dvdnav-config path (default search in \$PATH)],
2207     [ if test "${with_dvdnav_config_path}" != "no"
2208       then
2209         DVDNAV_PATH="${with_dvdnav_config_path}:${PATH}"
2210       fi ])
2211   AC_PATH_PROG(DVDNAV_CONFIG, dvdnav-config, no, ${DVDNAV_PATH})
2212   if test "${DVDNAV_CONFIG}" != "no"
2213   then
2214     VLC_ADD_PLUGIN([dvdnav])
2215     VLC_ADD_CFLAGS([dvdnav],[`${DVDNAV_CONFIG} --cflags`])
2216     VLC_ADD_LIBS([dvdnav],[`${DVDNAV_CONFIG} --libs`])
2217   fi
2218 fi
2219
2220 dnl
2221 dnl  Windows DirectShow access module
2222 dnl
2223 AC_ARG_ENABLE(dshow,
2224   [  --enable-dshow          Win32 DirectShow support (default enabled on Win32)])
2225 if test "${enable_dshow}" != "no"
2226 then
2227   if test "${SYS}" = "mingw32" -o "${SYS}" = "cygwin"
2228   then
2229     AC_LANG_PUSH(C++)
2230       AC_CHECK_HEADERS(dshow.h,
2231       [ VLC_ADD_PLUGIN([dshow])
2232         VLC_ADD_CXXFLAGS([dshow],[])
2233         VLC_ADD_LIBS([dshow],[-lole32 -loleaut32 -luuid]) ])
2234     AC_LANG_POP(C++)
2235   fi
2236 fi
2237
2238 dnl
2239 dnl  Windows DirectShow BDA access module
2240 dnl
2241 AC_ARG_ENABLE(bda,
2242   [  --enable-bda            Win32 DirectShow BDA support (default enabled on Win32)])
2243 if test "${enable_bda}" != "no"
2244 then
2245   if test "${SYS}" = "mingw32" -o "${SYS}" = "cygwin"
2246   then
2247       AC_CHECK_HEADERS(dshow.h,
2248       [ VLC_ADD_PLUGIN([bda])
2249         VLC_ADD_CXXFLAGS([bda],[])
2250         VLC_ADD_LIBS([bda],[-lstrmiids -lole32 -loleaut32 -luuid]) ])
2251   fi
2252 fi
2253
2254
2255 dnl
2256 dnl  OpenCV wrapper and example filters
2257 dnl
2258 AC_ARG_ENABLE(opencv,
2259   [  --enable-opencv         OpenCV (computer vision) filter (default disabled)])
2260 if test "${enable_opencv}" = "yes" -a "${CXX}" != "";
2261 then
2262   AC_ARG_WITH(opencv-tree,
2263   [    --with-opencv-tree=PATH opencv tree for linking])
2264   if test -n "${with_opencv_tree}"
2265   then
2266     if test "${SYS}" = "mingw32" -o "${SYS}" = "cygwin"
2267     then
2268           AC_MSG_CHECKING(for opencv in ${with_opencv_tree})
2269           if test -f ${with_opencv_tree}/cv/include/cv.h -a -f ${with_opencv_tree}/cxcore/include/cxcore.h \
2270             -a -f ${with_opencv_tree}/cvaux/include/cvaux.h -a -f ${with_opencv_tree}/otherlibs/highgui/highgui.h
2271       then
2272         AC_MSG_RESULT(yes)
2273         VLC_ADD_PLUGIN([opencv_wrapper])
2274         VLC_ADD_LIBS([opencv_wrapper],[-L${with_opencv_tree}/lib -lcv -lcxcore -lcvaux -lhighgui])
2275         VLC_ADD_CFLAGS([opencv_wrapper],[-I${with_opencv_tree}/cv/include -I${with_opencv_tree}/cxcore/include -I${with_opencv_tree}/cvaux/include -I${with_opencv_tree}/otherlibs/highgui])
2276         AC_LANG_PUSH(C++)
2277         VLC_ADD_PLUGIN([opencv_example])
2278         VLC_ADD_LIBS([opencv_example],[-L${with_opencv_tree}/lib -lcv -lcxcore -lcvaux -lhighgui])
2279         VLC_ADD_CXXFLAGS([opencv_example],[-I${with_opencv_tree}/cv/include -I${with_opencv_tree}/cxcore/include -I${with_opencv_tree}/cvaux/include -I${with_opencv_tree}/otherlibs/highgui])
2280         AC_LANG_POP(C++)        
2281           else
2282         dnl  No opencv could be found, sorry
2283         AC_MSG_RESULT(no)
2284         AC_MSG_ERROR([cannot find opencv in ${with_opencv_tree}])
2285           fi
2286     else
2287           AC_MSG_WARN([--enable-opencv currently only works on windows])
2288     fi
2289   fi  
2290 fi
2291
2292
2293 dnl
2294 dnl  libsmbclient plugin
2295 dnl
2296 AC_ARG_ENABLE(smb,
2297   [  --enable-smb            smb input module (default enabled)])
2298 if test "${enable_smb}" != "no"; then
2299   AC_CHECK_HEADERS(libsmbclient.h,
2300     [ VLC_ADD_PLUGIN([access_smb])
2301       VLC_ADD_LIBS([access_smb],[-lsmbclient]) ],
2302     [ if test -n "${enable_smb}"; then
2303         AC_MSG_ERROR([cannot find libsmbclient headers])
2304      fi ])
2305   AC_CHECK_MEMBER([struct _SMBCCTX.close_fn],
2306     AC_DEFINE([HAVE__SMBCCTX_CLOSE_FN], 1, [Define if samba has _SMBCCTX.close_fn]),,
2307     [#include <libsmbclient.h>])
2308 fi
2309
2310 dnl
2311 dnl  libdvbpsi ts demux/mux
2312 dnl
2313 AC_ARG_ENABLE(dvbpsi,
2314   [  --enable-dvbpsi         dvbpsi ts mux and demux module (default enabled)])
2315 if test "${enable_dvbpsi}" != "no"
2316 then
2317   AC_ARG_WITH(dvbpsi,
2318   [    --with-dvbpsi=PATH    libdvbpsi headers and libraries])
2319   AC_ARG_WITH(dvbpsi,
2320   [    --with-dvbpsi-tree=PATH libdvbpsi tree for static linking])
2321   case "${with_dvbpsi}" in
2322   ""|yes)
2323     if test -z "${with_dvbpsi_tree}"
2324     then
2325       AC_CHECK_HEADERS(dvbpsi/dr.h,
2326         [ VLC_ADD_PLUGIN([ts])
2327           if test "${enable_sout}" != "no"; then
2328             VLC_ADD_PLUGIN([mux_ts])
2329           fi
2330           VLC_ADD_LIBS([mux_ts ts dvb],[-ldvbpsi]) ],
2331         [  AC_MSG_WARN([cannot find libdvbpsi headers]) ],
2332         [#if defined( HAVE_STDINT_H )
2333 #   include <stdint.h>
2334 #elif defined( HAVE_INTTYPES_H )
2335 #   include <inttypes.h>
2336 #endif
2337 #include <dvbpsi/dvbpsi.h>
2338 #include <dvbpsi/descriptor.h>
2339 #include <dvbpsi/pat.h>
2340 #include <dvbpsi/pmt.h>])
2341     else
2342       AC_MSG_CHECKING(for libdvbpsi.a in ${with_dvbpsi_tree})
2343       real_dvbpsi_tree="`cd ${with_dvbpsi_tree} 2>/dev/null && pwd`"
2344       if test -z "${real_dvbpsi_tree}"
2345       then
2346         dnl  The given directory can't be found
2347         AC_MSG_RESULT(no)
2348         AC_MSG_ERROR([cannot cd to ${with_dvbpsi_tree}])
2349       fi
2350       if test -f "${real_dvbpsi_tree}/src/.libs/libdvbpsi.a"
2351       then
2352         dnl  Use a custom libdvbpsi
2353         AC_MSG_RESULT(${real_dvbpsi_tree}/src/.libs/libdvbpsi.a)
2354         VLC_ADD_BUILTINS([ts])
2355         if test "${enable_sout}" != "no"; then
2356           VLC_ADD_BUILTINS([mux_ts])
2357         fi
2358         VLC_ADD_CPPFLAGS([mux_ts ts dvb],[-I${real_dvbpsi_tree}/src])
2359         VLC_ADD_LIBS([mux_ts ts dvb],[${real_dvbpsi_tree}/src/.libs/libdvbpsi.a])
2360       else
2361         dnl  The given libdvbpsi wasn't built
2362         AC_MSG_RESULT(no)
2363         AC_MSG_ERROR([cannot find ${real_dvbpsi_tree}/src/.libs/libdvbpsi.a, make sure you compiled libdvbpsi in ${with_dvbpsi_tree}])
2364       fi
2365     fi
2366   ;;
2367   no)
2368     dnl  Compile without dvbpsi
2369   ;;
2370   *)
2371     AC_MSG_CHECKING(for dvbpsi headers in ${with_dvbpsi})
2372     if test -z "${with_dvbpsi}"
2373     then
2374       LDFLAGS_test=""
2375       CPPFLAGS_test=""
2376     else
2377       LDFLAGS_test="-L${with_dvbpsi}/lib"
2378       CPPFLAGS_test="-I${with_dvbpsi}/include"
2379     fi
2380     CPPFLAGS="${CPPFLAGS_save} ${CPPFLAGS_test}"
2381     AC_CHECK_HEADERS([dvbpsi/dr.h],[
2382       VLC_ADD_PLUGIN([ts])
2383       if test "${enable_sout}" != "no"; then
2384         VLC_ADD_PLUGIN([mux_ts])
2385       fi
2386       VLC_ADD_CPPFLAGS([mux_ts ts dvb],[${CPPFLAGS_test}])
2387       VLC_ADD_LIBS([mux_ts ts dvb],[${LDFLAGS_test} -ldvbpsi])
2388
2389     ],[
2390       if test -n "${enable_dvbpsi}"
2391       then
2392         AC_MSG_ERROR([Could not find libdvbpsi on your system: you may get it from www.videolan.org, you'll need at least version 0.1.1])
2393       fi
2394     ])
2395     CPPFLAGS="${CPPFLAGS_save}"
2396   ;;
2397   esac
2398   AC_CHECK_LIB(dvbpsi, dvbpsi_GenSDTSections, [
2399     AC_DEFINE(HAVE_DVBPSI_SDT, 1, [Define if you have dvbpsi_GenSDTSections.])
2400   ], [], [${LIBS_ts}])
2401
2402 fi
2403
2404 dnl
2405 dnl  Video4Linux plugin
2406 dnl
2407 AC_ARG_ENABLE(v4l,
2408   [  --enable-v4l            Video4Linux input support (default disabled)])
2409 if test "${enable_v4l}" = "yes"
2410 then
2411   AC_ARG_WITH(v4l,
2412     [    --with-v4l=PATH       path to a v4l-enabled kernel tree],[],[])
2413   if test "${with_v4l}" != "no" -a -n "${with_v4l}"
2414   then
2415     VLC_ADD_CPPFLAGS([v4l],[-I${with_v4l}/include])
2416   fi
2417
2418   CPPFLAGS="${CPPFLAGS_save} ${CPPFLAGS_v4l}"
2419   AC_CHECK_HEADERS(linux/videodev.h, [
2420     VLC_ADD_PLUGIN([v4l])
2421   ],[])
2422   CPPFLAGS="${CPPFLAGS_save}"
2423 fi
2424
2425 dnl
2426 dnl  Video4Linux2 plugin
2427 dnl
2428 AC_ARG_ENABLE(v4l2,
2429   [  --enable-v4l2           Video4Linux2 input support (default disabled)])
2430 if test "${enable_v4l2}" = "yes"
2431 then
2432   AC_ARG_WITH(v4l2,
2433     [    --with-v4l2=PATH       path to a v4l2-enabled kernel tree],[],[])
2434   if test "${with_v4l2}" != "no" -a -n "${with_v4l2}"
2435   then
2436     VLC_ADD_CPPFLAGS([v4l2],[-I${with_v4l2}/include])
2437   fi
2438
2439   AC_CHECK_HEADER(alsa/asoundlib.h, AC_CHECK_LIB(asound, main, have_v4l2_alsa="true", have_v4l2_alsa="false"),have_v4l2_alsa="false")
2440   if test "${have_v4l2_alsa}" = "true"
2441   then
2442     CFLAGS="${CFLAGS_save}"
2443     AC_TRY_COMPILE([#define ALSA_PCM_NEW_HW_PARAMS_API
2444                     #define ALSA_PCM_NEW_SW_PARAMS_API
2445                     #include <alsa/asoundlib.h>],
2446        [snd_pcm_hw_params_get_period_time(0,0,0);],
2447         AC_DEFINE(HAVE_ALSA_NEW_API, 1, Define if ALSA is at least rc4))
2448     VLC_ADD_LDFLAGS([v4l2],[-lasound -lm -ldl])
2449     AC_DEFINE(HAVE_ALSA, 1, Define if ALSA is present.)
2450   fi
2451
2452   CPPFLAGS="${CPPFLAGS_save} ${CPPFLAGS_v4l2}"
2453   AC_CHECK_HEADERS(linux/videodev2.h, [
2454     VLC_ADD_PLUGIN([v4l2])
2455   ],[])
2456   CPPFLAGS="${CPPFLAGS_save}"
2457 fi
2458
2459
2460 dnl
2461 dnl  special access module for Hauppauge PVR cards
2462 dnl
2463 AC_ARG_ENABLE(pvr,
2464   [  --enable-pvr            PVR cards access module (default disabled)])
2465 if test "${enable_pvr}" = "yes"
2466 then
2467   VLC_ADD_PLUGIN([pvr])
2468   AC_ARG_WITH(videodev2,
2469     [  --with-videodev2=FILE   Location of videodev2.h file (default /usr/include/linux/videodev2.h)],[],[])
2470   if test "${with_videodev2}" != "no" -a -n "${with_videodev2}"
2471   then
2472     AC_DEFINE_UNQUOTED(VIDEODEV2_H_FILE, "${with_videodev2}", [Location of videodev2.h])
2473   fi
2474     
2475
2476   AC_CACHE_CHECK([for new linux/videodev2.h],
2477       [new_linux_videodev2_h],
2478       [AC_TRY_COMPILE([
2479           #include <sys/types.h>
2480           #   ifdef VIDEODEV2_H_FILE
2481           #   include VIDEODEV2_H_FILE
2482           #   else
2483           #   include <linux/videodev2.h>
2484           #   endif
2485           ],
2486           [struct v4l2_ext_controls ctrls; ctrls.ctrl_class = V4L2_CTRL_CLASS_MPEG; ],
2487           new_linux_videodev2_h=yes,
2488           new_linux_videodev2_h=no)])
2489   if test "${new_linux_videodev2_h}" != "no"; then
2490     AC_DEFINE(HAVE_NEW_LINUX_VIDEODEV2_H, 1, [Define if new linux/videodev2.h present])
2491   fi
2492 fi
2493
2494 dnl
2495 dnl  gnomeVFS access module
2496 dnl
2497 AC_ARG_ENABLE(gnomevfs,
2498   [  --enable-gnomevfs       GnomeVFS access module (default disabled)])
2499 if test "${enable_gnomevfs}" = "yes" 
2500 then
2501   PKG_CHECK_MODULES(GNOMEVFS, gnome-vfs-2.0,
2502     VLC_ADD_LIBS([access_gnomevfs],[$GNOMEVFS_LIBS])
2503     VLC_ADD_CPPFLAGS([access_gnomevfs],[$GNOMEVFS_CPPFLAGS])
2504     VLC_ADD_CFLAGS([access_gnomevfs],[$GNOMEVFS_CFLAGS])
2505     VLC_ADD_PLUGIN([access_gnomevfs]),
2506     AC_MSG_WARN([GnomeVFS support disabled because GnomeVFS development headers not found]))
2507 fi
2508
2509 dnl Need to test libcdio and libvcdinfo for a number of things. Do it now.
2510 AC_ARG_ENABLE(libcdio,
2511   [  --enable-libcdio        CD input and control library support (default enabled)])
2512
2513
2514 have_libcdio=no
2515 have_libvcdinfo=no
2516 if test "${enable_libcdio}" != "no"
2517 then
2518   PKG_CHECK_MODULES(LIBCDIO, libcdio >= 0.78.2,
2519      have_libcdio=yes
2520      AC_DEFINE(HAVE_LIBCDIO, 1, 
2521      [Define if you have libcdio 0.78.2 or greater installed]),
2522      [AC_MSG_WARN(CD Reading and information library not found)])
2523
2524   PKG_CHECK_MODULES(VCDINFO, libvcdinfo >= 0.7.22,
2525      [have_libvcdinfo=yes
2526      AC_DEFINE(HAVE_VCDINFO, 1, 
2527      [Define if you have libvcdinfo 0.7.22 or greater installed])],
2528      [AC_MSG_WARN(VCD information library not found)])
2529 fi
2530
2531 dnl
2532 dnl  VCDX and CDDAX modules
2533 dnl
2534 AC_ARG_ENABLE(cddax,
2535   [  --enable-cddax          audio CD plugin with CD Text and CD paranoia via libcdio (default disabled)])
2536  
2537 AC_ARG_ENABLE(libcddb,
2538   [  --enable-libcddb        CDDB support for libcdio audio CD (default enabled)])
2539  
2540 if test "${enable_cddax}" = "yes"
2541 then
2542   if test "$have_libcdio" = "yes"
2543   then
2544     AC_DEFINE(HAVE_CDDAX, 1, [Define for the audio CD plugin using libcdio])
2545     VLC_ADD_LIBS([cddax],[$LIBCDIO_LIBS])
2546     VLC_ADD_CFLAGS([cddax],[$LIBCDIO_CFLAGS])
2547     VLC_ADD_PLUGIN([cddax])
2548     PKG_CHECK_MODULES(LIBCDIO_PARANOIA, libcdio_paranoia >= 0.72, [
2549     VLC_ADD_LIBS([cddax],[$LIBCDIO_CDDA_LIBS $LIBCDIO_CDDA_LIBS $LIBCDIO_PARANOIA_LIBS])],
2550     AC_MSG_WARN([CD Paranoia support disabled because no libcdio >= 0.72 found]))
2551   else 
2552     AC_MSG_WARN([cddax plugin disabled because ok libcdio library not found or disabled])
2553     HAVE_CDDAX=no
2554   fi
2555
2556   if test "$enable_libcddb" != "no"; then
2557     PKG_CHECK_MODULES(LIBCDDB, libcddb >= 0.9.5, [
2558       HAVE_LIBCDDB=yes 
2559       AC_DEFINE(HAVE_LIBCDDB, 1, [Define this if you have libcddb installed])
2560       VLC_ADD_LIBS([cddax],[$LIBCDDB_LIBS])
2561       VLC_ADD_CFLAGS([cddax],[$LIBCDDB_CFLAGS])
2562       ],
2563       [AC_MSG_WARN(new enough libcddb not found. CDDB access disabled) 
2564       HAVE_LIBCDDB=no])
2565   fi
2566  
2567 fi
2568
2569 AC_ARG_ENABLE(vcdx,
2570   [  --enable-vcdx           VCD with navigation via libvcdinfo (default disabled)])
2571  
2572 if test "${enable_vcdx}" = "yes"
2573 then
2574   if test "${have_libvcdinfo}" = "yes"
2575   then
2576     VLC_ADD_LIBS([vcdx],[$VCDINFO_LIBS])
2577     VLC_ADD_CFLAGS([vcdx],[$VCDINFO_CFLAGS])
2578   else 
2579     AC_MSG_WARN([vcdx plugin disabled because ok libvcdinfo library not found or disabled])
2580     HAVE_VCDX=no
2581   fi
2582
2583   PKG_CHECK_MODULES(LIBCDIO, libiso9660 >= 0.72,
2584    [VLC_ADD_LIBS([vcdx],[$LIBISO9660_LIBS])
2585     VLC_ADD_CFLAGS([vcdx],[$LIBISO9660_CFLAGS])],
2586     [AC_MSG_WARN([vcdx plugin disabled because ok libiso9660 library not found])
2587     HAVE_VCDX=no])
2588
2589   if test "$have_libvcdinfo" = "yes"
2590   then
2591     AC_DEFINE(HAVE_VCDX, 1, 
2592     [Define for the VCD plugin using libcdio/libvcdinfo])
2593     VLC_ADD_LIBS([vcdx],[$VCDINFO_LIBS])
2594     VLC_ADD_CFLAGS([vcdx],[$VCDINFO_CFLAGS])
2595     VLC_ADD_PLUGIN([vcdx])
2596   else 
2597     AC_MSG_WARN([vcdx plugin disabled because ok libvcdinfo library not found])
2598     HAVE_VCDX=no
2599   fi
2600 fi
2601
2602 dnl
2603 dnl  Built-in CD-DA and VCD module
2604 dnl
2605 AC_ARG_ENABLE(cdda,           
2606   [  --enable-cdda           audio CD via built-in VCD (default enabled)])
2607  
2608 AC_ARG_ENABLE(vcd,
2609   [  --enable-vcd            built-in VCD (default enabled)])
2610
2611 if test "${enable_vcd}" != "no"
2612 then
2613   AC_MSG_CHECKING(for cdrom_msf0 in linux/cdrom.h)
2614   AC_EGREP_HEADER(cdrom_msf0,linux/cdrom.h,[
2615     AC_MSG_RESULT(yes)
2616     VLC_ADD_PLUGIN([vcd])
2617     VLC_ADD_PLUGIN([cdda])
2618   ],[
2619     AC_MSG_RESULT(no)
2620   ])
2621
2622   AC_MSG_CHECKING(for scsireq in sys/scsiio.h)
2623   AC_EGREP_HEADER(scsireq,sys/scsiio.h,[
2624     AC_MSG_RESULT(yes)
2625     VLC_ADD_PLUGIN([vcd])
2626     VLC_ADD_PLUGIN([cdda])
2627     AC_DEFINE(HAVE_SCSIREQ_IN_SYS_SCSIIO_H, 1, For NetBSD VCD support)
2628   ],[
2629     AC_MSG_RESULT(no)
2630   ])
2631
2632   AC_MSG_CHECKING(for ioc_toc_header in sys/cdio.h)
2633   AC_EGREP_HEADER(ioc_toc_header ,sys/cdio.h,[
2634     AC_MSG_RESULT(yes)
2635     VLC_ADD_PLUGIN([vcd])
2636     VLC_ADD_PLUGIN([cdda])
2637     AC_DEFINE(HAVE_IOC_TOC_HEADER_IN_SYS_CDIO_H, 1, For FreeBSD VCD support)
2638   ],[
2639     AC_MSG_RESULT(no)
2640   ])
2641
2642   if test "${SYS}" = "bsdi" -o "${SYS}" = "mingw32"
2643   then
2644     VLC_ADD_PLUGIN([vcd])
2645     VLC_ADD_PLUGIN([cdda])
2646   fi
2647
2648   if test "${SYS}" = "darwin"
2649   then
2650     VLC_ADD_PLUGIN([vcd])
2651     VLC_ADD_PLUGIN([cdda])
2652     VLC_ADD_LDFLAGS([vcd vcdx cdda cddax],[-Wl,-framework,IOKit,-framework,CoreFoundation])
2653     VLC_ADD_LIBS([vcdx cddax cdda],[-liconv])
2654   fi
2655
2656   if test "$enable_libcddb" != "no"; then
2657     PKG_CHECK_MODULES(LIBCDDB, libcddb >= 0.9.5, [
2658       HAVE_LIBCDDB=yes 
2659       AC_DEFINE(HAVE_LIBCDDB, 1, [Define this if you have libcddb installed])
2660       VLC_ADD_LIBS([cdda],[$LIBCDDB_LIBS])
2661       VLC_ADD_CFLAGS([cdda],[$LIBCDDB_CFLAGS])
2662       ],:
2663       [AC_MSG_WARN(new enough libcddb not found. CDDB access disabled) 
2664       HAVE_LIBCDDB=no])
2665   fi
2666 fi
2667
2668 dnl
2669 dnl  DVB-S/DVB-T/DVB-C satellite/teresterial/cable input using v4l2
2670 dnl
2671 AC_ARG_ENABLE(dvb,
2672   [  --enable-dvb            DVB-S/T/C card support (default disabled)])
2673
2674 if test "${enable_dvb}" = "yes"
2675 then
2676   AC_ARG_WITH(dvb,
2677   [    --with-dvb=PATH       path to a dvb- and v4l2-enabled kernel tree],[],[])
2678   if test "${with_dvb}" != "no" -a -n "${with_dvb}"
2679   then
2680     VLC_ADD_CFLAGS([dvb],[-I${with_dvb}/include])
2681   fi
2682   CPPFLAGS="${CPPFLAGS_save} -I${with_dvb}/include"
2683   AC_CHECK_HEADERS(linux/dvb/version.h linux/dvb/frontend.h, [
2684     if test -z "${with_dvbpsi_tree}"
2685     then
2686       VLC_ADD_PLUGIN([dvb])
2687     else
2688       VLC_ADD_BUILTINS([dvb])
2689     fi
2690   ],[AC_MSG_WARN(linux-dvb headers not found, dvb disabled)])
2691   CPPFLAGS="${CPPFLAGS_save}"
2692 fi
2693
2694 dnl
2695 dnl  Screen capture module
2696 dnl
2697 AC_ARG_ENABLE(screen,
2698   [  --enable-screen         Screen capture support (default enabled)])
2699 if test "${enable_screen}" != "no"; then
2700   if test "${SYS}" = "darwin"; then
2701     AC_CHECK_HEADERS(OpenGL/gl.h, [
2702       AC_CHECK_HEADERS(ApplicationServices/ApplicationServices.h, [
2703         VLC_ADD_PLUGIN([screen])
2704         VLC_ADD_LDFLAGS([screen],[-Wl,-framework,OpenGL,-framework,ApplicationServices])
2705       ])
2706     ])
2707   elif test "${SYS}" = "mingw32"; then
2708     VLC_ADD_PLUGIN([screen])
2709     VLC_ADD_LIBS([screen],[-lgdi32])
2710   elif test "${SYS}" = "mingwce"; then
2711     CPPFLAGS="${CPPFLAGS_save}"
2712   elif test "${SYS}" = "beos"; then
2713     VLC_ADD_PLUGIN([screen])
2714     VLC_ADD_CXXFLAGS([screen],[])
2715     VLC_ADD_LIBS([screen],[-lbe])
2716   else
2717     CPPFLAGS="${CPPFLAGS_save} ${X_CFLAGS}"
2718     AC_CHECK_HEADERS(X11/Xlib.h, [
2719       VLC_ADD_PLUGIN([screen])
2720       VLC_ADD_LIBS([screen],[${X_LIBS} ${X_PRE_LIBS} -lX11])
2721       VLC_ADD_CPPFLAGS([screen],[${X_CFLAGS}])
2722     ])
2723     CPPFLAGS="${CPPFLAGS_save}"
2724   fi
2725 fi
2726
2727 dnl
2728 dnl  ipv6 plugin - not for QNX yet
2729 dnl
2730 have_ipv6=no
2731 AC_CHECK_FUNCS(inet_pton,[have_ipv6=yes],[
2732   AC_CHECK_LIB(nsl,inet_pton, [have_ipv6=yes])
2733 ])
2734
2735 AS_IF([test "${have_ipv6}" = "yes"], [
2736   AC_DEFINE(HAVE_INET_PTON, 1, [Define to 1 if you have inet_pton().])])
2737
2738
2739 AC_CHECK_FUNCS(inet_ntop,[
2740   AC_DEFINE(HAVE_INET_NTOP, 1, [Define to 1 if you have inet_ntop().])])
2741
2742
2743 dnl
2744 dnl  ogg demux plugin
2745 dnl
2746 AC_ARG_ENABLE(ogg,
2747   [  --enable-ogg            Ogg demux support (default enabled)])
2748 if test "${enable_ogg}" != "no"
2749 then
2750   AC_ARG_WITH(ogg-tree,
2751   [    --with-ogg-tree=PATH  ogg tree for static linking])
2752   if test -n "${with_ogg_tree}"
2753   then
2754     AC_MSG_CHECKING(for libogg.a in ${with_ogg_tree})
2755     real_ogg_tree="`cd ${with_ogg_tree} 2>/dev/null && pwd`"
2756     if test -z "${real_ogg_tree}"
2757     then
2758       dnl  The given directory can't be found
2759       AC_MSG_RESULT(no)
2760       AC_MSG_ERROR([cannot cd to ${with_ogg_tree}])
2761     fi
2762     if test -f "${real_ogg_tree}/src/.libs/libogg.a"
2763     then
2764       dnl  Use a custom ogg
2765       AC_MSG_RESULT(${real_ogg_tree}/src/.libs/libogg.a)
2766       VLC_ADD_PLUGIN([ogg])
2767       if test "${enable_sout}" != "no"; then
2768         VLC_ADD_PLUGIN([mux_ogg])
2769       fi
2770       VLC_ADD_LIBS([ogg mux_ogg speex vorbis],[${real_ogg_tree}/src/.libs/libogg.a])
2771       VLC_ADD_CFLAGS([ogg mux_ogg speex vorbis],[-I${real_ogg_tree}/include])
2772     else
2773       dnl  The given ogg wasn't built
2774       AC_MSG_RESULT(no)
2775       AC_MSG_ERROR([cannot find ${real_ogg_tree}/src/.libs/libogg.a, make sure you compiled ogg in ${with_ogg_tree}])
2776     fi
2777   else
2778     AC_CHECK_HEADERS(ogg/ogg.h, [
2779       AC_CHECK_LIB( ogg, oggpack_read, [
2780         VLC_ADD_PLUGIN([ogg])
2781         if test "${enable_sout}" != "no"; then
2782           VLC_ADD_PLUGIN([mux_ogg])
2783         fi
2784         VLC_ADD_LIBS([ogg mux_ogg],[-logg])])
2785      ],[])
2786   fi
2787 fi
2788
2789 dnl
2790 dnl  matroska demux plugin
2791 dnl
2792 AC_ARG_ENABLE(mkv,
2793   [  --enable-mkv            Matroska demux support (default enabled)])
2794 if test "${enable_mkv}" != "no" -a "${CXX}" != ""; then
2795   AC_LANG_PUSH(C++)
2796   AC_CHECK_HEADERS(ebml/EbmlVersion.h, [
2797     AC_MSG_CHECKING(for libebml version >= 0.7.6)
2798     AC_EGREP_CPP(yes,
2799       [#include <ebml/EbmlVersion.h>
2800        #ifdef LIBEBML_VERSION
2801        #if LIBEBML_VERSION >= 0x000706
2802        yes
2803        #endif
2804        #endif],
2805       [AC_MSG_RESULT([yes])
2806         AC_CHECK_HEADERS(matroska/KaxVersion.h, [
2807           AC_MSG_CHECKING(for libmatroska version >= 0.7.7)
2808           AC_EGREP_CPP(yes,
2809             [#include <matroska/KaxVersion.h>
2810              #ifdef LIBMATROSKA_VERSION
2811              #if LIBMATROSKA_VERSION >= 0x000705
2812              yes
2813              #endif
2814              #endif],
2815             [AC_MSG_RESULT([yes])
2816               AC_CHECK_HEADERS(matroska/KaxAttachments.h)
2817               VLC_ADD_CXXFLAGS([mkv],[])
2818               if test "${SYS}" = "darwin"; then
2819                 VLC_ADD_CXXFLAGS([mkv],[-O1])
2820               fi
2821               AC_CHECK_LIB(ebml_pic, main, [
2822                 VLC_ADD_PLUGIN([mkv])
2823                 VLC_ADD_LIBS([mkv],[-lmatroska -lebml_pic])
2824               ],
2825                 AC_CHECK_LIB(ebml, main, [
2826                   VLC_ADD_PLUGIN([mkv])
2827                   VLC_ADD_LIBS([mkv],[-lmatroska -lebml])
2828                 ]) 
2829               )
2830             ],
2831             [AC_MSG_RESULT([no])
2832               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.])
2833           ])
2834         ])
2835       ],
2836       [AC_MSG_RESULT([no])
2837         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.])
2838     ])
2839   ])
2840   AC_LANG_POP(C++)
2841 fi
2842
2843 dnl
2844 dnl  modplug demux plugin
2845 dnl
2846 AC_ARG_ENABLE(mod,
2847   [  --enable-mod            Mod demux support (default enabled)])
2848 if test "${enable_mod}" != "no"
2849 then
2850   AC_ARG_WITH(mod-tree,
2851   [    --with-mod-tree=PATH mod tree for static linking])
2852   if test -n "${with_mod_tree}"
2853   then
2854     AC_MSG_CHECKING(for libmodplug.a in ${with_mod_tree})
2855     real_mod_tree="`cd ${with_mod_tree} 2>/dev/null && pwd`"
2856     if test -z "${real_mod_tree}"
2857     then
2858       dnl  The given directory can't be found
2859       AC_MSG_RESULT(no)
2860       AC_MSG_ERROR([cannot cd to ${with_mod_tree}])
2861     fi
2862     if test -f "${real_mod_tree}/src/.libs/libmodplug.a"
2863     then
2864       dnl  Use a custom mod
2865       AC_MSG_RESULT(${real_mod_tree}/src/.libs/libmodplug.a)
2866       VLC_ADD_PLUGIN([mod])
2867       VLC_ADD_LIBS([mod],[${real_mod_tree}/src/.libs/libmodplug.a -lstdc++])
2868       VLC_ADD_CXXFLAGS([mod],[-I${real_mod_tree}/include])
2869     else
2870       dnl  The given mod wasn't built
2871       AC_MSG_RESULT(no)
2872       AC_MSG_ERROR([cannot find ${real_mod_tree}/src/.libs/libmodplug.a, make sure you compiled mod in ${with_mod_tree}])
2873     fi
2874   else
2875     AC_CHECK_HEADERS(libmodplug/modplug.h, [
2876       VLC_ADD_PLUGIN([mod])
2877       VLC_ADD_CXXFLAGS([mod],[])
2878       VLC_ADD_LIBS([mod],[-lmodplug -lstdc++])])
2879   fi
2880 fi
2881
2882 dnl
2883 dnl  mpc demux plugin
2884 dnl
2885 AC_ARG_ENABLE(mpc,
2886   [  --enable-mpc            Mpc demux support (default enabled)])
2887 if test "${enable_mpc}" != "no"
2888 then
2889   AC_CHECK_HEADERS(mpcdec/mpcdec.h, [
2890     VLC_ADD_PLUGIN([mpc])
2891     VLC_ADD_LIBS([mpc],[-lmpcdec])])
2892 fi
2893
2894 dnl
2895 dnl  game music emu demux plugin
2896 dnl
2897 AC_ARG_ENABLE(gme,
2898   [  --enable-gme            Game Music Emu demux support (default enabled)])
2899 if test "${enable_gme}" != "no" -a "${CXX}" != "";
2900 then
2901   AC_LANG_PUSH(C++)
2902   AC_ARG_WITH(gme-tree,
2903   [    --with-gme-tree=PATH gme tree for static linking])
2904   if test -n "${with_gme_tree}"
2905   then
2906     AC_MSG_CHECKING(for libgme.a in ${with_mod_tree})
2907     real_gme_tree="`cd ${with_gme_tree} 2>/dev/null && pwd`"
2908     if test -z "${real_gme_tree}"
2909     then
2910       dnl  The given directory can't be found
2911       AC_MSG_RESULT(no)
2912       AC_MSG_ERROR([cannot cd to ${with_gme_tree}])
2913     fi
2914     if test -f "${real_gme_tree}/gme/libgme.a"
2915     then
2916       dnl  Use a custom gme
2917       AC_MSG_RESULT(${real_gme_tree}/gme/libgme.a)
2918       VLC_ADD_PLUGIN([gme])
2919       VLC_ADD_LIBS([gme],[${real_gme_tree}/gme/libgme.a])
2920       VLC_ADD_CXXFLAGS([gme],[-I${real_gme_tree}/gme])
2921     else
2922       dnl  The given gme wasn't built
2923       AC_MSG_RESULT(no)
2924       AC_MSG_ERROR([cannot find ${real_mod_tree}/gme/libgme.a, make sure you compiled gme in ${with_gme_tree}])
2925     fi
2926   else
2927       AC_MSG_WARN([only static linking is available, you must provide a gme-tree])
2928   fi
2929   AC_LANG_POP(C++)
2930 fi
2931
2932 dnl
2933 dnl  Codec plugins
2934 dnl
2935
2936 AC_ARG_WITH(,[Codec plugins:])
2937
2938 dnl
2939 dnl  mad plugin
2940 dnl
2941 AC_ARG_ENABLE(mad,
2942   [  --enable-mad            libmad module (default enabled)])
2943 if test "${enable_mad}" != "no"
2944 then
2945   AC_ARG_WITH(mad,
2946     [    --with-mad=PATH       path to libmad],[],[])
2947   if test "${with_mad}" != "no" -a -n "${with_mad}"
2948   then
2949     VLC_ADD_CPPFLAGS([mpgatofixed32],[-I${with_mad}/include])
2950     VLC_ADD_LIBS([mpgatofixed32],[-L${with_mad}/lib])
2951   fi
2952
2953   AC_ARG_WITH(mad-tree,
2954     [    --with-mad-tree=PATH   mad tree for static linking],[],[])
2955   if test "${with_mad_tree}" != "no" -a -n "${with_mad_tree}"
2956   then
2957     real_mad_tree="`cd ${with_mad_tree} 2>/dev/null && pwd`"
2958     if test -z "${real_mad_tree}"
2959     then
2960       dnl  The given directory can't be found
2961       AC_MSG_RESULT(no)
2962       AC_MSG_ERROR([${with_mad_tree} directory doesn't exist])
2963     fi
2964     dnl  Use a custom libmad
2965     AC_MSG_CHECKING(for mad.h in ${real_mad_tree})
2966     if test -f ${real_mad_tree}/mad.h
2967     then
2968       AC_MSG_RESULT(yes)
2969       VLC_ADD_CPPFLAGS([mpgatofixed32],[-I${real_mad_tree}])
2970       VLC_ADD_LIBS([mpgatofixed32],[-L${real_mad_tree}/.libs])
2971       LDFLAGS="${LDFLAGS_save} ${LIBS_mpgatofixed32}"
2972       AC_CHECK_LIB(mad, mad_bit_init, [
2973         VLC_ADD_BUILTINS([mpgatofixed32])
2974         VLC_ADD_LIBS([mpgatofixed32],[-lmad])
2975         ],[ AC_MSG_ERROR([the specified tree hasn't been compiled ])
2976       ],[])
2977       LDFLAGS="${LDFLAGS_save}"
2978     else
2979       AC_MSG_RESULT(no)
2980       AC_MSG_ERROR([the specified tree doesn't have mad.h])
2981     fi
2982   else
2983     CPPFLAGS="${CPPFLAGS_save} ${CPPFLAGS_mpgatofixed32}"
2984     LDFLAGS="${LDFLAGS_save} ${LIBS_mpgatofixed32}"
2985     AC_CHECK_HEADERS(mad.h, ,
2986       [ 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.]) ])
2987     AC_CHECK_LIB(mad, mad_bit_init, [
2988       VLC_ADD_PLUGIN([mpgatofixed32])
2989       VLC_ADD_LIBS([mpgatofixed32],[-lmad])],
2990       [ AC_MSG_ERROR([Cannot find libmad library...]) ])
2991     CPPFLAGS="${CPPFLAGS_save}"
2992     LDFLAGS="${LDFLAGS_save}"
2993   fi
2994 fi
2995
2996 dnl
2997 dnl   libid3tag support (FIXME!!! doesn't work with new input)
2998 dnl
2999 AC_ARG_ENABLE( id3tag,
3000   [  --disable-id3tag id3tag metadata reader plugin (default enabled)])
3001 AS_IF([test "${enable_id3tag}" != "no"], [
3002   AC_CHECK_HEADERS(id3tag.h, [
3003     AC_CHECK_HEADERS(zlib.h, [
3004       VLC_ADD_LIBS([id3tag],[-lid3tag -lz])
3005       VLC_ADD_PLUGIN([id3tag])
3006     ])
3007   ])
3008 ])
3009
3010 dnl
3011 dnl  ffmpeg decoder/demuxer plugin
3012 dnl
3013 dnl we try to find ffmpeg using : 1- given tree, 2- pkg-config
3014 dnl                               3- default place,
3015
3016 AC_ARG_ENABLE(ffmpeg,
3017 [  --enable-ffmpeg         ffmpeg codec (default enabled)])
3018 if test "${enable_ffmpeg}" != "no"
3019 then
3020
3021 dnl Those options have to be here because the .pc can be bogus for ffmpeg previous nov 05
3022
3023  AC_ARG_WITH(ffmpeg-mp3lame,
3024    [    --with-ffmpeg-mp3lame specify if ffmpeg has been compiled with mp3lame support],
3025    [
3026      if test "$with_ffmpeg_mp3lame" = "yes";    then
3027         VLC_ADD_LIBS([ffmpeg],[-lmp3lame])
3028      fi])
3029
3030  AC_ARG_WITH(ffmpeg-faac,
3031    [    --with-ffmpeg-faac    specify if ffmpeg has been compiled with faac support],
3032    [
3033      if test "$with_ffmpeg_faac" = "yes"; then
3034         VLC_ADD_LIBS([ffmpeg],[-lfaac])
3035      fi])
3036
3037  AC_ARG_WITH(ffmpeg-dts,
3038    [    --with-ffmpeg-dts     specify if ffmpeg has been compiled with dts support],
3039    [
3040      if test "$with_ffmpeg_dts" = "yes"; then
3041              LDFLAGS="${LDFLAGS_save} ${LDFLAGS_ffmpeg} ${LIBS_ffmpeg}"
3042              AC_CHECK_LIB(dts_pic, dts_free, 
3043                [ VLC_ADD_LIBS([ffmpeg],[-ldts_pic]) ],
3044                [ VLC_ADD_LIBS([ffmpeg],[-ldts]) ])
3045              LDFLAGS="${LDFLAGS_save}"
3046      fi])
3047
3048  AC_ARG_WITH(ffmpeg-vorbis,
3049    [    --with-ffmpeg-vorbis    specify if ffmpeg has been compiled with vorbis support],
3050    [
3051      if test "$with_ffmpeg_vorbis" = "yes"; then
3052         VLC_ADD_LIBS([ffmpeg],[-lvorbisenc -lvorbis])
3053      fi])
3054
3055  AC_ARG_WITH(ffmpeg-theora,
3056    [    --with-ffmpeg-theora    specify if ffmpeg has been compiled with theora support],
3057    [
3058      if test "$with_ffmpeg_theora" = "yes"; then
3059         VLC_ADD_LIBS([ffmpeg],[-ltheora])
3060      fi])
3061
3062  AC_ARG_WITH(ffmpeg-ogg,
3063    [    --with-ffmpeg-ogg    specify if ffmpeg has been compiled with ogg support],
3064    [
3065      if test "$with_ffmpeg_ogg" = "yes"; then
3066         VLC_ADD_LIBS([ffmpeg],[-logg])
3067      fi])
3068
3069  AC_ARG_WITH(ffmpeg-zlib,
3070    [    --with-ffmpeg-zlib    specify if ffmpeg has been compiled with zlib support],
3071    [
3072      if test "$with_ffmpeg_zlib" = "yes"; then
3073         VLC_ADD_LIBS([ffmpeg],[-lz])
3074      fi])
3075
3076  AC_ARG_WITH(ffmpeg-amrnb,
3077    [    --with-ffmpeg-amrnb specify if ffmpeg has been compiled with libamrnb support],
3078    [
3079      if test "$with_ffmpeg_amrnb" = "yes";      then
3080         VLC_ADD_LIBS([ffmpeg],[-lamrnb])
3081      fi])
3082
3083  AC_ARG_WITH(ffmpeg-amrwb,
3084    [    --with-ffmpeg-amrwb specify if ffmpeg has been compiled with libamrwb support],
3085    [
3086      if test "$with_ffmpeg_amrwb" = "yes";      then
3087         VLC_ADD_LIBS([ffmpeg],[-lamrwb])
3088      fi])
3089
3090  AC_ARG_WITH(ffmpeg-x264,
3091    [    --with-ffmpeg-x264 specify if ffmpeg has been compiled with libx264 support],
3092    [
3093      if test "$with_ffmpeg_x264" = "yes";       then
3094         VLC_ADD_LIBS([ffmpeg],[-lx264])
3095      fi])
3096
3097  AC_ARG_WITH(ffmpeg-a52,
3098    [    --with-ffmpeg-a52 specify if ffmpeg has been compiled with liba52 support],
3099    [
3100      if test "$with_ffmpeg_a52" = "yes";        then
3101         VLC_ADD_LIBS([ffmpeg],[-la52])
3102      fi])
3103
3104  dnl
3105  dnl test for --with-ffmpeg-tree
3106  dnl
3107  AC_ARG_WITH(ffmpeg-tree,
3108    [    --with-ffmpeg-tree=PATH ffmpeg tree for static linking])
3109
3110  if test "${with_ffmpeg_tree}" != "no" -a -n "${with_ffmpeg_tree}"; then
3111    AC_MSG_CHECKING(for libavcodec.a in ${with_ffmpeg_tree})
3112    real_ffmpeg_tree="`cd ${with_ffmpeg_tree} 2>/dev/null && pwd`"
3113    if test -z "${real_ffmpeg_tree}"; then
3114      dnl  The given directory can't be found
3115      AC_MSG_RESULT(no)
3116      AC_MSG_ERROR([cannot cd to ${with_ffmpeg_tree}])
3117    fi
3118    if ! test -f "${real_ffmpeg_tree}/libavcodec/libavcodec.a"; then
3119      dnl  The given libavcodec wasn't built
3120      AC_MSG_RESULT(no)
3121      AC_MSG_ERROR([cannot find ${real_ffmpeg_tree}/libavcodec/libavcodec.a, make sure you compiled libavcodec in ${with_ffmpeg_tree}])
3122    fi
3123    if ! fgrep -s "pp_get_context" "${real_ffmpeg_tree}/libavcodec/libavcodec.a"; then
3124      if test -f "${real_ffmpeg_tree}/libavcodec/libpostproc/libpostproc.a"; then
3125        VLC_ADD_LIBS([ffmpeg],[-L${real_ffmpeg_tree}/libavcodec/libpostproc ${real_ffmpeg_tree}/libavcodec/libpostproc/libpostproc.a])   
3126      elif test -f "${real_ffmpeg_tree}/libpostproc/libpostproc.a"; then 
3127         VLC_ADD_LIBS([ffmpeg],[-L${real_ffmpeg_tree}/libpostproc ${real_ffmpeg_tree}/libpostproc/libpostproc.a])
3128         VLC_ADD_CPPFLAGS([ffmpeg stream_out_switcher],[-I${real_ffmpeg_tree}])
3129      else
3130        dnl  The given libavcodec wasn't built with --enable-postproc
3131        AC_MSG_RESULT(no)
3132        AC_MSG_ERROR([cannot find libpostproc.a in ${real_ffmpeg_tree}/[libavcodec/]libpostproc/. Make sure you configured ffmpeg with --enable-postproc])
3133      fi
3134    fi
3135    dnl  Use a custom libffmpeg
3136    AC_MSG_RESULT(${real_ffmpeg_tree}/libavcodec/libavcodec.a)
3137
3138    dnl Use pkg-config to look for the ldflags in libav*-uninstalled.pc
3139    PKG_CONFIG_PATH_save="$PKG_CONFIG_PATH"
3140    PKG_CONFIG_LIBDIR_save="$PKG_CONFIG_LIBDIR"
3141    export PKG_CONFIG_PATH=""
3142    export PKG_CONFIG_LIBDIR="${real_ffmpeg_tree}"
3143    VLC_SAVE_FLAGS
3144
3145    PKG_CHECK_MODULES( [FFMPEG],[libavformat libavcodec libpostproc], [
3146         VLC_ADD_CPPFLAGS([ffmpeg stream_out_switcher], ${FFMPEG_CFLAGS})
3147         VLC_ADD_LIBS([ffmpeg stream_out_switcher], ${FFMPEG_LIBS})]
3148         AC_DEFINE(HAVE_LIBAVFORMAT_TREE, 1, [Define if you have ffmpeg's libavformat.])
3149       )
3150    AS_IF([ test -f "${real_ffmpeg_tree}/libswscale/libswscale.a"],[
3151      AC_DEFINE(HAVE_LIBSWSCALE_TREE, 1, [Define if you have ffmpeg's libswscale.])
3152      PKG_CHECK_MODULES( [SWSCALE],[libswscale], [
3153      VLC_ADD_LIBS([ffmpeg],[${SWSCALE_LIBS}])
3154      VLC_ADD_CPPFLAGS([ffmpeg stream_out_switcher],[${SWSCALE_CFLAGS}])])
3155      ])
3156    CPPFLAGS="${CPPFLAGS} ${FFMPEG_CFLAGS} ${SWSCALE_CFLAGS}"
3157    CFLAGS="${CFLAGS} ${FFMPEG_CFLAGS} ${SWSCALE_CFLAGS}"
3158    
3159    AC_CHECK_HEADERS(ffmpeg/avcodec.h libavcodec/avcodec.h)
3160    AC_CHECK_HEADERS(ffmpeg/avformat.h libavformat/avformat.h)
3161    AC_CHECK_HEADERS(ffmpeg/avutil.h libavutil/avutil.h)
3162    AC_CHECK_HEADERS([ffmpeg/swscale.h libswscale/swscale.h])
3163
3164    VLC_RESTORE_FLAGS
3165    AS_IF([test -n "${PKG_CONFIG_PATH_save}"],[
3166          export PKG_CONFIG_PATH="${PKG_CONFIG_PATH_save}"
3167    ],[
3168         unset PKG_CONFIG_PATH
3169    ])
3170    AS_IF([test -n "${PKG_CONFIG_LIBDIR_save}"],[
3171         export PKG_CONFIG_LIBDIR="${PKG_CONFIG_LIBDIR_save}"
3172    ],[
3173         unset PKG_CONFIG_LIBDIR
3174    ])
3175
3176    VLC_ADD_BUILTINS([ffmpeg])
3177    if test "${enable_sout}" != "no" -a "${enable_switcher}" = "yes" ; then
3178      VLC_ADD_BUILTINS([stream_out_switcher])
3179    fi
3180
3181
3182 else
3183
3184
3185 dnl Trying with pkg-config
3186    PKG_CHECK_MODULES(FFMPEG,[libavcodec, libavformat],
3187     [
3188      VLC_SAVE_FLAGS
3189      CPPFLAGS="${CPPFLAGS} ${FFMPEG_CFLAGS}"
3190      CFLAGS="${CFLAGS} ${FFMPEG_CFLAGS}"
3191      AC_CHECK_HEADERS(ffmpeg/avcodec.h libavcodec/avcodec.h)
3192      AC_CHECK_HEADERS(ffmpeg/avformat.h libavformat/avformat.h)
3193      AC_CHECK_HEADERS(ffmpeg/avutil.h libavutil/avutil.h)
3194      dnl newer ffmpeg have a separate libpostproc
3195      PKG_CHECK_MODULES(POSTPROC, libpostproc,[
3196        VLC_ADD_CFLAGS([ffmpeg],[${POSTPROC_CFLAGS}]) 
3197        VLC_ADD_LIBS([ffmpeg],[${POSTPROC_LIBS}]) 
3198        ],[ true ])
3199      CPPFLAGS="${CPPFLAGS} ${POSTPROC_CFLAGS}"
3200      CFLAGS="${CFLAGS} ${POSTPROC_CFLAGS}"
3201      AC_CHECK_HEADERS(postproc/postprocess.h)
3202      if test "${SYS}" = "darwin"; then
3203         VLC_ADD_BUILTINS([ffmpeg])
3204      else
3205         VLC_ADD_PLUGIN([ffmpeg])
3206      fi
3207      if test "${enable_sout}" != "no" -a "${enable_switcher}" = "yes"; then
3208         if test "${SYS}" = "darwin"; then
3209             VLC_ADD_BUILTINS([stream_out_switcher])
3210         else
3211             VLC_ADD_PLUGIN([stream_out_switcher])
3212         fi
3213      fi
3214      VLC_ADD_CFLAGS([ffmpeg stream_out_switcher],[${FFMPEG_CFLAGS}])
3215      VLC_ADD_LIBS([ffmpeg stream_out_switcher],[${FFMPEG_LIBS}])
3216
3217      dnl even newer ffmpeg has a libswscale
3218      PKG_CHECK_MODULES(SWSCALE,[libswscale],[
3219        VLC_ADD_CFLAGS([ffmpeg],[${SWSCALE_CFLAGS}])
3220        VLC_ADD_LIBS([ffmpeg],[${SWSCALE_LIBS}])
3221        AC_CHECK_LIB(swscale, sws_getContext,
3222          [AC_CHECK_HEADERS([ffmpeg/swscale.h libswscale/swscale.h])],[],[-lavutil -lm])
3223        ],[ true ])
3224      VLC_RESTORE_FLAGS
3225     ],[
3226
3227     dnl
3228     dnl last chance: at the default place
3229     dnl
3230       CPPFLAGS="${CPPFLAGS_save} ${CPPFLAGS_ffmpeg}"
3231       LDFLAGS="${LDFLAGS_save} ${LDFLAGS_ffmpeg} ${LIBS_ffmpeg}"
3232       AC_CHECK_HEADERS(ffmpeg/avcodec.h libavcodec/avcodec.h)
3233       AC_CHECK_HEADERS(ffmpeg/avformat.h libavformat/avformat.h)
3234       AC_CHECK_HEADERS(ffmpeg/avutil.h libavutil/avutil.h)
3235       AC_CHECK_HEADERS(postproc/postprocess.h)
3236
3237       AC_CHECK_LIB(avutil, av_crc_init, [
3238         VLC_ADD_LIBS([ffmpeg],[-lavutil])
3239         LDAVUTIL="-lavutil"])
3240
3241       AC_CHECK_LIB(avcodec, avcodec_init, [
3242         VLC_ADD_BUILTINS([ffmpeg])
3243         VLC_ADD_LIBS([ffmpeg],[-lavcodec])
3244         if test "${enable_sout}" != "no" -a "${enable_switcher}" = "yes"; then
3245             VLC_ADD_BUILTINS([stream_out_switcher])
3246         fi],
3247          [ AC_MSG_ERROR([Could not find ffmpeg on your system: you may get it from http://ffmpeg.sf.net/ (svn version is recommended). Alternatively you can use --disable-ffmpeg to disable the ffmpeg plugins.]) ], [$LDAVUTIL])
3248
3249       AC_CHECK_LIB(postproc, pp_postprocess, [
3250         VLC_ADD_LIBS([ffmpeg],[-lpostproc])],
3251       AC_MSG_ERROR([Could not find libpostproc inside FFmpeg. You should configure FFmpeg with --enable-gpl --enable-postproc.]),
3252         [$LDAVUTIL])
3253
3254       AC_CHECK_LIB(avformat, av_open_input_stream, [
3255         VLC_ADD_LIBS([ffmpeg],[-lavformat -lz]) ], [], [-lavcodec -lz $LDAVUTIL])
3256       LDFLAGS="${LDFLAGS_save}"
3257       CPPFLAGS="${CPPFLAGS_save}"
3258
3259       AC_CHECK_LIB(swscale, sws_getContext, [
3260         AC_CHECK_HEADERS(ffmpeg/swscale.h libswscale/swscale.h)
3261         VLC_ADD_LIBS([ffmpeg],[-lswscale]) ], [], [-lavcodec $LDAVUTIL])
3262       LDFLAGS="${LDFLAGS_save}"
3263       CPPFLAGS="${CPPFLAGS_save}"
3264     ])
3265   fi
3266 fi
3267
3268 dnl
3269 dnl  ffmpegaltivec plugin
3270 dnl
3271 AC_ARG_ENABLE(ffmpegaltivec,
3272 [  --enable-ffmpegaltivec  ffmpegaltivec codec (DO NOT USE)])
3273 if test "${enable_ffmpegaltivec}" = "yes"
3274 then
3275   if test "${with_ffmpeg_tree}" != "no" -a -n "${with_ffmpeg_tree}"; then
3276     AC_MSG_CHECKING(for libavcodecaltivec.a in ${with_ffmpeg_tree})
3277     real_ffmpeg_tree="`cd ${with_ffmpeg_tree} 2>/dev/null && pwd`"
3278     if test -z "${real_ffmpeg_tree}"; then
3279       dnl  The given directory can't be found
3280       AC_MSG_RESULT(no)
3281       AC_MSG_ERROR([cannot cd to ${with_ffmpeg_tree}])
3282     fi
3283     if ! test -f "${real_ffmpeg_tree}/libavcodec/libavcodecaltivec.a"; then
3284       dnl  The given libavcodecaltivec wasn't built
3285       AC_MSG_RESULT(no)
3286       AC_MSG_ERROR([cannot find ${real_ffmpeg_tree}/libavcodec/libavcodecaltivec.a, make sure you compiled libavcodecaltivec in ${with_ffmpeg_tree}])
3287     fi
3288     if ! fgrep -s "pp_get_context" "${real_ffmpeg_tree}/libavcodec/libavcodecaltivec.a"; then
3289       dnl  The given libavcodecaltivec wasn't built with --enable-postproc
3290       AC_MSG_RESULT(no)
3291       AC_MSG_ERROR([${real_ffmpeg_tree}/libavcodec/libavcodecaltivec.a was not compiled with postprocessing support, make sure you configured ffmpeg with --enable-postproc])
3292     fi
3293     dnl  Use a custom libffmpeg
3294     AC_MSG_RESULT(${real_ffmpeg_tree}/libavcodec/libavcodecaltivec.a)
3295     VLC_ADD_BUILTINS([ffmpegaltivec])
3296     VLC_ADD_LIBS([ffmpegaltivec],[-L${real_ffmpeg_tree}/libavcodec -lavcodecaltivec])
3297     VLC_ADD_CPPFLAGS([ffmpeg],[-DNO_ALTIVEC_IN_FFMPEG])
3298     VLC_ADD_CPPFLAGS([ffmpegaltivec],[-I${real_ffmpeg_tree}/libavcodec -I${real_ffmpeg_tree}/libavformat])
3299
3300     if test -f "${real_ffmpeg_tree}/libavformat/libavformat.a"; then
3301       AC_DEFINE(HAVE_LIBAVFORMAT_TREE, 1, [Define if you have ffmpeg's libavformat.])
3302       VLC_ADD_LIBS([ffmpegaltivec],[-L${real_ffmpeg_tree}/libavformat -lavformataltivec -lz])
3303       VLC_ADD_CPPFLAGS([ffmpegaltivec],[-I${real_ffmpeg_tree}/libavformat])
3304     fi
3305     VLC_ADD_LIBS([stream_out_switcher],[-L${real_ffmpeg_tree}/libavcodec])
3306     VLC_ADD_CPPFLAGS([stream_out_switcher],[-I${real_ffmpeg_tree}/libavcodec -I${real_ffmpeg_tree}/libavformat])
3307   fi
3308 fi
3309
3310 dnl
3311 dnl  faad decoder plugin
3312 dnl
3313 AC_ARG_ENABLE(faad,
3314 [  --enable-faad           faad codec (default disabled)])
3315 if test "${enable_faad}" = "yes"
3316 then
3317   AC_ARG_WITH(faad-tree,
3318   [    --with-faad-tree=PATH faad tree for static linking])
3319   if test -n "${with_faad_tree}"
3320   then
3321     AC_MSG_CHECKING(for libfaad.a in ${with_faad_tree})
3322     real_faad_tree="`cd ${with_faad_tree} 2>/dev/null && pwd`"
3323     if test -z "${real_faad_tree}"
3324     then
3325       dnl  The given directory can't be found
3326       AC_MSG_RESULT(no)
3327       AC_MSG_ERROR([cannot cd to ${with_faad_tree}])
3328     fi
3329     if test -f "${real_faad_tree}/libfaad/.libs/libfaad.a"
3330     then
3331       dnl  Use a custom faad
3332       AC_MSG_RESULT(${real_faad_tree}/libfaad/.libs/libfaad.a)
3333       VLC_ADD_BUILTINS([faad])
3334       VLC_ADD_LIBS([faad],[${real_faad_tree}/libfaad/.libs/libfaad.a])
3335       VLC_ADD_CPPFLAGS([faad],[-I${real_faad_tree}/include])
3336     else
3337       dnl  The given libfaad wasn't built
3338       AC_MSG_RESULT(no)
3339       AC_MSG_ERROR([cannot find ${real_faad_tree}/libfaad/.libs/libfaad.a, make sure you compiled libfaad in ${with_faad_tree}])
3340     fi
3341   else
3342     CPPFLAGS="${CPPFLAGS_save} ${CPPFLAGS_faad}"
3343     LDFLAGS="${LDFLAGS_save} ${LIBS_faad}"
3344     AC_CHECK_HEADERS(faad.h, ,
3345       [ AC_MSG_ERROR([Cannot find development headers for libfaad...]) ])
3346     AC_CHECK_LIB(faad, faacDecOpen, [
3347       VLC_ADD_PLUGIN([faad])
3348       VLC_ADD_LIBS([faad],[-lfaad]) ],
3349       AC_CHECK_LIB(faad, NeAACDecOpen, [
3350         VLC_ADD_PLUGIN([faad])
3351         VLC_ADD_LIBS([faad],[-lfaad]) ],
3352         [ AC_MSG_ERROR([Cannot find libfaad library...]) ]))
3353     LDFLAGS="${LDFLAGS_save}"
3354     CPPFLAGS="${CPPFLAGS_save}"
3355   fi
3356 fi
3357
3358 dnl
3359 dnl twolame encoder plugin
3360 dnl
3361 AC_ARG_ENABLE(twolame,
3362 [  --enable-twolame        twolame codec (default disabled)])
3363 if test "${enable_twolame}" = "yes"
3364 then
3365   AC_ARG_WITH(twolame-tree,
3366   [    --with-twolame-tree=PATH twolame tree for static linking])
3367   if test -n "${with_twolame_tree}"
3368   then
3369     AC_MSG_CHECKING(for libtwolame.a in ${with_twolame_tree})
3370     real_twolame_tree="`cd ${with_twolame_tree} 2>/dev/null && pwd`"
3371     if test -z "${real_twolame_tree}"
3372     then
3373       dnl  The given directory can't be found
3374       AC_MSG_RESULT(no)
3375       AC_MSG_ERROR([cannot cd to ${with_twolame_tree}])
3376     fi
3377     if test -f "${real_twolame_tree}/libtwolame/.libs/libtwolame.a"
3378     then
3379       dnl  Use a custom twolame
3380       AC_MSG_RESULT(${real_twolame_tree}/libtwolame/.libs/libtwolame.a)
3381       VLC_ADD_BUILTINS([twolame])
3382       VLC_ADD_LIBS([twolame],[${real_twolame_tree}/libtwolame/.libs/libtwolame.a])
3383       VLC_ADD_CPPFLAGS([twolame],[-I${real_twolame_tree}/libtwolame -DLIBTWOLAME_STATIC])
3384     else
3385       dnl  The given libtwolame wasn't built
3386       AC_MSG_RESULT(no)
3387       AC_MSG_ERROR([cannot find ${real_twolame_tree}/libtwolame/.libs/libtwolame.a, make sure you compiled libtwolame in ${with_twolame_tree}])
3388     fi
3389   else
3390     CPPFLAGS="${CPPFLAGS_save} ${CPPFLAGS_twolame} -DLIBTWOLAME_STATIC"
3391     LDFLAGS="${LDFLAGS_save} ${LIBS_twolame}"
3392     AC_CHECK_HEADERS(twolame.h, ,
3393       [ AC_MSG_ERROR([Cannot find development header for libtwolame...]) ])
3394     AC_CHECK_LIB(twolame, twolame_init, [
3395       VLC_ADD_PLUGIN([twolame])
3396       VLC_ADD_CPPFLAGS([twolame],[-DLIBTWOLAME_STATIC])
3397       VLC_ADD_LIBS([twolame],[-ltwolame]) ],
3398         [ AC_MSG_ERROR([Cannot find libtwolame library...]) ])
3399     LDFLAGS="${LDFLAGS_save}"  
3400     CPPFLAGS="${CPPFLAGS_save}"
3401   fi
3402 fi
3403
3404 dnl
3405 dnl  QuickTime plugin
3406 dnl
3407 AC_ARG_ENABLE(quicktime,
3408   [  --enable-quicktime      QuickTime module (default enabled on MacOS X)])
3409 if test "${enable_quicktime}" != "no" &&
3410   (test "${SYS}" = "darwin" || test "${enable_quicktime}" = "yes")
3411 then
3412   if test "${SYS}" = "mingw32"; then
3413     VLC_ADD_BUILTINS([quicktime])
3414   else
3415   AC_CHECK_HEADERS(QuickTime/QuickTime.h,
3416     [ VLC_ADD_BUILTINS([quicktime])
3417       VLC_ADD_LDFLAGS([quicktime],[-Wl,-framework,QuickTime,-framework,Carbon])
3418     ], [ AC_MSG_ERROR([cannot find QuickTime headers]) ])
3419   fi
3420 fi
3421
3422 dnl
3423 dnl  Real plugin
3424 dnl
3425 AC_ARG_ENABLE(real,
3426   [  --enable-real           Real audio module (default disabled)])
3427 if test "${enable_real}" = "yes"; then
3428   VLC_ADD_PLUGIN([realaudio])
3429 fi
3430
3431 dnl
3432 dnl  Real RTSP plugin
3433 dnl
3434 AC_ARG_ENABLE(realrtsp,
3435   [  --enable-realrtsp       Real RTSP module (default disabled)])
3436 if test "${enable_realrtsp}" = "yes"; then
3437   VLC_ADD_PLUGIN([access_realrtsp])
3438 fi
3439
3440 dnl
3441 dnl MP4 module
3442 dnl
3443 AC_CHECK_HEADERS(zlib.h, [
3444   VLC_ADD_LIBS([mp4 skins2 sap mkv gme],[-lz])
3445 ] )
3446
3447 AC_CHECK_HEADERS(sysfs/libsysfs.h, [
3448   VLC_ADD_LIBS([mp4 mkv],[-lsysfs])
3449 ] )
3450
3451 dnl
3452 dnl skins2 module
3453 dnl
3454 AC_ARG_ENABLE(libtar,
3455   [  --enable-libtar support for skins2 (default enabled)])
3456
3457 AS_IF([test "${enable_libtar}" != "no"],[
3458   AC_CHECK_HEADERS(libtar.h, [
3459     VLC_ADD_LIBS([skins2],[-ltar])
3460   ] )
3461 ])
3462
3463 dnl
3464 dnl A52/AC3 decoder plugin
3465 dnl
3466 AC_ARG_ENABLE(a52,
3467   [  --enable-a52            A/52 support with liba52 (default enabled)])
3468 if test "${enable_a52}" != "no"
3469 then
3470   AC_ARG_WITH(a52,
3471     [    --with-a52=PATH       a52 headers and libraries])
3472   AC_ARG_WITH(a52-tree,
3473     [    --with-a52-tree=PATH  a52dec tree for static linking ],[],[])
3474   if test "${with_a52_tree}" != "no" -a -n "${with_a52_tree}"
3475   then
3476     real_a52_tree="`cd ${with_a52_tree} 2>/dev/null && pwd`"
3477     if test -z "${real_a52_tree}"
3478     then
3479       dnl  The given directory can't be found
3480       AC_MSG_RESULT(no)
3481       AC_MSG_ERROR([${with_a52_tree} directory doesn't exist])
3482     fi
3483     dnl  Use a custom a52dec
3484     AC_MSG_CHECKING(for a52.h in ${real_a52_tree}/include)
3485     if test -f ${real_a52_tree}/include/a52.h
3486     then
3487       AC_MSG_RESULT(yes)
3488       VLC_ADD_CPPFLAGS([a52tofloat32],[-I${real_a52_tree}])
3489       VLC_ADD_LIBS([a52tofloat32],[-L${real_a52_tree}/liba52/.libs])
3490       LDFLAGS="${LDFLAGS_save} ${LIBS_a52tofloat32}"
3491       AC_CHECK_LIB(a52, a52_free, [
3492         VLC_ADD_BUILTINS([a52tofloat32])
3493         VLC_ADD_CPPFLAGS([a52tofloat32],[-DUSE_A52DEC_TREE])
3494         VLC_ADD_LIBS([a52tofloat32],[-la52])
3495         ],[
3496         if test -f ${real_a52_tree}/liba52/.libs/liba52.a
3497         then
3498           AC_MSG_ERROR([make sure you have at least a52dec-0.7.3 ($real_a52_tree)])
3499         else
3500           AC_MSG_ERROR([the specified tree hasn't been compiled])
3501         fi
3502       ])
3503       LDFLAGS="${LDFLAGS_save}"
3504     else
3505       AC_MSG_RESULT(no)
3506       AC_MSG_ERROR([the specified tree doesn't have a52.h])
3507     fi
3508   else
3509     if test -z "${with_a52}"
3510     then
3511       LDFLAGS_test=""
3512       CPPFLAGS_test=""
3513     else
3514       LDFLAGS_test="-L${with_a52}/lib"
3515       CPPFLAGS_test="-I${with_a52}/include"
3516     fi
3517     CPPFLAGS="${CPPFLAGS_save} ${CPPFLAGS_test} ${CPPFLAGS_a52tofloat32}"
3518     LDFLAGS="${LDFLAGS_save} ${LDFLAGS_test} ${LIBS_a52tofloat32}"
3519     AC_CHECK_HEADERS(a52dec/a52.h, [
3520       AC_CHECK_LIB(a52, a52_free, [
3521         VLC_ADD_PLUGIN([a52tofloat32])
3522         VLC_ADD_LIBS([a52tofloat32],[${LDFLAGS_test} -la52])
3523         VLC_ADD_CPPFLAGS([a52tofloat32],[${CPPFLAGS_test}])
3524       ],[
3525         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.])
3526         ])
3527     ],[
3528       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.])
3529     ])
3530     CPPFLAGS="${CPPFLAGS_save}"
3531     LDFLAGS="${LDFLAGS_save}"
3532   fi
3533 fi
3534
3535 AC_ARG_WITH(a52-fixed,
3536       [    --with-a52-fixed      specify if liba52 has been compiled with fixed point support],
3537       [
3538         VLC_ADD_CPPFLAGS([a52tofloat32],[-DLIBA52_FIXED]) ])
3539
3540 dnl
3541 dnl DTS Coherent Acoustics decoder plugin
3542 dnl
3543 AS_IF([test "x${enable_dts}" != "x"], [
3544   AC_MSG_ERROR([--enable-dts is obsolete. Please use libdca and --enable-dca.])
3545 ])
3546 AS_IF([test "x${with_dts_tree}" != "x"], [
3547   AC_MSG_ERROR([--with-dts-tree is obsolete. Please use libdca and --with-dca-tree.])
3548 ])
3549
3550 AC_ARG_ENABLE(dca,
3551   [  --enable-dca            DTS Coherent Acoustics support with libdca (default enabled)])
3552 AS_IF([test "${enable_dca}" != "no"], [
3553   AC_ARG_WITH(dca-tree,
3554     [    --with-dca-tree=PATH  libdca tree for static linking],,
3555     [with_dca_tree="no"])
3556   AS_IF([test "${with_dca_tree}" != "no"], [
3557     real_dca_tree="`cd ${with_dca_tree} 2>/dev/null && pwd`"
3558     AS_IF([test -z "${real_dca_tree}"], [
3559       dnl  The given directory can't be found
3560       AC_MSG_RESULT(no)
3561       AC_MSG_ERROR([${with_dca_tree} directory doesn't exist])
3562     ])
3563     dnl  Use a custom libdca
3564     AC_MSG_CHECKING(for libdca in ${real_dca_tree})
3565     AS_IF([test -f "${real_dca_tree}/libdca/.libs/libdca.a"], [
3566       AC_MSG_RESULT(yes)
3567       VLC_ADD_LIBS([dtstofloat32],[${real_dca_tree}/libdca/.libs/libdca.a])
3568       AS_IF([test -f "${real_dca_tree}/include/dca.h"], [
3569         VLC_ADD_CPPFLAGS([dtstofloat32],[-I${real_dca_tree}/include])
3570       ], [
3571         VLC_ADD_CPPFLAGS([dtstofloat32],[-I${real_dca_tree}/../include])
3572       ])
3573     ], [
3574       AC_MSG_RESULT(no)
3575       AC_MSG_ERROR([the specified tree doesn't have libdca/.libs/libdca.a])
3576     ])
3577   ], [
3578     PKG_CHECK_MODULES([DCA], [libdca >= 0.0.5], [
3579       VLC_ADD_PLUGIN([dtstofloat32])
3580       VLC_ADD_CPPFLAGS([dtstofloat32], [${DCA_CFLAGS}])
3581       VLC_ADD_LIBS([dtstofloat32], [${DCA_LIBS}])
3582     ], [
3583       AS_IF([test "x${enable_dca}" != "x"], [
3584         AC_MSG_ERROR([${DCA_PKG_ERRORS}])
3585       ])
3586     ])
3587   ])
3588 ])
3589
3590 dnl
3591 dnl  Flac plugin
3592 dnl
3593 AC_ARG_ENABLE(flac,
3594   [  --enable-flac           libflac decoder/encoder support (default disabled)])
3595 if test "${enable_flac}" = "yes"
3596 then
3597   AC_ARG_WITH(flac-tree,
3598   [    --with-flac-tree=PATH flac tree for static linking])
3599   if test -n "${with_flac_tree}"
3600   then
3601     AC_MSG_CHECKING(for libFLAC.a in ${with_flac_tree})
3602     real_flac_tree="`cd ${with_flac_tree} 2>/dev/null && pwd`"
3603     if test -z "${real_flac_tree}"
3604     then
3605       dnl  The given directory can't be found
3606       AC_MSG_RESULT(no)
3607       AC_MSG_ERROR([cannot cd to ${with_flac_tree}])
3608     fi
3609     if test -f "${real_flac_tree}/src/libFLAC/.libs/libFLAC.a"
3610     then
3611       dnl  Use a custom flac
3612       AC_MSG_RESULT(${real_flac_tree}/src/libFLAC/.libs/libFLAC.a)
3613       VLC_ADD_LIBS([flac],[${real_flac_tree}/src/libFLAC/.libs/libFLAC.a])
3614       VLC_ADD_CFLAGS([flac],[-I${real_flac_tree}/include])
3615       AC_DEFINE(HAVE_FLAC_STREAM_DECODER_H, 1, [Define if you have FLAC])
3616     else
3617       dnl  The given flac wasn't built
3618       AC_MSG_RESULT(no)
3619       AC_MSG_ERROR([cannot find ${real_flac_tree}/src/libFLAC/.libs/libFLAC.a, make sure you compiled flac in ${with_flac_tree}])
3620     fi
3621   else
3622     AC_CHECK_HEADERS(FLAC/stream_decoder.h, [
3623       VLC_ADD_LIBS([flac],[-lFLAC -logg])
3624      ],[])
3625   fi
3626 fi
3627
3628 dnl
3629 dnl  Libmpeg2 plugin
3630 dnl
3631 AC_ARG_ENABLE(libmpeg2,
3632   [  --enable-libmpeg2       libmpeg2 decoder support (default enabled)])
3633 if test "${enable_libmpeg2}" != "no"
3634 then
3635   AC_ARG_WITH(libmpeg2-tree,
3636   [    --with-libmpeg2-tree=PATH libmpeg2 tree for static linking])
3637   if test -n "${with_libmpeg2_tree}"
3638   then
3639     AC_MSG_CHECKING(for libmpeg2.a in ${with_libmpeg2_tree})
3640     real_libmpeg2_tree="`cd ${with_libmpeg2_tree} 2>/dev/null && pwd`"
3641     if test -z "${real_libmpeg2_tree}"
3642     then
3643       dnl  The given directory can't be found
3644       AC_MSG_RESULT(no)
3645       AC_MSG_ERROR([cannot cd to ${with_libmpeg2_tree}])
3646     fi
3647     if test -f "${real_libmpeg2_tree}/libmpeg2/.libs/libmpeg2.a"
3648     then
3649       dnl  Use a custom libmpeg2
3650       AC_MSG_RESULT(${real_libmpeg2_tree}/libmpeg2/.libs/libmpeg2.a)
3651       VLC_ADD_BUILTINS([libmpeg2])
3652       VLC_ADD_LIBS([libmpeg2],[-L${real_libmpeg2_tree}/libmpeg2/.libs -lmpeg2])
3653       VLC_ADD_CFLAGS([libmpeg2],[-I${real_libmpeg2_tree}/include])
3654       eval "`cd ${real_libmpeg2_tree}/include && ln -sf . mpeg2dec 2>/dev/null`"
3655     else
3656       dnl  The given libmpeg2 wasn't built
3657       AC_MSG_RESULT(no)
3658       AC_MSG_ERROR([cannot find ${real_libmpeg2_tree}/libmpeg2/.libs/libmpeg2.a, make sure you compiled libmpeg2 in ${with_libmpeg2_tree}])
3659     fi
3660   else
3661     AC_CHECK_HEADERS(mpeg2dec/mpeg2.h, [
3662       AC_MSG_CHECKING(for libmpeg2 version >= 0.3.2)
3663       AC_EGREP_CPP(yes,
3664         [#include <mpeg2dec/mpeg2.h>
3665          #ifdef MPEG2_RELEASE
3666          #if MPEG2_RELEASE >= MPEG2_VERSION(0,3,2)
3667          yes
3668          #endif
3669          #endif],
3670         [AC_MSG_RESULT([yes])
3671           VLC_ADD_PLUGIN([libmpeg2])
3672           VLC_ADD_LIBS([libmpeg2],[-lmpeg2])],
3673         [AC_MSG_RESULT([no])
3674           AC_MSG_ERROR([Your libmpeg2 is too old (you need the cvs version): you may get a more recent one from http://libmpeg2.sf.net/. Alternatively you can use --disable-libmpeg2 to disable the libmpeg2 plugin.])])],
3675
3676       [AC_MSG_ERROR([Could not find libmpeg2 on your system: you may get it from http://libmpeg2.sf.net/ (you need the cvs version). Alternatively you can use --disable-libmpeg2 to disable the libmpeg2 plugin.])]
3677     )
3678   fi
3679 fi
3680
3681 dnl
3682 dnl  Vorbis plugin
3683 dnl
3684 AC_ARG_ENABLE(vorbis,
3685   [  --enable-vorbis         Vorbis decoder support (default enabled)])
3686 if test "${enable_vorbis}" != "no"
3687 then
3688   AC_ARG_WITH(vorbis-tree,
3689   [    --with-vorbis-tree=PATH vorbis tree for static linking])
3690   if test -n "${with_vorbis_tree}"
3691   then
3692     AC_MSG_CHECKING(for libvorbis.a in ${with_vorbis_tree})
3693     real_vorbis_tree="`cd ${with_vorbis_tree} 2>/dev/null && pwd`"
3694     if test -z "${real_vorbis_tree}"
3695     then
3696       dnl  The given directory can't be found
3697       AC_MSG_RESULT(no)
3698       AC_MSG_ERROR([cannot cd to ${with_vorbis_tree}])
3699     fi
3700     if test -f "${real_vorbis_tree}/lib/.libs/libvorbis.a"
3701     then
3702       dnl  Use a custom vorbis 
3703       AC_MSG_RESULT(${real_vorbis_tree}/lib/.libs/libvorbis.a)
3704       VLC_ADD_PLUGIN([vorbis])
3705       VLC_ADD_LIBS([vorbis],[${real_vorbis_tree}/lib/.libs/libvorbis.a ${real_vorbis_tree}/lib/.libs/libvorbisenc.a])
3706       VLC_ADD_CFLAGS([vorbis],[-I${real_vorbis_tree}/include])
3707     else
3708       dnl  The given vorbis wasn't built
3709       AC_MSG_RESULT(no)
3710       AC_MSG_ERROR([cannot find ${real_vorbis_tree}/lib/.libs/libvorbis.a, make sure you compiled vorbis in ${with_vorbis_tree}])
3711     fi
3712   else
3713     AC_CHECK_HEADERS(vorbis/codec.h, [
3714       VLC_ADD_PLUGIN([vorbis])
3715       VLC_ADD_LIBS([vorbis],[-lvorbis -logg -lm]) ],[])
3716
3717     AC_CHECK_HEADERS(vorbis/vorbisenc.h, [
3718       VLC_ADD_LIBS([vorbis],[-lvorbisenc -lm]) ],[])
3719   fi
3720 fi
3721
3722 dnl
3723 dnl  Tremor plugin
3724 dnl
3725 AC_ARG_ENABLE(tremor,
3726   [  --enable-tremor         Tremor decoder support (default disabled)])
3727 if test "${enable_tremor}" = "yes"
3728 then
3729   AC_CHECK_HEADERS(tremor/ivorbiscodec.h, [
3730     VLC_ADD_PLUGIN([tremor])
3731     VLC_ADD_LIBS([tremor],[-lvorbisidec -logg])
3732    ],[])
3733 fi
3734
3735 dnl
3736 dnl  Speex plugin
3737 dnl
3738 AC_ARG_ENABLE(speex,
3739   [  --enable-speex          Speex decoder support (default enabled)])
3740 if test "${enable_speex}" != "no"
3741 then
3742   AC_ARG_WITH(speex-tree,
3743   [    --with-speex-tree=PATH speex tree for static linking])
3744   if test -n "${with_speex_tree}"
3745   then
3746     AC_MSG_CHECKING(for libspeex.a in ${with_speex_tree})
3747     real_speex_tree="`cd ${with_speex_tree} 2>/dev/null && pwd`"
3748     if test -z "${real_speex_tree}"
3749     then
3750       dnl  The given directory can't be found
3751       AC_MSG_RESULT(no)
3752       AC_MSG_ERROR([cannot cd to ${with_speex_tree}])
3753     fi
3754     if test -f "${real_speex_tree}/libspeex/.libs/libspeex.a"
3755     then
3756       dnl  Use a custom speex
3757       AC_MSG_RESULT(${real_speex_tree}/libspeex/.libs/libspeex.a)
3758       VLC_ADD_PLUGIN([speex])
3759       VLC_ADD_LIBS([speex],[${real_speex_tree}/libspeex/.libs/libspeex.a])
3760       VLC_ADD_CFLAGS([speex],[-I${real_speex_tree}/include])
3761     else
3762       dnl  The given speex wasn't built
3763       AC_MSG_RESULT(no)
3764       AC_MSG_ERROR([cannot find ${real_speex_tree}/libspeex/.libs/libspeex.a, make sure you compiled speex in ${with_speex_tree}])
3765     fi
3766   else
3767     AC_CHECK_HEADERS(speex/speex.h, [
3768       LDFLAGS="${LDFLAGS_save} ${LIBS_speex}"
3769       AC_CHECK_LIB(speex, speex_decode_int, [
3770         VLC_ADD_PLUGIN([speex])
3771         VLC_ADD_LIBS([speex],[-lspeex]) ],
3772         [ AC_MSG_RESULT([no])
3773           AC_MSG_WARN([Your libspeex is too old, please get the development
3774                        version.]) ],[])
3775       LDFLAGS="${LDFLAGS_save}"
3776       ],[])
3777   fi
3778 fi
3779
3780 dnl
3781 dnl  tarkin decoder plugin
3782 dnl
3783 AC_ARG_ENABLE(tarkin,
3784 [  --enable-tarkin         experimental tarkin codec (default disabled)])
3785 if test "${enable_tarkin}" = "yes"
3786 then
3787   AC_ARG_WITH(tarkin-tree,
3788   [    --with-tarkin-tree=PATH tarkin tree for static linking])
3789   if test -n "${with_tarkin_tree}"
3790   then
3791     AC_MSG_CHECKING(for tarkin.o in ${with_tarkin_tree})
3792     real_tarkin_tree="`cd ${with_tarkin_tree} 2>/dev/null && pwd`"
3793     if test -f "${real_tarkin_tree}/tarkin.o"
3794     then
3795       VLC_ADD_BUILTINS([tarkin])
3796       VLC_ADD_CPPFLAGS([tarkin],[-I${real_tarkin_tree}])
3797       VLC_ADD_LIBS([tarkin],[${real_tarkin_tree}/mem.o ${real_tarkin_tree}/pnm.o ${real_tarkin_tree}/wavelet.o ${real_tarkin_tree}/wavelet_xform.o ${real_tarkin_tree}/wavelet_coeff.o ${real_tarkin_tree}/yuv.o ${real_tarkin_tree}/tarkin.o ${real_tarkin_tree}/info.o -logg])
3798       AC_MSG_RESULT(yes)
3799     else
3800       dnl  The given tarkin tree wasn't built
3801       AC_MSG_RESULT(no)
3802       AC_MSG_ERROR([cannot find ${real_tarkin_tree}/tarkin.o,
3803                     make sure you compiled tarkin in ${with_tarkin_tree}])
3804     fi
3805   fi
3806 fi
3807
3808 dnl
3809 dnl  theora decoder plugin
3810 dnl
3811 AC_ARG_ENABLE(theora,
3812 [  --enable-theora         experimental theora codec (default disabled)])
3813 if test "${enable_theora}" = "yes"
3814 then
3815   AC_CHECK_HEADERS(theora/theora.h, [
3816     AC_CHECK_LIB(theora, theora_granule_time, [
3817       VLC_ADD_PLUGIN([theora])
3818       theora_libs="-ltheora -logg"
3819       VLC_ADD_LIBS([theora],[${theora_libs}]) ],[
3820       AC_MSG_ERROR([libtheora doesn't appear to be installed on your system.
3821 You also need to check that you have a libogg posterior to the 1.0 release.])],
3822       [-logg])
3823   ])
3824 fi
3825
3826 dnl
3827 dnl  dirac decoder plugin
3828 dnl
3829 AC_ARG_ENABLE(dirac,
3830 [  --enable-dirac          experimental dirac codec (default disabled)])
3831 if test "${enable_dirac}" = "yes"; then
3832   PKG_CHECK_MODULES(DIRAC,[dirac >= 0.9.0], [
3833       VLC_ADD_PLUGIN([dirac])
3834       VLC_ADD_CFLAGS([dirac],[$DIRAC_CFLAGS])
3835       VLC_ADD_LIBS([dirac],[$DIRAC_LIBS -lstdc++]) ],[
3836       AC_MSG_ERROR([libdirac doesn't appear to be installed on you system.])
3837   ])
3838 fi
3839
3840 dnl
3841 dnl  PNG decoder module
3842 dnl
3843 AC_ARG_ENABLE(png,
3844   [  --enable-png            PNG support (default enabled)])
3845 if test "${enable_png}" != "no"; then
3846 AC_CHECK_HEADERS(png.h, [
3847   LDFLAGS="${LDFLAGS_save} -lz"
3848   AC_CHECK_LIB(png, png_set_rows, [
3849     VLC_ADD_LIBS([png],[-lpng -lz])
3850     VLC_ADD_PLUGIN([png])
3851     VLC_ADD_PLUGIN([osdmenu])
3852     VLC_ADD_PLUGIN([osd_parser])
3853     AC_DEFINE(HAVE_LIBPNG, 1, [Define if you have the PNG library: libpng])],
3854     [],[-lz])
3855     LDFLAGS="${LDFLAGS_save}"
3856   ])
3857 fi
3858 AM_CONDITIONAL(BUILD_OSDMENU, [test "${enable_png}" != "no"])
3859
3860 dnl
3861 dnl H264 encoder plugin (using libx264)
3862 dnl
3863 AC_ARG_ENABLE(x264,
3864   [  --enable-x264           H264 encoding support with libx264 (default enabled)])
3865 if test "${enable_x264}" != "no"; then
3866   AC_ARG_WITH(x264-tree,
3867     [    --with-x264-tree=PATH x264 tree for static linking ],[],[])
3868   if test "${with_x264_tree}" != "no" -a -n "${with_x264_tree}"
3869   then
3870     real_x264_tree="`cd ${with_x264_tree} 2>/dev/null && pwd`"
3871     if test -z "${real_x264_tree}"
3872     then
3873       dnl  The given directory can't be found
3874       AC_MSG_RESULT(no)
3875       AC_MSG_ERROR([${with_x264_tree} directory doesn't exist])
3876     fi
3877     dnl  Use a custom libx264
3878     AC_MSG_CHECKING(for x264.h in ${real_x264_tree})
3879     if test -f ${real_x264_tree}/x264.h
3880     then
3881       AC_MSG_RESULT(yes)
3882       VLC_ADD_CPPFLAGS([x264],[-I${real_x264_tree}])
3883       VLC_ADD_LIBS([x264],[-L${real_x264_tree}])
3884       PKG_CHECK_MODULES(X264,x264, [
3885         VLC_ADD_PLUGIN([x264])
3886         VLC_ADD_LDFLAGS([x264],[${X264_LIBS}])
3887         VLC_ADD_CFLAGS([x264],[${X264_CFLAGS}])
3888       ],[
3889         AC_MSG_ERROR([the specified tree hasn't been compiled])
3890       ])
3891       LDFLAGS="${LDFLAGS_save}"
3892     else
3893       AC_MSG_RESULT(no)
3894       AC_MSG_ERROR([the specified tree doesn't have x264.h])
3895     fi
3896   else
3897       PKG_CHECK_MODULES(X264,x264, [
3898         VLC_ADD_PLUGIN([x264])
3899         VLC_ADD_LDFLAGS([x264],[${X264_LIBS}])
3900         VLC_ADD_CFLAGS([x264],[${X264_CFLAGS}])
3901       ],[
3902         if test "${enable_x264}" = "yes"; then
3903             AC_MSG_ERROR([Could not find libx264 on your system: you may get it from http://www.videolan.org/x264.html])
3904           fi
3905       ])
3906     LDFLAGS="${LDFLAGS_save}"
3907   fi
3908 fi
3909
3910 dnl
3911 dnl libfluidsynth (MIDI synthetizer) plugin
3912 dnl
3913 AC_ARG_ENABLE(fluidsynth,
3914   [  --enable-fluidsynth     MIDI synthesisr with libfluidsynth (default enabled)])
3915 AS_IF([test "x${enable_fluidsynth}" != "xno"], [
3916   PKG_CHECK_MODULES(FLUIDSYNTH, fluidsynth, [
3917     VLC_ADD_PLUGIN(fluidsynth)
3918     VLC_ADD_CFLAGS(fluidsynth, [${FLUIDSYNTH_CFLAGS}])
3919     VLC_ADD_LIBS(fluidsynth, [${FLUIDSYNTH_LIBS}])
3920   ], [
3921     AS_IF([test "x${enable_fluidsynth}" != "x"], [
3922       AC_MSG_ERROR([${FLUIDSYNTH_PKG_ERRORS}])
3923     ])
3924   ])
3925 ])
3926
3927 dnl
3928 dnl Teletext Modules
3929 dnl vbi decoder plugin (using libzbvi)
3930 dnl telx module
3931 dnl uncompatible
3932 dnl
3933 AC_ARG_ENABLE(zvbi,
3934   [  --enable-zvbi           VBI (inc. Teletext) decoding support with libzvbi (default enabled)])
3935 AC_ARG_ENABLE(telx,
3936   [  --enable-telx           Teletext decoding module (conflicting with zvbi) (default disabled)])
3937
3938 AS_IF( [test "${enable_zvbi}" != "no"],[
3939   AS_IF( [test "${enable_telx}" = "yes"],[
3940     AC_MSG_ERROR([The zvbi and telx modules are uncompatibles. Disable the other if you enable one.])
3941   ],[
3942     PKG_CHECK_MODULES(ZVBI,
3943         zvbi-0.2 >= 0.2.25,
3944         [
3945           VLC_ADD_LIBS([zvbi],[$ZVBI_LIBS])
3946           VLC_ADD_CFLAGS([zvbi],[$ZVBI_CFLAGS])
3947           VLC_ADD_PLUGIN([zvbi])
3948           AC_DEFINE(ZVBI_COMPILED, 1, [Define if the zvbi module is built]) 
3949         ],[
3950           AC_MSG_WARN(ZVBI library not found. Enabling the telx module instead)
3951           enable_telx="yes"
3952         ])
3953     ])  
3954   ])
3955 AS_IF( [test "${enable_telx}" = "yes"],[
3956   VLC_ADD_PLUGIN([telx])
3957   ])
3958
3959 dnl
3960 dnl asa/csri subtitle rendering module
3961 dnl
3962 AC_ARG_ENABLE(csri,
3963   [  --enable-csri          Subtitle support using CSRI / asa (default disabled)])
3964 AS_IF( [test "${enable_csri}" = "yes"], [
3965   PKG_CHECK_MODULES(CSRI,
3966       csri >= 0.1.0,
3967       [
3968         VLC_ADD_LDFLAGS([csri],[$CSRI_LIBS])
3969         VLC_ADD_CFLAGS([csri],[$CSRI_CFLAGS])
3970         VLC_ADD_PLUGIN([csri])
3971       ],[
3972         AC_MSG_WARN([CSRI helper library not found])
3973       ])
3974   ])
3975
3976 dnl
3977 dnl asa demuxer
3978 dnl
3979 AC_ARG_ENABLE(asademux,
3980   [  --enable-asademux      asa subtitle demuxing (default disabled)])
3981 AS_IF( [test "${enable_asademux}" = "yes"], [
3982   PKG_CHECK_MODULES(PCRE,
3983       libpcre >= 6.5,
3984       [
3985         VLC_ADD_LDFLAGS([asademux],[$PCRE_LIBS])
3986         VLC_ADD_CFLAGS([asademux],[$PCRE_CFLAGS])
3987         VLC_ADD_PLUGIN([asademux])
3988       ],[
3989         AC_MSG_WARN([PCRE library not found (required for asademux)])
3990       ])
3991   ])
3992
3993 dnl
3994 dnl  CMML plugin
3995 dnl
3996 AC_ARG_ENABLE(cmml,
3997   [  --enable-cmml           CMML support (default enabled)])
3998 if test "${enable_cmml}" != "no"
3999 then
4000   VLC_ADD_PLUGIN([cmml])
4001 fi
4002
4003 dnl
4004 dnl  kate decoder plugin
4005 dnl
4006 AC_ARG_ENABLE(kate,
4007 [  --enable-kate           kate codec (default enabled)])
4008 AS_IF([test "${enable_kate}" != "no"], [
4009   PKG_CHECK_MODULES(KATE,[kate >= 0.1.1], [
4010       VLC_ADD_PLUGIN([kate])
4011       VLC_ADD_CFLAGS([kate],[$KATE_CFLAGS])
4012       VLC_ADD_LIBS([kate],[$KATE_LIBS]) ],[
4013         AC_CHECK_HEADERS(kate/kate.h, [
4014           AC_CHECK_LIB(kate, kate_decode_init, [
4015             VLC_ADD_PLUGIN([kate])
4016             kate_libs="-lkate -logg"
4017             VLC_ADD_LDFLAGS([kate],[${kate_libs}]) ],[
4018             AS_IF([test "x${enable_kate}" != "x"], [
4019               AC_MSG_ERROR([libkate doesn't appear to be installed on your system.
4020               You also need to check that you have a libogg posterior to the 1.0 release.])
4021             ])
4022           ], [-lkate -logg])
4023         ],[
4024           AS_IF([test "x${enable_kate}" != "x"], [
4025             AC_MSG_ERROR([libkate headers do not appear to be installed on your system.
4026             You also need to check that you have a libogg posterior to the 1.0 release.])
4027           ])
4028         ])
4029   ])
4030 ])
4031
4032
4033 dnl
4034 dnl  Video plugins
4035 dnl
4036
4037 AC_ARG_WITH(,[Video plugins:])
4038
4039 dnl Check for DPMS
4040 if test "${SYS}" != "mingw32" -a "${SYS}" != "mingwce"; then
4041   CPPFLAGS="${CPPFLAGS_save} ${X_CFLAGS}"
4042   AC_CHECK_HEADERS(X11/extensions/dpms.h, [
4043     AC_MSG_CHECKING(for DPMSInfo in X11/extensions/dpms.h)
4044     AC_EGREP_HEADER(DPMSInfo,X11/extensions/dpms.h,[
4045       AC_MSG_RESULT(yes)
4046       AC_DEFINE(DPMSINFO_IN_DPMS_H, 1,
4047                 Define if <X11/extensions/dpms.h> defines DPMSInfo.)
4048     ],[
4049       AC_MSG_RESULT(no)
4050     ])
4051   ],,[
4052     #include <X11/Xlib.h>
4053   ])
4054   CPPFLAGS="${CPPFLAGS_save}"
4055 fi
4056
4057 dnl
4058 dnl  X11 module
4059 dnl  (enabled by default except on win32)
4060 dnl
4061 AC_ARG_ENABLE(x11,
4062   [  --enable-x11            X11 support (default enabled)])
4063 if test "${enable_x11}" != "no" &&
4064   (test "${SYS}" != "mingw32" -a "${SYS}" != "mingwce" ||
4065    test "${enable_x11}" = "yes"); then
4066   CPPFLAGS="${CPPFLAGS_save} ${X_FLAGS}"
4067   AC_CHECK_HEADERS(X11/Xlib.h, [
4068     VLC_ADD_PLUGIN([panoramix])
4069     VLC_ADD_LIBS([panoramix],[${X_LIBS} ${X_PRE_LIBS} -lX11])
4070     VLC_ADD_CPPFLAGS([panoramix],[${X_CFLAGS}])
4071     AC_CHECK_LIB(Xext, XShmAttach, [
4072       VLC_ADD_PLUGIN([x11])
4073       VLC_ADD_LIBS([x11],[${X_LIBS} ${X_PRE_LIBS} -lX11 -lXext])
4074       VLC_ADD_CPPFLAGS([x11],[${X_CFLAGS}])
4075     ])
4076   ])
4077   CPPFLAGS="${CPPFLAGS_save}"
4078 fi
4079
4080 dnl
4081 dnl  XVideo module
4082 dnl  (enabled by default except on win32)
4083 dnl
4084 AC_ARG_ENABLE(xvideo,
4085   [  --enable-xvideo         XVideo support (default enabled)])
4086 if test "${enable_xvideo}" != "no" &&
4087   (test "${SYS}" != "mingw32" -a "${SYS}" != "mingwce" ||
4088    test "${enable_xvideo}" = "yes"); then
4089   CPPFLAGS="${CPPFLAGS_save} ${X_CFLAGS}"
4090   AC_CHECK_HEADERS(X11/extensions/Xv.h, [
4091     CFLAGS="${CFLAGS_save} ${X_LIBS} ${X_PRE_LIBS} -lX11 -lXext"
4092     AC_CHECK_LIB(Xv,XvPutImage,[
4093       # If libXv.so is available, xvideo can be a plugin. Otherwise, we
4094       # test for libXv_pic.
4095       if test -f /usr/X11R6/lib/libXv.so -o -f /usr/lib/libXv.so -o -f "${x_libraries}"/libXv.so; then
4096         VLC_ADD_PLUGIN([xvideo])
4097         VLC_ADD_CPPFLAGS([xvideo],[${X_CFLAGS}])
4098         VLC_ADD_LIBS([xvideo],[${X_LIBS} ${X_PRE_LIBS} -lX11 -lXext -lXv])
4099       else
4100         AC_CHECK_LIB(Xv_pic,XvPutImage,[
4101           VLC_ADD_PLUGIN([xvideo])
4102           VLC_ADD_CPPFLAGS([xvideo],[${X_CFLAGS}])
4103           VLC_ADD_LIBS([xvideo],[${X_LIBS} ${X_PRE_LIBS} -lX11 -lXext -lXv_pic])
4104         ],[
4105           VLC_ADD_BUILTINS([xvideo])
4106           VLC_ADD_LIBS([xvideo],[${X_LIBS} ${X_PRE_LIBS} -lX11 -lXext -lXv])
4107           VLC_ADD_CPPFLAGS([xvideo],[${X_CFLAGS}])
4108         ])
4109       fi
4110     ])
4111     CFLAGS="${CFLAGS_save}"
4112   ]
4113   CPPFLAGS="${CPPFLAGS_save}")
4114 fi
4115
4116 dnl
4117 dnl  GLX module
4118 dnl  (enabled by default except on win32)
4119 dnl
4120 AC_ARG_ENABLE(glx,
4121   [  --enable-glx            X11 OpenGL (GLX) support (default enabled)])
4122 if test "${enable_glx}" != "no" &&
4123   (test "${SYS}" != "mingw32" -a "${SYS}" != "mingwce" ||
4124    test "${enable_glx}" = "yes"); then
4125   CPPFLAGS="${CPPFLAGS_save} ${X_CFLAGS}"
4126   AC_CHECK_HEADERS(X11/Xlib.h GL/glu.h GL/glx.h)
4127   AC_COMPILE_IFELSE(AC_LANG_PROGRAM(
4128     [[#if !defined(HAVE_X11_XLIB_H) || !defined(HAVE_GL_GLU_H) || !defined(HAVE_GL_GLX_H)
4129     choke me
4130     #endif]]),
4131     [
4132       VLC_ADD_PLUGIN([glx])
4133       VLC_ADD_LIBS([glx],[${X_LIBS} ${X_PRE_LIBS} -lX11 -lXext -lGL -lGLU])
4134       VLC_ADD_CPPFLAGS([glx],[${X_CFLAGS}])
4135     ],[AC_MSG_ERROR([Please install GL development package. Alternatively you can also configure with --disable-glx.])])
4136   CPPFLAGS="${CPPFLAGS_save}"
4137 fi
4138
4139 dnl
4140 dnl  XVMC module
4141 dnl  (disabled by default except on win32)
4142 dnl
4143 AC_ARG_ENABLE(xvmc,
4144   [  --enable-xvmc           XVMC support (default disabled)])
4145 if test "${enable_xvmc}" = "yes" &&
4146   (test "${SYS}" != "mingw32" -a "${SYS}" != "mingwce" ||
4147    test "${enable_xvmc}" = "yes"); then
4148   CPPFLAGS="${CPPFLAGS_save} ${X_FLAGS}"
4149   AC_CHECK_HEADERS(X11/extensions/vldXvMC.h, [
4150     VLC_ADD_PLUGIN([xvmc])
4151     VLC_ADD_LIBS([xvmc],[${X_LIBS} ${X_PRE_LIBS} -lX11 -lXext -lXvMCW -lXv -lXinerama])
4152     VLC_ADD_CPPFLAGS([xvmc],[${X_CFLAGS}])
4153   ])
4154   CPPFLAGS="${CPPFLAGS_save}"
4155 fi
4156
4157 dnl
4158 dnl  Check for the Xinerama extension
4159 dnl
4160 AC_ARG_ENABLE(xinerama,
4161   [  --enable-xinerama       Xinerama support (default enabled)])
4162 if test "${enable_xvideo}" != "no" && test "${enable_xinerama}" != "no" &&
4163   (test "${SYS}" != "mingw32" -a "${SYS}" != "mingwce" ||
4164    test "${enable_xvideo}" = "yes"); then
4165   ac_cv_have_xinerama="no"
4166   CPPFLAGS="${CPPFLAGS_save} ${X_CFLAGS}"
4167   CFLAGS="${CFLAGS_save} ${X_LIBS} ${X_PRE_LIBS} -lX11 -lXext"
4168   AC_CHECK_HEADERS(X11/extensions/Xinerama.h,[
4169     AC_CHECK_LIB(Xinerama_pic, XineramaQueryExtension,[
4170       VLC_ADD_LIBS([xvideo],[-lXinerama_pic])
4171       VLC_ADD_LIBS([x11],[-lXinerama_pic])
4172       VLC_ADD_LIBS([glx],[-lXinerama_pic])
4173       ac_cv_have_xinerama="yes"
4174     ],[
4175       AC_CHECK_LIB(Xinerama, XineramaQueryExtension,[
4176         VLC_ADD_LIBS([xvideo],[-lXinerama])
4177         VLC_ADD_LIBS([x11],[-lXinerama])
4178         VLC_ADD_LIBS([glx],[-lXinerama])
4179         ac_cv_have_xinerama="yes"
4180       ])
4181     ])
4182   ])
4183   if test "${ac_cv_have_xinerama}" = "yes"; then
4184     AC_DEFINE(HAVE_XINERAMA, 1, [Define this if you have libXinerama installed])
4185   fi
4186   CFLAGS="${CFLAGS_save}"
4187   CPPFLAGS="${CPPFLAGS_save}"
4188
4189 dnl
4190 dnl  Check for XF86VidMode extension
4191 dnl
4192   ac_cv_have_xf86vidmode="no"
4193   CPPFLAGS="${CPPFLAGS_save} ${X_CFLAGS}"
4194   CFLAGS="${CFLAGS_save} ${X_LIBS} ${X_PRE_LIBS} -lX11 -lXext"
4195   AC_CHECK_HEADERS(X11/extensions/xf86vmode.h,[
4196     AC_CHECK_LIB(Xxf86vm_pic, XF86VidModeGetViewPort,[
4197       VLC_ADD_LIBS([xvideo],[-lXxf86vm_pic])
4198       VLC_ADD_LIBS([x11],[-lXxf86vm_pic])
4199       VLC_ADD_LIBS([glx],[-lXxf86vm_pic])
4200       VLC_ADD_LIBS([xvmc],[-lXxf86vm_pic])
4201       ac_cv_have_xf86vidmode="yes"
4202     ],[
4203       AC_CHECK_LIB(Xxf86vm, XF86VidModeGetViewPort,[
4204         VLC_ADD_LIBS([xvideo],[-lXxf86vm])
4205         VLC_ADD_LIBS([x11],[-lXxf86vm])
4206         VLC_ADD_LIBS([glx],[-lXxf86vm])
4207         VLC_ADD_LIBS([xvmc],[-lXxf86vm])
4208         ac_cv_have_xf86vidmode="yes"
4209       ])
4210     ])
4211   ],[true],
4212 [#ifdef HAVE_X11_XLIB_H
4213 # include <X11/Xlib.h>
4214 #endif]
4215    )
4216   AS_IF([test "${ac_cv_have_xf86vidmode}" = "yes"],
4217     [AC_DEFINE(HAVE_XF86VIDMODE, 1, [Define this if you have libXxf86vm installed])
4218   ])
4219   CFLAGS="${CFLAGS_save}"
4220   CPPFLAGS="${CPPFLAGS_save}"
4221
4222 fi
4223
4224 dnl
4225 dnl  OpenGL module
4226 dnl  (enabled by default except on beos)
4227 dnl
4228 AC_ARG_ENABLE(opengl,
4229   [  --enable-opengl         OpenGL support (default enabled)])
4230 if test "${enable_opengl}" != "no" &&
4231    test "${SYS}" != "beos" -a "${SYS}" != "mingwce"; then
4232   if test "${SYS}" != "darwin"; then
4233     AC_CHECK_HEADERS(GL/gl.h GL/glu.h, [
4234       VLC_ADD_PLUGIN([opengl])
4235       if test "${SYS}" != "mingw32"; then
4236         VLC_ADD_LIBS([opengl],[${X_LIBS} -lGL -lGLU])
4237       else
4238         VLC_ADD_LIBS([opengl],[-lopengl32 -lglu32])
4239       fi
4240     ])
4241   else
4242     dnl OS X special case (no GL/gl.h but OpenGL/gl.h)
4243     VLC_ADD_PLUGIN([opengl])
4244     VLC_ADD_LIBS([opengl],[-Wl,-framework,OpenGL])
4245   fi
4246 fi
4247
4248 dnl
4249 dnl  SDL module
4250 dnl
4251 AC_ARG_ENABLE(sdl,
4252   [  --enable-sdl            SDL support (default enabled)])
4253 AC_ARG_ENABLE(sdl-image,
4254   [  --enable-sdl-image      SDL image support (default enabled)])
4255 if test "${enable_sdl}" != "no"
4256 then
4257   SDL_PATH="${PATH}"
4258   AC_ARG_WITH(sdl-config-path,
4259     [    --with-sdl-config-path=PATH sdl-config path (default search in \$PATH)],
4260     [ if test "${with_sdl_config_path}" != "no"
4261       then
4262         SDL_PATH="${with_sdl_config_path}:${PATH}"
4263       fi ])
4264   AC_PATH_PROG(SDL12_CONFIG, sdl12-config, no, ${SDL_PATH})
4265   SDL_CONFIG="${SDL12_CONFIG}"
4266   SDL_HEADER="SDL12/SDL.h"
4267   SDL_IMAGE="SDL12/SDL_image.h"
4268   if test "${SDL_CONFIG}" = "no"
4269   then
4270     AC_PATH_PROG(SDL11_CONFIG, sdl11-config, no, ${SDL_PATH})
4271     SDL_CONFIG=${SDL11_CONFIG}
4272     SDL_HEADER="SDL11/SDL.h"
4273     SDL_IMAGE="SDL11/SDL_image.h"
4274   fi
4275   if test "${SDL_CONFIG}" = "no"
4276   then
4277     AC_PATH_PROG(SDL_CONFIG, sdl-config, no, ${SDL_PATH})
4278     SDL_HEADER="SDL/SDL.h"
4279     SDL_IMAGE="SDL/SDL_image.h"
4280   fi
4281   # check for cross-compiling
4282   SDL_PREFIX=
4283   AC_ARG_WITH(sdl-prefix,
4284     [    --with-sdl-prefix=PATH path to libsdl (needed for cross-compiling),
4285                                e.g use as:
4286                                --with-sdl-prefix=/usr/local/arm/2.95.3/arm-linux/usr)],[],[])
4287   if test "${with_sdl_prefix}" != "no" -a -n "${with_sdl_prefix}"
4288   then
4289     SDL_PREFIX="--prefix=${with_sdl_prefix}"
4290   fi
4291   if test "${SDL_CONFIG}" != "no"
4292   then
4293     # SDL on Darwin is heavily patched and can only run SDL_image
4294     if test "${SYS}" != "darwin" -a "${SYS}" != "mingw32"; then
4295       VLC_ADD_PLUGIN([vout_sdl])
4296       VLC_ADD_PLUGIN([aout_sdl])
4297     fi
4298     VLC_ADD_CFLAGS([vout_sdl aout_sdl sdl_image],[`${SDL_CONFIG} ${SDL_PREFIX} --cflags | sed 's,SDL,,'`])
4299     VLC_ADD_LIBS([vout_sdl aout_sdl sdl_image],[`${SDL_CONFIG} ${SDL_PREFIX} --libs | sed 's,-rdynamic,,'`])
4300     CPPFLAGS="${CPPFLAGS_save} ${CFLAGS_vout_sdl}"
4301     AC_CHECK_HEADERS(${SDL_HEADER}, AC_DEFINE_UNQUOTED(SDL_INCLUDE_FILE,
4302       <${SDL_HEADER}>, Indicate whether we should use SDL/SDL.h or SDL11/SDL.h),
4303       [ AC_CHECK_HEADERS(SDL.h, AC_DEFINE(SDL_INCLUDE_FILE, <SDL.h>,
4304           As a last resort we also test for SDL.h presence),
4305       [ AC_MSG_ERROR([The development package for SDL is not installed.
4306 Please install it and try again. Alternatively you can also configure with
4307 --disable-sdl.])
4308       ])])
4309     AS_IF([ test "${enable_sdl_image}" != "no"],[
4310       AC_CHECK_HEADERS(${SDL_IMAGE}, [AC_DEFINE_UNQUOTED(SDL_IMAGE_INCLUDE_FILE,
4311         <${SDL_IMAGE}>, Indicate the path of SDL_image.h)
4312         VLC_ADD_PLUGIN([sdl_image])
4313         AC_CHECK_LIB(png, png_set_rows,
4314           [VLC_ADD_LIBS([sdl_image],[-lpng -lz])],[],[-lz])
4315         AC_CHECK_LIB(jpeg, jpeg_start_decompress,
4316           [VLC_ADD_LIBS([sdl_image],[-ljpeg])])
4317         AC_CHECK_LIB(tiff, TIFFClientOpen,
4318           [VLC_ADD_LIBS([sdl_image],[-ltiff])])
4319         VLC_ADD_LIBS([sdl_image], [-lSDL_image])],
4320         [ AC_CHECK_HEADERS(SDL_image.h, AC_DEFINE(SDL_IMAGE_INCLUDE_FILE, <SDL_image.h>,
4321             As a last resort we also test for SDL_image.h presence),
4322         [ AC_MSG_WARN([The development package for SDL_image is not installed.
4323   You should install it alongside your SDL package.])
4324         ])])
4325     ])
4326     CPPFLAGS="${CPPFLAGS_save}"
4327     if expr 1.1.5 \> `${SDL_CONFIG} --version` >/dev/null
4328     then
4329       AC_MSG_ERROR([The development package for SDL is not installed.
4330 Please install it and try again. Alternatively you can also configure with
4331 --disable-sdl.])
4332     fi
4333
4334   elif test "${enable_sdl}" =  "yes"
4335   then
4336     AC_MSG_ERROR([I couldn't find the SDL package. You can download libSDL
4337 from http://www.libsdl.org/, or configure with --disable-sdl. Have a nice day.
4338     ])
4339   fi
4340 fi
4341
4342 dnl
4343 dnl  freetype module
4344 dnl
4345 AC_ARG_ENABLE(freetype,
4346   [  --enable-freetype       freetype support (default enabled)])
4347 AC_ARG_ENABLE(fribidi,
4348   [  --enable-fribidi        fribidi support (default enabled)])
4349 if test "${enable_freetype}" != "no"
4350 then
4351    PKG_CHECK_MODULES(FREETYPE, freetype2,[
4352       VLC_ADD_PLUGIN([freetype])
4353       have_freetype=yes
4354       VLC_ADD_CPPFLAGS([freetype skins2],[${FREETYPE_CFLAGS}])
4355       VLC_ADD_LIBS([freetype skins2],[${FREETYPE_LIBS}])
4356       if test "${SYS}" = "mingw32"; then
4357         VLC_ADD_LIBS([freetype skins2],[-lxml2])
4358      fi
4359     AC_CHECK_HEADERS(fontconfig/fontconfig.h,
4360       [VLC_ADD_CPPFLAGS([freetype],[-DHAVE_FONTCONFIG])
4361        VLC_ADD_LIBS([freetype],[-lfontconfig])])
4362     AC_CHECK_HEADERS(Carbon/Carbon.h,
4363       [VLC_ADD_LDFLAGS([freetype],[-Wl,-framework,Carbon])])
4364   ],[
4365   have_freetype=no
4366   AS_IF([ test "${enable_freetype}" =  "yes"],[
4367     AC_MSG_ERROR([I couldn't find the freetype package. You can download libfreetype2
4368 from http://www.freetype.org/, or configure with --disable-freetype. Have a nice day.
4369       ])
4370     ])
4371   ])
4372
4373   dnl fribidi support
4374   if test "${enable_fribidi}" != "no"
4375   then
4376     PKG_CHECK_MODULES(FRIBIDI, fribidi, [
4377       VLC_ADD_CPPFLAGS([freetype skins2], [${FRIBIDI_CFLAGS} -DHAVE_FRIBIDI])
4378       VLC_ADD_LIBS([freetype skins2], [${FRIBIDI_LIBS}])
4379     ])
4380     fi
4381 fi
4382
4383 dnl
4384 dnl  libxml2 module
4385 dnl
4386 AC_ARG_ENABLE(libxml2,
4387   [  --enable-libxml2        libxml2 support (default enabled)])
4388 if test "${enable_libxml2}" != "no"
4389 then
4390   XML2_PATH="${PATH}"
4391   AC_ARG_WITH(xml2-config-path,
4392     [    --with-xml2-config-path=PATH xml2-config path (default search in \$PATH)],
4393     [ if test "${with_xml2_config_path}" != "no"; then
4394         XML2_PATH="${with_xml2_config_path}:${PATH}"
4395       fi ])
4396   AC_PATH_PROG(XML2_CONFIG, xml2-config, no, ${XML2_PATH})
4397   if test "${XML2_CONFIG}" != "no"; then
4398     VLC_ADD_CPPFLAGS([xml],[`${XML2_CONFIG} --cflags`])
4399     VLC_ADD_LIBS([xml],[`${XML2_CONFIG} --libs`])
4400     dnl depends on the xmlTextReader extension
4401     CPPFLAGS="${CPPFLAGS_save} ${CPPFLAGS_xml}"
4402     LDFLAGS="${LDFLAGS_save} ${LIBS_xml}"
4403     AC_CHECK_LIB(xml2,xmlTextReaderConstName,[
4404       AC_EGREP_HEADER(xmlTextReaderConstName,libxml/xmlreader.h,[
4405         VLC_ADD_PLUGIN([xml]) ],[
4406           AC_MSG_WARN([libxml2 missing the xmlTextReader extension, you should update your version])
4407           if test "${enable_xml2}" = "yes"; then
4408             AC_MSG_ERROR([libxml2 missing the xmlTextReader extension])
4409           fi])
4410        ],[
4411       AC_MSG_WARN([libxml2 missing the xmlTextReader extension, you should update your version])
4412       if test "${enable_xml2}" = "yes"; then
4413         AC_MSG_ERROR([libxml2 missing the xmlTextReader extension])
4414       fi])
4415     LDFLAGS="${LDFLAGS_save}"
4416     CPPFLAGS="${CPPFLAGS_save}"
4417   else
4418     if test "${enable_xml2}" = "yes"; then
4419       AC_MSG_ERROR([Could not find libxml2])
4420     fi
4421   fi
4422 fi
4423
4424 dnl
4425 dnl  SVG module
4426 dnl
4427 AC_ARG_ENABLE(svg,
4428   [  --enable-svg            SVG support (default disabled)])
4429 if test "${enable_svg}" = "yes"
4430 then
4431   PKG_CHECK_MODULES(SVG, 
4432         librsvg-2.0 >= 2.9.0,
4433         [
4434           VLC_ADD_LIBS([svg],[$SVG_LIBS])
4435           VLC_ADD_CFLAGS([svg],[$SVG_CFLAGS])
4436           VLC_ADD_PLUGIN([svg]) ],
4437         [AC_MSG_WARN(SVG library not found)])
4438 fi
4439
4440 dnl
4441 dnl Snapshot vout module (with cache)
4442 dnl
4443 AC_ARG_ENABLE(snapshot,
4444   [  --enable-snapshot       snapshot module (default disabled)])
4445 if test "${enable_snapshot}" = "yes"
4446 then
4447   VLC_ADD_PLUGIN([snapshot])
4448 fi
4449
4450 dnl
4451 dnl  Qt Embedded module
4452 dnl  (disabled by default)
4453 dnl
4454 AC_ARG_ENABLE(qte,
4455   [  --enable-qte            QT Embedded support (default disabled)])
4456 if test "${enable_qte}" = "yes"
4457 then
4458   AC_ARG_WITH(qte,
4459   [    --with-qte=PATH       Qt Embedded headers and libraries])
4460   if test "${with_qte}" != "no" -a -n "${with_qte}"
4461   then
4462     VLC_ADD_LIBS([qte],[-L${with_qte}/lib `echo -L${with_qte}/lib | sed 's,opt/QtPalmtop,usr,'` -ljpeg -lqte])
4463     VLC_ADD_CXXFLAGS([qte],[-I${with_qte}/include `echo -I${with_qte}/include | sed 's,opt/QtPalmtop,usr,'` -DQT_QWS_IPAQ -DQWS -fno-exceptions -fno-rtti])
4464   else
4465     VLC_ADD_LIBS([qte],[-L${QTDIR}/lib `echo -L${QTDIR}/lib | sed 's,opt/QtPalmtop,usr,'` -ljpeg -lqte])
4466     VLC_ADD_CXXFLAGS([qte],[-I${QTDIR}/include `echo -I${QTDIR}/include | sed 's,opt/QtPalmtop,usr,'` -DQT_QWS_IPAQ -DQWS -fno-exceptions -fno-rtti])
4467   fi
4468   VLC_ADD_PLUGIN([qte])
4469   NEED_QTE_MAIN=yes
4470   CPPFLAGS="${CPPFLAGS_save} ${CXXFLAGS_qte}"
4471   AC_CHECK_HEADERS(qt.h jpeglib.h, ,[
4472     AC_MSG_ERROR([echo "Cannot find QT Embedded development headers."])
4473   ] )
4474   CPPFLAGS="${CPPFLAGS_save}"
4475 fi
4476
4477 dnl
4478 dnl  Qt Video output module
4479 dnl  (disabled by default)
4480 dnl
4481 dnl AC_ARG_ENABLE(qt_video,
4482 dnl   [  --enable-qt_video            QT Video Output support (default disabled)])
4483 dnl if test "${enable_qt_video}" = "yes"
4484 dnl then
4485 dnl  VLC_ADD_PLUGIN([qt_video])
4486 dnl  VLC_ADD_LIBS([qt_video],[-L${QTDIR}/lib])
4487 dnl  LDFLAGS="${LDFLAGS_save} ${LDFLAGS_qt_video}"
4488 dnl   AC_CHECK_LIB(qt-mt,main,[
4489 dnl    VLC_ADD_LIBS([qt_video],[-lqt-mt])
4490 dnl  ],[
4491 dnl    AC_CHECK_LIB(qt,main,[
4492 dnl      VLC_ADD_LIBS([qt_video],[-lqt])
4493 dnl    ])
4494 dnl  ])
4495 dnl  NEED_QTE_MAIN=yes
4496 dnl  LDFLAGS="${LDFLAGS_save}"
4497 dnl  VLC_ADD_CXXFLAGS([qt_video],[-I/usr/include/qt3 -I/usr/include/qt -I${QTDIR}/include])
4498 dnl fi
4499
4500 dnl
4501 dnl Roku HD1000 Video output module
4502 dnl
4503 AC_ARG_ENABLE(hd1000v,
4504   [  --enable-hd1000v        HD1000 Video Output module (default enabled on HD1000)])
4505 if test "${enable_hd1000v}" != "no" -a "${CXX}" != "" &&
4506   (test "${SYS}" != "mingw32" -a "${SYS}" != "mingwce" ||
4507    test "${enable_hd1000v}" = "yes"); then
4508   AC_LANG_PUSH([C++])
4509   AC_CHECK_HEADERS([cascade/graphics/CascadeScreen.h cascade/graphics/CascadeBitmap.h],
4510   [
4511     can_build_roku="yes"
4512   ],
4513   [
4514     can_build_roku="no"
4515     AC_MSG_WARN([Not building Roku HD1000 compatible video output])
4516   ])
4517   if test "$can_build_roku" = "yes"
4518   then
4519     VLC_ADD_PLUGIN([hd1000v])
4520     VLC_ADD_LIBS([hd1000v],[-lCascade -ldvbpsi -lmad])
4521   fi
4522   AC_LANG_POP([C++])
4523 fi
4524
4525 dnl
4526 dnl  Windows DirectX module
4527 dnl
4528
4529 if test "${SYS}" = "mingw32" -o "${SYS}" = "mingwce" -o "${SYS}" = "cygwin"
4530 then
4531   VLC_ADD_PLUGIN([panoramix])
4532 fi
4533
4534 AC_ARG_ENABLE(directx,
4535   [  --enable-directx        Win32 DirectX support (default enabled on Win32)])
4536 if test "${enable_directx}" != "no"
4537 then
4538   if test "${SYS}" = "mingw32" -o "${SYS}" = "mingwce" -o "${SYS}" = "cygwin"
4539   then
4540     AC_ARG_WITH(directx,
4541     [    --with-directx=PATH   Win32 DirectX headers])
4542     if test -z "${with_directx}"
4543     then
4544       AC_CHECK_HEADERS(ddraw.h,
4545       [ VLC_ADD_PLUGIN([vout_directx])
4546         VLC_ADD_PLUGIN([aout_directx])
4547         VLC_ADD_LIBS([vout_directx],[-lgdi32])
4548       ])
4549       AC_CHECK_HEADERS(GL/gl.h,
4550       [ VLC_ADD_PLUGIN([glwin32])
4551         VLC_ADD_LIBS([glwin32],[-lopengl32 -lgdi32])
4552       ])
4553       AC_CHECK_HEADERS(d3d9.h,
4554       [ VLC_ADD_PLUGIN([direct3d])
4555         VLC_ADD_LIBS([direct3d],[-lgdi32])
4556       ])
4557     else
4558       AC_MSG_CHECKING(for directX headers in ${with_directx})
4559       if test -f ${with_directx}/ddraw.h
4560       then
4561         VLC_ADD_PLUGIN([vout_directx])
4562         VLC_ADD_PLUGIN([aout_directx])
4563         VLC_ADD_CPPFLAGS([vout_directx aout_directx],[-I${with_directx}])
4564         VLC_ADD_LIBS([vout_directx],[-lgdi32])
4565         AC_MSG_RESULT(yes)
4566       else
4567         AC_MSG_RESULT(no)
4568         AC_MSG_ERROR([Cannot find ${with_directx}/ddraw.h!])
4569       fi
4570     fi
4571   fi
4572 fi
4573
4574 dnl
4575 dnl  Linux framebuffer module
4576 dnl
4577 AC_ARG_ENABLE(fb,
4578   [  --enable-fb             Linux framebuffer support (default enabled on Linux)])
4579     if test "${enable_fb}" != "no"
4580     then
4581       AC_CHECK_HEADERS(linux/fb.h, [
4582         VLC_ADD_PLUGIN([fb])
4583       ])
4584     fi
4585
4586 dnl
4587 dnl  Linux MGA module
4588 dnl
4589 AC_ARG_ENABLE(mga,
4590   [  --enable-mga            Linux kernel Matrox support (default disabled)],
4591   [ if test "${enable_mga}" = "yes"
4592     then
4593       VLC_ADD_PLUGIN([mga])
4594     fi ])
4595
4596 dnl
4597 dnl  SVGAlib module
4598 dnl
4599 AC_ARG_ENABLE(svgalib,
4600   [  --enable-svgalib        SVGAlib support (default disabled)])
4601 if test "${enable_svgalib}" = "yes"
4602 then
4603   VLC_ADD_PLUGIN([svgalib])
4604   VLC_ADD_LIBS([svgalib],[-lvgagl -lvga])
4605 fi
4606
4607 dnl
4608 dnl  DirectFB module
4609 dnl  try to find using: 1 - given location; 2 - directfb-config; 3 - pkg-config
4610 dnl  TODO: support for static linking
4611 dnl
4612 AC_ARG_ENABLE(directfb,
4613   [  --enable-directfb       DirectFB support (default disabled)])
4614 AC_ARG_WITH(directfb, 
4615   [    --with-directfb=PATH  path to DirectFB headers and libraries])
4616
4617 if test "${enable_directfb}" = "yes"; then
4618     have_directfb="false"
4619     CPPFLAGS_mydirectfb=
4620     LIBS_mydirectfb=
4621     if test "${with_directfb}" != "no" -a -n "${with_directfb}"; then
4622         dnl Trying the given location
4623         CPPFLAGS_save="${CPPFLAGS}"
4624         LIBS_save="${LIBS}"
4625
4626         CPPFLAGS_new="-I${with_directfb}/include -D_REENTRANT -D_GNU_SOURCE"
4627         LIBS_new="-L${with_directfb}/lib/fusion/.libs/ -L${with_directfb}/lib/direct/.libs/"
4628         LIBS_new="${LIBS_new} -L${with_directfb}/src/.libs/"
4629
4630         CPPFLAGS="${CPPFLAGS} ${CPPFLAGS_new}"
4631         LIBS="${LIBS} ${LIBS_new}"
4632
4633         dnl FIXME: too obscure
4634         AC_CHECK_HEADER([directfb.h], [
4635             AC_CHECK_LIB([direct],[direct_initialize], [
4636                 AC_CHECK_LIB([fusion], [fusion_enter], [
4637                     AC_CHECK_LIB([directfb], [DirectFBInit], have_directfb="true", have_directfb="false")
4638                 ], have_directfb="false")
4639             ], have_directfb="false")
4640         ], have_directfb="false")
4641
4642         dnl Restore flags
4643         CPPFLAGS="${CPPFLAGS_save}"
4644         LIBS="${LIBS_save}"
4645
4646         if test "${have_directfb}" = "true"; then
4647             LIBS_mydirectfb="${LIBS_new} -lz -ldl -ldirectfb -lfusion -ldirect -lpthread"
4648             CPPFLAGS_mydirectfb="${CPPFLAGS_new}"
4649         fi
4650     else 
4651         dnl Look for directfb-config
4652         AC_PATH_PROG(DIRECTFB_CONFIG, directfb-config, no, ${PATH})
4653         if test "${DIRECTFB_CONFIG}" != "no"; then
4654             CPPFLAGS_mydirectfb="`${DIRECTFB_CONFIG} --cflags`"
4655             LIBS_mydirectfb="`${DIRECTFB_CONFIG} --libs`"
4656             have_directfb="true"
4657         else 
4658             dnl Trying with pkg-config
4659             PKG_CHECK_MODULES(DIRECTFB, directfb, [
4660                 CPPFLAGS_mydirectfb="${DIRECTFB_CFLAGS}"
4661                 LIBS_mydirectfb="${DIRECTFB_LIBS}"
4662                 have_directfb="true"
4663                 ], [have_directfb="false"])
4664         fi
4665     fi
4666     if test "${have_directfb}" = "true"; then
4667         VLC_ADD_PLUGIN([directfb])
4668         VLC_ADD_CPPFLAGS([directfb],[${CPPFLAGS_mydirectfb}])
4669         VLC_ADD_LIBS([directfb],[${LIBS_mydirectfb}])
4670     else 
4671         AC_MSG_ERROR([cannot find directfb headers and/or libraries ])
4672     fi
4673 fi
4674  
4675
4676
4677 dnl
4678 dnl  GGI module
4679 dnl
4680 AC_ARG_ENABLE(ggi,
4681   [  --enable-ggi            GGI support (default disabled)])
4682 if test "${enable_ggi}" = "yes"
4683 then
4684   VLC_ADD_PLUGIN([ggi])
4685   VLC_ADD_LIBS([ggi],[-lggi])
4686   AC_ARG_WITH(ggi,
4687     [    --with-ggi=PATH       path to libggi],
4688     [ if test "${with_ggi}" != "no" -a -n "${with_ggi}"
4689       then
4690         VLC_ADD_CPPFLAGS([ggi],[-I${with_ggi}/include])
4691         VLC_ADD_LIBS([ggi],[-L${with_ggi}/lib])
4692       fi ])
4693 fi
4694
4695 dnl
4696 dnl  Glide module
4697 dnl
4698 AC_ARG_ENABLE(glide,
4699   [  --enable-glide          Glide (3dfx) support (default disabled)])
4700 if test "${enable_glide}" = "yes"
4701 then
4702   CFLAGS_save="${CFLAGS}"
4703   AC_ARG_WITH(glide,
4704     [    --with-glide=PATH     path to libglide],
4705     [ if test "${with_glide}" != "no" -a -n "${with_glide}"
4706       then
4707         VLC_ADD_CPPFLAGS([glide],[-I${with_glide}/include])
4708         VLC_ADD_LIBS([glide],[-L${with_glide}/lib])
4709         CFLAGS="$CFLAGS -I${with_glide}/include"
4710     fi ])
4711    CFLAGS="$CFLAGS -I/usr/include/glide"
4712    AC_CHECK_HEADER(glide.h,[   
4713       VLC_ADD_PLUGIN([glide])
4714       VLC_ADD_LIBS([glide],[-lglide2x -lm])
4715       VLC_ADD_CPPFLAGS([glide],[-I/usr/include/glide])
4716     ],[
4717       AC_MSG_ERROR([You don't have libglide. Install it or do not use --enable-glide])
4718      ])
4719    CFLAGS="${CFLAGS_save}"
4720 fi
4721
4722 dnl
4723 dnl  AA plugin
4724 dnl
4725 AC_ARG_ENABLE(aa,
4726   [  --enable-aa             aalib output (default disabled)])
4727 if test "${enable_aa}" = "yes"
4728 then
4729   AC_CHECK_HEADER(aalib.h,have_aa="true",have_aa="false")
4730   if test "${have_aa}" = "true"
4731   then
4732     VLC_ADD_PLUGIN([aa])
4733     VLC_ADD_LIBS([aa],[-laa])
4734   fi
4735 fi
4736
4737 dnl
4738 dnl  libcaca plugin
4739 dnl
4740 AC_ARG_ENABLE(caca,
4741   [  --enable-caca           libcaca output (default disabled)])
4742 if test "${enable_caca}" = "yes"
4743 then
4744   CACA_PATH="${PATH}"
4745   AC_ARG_WITH(caca-config-path,
4746     [    --with-caca-config-path=PATH caca-config path (default search in \$PATH)],
4747     [ if test "${with_caca_config_path}" != "no"
4748       then
4749         CACA_PATH="${with_caca_config_path}:${PATH}"
4750       fi ])
4751   AC_PATH_PROG(CACA_CONFIG, caca-config, no, ${CACA_PATH})
4752   if test "${CACA_CONFIG}" != "no"
4753   then
4754     VLC_ADD_PLUGIN([caca])
4755     VLC_ADD_CFLAGS([caca],[`${CACA_CONFIG} --cflags`])
4756     VLC_ADD_LIBS([caca],[`${CACA_CONFIG} --plugin-libs`])
4757     AC_COMPILE_IFELSE( [AC_LANG_PROGRAM([[#include <caca.h>
4758                                         caca_event_t ev;]],
4759                                         [[ev.type = 0;]]
4760                        )],
4761                        [],
4762       [AC_DEFINE(CACA_EVENT_OPAQUE, [1], ["Define if struct caca_event is opaque and must not be accessed directly"])]
4763     )
4764   fi
4765 fi
4766
4767 dnl
4768 dnl  win32 GDI plugin
4769 dnl
4770 AC_ARG_ENABLE(wingdi,
4771   [  --enable-wingdi         Win32 GDI module (default enabled on Win32)])
4772 if test "${enable_wingdi}" != "no"; then
4773   if test "${SYS}" = "mingw32" -o "${SYS}" = "cygwin"; then
4774     VLC_ADD_PLUGIN([wingdi])
4775     VLC_ADD_LIBS([wingdi],[-lgdi32])
4776   fi
4777   if test "${SYS}" = "mingwce"; then
4778     VLC_ADD_PLUGIN([wingdi])
4779     VLC_ADD_PLUGIN([wingapi])
4780   fi
4781 fi
4782
4783 dnl
4784 dnl  Audio plugins
4785 dnl
4786
4787 AC_ARG_WITH(,[Audio plugins:])
4788
4789 dnl
4790 dnl  OSS /dev/dsp module (enabled by default except on win32)
4791 dnl
4792 AC_ARG_ENABLE(oss,
4793   [  --enable-oss            Linux OSS /dev/dsp support (enabled on Linux)])
4794
4795 if test "${enable_oss}" != "no" &&
4796   (test "${SYS}" != "mingw32" -a "${SYS}" != "mingwce" ||
4797    test "${enable_oss}" = "yes")
4798 then
4799   AC_CHECK_HEADERS(soundcard.h sys/soundcard.h machine/soundcard.h, [
4800     VLC_ADD_PLUGIN([oss])
4801     AC_CHECK_LIB(ossaudio,main,VLC_ADD_LIBS([oss],[-lossaudio]))
4802   ])
4803 fi
4804
4805 dnl
4806 dnl  Esound module
4807 dnl
4808 AC_ARG_ENABLE(esd,
4809   [  --enable-esd            Esound library support (default disabled)],
4810   [if test "${enable_esd}" = "yes"
4811    then
4812      AC_PATH_PROG(ESD_CONFIG, esd-config, no)
4813      if test "${ESD_CONFIG}" != "no"
4814      then
4815        VLC_ADD_PLUGIN([esd])
4816        VLC_ADD_CFLAGS([esd],[`${ESD_CONFIG} --cflags`])
4817        VLC_ADD_LIBS([esd],[`${ESD_CONFIG} --libs`])
4818      fi
4819    fi])
4820
4821 dnl
4822 dnl  Pulseaudio module
4823 dnl
4824 AC_ARG_ENABLE(pulse,
4825   [  --enable-pulse          Pulseaudio support (default enabled)])
4826   if test "${enable_pulse}" != "no"
4827    then
4828      PKG_CHECK_MODULES(PULSE, libpulse >= 0.9.8,
4829        [ VLC_ADD_PLUGIN([pulse])
4830         VLC_ADD_CFLAGS([pulse],[${PULSE_CFLAGS}])
4831         VLC_ADD_LDFLAGS([pulse],[${PULSE_LIBS}])],
4832        [AC_MSG_WARN(pulsaudio library not found)])
4833    fi
4834
4835 dnl
4836 dnl  Portaudio module
4837 dnl
4838 AC_ARG_ENABLE(portaudio,
4839   [  --enable-portaudio      Portaudio library support (default disabled)],
4840   [if test "${enable_portaudio}" = "yes"
4841    then
4842      VLC_ADD_PLUGIN([portaudio])
4843      VLC_ADD_CXXFLAGS([portaudio],[])
4844      if test "${SYS}" = "mingw32"; then
4845         VLC_ADD_LIBS([portaudio],[-lportaudio -lwinmm -lole32])
4846      else
4847         VLC_ADD_LIBS([portaudio],[-lportaudio])
4848      fi
4849    fi])
4850
4851 dnl
4852 dnl  aRts module -- broken (freeze wxWidgets)
4853 dnl
4854 AC_ARG_ENABLE(arts,
4855  [  --enable-arts           aRts sound server (default disabled)],
4856  [if test "${enable_arts}" = "yes"
4857   then
4858     AC_PATH_PROG(ARTS_CONFIG, artsc-config, no)
4859     if test "${ARTS_CONFIG}" != "no"
4860     then
4861       VLC_ADD_PLUGIN([arts])
4862       VLC_ADD_CFLAGS([arts],[`${ARTS_CONFIG} --cflags`])
4863       VLC_ADD_LIBS([arts],[`${ARTS_CONFIG} --libs `])
4864     fi
4865   fi])
4866
4867 dnl
4868 dnl  ALSA module
4869 dnl
4870 AC_ARG_ENABLE(alsa,
4871   [  --enable-alsa           ALSA sound support for Linux (default enabled)])
4872 if test "${enable_alsa}" != "no"
4873 then
4874   AC_CHECK_HEADER(alsa/asoundlib.h, AC_CHECK_LIB(asound, main, have_alsa="true", have_alsa="false"),have_alsa="false")
4875   if test "${have_alsa}" = "true"
4876   then
4877     CFLAGS="${CFLAGS_save}"
4878     AC_TRY_COMPILE([#define ALSA_PCM_NEW_HW_PARAMS_API
4879                     #define ALSA_PCM_NEW_SW_PARAMS_API
4880                     #include <alsa/asoundlib.h>],
4881        [snd_pcm_hw_params_get_period_time(0,0,0);],
4882         AC_DEFINE(HAVE_ALSA_NEW_API, 1, Define if ALSA is at least rc4))
4883     VLC_ADD_PLUGIN([alsa])
4884     VLC_ADD_LIBS([alsa],[-lasound -lm -ldl])
4885   else
4886     if test "${enable_alsa}" = "yes"; then
4887       AC_MSG_ERROR([Could not find ALSA development headers])
4888     fi
4889   fi
4890 fi
4891
4892 dnl
4893 dnl  win32 waveOut plugin
4894 dnl
4895 AC_ARG_ENABLE(waveout,
4896   [  --enable-waveout        Win32 waveOut module (default enabled on Win32)])
4897 if test "${enable_waveout}" != "no"; then
4898   if test "${SYS}" = "mingw32" -o "${SYS}" = "cygwin"; then
4899     VLC_ADD_PLUGIN([waveout])
4900     VLC_ADD_LIBS([waveout],[-lwinmm])
4901   fi
4902   if test "${SYS}" = "mingwce"; then
4903     VLC_ADD_PLUGIN([waveout])
4904   fi
4905 fi
4906
4907 dnl
4908 dnl  CoreAudio plugin
4909 dnl
4910 AC_ARG_ENABLE(macosx-audio,
4911   [  --enable-macosx-audio   Mac OS X audio module (default enabled on MacOS X)])
4912 if test "${enable_macosx-audio}" != "no" &&
4913   (test "${SYS}" = "darwin" || test "${enable_macosx-audio}" = "yes")
4914 then
4915   AC_CHECK_HEADERS(CoreAudio/CoreAudio.h, 
4916     [ VLC_ADD_PLUGIN([auhal])
4917       VLC_ADD_LDFLAGS([auhal],[-Wl,-framework,CoreAudio,-framework,AudioUnit,-framework,AudioToolbox,-framework,Carbon])
4918     ], [ AC_MSG_ERROR([cannot find CoreAudio headers]) ])
4919 fi
4920
4921 dnl
4922 dnl  Roku HD1000 audio
4923 dnl
4924 AC_ARG_ENABLE(hd1000a,
4925   [  --enable-hd1000a        HD1000 audio module (default enabled on HD1000)])
4926 if test "${enable_hd1000a}" != "no" -a "${CXX}" != "" &&
4927   (test "${SYS}" != "mingw32" -a "${SYS}" != "mingwce" ||
4928    test "${enable_hd1000a}" = "yes")
4929 then
4930   AC_LANG_PUSH([C++])
4931   AC_CHECK_HEADERS(deschutes/libraries/hdmachinex225/PCMAudioPlayer.h, [
4932     VLC_ADD_PLUGIN([hd1000a])
4933     AC_CHECK_LIB(HDMachineX225,main,VLC_ADD_LIBS([hd1000a],[-lHDMachineX225]))  ])
4934   AC_LANG_POP([C++])
4935 fi
4936
4937 dnl
4938 dnl  JACK modules
4939 dnl
4940 AC_ARG_ENABLE(jack,
4941  [  --enable-jack           JACK audio I/O modules (default disabled)],,
4942  [enable_jack="no"])
4943
4944 AS_IF([test "${enable_jack}" != "no"], [
4945   AC_CHECK_HEADERS(jack/jack.h, [
4946     VLC_ADD_PLUGIN([access_jack])
4947     VLC_ADD_PLUGIN([jack])
4948     VLC_ADD_LIBS([access_jack jack],[-ljack])
4949   ],[AC_MSG_ERROR([cannot find JACK headers])])
4950 ])
4951
4952 dnl
4953 dnl  CyberLink for C++ UPnP stack
4954 dnl
4955 AC_ARG_ENABLE(cyberlink,
4956   [  --enable-cyberlink      CyberLink for C++ UPnP stack (default disabled)])
4957   AS_IF([test "${enable_cyberlink}" = "yes" ], [
4958   AC_ARG_WITH(cyberlink-tree,
4959     [    --with-cyberlink-tree=PATH CyberLink for C++ tree for static linking])
4960
4961   dnl
4962   dnl test for --with-cyberlink-tree
4963   dnl
4964   AS_IF([test ! -z "${with_cyberlink_tree}" -a "${CXX}" != ""], [
4965     AC_LANG_PUSH(C++)
4966     real_cyberlink_tree="`cd ${with_cyberlink_tree} 2>/dev/null && pwd`"
4967     AS_IF([test -z "${real_cyberlink_tree}"], [
4968       dnl  The given directory can't be found
4969       AC_MSG_RESULT(no)
4970       AC_MSG_ERROR([cannot cd to ${with_cyberlink_tree}])
4971     ])
4972     CPPFLAGS_save="${CPPFLAGS}"
4973     CPPFLAGS_cyberlink="-I${real_cyberlink_tree}/include"
4974     CPPFLAGS="${CPPFLAGS} ${CPPFLAGS_cyberlink}"
4975     AC_CHECK_HEADERS([cybergarage/upnp/MediaServer.h],
4976       [ VLC_ADD_CXXFLAGS([upnp_cc], [${CPPFLAGS_cyberlink}])
4977         VLC_ADD_PLUGIN([upnp_cc]) 
4978       ],[
4979         AC_MSG_ERROR([cannot find CyberLink for C++ headers])
4980       ])
4981     AC_MSG_CHECKING(for libclink.a in ${with_cyberlink_tree})
4982     AS_IF([test -f "${real_cyberlink_tree}/lib/unix/libclink.a"], [
4983       AC_MSG_RESULT(${real_cyberlink_tree}/lib/unix/libclink.a)
4984       dnl The mere fact that we have to make such an ugly check sucks
4985       AC_MSG_CHECKING(for XML parser to link CyberLink with)
4986       LIBS_save="$LIBS"
4987       LIBS_cclink="no"
4988       for l in "`xml2-config --libs`" -lexpat -lxerces-c; do
4989         LIBS="$LIBS_save ${real_cyberlink_tree}/lib/unix/libclink.a -lpthread $l"
4990         AC_LINK_IFELSE([AC_LANG_PROGRAM([
4991 #include <cybergarage/upnp/media/player/MediaPlayer.h>
4992 using namespace CyberLink;
4993
4994 class testclass : public SearchResponseListener, public MediaPlayer
4995 {
4996     virtual void deviceSearchResponseReceived( SSDPPacket *)
4997     {
4998     }
4999
5000     public:
5001       testclass (void)
5002       {
5003         addSearchResponseListener (this);
5004         start ();
5005       }
5006 };
5007 ],[testclass l;])],[LIBS_cclink="$l"])
5008       done
5009       LIBS="${LIBS_save}"
5010       dnl should not happen - otherwise this needs fixing - hence FAILURE
5011       AS_IF([test "${LIBS_cclink}" = "no"],
5012         [AC_MSG_FAILURE([cannot find XML parser for CyberLink])])
5013       AC_MSG_RESULT([${LIBS_cclink}])
5014       VLC_ADD_LIBS([upnp_cc], [${real_cyberlink_tree}/lib/unix/libclink.a -lpthread ${LIBS_cclink}])
5015     ], [
5016       AC_MSG_RESULT(no)
5017       AC_MSG_ERROR([cannot find ${real_cyberlink_tree}/lib/unix/libclink.a, make sure you compiled CyberLink for C++ in ${with_cyberlink_tree}])
5018     ])
5019     CPPFLAGS="${CPPFLAGS_save}"
5020     AC_LANG_POP([C++])
5021   ])
5022 ])
5023
5024 dnl
5025 dnl UPnP Plugin (Intel SDK)
5026 dnl
5027 AC_ARG_ENABLE(upnp,
5028   [  --enable-upnp           Intel UPnP SDK (default enabled)])
5029
5030 VLC_ADD_CXXFLAGS([upnp_intel], [ ])
5031 AS_IF([test "x${enable_upnp}" != "xno"], [
5032   AC_CHECK_LIB([upnp], [UpnpInit], [has_upnp="yes"], [has_upnp="no"], [-lpthread])
5033   AS_IF([test "x${enable_upnp}" != "x" && test "${has_upnp}" = "no"], [
5034     AC_MSG_ERROR([cannot find Intel UPnP SDK (libupnp)])
5035   ])
5036   AS_IF([test "${has_upnp}" = "yes"], [
5037     VLC_ADD_LIBS([upnp_intel], [-lupnp -lixml])
5038   ])
5039 ], [
5040   has_upnp="no"
5041 ])
5042
5043 AS_IF([test "${has_upnp}" = "yes"], [
5044   VLC_ADD_PLUGIN([upnp_intel])
5045 ])
5046
5047
5048 dnl
5049 dnl  Interface plugins
5050 dnl
5051
5052 AC_ARG_WITH(,[Interface plugins:])
5053
5054 dnl special case for BeOS
5055 if test "${SYS}" = "beos"
5056 then
5057     VLC_ADD_BUILTINS([beos])
5058 fi
5059
5060 dnl
5061 dnl Skins2 module
5062 dnl
5063 AC_ARG_ENABLE(skins2,
5064   [  --enable-skins2         Skins2 interface module (default disabled)])
5065 if test "${enable_skins2}" = "yes" ||
5066   (test "${SYS}" != "darwin" && test "${SYS}" != "beos" &&
5067    test "${SYS}" != "mingwce" && test "${enable_skins2}" != "no"); then
5068
5069   dnl test for the required libraries
5070   skins2_missing_lib="no"
5071
5072   dnl freetype
5073   if test "${have_freetype}" != "yes"; then
5074     skins2_missing_lib="yes"
5075     if test "${enable_skins2}" = "yes"; then
5076       AC_MSG_ERROR([Could not find freetype (required for skins2)])
5077     fi
5078   fi
5079
5080   if test "${skins2_missing_lib}" = "no" && (test "${SYS}" = "mingw32" -o "${SYS}" = "cygwin"); then
5081     VLC_ADD_PLUGIN([skins2])
5082     ALIASES="${ALIASES} svlc"
5083     VLC_ADD_CPPFLAGS([skins2],[-U_OFF_T_ -U_off_t -Imodules/gui/skins2 -DWIN32_SKINS])
5084     VLC_ADD_CXXFLAGS([skins2],[-O2 -fno-rtti])
5085     VLC_ADD_LIBS([skins2],[-loleaut32 -lwinspool -lwinmm -lshell32 -lctl3d32 -ladvapi32 -lwsock32 -lgdi32 -lcomdlg32 -lole32 -luuid -lcomctl32])
5086
5087   else if test "${skins2_missing_lib}" = "no" && (test "${SYS}" = "darwin"); then
5088     VLC_ADD_PLUGIN([skins2])
5089     ALIASES="${ALIASES} svlc"
5090     VLC_ADD_CPPFLAGS([skins2],[-Imodules/gui/skins2 -DMACOSX_SKINS])
5091     VLC_ADD_CXXFLAGS([skins2],[-O2 -fno-rtti])
5092     VLC_ADD_LDFLAGS([skins2],[-Wl,-framework,Carbon])
5093
5094   else if test "${skins2_missing_lib}" = "no"; then
5095     VLC_ADD_PLUGIN([skins2])
5096     ALIASES="${ALIASES} svlc"
5097     VLC_ADD_CPPFLAGS([skins2],[-Imodules/gui/skins2 ${X_CFLAGS} -DX11_SKINS])
5098     VLC_ADD_CXXFLAGS([skins2],[-O2 -fno-rtti])
5099     VLC_ADD_LIBS([skins2],[${X_LIBS} ${X_PRE_LIBS} -lXext -lX11])
5100   fi fi fi
5101 fi
5102 AM_CONDITIONAL(BUILD_SKINS, [test "${enable_skins2}" = "yes"])
5103
5104 dnl dnl
5105 dnl dnl  Gtk+ module
5106 dnl dnl
5107 dnl AC_ARG_ENABLE(gtk,
5108 dnl   [  --enable-gtk            Gtk+ support (default enabled)])
5109 dnl if test "${enable_gtk}" != "no"
5110 dnl then
5111 dnl   GTK_PATH="${PATH}"
5112 dnl   AC_ARG_WITH(gtk-config-path,
5113 dnl     [    --with-gtk-config-path=PATH gtk-config path (default search in \$PATH)],
5114 dnl     [ if test "${with_gtk_config_path}" != "no"
5115 dnl       then
5116 dnl         GTK_PATH="${with_gtk_config_path}:${PATH}"
5117 dnl       fi ])
5118 dnl   # look for gtk-config
5119 dnl   AC_PATH_PROG(GTK12_CONFIG, gtk12-config, no, ${GTK_PATH})
5120 dnl   GTK_CONFIG=${GTK12_CONFIG}
5121 dnl   if test "${GTK_CONFIG}" = "no"
5122 dnl   then
5123 dnl     AC_PATH_PROG(GTK_CONFIG, gtk-config, no, ${GTK_PATH})
5124 dnl   fi
5125 dnl   if test "${GTK_CONFIG}" != "no"
5126 dnl   then
5127 dnl     if expr 1.2.0 \> `${GTK_CONFIG} --version` >/dev/null
5128 dnl     then
5129 dnl       AC_MSG_ERROR([Your development package for Gtk+ is too old, you need at least version 1.2.0. Please upgrade and try again. Alternatively you can also configure with --disable-gtk.])
5130 dnl     fi
5131 dnl     if test "${SYS}" != "mingw32"; then
5132 dnl       VLC_ADD_CFLAGS([gtk],[`${GTK_CONFIG} --cflags gtk gthread`])
5133 dnl       VLC_ADD_LIBS([gtk],[`${GTK_CONFIG} --libs gtk gthread | sed 's,-rdynamic,,'`])
5134 dnl     else
5135 dnl       VLC_ADD_CFLAGS([gtk],[`${GTK_CONFIG} --cflags gtk`])
5136 dnl       VLC_ADD_LIBS([gtk],[`${GTK_CONFIG} --libs gtk | sed 's,-rdynamic,,'`])
5137 dnl     fi
5138 dnl     # now look for the gtk.h header
5139 dnl     CPPFLAGS="${CPPFLAGS_save} ${CFLAGS_gtk}"
5140 dnl     ac_cv_gtk_headers=yes
5141 dnl     AC_CHECK_HEADERS(gtk/gtk.h glib.h gdk/gdk.h, , [
5142 dnl       ac_cv_gtk_headers=no
5143 dnl       echo "Cannot find gtk development headers."
5144 dnl     ])
5145 dnl     if test "${ac_cv_gtk_headers}" = "yes"
5146 dnl     then
5147 dnl       VLC_ADD_PLUGIN([gtk])
5148 dnl       if test "${SYS}" != "mingw32"; then
5149 dnl         NEED_GTK_MAIN=yes
5150 dnl       fi
5151 dnl       ALIASES="${ALIASES} gvlc"
5152 dnl     fi
5153 dnl     CPPFLAGS="${CPPFLAGS_save}"
5154 dnl   fi
5155 dnl fi
5156 dnl 
5157 dnl
5158 dnl  Gtk+2 module ! Disabled for now as it is unusable and confuses users
5159 dnl
5160 dnl AC_ARG_ENABLE(gtk2,
5161 dnl   [  --enable-gtk2           Gtk2 support (default disabled)])
5162 dnl if test "${enable_gtk2}" = "yes"
5163 dnl then
5164 dnl   PKG_CHECK_MODULES(GTK2, [gtk+-2.0 >= 2.0.0, gthread-2.0])
5165 dnl   VLC_ADD_CFLAGS([gtk2],[${GTK2_CFLAGS}])
5166 dnl   VLC_ADD_LIBS([gtk2],[${GTK2_LIBS}])
5167 dnl   VLC_ADD_PLUGIN([gtk2])
5168 dnl   if test "${SYS}" != "mingw32"; then
5169 dnl     NEED_GTK2_MAIN=yes
5170 dnl   fi
5171 dnl fi
5172
5173 dnl
5174 dnl  PDA Gtk+2 module
5175 dnl
5176 AC_ARG_ENABLE(pda,
5177   [  --enable-pda            PDA interface needs Gtk2 support (default disabled)])
5178 if test "${enable_pda}" = "yes"
5179 then
5180   PKG_CHECK_MODULES(GTK2, [gtk+-2.0 >= 2.0.0, gthread-2.0])
5181   VLC_ADD_CFLAGS([gtk2],[${GTK2_CFLAGS}])
5182   VLC_ADD_LIBS([gtk2],[${GTK2_LIBS}])
5183   VLC_ADD_CFLAGS([pda],[${GTK2_CFLAGS} ${CFLAGS_pda}])
5184   VLC_ADD_LIBS([pda],[${LDFLAGS_pda}])
5185   VLC_ADD_LIBS([pda],[${GTK2_LIBS}])
5186   VLC_ADD_PLUGIN([pda])
5187   if test "${SYS}" != "mingw32"; then
5188     NEED_GTK2_MAIN=yes
5189   fi
5190 fi
5191 AM_CONDITIONAL(BUILD_PDA, [test "${enable_pda}" = "yes"])
5192
5193 dnl dnl
5194 dnl dnl  Gnome module
5195 dnl dnl
5196 dnl AC_ARG_ENABLE(gnome,
5197 dnl   [  --enable-gnome          Gnome interface support (default disabled)],
5198 dnl   [if test "${enable_gnome}" = "yes"; then
5199 dnl     # look for gnome-config
5200 dnl     AC_PATH_PROG(GNOME_CONFIG, gnome-config, no)
5201 dnl     if test -x ${GNOME_CONFIG}
5202 dnl     then
5203 dnl        VLC_ADD_CFLAGS([gnome],[`${GNOME_CONFIG} --cflags gtk gnomeui`])
5204 dnl        VLC_ADD_LIBS([gnome],[`${GNOME_CONFIG} --libs gnomeui | sed 's,-rdynamic,,'`])
5205 dnl     fi
5206 dnl     # now look for the gnome.h header
5207 dnl     CPPFLAGS="${CPPFLAGS_save} ${CFLAGS_gnome}"
5208 dnl     AC_CHECK_HEADERS(gnome.h, [
5209 dnl       VLC_ADD_PLUGIN([gnome])
5210 dnl       NEED_GTK_MAIN=yes
5211 dnl       NEED_GNOME_MAIN=yes
5212 dnl       ALIASES="${ALIASES} gnome-vlc"
5213 dnl       dnl We need this because of some moronic gnomesupport.h flavours
5214 dnl       AC_MSG_CHECKING(for strndup in gnome.h)
5215 dnl       AC_EGREP_HEADER(strndup,gnome.h,[
5216 dnl         AC_MSG_RESULT(yes)
5217 dnl         AC_DEFINE(STRNDUP_IN_GNOME_H, 1,
5218 dnl                   Define if <gnome.h> defines strndup.)],[
5219 dnl         AC_MSG_RESULT(no)])
5220 dnl      ],[
5221 dnl       AC_MSG_ERROR([Can't find gnome headers. Please install the gnome
5222 dnl developement tools or remove the --enable-gnome option])
5223 dnl      ])
5224 dnl     CPPFLAGS="${CPPFLAGS_save}"
5225 dnl   fi])
5226
5227 dnl
5228 dnl  Gnome2 module ! Disabled for know as it is unuseable and confuses users
5229 dnl
5230 dnl AC_ARG_ENABLE(gnome2,
5231 dnl   [  --enable-gnome2         Gnome2 support (default disabled)])
5232 dnl if test "${enable_gnome2}" = "yes"
5233 dnl then
5234 dnl   PKG_CHECK_MODULES(GNOME2, [libgnomeui-2.0])
5235 dnl   VLC_ADD_CFLAGS([gnome2],[${GNOME2_CFLAGS}])
5236 dnl   VLC_ADD_LIBS([gnome2],[${GNOME2_LIBS}])
5237 dnl   VLC_ADD_PLUGIN([gnome2])
5238 dnl   if test "${SYS}" != "mingw32"; then
5239 dnl     NEED_GNOME2_MAIN=yes
5240 dnl   fi
5241 dnl fi
5242
5243 dnl
5244 dnl  wxWidgets module
5245 dnl
5246 AC_ARG_ENABLE(wxwidgets,
5247   [  --enable-wxwidgets      wxWidgets support (default disabled)])
5248
5249 if test "${enable_wxwidgets}" = "yes"
5250 then
5251   AC_MSG_WARN([wxWidgets support is deprecated and will be removed. Consider using Qt4 instead.])
5252   WXWIDGETS_PATH="${PATH}"
5253   AC_ARG_WITH(wx-config-path,
5254     [    --with-wx-config-path=PATH wx-config path (default search in \$PATH)],
5255     [ if test "${with_wx_config_path}" != "no"
5256       then
5257         WXWIDGETS_PATH="${with_wx_config_path}:${PATH}"
5258       fi ])
5259   WXWIDGETS_NAME="wx-config"
5260   AC_ARG_WITH(wx-config,
5261     [    --with-wx-config=NAME      wx-config name (default is wx-config)],
5262     [ if test "${with_wx_config}" != "no"
5263       then
5264         WXWIDGETS_NAME="${with_wx_config}"
5265       fi ])
5266   # look for wx-config
5267   AC_PATH_PROG(WX_CONFIG, ${WXWIDGETS_NAME}, no, ${WXWIDGETS_PATH})
5268   if test "${WX_CONFIG}" != "no" -a "${CXX}" != ""
5269   then
5270     if expr 2.6.0 \> `${WX_CONFIG} --version` >/dev/null
5271     then
5272       AC_MSG_ERROR([You need wxWidgets version 2.6.0 or upwards. Please upgrade and try again.])
5273     fi
5274     AC_LANG_PUSH(C++)
5275     # Turn this error:
5276     #   playlist.cpp:1351: error: ISO C++ forbids cast to non-reference type
5277     # into a warning. However better would be to fix playlist.cpp
5278     AC_CACHE_CHECK([if \$CXX accepts -fpermissive],
5279         [ac_cv_cxx_fpermissive],
5280         [CXXFLAGS="${CXXFLAGS_save} -fpermissive"
5281          AC_TRY_COMPILE([],,ac_cv_cxx_fpermissive=yes,
5282                         ac_cv_cxx_fpermissive=no)])
5283     if test "${ac_cv_cxx_fpermissive}" = "yes"; then
5284       VLC_ADD_CXXFLAGS([wxwidgets],-fpermissive)
5285     fi
5286     VLC_ADD_LIBS([wxwidgets],[`${WX_CONFIG} --libs`])
5287     VLC_ADD_CXXFLAGS([wxwidgets],[`${WX_CONFIG} --cxxflags`])
5288     # check if we must link against gtk2 libs
5289     # if __WXGTK20__ && __WXGTK__ are defined
5290     # for modules/gui/wxwidgets/video.cpp
5291     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([
5292 #include <wx/wx.h>
5293 #ifdef __WXGTK20__
5294 #error ok, we need to link against gtk2
5295 #endif
5296         ])],[WXGTK=no],[WXGTK=yes])
5297     if test "$WXGTK" = "yes"; then
5298       ${PKG_CONFIG} --exists gtk+-2.0 && VLC_ADD_LIBS([wxwidgets],[`$PKG_CONFIG --libs gtk+-2.0`])
5299     fi
5300     if ${WX_CONFIG} --unicode
5301     then 
5302       # wxwidgets should provide the following flags but does not
5303       # the following is required to compile for win32
5304       VLC_ADD_CXXFLAGS([wxwidgets],[-D_UNICODE -DUNICODE])
5305     else
5306       AC_MSG_ERROR([You need a unicode build of wxWidgets. Please fix that and try again. Better yet, you can configure with --disable-wxwidgets.])
5307     fi
5308     if test "$have_libcdio" = "yes"
5309     then 
5310       VLC_ADD_LIBS([wxwidgets],[$LIBCDIO_LIBS])
5311       VLC_ADD_CXXFLAGS([wxwidgets],[$LIBCDIO_CFLAGS])
5312     else 
5313       AC_MSG_WARN([Probe disc disabled because ok libcdio library not found])
5314     fi
5315
5316     if test "$have_libvcdinfo" = "yes"
5317     then 
5318       VLC_ADD_LIBS([wxwidgets],[$VCDINFO_LIBS])
5319       VLC_ADD_CXXFLAGS([wxwidgets],[$VCDINFO_CFLAGS])
5320     else 
5321       AC_MSG_WARN([VCD information on Probe disc disabled because ok libvcdinfo not found])
5322     fi
5323
5324     # now look for the wxprec.h header
5325     CPPFLAGS="${CPPFLAGS_save} ${CXXFLAGS_wxwidgets}"
5326     ac_cv_wx_headers=yes
5327     AC_CHECK_HEADERS(wx/wxprec.h, , [
5328       ac_cv_wx_headers=no
5329       echo "Cannot find wxWidgets development headers."
5330     ])
5331     if test "${ac_cv_wx_headers}" = "yes"
5332     then
5333       VLC_ADD_PLUGIN([wxwidgets])
5334       AC_DEFINE([HAVE_WX], 1, [Define to 1 if you have WxWidgets library.])
5335       ALIASES="${ALIASES} wxvlc"
5336     fi
5337     CPPFLAGS="${CPPFLAGS_save}"
5338     AC_LANG_POP(C++)
5339   fi
5340   dnl WxWidgets plugin will yield incorrect code without this
5341   VLC_ADD_CXXFLAGS([wxwidgets], [-fno-strict-aliasing])
5342 fi
5343
5344 dnl
5345 dnl QT 4
5346 dnl
5347 enableqt4=false
5348 AC_ARG_ENABLE(qt4,
5349   [  --enable-qt4            QT 4 support (default enabled) ])
5350 AS_IF([test "${enable_qt4}" != "no" &&
5351   (test "${SYS}" != "darwin" || test "${enable_qt4}" = "yes")], [
5352   PKG_CHECK_MODULES(QT4, [QtCore QtGui >= 4.2.0],
5353     [ VLC_ADD_PLUGIN([qt4])
5354       AC_DEFINE([HAVE_QT4], 1, [Define to 1 if you have QT4 library.])
5355       ALIASES="${ALIASES} qvlc"
5356       enableqt4=true
5357       if test "${SYS}" != "mingw32" -a "${SYS}" != "mingwce" -a "${SYS}" != "cygwin" -a "${SYS}" != "darwin"; then
5358           VLC_ADD_LIBS([qt4],[$QT4_LIBS -lX11])
5359       else
5360           VLC_ADD_LIBS([qt4],[$QT4_LIBS])
5361       fi
5362       VLC_ADD_CXXFLAGS([qt4],[$QT4_CFLAGS -DQT4LOCALEDIR=\\\\\\\"$($PKG_CONFIG --variable=prefix QtCore)/share/qt4/translations/\\\\\\\"])
5363       AC_PATH_PROGS(MOC, [moc-qt4 moc], moc,`$PKG_CONFIG --variable=exec_prefix QtCore`/bin)
5364       AC_PATH_PROG(RCC, rcc, rcc,`$PKG_CONFIG --variable=exec_prefix QtCore`/bin)
5365       AC_PATH_PROGS(UIC, [uic-qt4 uic], uic,`$PKG_CONFIG --variable=exec_prefix QtCore`/bin)
5366       ],
5367       AS_IF([test "${enable_qt4}" = "yes"],[
5368         AC_MSG_ERROR(QT4 library not found)
5369       ],[
5370         AC_MSG_WARN(QT4 library not found)
5371       ])
5372     )
5373 ])
5374 AM_CONDITIONAL(ENABLE_QT4, test "$enableqt4" = "true")
5375
5376 dnl
5377 dnl  WinCE GUI module
5378 dnl
5379 AC_ARG_ENABLE(wince,
5380   [  --enable-wince          Windows CE interface (default enabled with MinGW)])
5381 if test "${enable_wince}" != "no"; then
5382   if test "${SYS}" = "mingwce"; then
5383     VLC_ADD_BUILTINS([wince])
5384     VLC_ADD_CXXFLAGS([wince],[])
5385     VLC_ADD_LIBS([wince],[-lcommctrl -lcommdlg -laygshell])
5386     dnl Gross hack
5387     VLC_ADD_LIBS([wince],[\\\${top_builddir}modules/gui/wince/wince_rc.o])
5388   elif test "${SYS}" = "mingw32"; then
5389     VLC_ADD_CXXFLAGS([wince],[])
5390     VLC_ADD_LIBS([wince],[-lcomctl32 -lcomdlg32 -lgdi32 -lole32])
5391     dnl Gross hack
5392     VLC_ADD_LIBS([wince],[\\\${top_builddir}modules/gui/wince/wince_rc.o])
5393   fi
5394 fi
5395
5396 dnl
5397 dnl Simple test for skins2 dependency
5398 dnl
5399 if test "${enable_skins2}" != "no"
5400 then
5401   if test "${WX_CONFIG}" = "no"
5402   then
5403     AC_MSG_ERROR([The skins2 module depends on the wxWidgets development package. Without it you won't be able to open any dialog box from the interface, which makes the skins2 interface rather useless. Install the wxWidgets development package or alternatively you can also configure with: --disable-wxwidgets --disable-skins2.])
5404   fi
5405 fi
5406
5407 dnl dnl
5408 dnl dnl  Qt module
5409 dnl dnl
5410 dnl AC_ARG_ENABLE(qt,
5411 dnl   [  --enable-qt             Qt interface support (default disabled)],
5412 dnl   [if test "${enable_qt}" = "yes"; then
5413 dnl      VLC_ADD_PLUGIN([qt])
5414 dnl      ALIASES="${ALIASES} qvlc"
5415 dnl      VLC_ADD_LIBS([qt],[-L${QTDIR}/lib])
5416 dnl      LDFLAGS="${LDFLAGS_save} ${LDFLAGS_qt}"
5417 dnl      AC_CHECK_LIB(qt-mt,main,[
5418 dnl        VLC_ADD_LIBS([qt],[-lqt-mt])
5419 dnl      ],[
5420 dnl        AC_CHECK_LIB(qt,main,[
5421 dnl          VLC_ADD_LIBS([qt],[-lqt])
5422 dnl        ])
5423 dnl      ])
5424 dnl      LDFLAGS="${LDFLAGS_save}"
5425 dnl      VLC_ADD_CXXFLAGS([qt],[-I/usr/include/qt3 -I/usr/include/qt -I${QTDIR}/include])
5426 dnl      if test -x ${QTDIR}/bin/moc
5427 dnl      then
5428 dnl        MOC=${QTDIR}/bin/moc
5429 dnl      else
5430 dnl        MOC=moc
5431 dnl      fi
5432 dnl    fi])
5433 dnl 
5434 dnl dnl
5435 dnl dnl  KDE module
5436 dnl dnl
5437 dnl AC_ARG_ENABLE(kde,
5438 dnl   [  --enable-kde            KDE interface support (default disabled)],
5439 dnl   [if test "${enable_kde}" = "yes"; then
5440 dnl      VLC_ADD_PLUGIN([kde])
5441 dnl      ALIASES="${ALIASES} kvlc"
5442 dnl      VLC_ADD_LIBS([kde],[-L${KDEDIR}/lib])
5443 dnl      dnl Check for -lkfile (only in KDE 2) or -lkdeui -lkio (KDE 3)
5444 dnl      LDFLAGS="${LDFLAGS_save} ${LDFLAGS_kde}"
5445 dnl      AC_CHECK_LIB(kfile,main,[
5446 dnl        VLC_ADD_LIBS([kde],[-lkfile])
5447 dnl      ])
5448 dnl      LDFLAGS="${LDFLAGS_save} ${LDFLAGS_kde}"
5449 dnl      AC_CHECK_LIB(kdeui,main,[
5450 dnl        VLC_ADD_LIBS([kde],[-lkdeui])
5451 dnl      ])
5452 dnl      LDFLAGS="${LDFLAGS_save} ${LDFLAGS_kde}"
5453 dnl      AC_CHECK_LIB(kio,main,[
5454 dnl        VLC_ADD_LIBS([kde],[-lkio])
5455 dnl      ])
5456 dnl      LDFLAGS="${LDFLAGS_save}"
5457 dnl      VLC_ADD_CXXFLAGS([kde],[-I/usr/include/kde -I/usr/include/qt3 -I/usr/include/qt])
5458 dnl      VLC_ADD_CXXFLAGS([kde],[-I${KDEDIR}/include -I${QTDIR}/include])
5459 dnl      if test -x ${QTDIR}/bin/moc
5460 dnl      then
5461 dnl        MOC=${QTDIR}/bin/moc
5462 dnl      else
5463 dnl        MOC=moc
5464 dnl      fi
5465 dnl    fi])
5466
5467 dnl
5468 dnl  Opie QT embedded module
5469 dnl
5470 AC_ARG_ENABLE(opie,
5471   [  --enable-opie           Qt embedded interface support (default disabled)],
5472   [if test "${enable_opie}" = "yes"; then
5473      AC_ARG_WITH(qte,
5474      [    --with-qte=PATH       Qt Embedded headers and libraries])
5475      if test "${with_qte}" != "no" -a -n "${with_qte}"
5476      then
5477        VLC_ADD_LIBS([qte],[-L${with_qte}/lib `echo -L${with_qte}/lib | sed 's,opt/QtPalmtop,usr,'` -ljpeg -lqte])
5478        VLC_ADD_CXXFLAGS([qte],[-I${with_qte}/include `echo -I${with_qte}/include | sed 's,opt/QtPalmtop,usr,'` -DQT_QWS_IPAQ -DQWS -fno-exceptions -fno-rtti])
5479      else
5480        VLC_ADD_LIBS([qte],[-L${QTDIR}/lib `echo -L${QTDIR}/lib | sed 's,opt/QtPalmtop,usr,'`])
5481        VLC_ADD_CXXFLAGS([qte],[-I${QTDIR}/include `echo -I${QTDIR}/include | sed 's,opt/QtPalmtop,usr,'`])
5482      fi
5483      CPPFLAGS="${CPPFLAGS_save} ${CXXFLAGS_qte}"
5484      AC_CHECK_HEADERS(qt.h jpeglib.h, ,[
5485        AC_MSG_ERROR([echo "Cannot find QT Embedded development headers."])
5486      ] )
5487      CPPFLAGS="${CPPFLAGS_save}"
5488
5489      VLC_ADD_PLUGIN([opie])
5490      NEED_QTE_MAIN=yes
5491      VLC_ADD_LIBS([opie],[-lqpe ${LDFLAGS_qte}])
5492      VLC_ADD_CXXFLAGS([opie],[${CXXFLAGS_qte}])
5493      if test "${with_qte}" != "no" -a -n "${with_qte}"
5494      then
5495        MOC=${with_qte}/bin/moc
5496      else
5497        MOC=${QTDIR}/bin/moc
5498      fi
5499    fi])
5500
5501 dnl
5502 dnl  MacOS X video output/gui modules
5503 dnl
5504 AC_ARG_ENABLE(macosx,
5505   [  --enable-macosx         MacOS X support (default enabled on MacOS X)])
5506 if test "x${enable_macosx}" = "xyes"
5507 then
5508 #  VLC_ADD_LDFLAGS([access_eyetv],                     [-Wl,-framework,Foundation])
5509   VLC_ADD_LDFLAGS([macosx minimal_macosx opengllayer],[-Wl,-framework,Cocoa])
5510   VLC_ADD_LDFLAGS([macosx minimal_macosx opengllayer],[-Wl,-framework,OpenGL])
5511   VLC_ADD_LDFLAGS([macosx minimal_macosx],            [-Wl,-framework,Carbon])
5512   VLC_ADD_LDFLAGS([macosx minimal_macosx],            [-Wl,-framework,AGL])
5513   VLC_ADD_LDFLAGS([macosx],                           [-Wl,-framework,IOKit])
5514   VLC_ADD_LDFLAGS([macosx],                           [-Wl,-framework,QuickTime])
5515   VLC_ADD_LDFLAGS([macosx],                           [-Wl,-framework,QTKit])
5516   VLC_ADD_LDFLAGS([macosx],                           [-Wl,-framework,WebKit])
5517   VLC_ADD_LDFLAGS([opengllayer],                      [-Wl,-framework,QuartzCore])
5518   VLC_ADD_OBJCFLAGS([macosx minimal_macosx opengllayer growl], [-fobjc-exceptions] )
5519
5520 #  VLC_ADD_PLUGIN([access_eyetv])
5521   VLC_ADD_PLUGIN([macosx])
5522   VLC_ADD_PLUGIN([minimal_macosx])
5523  
5524   ORIGCFLAGS=$CFLAGS
5525   CFLAGS="$CFLAGS -x objective-c"
5526   AC_CHECK_HEADER(QuartzCore/CALayer.h, [VLC_ADD_BUILTINS([opengllayer])])
5527   CFLAGS=$ORIGCFLAGS
5528 fi
5529
5530 dnl
5531 dnl  QNX RTOS module
5532 dnl
5533 AC_ARG_ENABLE(qnx,
5534   [  --enable-qnx            QNX RTOS support (default enabled on QNX RTOS)])
5535     if test "${enable_qnx}" != "no"
5536     then
5537       AC_CHECK_HEADERS(Ph.h, [
5538         VLC_ADD_PLUGIN([qnx])
5539         VLC_ADD_LIBS([qnx],[-lasound -lph])
5540       ])
5541     fi
5542
5543 dnl
5544 dnl  ncurses module
5545 dnl
5546 AC_ARG_ENABLE(ncurses,
5547   [  --disable-ncurses       ncurses interface support (default enabled)],
5548   [if test "${enable_ncurses}" != "no"; then
5549     AC_CHECK_HEADER(ncurses.h,
5550       [AC_CHECK_LIB(ncursesw, mvprintw,
5551         [VLC_ADD_PLUGIN([ncurses])
5552         VLC_ADD_LIBS([ncurses],[-lncursesw])
5553         ALIASES="${ALIASES} nvlc"
5554         AC_DEFINE([HAVE_NCURSESW], 1, [Define to 1 if you have libncursesw.])
5555         AC_CHECK_LIB(ncursesw, tgetent, [],
5556           AC_CHECK_LIB(tinfow, tgetent, [VLC_ADD_LIBS([ncurses],[-ltinfow])],
5557             [AC_CHECK_LIB(tinfo, tgetent, [VLC_ADD_LIBS([ncurses],[-ltinfo])],
5558               [AS_IF([test "x${enable_ncurses}" != "x"],
5559                 [AC_MSG_ERROR([tgetent not found in ncursesw tinfow tinfo]
5560                )])])
5561             ]
5562           )
5563         )
5564         ],
5565         [AC_CHECK_LIB( ncurses, mvprintw,
5566           [VLC_ADD_PLUGIN([ncurses])
5567           ALIASES="${ALIASES} nvlc"
5568           VLC_ADD_LIBS([ncurses],[-lncurses])
5569           AC_CHECK_LIB(ncurses, tgetent, [],
5570             [AC_CHECK_LIB(tinfo, tgetent, [VLC_ADD_LIBS([ncurses],[-ltinfo])],
5571               [AS_IF([test "x${enable_ncurses}" != "x"],
5572                 [AC_MSG_ERROR([tgetent not found in ncurses tinfo])])]
5573             )]
5574           )],
5575           [AS_IF([test "x${enable_ncurses}" != "x"], [
5576             AC_MSG_ERROR([libncurses not found])])]
5577         )]
5578       )]
5579     )
5580   fi]
5581 )
5582
5583 dnl
5584 dnl  XOSD plugin
5585 dnl
5586 AC_ARG_ENABLE(xosd,
5587   [  --enable-xosd           xosd interface support (default disabled)])
5588 if test "${enable_xosd}" = "yes"
5589 then
5590   AC_CHECK_HEADER(xosd.h, have_xosd="true", have_xosd="false")
5591   AC_CHECK_LIB(xosd,xosd_set_offset,
5592       AC_DEFINE(HAVE_XOSD_VERSION_1, 1, Define if <xosd.h> is 1.0.x),
5593     AC_CHECK_LIB(xosd,xosd_set_horizontal_offset,
5594         AC_DEFINE(HAVE_XOSD_VERSION_2, 1, Define if <xosd.h> is 2.0.x),
5595       AC_TRY_COMPILE([#include <xosd.h>],
5596          [xosd_init("foo","bar",12,XOSD_top,2,12,42);],,
5597           AC_DEFINE(HAVE_XOSD_VERSION_0, 1, Define if <xosd.h> is pre-1.0.0))))
5598   if test "${have_xosd}" = "true"
5599   then
5600     VLC_ADD_PLUGIN([xosd])
5601     VLC_ADD_LIBS([xosd],[-lxosd])
5602   fi
5603 fi
5604
5605 dnl
5606 dnl Framebuffer (overlay) plugin
5607 dnl
5608 AC_ARG_ENABLE(fbosd,
5609   [  --enable-fbosd          fbosd interface support (default disabled)])
5610 if test "${enable_fbosd}" = "yes"
5611 then
5612   AC_CHECK_HEADERS(linux/fb.h, [
5613     VLC_ADD_PLUGIN([fbosd])
5614  ])
5615 fi
5616
5617 dnl
5618 dnl Visualisation plugin
5619 dnl
5620 AC_ARG_ENABLE(visual,
5621   [  --enable-visual         visualisation plugin (default enabled)])
5622 if test "${enable_visual}" != "no"
5623 then
5624     VLC_ADD_PLUGIN([visual])
5625 fi
5626
5627 dnl
5628 dnl OpenGL visualisation plugin
5629 dnl
5630 AC_ARG_ENABLE(galaktos,
5631   [  --enable-galaktos       OpenGL visualisation plugin (default disabled)])
5632 if test "${enable_galaktos}" = "yes"
5633 then
5634   AC_CHECK_HEADERS(GL/gl.h GL/glu.h, [
5635     VLC_ADD_PLUGIN([galaktos])
5636     if test "${SYS}" != "mingw32"; then
5637       VLC_ADD_LIBS([galaktos],[${X_LIBS} -lGL -lGLU])
5638     else
5639       VLC_ADD_LIBS([galaktos],[-lopengl32])
5640     fi
5641   ])
5642 fi
5643
5644 dnl
5645 dnl  goom visualization plugin
5646 dnl
5647 AC_ARG_ENABLE(goom,
5648 [  --enable-goom           goom visualisation plugin (default disabled)])
5649 if test "${enable_goom}" = "yes"
5650 then
5651   AC_ARG_WITH(goom-tree,
5652     [    --with-goom-tree=PATH goom tree for static linking (required)])
5653
5654   dnl
5655   dnl test for --with-goom-tree
5656   dnl
5657   if test "${with_goom_tree}" != "no" -a -n "${with_goom_tree}"; then
5658     AC_MSG_CHECKING(for libgoom2.a in ${with_goom_tree})
5659     real_goom_tree="`cd ${with_goom_tree} 2>/dev/null && pwd`"
5660     if test -z "${real_goom_tree}"; then
5661       dnl  The given directory can't be found
5662       AC_MSG_RESULT(no)
5663       AC_MSG_ERROR([cannot cd to ${with_goom_tree}])
5664     fi
5665     if test -f "${real_goom_tree}/src/.libs/libgoom2.a"; then
5666       AC_MSG_RESULT(${real_goom_tree}/src/.libs/libgoom2.a)
5667       VLC_ADD_PLUGIN([goom])
5668       VLC_ADD_LIBS([goom],[-L${real_goom_tree}/src/.libs -lgoom2])
5669       VLC_ADD_CPPFLAGS([goom],[-I${real_goom_tree}/src -DUSE_GOOM_TREE])
5670     else
5671       dnl  The given libgoom2 wasn't built, try to look for the old goom
5672       AC_MSG_RESULT(no)
5673       AC_MSG_CHECKING(for libgoom.a in ${with_goom_tree})
5674       if test -f "${real_goom_tree}/libgoom.a"; then
5675         AC_MSG_RESULT(${real_goom_tree}/libgoom.a)
5676         VLC_ADD_PLUGIN([goom])
5677         VLC_ADD_LIBS([goom],[-L${real_goom_tree} -lgoom])
5678         VLC_ADD_CPPFLAGS([goom],[-I${real_goom_tree} -DUSE_GOOM_TREE -DOLD_GOOM])
5679       else
5680         dnl  The given libgoom wasn't built
5681         AC_MSG_RESULT(no)
5682         AC_MSG_ERROR([cannot find ${real_goom_tree}/src/.libs/libgoom2.a, make sure you compiled goom in ${with_goom_tree}])
5683       fi
5684     fi
5685   else
5686     AC_CHECK_HEADERS(goom/goom.h, [
5687       LDFLAGS="${LDFLAGS_save} ${LIBS_goom}"
5688       AC_CHECK_LIB(goom2, goom_init, [
5689         VLC_ADD_PLUGIN([goom])
5690         VLC_ADD_LIBS([goom],[-lgoom2])
5691       ],[
5692         AC_MSG_ERROR([Could not find goom on your system: you may get it from http://www.ios-software.com/.])
5693       ])
5694       LDFLAGS="${LDFLAGS_save}"
5695     ])
5696   fi
5697 fi
5698
5699 dnl
5700 dnl  AtmoLight (homebrew AmbiLight)
5701 dnl
5702 if test "${SYS}" = "mingw32" -o "${SYS}" = "linux"; then
5703    AC_ARG_ENABLE(atmo,
5704 [  --disable-atmo       AtmoLight (homebrew philips ambilight) (default enabled)])
5705    if test "${enable_atmo}" != "no"; then
5706       AC_LANG_PUSH(C++)
5707       VLC_ADD_PLUGIN([atmo])
5708       AC_LANG_POP(C++)
5709    fi
5710 fi
5711
5712 dnl
5713 dnl  Bonjour services discovery
5714 dnl
5715 AC_ARG_ENABLE(bonjour,
5716   [  --enable-bonjour        Bonjour services discovery (default enabled)])
5717 if test "${enable_bonjour}" != "no"
5718 then
5719   PKG_CHECK_MODULES(BONJOUR, avahi-client >= 0.3,
5720     [PKG_CHECK_MODULES(BONJOUR, avahi-client >= 0.6,
5721        [AC_DEFINE(HAVE_AVAHI_06, 1, [Define if you have avahi-client 0.6 or greater])],)
5722       AC_DEFINE(HAVE_AVAHI_CLIENT, 1, [Define if you have the avahi-client library])
5723       VLC_ADD_LIBS([bonjour access_output_http],[$BONJOUR_LIBS])
5724       VLC_ADD_CFLAGS([bonjour access_output_http],[$BONJOUR_CFLAGS])
5725       VLC_ADD_PLUGIN([bonjour]) ],
5726     [AC_MSG_WARN(avahi-client library not found)])
5727 fi
5728
5729 dnl
5730 dnl  Lirc plugin
5731 dnl
5732 AC_ARG_ENABLE(lirc,
5733   [  --enable-lirc           lirc support (default disabled)])
5734 if test "${enable_lirc}" = "yes"
5735 then
5736   AC_CHECK_HEADER(lirc/lirc_client.h, AC_CHECK_LIB(lirc_client, lirc_init, have_lirc="true", have_lirc="false"),have_lirc="false")
5737   if test "${have_lirc}" = "true"
5738   then
5739     VLC_ADD_PLUGIN([lirc])
5740     VLC_ADD_LIBS([lirc],[-llirc_client])
5741   fi
5742 fi
5743
5744
5745 AC_ARG_WITH(,[Misc options:])
5746
5747 dnl
5748 dnl libgcrypt
5749 dnl
5750 AC_ARG_ENABLE(libgcrypt,
5751   [  --enable-libgcrypt      libgcrypts support (default enabled)])
5752
5753 GCRYPT_PATH="${PATH}"
5754 AC_ARG_WITH(libgcrypt-config-path,
5755 [    --with-libgcrypt-config-path=PATH libgcrypt-config path (default search in \$PATH)],
5756    [ if test "${with_libgcrypt_config_path}" != "no"
5757      then
5758        GCRYPT_PATH="${with_libgcrypt_config_path}:${PATH}"
5759      fi ])
5760
5761 if test "${enable_libgcrypt}" != "no"
5762 then
5763   dnl Workaround for cross-compiling since AM_PATH_LIBGRYPT doesn't dectect
5764   dnl it and looks for libgcrypt headers in the wrong place.
5765   if test "${host_cpu}" = "${build_cpu}"
5766   then
5767     AM_PATH_LIBGCRYPT([1:1.1.94], [have_libgcrypt="yes"], [have_libgcrypt="no"])
5768   else
5769     AC_CHECK_HEADERS(gcrypt.h,have_libgcrypt="yes",have_libgcrypt="no")
5770   fi
5771 fi
5772 AM_CONDITIONAL([HAVE_LIBGCRYPT], [test "${have_libgcrypt}" = "yes"])
5773 AS_IF([test "${have_libgcrypt}" = "yes"],[
5774         # look for libgcrypt-config
5775         AC_PATH_PROG(GCRYPT_CONFIG, "libgcrypt-config", no, ${GCRYPT_PATH})
5776         GCRYPT_CFLAGS=`${GCRYPT_CONFIG} --cflags`
5777         GCRYPT_LIBS=`${GCRYPT_CONFIG} --libs`
5778 ])
5779
5780 dnl
5781 dnl TLS/SSL
5782 dnl
5783 AC_ARG_ENABLE(gnutls,
5784   [  --enable-gnutls         gnutls TLS/SSL support (default enabled)])
5785
5786 AS_IF([test "${enable_gnutls}" != "no"], [
5787   PKG_CHECK_MODULES(GNUTLS, [gnutls >= 1.3.3], [
5788     VLC_ADD_PLUGIN([gnutls])
5789     VLC_ADD_CFLAGS([gnutls], [$GNUTLS_CFLAGS])
5790     AS_IF([test "${SYS}" = "mingw32"], [
5791       dnl pkg-config --libs gnutls omits these
5792       VLC_ADD_LIBS([gnutls], [-lz])
5793       VLC_ADD_LIBS([gnutls], [${LTLIBINTL}])
5794     ])
5795     AS_IF([test "${have_libgcrypt}" = "yes"],[
5796       VLC_ADD_LIBS([gnutls], ${GCRYPT_LIBS})
5797       VLC_ADD_CFLAGS([gnutls], ${GCRYPT_CFLAGS})
5798     ], [-lgpg-error])
5799     VLC_ADD_LIBS([gnutls], [$GNUTLS_LIBS])
5800   ], [
5801     AS_IF([test "${enable_gnutls}" = "yes"], [
5802       AC_MSG_ERROR([gnutls not present or too old (version 1.2.9 required)])
5803     ])
5804   ])
5805 ])
5806
5807 dnl
5808 dnl update checking system
5809 dnl
5810 AC_ARG_ENABLE(update-check,
5811   [  --enable-update-check   update checking system (default disabled)])
5812 if test "${enable_update_check}" = "yes"
5813 then
5814   if test "${have_libgcrypt}" != "yes"
5815   then
5816     AC_MSG_ERROR([libgcrypt is required for update checking system])
5817   fi
5818   VLC_ADD_LIBS([libvlc], ${GCRYPT_LIBS})
5819   VLC_ADD_CFLAGS([libvlc], ${GCRYPT_CFLAGS})
5820   AC_DEFINE([UPDATE_CHECK], 1, [Define if you want to use the VLC update mechanism])
5821 fi
5822
5823 dnl
5824 dnl  Endianness check, AC_C_BIGENDIAN doesn't work if we are cross-compiling
5825 dnl
5826 dnl  We give the user the opportunity to specify
5827 dnl  --with-words=big or --with-words=little ; otherwise, try to guess
5828 dnl
5829 AC_ARG_WITH(words,
5830   [    --with-words=endianness set endianness (big or little)])
5831   case "${with_words}" in
5832     big)
5833       ac_cv_c_bigendian=yes
5834       ;;
5835     little)
5836       ac_cv_c_bigendian=no
5837       ;;
5838     *)
5839       dnl  Try to guess endianness by matching patterns on a compiled
5840       dnl  binary, by looking for an ASCII or EBCDIC string
5841       AC_CACHE_CHECK([whether the byte order is big-endian],
5842         [ac_cv_c_bigendian],
5843         [ac_cv_c_bigendian="unknown"
5844         [cat >conftest.c <<EOF
5845         short am[] = { 0x4249, 0x4765, 0x6e44, 0x6961, 0x6e53, 0x7953, 0 };
5846         short ai[] = { 0x694c, 0x5454, 0x656c, 0x6e45, 0x6944, 0x6e61, 0 };
5847         void _a(void) { char*s = (char*)am; s = (char *)ai; }
5848         short ei[] = { 0x89D3, 0xe3e3, 0x8593, 0x95c5, 0x89c4, 0x9581, 0 };
5849         short em[] = { 0xc2c9, 0xc785, 0x95c4, 0x8981, 0x95e2, 0xa8e2, 0 };
5850         void _e(void) { char*s = (char*)em; s = (char*)ei; }
5851         int main(void) { _a(); _e(); return 0; }
5852 EOF
5853         ]
5854         if test -f conftest.c
5855         then
5856           if ${CC-cc} -c conftest.c -o conftest.o >>config.log 2>&1 \
5857               && test -f conftest.o
5858           then
5859             if test "`strings conftest.o | grep BIGenDianSyS`"
5860             then
5861               ac_cv_c_bigendian="yes"
5862             fi
5863             if test "`strings conftest.o | grep LiTTleEnDian`"
5864             then
5865               ac_cv_c_bigendian="no"
5866             fi
5867           fi
5868         fi
5869       ])
5870       if test "${ac_cv_c_bigendian}" = "unknown"
5871       then
5872         AC_MSG_ERROR([Could not guess endianness, please use --with-words])
5873       fi
5874       ;;
5875   esac
5876 dnl  Now we know what to use for endianness, just put it in the header
5877 if test "${ac_cv_c_bigendian}" = "yes"
5878 then
5879   AC_DEFINE(WORDS_BIGENDIAN, 1, big endian system)
5880 fi
5881
5882 dnl
5883 dnl  DLL loader copied from MPlayer copied from somewhere else (WINE ?)
5884 dnl
5885 loader=false
5886 AC_ARG_ENABLE(loader,
5887   [  --enable-loader         build DLL loader for ELF i386 platforms (default disabled)])
5888 AM_CONDITIONAL(LOADER, [test "${enable_loader}" = "yes"])
5889 AS_IF([test "${enable_loader}" = "yes"],
5890   [ VLC_ADD_PLUGIN([dmo])
5891     VLC_ADD_CPPFLAGS([dmo],[-I../../../@top_srcdir@/libs/loader])
5892     VLC_ADD_LIBS([dmo],[../../../libs/loader/libloader.la -lpthread])
5893     VLC_ADD_CPPFLAGS([quicktime],[-I../../@top_srcdir@/libs/loader])
5894     VLC_ADD_LIBS([quicktime],[../../libs/loader/libloader.la -lpthread])
5895     VLC_ADD_CPPFLAGS([realaudio],[-I../../@top_srcdir@/libs/loader -DLOADER])
5896     VLC_ADD_LIBS([realaudio],[../../libs/loader/libloader.la])
5897   ])
5898
5899 AC_ARG_WITH(,[Components:])
5900
5901 dnl
5902 dnl  the VLC binary
5903 dnl
5904 AC_ARG_ENABLE(vlc,
5905   [  --enable-vlc            build the VLC media player (default enabled)])
5906 AM_CONDITIONAL(BUILD_VLC, [test "${enable_vlc}" != "no"])
5907
5908 dnl
5909 dnl  Microsoft ActiveX support
5910 dnl
5911 activex=false
5912 AC_ARG_ENABLE(activex,
5913   [  --enable-activex        build a vlc-based ActiveX control (default enabled on Win32)])
5914 AC_ARG_WITH(wine-sdk-path,
5915   [    --with-wine-sdk-path=PATH path to wine sdk])
5916 if test "${enable_activex}" != "no"
5917 then
5918   if test "${SYS}" = "mingw32" -o "${SYS}" = "cygwin"
5919   then
5920     AC_CHECK_PROGS(MIDL, [midl], no)
5921     if test "${with_wine_sdk_path}" != ""
5922     then
5923        WINE_SDK_PATH=${with_wine_sdk_path}
5924        AC_PATH_PROG(WIDL, widl, no, [$WINE_SDK_PATH/bin:$WINE_SDK_PATH/tools/widl])
5925     else
5926        WIDL=no
5927     fi
5928     AC_LANG_PUSH(C++)
5929     AC_CHECK_HEADERS(ole2.h, 
5930       [AC_CHECK_HEADERS(olectl.h,
5931         [ VLC_ADD_CPPFLAGS([activex],[-DUNICODE -D_UNICODE -D_MIDL_USE_GUIDDEF_])
5932           VLC_ADD_CXXFLAGS([activex],[-fno-exceptions])
5933           VLC_ADD_LIBS([activex],[-lole32 -loleaut32 -luuid -lshlwapi]) 
5934           AC_CHECK_HEADERS(objsafe.h,
5935             VLC_ADD_CXXFLAGS([activex],[-DHAVE_OBJSAFE_HEADER]),,
5936             [
5937              #if HAVE_OLE2_H
5938              #   include <ole2.h>
5939              #endif
5940              ]
5941           )
5942           activex=:
5943           PLUGINS_BINDINGS="${PLUGINS_BINDINGS} activex"
5944         ],
5945         [ AC_MSG_ERROR([required OLE headers are missing from your system]) ]
5946       )],
5947       [ AC_MSG_ERROR([required OLE headers are missing from your system]) ]
5948     )
5949     AC_LANG_POP(C++)
5950   fi
5951 fi
5952 AC_ARG_VAR(MIDL, [Microsoft IDL compiler (Win32 platform only)])
5953 AM_CONDITIONAL(HAS_MIDL_COMPILER, test "${MIDL}" != "no")
5954 AC_ARG_VAR(WIDL, [Wine IDL compiler (requires Wine SDK)])
5955 AM_CONDITIONAL(HAS_WIDL_COMPILER, test "${WIDL}" != "no")
5956 AM_CONDITIONAL(BUILD_ACTIVEX,${activex})
5957
5958 dnl
5959 dnl  Mozilla plugin
5960 dnl
5961 mozilla=false
5962 AC_ARG_ENABLE(mozilla,
5963   [  --enable-mozilla        build a vlc-based Firefox/Mozilla plugin (default disabled)])
5964 AC_ARG_WITH(mozilla-sdk-path,
5965   [    --with-mozilla-sdk-path=PATH path to mozilla sdk])
5966 AC_LANG_PUSH(C++)
5967 if test "${enable_mozilla}" = "yes" 
5968 then
5969   dnl currently vlc plugin only needs headers, no xpcom support apis are actually used
5970   need_xpcom_libs=false
5971
5972   if test "${with_mozilla_sdk_path}" = "" -o "${with_mozilla_sdk_path}" = "no"
5973   then
5974     dnl New firefox-1.5 SDK api
5975     PKG_CHECK_MODULES([FIREFOX], [firefox-plugin],
5976       [
5977         PKG_CHECK_MODULES([FIREFOX_XPCOM], [firefox-xpcom],
5978           [],
5979           [
5980             PKG_CHECK_MODULES([MOZILLA_NSPR], [mozilla-nspr],
5981               [],
5982               [
5983                 PKG_CHECK_MODULES([NSPR], [nspr],
5984                   [],
5985                   [
5986                     AC_MSG_ERROR([Please install the nspr development tools.])
5987                   ]
5988                 )
5989               ]
5990             )
5991           ])
5992         CPPFLAGS="${CPPFLAGS_save} ${FIREFOX_CFLAGS} ${FIREFOX_XPCOM_CFLAGS} ${MOZILLA_NSPR_CFLAGS} ${NSPR_CFLAGS} ${MOZILLA_CPPFLAGS}"
5993         MOZILLA_REQUIRED_HEADERS=1
5994         AC_CHECK_HEADERS(mozilla-config.h,,MOZILLA_REQUIRED_HEADERS=0)
5995         AC_CHECK_HEADERS(npapi.h,,MOZILLA_REQUIRED_HEADERS=0)
5996         AC_CHECK_HEADERS(npruntime.h,,MOZILLA_REQUIRED_HEADERS=0,
5997           [#if HAVE_NPAPI_H
5998            # include <npapi.h>
5999            #endif
6000           ])
6001         if test "${MOZILLA_REQUIRED_HEADERS}" = "0"; then
6002             AC_MSG_ERROR([Please install the Firefox development tools; mozilla-config.h, plugin/npapi.h and plugin/npruntime.h were not found.])
6003         fi
6004         MOZILLA_REQUIRED_HEADERS=
6005         mozilla=:
6006         firefox_include=`pkg-config --variable=includedir firefox-plugin`
6007         if test -f "${firefox_include}/mozilla-config.h" -a -f "${firefox_include}/mozilla-config32.h"; then
6008             MOZILLA_CONFIG_H="${firefox_include}/mozilla-config32.h"
6009         elif test -f "${firefox_include}/mozilla-config.h" -a -f "${firefox_include}/mozilla-config64.h"; then
6010             MOZILLA_CONFIG_H="${firefox_include}/mozilla-config64.h"
6011         else
6012             MOZILLA_CONFIG_H="${firefox_include}/mozilla-config.h"
6013         fi
6014         if grep '^#define MOZ_X11 1' ${MOZILLA_CONFIG_H} 2>&1 > /dev/null ; then
6015             AC_CHECK_HEADERS(X11/xpm.h,,AC_MSG_ERROR([Please install libXpm-devel library for required X11/xpm.h]))
6016             VLC_ADD_LIBS([mozilla], [${X_LIBS} ${X_PRE_LIBS} -lX11 -lXt -lXpm])
6017         fi
6018         VLC_ADD_CPPFLAGS([mozilla],[${CPPFLAGS}])
6019         VLC_ADD_LDFLAGS([mozilla],[${MOZILLA_LDFLAGS}])
6020         VLC_ADD_LIBS([mozilla],[${FIREFOX_LIBS} ${MOZILLA_NSPR_LIBS} ${NSPR_LIBS}])
6021         VLC_ADD_PLUGIN([mozilla])
6022         MOZILLA_CONFIG=
6023         CPPFLAGS="${CPPFLAGS_save}"
6024       ],
6025       [
6026         AC_PATH_PROG(MOZILLA_CONFIG, mozilla-config, no)
6027         if test "${MOZILLA_CONFIG}" = "no"
6028         then
6029           AC_PATH_PROG(SEAMONKEY_CONFIG, seamonkey-config, no)
6030           if test "${SEAMONKEY_CONFIG}" = "no"
6031           then
6032             AC_PATH_PROG(XULRUNNER_CONFIG, xulrunner-config, no)
6033             if test "${XULRUNNER_CONFIG}" = "no"
6034             then
6035               AC_MSG_ERROR([Please install the Mozilla development tools, mozilla-config was not found.])
6036             else
6037               have_xul=true
6038               MOZILLA_CONFIG="${XULRUNNER_CONFIG}"
6039             fi
6040           else
6041             MOZILLA_CONFIG="${SEAMONKEY_CONFIG}"
6042           fi
6043         fi
6044       ]
6045     )
6046     if test ! -z "${MOZILLA_CONFIG}"
6047     then
6048       if ${MOZILLA_CONFIG} --defines | grep -q 'MOZ_X11=1'; then
6049         LDFLAGS="${LDFLAGS_save} ${X_LIBS} ${X_PRE_LIBS}"
6050         AC_CHECK_LIB(Xt,XtStrings,
6051          [
6052            VLC_ADD_CPPFLAGS([mozilla],[${X_CFLAGS}])
6053            VLC_ADD_LIBS([mozilla],[${X_LIBS} ${X_PRE_LIBS} -lXt -lX11 -lSM -lICE -lXpm])
6054          ],
6055          [],
6056          [[${X_LIBS} ${X_PRE_LIBS} -lX11 -lSM -lICE -lXpm]
6057         ])
6058         AC_CHECK_HEADERS(X11/xpm.h,,AC_MSG_ERROR([Please install libXpm-devel library for required X11/xpm.h]))
6059         LDFLAGS="${LDFLAGS_save}"
6060       fi
6061
6062       mozilla=:
6063       PLUGINS_BINDINGS="${PLUGINS_BINDINGS} mozilla"
6064       dnl Workaround for http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=150490
6065       VLC_ADD_CPPFLAGS([mozilla],[[`${MOZILLA_CONFIG} --cflags plugin xpcom java | sed 's,-I\([^ ]*\)/mozilla/\([^ ]*\),-I\1/\2 -I\1/mozilla/\2,g' | xargs`]])
6066       if ${need_xpcom_libs}; then
6067          VLC_ADD_LIBS([mozilla],[`${MOZILLA_CONFIG} --libs plugin xpcom`])
6068       else
6069          VLC_ADD_LIBS([mozilla],[`${MOZILLA_CONFIG} --libs plugin`])
6070       fi
6071       CPPFLAGS="${CPPFLAGS_save} ${CPPFLAGS_mozilla}"
6072       MOZILLA_REQUIRED_HEADERS=1
6073       AC_CHECK_HEADERS(mozilla-config.h,,MOZILLA_REQUIRED_HEADERS=0)
6074       AC_CHECK_HEADERS(npapi.h,,MOZILLA_REQUIRED_HEADERS=0)
6075       AC_CHECK_HEADERS(npruntime.h,,MOZILLA_REQUIRED_HEADERS=0,
6076         [#if HAVE_NPAPI_H
6077          # include <npapi.h>
6078          #endif
6079         ])
6080       if test "${MOZILLA_REQUIRED_HEADERS}" = "0"
6081       then
6082         AC_MSG_ERROR([Please install the Mozilla development tools, required headers were not found.])
6083       fi
6084       MOZILLA_REQUIRED_HEADERS=
6085       CPPFLAGS="${CPPFLAGS_save}"
6086       MOZILLA_SDK_PATH="`${MOZILLA_CONFIG} --prefix`"
6087     fi
6088     dnl End of moz_sdk = ""
6089   else
6090     dnl special case for mingw32
6091     if test "${SYS}" = "mingw32"
6092     then
6093       AC_CHECK_TOOL(CYGPATH, cygpath, "")
6094       dnl latest gecko sdk does not have an xpcom directory
6095       if test -d "${with_mozilla_sdk_path}/xpcom"; then
6096           mozilla_sdk_xpcom="/xpcom"
6097       fi
6098     fi
6099
6100     real_mozilla_sdk="`cd ${with_mozilla_sdk_path} 2>/dev/null && pwd`"
6101     CPPFLAGS="${CPPFLAGS_save} -I${real_mozilla_sdk} -I${real_mozilla_sdk}/include"
6102     MOZILLA_REQUIRED_HEADERS=1
6103     AC_CHECK_HEADERS(mozilla-config.h,,MOZILLA_REQUIRED_HEADERS=0)
6104     AC_CHECK_HEADERS(npapi.h,,MOZILLA_REQUIRED_HEADERS=0)
6105     AC_CHECK_HEADERS(npruntime.h,,MOZILLA_REQUIRED_HEADERS=0,
6106         [#if HAVE_NPAPI_H
6107           #include <npapi.h>
6108           #endif
6109         ])
6110     if test "${MOZILLA_REQUIRED_HEADERS}" = "0"
6111     then
6112         AC_MSG_ERROR([Please install the Mozilla development tools, required headers were not found.])
6113     fi
6114     MOZILLA_REQUIRED_HEADERS=
6115     mozilla=:
6116     PLUGINS_BINDINGS="${PLUGINS_BINDINGS} mozilla"
6117     VLC_ADD_CPPFLAGS([mozilla],[-DXPCOM_GLUE -DHAVE_CPP_MODERN_SPECIALIZE_TEMPLATE_SYNTAX -I${real_mozilla_sdk} -I${real_mozilla_sdk}/include -I${real_mozilla_sdk}/embedstring/include -I${real_mozilla_sdk}/xpcom/include -I${real_mozilla_sdk}/nspr/include -I${real_mozilla_sdk}/string/include -I${real_mozilla_sdk}/plugin/include -I${real_mozilla_sdk}/java/include])
6118     if ${need_xpcom_libs}; then
6119        VLC_ADD_LIBS([mozilla],[-L${real_mozilla_sdk}/embedstring/bin -L${real_mozilla_sdk}/xpcom/bin -L${real_mozilla_sdk}/nspr/bin -L${real_mozilla_sdk}/string/bin -L${real_mozilla_sdk}/lib -lnspr4 -lplds4 -lplc4 -lxpcomglue])
6120       if test "${SYS}" = "mingw32"; then
6121         dnl latest gecko sdk does not have embedstring
6122         if test -d "${real_mozilla_sdk}/embedstring/bin"
6123         then
6124           VLC_ADD_LIBS([mozilla],[-lembedstring])
6125         fi
6126       fi
6127     fi
6128     MOZILLA_SDK_PATH="${real_mozilla_sdk}"
6129
6130     if test -n "${CYGPATH}"; then
6131       real_mozilla_sdk="`${CYGPATH} -w ${real_mozilla_sdk}`"
6132     fi
6133     CPPFLAGS="${CPPFLAGS_save}"
6134   fi
6135 fi
6136 AC_LANG_POP(C++)
6137 AM_CONDITIONAL(BUILD_MOZILLA,${mozilla})
6138
6139 dnl Tests for Osso and Xsp
6140 if test "${enable_x11}" != "no" &&
6141   (test "${SYS}" != "mingw32" -a "${SYS}" != "mingwce" ||
6142    test "${enable_x11}" = "yes"); then
6143    AC_CHECK_LIB(osso, osso_display_blanking_pause,[
6144       PKG_CHECK_MODULES(GLIB2, glib-2.0, [                                                
6145           VLC_ADD_CPPFLAGS([x11],[-DHAVE_OSSO ${DBUS_CFLAGS} ${GLIB2_CFLAGS}])
6146           VLC_ADD_LIBS([x11],[-losso])
6147       ])
6148    ])
6149    AC_CHECK_LIB(Xsp, XSPSetPixelDoubling,[
6150       VLC_ADD_CPPFLAGS([x11],[-DHAVE_XSP])
6151       VLC_ADD_LIBS([x11],[-lXsp])
6152    ])
6153 fi
6154
6155 dnl
6156 dnl  Mediacontrol Python bindings
6157 dnl
6158 AC_ARG_ENABLE(python-bindings,
6159   [  --enable-python-bindings Enable Python bindings (default disabled)])
6160
6161 if test "${enable_python_bindings}" = "yes"; then
6162   AC_PATH_PROG(PYTHON_CONFIG, python-config, no)
6163   CFLAGS="${CFLAGS_save} `${PYTHON_CONFIG} --cflags`"
6164   AC_CHECK_HEADER([Python.h],
6165     PLUGINS_BINDINGS="${PLUGINS_BINDINGS} python",
6166     AC_MSG_ERROR([You have to install python-dev to build the bindings]),
6167     []
6168   )
6169   CFLAGS="${CFLAGS_save}"
6170 fi
6171 AM_CONDITIONAL(BUILD_PYTHON, [test "${enable_python_bindings}" = "yes"])
6172
6173 dnl
6174 dnl  Java bindings
6175 dnl
6176 AC_ARG_ENABLE(java-bindings,
6177   [  --enable-java-bindings  Enable Java bindings (default disabled)])
6178 if test "${enable_java_bindings}" = "yes"
6179 then
6180         echo ""
6181         echo "****** WARNING **** WARNING ***** WARNING *************"
6182         echo "*** To compile the java bindings go to the "
6183         echo "*** bindings/java folder and run mvn install. "
6184         echo "*** You need maven2 installed. "
6185         echo "*** This configuration will continue, so you will be "
6186         echo "*** able to compile VideoLAN as usual. "
6187         echo "*******************************************************"
6188         echo ""
6189 fi
6190
6191 dnl
6192 dnl  test plugins
6193 dnl
6194 AC_ARG_ENABLE(testsuite,
6195   [  --enable-testsuite      build test modules (default disabled)])
6196 if test "${enable_testsuite}" = "yes"
6197 then
6198   TESTS="test1 test2 test3 test4"
6199
6200   dnl  we define those so that bootstrap sets the right linker
6201   VLC_ADD_CXXFLAGS([test2],[])
6202   VLC_ADD_OBJCFLAGS([test3],[])
6203   dnl  this one is needed until automake knows what to do
6204   VLC_ADD_LIBS([test3],[-lobjc])
6205
6206   VLC_ADD_PLUGIN([test1])
6207   VLC_ADD_PLUGIN([test2])
6208   VLC_ADD_PLUGIN([test3])
6209   VLC_ADD_PLUGIN([test4])
6210 fi
6211
6212 dnl
6213 dnl Microsoft Layer for Unicode for WIN9x/ME
6214 dnl
6215 if test "${SYS}" = "mingw32" -o "${SYS}" = "cygwin"
6216 then
6217     AC_CHECK_LIB(unicows, LoadUnicowsSymbol, [
6218         VLC_ADD_LDFLAGS([vlc libvlc],[-Wl,--exclude-libs,libunicows.a -lunicows])
6219     ])
6220 fi
6221
6222 dnl
6223 dnl  gtk_main plugin
6224 dnl
6225 if test "${NEED_GTK_MAIN}" != "no"
6226 then
6227     VLC_ADD_PLUGIN([gtk_main])
6228     VLC_ADD_CFLAGS([gtk_main],[${CFLAGS_gtk}])
6229     VLC_ADD_LDFLAGS([gtk_main],[${LDFLAGS_gtk}])
6230 fi
6231
6232 if test "${NEED_GNOME_MAIN}" != "no"
6233 then
6234     VLC_ADD_PLUGIN([gnome_main])
6235     VLC_ADD_CFLAGS([gnome_main],[${CFLAGS_gtk} ${CFLAGS_gnome}])
6236     VLC_ADD_LDFLAGS([gnome_main],[${LDFLAGS_gtk} ${LDFLAGS_gnome}])
6237 fi
6238
6239 if test "${NEED_GTK2_MAIN}" != "no"
6240 then
6241     VLC_ADD_PLUGIN([gtk2_main])
6242     VLC_ADD_CFLAGS([gtk2],[-DNEED_GTK2_MAIN])
6243     VLC_ADD_CFLAGS([pda],[-DNEED_GTK2_MAIN])
6244     VLC_ADD_CFLAGS([gtk2_main],[${CFLAGS_gtk2} ${CFLAGS_pda}])
6245     VLC_ADD_LDFLAGS([gtk2_main],[${LDFLAGS_gtk2} ${LDFLAGS_pda}])
6246 fi
6247
6248 if test "${NEED_GNOME2_MAIN}" != "no"
6249 then
6250     VLC_ADD_PLUGIN([gnome2_main])
6251     VLC_ADD_CFLAGS([gnome2_main],[${CFLAGS_gtk2} ${CFLAGS_gnome2}])
6252     VLC_ADD_LDFLAGS([gnome2_main],[${LDFLAGS_gtk2} ${LDFLAGS_gnome2}])
6253 fi
6254
6255 dnl
6256 dnl  qte_main plugin
6257 dnl
6258 if test "${NEED_QTE_MAIN}" != "no"
6259 then
6260     VLC_ADD_PLUGIN([qte_main])
6261     VLC_ADD_CXXFLAGS([opie qte qt_video],[-DNEED_QTE_MAIN])
6262     VLC_ADD_CXXFLAGS([qte_main],[${CXXFLAGS_qte} ${CXXFLAGS_qt_video}])
6263     VLC_ADD_LDFLAGS([qte_main],[${LDFLAGS_qte} ${LDFLAGS_qt_video}])
6264 fi
6265
6266
6267 dnl
6268 dnl  Plugin and builtin checks
6269 dnl
6270 plugin_support=yes
6271
6272 dnl Automagically disable plugins if there is no system support for
6273 dnl dynamically loadable files (.so, .dll, .dylib).
6274 dnl don't forget vlc-win32 still can load .dll as plugins
6275 AS_IF([test "${ac_cv_have_plugins}" = "no"], [
6276   AC_MSG_WARN([*** No plugin support! Building statically! ***])
6277   plugin_support=no
6278 ])
6279
6280 AS_IF([test "${enable_shared}" = "no"], [
6281   plugin_support=no
6282 ])
6283
6284 AS_IF([test "${plugin_support}" != "no"], [
6285   AC_DEFINE(HAVE_DYNAMIC_PLUGINS, 1, Define if we have support for dynamic plugins)
6286 ])
6287 AM_CONDITIONAL(HAVE_PLUGINS, [test "${plugin_support}" != "no"])
6288
6289 dnl Temporary(?) hack for plugins/builtins transition
6290 dnl VLC_ADD_PLUGIN([${BUILTINS}])
6291 dnl BUILTINS=""
6292
6293 dnl
6294 dnl Pic and shared libvlc stuff
6295 dnl
6296 AS_IF([test "${SYS}" = "mingw32"], [
6297   FILE_LIBVLC_DLL="!define LIBVLC_DLL libvlc.dll"
6298   FILE_LIBVLC_CONTROL_DLL="!define LIBVLC_CONTROL_DLL libvlc-control.dll"
6299 ])
6300
6301 dnl
6302 dnl  Stuff used by the program
6303 dnl
6304 AC_DEFINE_UNQUOTED(VERSION_MESSAGE, "${VERSION} ${CODENAME}", [Simple version string])
6305 AC_DEFINE_UNQUOTED(COPYRIGHT_MESSAGE, "VLC media player - version ${VERSION} ${CODENAME} - (c) ${COPYRIGHT_YEARS} the VideoLAN team", [Copyright string])
6306 AC_DEFINE_UNQUOTED(COPYRIGHT_YEARS, "${COPYRIGHT_YEARS}", [The copyright years])
6307 AC_DEFINE_UNQUOTED(CONFIGURE_LINE, "${CONFIGURE_LINE}", [The ./configure command line])
6308 AC_DEFINE_UNQUOTED(PACKAGE_VERSION_MAJOR,"${VERSION_MAJOR}", [version major number])
6309 AC_DEFINE_UNQUOTED(PACKAGE_VERSION_MINOR,"${VERSION_MINOR}", [version minor number])
6310 AC_DEFINE_UNQUOTED(PACKAGE_VERSION_REVISION,"${VERSION_REVISION}", [version minor number])
6311 AC_DEFINE_UNQUOTED(PACKAGE_VERSION_EXTRA,"${VERSION_EXTRA}", [version minor number])
6312 AC_SUBST(VERSION_MAJOR)
6313 AC_SUBST(VERSION_MINOR)
6314 AC_SUBST(VERSION_REVISION)
6315 AC_DEFINE_UNQUOTED(VLC_COMPILE_BY, "`whoami`", [user who ran configure]) 
6316 if test "${build_os}" = "cygwin"
6317 then
6318     AC_DEFINE_UNQUOTED(VLC_COMPILE_HOST, "`hostname`", [host which ran configure])
6319 else
6320     AC_DEFINE_UNQUOTED(VLC_COMPILE_HOST, "`hostname -s`", [host which ran configure])
6321 fi
6322 AC_DEFINE_UNQUOTED(VLC_COMPILE_DOMAIN, "`dnsdomainname 2>/dev/null || domainname 2>/dev/null || echo unknown`", [domain of the host which ran configure]) 
6323 AC_DEFINE_UNQUOTED(VLC_COMPILER, "`$CC -v 2>&1 | tail -n 1`", [compiler]) 
6324
6325 dnl
6326 dnl  Handle substvars that use $(top_srcdir)
6327 dnl
6328 VLC_CONFIG="top_builddir=\"\$(top_builddir)\" \$(top_builddir)/vlc-config"
6329 AC_SUBST(VLC_CONFIG)
6330 CPPFLAGS_save="${CPPFLAGS_save} -I\$(top_srcdir)/include -I\$(top_builddir)/include"
6331
6332 dnl
6333 dnl  Restore *FLAGS
6334 dnl
6335 VLC_RESTORE_FLAGS
6336
6337 dnl
6338 dnl  Create the vlc-config script
6339 dnl
6340 LDFLAGS_libvlc="${LDFLAGS_libvlc} ${LDFLAGS_builtin}"
6341
6342 dnl
6343 dnl  Configuration is finished
6344 dnl
6345 AC_SUBST(SYS)
6346 AC_SUBST(ARCH)
6347 AC_SUBST(ALIASES)
6348 AC_SUBST(ASM)
6349 AC_SUBST(MOC)
6350 AC_SUBST(RCC)
6351 AC_SUBST(UIC)
6352 AC_SUBST(WINDRES)
6353 AC_SUBST(MOZILLA_SDK_PATH)
6354 AC_SUBST(WINE_SDK_PATH)
6355 AC_SUBST(LIBEXT)
6356 AC_SUBST(AM_CPPFLAGS)
6357 AC_SUBST(MACOSX_DEPLOYMENT_TARGET)
6358 AC_SUBST(FILE_LIBVLC_DLL)
6359 AC_SUBST(FILE_LIBVLC_CONTROL_DLL)
6360
6361 dnl Create vlc-config.in
6362 VLC_OUTPUT_VLC_CONFIG_IN
6363
6364 AC_CONFIG_FILES([
6365   extras/package/win32/vlc.win32.nsi
6366   Makefile
6367   projects/activex/Makefile
6368   projects/activex/axvlc.inf
6369   bindings/python/Makefile
6370   doc/Makefile
6371   extras/package/ipkg/Makefile
6372   libs/loader/Makefile
6373   libs/srtp/Makefile
6374   modules/Makefile
6375   projects/mozilla/Makefile
6376   m4/Makefile
6377   po/Makefile.in
6378   share/Makefile
6379   src/Makefile
6380   test/Makefile
6381 ])
6382
6383 AC_CONFIG_FILES([
6384   modules/access/Makefile
6385   modules/access/bda/Makefile
6386   modules/access/dshow/Makefile
6387   modules/access/dvb/Makefile
6388   modules/access/mms/Makefile
6389   modules/access/cdda/Makefile
6390   modules/access/rtsp/Makefile
6391   modules/access/rtmp/Makefile
6392   modules/access/v4l2/Makefile
6393   modules/access/vcd/Makefile
6394   modules/access/vcdx/Makefile
6395   modules/access/screen/Makefile
6396   modules/access_filter/Makefile
6397   modules/access_output/Makefile
6398   modules/audio_filter/Makefile
6399   modules/audio_filter/channel_mixer/Makefile
6400   modules/audio_filter/converter/Makefile
6401   modules/audio_filter/resampler/Makefile
6402   modules/audio_filter/spatializer/Makefile
6403   modules/audio_mixer/Makefile
6404   modules/audio_output/Makefile
6405   modules/codec/Makefile
6406   modules/codec/cmml/Makefile
6407   modules/codec/dmo/Makefile
6408   modules/codec/ffmpeg/Makefile
6409   modules/codec/subtitles/Makefile
6410   modules/codec/spudec/Makefile
6411   modules/codec/xvmc/Makefile
6412   modules/control/Makefile
6413   modules/control/http/Makefile
6414   modules/demux/Makefile
6415   modules/demux/asf/Makefile
6416   modules/demux/avi/Makefile
6417   modules/demux/mp4/Makefile
6418   modules/demux/mpeg/Makefile
6419   modules/demux/playlist/Makefile
6420   modules/gui/Makefile
6421   modules/gui/beos/Makefile
6422   modules/gui/pda/Makefile
6423   modules/gui/macosx/Makefile
6424   modules/gui/minimal_macosx/Makefile
6425   modules/gui/qnx/Makefile
6426   modules/gui/qt4/Makefile
6427   modules/gui/skins2/Makefile
6428   modules/gui/wxwidgets/Makefile
6429   modules/gui/wince/Makefile
6430   modules/meta_engine/Makefile
6431   modules/misc/Makefile
6432   modules/misc/dummy/Makefile
6433   modules/misc/lua/Makefile
6434   modules/misc/memcpy/Makefile
6435   modules/misc/notify/Makefile
6436   modules/misc/testsuite/Makefile
6437   modules/misc/playlist/Makefile
6438   modules/misc/osd/Makefile
6439   modules/misc/xml/Makefile
6440   modules/misc/probe/Makefile
6441   modules/mux/Makefile
6442   modules/mux/mpeg/Makefile
6443   modules/mux/rtp/Makefile
6444   modules/packetizer/Makefile
6445   modules/services_discovery/Makefile
6446   modules/stream_out/Makefile
6447   modules/stream_out/transrate/Makefile
6448   modules/video_chroma/Makefile
6449   modules/video_filter/Makefile
6450   modules/video_filter/atmo/Makefile
6451   modules/video_filter/dynamicoverlay/Makefile
6452   modules/video_output/Makefile
6453   modules/video_output/msw/Makefile
6454   modules/video_output/qte/Makefile
6455   modules/video_output/x11/Makefile
6456   modules/visualization/Makefile
6457   modules/visualization/visual/Makefile
6458   modules/visualization/galaktos/Makefile
6459 ])
6460
6461 dnl Generate makefiles
6462 AC_OUTPUT
6463
6464 # Cannot use AC_CONFIG_FILES([vlc-config]) as is automatically built,
6465 # not provided with the source
6466 ${SHELL} ./config.status --file=vlc-config
6467 chmod 0755 vlc-config
6468
6469 dnl echo "Enabled builtin modules :"
6470 dnl for a in `./vlc-config --target builtin` ; do echo $a; done | sed -e 's,modules\/\(.*\)\/lib\(.*\)\.a,\2 (\1),'
6471
6472 dnl echo "Enabled plugin modules :"
6473 dnl for a in `./vlc-config --target plugin` ; do echo $a; done | sed -e 's,modules\/\(.*\)\/lib\(.*\)_plugin,\2 (\1),'
6474
6475 dnl Shortcut to nice compile message
6476 rm -f compile
6477 echo '#! /bin/sh' >compile
6478 echo rm -f .error\$\$ >>compile
6479 echo ERROR=0 >>compile
6480 echo export PATH=$PATH LANG=C >>compile
6481 echo "(make \$@ 2>&1 || touch .error\$\$)| \\" >>compile
6482 echo '`sed -ne "s/^top_srcdir *= *//p" < Makefile`/extras/buildsystem/make.pl' >>compile
6483 echo test -f .error\$\$ \&\& ERROR=1 >>compile
6484 echo rm -f .error\$\$ >>compile
6485 echo exit \$ERROR >>compile
6486 chmod a+x compile
6487
6488 printf "
6489 libvlc configuration
6490 --------------------
6491 version               : ${VERSION}
6492 system                : ${SYS}
6493 architecture          : ${ARCH}
6494 build flavour         : "
6495 test "${enable_debug}" = "yes" && printf "debug "
6496 test "${enable_cprof}" = "yes" && printf "cprof "
6497 test "${enable_gprof}" = "yes" && printf "gprof "
6498 test "${enable_optimizations}" = "yes" && printf "optim "
6499 test "${enable_release}" = "yes" && printf "release " || printf "devel "
6500 echo ""
6501 if test "${enable_vlc}" != "no"; then
6502 echo "vlc aliases           :${ALIASES}"
6503 else
6504 echo "build vlc executable  : no"
6505 fi
6506 echo "plugins/bindings      :${PLUGINS_BINDINGS}
6507
6508 You can check which modules have been enabled 
6509 with \`./vlc-config --list plugin'.
6510 You can tune the compiler flags in vlc-config.
6511 To build vlc and its plugins, type \`./compile' or \`make'.
6512 "
6513 if test "x$ac_ld_does_not_support_text_reloc" = "xyes"; then
6514    echo ""
6515    echo "Warning: Due to a bug in ld, mmx/sse support has been"
6516    echo "         turned off."
6517    echo "         FFmpeg will be REALLY slow."
6518    echo "         VLC WILL NOT PERFORM AS EXPECTED."
6519    echo ""
6520 fi