diff mbox

[v5,04/36] package/efl/libefl: new package

Message ID 1445720476-21517-5-git-send-email-romain.naour@openwide.fr
State Changes Requested
Headers show

Commit Message

Romain Naour Oct. 24, 2015, 9 p.m. UTC
Add the libefl package which contains an updated version of the following
libraries:
libecore, libedje, libeet, libfreet, libeina, libeio, libembryo, libthumb
and libevas. It also contains eldbus, ephysics, and escape, see [1].

For now, the bump to efl 1.15.x is not complete.
This allows to build at least a default configuration whithout X11 support
or graphics acceleration.
This support will be added by a follow up patches in the series.

Also, add BR2_PACKAGE_LIBEFL_RECOMMENDED_CONFIG config option in order to
select all recommended packages that allows to build efl-core whithout the
extra-long --enable-i-really-know-what-i-am-doing...

At the end of the configure script, the summary tab will show that
alsa support is allways disabled even if alsa-utils has been build
before efl-core package.

"Ecore_Audio.....: yes (-alsa +pulseaudio +sndfile)"
This is intentional.

An initial runtime test has been done under Qemu with a glibc x86 toolchain.

An additional runtime test has been done with a uClibc-ng 1.0.5 toolchain
patched with [2] in order to add mkstemps() which is used by Eina library.
This patch has been upstreamed in uClubc-ng 1.0.6 release.

Another test has been done with a musl toolchain by Vicente Bergas (Thanks!)

Add a dependency on threads support since clearly efl libraries are
not even built without thread support [3].

[1] See https://phab.enlightenment.org/phame/live/3/post/efl_1_8/
[2] http://mailman.uclibc-ng.org/pipermail/devel/2015-August/000432.html
[3] https://git.enlightenment.org/core/efl.git/tree/configure.ac#n5032

Signed-off-by: Romain Naour <romain.naour@openwide.fr>
Cc: Vicente Bergas <vicencb@gmail.com>
---
v4: rename to libefl
    EFL needs a toolchain with threads support
v3: fix same typo again
    Add a note about multisense support
v2: remove glibc only dependency
    update commit log accordingly
    fix typo in Config.in (Vicente Bergas)

Vicente, can you test this new series and resend your Tested-By tag ? Thanks !
---
 package/efl/Config.in        |  16 +++--
 package/efl/libefl/Config.in |  65 +++++++++++++++++
 package/efl/libefl/libefl.mk | 161 +++++++++++++++++++++++++++++++++++++++++++
 3 files changed, 237 insertions(+), 5 deletions(-)
 create mode 100644 package/efl/libefl/Config.in

Comments

Yann E. MORIN Oct. 25, 2015, 1:55 p.m. UTC | #1
Romain, All,

On 2015-10-24 23:00 +0200, Romain Naour spake thusly:
> Add the libefl package which contains an updated version of the following
> libraries:
> libecore, libedje, libeet, libfreet, libeina, libeio, libembryo, libthumb
> and libevas. It also contains eldbus, ephysics, and escape, see [1].
> 
> For now, the bump to efl 1.15.x is not complete.
> This allows to build at least a default configuration whithout X11 support
> or graphics acceleration.
> This support will be added by a follow up patches in the series.
> 
> Also, add BR2_PACKAGE_LIBEFL_RECOMMENDED_CONFIG config option in order to
> select all recommended packages that allows to build efl-core whithout the
> extra-long --enable-i-really-know-what-i-am-doing...
> 
> At the end of the configure script, the summary tab will show that
> alsa support is allways disabled even if alsa-utils has been build
> before efl-core package.
> 
> "Ecore_Audio.....: yes (-alsa +pulseaudio +sndfile)"
> This is intentional.
> 
> An initial runtime test has been done under Qemu with a glibc x86 toolchain.
> 
> An additional runtime test has been done with a uClibc-ng 1.0.5 toolchain
> patched with [2] in order to add mkstemps() which is used by Eina library.
> This patch has been upstreamed in uClubc-ng 1.0.6 release.
> 
> Another test has been done with a musl toolchain by Vicente Bergas (Thanks!)
> 
> Add a dependency on threads support since clearly efl libraries are
> not even built without thread support [3].
> 
> [1] See https://phab.enlightenment.org/phame/live/3/post/efl_1_8/
> [2] http://mailman.uclibc-ng.org/pipermail/devel/2015-August/000432.html
> [3] https://git.enlightenment.org/core/efl.git/tree/configure.ac#n5032
> 
> Signed-off-by: Romain Naour <romain.naour@openwide.fr>
> Cc: Vicente Bergas <vicencb@gmail.com>
> ---
> v4: rename to libefl
>     EFL needs a toolchain with threads support
> v3: fix same typo again
>     Add a note about multisense support
> v2: remove glibc only dependency
>     update commit log accordingly
>     fix typo in Config.in (Vicente Bergas)
> 
> Vicente, can you test this new series and resend your Tested-By tag ? Thanks !
> ---
>  package/efl/Config.in        |  16 +++--
>  package/efl/libefl/Config.in |  65 +++++++++++++++++
>  package/efl/libefl/libefl.mk | 161 +++++++++++++++++++++++++++++++++++++++++++
>  3 files changed, 237 insertions(+), 5 deletions(-)
>  create mode 100644 package/efl/libefl/Config.in
> 
> diff --git a/package/efl/Config.in b/package/efl/Config.in
> index 7ce5a36..2860cd6 100644
> --- a/package/efl/Config.in
> +++ b/package/efl/Config.in
> @@ -1,8 +1,12 @@
>  menuconfig BR2_PACKAGE_EFL
>  	bool "Enlightenment Foundation Libraries"
> -	depends on BR2_USE_WCHAR
> -	# libeina uses madvise(). To revisit when bumping EFL to 1.8
> -	depends on BR2_USE_MMU
> +	depends on BR2_INSTALL_LIBSTDCPP # libefl
> +	depends on BR2_PACKAGE_HAS_UDEV # libefl -> libudev
> +	depends on BR2_TOOLCHAIN_HAS_THREADS # libefl
> +	depends on BR2_USE_MMU # libefl
> +	depends on BR2_USE_WCHAR # libefl
> +	depends on !BR2_STATIC_LIBS # libefl
> +	select BR2_PACKAGE_LIBEFL
>  	help
>  	  Enlightenment Foundation Libraries
>  
> @@ -13,6 +17,7 @@ if BR2_PACKAGE_EFL
>  source "package/efl/libeina/Config.in"
>  source "package/efl/libecore/Config.in"
>  source "package/efl/libeet/Config.in"
> +source "package/efl/libefl/Config.in"
>  source "package/efl/libefreet/Config.in"
>  source "package/efl/libeio/Config.in"
>  source "package/efl/libevas/Config.in"
> @@ -24,5 +29,6 @@ source "package/efl/libedbus/Config.in"
>  
>  endif # BR2_PACKAGE_EFL
>  
> -comment "EFL needs a toolchain w/ wchar"
> -	depends on !BR2_USE_WCHAR
> +comment "EFL needs udev /dev management and a toolchain w/ C++, dynamic library, threads, wchar"
> +	depends on !BR2_PACKAGE_HAS_UDEV || !BR2_INSTALL_LIBSTDCPP || BR2_STATIC_LIBS || !BR2_TOOLCHAIN_HAS_THREADS || !BR2_USE_WCHAR

Please, split this very long line...

> +	depends on BR2_USE_MMU
> diff --git a/package/efl/libefl/Config.in b/package/efl/libefl/Config.in
> new file mode 100644
> index 0000000..2b758f0
> --- /dev/null
> +++ b/package/efl/libefl/Config.in
> @@ -0,0 +1,65 @@
> +config BR2_PACKAGE_LIBEFL
> +	bool "libefl"
> +	depends on BR2_INSTALL_LIBSTDCPP
> +	depends on BR2_PACKAGE_HAS_UDEV # libudev
> +	depends on BR2_TOOLCHAIN_HAS_THREADS # untested without threads
> +	depends on BR2_USE_MMU
> +	depends on BR2_USE_WCHAR # use wchar_t
> +	depends on !BR2_STATIC_LIBS # dlfcn.h
> +	select BR2_PACKAGE_DBUS
> +	select BR2_PACKAGE_FREETYPE
> +	select BR2_PACKAGE_JPEG # Emile needs libjpeg
> +	select BR2_PACKAGE_LUA # Evas lua 5.1 or 5.2

You can not select Lua, as it is a provider of the virtual package
luainterpreter: it is not alowed to select the provider of a virtual
package, see the manual:
    http://buildroot.org/downloads/manual/manual.html#_notes_on_depending_on_a_specific_provider

    If your package really requires a specific provider, then you’ll
    have to make your package depends on this provider; you can not
    select a provider.

You'll have to make libefl (and efl) both depend on BR2_PACKAGE_LUA.

That's unfortunate, but the manual has explanations on why this is so.

> +	help
> +	  Enlightenment Foundation Libraries
> +
> +	  https://enlightenment.org
> +
> +if BR2_PACKAGE_LIBEFL
> +
> +config BR2_PACKAGE_LIBEFL_RECOMMENDED_CONFIG
> +	bool "Use recommended and tested configurations"
> +	select BR2_PACKAGE_BULLET
> +	select BR2_PACKAGE_FONTCONFIG
> +	select BR2_PACKAGE_GSTREAMER1
> +	select BR2_PACKAGE_GST1_PLUGINS_BASE
> +	select BR2_PACKAGE_LIBFRIBIDI
> +	select BR2_PACKAGE_LIBSNDFILE
> +	select BR2_PACKAGE_PULSEAUDIO

You forgot to propagate P.A.'s dependency on BR2_ARCH_HAS_ATOMICS.

> +	select BR2_PACKAGE_UTIL_LINUX
> +	select BR2_PACKAGE_UTIL_LINUX_LIBMOUNT
> +	default y
> +	help
> +	  Avoid to use untested or not recommended configurations,
> +	  otherwise we need to add a very long and obscure option
> +	  to start the build.

No need to explain the nitty-gritty implementation details on why this
is so. Just state something like:

    Enable the basic set of recommended features.

    Without that, the EFL developpers consider the build to be
    potentially broken and won't provide any support for it.

    This turns on the following features:

      - util-linux' libmount: Libmount is used heavily inside Eeze for
        support of removable devices etc... and disabling this will hurt
        support for Enlightenment and its filemanager.

      - fontconfig: If fontconfig is disabled, this is going to make
        general font searching not work, and only some very direct 'load
        /path/file.ttf' will work alongside some old-school ttf file
        path searching. This is very likely not what you want, so highly
        reconsider turning fontconfig off. Having it off will lead to
        visual problems like missing text in many UI areas etc...

And so on, you get the idea. ;-)

Drop the corresponding comment in the .mk file. It is better to thave
those comments in the Config.in, so the user can actually see them and
act accordingly.

[--SNIP--]
> diff --git a/package/efl/libefl/libefl.mk b/package/efl/libefl/libefl.mk
> index 4dca733..781f397 100644
> --- a/package/efl/libefl/libefl.mk
> +++ b/package/efl/libefl/libefl.mk
> @@ -11,6 +11,167 @@ LIBEFL_SITE = http://download.enlightenment.org/rel/libs/efl
>  LIBEFL_LICENSE = BSD-2c, LGPLv2.1+, GPLv2+
>  LIBEFL_LICENSE_FILES = COPYING
>  
> +LIBEFL_INSTALL_STAGING = YES
> +
> +LIBEFL_DEPENDENCIES = host-pkgconf host-libefl dbus freetype jpeg lua udev zlib
> +
> +# Configure options:
> +# --disable-cxx-bindings: disable C++11 bindings.
> +# --enable-lua-old: disable Elua and remove luajit dependency.
> +# --with-x11=none: remove dependency on X.org.
> +LIBEFL_CONF_OPTS = \
> +	--with-edje-cc=$(HOST_DIR)/usr/bin/edje_cc \
> +	--with-eolian-gen=$(HOST_DIR)/usr/bin/eolian_gen \
> +	--disable-cxx-bindings \
> +	--enable-lua-old \
> +	--with-x11=none
> +
> +# Disable untested configuration warning.
> +ifeq ($(BR2_PACKAGE_LIBEFL_RECOMMENDED_CONFIG),)
> +LIBEFL_CONF_OPTS += --enable-i-really-know-what-i-am-doing-and-that-this-will-probably-break-things-and-i-will-fix-them-myself-and-send-patches-aba
> +endif
> +
> +# Libmount is used heavily inside Eeze for support of removable devices etc.
> +# and disabling this will hurt support for Enlightenment and its filemanager.
> +ifeq ($(BR2_PACKAGE_UTIL_LINUX_LIBMOUNT),y)
> +LIBEFL_DEPENDENCIES += util-linux
> +LIBEFL_CONF_OPTS += --enable-libmount
> +else
> +LIBEFL_CONF_OPTS += --disable-libmount
> +endif
> +
> +# If fontconfig is disabled, this is going to make general font
> +# searching not work, and only some very direct 'load /path/file.ttf'
> +# will work alongside some old-school ttf file path searching. This
> +# is very likely not what you want, so highly reconsider turning
> +# fontconfig off. Having it off will lead to visual problems like
> +# missing text in many UI areas etc.
> +ifeq ($(BR2_PACKAGE_FONTCONFIG),y)
> +LIBEFL_CONF_OPTS += --enable-fontconfig
> +LIBEFL_DEPENDENCIES += fontconfig
> +else
> +LIBEFL_CONF_OPTS += --disable-fontconfig
> +endif
> +
> +# Fribidi is used for handling right-to-left text (like Arabic,
> +# Hebrew, Farsi, Persian etc.) and is very likely not a feature
> +# you want to disable unless you know for absolute certain you
> +# will never encounter and have to display such scripts. Also
> +# note that we don't test with fribidi disabled so you may also
> +# trigger code paths with bugs that are never normally used.
> +ifeq ($(BR2_PACKAGE_LIBFRIBIDI),y)
> +LIBEFL_CONF_OPTS += --enable-fribidi
> +LIBEFL_DEPENDENCIES += libfribidi
> +else
> +LIBEFL_CONF_OPTS += --disable-fribidi
> +endif
> +
> +# If Gstreamer 1.x support is disabled, it will heavily limit your media
> +# support options and render some functionality as useless, leading to
> +# visible application bugs.
> +ifeq ($(BR2_PACKAGE_GSTREAMER1)$(BR2_PACKAGE_GST1_PLUGINS_BASE),yy)
> +LIBEFL_CONF_OPTS += --enable-gstreamer1
> +LIBEFL_DEPENDENCIES += gstreamer1 gst1-plugins-base
> +else
> +LIBEFL_CONF_OPTS += --disable-gstreamer1
> +endif
> +
> +# You have chosen to disable physics support. This disables lots of
> +# core functionality and is effectively never tested. You are going
> +# to find features that suddenly don't work and as a result cause
> +# a series of breakages. This is simply not tested so you are on
> +# your own in terms of ensuring everything works if you do this
> +ifeq ($(BR2_PACKAGE_BULLET),y)
> +LIBEFL_CONF_OPTS += --enable-physics
> +LIBEFL_DEPENDENCIES += bullet
> +else
> +LIBEFL_CONF_OPTS += --disable-physics
> +endif
> +
> +# You disabled audio support in Ecore. This is not tested and may
> +# Create bugs for you due to it creating untested code paths.
> +# Reconsider disabling audio.
> +ifeq ($(BR2_PACKAGE_LIBSNDFILE),y)
> +LIBEFL_CONF_OPTS += --enable-audio
> +LIBEFL_DEPENDENCIES += libsndfile
> +else
> +LIBEFL_CONF_OPTS += --disable-audio
> +endif
> +
> +# The only audio output method supported by Ecore right now is via
> +# Pulseaudio. You have disabled that and likely have broken a whole
> +# bunch of things in the process. Reconsider your configure options.
> +# NOTE: multisense support is automatically enabled with pulseaudio.
> +ifeq ($(BR2_PACKAGE_PULSEAUDIO),y)
> +LIBEFL_CONF_OPTS += --enable-pulseaudio
> +LIBEFL_DEPENDENCIES += pulseaudio
> +else
> +LIBEFL_CONF_OPTS += --disable-pulseaudio
> +endif

As I previously suggested, move all the above comments to the Config.in
file, to help user make an enlighted (muahahaha!) decision.

> +# There is no alsa support yet in Ecore_Audio.
> +# configure will disable alsa support even if alsa-lib is selected.

So what? Having this comment stand alone is not much use. You should
probably add "LIBEFL_CONF_OPTS += --disable-alsa", then, no?

> +ifeq ($(BR2_PACKAGE_TSLIB),y)
> +LIBEFL_DEPENDENCIES += tslib
> +LIBEFL_CONF_OPTS += --enable-tslib
> +else
> +LIBEFL_CONF_OPTS += --disable-tslib
> +endif
> +
> +ifeq ($(BR2_PACKAGE_LIBGLIB2),y)
> +LIBEFL_DEPENDENCIES += libglib2
> +# we can also say "always"

Useless comment, drop it.

> +LIBEFL_CONF_OPTS += --with-glib=yes
> +else
> +LIBEFL_CONF_OPTS += --with-glib=no
> +endif
> +
> +# Prefer openssl (the default) over gnutls.
> +ifeq ($(BR2_PACKAGE_OPENSSL),y)
> +LIBEFL_DEPENDENCIES += openssl
> +LIBEFL_CONF_OPTS += --with-crypto=openssl
> +else
> +ifeq ($(BR2_PACKAGE_GNUTLS)$(BR2_PACKAGE_LIBGCRYPT),yy)

use the else ifeq construct rather than nested if-blocks, ...

> +LIBEFL_DEPENDENCIES += gnutls libgcrypt
> +LIBEFL_CONF_OPTS += --with-crypto=gnutls \
> +	--with-libgcrypt-prefix=$(STAGING_DIR)/usr
> +else
> +LIBEFL_CONF_OPTS += --with-crypto=none
> +endif
> +endif # BR2_PACKAGE_OPENSSL

.. you'll gain one endif here.

> +# image loader: handle only loaders that requires dependencies.
> +# All other loaders are builded by default statically.
> +ifeq ($(BR2_PACKAGE_LIBEFL_PNG),y)
> +LIBEFL_CONF_OPTS += --enable-image-loader-png=yes
> +LIBEFL_DEPENDENCIES += libpng
> +else
> +LIBEFL_CONF_OPTS += --enable-image-loader-png=no
> +endif
> +
> +ifeq ($(BR2_PACKAGE_LIBEFL_JPEG),y)
> +LIBEFL_CONF_OPTS += --enable-image-loader-jpeg=yes

Maybe add a comment that the 'jpeg' dependency is already covered as a
global dependency of libefl. Otherwise, it is strange to not see it here
(I only remembered it because I previously checked if the dependencies
of jpeg were prorerly propagated).

Regards,
Yann E. MORIN.

> +else
> +LIBEFL_CONF_OPTS += --enable-image-loader-jpeg=no
> +endif
> +
> +ifeq ($(BR2_PACKAGE_LIBEFL_GIF),y)
> +LIBEFL_CONF_OPTS += --enable-image-loader-gif=yes
> +LIBEFL_DEPENDENCIES += giflib
> +else
> +LIBEFL_CONF_OPTS += --enable-image-loader-gif=no
> +endif
> +
> +ifeq ($(BR2_PACKAGE_LIBEFL_TIFF),y)
> +LIBEFL_CONF_OPTS += --enable-image-loader-tiff=yes
> +LIBEFL_DEPENDENCIES += tiff
> +else
> +LIBEFL_CONF_OPTS += --enable-image-loader-tiff=no
> +endif
> +
> +$(eval $(autotools-package))
> +
>  ################################################################################
>  #
>  # host-libefl
> -- 
> 2.4.3
> 
> _______________________________________________
> buildroot mailing list
> buildroot@busybox.net
> http://lists.busybox.net/mailman/listinfo/buildroot
Romain Naour Oct. 26, 2015, 9:53 p.m. UTC | #2
Hi Yann, All,

Le 25/10/2015 14:55, Yann E. MORIN a écrit :
> Romain, All,
> 
> On 2015-10-24 23:00 +0200, Romain Naour spake thusly:
>> Add the libefl package which contains an updated version of the following
>> libraries:
>> libecore, libedje, libeet, libfreet, libeina, libeio, libembryo, libthumb
>> and libevas. It also contains eldbus, ephysics, and escape, see [1].
>>
>> For now, the bump to efl 1.15.x is not complete.
>> This allows to build at least a default configuration whithout X11 support
>> or graphics acceleration.
>> This support will be added by a follow up patches in the series.
>>
>> Also, add BR2_PACKAGE_LIBEFL_RECOMMENDED_CONFIG config option in order to
>> select all recommended packages that allows to build efl-core whithout the
>> extra-long --enable-i-really-know-what-i-am-doing...
>>
>> At the end of the configure script, the summary tab will show that
>> alsa support is allways disabled even if alsa-utils has been build
>> before efl-core package.
>>
>> "Ecore_Audio.....: yes (-alsa +pulseaudio +sndfile)"
>> This is intentional.
>>
>> An initial runtime test has been done under Qemu with a glibc x86 toolchain.
>>
>> An additional runtime test has been done with a uClibc-ng 1.0.5 toolchain
>> patched with [2] in order to add mkstemps() which is used by Eina library.
>> This patch has been upstreamed in uClubc-ng 1.0.6 release.
>>
>> Another test has been done with a musl toolchain by Vicente Bergas (Thanks!)
>>
>> Add a dependency on threads support since clearly efl libraries are
>> not even built without thread support [3].
>>
>> [1] See https://phab.enlightenment.org/phame/live/3/post/efl_1_8/
>> [2] http://mailman.uclibc-ng.org/pipermail/devel/2015-August/000432.html
>> [3] https://git.enlightenment.org/core/efl.git/tree/configure.ac#n5032
>>
>> Signed-off-by: Romain Naour <romain.naour@openwide.fr>
>> Cc: Vicente Bergas <vicencb@gmail.com>
>> ---
>> v4: rename to libefl
>>     EFL needs a toolchain with threads support
>> v3: fix same typo again
>>     Add a note about multisense support
>> v2: remove glibc only dependency
>>     update commit log accordingly
>>     fix typo in Config.in (Vicente Bergas)
>>
>> Vicente, can you test this new series and resend your Tested-By tag ? Thanks !
>> ---
>>  package/efl/Config.in        |  16 +++--
>>  package/efl/libefl/Config.in |  65 +++++++++++++++++
>>  package/efl/libefl/libefl.mk | 161 +++++++++++++++++++++++++++++++++++++++++++
>>  3 files changed, 237 insertions(+), 5 deletions(-)
>>  create mode 100644 package/efl/libefl/Config.in
>>
>> diff --git a/package/efl/Config.in b/package/efl/Config.in
>> index 7ce5a36..2860cd6 100644
>> --- a/package/efl/Config.in
>> +++ b/package/efl/Config.in
>> @@ -1,8 +1,12 @@
>>  menuconfig BR2_PACKAGE_EFL
>>  	bool "Enlightenment Foundation Libraries"
>> -	depends on BR2_USE_WCHAR
>> -	# libeina uses madvise(). To revisit when bumping EFL to 1.8
>> -	depends on BR2_USE_MMU
>> +	depends on BR2_INSTALL_LIBSTDCPP # libefl
>> +	depends on BR2_PACKAGE_HAS_UDEV # libefl -> libudev
>> +	depends on BR2_TOOLCHAIN_HAS_THREADS # libefl
>> +	depends on BR2_USE_MMU # libefl
>> +	depends on BR2_USE_WCHAR # libefl
>> +	depends on !BR2_STATIC_LIBS # libefl
>> +	select BR2_PACKAGE_LIBEFL
>>  	help
>>  	  Enlightenment Foundation Libraries
>>  
>> @@ -13,6 +17,7 @@ if BR2_PACKAGE_EFL
>>  source "package/efl/libeina/Config.in"
>>  source "package/efl/libecore/Config.in"
>>  source "package/efl/libeet/Config.in"
>> +source "package/efl/libefl/Config.in"
>>  source "package/efl/libefreet/Config.in"
>>  source "package/efl/libeio/Config.in"
>>  source "package/efl/libevas/Config.in"
>> @@ -24,5 +29,6 @@ source "package/efl/libedbus/Config.in"
>>  
>>  endif # BR2_PACKAGE_EFL
>>  
>> -comment "EFL needs a toolchain w/ wchar"
>> -	depends on !BR2_USE_WCHAR
>> +comment "EFL needs udev /dev management and a toolchain w/ C++, dynamic library, threads, wchar"
>> +	depends on !BR2_PACKAGE_HAS_UDEV || !BR2_INSTALL_LIBSTDCPP || BR2_STATIC_LIBS || !BR2_TOOLCHAIN_HAS_THREADS || !BR2_USE_WCHAR
> 
> Please, split this very long line...

Ok, but...

> 
>> +	depends on BR2_USE_MMU
>> diff --git a/package/efl/libefl/Config.in b/package/efl/libefl/Config.in
>> new file mode 100644
>> index 0000000..2b758f0
>> --- /dev/null
>> +++ b/package/efl/libefl/Config.in
>> @@ -0,0 +1,65 @@
>> +config BR2_PACKAGE_LIBEFL
>> +	bool "libefl"
>> +	depends on BR2_INSTALL_LIBSTDCPP
>> +	depends on BR2_PACKAGE_HAS_UDEV # libudev
>> +	depends on BR2_TOOLCHAIN_HAS_THREADS # untested without threads
>> +	depends on BR2_USE_MMU
>> +	depends on BR2_USE_WCHAR # use wchar_t
>> +	depends on !BR2_STATIC_LIBS # dlfcn.h
>> +	select BR2_PACKAGE_DBUS
>> +	select BR2_PACKAGE_FREETYPE
>> +	select BR2_PACKAGE_JPEG # Emile needs libjpeg
>> +	select BR2_PACKAGE_LUA # Evas lua 5.1 or 5.2
> 
> You can not select Lua, as it is a provider of the virtual package
> luainterpreter: it is not alowed to select the provider of a virtual
> package, see the manual:
>     http://buildroot.org/downloads/manual/manual.html#_notes_on_depending_on_a_specific_provider
> 
>     If your package really requires a specific provider, then you’ll
>     have to make your package depends on this provider; you can not
>     select a provider.
> 
> You'll have to make libefl (and efl) both depend on BR2_PACKAGE_LUA.
> 
> That's unfortunate, but the manual has explanations on why this is so.

...the comments line start to be very long, should I do something like:

comment "EFL needs Lua, udev /dev management and a toolchain w/ C++, dynamic library, threads, wchar"
	depends on !BR2_PACKAGE_LUA || !BR2_PACKAGE_HAS_UDEV || !BR2_INSTALL_LIBSTDCPP \
		|| BR2_STATIC_LIBS  || !BR2_TOOLCHAIN_HAS_THREADS || !BR2_USE_WCHAR
	depends on BR2_USE_MMU

> 
>> +	help
>> +	  Enlightenment Foundation Libraries
>> +
>> +	  https://enlightenment.org
>> +
>> +if BR2_PACKAGE_LIBEFL
>> +
>> +config BR2_PACKAGE_LIBEFL_RECOMMENDED_CONFIG
>> +	bool "Use recommended and tested configurations"
>> +	select BR2_PACKAGE_BULLET
>> +	select BR2_PACKAGE_FONTCONFIG
>> +	select BR2_PACKAGE_GSTREAMER1
>> +	select BR2_PACKAGE_GST1_PLUGINS_BASE
>> +	select BR2_PACKAGE_LIBFRIBIDI
>> +	select BR2_PACKAGE_LIBSNDFILE
>> +	select BR2_PACKAGE_PULSEAUDIO
> 
> You forgot to propagate P.A.'s dependency on BR2_ARCH_HAS_ATOMICS.

OK

> 
>> +	select BR2_PACKAGE_UTIL_LINUX
>> +	select BR2_PACKAGE_UTIL_LINUX_LIBMOUNT
>> +	default y
>> +	help
>> +	  Avoid to use untested or not recommended configurations,
>> +	  otherwise we need to add a very long and obscure option
>> +	  to start the build.
> 
> No need to explain the nitty-gritty implementation details on why this
> is so. Just state something like:
> 
>     Enable the basic set of recommended features.
> 
>     Without that, the EFL developpers consider the build to be
>     potentially broken and won't provide any support for it.
> 
>     This turns on the following features:
> 
>       - util-linux' libmount: Libmount is used heavily inside Eeze for
>         support of removable devices etc... and disabling this will hurt
>         support for Enlightenment and its filemanager.
> 
>       - fontconfig: If fontconfig is disabled, this is going to make
>         general font searching not work, and only some very direct 'load
>         /path/file.ttf' will work alongside some old-school ttf file
>         path searching. This is very likely not what you want, so highly
>         reconsider turning fontconfig off. Having it off will lead to
>         visual problems like missing text in many UI areas etc...
> 
> And so on, you get the idea. ;-)
> 
> Drop the corresponding comment in the .mk file. It is better to thave
> those comments in the Config.in, so the user can actually see them and
> act accordingly.

Ok, done.

> 
> [--SNIP--]
>> diff --git a/package/efl/libefl/libefl.mk b/package/efl/libefl/libefl.mk
>> index 4dca733..781f397 100644
>> --- a/package/efl/libefl/libefl.mk
>> +++ b/package/efl/libefl/libefl.mk
>> @@ -11,6 +11,167 @@ LIBEFL_SITE = http://download.enlightenment.org/rel/libs/efl
>>  LIBEFL_LICENSE = BSD-2c, LGPLv2.1+, GPLv2+
>>  LIBEFL_LICENSE_FILES = COPYING
>>  
>> +LIBEFL_INSTALL_STAGING = YES
>> +
>> +LIBEFL_DEPENDENCIES = host-pkgconf host-libefl dbus freetype jpeg lua udev zlib
>> +
>> +# Configure options:
>> +# --disable-cxx-bindings: disable C++11 bindings.
>> +# --enable-lua-old: disable Elua and remove luajit dependency.
>> +# --with-x11=none: remove dependency on X.org.
>> +LIBEFL_CONF_OPTS = \
>> +	--with-edje-cc=$(HOST_DIR)/usr/bin/edje_cc \
>> +	--with-eolian-gen=$(HOST_DIR)/usr/bin/eolian_gen \
>> +	--disable-cxx-bindings \
>> +	--enable-lua-old \
>> +	--with-x11=none
>> +
>> +# Disable untested configuration warning.
>> +ifeq ($(BR2_PACKAGE_LIBEFL_RECOMMENDED_CONFIG),)
>> +LIBEFL_CONF_OPTS += --enable-i-really-know-what-i-am-doing-and-that-this-will-probably-break-things-and-i-will-fix-them-myself-and-send-patches-aba
>> +endif
>> +
>> +# Libmount is used heavily inside Eeze for support of removable devices etc.
>> +# and disabling this will hurt support for Enlightenment and its filemanager.
>> +ifeq ($(BR2_PACKAGE_UTIL_LINUX_LIBMOUNT),y)
>> +LIBEFL_DEPENDENCIES += util-linux
>> +LIBEFL_CONF_OPTS += --enable-libmount
>> +else
>> +LIBEFL_CONF_OPTS += --disable-libmount
>> +endif
>> +
>> +# If fontconfig is disabled, this is going to make general font
>> +# searching not work, and only some very direct 'load /path/file.ttf'
>> +# will work alongside some old-school ttf file path searching. This
>> +# is very likely not what you want, so highly reconsider turning
>> +# fontconfig off. Having it off will lead to visual problems like
>> +# missing text in many UI areas etc.
>> +ifeq ($(BR2_PACKAGE_FONTCONFIG),y)
>> +LIBEFL_CONF_OPTS += --enable-fontconfig
>> +LIBEFL_DEPENDENCIES += fontconfig
>> +else
>> +LIBEFL_CONF_OPTS += --disable-fontconfig
>> +endif
>> +
>> +# Fribidi is used for handling right-to-left text (like Arabic,
>> +# Hebrew, Farsi, Persian etc.) and is very likely not a feature
>> +# you want to disable unless you know for absolute certain you
>> +# will never encounter and have to display such scripts. Also
>> +# note that we don't test with fribidi disabled so you may also
>> +# trigger code paths with bugs that are never normally used.
>> +ifeq ($(BR2_PACKAGE_LIBFRIBIDI),y)
>> +LIBEFL_CONF_OPTS += --enable-fribidi
>> +LIBEFL_DEPENDENCIES += libfribidi
>> +else
>> +LIBEFL_CONF_OPTS += --disable-fribidi
>> +endif
>> +
>> +# If Gstreamer 1.x support is disabled, it will heavily limit your media
>> +# support options and render some functionality as useless, leading to
>> +# visible application bugs.
>> +ifeq ($(BR2_PACKAGE_GSTREAMER1)$(BR2_PACKAGE_GST1_PLUGINS_BASE),yy)
>> +LIBEFL_CONF_OPTS += --enable-gstreamer1
>> +LIBEFL_DEPENDENCIES += gstreamer1 gst1-plugins-base
>> +else
>> +LIBEFL_CONF_OPTS += --disable-gstreamer1
>> +endif
>> +
>> +# You have chosen to disable physics support. This disables lots of
>> +# core functionality and is effectively never tested. You are going
>> +# to find features that suddenly don't work and as a result cause
>> +# a series of breakages. This is simply not tested so you are on
>> +# your own in terms of ensuring everything works if you do this
>> +ifeq ($(BR2_PACKAGE_BULLET),y)
>> +LIBEFL_CONF_OPTS += --enable-physics
>> +LIBEFL_DEPENDENCIES += bullet
>> +else
>> +LIBEFL_CONF_OPTS += --disable-physics
>> +endif
>> +
>> +# You disabled audio support in Ecore. This is not tested and may
>> +# Create bugs for you due to it creating untested code paths.
>> +# Reconsider disabling audio.
>> +ifeq ($(BR2_PACKAGE_LIBSNDFILE),y)
>> +LIBEFL_CONF_OPTS += --enable-audio
>> +LIBEFL_DEPENDENCIES += libsndfile
>> +else
>> +LIBEFL_CONF_OPTS += --disable-audio
>> +endif
>> +
>> +# The only audio output method supported by Ecore right now is via
>> +# Pulseaudio. You have disabled that and likely have broken a whole
>> +# bunch of things in the process. Reconsider your configure options.
>> +# NOTE: multisense support is automatically enabled with pulseaudio.
>> +ifeq ($(BR2_PACKAGE_PULSEAUDIO),y)
>> +LIBEFL_CONF_OPTS += --enable-pulseaudio
>> +LIBEFL_DEPENDENCIES += pulseaudio
>> +else
>> +LIBEFL_CONF_OPTS += --disable-pulseaudio
>> +endif
> 
> As I previously suggested, move all the above comments to the Config.in
> file, to help user make an enlighted (muahahaha!) decision.

Lol :)

> 
>> +# There is no alsa support yet in Ecore_Audio.
>> +# configure will disable alsa support even if alsa-lib is selected.
> 
> So what? Having this comment stand alone is not much use. You should
> probably add "LIBEFL_CONF_OPTS += --disable-alsa", then, no?

I'll add it to LIBEFL_CONF_OPTS at the top of the mk file.

> 
>> +ifeq ($(BR2_PACKAGE_TSLIB),y)
>> +LIBEFL_DEPENDENCIES += tslib
>> +LIBEFL_CONF_OPTS += --enable-tslib
>> +else
>> +LIBEFL_CONF_OPTS += --disable-tslib
>> +endif
>> +
>> +ifeq ($(BR2_PACKAGE_LIBGLIB2),y)
>> +LIBEFL_DEPENDENCIES += libglib2
>> +# we can also say "always"
> 
> Useless comment, drop it.
ok
> 
>> +LIBEFL_CONF_OPTS += --with-glib=yes
>> +else
>> +LIBEFL_CONF_OPTS += --with-glib=no
>> +endif
>> +
>> +# Prefer openssl (the default) over gnutls.
>> +ifeq ($(BR2_PACKAGE_OPENSSL),y)
>> +LIBEFL_DEPENDENCIES += openssl
>> +LIBEFL_CONF_OPTS += --with-crypto=openssl
>> +else
>> +ifeq ($(BR2_PACKAGE_GNUTLS)$(BR2_PACKAGE_LIBGCRYPT),yy)
> 
> use the else ifeq construct rather than nested if-blocks, ...
> 
>> +LIBEFL_DEPENDENCIES += gnutls libgcrypt
>> +LIBEFL_CONF_OPTS += --with-crypto=gnutls \
>> +	--with-libgcrypt-prefix=$(STAGING_DIR)/usr
>> +else
>> +LIBEFL_CONF_OPTS += --with-crypto=none
>> +endif
>> +endif # BR2_PACKAGE_OPENSSL
> 
> .. you'll gain one endif here.

ok

> 
>> +# image loader: handle only loaders that requires dependencies.
>> +# All other loaders are builded by default statically.
>> +ifeq ($(BR2_PACKAGE_LIBEFL_PNG),y)
>> +LIBEFL_CONF_OPTS += --enable-image-loader-png=yes
>> +LIBEFL_DEPENDENCIES += libpng
>> +else
>> +LIBEFL_CONF_OPTS += --enable-image-loader-png=no
>> +endif
>> +
>> +ifeq ($(BR2_PACKAGE_LIBEFL_JPEG),y)
>> +LIBEFL_CONF_OPTS += --enable-image-loader-jpeg=yes
> 
> Maybe add a comment that the 'jpeg' dependency is already covered as a
> global dependency of libefl. Otherwise, it is strange to not see it here
> (I only remembered it because I previously checked if the dependencies
> of jpeg were prorerly propagated).

ok.

> 
> Regards,
> Yann E. MORIN.
> 
>> +else
>> +LIBEFL_CONF_OPTS += --enable-image-loader-jpeg=no
>> +endif
>> +
>> +ifeq ($(BR2_PACKAGE_LIBEFL_GIF),y)
>> +LIBEFL_CONF_OPTS += --enable-image-loader-gif=yes
>> +LIBEFL_DEPENDENCIES += giflib
>> +else
>> +LIBEFL_CONF_OPTS += --enable-image-loader-gif=no
>> +endif
>> +
>> +ifeq ($(BR2_PACKAGE_LIBEFL_TIFF),y)
>> +LIBEFL_CONF_OPTS += --enable-image-loader-tiff=yes
>> +LIBEFL_DEPENDENCIES += tiff
>> +else
>> +LIBEFL_CONF_OPTS += --enable-image-loader-tiff=no
>> +endif
>> +
>> +$(eval $(autotools-package))
>> +
>>  ################################################################################
>>  #
>>  # host-libefl
>> -- 
>> 2.4.3
>>
>> _______________________________________________
>> buildroot mailing list
>> buildroot@busybox.net
>> http://lists.busybox.net/mailman/listinfo/buildroot
>
Arnout Vandecappelle Oct. 27, 2015, 7:16 p.m. UTC | #3
On 26-10-15 22:53, Romain Naour wrote:
> ...the comments line start to be very long, should I do something like:
> 
> comment "EFL needs Lua, udev /dev management and a toolchain w/ C++, dynamic library, threads, wchar"
> 	depends on !BR2_PACKAGE_LUA || !BR2_PACKAGE_HAS_UDEV || !BR2_INSTALL_LIBSTDCPP \
> 		|| BR2_STATIC_LIBS  || !BR2_TOOLCHAIN_HAS_THREADS || !BR2_USE_WCHAR
> 	depends on BR2_USE_MMU

 In this case, I think it's worthwhile to split it into two comments, one for
lua and udev and another for the toolchain.

 BTW I personally would put lua in lowercase here, because the option in the
menu is also in lowercase.

 Regards,
 Arnout
diff mbox

Patch

diff --git a/package/efl/Config.in b/package/efl/Config.in
index 7ce5a36..2860cd6 100644
--- a/package/efl/Config.in
+++ b/package/efl/Config.in
@@ -1,8 +1,12 @@ 
 menuconfig BR2_PACKAGE_EFL
 	bool "Enlightenment Foundation Libraries"
-	depends on BR2_USE_WCHAR
-	# libeina uses madvise(). To revisit when bumping EFL to 1.8
-	depends on BR2_USE_MMU
+	depends on BR2_INSTALL_LIBSTDCPP # libefl
+	depends on BR2_PACKAGE_HAS_UDEV # libefl -> libudev
+	depends on BR2_TOOLCHAIN_HAS_THREADS # libefl
+	depends on BR2_USE_MMU # libefl
+	depends on BR2_USE_WCHAR # libefl
+	depends on !BR2_STATIC_LIBS # libefl
+	select BR2_PACKAGE_LIBEFL
 	help
 	  Enlightenment Foundation Libraries
 
@@ -13,6 +17,7 @@  if BR2_PACKAGE_EFL
 source "package/efl/libeina/Config.in"
 source "package/efl/libecore/Config.in"
 source "package/efl/libeet/Config.in"
+source "package/efl/libefl/Config.in"
 source "package/efl/libefreet/Config.in"
 source "package/efl/libeio/Config.in"
 source "package/efl/libevas/Config.in"
@@ -24,5 +29,6 @@  source "package/efl/libedbus/Config.in"
 
 endif # BR2_PACKAGE_EFL
 
-comment "EFL needs a toolchain w/ wchar"
-	depends on !BR2_USE_WCHAR
+comment "EFL needs udev /dev management and a toolchain w/ C++, dynamic library, threads, wchar"
+	depends on !BR2_PACKAGE_HAS_UDEV || !BR2_INSTALL_LIBSTDCPP || BR2_STATIC_LIBS || !BR2_TOOLCHAIN_HAS_THREADS || !BR2_USE_WCHAR
+	depends on BR2_USE_MMU
diff --git a/package/efl/libefl/Config.in b/package/efl/libefl/Config.in
new file mode 100644
index 0000000..2b758f0
--- /dev/null
+++ b/package/efl/libefl/Config.in
@@ -0,0 +1,65 @@ 
+config BR2_PACKAGE_LIBEFL
+	bool "libefl"
+	depends on BR2_INSTALL_LIBSTDCPP
+	depends on BR2_PACKAGE_HAS_UDEV # libudev
+	depends on BR2_TOOLCHAIN_HAS_THREADS # untested without threads
+	depends on BR2_USE_MMU
+	depends on BR2_USE_WCHAR # use wchar_t
+	depends on !BR2_STATIC_LIBS # dlfcn.h
+	select BR2_PACKAGE_DBUS
+	select BR2_PACKAGE_FREETYPE
+	select BR2_PACKAGE_JPEG # Emile needs libjpeg
+	select BR2_PACKAGE_LUA # Evas lua 5.1 or 5.2
+	help
+	  Enlightenment Foundation Libraries
+
+	  https://enlightenment.org
+
+if BR2_PACKAGE_LIBEFL
+
+config BR2_PACKAGE_LIBEFL_RECOMMENDED_CONFIG
+	bool "Use recommended and tested configurations"
+	select BR2_PACKAGE_BULLET
+	select BR2_PACKAGE_FONTCONFIG
+	select BR2_PACKAGE_GSTREAMER1
+	select BR2_PACKAGE_GST1_PLUGINS_BASE
+	select BR2_PACKAGE_LIBFRIBIDI
+	select BR2_PACKAGE_LIBSNDFILE
+	select BR2_PACKAGE_PULSEAUDIO
+	select BR2_PACKAGE_UTIL_LINUX
+	select BR2_PACKAGE_UTIL_LINUX_LIBMOUNT
+	default y
+	help
+	  Avoid to use untested or not recommended configurations,
+	  otherwise we need to add a very long and obscure option
+	  to start the build.
+
+comment "libevas loaders"
+
+config BR2_PACKAGE_LIBEFL_PNG
+	bool "libevas png loader"
+	select BR2_PACKAGE_LIBPNG
+	help
+	  This enables the loader code that loads png files using
+	  libpng.
+
+config BR2_PACKAGE_LIBEFL_JPEG
+	bool "libevas jpeg loader"
+	help
+	  This enables the loader code that loads jpeg files using
+	  libjpeg.
+
+config BR2_PACKAGE_LIBEFL_GIF
+	bool "libevas gif loader"
+	select BR2_PACKAGE_GIFLIB
+	help
+	  This enables the loader code that loads gif files using
+	  libungif.
+
+config BR2_PACKAGE_LIBEFL_TIFF
+	bool "libevas tiff loader"
+	select BR2_PACKAGE_TIFF
+	help
+	  This enables the loader code that loads tiff files.
+
+endif # BR2_PACKAGE_LIBEFL
diff --git a/package/efl/libefl/libefl.mk b/package/efl/libefl/libefl.mk
index 4dca733..781f397 100644
--- a/package/efl/libefl/libefl.mk
+++ b/package/efl/libefl/libefl.mk
@@ -11,6 +11,167 @@  LIBEFL_SITE = http://download.enlightenment.org/rel/libs/efl
 LIBEFL_LICENSE = BSD-2c, LGPLv2.1+, GPLv2+
 LIBEFL_LICENSE_FILES = COPYING
 
+LIBEFL_INSTALL_STAGING = YES
+
+LIBEFL_DEPENDENCIES = host-pkgconf host-libefl dbus freetype jpeg lua udev zlib
+
+# Configure options:
+# --disable-cxx-bindings: disable C++11 bindings.
+# --enable-lua-old: disable Elua and remove luajit dependency.
+# --with-x11=none: remove dependency on X.org.
+LIBEFL_CONF_OPTS = \
+	--with-edje-cc=$(HOST_DIR)/usr/bin/edje_cc \
+	--with-eolian-gen=$(HOST_DIR)/usr/bin/eolian_gen \
+	--disable-cxx-bindings \
+	--enable-lua-old \
+	--with-x11=none
+
+# Disable untested configuration warning.
+ifeq ($(BR2_PACKAGE_LIBEFL_RECOMMENDED_CONFIG),)
+LIBEFL_CONF_OPTS += --enable-i-really-know-what-i-am-doing-and-that-this-will-probably-break-things-and-i-will-fix-them-myself-and-send-patches-aba
+endif
+
+# Libmount is used heavily inside Eeze for support of removable devices etc.
+# and disabling this will hurt support for Enlightenment and its filemanager.
+ifeq ($(BR2_PACKAGE_UTIL_LINUX_LIBMOUNT),y)
+LIBEFL_DEPENDENCIES += util-linux
+LIBEFL_CONF_OPTS += --enable-libmount
+else
+LIBEFL_CONF_OPTS += --disable-libmount
+endif
+
+# If fontconfig is disabled, this is going to make general font
+# searching not work, and only some very direct 'load /path/file.ttf'
+# will work alongside some old-school ttf file path searching. This
+# is very likely not what you want, so highly reconsider turning
+# fontconfig off. Having it off will lead to visual problems like
+# missing text in many UI areas etc.
+ifeq ($(BR2_PACKAGE_FONTCONFIG),y)
+LIBEFL_CONF_OPTS += --enable-fontconfig
+LIBEFL_DEPENDENCIES += fontconfig
+else
+LIBEFL_CONF_OPTS += --disable-fontconfig
+endif
+
+# Fribidi is used for handling right-to-left text (like Arabic,
+# Hebrew, Farsi, Persian etc.) and is very likely not a feature
+# you want to disable unless you know for absolute certain you
+# will never encounter and have to display such scripts. Also
+# note that we don't test with fribidi disabled so you may also
+# trigger code paths with bugs that are never normally used.
+ifeq ($(BR2_PACKAGE_LIBFRIBIDI),y)
+LIBEFL_CONF_OPTS += --enable-fribidi
+LIBEFL_DEPENDENCIES += libfribidi
+else
+LIBEFL_CONF_OPTS += --disable-fribidi
+endif
+
+# If Gstreamer 1.x support is disabled, it will heavily limit your media
+# support options and render some functionality as useless, leading to
+# visible application bugs.
+ifeq ($(BR2_PACKAGE_GSTREAMER1)$(BR2_PACKAGE_GST1_PLUGINS_BASE),yy)
+LIBEFL_CONF_OPTS += --enable-gstreamer1
+LIBEFL_DEPENDENCIES += gstreamer1 gst1-plugins-base
+else
+LIBEFL_CONF_OPTS += --disable-gstreamer1
+endif
+
+# You have chosen to disable physics support. This disables lots of
+# core functionality and is effectively never tested. You are going
+# to find features that suddenly don't work and as a result cause
+# a series of breakages. This is simply not tested so you are on
+# your own in terms of ensuring everything works if you do this
+ifeq ($(BR2_PACKAGE_BULLET),y)
+LIBEFL_CONF_OPTS += --enable-physics
+LIBEFL_DEPENDENCIES += bullet
+else
+LIBEFL_CONF_OPTS += --disable-physics
+endif
+
+# You disabled audio support in Ecore. This is not tested and may
+# Create bugs for you due to it creating untested code paths.
+# Reconsider disabling audio.
+ifeq ($(BR2_PACKAGE_LIBSNDFILE),y)
+LIBEFL_CONF_OPTS += --enable-audio
+LIBEFL_DEPENDENCIES += libsndfile
+else
+LIBEFL_CONF_OPTS += --disable-audio
+endif
+
+# The only audio output method supported by Ecore right now is via
+# Pulseaudio. You have disabled that and likely have broken a whole
+# bunch of things in the process. Reconsider your configure options.
+# NOTE: multisense support is automatically enabled with pulseaudio.
+ifeq ($(BR2_PACKAGE_PULSEAUDIO),y)
+LIBEFL_CONF_OPTS += --enable-pulseaudio
+LIBEFL_DEPENDENCIES += pulseaudio
+else
+LIBEFL_CONF_OPTS += --disable-pulseaudio
+endif
+
+# There is no alsa support yet in Ecore_Audio.
+# configure will disable alsa support even if alsa-lib is selected.
+
+ifeq ($(BR2_PACKAGE_TSLIB),y)
+LIBEFL_DEPENDENCIES += tslib
+LIBEFL_CONF_OPTS += --enable-tslib
+else
+LIBEFL_CONF_OPTS += --disable-tslib
+endif
+
+ifeq ($(BR2_PACKAGE_LIBGLIB2),y)
+LIBEFL_DEPENDENCIES += libglib2
+# we can also say "always"
+LIBEFL_CONF_OPTS += --with-glib=yes
+else
+LIBEFL_CONF_OPTS += --with-glib=no
+endif
+
+# Prefer openssl (the default) over gnutls.
+ifeq ($(BR2_PACKAGE_OPENSSL),y)
+LIBEFL_DEPENDENCIES += openssl
+LIBEFL_CONF_OPTS += --with-crypto=openssl
+else
+ifeq ($(BR2_PACKAGE_GNUTLS)$(BR2_PACKAGE_LIBGCRYPT),yy)
+LIBEFL_DEPENDENCIES += gnutls libgcrypt
+LIBEFL_CONF_OPTS += --with-crypto=gnutls \
+	--with-libgcrypt-prefix=$(STAGING_DIR)/usr
+else
+LIBEFL_CONF_OPTS += --with-crypto=none
+endif
+endif # BR2_PACKAGE_OPENSSL
+
+# image loader: handle only loaders that requires dependencies.
+# All other loaders are builded by default statically.
+ifeq ($(BR2_PACKAGE_LIBEFL_PNG),y)
+LIBEFL_CONF_OPTS += --enable-image-loader-png=yes
+LIBEFL_DEPENDENCIES += libpng
+else
+LIBEFL_CONF_OPTS += --enable-image-loader-png=no
+endif
+
+ifeq ($(BR2_PACKAGE_LIBEFL_JPEG),y)
+LIBEFL_CONF_OPTS += --enable-image-loader-jpeg=yes
+else
+LIBEFL_CONF_OPTS += --enable-image-loader-jpeg=no
+endif
+
+ifeq ($(BR2_PACKAGE_LIBEFL_GIF),y)
+LIBEFL_CONF_OPTS += --enable-image-loader-gif=yes
+LIBEFL_DEPENDENCIES += giflib
+else
+LIBEFL_CONF_OPTS += --enable-image-loader-gif=no
+endif
+
+ifeq ($(BR2_PACKAGE_LIBEFL_TIFF),y)
+LIBEFL_CONF_OPTS += --enable-image-loader-tiff=yes
+LIBEFL_DEPENDENCIES += tiff
+else
+LIBEFL_CONF_OPTS += --enable-image-loader-tiff=no
+endif
+
+$(eval $(autotools-package))
+
 ################################################################################
 #
 # host-libefl