View Raw Ebuild
# Copyright 1999-2023 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=7
LUA_REQ_USE="deprecated(+)"
LUA_COMPAT=( lua5-{1,2} luajit )
PYTHON_COMPAT=( python3_{11..14} )
inherit flag-o-matic git-r3 lua-single meson python-any-r1 xdg
DESCRIPTION="Enlightenment Foundation Core Libraries"
HOMEPAGE="https://www.enlightenment.org/"
EGIT_REPO_URI="https://git.enlightenment.org/enlightenment/${PN}.git"
# EGIT_REPO_URI="file: ///data/projects/efl"
S="${WORKDIR}/${P/_/-}"
LICENSE="BSD-2 GPL-2 LGPL-2.1 ZLIB"
SLOT="0"
[ "${PV}" = 9999 ] || KEYWORDS="amd64 x86"
IUSE="+X avif bmp connman cpu_flags_arm_neon dds debug doc drm +eet elogind examples fbcon"
IUSE+=" +fontconfig fribidi gif glib +gstreamer harfbuzz heif hyphen ibus ico jpeg2k jpegxl json"
IUSE+=" nls mono opengl +pdf physics pmaps postscript psd pulseaudio raw scim sdl +sound +svg"
IUSE+=" systemd test tga tgv tiff tslib unwind v4l vnc wayland webp xcf xim xpm xpresent zeroconf"
REQUIRED_USE="${LUA_REQUIRED_USE}
?? ( elogind systemd )
?? ( fbcon tslib )
drm? ( wayland )
examples? ( eet svg )
gstreamer? ( sound )
ibus? ( glib )
opengl? ( X )
pulseaudio? ( sound )
xim? ( X )
xpresent? ( X )"
# Requires everything to be enabled unconditionally.
RESTRICT="test"
RDEPEND="${LUA_DEPS}
dev-libs/libinput:=
dev-libs/libunibreak:=
dev-libs/openssl:0=
net-misc/curl
media-libs/giflib:=
media-libs/libjpeg-turbo:=
media-libs/libpng:=
sys-apps/dbus
sys-apps/util-linux
sys-libs/zlib
X? (
!opengl? ( media-libs/libglvnd )
media-libs/freetype
x11-libs/libX11
x11-libs/libXScrnSaver
x11-libs/libXcomposite
x11-libs/libXcursor
x11-libs/libXdamage
x11-libs/libXext
x11-libs/libXfixes
x11-libs/libXi
x11-libs/libXinerama
x11-libs/libXrandr
x11-libs/libXrender
x11-libs/libXtst
x11-libs/libxkbcommon
wayland? ( x11-libs/libxkbcommon[X] )
)
avif? ( media-libs/libavif:= )
connman? ( net-misc/connman )
drm? (
dev-libs/libinput:=
dev-libs/wayland
media-libs/mesa[gbm(+)]
x11-libs/libdrm
x11-libs/libxkbcommon
)
elogind? (
sys-auth/elogind
virtual/libudev:=
)
fontconfig? (
media-libs/fontconfig
media-libs/freetype
)
fribidi? ( dev-libs/fribidi )
glib? ( dev-libs/glib:2 )
gstreamer? (
media-libs/gstreamer:1.0
media-libs/gst-plugins-base:1.0
)
harfbuzz? ( media-libs/harfbuzz:= )
heif? ( media-libs/libheif:= )
hyphen? ( dev-libs/hyphen )
ibus? ( app-i18n/ibus )
jpeg2k? ( media-libs/openjpeg:= )
jpegxl? ( media-libs/libjxl:= )
json? ( >=media-libs/rlottie-0.0.1_pre20200424:= )
mono? ( dev-lang/mono )
opengl? ( virtual/opengl )
pdf? ( app-text/poppler:=[cxx] )
physics? ( sci-physics/bullet:= )
postscript? ( app-text/libspectre )
pulseaudio? ( media-libs/libpulse )
raw? ( media-libs/libraw:= )
scim? ( app-i18n/scim )
sdl? ( media-libs/libsdl2 )
sound? ( media-libs/libsndfile )
svg? ( gnome-base/librsvg:2 )
systemd? ( sys-apps/systemd:= )
tiff? ( media-libs/tiff:= )
tslib? ( x11-libs/tslib:= )
unwind? ( sys-libs/libunwind:= )
v4l? ( media-libs/libv4l )
vnc? ( net-libs/libvncserver )
wayland? (
dev-libs/wayland
media-libs/libglvnd
media-libs/mesa[wayland]
x11-libs/libxkbcommon
)
webp? ( media-libs/libwebp:= )
xpm? ( x11-libs/libXpm )
xpresent? ( x11-libs/libXpresent )
zeroconf? ( net-dns/avahi )"
DEPEND="${RDEPEND}
X? ( x11-base/xorg-proto )
wayland? ( dev-libs/wayland-protocols )"
BDEPEND="${PYTHON_DEPS}
virtual/pkgconfig
doc? ( app-text/doxygen )
examples? ( sys-devel/gettext )
mono? ( dev-build/cmake )
nls? ( sys-devel/gettext )
wayland? ( dev-util/wayland-scanner )"
pkg_setup() {
# Deprecated, provided for backward-compatibility. Everything is moved to libefreet.so.
QA_FLAGS_IGNORED="/usr/$(get_libdir)/libefreet_trash.so.${PV}
/usr/$(get_libdir)/libefreet_mime.so.${PV}"
python-any-r1_pkg_setup
}
src_prepare() {
default
# Remove automagic unwind configure option, #743154
if ! use unwind; then
sed -i "/config_h.set('HAVE_UNWIND/,/eina_ext_deps += unwind/d" src/lib/eina/meson.build ||
die "Failed to remove libunwind dep"
fi
# Fix python shebangs for python-exec[-native-symlinks], #764086
local shebangs=($(grep -rl "#!/usr/bin/env python3" || die))
python_fix_shebang -q ${shebangs[*]}
}
src_configure() {
if use ssl && use gnutls ; then
einfo "You enabled both USE=ssl and USE=gnutls, but only one can be used;"
einfo "ssl has been selected for you."
fi
local emesonargs=(
-Dbuffer=false
-Dcocoa=false
-Ddrm-deprecated=false
-Dembedded-libunibreak=false
-Dg-mainloop=false
-Dmono-beta=false
-Ddotnet=false
-Dwl-deprecated=false
-Dedje-sound-and-video=true
-Deeze=true
-Dinput=true
-Dinstall-eo-files=true
-Dlibmount=true
-Dnative-arch-optimization=true
$(meson_use fbcon fb)
$(meson_use v4l v4l2)
$(meson_use vnc vnc-server)
$(meson_use doc docs)
$(meson_use lua_single_target_luajit elua)
$(meson_use drm drm)
$(meson_use fontconfig fontconfig)
$(meson_use fribidi fribidi)
$(meson_use gstreamer gstreamer)
$(meson_use glib glib)
$(meson_use harfbuzz harfbuzz)
$(meson_use nls nls)
$(meson_use physics physics)
$(meson_use pulseaudio pulseaudio)
$(meson_use sdl sdl)
$(meson_use sound audio)
$(meson_use systemd systemd)
$(meson_use tslib tslib)
$(meson_use zeroconf avahi)
-Dnetwork-backend=$(usex connman connman none)
-Dcrypto=$(usex ssl openssl $(usex gnutls gnutls none))
$(meson_use test build-tests)
$(meson_use examples build-examples)
$(meson_use debug debug-threads)
$(meson_use debug eina-magic-debug)
$(meson_use X x11)
$(meson_use wayland wl)
)
local bindingsList="cxx,"
use lua_single_target_luajit && bindingsList+="lua,"
[[ ! -z "$bindingsList" ]] && bindingsList=${bindingsList::-1}
emesonargs+=( -D bindings="${bindingsList}" )
local luaChoice="lua"
if use lua_single_target_luajit; then
luaChoice="luajit"
fi
emesonargs+=( -D lua-interpreter="${luaChoice}")
# Options dependant on others
if use X; then
emesonargs+=(
-Dxinput2=true
-Dxinput22=true
$(meson_use xpresent xpresent)
)
fi
# Checking imf
combind_imf=""
for token in xim ibus scim ; do
if use !$token ; then
combined_imf="${combined_imf}${combined_imf:+,}$token"
fi
done
# Checking evas loaders
combined_evas_loaders="avif"
for token in bmp dds eet gif heif ico json pdf psd raw svg tga tiff xcf xpm webp; do
if use !$token ; then
combined_evas_loaders="${combined_evas_loaders}${combined_evas_loaders:+,}$token"
fi
done
# Checking for other evas loaders
if use !jpeg2k ; then
combined_evas_loaders="${combined_evas_loaders}${combined_evas_loaders:+,}jp2k"
fi
if use !gstreamer ; then
combined_evas_loaders="${combined_evas_loaders}${combined_evas_loaders:+,}gst"
fi
if use !ppm ; then
combined_evas_loaders="${combined_evas_loaders}${combined_evas_loaders:+,}pmaps"
fi
if use !postscript; then
combined_evas_loaders="${combined_evas_loaders}${combined_evas_loaders:+,}ps"
fi
emesonargs+=(
-Decore-imf-loaders-disabler="$combined_imf"
-Devas-loaders-disabler="$combined_evas_loaders"
)
if use wayland; then
einfo "Using es-egl as a backend because you selected wayland."
emesonargs+=( -D opengl=es-egl )
elif ! use wayland && use opengl; then
einfo "Using full as a backend."
emesonargs+=( -D opengl=full )
elif ! use wayland && use X && ! use opengl; then
einfo "Using es-egl as a backend."
emesonargs+=( -D opengl=es-egl )
else
ewarn "Disabling gl for all backends."
emesonargs+=( -D opengl=none )
fi
# Not all arm CPU's have neon instruction set, #722552
if use arm && ! use cpu_flags_arm_neon; then
emesonargs+=( -D native-arch-optimization=false )
fi
if use elibc_musl ; then
append-cflags -D_LARGEFILE64_SOURCE
fi
# https://bugs.gentoo.org/944215
# https://git.enlightenment.org/enlightenment/efl/issues/93
append-cflags -std=gnu17
meson_src_configure
}
src_compile() {
meson_src_compile
}
src_test() {
MAKEOPTS+=" -j1"
meson_src_test
}
src_install() {
MAKEOPTS+=" -j1"
meson_src_install
find "${ED}" -name '*.la' -delete || die
if use examples; then
docompress -x /usr/share/doc/${PF}/examples/
dodoc -r "${BUILD_DIR}"/src/examples/
fi
}