blob: 5b0600419cd8016aec4ac1db5147c4e4b23f4d9d [file] [log] [blame]
Kristian H. Kristensen49a007d2021-09-02 09:18:38 +00001# Copyright 1999-2010 Gentoo Foundation
2# Distributed under the terms of the GNU General Public License v2
3
4EAPI=7
5
6CROS_WORKON_PROJECT="chromiumos/platform/croscomp"
7CROS_WORKON_LOCALNAME="platform/croscomp"
8CROS_WORKON_INCREMENTAL_BUILD=1
9
10KEYWORDS="~*"
11
12inherit base meson cros-rust flag-o-matic cros-workon
13
14DESCRIPTION="ChromeOS System Compositor"
15
16LICENSE="MIT SGI-B-2.0"
17
18IUSE="debug vulkan"
19
20COMMON_DEPEND="
21 x11-libs/cairo:=
22 sys-libs/mtdev:=
23 x11-libs/libxkbcommon:=
Kristian H. Kristensen49a007d2021-09-02 09:18:38 +000024 x11-libs/pixman:=
25 x11-libs/pango:=
26 dev-libs/wayland:=
27 dev-libs/expat:=
Kristian H. Kristensen37e86ea2021-10-06 21:13:25 +000028 dev-libs/libevdev:=
29 dev-libs/libinput:=
Kristian H. Kristensen49a007d2021-09-02 09:18:38 +000030 media-libs/lcms:=
31 >=x11-libs/libdrm-2.4.94:=
32"
33
34RDEPEND="${COMMON_DEPEND}
35"
36
37DEPEND="${COMMON_DEPEND}
Kristian H. Kristensendb3a4c72021-09-08 11:42:45 +000038 virtual/bindgen:=
Kristian H. Kristensen49a007d2021-09-02 09:18:38 +000039 >=dev-rust/libc-0.2.44:= <dev-rust/libc-0.3.0
40 =dev-rust/cfg-if-1.0.0:=
41 >=dev-rust/parking_lot-0.7.1:=
42 >=dev-rust/scoped-tls-0.1.0:=
43"
44
45BDEPEND="
46 virtual/pkgconfig
Kristian H. Kristensendb3a4c72021-09-08 11:42:45 +000047 dev-libs/wayland-protocols:=
Kristian H. Kristensen49a007d2021-09-02 09:18:38 +000048"
49
50src_unpack() {
51 # Unpack both the project and dependency source code
52 cros-workon_src_unpack
53 cros-rust_src_unpack
54}
55
56src_prepare() {
57 cros-rust_src_prepare
58 default
59}
60
61src_configure() {
Kristian H. Kristensen37e86ea2021-10-06 21:13:25 +000062 emesonargs+=(
63 -Dexecmem=false
64 -Dbackend-default=drm
65 -Dbackend-drm=true
66 -Dbackend-drm-screencast-vaapi=false
67 -Dbackend-fbdev=false
68 -Dbackend-headless=true
69 -Dbackend-rdp=false
70 -Dbackend-wayland=true
71 -Dbackend-x11=false
72 -Dcolor-management-colord=false
73 -Dcolor-management-lcms=true
74 -Ddemo-clients=true
75 -Ddesktop-shell-client-default=weston-desktop-shell
76 -Ddoc=false
77 -Dimage-jpeg=false
78 -Dimage-webp=false
79 -Dimage-png=true
80 -Dlauncher-logind=false
81 -Dpipewire=false
82 -Dremoting=false
83 -Drenderer-gl=true
84 -Dresize-pool=true
85 -Dscreenshare=true
86 -Dshell-desktop=true
87 -Dshell-fullscreen=false
88 -Dshell-ivi=false
89 -Dshell-kiosk=false
90 -Dsystemd=false
91 -Dtest-gl-renderer=true
92 -Dtest-junit-xml=false
93 -Dwcap-decode=false
94 -Dweston-launch=false
95 )
Kristian H. Kristensen49a007d2021-09-02 09:18:38 +000096 export MESON_BUILD_DIR="${WORKDIR}/${P}-build"
Kristian H. Kristensen37e86ea2021-10-06 21:13:25 +000097 EMESON_SOURCE=${S}/weston
Kristian H. Kristensen49a007d2021-09-02 09:18:38 +000098 meson_src_configure
99 cros-rust_src_configure
100}
101
102src_compile() {
103 export MESON_BUILD_DIR="${WORKDIR}/${P}-build"
104 meson_src_compile
105 env | grep build
106 ecargo_build -v \
107 -p croscomp \
108 || die "cargo build failed"
109}
110
111src_install() {
Kristian H. Kristensen65bb0122021-09-08 11:42:56 +0000112 # cargo doesn't know how to install cross-compiled binaries. It will
113 # always install native binaries for the host system. Manually install
114 # crosvm instead.
115 local build_dir="$(cros-rust_get_build_dir)"
116 dobin "${build_dir}/croscomp"
117
Kristian H. Kristensen49a007d2021-09-02 09:18:38 +0000118 meson_src_install
119}