blob: 493964114793fb9563e3726e9f6f303f84b606a9 [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
13 CHOST|CBUILD|ABI|SYSROOT|CFLAGS|LDFLAGS|CPPFLAGS|AR|AS|CC|CXX|STRIP|LIBDIR_*)
14 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
76export CARGO_HOME="$d/cargo_home"
77mkdir -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. Kristensen1d28e072021-04-01 16:23:03 +000087cargo build --manifest-path $d/Cargo.toml --target="${CHOST}"
Kristian H. Kristensen4cbd08f2021-04-06 18:15:54 +000088
89# Take this from environment but default to hatch and my IP of the day
90DUT=${DUT:-192.168.86.226}
91
Kristian H. Kristensen4cbd08f2021-04-06 18:15:54 +000092rsync -av --progress $out/meson/subprojects/weston/libweston/libweston-9.so{,*.0} \
Kristian H. Kristensendef1af92021-04-06 20:50:59 +000093 $DUT:/usr/$LIBDIR
Kristian H. Kristensen4cbd08f2021-04-06 18:15:54 +000094rsync -av --progress $out/meson/subprojects/weston/libweston/renderer-gl/gl-renderer.so \
Kristian H. Kristensendef1af92021-04-06 20:50:59 +000095 $DUT:/usr/$LIBDIR/libweston-9
96rsync -av --progress $out/croscomp \
97 $out/meson/subprojects/weston/clients/weston-{simple-splash,terminal} \
Kristian H. Kristensenb8b11cf2021-04-06 20:43:50 +000098 $DUT:/usr/bin
99rsync -av --progress $d/croscomp-terminal $DUT:/usr/bin
100