blob: b13909ad2c3fe3fe510605828a57c05f9ef47a86 [file] [log] [blame]
# Copyright 2021 The Chromium OS Authors. All rights reserved.
# Distributed under the terms of the GNU General Public License v2
EAPI=7
CROS_WORKON_PROJECT="chromiumos/platform/croscomp"
CROS_WORKON_LOCALNAME="platform/croscomp"
CROS_WORKON_INCREMENTAL_BUILD=1
inherit meson cros-rust cros-workon
DESCRIPTION="ChromeOS System Compositor"
HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform/croscomp/"
LICENSE="MIT BSD-Google"
SLOT="0/0"
KEYWORDS="~*"
IUSE=""
COMMON_DEPEND="
>=x11-libs/libdrm-2.4.94:=
dev-libs/expat:=
dev-libs/libevdev:=
dev-libs/libinput:=
dev-libs/wayland:=
media-libs/lcms:=
sys-libs/mtdev:=
x11-libs/cairo:=
x11-libs/libxkbcommon:=
x11-libs/pango:=
x11-libs/pixman:=
"
RDEPEND="${COMMON_DEPEND}
virtual/opengles
|| ( media-libs/mesa[gbm] media-libs/minigbm )
"
# Deps for third party crates
dlib_DEPEND="
=dev-rust/libloading-0.7*:=
"
wayland_scanner_DEPEND="
>=dev-rust/proc-macro2-1.0.11 <dev-rust/proc-macro2-2.0.0_alpha:=
=dev-rust/quote-1*:=
>=dev-rust/xml-rs-0.7.0 <dev-rust/xml-rs-0.9.0_alpha:=
"
wayland_commons_DEPEND="
=dev-rust/nix-0.23*:=
>=dev-rust/once_cell-1.1.0 <dev-rust/once_cell-2.0.0_alpha:=
=dev-rust/smallvec-1*:=
"
wayland_sys_DEPEND="
${dlib_DEPEND}
>=dev-rust/lazy_static-1.0.2 <dev-rust/lazy_static-2.0.0_alpha:=
=dev-rust/libc-0.2*:=
>=dev-rust/memoffset-0.6.4 <dev-rust/memoffset-0.7.0_alpha:=
>=dev-rust/pkg-config-0.3.7 <dev-rust/pkg-config-0.4.0_alpha:=
"
wayland_server_DEPEND="
=dev-rust/bitflags-1*:=
>=dev-rust/downcast-rs-1.0.4 <dev-rust/downcast-rs-2.0.0_alpha:=
>=dev-rust/lazy_static-1.0.2 <dev-rust/lazy_static-2.0.0_alpha:=
=dev-rust/libc-0.2*:=
=dev-rust/nix-0.23*:=
=dev-rust/parking_lot-0.11*:=
=dev-rust/scoped-tls-1*:=
"
DEPEND="${COMMON_DEPEND}
${wayland_scanner_DEPEND}
${wayland_commons_DEPEND}
${wayland_sys_DEPEND}
${wayland_server_DEPEND}
dev-libs/wayland-protocols:=
>=dev-rust/env_logger-0.8.3 <dev-rust/env_logger-0.9.0_alpha:=
>=dev-rust/nix-0.23.0 <dev-rust/nix-0.24.0_alpha:=
>=dev-rust/structopt-0.3.20 <dev-rust/structopt-0.4.0_alpha:=
virtual/bindgen:=
x11-drivers/opengles-headers:=
"
BDEPEND="
virtual/pkgconfig
"
src_unpack() {
# Unpack both the project and dependency source code
cros-workon_src_unpack
cros-rust_src_unpack
}
src_prepare() {
cros-rust_src_prepare
default
}
src_configure() {
export MESON_BUILD_DIR="${WORKDIR}/${P}-build"
EMESON_SOURCE=${S}/weston
meson_src_configure
cros-rust_src_configure
}
src_compile() {
export MESON_BUILD_DIR="${WORKDIR}/${P}-build"
meson_src_compile
ecargo_build -v -p croscomp
}
src_install() {
# cargo doesn't know how to install cross-compiled binaries. It will
# always install native binaries for the host system. Manually install
# crosvm instead.
local build_dir="$(cros-rust_get_build_dir)"
dobin "${build_dir}/croscomp"
insinto /etc/init
doins croscomp.conf
dobin croscomp-terminal
meson_src_install
}