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 | |
Kristian H. Kristensen | def1af9 | 2021-04-06 20:50:59 +0000 | [diff] [blame] | 3 | set -e |
Kristian H. Kristensen | 1d28e07 | 2021-04-01 16:23:03 +0000 | [diff] [blame] | 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 |
Kristian H. Kristensen | 59239cd | 2021-06-02 13:06:11 +0000 | [diff] [blame] | 13 | PKG_CONFIG|CHOST|CBUILD|ABI|SYSROOT|CFLAGS|LDFLAGS|CPPFLAGS|AR|AS|CC|CXX|STRIP|LIBDIR_*) |
Kristian H. Kristensen | 4cbd08f | 2021-04-06 18:15:54 +0000 | [diff] [blame] | 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() { |
Kristian H. Kristensen | 4cbd08f | 2021-04-06 18:15:54 +0000 | [diff] [blame] | 20 | inherit() { :; } |
| 21 | EXPORT_FUNCTIONS() { :; } |
| 22 | EAPI=7 |
Kristian H. Kristensen | c4e0805 | 2021-09-09 12:37:21 +0000 | [diff] [blame] | 23 | get_libdir() { echo ${LIBDIR}; } |
Kristian H. Kristensen | 1d28e07 | 2021-04-01 16:23:03 +0000 | [diff] [blame] | 24 | |
Kristian H. Kristensen | 4cbd08f | 2021-04-06 18:15:54 +0000 | [diff] [blame] | 25 | # meson.eclass has a read call that returns non-0 when it |
| 26 | # encounters EOF |
| 27 | set +e |
| 28 | |
Kristian H. Kristensen | 3787b87 | 2021-09-03 15:16:58 +0000 | [diff] [blame] | 29 | source ../../third_party/portage-stable/eclass/toolchain-funcs.eclass |
| 30 | source ../../third_party/eclass-overlay/eclass/meson.eclass |
Kristian H. Kristensen | 4cbd08f | 2021-04-06 18:15:54 +0000 | [diff] [blame] | 31 | |
| 32 | T=$1 |
| 33 | mkdir -p $T |
| 34 | |
| 35 | _meson_create_cross_file |
| 36 | } |
| 37 | |
| 38 | create_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. Kristensen | 1d28e07 | 2021-04-01 16:23:03 +0000 | [diff] [blame] | 44 | [source.chromeos] |
| 45 | directory = "${SYSROOT}${CROS_RUST_REGISTRY_INST_DIR}" |
| 46 | |
| 47 | [source.crates-io] |
| 48 | replace-with = "chromeos" |
| 49 | local-registry = "/nonexistent" |
| 50 | |
| 51 | [target.${CHOST}] |
| 52 | linker = "${CHOST}-clang" |
| 53 | |
| 54 | [target.${CBUILD}] |
| 55 | linker = "${CBUILD}-clang" |
| 56 | EOF |
Kristian H. Kristensen | 4cbd08f | 2021-04-06 18:15:54 +0000 | [diff] [blame] | 57 | } |
Kristian H. Kristensen | 1d28e07 | 2021-04-01 16:23:03 +0000 | [diff] [blame] | 58 | |
Kristian H. Kristensen | 4cbd08f | 2021-04-06 18:15:54 +0000 | [diff] [blame] | 59 | out=$d/target/$CHOST/debug |
| 60 | |
Kristian H. Kristensen | c4e0805 | 2021-09-09 12:37:21 +0000 | [diff] [blame] | 61 | cross_file="${out}/meson.${CHOST}.${ABI}.ini" |
Kristian H. Kristensen | 4cbd08f | 2021-04-06 18:15:54 +0000 | [diff] [blame] | 62 | if test ! -e "${cross_file}"; then |
Kristian H. Kristensen | def1af9 | 2021-04-06 20:50:59 +0000 | [diff] [blame] | 63 | # Run this in a subshell to avoid all the eclass variables |
| 64 | # spilling into our namespace. |
Kristian H. Kristensen | 4cbd08f | 2021-04-06 18:15:54 +0000 | [diff] [blame] | 65 | (create_cross_file $out) |
| 66 | fi |
| 67 | |
| 68 | if test ! -d "${out}/meson"; then |
| 69 | meson --cross-file $cross_file \ |
| 70 | "${out}/meson" --buildtype debug -D debug=true --prefix=/usr --libdir=$LIBDIR |
| 71 | |
| 72 | fi |
| 73 | |
| 74 | export PKG_CONFIG_ALLOW_CROSS=1 |
Kristian H. Kristensen | a964f83 | 2021-09-29 14:03:59 +0000 | [diff] [blame] | 75 | export CARGO_HOME="$d/target/${CHOST}/cargo_home" |
Kristian H. Kristensen | 4cbd08f | 2021-04-06 18:15:54 +0000 | [diff] [blame] | 76 | mkdir -p ${CARGO_HOME} |
| 77 | |
Kristian H. Kristensen | cf75f4f | 2021-09-24 13:07:51 +0000 | [diff] [blame] | 78 | if test ! -e "${CARGO_HOME}/config"; then |
| 79 | echo create cargo config |
| 80 | create_cargo_config |
| 81 | fi |
Kristian H. Kristensen | 4cbd08f | 2021-04-06 18:15:54 +0000 | [diff] [blame] | 82 | |
| 83 | ninja -j 80 -C $out/meson |
Kristian H. Kristensen | 49a007d | 2021-09-02 09:18:38 +0000 | [diff] [blame] | 84 | export MESON_BUILD_DIR=$out/meson |
Kristian H. Kristensen | 1d28e07 | 2021-04-01 16:23:03 +0000 | [diff] [blame] | 85 | |
Kristian H. Kristensen | 7844643 | 2021-04-06 11:42:54 +0000 | [diff] [blame] | 86 | # Print this message to help emacs compile mode figure out where the |
| 87 | # source is |
Kristian H. Kristensen | 1d28e07 | 2021-04-01 16:23:03 +0000 | [diff] [blame] | 88 | echo "cargo: Entering directory '$d'" |
Kristian H. Kristensen | 7844643 | 2021-04-06 11:42:54 +0000 | [diff] [blame] | 89 | |
Kristian H. Kristensen | 59239cd | 2021-06-02 13:06:11 +0000 | [diff] [blame] | 90 | echo "PKG_CONFIG: ${PKG_CONFIG}" |
| 91 | echo "SYSROOT: ${SYSROOT}" |
| 92 | |
Kristian H. Kristensen | 129df19 | 2021-09-27 08:48:04 +0000 | [diff] [blame] | 93 | cargo fmt |
Kristian H. Kristensen | 301ff26 | 2021-09-24 13:08:08 +0000 | [diff] [blame] | 94 | cargo build -v --manifest-path $d/Cargo.toml --target="${CHOST}" |
Kristian H. Kristensen | 4cbd08f | 2021-04-06 18:15:54 +0000 | [diff] [blame] | 95 | |
Kristian H. Kristensen | 59239cd | 2021-06-02 13:06:11 +0000 | [diff] [blame] | 96 | # Take this from environment but default to my IP of the day |
Kristian H. Kristensen | 4cbd08f | 2021-04-06 18:15:54 +0000 | [diff] [blame] | 97 | DUT=${DUT:-192.168.86.226} |
| 98 | |
Kristian H. Kristensen | 59239cd | 2021-06-02 13:06:11 +0000 | [diff] [blame] | 99 | ssh $DUT mkdir -p /usr/$LIBDIR/libweston-9 /usr/share/weston |
| 100 | rsync -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. Kristensen | def1af9 | 2021-04-06 20:50:59 +0000 | [diff] [blame] | 104 | $DUT:/usr/$LIBDIR |
Kristian H. Kristensen | 59239cd | 2021-06-02 13:06:11 +0000 | [diff] [blame] | 105 | |
| 106 | rsync -lav --progress \ |
| 107 | $d/subprojects/weston/data/*.png \ |
| 108 | $DUT:/usr/share/weston |
| 109 | |
| 110 | rsync -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. Kristensen | def1af9 | 2021-04-06 20:50:59 +0000 | [diff] [blame] | 113 | $DUT:/usr/$LIBDIR/libweston-9 |
Kristian H. Kristensen | 59239cd | 2021-06-02 13:06:11 +0000 | [diff] [blame] | 114 | |
| 115 | rsync -lav --progress $out/croscomp \ |
Kristian H. Kristensen | def1af9 | 2021-04-06 20:50:59 +0000 | [diff] [blame] | 116 | $out/meson/subprojects/weston/clients/weston-{simple-splash,terminal} \ |
Kristian H. Kristensen | b8b11cf | 2021-04-06 20:43:50 +0000 | [diff] [blame] | 117 | $DUT:/usr/bin |
Kristian H. Kristensen | 59239cd | 2021-06-02 13:06:11 +0000 | [diff] [blame] | 118 | |
Kristian H. Kristensen | b8b11cf | 2021-04-06 20:43:50 +0000 | [diff] [blame] | 119 | rsync -av --progress $d/croscomp-terminal $DUT:/usr/bin |
| 120 | |