From patchwork Sun Nov 1 18:07:42 2015 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Romain Naour X-Patchwork-Id: 538790 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from whitealder.osuosl.org (smtp1.osuosl.org [140.211.166.138]) by ozlabs.org (Postfix) with ESMTP id 1F5D11402BF for ; Mon, 2 Nov 2015 05:10:21 +1100 (AEDT) Received: from localhost (localhost [127.0.0.1]) by whitealder.osuosl.org (Postfix) with ESMTP id 4A6E987C04; Sun, 1 Nov 2015 18:10:20 +0000 (UTC) X-Virus-Scanned: amavisd-new at osuosl.org Received: from whitealder.osuosl.org ([127.0.0.1]) by localhost (.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id aUQAIAr+CK2r; Sun, 1 Nov 2015 18:10:11 +0000 (UTC) Received: from ash.osuosl.org (ash.osuosl.org [140.211.166.34]) by whitealder.osuosl.org (Postfix) with ESMTP id B2DA287DE2; Sun, 1 Nov 2015 18:08:57 +0000 (UTC) X-Original-To: buildroot@lists.busybox.net Delivered-To: buildroot@osuosl.org Received: from silver.osuosl.org (smtp3.osuosl.org [140.211.166.136]) by ash.osuosl.org (Postfix) with ESMTP id 6FA0E1C0F77 for ; Sun, 1 Nov 2015 18:08:20 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by silver.osuosl.org (Postfix) with ESMTP id 685E72727C for ; Sun, 1 Nov 2015 18:08:20 +0000 (UTC) X-Virus-Scanned: amavisd-new at osuosl.org Received: from silver.osuosl.org ([127.0.0.1]) by localhost (.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id E2IVtBTjrEF2 for ; Sun, 1 Nov 2015 18:08:17 +0000 (UTC) X-Greylist: whitelisted by SQLgrey-1.7.6 Received: from smtp1-g21.free.fr (smtp1-g21.free.fr [212.27.42.1]) by silver.osuosl.org (Postfix) with ESMTPS id 1C94A2701F for ; Sun, 1 Nov 2015 18:08:17 +0000 (UTC) Received: from adeos.localdomain (unknown [81.57.22.125]) by smtp1-g21.free.fr (Postfix) with ESMTP id DC905940122; Sun, 1 Nov 2015 19:08:13 +0100 (CET) From: Romain Naour To: buildroot@buildroot.org Date: Sun, 1 Nov 2015 19:07:42 +0100 Message-Id: <1446401289-9059-7-git-send-email-romain.naour@openwide.fr> X-Mailer: git-send-email 2.4.3 In-Reply-To: <1446401289-9059-1-git-send-email-romain.naour@openwide.fr> References: <1446401289-9059-1-git-send-email-romain.naour@openwide.fr> Cc: Vicente Bergas Subject: [Buildroot] [PATCH v6 06/33] package/efl/libefl: new package X-BeenThere: buildroot@busybox.net X-Mailman-Version: 2.1.18-1 Precedence: list List-Id: Discussion and development of buildroot List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Errors-To: buildroot-bounces@busybox.net Sender: "buildroot" 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 without 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 libefl without the extra-long --enable-i-really-know-what-i-am-doing... 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]. 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 [5] 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!). 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 Signed-off-by: Romain Naour Cc: Vicente Bergas Tested-by: Vicente Bergas --- v6: Changes from Yann E.Morin's review - squash curl, autotools and libblkid patches - use depends on Lua - LIBEFL_RECOMMENDED_CONFIG depends on BR2_ARCH_HAS_ATOMICS - rework Config.in help text (remove comments in .mk) - add some option in LIBEFL_CONF_OPTS to disable some features explicitely. Split the dependency comment (Arnout) 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 | 23 +++++-- package/efl/libefl/Config.in | 114 ++++++++++++++++++++++++++++++++ package/efl/libefl/libefl.mk | 151 +++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 283 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..1c6f9e5 100644 --- a/package/efl/Config.in +++ b/package/efl/Config.in @@ -1,8 +1,13 @@ 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_PACKAGE_LUA # lua 5.1 or better + 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 +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,12 @@ 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_LUA || !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 || !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..ac871bf --- /dev/null +++ b/package/efl/libefl/Config.in @@ -0,0 +1,114 @@ +config BR2_PACKAGE_LIBEFL + bool "libefl" + 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_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_RECOMMENDED_CONFIG + bool "Use recommended and tested configurations" + depends on BR2_ARCH_HAS_ATOMICS # pulseaudio + 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_LIBMOUNT + default y + help + 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: + + - bullet: 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 + + - 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... + + - gstreamer 1.x: 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. + + - libfribidi: 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. + + - libsndfile: 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. + + - pulseaudio: 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. + + - 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. + +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 d070131..7bd3820 100644 --- a/package/efl/libefl/libefl.mk +++ b/package/efl/libefl/libefl.mk @@ -18,6 +18,157 @@ 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. +# --disable-xinput22: disable X11 XInput v2.2+ 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_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