blob: d0442f1083e03737d8b324da8a0d5e6b6614dd9e [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. Kristensen88fc0192021-10-16 07:49:33 +000029 source ~/trunk/src/third_party/portage-stable/eclass/toolchain-funcs.eclass
30 source ~/trunk/src/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 \
Kristian H. Kristensen37e86ea2021-10-06 21:13:25 +000074 "${out}/weston" "${d}/weston"
Kristian H. Kristensen4cbd08f2021-04-06 18:15:54 +000075fi
76
77export PKG_CONFIG_ALLOW_CROSS=1
Kristian H. Kristensena964f832021-09-29 14:03:59 +000078export CARGO_HOME="$d/target/${CHOST}/cargo_home"
Kristian H. Kristensen4cbd08f2021-04-06 18:15:54 +000079mkdir -p ${CARGO_HOME}
80
Kristian H. Kristensencf75f4f2021-09-24 13:07:51 +000081if test ! -e "${CARGO_HOME}/config"; then
82 echo create cargo config
83 create_cargo_config
84fi
Kristian H. Kristensen4cbd08f2021-04-06 18:15:54 +000085
Kristian H. Kristensen37e86ea2021-10-06 21:13:25 +000086ninja -j 80 -C $out/weston
87export MESON_BUILD_DIR=$out/weston
Kristian H. Kristensen1d28e072021-04-01 16:23:03 +000088
Kristian H. Kristensen78446432021-04-06 11:42:54 +000089# Print this message to help emacs compile mode figure out where the
90# source is
Kristian H. Kristensen1d28e072021-04-01 16:23:03 +000091echo "cargo: Entering directory '$d'"
Kristian H. Kristensen78446432021-04-06 11:42:54 +000092
Kristian H. Kristensen59239cd2021-06-02 13:06:11 +000093echo "PKG_CONFIG: ${PKG_CONFIG}"
94echo "SYSROOT: ${SYSROOT}"
95
Kristian H. Kristensen129df192021-09-27 08:48:04 +000096cargo fmt
Kristian H. Kristensen301ff262021-09-24 13:08:08 +000097cargo build -v --manifest-path $d/Cargo.toml --target="${CHOST}"
Kristian H. Kristensen4cbd08f2021-04-06 18:15:54 +000098
Kristian H. Kristensen59239cd2021-06-02 13:06:11 +000099# Take this from environment but default to my IP of the day
Kristian H. Kristensen4cbd08f2021-04-06 18:15:54 +0000100DUT=${DUT:-192.168.86.226}
101
Kristian H. Kristensen59239cd2021-06-02 13:06:11 +0000102ssh $DUT mkdir -p /usr/$LIBDIR/libweston-9 /usr/share/weston
Lucas Berthouff52fdc2022-04-28 21:44:29 +0000103
Kristian H. Kristensen59239cd2021-06-02 13:06:11 +0000104rsync -lav --progress \
Lucas Berthouff52fdc2022-04-28 21:44:29 +0000105 $out/weston/libweston/libweston-9.so{,*[0-9]} \
106 $DUT:/usr/$LIBDIR
Kristian H. Kristensen59239cd2021-06-02 13:06:11 +0000107
108rsync -lav --progress \
Kristian H. Kristensen37e86ea2021-10-06 21:13:25 +0000109 $d/weston/data/*.png \
Kristian H. Kristensen59239cd2021-06-02 13:06:11 +0000110 $DUT:/usr/share/weston
111
Kristian H. Kristensen59239cd2021-06-02 13:06:11 +0000112rsync -lav --progress $out/croscomp \
Kristian H. Kristensen37e86ea2021-10-06 21:13:25 +0000113 $out/weston/clients/weston-{simple-splash,terminal} \
Kristian H. Kristensenb8b11cf2021-04-06 20:43:50 +0000114 $DUT:/usr/bin
Kristian H. Kristensen59239cd2021-06-02 13:06:11 +0000115
Kristian H. Kristensenb8b11cf2021-04-06 20:43:50 +0000116rsync -av --progress $d/croscomp-terminal $DUT:/usr/bin
117