| # All host rust packages should depend on this option |
| # When adding new entries below, update RUST_HOSTS in utils/update-rust |
| config BR2_PACKAGE_HOST_RUSTC_ARCH_SUPPORTS |
| bool |
| default y if BR2_HOSTARCH = "aarch64" |
| default y if BR2_HOSTARCH = "powerpc" |
| default y if BR2_HOSTARCH = "powerpc64" |
| default y if BR2_HOSTARCH = "powerpc64le" |
| default y if BR2_HOSTARCH = "riscv64" |
| default y if BR2_HOSTARCH = "s390x" |
| default y if BR2_HOSTARCH = "x86" |
| default y if BR2_HOSTARCH = "x86_64" |
| |
| # The pre-built Rust standard library is only available for a number |
| # of architectures/C libraries combinations, with different levels of |
| # support: Tier 1 platforms, Tier 2 platforms with host tools, Tier 2 |
| # platforms, Tier 3 platforms. Below, we support Tier 1, Tier 2 with |
| # host tools and Tier 2 platforms. |
| |
| # The below entries match Tier 1 platforms as described at |
| # https://doc.rust-lang.org/nightly/rustc/platform-support.html. |
| # When adding new entries below, update RUST_TARGETS in utils/update-rust |
| config BR2_PACKAGE_HOST_RUSTC_TARGET_TIER1_PLATFORMS |
| bool |
| # aarch64-unknown-linux-gnu |
| default y if BR2_aarch64 && BR2_TOOLCHAIN_USES_GLIBC |
| # i686-unknown-linux-gnu |
| default y if (BR2_x86_i686 || BR2_x86_pentiumpro || BR2_X86_CPU_HAS_MMX) && BR2_TOOLCHAIN_USES_GLIBC |
| # x86_64-unknown-linux-gnu |
| default y if BR2_x86_64 && BR2_TOOLCHAIN_USES_GLIBC |
| |
| # The below entries match Tier 2 platforms with host tools as |
| # described at |
| # https://doc.rust-lang.org/nightly/rustc/platform-support.html. |
| # When adding new entries below, update RUST_TARGETS in utils/update-rust |
| config BR2_PACKAGE_HOST_RUSTC_TARGET_TIER2_HOST_TOOLS_PLATFORMS |
| bool |
| # aarch64-unknown-linux-musl |
| default y if BR2_aarch64 && BR2_TOOLCHAIN_USES_MUSL |
| # arm-unknown-linux-gnueabi |
| default y if BR2_ARM_CPU_ARMV6 && BR2_ARM_EABI && BR2_TOOLCHAIN_USES_GLIBC |
| # arm-unknown-linux-gnueabihf |
| default y if BR2_ARM_CPU_ARMV6 && BR2_ARM_EABIHF && BR2_TOOLCHAIN_USES_GLIBC |
| # armv7-unknown-linux-gnueabihf |
| default y if BR2_ARM_CPU_ARMV7A && BR2_ARM_EABIHF && BR2_TOOLCHAIN_USES_GLIBC |
| # armv7-unknown-linux-gnueabihf for armv8 hardware with 32-bit |
| # userspace |
| default y if BR2_arm && BR2_ARM_CPU_ARMV8A && BR2_ARM_EABIHF && BR2_TOOLCHAIN_USES_GLIBC |
| # powerpc-unknown-linux-gnu |
| default y if BR2_powerpc && BR2_TOOLCHAIN_USES_GLIBC |
| # powerpc64-unknown-linux-gnu |
| default y if BR2_powerpc64 && BR2_TOOLCHAIN_USES_GLIBC |
| # powerpc64le-unknown-linux-gnu |
| default y if BR2_powerpc64le && BR2_TOOLCHAIN_USES_GLIBC |
| # riscv64gc-unknown-linux-gnu |
| # "g" stands for imafd, and we also need "c". |
| default y if BR2_RISCV_64 && BR2_RISCV_ISA_RVI && BR2_RISCV_ISA_RVM && \ |
| BR2_RISCV_ISA_RVA && BR2_RISCV_ISA_RVF && \ |
| BR2_RISCV_ISA_RVD && BR2_RISCV_ISA_RVC && \ |
| BR2_TOOLCHAIN_USES_GLIBC |
| # s390x-unknown-linux-gnu |
| default y if BR2_s390x && BR2_TOOLCHAIN_USES_GLIBC |
| # x86_64-unknown-linux-musl |
| default y if BR2_x86_64 && BR2_TOOLCHAIN_USES_MUSL |
| |
| # The below entries match Tier 2 platforms without host tools as |
| # described at |
| # https://doc.rust-lang.org/nightly/rustc/platform-support.html. |
| # When adding new entries below, update RUST_TARGETS in utils/update-rust |
| config BR2_PACKAGE_HOST_RUSTC_TARGET_TIER2_PLATFORMS |
| bool |
| # arm-unknown-linux-musleabi |
| default y if BR2_ARM_CPU_ARMV6 && BR2_ARM_EABI && BR2_TOOLCHAIN_USES_MUSL |
| # arm-unknown-linux-musleabihf |
| default y if BR2_ARM_CPU_ARMV6 && BR2_ARM_EABIHF && BR2_TOOLCHAIN_USES_MUSL |
| # armv5te-unknown-linux-gnueabi |
| default y if BR2_ARM_CPU_ARMV5 && BR2_ARM_EABI && BR2_TOOLCHAIN_USES_GLIBC |
| # armv5te-unknown-linux-musleabi |
| default y if BR2_ARM_CPU_ARMV5 && BR2_ARM_EABI && BR2_TOOLCHAIN_USES_MUSL |
| # armv7-unknown-linux-gnueabi |
| default y if BR2_ARM_CPU_ARMV7A && BR2_ARM_EABI && BR2_TOOLCHAIN_USES_GLIBC |
| # armv7-unknown-linux-musleabi |
| default y if BR2_ARM_CPU_ARMV7A && BR2_ARM_EABI && BR2_TOOLCHAIN_USES_MUSL |
| # armv7-unknown-linux-musleabihf |
| default y if BR2_ARM_CPU_ARMV7A && BR2_ARM_EABIHF && BR2_TOOLCHAIN_USES_MUSL |
| # armv7-unknown-linux-musleabihf for armv8 hardware with 32-bit |
| # userspace |
| default y if BR2_arm && BR2_ARM_CPU_ARMV8A && BR2_ARM_EABIHF && BR2_TOOLCHAIN_USES_MUSL |
| # i586-unknown-linux-gnu |
| default y if BR2_x86_i586 && BR2_TOOLCHAIN_USES_GLIBC |
| # i586-unknown-linux-musl |
| default y if BR2_x86_i586 && BR2_TOOLCHAIN_USES_MUSL |
| # i686-unknown-linux-musl |
| default y if (BR2_x86_i686 || BR2_x86_pentiumpro || BR2_X86_CPU_HAS_MMX) && BR2_TOOLCHAIN_USES_MUSL |
| # sparc64-unknown-linux-gnu |
| default y if BR2_sparc64 && BR2_TOOLCHAIN_USES_GLIBC |
| |
| # All target rust packages should depend on this option |
| # Note: With musl based toolchain, we need a C++ cross compiler to |
| # build host-rust some target libraries (libunwind) from llvm source |
| # code bundled in rust sources. |
| config BR2_PACKAGE_HOST_RUSTC_TARGET_ARCH_SUPPORTS |
| bool |
| default y if BR2_PACKAGE_HOST_RUSTC_TARGET_TIER1_PLATFORMS |
| default y if BR2_PACKAGE_HOST_RUSTC_TARGET_TIER2_HOST_TOOLS_PLATFORMS |
| default y if BR2_PACKAGE_HOST_RUSTC_TARGET_TIER2_PLATFORMS |
| depends on BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_USES_MUSL |
| depends on BR2_PACKAGE_HOST_RUSTC_ARCH_SUPPORTS |
| |
| config BR2_PACKAGE_HOST_RUSTC_ARCH |
| string |
| default "armv5te" if BR2_ARM_CPU_ARMV5 |
| default "arm" if BR2_ARM_CPU_ARMV6 |
| default "armv7" if BR2_ARM_CPU_ARMV7A |
| default "armv7" if BR2_ARM_CPU_ARMV7A || (BR2_arm && BR2_ARM_CPU_ARMV8A) |
| default "riscv64gc" if BR2_RISCV_64 |
| default BR2_ARCH |
| |
| config BR2_PACKAGE_HOST_RUSTC_ABI |
| string |
| default "eabi" if BR2_ARM_EABI |
| default "eabihf" if BR2_ARM_EABIHF |
| default "abi64" if BR2_MIPS_NABI64 |
| |
| config BR2_PACKAGE_HOST_RUSTC |
| bool "host rustc" |
| depends on BR2_PACKAGE_HOST_RUSTC_ARCH_SUPPORTS |
| help |
| Compiler for the Rust language |
| |
| http://www.rust-lang.org |
| |
| if BR2_PACKAGE_HOST_RUSTC |
| |
| choice |
| prompt "Rust compiler variant" |
| default BR2_PACKAGE_HOST_RUST_BIN |
| help |
| Select a Rust compiler |
| |
| config BR2_PACKAGE_HOST_RUST |
| bool "host rust" |
| # RUSTC_TARGET_NAME must be set for building host-rust |
| # otherwise config.toml is broken. |
| depends on BR2_PACKAGE_HOST_RUSTC_TARGET_ARCH_SUPPORTS |
| # triggers ICE on trunc_int_for_mode, at explow.c:56 |
| depends on BR2_TOOLCHAIN_GCC_AT_LEAST_5 || !BR2_aarch64 |
| # rust uses llvm >= 17 since 1.73.0 |
| select BR2_HOST_CMAKE_AT_LEAST_3_20 |
| help |
| This package will build the compiler for the host as well as |
| two flavors of the standard library: one for the host, another |
| for the target. Both are installed in the host directory. |
| |
| comment "host-rust needs a toolchain w/ gcc >= 5" |
| depends on BR2_aarch64 |
| depends on !BR2_TOOLCHAIN_GCC_AT_LEAST_5 |
| |
| config BR2_PACKAGE_HOST_RUST_BIN |
| bool "host rust (pre-built)" |
| help |
| This package will install pre-built versions of the compiler |
| for the host and the Rust standard library for the target. |
| |
| endchoice |
| |
| endif |
| |
| config BR2_PACKAGE_PROVIDES_HOST_RUSTC |
| string |
| default "host-rust" if BR2_PACKAGE_HOST_RUST |
| # Default to host-rust-bin as long as host arch supports it |
| default "host-rust-bin" if !BR2_PACKAGE_HOST_RUST |
| depends on BR2_PACKAGE_HOST_RUSTC_ARCH_SUPPORTS |