crossdev: Build a cross toolchain for Rust

To cross-compile Rust packages, we need a standard library compiled for
the target system.
lib/main
Dustin 2024-12-14 09:41:35 -06:00
parent aaed7211b2
commit 3f136a4ad1
1 changed files with 32 additions and 0 deletions

View File

@ -2,6 +2,8 @@
set -e
target=$1
mkdir -p /var/db/repos/crossdev/profiles /var/db/repos/crossdev/metadata
echo crossdev > /var/db/repos/crossdev/profiles/repo_name
echo 'masters = gentoo' > /var/db/repos/crossdev/metadata/layout.conf
@ -18,3 +20,33 @@ EOF
emerge -kvnuUDj --rebuilt-binaries=y --color=y sys-devel/crossdev
crossdev --stable -t "$1"
ln -s /var/db/repos/gentoo/sys-devel/rust-std /var/db/repos/crossdev/cross-${target}/
mkdir -p
/etc/portage/env/dev-lang \
/etc/portage/package.accept_keywords \
/etc/portage/package.use \
&& :
printf 'cross-%s/rust-std **\n' "${target}" \
> /etc/portage/package.accept-keywords/rust-cross
echo 'dev-lang/rust rust-src' \
> /etc/portage/package.use/rust-src
case ${target%%-*} in
aarch64)
llvm_target=AArch64
;;
arm*)
llvm_target=ARM
;;
*)
printf 'Unknown LLVM target: %s' "${target%%-*}"
exit 1
;;
esac
printf '( %s:%s:%s )\n' \
"${llvm_target}" \
"${target}" \
"${target}" \
>> /etc/portage/env/dev-lang/rust
emerge -vbknuUj cross-${target}/rust-std