crossdev: Build a cross toolchain for Rust
To cross-compile Rust packages, we need a standard library compiled for the target system.lib/main
parent
aaed7211b2
commit
3f136a4ad1
|
@ -2,6 +2,8 @@
|
||||||
|
|
||||||
set -e
|
set -e
|
||||||
|
|
||||||
|
target=$1
|
||||||
|
|
||||||
mkdir -p /var/db/repos/crossdev/profiles /var/db/repos/crossdev/metadata
|
mkdir -p /var/db/repos/crossdev/profiles /var/db/repos/crossdev/metadata
|
||||||
echo crossdev > /var/db/repos/crossdev/profiles/repo_name
|
echo crossdev > /var/db/repos/crossdev/profiles/repo_name
|
||||||
echo 'masters = gentoo' > /var/db/repos/crossdev/metadata/layout.conf
|
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
|
emerge -kvnuUDj --rebuilt-binaries=y --color=y sys-devel/crossdev
|
||||||
|
|
||||||
crossdev --stable -t "$1"
|
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
|
||||||
|
|
Reference in New Issue