blob: f5632f9154bfb62adc0f9d51d0ffefe7e062bf47 [file] [log] [blame]
Kristian H. Kristensen4cbd08f2021-04-06 18:15:54 +00001#!/bin/bash
Kristian H. Kristensen1d28e072021-04-01 16:23:03 +00002
Kristian H. Kristensendef1af92021-04-06 20:50:59 +00003set -e
Kristian H. Kristensen1d28e072021-04-01 16:23:03 +00004
Kristian H. Kristensen78446432021-04-06 11:42:54 +00005# Take board from environment but default to hatch
Kristian H. Kristensen4cbd08f2021-04-06 18:15:54 +00006export BOARD=${BOARD:-hatch}
Kristian H. Kristensen78446432021-04-06 11:42:54 +00007
Kristian H. Kristensen4cbd08f2021-04-06 18:15:54 +00008d=$(dirname $(readlink -f $0))
Kristian H. Kristensen1d28e072021-04-01 16:23:03 +00009
Kristian H. Kristensen4cbd08f2021-04-06 18:15:54 +000010shopt -s lastpipe
11emerge-$BOARD --info --verbose 2>/dev/null | while IFS=\= read var val; do
12 case $var in
Kristian H. Kristensen59239cd2021-06-02 13:06:11 +000013 PKG_CONFIG|CHOST|CBUILD|ABI|SYSROOT|CFLAGS|LDFLAGS|CPPFLAGS|AR|AS|CC|CXX|STRIP|LIBDIR_*)
Kristian H. Kristensen4cbd08f2021-04-06 18:15:54 +000014 eval export "$var=$val";;
15 esac
16done
17eval export LIBDIR="\$LIBDIR_$ABI"
Kristian H. Kristensen1d28e072021-04-01 16:23:03 +000018
Kristian H. Kristensen4cbd08f2021-04-06 18:15:54 +000019create_cross_file() {
Kristian H. Kristensen4cbd08f2021-04-06 18:15:54 +000020 inherit() { :; }
21 EXPORT_FUNCTIONS() { :; }
22 EAPI=7
Kristian H. Kristensenc4e08052021-09-09 12:37:21 +000023 get_libdir() { echo ${LIBDIR}; }
Kristian H. Kristensen1d28e072021-04-01 16:23:03 +000024
Kristian H. Kristensen4cbd08f2021-04-06 18:15:54 +000025 # meson.eclass has a read call that returns non-0 when it
26 # encounters EOF
27 set +e
28
Kristian H. Kristensen3787b872021-09-03 15:16:58 +000029 source ../../third_party/portage-stable/eclass/toolchain-funcs.eclass
30 source ../../third_party/eclass-overlay/eclass/meson.eclass
Kristian H. Kristensen4cbd08f2021-04-06 18:15:54 +000031
32 T=$1
33 mkdir -p $T
34
35 _meson_create_cross_file
36}
37
38create_cargo_config() {
39 CROS_RUST_REGISTRY_BASE="/usr/lib/cros_rust_registry"
40 CROS_RUST_REGISTRY_DIR="${CROS_RUST_REGISTRY_BASE}/store"
41 CROS_RUST_REGISTRY_INST_DIR="${CROS_RUST_REGISTRY_BASE}/registry"
42
43 cat <<- EOF > "${CARGO_HOME}/config"
Kristian H. Kristensen1d28e072021-04-01 16:23:03 +000044[source.chromeos]
45directory = "${SYSROOT}${CROS_RUST_REGISTRY_INST_DIR}"
46
47[source.crates-io]
48replace-with = "chromeos"
49local-registry = "/nonexistent"
50
51[target.${CHOST}]
52linker = "${CHOST}-clang"
53
54[target.${CBUILD}]
55linker = "${CBUILD}-clang"
56EOF
Kristian H. Kristensen4cbd08f2021-04-06 18:15:54 +000057}
Kristian H. Kristensen1d28e072021-04-01 16:23:03 +000058
Kristian H. Kristensen4cbd08f2021-04-06 18:15:54 +000059out=$d/target/$CHOST/debug
60
Kristian H. Kristensenc4e08052021-09-09 12:37:21 +000061cross_file="${out}/meson.${CHOST}.${ABI}.ini"
Kristian H. Kristensen4cbd08f2021-04-06 18:15:54 +000062if test ! -e "${cross_file}"; then
Kristian H. Kristensendef1af92021-04-06 20:50:59 +000063 # Run this in a subshell to avoid all the eclass variables
64 # spilling into our namespace.
Kristian H. Kristensen4cbd08f2021-04-06 18:15:54 +000065 (create_cross_file $out)
66fi
67
Kristian H. Kristensen37e86ea2021-10-06 21:13:25 +000068if test ! -d "${out}/weston"; then
Kristian H. Kristensen4cbd08f2021-04-06 18:15:54 +000069 meson --cross-file $cross_file \
Kristian H. Kristensen37e86ea2021-10-06 21:13:25 +000070 --buildtype debug \
71 -Ddebug=true \
72 --prefix=/usr \
73 --libdir=$LIBDIR \
74 -Dbackend-default=drm \
75 -Dbackend-drm=true \
76 -Dbackend-drm-screencast-vaapi=false \
77 -Dbackend-fbdev=false \
78 -Dbackend-headless=true \
79 -Dbackend-rdp=false \
80 -Dbackend-wayland=true \
81 -Dbackend-x11=false \
82 -Dcolor-management-colord=false \
83 -Dcolor-management-lcms=true \
84 -Ddemo-clients=true \
85 -Ddesktop-shell-client-default=weston-desktop-shell \
86 -Ddoc=false \
87 -Dimage-jpeg=false \
88 -Dimage-webp=false \
89 -Dimage-png=true \
90 -Dlauncher-logind=false \
91 -Dpipewire=false \
92 -Dremoting=false \
93 -Drenderer-gl=true \
94 -Dresize-pool=true \
95 -Dscreenshare=true \
96 -Dshell-desktop=true \
97 -Dshell-fullscreen=false \
98 -Dshell-ivi=false \
99 -Dshell-kiosk=false \
100 -Dsystemd=false \
101 -Dtest-gl-renderer=true \
102 -Dtest-junit-xml=false \
103 -Dwcap-decode=false \
104 -Dweston-launch=false \
105 "${out}/weston" "${d}/weston"
Kristian H. Kristensen4cbd08f2021-04-06 18:15:54 +0000106fi
107
108export PKG_CONFIG_ALLOW_CROSS=1
Kristian H. Kristensena964f832021-09-29 14:03:59 +0000109export CARGO_HOME="$d/target/${CHOST}/cargo_home"
Kristian H. Kristensen4cbd08f2021-04-06 18:15:54 +0000110mkdir -p ${CARGO_HOME}
111
Kristian H. Kristensencf75f4f2021-09-24 13:07:51 +0000112if test ! -e "${CARGO_HOME}/config"; then
113 echo create cargo config
114 create_cargo_config
115fi
Kristian H. Kristensen4cbd08f2021-04-06 18:15:54 +0000116
Kristian H. Kristensen37e86ea2021-10-06 21:13:25 +0000117ninja -j 80 -C $out/weston
118export MESON_BUILD_DIR=$out/weston
Kristian H. Kristensen1d28e072021-04-01 16:23:03 +0000119
Kristian H. Kristensen78446432021-04-06 11:42:54 +0000120# Print this message to help emacs compile mode figure out where the
121# source is
Kristian H. Kristensen1d28e072021-04-01 16:23:03 +0000122echo "cargo: Entering directory '$d'"
Kristian H. Kristensen78446432021-04-06 11:42:54 +0000123
Kristian H. Kristensen59239cd2021-06-02 13:06:11 +0000124echo "PKG_CONFIG: ${PKG_CONFIG}"
125echo "SYSROOT: ${SYSROOT}"
126
Kristian H. Kristensen129df192021-09-27 08:48:04 +0000127cargo fmt
Kristian H. Kristensen301ff262021-09-24 13:08:08 +0000128cargo build -v --manifest-path $d/Cargo.toml --target="${CHOST}"
Kristian H. Kristensen4cbd08f2021-04-06 18:15:54 +0000129
Kristian H. Kristensen59239cd2021-06-02 13:06:11 +0000130# Take this from environment but default to my IP of the day
Kristian H. Kristensen4cbd08f2021-04-06 18:15:54 +0000131DUT=${DUT:-192.168.86.226}
132
Kristian H. Kristensen59239cd2021-06-02 13:06:11 +0000133ssh $DUT mkdir -p /usr/$LIBDIR/libweston-9 /usr/share/weston
134rsync -lav --progress \
Kristian H. Kristensen37e86ea2021-10-06 21:13:25 +0000135 $out/weston/libweston/libweston-9.so{,*[0-9]} \
Kristian H. Kristensendef1af92021-04-06 20:50:59 +0000136 $DUT:/usr/$LIBDIR
Kristian H. Kristensen59239cd2021-06-02 13:06:11 +0000137
138rsync -lav --progress \
Kristian H. Kristensen37e86ea2021-10-06 21:13:25 +0000139 $d/weston/data/*.png \
Kristian H. Kristensen59239cd2021-06-02 13:06:11 +0000140 $DUT:/usr/share/weston
141
142rsync -lav --progress \
Kristian H. Kristensen37e86ea2021-10-06 21:13:25 +0000143 $out/weston/libweston/renderer-gl/gl-renderer.so \
144 $out/weston/libweston/backend-drm/drm-backend.so \
Kristian H. Kristensendef1af92021-04-06 20:50:59 +0000145 $DUT:/usr/$LIBDIR/libweston-9
Kristian H. Kristensen59239cd2021-06-02 13:06:11 +0000146
147rsync -lav --progress $out/croscomp \
Kristian H. Kristensen37e86ea2021-10-06 21:13:25 +0000148 $out/weston/clients/weston-{simple-splash,terminal} \
Kristian H. Kristensenb8b11cf2021-04-06 20:43:50 +0000149 $DUT:/usr/bin
Kristian H. Kristensen59239cd2021-06-02 13:06:11 +0000150
Kristian H. Kristensenb8b11cf2021-04-06 20:43:50 +0000151rsync -av --progress $d/croscomp-terminal $DUT:/usr/bin
152