Patchwork [v5] vlc: New package

login
register
mail settings
Submitter Ismael Luceno
Date March 22, 2012, 1:54 a.m.
Message ID <1332381260-15711-1-git-send-email-ismael.luceno@gmail.com>
Download mbox | patch
Permalink /patch/148134/
State Superseded
Headers show

Comments

Ismael Luceno - March 22, 2012, 1:54 a.m.
Signed-off-by: Ismael Luceno <ismael.luceno@gmail.com>
---
Changes since v4:
 * Fixed VLC_CONF_OPT variable name
 * Added missing ffmpeg-related disable options
 * Added missing jack disable flag

Changes since v3:
 * Removed scm-version bootstrapping support

Changes since v2:
 * Replaced multi-line assignments to VLC_CONF_OPTS with individual ones
   for each line.
 * Split additional commands required to build into macros and added them
   to the appropriate hook. Also added comments.

Changes since v1:
  * Added a description for the package
  * Described and signed-off the patch
  * Added configuration knobs for all available dependencies and other
    build options.

 package/multimedia/Config.in                  |    1 +
 package/multimedia/vlc/Config.in              |  286 +++++++++++++++++++
 package/multimedia/vlc/vlc-uclibc-fixes.patch |   25 ++
 package/multimedia/vlc/vlc.mk                 |  365 +++++++++++++++++++++++++
 4 files changed, 677 insertions(+)
 create mode 100644 package/multimedia/vlc/Config.in
 create mode 100644 package/multimedia/vlc/vlc-uclibc-fixes.patch
 create mode 100644 package/multimedia/vlc/vlc.mk
Arnout Vandecappelle - March 25, 2012, 7:48 p.m.
On Thursday 22 March 2012 02:54:20 Ismael Luceno wrote:
> Signed-off-by: Ismael Luceno <ismael.luceno@gmail.com>

 Not done yet, unfortunately...  But for a big patch like this that's
to be expected.

 If you're in a hurry to get this integrated, it may be worthwhile to
split the patch into a basic one that includes a minimal feature set,
and an extension that adds all the config options for the different
components.

 You should also test it with a minimal internal toolchain, i.e.
without any largefile, wchar and gettext stuff.  That will expose
a great number of errors right away.  For instance, the v4l2 stuff
fails because of LARGEFILE.

[snip]
> +config BR2_PACKAGE_VLC_PULSE
> +       bool "PulseAudio support"
> +       select BR2_PACKAGE_PULSEAUDIO

 pulseaudio depends on BR2_USE_WCHAR, so this dependency should be
repeated here.  And there should be a comment explaining that
WCHAR is needed.  Like this:

config BR2_PACKAGE_VLC_PULSE
	bool "PulseAudio support"
	select BR2_PACKAGE_PULSEAUDIO
	depends on BR2_USE_WCHAR # pulseaudio

comment "PulseAudio support requires a toolchain with WCHAR support"
	depends on !BR2_USE_WCHAR

 You should check for such a situation for each package for which you
add a select statement.  There are quite a few more like that, I've
checked it for just this one.  I mention a few more below, but there
are probably even more.


 Also, it would be nice to have a short help text for each option.
Doesn't have to be much, something like "pulseaudio is a proxy
between the audio hardware and audio applications.  See
http://pulseaudio.org" is sufficient.  But I realize it's a lot of
effort to write help texts for all these options.


[snip]
> +config BR2_PACKAGE_VLC_AVCODEC
> +       bool "FFmpeg (Many CODECs)"
> +       select BR2_PACKAGE_FFMPEG
> +       help
> +	 There is an awful lot of CODECs in libavcodec. You might want to avoid
> +	 duplication.

 This help text isn't very clear.  How about:

There is a large number of codecs in FFmpeg/libavcodec.  It is 
advisable to avoid duplication: select either the FFmpeg or the
vlc implementation for each codec, not both.

[snip]
> +config BR2_PACKAGE_VLC_GVFS
> +       bool "Gnome VFS support"
> +       select BR2_PACKAGE_GFVS
 Typo here: _GVFS.  And missing depends on BR2_LARGEFILE and 
BR2_USE_WCHAR.


> +config BR2_PACKAGE_VLC_V4L2
> +       bool "Video4Linux 2 support"
> +       select BR2_PACKAGE_LIBV4L
 depends on BR2_LARGEFILE

[snip]
> +config BR2_PACKAGE_VLC_UDEV
> +       bool "Udev support"
> +       select BR2_PACKAGE_UDEV

 udev is a special case, because it depends on the /dev management
option BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_UDEV.  You can't use a
select for that one (it would be too confusing).  So just set a
depends on BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_UDEV.  The comment
is not needed in this case, because it's quite obvious that udev
support only makes sense if you have udev.

[snip]
> diff --git a/package/multimedia/vlc/vlc-uclibc-fixes.patch b/package/multimedia/vlc/vlc-uclibc-fixes.patch
> new file mode 100644
> index 0000000..5471b08
> --- /dev/null
> +++ b/package/multimedia/vlc/vlc-uclibc-fixes.patch
> @@ -0,0 +1,25 @@
> +Fixes compilation with uClibc, which doesn't provide gnu/libc-version.h nor
> +gnu_get_libc_version.
> +
> +Signed-off-by: Ismael Luceno <ismael.luceno@gmail.com>

 Did you send this patch upstream to vlc?  If not, could you do so?

[snip]
> +VLC_CONF_OPT += $(foreach i,avcodec avformat postproc swscale,--disable-$i)

 Nice!

[snip]
> +# The configure script fails to detect vasprintf on uClibc.
> +VLC_POST_CONFIGURE_HOOKS += VLC_FIX_CONF
> +define VLC_FIX_CONF
> +	$(SED) '1i#define HAVE_VASPRINTF 1' $(@D)/config.h
> +endef

 Nice!  Maybe remove the existing HAVE_VASPRINTF line too:

$(SED) '/HAVE_VASPRINTF/d; 1i#define HAVE_VASPRINTF 1' $(@D)/config.h

 Also, it's a bit more natural to put the 
VLC_POST_CONFIGURE_HOOKS += VLC_FIX_CONF
after the definition of VLC_FIX_CONF.  But it doesn't make a
difference, of course.


> +# The following rmoves the relink_command. If not removed, libtool tries to
                   ^^^removes
> +# relink against the host libraries, instead of the sysroot.
> +VLC_POST_BUILD_HOOKS += VLC_FIX_LA_FILES
> +define VLC_FIX_LA_FILES
> +	find $(@D) -name '*.la' -exec $(SED) '/^relink_command=/d' '{}' +

 For which .la's is this needed?  I've compiled various configurations with
several toolchains and I don't see a relink_command in any of the .la
files...

> +	touch $(@D)/modules/access/zip/libzip_plugin.la \
> +		$(@D)/modules/misc/liblogger_plugin.la

 And why is this needed?

> +endef
> +
> +$(eval $(call AUTOTARGETS))


 Regards,
 Arnout
Ismael Luceno - March 28, 2012, 12:36 a.m.
On Sun, 25 Mar 2012 21:48:57 +0200
Arnout Vandecappelle <arnout@mind.be> wrote:
> On Thursday 22 March 2012 02:54:20 Ismael Luceno wrote:
> > Signed-off-by: Ismael Luceno <ismael.luceno@gmail.com>
> 
>  Not done yet, unfortunately...  But for a big patch like this that's
> to be expected.

I know.

>  If you're in a hurry to get this integrated, it may be worthwhile to
> split the patch into a basic one that includes a minimal feature set,
> and an extension that adds all the config options for the different
> components.

I would prefer to get it integrated as a whole. Sooner is better, but I
would like to get it right once and forever.

<...>
>  udev is a special case, because it depends on the /dev management
> option BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_UDEV.  You can't use a
> select for that one (it would be too confusing).  So just set a
> depends on BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_UDEV.  The comment
> is not needed in this case, because it's quite obvious that udev
> support only makes sense if you have udev.

Hmmm... that sounds a bit confusing... the dependency is actually on
libudev, but does that necessarily mean
BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_UDEV?

> > diff --git a/package/multimedia/vlc/vlc-uclibc-fixes.patch
> > b/package/multimedia/vlc/vlc-uclibc-fixes.patch new file mode 100644
> > index 0000000..5471b08
> > --- /dev/null
> > +++ b/package/multimedia/vlc/vlc-uclibc-fixes.patch
> > @@ -0,0 +1,25 @@
> > +Fixes compilation with uClibc, which doesn't provide
> > gnu/libc-version.h nor +gnu_get_libc_version.
> > +
> > +Signed-off-by: Ismael Luceno <ismael.luceno@gmail.com>
> 
>  Did you send this patch upstream to vlc?  If not, could you do so?

Yes, I sent it but was rejected, they consider it a bug in uClibc. I'll
add a comment on the patch.

> > +# The following rmoves the relink_command. If not removed, libtool
> > tries to
>                    ^^^removes
> > +# relink against the host libraries, instead of the sysroot.
> > +VLC_POST_BUILD_HOOKS += VLC_FIX_LA_FILES
> > +define VLC_FIX_LA_FILES
> > +	find $(@D) -name '*.la' -exec $(SED) '/^relink_command=/d'
> > '{}' +
> 
>  For which .la's is this needed?  I've compiled various
> configurations with several toolchains and I don't see a
> relink_command in any of the .la files...

Well, in the scm version I was using, for all them, but perhaps that
somehow changes when compiling from a tarball... strange...

> 
> > +	touch $(@D)/modules/access/zip/libzip_plugin.la \
> > +		$(@D)/modules/misc/liblogger_plugin.la
> 
>  And why is this needed?

Because those depend on other .la files, and otherwise get re-built,
thus add the relink_command again...

Thanks for the suggestions. I'll try to address the issues and send a
new patch soon :).
Thomas Petazzoni - July 16, 2012, 11:23 a.m.
Hello,

Le Tue, 27 Mar 2012 21:36:10 -0300,
Ismael Luceno <ismael.luceno@gmail.com> a écrit :

> Thanks for the suggestions. I'll try to address the issues and send a
> new patch soon :).

In the end, do you plan to post an updated patch?

Thanks,

Thomas
Ismael Luceno - July 16, 2012, 8:39 p.m.
On Mon, Jul 16, 2012 at 11:23 AM, Thomas Petazzoni
<thomas.petazzoni@free-electrons.com> wrote:
> Hello,

Hi.

> Le Tue, 27 Mar 2012 21:36:10 -0300,
> Ismael Luceno <ismael.luceno@gmail.com> a écrit :
>
>> Thanks for the suggestions. I'll try to address the issues and send a
>> new patch soon :).
>
> In the end, do you plan to post an updated patch?

I've had no time to work on it yet, but it's on my to-do list...

Patch

diff --git a/package/multimedia/Config.in b/package/multimedia/Config.in
index a05d1d9..fc20d74 100644
--- a/package/multimedia/Config.in
+++ b/package/multimedia/Config.in
@@ -44,6 +44,7 @@  source "package/multimedia/speex/Config.in"
 source "package/multimedia/tidsp-binaries/Config.in"
 source "package/multimedia/taglib/Config.in"
 source "package/multimedia/tremor/Config.in"
+source "package/multimedia/vlc/Config.in"
 source "package/multimedia/vorbis-tools/Config.in"
 source "package/multimedia/wavpack/Config.in"
 endmenu
diff --git a/package/multimedia/vlc/Config.in b/package/multimedia/vlc/Config.in
new file mode 100644
index 0000000..26b76cf
--- /dev/null
+++ b/package/multimedia/vlc/Config.in
@@ -0,0 +1,286 @@ 
+menuconfig BR2_PACKAGE_VLC
+	bool "vlc"
+	help
+	  VLC is a free and open source cross-platform multimedia player and
+	  framework that plays most multimedia files as well as DVD, Audio CD,
+	  VCD, and various streaming protocols.
+
+	  http://www.videolan.org/vlc/
+
+
+if BR2_PACKAGE_VLC
+
+config BR2_PACKAGE_VLC_LOWMEM
+       bool "Optimize memory usage over performance"
+
+config BR2_PACKAGE_VLC_SOUT
+       bool "Enable streaming output"
+
+config BR2_PACKAGE_VLC_HTTPD
+       bool "Enable built-in HTTP server"
+
+config BR2_PACKAGE_VLC_VLM
+       bool "Enable stream manager (VLM)"
+
+config BR2_PACKAGE_VLC_SCREEN
+       bool "Screen capture support"
+
+comment "Audio output"
+
+config BR2_PACKAGE_VLC_ALSA
+       bool "ALSA support"
+       select BR2_PACKAGE_ALSA_LIB
+
+config BR2_PACKAGE_VLC_OSS
+       bool "OSS support"
+
+config BR2_PACKAGE_VLC_PULSE
+       bool "PulseAudio support"
+       select BR2_PACKAGE_PULSEAUDIO
+
+config BR2_PACKAGE_VLC_SAMPLERATE
+       bool "Audio resampling support"
+       select BR2_PACKAGE_LIBSAMPLERATE
+
+comment "Video output"
+
+if BR2_PACKAGE_XORG7
+
+config BR2_PACKAGE_VLC_XCB
+       bool "XCB support"
+       select BR2_PACKAGE_LIBXCB
+       select BR2_PACKAGE_XCB_PROTO
+
+config BR2_PACKAGE_VLC_LIBX11
+       bool "Xlib support"
+       select BR2_PACKAGE_XLIB_LIBX11
+
+config BR2_PACKAGE_VLC_XV
+       bool "XVideo support (XCB)"
+       select BR2_PACKAGE_LIBXCB
+       select BR2_PACKAGE_XCB_PROTO
+       select BR2_PACKAGE_XPROTO_VIDEOPROTO
+
+config BR2_PACKAGE_VLC_GLX
+       bool "OpenGL (XCB GLX)"
+       select BR2_PACKAGE_LIBXCB
+       select BR2_PACKAGE_XCB_PROTO
+       select BR2_PACKAGE_XPROTO_GLPROTO
+
+endif # BR2_PACKAGE_XORG7
+
+config BR2_PACKAGE_VLC_DIRECTFB
+       bool "DirectFB support"
+       select BR2_PACKAGE_DIRECTFB
+
+config BR2_PACKAGE_VLC_SDL
+       bool "SDL support"
+       select BR2_PACKAGE_SDL
+
+config BR2_PACKAGE_VLC_SDL_IMAGE
+       bool "SDL-image support"
+       depends on BR2_PACKAGE_VLC_SDL
+       select BR2_PACKAGE_SDL_IMAGE
+
+config BR2_PACKAGE_VLC_FREETYPE
+       bool "FreeType support (for subtitles)"
+       select BR2_PACKAGE_FREETYPE
+
+config BR2_PACKAGE_VLC_FONTCONFIG
+       bool "fontconfig support"
+       depends on BR2_PACKAGE_VLC_FREETYPE
+       select BR2_PACKAGE_FONTCONFIG
+
+comment "Codecs"
+
+config BR2_PACKAGE_VLC_FAAD
+       bool "MPEG AAC"
+       select BR2_PACKAGE_FAAD2
+
+config BR2_PACKAGE_VLC_MAD
+       bool "MAD (Fixed-point, MPEG audio)"
+       select BR2_PACKAGE_LIBMAD
+
+config BR2_PACKAGE_VLC_TREMOR
+       bool "Tremor (Fixed-point, Vorbis)"
+       select BR2_PACKAGE_TREMOR
+
+config BR2_PACKAGE_VLC_AVCODEC
+       bool "FFmpeg (Many CODECs)"
+       select BR2_PACKAGE_FFMPEG
+       help
+	 There is an awful lot of CODECs in libavcodec. You might want to avoid
+	 duplication.
+
+if BR2_PACKAGE_VLC_AVCODEC
+
+config BR2_PACKAGE_VLC_POSTPROC
+       bool "Post-processing support"
+       select BR2_PACKAGE_FFMPEG_POSTPROC
+
+config BR2_PACKAGE_VLC_SWSCALE
+       bool "Software scaling support"
+       select BR2_PACKAGE_FFMPEG_SWSCALE
+
+endif # BR2_PACKAGE_VLC_AVCODEC
+
+config BR2_PACKAGE_VLC_LIBMPEG2
+       bool "MPEG-1/2 (libmpeg2)"
+       select BR2_PACKAGE_LIBMPEG2
+
+config BR2_PACKAGE_VLC_VORBIS
+       bool "Vorbis (Floating-point)"
+       select BR2_PACKAGE_LIBVORBIS
+
+config BR2_PACKAGE_VLC_THEORA
+       bool "Theora"
+       select BR2_PACKAGE_LIBTHEORA
+
+config BR2_PACKAGE_VLC_SPEEX
+       bool "Speex"
+       select BR2_PACKAGE_SPEEX
+
+config BR2_PACKAGE_VLC_FLAC
+       bool "FLAC"
+       select BR2_PACKAGE_FLAC
+
+config BR2_PACKAGE_VLC_PNG
+       bool "PNG support"
+       select BR2_PACKAGE_LIBPNG
+
+config BR2_PACKAGE_VLC_SVG
+       bool "SVG support"
+       select BR2_PACKAGE_LIBRSVG
+
+comment "Container formats"
+
+config BR2_PACKAGE_VLC_OGG
+       bool "Ogg"
+       select BR2_PACKAGE_LIBOGG
+
+config BR2_PACKAGE_VLC_MUX_OGG
+       bool "Ogg mux support"
+       depends on BR2_PACKAGE_VLC_OGG
+
+comment "Input devices"
+
+config BR2_PACKAGE_VLC_VCD
+       bool "Built-in VCD and CD-DA support"
+
+config BR2_PACKAGE_VLC_DVD
+       bool "DVD support"
+       select BR2_PACKAGE_LIBDVDREAD
+
+config BR2_PACKAGE_VLC_DVDNAV
+       bool "DVD Navigation support"
+       depends on BR2_PACKAGE_VLC_DVD
+       select BR2_PACKAGE_LIBDVDNAV
+
+config BR2_PACKAGE_VLC_OPENCV
+       bool "OpenCV (Computer Vision) support"
+       select BR2_PACKAGE_OPENCV
+
+comment "Transport protocols"
+
+config BR2_PACKAGE_VLC_GVFS
+       bool "Gnome VFS support"
+       select BR2_PACKAGE_GFVS
+
+config BR2_PACKAGE_VLC_V4L2
+       bool "Video4Linux 2 support"
+       select BR2_PACKAGE_LIBV4L
+
+config BR2_PACKAGE_VLC_PVR
+       bool "Support PVR Video4Linux 2 cards"
+       depends on BR2_PACKAGE_VLC_V4L2
+
+config BR2_PACKAGE_VLC_LIVE555
+       bool "Sreaming support (RTP/RTCP, RTSP, SIP)"
+       select BR2_PACKAGE_LIVE555
+
+config BR2_PACKAGE_VLC_SMB
+       bool "Samba support (SMB/CIFS)"
+       select BR2_PACKAGES_SAMBA
+
+comment "Video filters and Visualization"
+
+config BR2_PACKAGE_VLC_VISUAL
+       bool "Visualization plugin"
+
+config BR2_PACKAGE_VLC_ATMO
+       bool "AtmoLight (homemade Philips Ambilight clone)"
+
+comment "Misc. options"
+
+config BR2_PACKAGE_VLC_MEDIALIB
+       bool "VLC Media Library"
+
+config BR2_PACKAGE_VLC_TAGLIB
+       bool "TagLib support"
+       select BR2_PACKAGE_TAGLIB
+
+config BR2_PACKAGE_VLC_DBUS
+       bool "DBus support"
+       select BR2_PACKAGE_DBUS
+
+config BR2_PACKAGE_VLC_LIBGCRYPT
+       bool "libgcrypt support"
+       select BR2_PACKAGE_LIBGCRYPT
+
+config BR2_PACKAGE_VLC_GNUTLS
+       bool "TLS/SSL support (using GnuTLS)"
+       select BR2_PACKAGE_GNUTLS
+
+config BR2_PACKAGE_VLC_SQLITE
+       bool "SQLite support"
+       select BR2_PACKAGE_SQLITE
+
+config BR2_PACKAGE_VLC_LUA
+       bool "Lua scripting support"
+       select BR2_PACKAGE_LUA
+
+config BR2_PACKAGE_VLC_LIBXML2
+       bool "libxml2 support"
+       select BR2_PACKAGE_LIBXML2
+
+comment "Service discovery"
+
+config BR2_PACKAGE_VLC_BONJOUR
+       bool "Bonjour / Avahi support"
+       select BR2_PACKAGE_AVAHI
+
+config BR2_PACKAGE_VLC_UDEV
+       bool "Udev support"
+       select BR2_PACKAGE_UDEV
+
+config BR2_PACKAGE_VLC_UPNP
+       bool "Universal Plug and Play support (UPNP)"
+       select BR2_PACKAGE_LIBUPNP
+
+comment "Interface"
+
+config BR2_PACKAGE_VLC_FRONTEND
+	bool "Build and install frontend binary"
+	default y
+	help
+	  This will install the video player.
+
+if BR2_PACKAGE_VLC_FRONTEND
+
+config BR2_PACKAGE_VLC_QT4
+       bool "QT4-based interface"
+       depends on BR2_PACKAGE_QT_GUI_X11
+
+config BR2_PACKAGE_VLC_NCURSES
+       bool "Ncurses text-based interface"
+       select BR2_PACKAGE_NCURSES
+
+config BR2_PACKAGE_VLC_XOSD
+       bool "X On Screen Display"
+       depends on BR2_PACKAGE_VLC_LIBX11
+
+config BR2_PACKAGE_VLC_FBOSD
+       bool "Framebuffer On Screen Display"
+
+endif # BR2_PACKAGE_VLC_FRONTEND
+endif # BR2_PACKAGE_VLC
diff --git a/package/multimedia/vlc/vlc-uclibc-fixes.patch b/package/multimedia/vlc/vlc-uclibc-fixes.patch
new file mode 100644
index 0000000..5471b08
--- /dev/null
+++ b/package/multimedia/vlc/vlc-uclibc-fixes.patch
@@ -0,0 +1,25 @@ 
+Fixes compilation with uClibc, which doesn't provide gnu/libc-version.h nor
+gnu_get_libc_version.
+
+Signed-off-by: Ismael Luceno <ismael.luceno@gmail.com>
+
+diff -u a/src/posix/linux_specific.c b/src/posix/linux_specific.c
+--- a/src/posix/linux_specific.c	2012-02-08 16:43:30.000000000 -0200
++++ b/src/posix/linux_specific.c	2012-02-09 03:51:20.925504594 -0200
+@@ -74,14 +74,14 @@
+     return (path != NULL) ? path : strdup (PKGLIBDIR);
+ }
+ 
+-#ifdef __GLIBC__
++#if defined(__GLIBC__) && !defined(__UCLIBC__)
+ # include <gnu/libc-version.h>
+ # include <stdlib.h>
+ #endif
+ 
+ void system_Init (void)
+ {
+-#ifdef __GLIBC__
++#if defined(__GLIBC__) && !defined(__UCLIBC__)
+     const char *glcv = gnu_get_libc_version ();
+ 
+     /* gettext in glibc 2.5-2.7 is not thread-safe. LibVLC keeps crashing,
diff --git a/package/multimedia/vlc/vlc.mk b/package/multimedia/vlc/vlc.mk
new file mode 100644
index 0000000..62db881
--- /dev/null
+++ b/package/multimedia/vlc/vlc.mk
@@ -0,0 +1,365 @@ 
+#############################################################
+#
+# vlc
+#
+#############################################################
+VLC_VERSION = 2.0.0
+VLC_SOURCE= vlc-$(VLC_VERSION).tar.xz
+VLC_SITE = http://download.videolan.org/pub/videolan/vlc/$(VLC_VERSION)
+
+VLC_CONF_OPT += --disable-rpath --enable-run-as-root \
+		--disable-a52 \
+		--disable-jack \
+		--disable-mkv \
+		--disable-x264 \
+		--disable-libass \
+		--disable-crystalhd \
+		--disable-libva \
+		--disable-dca \
+		--disable-vcdx \
+		--disable-lirc \
+		--disable-goom \
+		--disable-projectm \
+		--disable-libcddb \
+		--disable-dc1394 \
+		--disable-bluray
+
+ifeq ($(BR2_PACKAGE_VLC_ALSA),y)
+VLC_DEPENDENCIES += alsa-lib
+VLC_CONF_OPT += --enable-alsa
+else
+VLC_CONF_OPT += --disable-alsa
+endif
+
+ifeq ($(BR2_PACKAGE_VLC_DIRECTFB),y)
+VLC_CONF_OPT += --enable-directfb
+VLC_DEPENDENCIES += directfb
+else
+VLC_CONF_OPT += --disable-directfb
+endif
+
+ifeq ($(BR2_PACKAGE_VLC_SDL),y)
+VLC_CONF_OPT += --enable-sdl
+VLC_DEPENDENCIES += sdl
+else
+VLC_CONF_OPT += --disable-sdl
+endif
+
+ifeq ($(BR2_PACKAGE_VLC_SDL_IMAGE),y)
+VLC_CONF_OPT += --enable-sdl-image
+VLC_DEPENDENCIES += sdl_image
+else
+VLC_CONF_OPT += --disable-sdl-image
+endif
+
+ifeq ($(BR2_PACKAGE_VLC_MAD),y)
+VLC_CONF_OPT += --enable-mad
+VLC_DEPENDENCIES += libmad
+else
+VLC_CONF_OPT += --disable-mad
+endif
+
+ifeq ($(BR2_PACKAGE_VLC_TREMOR),y)
+VLC_DEPENDENCIES += tremor
+VLC_CONF_OPT += --enable-tremor
+else
+VLC_CONF_OPT += --disable-tremor
+endif
+
+ifeq ($(BR2_PACKAGE_VLC_PNG),y)
+VLC_DEPENDENCIES += libpng
+VLC_CONF_OPT += --enable-png
+else
+VLC_CONF_OPT += --disable-png
+endif
+
+ifeq ($(BR2_PACKAGE_AVCODEC),y)
+VLC_DEPENDENCIES += ffmpeg
+VLC_CONF_OPT += --enable-avcodec --enable-avformat
+VLC_CONF_OPT += --$(if $(BR2_PACKAGE_VLC_POSTPROC),en,dis)able-postproc
+VLC_CONF_OPT += --$(if $(BR2_PACKAGE_VLC_SWSCALE),en,dis)able-swscale
+else
+VLC_CONF_OPT += $(foreach i,avcodec avformat postproc swscale,--disable-$i)
+endif
+
+ifeq ($(BR2_PACKAGE_VLC_DBUS),y)
+VLC_DEPENDENCIES += dbus
+VLC_CONF_OPT += --enable-dbus
+else
+VLC_CONF_OPT += --disable-dbus
+endif
+
+ifeq ($(BR2_PACKAGE_VLC_LIBGCRYPT),y)
+VLC_DEPENDENCIES += libgcrypt
+VLC_CONF_OPT += --enable-libgcrypt
+else
+VLC_CONF_OPT += --disable-libgcrypt
+endif
+
+ifeq ($(BR2_PACKAGE_VLC_V4L2),y)
+VLC_DEPENDENCIES += libv4l
+VLC_CONF_OPT += --enable-libv4l2
+else
+VLC_CONF_OPT += --disable-libv4l2
+endif
+
+ifeq ($(BR2_PACKAGE_LUA),y)
+VLC_DEPENDENCIES += lua
+VLC_CONF_OPT += --enable-lua
+else
+VLC_CONF_OPT += --disable-lua
+endif
+
+ifeq ($(BR2_PACKAGE_VLC_XCB),y)
+VLC_DEPENDENCIES += libxcb
+VLC_CONF_OPT += --enable-xcb
+else
+VLC_CONF_OPT += --disable-xcb
+endif
+
+ifeq ($(BR2_PACKAGE_VLC_LIVE555),y)
+VLC_DEPENDENCIES += live555
+VLC_CONF_OPT += --enable-live555
+else
+VLC_CONF_OPT += --disable-live555
+endif
+
+ifeq ($(BR2_PACKAGE_VLC_LIBX11),y)
+VLC_DEPENDENCIES += xlib_libX11
+VLC_CONF_OPT += --with-x
+else
+VLC_CONF_OPT += --without-x
+endif
+
+ifeq ($(BR2_PACKAGE_VLC_QT4),y)
+VLC_DEPENDENCIES += qt
+VLC_CONF_OPT += --enable-qt4
+else
+VLC_CONF_OPT += --disable-qt4
+endif
+
+ifeq ($(BR2_PACKAGE_VLC_VORBIS),y)
+VLC_DEPENDENCIES += libvorbis
+VLC_CONF_OPT += --enable-vorbis
+else
+VLC_CONF_OPT += --disable-vorbis
+endif
+
+ifeq ($(BR2_PACKAGE_VLC_THEORA),y)
+VLC_DEPENDENCIES += libtheora
+VLC_CONF_OPT += --enable-theora
+else
+VLC_CONF_OPT += --disable-theora
+endif
+
+ifeq ($(BR2_PACKAGE_VLC_SPEEX),y)
+VLC_DEPENDENCIES += speex
+VLC_CONF_OPT += --enable-speex
+else
+VLC_CONF_OPT += --disable-speex
+endif
+
+ifeq ($(BR2_PACKAGE_VLC_FLAC),y)
+VLC_DEPENDENCIES += flac
+VLC_CONF_OPT += --enable-flac
+else
+VLC_CONF_OPT += --disable-flac
+endif
+
+ifeq ($(BR2_PACKAGE_VLC_XV),y)
+VLC_DEPENDENCIES += libxcb xcb-proto xproto_videoproto
+VLC_CONF_OPT += --enable-xvideo
+else
+VLC_CONF_OPT += --disable-xvideo
+endif
+
+ifeq ($(BR2_PACKAGE_VLC_FREETYPE),y)
+VLC_DEPENDENCIES += freetype
+VLC_CONF_OPT += --enable-freetype
+else
+VLC_CONF_OPT += --disable-freetype
+endif
+
+ifeq ($(BR2_PACKAGE_VLC_FAAD),y)
+VLC_DEPENDENCIES += faad2
+VLC_CONF_OPT += --enable-faad
+else
+VLC_CONF_OPT += --disable-faad
+endif
+
+ifeq ($(BR2_PACKAGE_VLC_SVG),y)
+VLC_DEPENDENCIES += librsvg
+VLC_CONF_OPT += --enable-svg
+else
+VLC_CONF_OPT += --disable-svg
+endif
+
+ifeq ($(BR2_PACKAGE_VLC_OGG),y)
+VLC_DEPENDENCIES += libogg
+VLC_CONF_OPT += --enable-ogg
+else
+VLC_CONF_OPT += --disable-ogg
+endif
+
+ifeq ($(BR2_PACKAGE_VLC_MUX_OGG),y)
+VLC_CONF_OPT += --enable-mux_ogg
+else
+VLC_CONF_OPT += --disable-mux_ogg
+endif
+
+ifeq ($(BR2_PACKAGE_VLC_GLX),y)
+VLC_DEPENDENCIES += libxcb xcb-proto xproto_glproto
+VLC_CONF_OPT += --enable-glx
+else
+VLC_CONF_OPT += --disable-glx
+endif
+
+ifeq ($(BR2_PACKAGE_VLC_SQLITE),y)
+VLC_DEPENDENCIES += sqlite
+VLC_CONF_OPT += --enable-sqlite
+else
+VLC_CONF_OPT += --disable-sqlite
+endif
+
+ifeq ($(BR2_PACKAGE_VLC_NCURSES),y)
+VLC_DEPENDENCIES += ncurses
+VLC_CONF_OPT += --enable-ncurses
+else
+VLC_CONF_OPT += --disable-ncurses
+endif
+
+ifeq ($(BR2_PACKAGE_VLC_GVFS),y)
+VLC_DEPENDENCIES += gvfs
+VLC_CONF_OPT += --enable-gnomevfs
+else
+VLC_CONF_OPT += --disable-gnomevfs
+endif
+
+ifeq ($(BR2_PACKAGE_VLC_DVD),y)
+VLC_DEPENDENCIES += libdvdread
+VLC_CONF_OPT += --enable-dvdread
+else
+VLC_CONF_OPT += --disable-dvdread
+endif
+
+ifeq ($(BR2_PACKAGE_VLC_DVDNAV),y)
+VLC_DEPENDENCIES += libdvdnav
+VLC_CONF_OPT += --enable-dvdnav
+else
+VLC_CONF_OPT += --disable-dvdnav
+endif
+
+ifeq ($(BR2_PACKAGE_VLC_GNUTLS),y)
+VLC_DEPENDENCIES += gnutls
+VLC_CONF_OPT += --enable-gnutls
+else
+VLC_CONF_OPT += --disable-gnutls
+endif
+
+ifeq ($(BR2_PACKAGE_VLC_LIBMPEG2),y)
+VLC_DEPENDENCIES += libmpeg2
+VLC_CONF_OPT += --enable-libmpeg2
+else
+VLC_CONF_OPT += --disable-libmpeg2
+endif
+
+ifeq ($(BR2_PACKAGE_VLC_LIBXML2),y)
+VLC_DEPENDENCIES += libxml2
+VLC_CONF_OPT += --enable-libxml2
+else
+VLC_CONF_OPT += --disable-libxml2
+endif
+
+ifeq ($(BR2_PACKAGE_VLC_PULSE),y)
+VLC_DEPENDENCIES += pulseaudio
+VLC_CONF_OPT += --enable-pulse
+else
+VLC_CONF_OPT += --disable-pulse
+endif
+
+ifeq ($(BR2_PACKAGE_VLC_SAMPLERATE),y)
+VLC_DEPENDENCIES += libsamplerate
+VLC_CONF_OPT += --enable-samplerate
+else
+VLC_CONF_OPT += --disable-samplerate
+endif
+
+ifeq ($(BR2_PACKAGE_VLC_TAGLIB),y)
+VLC_DEPENDENCIES += taglib
+VLC_CONF_OPT += --enable-taglib
+else
+VLC_CONF_OPT += --disable-taglib
+endif
+
+ifeq ($(BR2_PACKAGE_VLC_BONJOUR),y)
+VLC_DEPENDENCIES += avahi
+VLC_CONF_OPT += --enable-bonjour
+else
+VLC_CONF_OPT += --disable-bonjour
+endif
+
+ifeq ($(BR2_PACKAGE_VLC_UDEV),y)
+VLC_DEPENDENCIES += udev
+VLC_CONF_OPT += --enable-udev
+else
+VLC_CONF_OPT += --disable-udev
+endif
+
+ifeq ($(BR2_PACKAGE_VLC_UPNP),y)
+VLC_DEPENDENCIES += libupnp
+VLC_CONF_OPT += --enable-upnp
+else
+VLC_CONF_OPT += --disable-upnp
+endif
+
+ifeq ($(BR2_PACKAGE_VLC_SMB),y)
+VLC_DEPENDENCIES += samba
+VLC_CONF_OPT += --enable-smb
+else
+VLC_CONF_OPT += --disable-smb
+endif
+
+ifeq ($(BR2_PACKAGE_VLC_OPENCV),y)
+VLC_DEPENDENCIES += opencv
+VLC_CONF_OPT += --enable-opencv
+else
+VLC_CONF_OPT += --disable-opencv
+endif
+
+VLC_CONF_OPT += --$(if $(BR2_PACKAGE_VLC_LOWMEM),en,dis)able-optimize-memory
+VLC_CONF_OPT += --$(if $(BR2_PACKAGE_VLC_SOUT),en,dis)able-sout
+VLC_CONF_OPT += --$(if $(BR2_PACKAGE_VLC_HTTPD),en,dis)able-httpd
+VLC_CONF_OPT += --$(if $(BR2_PACKAGE_VLC_VLM),en,dis)able-vlm
+VLC_CONF_OPT += --$(if $(BR2_PACKAGE_VLC_SCREEN),en,dis)able-screen
+VLC_CONF_OPT += --$(if $(BR2_PACKAGE_VLC_VCD),en,dis)able-vcd
+VLC_CONF_OPT += --$(if $(BR2_PACKAGE_VLC_VISUAL),en,dis)able-visual
+VLC_CONF_OPT += --$(if $(BR2_PACKAGE_VLC_ATMO),en,dis)able-atmo
+VLC_CONF_OPT += --$(if $(BR2_PACKAGE_VLC_OSS),en,dis)able-oss
+VLC_CONF_OPT += --$(if $(BR2_PACKAGE_VLC_FRONTEND),en,dis)able-vlc
+VLC_CONF_OPT += --$(if $(BR2_PACKAGE_VLC_XOSD),en,dis)able-xosd
+VLC_CONF_OPT += --$(if $(BR2_PACKAGE_VLC_FBOSD),en,dis)able-fbosd
+VLC_CONF_OPT += --$(if $(BR2_PACKAGE_VLC_PVR),en,dis)able-pvr
+VLC_CONF_OPT += --$(if $(BR2_PACKAGE_VLC_MEDIALIB),en,dis)able-media-library
+
+ifeq ($(call qstrip,$(BR2_GCC_TARGET_ARCH)),armv7-a)
+VLC_CONF_OPT += --enable-neon
+else
+VLC_CONF_OPT += --disable-neon
+endif
+
+# The configure script fails to detect vasprintf on uClibc.
+VLC_POST_CONFIGURE_HOOKS += VLC_FIX_CONF
+define VLC_FIX_CONF
+	$(SED) '1i#define HAVE_VASPRINTF 1' $(@D)/config.h
+endef
+
+# The following rmoves the relink_command. If not removed, libtool tries to
+# relink against the host libraries, instead of the sysroot.
+VLC_POST_BUILD_HOOKS += VLC_FIX_LA_FILES
+define VLC_FIX_LA_FILES
+	find $(@D) -name '*.la' -exec $(SED) '/^relink_command=/d' '{}' +
+	touch $(@D)/modules/access/zip/libzip_plugin.la \
+		$(@D)/modules/misc/liblogger_plugin.la
+endef
+
+$(eval $(call AUTOTARGETS))