blob: 7a6fd4186d70cffb9900b3a147cfea453011567e [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
68if test ! -d "${out}/meson"; then
69 meson --cross-file $cross_file \
70 "${out}/meson" --buildtype debug -D debug=true --prefix=/usr --libdir=$LIBDIR
71
72fi
73
74export PKG_CONFIG_ALLOW_CROSS=1
Kristian H. Kristensena964f832021-09-29 14:03:59 +000075export CARGO_HOME="$d/target/${CHOST}/cargo_home"
Kristian H. Kristensen4cbd08f2021-04-06 18:15:54 +000076mkdir -p ${CARGO_HOME}
77
Kristian H. Kristensencf75f4f2021-09-24 13:07:51 +000078if test ! -e "${CARGO_HOME}/config"; then
79 echo create cargo config
80 create_cargo_config
81fi
Kristian H. Kristensen4cbd08f2021-04-06 18:15:54 +000082
83ninja -j 80 -C $out/meson
Kristian H. Kristensen49a007d2021-09-02 09:18:38 +000084export MESON_BUILD_DIR=$out/meson
Kristian H. Kristensen1d28e072021-04-01 16:23:03 +000085
Kristian H. Kristensen78446432021-04-06 11:42:54 +000086# Print this message to help emacs compile mode figure out where the
87# source is
Kristian H. Kristensen1d28e072021-04-01 16:23:03 +000088echo "cargo: Entering directory '$d'"
Kristian H. Kristensen78446432021-04-06 11:42:54 +000089
Kristian H. Kristensen59239cd2021-06-02 13:06:11 +000090echo "PKG_CONFIG: ${PKG_CONFIG}"
91echo "SYSROOT: ${SYSROOT}"
92
Kristian H. Kristensen129df192021-09-27 08:48:04 +000093cargo fmt
Kristian H. Kristensen301ff262021-09-24 13:08:08 +000094cargo build -v --manifest-path $d/Cargo.toml --target="${CHOST}"
Kristian H. Kristensen4cbd08f2021-04-06 18:15:54 +000095
Kristian H. Kristensen59239cd2021-06-02 13:06:11 +000096# Take this from environment but default to my IP of the day
Kristian H. Kristensen4cbd08f2021-04-06 18:15:54 +000097DUT=${DUT:-192.168.86.226}
98
Kristian H. Kristensen59239cd2021-06-02 13:06:11 +000099ssh $DUT mkdir -p /usr/$LIBDIR/libweston-9 /usr/share/weston
100rsync -lav --progress \
101 $out/meson/subprojects/weston/libweston/libweston-9.so{,*[0-9]} \
102 $out/meson/subprojects/libinput/libinput.so{,*[0-9]} \
103 $out/meson/subprojects/libevdev/libevdev-fdo.so{,*[0-9]} \
Kristian H. Kristensendef1af92021-04-06 20:50:59 +0000104 $DUT:/usr/$LIBDIR
Kristian H. Kristensen59239cd2021-06-02 13:06:11 +0000105
106rsync -lav --progress \
107 $d/subprojects/weston/data/*.png \
108 $DUT:/usr/share/weston
109
110rsync -lav --progress \
111 $out/meson/subprojects/weston/libweston/renderer-gl/gl-renderer.so \
112 $out/meson/subprojects/weston/libweston/backend-drm/drm-backend.so \
Kristian H. Kristensendef1af92021-04-06 20:50:59 +0000113 $DUT:/usr/$LIBDIR/libweston-9
Kristian H. Kristensen59239cd2021-06-02 13:06:11 +0000114
115rsync -lav --progress $out/croscomp \
Kristian H. Kristensendef1af92021-04-06 20:50:59 +0000116 $out/meson/subprojects/weston/clients/weston-{simple-splash,terminal} \
Kristian H. Kristensenb8b11cf2021-04-06 20:43:50 +0000117 $DUT:/usr/bin
Kristian H. Kristensen59239cd2021-06-02 13:06:11 +0000118
Kristian H. Kristensenb8b11cf2021-04-06 20:43:50 +0000119rsync -av --progress $d/croscomp-terminal $DUT:/usr/bin
120