mirror of
https://github.com/LibreELEC/LibreELEC.tv.git
synced 2025-07-28 13:16:41 +00:00
Merge pull request #6502 from lrusak/rust
Compile rust compiler from scratch
This commit is contained in:
commit
825503c729
@ -416,6 +416,12 @@ setup_toolchain() {
|
|||||||
export _python_sysroot="$SYSROOT_PREFIX"
|
export _python_sysroot="$SYSROOT_PREFIX"
|
||||||
export _python_prefix=/usr
|
export _python_prefix=/usr
|
||||||
export _python_exec_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:*)
|
host:*|bootstrap:*)
|
||||||
export DESTIMAGE="host"
|
export DESTIMAGE="host"
|
||||||
@ -467,6 +473,23 @@ setup_toolchain() {
|
|||||||
export _python_sysroot="$TOOLCHAIN"
|
export _python_sysroot="$TOOLCHAIN"
|
||||||
export _python_prefix=/
|
export _python_prefix=/
|
||||||
export _python_exec_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
|
esac
|
||||||
}
|
}
|
||||||
@ -482,7 +505,7 @@ cpp = '$CXX'
|
|||||||
ar = '$AR'
|
ar = '$AR'
|
||||||
strip = '$STRIP'
|
strip = '$STRIP'
|
||||||
pkgconfig = '$PKG_CONFIG'
|
pkgconfig = '$PKG_CONFIG'
|
||||||
llvm-config = '$TOOLCHAIN/bin/llvm-config-host'
|
llvm-config = '$TOOLCHAIN/bin/llvm-config'
|
||||||
libgcrypt-config = '$SYSROOT_PREFIX/usr/bin/libgcrypt-config'
|
libgcrypt-config = '$SYSROOT_PREFIX/usr/bin/libgcrypt-config'
|
||||||
|
|
||||||
[build_machine]
|
[build_machine]
|
||||||
@ -520,7 +543,7 @@ cpp = '$TARGET_CXX'
|
|||||||
ar = '$TARGET_AR'
|
ar = '$TARGET_AR'
|
||||||
strip = '$TARGET_STRIP'
|
strip = '$TARGET_STRIP'
|
||||||
pkgconfig = '$PKG_CONFIG'
|
pkgconfig = '$PKG_CONFIG'
|
||||||
llvm-config = '$TOOLCHAIN/bin/llvm-config-host'
|
llvm-config = '$SYSROOT_PREFIX/usr/bin/llvm-config'
|
||||||
libgcrypt-config = '$SYSROOT_PREFIX/usr/bin/libgcrypt-config'
|
libgcrypt-config = '$SYSROOT_PREFIX/usr/bin/libgcrypt-config'
|
||||||
|
|
||||||
[build_machine]
|
[build_machine]
|
||||||
|
@ -1,63 +0,0 @@
|
|||||||
# SPDX-License-Identifier: GPL-2.0
|
|
||||||
# Copyright (C) 2017-present Team LibreELEC (https://libreelec.tv)
|
|
||||||
|
|
||||||
PKG_NAME="rust"
|
|
||||||
PKG_VERSION="1.60.0"
|
|
||||||
PKG_LICENSE="MIT"
|
|
||||||
PKG_SITE="https://www.rust-lang.org"
|
|
||||||
PKG_DEPENDS_TARGET="toolchain rustup.rs"
|
|
||||||
PKG_LONGDESC="A systems programming language that prevents segfaults, and guarantees thread safety."
|
|
||||||
PKG_TOOLCHAIN="manual"
|
|
||||||
|
|
||||||
make_target() {
|
|
||||||
export CARGO_HOME="${PKG_BUILD}/cargo"
|
|
||||||
export RUSTUP_HOME="${CARGO_HOME}"
|
|
||||||
export PATH="${CARGO_HOME}/bin:${PATH}"
|
|
||||||
case "${TARGET_ARCH}" in
|
|
||||||
aarch64)
|
|
||||||
RUST_TARGET_TRIPLE="aarch64-unknown-linux-gnu"
|
|
||||||
;;
|
|
||||||
arm)
|
|
||||||
RUST_TARGET_TRIPLE="arm-unknown-linux-gnueabihf"
|
|
||||||
;;
|
|
||||||
x86_64)
|
|
||||||
RUST_TARGET_TRIPLE="x86_64-unknown-linux-gnu"
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
"$(get_build_dir rustup.rs)/rustup-init.sh" \
|
|
||||||
--default-toolchain none \
|
|
||||||
--no-modify-path \
|
|
||||||
--profile minimal \
|
|
||||||
--target "${RUST_TARGET_TRIPLE}" \
|
|
||||||
-y
|
|
||||||
cargo/bin/rustup toolchain install ${PKG_VERSION} --allow-downgrade --profile minimal --component clippy
|
|
||||||
cargo/bin/rustup target add ${RUST_TARGET_TRIPLE}
|
|
||||||
|
|
||||||
cat <<EOF >"${CARGO_HOME}/config"
|
|
||||||
[build]
|
|
||||||
target = "${RUST_TARGET_TRIPLE}"
|
|
||||||
|
|
||||||
[target.${RUST_TARGET_TRIPLE}]
|
|
||||||
ar = "${AR}"
|
|
||||||
linker = "${CC}"
|
|
||||||
EOF
|
|
||||||
|
|
||||||
cat <<EOF >"${CARGO_HOME}/env"
|
|
||||||
export CARGO_HOME="${CARGO_HOME}"
|
|
||||||
export CARGO_TARGET_DIR="\${PKG_BUILD}/.\${TARGET_NAME}"
|
|
||||||
if [ "${HOSTTYPE}" = "${TARGET_ARCH}" ]; then
|
|
||||||
# Until target-applies-to-host is incorporated into stable this
|
|
||||||
# option is required for a matching host-target triple to be compiled
|
|
||||||
# by the cross compiler. Read more here.
|
|
||||||
# https://doc.rust-lang.org/cargo/reference/unstable.html#target-applies-to-host
|
|
||||||
export __CARGO_TEST_CHANNEL_OVERRIDE_DO_NOT_USE_THIS="nightly"
|
|
||||||
export CARGO_UNSTABLE_TARGET_APPLIES_TO_HOST="true"
|
|
||||||
export CARGO_TARGET_APPLIES_TO_HOST="false"
|
|
||||||
fi
|
|
||||||
export PATH="${CARGO_HOME}/bin:${PATH}"
|
|
||||||
export PKG_CONFIG_ALLOW_CROSS="1"
|
|
||||||
export PKG_CONFIG_PATH="${PKG_CONFIG_LIBDIR}"
|
|
||||||
export RUSTUP_HOME="${CARGO_HOME}"
|
|
||||||
unset CFLAGS
|
|
||||||
EOF
|
|
||||||
}
|
|
@ -10,7 +10,7 @@ PKG_ARCH="any"
|
|||||||
PKG_LICENSE="MIT"
|
PKG_LICENSE="MIT"
|
||||||
PKG_SITE="https://github.com/librespot-org/librespot/"
|
PKG_SITE="https://github.com/librespot-org/librespot/"
|
||||||
PKG_URL="https://github.com/librespot-org/librespot/archive/v${PKG_VERSION}.tar.gz"
|
PKG_URL="https://github.com/librespot-org/librespot/archive/v${PKG_VERSION}.tar.gz"
|
||||||
PKG_DEPENDS_TARGET="toolchain alsa-lib avahi pulseaudio rust"
|
PKG_DEPENDS_TARGET="toolchain alsa-lib avahi pulseaudio cargo:host"
|
||||||
PKG_SECTION="service"
|
PKG_SECTION="service"
|
||||||
PKG_SHORTDESC="Librespot: play Spotify through Kodi using a Spotify app as a remote"
|
PKG_SHORTDESC="Librespot: play Spotify through Kodi using a Spotify app as a remote"
|
||||||
PKG_LONGDESC="Librespot (${PKG_VERSION_DATE}) lets you play Spotify through Kodi using a Spotify app as a remote."
|
PKG_LONGDESC="Librespot (${PKG_VERSION_DATE}) lets you play Spotify through Kodi using a Spotify app as a remote."
|
||||||
@ -23,17 +23,18 @@ PKG_ADDON_REQUIRES="script.module.requests:0.0.0"
|
|||||||
PKG_MAINTAINER="Anton Voyl (awiouy)"
|
PKG_MAINTAINER="Anton Voyl (awiouy)"
|
||||||
|
|
||||||
make_target() {
|
make_target() {
|
||||||
. $(get_build_dir rust)/cargo/env
|
|
||||||
cargo build \
|
cargo build \
|
||||||
|
--target ${TARGET_NAME} \
|
||||||
--release \
|
--release \
|
||||||
--no-default-features \
|
--no-default-features \
|
||||||
--features "alsa-backend pulseaudio-backend with-dns-sd"
|
--features "alsa-backend pulseaudio-backend with-dns-sd"
|
||||||
${STRIP} ${PKG_BUILD}/.${TARGET_NAME}/*/release/librespot
|
|
||||||
|
${STRIP} ${PKG_BUILD}/.${TARGET_NAME}/target/${TARGET_NAME}/release/librespot
|
||||||
}
|
}
|
||||||
|
|
||||||
addon() {
|
addon() {
|
||||||
mkdir -p ${ADDON_BUILD}/${PKG_ADDON_ID}/bin
|
mkdir -p ${ADDON_BUILD}/${PKG_ADDON_ID}/bin
|
||||||
cp ${PKG_BUILD}/.${TARGET_NAME}/*/release/librespot \
|
cp ${PKG_BUILD}/.${TARGET_NAME}/target/${TARGET_NAME}/release/librespot \
|
||||||
${ADDON_BUILD}/${PKG_ADDON_ID}/bin
|
${ADDON_BUILD}/${PKG_ADDON_ID}/bin
|
||||||
|
|
||||||
mkdir -p ${ADDON_BUILD}/${PKG_ADDON_ID}/lib
|
mkdir -p ${ADDON_BUILD}/${PKG_ADDON_ID}/lib
|
||||||
|
@ -5,7 +5,6 @@
|
|||||||
PKG_NAME="llvm"
|
PKG_NAME="llvm"
|
||||||
PKG_VERSION="13.0.1"
|
PKG_VERSION="13.0.1"
|
||||||
PKG_SHA256="ec6b80d82c384acad2dc192903a6cf2cdbaffb889b84bfb98da9d71e630fc834"
|
PKG_SHA256="ec6b80d82c384acad2dc192903a6cf2cdbaffb889b84bfb98da9d71e630fc834"
|
||||||
PKG_ARCH="x86_64"
|
|
||||||
PKG_LICENSE="Apache-2.0"
|
PKG_LICENSE="Apache-2.0"
|
||||||
PKG_SITE="http://llvm.org/"
|
PKG_SITE="http://llvm.org/"
|
||||||
PKG_URL="https://github.com/llvm/llvm-project/releases/download/llvmorg-${PKG_VERSION}/llvm-${PKG_VERSION}.src.tar.xz"
|
PKG_URL="https://github.com/llvm/llvm-project/releases/download/llvmorg-${PKG_VERSION}/llvm-${PKG_VERSION}.src.tar.xz"
|
||||||
@ -28,11 +27,10 @@ PKG_CMAKE_OPTS_COMMON="-DLLVM_INCLUDE_TOOLS=ON \
|
|||||||
-DLLVM_ENABLE_SPHINX=OFF \
|
-DLLVM_ENABLE_SPHINX=OFF \
|
||||||
-DLLVM_ENABLE_OCAMLDOC=OFF \
|
-DLLVM_ENABLE_OCAMLDOC=OFF \
|
||||||
-DLLVM_ENABLE_BINDINGS=OFF \
|
-DLLVM_ENABLE_BINDINGS=OFF \
|
||||||
-DLLVM_TARGETS_TO_BUILD=AMDGPU \
|
|
||||||
-DLLVM_ENABLE_TERMINFO=OFF \
|
-DLLVM_ENABLE_TERMINFO=OFF \
|
||||||
-DLLVM_ENABLE_ASSERTIONS=OFF \
|
-DLLVM_ENABLE_ASSERTIONS=OFF \
|
||||||
-DLLVM_ENABLE_WERROR=OFF \
|
-DLLVM_ENABLE_WERROR=OFF \
|
||||||
-DLLVM_ENABLE_ZLIB=ON \
|
-DLLVM_ENABLE_ZLIB=OFF \
|
||||||
-DLLVM_ENABLE_LIBXML2=OFF \
|
-DLLVM_ENABLE_LIBXML2=OFF \
|
||||||
-DLLVM_BUILD_LLVM_DYLIB=ON \
|
-DLLVM_BUILD_LLVM_DYLIB=ON \
|
||||||
-DLLVM_LINK_LLVM_DYLIB=ON \
|
-DLLVM_LINK_LLVM_DYLIB=ON \
|
||||||
@ -43,27 +41,43 @@ PKG_CMAKE_OPTS_COMMON="-DLLVM_INCLUDE_TOOLS=ON \
|
|||||||
-DLLVM_ENABLE_Z3_SOLVER=OFF"
|
-DLLVM_ENABLE_Z3_SOLVER=OFF"
|
||||||
|
|
||||||
pre_configure_host() {
|
pre_configure_host() {
|
||||||
CXXFLAGS+=" -DLLVM_CONFIG_EXEC_PREFIX=\\\"${SYSROOT_PREFIX}/usr\\\""
|
case "${TARGET_ARCH}" in
|
||||||
PKG_CMAKE_OPTS_HOST="${PKG_CMAKE_OPTS_COMMON}"
|
"arm")
|
||||||
|
LLVM_BUILD_TARGETS="X86\;ARM"
|
||||||
|
;;
|
||||||
|
"aarch64")
|
||||||
|
LLVM_BUILD_TARGETS="X86\;AArch64"
|
||||||
|
;;
|
||||||
|
"x86_64")
|
||||||
|
LLVM_BUILD_TARGETS="X86\;AMDGPU"
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
PKG_CMAKE_OPTS_HOST="${PKG_CMAKE_OPTS_COMMON} \
|
||||||
|
-DLLVM_TARGETS_TO_BUILD=${LLVM_BUILD_TARGETS}"
|
||||||
|
}
|
||||||
|
|
||||||
|
post_make_host() {
|
||||||
|
ninja ${NINJA_OPTS} llvm-config llvm-tblgen
|
||||||
|
}
|
||||||
|
|
||||||
|
post_makeinstall_host() {
|
||||||
|
mkdir -p ${TOOLCHAIN}/bin
|
||||||
|
cp -a bin/llvm-config ${TOOLCHAIN}/bin
|
||||||
|
cp -a bin/llvm-tblgen ${TOOLCHAIN}/bin
|
||||||
}
|
}
|
||||||
|
|
||||||
pre_configure_target() {
|
pre_configure_target() {
|
||||||
PKG_CMAKE_OPTS_TARGET="${PKG_CMAKE_OPTS_COMMON} \
|
PKG_CMAKE_OPTS_TARGET="${PKG_CMAKE_OPTS_COMMON} \
|
||||||
|
-DLLVM_TARGETS_TO_BUILD=AMDGPU \
|
||||||
-DLLVM_TARGET_ARCH="${TARGET_ARCH}" \
|
-DLLVM_TARGET_ARCH="${TARGET_ARCH}" \
|
||||||
-DLLVM_TABLEGEN=${TOOLCHAIN}/bin/llvm-tblgen"
|
-DLLVM_TABLEGEN=${TOOLCHAIN}/bin/llvm-tblgen"
|
||||||
}
|
}
|
||||||
|
|
||||||
make_host() {
|
|
||||||
ninja ${NINJA_OPTS} llvm-config llvm-tblgen
|
|
||||||
}
|
|
||||||
|
|
||||||
makeinstall_host() {
|
|
||||||
cp -a lib/libLLVM-*.so ${TOOLCHAIN}/lib
|
|
||||||
cp -a bin/llvm-config ${TOOLCHAIN}/bin/llvm-config-host
|
|
||||||
cp -a bin/llvm-tblgen ${TOOLCHAIN}/bin
|
|
||||||
}
|
|
||||||
|
|
||||||
post_makeinstall_target() {
|
post_makeinstall_target() {
|
||||||
|
mkdir -p ${SYSROOT_PREFIX}/usr/bin
|
||||||
|
cp -a ${TOOLCHAIN}/bin/llvm-config ${SYSROOT_PREFIX}/usr/bin
|
||||||
|
|
||||||
rm -rf ${INSTALL}/usr/bin
|
rm -rf ${INSTALL}/usr/bin
|
||||||
rm -rf ${INSTALL}/usr/lib/LLVMHello.so
|
rm -rf ${INSTALL}/usr/lib/LLVMHello.so
|
||||||
rm -rf ${INSTALL}/usr/lib/libLTO.so
|
rm -rf ${INSTALL}/usr/lib/libLTO.so
|
||||||
|
@ -1,13 +0,0 @@
|
|||||||
--- a/tools/llvm-config/llvm-config.cpp 2019-12-15 20:54:21.898634608 +0100
|
|
||||||
+++ b/tools/llvm-config/llvm-config.cpp 2019-12-15 20:56:12.280223943 +0100
|
|
||||||
@@ -285,6 +285,10 @@
|
|
||||||
CurrentExecPrefix =
|
|
||||||
sys::path::parent_path(sys::path::parent_path(CurrentPath)).str();
|
|
||||||
|
|
||||||
+#ifdef LLVM_CONFIG_EXEC_PREFIX
|
|
||||||
+ CurrentExecPrefix = LLVM_CONFIG_EXEC_PREFIX;
|
|
||||||
+#endif
|
|
||||||
+
|
|
||||||
// Check to see if we are inside a development tree by comparing to possible
|
|
||||||
// locations (prefix style or CMake style).
|
|
||||||
if (sys::fs::equivalent(CurrentExecPrefix, LLVM_OBJ_ROOT)) {
|
|
11
packages/rust/cargo-snapshot/package.mk
Normal file
11
packages/rust/cargo-snapshot/package.mk
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
# SPDX-License-Identifier: GPL-2.0
|
||||||
|
# Copyright (C) 2017-present Team LibreELEC (https://libreelec.tv)
|
||||||
|
|
||||||
|
PKG_NAME="cargo-snapshot"
|
||||||
|
PKG_VERSION="$(get_pkg_version rust)"
|
||||||
|
PKG_SHA256="48edb2eb51d7c56ef9a3130f0b331e83f139559161f6f93b9588d28cf72610f3"
|
||||||
|
PKG_LICENSE="MIT"
|
||||||
|
PKG_SITE="https://www.rust-lang.org"
|
||||||
|
PKG_URL="https://static.rust-lang.org/dist/cargo-${PKG_VERSION}-${MACHINE_HARDWARE_CPU}-unknown-linux-gnu.tar.xz"
|
||||||
|
PKG_LONGDESC="cargo bootstrap package"
|
||||||
|
PKG_TOOLCHAIN="manual"
|
32
packages/rust/cargo/package.mk
Normal file
32
packages/rust/cargo/package.mk
Normal file
@ -0,0 +1,32 @@
|
|||||||
|
# SPDX-License-Identifier: GPL-2.0
|
||||||
|
# Copyright (C) 2017-present Team LibreELEC (https://libreelec.tv)
|
||||||
|
|
||||||
|
PKG_NAME="cargo"
|
||||||
|
PKG_VERSION="$(get_pkg_version rust)"
|
||||||
|
PKG_LICENSE="MIT"
|
||||||
|
PKG_SITE="https://www.rust-lang.org"
|
||||||
|
PKG_DEPENDS_HOST="rust:host"
|
||||||
|
PKG_DEPENDS_UNPACK="cargo-snapshot rust"
|
||||||
|
PKG_LONGDESC="Cargo is the Rust package manager"
|
||||||
|
PKG_TOOLCHAIN="manual"
|
||||||
|
|
||||||
|
pre_configure_host() {
|
||||||
|
"$(get_build_dir cargo-snapshot)/install.sh" --prefix="${PKG_BUILD}/cargo-snapshot" --disable-ldconfig
|
||||||
|
}
|
||||||
|
|
||||||
|
configure_host() {
|
||||||
|
cd ${PKG_BUILD}
|
||||||
|
}
|
||||||
|
|
||||||
|
make_host() {
|
||||||
|
cd ${PKG_BUILD}
|
||||||
|
|
||||||
|
export RUSTC_BOOTSTRAP="1"
|
||||||
|
|
||||||
|
./cargo-snapshot/bin/cargo build -v --target ${RUST_HOST} --release --manifest-path="$(get_build_dir rust)/src/tools/cargo/Cargo.toml"
|
||||||
|
}
|
||||||
|
|
||||||
|
makeinstall_host() {
|
||||||
|
mkdir -p ${TOOLCHAIN}/bin
|
||||||
|
cp -a ${PKG_BUILD}/.${RUST_HOST}/target/${RUST_HOST}/release/cargo ${TOOLCHAIN}/bin/
|
||||||
|
}
|
11
packages/rust/rust-std-snapshot/package.mk
Normal file
11
packages/rust/rust-std-snapshot/package.mk
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
# SPDX-License-Identifier: GPL-2.0
|
||||||
|
# Copyright (C) 2017-present Team LibreELEC (https://libreelec.tv)
|
||||||
|
|
||||||
|
PKG_NAME="rust-std-snapshot"
|
||||||
|
PKG_VERSION="$(get_pkg_version rust)"
|
||||||
|
PKG_SHA256="6fb8ee3650beb10836ae48a9aaa535473e64eaca20695b88113267aea3c7557f"
|
||||||
|
PKG_LICENSE="MIT"
|
||||||
|
PKG_SITE="https://www.rust-lang.org"
|
||||||
|
PKG_URL="https://static.rust-lang.org/dist/rust-std-${PKG_VERSION}-${MACHINE_HARDWARE_CPU}-unknown-linux-gnu.tar.xz"
|
||||||
|
PKG_LONGDESC="rust std library bootstrap package"
|
||||||
|
PKG_TOOLCHAIN="manual"
|
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"
|
||||||
|
}
|
||||||
|
|
11
packages/rust/rustc-snapshot/package.mk
Normal file
11
packages/rust/rustc-snapshot/package.mk
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
# SPDX-License-Identifier: GPL-2.0
|
||||||
|
# Copyright (C) 2017-present Team LibreELEC (https://libreelec.tv)
|
||||||
|
|
||||||
|
PKG_NAME="rustc-snapshot"
|
||||||
|
PKG_VERSION="$(get_pkg_version rust)"
|
||||||
|
PKG_SHA256="fc0b41c15e348ad0eeb7a6c015a922a2ac95e9577e531635558b26d99399f315"
|
||||||
|
PKG_LICENSE="MIT"
|
||||||
|
PKG_SITE="https://www.rust-lang.org"
|
||||||
|
PKG_URL="https://static.rust-lang.org/dist/rustc-${PKG_VERSION}-${MACHINE_HARDWARE_CPU}-unknown-linux-gnu.tar.xz"
|
||||||
|
PKG_LONGDESC="rustc bootstrap compiler"
|
||||||
|
PKG_TOOLCHAIN="manual"
|
Loading…
x
Reference in New Issue
Block a user