blob: f177e6f2895855ceef642a7b01217de74b7e848e [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() {
20 ECLASS_PATH=~/trunk/src/third_party/portage-stable/eclass
Kristian H. Kristensen78446432021-04-06 11:42:54 +000021
Kristian H. Kristensen4cbd08f2021-04-06 18:15:54 +000022 inherit() { :; }
23 EXPORT_FUNCTIONS() { :; }
24 EAPI=7
Kristian H. Kristensen1d28e072021-04-01 16:23:03 +000025
Kristian H. Kristensen4cbd08f2021-04-06 18:15:54 +000026 # meson.eclass has a read call that returns non-0 when it
27 # encounters EOF
28 set +e
29
30 source ${ECLASS_PATH}/toolchain-funcs.eclass
31 source ${ECLASS_PATH}/meson.eclass
32
33 T=$1
34 mkdir -p $T
35
36 _meson_create_cross_file
37}
38
39create_cargo_config() {
40 CROS_RUST_REGISTRY_BASE="/usr/lib/cros_rust_registry"
41 CROS_RUST_REGISTRY_DIR="${CROS_RUST_REGISTRY_BASE}/store"
42 CROS_RUST_REGISTRY_INST_DIR="${CROS_RUST_REGISTRY_BASE}/registry"
43
44 cat <<- EOF > "${CARGO_HOME}/config"
Kristian H. Kristensen1d28e072021-04-01 16:23:03 +000045[source.chromeos]
46directory = "${SYSROOT}${CROS_RUST_REGISTRY_INST_DIR}"
47
48[source.crates-io]
49replace-with = "chromeos"
50local-registry = "/nonexistent"
51
52[target.${CHOST}]
53linker = "${CHOST}-clang"
54
55[target.${CBUILD}]
56linker = "${CBUILD}-clang"
57EOF
Kristian H. Kristensen4cbd08f2021-04-06 18:15:54 +000058}
Kristian H. Kristensen1d28e072021-04-01 16:23:03 +000059
Kristian H. Kristensen4cbd08f2021-04-06 18:15:54 +000060out=$d/target/$CHOST/debug
61
62cross_file="${out}/meson.${CHOST}.${ABI}"
63if test ! -e "${cross_file}"; then
Kristian H. Kristensendef1af92021-04-06 20:50:59 +000064 # Run this in a subshell to avoid all the eclass variables
65 # spilling into our namespace.
Kristian H. Kristensen4cbd08f2021-04-06 18:15:54 +000066 (create_cross_file $out)
67fi
68
69if test ! -d "${out}/meson"; then
70 meson --cross-file $cross_file \
71 "${out}/meson" --buildtype debug -D debug=true --prefix=/usr --libdir=$LIBDIR
72
73fi
74
75export PKG_CONFIG_ALLOW_CROSS=1
Kristian H. Kristensen59239cd2021-06-02 13:06:11 +000076export CARGO_HOME="$d/cargo_home_${CHOST}"
Kristian H. Kristensen4cbd08f2021-04-06 18:15:54 +000077mkdir -p ${CARGO_HOME}
78
79create_cargo_config
80
81ninja -j 80 -C $out/meson
Kristian H. Kristensen1d28e072021-04-01 16:23:03 +000082
Kristian H. Kristensen78446432021-04-06 11:42:54 +000083# Print this message to help emacs compile mode figure out where the
84# source is
Kristian H. Kristensen1d28e072021-04-01 16:23:03 +000085echo "cargo: Entering directory '$d'"
Kristian H. Kristensen78446432021-04-06 11:42:54 +000086
Kristian H. Kristensen59239cd2021-06-02 13:06:11 +000087echo "PKG_CONFIG: ${PKG_CONFIG}"
88echo "SYSROOT: ${SYSROOT}"
89
Kristian H. Kristensen1d28e072021-04-01 16:23:03 +000090cargo build --manifest-path $d/Cargo.toml --target="${CHOST}"
Kristian H. Kristensen4cbd08f2021-04-06 18:15:54 +000091
Kristian H. Kristensen59239cd2021-06-02 13:06:11 +000092# Take this from environment but default to my IP of the day
Kristian H. Kristensen4cbd08f2021-04-06 18:15:54 +000093DUT=${DUT:-192.168.86.226}
94
Kristian H. Kristensen59239cd2021-06-02 13:06:11 +000095ssh $DUT mkdir -p /usr/$LIBDIR/libweston-9 /usr/share/weston
96rsync -lav --progress \
97 $out/meson/subprojects/weston/libweston/libweston-9.so{,*[0-9]} \
98 $out/meson/subprojects/libinput/libinput.so{,*[0-9]} \
99 $out/meson/subprojects/libevdev/libevdev-fdo.so{,*[0-9]} \
Kristian H. Kristensendef1af92021-04-06 20:50:59 +0000100 $DUT:/usr/$LIBDIR
Kristian H. Kristensen59239cd2021-06-02 13:06:11 +0000101
102rsync -lav --progress \
103 $d/subprojects/weston/data/*.png \
104 $DUT:/usr/share/weston
105
106rsync -lav --progress \
107 $out/meson/subprojects/weston/libweston/renderer-gl/gl-renderer.so \
108 $out/meson/subprojects/weston/libweston/backend-drm/drm-backend.so \
Kristian H. Kristensendef1af92021-04-06 20:50:59 +0000109 $DUT:/usr/$LIBDIR/libweston-9
Kristian H. Kristensen59239cd2021-06-02 13:06:11 +0000110
111rsync -lav --progress $out/croscomp \
Kristian H. Kristensendef1af92021-04-06 20:50:59 +0000112 $out/meson/subprojects/weston/clients/weston-{simple-splash,terminal} \
Kristian H. Kristensenb8b11cf2021-04-06 20:43:50 +0000113 $DUT:/usr/bin
Kristian H. Kristensen59239cd2021-06-02 13:06:11 +0000114
Kristian H. Kristensenb8b11cf2021-04-06 20:43:50 +0000115rsync -av --progress $d/croscomp-terminal $DUT:/usr/bin
116