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