mirror of
https://github.com/gentoo-mirror/guru.git
synced 2026-07-08 14:43:27 -04:00
199 lines
4.3 KiB
Bash
199 lines
4.3 KiB
Bash
# Copyright 1999-2026 Gentoo Authors
|
|
# Distributed under the terms of the GNU General Public License v2
|
|
|
|
EAPI=8
|
|
PYTHON_COMPAT=( python3_{10..14} )
|
|
|
|
inherit cmake python-any-r1 check-reqs linux-info
|
|
|
|
DESCRIPTION="Translation layer for running macOS software on Linux"
|
|
HOMEPAGE="https://www.darlinghq.org"
|
|
|
|
SRC_URI="
|
|
https://github.com/darlinghq/darling/releases/download/v${PV}/darling-source.tar.gz
|
|
-> darling-complete-source-${PV}.tar.gz
|
|
"
|
|
|
|
S="${WORKDIR}/darling"
|
|
|
|
LICENSE="GPL-3"
|
|
SLOT="0"
|
|
KEYWORDS="~amd64"
|
|
IUSE="cli cli-dev cli-extra gui gui-frameworks gui-stubs jsc webkit python ruby perl metal multilib +system"
|
|
|
|
REQUIRED_USE="
|
|
cli-dev? ( cli python ruby perl )
|
|
cli? ( system )
|
|
cli-extra? ( cli )
|
|
gui-frameworks? ( gui )
|
|
gui-stubs? ( gui-frameworks )
|
|
gui? ( system )
|
|
webkit? ( jsc )
|
|
python? ( system )
|
|
ruby? ( system )
|
|
perl? ( system )
|
|
metal? ( gui )
|
|
"
|
|
|
|
DEPEND="
|
|
x11-misc/xdg-user-dirs
|
|
sys-fs/fuse:0
|
|
dev-libs/icu:=
|
|
dev-libs/libbsd
|
|
dev-libs/libxml2:2
|
|
llvm-core/llvm:=
|
|
media-libs/freetype
|
|
media-libs/libjpeg-turbo
|
|
media-libs/fontconfig
|
|
media-libs/tiff:=
|
|
multilib? (
|
|
media-libs/freetype[abi_x86_32]
|
|
media-libs/libjpeg-turbo[abi_x86_32]
|
|
media-libs/fontconfig[abi_x86_32]
|
|
media-libs/tiff[abi_x86_32]
|
|
sys-libs/glibc[multilib]
|
|
)
|
|
|
|
gui? (
|
|
media-libs/mesa[X]
|
|
virtual/opengl
|
|
virtual/glu
|
|
media-libs/libpng:=
|
|
media-libs/giflib:=
|
|
x11-libs/libX11
|
|
x11-libs/libXext
|
|
x11-libs/libXrandr
|
|
x11-libs/libXcursor
|
|
x11-libs/libxkbfile
|
|
x11-libs/cairo
|
|
media-libs/libpulse
|
|
media-libs/vulkan-loader
|
|
)
|
|
gui? ( multilib? (
|
|
media-libs/mesa[X,abi_x86_32]
|
|
virtual/opengl[abi_x86_32]
|
|
virtual/glu[abi_x86_32]
|
|
) )
|
|
|
|
sys-apps/dbus
|
|
media-video/ffmpeg:=
|
|
"
|
|
|
|
BDEPEND="
|
|
>=llvm-core/clang-11
|
|
sys-devel/flex
|
|
sys-devel/bison
|
|
dev-build/cmake
|
|
virtual/pkgconfig
|
|
llvm-core/llvm:=
|
|
${PYTHON_DEPS}
|
|
gui? ( dev-util/vulkan-headers )
|
|
"
|
|
|
|
RDEPEND="${DEPEND}"
|
|
|
|
QA_SONAME="*"
|
|
|
|
pkg_pretend(){
|
|
# https://unix.stackexchange.com/questions/131954/check-sse3-support-from-bash
|
|
if ! grep -qE '^flags.* (sse3|pni)' /proc/cpuinfo; then
|
|
eerror "darling requires a cpu with support of the sse3 instruction set"
|
|
die "cpu doesn't support sse3 instruction set"
|
|
fi
|
|
|
|
if kernel_is -lt 5 0; then
|
|
eerror "darling requires Linux kernel 5.0 or newer to be installed"
|
|
die "darling requires Linux kernel 5.0 or newer"
|
|
fi
|
|
|
|
CHECKREQS_DISK_BUILD="16G"
|
|
CHECKREQS_MEMORY="4G"
|
|
|
|
check-reqs_pkg_pretend
|
|
}
|
|
|
|
pkg_setup(){
|
|
# https://unix.stackexchange.com/questions/131954/check-sse3-support-from-bash
|
|
if ! grep -qE '^flags.* (sse3|pni)' /proc/cpuinfo; then
|
|
eerror "darling requires a cpu with support of the sse3 instruction set"
|
|
die "cpu doesn't support sse3 instruction set"
|
|
fi
|
|
|
|
if kernel_is -lt 5 0; then
|
|
eerror "darling requires Linux kernel 5.0 or newer to be installed"
|
|
die "darling requires Linux kernel 5.0 or newer"
|
|
fi
|
|
|
|
CHECKREQS_DISK_BUILD="16G"
|
|
CHECKREQS_MEMORY="4G"
|
|
|
|
check-reqs_pkg_setup
|
|
python-any-r1_pkg_setup
|
|
}
|
|
|
|
src_prepare() {
|
|
default
|
|
|
|
cd "${S}"
|
|
|
|
# We need clang as we're building a Darwin system
|
|
export CC=clang
|
|
export CXX=clang++
|
|
|
|
unset LDFLAGS
|
|
export LDFLAGS=""
|
|
|
|
cmake_src_prepare
|
|
|
|
}
|
|
|
|
src_configure() {
|
|
export CC=clang
|
|
export CXX=clang++
|
|
|
|
unset LDFLAGS
|
|
export LDFLAGS=""
|
|
|
|
local components="core"
|
|
|
|
use system && components+=",system"
|
|
use python && components+=",python"
|
|
use ruby && components+=",ruby"
|
|
use perl && components+=",perl"
|
|
use cli && components+=",cli"
|
|
use cli-dev && components+=",cli_dev"
|
|
use cli-extra && components+=",cli_extra"
|
|
use gui && components+=",gui"
|
|
use gui-frameworks && components+=",gui_frameworks"
|
|
use gui-stubs && components+=",gui_stubs"
|
|
use jsc && components+=",jsc"
|
|
use webkit && components+=",webkit"
|
|
|
|
local mycmakeargs=(
|
|
"-DCMAKE_INSTALL_PREFIX=/usr"
|
|
"-DCMAKE_POSITION_INDEPENDENT_CODE=ON"
|
|
"-DDARLING_COMPONENTS=\"${components}\""
|
|
"-DJSC_UNIFIED_BUILD=ON"
|
|
"-DENABLE_METAL=$(usex metal ON OFF)"
|
|
"-DTARGET_i386=$(usex multilib ON OFF)"
|
|
)
|
|
|
|
cmake_src_configure
|
|
}
|
|
|
|
src_compile() {
|
|
cmake_src_compile
|
|
}
|
|
|
|
src_install() {
|
|
cmake_src_install
|
|
|
|
# Darlingserver requires these empty dirs to exist at runtime
|
|
# to set up its container (procfs mount, tmp, var, etc.)
|
|
keepdir /usr/libexec/darling/private/tmp
|
|
keepdir /usr/libexec/darling/private/var
|
|
keepdir /usr/libexec/darling/private/etc
|
|
keepdir /usr/libexec/darling/proc
|
|
keepdir /usr/libexec/darling/run
|
|
}
|