Kristian H. Kristensen | 4cbd08f | 2021-04-06 18:15:54 +0000 | [diff] [blame] | 1 | #!/bin/bash |
Kristian H. Kristensen | 1d28e07 | 2021-04-01 16:23:03 +0000 | [diff] [blame] | 2 | |
| 3 | set -xe |
| 4 | |
Kristian H. Kristensen | 7844643 | 2021-04-06 11:42:54 +0000 | [diff] [blame] | 5 | # Take board from environment but default to hatch |
Kristian H. Kristensen | 4cbd08f | 2021-04-06 18:15:54 +0000 | [diff] [blame] | 6 | export BOARD=${BOARD:-hatch} |
Kristian H. Kristensen | 7844643 | 2021-04-06 11:42:54 +0000 | [diff] [blame] | 7 | |
Kristian H. Kristensen | 4cbd08f | 2021-04-06 18:15:54 +0000 | [diff] [blame] | 8 | d=$(dirname $(readlink -f $0)) |
Kristian H. Kristensen | 1d28e07 | 2021-04-01 16:23:03 +0000 | [diff] [blame] | 9 | |
Kristian H. Kristensen | 4cbd08f | 2021-04-06 18:15:54 +0000 | [diff] [blame] | 10 | shopt -s lastpipe |
| 11 | emerge-$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 |
| 16 | done |
| 17 | eval export LIBDIR="\$LIBDIR_$ABI" |
Kristian H. Kristensen | 1d28e07 | 2021-04-01 16:23:03 +0000 | [diff] [blame] | 18 | |
Kristian H. Kristensen | 4cbd08f | 2021-04-06 18:15:54 +0000 | [diff] [blame] | 19 | create_cross_file() { |
| 20 | ECLASS_PATH=~/trunk/src/third_party/portage-stable/eclass |
Kristian H. Kristensen | 7844643 | 2021-04-06 11:42:54 +0000 | [diff] [blame] | 21 | |
Kristian H. Kristensen | 4cbd08f | 2021-04-06 18:15:54 +0000 | [diff] [blame] | 22 | inherit() { :; } |
| 23 | EXPORT_FUNCTIONS() { :; } |
| 24 | EAPI=7 |
Kristian H. Kristensen | 1d28e07 | 2021-04-01 16:23:03 +0000 | [diff] [blame] | 25 | |
Kristian H. Kristensen | 4cbd08f | 2021-04-06 18:15:54 +0000 | [diff] [blame] | 26 | # 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 | |
| 39 | create_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. Kristensen | 1d28e07 | 2021-04-01 16:23:03 +0000 | [diff] [blame] | 45 | [source.chromeos] |
| 46 | directory = "${SYSROOT}${CROS_RUST_REGISTRY_INST_DIR}" |
| 47 | |
| 48 | [source.crates-io] |
| 49 | replace-with = "chromeos" |
| 50 | local-registry = "/nonexistent" |
| 51 | |
| 52 | [target.${CHOST}] |
| 53 | linker = "${CHOST}-clang" |
| 54 | |
| 55 | [target.${CBUILD}] |
| 56 | linker = "${CBUILD}-clang" |
| 57 | EOF |
Kristian H. Kristensen | 4cbd08f | 2021-04-06 18:15:54 +0000 | [diff] [blame] | 58 | } |
Kristian H. Kristensen | 1d28e07 | 2021-04-01 16:23:03 +0000 | [diff] [blame] | 59 | |
Kristian H. Kristensen | 4cbd08f | 2021-04-06 18:15:54 +0000 | [diff] [blame] | 60 | out=$d/target/$CHOST/debug |
| 61 | |
| 62 | cross_file="${out}/meson.${CHOST}.${ABI}" |
| 63 | if test ! -e "${cross_file}"; then |
| 64 | # Run this in a subshell to avoid all the eclass variable spilling |
| 65 | # into out namespace. |
| 66 | (create_cross_file $out) |
| 67 | fi |
| 68 | |
| 69 | if test ! -d "${out}/meson"; then |
| 70 | meson --cross-file $cross_file \ |
| 71 | "${out}/meson" --buildtype debug -D debug=true --prefix=/usr --libdir=$LIBDIR |
| 72 | |
| 73 | fi |
| 74 | |
| 75 | export PKG_CONFIG_ALLOW_CROSS=1 |
| 76 | export CARGO_HOME="$d/cargo_home" |
| 77 | mkdir -p ${CARGO_HOME} |
| 78 | |
| 79 | create_cargo_config |
| 80 | |
| 81 | ninja -j 80 -C $out/meson |
Kristian H. Kristensen | 1d28e07 | 2021-04-01 16:23:03 +0000 | [diff] [blame] | 82 | |
Kristian H. Kristensen | 7844643 | 2021-04-06 11:42:54 +0000 | [diff] [blame] | 83 | # Print this message to help emacs compile mode figure out where the |
| 84 | # source is |
Kristian H. Kristensen | 1d28e07 | 2021-04-01 16:23:03 +0000 | [diff] [blame] | 85 | echo "cargo: Entering directory '$d'" |
Kristian H. Kristensen | 7844643 | 2021-04-06 11:42:54 +0000 | [diff] [blame] | 86 | |
Kristian H. Kristensen | 1d28e07 | 2021-04-01 16:23:03 +0000 | [diff] [blame] | 87 | cargo build --manifest-path $d/Cargo.toml --target="${CHOST}" |
Kristian H. Kristensen | 4cbd08f | 2021-04-06 18:15:54 +0000 | [diff] [blame] | 88 | |
| 89 | # Take this from environment but default to hatch and my IP of the day |
| 90 | DUT=${DUT:-192.168.86.226} |
| 91 | |
Kristian H. Kristensen | 4cbd08f | 2021-04-06 18:15:54 +0000 | [diff] [blame] | 92 | rsync -av --progress $out/croscomp $DUT: |
| 93 | |
| 94 | rsync -av --progress $out/meson/subprojects/weston/libweston/libweston-9.so{,*.0} \ |
| 95 | $DUT:/usr/lib64 |
| 96 | rsync -av --progress $out/meson/subprojects/weston/libweston/renderer-gl/gl-renderer.so \ |
| 97 | $DUT:/usr/lib64/libweston-9 |
Kristian H. Kristensen | b8b11cf | 2021-04-06 20:43:50 +0000 | [diff] [blame^] | 98 | rsync -av --progress $out/meson/subprojects/weston/clients/weston-{simple-splash,terminal} \ |
| 99 | $DUT:/usr/bin |
| 100 | rsync -av --progress $d/croscomp-terminal $DUT:/usr/bin |
| 101 | |