Commit c24da887 authored by Romain Naour's avatar Romain Naour Committed by Thomas Petazzoni
Browse files

package/efl/libefl: new package

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].

The name libefl is transitional in order to bump smoothly all packages
that use efl libraries and remove the old package libecore, libevas...
The package libefl will be renamed to efl in a followup patch at the end
of the series.

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

Here is some notes about libefl dependencies:
  - alsa:
    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.

  - util-linux:
    libefl select util-linux libblkid since it's listed as an dependency
    in the README [2].

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

  - Curl:
    Curl is listed as an dependency in the README because it's a runtime
    dependency since efl 1.8 [4].

We need to regenerate the configure script to workaround a build issue with
eldbus-codegen:

  CCLD     bin/eldbus/eldbus-codegen
  CXXLD    bin/eolian_cxx/eolian_cxx
  CCLD     lib/ecore_x/ecore_x_vsync
  CCLD     lib/evas/common/libevas_op_blend_sse3.la
  CCLD     lib/evas/common/libevas_convert_rgb_32.la
  CCLD     lib/ecore_ipc/libecore_ipc.la
[...]/i686-ctng-linux-gnu/bin/ld: warning: libefl.so.1, needed by lib/ecore/.libs/libecore.so, not found (try using -rpath or -rpath-link)
lib/ecore/.libs/libecore.so: undefined reference to `efl_control_suspend_set'
lib/ecore/.libs/libecore.so: undefined reference to `efl_control_interface_get'
collect2: error: ld returned 1 exit status
Makefile:19135: recipe for target 'bin/eldbus/eldbus-codegen' failed
make[6]: *** [bin/eldbus/eldbus-codegen] Error 1

A dependency on libefl seems to be missing for eldbus but by
regenerating eldbus-codegen build correctly.

Reported upstream [6].

Also, gettextize is needed since *.po files were generated with
an "old" gettext version (0.18):

Making all in po
*** error: gettext infrastructure mismatch: using a Makefile.in.in from gettext version 0.18 but the autoconf macros are from gettext version 0.19
Makefile:149: recipe for target 'check-macro-version' failed

[1] See https://phab.enlightenment.org/phame/live/3/post/efl_1_8/
[2] https://git.enlightenment.org/core/efl.git/tree/README?id=v1.15.2#n478
[3] https://git.enlightenment.org/core/efl.git/tree/configure.ac#n5032
[4] https://git.enlightenment.org/core/efl.git/tree/README?id=v1.15.2#n453
    https://git.enlightenment.org/core/efl.git/commit/?id=2c1c6b9335e38c6e52b06829a95d9b58d780c99e
[5] http://mailman.uclibc-ng.org/pipermail/devel/2015-August/000432.html
[6] https://phab.enlightenment.org/T2718



[Thomas:
 - make the BR2_PACKAGE_LIBEFL_RECOMMENDED_CONFIG hidden and rename it
   to BR2_PACKAGE_LIBEFL_HAS_RECOMMENDED_CONFIG.
 - rewrap Config.in help text where needed.]

Signed-off-by: default avatarRomain Naour <romain.naour@openwide.fr>
Tested-by: default avatarVicente Bergas <vicencb@gmail.com>
Cc: Vicente Bergas <vicencb@gmail.com>
Signed-off-by: default avatarThomas Petazzoni <thomas.petazzoni@free-electrons.com>
parent c9380520
Loading
Loading
Loading
Loading
+16 −4
Original line number Diff line number Diff line
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_INSTALL_LIBSTDCPP
	depends on BR2_PACKAGE_HAS_UDEV # libudev
	depends on BR2_PACKAGE_LUA # lua 5.1 or better
	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_LIBEFL
	help
	  Enlightenment Foundation Libraries

@@ -13,6 +18,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 +30,11 @@ 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

comment "EFL needs lua"
	depends on !BR2_PACKAGE_LUA
	depends on BR2_USE_MMU
+139 −0
Original line number Diff line number Diff line
config BR2_PACKAGE_LIBEFL
	bool "libefl"
	select BR2_PACKAGE_DBUS
	select BR2_PACKAGE_FREETYPE
	select BR2_PACKAGE_JPEG # Emile needs libjpeg
	select BR2_PACKAGE_LIBCURL # Ecore_con_url, runtime dependency
	select BR2_PACKAGE_UTIL_LINUX
	# libblkid is part of required tools, see EFL's README.
	select BR2_PACKAGE_UTIL_LINUX_LIBBLKID
	help
	  Enlightenment Foundation Libraries

	  https://enlightenment.org

if BR2_PACKAGE_LIBEFL

config BR2_PACKAGE_LIBEFL_BULLET
	bool "Enable bullet support (recommended)"
	select BR2_PACKAGE_BULLET
	default y
	help
	  If 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.

config BR2_PACKAGE_LIBEFL_FONTCONFIG
	bool "Enable fontconfig support (recommended)"
	select BR2_PACKAGE_FONTCONFIG
	default y
	help
	  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...

config BR2_PACKAGE_LIBEFL_GSTREAMER1
	bool "Enable gstreamer1 support (recommended)"
	select BR2_PACKAGE_GSTREAMER1
	select BR2_PACKAGE_GST1_PLUGINS_BASE
	default y
	help
	  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.

config BR2_PACKAGE_LIBEFL_LIBFRIBIDI
	bool "Enable libfribidi support (recommended)"
	select BR2_PACKAGE_LIBFRIBIDI
	default y
	help
	  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.

config BR2_PACKAGE_LIBEFL_LIBSNDFILE
	bool "Enable libsndfile support (recommended)"
	select BR2_PACKAGE_LIBSNDFILE
	default y
	help
	  If 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.

config BR2_PACKAGE_LIBEFL_PULSEAUDIO
	bool "Enable pulseaudio support (recommended)"
	depends on BR2_ARCH_HAS_ATOMICS # pulseaudio
	select BR2_PACKAGE_PULSEAUDIO
	default y
	help
	  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.

config BR2_PACKAGE_LIBEFL_UTIL_LINUX_LIBMOUNT
	bool "Enable libmount support (recommended)"
	select BR2_PACKAGE_UTIL_LINUX_LIBMOUNT
	default y
	help
	  Libmount is used heavily inside Eeze for support of removable
	  devices etc... and disabling this will hurt support for
	  Enlightenment and its filemanager.

config BR2_PACKAGE_LIBEFL_HAS_RECOMMENDED_CONFIG
	bool
	default y if BR2_PACKAGE_LIBEFL_BULLET && \
		BR2_PACKAGE_LIBEFL_FONTCONFIG && \
		BR2_PACKAGE_LIBEFL_GSTREAMER1 && \
		BR2_PACKAGE_LIBEFL_LIBFRIBIDI && \
		BR2_PACKAGE_LIBEFL_LIBSNDFILE && \
		BR2_PACKAGE_LIBEFL_PULSEAUDIO && \
		BR2_PACKAGE_LIBEFL_UTIL_LINUX_LIBMOUNT


comment "Warning: one of the recommended option for EFL is not enabled"
	depends on !BR2_PACKAGE_LIBEFL_HAS_RECOMMENDED_CONFIG

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
+150 −0
Original line number Diff line number Diff line
@@ -18,6 +18,156 @@ LIBEFL_LICENSE_FILES = \
	licenses/COPYING.LGPL \
	licenses/COPYING.SMALL

LIBEFL_INSTALL_STAGING = YES

LIBEFL_DEPENDENCIES = host-pkgconf host-libefl dbus freetype jpeg lua udev \
	util-linux zlib

# regenerate the configure script:
# https://phab.enlightenment.org/T2718
LIBEFL_AUTORECONF = YES
LIBEFL_GETTEXTIZE = YES

# Configure options:
# --disable-cxx-bindings: disable C++11 bindings.
# --disable-fb: disable frame buffer support.
# --disable-harfbuzz: disable harfbuzz support.
# --disable-image-loader-jp2k: disable JPEG 2000 support.
# --disable-image-loader-webp: disable webp support.
# --disable-sdl: disable sdl2 support.
# --disable-systemd: disable systemd support.
# --disable-wayland: disable wayland support.
# --enable-lua-old: disable Elua and remove luajit dependency.
# --with-opengl=none: disable opengl support.
# --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 \
	--disable-fb \
	--disable-harfbuzz \
	--disable-image-loader-jp2k \
	--disable-image-loader-webp \
	--disable-sdl \
	--disable-systemd \
	--disable-wayland \
	--enable-lua-old \
	--with-opengl=none \
	--with-x11=none

# Disable untested configuration warning.
ifeq ($(BR2_PACKAGE_LIBEFL_HAS_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

ifeq ($(BR2_PACKAGE_UTIL_LINUX_LIBMOUNT),y)
LIBEFL_DEPENDENCIES += util-linux
LIBEFL_CONF_OPTS += --enable-libmount
else
LIBEFL_CONF_OPTS += --disable-libmount
endif

ifeq ($(BR2_PACKAGE_FONTCONFIG),y)
LIBEFL_CONF_OPTS += --enable-fontconfig
LIBEFL_DEPENDENCIES += fontconfig
else
LIBEFL_CONF_OPTS += --disable-fontconfig
endif

ifeq ($(BR2_PACKAGE_LIBFRIBIDI),y)
LIBEFL_CONF_OPTS += --enable-fribidi
LIBEFL_DEPENDENCIES += libfribidi
else
LIBEFL_CONF_OPTS += --disable-fribidi
endif

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

ifeq ($(BR2_PACKAGE_BULLET),y)
LIBEFL_CONF_OPTS += --enable-physics
LIBEFL_DEPENDENCIES += bullet
else
LIBEFL_CONF_OPTS += --disable-physics
endif

ifeq ($(BR2_PACKAGE_LIBSNDFILE),y)
LIBEFL_CONF_OPTS += --enable-audio
LIBEFL_DEPENDENCIES += libsndfile
else
LIBEFL_CONF_OPTS += --disable-audio
endif

ifeq ($(BR2_PACKAGE_PULSEAUDIO),y)
LIBEFL_CONF_OPTS += --enable-pulseaudio
LIBEFL_DEPENDENCIES += pulseaudio
else
LIBEFL_CONF_OPTS += --disable-pulseaudio
endif

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
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 # BR2_PACKAGE_OPENSSL

# Loaders that need external dependencies needs to be --enable-XXX=yes
# otherwise the default is '=static'.
# All other loaders are statically built-in
ifeq ($(BR2_PACKAGE_LIBEFL_PNG),y)
LIBEFL_CONF_OPTS += --enable-image-loader-png=yes
LIBEFL_DEPENDENCIES += libpng
else
LIBEFL_CONF_OPTS += --disable-image-loader-png
endif

ifeq ($(BR2_PACKAGE_LIBEFL_JPEG),y)
LIBEFL_CONF_OPTS += --enable-image-loader-jpeg=yes
# libefl already depends on jpeg.
else
LIBEFL_CONF_OPTS += --disable-image-loader-jpeg
endif

ifeq ($(BR2_PACKAGE_LIBEFL_GIF),y)
LIBEFL_CONF_OPTS += --enable-image-loader-gif=yes
LIBEFL_DEPENDENCIES += giflib
else
LIBEFL_CONF_OPTS += --disable-image-loader-gif
endif

ifeq ($(BR2_PACKAGE_LIBEFL_TIFF),y)
LIBEFL_CONF_OPTS += --enable-image-loader-tiff=yes
LIBEFL_DEPENDENCIES += tiff
else
LIBEFL_CONF_OPTS += --disable-image-loader-tiff
endif

$(eval $(autotools-package))

################################################################################
#
# host-libefl