Commit Graph
66 Commits
Author SHA1 Message Date
Steven Walter 3b783652cc rust-native shouldn't depend on TARGET variables
The whole point of rust-native is that it should be common for all
targets.  If we reference TARGET variables during the build of
rust-native, then bitbake will build a different version for different
TARGETS.
2020-05-11 16:26:48 -04:00
Alistair Francis 72aa4ef3ab rust: Use Python3 native for build
Use Python3 as the native Python instead of Python2.

Signed-off-by: Alistair Francis <alistair@alistair23.me>
2019-12-26 18:46:53 -08:00
Zubair Lutfullah Kakakhel 186ec59085 rust: Improve TUNE_FEATURE parsing
Since https://github.com/openembedded/openembedded-core/commit/ac83d22eb5031f7fdd09d34a1a46d92fd3e39a3c

The armvX arch definition is not present in TUNE_FEATURES but is now in
MACHINEOVERRIDES. Improve parsing so that MACHINEOVERRIDES is also checked.

Fixes #240

Tested on raspberrypi3 with balenaOS which uses rust.

Signed-off-by: Zubair Lutfullah Kakakhel <zubair@balena.io>
2019-11-12 10:39:41 +00:00
Alistair Francis 150b1591d6 rust-cross: Add riscv32 data layout information
This was generated with:
    clang --target=riscv32  -emit-llvm -S -x c /dev/null -o aaa |  cat aaa | grep "target datalayout"

Signed-off-by: Alistair Francis <alistair.francis@wdc.com>
2019-08-23 15:57:29 -07:00
Johan Anderholm b3d1b589ee Update to rust version 1.32.0 2019-02-14 15:29:17 +00:00
Dan Dedrick e7c10de555 rust: don't configure thumb if not in TUNE_FEATURES
ARM_INSTRUCTION_SET, and therefore ARM_THUMB_OPT also, expect to only be
used in conjunction with the thumb TUNE_FEATURES. So thumb-mode should only
be added if thumb is in TUNE_FEATURES and ARM_THUMB_OPT is thumb.

The commit https://git.yoctoproject.org/cgit/cgit.cgi/poky/commit/meta/conf/machine/include/arm/arch-armv7a.inc?id=3e7d26e31a724009e69788460737e07163a14051
caused armv7a.inc to set ARM_INSTRUCTION_SET to thumb and the commit
message explicitly states that the change should have no effect unless
TUNE_FEATURES also includes thumb. This change to rust will allow that
assumption to continue to be true.
2019-01-14 15:58:54 -05:00
Johan Anderholm 496b75fa1f Update to rust version 1.31.1
Also make use of the sources vendored in the rustc package instead of
letting bitbake download the sources.
2019-01-03 17:31:46 +01:00
Khem Raj bf01840f5b rust-cross: Add riscv64 data layout information
clang --target=riscv64  -emit-llvm -S -x c /dev/null -o aaa |  cat aaa | grep "target datalayout"

Signed-off-by: Khem Raj <raj.khem@gmail.com>
2018-12-26 14:52:22 -08:00
Khem Raj 1b00814593 rust-cross: Add mips64 data layout llvm specifications
Signed-off-by: Khem Raj <raj.khem@gmail.com>
2018-12-26 14:52:22 -08:00
Khem Raj 68d6bce609 rust-cross: Add ppc support
This ensures that rust-cross can be compiled for ppc arch

Signed-off-by: Khem Raj <raj.khem@gmail.com>
2018-12-26 14:52:18 -08:00
Khem Raj 446d28d6e1 rust: Use llvm-rust-native and env variables to configure llvm-config
Signed-off-by: Khem Raj <raj.khem@gmail.com>
2018-11-09 22:53:49 -08:00
Johan Anderholm 8e6c6271fc Handle env and llvm-target for musl
Further changes needed for musl to work.
env needs to be set to "musl" for unwinding work properly.
Also the llvm target should end with "-musl" and not "-gnu".
2018-07-06 19:34:33 +02:00
Johan Anderholm 6066f1d2df Corrected target-c-int-width
The correct value for x86_64 and aarch64 is 32
2018-07-06 19:34:33 +02:00
Johan Anderholm 6a0d148968 Make it possible to build with TCLIBC="musl" (musl as libc) 2018-07-06 19:34:33 +02:00
Johan Anderholm e1fa6d39ce Don't install rust-llvm system-wide
Put rust-llvm into a directory of it's own. This avoids conflicts
between the official llvm and rusts temporary one. It solves
interoperability issues with meta-clang.

Use /usr/lib/llvm-rust/ as prefix because that matches what llvm does
themselves on debian and ubuntu.
2018-07-06 19:30:36 +02:00
Adam Schwalm 0639277e4c Add 1.24.0 for rocko 2018-02-27 16:19:12 -06:00
Tyler Hall 52ea673a8f rust: allow configuring panic-strategy
This defaults to "unwind" if not set, so this alone has no effect.

Signed-off-by: Tyler Hall <tylerwhall@gmail.com>
2018-01-23 17:54:15 -05:00
Johan Anderholm f02df59eea Add support for the mips32 architecture
Support for mips32 big (mips) and little endian (mipsel) for mips32
and mips32r2 cpus. The big endian target can be verified with the
qemumips machine.
2017-12-01 19:36:15 +01:00
Johan Anderholm 141177fbf9 rust: specify target-c-int-width
The "target_c_int_width field is added to librustc_back since rust
1.22.0 because not all rust targets (e.g. msp430-none-elf, avr)
have 32-bit int types any more.
2017-11-27 15:48:54 -06:00
Johan Anderholm 37813c4dff rust: Don't specify allocator for >= 1.20.0
System allocator is the default in rust.
2017-09-30 11:23:29 +02:00
Doug Goldstein 3bf7088579 bump to Rust 1.20.0 and Cargo 0.21 2017-09-29 15:37:16 -05:00
Johan Anderholm a4fe235317 Switch to rustbuild
Switch the build process to using Rust's new build system called
rustbuild. At the same time stop using jemalloc on all platforms and
switch to the system allocator since that was simplier to do.
2017-09-29 09:49:33 -05:00
Derek Straka 64cdd4b714 Update the source paths for each item
The path to the rust source changes from 1.15 so preemptively make
changes to prepare for that.

Signed-off-by: Derek Straka <derek@asterius.io>
Signed-off-by: Doug Goldstein <cardoe@cardoe.com>
2017-03-07 14:41:13 -06:00
Derek Straka 97fcc5db56 rust: update the cpu selection to use PACKAGE_ARCH to ensure older processors can run created executables when building targets that have newer features
Signed-off-by: Derek Straka <derek@asterius.io>
2017-01-04 17:15:07 -05:00
Derek Straka 52c0f97ff6 getVar will expand by default, so the 'True' option is no longer required
Signed-off-by: Derek Straka <derek@asterius.io>
2016-12-06 16:08:41 -05:00
Doug Goldstein 43c139f131 rust: remove --disable-static only for rust
Only remove --disable-static from OECONF for things built from the rust
source and not things inheriting rust.
2016-12-05 10:55:14 -06:00
Doug Goldstein 6083dff0b6 drop rust-installer.bbclass
This is only necessary for installations of rust so move the actual
functional bits into the do_install() phase of rust.
2016-12-05 10:55:14 -06:00
Doug Goldstein 1d0e0e8343 rust: data layout changed between 1.10.0 and 1.12.1
The data layout for aarch64 changed between 1.10.0 and 1.12.1 of
rust-llvm.
2016-12-02 23:07:40 -06:00
Doug Goldstein 634498e0ac rust: bump versions to 1.12.1
Redid how compiler-rt is built by using the Rust makefiles to build it
instead of compiler-rt's build system. Rust itself deviated from using
compiler-rt's build system and provided their own rules requiring the
source tree to be configured to use them.
2016-12-02 23:07:40 -06:00
Doug Goldstein 95fa6c92a9 rust: remove unnecessary install chmods
The comment isn't true anymore and we don't need to run chmod anymore.
2016-12-02 09:26:46 -06:00
Doug Goldstein e414321228 rust: drop variable from global scope
This variable had one place it was being used and it didn't need to be
globally scoped.
2016-12-02 08:58:53 -06:00
Doug Goldstein 07069a1869 rust: drop outdated comment and variable 2016-12-02 08:57:09 -06:00
Doug Goldstein 5985331f33 rust: remove patch to change path to $S/mk/cfg
Since we no longer use shared source we can modify the source directory
as we build. This drops another patch we need to build and simplifies
the addition of Rust 1.12.1 in #97.
2016-12-02 08:55:34 -06:00
Doug Goldstein dfa7dc1bad rust: drop link args from the target JSONs
The linker args have been moved into the Cargo configuration so there's
no need for them in the target spec files.
2016-11-23 14:15:17 -06:00
Doug Goldstein 87f67e6d86 remove a call to 'env'
For debugging people should really use 'bitbake -e rust' instead.
2016-11-22 11:53:43 -06:00
Doug Goldstein e4d37ce4f1 rust: drop bindir/libdir patch
I'm honestly not sure what this patch does since everything appears to
build the same with and without it. I did a `tree` of the sysroots and
images and I don't see any file differences. Something like this used to
be necessary in Gentoo but I dropped it a few releases back.
2016-11-09 14:28:12 -06:00
Doug Goldstein ed62ea5176 rust: drop local-rust PACKAGECONFIG
This drops the ability to supply your own rust through the PACKAGECONFIG
local-rust option. This isn't tested and we really need to better expand
support for build arches. At the same time this simplifies how the rust
stage0 snapshot is extracted and used by the build system.
2016-11-09 08:11:07 -06:00
Doug Goldstein 8673659f6a rust: convert snapshot to common include
Create a common include that can be used by everything that depends on
the Rust source. Including stage0 bits and hashes of the source
tarballs.
2016-11-07 16:27:03 -06:00
Doug Goldstein ce9949725c rust: strip whitespace from features
This whitespace in here causes rust to not be happy with the features
and throw warnings about a feature such as ' +sse3' being unsupported
when '+sse3' works just fine. Amazingly will cause rustc to abort when
you try to resolve the features to valid configs with the `--print` arg
to rustc.
2016-11-03 17:05:41 -05:00
Doug Goldstein bef7c3f07e rust: fix LLVM data layouts for Rust 1.10
The data layout changed for Rust 1.10. I noticed this because I got a
crash when using rust-native to build rust. The assertion that hit was
saying data layout mismatch and caused me to check the values in the
Rust sources.
2016-11-03 16:31:21 -05:00
Doug Goldstein 7f7b3cd652 rust: stop using shared source
Convert rust to not use the shared source setup and instead use its own
extracted directory. Include the version info in the bitbake file so
that in the future we can support multiple versions via a
PREFERRED_VERSIONS variable.
2016-11-01 13:00:35 -05:00
Cody P Schafer 1436b99692 rust: avoid using flags for TARGET for non-TARGET 2016-10-01 21:58:39 -04:00
Cody P Schafer 41800bdd99 rust.inc: ensure proper flags are given to rustllvm
rustllvm ships some c++ code that we need to ensure is built with the
flags we want. Abuse an existing variable to make this happen.

This should fix our issues with the libstdc++ cxx11 abi (_GLIBCXX_USE_CXX11_ABI).
2016-09-25 02:30:46 -04:00
Cody P Schafer 9b8d884d6b rust.inc: start passing *FLAGS vars to compile
When rust's build system builds llvm itself, it uses these flags. Avoid
them interfering with other things by cleaning their usage out of the
platform cfg mk file.
2016-09-25 02:29:29 -04:00
Cody P Schafer 45d540de36 rust.inc: EXTRA_OEMAKE is now empty by default, drop our set
Since poky rev: f8520142c8a33fa9414314511fb01fbe79a2bf01, oe-core rev:
aeb653861a0ec39ea7a014c0622980edcbf653fa
2016-09-25 00:53:39 -04:00
Cody P Schafer 1cb0b64537 rust: remove duplicated TARGET_LLVM_* vars 2016-09-24 13:20:00 -04:00
Steven Walter f6c7789c95 rust-cross: don't actually build a compiler
Instead of building a full compiler, we can use rust-native to
cross-compile.  All we need is a cross-compiled standard library, which
libstd-rs builds, and a compiler spec file.  rust-cross is now just used
to generate the json spec file for cross-compiling, which is naturally
much faster.
2016-09-02 12:01:28 -04:00
Steven Walter 0a1d85272d Revert "rust: drop unnecessary data layout targets"
Rust 1.10.0 requires the data-layout field

This reverts commit d749cbb98a.
2016-08-28 14:58:14 -04:00
Steven Walter 3d0fab8860 Rework support for downloading the stage0 rustc
Rust does something fairly different than in 1.7.  Instead of just
expecting the tarball to exist, it either expects an already extracted
and ready toolchain, or else it does everything itself.

To work with that, we'll always pass --use-local-rust to ./configure so
that bootstrap.py doesn't try to download anything.  We'll either
download and setup a snapshot ourselves, or use the system rust, based
on PACKAGECONFIG[local-rust] as before
2016-08-28 14:58:14 -04:00
Steven Walter ec3cbddb38 Rebase patches for 1.10.0 2016-08-28 14:57:48 -04:00