]> git.sesse.net Git - vlc/blob - configure.ac
Always build win32text resp quartztext on Win32 resp Darwin
[vlc] / configure.ac
1 dnl Autoconf settings for vlc
2
3 AC_COPYRIGHT([Copyright 2002-2010 the VideoLAN team])
4
5 AC_INIT(vlc, 1.1.0-git)
6 VERSION_MAJOR="1"
7 VERSION_MINOR="1"
8 VERSION_REVISION="0"
9 VERSION_EXTRA="-git"
10 PKGDIR="vlc"
11 AC_SUBST(PKGDIR)
12
13 CONFIGURE_LINE="`echo "$0 $ac_configure_args" | sed -e 's/\\\/\\\\\\\/g'`"
14 CODENAME="The Luggage"
15 COPYRIGHT_YEARS="1996-2010"
16
17 AC_PREREQ(2.59c)
18 AC_CONFIG_SRCDIR(src/libvlc.c)
19 AC_CONFIG_AUX_DIR(autotools)
20 AC_CONFIG_MACRO_DIR(m4)
21 AC_CONFIG_LIBOBJ_DIR(compat)
22 AC_CANONICAL_BUILD
23 AC_CANONICAL_HOST
24
25 AM_INIT_AUTOMAKE(tar-ustar)
26 AM_CONFIG_HEADER(config.h)
27
28 # Disable with "./configure --disable-silent-rules" or "make V=1"
29 m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])])
30
31
32 dnl Too many people are not aware of maintainer mode:
33 dnl If you want to use it, you definitely know what you are doing, so
34 dnl you can specify "--disable-maintainer-mode". But if you want the default
35 dnl automake behavior, you've likely never heard of maintainer mode, so we
36 dnl can't expect you to enable it manually.
37
38 AS_IF([test "x${enable_maintainer_mode}" != "xno"],
39     [enable_maintainer_mode="yes"])
40 AM_MAINTAINER_MODE
41
42 dnl
43 dnl Directories
44 dnl
45 dnl vlcincludedir="\${includedir}/\${PKGDIR}"
46 dnl AC_SUBST(vlcincludedir)
47 vlcdatadir="\${datadir}/\${PKGDIR}"
48 AC_SUBST(vlcdatadir)
49 vlclibdir="\${libdir}/\${PKGDIR}"
50 AC_SUBST(vlclibdir)
51
52 dnl
53 dnl  Deprecated options
54 dnl  to notify packagers that stuff has changed
55 dnl
56 AC_ARG_ENABLE(python-bindings,
57   [  --enable-python-bindings Always fails for historical reasons)],,
58   [enable_python_bindings="no"])
59 AS_IF([test "${enable_python_bindings}" != "no"], [
60   AC_MSG_ERROR([Python bindings are now built from a separate source package])
61 ])
62
63 AC_ARG_ENABLE(java-bindings,
64   [  --enable-java-bindings  Always fails for historical reasons],,
65   [enable_java_bindings="no"])
66 AS_IF([test "${enable_java_bindings}" != "no"], [
67   AC_MSG_ERROR([Java bindings are now built from a separate source package])
68 ])
69
70 dnl
71 dnl  Save *FLAGS
72 dnl
73 VLC_SAVE_FLAGS
74
75 dnl
76 dnl Check for tools
77 dnl
78 AC_PROG_CC_C99
79 AC_USE_SYSTEM_EXTENSIONS
80 AC_DEFINE([_FORTIFY_SOURCE], 2, [Define to '2' to get glibc warnings.])
81
82 AM_PROG_CC_C_O
83 AC_PROG_CXX
84 AC_PROG_CPP
85 AC_PROG_OBJC
86 _AM_DEPENDENCIES([OBJC])
87 AC_PROG_EGREP
88 AC_PROG_MAKE_SET
89 AC_PROG_INSTALL
90 AM_PROG_AS
91
92 dnl Find the right ranlib, even when cross-compiling
93 AC_CHECK_TOOL(RANLIB, ranlib, :)
94 AC_CHECK_TOOL(STRIP, strip, :)
95 AC_CHECK_TOOL(AR, ar, :)
96 AC_CHECK_TOOL(LD, ld, :)
97 AC_CHECK_TOOL(DLLTOOL, dlltool, :)
98
99 dnl Check for compiler properties
100 AC_C_CONST
101 AC_C_INLINE
102 AC_C_RESTRICT
103
104 dnl Allow binary package maintainer to pass a custom string to avoid
105 dnl cache problem
106 AC_ARG_WITH(binary-version,
107         AS_HELP_STRING([--with-binary-version=STRING],
108              [To avoid plugins cache problem between binary version]),[],[])
109 AS_IF([test -n "${with_binary_version}"],[
110       AC_DEFINE_UNQUOTED([DISTRO_VERSION],["${with_binary_version}"],
111                          [Binary specific version])
112       ])
113
114
115 dnl
116 dnl  Check for the contrib directory
117 dnl
118 AC_ARG_WITH(contrib,
119     [  --without-contrib       do not use the libraries in CONTRIB_DIR],[],[])
120   AS_IF([test "${with_contrib}" != "no"],[
121     AC_ARG_VAR([CONTRIB_DIR], [directory containing pre-built contrib, overriding extras/contrib])
122     if test -z "$CONTRIB_DIR"
123     then
124       topdir="`dirname $0`"
125       if test "`echo \"$topdir\" | cut -c 1`" != "/"; then
126          topdir="`pwd`/$topdir"
127       fi
128       CONTRIB_DIR=${topdir}/extras/contrib/hosts/${host}
129       if ! test -d "$CONTRIB_DIR"
130       then
131         gccmachine=`$CC -dumpmachine`
132         CONTRIB_DIR=${topdir}/extras/contrib/hosts/${gccmachine}
133       fi
134     fi
135     AC_MSG_CHECKING([for libs in ${CONTRIB_DIR}])
136   AS_IF([test -d ${CONTRIB_DIR}/lib],[
137     AC_MSG_RESULT([yes])
138     AC_SUBST(CONTRIB_DIR)
139     export PATH=${CONTRIB_DIR}/bin:$PATH
140     CPPFLAGS="${CPPFLAGS} -I${CONTRIB_DIR}/include"
141     CPPFLAGS_save="${CPPFLAGS_save} -I${CONTRIB_DIR}/include"
142     CFLAGS="${CFLAGS} -I${CONTRIB_DIR}/include"
143     CFLAGS_save="${CFLAGS_save} -I${CONTRIB_DIR}/include"
144     CXXFLAGS="${CXXFLAGS} -I${CONTRIB_DIR}/include"
145     CXXFLAGS_save="${CXXFLAGS_save} -I${CONTRIB_DIR}/include"
146     OBJCFLAGS="${OBJCFLAGS} -I${CONTRIB_DIR}/include"
147     OBJCFLAGS_save="${OBJCFLAGS_save} -I${CONTRIB_DIR}/include"
148     if test $build = $host -o "$PKG_CONFIG_LIBDIR"; then
149         export PKG_CONFIG_PATH=${CONTRIB_DIR}/lib/pkgconfig:$PKG_CONFIG_PATH
150     else
151         export PKG_CONFIG_LIBDIR=${CONTRIB_DIR}/lib/pkgconfig
152     fi
153     LDFLAGS="${LDFLAGS} -L${CONTRIB_DIR}/lib"
154     LDFLAGS_save="${LDFLAGS_save} -L${CONTRIB_DIR}/lib"
155
156     if test -z $with_mozilla_sdk_path; then
157        with_mozilla_sdk_path=${CONTRIB_DIR}/gecko-sdk
158     fi
159     if test -z $with_cyberlink_tree; then
160        with_cyberlink_tree=${CONTRIB_DIR}/src/clinkcc
161     fi
162
163     if test ".`uname -s`" = ".Darwin"; then
164       export LD_LIBRARY_PATH=${CONTRIB_DIR}/lib:$LD_LIBRARY_PATH
165       export DYLD_LIBRARY_PATH=${CONTRIB_DIR}/lib:$DYLD_LIBRARY_PATH
166     elif test ".`uname -s`" = ".BeOS"; then
167       export LIBRARY_PATH=${CONTRIB_DIR}/lib:$LIBRARY_PATH
168       export BELIBRARIES=${CONTRIB_DIR}/lib:$BELIBRARIES
169     fi
170     ],[
171        AC_MSG_RESULT([no])
172     ])
173 ])
174 dnl
175 dnl  Set default values
176 dnl
177 LDFLAGS_vlc="${LDFLAGS}"
178
179 dnl
180 dnl  Check the operating system
181 dnl
182 case "${host_os}" in
183   "")
184     SYS=unknown
185     ;;
186   linux*)
187     SYS=linux
188     ;;
189   bsdi*)
190     SYS=bsdi
191     CFLAGS_save="${CFLAGS_save} -pthread"; CFLAGS="${CFLAGS_save}"
192     VLC_ADD_LIBS([dvd dvdcss vcd cdda vcdx],[-ldvd])
193     ;;
194   *bsd*)
195     SYS="${host_os}"
196     CFLAGS_save="${CFLAGS_save} -pthread"; CFLAGS="${CFLAGS_save}"
197     case "${host_os}" in
198       freebsd*)
199         CPPFLAGS_save="${CPPFLAGS_save} -I/usr/local/include"
200         CPPFLAGS="${CPPFLAGS_save}"
201         LDFLAGS_save="${LDFLAGS_save} -L/usr/local/lib"
202         LDFLAGS="${LDFLAGS_save}"
203         ;;
204       openbsd*)
205         CPPFLAGS_save="${CPPFLAGS_save} -I/usr/local/include -I/usr/X11R6/include"
206         CPPFLAGS="${CPPFLAGS_save}"
207         LDFLAGS_save="${LDFLAGS_save} -L/usr/local/lib -L/usr/X11R6/lib/"
208         LDFLAGS="${LDFLAGS_save}"
209         ;;
210     esac
211     ;;
212   darwin*)
213     SYS=darwin
214     CFLAGS_save="${CFLAGS_save} -D_INTL_REDIRECT_MACROS"; CFLAGS="${CFLAGS_save}"
215     CXXFLAGS_save="${CXXFLAGS_save} -D_INTL_REDIRECT_MACROS"; CXXFLAGS="${CXXFLAGS_save}"
216     OBJCFLAGS_save="${OBJCFLAGS_save} -D_INTL_REDIRECT_MACROS -std=gnu99"; OBJCFLAGS="${OBJCFLAGS_save}"
217     LDFLAGS_save="${LDFLAGS_save} -Wl,-headerpad_max_install_names"; LDFLAGS="${LDFLAGS_save}"
218     VLC_ADD_LDFLAGS([mp4], [-Wl,-framework,IOKit,-framework,CoreFoundation])
219     VLC_ADD_LDFLAGS([mkv mp4], [-Wl,-framework,IOKit,-framework,CoreFoundation])
220     VLC_ADD_LDFLAGS([vlc],[-Wl,-undefined,dynamic_lookup])
221     VLC_ADD_LDFLAGS([libvlc],[-Wl,-undefined,dynamic_lookup])
222     VLC_ADD_LDFLAGS([avcodec avformat access_avio swscale postproc i420_rgb_mmx x264],[-Wl,-read_only_relocs,suppress])
223     VLC_ADD_CFLAGS([motion],[-fconstant-cfstrings])
224     VLC_ADD_LDFLAGS([libvlccore],[-Wl,-framework,CoreFoundation])
225     VLC_ADD_LDFLAGS([motion],[-Wl,-framework,IOKit,-framework,CoreFoundation])
226     AC_ARG_ENABLE(macosx-defaults,
227       AS_HELP_STRING([--enable-macosx-defaults],[Build the default configuration on Mac OS X (default enabled)]))
228     if test "x${enable_macosx_defaults}" != "xno"
229     then
230         echo ""
231         echo "Building with Mac OS X defaults:"
232         with_macosx_version_min="10.5"
233         echo "  Assuming --with-macosx-version-min=10.5"
234         with_macosx_sdk="/Developer/SDKs/MacOSX${with_macosx_version_min}.sdk"
235         echo "  Assuming --with-macosx-sdk=/Developer/SDKs/MacOSX${with_macosx_version_min}.sdk"
236         build_dir=`pwd`
237         echo "  Assuming --prefix=${build_dir}/vlc_install_dir"
238         ac_default_prefix="${build_dir}/vlc_install_dir"
239         enable_macosx="yes"
240         echo "  Assuming --enable-macosx"
241         enable_faad="yes"
242         echo "  Assuming --enable-faad"
243         enable_flac="yes"
244         echo "  Assuming --enable-flac"
245         enable_theora="yes"
246         echo "  Assuming --enable-theora"
247         enable_shout="yes"
248         echo "  Assuming --enable-shout"
249         enable_vcdx="yes"
250         echo "  Assuming --enable-vcdx"
251         enable_caca="yes"
252         echo "  Assuming --enable-caca"
253         enable_ncurses="yes"
254         echo "  Assuming --enable-ncurses"
255         enable_twolame="yes"
256         echo "  Assuming --enable-twolame"
257         enable_realrtsp="yes"
258         echo "  Assuming --enable-realrtsp"
259         enable_libass="yes"
260         echo "  Assuming --enable-libass"
261         enable_asademux="yes"
262         echo "  Assuming --enable-asademux"
263
264         enable_skins2="no"
265         echo "  Assuming --disable-skins2"
266         enable_xcb="no"
267         echo "  Assuming --disable-xcb"
268     fi
269     dnl
270     dnl  Check for Mac OS X SDK settings
271     dnl
272     AC_ARG_WITH(macosx-sdk,
273        [  --with-macosx-sdk=DIR   compile using the SDK in DIR])
274     if test "${with_macosx_sdk}" != "" ; then
275         CPP="${CPP} -isysroot ${with_macosx_sdk}"
276         CC="${CC} -isysroot ${with_macosx_sdk}"
277         CXX="${CXX} -isysroot ${with_macosx_sdk}"
278         OBJC="${OBJC} -isysroot ${with_macosx_sdk}"
279         LD="${LD} -syslibroot ${with_macosx_sdk}"
280     fi
281     AC_ARG_WITH(macosx-version-min,
282        [  --with-macosx-version-min=VERSION compile for MacOSX VERSION and above])
283     if test "${with_macosx_version_min}" != "" ; then
284         CPP="${CPP} -mmacosx-version-min=${with_macosx_version_min}"
285         CC="${CC} -mmacosx-version-min=${with_macosx_version_min}"
286         CXX="${CXX} -mmacosx-version-min=${with_macosx_version_min}"
287         OBJC="${OBJC} -mmacosx-version-min=${with_macosx_version_min}"
288         LD="${LD} -macosx_version_min=${with_macosx_version_min}"
289         CFLAGS_save="${CFLAGS_save} -DMACOSX_DEPLOYMENT_TARGET=${with_macosx_version_min}"; CFLAGS="${CFLAGS_save}"
290         CXXFLAGS_save="${CXXFLAGS_save} -DMACOSX_DEPLOYMENT_TARGET=${with_macosx_version_min}"; CXXFLAGS="${CXXFLAGS_save}"
291         OBJCFLAGS_save="${OBJCFLAGS_save} -DMACOSX_DEPLOYMENT_TARGET=${with_macosx_version_min}"; OBJCFLAGS="${OBJCFLAGS_save}"
292         MACOSX_DEPLOYMENT_TARGET=${with_macosx_version_min}
293         export MACOSX_DEPLOYMENT_TARGET
294     fi
295     ;;
296   darwin9*)
297     if (test ".`uname -p`" = ".i386"); then
298         dnl Due to a ld(64) bug in 10.5 we cannot use our mmx code
299         dnl without hacking it a lot, we disable mmx and sse.
300         dnl (that bug is about ld being unable to handle
301         dnl text relocation)
302         save_cflags="$CFLAGS"
303         CFLAGS="$CFLAGS -dynamiclib -single_module -read_only_relocs suppress"
304         AC_TRY_LINK(
305             [int a;], [asm("movq _a,%mm0\n");],
306             ac_ld_does_not_support_text_reloc=no,
307             ac_ld_does_not_support_text_reloc=yes)
308         CFLAGS="$save_cflags"
309
310         if test "x$ac_ld_does_not_support_text_reloc" = "xyes"; then
311             enable_mmx="no"
312             echo "  Assuming --disable-mmx (due to a bug in ld)"
313             enable_sse="no"
314             echo "  Assuming --disable-sse (due to a bug in ld)"
315         fi
316     fi
317     ;;
318   *mingw32* | *cygwin* | *wince* | *mingwce*)
319     AC_CHECK_TOOL(WINDRES, windres, :)
320     AC_CHECK_TOOL(OBJCOPY, objcopy, :)
321
322     case "${host_os}" in
323       *wince* | *mingwce* | *mingw32ce*)
324         SYS=mingwce
325         dnl Sadly CeGCC still needs non-wince macros
326         AC_DEFINE([_WIN32_WINNT], 0x0501, [Define to '0x0500' for Windows 2000 APIs.])
327         ;;
328       *mingw32*)
329         SYS=mingw32
330         AC_DEFINE([_WIN32_WINNT], 0x0500, [Define to '0x0500' for Windows 2000 APIs.])
331         ;;
332       *cygwin*)
333         dnl Check if we are using the mno-cygwin mode in which case we are
334         dnl actually dealing with a mingw32 compiler.
335         AC_DEFINE([_WIN32_WINNT], 0x0500, [Define to '0x0500' for Windows 2000 APIs.])
336         AC_EGREP_CPP(yes,
337             [#ifdef WIN32
338              yes
339              #endif],
340             SYS=mingw32, AC_MSG_ERROR([VLC requires -mno-cygwin]))
341         ;;
342     esac
343
344     if test "${SYS}" = "mingw32"; then
345         # add ws2_32 for closesocket, select, recv
346         VLC_ADD_LIBS([libvlccore],[-lws2_32 -lnetapi32 -lwinmm])
347         VLC_ADD_LDFLAGS([vlc],[-mwindows])
348         VLC_ADD_LIBS([activex mozilla],[-lgdi32])
349         VLC_ADD_LIBS([cdda vcdx sdl_image aout_sdl vout_sdl],[-lwinmm])
350         VLC_ADD_LIBS([access_http access_mms access_udp access_tcp access_ftp access_rtmp access_output_udp access_output_shout access_output_rtmp sap slp oldhttp stream_out_standard stream_out_rtp stream_out_raop vod_rtsp access_realrtsp rtp oldtelnet oldrc netsync gnutls growl_udp flac ts audioscrobbler lua remoteosd zvbi audiobargraph_a],[-lws2_32])
351         VLC_ADD_LIBS([filesystem], [-lshlwapi])
352         dnl
353         dnl DEP and ASLR options
354         dnl
355         AC_ARG_ENABLE(peflags,
356           [  --enable-peflags        peflags use (default enabled on Windows)])
357         if test "${enable_peflags}" != "no"
358         then
359           AC_CHECK_TOOL(PEFLAGS, peflags, :)
360         fi
361     fi
362     if test "${SYS}" = "mingwce"; then
363         # add ws2 for closesocket, select, recv
364         VLC_ADD_LIBS([libvlccore access_http access_mms access_udp access_tcp access_ftp access_rtmp access_output_udp access_output_rtmp sap oldhttp netsync audioscrobbler growl rtp stream_out_rtp remoteosd ts oldtelnet audiobargraph_a],[-lws2])
365         VLC_ADD_LIBS([libvlccore],[-lmmtimer])
366    fi
367     ;;
368   *nto*)
369     SYS=nto
370     ;;
371   solaris*)
372     SYS=solaris
373     ;;
374   hpux*)
375     SYS=hpux
376     ;;
377   beos)
378     SYS=beos
379     CFLAGS_save="${CFLAGS_save} -Wno-multichar"; CFLAGS="${CFLAGS_save}"
380     CXXFLAGS_save="${CXXFLAGS_save} -Wno-multichar"; CXXFLAGS="${CXXFLAGS_save}"
381     VLC_ADD_CXXFLAGS([beos],[])
382     VLC_ADD_LIBS([vlc libvlccore logger],[-lbe])
383     VLC_ADD_LIBS([dvdnav dvdread],[-ldl])
384     VLC_ADD_LIBS([filesystem],[-lpoll])
385     LDFLAGS_save="${LDFLAGS_save} -lintl"; LDFLAGS="${LDFLAGS_save}"
386     dnl Check for BONE
387     if test -f /boot/beos/system/lib/libbind.so; then
388         VLC_ADD_LIBS([filesystem access_ftp access_mms access_output_udp oldtelnet netsync sap libvlccore growl_udp],[-lbind -lsocket])
389     else
390         VLC_ADD_LIBS([filesystem access_ftp access_mms access_output_udp oldtelnet netsync sap libvlccore growl_udp],[-lnet])
391     fi
392     ;;
393   *)
394     SYS="${host_os}"
395     ;;
396 esac
397 AM_CONDITIONAL(HAVE_BEOS, test "${SYS}" = "beos")
398 AM_CONDITIONAL(HAVE_DARWIN, test "${SYS}" = "darwin")
399 AM_CONDITIONAL(HAVE_LINUX, [test "${SYS}" = "linux"])
400 AM_CONDITIONAL(HAVE_WIN32, test "${SYS}" = "mingw32")
401 AM_CONDITIONAL(HAVE_WINCE, test "${SYS}" = "mingwce")
402 AM_CONDITIONAL(USE_PEFLAGS, [test "${enable_peflags}" = "yes"])
403
404 dnl
405 dnl Sadly autoconf doesn't think about testing foo.exe when ask to test
406 dnl for program foo on win32
407
408 case "${build_os}" in
409     cygwin|msys)
410         ac_executable_extensions=".exe"
411     ;;
412     *)
413     ;;
414 esac
415
416 dnl
417 dnl  Libtool
418 dnl  It's very bad, but our former custom system was worst
419 dnl  -- Courmisch
420 dnl
421
422 dnl override platform specific check for dependent libraries
423 dnl otherwise libtool linking of shared libraries will
424 dnl fail on anything other than pass_all.
425 AC_CACHE_VAL(lt_cv_deplibs_check_method,
426     [lt_cv_deplibs_check_method=pass_all])
427
428 AC_DISABLE_STATIC
429 dnl AC_DISABLE_FAST_INSTALL
430 AC_LIBTOOL_DLOPEN
431 AC_LIBTOOL_WIN32_DLL
432 m4_undefine([AC_PROG_F77])
433 m4_defun([AC_PROG_F77],[])
434 AC_PROG_LIBTOOL
435
436 m4_undefine([AC_DEPLIBS_CHECK_METHOD])
437 m4_defun([AC_DEPLIBS_CHECK_METHOD],[])
438
439 lt_cv_deplibs_check_method=pass_all
440
441 AS_IF([test "${enable_shared}" = "no"], [
442   AC_MSG_ERROR([VLC is based on plugins. Shared libraries cannot be disabled.])
443 ])
444
445 dnl
446 dnl Gettext stuff
447 dnl
448 AM_GNU_GETTEXT_VERSION([0.17])
449 AM_GNU_GETTEXT([external])
450 VLC_ADD_LIBS([libvlccore vlc], [${LTLIBINTL}])
451
452 dnl
453 dnl Iconv stuff
454 dnl
455 AM_ICONV
456 VLC_ADD_CFLAGS([libvlccore],[${INCICONV}])
457 VLC_ADD_LIBS([libvlccore],[${LTLIBICONV}])
458
459 dnl Check for broken versions of mingw-runtime compatability library
460 AS_IF([test "${SYS}" = "mingw32" -o "${SYS}" = "mingwce"], [
461     AC_MSG_CHECKING(for broken mingw-runtime)
462     AC_PREPROC_IFELSE([
463 #include <_mingw.h>
464 #if (__MINGW32_MAJOR_VERSION == 3) && (__MINGW32_MINOR_VERSION < 15)
465 # error Attempting to use mingw-runtime with broken vsnprintf support
466 #endif
467 ], [
468         AC_MSG_RESULT([ok])
469 ], [
470         AC_MSG_RESULT([present])
471         AC_MSG_ERROR([LibVLC requires mingw-runtime version 3.15 or higher!])
472 ])
473     dnl force use of mingw provided c99 *printf over msvcrt
474     CPPFLAGS="${CPPFLAGS} -D__USE_MINGW_ANSI_STDIO=1"
475     CPPFLAGS_save="${CPPFLAGS_save} -D__USE_MINGW_ANSI_STDIO=1"
476 ])
477
478 dnl Check for the need to include the mingwex lib for mingw32
479 if test "${SYS}" = "mingw32"
480 then
481     AC_CHECK_LIB(mingwex,opendir,
482         AC_CHECK_LIB(mingw32,opendir,,
483             [VLC_ADD_LIBS([libvlccore],[-lmingwex])])
484     )
485 fi
486
487 dnl Check for fnative-struct or mms-bitfields support for mingw32
488 if test "${SYS}" = "mingw32"
489 then
490     AC_CACHE_CHECK([if \$CC accepts -mms-bitfields],
491         [ac_cv_c_mms_bitfields],
492         [CFLAGS="${CFLAGS_save} -mms-bitfields"
493          AC_TRY_COMPILE([],,ac_cv_c_mms_bitfields=yes, ac_cv_c_mms_bitfields=no)])
494     if test "${ac_cv_c_mms_bitfields}" != "no"; then
495         CFLAGS_save="${CFLAGS_save} -mms-bitfields";
496         CXXFLAGS_save="${CXXFLAGS_save} -mms-bitfields";
497     else
498         AC_CACHE_CHECK([if \$CC accepts -fnative-struct],
499             [ac_cv_c_fnative_struct],
500             [CFLAGS="${CFLAGS_save} -fnative-struct"
501              AC_TRY_COMPILE([],,ac_cv_c_fnative_struct=yes, ac_cv_c_fnative_struct=no)])
502         if test "${ac_cv_c_fnative_struct}" != "no"; then
503             CFLAGS_save="${CFLAGS_save} -fnative-struct";
504             CXXFLAGS_save="${CXXFLAGS_save} -fnative-struct";
505         fi
506     fi
507
508     CFLAGS="${CFLAGS_save}"; CXXFLAGS="${CXXFLAGS_save}"
509 fi
510
511 dnl Check for fvtable-thunks support for mingw32
512 if test "${SYS}" = "mingw32" -a "${CXX}" != ""
513 then
514 AC_LANG_PUSH(C++)
515     AC_CACHE_CHECK([if \$CXX accepts -fvtable-thunks],
516         [ac_cv_cxx_fvtable_thunks],
517         [CXXFLAGS="${CXXFLAGS_save} -Wall -Werror -fvtable-thunks"
518          AC_TRY_COMPILE([],,ac_cv_cxx_fvtable_thunks=yes,
519                         ac_cv_cxx_fvtable_thunks=no)])
520     if test "${ac_cv_cxx_fvtable_thunks}" = "yes"; then
521         CXXFLAGS_mingw32_special="-fvtable-thunks"
522     fi
523
524     CXXFLAGS_save="${CXXFLAGS_save} ${CXXFLAGS_mingw32_special}"; CXXFLAGS="${CXXFLAGS_save}"
525 AC_LANG_POP(C++)
526 fi
527
528 dnl
529 dnl Buggy glibc prevention. Purposedly not cached.
530 dnl See sourceware.org bugs 5058 and 5443.
531 dnl Ubuntu alone has 20 bug numbers for this...
532 dnl
533 AC_MSG_CHECKING(for buggy GNU/libc versions)
534 AC_PREPROC_IFELSE([
535 #include <limits.h>
536 #if defined (__GLIBC__) && (__GLIBC__ == 2) \
537   && (__GLIBC_MINOR__ >= 5) && (__GLIBC_MINOR__ <= 7)
538 # error GNU/libc with dcgettext killer bug!
539 #endif
540 ], [
541   AC_MSG_RESULT([not present])
542 ], [
543   AC_MSG_RESULT([found])
544   AS_IF([test "x${enable_nls}" != "xno" || test "x${enable_mozilla}" != "xno"], [
545     AC_MSG_ERROR([Buggy GNU/libc (version 2.5 - 2.7) present. VLC would crash; there is no viable
546 work-around for this. Check with your distribution vendor on how to update the
547 glibc run-time. Alternatively, build with --disable-nls --disable-mozilla and
548 be sure to not use LibVLC from other applications/wrappers.])
549   ], [
550     AC_DEFINE(DISABLE_BUGGY_GLIBC_CHECK, 1, [Disables runtime check for buggy glibc.])
551   ])
552 ])
553
554 dnl Plugin compilation stuff
555
556 VLC_LIBRARY_SUFFIX
557
558 dnl The -DSYS_FOO flag
559 CPPFLAGS_save="${CPPFLAGS_save} -DSYS_`echo ${SYS} | sed -e 's/-.*//' | tr 'abcdefghijklmnopqrstuvwxyz.' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ_'`"; CPPFLAGS="${CPPFLAGS_save}"
560
561 dnl Check for system libs needed
562 need_libc=false
563
564 dnl Check for usual libc functions
565 AC_CHECK_FUNCS([ctime_r daemon fcntl fdopendir fork getenv getpwuid_r gettimeofday isatty lstat memalign posix_fadvise posix_madvise posix_memalign putenv setenv setlocale stricmp strnicmp tdestroy uselocale])
566 AC_REPLACE_FUNCS([asprintf atof atoll getcwd getpid gmtime_r lldiv localtime_r rewind strcasecmp strcasestr strdup strlcpy strncasecmp strndup strnlen strsep strtof strtok_r strtoll swab vasprintf])
567 AC_CHECK_FUNCS(fdatasync,,
568   [AC_DEFINE(fdatasync, fsync, [Alias fdatasync() to fsync() if missing.])
569 ])
570
571 dnl Check for non-standard system calls
572 AC_CHECK_FUNCS([accept4 eventfd fstatfs vmsplice])
573
574 AH_BOTTOM([#include <vlc_fixups.h>])
575
576 AC_CHECK_FUNCS(mmap, [VLC_ADD_PLUGIN([access_mmap])])
577
578 SOCKET_LIBS=""
579 AC_CHECK_FUNCS(connect,,[
580   AC_CHECK_LIB(socket,connect,[
581     VLC_ADD_LIBS([libvlccore cdda],-lsocket)
582     SOCKET_LIBS="-lsocket"
583   ])
584 ])
585 AC_SUBST(SOCKET_LIBS)
586
587 AC_CHECK_FUNCS(send,,[
588   AC_CHECK_LIB(socket,send,[
589     VLC_ADD_LIBS([access_http access_mms access_udp access_tcp access_ftp access_rtmp sap access_output_udp access_output_rtmp stream_out_standard growl_udp remoteosd],[-lsocket])
590   ])
591 ])
592
593
594 dnl Check for socklen_t
595 AH_TEMPLATE(socklen_t, [Define to `int' if <sys/socket.h> does not define.])
596 AC_CACHE_CHECK([for socklen_t in sys/socket.h],
597 ac_cv_type_socklen_t,
598 [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([
599 [#include <sys/types.h>
600 #ifdef WIN32
601 # include <winsock2.h>
602 # include <ws2tcpip.h>
603 #else
604 # include <sys/socket.h>
605 #endif]], [[socklen_t len; len = 0;]])],
606 ac_cv_type_socklen_t=yes,
607 ac_cv_type_socklen_t=no)])
608 AS_IF([test "$ac_cv_type_socklen_t" = no],
609  [AC_DEFINE(socklen_t, int)])
610
611 dnl Check for struct sockaddr_storage
612 AH_TEMPLATE(sockaddr_storage, [Define to `sockaddr' if <sys/socket.h> does not define.])
613 AH_TEMPLATE(ss_family, [Define to `sa_family' if <sys/socket.h> does not define.])
614 AC_CACHE_CHECK([for struct sockaddr_storage], ac_cv_struct_sockaddr_storage,
615   [AC_TRY_COMPILE(
616     [#include <sys/types.h>
617      #if defined( UNDER_CE )
618      # include <winsock2.h>
619      #elif defined( WIN32 )
620      # include <winsock2.h>
621      #else
622      # include <sys/socket.h>
623      #endif], [struct sockaddr_storage addr;],
624      ac_cv_struct_sockaddr_storage=yes,
625      ac_cv_struct_sockaddr_storage=no)])
626 AS_IF([test "${ac_cv_struct_sockaddr_storage}" = no], [
627   AC_DEFINE(sockaddr_storage, sockaddr)
628   AC_DEFINE(ss_family, sa_family)
629 ])
630
631 dnl getaddrinfo, getnameinfo and gai_strerror check
632 dnl  -lnsl and -lsocket are needed on Solaris;
633 dnl  we purposedly make the test fail on Windows
634 LIBS_save="${LIBS}"
635 AH_TEMPLATE(HAVE_GETADDRINFO, [Define to 1 if you have the `getaddrinfo' function.])
636 AC_SEARCH_LIBS([getaddrinfo], [nsl], [AC_DEFINE(HAVE_GETADDRINFO)],, [${SOCKET_LIBS}])
637
638 dnl NOTE: we assume getaddrinfo will be present if getnameinfo or gai_strerro
639 dnl are
640 LIBS="${LIBS_gai}"
641 AC_CHECK_FUNCS([getnameinfo gai_strerror])
642 LIBS="${LIBS_save}"
643
644 AH_TEMPLATE(HAVE_ADDRINFO, [Define to 1 if <netdb.h> defines `struct addrinfo'.])
645 AC_CHECK_TYPES([struct addrinfo],[AC_DEFINE(HAVE_ADDRINFO)],,
646 [#include <sys/types.h>
647 #if defined( WIN32 ) || defined( UNDER_CE )
648 # if defined(UNDER_CE) && defined(sockaddr_storage)
649 #  undef sockaddr_storage
650 # endif
651 # include <winsock2.h>
652 # include <ws2tcpip.h>
653 #else
654 # include <netdb.h>
655 #endif])
656
657 dnl Check for va_copy
658 AC_CACHE_CHECK([for va_copy], ac_cv_c_va_copy,
659   AC_TRY_LINK(
660     [#include <stdarg.h>],
661     [va_list ap1, ap2; va_copy(ap1,ap2);],
662     [ac_cv_c_va_copy="yes"],
663     [ac_cv_c_va_copy="no"]))
664 if test "${ac_cv_c_va_copy}" = "yes"; then
665   AC_DEFINE(HAVE_VA_COPY, 1, [Define if <stdarg.h> defines va_copy.])
666 fi
667 AC_CACHE_CHECK([for __va_copy], ac_cv_c___va_copy,
668   AC_TRY_LINK(
669     [#include <stdarg.h>],
670     [va_list ap1, ap2; __va_copy(ap1,ap2);],
671     [ac_cv_c___va_copy="yes"],
672     [ac_cv_c___va_copy="no"]))
673 if test "${ac_cv_c___va_copy}" = "yes"; then
674   AC_DEFINE(HAVE___VA_COPY, 1, [Define if <stdarg.h> defines __va_copy.])
675 fi
676
677 AC_CHECK_FUNCS(inet_aton,,[
678   AC_CHECK_LIB(resolv,inet_aton,[
679     VLC_ADD_LIBS([libvlccore],[-lresolv])
680   ])
681 ])
682
683 dnl Check for getopt (always use builtin one on win32)
684 if test "${SYS}" = "mingw32" -o "${SYS}" = "mingwce"; then
685 need_getopt=:
686 else
687 need_getopt=false
688 AC_CHECK_FUNCS(getopt_long,[AC_DEFINE(HAVE_GETOPT_LONG,1,long getopt support)],
689 [ # FreeBSD has a gnugetopt library for this:
690   AC_CHECK_LIB([gnugetopt],[getopt_long],
691     [AC_DEFINE(HAVE_GETOPT_LONG,1,getopt support)
692      VLC_ADD_LIBS([libvlccore],[-lgnugetopt])],
693     [need_getopt=:])])
694 fi
695 AM_CONDITIONAL(BUILD_GETOPT, ${need_getopt})
696
697 if test "${SYS}" != "mingw32" -a "${SYS}" != "mingwce"; then
698 AC_TYPE_SIGNAL
699 AC_CHECK_LIB(m,cos,[
700   VLC_ADD_LIBS([adjust wave ripple psychedelic gradient a52tofloat32 dtstofloat32 x264 goom visual panoramix rotate noise grain scene kate flac lua chorus_flanger],[-lm])
701 ])
702 AC_CHECK_LIB(m,pow,[
703   VLC_ADD_LIBS([avcodec avformat access_avio swscale postproc ffmpegaltivec i420_rgb faad twolame equalizer spatializer param_eq libvlccore freetype mod mpc dmo quicktime realvideo opengl],[-lm])
704 ])
705 AC_CHECK_LIB(m,sqrt,[
706   VLC_ADD_LIBS([headphone_channel_mixer normvol audiobargraph_a speex mono colorthres extract ball],[-lm])
707 ])
708 AC_CHECK_LIB(m,ceil,[
709   VLC_ADD_LIBS([access_imem hotkeys mosaic swscale_omap],[-lm])
710 ])
711 AC_CHECK_LIB(m,exp,[
712   VLC_ADD_LIBS([gaussianblur],[-lm])
713 ])
714 AC_CHECK_LIB(m,round,[
715   VLC_ADD_LIBS([dbus],[-lm])
716 ])
717 AC_CHECK_LIB(m,sqrtf,[
718   VLC_ADD_LIBS([x264],[-lm])
719 ])
720 fi # end "${SYS}" != "mingw32" -a "${SYS}" != "mingwce"
721
722 AC_CHECK_LIB(m,lrintf, [
723   AC_DEFINE(HAVE_LRINTF, 1, [Define to 1 if you have the lrintf function])
724   VLC_ADD_LIBS([skins2],[-lm])
725 ])
726
727 dnl Check for dynamic plugins
728 ac_cv_have_plugins=no
729
730 # HP-UX style
731 if test "${ac_cv_have_plugins}" = "no"; then
732   AC_CHECK_HEADERS(dl.h)
733   ac_cv_my_have_shl_load=no
734   AC_CHECK_FUNC(shl_load,
735    [ac_cv_my_have_shl_load=yes,
736     AC_CHECK_LIB(dld, shl_load,
737      [ac_cv_my_have_shl_load=yes
738       VLC_ADD_LIBS([libvlccore],[-ldld])])])
739   if test "${ac_cv_my_have_shl_load}" = "yes"; then
740     AC_DEFINE(HAVE_DL_SHL_LOAD, 1, [Define if you have the shl_load API])
741     ac_cv_have_plugins=yes
742   fi
743 fi
744
745 # Win32 style
746 if test "${ac_cv_have_plugins}" = "no"; then
747   if test "${SYS}" = "mingw32" ; then
748     AC_CHECK_LIB(kernel32, main,
749      [VLC_ADD_LIBS([libvlccore],[-lkernel32])
750       AC_DEFINE(HAVE_DL_WINDOWS, 1, [Define if you have Windows' LoadLibrary])
751       ac_cv_have_plugins=yes])
752   fi
753 fi
754
755 # WinCE style
756 if test "${ac_cv_have_plugins}" = "no"; then
757   if test "${SYS}" = "mingwce"; then
758     AC_DEFINE(HAVE_DL_WINDOWS, 1, [Define if you have Windows' LoadLibrary])
759     ac_cv_have_plugins=yes
760   fi
761 fi
762
763 # BeOS style
764 if test "${ac_cv_have_plugins}" = "no"; then
765   AC_CHECK_HEADERS(image.h)
766   AC_CHECK_FUNCS(load_add_on,
767    [AC_DEFINE(HAVE_DL_BEOS, 1, [Define if you have the BeOS dl])
768     ac_cv_have_plugins=yes])
769 fi
770
771 # Only test for dlopen() if the others didn't work
772 if test "${ac_cv_have_plugins}" = "no" -o "${SYS}" = "darwin"; then
773   AC_CHECK_HEADERS(dlfcn.h sys/dl.h)
774   ac_cv_my_have_dlopen=no
775   AC_CHECK_FUNC(dlopen,
776     ac_cv_my_have_dlopen=yes,
777     AC_CHECK_LIB(dl, dlopen,
778       ac_cv_my_have_dlopen=yes
779       VLC_ADD_LIBS([libvlccore realvideo lua],[-ldl]),
780       AC_CHECK_LIB(svld, dlopen,
781         ac_cv_my_have_dlopen=yes
782         VLC_ADD_LIBS([libvlccore],[-lsvld]))))
783   if test "${ac_cv_my_have_dlopen}" = "yes"; then
784     AC_DEFINE(HAVE_DL_DLOPEN, 1, [Define if you have the dlopen API])
785     ac_cv_have_plugins=yes
786   fi
787 fi
788
789 if test "${SYS}" != "mingw32" -a "${SYS}" != "mingwce"; then
790 dnl Check for pthreads - borrowed from XMMS
791 THREAD_LIB=error
792 if test "${THREAD_LIB}" = "error"; then
793   AC_CHECK_LIB(pthread,main,THREAD_LIB="-lpthread")
794 fi
795 if test "${THREAD_LIB}" = "error"; then
796   AC_CHECK_LIB(pthreads,main,THREAD_LIB="-lpthreads")
797 fi
798 if test "${THREAD_LIB}" = "error"; then
799   AC_CHECK_LIB(c_r,main,THREAD_LIB="-lc_r")
800 fi
801 if test "${THREAD_LIB}" = "error"; then
802   AC_CHECK_FUNCS(pthread_mutex_lock)
803   THREAD_LIB=""
804 fi
805
806 VLC_ADD_LIBS([libvlccore libvlc vlc plugin],[${THREAD_LIB}])
807
808 AC_CHECK_LIB(rt, clock_nanosleep, [
809   VLC_ADD_LIBS([libvlccore],[-lrt])
810   AC_DEFINE(HAVE_CLOCK_NANOSLEEP, 1, [Define to 1 if you have clock_nanosleep.])
811 ], [
812   dnl HP/UX port
813   AC_CHECK_LIB(rt,sem_init, [VLC_ADD_LIBS([libvlccore],[-lrt])])
814 ])
815
816 have_nanosleep=false
817 AC_CHECK_FUNCS(nanosleep,have_nanosleep=:,[
818   AC_CHECK_LIB(rt,nanosleep,
819     [VLC_ADD_LIBS([libvlccore],[-lrt]) have_nanosleep=:],
820     [AC_CHECK_LIB(posix4,nanosleep,
821         [VLC_ADD_LIBS([libvlccore],[-lposix4]) have_nanosleep=:])]
822   )
823 ])
824 if ${have_nanosleep}; then
825   AC_DEFINE(HAVE_NANOSLEEP, 1, [Define if nanosleep is available.])
826 fi
827 fi # end "${SYS}" != "mingw32" -a "${SYS}" != "mingwce"
828
829 dnl Check for misc headers
830 AC_MSG_CHECKING(for strncasecmp in strings.h)
831 AC_EGREP_HEADER(strncasecmp,strings.h,[
832   AC_MSG_RESULT(yes)
833   AC_DEFINE(STRNCASECMP_IN_STRINGS_H, 1,
834             Define if <strings.h> defines strncasecmp.)],[
835   AC_MSG_RESULT(no)])
836
837 dnl Check for headers
838 AC_CHECK_HEADERS(getopt.h strings.h locale.h xlocale.h)
839 AC_CHECK_HEADERS(fcntl.h sys/time.h sys/ioctl.h sys/stat.h sys/mount.h)
840 AC_CHECK_HEADERS([arpa/inet.h netinet/in.h netinet/udplite.h sys/eventfd.h])
841 AC_CHECK_HEADERS([net/if.h], [], [],
842   [
843     #include <sys/types.h>
844     #include <sys/socket.h>
845   ])
846 if test "${SYS}" != "mingw32" -a "${SYS}" != "mingwce"; then
847 AC_CHECK_HEADERS(machine/param.h sys/shm.h)
848 AC_CHECK_HEADERS([linux/version.h linux/dccp.h scsi/scsi.h linux/magic.h])
849 AC_CHECK_HEADERS(syslog.h)
850 fi # end "${SYS}" != "mingw32" -a "${SYS}" != "mingwce"
851
852 dnl LP64 adn LLP64 architectures had better define ssize_t by themselves...
853 AH_TEMPLATE(ssize_t, [Define to `int' if <stddef.h> does not define.])
854 AC_CHECK_TYPE(ssize_t,, [
855   AC_DEFINE(ssize_t, int)
856 ])
857
858 dnl Check for poll
859 AC_SEARCH_LIBS(poll, [poll], [AC_DEFINE(HAVE_POLL, 1, [Define to 1 if the OS is usabl... err, has poll().])], [
860 if test ${SYS} != "mingw32" -a ${SYS} != "mingwce"
861 then
862     AC_MSG_WARN([Your platform does not support poll(). VLC has it's own poll() implementation, but it is only intended to be used on Windows. VLC might crash or be insecure when you see this message. Either switch to an OS with a proper poll() implementation, or implement one for your OS in VLC])
863 fi
864 ])
865
866 dnl Check for dirent
867 need_dirent=false
868 AC_CHECK_HEADERS(dirent.h,,[need_dirent=:])
869 AM_CONDITIONAL(BUILD_DIRENT, ${need_dirent})
870
871 dnl Mac OS X and other OSes don't have declaration for nanosleep
872 if test "${SYS}" != "mingw32" -a "${SYS}" != "mingwce"; then
873 AC_MSG_CHECKING(for nanosleep in time.h)
874 AC_EGREP_HEADER(nanosleep,time.h,[
875   AC_MSG_RESULT(yes)
876   AC_DEFINE(HAVE_DECL_NANOSLEEP, 1,
877             Define if <time.h> defines nanosleep.)
878 ],[
879   AC_MSG_RESULT(no)
880 ])
881 fi # end "${SYS}" != "mingw32" -a "${SYS}" != "mingwce"
882
883 dnl Make sure we have timespecs
884 AC_MSG_CHECKING(for timespec in sys/time.h)
885 AC_EGREP_HEADER(timespec,sys/time.h,[
886   AC_MSG_RESULT(yes)
887   AC_DEFINE(HAVE_STRUCT_TIMESPEC, 1,
888             Define if <sys/time.h> defines struct timespec.)
889 ],[
890   AC_MSG_RESULT(no)
891 ])
892
893 dnl Check for threads library
894 if test "${SYS}" != "mingw32" -a "${SYS}" != "mingwce"; then
895 AC_CHECK_HEADERS(pthread.h)
896 fi # end "${SYS}" != "mingw32" -a "${SYS}" != "mingwce"
897
898 dnl It seems that autoconf detects pkg-config only during the first
899 dnl PKG_CHECK_MODULES from configure.ac - which makes sense. But in our case,
900 dnl it is nested within a conditional block, so it was not working right.
901 dnl Make PKG_CONFIG_PATH precious so that it appears in the help and get saved
902 AC_ARG_VAR(PKG_CONFIG_PATH,
903            [Paths where to find .pc not at the default location])
904 PKG_PROG_PKG_CONFIG()
905
906 dnl On some OS we need static linking 
907        AS_IF([test -n "${PKG_CONFIG}" ],[
908               AS_IF([test "${SYS}" = "mingw32" -o "${SYS}" = "mingwce" -o "${SYS}" = "darwin" ],[
909                   PKG_CONFIG="${PKG_CONFIG} --static"
910               ])
911        ])
912
913
914 dnl
915 dnl Check for zlib.h and -lz along with system -lminizip if available
916 dnl 
917 AC_CHECK_HEADERS(zlib.h, [ have_zlib=yes ], [ have_zlib=no ])
918 AM_CONDITIONAL(HAVE_ZLIB, [ test "${have_zlib}" = "yes" ])
919 if test "${have_zlib}" = "yes"
920 then
921   VLC_ADD_LIBS([access_http gme mp4 skins2 sap mkv unzip zip],[-lz])
922   PKG_CHECK_MODULES([MINIZIP], [minizip] , [ have_minizip=yes ], [
923     AC_CHECK_HEADERS([unzip.h], [ 
924       have_minizip=yes
925       MINIZIP_LIBS="-lminizip -lz"
926     ], [
927       have_minizip=no
928       MINIZIP_CFLAGS="-I\\\${top_srcdir}/libs/unzip"
929       MINIZIP_LIBS="\\\${top_builddir}/libs/unzip/libunzip.la"
930     ])
931   ])
932   VLC_ADD_CPPFLAGS([skins2],[$MINIZIP_CFLAGS])
933   VLC_ADD_CFLAGS([zip],[$MINIZIP_CFLAGS])
934   VLC_ADD_LIBS([skins2 zip],[$MINIZIP_LIBS])
935   VLC_ADD_PLUGIN([unzip])
936   VLC_ADD_PLUGIN([zip])
937 fi
938 AM_CONDITIONAL(HAVE_MINIZIP, [ test "${have_minizip}" = "yes" ])
939
940
941 dnl Check for dbus
942 AC_ARG_ENABLE(dbus,
943   [  --enable-dbus           Linux D-BUS message bus system (default enabled)])
944 case "${SYS}" in
945     linux*|*bsd*)
946 if test "${enable_dbus}" != "no" -a "${SYS}" != "mingw32" -a "${SYS}" != "mingwce"
947 then
948   dnl api stable dbus
949   PKG_CHECK_MODULES(DBUS, dbus-1 >= 1.0.0,
950     [ AC_DEFINE( HAVE_DBUS, 1, [Define if you have the D-BUS library] )
951       VLC_ADD_LIBS([libvlccore],[$DBUS_LIBS])
952       VLC_ADD_CFLAGS([libvlccore],[$DBUS_CFLAGS])
953       dnl Check for dbus control interface
954         AC_ARG_ENABLE(dbus-control, [  --disable-dbus-control  D-BUS control interface (default enabled)])
955         if test "${enable_dbus_control}" != "no"
956         then
957           VLC_ADD_PLUGIN([dbus])
958           VLC_ADD_LIBS([dbus],[$DBUS_LIBS])
959           VLC_ADD_CFLAGS([dbus],[$DBUS_CFLAGS])
960         fi
961       dnl Check for Telepathy
962         AC_ARG_ENABLE(telepathy,
963           AS_HELP_STRING([--enable-telepathy],[Telepathy Presence plugin through DBus(default enabled)]))
964         if test "${enable_telepathy}" != "no"; then
965           VLC_ADD_PLUGIN([telepathy])
966           VLC_ADD_LIBS([telepathy],[$DBUS_LIBS])
967           VLC_ADD_CFLAGS([telepathy],[$DBUS_CFLAGS])
968         fi
969         dnl Power Management Inhibiter
970         VLC_ADD_PLUGIN([inhibit])
971         VLC_ADD_LIBS([inhibit],[$DBUS_LIBS])
972         VLC_ADD_CFLAGS([inhibit],[$DBUS_CFLAGS])
973     ],
974     [AC_MSG_ERROR([Couldn't find DBus >= 1.0.0, install libdbus-dev ?])]
975   )
976 fi
977 ;;
978 esac
979
980 dnl Check for ntohl, etc.
981 AC_CACHE_CHECK([for ntohl in sys/param.h],
982     [ac_cv_c_ntohl_sys_param_h],
983     [CFLAGS="${CFLAGS_save} -Wall -Werror"
984      AC_TRY_COMPILE([#include <sys/param.h>],
985         [int meuh; ntohl(meuh);],
986         ac_cv_c_ntohl_sys_param_h=yes, ac_cv_c_ntohl_sys_param_h=no)])
987 if test "${ac_cv_c_ntohl_sys_param_h}" != "no"; then
988     AC_DEFINE(NTOHL_IN_SYS_PARAM_H, 1, Define if <sys/param.h> defines ntohl.)
989 fi
990 CFLAGS="${CFLAGS_save}"
991
992 RDC_PROG_CC_WFLAGS([all extra sign-compare undef pointer-arith bad-function-cast write-strings missing-prototypes volatile-register-var error-implicit-function-declaration])
993 RDC_PROG_CC_FLAGS([-pipe])
994
995 AC_ARG_ENABLE(warnings-as-error,
996       AS_HELP_STRING([--enable-warnings-as-error],[Treat acceptable warnings as error (default disabled)]),, [enable_warnings_as_error="no"])
997 AS_IF([test "${enable_warnings_as_error}" = "yes"], [
998     RDC_PROG_CC_WERRORFLAGS([unused-function unused-label unused-value unused-parameter unused-variable unused \
999      missing-braces nonnull parentheses uninitialized address enum-compare undef comment switch \
1000      bad-function-cast implicit sequence-point strict-aliasing array-bounds missing-parameter-type \
1001      overflow int-to-pointer-cast pointer-to-int-cast div-by-zero overflow ignored])
1002 ])
1003 AC_SUBST(CFLAGS_WERROR)
1004
1005 dnl Check for various optimization flags
1006 AC_CACHE_CHECK([if \$CC accepts -Os],
1007     [ac_cv_c_os],
1008     [CFLAGS="${CFLAGS_save} -Os"
1009      AC_TRY_COMPILE([],,ac_cv_c_os=yes, ac_cv_c_os=no)])
1010 if test "${ac_cv_c_os}" != "no"; then
1011     CFLAGS_OPTIM_SIZE="${CFLAGS_OPTIM_SIZE} -Os"
1012 else
1013     AC_CACHE_CHECK([if \$CC accepts -O],
1014         [ac_cv_c_o],
1015         [CFLAGS="${CFLAGS_save} -O"
1016          AC_TRY_COMPILE([],,ac_cv_c_o=yes, ac_cv_c_o=no)])
1017     if test "${ac_cv_c_o}" != "no"; then
1018         if test "${ac_cv_c_o3}" = "no"; then
1019             CFLAGS_OPTIM_SIZE="${CFLAGS_OPTIM_SIZE} -O"
1020         fi
1021     fi
1022 fi
1023
1024 AC_CACHE_CHECK([if \$CC accepts -O4],
1025     [ac_cv_c_o4],
1026     [CFLAGS="${CFLAGS_save} -O4"
1027      AC_TRY_COMPILE([],,ac_cv_c_o4=yes, ac_cv_c_o4=no)])
1028 if test "${ac_cv_c_o4}" != "no" -a "x${enable_debug}" = "xno"; then
1029     CFLAGS_OPTIM_SPEED="${CFLAGS_OPTIM_SPEED} -O4"
1030 else
1031     AC_CACHE_CHECK([if \$CC accepts -O3],
1032         [ac_cv_c_o3],
1033         [CFLAGS="${CFLAGS_save} -O3"
1034          AC_TRY_COMPILE([],,ac_cv_c_o3=yes, ac_cv_c_o3=no)])
1035     if test "${ac_cv_c_o3}" != "no" -a "x${enable_debug}" = "xno"; then
1036         CFLAGS_OPTIM_SPEED="${CFLAGS_OPTIM_SPEED} -O3"
1037     else
1038         AC_CACHE_CHECK([if \$CC accepts -O2],
1039             [ac_cv_c_o2],
1040             [CFLAGS="${CFLAGS_save} -O2"
1041              AC_TRY_COMPILE([],,ac_cv_c_o2=yes, ac_cv_c_o2=no)])
1042         if test "${ac_cv_c_o2}" != "no"; then
1043             CFLAGS_OPTIM_SPEED="${CFLAGS_OPTIM_SPEED} -O2"
1044         else
1045             AC_CACHE_CHECK([if \$CC accepts -O],
1046                 [ac_cv_c_o],
1047                 [CFLAGS="${CFLAGS_save} -O"
1048                  AC_TRY_COMPILE([],,ac_cv_c_o=yes, ac_cv_c_o=no)])
1049             if test "${ac_cv_c_o}" != "no"; then
1050                 CFLAGS_OPTIM_SPEED="${CFLAGS_OPTIM_SPEED} -O"
1051             fi
1052         fi
1053     fi
1054 fi
1055
1056 AC_CACHE_CHECK([if \$CC accepts -O0],
1057     [ac_cv_c_o0],
1058     [CFLAGS="${CFLAGS_save} -O0"
1059      AC_TRY_COMPILE([],,ac_cv_c_o0=yes, ac_cv_c_o0=no)])
1060 if test "${ac_cv_c_o0}" != "no"; then
1061     CFLAGS_NOOPTIM="${CFLAGS_NOOPTIM} -O0"
1062 fi
1063
1064 dnl Check for -ffast-math
1065 AC_CACHE_CHECK([if \$CC accepts -ffast-math],
1066     [ac_cv_c_fast_math],
1067     [CFLAGS="${CFLAGS_save} -ffast-math"
1068      AC_TRY_COMPILE([],,ac_cv_c_fast_math=yes, ac_cv_c_fast_math=no)])
1069 if test "${ac_cv_c_fast_math}" != "no"; then
1070     CFLAGS_OPTIM_SPEED="${CFLAGS_OPTIM_SPEED} -ffast-math"
1071 fi
1072
1073 dnl Check for -funroll-loops
1074 dnl Disabled on BeOS because BeOS' gcc is buggy and may crash with it
1075 if test "${SYS}" != "beos"
1076 then
1077   AC_CACHE_CHECK([if \$CC accepts -funroll-loops],
1078       [ac_cv_c_unroll_loops],
1079       [CFLAGS="${CFLAGS_save} -funroll-loops"
1080        AC_TRY_COMPILE([],,ac_cv_c_unroll_loops=yes, ac_cv_c_unroll_loops=no)])
1081   if test "${ac_cv_c_unroll_loops}" != "no"; then
1082       CFLAGS_OPTIM_SPEED="${CFLAGS_OPTIM_SPEED} -funroll-loops"
1083   fi
1084 fi
1085
1086 dnl Check for -fomit-frame-pointer
1087 AC_CACHE_CHECK([if \$CC accepts -fomit-frame-pointer],
1088     [ac_cv_c_omit_frame_pointer],
1089     [CFLAGS="${CFLAGS_save} -fomit-frame-pointer"
1090      AC_TRY_COMPILE([],,ac_cv_c_omit_frame_pointer=yes, ac_cv_c_omit_frame_pointer=no)])
1091 if test "${ac_cv_c_omit_frame_pointer}" != "no"; then
1092  if test "${SYS}" != "darwin"; then
1093     CFLAGS_OPTIM_NODEBUG="${CFLAGS_OPTIM_NODEBUG} -fomit-frame-pointer"
1094  else
1095     dnl On darwin we explicitely disable it.
1096     CFLAGS_OPTIM_NODEBUG="${CFLAGS_OPTIM_NODEBUG} -fno-omit-frame-pointer"
1097  fi
1098 fi
1099
1100 dnl Check for Darwin plugin linking flags
1101 AC_CACHE_CHECK([if \$CC accepts -bundle -undefined error],
1102     [ac_cv_ld_darwin],
1103     [CFLAGS="${CFLAGS_save} -bundle -undefined error"
1104      AC_TRY_COMPILE([],,ac_cv_ld_darwin=yes, ac_cv_ld_darwin=no)])
1105 if test "${ac_cv_ld_darwin}" != "no"; then
1106     VLC_ADD_LDFLAGS([plugin],[-bundle -undefined error])
1107 fi
1108
1109 dnl Checks for __attribute__(aligned()) directive
1110 AC_CACHE_CHECK([__attribute__ ((aligned ())) support],
1111     [ac_cv_c_attribute_aligned],
1112     [ac_cv_c_attribute_aligned=0
1113         CFLAGS="${CFLAGS_save} -Werror"
1114     for ac_cv_c_attr_align_try in 2 4 8 16 32 64; do
1115         AC_TRY_COMPILE([],
1116         [static char c __attribute__ ((aligned(${ac_cv_c_attr_align_try}))) = 0; return c;],
1117         [ac_cv_c_attribute_aligned="${ac_cv_c_attr_align_try}"])
1118     done
1119         CFLAGS="${CFLAGS_save}"])
1120 if test "${ac_cv_c_attribute_aligned}" != "0"; then
1121     AC_DEFINE_UNQUOTED([ATTRIBUTE_ALIGNED_MAX],
1122         [${ac_cv_c_attribute_aligned}],[Maximum supported data alignment])
1123 fi
1124
1125 dnl Check for __attribute__((packed))
1126 AC_CACHE_CHECK([for __attribute__((packed))],
1127   [ac_cv_c_attribute_packed],
1128   [ac_cv_c_attribute_packed=no
1129    AC_TRY_COMPILE(, [struct __attribute__((__packed__)) foo { int a; } b; (void)b;],
1130                     [ac_cv_c_attribute_packed=yes])])
1131 if test "${ac_cv_c_attribute_packed}" != "no"; then
1132   AC_DEFINE(HAVE_ATTRIBUTE_PACKED, 1, Support for __attribute__((packed)) for structs)
1133 fi
1134
1135 dnl
1136 dnl  Check the CPU
1137 dnl
1138 case "${host_cpu}" in
1139   "")
1140     ARCH=unknown
1141     ;;
1142   *)
1143     ARCH="${host_cpu}"
1144     ;;
1145 esac
1146
1147 dnl Check for backtrace() support
1148 AC_CHECK_HEADERS(execinfo.h)
1149 AC_CHECK_FUNCS(backtrace)
1150
1151 dnl
1152 dnl  Enable profiling
1153 dnl
1154 AC_ARG_ENABLE(gprof,
1155 [  --enable-gprof          gprof profiling (default disabled)])
1156 AC_ARG_ENABLE(cprof,
1157 [  --enable-cprof          cprof profiling (default disabled)])
1158 test "${enable_gprof}" != "yes" && enable_gprof="no"
1159 test "${enable_cprof}" != "yes" && enable_cprof="no"
1160
1161 dnl
1162 dnl  default modules
1163 dnl
1164 ALIASES="${ALIASES} cvlc rvlc"
1165
1166 dnl
1167 dnl Some plugins aren't useful on some platforms
1168 dnl
1169 if test "${SYS}" != "mingw32" -a "${SYS}" != "mingwce"; then
1170     VLC_ADD_PLUGIN([motion])
1171     VLC_ADD_PLUGIN([dynamicoverlay])
1172     VLC_ADD_PLUGIN([signals])
1173 elif test "${SYS}" != "mingwce"; then
1174     VLC_ADD_PLUGIN([ntservice])
1175     VLC_ADD_PLUGIN([access_smb])
1176     VLC_ADD_PLUGIN([dmo])
1177     VLC_ADD_PLUGIN([msn])
1178     VLC_ADD_LIBS([dmo],[-lole32 -luuid])
1179     VLC_ADD_PLUGIN([globalhotkeys])
1180 fi
1181 if test "${SYS}" = "darwin"; then
1182     VLC_ADD_LDFLAGS([quartztext],[-Wl,-framework,ApplicationServices])
1183 fi
1184
1185 dnl
1186 dnl  Accelerated modules
1187 dnl
1188 AC_ARG_WITH(,[])
1189 AC_ARG_WITH(,[Optimization options:])
1190
1191 dnl  Check for fully working MMX intrinsics
1192 dnl  We need support for -mmmx, we need <mmintrin.h>, and we also need a
1193 dnl  working compiler (http://gcc.gnu.org/bugzilla/show_bug.cgi?id=23963)
1194 AC_ARG_ENABLE(mmx,
1195 [  --disable-mmx           disable MMX optimizations (default auto)],,[
1196   case "${host_cpu}" in
1197     i?86|x86_64)
1198       enable_mmx="yes"
1199       ;;
1200     *)
1201       enable_mmx="no"
1202       ;;
1203   esac
1204 ])
1205 have_mmx="no"
1206 have_mmxext="no"
1207 AS_IF([test "${enable_mmx}" != "no"], [
1208   ARCH="${ARCH} mmx"
1209
1210   AC_CACHE_CHECK([if $CC groks MMX intrinsics],
1211     [ac_cv_c_mmx_intrinsics],
1212     [CFLAGS="${CFLAGS_save} -O -mmmx"
1213      AC_TRY_COMPILE([#include <mmintrin.h>
1214                      #include <stdint.h>
1215                      uint64_t frobzor;],
1216                     [__m64 a, b, c;
1217                      a = b = c = (__m64)frobzor;
1218                      a = _mm_slli_pi16(a, 3);
1219                      a = _mm_adds_pi16(a, b);
1220                      c = _mm_srli_pi16(c, 8);
1221                      c = _mm_slli_pi16(c, 3);
1222                      b = _mm_adds_pi16(b, c);
1223                      a = _mm_unpacklo_pi8(a, b);
1224                      frobzor = (uint64_t)a;],
1225                     [ac_cv_c_mmx_intrinsics=yes],
1226                     [ac_cv_c_mmx_intrinsics=no])])
1227   AS_IF([test "${ac_cv_c_mmx_intrinsics}" != "no"], [
1228     AC_DEFINE(HAVE_MMX_INTRINSICS, 1,
1229               [Define to 1 if MMX intrinsics are available.])
1230     MMX_CFLAGS="-mmmx"
1231   ])
1232
1233   AC_CACHE_CHECK([if $CC groks MMX inline assembly],
1234     [ac_cv_mmx_inline],
1235     [CFLAGS="${CFLAGS_save}"
1236      AC_TRY_COMPILE(,[void *p;asm volatile("packuswb %%mm1,%%mm2"::"r"(p));],
1237                     ac_cv_mmx_inline=yes, ac_cv_mmx_inline=no)])
1238   AS_IF([test "${ac_cv_mmx_inline}" != "no"], [
1239     AC_DEFINE(CAN_COMPILE_MMX, 1,
1240               [Define to 1 inline MMX assembly is available.])
1241     have_mmx="yes"
1242   ])
1243
1244   AC_CACHE_CHECK([if $CC groks MMX EXT inline assembly],
1245     [ac_cv_mmxext_inline],
1246     [CFLAGS="${CFLAGS_save}"
1247      AC_TRY_COMPILE(,[void *p;asm volatile("maskmovq %%mm1,%%mm2"::"r"(p));],
1248                     ac_cv_mmxext_inline=yes, ac_cv_mmxext_inline=no)])
1249   AS_IF([test "${ac_cv_mmxext_inline}" != "no"], [
1250     AC_DEFINE(CAN_COMPILE_MMXEXT, 1,
1251               [Define to 1 if MMX EXT inline assembly is available.])
1252     have_mmxext="yes"
1253   ])
1254 ])
1255 AC_SUBST(MMX_CFLAGS)
1256 AM_CONDITIONAL([HAVE_MMX], [test "${have_mmx}" = "yes"])
1257 AM_CONDITIONAL([HAVE_MMXEXT], [test "${have_mmxext}" = "yes"])
1258
1259 dnl  Check for fully workin SSE2 intrinsics
1260 dnl  We need support for -mmmx, we need <emmintrin.h>, and we also need a
1261 dnl  working compiler (http://gcc.gnu.org/bugzilla/show_bug.cgi?id=23963)
1262 AC_ARG_ENABLE(sse,
1263 [  --disable-sse           disable SSE (1, 2, 3 and 4) optimizations (default auto)],
1264 , [
1265   case "${host_cpu}" in
1266     i686|x86_64)
1267       enable_sse=yes
1268       ;;
1269     *)
1270       enable_sse=no
1271       ;;
1272   esac
1273 ])
1274 have_sse2="no"
1275 AS_IF([test "${enable_sse}" != "no"], [
1276   ARCH="${ARCH} sse sse2"
1277
1278   AC_CACHE_CHECK([if $CC groks SSE2 intrinsics],
1279     [ac_cv_c_sse2_intrinsics],
1280     [CFLAGS="${CFLAGS_save} -O -msse2"
1281      AC_TRY_COMPILE([#include <emmintrin.h>
1282                      #include <stdint.h>
1283                      uint64_t frobzor;],
1284                     [__m128i a, b, c;
1285                      a = b = c = _mm_set1_epi64((__m64)frobzor);
1286                      a = _mm_slli_epi16(a, 3);
1287                      a = _mm_adds_epi16(a, b);
1288                      c = _mm_srli_epi16(c, 8);
1289                      c = _mm_slli_epi16(c, 3);
1290                      b = _mm_adds_epi16(b, c);
1291                      a = _mm_unpacklo_epi8(a, b);
1292                      frobzor = (uint64_t)_mm_movepi64_pi64(a);],
1293                     [ac_cv_c_sse2_intrinsics=yes],
1294                     [ac_cv_c_sse2_intrinsics=no])])
1295   AS_IF([test "${ac_cv_c_sse2_intrinsics}" != "no"], [
1296     AC_DEFINE(HAVE_SSE2_INTRINSICS, 1,
1297               [Define to 1 if SSE2 intrinsics are available.])
1298     SSE2_CFLAGS="-msse2"
1299   ])
1300
1301   AC_CACHE_CHECK([if $CC groks SSE inline assembly],
1302     [ac_cv_sse_inline],
1303     [CFLAGS="${CFLAGS_save}"
1304      AC_TRY_COMPILE(,[void *p;asm volatile("xorps %%xmm1,%%xmm2"::"r"(p));],
1305                     ac_cv_sse_inline=yes, ac_cv_sse_inline=no)])
1306   AS_IF([test "${ac_cv_sse_inline}" != "no" -a "${SYS}" != "solaris"], [
1307     AC_DEFINE(CAN_COMPILE_SSE, 1,
1308               [Define to 1 if SSE inline assembly is available.])
1309   ])
1310
1311   AC_CACHE_CHECK([if $CC groks SSE2 inline assembly],
1312     [ac_cv_sse2_inline],
1313     [CFLAGS="${CFLAGS_save}"
1314      AC_TRY_COMPILE(,[void *p;asm volatile("punpckhqdq %%xmm1,%%xmm2"::"r"(p));],
1315                     ac_cv_sse2_inline=yes, ac_cv_sse2_inline=no)])
1316   AS_IF([test "${ac_cv_sse2_inline}" != "no" -a "${SYS}" != "solaris"], [
1317     AC_DEFINE(CAN_COMPILE_SSE2, 1,
1318               [Define to 1 if SSE2 inline assembly is available.])
1319     have_sse2="yes"
1320   ])
1321
1322   # SSE3
1323   AC_CACHE_CHECK([if $CC groks SSE3 inline assembly],
1324     [ac_cv_sse3_inline],
1325     [CFLAGS="${CFLAGS_save}"
1326      AC_TRY_COMPILE(,[void *p;asm volatile("movsldup %%xmm1,%%xmm0"::"r"(p));],
1327                     ac_cv_sse3_inline=yes, ac_cv_sse3_inline=no)])
1328   AS_IF([test "${ac_cv_sse3_inline}" != "no"], [
1329     AC_DEFINE(CAN_COMPILE_SSE3, 1,
1330               [Define to 1 if SSE3 inline assembly is available.]) ])
1331   # SSSE3
1332   AC_CACHE_CHECK([if $CC groks SSSE3 inline assembly],
1333     [ac_cv_ssse3_inline],
1334     [CFLAGS="${CFLAGS_save}"
1335      AC_TRY_COMPILE(,[void *p;asm volatile("pabsw %%xmm0,%%xmm0"::"r"(p));],
1336                     ac_cv_ssse3_inline=yes, ac_cv_ssse3_inline=no)])
1337   AS_IF([test "${ac_cv_ssse3_inline}" != "no"], [
1338     AC_DEFINE(CAN_COMPILE_SSSE3, 1,
1339               [Define to 1 if SSSE3 inline assembly is available.]) ])
1340
1341   # SSE4.1
1342   AC_CACHE_CHECK([if $CC groks SSE4.1 inline assembly],
1343     [ac_cv_sse4_1_inline],
1344     [CFLAGS="${CFLAGS_save}"
1345      AC_TRY_COMPILE(,[void *p;asm volatile("pmaxsb %%xmm1,%%xmm0"::"r"(p));],
1346                     ac_cv_sse4_1_inline=yes, ac_cv_sse4_1_inline=no)])
1347   AS_IF([test "${ac_cv_sse4_1_inline}" != "no"], [
1348     AC_DEFINE(CAN_COMPILE_SSE4_1, 1,
1349               [Define to 1 if SSE4_1 inline assembly is available.]) ])
1350
1351   # SSE4.2
1352   AC_CACHE_CHECK([if $CC groks SSE4.2 inline assembly],
1353     [ac_cv_sse4_2_inline],
1354     [CFLAGS="${CFLAGS_save}"
1355      AC_TRY_COMPILE(,[void *p;asm volatile("pcmpgtq %%xmm1,%%xmm0"::"r"(p));],
1356                     ac_cv_sse4_2_inline=yes, ac_cv_sse4_2_inline=no)])
1357   AS_IF([test "${ac_cv_sse4_2_inline}" != "no"], [
1358     AC_DEFINE(CAN_COMPILE_SSE4_2, 1,
1359               [Define to 1 if SSE4_2 inline assembly is available.]) ])
1360
1361   # SSE4A
1362   AC_CACHE_CHECK([if $CC groks SSE4A inline assembly],
1363     [ac_cv_sse4a_inline],
1364     [CFLAGS="${CFLAGS_save}"
1365      AC_TRY_COMPILE(,[void *p;asm volatile("insertq %%xmm1,%%xmm0"::"r"(p));],
1366                     ac_cv_sse4a_inline=yes, ac_cv_sse4a_inline=no)])
1367   AS_IF([test "${ac_cv_sse4a_inline}" != "no"], [
1368     AC_DEFINE(CAN_COMPILE_SSE4A, 1,
1369               [Define to 1 if SSE4A inline assembly is available.]) ])
1370 ])
1371 AC_SUBST(SSE2_CFLAGS)
1372 AM_CONDITIONAL([HAVE_SSE2], [test "$have_sse2" = "yes"])
1373
1374 have_3dnow="no"
1375 AC_CACHE_CHECK([if $CC groks 3D Now! inline assembly],
1376     [ac_cv_3dnow_inline],
1377     [CFLAGS="${CFLAGS_save}"
1378      AC_TRY_COMPILE(,[void *p;asm volatile("pfadd %%mm1,%%mm2"::"r"(p));],
1379                     ac_cv_3dnow_inline=yes, ac_cv_3dnow_inline=no)])
1380 AS_IF([test "${ac_cv_3dnow_inline}" != "no"], [
1381   AC_DEFINE(CAN_COMPILE_3DNOW, 1,
1382             [Define to 1 if 3D Now! inline assembly is available.])
1383   have_3dnow="yes"
1384 ])
1385 AM_CONDITIONAL([HAVE_3DNOW], [test "$have_3dnow" = "yes"])
1386
1387
1388 AC_ARG_ENABLE(neon,
1389 [  --disable-neon          disable NEON optimizations (default auto)],, [
1390   AS_IF([test "${host_cpu}" = "arm"], [enable_neon="yes"] ,[enable_neon="no"])
1391 ])
1392 AS_IF([test "${enable_neon}" != "no"], [
1393   AC_CACHE_CHECK([if $CC groks NEON inline assembly], [ac_cv_neon_inline], [
1394     CFLAGS="${CFLAGS_save} -mfpu=neon"
1395     AC_COMPILE_IFELSE([
1396       AC_LANG_PROGRAM(,[[asm volatile("vqmovun.s64 d0, q1":::"d0");]])
1397     ], [
1398       ac_cv_neon_inline="-mfpu=neon"
1399     ], [
1400       ac_cv_neon_inline="no"
1401     ])
1402     CFLAGS="${CFLAGS_save}"
1403   ])
1404   ARM_NEON_CFLAGS="$ac_cv_neon_inline"
1405 ], [
1406   ac_cv_neon_inline="no"
1407 ])
1408 AC_SUBST(ARM_NEON_CFLAGS)
1409 AM_CONDITIONAL(HAVE_ARM_NEON, [test "${ac_cv_neon_inline}" != "no"])
1410
1411
1412 AC_ARG_ENABLE(altivec,
1413 [  --disable-altivec       disable AltiVec optimizations (default auto)],, [
1414   AS_IF([test "${host_cpu}" = "powerpc"],
1415         [enable_altivec=yes], [enable_altivec=no])
1416 ])
1417 have_altivec="no"
1418 AS_IF([test "${enable_altivec}" = "yes"], [
1419   ARCH="${ARCH} altivec";
1420   AC_CACHE_CHECK([if $CC groks AltiVec inline assembly],
1421     [ac_cv_altivec_inline],
1422     [CFLAGS="${CFLAGS_save}"
1423      AC_TRY_COMPILE(,[asm volatile("vperm 0,1,2,3");],
1424          ac_cv_altivec_inline="yes",
1425          [CFLAGS="${CFLAGS_save} -Wa,-m7400"
1426           AC_TRY_COMPILE(,[asm volatile("vperm 0,1,2,3");],
1427             [ac_cv_altivec_inline="-Wa,-m7400"],
1428             ac_cv_altivec_inline=no)
1429          ])])
1430   AS_IF([test "${ac_cv_altivec_inline}" != "no"], [
1431     AC_DEFINE(CAN_COMPILE_ALTIVEC, 1,
1432               [Define to 1 if AltiVec inline assembly is available.])
1433     AS_IF([test "${ac_cv_altivec_inline}" != "yes"], [
1434       VLC_ADD_CFLAGS([idctaltivec],[${ac_cv_altivec_inline}])
1435       VLC_ADD_CFLAGS([motionaltivec],[${ac_cv_altivec_inline}])
1436       VLC_ADD_CFLAGS([memcpyaltivec],[${ac_cv_altivec_inline}])
1437       VLC_ADD_CFLAGS([i420_yuy2_altivec],[${ac_cv_altivec_inline}])
1438       VLC_ADD_CFLAGS([libvlccore],[${ac_cv_altivec_inline}])
1439     ])
1440     have_altivec="yes"
1441   ])
1442
1443 dnl The AltiVec C extensions
1444 dnl
1445 dnl There are several possible cases:
1446 dnl - OS X PPC, gcc 4.x: use -mpim-altivec -force_cpusubtype_ALL, don't
1447 dnl                      need <altivec.h>
1448 dnl - OS X PPC, gcc 3.x: need -faltivec, don't need <altivec.h>
1449 dnl - Linux PPC, gcc 3.4, 4.x: need <altivec.h> which requires -maltivec
1450 dnl - Linux PPC, gcc 3.3: need <altivec.h> and -maltivec -mabi=altivec
1451 dnl - Linux PPC, gcc 3.x: need <altivec.h> and -fvec
1452 dnl - Others: test should fail
1453   AC_CACHE_CHECK([if \$CC groks AltiVec C extensions],
1454   [ac_cv_c_altivec],
1455   [# OS X/PPC test (gcc 4.x)
1456    CFLAGS="${CFLAGS_save} -mpim-altivec -force_cpusubtype_ALL"
1457    AC_TRY_COMPILE([vector unsigned char foo;],
1458      [vec_ld(0, (unsigned char *)0);],
1459      [ac_cv_c_altivec="-mpim-altivec -force_cpusubtype_ALL"],
1460      [# OS X/PPC test (gcc 3.x)
1461       CFLAGS="${CFLAGS_save} -faltivec"
1462       AC_TRY_COMPILE([vector unsigned char foo;],
1463         [vec_ld(1 * sizeof(vector float), (unsigned char *)0);],
1464         [ac_cv_c_altivec="-faltivec"],
1465         dnl Below this are the Linux tests
1466         [# Linux/PPC test (gcc 4.x)
1467          CFLAGS="${CFLAGS_save} -maltivec"
1468          AC_TRY_COMPILE([#include <altivec.h>],
1469            [vec_ld(0, (unsigned char *)0);],
1470            [ac_cv_c_altivec="-maltivec"],
1471            [# Linux/PPC test (gcc 3.3)
1472             CFLAGS="${CFLAGS_save} -maltivec -mabi=altivec"
1473             AC_TRY_COMPILE([#include <altivec.h>],
1474               [vec_ld(0, (unsigned char *)0);],
1475               [ac_cv_c_altivec=""
1476                ac_cv_c_altivec_abi="-maltivec -mabi=altivec"],
1477               [# Linux/PPC test (gcc 3.3)
1478                CFLAGS="${CFLAGS_save} -fvec"
1479                AC_TRY_COMPILE([#include <altivec.h>],
1480                  [vec_ld(0, (unsigned char *)0);],
1481                  [ac_cv_c_altivec="-fvec"],
1482                  [ac_cv_c_altivec=no])
1483               ])
1484            ])
1485         ])
1486      ])
1487    CFLAGS="${CFLAGS_save}"
1488   ])
1489   AS_IF([test "${ac_cv_c_altivec}" != "no"], [
1490     CPPFLAGS="${CPPFLAGS_save} ${ac_cv_c_altivec}"
1491   ])
1492
1493   AC_CHECK_HEADERS(altivec.h)
1494   CPPFLAGS="${CPPFLAGS_save}"
1495
1496   AS_IF([test "${ac_cv_c_altivec}" != "no"], [
1497     AC_DEFINE(CAN_COMPILE_C_ALTIVEC, 1,
1498               [Define to 1 if C AltiVec extensions are available.])
1499     VLC_ADD_CFLAGS([libvlccore],[${ac_cv_c_altivec}])
1500     VLC_ADD_CFLAGS([idctaltivec motionaltivec],[${ac_cv_c_altivec}])
1501     VLC_ADD_CFLAGS([i420_yuy2_altivec memcpyaltivec deinterlace],[${ac_cv_c_altivec} ${ac_cv_c_altivec_abi}])
1502     have_altivec="yes"
1503   ])
1504
1505   AC_CACHE_CHECK([if linker needs -framework vecLib],
1506     [ac_cv_ld_altivec],
1507     [LDFLAGS="${LDFLAGS_vlc} -Wl,-framework,vecLib"
1508      AC_TRY_LINK([],,ac_cv_ld_altivec=yes,ac_cv_ld_altivec=no)
1509      LDFLAGS="${LDFLAGS_save}"
1510     ])
1511   AS_IF([test "${ac_cv_ld_altivec}" != "no"], [
1512     VLC_ADD_LDFLAGS([libvlccore idctaltivec motionaltivec memcpyaltivec],[-Wl,-framework,vecLib])
1513   ])
1514 ])
1515 AM_CONDITIONAL([HAVE_ALTIVEC], [test "$have_altivec" = "yes"])
1516
1517 dnl
1518 dnl  Special arch tuning
1519 dnl
1520 AC_ARG_WITH(tuning,
1521 [  --with-tuning=ARCH      enable special tuning for an architecture
1522                           (default Pentium 2 on IA-32 and G4 on PPC)])
1523 if test -n "${with_tuning}"; then
1524     if test "${with_tuning}" != "no"; then
1525         CFLAGS_TUNING="-mtune=${with_tuning}"
1526     fi
1527 else
1528     if test "${SYS}" = "darwin" -a "${host_cpu}" != "powerpc"; then
1529         CFLAGS_TUNING="-march=prescott -mtune=generic"
1530     elif test "${host_cpu}" = "i686" -o "${host_cpu}" = "i586" -o "${host_cpu}" = "i486" -o "${host_cpu}" = "i386"; then
1531         CFLAGS_TUNING="-mtune=pentium2"
1532     elif test "${host_cpu}" = "x86_64"; then
1533         CFLAGS_TUNING="-mtune=athlon64"
1534     elif test "${host_cpu}" = "powerpc"; then
1535         CFLAGS_TUNING="-mtune=G4";
1536     fi
1537 fi
1538
1539 dnl NOTE: this can't be cached cleanly
1540 AS_IF([test "${CFLAGS_TUNING}"],
1541    [CFLAGS_save="${CFLAGS}"
1542     CFLAGS="${CFLAGS} ${CFLAGS_TUNING}"
1543
1544     AC_MSG_CHECKING([whether $CC accepts ${CFLAGS_TUNING}])
1545     AC_COMPILE_IFELSE([ ],
1546                       [tuning="yes"],
1547                       [CFLAGS_TUNING=""; tuning="no"
1548                        AS_IF([test "${with_tuning}"],
1549                              [AC_MSG_ERROR([requested tuning not supported])])])
1550
1551     AC_MSG_RESULT([$tuning])
1552     CFLAGS="${CFLAGS_save}"
1553 ])
1554
1555 dnl
1556 dnl  Memory usage
1557 dnl
1558 AC_ARG_ENABLE(optimize-memory,
1559 [  --enable-optimize-memory optimize memory usage over performance])
1560 if test "${enable_optimize_memory}" = "yes"; then
1561   AC_DEFINE(OPTIMIZE_MEMORY, 1, Define if you want to optimize memory usage over performance)
1562 fi
1563
1564 dnl
1565 dnl  Enable/disable optimizations
1566 dnl
1567 AC_ARG_ENABLE(optimizations,
1568 [  --disable-optimizations disable compiler optimizations (default enabled)])
1569 if test "${enable_optimizations}" != "no"; then
1570    if test "${enable_optimize_memory}" = "yes"; then
1571       enable_optimizations="size"
1572    else
1573       enable_optimizations="speed"
1574    fi
1575 fi
1576
1577 dnl
1578 dnl  Debugging mode
1579 dnl
1580 AC_ARG_ENABLE(debug,
1581 [  --enable-debug          debug mode (default disabled)])
1582 test "${enable_debug}" != "yes" && enable_debug="no"
1583 AH_TEMPLATE(NDEBUG,
1584             [Define to 1 if debug code should NOT be compiled])
1585 AS_IF([test "x${enable_debug}" = "xno"], [
1586   AC_DEFINE(NDEBUG)
1587 ], [
1588   AC_CHECK_HEADERS([valgrind/valgrind.h])
1589 ])
1590
1591 dnl
1592 dnl Allow runing as root (usefull for people runing on embedded platforms)
1593 dnl
1594 AC_ARG_ENABLE(run-as-root,
1595 [  --enable-run-as-root    allow runing VLC as root (default disabled)])
1596 AS_IF([test "${enable_run_as_root}" = "yes"],[
1597     AC_DEFINE(ALLOW_RUN_AS_ROOT, 1,
1598               [Define to 1 to allow runing VLC as root (uid 0).])
1599 ])
1600
1601 dnl
1602 dnl  Test coverage
1603 dnl
1604 AC_ARG_ENABLE(coverage,
1605         [  --enable-coverage       build for test coverage (default disabled)],,
1606         [enable_coverage="no"])
1607 AS_IF([test "${enable_coverage}" != "no"], [
1608         CFLAGS="-fprofile-arcs -ftest-coverage ${CFLAGS}"
1609         CXXFLAGS="-fprofile-arcs -ftest-coverage ${CXXFLAGS}"
1610         LDFLAGS="-lgcov ${LDFLAGS}"
1611         dnl ugly...
1612         CFLAGS_save="${CFLAGS}"
1613         CXXFLAGS_save="${CXXFLAGS}"
1614         LDFLAGS_save="${LDFLAGS}"
1615 ])
1616
1617 dnl
1618 dnl  Enable release-specific flags
1619 dnl
1620 AC_ARG_ENABLE(release,
1621 [  --enable-release        activate extra optimizations (default disabled)])
1622 test "${enable_release}" != "yes" && enable_release="no"
1623
1624 dnl
1625 dnl Stream output
1626 dnl
1627 AC_ARG_ENABLE(sout,
1628   [  --enable-sout           Stream output modules (default enabled)])
1629 AS_IF([test "${enable_sout}" != "no"], [
1630   AC_DEFINE(ENABLE_SOUT, 1, [Define to 1 for stream output support.])
1631 ])
1632 AM_CONDITIONAL(ENABLE_SOUT, [test "${enable_sout}" != "no"])
1633
1634 dnl Lua modules
1635 AC_ARG_ENABLE(lua,
1636   AS_HELP_STRING([--enable-lua],[lua playlist, metafetcher and interface
1637                   plugins (default enabled)]))
1638 if test "${enable_lua}" != "no"
1639 then
1640   PKG_CHECK_MODULES(LUA, lua5.1,
1641     [ have_lua=yes ],
1642     [
1643     AC_MSG_WARN([lua5.1 not found, trying lua >= 5.1 instead])
1644     PKG_CHECK_MODULES(LUA, lua >= 5.1,
1645       [ have_lua=yes ],
1646       [
1647         have_lua=yes
1648         AC_CHECK_HEADERS([lua.h lauxlib.h lualib.h],
1649           [],
1650           [ have_lua=no ] )
1651         AC_CHECK_LIB(  lua5.1 , luaL_newstate,
1652           [LUA_LIBS="-llua5.1"],
1653           AC_CHECK_LIB( lua51 , luaL_newstate,
1654             [LUA_LIBS="-llua51"],
1655             AC_CHECK_LIB( lua , luaL_newstate,
1656               [LUA_LIBS="-llua"],
1657               [ have_lua=no
1658                 AS_IF([test "x${enable_lua}" = "xyes"],
1659                   [AC_MSG_ERROR([lua >= 5.1 not found!])],
1660                   [AC_MSG_WARN([lua >= 5.1 not found!])])
1661               ], [-lm])
1662           )
1663         )
1664       ])
1665     ])
1666   if test "x${have_lua}" = "xyes" ;  then
1667      VLC_ADD_LIBS([lua],[$LUA_LIBS])
1668      VLC_ADD_CFLAGS([lua],[$LUA_CFLAGS])
1669   else
1670       AC_MSG_ERROR([Could not find lua. Lua is needed for some interfaces (rc, telnet, http) as well as many other custom scripts. Use --disable-lua to ignore this error.])
1671   fi
1672 fi
1673 AM_CONDITIONAL(BUILD_LUA, [test "${have_lua}" = "yes"])
1674
1675 dnl
1676 dnl HTTP daemon
1677 dnl
1678 AC_ARG_ENABLE(httpd,
1679   [  --enable-httpd          HTTP daemon (default enabled)])
1680 if test "${enable_httpd}" != "no"
1681 then
1682   VLC_ADD_PLUGIN([oldhttp])
1683   AC_DEFINE(ENABLE_HTTPD, 1, Define if you want the HTTP dameon support)
1684 fi
1685 AM_CONDITIONAL(BUILD_HTTPD, [test "${enable_httpd}" != "no"])
1686
1687 dnl
1688 dnl libproxy support
1689 dnl
1690 AC_ARG_ENABLE(libproxy,
1691   [  --enable-libproxy       libproxy support (default auto)])
1692 AS_IF([test "${enable_libproxy}" != "no"], [
1693   PKG_CHECK_MODULES(LIBPROXY, libproxy-1.0, [
1694     AC_DEFINE(HAVE_LIBPROXY, 1, [Define if libproxy is available])
1695     VLC_ADD_CFLAGS([access_http],[$LIBPROXY_CFLAGS])
1696     VLC_ADD_LIBS([access_http],[$LIBPROXY_LIBS])
1697   ], [
1698     AS_IF([test "x${enable_libproxy}" != "x"], [
1699       AC_MSG_ERROR([libproxy could not be found on your system])
1700     ])
1701   ])
1702 ])
1703
1704
1705 dnl
1706 dnl VideoLAN manager
1707 dnl
1708 AC_ARG_ENABLE(vlm,
1709   [  --enable-vlm            VideoLAN manager (default enabled)],,
1710   [enable_vlm="${enable_sout}"])
1711 AS_IF([test "${enable_vlm}" != "no"], [
1712   AS_IF([test "${enable_sout}" = "no"], [
1713     AC_MSG_ERROR([VLM requires the stream output. Do not use --disable-sout.])
1714   ])
1715   AC_DEFINE(ENABLE_VLM, 1, [Define if you want the VideoLAN manager support])
1716   VLC_ADD_PLUGIN([oldtelnet])
1717 ])
1718 AM_CONDITIONAL([ENABLE_VLM], [test "${enable_vlm}" != "no"])
1719
1720 dnl
1721 dnl Growl notification plugin
1722 dnl
1723 AC_ARG_ENABLE(growl,
1724   [  --enable-growl          growl notification plugin (default disabled)],,
1725   [enable_growl=no])
1726 AS_IF([test "${enable_growl}" != "no"], [
1727     VLC_ADD_PLUGIN([growl_udp])
1728     AC_CHECK_HEADERS(Growl/GrowlDefines.h, [
1729       VLC_ADD_PLUGIN([growl])
1730       VLC_ADD_LDFLAGS([growl], [-Wl,-framework,Growl,-framework,AppKit])
1731       VLC_ADD_OBJCFLAGS([growl], [-fobjc-exceptions] )
1732     ])
1733   ]
1734 )
1735
1736 dnl
1737 dnl Libnotify notification plugin
1738 dnl
1739 PKG_ENABLE_MODULES_VLC([NOTIFY], [], [libnotify], [libnotify notification], [auto])
1740
1741 dnl
1742 dnl Taglibplugin
1743 dnl
1744 AC_ARG_ENABLE(taglib,
1745   [  --disable-taglib        Taglib support (default enabled) ])
1746   AS_IF([test "${enable_taglib}" != "no"],[
1747     PKG_CHECK_MODULES(TAGLIB, taglib >= 1.5,
1748       [ VLC_ADD_PLUGIN([taglib])
1749         VLC_ADD_LIBS([taglib],[$TAGLIB_LIBS -lz])
1750        VLC_ADD_CXXFLAGS([taglib],[$TAGLIB_CFLAGS]) ],
1751       [AC_MSG_WARN(TagLib library not found)])
1752   ])
1753
1754 dnl
1755 dnl  Input plugins
1756 dnl
1757
1758 AC_ARG_WITH(,[Input plugins:])
1759
1760 dnl  live555 input
1761 dnl
1762 if test "${enable_livedotcom}"
1763 then
1764   AC_MSG_WARN(--{en|dis}able-livedotcom is deprecated. Use --{en|dis}able-live555 instead.)
1765 fi
1766 if test "${enable_livedotcom}" = "no"
1767 then
1768   enable_live555="no"
1769 fi
1770
1771 AC_ARG_ENABLE(live555,
1772 [  --enable-live555        live555 RTSP input plugin (default enabled)])
1773 if test "${enable_live555}" != "no"; then
1774   AC_ARG_WITH(live555-tree,
1775     [  --with-live555-tree=PATH live.com tree for static linking])
1776
1777   dnl
1778   dnl test for --with-live555-tree
1779   dnl
1780   if test "${with_livedotcom_tree}"
1781   then
1782     AC_MSG_WARN(--with-livedotcom-tree is deprecated. Use --with-live555-tree instead.)
1783   with_live555_tree="${with_livedotcom_tree}"
1784   fi
1785
1786   if test -z "${with_live555_tree}" -a "${CXX}" != ""; then
1787     AC_LANG_PUSH(C++)
1788     CPPFLAGS_save="${CPPFLAGS}"
1789     CPPFLAGS_live555="-I/usr/include/liveMedia -I/usr/include/groupsock -I/usr/include/BasicUsageEnvironment -I/usr/include/UsageEnvironment"
1790     if test "${SYS}" = "solaris"; then
1791       CPPFLAGS_live555="${CPPFLAGS_live555} -DSOLARIS"
1792     fi
1793     CPPFLAGS="${CPPFLAGS} ${CPPFLAGS_live555}"
1794
1795     AC_CHECK_HEADERS(liveMedia_version.hh, [
1796       AC_MSG_CHECKING(for liveMedia version >= 1214895600 )
1797       AC_EGREP_CPP(yes,
1798         [#include <liveMedia_version.hh>
1799          #ifdef LIVEMEDIA_LIBRARY_VERSION_INT
1800          #if LIVEMEDIA_LIBRARY_VERSION_INT < 1214895600
1801          yes
1802          #endif
1803          #endif],
1804         [AC_MSG_RESULT([no])
1805          AC_MSG_ERROR([Your version of liveMedia is too old: you may get a more recent one from http://www.live555.com/liveMedia.
1806 lternatively you can use --disable-live555 to disable the liveMedia plugin.])
1807       ],[
1808          AC_MSG_RESULT([yes])
1809          ])
1810     ])
1811      other_libs="-lgroupsock -lBasicUsageEnvironment -lUsageEnvironment"
1812      other_libs_pic="-lgroupsock_pic -lBasicUsageEnvironment_pic -lUsageEnvironment_pic"
1813       if test "${SYS}" = "mingw32"; then
1814         # add ws2_32 for closesocket, select, recv
1815         other_libs="$other_libs -lws2_32"
1816       elif test "${SYS}" = "mingwce"; then
1817         # add ws2 for closesocket, select, recv
1818         other_libs="$other_libs -lws2"
1819       fi
1820     dnl We need to check for pic because live555 don't provide shared libs
1821     dnl and we want to build a plugins so we need -fPIC on some arch.
1822     AC_CHECK_HEADERS(liveMedia.hh, [
1823       VLC_ADD_CXXFLAGS([live555], [${CPPFLAGS_live555}])
1824         AC_CHECK_LIB(liveMedia_pic, main, [
1825           VLC_ADD_PLUGIN([live555])
1826          VLC_ADD_LIBS([live555], [-lliveMedia_pic ${other_libs_pic}])
1827          ],[
1828         AC_CHECK_LIB(liveMedia, main, [
1829           VLC_ADD_PLUGIN([live555])
1830           VLC_ADD_LIBS([live555], [-lliveMedia ${other_libs}])
1831         ],[],[${other_libs}]) ],[${other_libs_pic}])
1832     ],[
1833        AC_MSG_WARN([The development files for liveMedia (live555) can't be found])
1834     ])
1835     CPPFLAGS="${CPPFLAGS_save}"
1836     AC_LANG_POP(C++)
1837   else
1838     AC_MSG_CHECKING(for liveMedia/libliveMedia.a in ${with_live555_tree})
1839     real_live555_tree="`cd ${with_live555_tree} 2>/dev/null && pwd`"
1840     if test -z "${real_live555_tree}"; then
1841       dnl  The given directory can't be found
1842       AC_MSG_RESULT(no)
1843       AC_MSG_ERROR([cannot cd to ${with_live555_tree}])
1844     fi
1845     if test -f "${real_live555_tree}/liveMedia/libliveMedia.a"; then
1846       AC_MSG_RESULT(${real_live555_tree}/liveMedia/libliveMedia.a)
1847
1848       AC_CHECK_HEADERS(${real_live555_tree}/liveMedia/include/liveMedia_version.hh,[
1849         AC_MSG_CHECKING(for liveMedia version >= 1214895600 )
1850         AC_EGREP_CPP(yes,
1851           [#include "${real_live555_tree}/liveMedia/include/liveMedia_version.hh"
1852            #ifdef LIVEMEDIA_LIBRARY_VERSION_INT
1853            #if LIVEMEDIA_LIBRARY_VERSION_INT < 1214895600
1854            yes
1855            #endif
1856            #endif],
1857           [AC_MSG_RESULT([no])
1858            AC_MSG_ERROR([Your version of liveMedia is too old: you may get a more recent one from http://www.live555.com/liveMedia.
1859 lternatively you can use --disable-live555 to disable the liveMedia plugin.])
1860         ],[
1861            AC_MSG_RESULT([yes])
1862            ])
1863       ])
1864
1865       VLC_ADD_PLUGIN([live555])
1866
1867       if test "${SYS}" = "mingw32"; then
1868         # add ws2_32 for closesocket, select, recv
1869         VLC_ADD_LIBS([live555],[-lws2_32])
1870       fi
1871
1872       VLC_ADD_LIBS([live555],[-L${real_live555_tree}/UsageEnvironment -lUsageEnvironment])
1873       VLC_ADD_LIBS([live555],[-L${real_live555_tree}/BasicUsageEnvironment -lBasicUsageEnvironment])
1874       VLC_ADD_LIBS([live555],[-L${real_live555_tree}/groupsock -lgroupsock])
1875       VLC_ADD_LIBS([live555],[-L${real_live555_tree}/liveMedia -lliveMedia])
1876
1877       VLC_ADD_CXXFLAGS([live555],[-I${real_live555_tree}/BasicUsageEnvironment/include])
1878       VLC_ADD_CXXFLAGS([live555],[-I${real_live555_tree}/groupsock/include])
1879       VLC_ADD_CXXFLAGS([live555],[-I${real_live555_tree}/liveMedia/include])
1880       VLC_ADD_CXXFLAGS([live555],[-I${real_live555_tree}/UsageEnvironment/include ])
1881       if test "${SYS}" = "solaris"; then
1882         VLC_ADD_CXXFLAGS([live555],[-DSOLARIS])
1883       fi
1884     else
1885       dnl  The given live555 wasn't built
1886         AC_MSG_RESULT(no)
1887       if test "${enable_live555}" = "yes"; then
1888         AC_MSG_ERROR([cannot find ${real_live555_tree}/liveMedia/libliveMedia.a, make sure you compiled live555 in ${with_live555_tree}])
1889       fi        
1890     fi
1891   fi
1892 fi
1893
1894 dnl
1895 dnl - special access module for dc1394 input
1896 dnl - dv module: digital video module check for libraw1394
1897 dnl
1898 PKG_ENABLE_MODULES_VLC([DC1394], [], [libraw1394 >= 2.0.1 libdc1394-2 >= 2.1.0], [dc1394 access module], [auto])
1899 PKG_ENABLE_MODULES_VLC([DV], [access_dv], [libraw1394 >= 2.0.1 libavc1394 >= 0.5.3], [DV input module], [auto])
1900
1901 dnl
1902 dnl dvdread module: check for libdvdread
1903 dnl
1904 AC_ARG_ENABLE(dvdread,
1905 [  --enable-dvdread        dvdread input module (default disabled)])
1906 if test "${enable_dvdread}" != "no"
1907 then
1908   AC_ARG_WITH(dvdread,
1909   [  --with-dvdread=PATH     libdvdread headers and libraries])
1910   AC_ARG_WITH(dvdread-tree,
1911   [  --with-dvdread-tree=PATH libdvdread tree for static linking])
1912
1913   dnl Temporary hack (yeah, sure ;)
1914   if test "${SYS}" = "mingw32" || test "${SYS}" = "darwin" || test "${SYS}" = "beos" ; then
1915       VLC_ADD_LIBS([dvdread],[-ldvdcss])
1916   fi
1917
1918   if test -z "${with_dvdread}"
1919   then
1920     if test -z "${with_dvdread_tree}"
1921     then
1922       AC_CHECK_HEADERS(dvdread/dvd_reader.h,
1923         [ VLC_ADD_PLUGIN([dvdread])
1924           VLC_ADD_LIBS([dvdread],[-ldvdread ${LIBS_dvdcss}])
1925         ],[
1926           AC_CHECK_HEADERS(libdvdread/dvd_reader.h,
1927             [ VLC_ADD_PLUGIN([dvdread])
1928               VLC_ADD_LIBS([dvdread],[-ldvdread ${LIBS_dvdcss}])
1929             ],[
1930               if test -n "${enable_dvdread}"
1931               then
1932               AC_MSG_ERROR([cannot find libdvdread headers])
1933              fi
1934            ])
1935         ])
1936     else
1937       AC_MSG_CHECKING(for libdvdread.a in ${with_dvdread_tree})
1938       real_dvdread_tree="`cd ${with_dvdread_tree} 2>/dev/null && pwd`"
1939       if test -z "${real_dvdread_tree}"
1940       then
1941         dnl  The given directory can't be found
1942         AC_MSG_RESULT(no)
1943         AC_MSG_ERROR([cannot cd to ${with_dvdread_tree}])
1944       fi
1945       if test -f "${real_dvdread_tree}/dvdread/.libs/libdvdread.a"
1946       then
1947         dnl  Use a custom libdvdread
1948         AC_MSG_RESULT(${real_dvdread_tree}/dvdread/.libs/libdvdread.a)
1949         VLC_ADD_PLUGIN([dvdread])
1950         VLC_ADD_LIBS([dvdread],[-L${real_dvdread_tree}/dvdread/.libs -ldvdread ${LIBS_dvdcss}])
1951         VLC_ADD_CPPFLAGS([dvdread],[-I${real_dvdread_tree}])
1952       else
1953         dnl  The given libdvdread wasn't built
1954         AC_MSG_RESULT(no)
1955         AC_MSG_ERROR([cannot find ${real_dvdread_tree}/dvdread/.libs/libdvdread.a, make sure you compiled libdvdread in ${with_dvdread_tree}])
1956       fi
1957     fi
1958   else
1959     AC_MSG_CHECKING(for dvdread headers in ${with_dvdread})
1960     if test -f ${with_dvdread}/include/dvdread/dvd_reader.h
1961     then
1962       dnl  Use ${with_dvdread}/include/dvdread/dvd_reader.h
1963       AC_MSG_RESULT(yes)
1964       VLC_ADD_PLUGIN([dvdread])
1965       VLC_ADD_LIBS([dvdread],[-L${with_dvdread}/lib -ldvdread ${LIBS_dvdcss}])
1966       VLC_ADD_CPPFLAGS([dvdread],[-I${with_dvdread}/include])
1967     else
1968       dnl  No libdvdread could be found, sorry
1969       AC_MSG_RESULT(no)
1970       AC_MSG_ERROR([cannot find ${with_dvdread}/include/dvdread/dvd_reader.h])
1971     fi
1972   fi
1973 fi
1974
1975 dnl
1976 dnl  libdvdnav plugin
1977 dnl
1978 AC_ARG_ENABLE(dvdnav,
1979   [  --enable-dvdnav         dvdnav input module (default enabled)])
1980 if test "${enable_dvdnav}" != "no"
1981 then
1982   dnl Same hack than dvdread
1983   if test "${SYS}" = "mingw32" || test "${SYS}" = "darwin" || test "${SYS}" = "beos" ; then
1984       VLC_ADD_LIBS([dvdnav],[-ldvdcss])
1985   fi
1986
1987   DVDNAV_PATH="${PATH}"
1988   AC_ARG_WITH(dvdnav-config-path,
1989     [  --with-dvdnav-config-path=PATH dvdnav-config path (default search in \$PATH)],
1990     [ if test "${with_dvdnav_config_path}" != "no"
1991       then
1992         DVDNAV_PATH="${with_dvdnav_config_path}:${PATH}"
1993       fi ])
1994   AC_PATH_PROG(DVDNAV_CONFIG, dvdnav-config, no, ${DVDNAV_PATH})
1995   if test "${DVDNAV_CONFIG}" != "no"
1996   then
1997     VLC_ADD_PLUGIN([dvdnav])
1998     VLC_ADD_CFLAGS([dvdnav],[`${DVDNAV_CONFIG} --cflags`])
1999     VLC_ADD_LIBS([dvdnav],[`${DVDNAV_CONFIG} --libs`])
2000   fi
2001 fi
2002
2003 dnl
2004 dnl  Windows DirectShow access module
2005 dnl
2006 AC_ARG_ENABLE(dshow,
2007   [  --enable-dshow          Win32 DirectShow support (default enabled on Win32)])
2008 if test "${enable_dshow}" != "no"
2009 then
2010   if test "${SYS}" = "mingw32"
2011   then
2012     AC_LANG_PUSH(C++)
2013       AC_CHECK_HEADERS(dshow.h,
2014       [ VLC_ADD_PLUGIN([dshow])
2015         VLC_ADD_CXXFLAGS([dshow],[])
2016         VLC_ADD_LIBS([dshow],[-lole32 -loleaut32 -luuid]) ])
2017     AC_LANG_POP(C++)
2018   fi
2019 fi
2020
2021 dnl
2022 dnl  Windows DirectShow BDA access module
2023 dnl
2024 AC_ARG_ENABLE(bda,
2025   AS_HELP_STRING([--enable-bda],[Win32 DirectShow BDA support (default
2026                   enabled on Win32)]))
2027 if test "${enable_bda}" != "no"
2028 then
2029   if test "${SYS}" = "mingw32"
2030   then
2031       AC_CHECK_HEADERS(dshow.h,
2032       [ VLC_ADD_PLUGIN([bda])
2033         VLC_ADD_CXXFLAGS([bda],[])
2034         VLC_ADD_LIBS([bda],[-lstrmiids -lole32 -loleaut32 -luuid]) ])
2035   fi
2036 fi
2037
2038
2039 dnl
2040 dnl  OpenCV wrapper and example filters
2041 dnl
2042 AC_ARG_ENABLE(opencv,
2043   [  --enable-opencv         OpenCV (computer vision) filter (default disabled)])
2044 if test "${enable_opencv}" = "yes" -a "${CXX}" != "";
2045 then
2046   AC_ARG_WITH(opencv-tree,
2047   [  --with-opencv-tree=PATH opencv tree for linking])
2048     if test "${SYS}" = "mingw32"
2049     then
2050       test -z "${with_opencv_tree}" && AC_MSG_ERROR([You have to specify --with-opencv-tree])
2051       AC_MSG_CHECKING(for opencv in ${with_opencv_tree})
2052       if test -f ${with_opencv_tree}/cv/include/cv.h -a -f ${with_opencv_tree}/cxcore/include/cxcore.h \
2053         -a -f ${with_opencv_tree}/cvaux/include/cvaux.h -a -f ${with_opencv_tree}/otherlibs/highgui/highgui.h
2054       then
2055         AC_MSG_RESULT(yes)
2056         VLC_ADD_PLUGIN([opencv_wrapper])
2057         VLC_ADD_LIBS([opencv_wrapper],[-L${with_opencv_tree}/lib -lcv -lcxcore -lcvaux -lhighgui])
2058         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])
2059         AC_LANG_PUSH(C++)
2060         VLC_ADD_PLUGIN([opencv_example])
2061         VLC_ADD_LIBS([opencv_example],[-L${with_opencv_tree}/lib -lcv -lcxcore -lcvaux -lhighgui])
2062         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])
2063         AC_LANG_POP(C++)
2064       else
2065         dnl  No opencv could be found, sorry
2066         AC_MSG_RESULT(no)
2067         AC_MSG_ERROR([cannot find opencv in ${with_opencv_tree}])
2068       fi
2069     else
2070       PKG_CHECK_MODULES(OPENCV, opencv,
2071         [
2072           VLC_ADD_PLUGIN([opencv_example])
2073           VLC_ADD_PLUGIN([opencv_wrapper])
2074           VLC_ADD_LIBS([opencv_example opencv_wrapper],[${OPENCV_LIBS}])
2075           VLC_ADD_CFLAGS([opencv_wrapper],[${OPENCV_CFLAGS}])
2076           VLC_ADD_CXXFLAGS([opencv_example],[${OPENCV_CFLAGS}])
2077         ],
2078         [AC_MSG_ERROR([libopencv not found!])]
2079       )
2080     fi
2081 fi
2082
2083
2084 dnl
2085 dnl  libsmbclient plugin
2086 dnl
2087 AC_ARG_ENABLE(smb,
2088   [  --enable-smb            smb input module (default enabled)])
2089 if test "${enable_smb}" != "no"; then
2090   AC_CHECK_HEADERS(libsmbclient.h,
2091     [ VLC_ADD_PLUGIN([access_smb])
2092       VLC_ADD_LIBS([access_smb],[-lsmbclient]) ],
2093     [ if test -n "${enable_smb}"; then
2094         AC_MSG_ERROR([cannot find libsmbclient headers])
2095      fi ])
2096 fi
2097
2098
2099 dnl
2100 dnl sftp access support
2101 dnl
2102 AC_ARG_ENABLE(sftp,
2103   [  --enable-sftp           sftp input access module (default disable)])
2104 if test "${enable_sftp}" = "yes"; then
2105   AC_CHECK_HEADERS(libssh2.h, [
2106     VLC_ADD_PLUGIN([access_sftp])
2107     VLC_ADD_LIBS([access_sftp], [-lssh2])
2108   ])
2109 fi
2110
2111 dnl
2112 dnl  libdvbpsi ts demux/mux
2113 dnl
2114 AC_ARG_ENABLE(dvbpsi,
2115   [  --enable-dvbpsi         dvbpsi ts mux and demux module (default enabled)])
2116 have_dvbpsi=no
2117 if test "${enable_dvbpsi}" != "no"
2118 then
2119   AC_ARG_WITH(dvbpsi,
2120   [  --with-dvbpsi=PATH      libdvbpsi headers and libraries])
2121   AC_ARG_WITH(dvbpsi,
2122   [  --with-dvbpsi-tree=PATH libdvbpsi tree for static linking])
2123   case "${with_dvbpsi}" in
2124   ""|yes)
2125     if test -z "${with_dvbpsi_tree}"
2126     then
2127       AC_CHECK_HEADERS(dvbpsi/dr.h,
2128         [ VLC_ADD_PLUGIN([ts])
2129           if test "${enable_sout}" != "no"; then
2130             VLC_ADD_PLUGIN([mux_ts])
2131           fi
2132           VLC_ADD_LIBS([mux_ts ts dvb],[-ldvbpsi])
2133           have_dvbpsi=yes],
2134         [  AC_MSG_WARN([cannot find libdvbpsi headers]) ],
2135         [#if defined( HAVE_STDINT_H )
2136 #   include <stdint.h>
2137 #elif defined( HAVE_INTTYPES_H )
2138 #   include <inttypes.h>
2139 #endif
2140 #include <dvbpsi/dvbpsi.h>
2141 #include <dvbpsi/descriptor.h>
2142 #include <dvbpsi/pat.h>
2143 #include <dvbpsi/pmt.h>])
2144     else
2145       AC_MSG_CHECKING(for libdvbpsi.a in ${with_dvbpsi_tree})
2146       real_dvbpsi_tree="`cd ${with_dvbpsi_tree} 2>/dev/null && pwd`"
2147       if test -z "${real_dvbpsi_tree}"
2148       then
2149         dnl  The given directory can't be found
2150         AC_MSG_RESULT(no)
2151         AC_MSG_ERROR([cannot cd to ${with_dvbpsi_tree}])
2152       fi
2153       if test -f "${real_dvbpsi_tree}/src/.libs/libdvbpsi.a"
2154       then
2155         dnl  Use a custom libdvbpsi
2156         AC_MSG_RESULT(${real_dvbpsi_tree}/src/.libs/libdvbpsi.a)
2157         VLC_ADD_PLUGIN([ts])
2158         if test "${enable_sout}" != "no"; then
2159           VLC_ADD_PLUGIN([mux_ts])
2160         fi
2161         VLC_ADD_CPPFLAGS([mux_ts ts dvb],[-I${real_dvbpsi_tree}/src])
2162         VLC_ADD_LIBS([mux_ts ts dvb],[${real_dvbpsi_tree}/src/.libs/libdvbpsi.a])
2163         have_dvbpsi=yes
2164       else
2165         dnl  The given libdvbpsi wasn't built
2166         AC_MSG_RESULT(no)
2167         AC_MSG_ERROR([cannot find ${real_dvbpsi_tree}/src/.libs/libdvbpsi.a, make sure you compiled libdvbpsi in ${with_dvbpsi_tree}])
2168       fi
2169     fi
2170   ;;
2171   no)
2172     dnl  Compile without dvbpsi
2173   ;;
2174   *)
2175     AC_MSG_CHECKING(for dvbpsi headers in ${with_dvbpsi})
2176     if test -z "${with_dvbpsi}"
2177     then
2178       LDFLAGS_test=""
2179       CPPFLAGS_test=""
2180     else
2181       LDFLAGS_test="-L${with_dvbpsi}/lib"
2182       CPPFLAGS_test="-I${with_dvbpsi}/include"
2183     fi
2184     CPPFLAGS="${CPPFLAGS_save} ${CPPFLAGS_test}"
2185     AC_CHECK_HEADERS([dvbpsi/dr.h],[
2186       VLC_ADD_PLUGIN([ts])
2187       if test "${enable_sout}" != "no"; then
2188         AC_CHECK_LIB(dvbpsi, dvbpsi_SDTServiceAddDescriptor,
2189            [VLC_ADD_PLUGIN([mux_ts])], [], [${LDFLAGS_test} -ldvbpsi])
2190       fi
2191       VLC_ADD_CPPFLAGS([mux_ts ts dvb],[${CPPFLAGS_test}])
2192       VLC_ADD_LIBS([mux_ts ts dvb],[${LDFLAGS_test} -ldvbpsi])
2193       have_dvbpsi=yes
2194     ],[
2195       if test -n "${enable_dvbpsi}"
2196       then
2197         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.6])
2198       fi
2199     ],
2200     [#if defined( HAVE_STDINT_H )
2201 #   include <stdint.h>
2202 #elif defined( HAVE_INTTYPES_H )
2203 #   include <inttypes.h>
2204 #endif
2205 #include <dvbpsi/dvbpsi.h>
2206 #include <dvbpsi/descriptor.h>
2207 #include <dvbpsi/pat.h>
2208 #include <dvbpsi/pmt.h>])
2209     CPPFLAGS="${CPPFLAGS_save}"
2210   ;;
2211   esac
2212   AC_CHECK_LIB(dvbpsi, dvbpsi_GenSDTSections, [
2213     AC_DEFINE(HAVE_DVBPSI_SDT, 1, [Define if you have dvbpsi_GenSDTSections.])
2214   ], [], [${LIBS_ts}])
2215
2216 fi
2217
2218 dnl
2219 dnl  Video4Linux plugin
2220 dnl
2221 AC_ARG_ENABLE(v4l,
2222   [  --enable-v4l            Video4Linux input support (default disabled)])
2223 if test "${enable_v4l}" = "yes"
2224 then
2225   AC_ARG_WITH(v4l,
2226     [  --with-v4l=PATH         path to a v4l-enabled kernel tree],[],[])
2227   if test "${with_v4l}" != "no" -a -n "${with_v4l}"
2228   then
2229     VLC_ADD_CPPFLAGS([v4l],[-I${with_v4l}/include])
2230   fi
2231
2232   CPPFLAGS="${CPPFLAGS_save} ${CPPFLAGS_v4l}"
2233   AC_CHECK_HEADERS(linux/videodev.h, [
2234     VLC_ADD_PLUGIN([v4l])
2235   ],[])
2236   CPPFLAGS="${CPPFLAGS_save}"
2237 fi
2238
2239 dnl
2240 dnl libv4l1 support for video4linux.
2241 dnl
2242 AC_ARG_ENABLE( libv4l,
2243   [  --enable-libv4l         Libv4l Video4Linux support (default enabled)])
2244 if test "${enable_libv4l}" != "no" -a "${enable_v4l}" != "no"
2245 then
2246     PKG_CHECK_MODULES( LIBV4L, libv4l1, [
2247       VLC_ADD_LDFLAGS([v4l],[${LIBV4L_LIBS}])
2248       VLC_ADD_CFLAGS([v4l],[${LIBV4L_CFLAGS}])
2249       AC_DEFINE(HAVE_LIBV4L1, 1, Define if libv4l is available)],
2250       AC_MSG_WARN([LibV4L support disabled because libv4l development headers were not found])
2251     )
2252 fi
2253
2254 dnl
2255 dnl  Video4Linux2 plugin
2256 dnl
2257 AC_ARG_ENABLE(v4l2,
2258   [  --enable-v4l2           Video4Linux2 input support (default enabled)])
2259 if test "${enable_v4l2}" != "no"
2260 then
2261   AC_ARG_WITH(v4l2,
2262     [  --with-v4l2=PATH        path to a v4l2-enabled kernel tree],[],[])
2263   if test "${with_v4l2}" != "no" -a -n "${with_v4l2}"
2264   then
2265     VLC_ADD_CPPFLAGS([v4l2],[-I${with_v4l2}/include])
2266   fi
2267
2268   CPPFLAGS="${CPPFLAGS_save} ${CPPFLAGS_v4l2}"
2269   AC_CHECK_HEADERS(linux/videodev2.h, [
2270     VLC_ADD_PLUGIN([v4l2])
2271   ],[])
2272   CPPFLAGS="${CPPFLAGS_save}"
2273 fi
2274
2275 dnl
2276 dnl libv4l2 support for video4linux.
2277 dnl
2278 AC_ARG_ENABLE( libv4l2,
2279   [  --enable-libv4l2        Libv4l2 Video4Linux2 support (default enabled)])
2280 if test "${enable_libv4l2}" != "no" -a "${enable_v4l2}" != "no"
2281 then
2282     PKG_CHECK_MODULES( LIBV4L2, libv4l2, [
2283       VLC_ADD_LDFLAGS([v4l2],[${LIBV4L2_LIBS}])
2284       VLC_ADD_CFLAGS([v4l2],[${LIBV4L2_CFLAGS}])
2285       AC_DEFINE(HAVE_LIBV4L2, 1, Define if libv4l2 is available)],
2286       AC_MSG_WARN([LibV4L2 support disabled because libv4l2 development headers were not found])
2287     )
2288 fi
2289
2290 dnl
2291 dnl  special access module for Hauppauge PVR cards
2292 dnl
2293 AC_ARG_ENABLE(pvr,
2294   [  --enable-pvr            PVR cards access module (default disabled)])
2295 if test "${enable_pvr}" = "yes"
2296 then
2297   VLC_ADD_PLUGIN([pvr])
2298   AC_ARG_WITH(videodev2,
2299     [  --with-videodev2=FILE   Location of videodev2.h file (default /usr/include/linux/videodev2.h)],[],[])
2300   if test "${with_videodev2}" != "no" -a -n "${with_videodev2}"
2301   then
2302     AC_DEFINE_UNQUOTED(VIDEODEV2_H_FILE, "${with_videodev2}", [Location of videodev2.h])
2303   fi
2304
2305   AC_CACHE_CHECK([for new linux/videodev2.h],
2306       [ac_cv_new_linux_videodev2_h],
2307       [AC_TRY_COMPILE([
2308           #include <sys/types.h>
2309           #   ifdef VIDEODEV2_H_FILE
2310           #   include VIDEODEV2_H_FILE
2311           #   else
2312           #   include <linux/videodev2.h>
2313           #   endif
2314           ],
2315           [struct v4l2_ext_controls ctrls; ctrls.ctrl_class = V4L2_CTRL_CLASS_MPEG; ],
2316           ac_cv_new_linux_videodev2_h=yes,
2317           ac_cv_new_linux_videodev2_h=no)])
2318   if test "${ac_cv_new_linux_videodev2_h}" != "no"; then
2319     AC_DEFINE(HAVE_NEW_LINUX_VIDEODEV2_H, 1, [Define if new linux/videodev2.h present])
2320   fi
2321 fi
2322
2323 dnl
2324 dnl  gnomeVFS access module
2325 dnl
2326 PKG_ENABLE_MODULES_VLC([GNOMEVFS], [access_gnomevfs], [gnome-vfs-2.0], [GnomeVFS access module], [auto])
2327
2328 dnl
2329 dnl  VCDX modules
2330 dnl
2331 AC_ARG_ENABLE(vcdx,
2332   [  --enable-vcdx           VCD with navigation via libvcdinfo (default disabled)])
2333
2334 if test "${enable_vcdx}" = "yes"
2335 then
2336         PKG_CHECK_MODULES(LIBCDIO, [libcdio >= 0.78.2 libiso9660 >= 0.72],
2337           [VLC_ADD_LIBS([vcdx],[$LIBCDIO_LIBS])
2338                  VLC_ADD_CFLAGS([vcdx],[$LIBCDIO_CFLAGS])],
2339                 [AC_MSG_ERROR([vcdx plugin requires libcdio >= 0.78.2 and libiso9660 >= 0.72])])
2340         PKG_CHECK_MODULES(LIBVCDINFO, libvcdinfo >= 0.7.22,
2341                 [VLC_ADD_LIBS([vcdx],[$LIBVCDINFO_LIBS])
2342                  VLC_ADD_CFLAGS([vcdx],[$LIBVCDINFO_CFLAGS])],
2343           [AC_MSG_ERROR([vcdx plugin requires libvcdinfo library >= 0.7.22])])
2344         VLC_ADD_PLUGIN([vcdx])
2345 fi
2346
2347 dnl
2348 dnl  Built-in CD-DA and VCD module
2349 dnl
2350 AC_ARG_ENABLE(cdda,
2351   [  --enable-cdda           audio CD via built-in VCD (default enabled)])
2352
2353 AC_ARG_ENABLE(vcd,
2354   [  --enable-vcd            built-in VCD (default enabled)])
2355
2356 AC_ARG_ENABLE(libcddb,
2357   [  --enable-libcddb        CDDB support for libcdio audio CD (default enabled)])
2358
2359 if test "${enable_vcd}" != "no"
2360 then
2361   AC_MSG_CHECKING(for cdrom_msf0 in linux/cdrom.h)
2362   AC_EGREP_HEADER(cdrom_msf0,linux/cdrom.h,[
2363     AC_MSG_RESULT(yes)
2364     VLC_ADD_PLUGIN([vcd])
2365     VLC_ADD_PLUGIN([cdda])
2366   ],[
2367     AC_MSG_RESULT(no)
2368   ])
2369
2370   AC_MSG_CHECKING(for scsireq in sys/scsiio.h)
2371   AC_EGREP_HEADER(scsireq,sys/scsiio.h,[
2372     AC_MSG_RESULT(yes)
2373     VLC_ADD_PLUGIN([vcd])
2374     VLC_ADD_PLUGIN([cdda])
2375     AC_DEFINE(HAVE_SCSIREQ_IN_SYS_SCSIIO_H, 1, For NetBSD VCD support)
2376   ],[
2377     AC_MSG_RESULT(no)
2378   ])
2379
2380   AC_MSG_CHECKING(for ioc_toc_header in sys/cdio.h)
2381   AC_EGREP_HEADER(ioc_toc_header ,sys/cdio.h,[
2382     AC_MSG_RESULT(yes)
2383     VLC_ADD_PLUGIN([vcd])
2384     VLC_ADD_PLUGIN([cdda])
2385     AC_DEFINE(HAVE_IOC_TOC_HEADER_IN_SYS_CDIO_H, 1, For FreeBSD VCD support)
2386   ],[
2387     AC_MSG_RESULT(no)
2388   ])
2389
2390   if test "${SYS}" = "bsdi" -o "${SYS}" = "mingw32"
2391   then
2392     VLC_ADD_PLUGIN([vcd])
2393     VLC_ADD_PLUGIN([cdda])
2394   fi
2395
2396   if test "${SYS}" = "darwin"
2397   then
2398     VLC_ADD_PLUGIN([vcd])
2399     VLC_ADD_PLUGIN([cdda])
2400     VLC_ADD_LDFLAGS([vcd vcdx cdda],[-Wl,-framework,IOKit,-framework,CoreFoundation])
2401     VLC_ADD_LIBS([vcdx cdda],[-liconv])
2402   fi
2403
2404   if test "$enable_libcddb" != "no"; then
2405     PKG_CHECK_MODULES(LIBCDDB, libcddb >= 0.9.5, [
2406       HAVE_LIBCDDB=yes
2407       AC_DEFINE(HAVE_LIBCDDB, 1, [Define this if you have libcddb installed])
2408       VLC_ADD_LIBS([cdda],[$LIBCDDB_LIBS])
2409       VLC_ADD_CFLAGS([cdda],[$LIBCDDB_CFLAGS])
2410       ],:
2411       [AC_MSG_WARN(new enough libcddb not found. CDDB access disabled)
2412       HAVE_LIBCDDB=no])
2413   fi
2414 fi
2415
2416 dnl
2417 dnl  DVB-S/DVB-T/DVB-C satellite/teresterial/cable input using v4l2
2418 dnl
2419 AC_ARG_ENABLE(dvb,
2420   [  --enable-dvb            DVB-S/T/C card support (default enabled)])
2421
2422 if test "${enable_dvb}" != "no"
2423 then
2424     AS_IF([test "${have_dvbpsi}" = "yes" ],[
2425     AC_ARG_WITH(dvb,
2426      [  --with-dvb=PATH         path to a dvb- and v4l2-enabled kernel tree],[],[])
2427      if test "${with_dvb}" != "no" -a -n "${with_dvb}"
2428      then
2429        VLC_ADD_CFLAGS([dvb],[-I${with_dvb}/include])
2430      fi
2431      CPPFLAGS="${CPPFLAGS_save} -I${with_dvb}/include"
2432      AC_CHECK_HEADERS(linux/dvb/version.h linux/dvb/frontend.h, [
2433      VLC_ADD_PLUGIN([dvb])
2434      ],[AC_MSG_WARN(linux-dvb headers not found, dvb disabled)])
2435      CPPFLAGS="${CPPFLAGS_save}"
2436    ],[
2437      AC_MSG_WARN([the dvb access module requires libdvbpsi])
2438     ])
2439 fi
2440
2441 dnl
2442 dnl  Screen capture module
2443 dnl
2444 AC_ARG_ENABLE(screen,
2445   [  --enable-screen         Screen capture support (default enabled)])
2446 if test "${enable_screen}" != "no"; then
2447   if test "${SYS}" = "darwin"; then
2448     AC_CHECK_HEADERS(OpenGL/gl.h, [
2449       AC_CHECK_HEADERS(ApplicationServices/ApplicationServices.h, [
2450         VLC_ADD_PLUGIN([screen])
2451         VLC_ADD_LDFLAGS([screen],[-Wl,-framework,OpenGL,-framework,ApplicationServices])
2452       ])
2453     ])
2454   elif test "${SYS}" = "mingw32"; then
2455     VLC_ADD_PLUGIN([screen])
2456     VLC_ADD_LIBS([screen],[-lgdi32])
2457   elif test "${SYS}" = "mingwce"; then
2458     CPPFLAGS="${CPPFLAGS_save}"
2459   elif test "${SYS}" = "beos"; then
2460     VLC_ADD_PLUGIN([screen])
2461     VLC_ADD_CXXFLAGS([screen],[])
2462     VLC_ADD_LIBS([screen],[-lbe])
2463   fi
2464 fi
2465
2466 dnl
2467 dnl  ipv6 plugin
2468 dnl
2469 have_ipv6=no
2470 AC_CHECK_FUNCS(inet_pton,[have_ipv6=yes],[
2471   AC_CHECK_LIB(nsl,inet_pton, [have_ipv6=yes])
2472 ])
2473
2474 AS_IF([test "${have_ipv6}" = "yes"], [
2475   AC_DEFINE(HAVE_INET_PTON, 1, [Define to 1 if you have inet_pton().])])
2476
2477
2478 AC_CHECK_FUNCS(inet_ntop,[
2479   AC_DEFINE(HAVE_INET_NTOP, 1, [Define to 1 if you have inet_ntop().])])
2480
2481
2482 dnl
2483 dnl  ogg demux plugin
2484 dnl
2485 PKG_ENABLE_MODULES_VLC([OGG], [], [ogg >= 1.0], [Ogg demux support], [auto])
2486 if test "${enable_sout}" != "no"; then
2487     PKG_ENABLE_MODULES_VLC([MUX_OGG], [], [ogg >= 1.0], [Ogg demux support], [auto])
2488 fi
2489
2490 if test "${enable_sout}" != "no"; then
2491 dnl Check for libshout
2492 PKG_ENABLE_MODULES_VLC([SHOUT], [access_output_shout], [shout >= 2.1], [libshout output plugin], [auto])
2493 fi
2494
2495 dnl
2496 dnl  matroska demux plugin
2497 dnl
2498 AC_ARG_ENABLE(mkv,
2499   [  --enable-mkv            Matroska demux support (default enabled)])
2500 if test "${enable_mkv}" != "no" -a "${CXX}" != ""; then
2501   AC_LANG_PUSH(C++)
2502   AC_CHECK_HEADERS(ebml/EbmlVersion.h, [
2503     AC_MSG_CHECKING(for libebml version >= 0.7.7)
2504     AC_EGREP_CPP(yes,
2505       [#include <ebml/EbmlVersion.h>
2506        #ifdef LIBEBML_VERSION
2507        #if LIBEBML_VERSION >= 0x000706
2508        yes
2509        #endif
2510        #endif],
2511       [AC_MSG_RESULT([yes])
2512         AC_CHECK_HEADERS(matroska/KaxVersion.h, [
2513           AC_MSG_CHECKING(for libmatroska version >= 0.8.0)
2514           AC_EGREP_CPP(yes,
2515             [#include <matroska/KaxVersion.h>
2516              #ifdef LIBMATROSKA_VERSION
2517              #if LIBMATROSKA_VERSION >= 0x000705
2518              yes
2519              #endif
2520              #endif],
2521             [AC_MSG_RESULT([yes])
2522               AC_CHECK_HEADERS(matroska/KaxAttachments.h)
2523               VLC_ADD_CXXFLAGS([mkv],[])
2524               if test "${SYS}" = "darwin"; then
2525                 VLC_ADD_CXXFLAGS([mkv],[-O1])
2526               fi
2527               AC_CHECK_LIB(ebml_pic, main, [
2528                 VLC_ADD_PLUGIN([mkv])
2529                 VLC_ADD_LIBS([mkv],[-lmatroska -lebml_pic])
2530               ],
2531                 AC_CHECK_LIB(ebml, main, [
2532                   VLC_ADD_PLUGIN([mkv])
2533                   VLC_ADD_LIBS([mkv],[-lmatroska -lebml])
2534                 ])
2535               )
2536             ],
2537             [AC_MSG_RESULT([no])
2538               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.])
2539           ])
2540         ])
2541       ],
2542       [AC_MSG_RESULT([no])
2543         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.])
2544     ])
2545   ])
2546   AC_LANG_POP(C++)
2547 fi
2548
2549 dnl
2550 dnl  modplug demux plugin
2551 dnl
2552 AC_ARG_ENABLE(mod,
2553   [  --enable-mod            Mod demux support (default enabled)])
2554 if test "${enable_mod}" != "no"
2555 then
2556   AC_ARG_WITH(mod-tree,
2557   [  --with-mod-tree=PATH    mod tree for static linking])
2558   if test -n "${with_mod_tree}"
2559   then
2560     AC_MSG_CHECKING(for libmodplug.a in ${with_mod_tree})
2561     real_mod_tree="`cd ${with_mod_tree} 2>/dev/null && pwd`"
2562     if test -z "${real_mod_tree}"
2563     then
2564       dnl  The given directory can't be found
2565       AC_MSG_RESULT(no)
2566       AC_MSG_ERROR([cannot cd to ${with_mod_tree}])
2567     fi
2568     if test -f "${real_mod_tree}/src/.libs/libmodplug.a"
2569     then
2570       dnl  Use a custom mod
2571       AC_MSG_RESULT(${real_mod_tree}/src/.libs/libmodplug.a)
2572       VLC_ADD_PLUGIN([mod])
2573       VLC_ADD_LIBS([mod],[${real_mod_tree}/src/.libs/libmodplug.a -lstdc++])
2574       VLC_ADD_CXXFLAGS([mod],[-I${real_mod_tree}/include])
2575     else
2576       dnl  The given mod wasn't built
2577       AC_MSG_RESULT(no)
2578       AC_MSG_ERROR([cannot find ${real_mod_tree}/src/.libs/libmodplug.a, make sure you compiled mod in ${with_mod_tree}])
2579     fi
2580   else
2581     PKG_CHECK_MODULES(LIBMODPLUG, libmodplug >= 0.8,
2582         [ VLC_ADD_PLUGIN([mod])
2583           VLC_ADD_CXXFLAGS([mod],[$LIBMODPLUG_CFLAGS])
2584           VLC_ADD_LIBS([mod],[$LIBMODPLUG_LIBS])
2585         ],[AC_MSG_WARN([libmodplug not found!])])
2586   fi
2587 fi
2588
2589 dnl
2590 dnl  mpc demux plugin
2591 dnl
2592 AC_ARG_ENABLE(mpc,
2593   [  --enable-mpc            Mpc demux support (default enabled)])
2594 if test "${enable_mpc}" != "no"
2595 then
2596   AC_CHECK_HEADERS([mpc/mpcdec.h], [
2597     VLC_ADD_PLUGIN([mpc])
2598     VLC_ADD_LIBS([mpc],[-lmpcdec])],
2599     [AC_CHECK_HEADERS([mpcdec/mpcdec.h], [
2600     VLC_ADD_PLUGIN([mpc])
2601     VLC_ADD_LIBS([mpc],[-lmpcdec])])])
2602 fi
2603
2604 dnl
2605 dnl  game music emu demux plugin
2606 dnl
2607 AC_ARG_ENABLE(gme,
2608   [  --enable-gme            Game Music Emu demux support (default enabled)])
2609 if test "${enable_gme}" != "no" -a "${CXX}" != "";
2610 then
2611   AC_LANG_PUSH(C++)
2612   AC_ARG_WITH(gme-tree,
2613   [  --with-gme-tree=PATH    gme tree for static linking])
2614   if test -n "${with_gme_tree}"
2615   then
2616     AC_MSG_CHECKING(for libgme.a in ${with_mod_tree})
2617     real_gme_tree="`cd ${with_gme_tree} 2>/dev/null && pwd`"
2618     if test -z "${real_gme_tree}"
2619     then
2620       dnl  The given directory can't be found
2621       AC_MSG_RESULT(no)
2622       AC_MSG_ERROR([cannot cd to ${with_gme_tree}])
2623     fi
2624     if test -f "${real_gme_tree}/gme/libgme.a"
2625     then
2626       dnl  Use a custom gme
2627       AC_MSG_RESULT(${real_gme_tree}/gme/libgme.a)
2628       VLC_ADD_PLUGIN([gme])
2629       VLC_ADD_LIBS([gme],[${real_gme_tree}/gme/libgme.a])
2630       VLC_ADD_CXXFLAGS([gme],[-I${real_gme_tree}/gme])
2631     else
2632       dnl  The given gme wasn't built
2633       AC_MSG_RESULT(no)
2634       AC_MSG_ERROR([cannot find ${real_mod_tree}/gme/libgme.a, make sure you compiled gme in ${with_gme_tree}])
2635     fi
2636   else
2637       AC_MSG_WARN([only static linking is available, you must provide a gme-tree])
2638   fi
2639   AC_LANG_POP(C++)
2640 fi
2641
2642 dnl
2643 dnl  Codec plugins
2644 dnl
2645
2646 AC_ARG_WITH(,[Codec plugins:])
2647
2648 dnl
2649 dnl wmafixed plugin
2650 dnl
2651 AC_ARG_ENABLE(wma-fixed,
2652   [  --enable-wma-fixed      libwma-fixed module (default disabled)])
2653 if test "${enable_wma_fixed}" = "yes"
2654 then
2655   VLC_ADD_PLUGIN([wma_fixed])
2656 fi
2657
2658 dnl
2659 dnl shine fixed point mp3 encoder
2660 dnl
2661 AC_ARG_ENABLE(shine,
2662   [  --enable-shine          shine mp3 encoding module (default disabled)])
2663 if test "${enable_shine}" = "yes"
2664 then
2665   VLC_ADD_PLUGIN([shine])
2666 fi
2667
2668 dnl
2669 dnl  mad plugin
2670 dnl
2671 AC_ARG_ENABLE(mad,
2672   [  --enable-mad            libmad module (default enabled)])
2673 if test "${enable_mad}" != "no"
2674 then
2675   AC_ARG_WITH(mad,
2676     [  --with-mad=PATH         path to libmad],[],[])
2677   if test "${with_mad}" != "no" -a -n "${with_mad}"
2678   then
2679     VLC_ADD_CPPFLAGS([mpgatofixed32],[-I${with_mad}/include])
2680     VLC_ADD_LIBS([mpgatofixed32],[-L${with_mad}/lib])
2681   fi
2682
2683   AC_ARG_WITH(mad-tree,
2684     [  --with-mad-tree=PATH    mad tree for static linking],[],[])
2685   if test "${with_mad_tree}" != "no" -a -n "${with_mad_tree}"
2686   then
2687     real_mad_tree="`cd ${with_mad_tree} 2>/dev/null && pwd`"
2688     if test -z "${real_mad_tree}"
2689     then
2690       dnl  The given directory can't be found
2691       AC_MSG_RESULT(no)
2692       AC_MSG_ERROR([${with_mad_tree} directory doesn't exist])
2693     fi
2694     dnl  Use a custom libmad
2695     AC_MSG_CHECKING(for mad.h in ${real_mad_tree})
2696     if test -f ${real_mad_tree}/mad.h
2697     then
2698       AC_MSG_RESULT(yes)
2699       VLC_ADD_CPPFLAGS([mpgatofixed32],[-I${real_mad_tree}])
2700       VLC_ADD_LIBS([mpgatofixed32],[-L${real_mad_tree}/.libs])
2701       LDFLAGS="${LDFLAGS_save} ${LIBS_mpgatofixed32}"
2702       AC_CHECK_LIB(mad, mad_bit_init, [
2703         VLC_ADD_PLUGIN([mpgatofixed32])
2704         VLC_ADD_LIBS([mpgatofixed32],[-lmad])
2705         ],[ AC_MSG_ERROR([the specified tree hasn't been compiled ])
2706       ],[])
2707       LDFLAGS="${LDFLAGS_save}"
2708     else
2709       AC_MSG_RESULT(no)
2710       AC_MSG_ERROR([the specified tree doesn't have mad.h])
2711     fi
2712   else
2713     CPPFLAGS="${CPPFLAGS_save} ${CPPFLAGS_mpgatofixed32}"
2714     LDFLAGS="${LDFLAGS_save} ${LIBS_mpgatofixed32}"
2715     AC_CHECK_HEADERS(mad.h, ,
2716       [ 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.]) ])
2717     AC_CHECK_LIB(mad, mad_bit_init, [
2718       VLC_ADD_PLUGIN([mpgatofixed32])
2719       VLC_ADD_LIBS([mpgatofixed32],[-lmad])],
2720       [ AC_MSG_ERROR([Cannot find libmad library...]) ])
2721     CPPFLAGS="${CPPFLAGS_save}"
2722     LDFLAGS="${LDFLAGS_save}"
2723   fi
2724 fi
2725
2726 dnl
2727 dnl   libid3tag support (FIXME!!! doesn't work with new input)
2728 dnl
2729 AC_ARG_ENABLE( id3tag,
2730 [  --disable-id3tag        id3tag metadata reader plugin (default disabled)])
2731 AS_IF([test "${enable_id3tag}" = "yes"], [
2732   AC_CHECK_HEADERS(id3tag.h, [
2733       AS_IF([test "${have_zlib}" = "yes"],[
2734           VLC_ADD_LIBS([id3tag],[-lid3tag -lz])
2735           VLC_ADD_PLUGIN([id3tag])
2736        ])
2737     ])
2738 ])
2739
2740 AC_ARG_ENABLE(merge-ffmpeg,
2741 [  --enable-merge-ffmpeg   merge FFmpeg-based plugins (default disabled)],, [
2742   enable_merge_ffmpeg="no"
2743 ])
2744 AM_CONDITIONAL([MERGE_FFMPEG], [test "$enable_merge_ffmpeg" != "no"])
2745
2746 dnl
2747 dnl  avcodec decoder/encoder plugin
2748 dnl
2749
2750 if test "${with_ffmpeg_tree}"
2751 then
2752   AC_MSG_WARN([--with-ffmpeg-tree is deprecated. Use PKG_CONFIG_PATH instead.])
2753 fi
2754
2755 AC_ARG_ENABLE(avcodec,
2756 [  --enable-avcodec        libavcodec codec (default enabled)])
2757 if test "${enable_avcodec}" != "no"
2758 then
2759   PKG_CHECK_MODULES(AVCODEC,[libavcodec >= 51.48.0 libavutil],
2760     [
2761       VLC_SAVE_FLAGS
2762       CPPFLAGS="${CPPFLAGS} ${AVCODEC_CFLAGS}"
2763       CFLAGS="${CFLAGS} ${AVCODEC_CFLAGS}"
2764       AC_CHECK_HEADERS(libavcodec/avcodec.h ffmpeg/avcodec.h)
2765       AC_CHECK_HEADERS(libavutil/avutil.h ffmpeg/avutil.h)
2766       VLC_ADD_PLUGIN([avcodec])
2767       VLC_ADD_LIBS([avcodec],[$AVCODEC_LIBS])
2768       VLC_ADD_CFLAGS([avcodec],[$AVCODEC_CFLAGS])
2769       VLC_RESTORE_FLAGS
2770       have_avcodec="yes"
2771     ],[
2772       AC_MSG_ERROR([Could not find libavcodec or libavutil. Use --disable-avcodec to ignore this error.])
2773   ])
2774 fi
2775
2776 dnl
2777 dnl libva needs avcodec
2778 dnl
2779 AC_ARG_ENABLE(libva,
2780   [  --enable-libva          libva VAAPI support (default auto)])
2781
2782 AS_IF([test "${enable_libva}" != "no"], [
2783   AS_IF([test "x${have_avcodec}" = "xyes"], [
2784     PKG_CHECK_MODULES(LIBVA, [libva libva-x11],
2785       [
2786         VLC_SAVE_FLAGS
2787         CPPFLAGS="${CPPFLAGS} ${AVCODEC_CFLAGS}"
2788         CFLAGS="${CFLAGS} ${AVCODEC_CFLAGS}"
2789         AC_CHECK_HEADERS(libavcodec/vaapi.h, [
2790            VLC_ADD_LIBS([avcodec],[$LIBVA_LIBS])
2791            VLC_ADD_CFLAGS([avcodec],[$LIBVA_CFLAGS])
2792            AC_DEFINE(HAVE_AVCODEC_VAAPI, 1, [Define if avcodec has to be built with VAAPI support.])
2793            echo "VAAPI acceleration activated"
2794         ],[
2795         AS_IF([test "${enable_libva}" == "yes"],
2796               [AC_MSG_ERROR([libva is present but libavcodec/vaapi.h is missing])],
2797               [AC_MSG_WARN([libva is present but libavcodec/vaapi.h is missing ])])
2798         ])
2799         VLC_RESTORE_FLAGS
2800       ],[
2801         AS_IF([test "${enable_libva}" == "yes"],
2802               [AC_MSG_ERROR([Could not find required libva.])],
2803               [AC_MSG_WARN([libva not found  ])])
2804       ])
2805   ],[
2806     AS_IF([test "x${enable_libva}" != "x"], [
2807       AC_MSG_ERROR([--enable-libva and --disable-avcodec options are mutually exclusive.])
2808     ])
2809   ])
2810 ])
2811
2812 dnl
2813 dnl dxva2 needs avcodec
2814 dnl
2815 AC_ARG_ENABLE(dxva2,
2816   [  --enable-dxva2          DxVA2  support (default auto)])
2817
2818 AS_IF([test "${enable_dxva2}" != "no"], [
2819   if test "${SYS}" = "mingw32"; then
2820   AS_IF([test "x${have_avcodec}" = "xyes"], [
2821     AC_CHECK_HEADERS(dxva2api.h, 
2822       [
2823         AC_CHECK_HEADERS(libavcodec/dxva2.h, [
2824            VLC_ADD_LIBS([avcodec],[-lole32 -lshlwapi -luuid])
2825            AC_DEFINE(HAVE_AVCODEC_DXVA2, 1, [Define if avcodec has to be built with DxVA2 support.])
2826            echo "DxVA2 acceleration activated"
2827         ],[
2828         AS_IF([test "${enable_dxva2}" == "yes"],
2829               [AC_MSG_ERROR([dxva2 is present but libavcodec/dxva2.h is missing])],
2830               [AC_MSG_WARN([dxva2 is present but libavcodec/dxva2.h is missing ])])
2831         ])
2832       ],[
2833         AS_IF([test "${enable_dxva2}" == "yes"],
2834               [AC_MSG_ERROR([Could not find required dxva2api.h])],
2835               [AC_MSG_WARN([dxva2api.h not found])])
2836       ])
2837   ],[
2838     AS_IF([test "x${enable_dxva2}" != "x"], [
2839       AC_MSG_ERROR([--enable-dxva2 and --disable-avcodec options are mutually exclusive.])
2840     ])
2841   ])
2842   fi
2843 ])
2844
2845
2846 dnl
2847 dnl stream_out switcher needs libavcodec
2848 dnl
2849 AC_ARG_ENABLE(switcher,
2850   [  --enable-switcher       Stream-out switcher plugin (default disabled)])
2851 AS_IF([test "${enable_switcher}" = "yes"], [
2852   AS_IF([test "x${have_avcodec}" = "xyes"], [
2853     VLC_ADD_PLUGIN([stream_out_switcher])
2854     VLC_ADD_LIBS([stream_out_switcher],[$AVCODEC_LIBS $AVUTIL_LIBS])
2855     VLC_ADD_CFLAGS([stream_out_switcher],[$AVCODEC_CFLAGS $AVUTIL_CFLAGS])
2856   ],[AC_MSG_ERROR([Stream_out switcher depends on avcodec])
2857   ])
2858 ])
2859
2860
2861 dnl
2862 dnl  avformat demuxer/muxer plugin
2863 dnl
2864
2865 AC_ARG_ENABLE(avformat,
2866 [  --enable-avformat       libavformat containers (default enabled)])
2867 if test "${enable_avformat}" != "no"
2868 then
2869   PKG_CHECK_MODULES(AVFORMAT,[libavformat libavutil],
2870     [
2871       VLC_SAVE_FLAGS
2872       CPPFLAGS="${CPPFLAGS} ${AVFORMAT_CFLAGS}"
2873       CFLAGS="${CFLAGS} ${AVFORMAT_CFLAGS}"
2874       AC_CHECK_HEADERS(libavformat/avformat.h ffmpeg/avformat.h)
2875       AC_CHECK_HEADERS(libavutil/avutil.h ffmpeg/avutil.h)
2876       AS_IF([test "$enable_merge_ffmpeg" = "no"], [
2877         VLC_ADD_PLUGIN([avformat])
2878         VLC_ADD_LIBS([avformat],[$AVFORMAT_LIBS $AVUTIL_LIBS])
2879         VLC_ADD_CFLAGS([avformat],[$AVFORMAT_CFLAGS $AVUTIL_CFLAGS])
2880
2881         VLC_ADD_PLUGIN([access_avio])
2882         VLC_ADD_LIBS([access_avio],[$AVFORMAT_LIBS $AVUTIL_LIBS])
2883         VLC_ADD_CFLAGS([access_avio],[$AVFORMAT_CFLAGS $AVUTIL_CFLAGS])
2884       ], [
2885         VLC_ADD_LIBS([avcodec],[$AVFORMAT_LIBS $AVUTIL_LIBS])
2886         VLC_ADD_CFLAGS([avcodec],[$AVFORMAT_CFLAGS $AVUTIL_CFLAGS])
2887       ])
2888       VLC_RESTORE_FLAGS
2889     ],[
2890       AC_MSG_ERROR([Could not find libavformat or libavutil. Use --disable-avformat to ignore this error.])
2891   ])
2892 fi
2893
2894 dnl
2895 dnl  swscale image scaling and conversion plugin
2896 dnl
2897
2898 AC_ARG_ENABLE(swscale,
2899   AS_HELP_STRING([--enable-swscale],[libswscale image scaling and conversion
2900                   (default enabled)]))
2901 if test "${enable_swscale}" != "no"
2902 then
2903   PKG_CHECK_MODULES(SWSCALE,[libswscale],
2904     [
2905       VLC_SAVE_FLAGS
2906       CPPFLAGS="${CPPFLAGS} ${SWSCALE_CFLAGS}"
2907       CFLAGS="${CFLAGS} ${SWSCALE_CFLAGS}"
2908       AC_CHECK_HEADERS(libswscale/swscale.h ffmpeg/swscale.h)
2909       VLC_ADD_PLUGIN([swscale])
2910       VLC_ADD_LIBS([swscale],[$SWSCALE_LIBS])
2911       VLC_ADD_CFLAGS([swscale],[$SWSCALE_CFLAGS])
2912       VLC_RESTORE_FLAGS
2913     ],[
2914       AC_MSG_ERROR([Could not find libswscale. Use --disable-swscale to ignore this error. Proper software scaling and some video chroma conversion will be missing.])
2915   ])
2916 fi
2917
2918 dnl
2919 dnl  postproc plugin
2920 dnl
2921
2922 AC_ARG_ENABLE(postproc,
2923 [  --enable-postproc       libpostproc image post-processing (default enabled)])
2924 if test "${enable_postproc}" != "no"
2925 then
2926   PKG_CHECK_MODULES(POSTPROC,[libpostproc libavutil],
2927     [
2928       VLC_SAVE_FLAGS
2929       CPPFLAGS="${CPPFLAGS} ${POSTPROC_CFLAGS}"
2930       CFLAGS="${CFLAGS} ${POSTPROC_CFLAGS}"
2931       AC_CHECK_HEADERS(postproc/postprocess.h)
2932       VLC_ADD_PLUGIN([postproc])
2933       VLC_ADD_LIBS([postproc],[$POSTPROC_LIBS $AVUTIL_LIBS])
2934       VLC_ADD_CFLAGS([postproc],[$POSTPROC_CFLAGS $AVUTIL_CFLAGS])
2935       VLC_RESTORE_FLAGS
2936     ],[
2937       AC_MSG_ERROR([Could not find libpostproc. Use --disable-postproc to ignore this error.])
2938   ])
2939 fi
2940
2941 dnl
2942 dnl  faad decoder plugin
2943 dnl
2944 AC_ARG_ENABLE(faad,
2945 [  --enable-faad           faad codec (default disabled)])
2946 if test "${enable_faad}" = "yes"
2947 then
2948   AC_ARG_WITH(faad-tree,
2949   [  --with-faad-tree=PATH   faad tree for static linking])
2950   if test -n "${with_faad_tree}"
2951   then
2952     AC_MSG_CHECKING(for libfaad.a in ${with_faad_tree})
2953     real_faad_tree="`cd ${with_faad_tree} 2>/dev/null && pwd`"
2954     if test -z "${real_faad_tree}"
2955     then
2956       dnl  The given directory can't be found
2957       AC_MSG_RESULT(no)
2958       AC_MSG_ERROR([cannot cd to ${with_faad_tree}])
2959     fi
2960     if test -f "${real_faad_tree}/libfaad/.libs/libfaad.a"
2961     then
2962       dnl  Use a custom faad
2963       AC_MSG_RESULT(${real_faad_tree}/libfaad/.libs/libfaad.a)
2964       VLC_ADD_PLUGIN([faad])
2965       VLC_ADD_LIBS([faad],[${real_faad_tree}/libfaad/.libs/libfaad.a])
2966       VLC_ADD_CPPFLAGS([faad],[-I${real_faad_tree}/include])
2967     else
2968       dnl  The given libfaad wasn't built
2969       AC_MSG_RESULT(no)
2970       AC_MSG_ERROR([cannot find ${real_faad_tree}/libfaad/.libs/libfaad.a, make sure you compiled libfaad in ${with_faad_tree}])
2971     fi
2972   else
2973     CPPFLAGS="${CPPFLAGS_save} ${CPPFLAGS_faad}"
2974     LDFLAGS="${LDFLAGS_save} ${LIBS_faad}"
2975     AC_CHECK_HEADERS(faad.h, ,
2976       [ AC_MSG_ERROR([Cannot find development headers for libfaad...]) ])
2977     AC_CHECK_LIB(faad, faacDecOpen, [
2978       VLC_ADD_PLUGIN([faad])
2979       VLC_ADD_LIBS([faad],[-lfaad]) ],
2980       AC_CHECK_LIB(faad, NeAACDecOpen, [
2981         VLC_ADD_PLUGIN([faad])
2982         VLC_ADD_LIBS([faad],[-lfaad]) ],
2983         [ AC_MSG_ERROR([Cannot find libfaad library...]) ]))
2984     LDFLAGS="${LDFLAGS_save}"
2985     CPPFLAGS="${CPPFLAGS_save}"
2986   fi
2987 fi
2988
2989 dnl
2990 dnl twolame encoder plugin
2991 dnl
2992 PKG_ENABLE_MODULES_VLC([TWOLAME], [], [twolame], [MPEG Audio Layer 2 encoder], [auto], [], [], [ -DLIBTWOLAME_STATIC])
2993
2994 dnl
2995 dnl  QuickTime plugin
2996 dnl
2997 AC_ARG_ENABLE(quicktime,
2998   [  --enable-quicktime      QuickTime module (deprecated)])
2999 if test "${enable_quicktime}" = "yes"; then
3000   if test "${SYS}" = "mingw32"; then
3001     VLC_ADD_PLUGIN([quicktime])
3002   else
3003   AC_CHECK_HEADERS(QuickTime/QuickTime.h,
3004     [ VLC_ADD_PLUGIN([quicktime])
3005       VLC_ADD_LDFLAGS([quicktime],[-Wl,-framework,QuickTime,-framework,Carbon])
3006     ], [ AC_MSG_ERROR([cannot find QuickTime headers]) ])
3007   fi
3008 fi
3009
3010 dnl
3011 dnl  Real plugin
3012 dnl
3013 AC_ARG_ENABLE(real,
3014   [  --enable-real           Real media module (default disabled)])
3015 if test "${enable_real}" = "yes"; then
3016   VLC_ADD_PLUGIN([realvideo])
3017 fi
3018
3019 dnl
3020 dnl  Real RTSP plugin
3021 dnl
3022 AC_ARG_ENABLE(realrtsp,
3023   [  --enable-realrtsp       Real RTSP module (default disabled)])
3024 if test "${enable_realrtsp}" = "yes"; then
3025   VLC_ADD_PLUGIN([access_realrtsp])
3026 fi
3027
3028 AC_ARG_ENABLE(libsysfs,
3029   [  --enable-libsysfs       Get user key from firewire connected iPod via libsysfs (default enabled)])
3030
3031 AS_IF([test "${enable_libsysfs}" != "no"],[
3032   AC_CHECK_HEADERS(sysfs/libsysfs.h, [
3033     VLC_ADD_LIBS([mp4 mkv],[-lsysfs])
3034   ] )
3035 ])
3036
3037 dnl
3038 dnl skins2 module
3039 dnl
3040 AC_ARG_ENABLE(libtar,
3041   [  --enable-libtar         libtar support for skins2 (default enabled)])
3042
3043 AS_IF([test "${enable_libtar}" != "no"],[
3044   AC_CHECK_HEADERS(libtar.h, [
3045     VLC_ADD_LIBS([skins2],[-ltar])
3046   ] )
3047 ])
3048
3049 dnl
3050 dnl A52/AC3 decoder plugin
3051 dnl
3052 AC_ARG_ENABLE(a52,
3053   [  --enable-a52            A/52 support with liba52 (default enabled)])
3054 if test "${enable_a52}" != "no"
3055 then
3056   AC_ARG_WITH(a52,
3057     [  --with-a52=PATH         a52 headers and libraries])
3058   AC_ARG_WITH(a52-tree,
3059     [  --with-a52-tree=PATH    a52dec tree for static linking ],[],[])
3060   if test "${with_a52_tree}" != "no" -a -n "${with_a52_tree}"
3061   then
3062     real_a52_tree="`cd ${with_a52_tree} 2>/dev/null && pwd`"
3063     if test -z "${real_a52_tree}"
3064     then
3065       dnl  The given directory can't be found
3066       AC_MSG_RESULT(no)
3067       AC_MSG_ERROR([${with_a52_tree} directory doesn't exist])
3068     fi
3069     dnl  Use a custom a52dec
3070     AC_MSG_CHECKING(for a52.h in ${real_a52_tree}/include)
3071     if test -f ${real_a52_tree}/include/a52.h
3072     then
3073       AC_MSG_RESULT(yes)
3074       VLC_ADD_CPPFLAGS([a52tofloat32],[-I${real_a52_tree}])
3075       VLC_ADD_LIBS([a52tofloat32],[-L${real_a52_tree}/liba52/.libs])
3076       LDFLAGS="${LDFLAGS_save} ${LIBS_a52tofloat32}"
3077       AC_CHECK_LIB(a52, a52_free, [
3078         VLC_ADD_PLUGIN([a52tofloat32])
3079         VLC_ADD_CPPFLAGS([a52tofloat32],[-DUSE_A52DEC_TREE])
3080         VLC_ADD_LIBS([a52tofloat32],[-la52])
3081         ],[
3082         if test -f ${real_a52_tree}/liba52/.libs/liba52.a
3083         then
3084           AC_MSG_ERROR([make sure you have at least a52dec-0.7.3 ($real_a52_tree)])
3085         else
3086           AC_MSG_ERROR([the specified tree hasn't been compiled])
3087         fi
3088       ])
3089       LDFLAGS="${LDFLAGS_save}"
3090     else
3091       AC_MSG_RESULT(no)
3092       AC_MSG_ERROR([the specified tree doesn't have a52.h])
3093     fi
3094   else
3095     if test -z "${with_a52}"
3096     then
3097       LDFLAGS_test=""
3098       CPPFLAGS_test=""
3099     else
3100       LDFLAGS_test="-L${with_a52}/lib"
3101       CPPFLAGS_test="-I${with_a52}/include"
3102     fi
3103     CPPFLAGS="${CPPFLAGS_save} ${CPPFLAGS_test} ${CPPFLAGS_a52tofloat32}"
3104     LDFLAGS="${LDFLAGS_save} ${LDFLAGS_test} ${LIBS_a52tofloat32}"
3105     AC_CHECK_HEADERS(a52dec/a52.h, [
3106       AC_CHECK_LIB(a52, a52_free, [
3107         VLC_ADD_PLUGIN([a52tofloat32])
3108         VLC_ADD_LIBS([a52tofloat32],[${LDFLAGS_test} -la52])
3109         VLC_ADD_CPPFLAGS([a52tofloat32],[${CPPFLAGS_test}])
3110       ],[
3111         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.])
3112         ])
3113     ],[
3114       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.])
3115     ])
3116     CPPFLAGS="${CPPFLAGS_save}"
3117     LDFLAGS="${LDFLAGS_save}"
3118   fi
3119 fi
3120
3121 AC_ARG_WITH(a52-fixed,
3122       [  --with-a52-fixed        specify if liba52 has been compiled with fixed point support],
3123       [
3124         VLC_ADD_CPPFLAGS([a52tofloat32],[-DLIBA52_FIXED]) ])
3125
3126 dnl
3127 dnl DTS Coherent Acoustics decoder plugin
3128 dnl
3129 AS_IF([test "x${enable_dts}" != "x"], [
3130   AC_MSG_ERROR([--enable-dts is obsolete. Please use libdca and --enable-dca.])
3131 ])
3132 PKG_ENABLE_MODULES_VLC([DCA], [dtstofloat32], [libdca >= 0.0.5], [DTS Coherent Acoustics support with libdca], [auto])
3133
3134 dnl
3135 dnl  Flac plugin
3136 dnl
3137 PKG_ENABLE_MODULES_VLC([FLAC], [], [flac], [libflac decoder/encoder support], [auto])
3138
3139 dnl
3140 dnl  Libmpeg2 plugin
3141 dnl
3142 PKG_ENABLE_MODULES_VLC([LIBMPEG2], [], [libmpeg2 > 0.3.2], [libmpeg2 decoder support], [auto])
3143
3144 dnl
3145 dnl  Vorbis plugin
3146 dnl
3147 PKG_ENABLE_MODULES_VLC([VORBIS], [], [ogg vorbis >= 1.1 vorbisenc >= 1.1], [Vorbis decoder and encoder], [auto])
3148
3149 dnl
3150 dnl  Tremor plugin
3151 dnl
3152 AC_ARG_ENABLE(tremor,
3153   [  --enable-tremor         Tremor decoder support (default disabled)])
3154 if test "${enable_tremor}" = "yes"
3155 then
3156   AC_CHECK_HEADERS(tremor/ivorbiscodec.h, [
3157     VLC_ADD_PLUGIN([tremor])
3158     VLC_ADD_LIBS([tremor],[-lvorbisidec -logg])
3159    ],[])
3160 fi
3161
3162 dnl
3163 dnl  Speex plugin
3164 dnl
3165 PKG_ENABLE_MODULES_VLC([SPEEX], [], [ogg speex >= 1.0.5], [Speex decoder support], [auto])
3166
3167 dnl
3168 dnl  theora decoder plugin
3169 dnl
3170 PKG_ENABLE_MODULES_VLC([THEORA], [], [ogg theora >= 1.0], [experimental theora codec], [auto])
3171
3172 dnl
3173 dnl  dirac encoder plugin
3174 dnl
3175 PKG_ENABLE_MODULES_VLC([DIRAC], [], [dirac >= 0.10.0], [dirac encoder], [auto])
3176
3177 dnl
3178 dnl  schroedinger decoder plugin (for dirac format video)
3179 dnl
3180 PKG_ENABLE_MODULES_VLC([SCHROEDINGER], [], [schroedinger-1.0 >= 1.0.6], [dirac decoder using schroedinger], [auto])
3181
3182 dnl
3183 dnl  PNG decoder module
3184 dnl
3185 AC_ARG_ENABLE(png,
3186   [  --enable-png            PNG support (default enabled)])
3187 if test "${enable_png}" != "no"; then
3188 AC_CHECK_HEADERS(png.h, [
3189   LDFLAGS="${LDFLAGS_save} -lz"
3190   AC_CHECK_LIB(png, png_set_rows, [
3191     VLC_ADD_LIBS([png],[-lpng -lz])
3192     VLC_ADD_PLUGIN([png])
3193     VLC_ADD_PLUGIN([osdmenu])
3194     VLC_ADD_PLUGIN([osd_parser])],
3195     [],[-lz])
3196     LDFLAGS="${LDFLAGS_save}"
3197   ])
3198 fi
3199 AM_CONDITIONAL(BUILD_OSDMENU, [test "${enable_png}" != "no"])
3200
3201 dnl
3202 dnl H264 encoder plugin (using libx264)
3203 dnl
3204 AC_ARG_ENABLE(x264,
3205   [  --enable-x264           H264 encoding support with libx264 (default enabled)])
3206 if test "${enable_x264}" != "no"; then
3207   AC_ARG_WITH(x264-tree,
3208     [  --with-x264-tree=PATH   x264 tree for static linking ],[],[])
3209   if test "${with_x264_tree}" != "no" -a -n "${with_x264_tree}"
3210   then
3211     real_x264_tree="`cd ${with_x264_tree} 2>/dev/null && pwd`"
3212     if test -z "${real_x264_tree}"
3213     then
3214       dnl  The given directory can't be found
3215       AC_MSG_RESULT(no)
3216       AC_MSG_ERROR([${with_x264_tree} directory doesn't exist])
3217     fi
3218     dnl  Use a custom libx264
3219     AC_MSG_CHECKING(for x264.h in ${real_x264_tree})
3220     if test -f ${real_x264_tree}/x264.h
3221     then
3222       AC_MSG_RESULT(yes)
3223       VLC_ADD_CPPFLAGS([x264],[-I${real_x264_tree}])
3224       VLC_ADD_LIBS([x264],[-L${real_x264_tree}])
3225       PKG_CHECK_MODULES(X264,x264, [
3226         VLC_ADD_PLUGIN([x264])
3227         VLC_ADD_LDFLAGS([x264],[${X264_LIBS}])
3228         VLC_ADD_CFLAGS([x264],[${X264_CFLAGS}])
3229         if echo ${X264_LIBS} |grep -q 'pthreadGC2'; then
3230           VLC_ADD_CFLAGS([x264], [-DPTW32_STATIC_LIB])
3231         fi
3232       ],[
3233         AC_MSG_ERROR([the specified tree hasn't been compiled])
3234       ])
3235       LDFLAGS="${LDFLAGS_save}"
3236     else
3237       AC_MSG_RESULT(no)
3238       AC_MSG_ERROR([the specified tree doesn't have x264.h])
3239     fi
3240   else
3241       PKG_CHECK_MODULES(X264,x264 >= 0.76, [
3242         VLC_ADD_PLUGIN([x264])
3243         VLC_ADD_LDFLAGS([x264],[${X264_LIBS}])
3244
3245         AC_CACHE_CHECK([if linker supports -Bsymbolic],
3246           [ac_cv_ld_bsymbolic],
3247           [LDFLAGS="${LDFLAGS_vlc} -Wl,-Bsymbolic"
3248             AC_TRY_LINK([],,ac_cv_ld_bsymbolic=yes,ac_cv_ld_bsymbolic=no)
3249             LDFLAGS="${LDFLAGS_save}"
3250           ])
3251         AS_IF([test "${ac_cv_ld_bsymbolic}" != "no"], [
3252           VLC_ADD_LDFLAGS([x264],[-Wl,-Bsymbolic])
3253         ])
3254
3255         VLC_ADD_CFLAGS([x264],[${X264_CFLAGS}])
3256         if echo ${X264_LIBS} |grep -q 'pthreadGC2'; then
3257           VLC_ADD_CFLAGS([x264], [-DPTW32_STATIC_LIB])
3258         fi
3259       ],[
3260         if test "${enable_x264}" = "yes"; then
3261             AC_MSG_ERROR([Could not find libx264 >= 0.76 on your system: you may get it from http://www.videolan.org/x264.html])
3262           fi
3263       ])
3264     LDFLAGS="${LDFLAGS_save}"
3265   fi
3266 fi
3267
3268 dnl
3269 dnl libfluidsynth (MIDI synthetizer) plugin
3270 dnl
3271 PKG_ENABLE_MODULES_VLC([FLUIDSYNTH], [], [fluidsynth], [MIDI synthetiser with libfluidsynth], [auto])
3272
3273 dnl
3274 dnl Teletext Modules
3275 dnl vbi decoder plugin (using libzbvi)
3276 dnl telx module
3277 dnl uncompatible
3278 dnl
3279 AC_ARG_ENABLE(zvbi,
3280   AS_HELP_STRING([--enable-zvbi],[VBI (inc. Teletext) decoding support with
3281                   libzvbi (default enabled)]))
3282 AC_ARG_ENABLE(telx,
3283   AS_HELP_STRING([--enable-telx],[Teletext decoding module (conflicting with
3284                   zvbi) (default enabled if zvbi is absent)]))
3285
3286 AS_IF( [test "${enable_zvbi}" != "no"],[
3287     PKG_CHECK_MODULES(ZVBI,
3288         zvbi-0.2 >= 0.2.28,
3289         [
3290           VLC_ADD_LIBS([zvbi],[$ZVBI_LIBS])
3291           if test "${SYS}" = "mingw32"; then
3292               VLC_ADD_LIBS([zvbi],[ -lpthreadGC2])
3293           fi
3294           VLC_ADD_CFLAGS([zvbi],[$ZVBI_CFLAGS])
3295           VLC_ADD_PLUGIN([zvbi])
3296           AC_DEFINE(ZVBI_COMPILED, 1, [Define if the zvbi module is built])
3297           AS_IF( [test "${enable_telx}" = "yes"],[
3298                   AC_MSG_WARN([The zvbi and telx modules are uncompatibles.
3299                                Using zvbi.])
3300                   ])
3301         ],[
3302           AC_MSG_WARN(ZVBI library not found. Enabling the telx module instead)
3303         ])
3304     ])
3305 AS_IF( [test "${enable_telx}" != "no" ],[
3306   VLC_ADD_PLUGIN([telx])
3307   ])
3308
3309 dnl
3310 dnl libass subtitle rendering module
3311 dnl
3312 AC_ARG_ENABLE(libass,
3313   [  --enable-libass         Subtitle support using libass (default enabled)])
3314 AS_IF( [test "${enable_libass}" != "no"], [
3315   PKG_CHECK_MODULES(LIBASS, libass >= 0.9.6,
3316       [
3317         VLC_ADD_LIBS([libass],[$LIBASS_LIBS])
3318         VLC_ADD_CFLAGS([libass],[$LIBASS_CFLAGS])
3319         VLC_ADD_PLUGIN([libass])
3320
3321         AC_CHECK_HEADERS(fontconfig/fontconfig.h,
3322           [VLC_ADD_CPPFLAGS([libass],[-DHAVE_FONTCONFIG])
3323            VLC_ADD_LIBS([libass],[-lfontconfig])
3324        ])
3325       ],[
3326         AC_MSG_WARN([LIBASS library not found])
3327       ])
3328   ])
3329
3330 dnl
3331 dnl asa demuxer
3332 dnl
3333 AC_ARG_ENABLE(asademux,
3334   [  --enable-asademux       asa subtitle demuxing (default disabled)])
3335 AS_IF( [test "${enable_asademux}" = "yes"], [
3336   PKG_CHECK_MODULES(PCRE,
3337       libpcre >= 6.5,
3338       [
3339         VLC_ADD_LDFLAGS([asademux],[$PCRE_LIBS])
3340         VLC_ADD_CFLAGS([asademux],[$PCRE_CFLAGS])
3341         if test "${SYS}" = "mingw32"; then
3342             VLC_ADD_CPPFLAGS([asademux],[-DPCRE_STATIC])
3343         fi
3344         VLC_ADD_PLUGIN([asademux])
3345       ],[
3346         AC_MSG_WARN([PCRE library not found (required for asademux)])
3347       ])
3348   ])
3349
3350 dnl
3351 dnl  kate decoder plugin
3352 dnl
3353 AC_ARG_ENABLE(kate,
3354 [  --enable-kate           kate codec (default enabled)])
3355 AS_IF([test "${enable_kate}" != "no"], [
3356   PKG_CHECK_MODULES(KATE,[kate >= 0.1.5], [
3357       VLC_ADD_PLUGIN([kate])
3358       VLC_ADD_CFLAGS([kate],[$KATE_CFLAGS])
3359       VLC_ADD_LIBS([kate],[$KATE_LIBS]) ],[
3360         AC_CHECK_HEADERS(kate/kate.h, [
3361           AC_CHECK_LIB(kate, kate_decode_init, [
3362             VLC_ADD_PLUGIN([kate])
3363             kate_libs="-lkate -logg"
3364             VLC_ADD_LDFLAGS([kate],[${kate_libs}]) ],[
3365             AS_IF([test "x${enable_kate}" != "x"], [
3366               AC_MSG_ERROR([libkate doesn't appear to be installed on your system.
3367               You also need to check that you have a libogg posterior to the 1.0 release.])
3368             ])
3369           ], [-lkate -logg])
3370         ],[
3371           AS_IF([test "x${enable_kate}" != "x"], [
3372             AC_MSG_ERROR([libkate headers do not appear to be installed on your system.
3373             You also need to check that you have a libogg posterior to the 1.0 release.])
3374           ])
3375         ])
3376   ])
3377 ])
3378
3379
3380 dnl
3381 dnl  tiger rendering for kate decoder plugin
3382 dnl
3383 AC_ARG_ENABLE(tiger,
3384 [  --enable-tiger          Tiger rendering library for Kate streams (default enabled)])
3385 AS_IF([test "${enable_tiger}" != "no"], [
3386   PKG_CHECK_MODULES(TIGER,[tiger >= 0.3.1], [
3387       AC_DEFINE(HAVE_TIGER, 1, [Define if libtiger is available.])
3388       VLC_ADD_CFLAGS([kate],[$TIGER_CFLAGS])
3389       VLC_ADD_LIBS([kate],[$TIGER_LIBS]) ],[
3390         AS_IF([test "x${enable_tiger}" != "x"], [
3391           AC_MSG_ERROR([libtiger does not appear to be installed on your system.])
3392         ])
3393   ])
3394 ])
3395
3396
3397
3398 dnl
3399 dnl  Video plugins
3400 dnl
3401
3402 AC_ARG_WITH(,[Video plugins:])
3403
3404 dnl
3405 dnl  Xlib
3406 dnl
3407
3408 AC_PATH_XTRA()
3409
3410 dnl
3411 dnl  X C Bindings modules
3412 dnl
3413 AC_ARG_ENABLE(xcb,
3414   [  --enable-xcb            X11 support with XCB (default enabled)],, [
3415   AS_IF([test "${SYS}" != "mingw32" -a "${SYS}" != "mingwce" -a "${SYS}" != "darwin"], [
3416     enable_xcb="yes"
3417   ], [
3418     enable_xcb="no"
3419   ])
3420 ])
3421 AC_ARG_ENABLE(xvideo,
3422   [  --enable-xvideo         XVideo support (default enabled)],, [
3423     enable_xvideo="$enable_xcb"
3424 ])
3425
3426 need_xid_provider="no"
3427 AS_IF([test "${enable_xcb}" != "no"], [
3428   dnl libxcb
3429   PKG_CHECK_MODULES(XCB, [xcb])
3430   PKG_CHECK_MODULES(XCB_SHM, [xcb-shm])
3431   VLC_ADD_PLUGIN([screensaver])
3432   VLC_ADD_PLUGIN([xcb_x11])
3433   VLC_ADD_PLUGIN([xcb_screen])
3434   VLC_ADD_PLUGIN([xcb_apps])
3435   VLC_SET_CFLAGS_WERROR([xcb_screen], [-Wno-error=uninitialized]) # some gcc report a warning which doesn't reveal an error
3436
3437   AS_IF([test "${enable_xvideo}" != "no"], [
3438     PKG_CHECK_MODULES(XCB_XV, [xcb-xv >= 1.1.90.1], [
3439       VLC_ADD_PLUGIN([xcb_xv])
3440     ], [
3441       PKG_CHECK_MODULES(XCB_XV, [xcb-xv], [
3442         VLC_ADD_PLUGIN([xcb_xv])
3443         VLC_ADD_CFLAGS([xcb_xv], [-DXCB_XV_OLD])
3444       ])
3445     ])
3446   ])
3447
3448   PKG_CHECK_MODULES(XCB_RANDR, [xcb-randr >= 1.3], [
3449     VLC_ADD_PLUGIN([panoramix])
3450     VLC_ADD_LIBS([panoramix],[${XCB_RANDR_LIBS} ${XCB_LIBS}])
3451     VLC_ADD_CFLAGS([panoramix],[${XCB_RANDR_CFLAGS} ${XCB_CFLAGS}])
3452   ], [true])
3453
3454   dnl xcb-utils
3455   PKG_CHECK_MODULES(XCB_KEYSYMS, [xcb-keysyms >= 0.3.4], [
3456     have_xcb_keysyms="yes"
3457   ], [
3458     PKG_CHECK_MODULES(XCB_KEYSYMS, [xcb-keysyms], [
3459       have_xcb_keysyms="yes"
3460       VLC_ADD_CFLAGS([globalhotkeys], [-DXCB_KEYSYM_OLD_API])
3461     ], [
3462       have_xcb_keysyms="no"
3463       need_xid_provider="yes"
3464     ])
3465   ])
3466
3467   AS_IF([test "${have_xcb_keysyms}" = "yes"], [
3468     PKG_CHECK_MODULES(XPROTO, [xproto])
3469     VLC_ADD_PLUGIN([xcb_window])
3470     VLC_ADD_PLUGIN([globalhotkeys])
3471     VLC_ADD_CFLAGS([globalhotkeys], [${XCB_KEYSYMS_CFLAGS} ${XCB_CFLAGS}])
3472     VLC_ADD_LIBS([globalhotkeys], [${XCB_KEYSYMS_LIBS} ${XCB_LIBS}])
3473   ])
3474   VLC_ADD_PLUGIN([xdg_screensaver])
3475 ])
3476
3477 AC_ARG_ENABLE(glx,
3478   [  --enable-glx            X11 OpenGL (GLX) support (default enabled)],, [
3479   enable_glx="$enable_xcb"
3480 ])
3481 AS_IF([test "${enable_glx}" != "no"], [
3482   PKG_CHECK_MODULES(XLIB_XCB, [x11-xcb])
3483   PKG_CHECK_MODULES(GL, [gl],, [
3484     AC_CHECK_HEADER([GL/gl.h], [
3485       GL_CFLAGS=""
3486       GL_LIBS="-lGL"
3487     ], [
3488       AC_MSG_ERROR([GLX (libGL) cannot be found. If you do not need OpenGL with X11, use --disable-glx.])
3489     ])
3490   ])
3491   VLC_ADD_PLUGIN([xcb_glx])
3492 ])
3493 AC_SUBST([GL_CFLAGS])
3494 AC_SUBST([GL_LIBS])
3495
3496
3497 dnl
3498 dnl  OpenGL module
3499 dnl  (enabled by default except on beos)
3500 dnl
3501 AC_ARG_ENABLE(opengl,
3502   [  --enable-opengl         OpenGL support (default enabled)])
3503 if test "${enable_opengl}" != "no" &&
3504    test "${SYS}" = "darwin"; then
3505     dnl OS X special case (no GL/gl.h but OpenGL/gl.h)
3506     VLC_ADD_PLUGIN([opengl])
3507     VLC_ADD_LIBS([opengl],[-Wl,-framework,OpenGL])
3508 fi
3509
3510 dnl
3511 dnl  SDL module
3512 dnl
3513 AC_ARG_ENABLE(sdl,
3514   [  --enable-sdl            SDL support (default enabled)])
3515 AC_ARG_ENABLE(sdl-image,
3516   [  --enable-sdl-image      SDL image support (default enabled)])
3517 if test "${enable_sdl}" != "no"
3518 then
3519   SDL_PATH="${PATH}"
3520   AC_ARG_WITH(sdl-config-path,
3521     [  --with-sdl-config-path=PATH sdl-config path (default search in \$PATH)],
3522     [ if test "${with_sdl_config_path}" != "no"
3523       then
3524         SDL_PATH="${with_sdl_config_path}:${PATH}"
3525       fi ])
3526   AC_PATH_PROG(SDL_CONFIG, sdl-config, no, ${SDL_PATH})
3527   SDL_HEADER="SDL/SDL.h"
3528   SDL_IMAGE="SDL/SDL_image.h"
3529
3530   if test "${SDL_CONFIG}" != "no";  then
3531      PKG_CHECK_MODULES(SDL, [sdl >= 1.2.10], [
3532         # SDL on Darwin is heavily patched and can only run SDL_image
3533         if test "${SYS}" != "darwin"; then
3534           VLC_ADD_PLUGIN([vout_sdl])
3535           VLC_ADD_PLUGIN([aout_sdl])
3536         fi
3537         VLC_ADD_CFLAGS([vout_sdl aout_sdl sdl_image],[`${SDL_CONFIG} --cflags | sed 's,SDL,,'`])
3538         VLC_ADD_LIBS([vout_sdl aout_sdl sdl_image],[`${SDL_CONFIG} --libs | sed 's,-rdynamic,,'`])
3539
3540         # SDL_image
3541         AS_IF([ test "${enable_sdl_image}" != "no"],[
3542           AC_CHECK_HEADERS("SDL/SDL_image.h", [
3543             VLC_ADD_PLUGIN([sdl_image])
3544             AC_CHECK_LIB(png, png_set_rows, [VLC_ADD_LIBS([sdl_image],[-lpng -lz])],[],[-lz])
3545             AC_CHECK_LIB(jpeg, jpeg_start_decompress, [VLC_ADD_LIBS([sdl_image],[-ljpeg])])
3546             AC_CHECK_LIB(tiff, TIFFClientOpen, [VLC_ADD_LIBS([sdl_image],[-ltiff])])
3547             VLC_ADD_LIBS([sdl_image], [-lSDL_image])],
3548             [ AC_MSG_WARN([The development package for SDL_image is not installed.
3549       You should install it alongside your SDL package.])
3550             ])
3551         ])
3552      ],[
3553        AC_MSG_ERROR([The development package for SDL is too old. You need 1.2.10.
3554                     Alternatively you can also configure with --disable-sdl.])
3555      ])
3556   else if test "${enable_sdl}" =  "yes"; then
3557     AC_MSG_ERROR([I could not find the SDL package. You can download libSDL
3558 from http://www.libsdl.org/, or configure with --disable-sdl. Have a nice day.
3559     ])
3560       fi
3561   fi
3562 fi
3563
3564 dnl
3565 dnl  freetype module
3566 dnl
3567 AC_ARG_ENABLE(freetype,
3568   [  --enable-freetype       freetype support (default enabled)])
3569 AC_ARG_ENABLE(fribidi,
3570   [  --enable-fribidi        fribidi support (default enabled)])
3571 AC_ARG_ENABLE(fontconfig,
3572   [  --enable-fontconfig     fontconfig support (default enabled)])
3573 if test "${enable_freetype}" != "no"
3574 then
3575    PKG_CHECK_MODULES(FREETYPE, freetype2,[
3576       VLC_ADD_PLUGIN([freetype])
3577       have_freetype=yes
3578       VLC_ADD_CPPFLAGS([freetype skins2],[${FREETYPE_CFLAGS}])
3579       if test "${SYS}" = "mingw32"; then
3580         VLC_ADD_LIBS([freetype],[-liconv -lz])
3581       fi
3582       VLC_ADD_LIBS([freetype skins2],[${FREETYPE_LIBS}])
3583       if test "${enable_fontconfig}" != "no"
3584       then
3585         AC_CHECK_HEADERS(fontconfig/fontconfig.h,
3586           [VLC_ADD_CPPFLAGS([freetype],[-DHAVE_FONTCONFIG])
3587            VLC_ADD_LIBS([freetype],[-lfontconfig])])
3588         AC_CHECK_HEADERS(Carbon/Carbon.h,
3589           [VLC_ADD_LDFLAGS([freetype],[-Wl,-framework,Carbon])])
3590       fi
3591
3592      dnl fribidi support
3593       if test "${enable_fribidi}" != "no"
3594       then
3595         PKG_CHECK_MODULES(FRIBIDI, fribidi, [
3596           VLC_ADD_CPPFLAGS([freetype skins2], [${FRIBIDI_CFLAGS} -DHAVE_FRIBIDI])
3597           VLC_ADD_LIBS([freetype skins2], [${FRIBIDI_LIBS}])
3598         ])
3599       fi
3600
3601   ],[
3602   have_freetype=no
3603   AS_IF([ test "${enable_freetype}" =  "yes"],[
3604     AC_MSG_ERROR([I couldn't find the freetype package. You can download libfreetype2
3605 from http://www.freetype.org/, or configure with --disable-freetype. Have a nice day.
3606       ])
3607     ])
3608   ])
3609
3610 fi
3611
3612 dnl
3613 dnl  libxml2 module
3614 dnl
3615 PKG_ENABLE_MODULES_VLC([LIBXML2], [xml], [libxml-2.0 >= 2.5], [libxml2 support],[auto])
3616
3617 dnl
3618 dnl  SVG module
3619 dnl
3620 PKG_ENABLE_MODULES_VLC([SVG], [], [librsvg-2.0 >= 2.9.0], [SVG rendering library],[auto])
3621
3622 dnl
3623 dnl Snapshot vout module (with cache)
3624 dnl
3625 AC_ARG_ENABLE(snapshot,
3626   [  --enable-snapshot       snapshot module (default disabled)])
3627 if test "${enable_snapshot}" = "yes"
3628 then
3629   VLC_ADD_PLUGIN([snapshot])
3630 fi
3631
3632 dnl
3633 dnl Roku HD1000 Video output module
3634 dnl
3635 AC_ARG_ENABLE(hd1000v,
3636   [  --enable-hd1000v        HD1000 Video Output module (default enabled on HD1000)])
3637 if test "${enable_hd1000v}" != "no" -a "${CXX}" != "" &&
3638   (test "${SYS}" != "mingw32" -a "${SYS}" != "mingwce" ||
3639    test "${enable_hd1000v}" = "yes"); then
3640   AC_LANG_PUSH([C++])
3641   AC_CHECK_HEADERS([cascade/graphics/CascadeScreen.h cascade/graphics/CascadeBitmap.h],
3642   [
3643     can_build_roku="yes"
3644   ],
3645   [
3646     can_build_roku="no"
3647     AC_MSG_WARN([Not building Roku HD1000 compatible video output])
3648   ])
3649   if test "$can_build_roku" = "yes"
3650   then
3651     VLC_ADD_PLUGIN([hd1000v])
3652     VLC_ADD_LIBS([hd1000v],[-lCascade -ldvbpsi -lmad])
3653   fi
3654   AC_LANG_POP([C++])
3655 fi
3656
3657 dnl
3658 dnl  Windows DirectX module
3659 dnl
3660
3661 if test "${SYS}" = "mingw32" -o "${SYS}" = "mingwce"
3662 then
3663   VLC_ADD_PLUGIN([panoramix])
3664 fi
3665
3666 AC_ARG_ENABLE(directx,
3667   [  --enable-directx        Win32 DirectX support (default enabled on Win32)])
3668 if test "${enable_directx}" != "no"
3669 then
3670   if test "${SYS}" = "mingw32" -o "${SYS}" = "mingwce"
3671   then
3672       AC_CHECK_HEADERS(ddraw.h,
3673       [ VLC_ADD_PLUGIN([directx])
3674         VLC_ADD_PLUGIN([aout_directx])
3675         VLC_ADD_LIBS([directx],[-lgdi32])
3676       ],[AC_MSG_ERROR([Cannot find DirectX headers!])]
3677       )
3678       AC_CHECK_HEADERS(GL/gl.h,
3679       [ VLC_ADD_PLUGIN([glwin32])
3680         VLC_ADD_LIBS([glwin32],[-lopengl32 -lgdi32])
3681       ])
3682       AC_CHECK_HEADERS(d3d9.h,
3683       [ VLC_ADD_PLUGIN([direct3d])
3684         VLC_ADD_LIBS([direct3d],[-lgdi32])
3685       ])
3686       VLC_ADD_LIBS([direct3d directx glwin32],[-lole32])
3687   fi
3688 fi
3689
3690 dnl
3691 dnl  win32 GDI plugin
3692 dnl
3693 AC_ARG_ENABLE(wingdi,
3694   [  --enable-wingdi         Win32 GDI module (default enabled on Win32)])
3695 if test "${enable_wingdi}" != "no"; then
3696   if test "${SYS}" = "mingw32"; then
3697     VLC_ADD_PLUGIN([wingdi])
3698     VLC_ADD_LIBS([wingdi],[-lgdi32 -lole32])
3699   fi
3700   if test "${SYS}" = "mingwce"; then
3701     VLC_ADD_PLUGIN([wingdi])
3702     VLC_ADD_PLUGIN([wingapi])
3703     VLC_ADD_LIBS([wingdi],[-laygshell])
3704     VLC_ADD_LIBS([wingapi],[-laygshell])
3705   fi
3706 fi
3707
3708
3709 dnl
3710 dnl  Linux framebuffer module
3711 dnl
3712 AC_ARG_ENABLE(fb,
3713   [  --enable-fb             Linux framebuffer support (default enabled on Linux)])
3714     if test "${enable_fb}" != "no"
3715     then
3716       AC_CHECK_HEADERS(linux/fb.h, [
3717         VLC_ADD_PLUGIN([fb])
3718       ])
3719     fi
3720
3721 dnl
3722 dnl  OMAP Framebuffer module
3723 dnl
3724 AC_ARG_ENABLE(omapfb,
3725   [  --enable-omapfb         OMAP framebuffer support (default disabled)])
3726     if test "${enable_omapfb}" = "yes"
3727     then
3728       AC_CHECK_HEADERS(asm/arch-omap/omapfb.h, [
3729         VLC_ADD_PLUGIN([omapfb])
3730         AC_CHECK_HEADERS(X11/Xlib.h, [
3731           VLC_ADD_LIBS([omapfb],[${X_LIBS} ${X_PRE_LIBS} -lX11]) ])
3732       ])
3733       VLC_ADD_PLUGIN([swscale_omap])
3734     fi
3735
3736 dnl
3737 dnl  SVGAlib module
3738 dnl
3739 AC_ARG_ENABLE(svgalib,
3740   [  --enable-svgalib        SVGAlib support (default disabled)])
3741 if test "${enable_svgalib}" = "yes"
3742 then
3743   VLC_ADD_PLUGIN([svgalib])
3744   VLC_ADD_LIBS([svgalib],[-lvgagl -lvga])
3745 fi
3746
3747 dnl
3748 dnl  DirectFB module
3749 dnl  try to find using: 1 - given location; 2 - directfb-config; 3 - pkg-config
3750 dnl  TODO: support for static linking
3751 dnl
3752 AC_ARG_ENABLE(directfb,
3753   [  --enable-directfb       DirectFB support (default disabled)])
3754 AC_ARG_WITH(directfb,
3755   [  --with-directfb=PATH    path to DirectFB headers and libraries])
3756
3757 if test "${enable_directfb}" = "yes"; then
3758     have_directfb="false"
3759     CPPFLAGS_mydirectfb=
3760     LIBS_mydirectfb=
3761     if test "${with_directfb}" != "no" -a -n "${with_directfb}"; then
3762         dnl Trying the given location
3763         CPPFLAGS_save="${CPPFLAGS}"
3764         LIBS_save="${LIBS}"
3765
3766         CPPFLAGS_new="-I${with_directfb}/include -D_REENTRANT -D_GNU_SOURCE"
3767         LIBS_new="-L${with_directfb}/lib/fusion/.libs/ -L${with_directfb}/lib/direct/.libs/"
3768         LIBS_new="${LIBS_new} -L${with_directfb}/src/.libs/"
3769
3770         CPPFLAGS="${CPPFLAGS} ${CPPFLAGS_new}"
3771         LIBS="${LIBS} ${LIBS_new}"
3772
3773         dnl FIXME: too obscure
3774         AC_CHECK_HEADER([directfb.h], [
3775             AC_CHECK_LIB([direct],[direct_initialize], [
3776                 AC_CHECK_LIB([fusion], [fusion_enter], [
3777                     AC_CHECK_LIB([directfb], [DirectFBInit], have_directfb="true", have_directfb="false")
3778                 ], have_directfb="false")
3779             ], have_directfb="false")
3780         ], have_directfb="false")
3781
3782         dnl Restore flags
3783         CPPFLAGS="${CPPFLAGS_save}"
3784         LIBS="${LIBS_save}"
3785
3786         if test "${have_directfb}" = "true"; then
3787             LIBS_mydirectfb="${LIBS_new} -lz -ldl -ldirectfb -lfusion -ldirect -lpthread"
3788             CPPFLAGS_mydirectfb="${CPPFLAGS_new}"
3789         fi
3790     else
3791         dnl Look for directfb-config
3792         AC_PATH_PROG(DIRECTFB_CONFIG, directfb-config, no, ${PATH})
3793         if test "${DIRECTFB_CONFIG}" != "no"; then
3794             CPPFLAGS_mydirectfb="`${DIRECTFB_CONFIG} --cflags`"
3795             LIBS_mydirectfb="`${DIRECTFB_CONFIG} --libs`"
3796             have_directfb="true"
3797         else
3798             dnl Trying with pkg-config
3799             PKG_CHECK_MODULES(DIRECTFB, directfb, [
3800                 CPPFLAGS_mydirectfb="${DIRECTFB_CFLAGS}"
3801                 LIBS_mydirectfb="${DIRECTFB_LIBS}"
3802                 have_directfb="true"
3803                 ], [have_directfb="false"])
3804         fi
3805     fi
3806     if test "${have_directfb}" = "true"; then
3807         VLC_ADD_PLUGIN([directfb])
3808         VLC_ADD_CPPFLAGS([directfb],[${CPPFLAGS_mydirectfb}])
3809         VLC_ADD_LIBS([directfb],[${LIBS_mydirectfb}])
3810     else
3811         AC_MSG_ERROR([cannot find directfb headers and/or libraries ])
3812     fi
3813 fi
3814
3815
3816
3817 dnl
3818 dnl  GGI module
3819 dnl
3820 AC_ARG_ENABLE(ggi,
3821   [  --enable-ggi            GGI support (default disabled)])
3822 if test "${enable_ggi}" = "yes"
3823 then
3824   AC_CHECK_HEADER([ggi/ggi.h],[
3825     VLC_ADD_PLUGIN([ggi])
3826     VLC_ADD_LIBS([ggi],[-lggi])
3827     AC_ARG_WITH(ggi,
3828       [  --with-ggi=PATH         path to libggi],
3829       [ if test "${with_ggi}" != "no" -a -n "${with_ggi}"
3830         then
3831           VLC_ADD_CPPFLAGS([ggi],[-I${with_ggi}/include])
3832           VLC_ADD_LIBS([ggi],[-L${with_ggi}/lib])
3833         fi ])
3834     ],[
3835        AC_MSG_ERROR([LibGGI development files can't be found])
3836     ])
3837 fi
3838
3839 dnl
3840 dnl  AA plugin
3841 dnl
3842 AC_ARG_ENABLE(aa,
3843   [  --enable-aa             aalib output (default disabled)])
3844 if test "${enable_aa}" = "yes"
3845 then
3846   AC_CHECK_HEADER(aalib.h,have_aa="true",have_aa="false")
3847   if test "${have_aa}" = "true"
3848   then
3849     VLC_ADD_PLUGIN([aa])
3850     VLC_ADD_LIBS([aa],[-laa])
3851   fi
3852 fi
3853
3854 dnl
3855 dnl  libcaca plugin
3856 dnl
3857 PKG_ENABLE_MODULES_VLC([CACA], [], [caca >= 0.99.beta14], [libcaca output],[auto])
3858
3859 dnl
3860 dnl  Audio plugins
3861 dnl
3862
3863 AC_ARG_WITH(,[Audio plugins:])
3864
3865 dnl
3866 dnl  OSS /dev/dsp module (enabled by default except on win32)
3867 dnl
3868 AC_ARG_ENABLE(oss,
3869   [  --enable-oss            Linux OSS /dev/dsp support (enabled on Linux)])
3870
3871 if test "${enable_oss}" != "no" &&
3872   (test "${SYS}" != "mingw32" -a "${SYS}" != "mingwce" ||
3873    test "${enable_oss}" = "yes")
3874 then
3875   AC_CHECK_HEADERS([soundcard.h sys/soundcard.h], [
3876     VLC_ADD_PLUGIN([oss])
3877     VLC_ADD_PLUGIN([access_oss])
3878     AC_CHECK_LIB(ossaudio,main,[VLC_ADD_LIBS([oss],[-lossaudio])
3879                                 VLC_ADD_LIBS([access_oss],[-lossaudio])])
3880   ])
3881 fi
3882
3883 dnl
3884 dnl  Pulseaudio module
3885 dnl
3886 PKG_ENABLE_MODULES_VLC([PULSE], [], [libpulse >= 0.9.11], [Pulseaudio support], [auto])
3887
3888 dnl
3889 dnl  Portaudio module
3890 dnl
3891 PKG_ENABLE_MODULES_VLC([PORTAUDIO], [], [portaudio-2.0], [Portaudio library support], [auto])
3892
3893 dnl
3894 dnl  ALSA module
3895 dnl
3896 PKG_ENABLE_MODULES_VLC([ALSA], [], [alsa >= 1.0.0], [Alsa sound support for linux], [auto])
3897 PKG_ENABLE_MODULES_VLC([ACCESS_ALSA], [access_alsa], [alsa >= 1.0.0], [Alsa access for linux], [auto])
3898
3899 dnl
3900 dnl  win32 waveOut plugin
3901 dnl
3902 AC_ARG_ENABLE(waveout,
3903   [  --enable-waveout        Win32 waveOut module (default enabled on Win32)])
3904 if test "${enable_waveout}" != "no"; then
3905   if test "${SYS}" = "mingw32"; then
3906     VLC_ADD_PLUGIN([waveout])
3907     VLC_ADD_LIBS([waveout],[-lwinmm])
3908   fi
3909   if test "${SYS}" = "mingwce"; then
3910     VLC_ADD_PLUGIN([waveout])
3911   fi
3912 fi
3913
3914 dnl
3915 dnl  CoreAudio plugin
3916 dnl
3917 AC_ARG_ENABLE(macosx-audio,
3918   [  --enable-macosx-audio   Mac OS X audio module (default enabled on MacOS X)])
3919 if test "x${enable_macosx_audio}" != "xno" &&
3920   (test "${SYS}" = "darwin" || test "${enable_macosx_audio}" = "yes")
3921 then
3922   AC_CHECK_HEADERS(CoreAudio/CoreAudio.h,
3923     [ VLC_ADD_PLUGIN([auhal])
3924       VLC_ADD_LDFLAGS([auhal],[-Wl,-framework,CoreAudio,-framework,AudioUnit,-framework,AudioToolbox,-framework,Carbon])
3925     ], [ AC_MSG_ERROR([cannot find CoreAudio headers]) ])
3926 fi
3927
3928 dnl
3929 dnl  Roku HD1000 audio
3930 dnl
3931 AC_ARG_ENABLE(hd1000a,
3932   [  --enable-hd1000a        HD1000 audio module (default enabled on HD1000)])
3933 if test "${enable_hd1000a}" != "no" -a "${CXX}" != "" &&
3934   (test "${SYS}" != "mingw32" -a "${SYS}" != "mingwce" ||
3935    test "${enable_hd1000a}" = "yes")
3936 then
3937   AC_LANG_PUSH([C++])
3938   AC_CHECK_HEADERS(deschutes/libraries/hdmachinex225/PCMAudioPlayer.h, [
3939     VLC_ADD_PLUGIN([hd1000a])
3940     AC_CHECK_LIB(HDMachineX225,main,VLC_ADD_LIBS([hd1000a],[-lHDMachineX225]))  ])
3941   AC_LANG_POP([C++])
3942 fi
3943
3944 dnl
3945 dnl  JACK modules
3946 dnl
3947 PKG_ENABLE_MODULES_VLC([JACK], [jack], [jack], [JACK audio I/O modules],[auto])
3948 PKG_ENABLE_MODULES_VLC([JACK], [access_jack], [jack], [JACK audio I/O modules],[auto])
3949
3950
3951 dnl
3952 dnl  CyberLink for C++ UPnP stack
3953 dnl
3954 AC_ARG_ENABLE(cyberlink,
3955   [  --enable-cyberlink      CyberLink for C++ UPnP stack (default disabled)])
3956   AS_IF([test "${enable_cyberlink}" = "yes" ], [
3957   AC_ARG_WITH(cyberlink-tree,
3958     [  --with-cyberlink-tree=PATH CyberLink for C++ tree for static linking])
3959
3960   dnl
3961   dnl test for --with-cyberlink-tree
3962   dnl
3963   AS_IF([test ! -z "${with_cyberlink_tree}" -a "${CXX}" != ""], [
3964     AC_LANG_PUSH(C++)
3965     real_cyberlink_tree="`cd ${with_cyberlink_tree} 2>/dev/null && pwd`"
3966     AS_IF([test -z "${real_cyberlink_tree}"], [
3967       dnl  The given directory can't be found
3968       AC_MSG_RESULT(no)
3969       AC_MSG_ERROR([cannot cd to ${with_cyberlink_tree}])
3970     ])
3971     CPPFLAGS_save="${CPPFLAGS}"
3972     CPPFLAGS_cyberlink="-I${real_cyberlink_tree}/include"
3973     CPPFLAGS="${CPPFLAGS} ${CPPFLAGS_cyberlink}"
3974     AC_CHECK_HEADERS([cybergarage/upnp/MediaServer.h],
3975       [ VLC_ADD_CXXFLAGS([upnp_cc], [${CPPFLAGS_cyberlink}])
3976         VLC_ADD_PLUGIN([upnp_cc])
3977       ],[
3978         AC_MSG_ERROR([cannot find CyberLink for C++ headers])
3979       ])
3980     AC_MSG_CHECKING(for libclink.a in ${with_cyberlink_tree})
3981     AS_IF([test -f "${real_cyberlink_tree}/lib/unix/libclink.a"], [
3982       AC_MSG_RESULT(${real_cyberlink_tree}/lib/unix/libclink.a)
3983       dnl The mere fact that we have to make such an ugly check sucks
3984       AC_MSG_CHECKING(for XML parser to link CyberLink with)
3985       LIBS_save="$LIBS"
3986       LIBS_cclink="no"
3987       for l in "`xml2-config --libs`" -lexpat -lxerces-c; do
3988         LIBS="$LIBS_save ${real_cyberlink_tree}/lib/unix/libclink.a -lpthread $l"
3989         AC_LINK_IFELSE([AC_LANG_PROGRAM([
3990 #include <cybergarage/upnp/media/player/MediaPlayer.h>
3991 using namespace CyberLink;
3992
3993 class testclass : public SearchResponseListener, public MediaPlayer
3994 {
3995     virtual void deviceSearchResponseReceived( SSDPPacket *)
3996     {
3997     }
3998
3999     public:
4000       testclass (void)
4001       {
4002         addSearchResponseListener (this);
4003         start ();
4004       }
4005 };
4006 ],[testclass l;])],[LIBS_cclink="$l"])
4007       done
4008       LIBS="${LIBS_save}"
4009       dnl should not happen - otherwise this needs fixing - hence FAILURE
4010       AS_IF([test "${LIBS_cclink}" = "no"],
4011         [AC_MSG_FAILURE([cannot find XML parser for CyberLink])])
4012       AC_MSG_RESULT([${LIBS_cclink}])
4013       VLC_ADD_LIBS([upnp_cc], [${real_cyberlink_tree}/lib/unix/libclink.a -lpthread ${LIBS_cclink}])
4014     ], [
4015       AC_MSG_RESULT(no)
4016       AC_MSG_ERROR([cannot find ${real_cyberlink_tree}/lib/unix/libclink.a, make sure you compiled CyberLink for C++ in ${with_cyberlink_tree}])
4017     ])
4018     CPPFLAGS="${CPPFLAGS_save}"
4019     AC_LANG_POP([C++])
4020   ])
4021 ])
4022
4023 dnl
4024 dnl UPnP Plugin (Intel SDK)
4025 dnl
4026 PKG_ENABLE_MODULES_VLC([UPNP], [upnp_intel], [libupnp], [Intel UPnp SDK],[auto])
4027
4028
4029 dnl
4030 dnl  Interface plugins
4031 dnl
4032
4033 AC_ARG_WITH(,[Interface plugins:])
4034
4035 dnl
4036 dnl Skins2 module
4037 dnl
4038 AC_ARG_ENABLE(skins2,
4039   [AS_HELP_STRING([--enable-skins2],[Skins2 interface module (default
4040    enabled except on MacOSX, BeOS and WinCE)])])
4041 if test "${enable_skins2}" = "yes" ||
4042   (test "${SYS}" != "darwin" && test "${SYS}" != "beos" &&
4043    test "${SYS}" != "mingwce" && test "${enable_skins2}" != "no"); then
4044
4045   dnl test for the required libraries
4046   skins2_missing_lib="no"
4047
4048   dnl freetype
4049   if test "${have_freetype}" != "yes"; then
4050     skins2_missing_lib="yes"
4051     if test "${enable_skins2}" = "yes"; then
4052       AC_MSG_ERROR([Could not find freetype (required for skins2)])
4053     fi
4054   fi
4055
4056   if test "${skins2_missing_lib}" = "no" && (test "${SYS}" = "mingw32"); then
4057     VLC_ADD_PLUGIN([skins2])
4058     ALIASES="${ALIASES} svlc"
4059     VLC_ADD_CPPFLAGS([skins2],[-U_OFF_T_ -U_off_t -Imodules/gui/skins2 -DWIN32_SKINS])
4060     VLC_ADD_CXXFLAGS([skins2],[-O2 -fno-rtti])
4061     VLC_ADD_LIBS([skins2],[-loleaut32 -lwinspool -lwinmm -lshell32 -lctl3d32 -ladvapi32 -lwsock32 -lgdi32 -lcomdlg32 -lole32 -luuid -lcomctl32])
4062
4063   else if test "${skins2_missing_lib}" = "no" && (test "${SYS}" = "darwin"); then
4064     VLC_ADD_PLUGIN([skins2])
4065     ALIASES="${ALIASES} svlc"
4066     VLC_ADD_CPPFLAGS([skins2],[-Imodules/gui/skins2 -DMACOSX_SKINS])
4067     VLC_ADD_CXXFLAGS([skins2],[-O2 -fno-rtti])
4068     VLC_ADD_LDFLAGS([skins2],[-Wl,-framework,Carbon])
4069
4070   else if test "${skins2_missing_lib}" = "no"; then
4071     VLC_ADD_PLUGIN([skins2])
4072     ALIASES="${ALIASES} svlc"
4073     VLC_ADD_CPPFLAGS([skins2],[-Imodules/gui/skins2 ${X_CFLAGS} -DX11_SKINS])
4074     VLC_ADD_CXXFLAGS([skins2],[-O2 -fno-rtti])
4075     VLC_ADD_LIBS([skins2],[${X_LIBS} ${X_PRE_LIBS} -lXext -lX11])
4076     need_xid_provider="no"
4077   fi fi fi
4078 fi
4079 AM_CONDITIONAL(BUILD_SKINS, [test "${enable_skins2}" = "yes" ||
4080          (test "${SYS}" != "darwin" && test "${SYS}" != "beos" &&
4081           test "${SYS}" != "mingwce" && test "${enable_skins2}" != "no")])
4082
4083 dnl
4084 dnl Hildon UI
4085 dnl
4086 AC_ARG_ENABLE(hildon,
4087   [  --enable-hildon         Hildon touchscreen UI (default disabled)])
4088 AS_IF([test "${enable_hildon}" = "yes"], [
4089   PKG_CHECK_MODULES(HILDON, [hildon-1 hildon-fm-2], [
4090     VLC_ADD_CFLAGS([hildon],[${HILDON_CFLAGS}])
4091     VLC_ADD_LIBS([hildon],[${HILDON_LIBS}])
4092     VLC_ADD_PLUGIN([hildon])
4093     ALIASES="${ALIASES} mvlc"
4094     need_xid_provider="no"
4095   ], [
4096     AS_IF([test "${enable_hildon}" = "yes"],[
4097       AC_MSG_ERROR([Hildon libraries not found])
4098     ])
4099     enable_hildon="no"
4100   ])
4101 ])
4102 AM_CONDITIONAL(BUILD_HILDON, [test "${enable_hildon}" = "yes"])
4103
4104 dnl
4105 dnl QT 4
4106 dnl
4107 AC_ARG_ENABLE(qt4,
4108   [  --enable-qt4            Qt 4 support (default enabled) ],, [
4109   AS_IF([test "${SYS}" = "darwin"], [enable_qt4=no])
4110 ])
4111 AS_IF([test "${enable_qt4}" != "no"], [
4112   PKG_CHECK_MODULES(QT4, [QtCore QtGui >= 4.4.0], [
4113     VLC_ADD_PLUGIN([qt4])
4114     ALIASES="${ALIASES} qvlc"
4115     AS_IF([test "${SYS}" != "mingw32" -a "${SYS}" != "mingwce" -a "${SYS}" != "darwin"], [
4116         VLC_ADD_LIBS([qt4],[$QT4_LIBS -lX11])
4117         need_xid_provider="no"
4118     ], [
4119         VLC_ADD_LIBS([qt4],[$QT4_LIBS -lole32])
4120     ])
4121     QT4LOCALEDIR="$(eval $PKG_CONFIG --variable=prefix QtCore)/share/qt4/translations/"
4122     AC_SUBST(QT4LOCALEDIR)
4123     VLC_ADD_CXXFLAGS([qt4],[$QT4_CFLAGS -DQT4LOCALEDIR=\\\\\\\"${QT4LOCALEDIR}\\\\\\\"])
4124     AC_PATH_PROGS(MOC, [moc-qt4 moc], moc,`eval $PKG_CONFIG --variable=exec_prefix QtCore`/bin)
4125     AC_PATH_PROG(RCC, rcc, rcc,`eval $PKG_CONFIG --variable=exec_prefix QtCore`/bin)
4126     AC_PATH_PROGS(UIC, [uic-qt4 uic], uic,`eval $PKG_CONFIG --variable=exec_prefix QtCore`/bin)
4127   ], [
4128     AS_IF([test "${enable_qt4}" = "yes"],[
4129       AC_MSG_ERROR([Qt 4 library not found])
4130     ],[
4131       AC_MSG_WARN([Qt 4 library not found])
4132     ])
4133     enable_qt4="no"
4134   ])
4135 ])
4136 AM_CONDITIONAL(ENABLE_QT4, [test "x$enable_qt4" != "xno"])
4137
4138 dnl
4139 dnl Simple test for skins2 dependency
4140 dnl
4141 AS_IF([test "${enable_skins2}" != "no" && test "x$enable_qt4" = "xno"], [
4142   AC_MSG_ERROR([The skins2 module depends on a the Qt4 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 Qt4 development package or alternatively you can also configure with: --disable-qt4 --disable-skins2.])
4143 ])
4144
4145 dnl
4146 dnl  MacOS X video output/gui modules
4147 dnl
4148 AC_ARG_ENABLE(macosx,
4149   [  --enable-macosx         Mac OS X gui support (default enabled on Mac OS X)])
4150 if test "x${enable_macosx}" = "xyes"
4151 then
4152   VLC_ADD_LDFLAGS([macosx minimal_macosx],[-Wl,-framework,Cocoa])
4153   VLC_ADD_LDFLAGS([macosx minimal_macosx],[-Wl,-framework,OpenGL])
4154   VLC_ADD_LDFLAGS([macosx minimal_macosx],            [-Wl,-framework,Carbon])
4155   VLC_ADD_LDFLAGS([macosx minimal_macosx],            [-Wl,-framework,CoreServices])
4156   VLC_ADD_LDFLAGS([macosx minimal_macosx],            [-Wl,-framework,AGL])
4157   VLC_ADD_LDFLAGS([macosx],                           [-Wl,-framework,IOKit])
4158   VLC_ADD_LDFLAGS([macosx],                           [-F${CONTRIB_DIR}/Sparkle -Wl,-framework,Sparkle])
4159   VLC_ADD_OBJCFLAGS([macosx],                         [-F${CONTRIB_DIR}/Sparkle])
4160   dnl For bug report
4161   VLC_ADD_LDFLAGS([macosx],                           [-Wl,-framework,AddressBook])
4162   VLC_ADD_LDFLAGS([macosx],                           [-Wl,-framework,WebKit])
4163   VLC_ADD_OBJCFLAGS([macosx minimal_macosx], [-fobjc-exceptions] )
4164
4165   VLC_ADD_PLUGIN([macosx])
4166   VLC_ADD_PLUGIN([minimal_macosx])
4167 fi
4168
4169 dnl
4170 dnl  MacOS X related modules
4171 dnl
4172
4173 AC_ARG_ENABLE(macosx-vout,
4174   [  --enable-macosx-vout    Mac OS X video output module (default enabled on Mac OS X)])
4175 if test "x${enable_macosx_vout}" != "xno" &&
4176   (test "${SYS}" = "darwin" || test "${enable_macosx_vout}" = "yes")
4177 then
4178   VLC_ADD_LDFLAGS([vout_macosx],[-Wl,-framework,Cocoa])
4179   VLC_ADD_LDFLAGS([vout_macosx],[-Wl,-framework,OpenGL])
4180   VLC_ADD_PLUGIN([vout_macosx])
4181 fi
4182
4183 AC_ARG_ENABLE(macosx-dialog-provider,
4184   [  --enable-macosx-dialog-provider Mac OS X dialog module (default enabled on Mac OS X)])
4185 if test "x${enable_macosx_dialog_provider}" != "xno" &&
4186   (test "${SYS}" = "darwin" || test "${enable_macosx_dialog_provider}" = "yes")
4187 then
4188   VLC_ADD_LDFLAGS([macosx_dialog_provider],[-Wl,-framework,Cocoa])
4189   VLC_ADD_PLUGIN([macosx_dialog_provider])
4190 fi
4191
4192 AC_ARG_ENABLE(macosx-qtcapture,
4193   [  --enable-macosx-qtcapture Mac OS X qtcapture (iSight) module (default enabled on Mac OS X)])
4194 if test "x${enable_macosx_qtcapture}" != "xno" &&
4195   (test "${SYS}" = "darwin" || test "${enable_macosx_qtcapture}" = "yes")
4196 then
4197   VLC_ADD_LDFLAGS([qtcapture], [-Wl,-framework,Cocoa])
4198   VLC_ADD_LDFLAGS([qtcapture], [-Wl,-framework,QTKit])
4199   VLC_ADD_LDFLAGS([qtcapture], [-Wl,-framework,CoreAudio])
4200   VLC_ADD_LDFLAGS([qtcapture], [-Wl,-framework,QuartzCore])
4201   VLC_ADD_LDFLAGS([qtcapture], [-Wl,-framework,CoreVideo])
4202   VLC_ADD_PLUGIN([qtcapture])
4203 fi
4204
4205 AC_ARG_ENABLE(macosx-eyetv,
4206   [  --enable-macosx-eyetv   Mac OS X EyeTV (TNT Tuner) module (default enabled on Mac OS X)])
4207 if test "x${enable_macosx_eyetv}" != "xno" &&
4208   (test "${SYS}" = "darwin" || test "${enable_macosx_eyetv}" = "yes")
4209 then
4210   VLC_ADD_LDFLAGS([access_eyetv], [-Wl,-framework,Foundation])
4211   VLC_ADD_PLUGIN([access_eyetv])
4212 fi
4213
4214 AC_ARG_ENABLE(macosx-vlc-app,
4215   [  --enable-macosx-vlc-app build the VLC media player (default enabled on Mac OS X)])
4216 AM_CONDITIONAL(BUILD_MACOSX_VLC_APP, [test "${enable_macosx_vlc_app}" != "no" &&
4217     (test "${SYS}" = "darwin" || test "${enable_macosx_vlc_app}" = "yes") ])
4218
4219
4220 dnl
4221 dnl  ncurses module
4222 dnl
4223 AC_ARG_ENABLE(ncurses,
4224   [  --disable-ncurses       ncurses interface support (default enabled)],
4225   [if test "${enable_ncurses}" != "no"; then
4226     AC_CHECK_HEADER(ncurses.h,
4227       [AC_CHECK_LIB(ncursesw, mvprintw,
4228         [VLC_ADD_PLUGIN([ncurses])
4229         VLC_ADD_LIBS([ncurses],[-lncursesw])
4230         ALIASES="${ALIASES} nvlc"
4231         AC_DEFINE([HAVE_NCURSESW], 1, [Define to 1 if you have libncursesw.])
4232         AC_CHECK_LIB(ncursesw, tgetent, [],
4233           AC_CHECK_LIB(tinfow, tgetent, [VLC_ADD_LIBS([ncurses],[-ltinfow])],
4234             [AC_CHECK_LIB(tinfo, tgetent, [VLC_ADD_LIBS([ncurses],[-ltinfo])],
4235               [AS_IF([test "x${enable_ncurses}" != "x"],
4236                 [AC_MSG_ERROR([tgetent not found in ncursesw tinfow tinfo]
4237                )])])
4238             ]
4239           )
4240         )
4241         ],
4242         [AC_CHECK_LIB( ncurses, mvprintw,
4243           [VLC_ADD_PLUGIN([ncurses])
4244           ALIASES="${ALIASES} nvlc"
4245           VLC_ADD_LIBS([ncurses],[-lncurses])
4246           AC_CHECK_LIB(ncurses, tgetent, [],
4247             [AC_CHECK_LIB(tinfo, tgetent, [VLC_ADD_LIBS([ncurses],[-ltinfo])],
4248               [AS_IF([test "x${enable_ncurses}" != "x"],
4249                 [AC_MSG_ERROR([tgetent not found in ncurses tinfo])])]
4250             )]
4251           )],
4252           [AS_IF([test "x${enable_ncurses}" != "x"], [
4253             AC_MSG_ERROR([libncurses not found])])]
4254         )]
4255       )]
4256     )
4257   fi]
4258 )
4259
4260 dnl
4261 dnl  XOSD plugin
4262 dnl
4263 AC_ARG_ENABLE(xosd,
4264   [  --enable-xosd           xosd interface support (default disabled)])
4265 if test "${enable_xosd}" = "yes"
4266 then
4267   AC_CHECK_HEADERS(xosd.h,
4268     AC_CHECK_LIB(xosd, xosd_set_horizontal_offset, [
4269       VLC_ADD_PLUGIN([xosd])
4270       VLC_ADD_LIBS([xosd],[-lxosd])
4271     ])
4272   )
4273 fi
4274
4275 dnl
4276 dnl Framebuffer (overlay) plugin
4277 dnl
4278 AC_ARG_ENABLE(fbosd,
4279   [  --enable-fbosd          fbosd interface support (default disabled)])
4280 if test "${enable_fbosd}" = "yes"
4281 then
4282   AC_CHECK_HEADERS(linux/fb.h, [
4283     VLC_ADD_PLUGIN([fbosd])
4284  ])
4285 fi
4286
4287 dnl
4288 dnl Post-interface configuration checks
4289 dnl
4290 AS_IF([test "$need_xid_provider" = "yes"], [
4291   AC_MSG_ERROR([X11 video outputs need a window provider (Qt4, Skins2, Hildon or xcb-utils), but none were found. Please install xcb-keysyms.])
4292 ])
4293
4294 dnl
4295 dnl Visualisation plugin
4296 dnl
4297 AC_ARG_ENABLE(visual,
4298   [  --enable-visual         visualisation plugin (default enabled)])
4299 if test "${enable_visual}" != "no"
4300 then
4301     VLC_ADD_PLUGIN([visual])
4302 fi
4303
4304 dnl
4305 dnl  goom visualization plugin
4306 dnl
4307 PKG_ENABLE_MODULES_VLC([GOOM], [], [libgoom2], [goom visualization plugin], [auto])
4308
4309 dnl
4310 dnl libprojectM visualization plugin
4311 dnl
4312 PKG_ENABLE_MODULES_VLC([PROJECTM], [], [libprojectM], [projectM visualization plugin], [auto])
4313
4314 dnl
4315 dnl  AtmoLight (homemade Philips Ambilight clone)
4316 dnl
4317 AC_ARG_ENABLE(atmo,
4318 AS_HELP_STRING([--disable-atmo],[AtmoLight (homemade Philips Ambilight clone)
4319                 (default enabled)]),, [enable_atmo="yes"])
4320 AS_IF([test "${enable_atmo}" != no], [
4321   AS_IF([test "${SYS}" = "mingw32" -o "${SYS}" = "linux"], [
4322     AC_LANG_PUSH(C++)
4323     VLC_ADD_PLUGIN([atmo])
4324     AC_LANG_POP(C++)
4325   ])
4326 ])
4327
4328 dnl
4329 dnl  Bonjour services discovery
4330 PKG_ENABLE_MODULES_VLC([BONJOUR], [], [avahi-client >= 0.6], [Bonjour services discovery], [auto])
4331
4332 dnl
4333 dnl  libudev services discovery
4334 PKG_ENABLE_MODULES_VLC([UDEV], [], [libudev >= 142], [Linux udev services discovery], [auto])
4335
4336 dnl
4337 dnl MTP devices services discovery
4338 PKG_ENABLE_MODULES_VLC([MTP], [], [libmtp >= 0.3.0],[MTP devices support],[auto])
4339
4340 dnl
4341 dnl  Lirc plugin
4342 dnl
4343 AC_ARG_ENABLE(lirc,
4344   [  --enable-lirc           lirc support (default disabled)])
4345 if test "${enable_lirc}" = "yes"
4346 then
4347   AC_CHECK_HEADER(lirc/lirc_client.h, AC_CHECK_LIB(lirc_client, lirc_init, have_lirc="true", have_lirc="false"),have_lirc="false")
4348   if test "${have_lirc}" = "true"
4349   then
4350     VLC_ADD_PLUGIN([lirc])
4351     VLC_ADD_LIBS([lirc],[-llirc_client])
4352   fi
4353 fi
4354
4355
4356 AC_ARG_WITH(,[Misc options:])
4357
4358 dnl
4359 dnl libgcrypt
4360 dnl
4361 AC_ARG_ENABLE(libgcrypt,
4362   [  --disable-libgcrypt     gcrypt support (default enabled)])
4363 AS_IF([test "${enable_libgcrypt}" != "no"], [
4364   AC_CHECK_DECL([GCRYCTL_SET_THREAD_CBS], [
4365     libgcrypt-config --version >/dev/null || \
4366         AC_MSG_ERROR([gcrypt.h present but libgcrypt-config could not be found])
4367     AC_CHECK_LIB(gcrypt, gcry_control, [
4368       have_libgcrypt="yes"
4369       GCRYPT_CFLAGS="`libgcrypt-config --cflags`"
4370       GCRYPT_LIBS="`libgcrypt-config --libs`"
4371     ], [
4372       AC_MSG_ERROR([libgcrypt not found. Install libgcrypt or use --disable-libgcrypt. Have a nice day.])
4373     ], [`libgcrypt-config --libs`])
4374   ], [
4375     AC_MSG_ERROR([libgcrypt version 1.1.94 or higher not found. Install libgcrypt or use --disable-libgcrypt. Have a nice day.])
4376   ], [#include <gcrypt.h>]
4377   )
4378 ])
4379
4380 if test "${SYS}" = "mingw32" -o "${SYS}" = "mingwce"; then
4381   AS_IF([test "${have_libgcrypt}" = "yes"],[
4382     VLC_ADD_LIBS([rtp stream_out_rtp], [${GCRYPT_LIBS}])
4383   ])
4384 fi
4385 AC_SUBST(GCRYPT_CFLAGS)
4386 AC_SUBST(GCRYPT_LIBS)
4387 AM_CONDITIONAL([HAVE_GCRYPT], [test "${have_libgcrypt}" = "yes"])
4388
4389 dnl
4390 dnl TLS/SSL
4391 dnl
4392 AC_ARG_ENABLE(gnutls,
4393   [  --enable-gnutls         gnutls TLS/SSL support (default enabled)])
4394
4395 AS_IF([test "${have_libgcrypt}" != "yes"], [
4396   AS_IF([test "${enable_gnutls}" = "yes"], [
4397     AC_MSG_ERROR([--enable-gnutls and --disable-libgcrypt are mutually exclusive.])
4398   ])
4399   enable_gnutls="no"
4400 ])
4401 AS_IF([test "${enable_gnutls}" != "no"], [
4402   PKG_CHECK_MODULES(GNUTLS, [gnutls >= 1.7.4], [
4403     VLC_ADD_PLUGIN([gnutls])
4404     VLC_ADD_CFLAGS([gnutls], [$GNUTLS_CFLAGS])
4405     AS_IF([test "${SYS}" = "mingw32"], [
4406       dnl pkg-config --libs gnutls omits these
4407       VLC_ADD_LIBS([gnutls], [-lz])
4408       VLC_ADD_LIBS([gnutls], [${LTLIBINTL}])
4409     ])
4410     dnl The GnuTLS plugin invokes gcry_control directly.
4411     AS_IF([test "${have_libgcrypt}" = "yes"],[
4412       VLC_ADD_LIBS([gnutls], [${GCRYPT_LIBS}])
4413       VLC_ADD_CFLAGS([gnutls], [${GCRYPT_CFLAGS}])
4414     ])
4415     VLC_ADD_LIBS([gnutls], [$GNUTLS_LIBS])
4416   ], [
4417     AS_IF([test "${enable_gnutls}" = "yes"], [
4418       AC_MSG_ERROR([gnutls not present or too old (version 1.7.4 required)])
4419     ])
4420   ])
4421 ])
4422
4423
4424 dnl
4425 dnl RemoteOSD plugin (VNC client as video filter)
4426 dnl
4427 AC_ARG_ENABLE(remoteosd,
4428   [  --disable-remoteosd     RemoteOSD plugin (default enabled)])
4429
4430 AS_IF([test "${enable_remoteosd}" != "no"], [
4431   AS_IF([test "${have_libgcrypt}" = "yes"],[
4432     VLC_ADD_PLUGIN([remoteosd])
4433     VLC_ADD_LIBS([remoteosd], ${GCRYPT_LIBS})
4434     VLC_ADD_CFLAGS([remoteosd], ${GCRYPT_CFLAGS})
4435   ], [
4436     AC_MSG_ERROR([libgcrypt support required for RemoteOSD plugin])
4437   ])
4438 ])
4439
4440
4441 dnl
4442 dnl RAOP plugin
4443 dnl
4444 AC_MSG_CHECKING([whether to enable RAOP plugin])
4445 AS_IF([test "${have_libgcrypt}" = "yes"], [
4446   AC_MSG_RESULT(yes)
4447   VLC_ADD_PLUGIN([stream_out_raop])
4448   VLC_ADD_LIBS([stream_out_raop], [${GCRYPT_LIBS} -lgpg-error])
4449   VLC_ADD_CFLAGS([stream_out_raop], [${GCRYPT_CFLAGS}])
4450 ], [
4451   AC_MSG_RESULT(no)
4452   AC_MSG_WARN([libgcrypt support required for RAOP plugin])
4453 ])
4454
4455
4456 dnl
4457 dnl OSSO (Maemo screen blanking) plugin
4458 dnl
4459 PKG_ENABLE_MODULES_VLC([OSSO], [], [libosso], [Maemo support], [auto])
4460
4461 AS_IF([test -f "/etc/maemo_version"], [
4462   AC_DEFINE([HAVE_MAEMO], 1, [Define to 1 if building for the Maemo platform.])
4463 ])
4464
4465
4466 dnl
4467 dnl update checking system
4468 dnl
4469 AC_ARG_ENABLE(update-check,
4470   [  --enable-update-check   update checking system (default disabled)])
4471 if test "${enable_update_check}" = "yes"
4472 then
4473   if test "${have_libgcrypt}" != "yes"
4474   then
4475     AC_MSG_ERROR([libgcrypt is required for update checking system])
4476   fi
4477   VLC_ADD_LIBS([libvlccore], [${GCRYPT_LIBS}])
4478   VLC_ADD_CFLAGS([libvlccore], [${GCRYPT_CFLAGS}])
4479   AC_DEFINE([UPDATE_CHECK], 1, [Define if you want to use the VLC update mechanism])
4480 fi
4481
4482 dnl
4483 dnl SQLite
4484 dnl
4485 AC_ARG_WITH(sqlite,
4486   [  --with-sqlite=PATH      sqlite path linking])
4487 if test "${SYS}" != "darwin"; then
4488   PKG_ENABLE_MODULES_VLC([SQLITE], [], [sqlite3 >= 3.6.0], [sqlite3], [auto])
4489 else
4490   if test "${enable_sqlite}" != "no"
4491   then
4492     AC_CHECK_HEADERS(sqlite3.h, [
4493         VLC_ADD_PLUGIN([sqlite])
4494         if test "${with_sqlite}" != "no" -a -n "${with_sqlite}"; then
4495           AC_MSG_CHECKING(existence of sqlite directory in ${with_sqlite})
4496           real_sqlite="`cd ${with_sqlite} 2>/dev/null && pwd`"
4497           if test -z "${real_sqlite}"
4498           then
4499             dnl  The given directory can't be found
4500             AC_MSG_RESULT(no)
4501             AC_MSG_ERROR([cannot cd to ${with_sqlite}])
4502           fi
4503           VLC_ADD_CFLAGS([sqlite],[-I${with_sqlite}/include])
4504           VLC_ADD_LIBS([sqlite], [-L${with_sqlite}/lib -lsqlite3])
4505           AC_MSG_RESULT(yes)
4506         else
4507           VLC_ADD_LIBS([sqlite], [-lsqlite3])
4508         fi
4509         AC_DEFINE([SQLITE_MODULE], 1, [Define if you want to use SQLite module]) ],
4510         AC_MSG_ERROR([sqlite3 is required for sqlite module]) )
4511   fi
4512 fi
4513 AM_CONDITIONAL([HAVE_SQLITE], [test "${enable_sqlite}" != "no"])
4514
4515
4516 dnl
4517 dnl  Endianness check
4518 dnl
4519 AC_C_BIGENDIAN
4520 AS_IF([test "${ac_cv_c_bigendian}" = "yes"], [
4521   DEFS_BIGENDIAN="-DWORDS_BIGENDIAN=1"
4522 ], [
4523   DEFS_BIGENDIAN=""
4524 ])
4525 AC_SUBST(DEFS_BIGENDIAN)
4526
4527 dnl
4528 dnl  DLL loader copied from MPlayer copied from somewhere else (WINE ?)
4529 dnl
4530 loader=false
4531 AC_ARG_ENABLE(loader,
4532   AS_HELP_STRING([--enable-loader],[build DLL loader for ELF i386 platforms
4533                   (default disabled)]))
4534 AM_CONDITIONAL(LOADER, [test "${enable_loader}" = "yes"])
4535 AS_IF([test "${enable_loader}" = "yes"],
4536   [ VLC_ADD_PLUGIN([dmo])
4537     VLC_ADD_CPPFLAGS([dmo],[-I\\\${top_srcdir}/libs/loader])
4538     VLC_ADD_LIBS([dmo],[\\\${top_builddir}/libs/loader/libloader.la -lpthread])
4539     VLC_ADD_CPPFLAGS([quicktime],[-I\\\${top_srcdir}/libs/loader])
4540     VLC_ADD_LIBS([quicktime],[\\\${top_builddir}/libs/loader/libloader.la -lpthread])
4541     VLC_ADD_CPPFLAGS([realvideo],[-I\\\${top_srcdir}/libs/loader -DLOADER])
4542     VLC_ADD_LIBS([realvideo],[\\\${top_builddir}/libs/loader/libloader.la])
4543   ])
4544
4545 AC_ARG_WITH(,[Components:])
4546
4547 dnl
4548 dnl  the VLC binary
4549 dnl
4550 AC_ARG_ENABLE(vlc,
4551   [  --enable-vlc            build the VLC media player (default enabled)])
4552 AM_CONDITIONAL(BUILD_VLC, [test "${enable_vlc}" != "no"])
4553
4554 dnl
4555 dnl  Microsoft ActiveX support
4556 dnl
4557 activex=false
4558 AC_ARG_ENABLE(activex,
4559   AS_HELP_STRING([--enable-activex],[build a vlc-based ActiveX control
4560                   (default enabled on Win32)]))
4561 AC_ARG_WITH(wine-sdk-path,
4562   [  --with-wine-sdk-path=PATH path to wine sdk])
4563 if test "${enable_activex}" != "no"
4564 then
4565   if test "${SYS}" = "mingw32"
4566   then
4567     AC_CHECK_PROGS(MIDL, [midl], no)
4568     if test "${with_wine_sdk_path}" != ""
4569     then
4570        WINE_SDK_PATH=${with_wine_sdk_path}
4571        AC_PATH_PROG(WIDL, widl, no, [$WINE_SDK_PATH/bin:$WINE_SDK_PATH/tools/widl])
4572     else
4573        WIDL=no
4574     fi
4575     AC_LANG_PUSH(C++)
4576     AC_CHECK_HEADERS(ole2.h,
4577       [AC_CHECK_HEADERS(olectl.h,
4578         [ VLC_ADD_CPPFLAGS([activex],[-DUNICODE -D_UNICODE -D_MIDL_USE_GUIDDEF_])
4579           VLC_ADD_CXXFLAGS([activex],[-fno-exceptions])
4580           VLC_ADD_LIBS([activex],[-lole32 -loleaut32 -luuid -lshlwapi])
4581           AC_CHECK_HEADERS(objsafe.h,
4582             VLC_ADD_CXXFLAGS([activex],[-DHAVE_OBJSAFE_HEADER]),,
4583             [
4584              #if HAVE_OLE2_H
4585              #   include <ole2.h>
4586              #endif
4587             ]
4588           )
4589           activex=:
4590           PLUGINS_BINDINGS="${PLUGINS_BINDINGS} activex"
4591         ],
4592         [ AC_MSG_ERROR([required OLE headers are missing from your system]) ]
4593       )],
4594       [ AC_MSG_ERROR([required OLE headers are missing from your system]) ]
4595     )
4596     AC_LANG_POP(C++)
4597   fi
4598 fi
4599 AC_ARG_VAR(MIDL, [Microsoft IDL compiler (Win32 platform only)])
4600 AM_CONDITIONAL(HAS_MIDL_COMPILER, test "${MIDL}" != "no")
4601 AC_ARG_VAR(WIDL, [Wine IDL compiler (requires Wine SDK)])
4602 AM_CONDITIONAL(HAS_WIDL_COMPILER, test "${WIDL}" != "no")
4603 AM_CONDITIONAL(BUILD_ACTIVEX,${activex})
4604
4605 dnl
4606 dnl  Mozilla plugin
4607 dnl
4608 mozilla=false
4609 AC_ARG_ENABLE(mozilla,
4610   AS_HELP_STRING([--enable-mozilla],[build a vlc-based Firefox/Mozilla plugin
4611                   (default disabled)]))
4612 AC_ARG_WITH(mozilla-sdk-path,
4613   [  --with-mozilla-sdk-path=PATH path to mozilla sdk])
4614 AC_ARG_WITH(mozilla-pkg,
4615   [  --with-mozilla-pkg=PKG  look for PKG.pc to build the mozilla plugin.])
4616 AC_LANG_PUSH(C++)
4617 if test "${enable_mozilla}" = "yes"
4618 then
4619   AS_IF([test "${with_mozilla_sdk_path}" = "" -o "${with_mozilla_sdk_path}" = "no"],
4620     [
4621     dnl pkg-config
4622     dnl As we want to do a loop due to the number of name possible for the .pc
4623     dnl we can't use the pkg-config macros.
4624
4625     AC_ARG_VAR([MOZILLA_CFLAGS], [C compiler flags for Mozilla, overriding pkg-config])
4626     AC_ARG_VAR([MOZILLA_LIBS], [linker flags for Mozilla, overriding pkg-config])
4627     AC_MSG_NOTICE([Checking for Mozilla])
4628     found=0
4629     if test -n "$MOZILLA_CFLAGS" -a -n "$MOZILLA_LIBS"
4630     then
4631       found=1
4632     else
4633       if test -n "$PKG_CONFIG"; then
4634         for i in "${with_mozilla_pkg}" libxul {seamonkey,iceape,xulrunner,firefox,iceweasel,mozilla}-plugin; do
4635           echo "Trying to find $i.pc files" >&5
4636           if $PKG_CONFIG --exists --print-errors "$i" 2>&5
4637           then
4638             echo "Using $i.pc files." >&5
4639             echo "Using $i.pc files." >&6
4640             found=1
4641             MOZILLA_CFLAGS=$(eval $PKG_CONFIG --cflags "$i" )
4642             MOZILLA_LIBS=$(eval $PKG_CONFIG --libs "$i" )
4643             break
4644           fi
4645         done
4646       fi
4647     fi
4648     AS_IF( [test $found = 1],[
4649         CPPFLAGS="${CPPFLAGS_save} ${MOZILLA_CFLAGS}"
4650         MOZILLA_REQUIRED_HEADERS=1
4651         AC_CHECK_HEADERS([npfunctions.h])
4652         AC_CHECK_HEADERS(npapi.h,,MOZILLA_REQUIRED_HEADERS=0)
4653         AC_CHECK_HEADERS(npruntime.h,,MOZILLA_REQUIRED_HEADERS=0,
4654           [#if HAVE_NPAPI_H
4655            # include <npapi.h>
4656            #endif
4657           ])
4658         if test "${MOZILLA_REQUIRED_HEADERS}" = "0"; then
4659             AC_MSG_ERROR([Please install the Firefox development tools; mozilla-config.h, plugin/npapi.h and plugin/npruntime.h were not found.])
4660         fi
4661         MOZILLA_REQUIRED_HEADERS=
4662         mozilla=:
4663         AS_IF([ test "${SYS}" != "mingw32" -a "${SYS}" != "mingwce"],[
4664            VLC_ADD_CPPFLAGS([mozilla],[-DXP_UNIX -DOJI])
4665            AS_IF([ test "${SYS}" != "darwin"],[
4666              PKG_CHECK_MODULES(XPM, [xpm xt],[
4667                 VLC_ADD_CPPFLAGS([mozilla],[-DMOZ_X11])
4668              ],[
4669                 AC_MSG_ERROR([Please install the libXpm and libXt development files.])
4670              ])
4671           ])
4672         ])
4673         VLC_ADD_CPPFLAGS([mozilla],[${CPPFLAGS} ${XPM_CFLAGS}])
4674         VLC_ADD_LIBS([mozilla],[${MOZILLA_LIBS} ${XPM_LIBS}])
4675         VLC_ADD_PLUGIN([mozilla])
4676         PLUGINS_BINDINGS="${PLUGINS_BINDINGS} mozilla"
4677         MOZILLA_CONFIG=
4678         CPPFLAGS="${CPPFLAGS_save}"
4679           ],
4680           [
4681             AC_PATH_PROGS(MOZILLA_CONFIG,
4682             [mozilla-config seamonkey-config xulrunner-config],
4683         [no])
4684             test "${MOZILLA_CONFIG}" = "no" && AC_MSG_ERROR([Please install the Mozilla development tools. mozilla-config was not found.])
4685           ]
4686         )
4687     dnl pkg-config failed but we might have found a mozilla-config
4688     AS_IF( [test ! -z "${MOZILLA_CONFIG}"],[
4689       if ${MOZILLA_CONFIG} --defines | grep -q 'MOZ_X11=1'; then
4690         LDFLAGS="${LDFLAGS_save} ${X_LIBS} ${X_PRE_LIBS}"
4691         AC_CHECK_LIB(Xt,XtStrings,
4692          [
4693            VLC_ADD_CPPFLAGS([mozilla],[${X_CFLAGS}])
4694            VLC_ADD_LIBS([mozilla],[${X_LIBS} ${X_PRE_LIBS} -lXt -lX11 -lSM -lICE -lXpm])
4695          ],
4696          [],
4697          [[${X_LIBS} ${X_PRE_LIBS} -lX11 -lSM -lICE -lXpm]
4698         ])
4699         AC_CHECK_HEADERS(X11/xpm.h,,AC_MSG_ERROR([Please install libXpm-devel library for required X11/xpm.h]))
4700         LDFLAGS="${LDFLAGS_save}"
4701       fi
4702
4703       mozilla=:
4704       PLUGINS_BINDINGS="${PLUGINS_BINDINGS} mozilla"
4705       VLC_ADD_CPPFLAGS([mozilla],[[`${MOZILLA_CONFIG} --cflags plugin java`]])
4706       VLC_ADD_LIBS([mozilla],[`${MOZILLA_CONFIG} --libs plugin`])
4707       CPPFLAGS="${CPPFLAGS_save} ${CPPFLAGS_mozilla}"
4708       MOZILLA_REQUIRED_HEADERS=1
4709       AC_CHECK_HEADERS(mozilla-config.h,,MOZILLA_REQUIRED_HEADERS=0)
4710       AC_CHECK_HEADERS(npapi.h,,MOZILLA_REQUIRED_HEADERS=0)
4711       AC_CHECK_HEADERS(npruntime.h,,MOZILLA_REQUIRED_HEADERS=0,
4712         [#if HAVE_NPAPI_H
4713          # include <npapi.h>
4714          #endif
4715         ])
4716       if test "${MOZILLA_REQUIRED_HEADERS}" = "0"
4717       then
4718         AC_MSG_ERROR([Please install the Mozilla development tools, required headers were not found.])
4719       fi
4720       MOZILLA_REQUIRED_HEADERS=
4721       CPPFLAGS="${CPPFLAGS_save}"
4722       MOZILLA_SDK_PATH="`${MOZILLA_CONFIG} --prefix`"
4723     ])
4724     dnl End of moz_sdk = ""
4725   ],[
4726     dnl special case for mingw32
4727     if test "${SYS}" = "mingw32"
4728     then
4729       AC_CHECK_TOOL(CYGPATH, cygpath, "")
4730       dnl latest gecko sdk does not have an xpcom directory
4731       if test -d "${with_mozilla_sdk_path}/xpcom"; then
4732           mozilla_sdk_xpcom="/xpcom"
4733       fi
4734     fi
4735
4736     real_mozilla_sdk="`cd ${with_mozilla_sdk_path} 2>/dev/null && pwd`"
4737     CPPFLAGS="${CPPFLAGS_save} -I${real_mozilla_sdk} -I${real_mozilla_sdk}/include"
4738     MOZILLA_REQUIRED_HEADERS=1
4739     AC_CHECK_HEADERS(mozilla-config.h,,MOZILLA_REQUIRED_HEADERS=0)
4740     AC_CHECK_HEADERS(npapi.h,,MOZILLA_REQUIRED_HEADERS=0)
4741     AC_CHECK_HEADERS(npruntime.h,,MOZILLA_REQUIRED_HEADERS=0,
4742         [#if HAVE_NPAPI_H
4743           #include <npapi.h>
4744           #endif
4745         ])
4746     if test "${MOZILLA_REQUIRED_HEADERS}" = "0"
4747     then
4748         AC_MSG_ERROR([Please install the Mozilla development tools, required headers were not found.])
4749     fi
4750     MOZILLA_REQUIRED_HEADERS=
4751     mozilla=:
4752     PLUGINS_BINDINGS="${PLUGINS_BINDINGS} mozilla"
4753     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])
4754     if ${need_xpcom_libs}; then
4755        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])
4756       if test "${SYS}" = "mingw32"; then
4757         dnl latest gecko sdk does not have embedstring
4758         if test -d "${real_mozilla_sdk}/embedstring/bin"
4759         then
4760           VLC_ADD_LIBS([mozilla],[-lembedstring])
4761         fi
4762       fi
4763     fi
4764     MOZILLA_SDK_PATH="${real_mozilla_sdk}"
4765
4766     if test -n "${CYGPATH}"; then
4767       real_mozilla_sdk="`${CYGPATH} -w ${real_mozilla_sdk}`"
4768     fi
4769     CPPFLAGS="${CPPFLAGS_save}"
4770  ])
4771 fi
4772 AC_LANG_POP(C++)
4773 AM_CONDITIONAL(BUILD_MOZILLA,${mozilla})
4774
4775 dnl
4776 dnl  test plugins
4777 dnl
4778 AC_ARG_ENABLE(testsuite,
4779   [  --enable-testsuite      build test modules (default disabled)])
4780 if test "${enable_testsuite}" = "yes"
4781 then
4782   TESTS="test1 test2 test3 test4"
4783
4784   dnl  we define those so that bootstrap sets the right linker
4785   VLC_ADD_CXXFLAGS([test2],[])
4786   VLC_ADD_OBJCFLAGS([test3],[])
4787   dnl  this one is needed until automake knows what to do
4788   VLC_ADD_LIBS([test3],[-lobjc])
4789
4790   VLC_ADD_PLUGIN([test1])
4791   VLC_ADD_PLUGIN([test2])
4792   VLC_ADD_PLUGIN([test3])
4793   VLC_ADD_PLUGIN([test4])
4794 fi
4795
4796 dnl
4797 dnl  Plugin and builtin checks
4798 dnl
4799 plugin_support=yes
4800
4801 dnl Automagically disable plugins if there is no system support for
4802 dnl dynamically loadable files (.so, .dll, .dylib).
4803 dnl don't forget vlc-win32 still can load .dll as plugins
4804 AS_IF([test "${ac_cv_have_plugins}" = "no"], [
4805   AC_MSG_WARN([*** No plugin support! Building statically! ***])
4806   plugin_support=no
4807 ])
4808
4809 AS_IF([test "${plugin_support}" != "no"], [
4810   AC_DEFINE(HAVE_DYNAMIC_PLUGINS, 1, [Define if dynamic plugins are supported])
4811 ])
4812
4813 dnl
4814 dnl Pic and shared libvlc stuff
4815 dnl
4816 AS_IF([test "${SYS}" = "mingw32"], [
4817   FILE_LIBVLCCORE_DLL="!define LIBVLCCORE_DLL libvlccore.dll"
4818   FILE_LIBVLC_DLL="!define LIBVLC_DLL libvlc.dll"
4819 ])
4820
4821 dnl
4822 dnl  Stuff used by the program
4823 dnl
4824 VERSION_MESSAGE="${VERSION} ${CODENAME}"
4825 COPYRIGHT_MESSAGE="VLC media player - version ${VERSION_MESSAGE} - (c) ${COPYRIGHT_YEARS} the VideoLAN team"
4826 AC_DEFINE_UNQUOTED(VERSION_MESSAGE, "${VERSION_MESSAGE}", [Simple version string])
4827 AC_DEFINE_UNQUOTED(COPYRIGHT_MESSAGE, "${COPYRIGHT_MESSAGE}", [Copyright string])
4828 AC_DEFINE_UNQUOTED(COPYRIGHT_YEARS, "${COPYRIGHT_YEARS}", [The copyright years])
4829 AC_DEFINE_UNQUOTED(CONFIGURE_LINE, "${CONFIGURE_LINE}", [The ./configure command line])
4830 AC_DEFINE_UNQUOTED(PACKAGE_VERSION_MAJOR,"${VERSION_MAJOR}", [version major number])
4831 AC_DEFINE_UNQUOTED(PACKAGE_VERSION_MINOR,"${VERSION_MINOR}", [version minor number])
4832 AC_DEFINE_UNQUOTED(PACKAGE_VERSION_REVISION,"${VERSION_REVISION}", [version minor number])
4833 AC_DEFINE_UNQUOTED(PACKAGE_VERSION_EXTRA,"${VERSION_EXTRA}", [version minor number])
4834 AC_SUBST(COPYRIGHT_MESSAGE)
4835 AC_SUBST(VERSION_MESSAGE)
4836 AC_SUBST(VERSION_MAJOR)
4837 AC_SUBST(VERSION_MINOR)
4838 AC_SUBST(VERSION_REVISION)
4839 AC_SUBST(VERSION_EXTRA)
4840 AC_SUBST(COPYRIGHT_YEARS)
4841 AC_DEFINE_UNQUOTED(VLC_COMPILE_BY, "`whoami`", [user who ran configure])
4842 AC_DEFINE_UNQUOTED(VLC_COMPILE_HOST, "`hostname -f 2>/dev/null || hostname`", [host which ran configure])
4843 AC_DEFINE_UNQUOTED(VLC_COMPILER, "`$CC -v 2>&1 | tail -n 1`", [compiler])
4844 dnl Win32 need s a numerical version_extra.
4845 case $( echo ${VERSION_EXTRA}|wc -m ) in
4846        "1") VERSION_EXTRA_RC="0";;
4847        "2") VERSION_EXTRA_RC=$( echo ${VERSION_EXTRA}|tr "abcdefghi" "123456789") ;;
4848        *) VERSION_EXTRA_RC="99"
4849 esac
4850 AC_SUBST(VERSION_EXTRA_RC)
4851 dnl
4852 dnl  Handle substvars that use $(top_srcdir)
4853 dnl
4854 VLC_CONFIG="top_srcdir=\"\$(top_srcdir)\" top_builddir=\"\$(top_builddir)\" \$(top_builddir)/vlc-config"
4855 AC_SUBST(VLC_CONFIG)
4856 CPPFLAGS_save="-I\$(top_srcdir)/include -I\$(top_builddir)/include ${CPPFLAGS_save}"
4857
4858 dnl
4859 dnl  Restore *FLAGS
4860 dnl
4861 VLC_RESTORE_FLAGS
4862
4863 dnl
4864 dnl Sort the modules list
4865 dnl
4866 PLUGINS=$( (for i in `echo $PLUGINS`; do echo $i; done)|sort|xargs )
4867
4868 dnl
4869 dnl  Create the vlc-config script
4870 dnl
4871 LDFLAGS_libvlc="${LDFLAGS_libvlc} ${LDFLAGS_builtin}"
4872
4873 dnl
4874 dnl  Configuration is finished
4875 dnl
4876 AC_SUBST(SYS)
4877 AC_SUBST(ARCH)
4878 AC_SUBST(ALIASES)
4879 AC_SUBST(ASM)
4880 AC_SUBST(MOC)
4881 AC_SUBST(RCC)
4882 AC_SUBST(UIC)
4883 AC_SUBST(WINDRES)
4884 AC_SUBST(MOZILLA_SDK_PATH)
4885 AC_SUBST(WINE_SDK_PATH)
4886 AC_SUBST(LIBEXT)
4887 AC_SUBST(AM_CPPFLAGS)
4888 AC_SUBST(MACOSX_DEPLOYMENT_TARGET)
4889 AC_SUBST(FILE_LIBVLCCORE_DLL)
4890 AC_SUBST(FILE_LIBVLC_DLL)
4891
4892 dnl Create vlc-config.in
4893 VLC_OUTPUT_VLC_CONFIG_IN
4894
4895 AC_CONFIG_FILES([
4896   extras/package/win32/spad.nsi
4897   extras/package/win32/vlc.win32.nsi
4898   extras/package/macosx/Info.plist
4899   extras/package/macosx/Resources/English.lproj/InfoPlist.strings
4900   extras/package/macosx/plugin/Info.plist
4901   extras/package/macosx/plugin/InstallerInfo.plist
4902   Makefile
4903   projects/activex/Makefile
4904   projects/activex/axvlc.inf
4905   doc/Makefile
4906   extras/package/ipkg/Makefile
4907   libs/loader/Makefile
4908   libs/srtp/Makefile
4909   libs/unzip/Makefile
4910   modules/Makefile
4911   projects/mozilla/Makefile
4912   m4/Makefile
4913   po/Makefile.in
4914   projects/activex/axvlc_rc.rc
4915   projects/mozilla/npvlc_rc.rc
4916   projects/mozilla/vlc.r
4917   projects/mozilla/install.js
4918   projects/mozilla/install.rdf
4919   share/Makefile
4920   compat/Makefile
4921   src/Makefile
4922   src/test/Makefile
4923   bin/Makefile
4924   test/Makefile
4925   modules/access/Makefile
4926   modules/access/bd/Makefile
4927   modules/access/bda/Makefile
4928   modules/access/dshow/Makefile
4929   modules/access/dvb/Makefile
4930   modules/access/mms/Makefile
4931   modules/access/rtp/Makefile
4932   modules/access/rtsp/Makefile
4933   modules/access/vcd/Makefile
4934   modules/access/vcdx/Makefile
4935   modules/access/screen/Makefile
4936   modules/access/zip/Makefile
4937   modules/access_output/Makefile
4938   modules/audio_filter/Makefile
4939   modules/audio_filter/channel_mixer/Makefile
4940   modules/audio_filter/converter/Makefile
4941   modules/audio_filter/resampler/Makefile
4942   modules/audio_filter/spatializer/Makefile
4943   modules/audio_mixer/Makefile
4944   modules/audio_output/Makefile
4945   modules/codec/Makefile
4946   modules/codec/avcodec/Makefile
4947   modules/codec/dmo/Makefile
4948   modules/codec/shine/Makefile
4949   modules/codec/subtitles/Makefile
4950   modules/codec/spudec/Makefile
4951   modules/codec/wmafixed/Makefile
4952   modules/control/Makefile
4953   modules/control/http/Makefile
4954   modules/control/globalhotkeys/Makefile
4955   modules/demux/Makefile
4956   modules/demux/asf/Makefile
4957   modules/demux/avformat/Makefile
4958   modules/demux/avi/Makefile
4959   modules/demux/mkv/Makefile
4960   modules/demux/mp4/Makefile
4961   modules/demux/mpeg/Makefile
4962   modules/demux/playlist/Makefile
4963   modules/gui/Makefile
4964   modules/gui/macosx/Makefile
4965   modules/gui/hildon/Makefile
4966   modules/gui/minimal_macosx/Makefile
4967   modules/gui/macosx_dialog_provider/Makefile
4968   modules/gui/qt4/Makefile
4969   modules/gui/skins2/Makefile
4970   modules/meta_engine/Makefile
4971   modules/misc/Makefile
4972   modules/misc/dummy/Makefile
4973   modules/misc/lua/Makefile
4974   modules/misc/notify/Makefile
4975   modules/misc/testsuite/Makefile
4976   modules/misc/playlist/Makefile
4977   modules/misc/osd/Makefile
4978   modules/misc/stats/Makefile
4979   modules/misc/xml/Makefile
4980   modules/mux/Makefile
4981   modules/mux/mpeg/Makefile
4982   modules/packetizer/Makefile
4983   modules/services_discovery/Makefile
4984   modules/stream_filter/Makefile
4985   modules/stream_out/Makefile
4986   modules/stream_out/transcode/Makefile
4987   modules/video_chroma/Makefile
4988   modules/video_filter/Makefile
4989   modules/video_filter/dynamicoverlay/Makefile
4990   modules/video_output/Makefile
4991   modules/video_output/msw/Makefile
4992   modules/visualization/Makefile
4993   modules/visualization/visual/Makefile
4994   modules/mmx/Makefile
4995   modules/mmxext/Makefile
4996   modules/3dnow/Makefile
4997   modules/sse2/Makefile
4998   modules/altivec/Makefile
4999   modules/arm_neon/Makefile
5000 ])
5001
5002 dnl Generate makefiles
5003 AC_OUTPUT
5004
5005 # Cannot use AC_CONFIG_FILES([vlc-config]) as is automatically built,
5006 # not provided with the source
5007 ${SHELL} ./config.status --file=vlc-config
5008 chmod 0755 vlc-config
5009
5010 /bin/echo -n "Enabled modules: "
5011 ./vlc-config --list plugin
5012
5013 dnl Do we have to use make or gmake ?
5014 USE_MAKE_OR_GMAKE=`case "${SYS}" in openbsd*) echo "gmake";; *) echo "make";; esac`
5015 dnl Shortcut to nice compile message
5016 rm -f compile
5017 if test -n $SHELL; then
5018   SHELL=${CONFIG_SHELL-/bin/sh}
5019 fi
5020 echo '#! '$SHELL >compile
5021 echo rm -f .error\$\$ >>compile
5022 echo ERROR=0 >>compile
5023 echo export PATH=$PATH LANG=C >>compile
5024 echo "($USE_MAKE_OR_GMAKE V=1 \$@ 2>&1 || touch .error\$\$)| \\" >>compile
5025 echo '`sed -ne "s/^top_srcdir *= *//p" < Makefile`/extras/buildsystem/make.pl' >>compile
5026 echo test -f .error\$\$ \&\& ERROR=1 >>compile
5027 echo rm -f .error\$\$ >>compile
5028 echo exit \$ERROR >>compile
5029 chmod a+x compile
5030
5031 printf "
5032 libvlc configuration
5033 --------------------
5034 version               : ${VERSION}
5035 system                : ${SYS}
5036 architecture          : ${ARCH}
5037 build flavour         : "
5038 test "${enable_debug}" = "yes" && printf "debug "
5039 test "${enable_cprof}" = "yes" && printf "cprof "
5040 test "${enable_gprof}" = "yes" && printf "gprof "
5041 test "${enable_optimizations}" = "yes" && printf "optim "
5042 test "${enable_release}" = "yes" && printf "release " || printf "devel "
5043 echo ""
5044 if test "${enable_vlc}" != "no"; then
5045 echo "vlc aliases           :${ALIASES}"
5046 else
5047 echo "build vlc executable  : no"
5048 fi
5049 echo "plugins/bindings      :${PLUGINS_BINDINGS}
5050
5051 You can tune the compiler flags in vlc-config.
5052 To build vlc and its plugins, type \`./compile' or \`$USE_MAKE_OR_GMAKE'.
5053 "
5054 if test "x$ac_ld_does_not_support_text_reloc" = "xyes"; then
5055    echo ""
5056    echo "Warning: Due to a bug in ld, mmx/sse support has been"
5057    echo "         turned off."
5058    echo "         FFmpeg will be REALLY slow."
5059    echo "         VLC WILL NOT PERFORM AS EXPECTED."
5060    echo ""
5061 fi