]> git.sesse.net Git - vlc/blobdiff - configure.ac
configure: Per module Werror flags.
[vlc] / configure.ac
index a50ea8b407818f829e77feba627faf728c128ee4..7bb2b5dafe17f2628899d38a9e0d9de983fc8442 100644 (file)
@@ -2,16 +2,16 @@ dnl Autoconf settings for vlc
 
 AC_COPYRIGHT([Copyright 2002-2009 the VideoLAN team])
 
-AC_INIT(vlc, 1.0.0-pre1)
+AC_INIT(vlc, 1.1.0-git)
 VERSION_MAJOR="1"
-VERSION_MINOR="0"
+VERSION_MINOR="1"
 VERSION_REVISION="0"
-VERSION_EXTRA="-pre1"
+VERSION_EXTRA="-git"
 PKGDIR="vlc"
 AC_SUBST(PKGDIR)
 
 CONFIGURE_LINE="`echo "$0 $ac_configure_args" | sed -e 's/\\\/\\\\\\\/g'`"
-CODENAME="Goldeneye"
+CODENAME="Yellow Bastard"
 COPYRIGHT_YEARS="1996-2009"
 
 AC_PREREQ(2.59c)
@@ -25,6 +25,10 @@ AC_CANONICAL_HOST
 AM_INIT_AUTOMAKE(tar-ustar)
 AM_CONFIG_HEADER(config.h)
 
+# Disable with "./configure --disable-silent-rules" or "make V=1"
+m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])])
+
+
 dnl Too many people are not aware of maintainer mode:
 dnl If you want to use it, you definitely know what you are doing, so
 dnl you can specify "--disable-maintainer-mode". But if you want the default
@@ -212,10 +216,10 @@ case "${host_os}" in
     VLC_ADD_LDFLAGS([mp4], [-Wl,-framework,IOKit,-framework,CoreFoundation])
     VLC_ADD_LDFLAGS([mkv mp4], [-Wl,-framework,IOKit,-framework,CoreFoundation])
     VLC_ADD_LDFLAGS([vlc],[-Wl,-undefined,dynamic_lookup])
-    VLC_ADD_LDFLAGS([libvlc_control],[-Wl,dynamic_lookup])
-    VLC_ADD_LDFLAGS([avcodec avformat swscale imgresample postproc i420_rgb_mmx x264],[-Wl,-read_only_relocs,suppress])
+    VLC_ADD_LDFLAGS([libvlc],[-Wl,-undefined,dynamic_lookup])
+    VLC_ADD_LDFLAGS([avcodec avformat swscale postproc i420_rgb_mmx x264],[-Wl,-read_only_relocs,suppress])
     VLC_ADD_CFLAGS([motion],[-fconstant-cfstrings])
-    VLC_ADD_LDFLAGS([libvlc],[-Wl,-framework,CoreFoundation])
+    VLC_ADD_LDFLAGS([libvlccore],[-Wl,-framework,CoreFoundation])
     VLC_ADD_LDFLAGS([motion],[-Wl,-framework,IOKit,-framework,CoreFoundation])
     AC_ARG_ENABLE(macosx-defaults,
       AS_HELP_STRING([--enable-macosx-defaults],[Build the default configuration on Mac OS X (default enabled)]))
@@ -246,16 +250,12 @@ case "${host_os}" in
         echo "  Assuming --enable-vcdx"
         enable_caca="yes"
         echo "  Assuming --enable-caca"
-        enable_goom="yes"
-        echo "  Assuming --enable-goom"
         enable_ncurses="yes"
         echo "  Assuming --enable-ncurses"
         enable_twolame="yes"
         echo "  Assuming --enable-twolame"
         enable_realrtsp="yes"
         echo "  Assuming --enable-realrtsp"
-        enable_update_check="yes"
-        echo "  Assuming --enable-update-check"
         enable_libass="yes"
         echo "  Assuming --enable-libass"
         enable_asademux="yes"
@@ -265,31 +265,13 @@ case "${host_os}" in
         echo "  Assuming --disable-skins2"
         enable_x11="no"
         echo "  Assuming --disable-x11"
+        enable_xcb="no"
+        echo "  Assuming --disable-xcb"
         enable_glx="no"
         echo "  Assuming --disable-glx"
         enable_xvideo="no"
         echo "  Assuming --disable-xvideo"
     fi
-    if test ".`uname -p`" = ".i386"; then
-        dnl Due to a ld(64) bug in 10.5 we cannot use our mmx code
-        dnl without hacking it a lot, we disable mmx and sse.
-        dnl (that bug is about ld being unable to handle
-        dnl text relocation)
-        save_cflags="$CFLAGS"
-        CFLAGS="$CFLAGS -dynamiclib -single_module -read_only_relocs suppress"
-        AC_TRY_LINK(
-            [int a;], [asm("movq _a,%mm0\n");],
-            ac_ld_does_not_support_text_reloc=no,
-            ac_ld_does_not_support_text_reloc=yes)
-        CFLAGS="$save_cflags"
-
-        if test "x$ac_ld_does_not_support_text_reloc" = "xyes"; then
-            enable_mmx="no"
-            echo "  Assuming --disable-mmx (due to a bug in ld)"
-            enable_sse="no"
-            echo "  Assuming --disable-sse (due to a bug in ld)"
-        fi
-    fi
     dnl
     dnl  Check for Mac OS X SDK settings
     dnl
@@ -317,12 +299,34 @@ case "${host_os}" in
         export MACOSX_DEPLOYMENT_TARGET
     fi
     ;;
-  *mingw32* | *cygwin* | *wince* | *mingwce* | *pe*)
+  darwin9*)
+    if (test ".`uname -p`" = ".i386"); then
+        dnl Due to a ld(64) bug in 10.5 we cannot use our mmx code
+        dnl without hacking it a lot, we disable mmx and sse.
+        dnl (that bug is about ld being unable to handle
+        dnl text relocation)
+        save_cflags="$CFLAGS"
+        CFLAGS="$CFLAGS -dynamiclib -single_module -read_only_relocs suppress"
+        AC_TRY_LINK(
+            [int a;], [asm("movq _a,%mm0\n");],
+            ac_ld_does_not_support_text_reloc=no,
+            ac_ld_does_not_support_text_reloc=yes)
+        CFLAGS="$save_cflags"
+
+        if test "x$ac_ld_does_not_support_text_reloc" = "xyes"; then
+            enable_mmx="no"
+            echo "  Assuming --disable-mmx (due to a bug in ld)"
+            enable_sse="no"
+            echo "  Assuming --disable-sse (due to a bug in ld)"
+        fi
+    fi
+    ;;
+  *mingw32* | *cygwin* | *wince* | *mingwce*)
     AC_CHECK_TOOL(WINDRES, windres, :)
     AC_CHECK_TOOL(OBJCOPY, objcopy, :)
 
     case "${host_os}" in
-      *wince* | *mingwce* | *mingw32ce* | *pe*)
+      *wince* | *mingwce* | *mingw32ce*)
         SYS=mingwce
         dnl Sadly CeGCC still needs non-wince macros
         AC_DEFINE([_WIN32_WINNT], 0x0501, [Define to '0x0500' for Windows 2000 APIs.])
@@ -345,27 +349,24 @@ case "${host_os}" in
 
     if test "${SYS}" = "mingw32"; then
         # add ws2_32 for closesocket, select, recv
-        VLC_ADD_LIBS([libvlc],[-lws2_32 -lnetapi32 -lwinmm])
+        VLC_ADD_LIBS([libvlccore],[-lws2_32 -lnetapi32 -lwinmm])
         VLC_ADD_LDFLAGS([vlc],[-mwindows])
         VLC_ADD_LIBS([activex mozilla],[-lgdi32])
         VLC_ADD_LIBS([cdda vcdx cddax sdl_image],[-lwinmm])
-        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 http stream_out_standard stream_out_rtp stream_out_raop vod_rtsp access_realrtsp rtp telnet rc netsync gnutls growl_udp flac ts audioscrobbler lua remoteosd],[-lws2_32])
+        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 http stream_out_standard stream_out_rtp stream_out_raop vod_rtsp access_realrtsp rtp telnet rc netsync gnutls growl_udp flac ts audioscrobbler lua remoteosd zvbi],[-lws2_32])
+        VLC_ADD_LIBS([access_file], [-lshlwapi])
     fi
     if test "${SYS}" = "mingwce"; then
         # add ws2 for closesocket, select, recv
-        VLC_ADD_LIBS([libvlc access_http access_mms access_udp access_tcp access_ftp access_rtmp access_output_udp sap http netsync audioscrobbler growl rtp stream_out_rtp remoteosd],[-lws2])
-        VLC_ADD_LIBS([libvlc],[-lmmtimer])
+        VLC_ADD_LIBS([libvlccore access_http access_mms access_udp access_tcp access_ftp access_rtmp access_output_udp access_output_rtmp sap http netsync audioscrobbler growl rtp stream_out_rtp remoteosd ts],[-lws2])
+        VLC_ADD_LIBS([libvlccore],[-lmmtimer])
    fi
     ;;
   *nto*)
     SYS=nto
-    VLC_ADD_LIBS([x11 xvideo],[-lsocket])
     ;;
   solaris*)
     SYS=solaris
-    # _POSIX_PTHREAD_SEMANTICS is needed to get the POSIX ctime_r
-    # Perhaps it is useful other places as well?
-    CFLAGS_save="${CFLAGS_save} -D_POSIX_PTHREAD_SEMANTICS"; CFLAGS="${CFLAGS_save}"
     ;;
   hpux*)
     SYS=hpux
@@ -375,16 +376,16 @@ case "${host_os}" in
     CFLAGS_save="${CFLAGS_save} -Wno-multichar"; CFLAGS="${CFLAGS_save}"
     CXXFLAGS_save="${CXXFLAGS_save} -Wno-multichar"; CXXFLAGS="${CXXFLAGS_save}"
     VLC_ADD_CXXFLAGS([beos],[])
-    VLC_ADD_LIBS([vlc libvlc logger],[-lbe])
+    VLC_ADD_LIBS([vlc libvlccore logger],[-lbe])
     VLC_ADD_LIBS([beos],[-lbe -lmedia -ltranslation -ltracker -lgame])
     VLC_ADD_LIBS([dvdnav dvdread],[-ldl])
     VLC_ADD_LIBS([access_file],[-lpoll])
     LDFLAGS_save="${LDFLAGS_save} -lintl"; LDFLAGS="${LDFLAGS_save}"
     dnl Check for BONE
     if test -f /boot/beos/system/lib/libbind.so; then
-        VLC_ADD_LIBS([access_file access_ftp access_mms access_output_udp telnet netsync sap libvlc growl_udp],[-lbind -lsocket])
+        VLC_ADD_LIBS([access_file access_ftp access_mms access_output_udp telnet netsync sap libvlccore growl_udp],[-lbind -lsocket])
     else
-        VLC_ADD_LIBS([access_file access_ftp access_mms access_output_udp telnet netsync sap libvlc growl_udp],[-lnet])
+        VLC_ADD_LIBS([access_file access_ftp access_mms access_output_udp telnet netsync sap libvlccore growl_udp],[-lnet])
     fi
 
     dnl Ugly check for Zeta
@@ -445,28 +446,28 @@ dnl Gettext stuff
 dnl
 AM_GNU_GETTEXT_VERSION([0.17])
 AM_GNU_GETTEXT([external])
-VLC_ADD_LIBS([libvlc vlc], [${LTLIBINTL}])
+VLC_ADD_LIBS([libvlccore vlc], [${LTLIBINTL}])
 
 dnl
 dnl Iconv stuff
 dnl
 AM_ICONV
-VLC_ADD_CFLAGS([libvlc],[${INCICONV}])
-VLC_ADD_LIBS([libvlc],[${LTLIBICONV}])
+VLC_ADD_CFLAGS([libvlccore],[${INCICONV}])
+VLC_ADD_LIBS([libvlccore],[${LTLIBICONV}])
 
 dnl Check for broken versions of mingw-runtime compatability library
-AS_IF([test "${SYS}" = "mingw32"], [
+AS_IF([test "${SYS}" = "mingw32" -o "${SYS}" = "mingwce"], [
     AC_MSG_CHECKING(for broken mingw-runtime)
     AC_PREPROC_IFELSE([
 #include <_mingw.h>
-#if (__MINGW32_MAJOR_VERSION == 3) && (__MINGW32_MINOR_VERSION < 14)
+#if (__MINGW32_MAJOR_VERSION == 3) && (__MINGW32_MINOR_VERSION < 15)
 # error Attempting to use mingw-runtime with broken vsnprintf support
 #endif
 ], [
         AC_MSG_RESULT([ok])
 ], [
         AC_MSG_RESULT([present])
-        AC_MSG_ERROR([LibVLC requires mingw-runtime version 3.13 or higher!])
+        AC_MSG_ERROR([LibVLC requires mingw-runtime version 3.15 or higher!])
 ])
     dnl force use of mingw provided c99 *printf over msvcrt
     CPPFLAGS="${CPPFLAGS} -D__USE_MINGW_ANSI_STDIO=1"
@@ -478,7 +479,7 @@ if test "${SYS}" = "mingw32"
 then
     AC_CHECK_LIB(mingwex,opendir,
         AC_CHECK_LIB(mingw32,opendir,,
-            [VLC_ADD_LIBS([libvlc gtk],[-lmingwex])])
+            [VLC_ADD_LIBS([libvlccore gtk],[-lmingwex])])
     )
 fi
 
@@ -525,6 +526,7 @@ fi
 
 dnl
 dnl Buggy glibc prevention. Purposedly not cached.
+dnl See sourceware.org bugs 5058 and 5443.
 dnl Ubuntu alone has 20 bug numbers for this...
 dnl
 AC_MSG_CHECKING(for buggy GNU/libc versions)
@@ -538,7 +540,14 @@ AC_PREPROC_IFELSE([
   AC_MSG_RESULT([not present])
 ], [
   AC_MSG_RESULT([found])
-  AC_MSG_ERROR([Buggy GNU/libc (version 2.5 - 2.7) present. VLC would crash; there is no viable work-around for this. Check with your distribution vendor on how to update the glibc run-time.])
+  AS_IF([test "x${enable_nls}" != "xno" || test "x${enable_mozilla}" != "xno"], [
+    AC_MSG_ERROR([Buggy GNU/libc (version 2.5 - 2.7) present. VLC would crash; there is no viable
+work-around for this. Check with your distribution vendor on how to update the
+glibc run-time. Alternatively, build with --disable-nls --disable-mozilla and
+be sure to not use LibVLC from other applications/wrappers.])
+  ], [
+    AC_DEFINE(DISABLE_BUGGY_GLIBC_CHECK, 1, [Disables runtime check for buggy glibc.])
+  ])
 ])
 
 dnl Plugin compilation stuff
@@ -555,11 +564,14 @@ dnl Check for usual libc functions
 AC_CHECK_FUNCS([gettimeofday isatty sigrelse getpwuid_r memalign posix_memalign if_nametoindex getenv putenv setenv ctime_r lrintf daemon fork lstat posix_fadvise posix_madvise uselocale])
 AC_FUNC_ALLOCA
 AC_CHECK_FUNCS(fcntl)
-AC_REPLACE_FUNCS([asprintf atof atoll gmtime_r lldiv localtime_r rewind strcasecmp strcasestr strdup strlcpy strncasecmp strndup strnlen strsep strtof strtoll vasprintf swab])
+AC_REPLACE_FUNCS([asprintf atof atoll getcwd gmtime_r lldiv localtime_r rewind strcasecmp strcasestr strdup strlcpy strncasecmp strndup strnlen strsep strtof strtoll vasprintf swab])
 AC_CHECK_FUNCS([stricmp strnicmp])
+AC_CHECK_FUNCS(fdatasync,,
+  [AC_DEFINE(fdatasync, fsync, [Alias fdatasync() to fsync() if missing.])
+])
 
-dnl Check for Linux system calls
-AC_CHECK_FUNCS([vmsplice])
+dnl Check for non-standard system calls
+AC_CHECK_FUNCS([vmsplice fstatfs])
 
 AH_BOTTOM([#include <vlc_fixups.h>])
 
@@ -581,12 +593,14 @@ if test ${ac_cv_langinfo_codeset} = yes; then
     [Define if you have <langinfo.h> and nl_langinfo(CODESET).])
 fi
 
+SOCKET_LIBS=""
 AC_CHECK_FUNCS(connect,,[
   AC_CHECK_LIB(socket,connect,[
-    VLC_ADD_LIBS([libvlc cdda cddax],-lsocket)
-    LIBS_socket="-lsocket"
+    VLC_ADD_LIBS([libvlccore cdda cddax],-lsocket)
+    SOCKET_LIBS="-lsocket"
   ])
 ])
+AC_SUBST(SOCKET_LIBS)
 
 AC_CHECK_FUNCS(send,,[
   AC_CHECK_LIB(socket,send,[
@@ -637,7 +651,7 @@ dnl  -lnsl and -lsocket are needed on Solaris;
 dnl  we purposedly make the test fail on Windows
 LIBS_save="${LIBS}"
 AH_TEMPLATE(HAVE_GETADDRINFO, [Define to 1 if you have the `getaddrinfo' function.])
-AC_SEARCH_LIBS([getaddrinfo], [nsl], [AC_DEFINE(HAVE_GETADDRINFO)],, [${LIBS_socket}])
+AC_SEARCH_LIBS([getaddrinfo], [nsl], [AC_DEFINE(HAVE_GETADDRINFO)],, [${SOCKET_LIBS}])
 
 dnl NOTE: we assume getaddrinfo will be present if getnameinfo or gai_strerro
 dnl are
@@ -680,7 +694,7 @@ fi
 
 AC_CHECK_FUNCS(inet_aton,,[
   AC_CHECK_LIB(resolv,inet_aton,[
-    VLC_ADD_LIBS([libvlc],[-lresolv])
+    VLC_ADD_LIBS([libvlccore],[-lresolv])
   ])
 ])
 
@@ -693,7 +707,7 @@ AC_CHECK_FUNCS(getopt_long,[AC_DEFINE(HAVE_GETOPT_LONG,1,long getopt support)],
 [ # FreeBSD has a gnugetopt library for this:
   AC_CHECK_LIB([gnugetopt],[getopt_long],
     [AC_DEFINE(HAVE_GETOPT_LONG,1,getopt support)
-     VLC_ADD_LIBS([libvlc],[-lgnugetopt])],
+     VLC_ADD_LIBS([libvlccore],[-lgnugetopt])],
     [need_getopt=:])])
 fi
 AM_CONDITIONAL(BUILD_GETOPT, ${need_getopt})
@@ -704,13 +718,13 @@ AC_CHECK_LIB(m,cos,[
   VLC_ADD_LIBS([adjust wave ripple psychedelic gradient a52tofloat32 dtstofloat32 x264 goom visual panoramix rotate noise grain scene],[-lm])
 ])
 AC_CHECK_LIB(m,pow,[
-  VLC_ADD_LIBS([avcodec avformat swscale imgresample postproc ffmpegaltivec stream_out_transrate i420_rgb faad twolame equalizer spatializer param_eq libvlc vorbis freetype mod mpc dmo quicktime realaudio realvideo galaktos opengl],[-lm])
+  VLC_ADD_LIBS([avcodec avformat swscale postproc ffmpegaltivec i420_rgb faad twolame equalizer spatializer param_eq libvlccore freetype mod mpc dmo quicktime realaudio realvideo opengl],[-lm])
 ])
 AC_CHECK_LIB(m,sqrt,[
   VLC_ADD_LIBS([headphone_channel_mixer normvol speex mono colorthres extract],[-lm])
 ])
 AC_CHECK_LIB(m,ceil,[
-  VLC_ADD_LIBS([mosaic],[-lm])
+  VLC_ADD_LIBS([hotkeys mosaic],[-lm])
 ])
 AC_CHECK_LIB(m,exp,[
   VLC_ADD_LIBS([gaussianblur],[-lm])
@@ -726,12 +740,6 @@ fi # end "${SYS}" != "mingw32" -a "${SYS}" != "mingwce"
 dnl Check for dynamic plugins
 ac_cv_have_plugins=no
 
-# OS X style
-AC_CHECK_HEADERS(mach-o/dyld.h,
-  [AC_CHECK_FUNCS(NSLinkModule,
-    [AC_DEFINE(HAVE_DL_DYLD, 1, [Define if you have the Darwin dyld API])
-     ac_cv_have_plugins=yes])])
-
 # HP-UX style
 if test "${ac_cv_have_plugins}" = "no"; then
   AC_CHECK_HEADERS(dl.h)
@@ -740,26 +748,18 @@ if test "${ac_cv_have_plugins}" = "no"; then
    [ac_cv_my_have_shl_load=yes,
     AC_CHECK_LIB(dld, shl_load,
      [ac_cv_my_have_shl_load=yes
-      VLC_ADD_LIBS([libvlc],[-ldld])])])
+      VLC_ADD_LIBS([libvlccore],[-ldld])])])
   if test "${ac_cv_my_have_shl_load}" = "yes"; then
     AC_DEFINE(HAVE_DL_SHL_LOAD, 1, [Define if you have the shl_load API])
     ac_cv_have_plugins=yes
   fi
 fi
 
-# Whatever style
-if test "${ac_cv_have_plugins}" = "no"; then
-  AC_CHECK_LIB(dld, dld_link,
-   [VLC_ADD_LIBS([libvlc],[-ldld])
-    AC_DEFINE(HAVE_DL_DLD_LINK, 1, [Define if you have the GNU dld library])
-    ac_cv_have_plugins=yes])
-fi
-
 # Win32 style
 if test "${ac_cv_have_plugins}" = "no"; then
   if test "${SYS}" = "mingw32" -o "${SYS}" = "cygwin"; then
     AC_CHECK_LIB(kernel32, main,
-     [VLC_ADD_LIBS([libvlc],[-lkernel32])
+     [VLC_ADD_LIBS([libvlccore],[-lkernel32])
       AC_DEFINE(HAVE_DL_WINDOWS, 1, [Define if you have Windows' LoadLibrary])
       ac_cv_have_plugins=yes])
   fi
@@ -782,17 +782,17 @@ if test "${ac_cv_have_plugins}" = "no"; then
 fi
 
 # Only test for dlopen() if the others didn't work
-if test "${ac_cv_have_plugins}" = "no"; then
+if test "${ac_cv_have_plugins}" = "no" -o "${SYS}" = "darwin"; then
   AC_CHECK_HEADERS(dlfcn.h sys/dl.h)
   ac_cv_my_have_dlopen=no
   AC_CHECK_FUNC(dlopen,
     ac_cv_my_have_dlopen=yes,
     AC_CHECK_LIB(dl, dlopen,
       ac_cv_my_have_dlopen=yes
-      VLC_ADD_LIBS([libvlc realaudio realvideo],[-ldl]),
+      VLC_ADD_LIBS([libvlccore realaudio realvideo],[-ldl]),
       AC_CHECK_LIB(svld, dlopen,
         ac_cv_my_have_dlopen=yes
-        VLC_ADD_LIBS([libvlc],[-lsvld]))))
+        VLC_ADD_LIBS([libvlccore],[-lsvld]))))
   if test "${ac_cv_my_have_dlopen}" = "yes"; then
     AC_DEFINE(HAVE_DL_DLOPEN, 1, [Define if you have the dlopen API])
     ac_cv_have_plugins=yes
@@ -816,22 +816,22 @@ if test "${THREAD_LIB}" = "error"; then
   THREAD_LIB=""
 fi
 
-VLC_ADD_LIBS([libvlc plugin],[${THREAD_LIB}])
+VLC_ADD_LIBS([libvlccore libvlc plugin],[${THREAD_LIB}])
 
 AC_CHECK_LIB(rt, clock_nanosleep, [
-  VLC_ADD_LIBS([libvlc],[-lrt])
+  VLC_ADD_LIBS([libvlccore],[-lrt])
   AC_DEFINE(HAVE_CLOCK_NANOSLEEP, 1, [Define to 1 if you have clock_nanosleep.])
 ], [
   dnl HP/UX port
-  AC_CHECK_LIB(rt,sem_init, [VLC_ADD_LIBS([libvlc],[-lrt])])
+  AC_CHECK_LIB(rt,sem_init, [VLC_ADD_LIBS([libvlccore],[-lrt])])
 ])
 
 have_nanosleep=false
 AC_CHECK_FUNCS(nanosleep,have_nanosleep=:,[
   AC_CHECK_LIB(rt,nanosleep,
-    [VLC_ADD_LIBS([libvlc],[-lrt]) have_nanosleep=:],
+    [VLC_ADD_LIBS([libvlccore],[-lrt]) have_nanosleep=:],
     [AC_CHECK_LIB(posix4,nanosleep,
-        [VLC_ADD_LIBS([libvlc],[-lposix4]) have_nanosleep=:])]
+        [VLC_ADD_LIBS([libvlccore],[-lposix4]) have_nanosleep=:])]
   )
 ])
 if ${have_nanosleep}; then
@@ -848,16 +848,17 @@ AC_EGREP_HEADER(strncasecmp,strings.h,[
   AC_MSG_RESULT(no)])
 
 dnl Check for headers
-AC_CHECK_HEADERS(getopt.h strings.h locale.h)
-AC_CHECK_HEADERS(fcntl.h sys/types.h sys/time.h sys/times.h sys/ioctl.h sys/stat.h xlocale.h)
+AC_CHECK_HEADERS(getopt.h strings.h locale.h xlocale.h)
+AC_CHECK_HEADERS(fcntl.h sys/types.h sys/time.h sys/times.h sys/ioctl.h sys/stat.h sys/mount.h)
 AC_CHECK_HEADERS([arpa/inet.h netinet/in.h netinet/udplite.h sys/eventfd.h])
 AC_CHECK_HEADERS([net/if.h], [], [],
   [
+    #include <sys/types.h>
     #include <sys/socket.h>
   ])
 if test "${SYS}" != "mingw32" -a "${SYS}" != "mingwce"; then
 AC_CHECK_HEADERS(machine/param.h sys/shm.h)
-AC_CHECK_HEADERS([linux/version.h linux/dccp.h])
+AC_CHECK_HEADERS([linux/version.h linux/dccp.h scsi/scsi.h])
 AC_CHECK_HEADERS(syslog.h)
 fi # end "${SYS}" != "mingw32" -a "${SYS}" != "mingwce"
 
@@ -942,38 +943,6 @@ fi
 AM_CONDITIONAL(HAVE_MINIZIP, [ test "${have_minizip}" = "yes" ])
 
 
-dnl Check for hal
-AC_ARG_ENABLE(hal,
-  [  --enable-hal            Linux HAL services discovery (default enabled)])
-
-if test "${enable_hal}" != "no" -a "${SYS}" != "mingw32" -a "${SYS}" != "mingwce"
-then
-  PKG_CHECK_MODULES(HAL, hal >= 0.5.0,
-    [
-      AC_DEFINE( HAVE_HAL, 1, [Define if you have the HAL library] )
-      VLC_ADD_PLUGIN([hal])
-      VLC_ADD_PLUGIN([probe_hal])
-      VLC_ADD_LIBS([libvlc hal probe_hal],[$HAL_LIBS])
-      VLC_ADD_CFLAGS([libvlc hal probe_hal],[$HAL_CFLAGS])],
-    [AC_MSG_WARN([libhal >= 0.5.0 was not found. Install libhal-dev ?])]
-  )
-fi
-
-dnl Check for mtp
-AC_ARG_ENABLE(mtp,
-  [  --enable-mtp            MTP devices support (default enabled)])
-
-if test "${enable_mtp}" != "no" -a "${SYS}" != "mingw32" -a "${SYS}" != "mingwce"
-then
-  PKG_CHECK_MODULES(MTP, libmtp >= 0.3.0,
-    [ VLC_ADD_PLUGIN([mtp])
-      VLC_ADD_PLUGIN([access_mtp])
-      VLC_ADD_LIBS([mtp access_mtp],[$MTP_LIBS])
-      VLC_ADD_CFLAGS([mtp access_mtp],[$MTP_CFLAGS])],
-       [AC_MSG_WARN(MTP library not found)]
-  )
-fi
-
 dnl Check for dbus
 AC_ARG_ENABLE(dbus,
   [  --enable-dbus           Linux D-BUS message bus system (default enabled)])
@@ -984,8 +953,8 @@ then
   dnl api stable dbus
   PKG_CHECK_MODULES(DBUS, dbus-1 >= 1.0.0,
     [ AC_DEFINE( HAVE_DBUS, 1, [Define if you have the D-BUS library] )
-      VLC_ADD_LIBS([screensaver libvlc],[$DBUS_LIBS])
-      VLC_ADD_CFLAGS([screensaver libvlc],[$DBUS_CFLAGS])
+      VLC_ADD_LIBS([screensaver libvlccore],[$DBUS_LIBS])
+      VLC_ADD_CFLAGS([screensaver libvlccore],[$DBUS_CFLAGS])
       dnl Check for dbus control interface
         AC_ARG_ENABLE(dbus-control, [  --disable-dbus-control  D-BUS control interface (default enabled)])
         if test "${enable_dbus_control}" != "no"
@@ -1035,7 +1004,16 @@ fi
 CFLAGS="${CFLAGS_save}"
 
 RDC_PROG_CC_WFLAGS([all extra sign-compare undef pointer-arith bad-function-cast cast-align write-strings missing-prototypes volatile-register-var error-implicit-function-declaration])
-RDC_PROG_CC_FLAGS_IFELSE([-pipe])
+RDC_PROG_CC_FLAGS([-pipe])
+
+AC_ARG_ENABLE(warnings-as-error,
+      AS_HELP_STRING([--enable-warnings-as-error],[Treat acceptable warnings as error (default in debug)]),, [enable_warnings_as_error="$enable_debug"])
+AS_IF([test "${enable_warnings_as_error}" = "yes"], [
+    RDC_PROG_CC_WERRORFLAGS([unused-function unused-label unused-value unused-parameter unused-variable unused \
+     missing-braces nonnull parentheses uninitialized address enum-compare undef comment switch \
+     bad-function-cast ignored])
+])
+AC_SUBST(CFLAGS_WERROR)
 
 dnl Check for various optimization flags
 AC_CACHE_CHECK([if \$CC accepts -Os],
@@ -1161,7 +1139,7 @@ dnl Check for __attribute__((packed))
 AC_CACHE_CHECK([for __attribute__((packed))],
   [ac_cv_c_attribute_packed],
   [ac_cv_c_attribute_packed=no
-   AC_TRY_COMPILE(, [struct __attribute__((__packed__)) foo { int a; } b;],
+   AC_TRY_COMPILE(, [struct __attribute__((__packed__)) foo { int a; } b; (void)b;],
                     [ac_cv_c_attribute_packed=yes])])
 if test "${ac_cv_c_attribute_packed}" != "no"; then
   AC_DEFINE(HAVE_ATTRIBUTE_PACKED, 1, Support for __attribute__((packed)) for structs)
@@ -1200,6 +1178,7 @@ dnl Video filters:
 VLC_ADD_PLUGIN([deinterlace])
 VLC_ADD_PLUGIN([yuvp])
 VLC_ADD_PLUGIN([invert])
+VLC_ADD_PLUGIN([mirror])
 VLC_ADD_PLUGIN([adjust])
 VLC_ADD_PLUGIN([transform])
 VLC_ADD_PLUGIN([wave])
@@ -1468,7 +1447,7 @@ AS_IF([test "${enable_sse}" != "no"], [
 AC_CACHE_CHECK([if $CC groks 3D Now! inline assembly],
     [ac_cv_3dnow_inline],
     [CFLAGS="${CFLAGS_save}"
-     AC_TRY_COMPILE(,[void *p;asm volatile("pfadd %%mm1,%%mm2"::"r"(p));],
+     AC_TRY_COMPILE(,[void *p = NULL; asm volatile("pfadd %%mm1,%%mm2"::"r"(p));],
                     ac_cv_3dnow_inline=yes, ac_cv_3dnow_inline=no)])
 AS_IF([test "${ac_cv_3dnow_inline}" != "no"], [
   AC_DEFINE(CAN_COMPILE_3DNOW, 1,
@@ -1501,7 +1480,7 @@ AS_IF([test "${enable_altivec}" = "yes"], [
       VLC_ADD_CFLAGS([motionaltivec],[${ac_cv_altivec_inline}])
       VLC_ADD_CFLAGS([memcpyaltivec],[${ac_cv_altivec_inline}])
       VLC_ADD_CFLAGS([i420_yuy2_altivec],[${ac_cv_altivec_inline}])
-      VLC_ADD_CFLAGS([libvlc],[${ac_cv_altivec_inline}])
+      VLC_ADD_CFLAGS([libvlccore],[${ac_cv_altivec_inline}])
     ])
     VLC_ADD_PLUGIN([memcpyaltivec])
     VLC_ADD_PLUGIN([i420_yuy2_altivec])
@@ -1563,7 +1542,7 @@ dnl - Others: test should fail
   AS_IF([test "${ac_cv_c_altivec}" != "no"], [
     AC_DEFINE(CAN_COMPILE_C_ALTIVEC, 1,
               [Define to 1 if C AltiVec extensions are available.])
-    VLC_ADD_CFLAGS([libvlc],[${ac_cv_c_altivec}])
+    VLC_ADD_CFLAGS([libvlccore],[${ac_cv_c_altivec}])
     VLC_ADD_CFLAGS([idctaltivec motionaltivec],[${ac_cv_c_altivec}])
     VLC_ADD_CFLAGS([i420_yuy2_altivec memcpyaltivec deinterlace],[${ac_cv_c_altivec} ${ac_cv_c_altivec_abi}])
     VLC_ADD_PLUGIN([memcpyaltivec])
@@ -1577,7 +1556,7 @@ dnl - Others: test should fail
      LDFLAGS="${LDFLAGS_save}"
     ])
   AS_IF([test "${ac_cv_ld_altivec}" != "no"], [
-    VLC_ADD_LDFLAGS([libvlc idctaltivec motionaltivec memcpyaltivec],[-Wl,-framework,vecLib])
+    VLC_ADD_LDFLAGS([libvlccore idctaltivec motionaltivec memcpyaltivec],[-Wl,-framework,vecLib])
   ])
 ])
 
@@ -1593,7 +1572,7 @@ if test -n "${with_tuning}"; then
     fi
 else
     if test "${SYS}" = "darwin" -a "${host_cpu}" != "powerpc"; then
-        CFLAGS_TUNING="-march=pentium-m -mtune=prescott"
+        CFLAGS_TUNING="-march=prescott -mtune=generic"
     elif test "${host_cpu}" = "i686" -o "${host_cpu}" = "i586" -o "${host_cpu}" = "i486" -o "${host_cpu}" = "i386"; then
         CFLAGS_TUNING="-mtune=pentium2"
     elif test "${host_cpu}" = "x86_64"; then
@@ -1698,21 +1677,6 @@ AS_IF([test "${enable_sout}" != "no"], [
 ])
 AM_CONDITIONAL(ENABLE_SOUT, [test "${enable_sout}" != "no"])
 
-AC_ARG_ENABLE(switcher,
-  [  --enable-switcher       Stream-out switcher plugin (default disabled)])
-
-dnl Check for libshout
-AC_ARG_ENABLE(shout,
-  [  --enable-shout          libshout output plugin (default disabled)])
-if test "${enable_shout}" = "yes"; then
-  PKG_CHECK_MODULES(SHOUT, shout >= 2.1,
-    [AC_DEFINE(HAVE_SHOUT, 1, [Define if you have the libshout library])
-     VLC_ADD_PLUGIN([access_output_shout])
-     VLC_ADD_LIBS([access_output_shout],[$SHOUT_LIBS])
-     VLC_ADD_CFLAGS([access_output_shout],[$SHOUT_CFLAGS])],
-    [AC_MSG_WARN(libshout library not found)])
-fi
-
 dnl Lua modules
 AC_ARG_ENABLE(lua,
   AS_HELP_STRING([--enable-lua],[lua playlist, metafetcher and interface
@@ -1766,19 +1730,8 @@ AM_CONDITIONAL(BUILD_HTTPD, [test "${enable_httpd}" != "no"])
 dnl
 dnl libproxy support
 dnl
-AC_ARG_ENABLE(libproxy,
-  [  --enable-libproxy       libproxy support (default auto)])
-AS_IF([test "${enable_libproxy}" != "no"], [
-  PKG_CHECK_MODULES(LIBPROXY, libproxy-1.0, [
-    AC_DEFINE(HAVE_LIBPROXY, 1, [Define if libproxy is available])
-    VLC_ADD_CFLAGS([access_http],[$LIBPROXY_CFLAGS])
-    VLC_ADD_LIBS([access_http],[$LIBPROXY_LIBS])
-  ], [
-    AS_IF([test "x${enable_libproxy}" != "x"], [
-      AC_MSG_ERROR([libproxy could not be found on your system])
-    ])
-  ])
-])
+PKG_ENABLE_MODULES_VLC([LIBPROXY], [], [libproxy-1.0], [libproxy support], [auto])
+
 
 dnl
 dnl VideoLAN manager
@@ -1813,20 +1766,7 @@ AS_IF([test "${enable_growl}" != "no"], [
 dnl
 dnl Libnotify notification plugin
 dnl
-
-AC_ARG_ENABLE(notify,
-  [  --enable-notify         libnotify notification plugin (default enabled)])
-AS_IF([test "${enable_notify}" != "no" -a "${SYS}" != "mingw32"], [
-    PKG_CHECK_MODULES(NOTIFY, libnotify,
-      [
-        VLC_ADD_PLUGIN([notify])
-        VLC_ADD_CFLAGS(notify, [$NOTIFY_CFLAGS])
-        VLC_ADD_LIBS(notify, [$NOTIFY_LIBS])
-      ],[
-    AS_IF([test "${enable_notify}" = "yes"],[
-        AC_MSG_WARN( libnotify not found) ])
-      ])
-  ])
+PKG_ENABLE_MODULES_VLC([NOTIFY], [], [libnotify], [libnotify notification], [auto])
 
 dnl
 dnl Audioscrobbler plugin
@@ -1852,7 +1792,6 @@ AC_ARG_ENABLE(taglib,
       [AC_MSG_WARN(TagLib library not found)])
   ])
 
-
 dnl
 dnl  Input plugins
 dnl
@@ -1991,158 +1930,11 @@ lternatively you can use --disable-live555 to disable the liveMedia plugin.])
 fi
 
 dnl
-dnl  special access module for dc1394 input
+dnl - special access module for dc1394 input
+dnl - dv module: digital video module check for libraw1394
 dnl
-AC_ARG_ENABLE(dc1394,
-  [  --enable-dc1394         dc1394 access module (default disabled)])
-if test "${enable_dc1394}" = "yes"
-then
-  AC_CHECK_HEADERS(libraw1394/raw1394.h, [
-    AC_CHECK_LIB( raw1394, raw1394_get_nodecount, [
-        AC_CHECK_HEADERS(libdc1394/dc1394_control.h , [
-dnl         AC_CHECK_LIB( dc1394_control, dc1394_setup_capture, [
-              VLC_ADD_PLUGIN([dc1394])
-              VLC_ADD_LIBS([dc1394],[-ldc1394_control -lraw1394])
-dnl         ],
-dnl         [
-dnl           AC_MSG_ERROR([libdc1394 is mandatory for the dc1394 input module. try --disable-dc1394 or install this library])
-dnl         ])
-      ],
-      [
-        AC_MSG_ERROR([libdc1394 is mandatory for the dc1394 input module. try --disable-dc1394 or install this library])
-      ])
-    ],
-    [
-      AC_MSG_ERROR([libraw1394 is mandatory for the dc1394 input module. try --disable-dc1394 or install this library])
-    ])
-  ],
-  [
-    AC_MSG_ERROR([libraw1394 is mandatory for the dc1394 input module. try --disable-dc1394 or install this library])
-  ])
-fi
-
-dnl
-dnl dv module: digital video module check for libraw1394
-dnl
-AC_ARG_ENABLE(dv,
-[  --enable-dv             dv input module (default disabled)])
-if test "${enable_dv}" = "yes"
-then
-  AC_ARG_WITH(dv-raw1394,
-  [    --with-dv-raw1394=PATH   libraw1394 headers and libraries])
-  AC_ARG_WITH(dv-raw1394-tree,
-  [    --with-dv-raw1394=PATH   libraw1394 tree for static linking])
-
-  if test -z "${with_dv_raw1394}" -a "${with_dv_raw1394}" != ""
-  then
-    AC_MSG_CHECKING(for raw1394 headers in ${with_dv_raw1394})
-    if test -f ${with_dv_raw1394}/include/libraw1394/raw1394.h
-    then
-      dnl  Use ${with_dv_raw1394}/include/libraw1394/raw1394.h
-      AC_MSG_RESULT(yes)
-      VLC_ADD_PLUGIN([access_dv])
-      VLC_ADD_LIBS([access_dv],[-L${with_dv_raw1394}/lib -lraw1394 -lpthread])
-      VLC_ADD_CPPFLAGS([access_dv],[-I${with_dv_raw1394}/include])
-    else
-      dnl  No libraw1394 could be found, sorry
-      AC_MSG_RESULT(no)
-      AC_MSG_ERROR([cannot find ${with_dv_raw1394}/include/libraw1394/raw1394.h])
-    fi
-  else
-    AC_CHECK_HEADERS(libraw1394/raw1394.h,
-    [ VLC_ADD_PLUGIN([access_dv])
-        VLC_ADD_LIBS([access_dv],[-lraw1394 -lavc1394])
-    ],[
-        if test -n "${enable_dv}"
-        then
-          AC_MSG_ERROR([cannot find libraw1394 headers])
-        fi
-    ])
-  fi
-
-  dnl Check for static linking of libraw1394
-  if test -z "${with_dv_raw1394_tree}" -a "${with_dv_raw1394_tree}" != ""
-  then
-    AC_MSG_CHECKING(for libraw1394.a in ${with_dv_raw1394_tree})
-    real_dv_raw1394_tree="`cd ${with_dv_raw1394_tree} 2>/dev/null && pwd`"
-    if test -z "${real_dv_raw1394_tree}"
-    then
-      dnl  The given directory can't be found
-      AC_MSG_RESULT(no)
-      AC_MSG_ERROR([cannot cd to ${real_dv_raw1394_tree}])
-    fi
-    if test -f "${real_dv_raw1394_tree}/src/.libs/libraw1394.a"
-    then
-      dnl  Use a custom libraw1394
-      AC_MSG_RESULT(${real_dv_raw1394_tree}/src/.libs/libraw1394.a)
-      VLC_ADD_PLUGIN([access_dv])
-      VLC_ADD_LIBS([access_dv],[-L${real_dv_raw1394_tree}/src/.libs -lraw1394])
-      VLC_ADD_CPPFLAGS([access_dv],[-I${real_dv_raw1394_tree}])
-    else
-      dnl  The given libraw1394 wasn't built
-      AC_MSG_RESULT(no)
-      AC_MSG_ERROR([cannot find ${real_dv_raw1394_tree}/src/.libs/libraw1394.a, make sure you compiled libraw1394 in ${with_dv_raw1394_tree}])
-    fi
-  fi
-
-  dnl
-  dnl Check for libavc1394
-  dnl
-
-  AC_ARG_WITH(dv-avc1394,
-  [    --with-dv-avc1394=PATH   libavc1394 headers and libraries])
-  AC_ARG_WITH(dv-avc1394-tree,
-  [    --with-dv-avc1394=PATH   libavc1394 tree for static linking])
-
-  if test -z "${with_dv_avc1394}" -a "${with_dv_avc1394}" != ""
-  then
-    AC_MSG_CHECKING(for avc1394 headers in ${with_dv_avc1394})
-    if test -f ${with_dv_avc1394}/include/libavc1394/avc1394.h
-    then
-      dnl  Use ${with_dv_avc1394}/include/libavc1394/avc1394.h
-      AC_MSG_RESULT(yes)
-      VLC_ADD_LIBS([access_dv],[-L${with_dv_avc1394}/lib -lavc1394 -lrom1394 -lpthread])
-      VLC_ADD_CPPFLAGS([access_dv],[-I${with_avc1394}/include])
-    else
-      dnl  No libavc1394 could be found, sorry
-      AC_MSG_RESULT(no)
-      AC_MSG_ERROR([cannot find ${with_dv_avc1394}/include/libavc1394/avc1394.h])
-    fi
-  else
-    AC_CHECK_HEADERS(libavc1394/avc1394.h,
-    [ VLC_ADD_LIBS([access_dv],[-lavc1394 -lrom1394 -lpthread])
-    ],[
-        if test -n "${enable_dv}"
-        then
-          AC_MSG_ERROR([cannot find libavc1394 headers])
-        fi
-    ])
-  fi
-
-  dnl Check for static linking of libavc1394
-  if test -z "${with_dv_avc1394_tree}" -a "${with_dv_avc1394_tree}" != ""
-  then
-    AC_MSG_CHECKING(for libavc1394.a in ${with_dv_avc1394_tree})
-    real_dv_avc1394_tree="`cd ${with_dv_avc1394_tree} 2>/dev/null && pwd`"
-    if test -z "${real_dv_avc1394_tree}"
-    then
-      dnl  The given directory can't be found
-      AC_MSG_RESULT(no)
-      AC_MSG_ERROR([cannot cd to ${real_dv_avc1394_tree}])
-    fi
-    if test -f "${real_dv_avc1394_tree}/src/.libs/libavc1394.a"
-    then
-      dnl  Use a custom libavc1394
-      AC_MSG_RESULT(${real_dv_avc1394_tree}/src/.libs/libavc1394.a)
-      VLC_ADD_LIBS([access_dv],[-L${real_dv_avc1394_tree}/src/.libs -lavc1394 -lrom1394 -lpthread])
-      VLC_ADD_CPPFLAGS([access_dv],[-I${real_dv_avc1394_tree}])
-    else
-      dnl  The given libavc1394 wasn't built
-      AC_MSG_RESULT(no)
-      AC_MSG_ERROR([cannot find ${real_dv_avc1394_tree}/src/.libs/libavc1394.a, make sure you compiled libavc1394 in ${with_dv_avc1394_tree}])
-    fi
-  fi
-fi
+PKG_ENABLE_MODULES_VLC([dc1394], [], [libraw1394 >= 2.0.1 libdc1394 >= 1.0.0], [dc1394 access module], [auto])
+PKG_ENABLE_MODULES_VLC([dv], [access_dv], [libraw1394 >= 2.0.1 libavc1394 >= 0.5.3], [DV input module], [auto])
 
 dnl
 dnl dvdread module: check for libdvdread
@@ -2339,9 +2131,6 @@ if test "${enable_smb}" != "no"; then
     [ if test -n "${enable_smb}"; then
         AC_MSG_ERROR([cannot find libsmbclient headers])
      fi ])
-  AC_CHECK_MEMBER([struct _SMBCCTX.close_fn],
-    AC_DEFINE([HAVE__SMBCCTX_CLOSE_FN], 1, [Define if samba has _SMBCCTX.close_fn]),,
-    [#include <libsmbclient.h>])
 fi
 
 dnl
@@ -2534,17 +2323,8 @@ fi
 dnl
 dnl  gnomeVFS access module
 dnl
-AC_ARG_ENABLE(gnomevfs,
-  [  --enable-gnomevfs       GnomeVFS access module (default disabled)])
-if test "${enable_gnomevfs}" = "yes"
-then
-  PKG_CHECK_MODULES(GNOMEVFS, gnome-vfs-2.0,
-    VLC_ADD_LIBS([access_gnomevfs],[$GNOMEVFS_LIBS])
-    VLC_ADD_CPPFLAGS([access_gnomevfs],[$GNOMEVFS_CPPFLAGS])
-    VLC_ADD_CFLAGS([access_gnomevfs],[$GNOMEVFS_CFLAGS])
-    VLC_ADD_PLUGIN([access_gnomevfs]),
-    AC_MSG_WARN([GnomeVFS support disabled because GnomeVFS development headers not found]))
-fi
+PKG_ENABLE_MODULES_VLC([GNOMEVFS], [access_gnomevfs], [gnome-vfs-2.0], [GnomeVFS access module], [auto])
+
 
 dnl Need to test libcdio and libvcdinfo for a number of things. Do it now.
 AC_ARG_ENABLE(libcdio,
@@ -2780,47 +2560,14 @@ AC_CHECK_FUNCS(inet_ntop,[
 dnl
 dnl  ogg demux plugin
 dnl
-AC_ARG_ENABLE(ogg,
-  [  --enable-ogg            Ogg demux support (default enabled)])
-if test "${enable_ogg}" != "no"
-then
-  AC_ARG_WITH(ogg-tree,
-  [    --with-ogg-tree=PATH  ogg tree for static linking])
-  if test -n "${with_ogg_tree}"
-  then
-    AC_MSG_CHECKING(for libogg.a in ${with_ogg_tree})
-    real_ogg_tree="`cd ${with_ogg_tree} 2>/dev/null && pwd`"
-    if test -z "${real_ogg_tree}"
-    then
-      dnl  The given directory can't be found
-      AC_MSG_RESULT(no)
-      AC_MSG_ERROR([cannot cd to ${with_ogg_tree}])
-    fi
-    if test -f "${real_ogg_tree}/src/.libs/libogg.a"
-    then
-      dnl  Use a custom ogg
-      AC_MSG_RESULT(${real_ogg_tree}/src/.libs/libogg.a)
-      VLC_ADD_PLUGIN([ogg])
-      if test "${enable_sout}" != "no"; then
-        VLC_ADD_PLUGIN([mux_ogg])
-      fi
-      VLC_ADD_LIBS([ogg mux_ogg speex vorbis],[${real_ogg_tree}/src/.libs/libogg.a])
-      VLC_ADD_CFLAGS([ogg mux_ogg speex vorbis],[-I${real_ogg_tree}/include])
-    else
-      dnl  The given ogg wasn't built
-      AC_MSG_RESULT(no)
-      AC_MSG_ERROR([cannot find ${real_ogg_tree}/src/.libs/libogg.a, make sure you compiled ogg in ${with_ogg_tree}])
-    fi
-  else
-    AC_CHECK_HEADERS(ogg/ogg.h, [
-      AC_CHECK_LIB( ogg, oggpack_read, [
-        VLC_ADD_PLUGIN([ogg])
-        if test "${enable_sout}" != "no"; then
-          VLC_ADD_PLUGIN([mux_ogg])
-        fi
-        VLC_ADD_LIBS([ogg mux_ogg],[-logg])])
-     ],[])
-  fi
+PKG_ENABLE_MODULES_VLC([OGG], [], [ogg >= 1.0], [Ogg demux support], [auto])
+if test "${enable_sout}" != "no"; then
+    PKG_ENABLE_MODULES_VLC([MUX_OGG], [], [ogg >= 1.0], [Ogg demux support], [auto])
+fi
+
+if test "${enable_sout}" != "no"; then
+dnl Check for libshout
+PKG_ENABLE_MODULES_VLC([shout], [access_output_shout], [shout >= 2.1], [libshout output plugin], [auto])
 fi
 
 dnl
@@ -2923,9 +2670,12 @@ AC_ARG_ENABLE(mpc,
   [  --enable-mpc            Mpc demux support (default enabled)])
 if test "${enable_mpc}" != "no"
 then
-  AC_CHECK_HEADERS(mpcdec/mpcdec.h, [
+  AC_CHECK_HEADERS([mpc/mpcdec.h], [
+    VLC_ADD_PLUGIN([mpc])
+    VLC_ADD_LIBS([mpc],[-lmpcdec])],
+    [AC_CHECK_HEADERS([mpcdec/mpcdec.h], [
     VLC_ADD_PLUGIN([mpc])
-    VLC_ADD_LIBS([mpc],[-lmpcdec])])
+    VLC_ADD_LIBS([mpc],[-lmpcdec])])])
 fi
 
 dnl
@@ -3077,7 +2827,7 @@ AC_ARG_ENABLE(avcodec,
 [  --enable-avcodec        libavcodec codec (default enabled)])
 if test "${enable_avcodec}" != "no"
 then
-  PKG_CHECK_MODULES(AVCODEC,[libavcodec libavutil],
+  PKG_CHECK_MODULES(AVCODEC,[libavcodec >= 51.48.0 libavutil],
     [
       VLC_SAVE_FLAGS
       CPPFLAGS="${CPPFLAGS} ${AVCODEC_CFLAGS}"
@@ -3088,11 +2838,27 @@ then
       VLC_ADD_LIBS([avcodec],[$AVCODEC_LIBS])
       VLC_ADD_CFLAGS([avcodec],[$AVCODEC_CFLAGS])
       VLC_RESTORE_FLAGS
+      have_avcodec="yes"
     ],[
-      AC_MSG_FAILURE([Could not find libavcodec or libavutil. Use --disable-avcodec to ignore this error.])
+      AC_MSG_ERROR([Could not find libavcodec or libavutil. Use --disable-avcodec to ignore this error.])
   ])
 fi
 
+dnl
+dnl stream_out switcher needs libavcodec
+dnl
+AC_ARG_ENABLE(switcher,
+  [  --enable-switcher       Stream-out switcher plugin (default disabled)])
+AS_IF([test "${enable_switcher}" = "yes"], [
+  AS_IF([test "x${have_avcodec}" = "xyes"], [
+    VLC_ADD_PLUGIN([stream_out_switcher])
+    VLC_ADD_LIBS([stream_out_switcher],[$AVCODEC_LIBS])
+    VLC_ADD_CFLAGS([stream_out_switcher],[$AVCODEC_CFLAGS])
+  ],[AC_MSG_ERROR([Stream_out switcher depends on avcodec])
+  ])
+])
+
+
 dnl
 dnl  avformat demuxer/muxer plugin
 dnl
@@ -3113,7 +2879,7 @@ then
       VLC_ADD_CFLAGS([avformat],[$AVFORMAT_CFLAGS])
       VLC_RESTORE_FLAGS
     ],[
-      AC_MSG_FAILURE([Could not find libavformat or libavutil. Use --disable-avformat to ignore this error.])
+      AC_MSG_ERROR([Could not find libavformat or libavutil. Use --disable-avformat to ignore this error.])
   ])
 fi
 
@@ -3137,49 +2903,7 @@ then
       VLC_ADD_CFLAGS([swscale],[$SWSCALE_CFLAGS])
       VLC_RESTORE_FLAGS
     ],[
-      AC_MSG_WARN([Could not find libswscale. Trying to enable imgresample.])
-      enable_imgresample=yes
-  ])
-fi
-
-dnl
-dnl  avcodec (deprecated API) image scaling and conversion plugin
-dnl
-dnl  This is build as a seperate module than the avcodec one to prevent
-dnl  stupid run time library load errors from disabling most codecs
-dnl  from VLC.
-dnl
-
-AC_ARG_ENABLE(imgresample,
-  AS_HELP_STRING([--enable-imgresample],[deprecated libavcodec image scaling
-                 and conversion (default disabled)]))
-if test "${enable_imgresample}" = "yes"
-then
-  PKG_CHECK_MODULES(IMGRESAMPLE,[libavcodec],
-    [
-      VLC_SAVE_FLAGS
-      CPPFLAGS="${CPPFLAGS} ${IMGRESAMPLE_CFLAGS}"
-      CFLAGS="${CFLAGS} ${IMGRESAMPLE_CFLAGS}"
-      AC_CHECK_HEADERS(libavcodec/avcodec.h ffmpeg/avcodec.h)
-      AC_CHECK_LIB(avcodec,img_resample,
-        [
-          VLC_ADD_PLUGIN([imgresample])
-          VLC_ADD_LIBS([imgresample],[$IMGRESAMPLE_LIBS])
-          VLC_ADD_CFLAGS([imgresample],[$IMGRESAMPLE_CFLAGS])
-        ],[
-          AC_MSG_WARN([Could not find img_resample in libavcodec.])
-          if test "${enable_swscale}" != "no"
-          then
-            AC_MSG_FAILURE([swscale (and its fallback module imgresample) support will be missing. Use --disable-swscale to ignore this error. (This basically means that you will be missing any good software scaling module and some video chroma converters.)])
-          fi
-       # That sed hack to add -rpath is kind of ugly but at least it fixes
-        # detection when linking against a shared libavcodec with
-        # a libavutil not in one of your ld.so.conf directories.
-       # (for example a local install)
-        ],[${IMGRESAMPLE_LIBS} `echo ${IMGRESAMPLE_LIBS}|sed s'/-L/-Wl,-rpath=/'`])
-      VLC_RESTORE_FLAGS
-    ],[
-      AC_MSG_WARN([Could not find libavcodec.])
+      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.])
   ])
 fi
 
@@ -3202,7 +2926,7 @@ then
       VLC_ADD_CFLAGS([postproc],[$POSTPROC_CFLAGS])
       VLC_RESTORE_FLAGS
     ],[
-      AC_MSG_ERROR([Could not find libpostproc.])
+      AC_MSG_ERROR([Could not find libpostproc. Use --disable-postproc to ignore this error.])
   ])
 fi
 
@@ -3257,57 +2981,14 @@ fi
 dnl
 dnl twolame encoder plugin
 dnl
-AC_ARG_ENABLE(twolame,
-[  --enable-twolame        twolame codec (default disabled)])
-if test "${enable_twolame}" = "yes"
-then
-  AC_ARG_WITH(twolame-tree,
-  [    --with-twolame-tree=PATH twolame tree for static linking])
-  if test -n "${with_twolame_tree}"
-  then
-    AC_MSG_CHECKING(for libtwolame.a in ${with_twolame_tree})
-    real_twolame_tree="`cd ${with_twolame_tree} 2>/dev/null && pwd`"
-    if test -z "${real_twolame_tree}"
-    then
-      dnl  The given directory can't be found
-      AC_MSG_RESULT(no)
-      AC_MSG_ERROR([cannot cd to ${with_twolame_tree}])
-    fi
-    if test -f "${real_twolame_tree}/libtwolame/.libs/libtwolame.a"
-    then
-      dnl  Use a custom twolame
-      AC_MSG_RESULT(${real_twolame_tree}/libtwolame/.libs/libtwolame.a)
-      VLC_ADD_PLUGIN([twolame])
-      VLC_ADD_LIBS([twolame],[${real_twolame_tree}/libtwolame/.libs/libtwolame.a])
-      VLC_ADD_CPPFLAGS([twolame],[-I${real_twolame_tree}/libtwolame -DLIBTWOLAME_STATIC])
-    else
-      dnl  The given libtwolame wasn't built
-      AC_MSG_RESULT(no)
-      AC_MSG_ERROR([cannot find ${real_twolame_tree}/libtwolame/.libs/libtwolame.a, make sure you compiled libtwolame in ${with_twolame_tree}])
-    fi
-  else
-    CPPFLAGS="${CPPFLAGS_save} ${CPPFLAGS_twolame} -DLIBTWOLAME_STATIC"
-    LDFLAGS="${LDFLAGS_save} ${LIBS_twolame}"
-    AC_CHECK_HEADERS(twolame.h, ,
-      [ AC_MSG_ERROR([Cannot find development header for libtwolame...]) ])
-    AC_CHECK_LIB(twolame, twolame_init, [
-      VLC_ADD_PLUGIN([twolame])
-      VLC_ADD_CPPFLAGS([twolame],[-DLIBTWOLAME_STATIC])
-      VLC_ADD_LIBS([twolame],[-ltwolame]) ],
-        [ AC_MSG_ERROR([Cannot find libtwolame library...]) ])
-    LDFLAGS="${LDFLAGS_save}"
-    CPPFLAGS="${CPPFLAGS_save}"
-  fi
-fi
+PKG_ENABLE_MODULES_VLC([twolame], [], [twolame], [MPEG Audio Layer 2 encoder], [auto], [], [], [ -DLIBTWOLAME_STATIC])
 
 dnl
 dnl  QuickTime plugin
 dnl
 AC_ARG_ENABLE(quicktime,
-  [  --enable-quicktime      QuickTime module (default enabled on MacOS X)])
-if test "${enable_quicktime}" != "no" &&
-  (test "${SYS}" = "darwin" || test "${enable_quicktime}" = "yes")
-then
+  [  --enable-quicktime      QuickTime module (deprecated)])
+if test "${enable_quicktime}" = "yes"; then
   if test "${SYS}" = "mingw32"; then
     VLC_ADD_PLUGIN([quicktime])
   else
@@ -3441,169 +3122,22 @@ dnl
 AS_IF([test "x${enable_dts}" != "x"], [
   AC_MSG_ERROR([--enable-dts is obsolete. Please use libdca and --enable-dca.])
 ])
-AS_IF([test "x${with_dts_tree}" != "x"], [
-  AC_MSG_ERROR([--with-dts-tree is obsolete. Please use libdca and --with-dca-tree.])
-])
-
-AC_ARG_ENABLE(dca,
-  AS_HELP_STRING([--enable-dca],[DTS Coherent Acoustics support with libdca
-                 (default enabled)]))
-AS_IF([test "${enable_dca}" != "no"], [
-  AC_ARG_WITH(dca-tree,
-    [    --with-dca-tree=PATH  libdca tree for static linking],,
-    [with_dca_tree="no"])
-  AS_IF([test "${with_dca_tree}" != "no"], [
-    real_dca_tree="`cd ${with_dca_tree} 2>/dev/null && pwd`"
-    AS_IF([test -z "${real_dca_tree}"], [
-      dnl  The given directory can't be found
-      AC_MSG_RESULT(no)
-      AC_MSG_ERROR([${with_dca_tree} directory doesn't exist])
-    ])
-    dnl  Use a custom libdca
-    AC_MSG_CHECKING(for libdca in ${real_dca_tree})
-    AS_IF([test -f "${real_dca_tree}/libdca/.libs/libdca.a"], [
-      AC_MSG_RESULT(yes)
-      VLC_ADD_LIBS([dtstofloat32],[${real_dca_tree}/libdca/.libs/libdca.a])
-      AS_IF([test -f "${real_dca_tree}/include/dca.h"], [
-        VLC_ADD_CPPFLAGS([dtstofloat32],[-I${real_dca_tree}/include])
-      ], [
-        VLC_ADD_CPPFLAGS([dtstofloat32],[-I${real_dca_tree}/../include])
-      ])
-    ], [
-      AC_MSG_RESULT(no)
-      AC_MSG_ERROR([the specified tree doesn't have libdca/.libs/libdca.a])
-    ])
-  ], [
-    PKG_CHECK_MODULES([DCA], [libdca >= 0.0.5], [
-      VLC_ADD_PLUGIN([dtstofloat32])
-      VLC_ADD_CPPFLAGS([dtstofloat32], [${DCA_CFLAGS}])
-      VLC_ADD_LIBS([dtstofloat32], [${DCA_LIBS}])
-    ], [
-      AS_IF([test "x${enable_dca}" != "x"], [
-        AC_MSG_ERROR([${DCA_PKG_ERRORS}])
-      ])
-    ])
-  ])
-])
+PKG_ENABLE_MODULES_VLC([DCA], [dtstofloat32], [libdca >= 0.0.5], [DTS Coherent Acoustics support with libdca], [auto])
 
 dnl
 dnl  Flac plugin
 dnl
-AC_ARG_ENABLE(flac,
-  [  --enable-flac           libflac decoder/encoder support (default disabled)])
-if test "${enable_flac}" = "yes"
-then
-  AC_ARG_WITH(flac-tree,
-  [    --with-flac-tree=PATH flac tree for static linking])
-  if test -n "${with_flac_tree}"
-  then
-    AC_MSG_CHECKING(for libFLAC.a in ${with_flac_tree})
-    real_flac_tree="`cd ${with_flac_tree} 2>/dev/null && pwd`"
-    if test -z "${real_flac_tree}"
-    then
-      dnl  The given directory can't be found
-      AC_MSG_RESULT(no)
-      AC_MSG_ERROR([cannot cd to ${with_flac_tree}])
-    fi
-    if test -f "${real_flac_tree}/src/libFLAC/.libs/libFLAC.a"
-    then
-      dnl  Use a custom flac
-      AC_MSG_RESULT(${real_flac_tree}/src/libFLAC/.libs/libFLAC.a)
-      VLC_ADD_LIBS([flac],[${real_flac_tree}/src/libFLAC/.libs/libFLAC.a])
-      VLC_ADD_CFLAGS([flac],[-I${real_flac_tree}/include])
-      AC_DEFINE(HAVE_FLAC_STREAM_DECODER_H, 1, [Define if you have FLAC])
-    else
-      dnl  The given flac wasn't built
-      AC_MSG_RESULT(no)
-      AC_MSG_ERROR([cannot find ${real_flac_tree}/src/libFLAC/.libs/libFLAC.a, make sure you compiled flac in ${with_flac_tree}])
-    fi
-  else
-    AC_CHECK_HEADERS(FLAC/stream_decoder.h, [
-      VLC_ADD_LIBS([flac],[-lFLAC -logg])
-     ],[])
-  fi
-fi
+PKG_ENABLE_MODULES_VLC([FLAC], [], [flac], [libflac decoder/encoder support], [auto])
 
 dnl
 dnl  Libmpeg2 plugin
 dnl
-AC_ARG_ENABLE(libmpeg2,
-  [  --enable-libmpeg2       libmpeg2 decoder support (default enabled)])
-if test "${enable_libmpeg2}" != "no"
-then
-  AC_ARG_WITH(libmpeg2-tree,
-  [    --with-libmpeg2-tree=PATH libmpeg2 tree for static linking])
-  AS_IF([test -n "${with_libmpeg2_tree}"],[
-    AC_MSG_CHECKING(for libmpeg2.a in ${with_libmpeg2_tree})
-    real_libmpeg2_tree="`cd ${with_libmpeg2_tree} 2>/dev/null && pwd`"
-    if test -z "${real_libmpeg2_tree}"
-    then
-      dnl  The given directory can't be found
-      AC_MSG_RESULT(no)
-      AC_MSG_ERROR([cannot cd to ${with_libmpeg2_tree}])
-    fi
-    if test -f "${real_libmpeg2_tree}/libmpeg2/.libs/libmpeg2.a"
-    then
-      dnl  Use a custom libmpeg2
-      AC_MSG_RESULT(${real_libmpeg2_tree}/libmpeg2/.libs/libmpeg2.a)
-      VLC_ADD_PLUGIN([libmpeg2])
-      VLC_ADD_LIBS([libmpeg2],[-L${real_libmpeg2_tree}/libmpeg2/.libs -lmpeg2])
-      VLC_ADD_CFLAGS([libmpeg2],[-I${real_libmpeg2_tree}/include])
-    else
-      dnl  The given libmpeg2 wasn't built
-      AC_MSG_RESULT(no)
-      AC_MSG_ERROR([cannot find ${real_libmpeg2_tree}/libmpeg2/.libs/libmpeg2.a, make sure you compiled libmpeg2 in ${with_libmpeg2_tree}])
-    fi
-  ],[
-   PKG_CHECK_MODULES(LIBMPEG2,[libmpeg2 > 0.3.2],[
-          VLC_ADD_PLUGIN([libmpeg2])
-          VLC_ADD_LIBS([libmpeg2], $LIBMPEG2_LIBS)
-          VLC_ADD_CFLAGS([libmpeg2], $LIBMPEG2_CFLAGS)
-       ],
-      AC_MSG_WARN([Could not find libmpeg2 on your system: you may get it from http://libmpeg2.sf.net/ . Alternatively you can use --disable-libmpeg2 to disable the libmpeg2 plugin.]))
-  ])
-fi
+PKG_ENABLE_MODULES_VLC([LIBMPEG2], [], [libmpeg2 > 0.3.2], [libmpeg2 decoder support], [auto])
 
 dnl
 dnl  Vorbis plugin
 dnl
-AC_ARG_ENABLE(vorbis,
-  [  --enable-vorbis         Vorbis decoder support (default enabled)])
-if test "${enable_vorbis}" != "no"
-then
-  AC_ARG_WITH(vorbis-tree,
-  [    --with-vorbis-tree=PATH vorbis tree for static linking])
-  if test -n "${with_vorbis_tree}"
-  then
-    AC_MSG_CHECKING(for libvorbis.a in ${with_vorbis_tree})
-    real_vorbis_tree="`cd ${with_vorbis_tree} 2>/dev/null && pwd`"
-    if test -z "${real_vorbis_tree}"
-    then
-      dnl  The given directory can't be found
-      AC_MSG_RESULT(no)
-      AC_MSG_ERROR([cannot cd to ${with_vorbis_tree}])
-    fi
-    if test -f "${real_vorbis_tree}/lib/.libs/libvorbis.a"
-    then
-      dnl  Use a custom vorbis
-      AC_MSG_RESULT(${real_vorbis_tree}/lib/.libs/libvorbis.a)
-      VLC_ADD_PLUGIN([vorbis])
-      VLC_ADD_LIBS([vorbis],[${real_vorbis_tree}/lib/.libs/libvorbis.a ${real_vorbis_tree}/lib/.libs/libvorbisenc.a])
-      VLC_ADD_CFLAGS([vorbis],[-I${real_vorbis_tree}/include])
-    else
-      dnl  The given vorbis wasn't built
-      AC_MSG_RESULT(no)
-      AC_MSG_ERROR([cannot find ${real_vorbis_tree}/lib/.libs/libvorbis.a, make sure you compiled vorbis in ${with_vorbis_tree}])
-    fi
-  else
-    AC_CHECK_HEADERS(vorbis/codec.h, [
-      VLC_ADD_PLUGIN([vorbis])
-      VLC_ADD_LIBS([vorbis],[-lvorbis -logg -lm]) ],[])
-
-    AC_CHECK_HEADERS(vorbis/vorbisenc.h, [
-      VLC_ADD_LIBS([vorbis],[-lvorbisenc -lm]) ],[])
-  fi
-fi
+PKG_ENABLE_MODULES_VLC([VORBIS], [], [ogg vorbis >= 1.1 vorbisenc >= 1.1], [Vorbis decoder and encoder], [auto])
 
 dnl
 dnl  Tremor plugin
@@ -3621,47 +3155,7 @@ fi
 dnl
 dnl  Speex plugin
 dnl
-AC_ARG_ENABLE(speex,
-  [  --enable-speex          Speex decoder support (default enabled)])
-if test "${enable_speex}" != "no"
-then
-  AC_ARG_WITH(speex-tree,
-  [    --with-speex-tree=PATH speex tree for static linking])
-  if test -n "${with_speex_tree}"
-  then
-    AC_MSG_CHECKING(for libspeex.a in ${with_speex_tree})
-    real_speex_tree="`cd ${with_speex_tree} 2>/dev/null && pwd`"
-    if test -z "${real_speex_tree}"
-    then
-      dnl  The given directory can't be found
-      AC_MSG_RESULT(no)
-      AC_MSG_ERROR([cannot cd to ${with_speex_tree}])
-    fi
-    if test -f "${real_speex_tree}/libspeex/.libs/libspeex.a"
-    then
-      dnl  Use a custom speex
-      AC_MSG_RESULT(${real_speex_tree}/libspeex/.libs/libspeex.a)
-      VLC_ADD_PLUGIN([speex])
-      VLC_ADD_LIBS([speex],[${real_speex_tree}/libspeex/.libs/libspeex.a])
-      VLC_ADD_CFLAGS([speex],[-I${real_speex_tree}/include])
-    else
-      dnl  The given speex wasn't built
-      AC_MSG_RESULT(no)
-      AC_MSG_ERROR([cannot find ${real_speex_tree}/libspeex/.libs/libspeex.a, make sure you compiled speex in ${with_speex_tree}])
-    fi
-  else
-    AC_CHECK_HEADERS(speex/speex.h, [
-      LDFLAGS="${LDFLAGS_save} ${LIBS_speex}"
-      AC_CHECK_LIB(speex, speex_decode_int, [
-        VLC_ADD_PLUGIN([speex])
-        VLC_ADD_LIBS([speex],[-lspeex]) ],
-        [ AC_MSG_RESULT([no])
-          AC_MSG_WARN([Your libspeex is too old, please get the development
-                       version.]) ],[])
-      LDFLAGS="${LDFLAGS_save}"
-      ],[])
-  fi
-fi
+PKG_ENABLE_MODULES_VLC([SPEEX], [], [ogg speex >= 1.0.5], [Speex decoder support], [auto])
 
 dnl
 dnl  tarkin decoder plugin
@@ -3694,50 +3188,17 @@ fi
 dnl
 dnl  theora decoder plugin
 dnl
-AC_ARG_ENABLE(theora,
-[  --enable-theora         experimental theora codec (default disabled)])
-if test "${enable_theora}" = "yes"
-then
-  AC_CHECK_HEADERS(theora/theora.h, [
-    AC_CHECK_LIB(theora, theora_granule_time, [
-      VLC_ADD_PLUGIN([theora])
-      theora_libs="-ltheora -logg"
-      VLC_ADD_LIBS([theora],[${theora_libs}]) ],[
-      AC_MSG_ERROR([libtheora doesn't appear to be installed on your system.
-You also need to check that you have a libogg posterior to the 1.0 release.])],
-      [-logg])
-  ])
-fi
+PKG_ENABLE_MODULES_VLC([THEORA], [], [ogg theora >= 1.0], [experimental theora codec], [auto])
 
 dnl
-dnl  dirac decoder plugin
+dnl  dirac encoder plugin
 dnl
-AC_ARG_ENABLE(dirac,
-[  --enable-dirac          experimental dirac codec (default disabled)])
-if test "${enable_dirac}" = "yes"; then
-  PKG_CHECK_MODULES(DIRAC,[dirac >= 0.10.0], [
-      VLC_ADD_PLUGIN([dirac])
-      VLC_ADD_CFLAGS([dirac],[$DIRAC_CFLAGS])
-      VLC_ADD_LIBS([dirac],[$DIRAC_LIBS -lstdc++]) ],[
-      AC_MSG_ERROR([libdirac >= 0.10.0 doesn't appear to be installed on your system.])
-  ])
-fi
+PKG_ENABLE_MODULES_VLC([DIRAC], [], [dirac >= 0.10.0], [dirac encoder], [auto])
 
 dnl
 dnl  schroedinger decoder plugin (for dirac format video)
 dnl
-AC_ARG_ENABLE(schroedinger,
-[  --disable-schroedinger  high performance dirac codec (default enabled)])
-if test "${enable_schroedinger}" != "no"; then
-  PKG_CHECK_MODULES(SCHROEDINGER,[schroedinger-1.0 >= 1.0.6], [
-      VLC_ADD_PLUGIN([schroedinger])
-      VLC_ADD_CFLAGS([schroedinger],[$SCHROEDINGER_CFLAGS])
-      VLC_ADD_LIBS([schroedinger],[$SCHROEDINGER_LIBS]) ], [
-        AS_IF([test "x${enable_schroedinger}" != "x"], [
-          AC_MSG_ERROR([${SCHROEDINGER_PKG_ERRORS}])
-        ])
-])
-fi
+PKG_ENABLE_MODULES_VLC([SCHROEDINGER], [], [schroedinger-1.0 >= 1.0.6], [dirac decoder using schroedinger], [auto])
 
 dnl
 dnl  PNG decoder module
@@ -3829,19 +3290,7 @@ fi
 dnl
 dnl libfluidsynth (MIDI synthetizer) plugin
 dnl
-AC_ARG_ENABLE(fluidsynth,
-  [  --enable-fluidsynth     MIDI synthesisr with libfluidsynth (default enabled)])
-AS_IF([test "x${enable_fluidsynth}" != "xno"], [
-  PKG_CHECK_MODULES(FLUIDSYNTH, fluidsynth, [
-    VLC_ADD_PLUGIN(fluidsynth)
-    VLC_ADD_CFLAGS(fluidsynth, [${FLUIDSYNTH_CFLAGS}])
-    VLC_ADD_LIBS(fluidsynth, [${FLUIDSYNTH_LIBS}])
-  ], [
-    AS_IF([test "x${enable_fluidsynth}" != "x"], [
-      AC_MSG_ERROR([${FLUIDSYNTH_PKG_ERRORS}])
-    ])
-  ])
-])
+PKG_ENABLE_MODULES_VLC([FLUIDSYNTH], [], [fluidsynth], [MIDI synthetiser with libfluidsynth], [auto])
 
 dnl
 dnl Teletext Modules
@@ -3851,55 +3300,41 @@ dnl uncompatible
 dnl
 AC_ARG_ENABLE(zvbi,
   AS_HELP_STRING([--enable-zvbi],[VBI (inc. Teletext) decoding support with
-                 libzvbi (default enabled)]))
+                  libzvbi (default enabled)]))
 AC_ARG_ENABLE(telx,
   AS_HELP_STRING([--enable-telx],[Teletext decoding module (conflicting with
-                 zvbi) (default enabled if zvbi is absent)]))
+                  zvbi) (default enabled if zvbi is absent)]))
 
 AS_IF( [test "${enable_zvbi}" != "no"],[
     PKG_CHECK_MODULES(ZVBI,
-       zvbi-0.2 >= 0.2.25,
-       [
-         VLC_ADD_LIBS([zvbi],[$ZVBI_LIBS])
-         VLC_ADD_CFLAGS([zvbi],[$ZVBI_CFLAGS])
+        zvbi-0.2 >= 0.2.25,
+        [
+          VLC_ADD_LIBS([zvbi],[$ZVBI_LIBS])
+          if test "${SYS}" = "mingw32"; then
+              VLC_ADD_LIBS([zvbi],[ -lpthreadGC2])
+          fi
+          VLC_ADD_CFLAGS([zvbi],[$ZVBI_CFLAGS])
           VLC_ADD_PLUGIN([zvbi])
-         AC_DEFINE(ZVBI_COMPILED, 1, [Define if the zvbi module is built])
-         AS_IF( [test "${enable_telx}" = "yes"],[
-                 AC_MSG_WARN([The zvbi and telx modules are uncompatibles.
-                              Using zvbi.])
-                 ])
-       ],[
-         AC_MSG_WARN(ZVBI library not found. Enabling the telx module instead)
-       ])
+          AC_DEFINE(ZVBI_COMPILED, 1, [Define if the zvbi module is built])
+          AS_IF( [test "${enable_telx}" = "yes"],[
+                  AC_MSG_WARN([The zvbi and telx modules are uncompatibles.
+                               Using zvbi.])
+                  ])
+        ],[
+          AC_MSG_WARN(ZVBI library not found. Enabling the telx module instead)
+        ])
     ])
 AS_IF( [test "${enable_telx}" != "no" ],[
   VLC_ADD_PLUGIN([telx])
   ])
 
-dnl
-dnl asa/csri subtitle rendering module
-dnl
-AC_ARG_ENABLE(csri,
-  [  --enable-csri           Subtitle support using CSRI / asa (default disabled)])
-AS_IF( [test "${enable_csri}" = "yes"], [
-  PKG_CHECK_MODULES(CSRI,
-      csri >= 0.1.0,
-      [
-        VLC_ADD_LDFLAGS([csri],[$CSRI_LIBS])
-        VLC_ADD_CFLAGS([csri],[$CSRI_CFLAGS])
-        VLC_ADD_PLUGIN([csri])
-      ],[
-        AC_MSG_WARN([CSRI helper library not found])
-      ])
-  ])
-
 dnl
 dnl libass subtitle rendering module
 dnl
 AC_ARG_ENABLE(libass,
   [  --enable-libass         Subtitle support using libass (default disabled)])
 AS_IF( [test "${enable_libass}" = "yes"], [
-  PKG_CHECK_MODULES(LIBASS, libass >= 0.9.5,
+  PKG_CHECK_MODULES(LIBASS, libass >= 0.9.6,
       [
         VLC_ADD_LDFLAGS([libass],[$LIBASS_LIBS])
         VLC_ADD_CFLAGS([libass],[$LIBASS_CFLAGS])
@@ -3908,7 +3343,7 @@ AS_IF( [test "${enable_libass}" = "yes"], [
         AC_CHECK_HEADERS(fontconfig/fontconfig.h,
           [VLC_ADD_CPPFLAGS([libass],[-DHAVE_FONTCONFIG])
         if test "${SYS}" = "mingw32"; then
-           VLC_ADD_LIBS([libass],[-lfontconfig -lfreetype -liconv -lz -lxml2])
+           VLC_ADD_LIBS([libass],[-lfontconfig -lfreetype -liconv -lz])
         else
            VLC_ADD_LIBS([libass],[-lfontconfig])
         fi
@@ -3929,8 +3364,8 @@ AS_IF( [test "${enable_asademux}" = "yes"], [
       [
         VLC_ADD_LDFLAGS([asademux],[$PCRE_LIBS])
         VLC_ADD_CFLAGS([asademux],[$PCRE_CFLAGS])
-       if test "${SYS}" = "mingw32"; then
-               VLC_ADD_CPPFLAGS([asademux],[-DPCRE_STATIC])
+        if test "${SYS}" = "mingw32"; then
+            VLC_ADD_CPPFLAGS([asademux],[-DPCRE_STATIC])
         fi
         VLC_ADD_PLUGIN([asademux])
       ],[
@@ -3981,18 +3416,7 @@ AS_IF([test "${enable_kate}" != "no"], [
 dnl
 dnl  tiger decoder plugin
 dnl
-AC_ARG_ENABLE(tiger,
-[  --enable-tiger          Tiger rendering library for Kate streams (default enabled)])
-AS_IF([test "${enable_tiger}" != "no"], [
-  PKG_CHECK_MODULES(TIGER,[tiger >= 0.3.1], [
-      AC_DEFINE(HAVE_TIGER, 1, [Define if libtiger is available.])
-      VLC_ADD_CFLAGS([kate],[$TIGER_CFLAGS])
-      VLC_ADD_LIBS([kate],[$TIGER_LIBS]) ],[
-        AS_IF([test "x${enable_tiger}" != "x"], [
-          AC_MSG_ERROR([libtiger does not appear to be installed on your system.])
-        ])
-  ])
-])
+PKG_ENABLE_MODULES_VLC([TIGER], [], [tiger >= 0.3.1], [Tiger rendering library for Kate streams],[auto])
 
 
 dnl
@@ -4007,7 +3431,7 @@ dnl
 
 AC_PATH_XTRA()
 AC_ARG_ENABLE(x11,
-  [  --enable-x11            X11 support (default enabled)],, [
+  [  --enable-x11            X11 support with Xlib (default enabled)],, [
   AS_IF([test "${SYS}" != "mingw32" -a "${SYS}" != "mingwce"], [
     enable_x11="yes"
   ], [
@@ -4018,21 +3442,7 @@ AC_ARG_ENABLE(x11,
 CPPFLAGS="${CPPFLAGS_save} ${X_CFLAGS}"
 
 AS_IF([test "${enable_x11}" != "no"], [
-  AC_CHECK_HEADERS(X11/Xlib.h, [
-    VLC_ADD_PLUGIN([x11_screen])
-    VLC_ADD_CPPFLAGS([x11_screen],[${X_CFLAGS}])
-    VLC_ADD_LIBS([x11_screen],[${X_LIBS} ${X_PRE_LIBS} -lX11])
-
-    VLC_ADD_PLUGIN([panoramix])
-    VLC_ADD_LIBS([panoramix],[${X_LIBS} ${X_PRE_LIBS} -lX11])
-    VLC_ADD_CPPFLAGS([panoramix],[${X_CFLAGS}])
-
-    VLC_ADD_PLUGIN([x11])
-    VLC_ADD_LIBS([x11],[${X_LIBS} ${X_PRE_LIBS} -lX11])
-    VLC_ADD_CPPFLAGS([x11],[${X_CFLAGS}])
-
-    AC_CHECK_LIB(Xext, XShmAttach, [VLC_ADD_LIBS([x11],[-lXext])])
-  ])
+  AC_CHECK_HEADERS(X11/Xlib.h)
 
 dnl Check for DPMS
   AC_CHECK_HEADERS(X11/extensions/dpms.h, [
@@ -4049,26 +3459,6 @@ dnl Check for DPMS
   ])
 ])
 
-dnl
-dnl  XVideo module
-dnl  (enabled by default except on win32)
-dnl
-AC_ARG_ENABLE(xvideo,
-  [  --enable-xvideo         XVideo support (default enabled)],, [
-    enable_xvideo="$enable_x11"
-])
-AS_IF([test "${enable_xvideo}" != "no"], [
-  AC_CHECK_HEADERS(X11/extensions/Xv.h, [
-    CFLAGS="${CFLAGS_save} ${X_LIBS} ${X_PRE_LIBS} -lX11 -lXext"
-    AC_CHECK_LIB(Xv,XvPutImage,[
-        VLC_ADD_PLUGIN([xvideo])
-        VLC_ADD_CPPFLAGS([xvideo],[${X_CFLAGS}])
-        VLC_ADD_LIBS([xvideo],[${X_LIBS} ${X_PRE_LIBS} -lX11 -lXext -lXv])
-    ])
-    CFLAGS="${CFLAGS_save}"
-  ])
-])
-
 dnl
 dnl  GLX module
 dnl  (enabled by default except on win32)
@@ -4095,75 +3485,17 @@ dnl  XVMC module
 dnl  (disabled by default except on win32)
 dnl
 AC_ARG_ENABLE(xvmc,
-  [  --enable-xvmc           XVMC support (default disabled)],, [
+  [  --enable-xvmc           XvMC support (default disabled)],, [
   enable_xvmc="no"
 ])
 AS_IF([test "${enable_xvmc}" != "no"], [
   AC_CHECK_HEADERS(X11/extensions/vldXvMC.h, [
     VLC_ADD_PLUGIN([xvmc])
-    VLC_ADD_LIBS([xvmc],[${X_LIBS} ${X_PRE_LIBS} -lX11 -lXext -lXvMCW -lXv -lXinerama])
-    VLC_ADD_CPPFLAGS([xvmc],[${X_CFLAGS}])
-  ])
-])
-
-dnl
-dnl  Check for the Xinerama extension
-dnl
-AC_ARG_ENABLE(xinerama,
-  [  --enable-xinerama       Xinerama support (default enabled)],, [
-  enable_xinerama="$enable_xvideo"
-])
-AS_IF([test "$enable_xinerama" != "no"], [
-  ac_cv_have_xinerama="no"
-  CFLAGS="${CFLAGS_save} ${X_LIBS} ${X_PRE_LIBS} -lX11 -lXext"
-  AC_CHECK_HEADERS(X11/extensions/Xinerama.h,[
-    AC_CHECK_LIB(Xinerama_pic, XineramaQueryExtension,[
-      VLC_ADD_LIBS([xvideo],[-lXinerama_pic])
-      VLC_ADD_LIBS([x11],[-lXinerama_pic])
-      VLC_ADD_LIBS([glx],[-lXinerama_pic])
-      ac_cv_have_xinerama="yes"
-    ],[
-      AC_CHECK_LIB(Xinerama, XineramaQueryExtension,[
-        VLC_ADD_LIBS([xvideo],[-lXinerama])
-        VLC_ADD_LIBS([x11],[-lXinerama])
-        VLC_ADD_LIBS([glx],[-lXinerama])
-        ac_cv_have_xinerama="yes"
-      ])
-    ])
-  ])
-  if test "${ac_cv_have_xinerama}" = "yes"; then
-    AC_DEFINE(HAVE_XINERAMA, 1, [Define this if you have libXinerama installed])
-  fi
-
-dnl
-dnl  Check for XF86VidMode extension
-dnl
-  ac_cv_have_xf86vidmode="no"
-  AC_CHECK_HEADERS(X11/extensions/xf86vmode.h,[
-    AC_CHECK_LIB(Xxf86vm_pic, XF86VidModeGetViewPort,[
-      VLC_ADD_LIBS([xvideo],[-lXxf86vm_pic])
-      VLC_ADD_LIBS([x11],[-lXxf86vm_pic])
-      VLC_ADD_LIBS([glx],[-lXxf86vm_pic])
-      VLC_ADD_LIBS([xvmc],[-lXxf86vm_pic])
-      ac_cv_have_xf86vidmode="yes"
-    ],[
-      AC_CHECK_LIB(Xxf86vm, XF86VidModeGetViewPort,[
-        VLC_ADD_LIBS([xvideo],[-lXxf86vm])
-        VLC_ADD_LIBS([x11],[-lXxf86vm])
-        VLC_ADD_LIBS([glx],[-lXxf86vm])
-        VLC_ADD_LIBS([xvmc],[-lXxf86vm])
-        ac_cv_have_xf86vidmode="yes"
-      ])
-    ])
-  ],[true],
-[#ifdef HAVE_X11_XLIB_H
-# include <X11/Xlib.h>
-#endif]
-   )
-  AS_IF([test "${ac_cv_have_xf86vidmode}" = "yes"],
-    [AC_DEFINE(HAVE_XF86VIDMODE, 1, [Define this if you have libXxf86vm installed])
+    VLC_ADD_LIBS([xvmc],[${X_LIBS} ${X_PRE_LIBS} -lX11 -lXext -lXvMCW -lXv ${LIBMPEG2_LIBS}])
+    VLC_ADD_CPPFLAGS([xvmc],[${X_CFLAGS} ${LIBMPEG2_CFLAGS}])
+  ], [
+    AC_MSG_ERROR([XVideo-MotionCompensation extension not found!])
   ])
-  CFLAGS="${CFLAGS_save}"
 ])
 
 dnl End of Xlib tests
@@ -4172,27 +3504,56 @@ CPPFLAGS="${CPPFLAGS_save}"
 
 dnl
 dnl  X C Bindings modules
-dnl  (work in progress)
 dnl
 AC_ARG_ENABLE(xcb,
-  [  --enable-xcb            X C Bindings work-in-progress (default disabled)],
-  ,[enable_xcb="no"])
+  [  --enable-xcb            X11 support with XCB (default enabled)],, [
+  AS_IF([test "${SYS}" != "mingw32" -a "${SYS}" != "mingwce"], [
+    enable_xcb="yes"
+  ], [
+    enable_xcb="no"
+  ])
+])
+AC_ARG_ENABLE(xvideo,
+  [  --enable-xvideo         XVideo support (default enabled)],, [
+    enable_xvideo="$enable_xcb"
+])
+
 AS_IF([test "${enable_xcb}" != "no"], [
   PKG_CHECK_MODULES(XPROTO, [xproto])
 
   dnl libxcb
   PKG_CHECK_MODULES(XCB, [xcb])
   PKG_CHECK_MODULES(XCB_SHM, [xcb-shm])
+  VLC_ADD_PLUGIN([xcb])
+  VLC_ADD_PLUGIN([xcb_screen])
+
+  AS_IF([test "${enable_xvideo}" != "no"], [
+    PKG_CHECK_MODULES(XCB_XV, [xcb-xv >= 1.1.90.1], [
+      VLC_ADD_PLUGIN([xcb_xv])
+    ], [
+      PKG_CHECK_MODULES(XCB_XV, [xcb-xv], [
+        VLC_ADD_PLUGIN([xcb_xv])
+        VLC_ADD_CFLAGS([xcb_xv], [-DXCB_XV_OLD])
+      ])
+    ])
+  ])
+
+  PKG_CHECK_MODULES(XCB_RANDR, [xcb-randr >= 1.3], [
+    VLC_ADD_PLUGIN([panoramix])
+    VLC_ADD_LIBS([panoramix],[${XCB_RANDR_LIBS} ${XCB_LIBS}])
+    VLC_ADD_CFLAGS([panoramix],[${XCB_RANDR_CFLAGS} ${XCB_CFLAGS}])
+  ], [true])
 
   dnl xcb-utils
-  PKG_CHECK_MODULES(XCB_AUX, [xcb-aux])
-  PKG_CHECK_MODULES(XCB_IMAGE, [xcb-image])
   PKG_CHECK_MODULES(XCB_KEYSYMS, [xcb-keysyms])
 
-  VLC_ADD_PLUGIN([xcb])
   VLC_ADD_PLUGIN([xcb_window])
+  VLC_ADD_PLUGIN([globalhotkeys])
+  VLC_ADD_CFLAGS([globalhotkeys],[${XCB_KEYSYMS_CFLAGS} ${XCB_CFLAGS}] )
+  VLC_ADD_LIBS([globalhotkeys],[${XCB_KEYSYMS_LIBS} ${XCB_LIBS}] )
 ])
 
+
 dnl
 dnl  OpenGL module
 dnl  (enabled by default except on beos)
@@ -4326,11 +3687,10 @@ then
       VLC_ADD_PLUGIN([freetype])
       have_freetype=yes
       VLC_ADD_CPPFLAGS([freetype skins2],[${FREETYPE_CFLAGS}])
-      VLC_ADD_LIBS([freetype skins2],[${FREETYPE_LIBS}])
       if test "${SYS}" = "mingw32"; then
-        VLC_ADD_LIBS([freetype skins2],[-lxml2])
-        VLC_ADD_LIBS([freetype],[-liconv])
+        VLC_ADD_LIBS([freetype],[-liconv -lz])
       fi
+      VLC_ADD_LIBS([freetype skins2],[${FREETYPE_LIBS}])
       if test "${enable_fontconfig}" != "no"
       then
         AC_CHECK_HEADERS(fontconfig/fontconfig.h,
@@ -4339,6 +3699,16 @@ then
         AC_CHECK_HEADERS(Carbon/Carbon.h,
           [VLC_ADD_LDFLAGS([freetype],[-Wl,-framework,Carbon])])
       fi
+
+     dnl fribidi support
+      if test "${enable_fribidi}" != "no"
+      then
+        PKG_CHECK_MODULES(FRIBIDI, fribidi, [
+          VLC_ADD_CPPFLAGS([freetype skins2], [${FRIBIDI_CFLAGS} -DHAVE_FRIBIDI])
+          VLC_ADD_LIBS([freetype skins2], [${FRIBIDI_LIBS}])
+        ])
+      fi
+
   ],[
   have_freetype=no
   AS_IF([ test "${enable_freetype}" =  "yes"],[
@@ -4348,48 +3718,17 @@ from http://www.freetype.org/, or configure with --disable-freetype. Have a nice
     ])
   ])
 
-  dnl fribidi support
-  if test "${enable_fribidi}" != "no"
-  then
-    PKG_CHECK_MODULES(FRIBIDI, fribidi, [
-      VLC_ADD_CPPFLAGS([freetype skins2], [${FRIBIDI_CFLAGS} -DHAVE_FRIBIDI])
-      VLC_ADD_LIBS([freetype skins2], [${FRIBIDI_LIBS}])
-    ])
-    fi
 fi
 
 dnl
 dnl  libxml2 module
 dnl
-AC_ARG_ENABLE(libxml2,
-  [  --enable-libxml2        libxml2 support (default enabled)])
-AS_IF([test "${enable_libxml2}" != "no"], [
-  PKG_CHECK_MODULES([XML2], [libxml-2.0 >= 2.5], [
-    VLC_ADD_CPPFLAGS([xml],[${XML2_CFLAGS}])
-    VLC_ADD_LIBS([xml],[${XML2_LIBS}])
-    VLC_ADD_PLUGIN([xml])
-  ], [
-    AS_IF([test "x${enable_xml2}" != "x"], [
-      AC_MSG_ERROR([Could not find libxml version 2.5 or higher])
-    ])
-  ])
-])
+PKG_ENABLE_MODULES_VLC([libxml2], [], [libxml-2.0 >= 2.5], [libxml2 support],[auto])
 
 dnl
 dnl  SVG module
 dnl
-AC_ARG_ENABLE(svg,
-  [  --enable-svg            SVG support (default disabled)])
-if test "${enable_svg}" = "yes"
-then
-  PKG_CHECK_MODULES(SVG,
-       librsvg-2.0 >= 2.9.0,
-       [
-         VLC_ADD_LIBS([svg],[$SVG_LIBS])
-         VLC_ADD_CFLAGS([svg],[$SVG_CFLAGS])
-          VLC_ADD_PLUGIN([svg]) ],
-        [AC_MSG_WARN(SVG library not found)])
-fi
+PKG_ENABLE_MODULES_VLC([SVG], [], [librsvg-2.0 >= 2.9.0], [SVG rendering library],[auto])
 
 dnl
 dnl Snapshot vout module (with cache)
@@ -4473,9 +3812,9 @@ then
     if test -z "${with_directx}"
     then
       AC_CHECK_HEADERS(ddraw.h,
-      [ VLC_ADD_PLUGIN([vout_directx])
+      [ VLC_ADD_PLUGIN([directx])
         VLC_ADD_PLUGIN([aout_directx])
-        VLC_ADD_LIBS([vout_directx],[-lgdi32])
+        VLC_ADD_LIBS([directx],[-lgdi32])
       ])
       AC_CHECK_HEADERS(GL/gl.h,
       [ VLC_ADD_PLUGIN([glwin32])
@@ -4489,10 +3828,10 @@ then
       AC_MSG_CHECKING(for directX headers in ${with_directx})
       if test -f ${with_directx}/ddraw.h
       then
-        VLC_ADD_PLUGIN([vout_directx])
+        VLC_ADD_PLUGIN([directx])
        VLC_ADD_PLUGIN([aout_directx])
-        VLC_ADD_CPPFLAGS([vout_directx aout_directx],[-I${with_directx}])
-        VLC_ADD_LIBS([vout_directx],[-lgdi32])
+        VLC_ADD_CPPFLAGS([directx aout_directx],[-I${with_directx}])
+        VLC_ADD_LIBS([directx],[-lgdi32])
         AC_MSG_RESULT(yes)
       else
         AC_MSG_RESULT(no)
@@ -4659,32 +3998,7 @@ fi
 dnl
 dnl  libcaca plugin
 dnl
-AC_ARG_ENABLE(caca,
-  [  --enable-caca           libcaca output (default disabled)])
-if test "${enable_caca}" = "yes"
-then
-  CACA_PATH="${PATH}"
-  AC_ARG_WITH(caca-config-path,
-    [    --with-caca-config-path=PATH caca-config path (default search in \$PATH)],
-    [ if test "${with_caca_config_path}" != "no"
-      then
-        CACA_PATH="${with_caca_config_path}:${PATH}"
-      fi ])
-  AC_PATH_PROG(CACA_CONFIG, caca-config, no, ${CACA_PATH})
-  if test "${CACA_CONFIG}" != "no"
-  then
-    VLC_ADD_PLUGIN([caca])
-    VLC_ADD_CFLAGS([caca],[`${CACA_CONFIG} --cflags`])
-    VLC_ADD_LIBS([caca],[`${CACA_CONFIG} --plugin-libs`])
-    AC_COMPILE_IFELSE( [AC_LANG_PROGRAM([[#include <caca.h>
-                                        caca_event_t ev;]],
-                                        [[ev.type = 0;]]
-                       )],
-                       [],
-      [AC_DEFINE(CACA_EVENT_OPAQUE, [1], ["Define if struct caca_event is opaque and must not be accessed directly"])]
-    )
-  fi
-fi
+PKG_ENABLE_MODULES_VLC([caca], [], [caca >= 0.99.beta1], [libcaca output],[auto])
 
 dnl
 dnl  win32 GDI plugin
@@ -4720,69 +4034,27 @@ if test "${enable_oss}" != "no" &&
   (test "${SYS}" != "mingw32" -a "${SYS}" != "mingwce" ||
    test "${enable_oss}" = "yes")
 then
-  AC_CHECK_HEADERS(soundcard.h sys/soundcard.h machine/soundcard.h, [
+  AC_CHECK_HEADERS([soundcard.h sys/soundcard.h], [
     VLC_ADD_PLUGIN([oss])
     VLC_ADD_PLUGIN([access_oss])
-    AC_CHECK_LIB(ossaudio,main,VLC_ADD_LIBS([oss],[-lossaudio]))
+    AC_CHECK_LIB(ossaudio,main,[VLC_ADD_LIBS([oss],[-lossaudio])])
   ])
 fi
 
 dnl
 dnl  Pulseaudio module
 dnl
-AC_ARG_ENABLE(pulse,
-  [  --enable-pulse          Pulseaudio support (default enabled)])
-  if test "${enable_pulse}" != "no"
-   then
-     PKG_CHECK_MODULES(PULSE, libpulse >= 0.9.8,
-       [ VLC_ADD_PLUGIN([pulse])
-        VLC_ADD_CFLAGS([pulse],[${PULSE_CFLAGS}])
-        VLC_ADD_LDFLAGS([pulse],[${PULSE_LIBS}])],
-       [AC_MSG_WARN(pulseaudio library not found)])
-   fi
+PKG_ENABLE_MODULES_VLC([PULSE], [], [libpulse >= 0.9.11], [Pulseaudio support], [auto])
 
 dnl
 dnl  Portaudio module
 dnl
-AC_ARG_ENABLE(portaudio,
-  [  --enable-portaudio      Portaudio library support (default disabled)],
-  [if test "${enable_portaudio}" = "yes"
-   then
-     VLC_ADD_PLUGIN([portaudio])
-     VLC_ADD_CXXFLAGS([portaudio],[])
-     if test "${SYS}" = "mingw32"; then
-        VLC_ADD_LIBS([portaudio],[-lportaudio -lwinmm -lole32])
-     else
-        VLC_ADD_LIBS([portaudio],[-lportaudio])
-     fi
-   fi])
+PKG_ENABLE_MODULES_VLC([PORTAUDIO], [], [portaudio-2.0], [Portaudio library support], [auto])
 
 dnl
 dnl  ALSA module
 dnl
-AC_ARG_ENABLE(alsa,
-  [  --enable-alsa           ALSA sound support for Linux (default enabled)])
-if test "${enable_alsa}" != "no"
-then
-  AC_CHECK_HEADER(alsa/asoundlib.h, AC_CHECK_LIB(asound, main, have_alsa="true", have_alsa="false"),have_alsa="false")
-  if test "${have_alsa}" = "true"
-  then
-    CFLAGS="${CFLAGS_save}"
-    AC_TRY_COMPILE([#define ALSA_PCM_NEW_HW_PARAMS_API
-                    #define ALSA_PCM_NEW_SW_PARAMS_API
-                    #include <alsa/asoundlib.h>],
-       [snd_pcm_hw_params_get_period_time(0,0,0);],
-        AC_DEFINE(HAVE_ALSA_NEW_API, 1, Define if ALSA is at least rc4))
-    VLC_ADD_PLUGIN([alsa])
-    VLC_ADD_LIBS([alsa],[-lasound -lm -ldl])
-    VLC_ADD_PLUGIN([access_alsa])
-    VLC_ADD_LIBS([access_alsa],[-lasound -lm -ldl])
-  else
-    if test "${enable_alsa}" = "yes"; then
-      AC_MSG_ERROR([Could not find ALSA development headers])
-    fi
-  fi
-fi
+PKG_ENABLE_MODULES_VLC([ALSA], [], [alsa >= 1.0.0], [Alsa sound support for linux], [auto])
 
 dnl
 dnl  win32 waveOut plugin
@@ -4832,17 +4104,9 @@ fi
 dnl
 dnl  JACK modules
 dnl
-AC_ARG_ENABLE(jack,
- [  --enable-jack           JACK audio I/O modules (default disabled)],,
- [enable_jack="no"])
+PKG_ENABLE_MODULES_VLC([JACK], [jack], [jack], [JACK audio I/O modules],[auto])
+PKG_ENABLE_MODULES_VLC([JACK], [access_jack], [jack], [JACK audio I/O modules],[auto])
 
-AS_IF([test "${enable_jack}" != "no"], [
-  AC_CHECK_HEADERS(jack/jack.h, [
-    VLC_ADD_PLUGIN([access_jack])
-    VLC_ADD_PLUGIN([jack])
-    VLC_ADD_LIBS([access_jack jack],[-ljack])
-  ],[AC_MSG_ERROR([cannot find JACK headers])])
-])
 
 dnl
 dnl  CyberLink for C++ UPnP stack
@@ -4919,25 +4183,7 @@ class testclass : public SearchResponseListener, public MediaPlayer
 dnl
 dnl UPnP Plugin (Intel SDK)
 dnl
-AC_ARG_ENABLE(upnp,
-  AS_HELP_STRING([--enable-upnp],[Intel UPnP SDK (default enabled)]))
-
-VLC_ADD_CXXFLAGS([upnp_intel], [ ])
-AS_IF([test "x${enable_upnp}" != "xno"], [
-  AC_CHECK_LIB([upnp], [UpnpInit], [has_upnp="yes"], [has_upnp="no"], [-lpthread])
-  AS_IF([test "x${enable_upnp}" != "x" && test "${has_upnp}" = "no"], [
-    AC_MSG_ERROR([cannot find Intel UPnP SDK (libupnp)])
-  ])
-  AS_IF([test "${has_upnp}" = "yes"], [
-    VLC_ADD_LIBS([upnp_intel], [-lupnp -lixml])
-  ])
-], [
-  has_upnp="no"
-])
-
-AS_IF([test "${has_upnp}" = "yes"], [
-  VLC_ADD_PLUGIN([upnp_intel])
-])
+PKG_ENABLE_MODULES_VLC([UPNP], [upnp_intel], [libupnp], [Intel UPnp SDK],[auto])
 
 
 dnl
@@ -5033,7 +4279,7 @@ then
     VLC_ADD_LIBS([maemo],[${HILDON_LIBS}])
     VLC_ADD_PLUGIN([maemo])
     VLC_ADD_PLUGIN([swscale_maemo])
-    AC_DEFINE([BUILD_MAEMO], 1, [Define if you're using Maemo interfaces])
+    AC_DEFINE([BUILD_MAEMO], 1, [Define if you are using Maemo interfaces])
     ALIASES="${ALIASES} mvlc"
   ], [
     AS_IF([test "${enable_maemo}" = "yes"],[
@@ -5052,14 +4298,14 @@ AC_ARG_ENABLE(qt4,
   AS_IF([test "${SYS}" = "darwin"], [enable_qt4=no])
 ])
 AS_IF([test "${enable_qt4}" != "no"], [
-  PKG_CHECK_MODULES(QT4, [QtCore QtGui >= 4.3.0], [
+  PKG_CHECK_MODULES(QT4, [QtCore QtGui >= 4.4.0], [
     VLC_ADD_PLUGIN([qt4])
     AC_DEFINE([HAVE_QT4], 1, [Define to 1 if you have QT4 library.])
     ALIASES="${ALIASES} qvlc"
     AS_IF([test "${SYS}" != "mingw32" -a "${SYS}" != "mingwce" -a "${SYS}" != "cygwin" -a "${SYS}" != "darwin"], [
         VLC_ADD_LIBS([qt4],[$QT4_LIBS -lX11])
     ], [
-        VLC_ADD_LIBS([qt4],[$QT4_LIBS])
+        VLC_ADD_LIBS([qt4],[$QT4_LIBS -lole32])
     ])
     QT4LOCALEDIR="$($PKG_CONFIG --variable=prefix QtCore)/share/qt4/translations/"
     AC_SUBST(QT4LOCALEDIR)
@@ -5150,9 +4396,11 @@ then
   VLC_ADD_LDFLAGS([macosx minimal_macosx opengllayer qtcapture],[-Wl,-framework,Cocoa])
   VLC_ADD_LDFLAGS([macosx minimal_macosx opengllayer],[-Wl,-framework,OpenGL])
   VLC_ADD_LDFLAGS([macosx minimal_macosx],            [-Wl,-framework,Carbon])
+  VLC_ADD_LDFLAGS([macosx minimal_macosx],            [-Wl,-framework,CoreServices])
   VLC_ADD_LDFLAGS([macosx minimal_macosx],            [-Wl,-framework,AGL])
   VLC_ADD_LDFLAGS([macosx],                           [-Wl,-framework,IOKit])
-  VLC_ADD_LDFLAGS([macosx],                           [-Wl,-framework,QuickTime])
+  VLC_ADD_LDFLAGS([macosx],                           [-F\\\${top_srcdir}/extras/contrib/Sparkle -Wl,-framework,Sparkle])
+  VLC_ADD_OBJCFLAGS([macosx],                         [-F\\\${top_srcdir}/extras/contrib/Sparkle])
   dnl For bug report
   VLC_ADD_LDFLAGS([macosx],                           [-Wl,-framework,AddressBook])
   VLC_ADD_LDFLAGS([macosx qtcapture],                 [-Wl,-framework,QTKit])
@@ -5160,19 +4408,13 @@ then
   VLC_ADD_LDFLAGS([macosx],                           [-Wl,-framework,WebKit])
   VLC_ADD_LDFLAGS([opengllayer qtcapture],            [-Wl,-framework,QuartzCore])
   VLC_ADD_LDFLAGS([qtcapture],                        [-Wl,-framework,CoreVideo])
-  VLC_ADD_OBJCFLAGS([macosx minimal_macosx opengllayer growl], [-fobjc-exceptions] )
+  VLC_ADD_OBJCFLAGS([macosx minimal_macosx opengllayer growl opengllayer], [-fobjc-exceptions] )
 
   VLC_ADD_PLUGIN([access_eyetv])
   VLC_ADD_PLUGIN([qtcapture])
   VLC_ADD_PLUGIN([macosx])
   VLC_ADD_PLUGIN([minimal_macosx])
-
-  ORIGCFLAGS=$CFLAGS
-  CFLAGS="$CFLAGS -x objective-c"
-  AC_TRY_COMPILE([#import <QuartzCore/CALayer.h>],,
-  [VLC_ADD_PLUGIN([opengllayer])
-  VLC_ADD_OBJCFLAGS([opengllayer])],[])
-  CFLAGS=$ORIGCFLAGS
+  VLC_ADD_PLUGIN([opengllayer])
 fi
 
 dnl
@@ -5235,19 +4477,12 @@ AC_ARG_ENABLE(xosd,
   [  --enable-xosd           xosd interface support (default disabled)])
 if test "${enable_xosd}" = "yes"
 then
-  AC_CHECK_HEADER(xosd.h, have_xosd="true", have_xosd="false")
-  AC_CHECK_LIB(xosd,xosd_set_offset,
-      AC_DEFINE(HAVE_XOSD_VERSION_1, 1, Define if <xosd.h> is 1.0.x),
-    AC_CHECK_LIB(xosd,xosd_set_horizontal_offset,
-        AC_DEFINE(HAVE_XOSD_VERSION_2, 1, Define if <xosd.h> is 2.0.x),
-      AC_TRY_COMPILE([#include <xosd.h>],
-         [xosd_init("foo","bar",12,XOSD_top,2,12,42);],,
-          AC_DEFINE(HAVE_XOSD_VERSION_0, 1, Define if <xosd.h> is pre-1.0.0))))
-  if test "${have_xosd}" = "true"
-  then
-    VLC_ADD_PLUGIN([xosd])
-    VLC_ADD_LIBS([xosd],[-lxosd])
-  fi
+  AC_CHECK_HEADERS(xosd.h,
+    AC_CHECK_LIB(xosd, xosd_set_horizontal_offset, [
+      VLC_ADD_PLUGIN([xosd])
+      VLC_ADD_LIBS([xosd],[-lxosd])
+    ])
+  )
 fi
 
 dnl
@@ -5273,76 +4508,14 @@ then
 fi
 
 dnl
-dnl OpenGL visualisation plugin
+dnl  goom visualization plugin
 dnl
-AC_ARG_ENABLE(galaktos,
-  [  --enable-galaktos       OpenGL visualisation plugin (default disabled)])
-if test "${enable_galaktos}" = "yes"
-then
-  AC_CHECK_HEADERS(GL/gl.h GL/glu.h, [
-    VLC_ADD_PLUGIN([galaktos])
-    if test "${SYS}" != "mingw32"; then
-      VLC_ADD_LIBS([galaktos],[${X_LIBS} -lGL -lGLU])
-    else
-      VLC_ADD_LIBS([galaktos],[-lopengl32])
-    fi
-  ])
-fi
+PKG_ENABLE_MODULES_VLC([goom], [], [libgoom2], [goom visualization plugin], [auto])
 
 dnl
-dnl  goom visualization plugin
+dnl libprojectM visualization plugin
 dnl
-AC_ARG_ENABLE(goom,
-[  --enable-goom           goom visualisation plugin (default disabled)])
-if test "${enable_goom}" = "yes"
-then
-  AC_ARG_WITH(goom-tree,
-    [    --with-goom-tree=PATH goom tree for static linking (required)])
-
-  dnl
-  dnl test for --with-goom-tree
-  dnl
-  if test "${with_goom_tree}" != "no" -a -n "${with_goom_tree}"; then
-    AC_MSG_CHECKING(for libgoom2.a in ${with_goom_tree})
-    real_goom_tree="`cd ${with_goom_tree} 2>/dev/null && pwd`"
-    if test -z "${real_goom_tree}"; then
-      dnl  The given directory can't be found
-      AC_MSG_RESULT(no)
-      AC_MSG_ERROR([cannot cd to ${with_goom_tree}])
-    fi
-    if test -f "${real_goom_tree}/src/.libs/libgoom2.a"; then
-      AC_MSG_RESULT(${real_goom_tree}/src/.libs/libgoom2.a)
-      VLC_ADD_PLUGIN([goom])
-      VLC_ADD_LIBS([goom],[-L${real_goom_tree}/src/.libs -lgoom2])
-      VLC_ADD_CPPFLAGS([goom],[-I${real_goom_tree}/src -DUSE_GOOM_TREE])
-    else
-      dnl  The given libgoom2 wasn't built, try to look for the old goom
-      AC_MSG_RESULT(no)
-      AC_MSG_CHECKING(for libgoom.a in ${with_goom_tree})
-      if test -f "${real_goom_tree}/libgoom.a"; then
-        AC_MSG_RESULT(${real_goom_tree}/libgoom.a)
-        VLC_ADD_PLUGIN([goom])
-        VLC_ADD_LIBS([goom],[-L${real_goom_tree} -lgoom])
-        VLC_ADD_CPPFLAGS([goom],[-I${real_goom_tree} -DUSE_GOOM_TREE -DOLD_GOOM])
-      else
-        dnl  The given libgoom wasn't built
-        AC_MSG_RESULT(no)
-        AC_MSG_ERROR([cannot find ${real_goom_tree}/src/.libs/libgoom2.a, make sure you compiled goom in ${with_goom_tree}])
-      fi
-    fi
-  else
-    AC_CHECK_HEADERS(goom/goom.h, [
-      LDFLAGS="${LDFLAGS_save} ${LIBS_goom}"
-      AC_CHECK_LIB(goom2, goom_init, [
-        VLC_ADD_PLUGIN([goom])
-        VLC_ADD_LIBS([goom],[-lgoom2])
-      ],[
-        AC_MSG_ERROR([Could not find goom on your system: you may get it from http://www.ios-software.com/.])
-      ])
-      LDFLAGS="${LDFLAGS_save}"
-    ])
-  fi
-fi
+PKG_ENABLE_MODULES_VLC([projectm], [], [libprojectM], [projectM visualization plugin], [auto])
 
 dnl
 dnl  AtmoLight (homebrew AmbiLight)
@@ -5350,7 +4523,7 @@ dnl
 if test "${SYS}" = "mingw32" -o "${SYS}" = "linux"; then
    AC_ARG_ENABLE(atmo,
 AS_HELP_STRING([--disable-atmo],[AtmoLight (homebrew philips ambilight)
-               (default enabled)]))
+                (default enabled)]))
    if test "${enable_atmo}" != "no"; then
       AC_LANG_PUSH(C++)
       VLC_ADD_PLUGIN([atmo])
@@ -5360,19 +4533,15 @@ fi
 
 dnl
 dnl  Bonjour services discovery
+PKG_ENABLE_MODULES_VLC([BONJOUR], [], [avahi-client >= 0.6], [Bonjour services discovery], [auto])
+
 dnl
-AC_ARG_ENABLE(bonjour,
-  [  --enable-bonjour        Bonjour services discovery (default enabled)])
-AS_IF([test "${enable_bonjour}" != "no"], [
-  PKG_CHECK_MODULES(BONJOUR, avahi-client >= 0.6, [
-    AC_DEFINE(HAVE_AVAHI_CLIENT, 1, [Define to 1 if you have libavahi-client])
-    VLC_ADD_LIBS([bonjour access_output_http],[$BONJOUR_LIBS])
-    VLC_ADD_CFLAGS([bonjour access_output_http],[$BONJOUR_CFLAGS])
-    VLC_ADD_PLUGIN([bonjour])
-  ], [
-    AC_MSG_WARN(avahi-client library not found)
-  ])
-])
+dnl  HAL services discovery
+PKG_ENABLE_MODULES_VLC([HAL], [], [hal >= 0.5.0], [Linux HAL services discovery], [auto])
+
+dnl
+dnl MTP devices services discovery
+PKG_ENABLE_MODULES_VLC([MTP], [], [libmtp >= 0.3.0],[MTP devices support],[auto])
 
 dnl
 dnl  Lirc plugin
@@ -5389,18 +4558,6 @@ then
   fi
 fi
 
-dnl
-dnl Global hotkeys using XCB
-dnl
-PKG_CHECK_MODULES(XCB, [xcb], [
-  PKG_CHECK_MODULES(XCB_KEYSYMS, [xcb-keysyms], [
-    PKG_CHECK_MODULES(XPROTO, [xproto], [
-      VLC_ADD_PLUGIN([globalhotkeys])
-      VLC_ADD_CFLAGS([globalhotkeys],[${XCB_KEYSYMS_CFLAGS} ${XCB_CFLAGS}] )
-      VLC_ADD_LIBS([globalhotkeys],[${XCB_KEYSYMS_LIBS} ${XCB_LIBS}] )
-    ], [ AC_MSG_WARN( [Xproto not found] ) ])
-  ], [ AC_MSG_WARN( [XCB keysyms was not found]) ])
-], [ AC_MSG_WARN( [XCB was not found]) ])
 
 AC_ARG_WITH(,[Misc options:])
 
@@ -5426,7 +4583,7 @@ AC_ARG_ENABLE(gnutls,
   [  --enable-gnutls         gnutls TLS/SSL support (default enabled)])
 
 AS_IF([test "${enable_gnutls}" != "no"], [
-  PKG_CHECK_MODULES(GNUTLS, [gnutls >= 1.3.3], [
+  PKG_CHECK_MODULES(GNUTLS, [gnutls >= 1.7.4], [
     VLC_ADD_PLUGIN([gnutls])
     VLC_ADD_CFLAGS([gnutls], [$GNUTLS_CFLAGS])
     AS_IF([test "${SYS}" = "mingw32"], [
@@ -5472,7 +4629,7 @@ AC_MSG_CHECKING([whether to enable RAOP plugin])
 AS_IF([test "${have_libgcrypt}" = "yes"], [
   AC_MSG_RESULT(yes)
   VLC_ADD_PLUGIN([stream_out_raop])
-  VLC_ADD_LIBS([stream_out_raop], [${LIBGCRYPT_LIBS}])
+  VLC_ADD_LIBS([stream_out_raop], [${LIBGCRYPT_LIBS} -lgpg-error])
   VLC_ADD_CFLAGS([stream_out_raop], [${LIBGCRYPT_CFLAGS}])
 ], [
   AC_MSG_RESULT(no)
@@ -5491,8 +4648,8 @@ then
   then
     AC_MSG_ERROR([libgcrypt is required for update checking system])
   fi
-  VLC_ADD_LIBS([libvlc], [${LIBGCRYPT_LIBS}])
-  VLC_ADD_CFLAGS([libvlc], [${LIBGCRYPT_CFLAGS}])
+  VLC_ADD_LIBS([libvlccore], [${LIBGCRYPT_LIBS}])
+  VLC_ADD_CFLAGS([libvlccore], [${LIBGCRYPT_CFLAGS}])
   AC_DEFINE([UPDATE_CHECK], 1, [Define if you want to use the VLC update mechanism])
 fi
 
@@ -5666,8 +4823,8 @@ then
           [
             AC_PATH_PROGS(MOZILLA_CONFIG,
            [mozilla-config seamonkey-config xulrunner-config],
-            AC_MSG_ERROR([Please install the Mozilla development tools. mozilla-config was not found.])
-                 )
+        [no])
+            test "${MOZILLA_CONFIG}" = "no" && AC_MSG_ERROR([Please install the Mozilla development tools. mozilla-config was not found.])
           ]
         )
     dnl pkg-config failed but we might have found a mozilla-config
@@ -5761,13 +4918,13 @@ AM_CONDITIONAL(BUILD_MOZILLA,${mozilla})
 dnl Tests for Osso and Xsp
 AC_CHECK_LIB(osso, osso_display_blanking_pause, [
   PKG_CHECK_MODULES(GLIB2, glib-2.0, [
-    VLC_ADD_CPPFLAGS([x11 xvideo xvmc glx omapfb],[-DHAVE_OSSO ${DBUS_CFLAGS} ${GLIB2_CFLAGS}])
-    VLC_ADD_LIBS([x11 xvideo xvmc glx omapfb],[-losso])
+    VLC_ADD_CPPFLAGS([xvmc glx omapfb],[-DHAVE_OSSO ${DBUS_CFLAGS} ${GLIB2_CFLAGS}])
+    VLC_ADD_LIBS([xvmc glx omapfb],[-losso])
  ])
 ])
 AC_CHECK_LIB(Xsp, XSPSetPixelDoubling,[
-  VLC_ADD_CPPFLAGS([x11 xvideo xvmc glx],[-DHAVE_XSP])
-  VLC_ADD_LIBS([x11 xvideo xvmc glx],[-lXsp])
+  VLC_ADD_CPPFLAGS([xvmc glx],[-DHAVE_XSP])
+  VLC_ADD_LIBS([xvmc glx],[-lXsp])
 ])
 
 dnl
@@ -6040,7 +5197,6 @@ AC_CONFIG_FILES([
   modules/services_discovery/Makefile
   modules/stream_filter/Makefile
   modules/stream_out/Makefile
-  modules/stream_out/transrate/Makefile
   modules/video_chroma/Makefile
   modules/video_filter/Makefile
   modules/video_filter/atmo/Makefile
@@ -6051,7 +5207,6 @@ AC_CONFIG_FILES([
   modules/video_output/x11/Makefile
   modules/visualization/Makefile
   modules/visualization/visual/Makefile
-  modules/visualization/galaktos/Makefile
 ])
 
 dnl Generate makefiles
@@ -6071,7 +5226,7 @@ echo '#! /bin/sh' >compile
 echo rm -f .error\$\$ >>compile
 echo ERROR=0 >>compile
 echo export PATH=$PATH LANG=C >>compile
-echo "(make \$@ 2>&1 || touch .error\$\$)| \\" >>compile
+echo "(make V=1 \$@ 2>&1 || touch .error\$\$)| \\" >>compile
 echo '`sed -ne "s/^top_srcdir *= *//p" < Makefile`/extras/buildsystem/make.pl' >>compile
 echo test -f .error\$\$ \&\& ERROR=1 >>compile
 echo rm -f .error\$\$ >>compile