mirror of
https://github.com/LibreELEC/LibreELEC.tv.git
synced 2025-07-29 13:46:49 +00:00
rust: add package
This commit is contained in:
parent
587f6407e4
commit
a5dedbd369
@ -416,6 +416,12 @@ setup_toolchain() {
|
||||
export _python_sysroot="$SYSROOT_PREFIX"
|
||||
export _python_prefix=/usr
|
||||
export _python_exec_prefix=/usr
|
||||
|
||||
# rust
|
||||
export CARGO_TARGET_DIR="${PKG_BUILD}/.${TARGET_NAME}/target"
|
||||
export CARGO_HOME="$(get_build_dir rust)/cargo_home"
|
||||
export RUST_TARGET_PATH="${TOOLCHAIN}/lib/rustlib/"
|
||||
|
||||
;;
|
||||
host:*|bootstrap:*)
|
||||
export DESTIMAGE="host"
|
||||
@ -467,6 +473,23 @@ setup_toolchain() {
|
||||
export _python_sysroot="$TOOLCHAIN"
|
||||
export _python_prefix=/
|
||||
export _python_exec_prefix=/
|
||||
|
||||
# rust
|
||||
case "${MACHINE_HARDWARE_CPU}" in
|
||||
"arm")
|
||||
RUST_HOST="arm-unknown-linux-gnueabihf"
|
||||
;;
|
||||
"aarch64")
|
||||
RUST_HOST="aarch64-unknown-linux-gnu"
|
||||
;;
|
||||
"x86_64")
|
||||
RUST_HOST="x86_64-unknown-linux-gnu"
|
||||
;;
|
||||
esac
|
||||
|
||||
export CARGO_TARGET_DIR="${PKG_BUILD}/.${RUST_HOST}/target"
|
||||
export CARGO_HOME="$(get_build_dir rust)/cargo_home"
|
||||
export RUST_TARGET_PATH="${TOOLCHAIN}/lib/rustlib/"
|
||||
;;
|
||||
esac
|
||||
}
|
||||
|
126
packages/rust/rust/package.mk
Normal file
126
packages/rust/rust/package.mk
Normal file
@ -0,0 +1,126 @@
|
||||
# SPDX-License-Identifier: GPL-2.0
|
||||
# Copyright (C) 2017-present Team LibreELEC (https://libreelec.tv)
|
||||
|
||||
PKG_NAME="rust"
|
||||
PKG_VERSION="1.60.0"
|
||||
PKG_SHA256="20ca826d1cf674daf8e22c4f8c4b9743af07973211c839b85839742314c838b7"
|
||||
PKG_LICENSE="MIT"
|
||||
PKG_SITE="https://www.rust-lang.org"
|
||||
PKG_URL="https://static.rust-lang.org/dist/rustc-${PKG_VERSION}-src.tar.gz"
|
||||
PKG_DEPENDS_HOST="toolchain llvm:host"
|
||||
PKG_DEPENDS_UNPACK="rustc-snapshot rust-std-snapshot cargo-snapshot"
|
||||
PKG_LONGDESC="A systems programming language that prevents segfaults, and guarantees thread safety."
|
||||
PKG_TOOLCHAIN="manual"
|
||||
|
||||
pre_configure_host() {
|
||||
"$(get_build_dir rustc-snapshot)/install.sh" --prefix="${PKG_BUILD}/rust-snapshot" --disable-ldconfig
|
||||
"$(get_build_dir rust-std-snapshot)/install.sh" --prefix="${PKG_BUILD}/rust-snapshot" --disable-ldconfig
|
||||
"$(get_build_dir cargo-snapshot)/install.sh" --prefix="${PKG_BUILD}/rust-snapshot" --disable-ldconfig
|
||||
}
|
||||
|
||||
configure_host() {
|
||||
|
||||
mkdir -p ${PKG_BUILD}/targets
|
||||
|
||||
case "${TARGET_ARCH}" in
|
||||
"arm")
|
||||
# the arm target is special because we specify the subarch. ie armv8a
|
||||
cp -a ${PKG_DIR}/targets/arm-libreelec-linux-gnueabihf.json ${PKG_BUILD}/targets/${TARGET_NAME}.json
|
||||
;;
|
||||
"aarch64"|"x86_64")
|
||||
cp -a ${PKG_DIR}/targets/${TARGET_NAME}.json ${PKG_BUILD}/targets/${TARGET_NAME}.json
|
||||
;;
|
||||
esac
|
||||
|
||||
cat > ${PKG_BUILD}/config.toml <<END
|
||||
changelog-seen = 2
|
||||
|
||||
[target.${TARGET_NAME}]
|
||||
llvm-config = "${TOOLCHAIN}/bin/llvm-config"
|
||||
cxx = "${TARGET_PREFIX}g++"
|
||||
cc = "${TARGET_PREFIX}gcc"
|
||||
|
||||
[target.${RUST_HOST}]
|
||||
llvm-config = "${TOOLCHAIN}/bin/llvm-config"
|
||||
cxx = "${CXX}"
|
||||
cc = "${CC}"
|
||||
|
||||
[rust]
|
||||
rpath = true
|
||||
channel = "stable"
|
||||
codegen-tests = false
|
||||
optimize = true
|
||||
|
||||
[build]
|
||||
submodules = false
|
||||
docs = false
|
||||
profiler = true
|
||||
vendor = true
|
||||
|
||||
rustc = "${PKG_BUILD}/rust-snapshot/bin/rustc"
|
||||
cargo = "${PKG_BUILD}/rust-snapshot/bin/cargo"
|
||||
|
||||
target = [
|
||||
"${TARGET_NAME}",
|
||||
"${RUST_HOST}"
|
||||
]
|
||||
|
||||
host = [
|
||||
"${RUST_HOST}"
|
||||
]
|
||||
|
||||
build = "${RUST_HOST}"
|
||||
|
||||
[install]
|
||||
prefix = "${TOOLCHAIN}"
|
||||
bindir = "${TOOLCHAIN}/bin"
|
||||
libdir = "${TOOLCHAIN}/lib"
|
||||
datadir = "${TOOLCHAIN}/share"
|
||||
mandir = "${TOOLCHAIN}/share/man"
|
||||
|
||||
END
|
||||
|
||||
CARGO_HOME="${PKG_BUILD}/cargo_home"
|
||||
mkdir -p "${CARGO_HOME}"
|
||||
|
||||
cat > ${CARGO_HOME}/config << END
|
||||
[target.${TARGET_NAME}]
|
||||
linker = "${TARGET_PREFIX}gcc"
|
||||
|
||||
[target.${RUST_HOST}]
|
||||
linker = "${CC}"
|
||||
rustflags = ["-C", "link-arg=-Wl,-rpath,${TOOLCHAIN}/lib"]
|
||||
|
||||
[build]
|
||||
target-dir = "${PKG_BUILD}/target"
|
||||
|
||||
[term]
|
||||
progress.when = 'always'
|
||||
progress.width = 80
|
||||
|
||||
END
|
||||
|
||||
}
|
||||
|
||||
make_host() {
|
||||
cd ${PKG_BUILD}
|
||||
|
||||
unset CFLAGS
|
||||
unset CXXFLAGS
|
||||
unset CPPFLAGS
|
||||
unset LDFLAGS
|
||||
|
||||
export RUST_TARGET_PATH="${PKG_BUILD}/targets/"
|
||||
|
||||
python3 src/bootstrap/bootstrap.py -j ${CONCURRENCY_MAKE_LEVEL} build --stage 2 --verbose
|
||||
}
|
||||
|
||||
makeinstall_host() {
|
||||
mkdir -p ${TOOLCHAIN}/bin
|
||||
cp -a build/${RUST_HOST}/stage2/bin/* ${TOOLCHAIN}/bin
|
||||
|
||||
mkdir -p ${TOOLCHAIN}/lib/rustlib
|
||||
cp -a build/${RUST_HOST}/stage2/lib/* ${TOOLCHAIN}/lib
|
||||
|
||||
cp -a ${PKG_BUILD}/targets/*.json ${TOOLCHAIN}/lib/rustlib/
|
||||
}
|
32
packages/rust/rust/targets/aarch64-libreelec-linux-gnu.json
Normal file
32
packages/rust/rust/targets/aarch64-libreelec-linux-gnu.json
Normal file
@ -0,0 +1,32 @@
|
||||
{
|
||||
"arch": "aarch64",
|
||||
"crt-static-respected": true,
|
||||
"data-layout": "e-m:e-i8:8:32-i16:16:32-i64:64-i128:128-n32:64-S128",
|
||||
"dynamic-linking": true,
|
||||
"env": "gnu",
|
||||
"executables": true,
|
||||
"features": "+outline-atomics",
|
||||
"has-rpath": true,
|
||||
"has-thread-local": true,
|
||||
"is-builtin": false,
|
||||
"llvm-target": "aarch64-unknown-linux-gnu",
|
||||
"max-atomic-width": 128,
|
||||
"os": "linux",
|
||||
"position-independent-executables": true,
|
||||
"relro-level": "full",
|
||||
"supported-sanitizers": [
|
||||
"address",
|
||||
"cfi",
|
||||
"leak",
|
||||
"memory",
|
||||
"memtag",
|
||||
"thread",
|
||||
"hwaddress"
|
||||
],
|
||||
"target-family": [
|
||||
"unix"
|
||||
],
|
||||
"target-mcount": "\u0001_mcount",
|
||||
"target-pointer-width": "64"
|
||||
}
|
||||
|
@ -0,0 +1,23 @@
|
||||
{
|
||||
"abi": "eabihf",
|
||||
"arch": "arm",
|
||||
"crt-static-respected": true,
|
||||
"data-layout": "e-m:e-p:32:32-Fi8-i64:64-v128:64:128-a:0:32-n32-S64",
|
||||
"dynamic-linking": true,
|
||||
"env": "gnu",
|
||||
"executables": true,
|
||||
"features": "+strict-align,+v6,+vfp2,-d32",
|
||||
"has-rpath": true,
|
||||
"has-thread-local": true,
|
||||
"is-builtin": false,
|
||||
"llvm-target": "arm-unknown-linux-gnueabihf",
|
||||
"max-atomic-width": 64,
|
||||
"os": "linux",
|
||||
"position-independent-executables": true,
|
||||
"relro-level": "full",
|
||||
"target-family": [
|
||||
"unix"
|
||||
],
|
||||
"target-mcount": "\u0001__gnu_mcount_nc",
|
||||
"target-pointer-width": "32"
|
||||
}
|
38
packages/rust/rust/targets/x86_64-libreelec-linux-gnu.json
Normal file
38
packages/rust/rust/targets/x86_64-libreelec-linux-gnu.json
Normal file
@ -0,0 +1,38 @@
|
||||
{
|
||||
"arch": "x86_64",
|
||||
"cpu": "x86-64",
|
||||
"crt-static-respected": true,
|
||||
"data-layout": "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128",
|
||||
"dynamic-linking": true,
|
||||
"env": "gnu",
|
||||
"executables": true,
|
||||
"has-rpath": true,
|
||||
"has-thread-local": true,
|
||||
"is-builtin": false,
|
||||
"llvm-target": "x86_64-unknown-linux-gnu",
|
||||
"max-atomic-width": 64,
|
||||
"os": "linux",
|
||||
"position-independent-executables": true,
|
||||
"pre-link-args": {
|
||||
"gcc": [
|
||||
"-m64"
|
||||
]
|
||||
},
|
||||
"relro-level": "full",
|
||||
"stack-probes": {
|
||||
"kind": "call"
|
||||
},
|
||||
"static-position-independent-executables": true,
|
||||
"supported-sanitizers": [
|
||||
"address",
|
||||
"cfi",
|
||||
"leak",
|
||||
"memory",
|
||||
"thread"
|
||||
],
|
||||
"target-family": [
|
||||
"unix"
|
||||
],
|
||||
"target-pointer-width": "64"
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user