140 Commits

Author SHA1 Message Date
fd0e7370ce add kirkstone layer compat 2022-12-04 08:29:40 +01:00
Steven Walter
458ab61bef Merge pull request #393 from ColinFinck/feature/rust-1.64.0
Add Rust 1.64.0, remove 1.54.0 and 1.58.1
2022-10-02 21:34:18 -04:00
Colin Finck
681204147c Add Rust 1.64.0, remove 1.54.0 and 1.58.1 2022-09-30 14:23:49 +02:00
Steven Walter
59c4377bdb Merge pull request #385 from mlilien/1.61.0
rust 1.61.0
2022-09-23 14:29:55 -04:00
Marcel Lilienthal
f1c1a586cd correct LLVM_RELEASE 2022-09-23 18:09:44 +02:00
Marcel Lilienthal
52dbb6731b added rust 1.61.0 2022-09-23 18:09:44 +02:00
Steven Walter
b67791b753 Merge pull request #391 from meta-rust/fix-ci
Fix github CI
2022-09-08 20:56:35 -04:00
Steven Walter
24c3e2016d main.yml: disable broken SDK test
The SDK fails to build with a dependency error:

Problem: package packagegroup-rust-cross-canadian-qemux86 requires rust-cross-canadian-x86-64, but none of the providers can be installed
 - conflicting requests
 - nothing provides libc.so.6(GLIBC_2.34)(64bit)
 - nothing provides libstdc++.so.6(GLIBCXX_3.4.29)(64bit)
2022-09-08 20:45:58 -04:00
Steven Walter
c92db6c0a0 main.yml: disable uninative
uninative causes build errors on Ubuntu 22.04
2022-09-08 20:45:32 -04:00
Colin Finck
c654f5cb92 Merge pull request #376 from ColinFinck/rust-1.58.1
Import Rust 1.58.1 from openembedded-core, remove Rust 1.51.0
2022-02-21 13:30:51 +01:00
Colin Finck
297dbb9d1a Fix building cargo 1.54.0 after the refactoring. 2022-02-09 09:45:05 +01:00
Colin Finck
d0044639fe Import Rust 1.58.1 recipes from openembedded-core, remove Rust 1.51.0. 2022-02-09 09:44:48 +01:00
Doug Goldstein
4bde33e1fc Merge pull request #373 from astrolabe-coop/sandbox/rzr/review/master
docs: Fix typo for corresponds
2022-02-08 17:05:11 -06:00
Philippe Coval
af6d045ac3 docs: Fix typo for corresponds
Signed-off-by: Philippe Coval <philippe.coval@astrolabe.coop>
2022-02-03 10:51:36 +01:00
Ralf Anton Beier
d4384db8c3 Remove unused patch file (#363)
Rust 1.49.0 needed the 0001-rustc_target-Fix-dash-vs-underscore-mismatches-in-op.patch
patch and newer versions not.

Signed-off-by: Ralf Anton Beier <ralf_beier@me.com>
2021-09-19 16:24:09 -04:00
Ralf Anton Beier
448047c7e4 Upgrade to 1.54.0 (#359)
The rust patches for riscv64 have been upstreamed
and are not needed anymore.

The riscv64 patches for libstd-rs need to be
applied to libc-0.2.93 to work. Some slight
modifications are necessary.

Signed-off-by: Ralf Anton Beier <ralf_beier@me.com>
2021-08-09 14:10:00 -04:00
Martin 'JaMa' Jansa
bf6705fb7f Convert to new override syntax (#357)
* Convert to new override syntax

This is the result of automated script (0.9.0) conversion:

oe-core/scripts/contrib/convert-overrides.py .

converting the metadata to use ":" as the override character instead of "_".

Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>

* Manually fix the conversion

Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>

* layer.conf: Update layer compatibility with only dunfell and newer.

Add honister to mark the layers as compatible with honister now that it uses
the new override syntax.

Drop zeus and older which are missing a support for newer override syntax which
was backported only to 1.46 branch (used by dunfell) and newer, e.g.:
https://git.openembedded.org/bitbake/commit/?h=1.46&id=c5418eae56cc50dbae7951c055434a0c456c53a4

Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>

* CI: use YOCTO_BRANCH instead of yocto-${YOCTO_VERSION} for poky checkout

* using latest revision in branch is often better than sticking to
  some point releases

Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>

* CI: switch to hardknott branch

* gatesgarth is already EOL, better to use something supported

Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>
2021-08-05 17:37:51 -04:00
Khem Raj
1b59fd4590 rust-common.inc: Use == operator instead of 'is'
literal is being checked here therefore == and != should be used instead
of 'is' or 'is not'

Signed-off-by: Khem Raj <raj.khem@gmail.com>
2021-07-07 01:57:32 +02:00
Drew Reed
09605d2ea5 Added hashes for aarch64 binary snapshot packages 2021-06-25 12:02:21 +02:00
Anatol Belski
ab86e0a068 nativesdk: Add some tools in a separate recipe (#345)
* nativesdk: Add some tools in a separate recipe

This brings ATM:
- clippy
- rustfmt

Another approach might be to include these into the existing rust recipe,
but as we can't really use PACKAGECONFIG here it might just overload it.
This way, the tools will be built in parallel and still can be excluded
from the packgae group, if desired.

Signed-off-by: Anatol Belski <anbelski@linux.microsoft.com>
2021-06-05 13:42:18 -04:00
Anatol Belski
494d879a1d Merge pull request #344 from weltling/nativesk_std_src
nativesdk: Package rust sources
2021-05-06 18:09:00 +02:00
Anatol Belski
b4877e0be0 nativesdk: Fix rust-std source copy command
Signed-off-by: Anatol Belski <anbelski@linux.microsoft.com>
2021-05-05 11:53:28 +00:00
Anatol Belski
3773dbcebd nativesdk: Package rust sources
This mimics what rustup packages into the toolchain contents. The
presence of the sources for the exact std lib can be useful for the
development and IDE integration.

Signed-off-by: Anatol Belski <anbelski@linux.microsoft.com>
2021-05-04 21:46:00 +02:00
Cody Schafer
02db606a96 Merge pull request #338 from aj-bagwell/armv4-alignement
rust.inc: add strict-align when target is ARMv4
2021-04-26 21:37:33 -04:00
Reto Schneider
25ee517ae2 rust: Add support for ARMv5 (#342)
At GARDENA, we are running our Rust based web interface and
overlayfs-purge tool successfully on our ARMv5, Atmel SAM9G25 SoC based
IoT gateway.
2021-04-24 16:54:42 -04:00
AJ Bagwell
031fc5406e rust.inc: add strict-align when target is ARMv4 2021-04-21 14:59:37 +01:00
Anatol Belski
920db7b045 workflows: Refactor yml to improve build time (#335)
* workflows: Refactor yml to improve build time and reduce size

- Split out the build configuration job
- Use the official sstate mirror
- Disable more of unnecessary features

Signed-off-by: Anatol Belski <anbelski@linux.microsoft.com>
2021-04-04 20:53:28 -04:00
Steven Walter
0048ea8253 Merge pull request #333 from weltling/sdk_ci
workflows: Build and test SDK
2021-04-03 19:20:26 -04:00
Anatol Belski
e0180c565e workflows: Further reduce SDK size
Signed-off-by: Anatol Belski <anbelski@linux.microsoft.com>
2021-04-03 14:33:11 +02:00
Anatol Belski
b637307219 workflows: Install SDK under the workspace path
Signed-off-by: Anatol Belski <anbelski@linux.microsoft.com>
2021-04-03 14:14:04 +02:00
Steven Walter
742cd5c095 Merge pull request #334 from meta-rust/progress
cargo.bbclass: support cargo's progress indicator
2021-04-02 18:04:11 -04:00
Steven Walter
53cbdb566d cargo.bbclass: support cargo's progress indicator
Recent versions of cargo support always showing the progress indicator.
By default the progress indicator is hidden if the output is not a tty.
For bitbake builds, the output is redirected to a file and not a tty.
However, if we tell cargo to always show the progress indicator, bitbake
can parse it and will show the user how the rust build is progressing.
2021-04-02 16:21:43 -04:00
Anatol Belski
2a9ee78d08 workflows: Check to reduce size
Signed-off-by: Anatol Belski <anbelski@linux.microsoft.com>
2021-04-02 19:50:49 +02:00
Anatol Belski
3638b7da88 workflows: Ensure project dir doesn't exist 2021-04-02 19:20:35 +02:00
Anatol Belski
08c385c922 workflows: Build and test SDK
Closes #332.

Signed-off-by: Anatol Belski <anbelski@linux.microsoft.com>
2021-04-02 16:59:41 +02:00
Steven Walter
2c89770123 Merge pull request #331 from YoeDistro/yoe/mut
rust-llvm: Update LLVM_RELEASE to accurate versions
2021-04-01 16:52:34 -04:00
Khem Raj
d9e32f6288 rust-llvm: Update LLVM_RELEASE to accurate versions
Signed-off-by: Khem Raj <raj.khem@gmail.com>
2021-04-01 08:44:46 -07:00
Anatol Belski
250230e292 Merge pull request #313 from weltling/nativesdk_0
nativesdk: Implement cross canadian support
2021-04-01 14:38:54 +02:00
Anatol Belski
c06069fdaa cross-canadian: Sync with 1.51.0 addition for rustc and cargo
Signed-off-by: Anatol Belski <anbelski@linux.microsoft.com>
2021-03-30 15:13:28 +00:00
Anatol Belski
e492b2d86f ident: Fix more WS issues 2021-03-30 15:11:59 +00:00
Anatol Belski
2932b399a5 packagegroup-rust-cross-canadian: Remove trailing WS 2021-03-30 15:11:59 +00:00
Anatol Belski
ae08e553b8 rustc-cross-canadian: Remove obsolete comment 2021-03-30 15:11:59 +00:00
Anatol Belski
439dea8664 nativesdk: Implement cross canadian support
This addition closes #236 requesting the SDK support. The implementation
consists on a yet minimum set of worky functionality;

- Includes rustc, rustdoc and cargo.
- Includes libstd and accompanying lib archives for host and for target.
- Integrates with the standard environment setup script.
- Integrates configurations automatically build for target.

The supported build host is still AMD64 only.

Note that there's no need on introducing crosssdk package as the
official snapshot package serves same way as a non SDK build.

Possible future directions:

- Offline build:
	- Support pre-cached set of crates that can be vendored.
	- Support pre-filled cargo registry.
- Support further tools like cargo-fmt, cargo-clippy, GDB support and so
on.

Signed-off-by: Anatol Belski <anbelski@linux.microsoft.com>
2021-03-30 15:11:59 +00:00
Steven Walter
a4302679bb Merge pull request #330 from YoeDistro/yoe/mut
Update rust to 1.51
2021-03-28 20:35:24 -04:00
Khem Raj
64c625f119 cargo/libstd-rs: Forward port musl/riscv support
Signed-off-by: Khem Raj <raj.khem@gmail.com>
2021-03-28 15:55:12 -07:00
Colin Finck
191cd91817 Update to Rust 1.51.0 and remove 1.47.0
Signed-off-by: Khem Raj <raj.khem@gmail.com>
2021-03-28 15:55:12 -07:00
Steven Walter
da00d57cda Merge pull request #329 from srwalter/workflow
Enable a workflow to build rust-hello-world
2021-03-28 17:16:44 -04:00
Steven Walter
57a202ac53 workflows/main.yml: use bitbake-layers command instead of sed 2021-03-28 15:25:44 -04:00
Cody Schafer
51eba75155 Merge pull request #325 from janderholm/enable-profiler-runtime
rust.inc: Build the profiler runtime
2021-03-28 15:05:51 -04:00
Steven Walter
33904e6514 Enable a workflow to build rust-hello-world
Verify that rust-hello-world build (which in turn ensures that
rust-native, cargo-native, etc all build)
2021-03-27 23:47:07 -04:00
Khem Raj
0fffd992ee Merge pull request #326 from YoeDistro/yoe/mut
layer.conf: add hardknott to compatible release branches
2021-03-18 11:52:23 -07:00
Khem Raj
7a8876558b layer.conf: add hardknott to compatible release branches
Signed-off-by: Khem Raj <raj.khem@gmail.com>
2021-03-17 23:16:15 -07:00
Johan Anderholm
cb5a599f02 rust.inc: Build the profiler runtime
Needed when compiling with options such as "-C profile-generate" or
"-Z instrument-coverage", e.g. when generating coverage reports or doing
profile guided optimization.
2021-03-16 14:15:32 +01:00
Cody Schafer
9a035fe272 Merge pull request #324 from YoeDistro/yoe/mut
rust-llvm: Fix build with gcc11
2021-03-02 20:19:55 -05:00
Khem Raj
013b210033 rust-llvm: Fix build with gcc11
Backport a patch from upstream llvm

Signed-off-by: Khem Raj <raj.khem@gmail.com>
2021-03-02 11:09:06 -08:00
Khem Raj
3f3aa9a6bb Merge pull request #318 from YoeDistro/kraj/riscv-musl
add riscv musl support
2021-03-01 08:42:09 -08:00
Cody Schafer
f31b044c53 Merge pull request #317 from YoeDistro/kraj/ppc64le
rust: Enable ppc64le target
2021-02-28 13:36:22 -05:00
Cody Schafer
30dcb2d61f Merge pull request #323 from jwinarske/example-install
install example executables
2021-02-27 13:11:05 -05:00
Colin Finck
6f399bbd90 Merge pull request #319 from ColinFinck/fix/llvm-cpu
Revamp llvm_cpu to select the closest CPU for optimization.
2021-02-26 14:07:40 +01:00
Colin Finck
81f9357b58 Remove mips/mipsel translation to mips32, which is the same as "generic" 2021-02-24 12:13:18 +01:00
Colin Finck
7a261d5d14 Merge pull request #320 from ColinFinck/remove-old-rust-version-checks
Remove checks for Rust versions we don't build anymore.
2021-02-24 09:37:43 +01:00
Joel Winarske
81a4d79c06 install example executables 2021-02-23 20:03:59 -08:00
Colin Finck
f8b9103477 Remove checks for Rust versions we don't build anymore. 2021-02-23 17:54:26 +01:00
Colin Finck
83ad3d415f Revamp llvm_cpu to select the closest CPU for optimization. 2021-02-23 16:32:55 +01:00
Khem Raj
38a017d9de rust: Enable ppc64le target
this helps building the compiler, work is still needed for libstd-rs and
other pieces

Signed-off-by: Khem Raj <raj.khem@gmail.com>
2021-02-20 13:04:07 -08:00
Khem Raj
4434790fc2 libstd-rs/libc: Backport riscv64/musl support
Signed-off-by: Khem Raj <raj.khem@gmail.com>
2021-02-17 21:56:19 -08:00
Khem Raj
c1e1921e03 rust/cargo/libstd-rs: Add riscv/musl support
Signed-off-by: Khem Raj <raj.khem@gmail.com>
2021-02-17 21:56:19 -08:00
Cody Schafer
029f1ea6a6 Merge pull request #312 from janderholm/no-target-in-rust-native
rust-native shouldn't depend on TARGET variables
2021-02-18 03:22:47 +00:00
Cody Schafer
9937659804 Merge pull request #310 from BeneSim/fix-cargo-src-dir
Factor in `CARGO_SRC_DIR` when setting `MANIFEST_PATH`.
2021-02-18 03:21:53 +00:00
Johan Anderholm
920328c8d8 rust-native shouldn't depend on TARGET variables
Similar to 3b783652cc, this makes sure
rust-native does not depend on target variables. This allow one
rust-native to be shared between machines of different architectures
again.

For the record, the following guide was used to find out why
do_rust_gen_targets differed between different machines.
https://wiki.yoctoproject.org/wiki/TipsAndTricks/Understanding_what_changed_(diffsigs_etc)
2021-02-16 19:49:46 +01:00
Benjamin Isbarn
4e96013677 Factor in CARGO_SRC_DIR when setting MANIFEST_PATH. 2021-02-15 14:36:46 +01:00
Cody Schafer
341a3c77bb Merge pull request #305 from akiernan/master
rust: Drop v8.1a tune for aarch64
2021-02-09 16:04:19 +00:00
Cody Schafer
d59c590245 Merge pull request #306 from ColinFinck/remove-old-versions
Keep only the most recent two Rust versions.
2021-02-09 16:01:42 +00:00
Colin Finck
87e8d50abd Keep only the most recent two Rust versions.
Older ones are already unbuildable and nobody misses them, see https://github.com/meta-rust/meta-rust/issues/298
2021-02-09 15:09:14 +01:00
Alex Kiernan
53c9aabda3 rust: Drop v8.1a tune for aarch64
Building for "+v8.1a"  breaks on (at least) Cortex A53 (Armv8-A) on
startup with `Illegal instruction`.

Fixes: 26609f46d9 ("rust.inc: use 'v8.1a' feature when building for aarch64 instead of 'v8'")
2021-02-09 03:13:25 +00:00
Cody Schafer
b53374d793 Merge pull request #304 from meta-rust/jmesmon-patch-readme
readme: fix url and link issue number
2021-02-08 21:47:40 -05:00
Cody P Schafer
7feed5d36c recipes-example/rust-hello-world: move to new url in meta-rust org 2021-02-08 19:38:12 -05:00
Cody Schafer
1b944013b8 readme: fix url and link issue number 2021-02-08 19:37:18 -05:00
Cody Schafer
81d4b4c820 Merge pull request #301 from shr-project/jansa/lic-1.49.0
Cleanups with 1.49.0 version.
2021-02-08 11:06:09 -05:00
Martin Jansa
26609f46d9 rust.inc: use 'v8.1a' feature when building for aarch64 instead of 'v8'
* get rid of annoying
  '+v8' is not a recognized feature for this target (ignoring feature)
  messages in aarch64 builds, they are shown in the log very often:

  $ grep -c 'is not a recognized feature for this target (ignoring feature)' cargo/1.49.0-r0/temp/log.do_compile.76960
  3824

  and sometimes the formatting looks strange as well e.g.:
  | ''+v8' is not a recognized feature for this target (ignoring feature)
  | +v8' is not a recognized feature for this target (ignoring feature)
  | '+v8' is not a recognized feature for this target (ignoring feature)
  | '+v8' is not a recognized feature for this target (ignoring feature)
  | '+v8' is not a recognized feature for this target (ignoring feature)
  | ''+v8+v8' is not a recognized feature for this target' is not a recognized feature for this target (ignoring feature)
  |  (ignoring feature)
  | '+v8' is not a recognized feature for this target (ignoring feature)
  | '+v8' is not a recognized feature for this target (ignoring feature)
  | '+v8' is not a recognized feature for this target (ignoring feature)
  | '+v8' is not a recognized feature for this target (ignoring feature)
  | ''''''+v8+v8+v8+v8+v8' is not a recognized feature for this target' is not a recognized feature for this target' is not a recognized feature for this target' is not a recognized feature for this target' is not a recognized feature for this target+v8 (ignoring feature)
  |  (ignoring feature)
  |  (ignoring feature)
  |  (ignoring feature)
  |  (ignoring feature)
  | ' is not a recognized feature for this target (ignoring feature)
  | '+v8' is not a recognized feature for this target (ignoring feature)
  | '+v8' is not a recognized feature for this target (ignoring feature)
  | ''+v8+v8' is not a recognized feature for this target' is not a recognized feature for this target (ignoring feature)
  |  (ignoring feature)

* not sure when it was changed (if 'v8' ever was valid feature for aarch64)
  but with 1.49.0 rustc (from gentoo) I see following cpu and feature options
  for arm and aarch64 (and v8 is listed only for arm, for aarch64 only v8.[123456]a)

  # rustc --target=arm-unknown-linux-gnueabihf --print target-cpus
  Available CPUs for this target:
    arm1020e
    arm1020t
    arm1022e
    arm10e
    arm10tdmi
    arm1136j-s
    arm1136jf-s
    arm1156t2-s
    arm1156t2f-s
    arm1176j-s
    arm1176jz-s
    arm1176jzf-s
    arm710t
    arm720t
    arm7tdmi
    arm7tdmi-s
    arm8
    arm810
    arm9
    arm920
    arm920t
    arm922t
    arm926ej-s
    arm940t
    arm946e-s
    arm966e-s
    arm968e-s
    arm9e
    arm9tdmi
    cortex-a12
    cortex-a15
    cortex-a17
    cortex-a32
    cortex-a35
    cortex-a5
    cortex-a53
    cortex-a55
    cortex-a57
    cortex-a7
    cortex-a72
    cortex-a73
    cortex-a75
    cortex-a76
    cortex-a76ae
    cortex-a77
    cortex-a78
    cortex-a8
    cortex-a9
    cortex-m0
    cortex-m0plus
    cortex-m1
    cortex-m23
    cortex-m3
    cortex-m33
    cortex-m35p
    cortex-m4
    cortex-m55
    cortex-m7
    cortex-r4
    cortex-r4f
    cortex-r5
    cortex-r52
    cortex-r7
    cortex-r8
    cortex-x1
    cyclone
    ep9312
    exynos-m3
    exynos-m4
    exynos-m5
    generic
    iwmmxt
    krait
    kryo
    mpcore
    mpcorenovfp
    neoverse-n1
    sc000
    sc300
    strongarm
    strongarm110
    strongarm1100
    strongarm1110
    swift
    xscale

  # rustc --target=aarch64-unknown-linux-gnu --print target-cpus
  Available CPUs for this target:
    a64fx
    apple-a10
    apple-a11
    apple-a12
    apple-a13
    apple-a7
    apple-a8
    apple-a9
    apple-latest
    apple-s4
    apple-s5
    carmel
    cortex-a34
    cortex-a35
    cortex-a53
    cortex-a55
    cortex-a57
    cortex-a65
    cortex-a65ae
    cortex-a72
    cortex-a73
    cortex-a75
    cortex-a76
    cortex-a76ae
    cortex-a77
    cortex-a78
    cortex-x1
    cyclone
    exynos-m3
    exynos-m4
    exynos-m5
    falkor
    generic
    kryo
    neoverse-e1
    neoverse-n1
    saphira
    thunderx
    thunderx2t99
    thunderx3t110
    thunderxt81
    thunderxt83
    thunderxt88
    tsv110

  # rustc --target=arm-unknown-linux-gnueabihf --print target-features
  Available features for this target:
    32bit                    - Prefer 32-bit Thumb instrs.
    8msecext                 - Enable support for ARMv8-M Security Extensions.
    a12                      - Cortex-A12 ARM processors.
    a15                      - Cortex-A15 ARM processors.
    a17                      - Cortex-A17 ARM processors.
    a32                      - Cortex-A32 ARM processors.
    a35                      - Cortex-A35 ARM processors.
    a5                       - Cortex-A5 ARM processors.
    a53                      - Cortex-A53 ARM processors.
    a55                      - Cortex-A55 ARM processors.
    a57                      - Cortex-A57 ARM processors.
    a7                       - Cortex-A7 ARM processors.
    a72                      - Cortex-A72 ARM processors.
    a73                      - Cortex-A73 ARM processors.
    a75                      - Cortex-A75 ARM processors.
    a76                      - Cortex-A76 ARM processors.
    a77                      - Cortex-A77 ARM processors.
    a8                       - Cortex-A8 ARM processors.
    a9                       - Cortex-A9 ARM processors.
    aclass                   - Is application profile ('A' series).
    acquire-release          - Has v8 acquire/release (lda/ldaex  etc) instructions.
    aes                      - Enable AES support.
    armv2                    - ARMv2 architecture.
    armv2a                   - ARMv2a architecture.
    armv3                    - ARMv3 architecture.
    armv3m                   - ARMv3m architecture.
    armv4                    - ARMv4 architecture.
    armv4t                   - ARMv4t architecture.
    armv5t                   - ARMv5t architecture.
    armv5te                  - ARMv5te architecture.
    armv5tej                 - ARMv5tej architecture.
    armv6                    - ARMv6 architecture.
    armv6-m                  - ARMv6m architecture.
    armv6j                   - ARMv7a architecture.
    armv6k                   - ARMv6k architecture.
    armv6kz                  - ARMv6kz architecture.
    armv6s-m                 - ARMv6sm architecture.
    armv6t2                  - ARMv6t2 architecture.
    armv7-a                  - ARMv7a architecture.
    armv7-m                  - ARMv7m architecture.
    armv7-r                  - ARMv7r architecture.
    armv7e-m                 - ARMv7em architecture.
    armv7k                   - ARMv7a architecture.
    armv7s                   - ARMv7a architecture.
    armv7ve                  - ARMv7ve architecture.
    armv8-a                  - ARMv8a architecture.
    armv8-m.base             - ARMv8mBaseline architecture.
    armv8-m.main             - ARMv8mMainline architecture.
    armv8-r                  - ARMv8r architecture.
    armv8.1-a                - ARMv81a architecture.
    armv8.1-m.main           - ARMv81mMainline architecture.
    armv8.2-a                - ARMv82a architecture.
    armv8.3-a                - ARMv83a architecture.
    armv8.4-a                - ARMv84a architecture.
    armv8.5-a                - ARMv85a architecture.
    armv8.6-a                - ARMv86a architecture.
    avoid-movs-shop          - Avoid movs instructions with shifter operand.
    avoid-partial-cpsr       - Avoid CPSR partial update for OOO execution.
    bf16                     - Enable support for BFloat16 instructions.
    cde                      - Support CDE instructions.
    cdecp0                   - Coprocessor 0 ISA is CDEv1.
    cdecp1                   - Coprocessor 1 ISA is CDEv1.
    cdecp2                   - Coprocessor 2 ISA is CDEv1.
    cdecp3                   - Coprocessor 3 ISA is CDEv1.
    cdecp4                   - Coprocessor 4 ISA is CDEv1.
    cdecp5                   - Coprocessor 5 ISA is CDEv1.
    cdecp6                   - Coprocessor 6 ISA is CDEv1.
    cdecp7                   - Coprocessor 7 ISA is CDEv1.
    cheap-predicable-cpsr    - Disable +1 predication cost for instructions updating CPSR.
    cortex-a78               - Cortex-A78 ARM processors.
    cortex-x1                - Cortex-X1 ARM processors.
    crc                      - Enable support for CRC instructions.
    crypto                   - Enable support for Cryptography extensions.
    d32                      - Extend FP to 32 double registers.
    db                       - Has data barrier (dmb/dsb) instructions.
    dfb                      - Has full data barrier (dfb) instruction.
    disable-postra-scheduler - Don't schedule again after register allocation.
    dont-widen-vmovs         - Don't widen VMOVS to VMOVD.
    dotprod                  - Enable support for dot product instructions.
    dsp                      - Supports DSP instructions in ARM and/or Thumb2.
    execute-only             - Enable the generation of execute only code..
    expand-fp-mlx            - Expand VFP/NEON MLA/MLS instructions.
    exynos                   - Samsung Exynos processors.
    fp-armv8                 - Enable ARMv8 FP.
    fp-armv8d16              - Enable ARMv8 FP with only 16 d-registers.
    fp-armv8d16sp            - Enable ARMv8 FP with only 16 d-registers and no double precision.
    fp-armv8sp               - Enable ARMv8 FP with no double precision.
    fp16                     - Enable half-precision floating point.
    fp16fml                  - Enable full half-precision floating point fml instructions.
    fp64                     - Floating point unit supports double precision.
    fpao                     - Enable fast computation of positive address offsets.
    fpregs                   - Enable FP registers.
    fpregs16                 - Enable 16-bit FP registers.
    fpregs64                 - Enable 64-bit FP registers.
    fullfp16                 - Enable full half-precision floating point.
    fuse-aes                 - CPU fuses AES crypto operations.
    fuse-literals            - CPU fuses literal generation operations.
    hwdiv                    - Enable divide instructions in Thumb.
    hwdiv-arm                - Enable divide instructions in ARM mode.
    i8mm                     - Enable Matrix Multiply Int8 Extension.
    iwmmxt                   - ARMv5te architecture.
    iwmmxt2                  - ARMv5te architecture.
    krait                    - Qualcomm Krait processors.
    kryo                     - Qualcomm Kryo processors.
    lob                      - Enable Low Overhead Branch extensions.
    long-calls               - Generate calls via indirect call instructions.
    loop-align               - Prefer 32-bit alignment for loops.
    m3                       - Cortex-M3 ARM processors.
    mclass                   - Is microcontroller profile ('M' series).
    mp                       - Supports Multiprocessing extension.
    muxed-units              - Has muxed AGU and NEON/FPU.
    mve                      - Support M-Class Vector Extension with integer ops.
    mve.fp                   - Support M-Class Vector Extension with integer and floating ops.
    mve1beat                 - Model MVE instructions as a 1 beat per tick architecture.
    mve2beat                 - Model MVE instructions as a 2 beats per tick architecture.
    mve4beat                 - Model MVE instructions as a 4 beats per tick architecture.
    nacl-trap                - NaCl trap.
    neon                     - Enable NEON instructions.
    neon-fpmovs              - Convert VMOVSR, VMOVRS, VMOVS to NEON.
    neonfp                   - Use NEON for single precision FP.
    no-branch-predictor      - Has no branch predictor.
    no-movt                  - Don't use movt/movw pairs for 32-bit imms.
    no-neg-immediates        - Convert immediates and instructions to their negated or complemented equivalent when the immediate does not fit in the encoding..
    noarm                    - Does not support ARM mode execution.
    nonpipelined-vfp         - VFP instructions are not pipelined.
    perfmon                  - Enable support for Performance Monitor extensions.
    prefer-ishst             - Prefer ISHST barriers.
    prefer-vmovsr            - Prefer VMOVSR.
    prof-unpr                - Is profitable to unpredicate.
    r4                       - Cortex-R4 ARM processors.
    r5                       - Cortex-R5 ARM processors.
    r52                      - Cortex-R52 ARM processors.
    r7                       - Cortex-R7 ARM processors.
    ras                      - Enable Reliability, Availability and Serviceability extensions.
    rclass                   - Is realtime profile ('R' series).
    read-tp-hard             - Reading thread pointer from register.
    reserve-r9               - Reserve R9, making it unavailable as GPR.
    ret-addr-stack           - Has return address stack.
    sb                       - Enable v8.5a Speculation Barrier.
    sha2                     - Enable SHA1 and SHA256 support.
    slow-fp-brcc             - FP compare + branch is slow.
    slow-load-D-subreg       - Loading into D subregs is slow.
    slow-odd-reg             - VLDM/VSTM starting with an odd register is slow.
    slow-vdup32              - Has slow VDUP32 - prefer VMOV.
    slow-vgetlni32           - Has slow VGETLNi32 - prefer VMOV.
    slowfpvfmx               - Disable VFP / NEON FMA instructions.
    slowfpvmlx               - Disable VFP / NEON MAC instructions.
    soft-float               - Use software floating point features..
    splat-vfp-neon           - Splat register from VFP to NEON.
    strict-align             - Disallow all unaligned memory access.
    swift                    - Swift ARM processors.
    thumb-mode               - Thumb mode.
    thumb2                   - Enable Thumb2 instructions.
    trustzone                - Enable support for TrustZone security extensions.
    use-misched              - Use the MachineScheduler.
    v4t                      - Support ARM v4T instructions.
    v5t                      - Support ARM v5T instructions.
    v5te                     - Support ARM v5TE, v5TEj, and v5TExp instructions.
    v6                       - Support ARM v6 instructions.
    v6k                      - Support ARM v6k instructions.
    v6m                      - Support ARM v6M instructions.
    v6t2                     - Support ARM v6t2 instructions.
    v7                       - Support ARM v7 instructions.
    v7clrex                  - Has v7 clrex instruction.
    v8                       - Support ARM v8 instructions.
    v8.1a                    - Support ARM v8.1a instructions.
    v8.1m.main               - Support ARM v8-1M Mainline instructions.
    v8.2a                    - Support ARM v8.2a instructions.
    v8.3a                    - Support ARM v8.3a instructions.
    v8.4a                    - Support ARM v8.4a instructions.
    v8.5a                    - Support ARM v8.5a instructions.
    v8.6a                    - Support ARM v8.6a instructions.
    v8m                      - Support ARM v8M Baseline instructions.
    v8m.main                 - Support ARM v8M Mainline instructions.
    vfp2                     - Enable VFP2 instructions.
    vfp2sp                   - Enable VFP2 instructions with no double precision.
    vfp3                     - Enable VFP3 instructions.
    vfp3d16                  - Enable VFP3 instructions with only 16 d-registers.
    vfp3d16sp                - Enable VFP3 instructions with only 16 d-registers and no double precision.
    vfp3sp                   - Enable VFP3 instructions with no double precision.
    vfp4                     - Enable VFP4 instructions.
    vfp4d16                  - Enable VFP4 instructions with only 16 d-registers.
    vfp4d16sp                - Enable VFP4 instructions with only 16 d-registers and no double precision.
    vfp4sp                   - Enable VFP4 instructions with no double precision.
    virtualization           - Supports Virtualization extension.
    vldn-align               - Check for VLDn unaligned access.
    vmlx-forwarding          - Has multiplier accumulator forwarding.
    vmlx-hazards             - Has VMLx hazards.
    wide-stride-vfp          - Use a wide stride when allocating VFP registers.
    xscale                   - ARMv5te architecture.
    zcz                      - Has zero-cycle zeroing instructions.

  Rust-specific features:
    crt-static               - Enables libraries with C Run-time Libraries(CRT) to be statically linked.

  Use +feature to enable a feature, or -feature to disable it.
  For example, rustc -C -target-cpu=mycpu -C target-feature=+feature1,-feature2

  # rustc --target=aarch64-unknown-linux-gnu --print target-features
  Available features for this target:
    a35                                - Cortex-A35 ARM processors.
    a53                                - Cortex-A53 ARM processors.
    a55                                - Cortex-A55 ARM processors.
    a57                                - Cortex-A57 ARM processors.
    a64fx                              - Fujitsu A64FX processors.
    a65                                - Cortex-A65 ARM processors.
    a72                                - Cortex-A72 ARM processors.
    a73                                - Cortex-A73 ARM processors.
    a75                                - Cortex-A75 ARM processors.
    a76                                - Cortex-A76 ARM processors.
    a77                                - Cortex-A77 ARM processors.
    aes                                - Enable AES support.
    aggressive-fma                     - Enable Aggressive FMA for floating-point..
    alternate-sextload-cvt-f32-pattern - Use alternative pattern for sextload convert to f32.
    altnzcv                            - Enable alternative NZCV format for floating point comparisons.
    am                                 - Enable v8.4-A Activity Monitors extension.
    amvs                               - Enable v8.6-A Activity Monitors Virtualization support.
    apple-a10                          - Apple A10.
    apple-a11                          - Apple A11.
    apple-a12                          - Apple A12.
    apple-a13                          - Apple A13.
    apple-a7                           - Apple A7 (the CPU formerly known as Cyclone).
    arith-bcc-fusion                   - CPU fuses arithmetic+bcc operations.
    arith-cbz-fusion                   - CPU fuses arithmetic + cbz/cbnz operations.
    balance-fp-ops                     - balance mix of odd and even D-registers for fp multiply(-accumulate) ops.
    bf16                               - Enable BFloat16 Extension.
    bti                                - Enable Branch Target Identification.
    call-saved-x10                     - Make X10 callee saved..
    call-saved-x11                     - Make X11 callee saved..
    call-saved-x12                     - Make X12 callee saved..
    call-saved-x13                     - Make X13 callee saved..
    call-saved-x14                     - Make X14 callee saved..
    call-saved-x15                     - Make X15 callee saved..
    call-saved-x18                     - Make X18 callee saved..
    call-saved-x8                      - Make X8 callee saved..
    call-saved-x9                      - Make X9 callee saved..
    carmel                             - Nvidia Carmel processors.
    ccdp                               - Enable v8.5 Cache Clean to Point of Deep Persistence.
    ccidx                              - Enable v8.3-A Extend of the CCSIDR number of sets.
    ccpp                               - Enable v8.2 data Cache Clean to Point of Persistence.
    complxnum                          - Enable v8.3-A Floating-point complex number support.
    cortex-a78                         - Cortex-A78 ARM processors.
    cortex-x1                          - Cortex-X1 ARM processors.
    crc                                - Enable ARMv8 CRC-32 checksum instructions.
    crypto                             - Enable cryptographic instructions.
    custom-cheap-as-move               - Use custom handling of cheap instructions.
    disable-latency-sched-heuristic    - Disable latency scheduling heuristic.
    dit                                - Enable v8.4-A Data Independent Timing instructions.
    dotprod                            - Enable dot product support.
    ecv                                - Enable enhanced counter virtualization extension.
    ete                                - Enable Embedded Trace Extension.
    exynos-cheap-as-move               - Use Exynos specific handling of cheap instructions.
    exynosm3                           - Samsung Exynos-M3 processors.
    exynosm4                           - Samsung Exynos-M4 processors.
    f32mm                              - Enable Matrix Multiply FP32 Extension.
    f64mm                              - Enable Matrix Multiply FP64 Extension.
    falkor                             - Qualcomm Falkor processors.
    fgt                                - Enable fine grained virtualization traps extension.
    fmi                                - Enable v8.4-A Flag Manipulation Instructions.
    force-32bit-jump-tables            - Force jump table entries to be 32-bits wide except at MinSize.
    fp-armv8                           - Enable ARMv8 FP.
    fp16fml                            - Enable FP16 FML instructions.
    fptoint                            - Enable FRInt[32|64][Z|X] instructions that round a floating-point number to an integer (in FP format) forcing it to fit into a 32- or 64-bit int.
    fullfp16                           - Full FP16.
    fuse-address                       - CPU fuses address generation and memory operations.
    fuse-aes                           - CPU fuses AES crypto operations.
    fuse-arith-logic                   - CPU fuses arithmetic and logic operations.
    fuse-crypto-eor                    - CPU fuses AES/PMULL and EOR operations.
    fuse-csel                          - CPU fuses conditional select operations.
    fuse-literals                      - CPU fuses literal generation operations.
    harden-sls-blr                     - Harden against straight line speculation across BLR instructions.
    harden-sls-retbr                   - Harden against straight line speculation across RET and BR instructions.
    i8mm                               - Enable Matrix Multiply Int8 Extension.
    jsconv                             - Enable v8.3-A JavaScript FP conversion instructions.
    kryo                               - Qualcomm Kryo processors.
    lor                                - Enables ARM v8.1 Limited Ordering Regions extension.
    lse                                - Enable ARMv8.1 Large System Extension (LSE) atomic instructions.
    lsl-fast                           - CPU has a fastpath logical shift of up to 3 places.
    mpam                               - Enable v8.4-A Memory system Partitioning and Monitoring extension.
    mte                                - Enable Memory Tagging Extension.
    neon                               - Enable Advanced SIMD instructions.
    neoversee1                         - Neoverse E1 ARM processors.
    neoversen1                         - Neoverse N1 ARM processors.
    no-neg-immediates                  - Convert immediates and instructions to their negated or complemented equivalent when the immediate does not fit in the encoding..
    nv                                 - Enable v8.4-A Nested Virtualization Enchancement.
    pa                                 - Enable v8.3-A Pointer Authentication extension.
    pan                                - Enables ARM v8.1 Privileged Access-Never extension.
    pan-rwv                            - Enable v8.2 PAN s1e1R and s1e1W Variants.
    perfmon                            - Enable ARMv8 PMUv3 Performance Monitors extension.
    pmu                                - Enable v8.4-A PMU extension.
    predictable-select-expensive       - Prefer likely predicted branches over selects.
    predres                            - Enable v8.5a execution and data prediction invalidation instructions.
    rand                               - Enable Random Number generation instructions.
    ras                                - Enable ARMv8 Reliability, Availability and Serviceability Extensions.
    rasv8_4                            - Enable v8.4-A Reliability, Availability and Serviceability extension.
    rcpc                               - Enable support for RCPC extension.
    rcpc-immo                          - Enable v8.4-A RCPC instructions with Immediate Offsets.
    rdm                                - Enable ARMv8.1 Rounding Double Multiply Add/Subtract instructions.
    reserve-x1                         - Reserve X1, making it unavailable as a GPR.
    reserve-x10                        - Reserve X10, making it unavailable as a GPR.
    reserve-x11                        - Reserve X11, making it unavailable as a GPR.
    reserve-x12                        - Reserve X12, making it unavailable as a GPR.
    reserve-x13                        - Reserve X13, making it unavailable as a GPR.
    reserve-x14                        - Reserve X14, making it unavailable as a GPR.
    reserve-x15                        - Reserve X15, making it unavailable as a GPR.
    reserve-x18                        - Reserve X18, making it unavailable as a GPR.
    reserve-x2                         - Reserve X2, making it unavailable as a GPR.
    reserve-x20                        - Reserve X20, making it unavailable as a GPR.
    reserve-x21                        - Reserve X21, making it unavailable as a GPR.
    reserve-x22                        - Reserve X22, making it unavailable as a GPR.
    reserve-x23                        - Reserve X23, making it unavailable as a GPR.
    reserve-x24                        - Reserve X24, making it unavailable as a GPR.
    reserve-x25                        - Reserve X25, making it unavailable as a GPR.
    reserve-x26                        - Reserve X26, making it unavailable as a GPR.
    reserve-x27                        - Reserve X27, making it unavailable as a GPR.
    reserve-x28                        - Reserve X28, making it unavailable as a GPR.
    reserve-x3                         - Reserve X3, making it unavailable as a GPR.
    reserve-x30                        - Reserve X30, making it unavailable as a GPR.
    reserve-x4                         - Reserve X4, making it unavailable as a GPR.
    reserve-x5                         - Reserve X5, making it unavailable as a GPR.
    reserve-x6                         - Reserve X6, making it unavailable as a GPR.
    reserve-x7                         - Reserve X7, making it unavailable as a GPR.
    reserve-x9                         - Reserve X9, making it unavailable as a GPR.
    saphira                            - Qualcomm Saphira processors.
    sb                                 - Enable v8.5 Speculation Barrier.
    sel2                               - Enable v8.4-A Secure Exception Level 2 extension.
    sha2                               - Enable SHA1 and SHA256 support.
    sha3                               - Enable SHA512 and SHA3 support.
    slow-misaligned-128store           - Misaligned 128 bit stores are slow.
    slow-paired-128                    - Paired 128 bit loads and stores are slow.
    slow-strqro-store                  - STR of Q register with register offset is slow.
    sm4                                - Enable SM3 and SM4 support.
    spe                                - Enable Statistical Profiling extension.
    specrestrict                       - Enable architectural speculation restriction.
    ssbs                               - Enable Speculative Store Bypass Safe bit.
    strict-align                       - Disallow all unaligned memory access.
    sve                                - Enable Scalable Vector Extension (SVE) instructions.
    sve2                               - Enable Scalable Vector Extension 2 (SVE2) instructions.
    sve2-aes                           - Enable AES SVE2 instructions.
    sve2-bitperm                       - Enable bit permutation SVE2 instructions.
    sve2-sha3                          - Enable SHA3 SVE2 instructions.
    sve2-sm4                           - Enable SM4 SVE2 instructions.
    tagged-globals                     - Use an instruction sequence for taking the address of a global that allows a memory tag in the upper address bits.
    thunderx                           - Cavium ThunderX processors.
    thunderx2t99                       - Cavium ThunderX2 processors.
    thunderx3t110                      - Marvell ThunderX3 processors.
    thunderxt81                        - Cavium ThunderX processors.
    thunderxt83                        - Cavium ThunderX processors.
    thunderxt88                        - Cavium ThunderX processors.
    tlb-rmi                            - Enable v8.4-A TLB Range and Maintenance Instructions.
    tme                                - Enable Transactional Memory Extension.
    tpidr-el1                          - Permit use of TPIDR_EL1 for the TLS base.
    tpidr-el2                          - Permit use of TPIDR_EL2 for the TLS base.
    tpidr-el3                          - Permit use of TPIDR_EL3 for the TLS base.
    tracev8.4                          - Enable v8.4-A Trace extension.
    trbe                               - Enable Trace Buffer Extension.
    tsv110                             - HiSilicon TS-V110 processors.
    uaops                              - Enable v8.2 UAO PState.
    use-aa                             - Use alias analysis during codegen.
    use-experimental-zeroing-pseudos   - Hint to the compiler that the MOVPRFX instruction is merged with destructive operations.
    use-postra-scheduler               - Schedule again after register allocation.
    use-reciprocal-square-root         - Use the reciprocal square root approximation.
    v8.1a                              - Support ARM v8.1a instructions.
    v8.2a                              - Support ARM v8.2a instructions.
    v8.3a                              - Support ARM v8.3a instructions.
    v8.4a                              - Support ARM v8.4a instructions.
    v8.5a                              - Support ARM v8.5a instructions.
    v8.6a                              - Support ARM v8.6a instructions.
    vh                                 - Enables ARM v8.1 Virtual Host extension.
    zcm                                - Has zero-cycle register moves.
    zcz                                - Has zero-cycle zeroing instructions.
    zcz-fp                             - Has zero-cycle zeroing instructions for FP registers.
    zcz-fp-workaround                  - The zero-cycle floating-point zeroing instruction has a bug.
    zcz-gp                             - Has zero-cycle zeroing instructions for generic registers.

  Rust-specific features:
    crt-static                         - Enables libraries with C Run-time Libraries(CRT) to be statically linked.

  Use +feature to enable a feature, or -feature to disable it.
  For example, rustc -C -target-cpu=mycpu -C target-feature=+feature1,-feature2

Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>
2021-02-08 17:04:11 +01:00
Martin Jansa
71538c8762 rust_versions.inc: switch the default version to 1.49.0
Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>
2021-02-08 17:04:06 +01:00
Martin Jansa
c976184935 {cargo,rust}-1.49.0: simplify as in https://github.com/meta-rust/meta-rust/pull/299
Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>
2021-02-08 17:04:06 +01:00
Cody Schafer
d15e66ae93 Merge pull request #303 from janderholm/nativebuilds
Fix *-native cargo builds
2021-02-08 10:14:12 -05:00
Cody Schafer
2c34da11f0 Merge pull request #293 from danc86/add-rust-1.49
add rust 1.49.0
2021-02-08 10:10:26 -05:00
Cody Schafer
dd7aa2e952 Merge pull request #300 from shr-project/jansa/lic
Few more cleanups
2021-02-08 10:09:34 -05:00
Johan Anderholm
0025cebb12 Fix *-native cargo builds
Normally all *-native packages needs to depend on cargo-native in order
to be able to use cargo. When building cargo-native however, this is not
available and we use a snapshot.

Fixes #302.
2021-02-08 16:04:39 +01:00
Martin Jansa
3ab7542844 rust-source, rust-snaphost: drop md5sums
* for consistency as 1.43.0 and 1.47.0 already use only sha256sum

Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>
2021-02-08 01:11:13 +01:00
Martin Jansa
b163a89399 rust-source, rust-snapshot: simplify as well
* move common stuff from rust-source to rust.inc and from rust-snapshot to rust-target.inc

* 1.34.2 checksums were changed because unified SRC_URI is using tar.xz
  for this version as well (instead of tar.gz used before here)

Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>
2021-02-08 01:09:52 +01:00
Dan Callaghan
0ee328aa26 add rust 1.49.0
Now it seems `./x.py install` is the only way to assemble a fully
working stage 2 cross-built compiler. See rust-lang/rust#81702.
2021-02-08 08:04:30 +10:00
Cody Schafer
c90c9b071a Merge pull request #299 from shr-project/jansa/lic
Further simplify LIC_FILES_CHKSUM
2021-02-07 14:32:55 -05:00
Martin Jansa
3e73030c51 rust-target.inc: add new include file to simplify all rust_*.bb
Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>
2021-02-07 19:50:58 +01:00
Martin Jansa
9c0a1059be rust_versions.inc: add include for easy switching between versions
Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>
2021-02-07 19:36:00 +01:00
Martin Jansa
a31a4070d3 cargo: move LIC_FILES_CHKSUM from cargo_*.bb to cargo.inc where LICENSE is set
* only the oldest 1.34.2 is the exception with different value, so
  stop duplicating it

Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>
2021-02-07 19:23:09 +01:00
Martin Jansa
1d64f9075a rust: move LIC_FILES_CHKSUM from rust-source-*.inc to rust.inc where LICENSE is set
Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>
2021-02-07 19:18:00 +01:00
Cody Schafer
433b7214ad Merge pull request #297 from shr-project/jansa/lic
Fix https://github.com/meta-rust/meta-rust/pull/289
2021-02-07 13:14:42 -05:00
Martin Jansa
80c30c3017 rust-llvm-ncsa.inc: reorder to actually set LICENSE and LIC_FILES_CHKSUM
* rust-llvm.inc sets LICENSE and corresponding LIC_FILES_CHKSUM
  for Apache-2.0-with-LLVM-exception, but the recipes which include
  rust-llvm-ncsa.inc need to change it to NCSA.

Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>
2021-02-07 19:03:28 +01:00
Martin Jansa
1cb40bd3c2 Revert "rust-llvm: Use early variable assignment for the license checksum in rust-llvm.inc"
This reverts commit 5dda6c427a.

This breaks rust-llvm builds with:
ERROR: QA Issue: rust-llvm-native: LIC_FILES_CHKSUM points to an invalid file: TOPDIR/BUILD/work/x86_64-linux/rust-llvm-native/1.47.0-r0/rustc-1.47.0-src/src/llvm-project/llvm/COPYRIGHT [license-checksum]

Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>
2021-02-07 19:03:28 +01:00
Cody Schafer
805503686f Merge pull request #289 from floion/correct_license_file_assignment
rust-llvm: Use early variable assignment for the license checksum in …
2021-02-07 00:30:47 -05:00
Cody Schafer
a6c629733c Merge pull request #290 from YoeDistro/yoe/mut
cargo: Mark the cargo-native dependency specific to target
2021-02-07 00:28:51 -05:00
Cody Schafer
1c18023894 Merge pull request #295 from danc86/fix-lto
libstd-rs: embed bitcode for LTO
2021-02-07 00:27:42 -05:00
Dan Callaghan
d5ab20d23b rust-hello-world: enable LTO in the build
If the libstd-rs recipe is not correctly embedding LVM bitcode in its
output, then it can produce a toolchain that appears to work until you
try building a project that requests LTO:

    error: failed to get bitcode from object file for LTO (Bitcode section not found in object file)

Enable LTO for rust-hello-world to give us an easy watch to catch such
problems.
2021-02-05 11:41:47 +10:00
Dan Callaghan
b7eacc0996 libstd-rs: embed bitcode for LTO
Fixes #294.
2021-02-05 11:41:47 +10:00
Khem Raj
1936904ad3 cargo: Mark the cargo-native dependency specific to target
Fixes dependency loop

These are usually caused by circular dependencies and any circular dependency chains found will be printed below. Increase the debug level to see a list of unbuildable tasks.

Identifying dependency loops (this may take a short while)...

ERROR:
Dependency loop #1 found:
  Task virtual:native:/mnt/b/yoe/master/sources/meta-rust/recipes-devtools/cargo/cargo_1.47.0.bb:do_compile (dependent Tasks ['cargo_1.47.0.bb:do_configure'])
  Task virtual:native:/mnt/b/yoe/master/sources/meta-rust/recipes-devtools/cargo/cargo_1.47.0.bb:do_install (dependent Tasks ['cargo_1.47.0.bb:do_compile'])
  Task virtual:native:/mnt/b/yoe/master/sources/meta-rust/recipes-devtools/cargo/cargo_1.47.0.bb:do_populate_sysroot (dependent Tasks ['cargo_1.47.0.bb:do_install'])
  Task virtual:native:/mnt/b/yoe/master/sources/meta-rust/recipes-devtools/cargo/cargo_1.47.0.bb:do_prepare_recipe_sysroot (dependent Tasks ['cargo_1.47.0.bb:do_populate_sysroot', 'openssl_1.1.1i.bb:do_populate_sysroot', 'curl_7.74.0.bb:do_populate_sysroot', 'rust_1.47.0.bb:do_populate_sysroot', 'zlib_1.2.11.bb:do_populate_sysroot', 'ca-certificates_20210119.bb:do_populate_sysroot', 'libssh2_1.9.0.bb:do_populate_sysroot', 'cargo_1.47.0.bb:do_fetch'])
  Task virtual:native:/mnt/b/yoe/master/sources/meta-rust/recipes-devtools/cargo/cargo_1.47.0.bb:do_configure (dependent Tasks ['cargo_1.47.0.bb:do_prepare_recipe_sysroot', 'cargo_1.47.0.bb:do_patch', 'cargo_1.47.0.bb:do_rust_create_wrappers', 'cargo_1.47.0.bb:do_cargo_setup_snapshot'])

ERROR: Command execution failed: 1

Signed-off-by: Khem Raj <raj.khem@gmail.com>
2021-01-29 10:18:30 -08:00
Florin Sarbu
5dda6c427a rust-llvm: Use early variable assignment for the license checksum in rust-llvm.inc
Because rust-llvm-ncsa.inc requires rust-llvm.inc we do not want that
the latter overrides the license checksum set in the former.

Signed-off-by: Florin Sarbu <florin@balena.io>
2021-01-28 10:36:54 +01:00
Steven Walter
c72b2dda3a Merge pull request #288 from YoeDistro/yoe/mut
Add riscv32/riscv64 support
2021-01-12 10:09:33 -05:00
Khem Raj
47de35e153 libstd-rs: Remove libunwind on riscv
riscv port of libunwind is not available yet

Signed-off-by: Khem Raj <raj.khem@gmail.com>
2021-01-12 00:32:38 -08:00
Khem Raj
e2979482dc rust: Add riscv32/riscv64 support
Set the cpu, features, and abi correctly

Signed-off-by: Khem Raj <raj.khem@gmail.com>
2021-01-12 00:31:16 -08:00
Khem Raj
a679b6f4c2 rust: Build rust backend
In llvm11 we have both riscv32 or riscv64 backends so enable them

Signed-off-by: Khem Raj <raj.khem@gmail.com>
2021-01-12 00:30:18 -08:00
Steven Walter
8da0936aa8 Merge pull request #287 from YoeDistro/yoe/mut
rust: Correct the data layout for riscv32
2021-01-09 20:10:53 -05:00
Khem Raj
a59ddd90d2 rust: Correct the data layout for riscv32
This now matches with llvm target backend in llvm 11

Signed-off-by: Khem Raj <raj.khem@gmail.com>
2021-01-09 12:53:13 -08:00
Steven Walter
fa5cdb0de4 Merge pull request #286 from janderholm/buildseparation
Build separation
2021-01-08 16:43:31 -05:00
Johan Anderholm
e5ee880894 cargo_common: Make output more readable 2021-01-08 16:48:36 +01:00
Johan Anderholm
a673320995 cargo: Enable build separation
Place generated artifacts in the directory suggested by bitbake (${B})
instead of directly in the source directory. This has multiple
advantages such as the ability to share source directory between
multiple machine types without risking cross contamination.
2021-01-08 16:47:40 +01:00
Steven Walter
2a4bb8966a Merge pull request #285 from janderholm/armv7
Use proper llvm-target for armv7
2021-01-08 08:57:56 -05:00
Johan Anderholm
cb4f8294d4 Use proper llvm-target for armv7
arm-unknown-linux-gnueabihf was incorrectly used as llvm-target instead
of armv7-unknown-linux-gnueabihf when building for some Cortex A SoCs.
This may cause segfaults in non trivial rust applications on ARMv7
when e.g. +a7 is passed to LLVM. It seems to differ between different
versions of the compiler and LLVM versions.
2021-01-08 10:37:34 +01:00
Steven Walter
7ff669d8ce Merge pull request #284 from danc86/add-rust-1.47
add rust 1.47
2020-12-22 13:26:33 -05:00
Steven Walter
25a20987fb Merge pull request #283 from danc86/add-cargo-1.46
cargo: add missing version 1.46.0
2020-12-22 13:25:04 -05:00
Dan Callaghan
4b151fa804 add rust 1.47.0 2020-12-18 21:05:13 +10:00
Dan Callaghan
8cfc3c9826 clean up some common definitions across rust versions
These bits and pieces had evidently been copy-pasted forward into each
new recipe version, but now they are all identical and can be tidied up.
2020-12-18 21:05:06 +10:00
Dan Callaghan
aec6519e23 cargo: add missing version 1.46.0
Rust version 1.46.0 was added to the layer a while back, but the
corresponding cargo recipe seems to have been missed.
2020-12-18 21:04:02 +10:00
Tyler Hall
f56fd4ec68 Merge pull request #281 from YoeDistro/yoe/mut
rust-bin.bbclass: Do not use append and += together
2020-11-14 16:44:44 -05:00
Khem Raj
7afffa083c rust-bin.bbclass: Do not use append and += together
this is undefined behavior in bitbake, prepend space instead

Signed-off-by: Khem Raj <raj.khem@gmail.com>
2020-11-14 08:56:18 -08:00
Steven Walter
53bfa32489 Merge pull request #280 from YoeDistro/yoe/mut
layer.conf: Add gatesgarth to LAYERSERIES_COMPAT
2020-10-15 20:05:42 -04:00
Khem Raj
2822b50c04 layer.conf: Add gatesgarth to LAYERSERIES_COMPAT
Signed-off-by: Khem Raj <raj.khem@gmail.com>
2020-10-15 09:28:23 -07:00
Steven Walter
2e085dda43 Merge pull request #279 from ColinFinck/fix/cargo-libgit2-pkgconfig
Disable LIBGIT2_SYS_USE_PKG_CONFIG due to incompatibility with libgit2 0.28.x
2020-10-09 16:23:57 -04:00
Colin Finck
8a44baed44 Disable LIBGIT2_SYS_USE_PKG_CONFIG due to incompatibility with 0.28.x
libgit2 0.28.x is shipped by latest Yocto Dunfell.
According to https://github.com/rust-lang/git2-rs/issues/458#issuecomment-522567539, there are no compatibility guarantees between libgit2-sys and arbitrary system libgit2 versions, so better keep this turned off.

Fixes "invalid version 3 on git_proxy_options" during build.

Further references:
* https://github.com/rust-lang/git2-rs/issues/458
* https://bugs.gentoo.org/707746#c1
2020-10-06 17:35:54 +02:00
Steven Walter
318fb46863 Merge pull request #278 from srwalter/rust-1.46
Add rust 1.46.0
2020-09-02 12:54:14 -04:00
Steven Walter
b7f9c1d0d7 Add rust 1.46.0 2020-08-31 14:47:11 -04:00
Steven Walter
7f235b6f89 Merge pull request #277 from shr-project/jansa/parallel
rust: use PARALLEL_MAKE instead of BB_NUMBER_THREADS
2020-05-28 13:56:20 -04:00
Martin Jansa
647b976da2 rust: use PARALLEL_MAKE instead of BB_NUMBER_THREADS
* BB_NUMBER_THREADS is number of bitbake tasks running in
  parallel, not parallelization inside individual tasks
* use oe.utils.parallel_make_argument to make sure it
  works even when people add e.g. "-l 10" in PARALLEL_MAKE
* with the recent improvements for rust-native build time, I wanted
  to rerun some build time tests from
  https://github.com/shr-project/test-oe-build-time
  here are the results on AMD Threadripper 3970x with 128GB ram:

  BB is BB_NUMBER_THREADS
  PM is PARALLEL_MAKE

  TIME   BB        PM   Description
  20:50   *         *   zeus based build with 1.37 rust (BB/PM has no impact)
  14:50   8  32,48,64   dunfell, 1.43 as in d2ff87ca55 (PM has no impact, because bootstrap uses BB)
   9:50   8  32,48,64   dunfell, 1.43 with this patch applied, it doesn't get faster after some threashold of PM
  13:32   8        64   dunfell, 1.43 with this patch applied and "rust.inc: cut build time in half" (afcb58e5b9) reverted
  13:30   8        64   dunfell, 1.43 with "rust.inc: cut build time in half" (afcb58e5b9) as well as "rust.inc: run bootstrap.py in parallel" (40a6bd8a8d) reverted to see if 1.43 builds faster without any meta-rust improvements compared to 1.37
  94:47   1        64   dunfell, 1.43 as in d2ff87ca55 (either something went wrong or explicit "-j 1" disables some parallelism done by default already
  13:40   *         *   zeus based build with 1.39 rust (BB/PM has no impact)
  10:50   8        64   zeus based build with 1.39 rust as proposed in jansa/new-zeus-branch
  80:51   8         1   zeus based build with 1.39 rust as proposed in jansa/new-zeus-branch with "-j 1" PARALLEL_MAKE

Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>
2020-05-28 18:36:04 +02:00
Steven Walter
d2ff87ca55 Merge pull request #276 from tylerwhall/bb-num-threads
rust.inc: whitelist BB_NUMBER_THREADS in do_compile
2020-05-18 23:03:57 -04:00
Tyler Hall
8d3f79f217 rust.inc: whitelist BB_NUMBER_THREADS in do_compile
d55cce6b8b6b510bf4905f19b949f7995af57a4d added a use of
BB_NUMBER_THREADS which is not whitelisted in Poky. This caused machines
with a different number of CPUs to have different sstate for
rust-native.
2020-05-18 19:10:04 -04:00
Steven Walter
be88d857a6 Merge pull request #275 from alistair23/alistair/rust-update
Bump to Rust version 1.43
2020-05-17 20:04:00 -04:00
Alistair Francis
2c7321dac6 Bump to Rust version 1.43
Signed-off-by: Alistair Francis <alistair@alistair23.me>
2020-05-13 22:52:39 -07:00
Steven Walter
b84c61eb85 Revert "cargo: fix progress output"
This reverts commit dd0fc89389.
2020-05-12 10:22:06 -04:00
Steven Walter
dd0fc89389 cargo: fix progress output
This patch got dropped from the new cargo version
2020-05-11 22:18:35 -04:00
Steven Walter
afcb58e5b9 rust.inc: cut build time in half
Don't tar everything up just to untar it again.  This literally takes
longer than actually building the rust compiler
2020-05-11 22:18:35 -04:00
Steven Walter
40a6bd8a8d rust.inc: run bootstrap.py in parallel
Allow bootstrap.py to use as many cores as bitbake normally uses
2020-05-11 22:18:35 -04:00
Steven Walter
c023edd985 rust.inc: make max-atomic-width an integer
As a string this was actually being ignored.  It mostly didn't matter
because max-atomic-width falls back to target-pointer-size, and they are
usually the same.  However, at least on i586, 64-bit atomics are
supported with a 32-bit pointer size.
2020-05-11 22:18:35 -04:00
Steven Walter
6ed6a09a99 Merge pull request #273 from meta-rust/common-rust-native
rust-native shouldn't depend on TARGET variables
2020-05-11 18:27:34 -04:00
96 changed files with 1259 additions and 1096 deletions

33
.github/workflows/main.yml vendored Normal file
View File

@@ -0,0 +1,33 @@
on: [pull_request]
jobs:
build:
env:
YOCTO_VERSION: 3.3.2
YOCTO_BRANCH: hardknott
runs-on: self-hosted
steps:
- uses: actions/checkout@v2
with:
path: 'meta-rust'
- name: Fetch poky
run: |
mv poky/build/sstate-cache . || true
rm -rf poky meta-openembedded
git clone -b $YOCTO_BRANCH --single-branch git://git.yoctoproject.org/poky
git clone -b $YOCTO_BRANCH --single-branch git://git.openembedded.org/meta-openembedded
- name: Configure build
run: |
cd poky
. oe-init-build-env
mv ../../sstate-cache . || true
bitbake-layers add-layer ../../meta-openembedded/meta-oe
bitbake-layers add-layer ../../meta-rust
echo 'PARALLEL_MAKE:pn-rust-llvm-native = "-j2"' >> conf/local.conf
echo 'TOOLCHAIN_HOST_TASK:append = " packagegroup-rust-cross-canadian-${MACHINE}"' >> conf/local.conf
echo 'PREFERRED_PROVIDER_virtual/kernel = "linux-dummy"' >> conf/local.conf
echo 'INHERIT_remove = "uninative"' >> conf/local.conf
- name: Run bitbake
run: |
cd poky
. oe-init-build-env
bitbake rust-hello-world

View File

@@ -13,7 +13,7 @@ This OpenEmbedded layer provides the rust compiler, tools for building packages
## What doesn't:
- Using anything but x86_64 as the build environment
- rust (built for target) issue #81
- rust (built for target) [issue #81](https://github.com/meta-rust/meta-rust/issues/81)
## What's untested:
@@ -27,7 +27,7 @@ rust packages do), then it's especially easy. Otherwise you should probably
get the code building in cargo first.
Once your package builds in cargo, you can use
[cargo-bitbake](https://github.com/cardoe/cargo-bitbake) to generate a bitbake
[cargo-bitbake](https://github.com/meta-rust/cargo-bitbake) to generate a bitbake
recipe for it. This allows bitbake to fetch all the necessary dependent
crates, as well as a pegged version of the crates.io index, to ensure maximum
reproducibility.
@@ -39,7 +39,7 @@ contained within it
## Pitfalls
- TARGET_SYS _must_ be different from BUILD_SYS. This is due to the way Rust configuration options are tracked for different targets. This is the reason we use the Yocto triples instead of the native Rust triples. See rust-lang/cargo#3349.
- TARGET_SYS _must_ be different from BUILD_SYS. This is due to the way Rust configuration options are tracked for different targets. This is the reason we use the Yocto triples instead of the native Rust triples. See [rust-lang/cargo#3349](https://github.com/rust-lang/cargo/issues/3349).
## Dependencies
@@ -59,7 +59,7 @@ The master branch supports the latest master of poky. When poky creates releases
All new patches against rust, rust-llvm, and cargo must have referenced
upstream issues or PRs opened or an explanation why the patch cannot be
upstreamed. This cooresponds to the OpenEmbedded policy for other meta layers.
upstreamed. This corresponds to the OpenEmbedded policy for other meta layers.
More info can be seen on the wiki.

View File

@@ -9,22 +9,29 @@ inherit cargo_common
CARGO = "cargo"
# We need cargo to compile for the target
BASEDEPENDS_append = " cargo-native"
BASEDEPENDS:append = " cargo-native"
# Ensure we get the right rust variant
DEPENDS_append_class-target = " virtual/${TARGET_PREFIX}rust ${RUSTLIB_DEP}"
DEPENDS_append_class-native = " rust-native"
DEPENDS:append:class-target = " virtual/${TARGET_PREFIX}rust ${RUSTLIB_DEP}"
DEPENDS:append:class-native = " rust-native"
# Cargo only supports in-tree builds at the moment
B = "${S}"
# Enable build separation
B = "${WORKDIR}/build"
# In case something fails in the build process, give a bit more feedback on
# where the issue occured
export RUST_BACKTRACE = "1"
# The directory of the Cargo.toml relative to the root directory, per default
# assume there's a Cargo.toml directly in the root directory
CARGO_SRC_DIR ??= ""
# The actual path to the Cargo.toml
MANIFEST_PATH ??= "${S}/${CARGO_SRC_DIR}/Cargo.toml"
RUSTFLAGS ??= ""
BUILD_MODE = "${@['--release', ''][d.getVar('DEBUG_BUILD') == '1']}"
CARGO_BUILD_FLAGS = "-v --target ${HOST_SYS} ${BUILD_MODE}"
CARGO_BUILD_FLAGS = "-v --target ${HOST_SYS} ${BUILD_MODE} --manifest-path=${MANIFEST_PATH}"
# This is based on the content of CARGO_BUILD_FLAGS and generally will need to
# change if CARGO_BUILD_FLAGS changes.
@@ -39,6 +46,7 @@ oe_cargo_build () {
"${CARGO}" build ${CARGO_BUILD_FLAGS} "$@"
}
do_compile[progress] = "outof:\s+(\d+)/(\d+)"
cargo_do_compile () {
oe_cargo_fix_env
oe_cargo_build
@@ -53,6 +61,17 @@ cargo_do_install () {
install -m755 "$tgt" "${D}${rustlibdir}"
have_installed=true
;;
*examples)
if [ -d "$tgt" ]; then
for example in "$tgt/"*; do
if [ -f "$example" ] && [ -x "$example" ]; then
install -d "${D}${bindir}"
install -m755 "$example" "${D}${bindir}"
have_installed=true
fi
done
fi
;;
*)
if [ -f "$tgt" ] && [ -x "$tgt" ]; then
install -d "${D}${bindir}"

View File

@@ -28,51 +28,82 @@ CARGO_DISABLE_BITBAKE_VENDORING ?= "0"
# Used by libstd-rs to point to the vendor dir included in rustc src
CARGO_VENDORING_DIRECTORY ?= "${CARGO_HOME}/bitbake"
CARGO_RUST_TARGET_CCLD ?= "${RUST_TARGET_CCLD}"
cargo_common_do_configure () {
mkdir -p ${CARGO_HOME}/bitbake
echo "paths = [" > ${CARGO_HOME}/config
for p in ${EXTRA_OECARGO_PATHS}; do
printf "\"%s\"\n" "$p"
done | sed -e 's/$/,/' >> ${CARGO_HOME}/config
echo "]" >> ${CARGO_HOME}/config
cat <<- EOF > ${CARGO_HOME}/config
# EXTRA_OECARGO_PATHS
paths = [
$(for p in ${EXTRA_OECARGO_PATHS}; do echo \"$p\",; done)
]
EOF
# Point cargo at our local mirror of the registry
cat <<- EOF >> ${CARGO_HOME}/config
# Local mirror vendored by bitbake
[source.bitbake]
directory = "${CARGO_VENDORING_DIRECTORY}"
EOF
if [ -z "${EXTERNALSRC}" ] && [ ${CARGO_DISABLE_BITBAKE_VENDORING} = "0" ]; then
cat <<- EOF >> ${CARGO_HOME}/config
[source.crates-io]
replace-with = "bitbake"
local-registry = "/nonexistant"
EOF
fi
# Disable multiplexing in order to keep cargo from using http2, which we
# can't currently enable because of dependency loops
cat <<- EOF >> ${CARGO_HOME}/config
[http]
multiplexing = false
EOF
cat <<- EOF >> ${CARGO_HOME}/config
# When a sstate-cache is used sometimes the certificates are not available
# at the compile time path anymore. Set it explicitly instead.
echo "cainfo = \"${STAGING_ETCDIR_NATIVE}/ssl/certs/ca-certificates.crt\"" \
>> ${CARGO_HOME}/config
[http]
# Multiplexing can't be enabled because http2 can't be enabled
# in curl-native without dependency loops
multiplexing = false
# Ignore the hard coded and incorrect path to certificates
cainfo = "${STAGING_ETCDIR_NATIVE}/ssl/certs/ca-certificates.crt"
EOF
if [ -n "${http_proxy}" ]; then
echo "proxy = \"${http_proxy}\"" >> ${CARGO_HOME}/config
fi
echo "[target.${HOST_SYS}]" >> ${CARGO_HOME}/config
echo "linker = '${RUST_TARGET_CCLD}'" >> ${CARGO_HOME}/config
cat <<- EOF >> ${CARGO_HOME}/config
# HOST_SYS
[target.${HOST_SYS}]
linker = "${CARGO_RUST_TARGET_CCLD}"
EOF
if [ "${HOST_SYS}" != "${BUILD_SYS}" ]; then
echo "[target.${BUILD_SYS}]" >> ${CARGO_HOME}/config
echo "linker = '${RUST_BUILD_CCLD}'" >> ${CARGO_HOME}/config
cat <<- EOF >> ${CARGO_HOME}/config
# BUILD_SYS
[target.${BUILD_SYS}]
linker = "${RUST_BUILD_CCLD}"
EOF
fi
# Put build output in build directory preferred by bitbake instead of
# inside source directory unless they are the same
if [ "${B}" != "${S}" ]; then
cat <<- EOF >> ${CARGO_HOME}/config
[build]
# Use out of tree build destination to avoid poluting the source tree
target-dir = "${B}/target"
EOF
fi
cat <<- EOF >> ${CARGO_HOME}/config
[term]
progress.when = 'always'
progress.width = 80
EOF
}
oe_cargo_fix_env () {

View File

@@ -1,6 +1,6 @@
inherit rust
RDEPENDS_${PN}_append_class-target += "${RUSTLIB_DEP}"
RDEPENDS:${PN}:append:class-target = " ${RUSTLIB_DEP}"
RUSTC_ARCHFLAGS += "-C opt-level=3 -g -L ${STAGING_DIR_HOST}/${rustlibdir} -C linker=${RUST_TARGET_CCLD}"
EXTRA_OEMAKE += 'RUSTC_ARCHFLAGS="${RUSTC_ARCHFLAGS}"'

View File

@@ -1,8 +1,8 @@
# Common variables used by all Rust builds
export rustlibdir = "${libdir}/rust"
FILES_${PN} += "${rustlibdir}/*.so"
FILES_${PN}-dev += "${rustlibdir}/*.rlib ${rustlibdir}/*.rmeta"
FILES_${PN}-dbg += "${rustlibdir}/.debug"
FILES:${PN} += "${rustlibdir}/*.so"
FILES:${PN}-dev += "${rustlibdir}/*.rlib ${rustlibdir}/*.rmeta"
FILES:${PN}-dbg += "${rustlibdir}/.debug"
RUSTLIB = "-L ${STAGING_LIBDIR}/rust"
RUST_DEBUG_REMAP = "--remap-path-prefix=${WORKDIR}=/usr/src/debug/${PN}/${EXTENDPE}${PV}-${PR}"
@@ -14,7 +14,7 @@ RUST_PANIC_STRATEGY ?= "unwind"
# Native builds are not effected by TCLIBC. Without this, rust-native
# thinks it's "target" (i.e. x86_64-linux) is a musl target.
RUST_LIBC = "${TCLIBC}"
RUST_LIBC_class-native = "glibc"
RUST_LIBC:class-native = "glibc"
def determine_libc(d, thing):
'''Determine which libc something should target'''
@@ -27,10 +27,28 @@ def determine_libc(d, thing):
elif thing == 'BUILD' and (d.getVar('HOST_SYS') != d.getVar('BUILD_SYS')):
libc = d.getVar('RUST_LIBC')
else:
libc = d.getVar('RUST_LIBC_class-native')
libc = d.getVar('RUST_LIBC:class-native')
return libc
def target_is_armv7(d):
'''Determine if target is armv7'''
# TUNE_FEATURES may include arm* even if the target is not arm
# in the case of *-native packages
if d.getVar('TARGET_ARCH') != 'arm':
return False
feat = d.getVar('TUNE_FEATURES')
feat = frozenset(feat.split())
mach_overrides = d.getVar('MACHINEOVERRIDES')
mach_overrides = frozenset(mach_overrides.split(':'))
v7=frozenset(['armv7a', 'armv7r', 'armv7m', 'armv7ve'])
if mach_overrides.isdisjoint(v7) and feat.isdisjoint(v7):
return False
else:
return True
# Responsible for taking Yocto triples and converting it to Rust triples
def rust_base_triple(d, thing):
'''
@@ -40,7 +58,12 @@ def rust_base_triple(d, thing):
Note that os is assumed to be some linux form
'''
arch = d.getVar('{}_ARCH'.format(thing))
# The llvm-target for armv7 is armv7-unknown-linux-gnueabihf
if thing == "TARGET" and target_is_armv7(d):
arch = "armv7"
else:
arch = d.getVar('{}_ARCH'.format(thing))
# All the Yocto targets are Linux and are 'unknown'
vendor = "-unknown"
os = d.getVar('{}_OS'.format(thing))
@@ -80,7 +103,7 @@ def rust_base_triple(d, thing):
#
# Rust additionally will use two additional cases:
# - undecorated (e.g. CC) - equivalent to TARGET
# - triple suffix (e.g. CC_x86_64_unknown_linux_gnu) - both
# - triple suffix (e.g. CC:x86_64_unknown_linux_gnu) - both
# see: https://github.com/alexcrichton/gcc-rs
# The way that Rust's internal triples and Yocto triples are mapped together
# its likely best to not use the triple suffix due to potential confusion.
@@ -115,6 +138,12 @@ create_wrapper () {
chmod +x "${file}"
}
export WRAPPER_TARGET_CC = "${CC}"
export WRAPPER_TARGET_CXX = "${CXX}"
export WRAPPER_TARGET_CCLD = "${CCLD}"
export WRAPPER_TARGET_LDFLAGS = "${LDFLAGS}"
export WRAPPER_TARGET_AR = "${AR}"
# compiler is used by gcc-rs
# linker is used by rustc/cargo
# archiver is used by the build of libstd-rs
@@ -131,13 +160,14 @@ do_rust_create_wrappers () {
create_wrapper "${RUST_BUILD_AR}" "${BUILD_AR}"
# Yocto Target / Rust Target C compiler
create_wrapper "${RUST_TARGET_CC}" "${CC}"
create_wrapper "${RUST_TARGET_CC}" "${WRAPPER_TARGET_CC}"
# Yocto Target / Rust Target C++ compiler
create_wrapper "${RUST_TARGET_CXX}" "${CXX}"
create_wrapper "${RUST_TARGET_CXX}" "${WRAPPER_TARGET_CXX}"
# Yocto Target / Rust Target linker
create_wrapper "${RUST_TARGET_CCLD}" "${CCLD}" "${LDFLAGS}"
create_wrapper "${RUST_TARGET_CCLD}" "${WRAPPER_TARGET_CCLD}" "${WRAPPER_TARGET_LDFLAGS}"
# Yocto Target / Rust Target archiver
create_wrapper "${RUST_TARGET_AR}" "${AR}"
create_wrapper "${RUST_TARGET_AR}" "${WRAPPER_TARGET_AR}"
}
addtask rust_create_wrappers before do_configure after do_patch

View File

@@ -15,7 +15,7 @@ def rust_base_dep(d):
deps += " rust-native"
return deps
DEPENDS_append = " ${@rust_base_dep(d)}"
DEPENDS:append = " ${@rust_base_dep(d)}"
# BUILD_LDFLAGS
# ${STAGING_LIBDIR_NATIVE}
@@ -42,4 +42,4 @@ rustlib_suffix="${TUNE_ARCH}${TARGET_VENDOR}-${TARGET_OS}/rustlib/${HOST_SYS}/li
rustlib_src="${prefix}/lib/${rustlib_suffix}"
# Host sysroot standard library path
rustlib="${libdir}/${rustlib_suffix}"
rustlib_class-native="${libdir}/rustlib/${BUILD_SYS}/lib"
rustlib:class-native="${libdir}/rustlib/${BUILD_SYS}/lib"

View File

@@ -1,7 +1,7 @@
# Build errors with PIE options enabled
SECURITY_CFLAGS_pn-rust-native = "${SECURITY_NO_PIE_CFLAGS}"
SECURITY_CFLAGS_pn-rust-cross-${TARGET_ARCH} = "${SECURITY_NO_PIE_CFLAGS}"
SECURITY_CFLAGS_pn-rust = "${SECURITY_NO_PIE_CFLAGS}"
SECURITY_CFLAGS_pn-rust-llvm = "${SECURITY_NO_PIE_CFLAGS}"
SECURITY_CFLAGS:pn-rust-native = "${SECURITY_NO_PIE_CFLAGS}"
SECURITY_CFLAGS:pn-rust-cross-${TARGET_ARCH} = "${SECURITY_NO_PIE_CFLAGS}"
SECURITY_CFLAGS:pn-rust = "${SECURITY_NO_PIE_CFLAGS}"
SECURITY_CFLAGS:pn-rust-llvm = "${SECURITY_NO_PIE_CFLAGS}"
SECURITY_LDFLAGS_pn-rust-cross-arm = " -lssp_nonshared -lssp"
SECURITY_LDFLAGS:pn-rust-cross-arm = " -lssp_nonshared -lssp"

View File

@@ -0,0 +1,13 @@
# include this in your distribution to easily switch between versions
# just by changing RUST_VERSION variable
RUST_VERSION ?= "1.51.0"
PREFERRED_VERSION_cargo ?= "${RUST_VERSION}"
PREFERRED_VERSION_cargo-native ?= "${RUST_VERSION}"
PREFERRED_VERSION_libstd-rs ?= "${RUST_VERSION}"
PREFERRED_VERSION_rust ?= "${RUST_VERSION}"
PREFERRED_VERSION_rust-cross-${TARGET_ARCH} ?= "${RUST_VERSION}"
PREFERRED_VERSION_rust-llvm ?= "${RUST_VERSION}"
PREFERRED_VERSION_rust-llvm-native ?= "${RUST_VERSION}"
PREFERRED_VERSION_rust-native ?= "${RUST_VERSION}"

View File

@@ -9,7 +9,7 @@ BBFILE_PATTERN_rust-layer := "^${LAYERDIR}/"
BBFILE_PRIORITY_rust-layer = "7"
LAYERDEPENDS_rust-layer = "core openembedded-layer"
LAYERSERIES_COMPAT_rust-layer = "rocko sumo thud warrior zeus dunfell"
LAYERSERIES_COMPAT_rust-layer = "dunfell gatesgarth hardknott honister kirkstone"
# Override security flags
require conf/distro/include/rust_security_flags.inc

View File

@@ -232,8 +232,8 @@ INHERIT += "own-mirrors rm_work"
# seen. The two lines below enable the SDL backend too. By default libsdl-native will
# be built, if you want to use your host's libSDL instead of the minimal libsdl built
# by libsdl-native then uncomment the ASSUME_PROVIDED line below.
PACKAGECONFIG_append_pn-qemu-native = " sdl"
PACKAGECONFIG_append_pn-nativesdk-qemu = " sdl"
PACKAGECONFIG:append:pn-qemu-native = " sdl"
PACKAGECONFIG:append:pn-nativesdk-qemu = " sdl"
#ASSUME_PROVIDED += "libsdl-native"
# CONF_VERSION is increased each time build/conf/ changes incompatibly and is used to

View File

@@ -0,0 +1,18 @@
SUMMARY = "Host SDK package for Rust cross canadian toolchain"
PN = "packagegroup-rust-cross-canadian-${MACHINE}"
inherit cross-canadian packagegroup
PACKAGEGROUP_DISABLE_COMPLEMENTARY = "1"
RUST="rust-cross-canadian-${TRANSLATED_TARGET_ARCH}"
CARGO="cargo-cross-canadian-${TRANSLATED_TARGET_ARCH}"
RUST_TOOLS="rust-tools-cross-canadian-${TRANSLATED_TARGET_ARCH}"
RDEPENDS:${PN} = " \
${@all_multilib_tune_values(d, 'RUST')} \
${@all_multilib_tune_values(d, 'CARGO')} \
rust-cross-canadian-src \
${@all_multilib_tune_values(d, 'RUST_TOOLS')} \
"

View File

@@ -1,29 +0,0 @@
From 44cf21036646e4849e9f8566db7decb7da917394 Mon Sep 17 00:00:00 2001
From: Johan Anderholm <johan.anderholm@gmail.com>
Date: Sun, 27 Jan 2019 10:19:00 +0100
Subject: [PATCH] Disable http2
http2 requires that curl is build with nghttp2 which in turn depends on
many dependencies and ultimately a dependency loop in the case of
curl-native. As long as multiplexing is disabled in cargo this should
be fine.
Upstream-Status: Inappropriate
---
Cargo.toml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/Cargo.toml b/Cargo.toml
index 8238380861d9..ced1defea459 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -24,7 +24,7 @@ bytesize = "1.0"
crates-io = { path = "src/crates-io", version = "0.23" }
crossbeam-utils = "0.6"
crypto-hash = "0.3.1"
-curl = { version = "0.4.19", features = ['http2'] }
+curl = { version = "0.4.19" }
curl-sys = "0.4.15"
env_logger = "0.6.0"
pretty_env_logger = { version = "0.3", optional = true }

View File

@@ -1,31 +0,0 @@
From 42e65192b6f7520b7a05924856e00600961f6758 Mon Sep 17 00:00:00 2001
From: Johan Anderholm <johan.anderholm@gmail.com>
Date: Sun, 27 Jan 2019 10:19:00 +0100
Subject: [PATCH] Disable http2
http2 requires that curl is build with nghttp2 which in turn depends on
many dependencies and ultimately a dependency loop in the case of
curl-native. As long as multiplexing is disabled in cargo this should
be fine.
Upstream-Status: Inappropriate
---
Cargo.toml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/Cargo.toml b/Cargo.toml
index c3fcacf5..bd6ec50b 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -24,7 +24,7 @@ bytesize = "1.0"
crates-io = { path = "src/crates-io", version = "0.25" }
crossbeam-utils = "0.6"
crypto-hash = "0.3.1"
-curl = { version = "0.4.21", features = ['http2'] }
+curl = { version = "0.4.21" }
curl-sys = "0.4.18"
env_logger = "0.6.0"
pretty_env_logger = { version = "0.3", optional = true }
--
2.11.0

View File

@@ -1,29 +0,0 @@
From 0e2384133664ebeb548b782ad763c3a627c1bc66 Mon Sep 17 00:00:00 2001
From: Johan Anderholm <johan.anderholm@gmail.com>
Date: Sun, 27 Jan 2019 10:19:00 +0100
Subject: [PATCH] Disable http2
http2 requires that curl is build with nghttp2 which in turn depends on
many dependencies and ultimately a dependency loop in the case of
curl-native. As long as multiplexing is disabled in cargo this should
be fine.
Upstream-Status: Inappropriate
---
src/tools/cargo/Cargo.toml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/Cargo.toml b/Cargo.toml
index d15aa2513..ba9c77d25 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -24,7 +24,7 @@ bytesize = "1.0"
crates-io = { path = "crates/crates-io", version = "0.26" }
crossbeam-utils = "0.6"
crypto-hash = "0.3.1"
-curl = { version = "0.4.21", features = ['http2'] }
+curl = { version = "0.4.21" }
curl-sys = "0.4.18"
env_logger = "0.6.0"
pretty_env_logger = { version = "0.3", optional = true }

View File

@@ -1,29 +0,0 @@
From 0e2384133664ebeb548b782ad763c3a627c1bc66 Mon Sep 17 00:00:00 2001
From: Johan Anderholm <johan.anderholm@gmail.com>
Date: Sun, 27 Jan 2019 10:19:00 +0100
Subject: [PATCH] Disable http2
http2 requires that curl is build with nghttp2 which in turn depends on
many dependencies and ultimately a dependency loop in the case of
curl-native. As long as multiplexing is disabled in cargo this should
be fine.
Upstream-Status: Inappropriate
---
src/tools/cargo/Cargo.toml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/Cargo.toml b/Cargo.toml
index d15aa2513..ba9c77d25 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -24,7 +24,7 @@ bytesize = "1.0"
crates-io = { path = "crates/crates-io", version = "0.28" }
crossbeam-utils = "0.6"
crypto-hash = "0.3.1"
-curl = { version = "0.4.21", features = ['http2'] }
+curl = { version = "0.4.21" }
curl-sys = "0.4.18"
env_logger = "0.6.0"
pretty_env_logger = { version = "0.3", optional = true }

View File

@@ -1,29 +0,0 @@
From f0496287fb754e5b8dd1956f6a0addb55f3b06f5 Mon Sep 17 00:00:00 2001
From: Johan Anderholm <johan.anderholm@gmail.com>
Date: Sun, 27 Jan 2019 10:19:00 +0100
Subject: [PATCH] Disable http2
http2 requires that curl is build with nghttp2 which in turn depends on
many dependencies and ultimately a dependency loop in the case of
curl-native. As long as multiplexing is disabled in cargo this should
be fine.
Upstream-Status: Inappropriate
---
src/tools/cargo/Cargo.toml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/Cargo.toml b/Cargo.toml
index eea1f42a2..5159890f4 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -25,7 +25,7 @@ cargo-platform = { path = "crates/cargo-platform", version = "0.1" }
crates-io = { path = "crates/crates-io", version = "0.29" }
crossbeam-utils = "0.6"
crypto-hash = "0.3.1"
-curl = { version = "0.4.23", features = ["http2"] }
+curl = { version = "0.4.23" }
curl-sys = "0.4.22"
env_logger = "0.7.0"
pretty_env_logger = { version = "0.3", optional = true }

View File

@@ -1,29 +0,0 @@
From e06774b9f2be4ff1f3404f2f10e25f99e3f3455b Mon Sep 17 00:00:00 2001
From: Johan Anderholm <johan.anderholm@gmail.com>
Date: Sun, 27 Jan 2019 10:19:00 +0100
Subject: [PATCH] Disable http2
http2 requires that curl is build with nghttp2 which in turn depends on
many dependencies and ultimately a dependency loop in the case of
curl-native. As long as multiplexing is disabled in cargo this should
be fine.
Upstream-Status: Inappropriate
---
src/tools/cargo/Cargo.toml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/Cargo.toml b/Cargo.toml
index fc9b69c03..2f4d3a949 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -25,7 +25,7 @@ cargo-platform = { path = "crates/cargo-platform", version = "0.1" }
crates-io = { path = "crates/crates-io", version = "0.30" }
crossbeam-utils = "0.7"
crypto-hash = "0.3.1"
-curl = { version = "0.4.23", features = ["http2"] }
+curl = { version = "0.4.23" }
curl-sys = "0.4.22"
env_logger = "0.7.0"
pretty_env_logger = { version = "0.3", optional = true }

View File

@@ -0,0 +1,74 @@
SUMMARY = "Cargo, a package manager for Rust cross canadian flavor."
RUST_ALTERNATE_EXE_PATH = "${STAGING_LIBDIR_NATIVE}/llvm-rust/bin/llvm-config"
HOST_SYS = "${HOST_ARCH}-unknown-linux-gnu"
CARGO_RUST_TARGET_CCLD = "${RUST_BUILD_CCLD}"
require recipes-devtools/rust/rust-common.inc
require cargo.inc
CARGO = "${WORKDIR}/${CARGO_SNAPSHOT}/bin/cargo"
BASEDEPENDS:remove = "cargo-native"
export RUST_TARGET_PATH="${WORKDIR}/targets/"
RUSTLIB = " \
-L ${STAGING_DIR_NATIVE}/${SDKPATHNATIVE}/usr/lib/${TARGET_SYS}/rustlib/${HOST_SYS}/lib \
"
DEPENDS += "rust-native \
rust-cross-canadian-${TRANSLATED_TARGET_ARCH} \
virtual/nativesdk-${HOST_PREFIX}compilerlibs \
nativesdk-openssl nativesdk-zlib \
virtual/nativesdk-libc \
"
inherit cross-canadian
PN = "cargo-cross-canadian-${TRANSLATED_TARGET_ARCH}"
LLVM_TARGET[x86_64] = "${RUST_HOST_SYS}"
python do_rust_gen_targets () {
wd = d.getVar('WORKDIR') + '/targets/'
rust_gen_target(d, 'BUILD', wd, "", "generic", d.getVar('BUILD_ARCH'))
rust_gen_target(d, 'HOST', wd, "", "generic", d.getVar('HOST_ARCH'))
}
do_compile:prepend () {
PKG_CONFIG_PATH="${RECIPE_SYSROOT_NATIVE}/usr/lib/pkgconfig:${PKG_CONFIG_PATH}"
}
do_install () {
SYS_BINDIR=$(dirname ${D}${bindir})
install -d "${SYS_BINDIR}"
install -m 755 "${B}/target/${CARGO_TARGET_SUBDIR}/cargo" "${SYS_BINDIR}"
for i in ${SYS_BINDIR}/*; do
chrpath -r "\$ORIGIN/../lib" ${i}
done
ENV_SETUP_DIR=${D}${base_prefix}/environment-setup.d
mkdir "${ENV_SETUP_DIR}"
ENV_SETUP_SH="${ENV_SETUP_DIR}/cargo.sh"
cat <<- EOF > "${ENV_SETUP_SH}"
export CARGO_HOME="\$OECORE_TARGET_SYSROOT/home/cargo"
mkdir -p "\$CARGO_HOME"
# Init the default target once, it might be otherwise user modified.
if [ ! -f "\$CARGO_HOME/config" ]; then
touch "\$CARGO_HOME/config"
echo "[build]" >> "\$CARGO_HOME/config"
echo 'target = "'${TARGET_SYS}'"' >> "\$CARGO_HOME/config"
fi
# Keep the below off as long as HTTP/2 is disabled.
export CARGO_HTTP_MULTIPLEXING=false
export CARGO_HTTP_CAINFO="\$OECORE_NATIVE_SYSROOT/etc/ssl/certs/ca-certificates.crt"
EOF
}
PKG_SYS_BINDIR = "${SDKPATHNATIVE}/usr/bin"
FILES:${PN} += "${base_prefix}/environment-setup.d ${PKG_SYS_BINDIR}"

View File

@@ -0,0 +1,6 @@
require recipes-devtools/rust/rust-source-${PV}.inc
require recipes-devtools/rust/rust-snapshot-${PV}.inc
FILESEXTRAPATHS:prepend := "${THISDIR}/cargo-${PV}:"
require cargo-cross-canadian.inc

View File

@@ -0,0 +1,6 @@
require recipes-devtools/rust/rust-source-${PV}.inc
require recipes-devtools/rust/rust-snapshot-${PV}.inc
FILESEXTRAPATHS:prepend := "${THISDIR}/cargo-${PV}:"
require cargo-cross-canadian.inc

View File

@@ -1,43 +1,56 @@
SUMMARY = "Cargo, a package manager for Rust."
SUMMARY ?= "Cargo, a package manager for Rust."
HOMEPAGE = "https://crates.io"
LICENSE = "MIT | Apache-2.0"
SECTION = "devel"
DEPENDS = "openssl zlib libgit2 curl ca-certificates libssh2"
DEPENDS = "openssl zlib curl ca-certificates libssh2"
LIC_FILES_CHKSUM = " \
file://LICENSE-MIT;md5=b377b220f43d747efdec40d69fcaa69d \
file://LICENSE-APACHE;md5=71b224ca933f0676e26d5c2e2271331c \
file://LICENSE-THIRD-PARTY;md5=f257ad009884cb88a3a87d6920e7180a \
"
SRC_URI += "file://0001-Disable-http2.patch"
S = "${RUSTSRC}/src/tools/cargo"
CARGO_VENDORING_DIRECTORY = "${RUSTSRC}/vendor"
EXCLUDE_FROM_WORLD = "1"
inherit cargo
inherit cargo pkgconfig
do_cargo_setup_snapshot () {
${WORKDIR}/rust-snapshot-components/${CARGO_SNAPSHOT}/install.sh --prefix="${WORKDIR}/${CARGO_SNAPSHOT}" --disable-ldconfig
# Need to use uninative's loader if enabled/present since the library paths
# are used internally by rust and result in symbol mismatches if we don't
if [ ! -z "${UNINATIVE_LOADER}" -a -e "${UNINATIVE_LOADER}" ]; then
patchelf-uninative ${WORKDIR}/${CARGO_SNAPSHOT}/bin/cargo --set-interpreter ${UNINATIVE_LOADER}
fi
}
addtask cargo_setup_snapshot after do_unpack before do_configure
do_cargo_setup_snapshot[dirs] += "${WORKDIR}/${CARGO_SNAPSHOT}"
do_cargo_setup_snapshot[vardepsexclude] += "UNINATIVE_LOADER"
do_compile_prepend () {
do_compile:prepend () {
export RUSTC_BOOTSTRAP="1"
}
do_install () {
install -d "${D}${bindir}"
install -m 755 "${RUSTSRC}/target/${CARGO_TARGET_SUBDIR}/cargo" "${D}${bindir}"
install -m 755 "${B}/target/${CARGO_TARGET_SUBDIR}/cargo" "${D}${bindir}"
}
# Disabled due to incompatibility with libgit2 0.28.x (https://github.com/rust-lang/git2-rs/issues/458, https://bugs.gentoo.org/707746#c1)
# as shipped by Yocto Dunfell.
# According to https://github.com/rust-lang/git2-rs/issues/458#issuecomment-522567539, there are no compatibility guarantees between
# libgit2-sys and arbitrary system libgit2 versions, so better keep this turned off.
#export LIBGIT2_SYS_USE_PKG_CONFIG = "1"
# Needed for pkg-config to be used
export LIBGIT2_SYS_USE_PKG_CONFIG = "1"
export LIBSSH2_SYS_USE_PKG_CONFIG = "1"
BBCLASSEXTEND = "native"
# When building cargo-native we don't have a built cargo to use so we must use
# the snapshot to bootstrap the build of cargo
CARGO_class-native = "${WORKDIR}/${CARGO_SNAPSHOT}/bin/cargo"
# When building cargo-native we don't have cargo-native to use and depend on,
# so we must use the locally set up snapshot to bootstrap the build.
BASEDEPENDS:remove:class-native = "cargo-native"
CARGO:class-native = "${WORKDIR}/${CARGO_SNAPSHOT}/bin/cargo"

View File

@@ -1,8 +0,0 @@
require recipes-devtools/rust/rust-source-${PV}.inc
require recipes-devtools/rust/rust-snapshot-${PV}.inc
require cargo.inc
LIC_FILES_CHKSUM += " \
file://LICENSE-APACHE;md5=1836efb2eb779966696f473ee8540542 \
file://LICENSE-THIRD-PARTY;md5=892ea68b169e69cfe75097fc38a15b56 \
"

View File

@@ -1,8 +0,0 @@
require recipes-devtools/rust/rust-source-${PV}.inc
require recipes-devtools/rust/rust-snapshot-${PV}.inc
require cargo.inc
LIC_FILES_CHKSUM += " \
file://LICENSE-APACHE;md5=71b224ca933f0676e26d5c2e2271331c \
file://LICENSE-THIRD-PARTY;md5=f257ad009884cb88a3a87d6920e7180a \
"

View File

@@ -1,8 +0,0 @@
require recipes-devtools/rust/rust-source-${PV}.inc
require recipes-devtools/rust/rust-snapshot-${PV}.inc
require cargo.inc
LIC_FILES_CHKSUM += " \
file://LICENSE-APACHE;md5=71b224ca933f0676e26d5c2e2271331c \
file://LICENSE-THIRD-PARTY;md5=f257ad009884cb88a3a87d6920e7180a \
"

View File

@@ -1,8 +0,0 @@
require recipes-devtools/rust/rust-source-${PV}.inc
require recipes-devtools/rust/rust-snapshot-${PV}.inc
require cargo.inc
LIC_FILES_CHKSUM += " \
file://LICENSE-APACHE;md5=71b224ca933f0676e26d5c2e2271331c \
file://LICENSE-THIRD-PARTY;md5=f257ad009884cb88a3a87d6920e7180a \
"

View File

@@ -1,8 +0,0 @@
require recipes-devtools/rust/rust-source-${PV}.inc
require recipes-devtools/rust/rust-snapshot-${PV}.inc
require cargo.inc
LIC_FILES_CHKSUM += " \
file://LICENSE-APACHE;md5=71b224ca933f0676e26d5c2e2271331c \
file://LICENSE-THIRD-PARTY;md5=f257ad009884cb88a3a87d6920e7180a \
"

View File

@@ -1,8 +0,0 @@
require recipes-devtools/rust/rust-source-${PV}.inc
require recipes-devtools/rust/rust-snapshot-${PV}.inc
require cargo.inc
LIC_FILES_CHKSUM += " \
file://LICENSE-APACHE;md5=71b224ca933f0676e26d5c2e2271331c \
file://LICENSE-THIRD-PARTY;md5=f257ad009884cb88a3a87d6920e7180a \
"

View File

@@ -0,0 +1,4 @@
require recipes-devtools/rust/rust-source-${PV}.inc
require recipes-devtools/rust/rust-snapshot-${PV}.inc
require cargo.inc
BBCLASSEXTEND = "native nativesdk"

View File

@@ -0,0 +1,4 @@
require recipes-devtools/rust/rust-source-${PV}.inc
require recipes-devtools/rust/rust-snapshot-${PV}.inc
require cargo.inc
BBCLASSEXTEND = "native nativesdk"

View File

@@ -0,0 +1,44 @@
From 7b3bc1de0c79a1b410105ce36bbe9f774438d263 Mon Sep 17 00:00:00 2001
From: Ross Schulman <ross@rbs.io>
Date: Tue, 1 Feb 2022 09:13:16 -0500
Subject: [PATCH] Add 400-series syscalls to musl riscv64 definitions
Upstream-Status: Backport [https://github.com/rust-lang/libc/commit/7b3bc1de0c79a1b410105ce36bbe9f774438d263]
Signed-off-by: Khem Raj <raj.khem@gmail.com>
---
.../linux_like/linux/musl/b64/riscv64/mod.rs | 19 +++++++++++++++++++
1 file changed, 19 insertions(+)
diff --git a/vendor/libc-0.2.116/src/unix/linux_like/linux/musl/b64/riscv64/mod.rs b/vendor/libc-0.2.116/src/unix/linux_like/linux/musl/b64/riscv64/mod.rs
index 6b17621c7..2036583d5 100644
--- a/vendor/libc-0.2.116/src/unix/linux_like/linux/musl/b64/riscv64/mod.rs
+++ b/vendor/libc-0.2.116/src/unix/linux_like/linux/musl/b64/riscv64/mod.rs
@@ -465,6 +465,25 @@ pub const SYS_pkey_mprotect: ::c_long = 288;
pub const SYS_pkey_alloc: ::c_long = 289;
pub const SYS_pkey_free: ::c_long = 290;
pub const SYS_statx: ::c_long = 291;
+pub const SYS_pidfd_send_signal: ::c_long = 424;
+pub const SYS_io_uring_setup: ::c_long = 425;
+pub const SYS_io_uring_enter: ::c_long = 426;
+pub const SYS_io_uring_register: ::c_long = 427;
+pub const SYS_open_tree: ::c_long = 428;
+pub const SYS_move_mount: ::c_long = 429;
+pub const SYS_fsopen: ::c_long = 430;
+pub const SYS_fsconfig: ::c_long = 431;
+pub const SYS_fsmount: ::c_long = 432;
+pub const SYS_fspick: ::c_long = 433;
+pub const SYS_pidfd_open: ::c_long = 434;
+pub const SYS_clone3: ::c_long = 435;
+pub const SYS_close_range: ::c_long = 436;
+pub const SYS_openat2: ::c_long = 437;
+pub const SYS_pidfd_getfd: ::c_long = 438;
+pub const SYS_faccessat2: ::c_long = 439;
+pub const SYS_process_madvise: ::c_long = 440;
+pub const SYS_epoll_pwait2: ::c_long = 441;
+pub const SYS_mount_setattr: ::c_long = 442;
pub const O_APPEND: ::c_int = 1024;
pub const O_DIRECT: ::c_int = 0x4000;
--
2.35.1

File diff suppressed because one or more lines are too long

View File

@@ -2,19 +2,28 @@ SUMMARY = "Rust standard libaries"
HOMEPAGE = "http://www.rust-lang.org"
SECTION = "devel"
LICENSE = "MIT | Apache-2.0"
LIC_FILES_CHKSUM = "file://../../COPYRIGHT;md5=93a95682d51b4cb0a633a97046940ef0"
RUSTLIB_DEP = ""
inherit cargo
DEPENDS_append_libc-musl = " libunwind"
DEPENDS:append:libc-musl = " libunwind"
# rv32 does not have libunwind ported yet
DEPENDS:remove:riscv32 = "libunwind"
DEPENDS:remove:riscv64 = "libunwind"
# Embed bitcode in order to allow compiling both with and without LTO
RUSTFLAGS += "-Cembed-bitcode=yes"
# Needed so cargo can find libbacktrace
RUSTFLAGS += "-L ${STAGING_LIBDIR} -C link-arg=-Wl,-soname,libstd.so"
S = "${RUSTSRC}/src/libstd"
CARGO_FEATURES ?= "panic-unwind backtrace"
CARGO_BUILD_FLAGS += "--features '${CARGO_FEATURES}'"
CARGO_VENDORING_DIRECTORY = "${RUSTSRC}/vendor"
do_compile_prepend () {
do_compile:prepend () {
export CARGO_TARGET_DIR="${B}"
# For Rust 1.13.0 and newer
export RUSTC_BOOTSTRAP="1"

View File

@@ -1,8 +0,0 @@
require rust-source-${PV}.inc
require libstd-rs.inc
LIC_FILES_CHKSUM = "file://../../COPYRIGHT;md5=93a95682d51b4cb0a633a97046940ef0"
CARGO_FEATURES ?= "panic-unwind backtrace"
CARGO_VENDORING_DIRECTORY = "${RUSTSRC}/vendor"

View File

@@ -1,8 +0,0 @@
require rust-source-${PV}.inc
require libstd-rs.inc
LIC_FILES_CHKSUM = "file://../../COPYRIGHT;md5=93a95682d51b4cb0a633a97046940ef0"
CARGO_FEATURES ?= "panic-unwind backtrace"
CARGO_VENDORING_DIRECTORY = "${RUSTSRC}/vendor"

View File

@@ -1,8 +0,0 @@
require rust-source-${PV}.inc
require libstd-rs.inc
LIC_FILES_CHKSUM = "file://../../COPYRIGHT;md5=93a95682d51b4cb0a633a97046940ef0"
CARGO_FEATURES ?= "panic-unwind backtrace"
CARGO_VENDORING_DIRECTORY = "${RUSTSRC}/vendor"

View File

@@ -1,8 +0,0 @@
require rust-source-${PV}.inc
require libstd-rs.inc
LIC_FILES_CHKSUM = "file://../../COPYRIGHT;md5=93a95682d51b4cb0a633a97046940ef0"
CARGO_FEATURES ?= "panic-unwind backtrace"
CARGO_VENDORING_DIRECTORY = "${RUSTSRC}/vendor"

View File

@@ -1,8 +0,0 @@
require rust-source-${PV}.inc
require libstd-rs.inc
LIC_FILES_CHKSUM = "file://../../COPYRIGHT;md5=93a95682d51b4cb0a633a97046940ef0"
CARGO_FEATURES ?= "panic-unwind backtrace"
CARGO_VENDORING_DIRECTORY = "${RUSTSRC}/vendor"

View File

@@ -1,8 +0,0 @@
require rust-source-${PV}.inc
require libstd-rs.inc
LIC_FILES_CHKSUM = "file://../../COPYRIGHT;md5=93a95682d51b4cb0a633a97046940ef0"
CARGO_FEATURES ?= "panic-unwind backtrace"
CARGO_VENDORING_DIRECTORY = "${RUSTSRC}/vendor"

View File

@@ -0,0 +1,11 @@
require rust-source-${PV}.inc
require libstd-rs.inc
# Check if libc crate is >= 0.2.117 before dropping this patch
SRC_URI += " \
file://0001-Add-400-series-syscalls-to-musl-riscv64-definitions.patch;patchdir=../../ \
file://0001-Update-checksums-for-modified-vendored-libc.patch;patchdir=../../ \
"
# libstd moved from src/libstd to library/std in 1.47+
S = "${RUSTSRC}/library/std"

View File

@@ -0,0 +1,5 @@
require rust-source-${PV}.inc
require libstd-rs.inc
# libstd moved from src/libstd to library/std in 1.47+
S = "${RUSTSRC}/library/std"

View File

@@ -0,0 +1,369 @@
# Right now this is focused on arm-specific tune features.
# We get away with this for now as one can only use x86-64 as the build host
# (not arm).
# Note that TUNE_FEATURES is _always_ refering to the target, so we really
# don't want to use this for the host/build.
def llvm_features_from_tune(d):
f = []
feat = d.getVar('TUNE_FEATURES')
if not feat:
return []
feat = frozenset(feat.split())
mach_overrides = d.getVar('MACHINEOVERRIDES')
mach_overrides = frozenset(mach_overrides.split(':'))
if 'vfpv4' in feat:
f.append("+vfp4")
if 'vfpv3' in feat:
f.append("+vfp3")
if 'vfpv3d16' in feat:
f.append("+d16")
if 'vfpv2' in feat or 'vfp' in feat:
f.append("+vfp2")
if 'neon' in feat:
f.append("+neon")
if 'mips32' in feat:
f.append("+mips32")
if 'mips32r2' in feat:
f.append("+mips32r2")
if target_is_armv7(d):
f.append('+v7')
if ('armv6' in mach_overrides) or ('armv6' in feat):
f.append("+v6")
if 'armv5te' in feat:
f.append("+strict-align")
f.append("+v5te")
elif 'armv5' in feat:
f.append("+strict-align")
f.append("+v5")
if ('armv4' in mach_overrides) or ('armv4' in feat):
f.append("+strict-align")
if 'dsp' in feat:
f.append("+dsp")
if 'thumb' in feat:
if d.getVar('ARM_THUMB_OPT') == "thumb":
if target_is_armv7(d):
f.append('+thumb2')
f.append("+thumb-mode")
if 'cortexa5' in feat:
f.append("+a5")
if 'cortexa7' in feat:
f.append("+a7")
if 'cortexa9' in feat:
f.append("+a9")
if 'cortexa15' in feat:
f.append("+a15")
if 'cortexa17' in feat:
f.append("+a17")
if ('riscv64' in feat) or ('riscv32' in feat):
f.append("+a,+c,+d,+f,+m")
return f
llvm_features_from_tune[vardepvalue] = "${@llvm_features_from_tune(d)}"
# TARGET_CC_ARCH changes from build/cross/target so it'll do the right thing
# this should go away when https://github.com/rust-lang/rust/pull/31709 is
# stable (1.9.0?)
def llvm_features_from_cc_arch(d):
f = []
feat = d.getVar('TARGET_CC_ARCH')
if not feat:
return []
feat = frozenset(feat.split())
if '-mmmx' in feat:
f.append("+mmx")
if '-msse' in feat:
f.append("+sse")
if '-msse2' in feat:
f.append("+sse2")
if '-msse3' in feat:
f.append("+sse3")
if '-mssse3' in feat:
f.append("+ssse3")
if '-msse4.1' in feat:
f.append("+sse4.1")
if '-msse4.2' in feat:
f.append("+sse4.2")
if '-msse4a' in feat:
f.append("+sse4a")
if '-mavx' in feat:
f.append("+avx")
if '-mavx2' in feat:
f.append("+avx2")
return f
def llvm_features_from_target_fpu(d):
# TARGET_FPU can be hard or soft. +soft-float tell llvm to use soft float
# ABI. There is no option for hard.
fpu = d.getVar('TARGET_FPU', True)
return ["+soft-float"] if fpu == "soft" else []
def llvm_features(d):
return ','.join(llvm_features_from_tune(d) +
llvm_features_from_cc_arch(d) +
llvm_features_from_target_fpu(d))
## arm-unknown-linux-gnueabihf
DATA_LAYOUT[arm-eabi] = "e-m:e-p:32:32-i64:64-v128:64:128-a:0:32-n32-S64"
LLVM_TARGET[arm-eabi] = "${RUST_TARGET_SYS}"
TARGET_ENDIAN[arm-eabi] = "little"
TARGET_POINTER_WIDTH[arm-eabi] = "32"
TARGET_C_INT_WIDTH[arm-eabi] = "32"
MAX_ATOMIC_WIDTH[arm-eabi] = "64"
FEATURES[arm-eabi] = "+v6,+vfp2"
## armv7-unknown-linux-gnueabihf
DATA_LAYOUT[armv7-eabi] = "e-m:e-p:32:32-i64:64-v128:64:128-a:0:32-n32-S64"
LLVM_TARGET[armv7-eabi] = "${RUST_TARGET_SYS}"
TARGET_ENDIAN[armv7-eabi] = "little"
TARGET_POINTER_WIDTH[armv7-eabi] = "32"
TARGET_C_INT_WIDTH[armv7-eabi] = "32"
MAX_ATOMIC_WIDTH[armv7-eabi] = "64"
FEATURES[armv7-eabi] = "+v7,+vfp2,+thumb2"
## aarch64-unknown-linux-{gnu, musl}
DATA_LAYOUT[aarch64] = "e-m:e-i8:8:32-i16:16:32-i64:64-i128:128-n32:64-S128"
LLVM_TARGET[aarch64] = "${RUST_TARGET_SYS}"
TARGET_ENDIAN[aarch64] = "little"
TARGET_POINTER_WIDTH[aarch64] = "64"
TARGET_C_INT_WIDTH[aarch64] = "32"
MAX_ATOMIC_WIDTH[aarch64] = "128"
## x86_64-unknown-linux-{gnu, musl}
DATA_LAYOUT[x86_64] = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
LLVM_TARGET[x86_64] = "${RUST_TARGET_SYS}"
TARGET_ENDIAN[x86_64] = "little"
TARGET_POINTER_WIDTH[x86_64] = "64"
TARGET_C_INT_WIDTH[x86_64] = "32"
MAX_ATOMIC_WIDTH[x86_64] = "64"
## x86_64-unknown-linux-gnux32
DATA_LAYOUT[x86_64-x32] = "e-m:e-p:32:32-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128"
LLVM_TARGET[x86_64-x32] = "${RUST_TARGET_SYS}"
TARGET_ENDIAN[x86_64-x32] = "little"
TARGET_POINTER_WIDTH[x86_64-x32] = "32"
TARGET_C_INT_WIDTH[x86_64-x32] = "32"
MAX_ATOMIC_WIDTH[x86_64-x32] = "64"
## i686-unknown-linux-{gnu, musl}
DATA_LAYOUT[i686] = "e-m:e-p:32:32-f64:32:64-f80:32-n8:16:32-S128"
LLVM_TARGET[i686] = "${RUST_TARGET_SYS}"
TARGET_ENDIAN[i686] = "little"
TARGET_POINTER_WIDTH[i686] = "32"
TARGET_C_INT_WIDTH[i686] = "32"
MAX_ATOMIC_WIDTH[i686] = "64"
## XXX: a bit of a hack so qemux86 builds, clone of i686-unknown-linux-{gnu, musl} above
DATA_LAYOUT[i586] = "e-m:e-p:32:32-f64:32:64-f80:32-n8:16:32-S128"
LLVM_TARGET[i586] = "${RUST_TARGET_SYS}"
TARGET_ENDIAN[i586] = "little"
TARGET_POINTER_WIDTH[i586] = "32"
TARGET_C_INT_WIDTH[i586] = "32"
MAX_ATOMIC_WIDTH[i586] = "64"
## mips-unknown-linux-{gnu, musl}
DATA_LAYOUT[mips] = "E-m:m-p:32:32-i8:8:32-i16:16:32-i64:64-n32-S64"
LLVM_TARGET[mips] = "${RUST_TARGET_SYS}"
TARGET_ENDIAN[mips] = "big"
TARGET_POINTER_WIDTH[mips] = "32"
TARGET_C_INT_WIDTH[mips] = "32"
MAX_ATOMIC_WIDTH[mips] = "32"
## mipsel-unknown-linux-{gnu, musl}
DATA_LAYOUT[mipsel] = "e-m:m-p:32:32-i8:8:32-i16:16:32-i64:64-n32-S64"
LLVM_TARGET[mipsel] = "${RUST_TARGET_SYS}"
TARGET_ENDIAN[mipsel] = "little"
TARGET_POINTER_WIDTH[mipsel] = "32"
TARGET_C_INT_WIDTH[mipsel] = "32"
MAX_ATOMIC_WIDTH[mipsel] = "32"
## mips64-unknown-linux-{gnu, musl}
DATA_LAYOUT[mips64] = "E-m:e-i8:8:32-i16:16:32-i64:64-n32:64-S128"
LLVM_TARGET[mips64] = "${RUST_TARGET_SYS}"
TARGET_ENDIAN[mips64] = "big"
TARGET_POINTER_WIDTH[mips64] = "64"
TARGET_C_INT_WIDTH[mips64] = "64"
MAX_ATOMIC_WIDTH[mips64] = "64"
## mips64el-unknown-linux-{gnu, musl}
DATA_LAYOUT[mips64el] = "e-m:e-i8:8:32-i16:16:32-i64:64-n32:64-S128"
LLVM_TARGET[mips64el] = "${RUST_TARGET_SYS}"
TARGET_ENDIAN[mips64el] = "little"
TARGET_POINTER_WIDTH[mips64el] = "64"
TARGET_C_INT_WIDTH[mips64el] = "64"
MAX_ATOMIC_WIDTH[mips64el] = "64"
## powerpc-unknown-linux-{gnu, musl}
DATA_LAYOUT[powerpc] = "E-m:e-p:32:32-i64:64-n32"
LLVM_TARGET[powerpc] = "${RUST_TARGET_SYS}"
TARGET_ENDIAN[powerpc] = "big"
TARGET_POINTER_WIDTH[powerpc] = "32"
TARGET_C_INT_WIDTH[powerpc] = "32"
MAX_ATOMIC_WIDTH[powerpc] = "32"
## powerpc64-unknown-linux-{gnu, musl}
DATA_LAYOUT[powerpc64] = "E-m:e-i64:64-n32:64-S128-v256:256:256-v512:512:512"
LLVM_TARGET[powerpc64] = "${RUST_TARGET_SYS}"
TARGET_ENDIAN[powerpc64] = "big"
TARGET_POINTER_WIDTH[powerpc64] = "64"
TARGET_C_INT_WIDTH[powerpc64] = "64"
MAX_ATOMIC_WIDTH[powerpc64] = "64"
## powerpc64le-unknown-linux-{gnu, musl}
DATA_LAYOUT[powerpc64le] = "e-m:e-i64:64-n32:64-v256:256:256-v512:512:512"
LLVM_TARGET[powerpc64le] = "${RUST_TARGET_SYS}"
TARGET_ENDIAN[powerpc64le] = "little"
TARGET_POINTER_WIDTH[powerpc64le] = "64"
TARGET_C_INT_WIDTH[powerpc64le] = "64"
MAX_ATOMIC_WIDTH[powerpc64le] = "64"
## riscv32-unknown-linux-{gnu, musl}
DATA_LAYOUT[riscv32] = "e-m:e-p:32:32-i64:64-n32-S128"
LLVM_TARGET[riscv32] = "${RUST_TARGET_SYS}"
TARGET_ENDIAN[riscv32] = "little"
TARGET_POINTER_WIDTH[riscv32] = "32"
TARGET_C_INT_WIDTH[riscv32] = "32"
MAX_ATOMIC_WIDTH[riscv32] = "32"
## riscv64-unknown-linux-{gnu, musl}
DATA_LAYOUT[riscv64] = "e-m:e-p:64:64-i64:64-i128:128-n64-S128"
LLVM_TARGET[riscv64] = "${RUST_TARGET_SYS}"
TARGET_ENDIAN[riscv64] = "little"
TARGET_POINTER_WIDTH[riscv64] = "64"
TARGET_C_INT_WIDTH[riscv64] = "64"
MAX_ATOMIC_WIDTH[riscv64] = "64"
def sys_for(d, thing):
return d.getVar('{}_SYS'.format(thing))
def prefix_for(d, thing):
return d.getVar('{}_PREFIX'.format(thing))
# Convert a normal arch (HOST_ARCH, TARGET_ARCH, BUILD_ARCH, etc) to something
# rust's internals won't choke on.
def arch_to_rust_target_arch(arch):
if arch == "i586" or arch == "i686":
return "x86"
elif arch == "mipsel":
return "mips"
elif arch == "mip64sel":
return "mips64"
elif arch == "armv7":
return "arm"
elif arch == "powerpc64le":
return "powerpc64"
else:
return arch
# generates our target CPU value
def llvm_cpu(d):
cpu = d.getVar('PACKAGE_ARCH')
target = d.getVar('TRANSLATED_TARGET_ARCH')
trans = {}
trans['corei7-64'] = "corei7"
trans['core2-32'] = "core2"
trans['x86-64'] = "x86-64"
trans['i686'] = "i686"
trans['i586'] = "i586"
trans['powerpc'] = "powerpc"
trans['mips64'] = "mips64"
trans['mips64el'] = "mips64"
trans['riscv64'] = "generic-rv64"
trans['riscv32'] = "generic-rv32"
if target in ["mips", "mipsel"]:
feat = frozenset(d.getVar('TUNE_FEATURES').split())
if "mips32r2" in feat:
trans['mipsel'] = "mips32r2"
trans['mips'] = "mips32r2"
elif "mips32" in feat:
trans['mipsel'] = "mips32"
trans['mips'] = "mips32"
try:
return trans[cpu]
except:
return trans.get(target, "generic")
TARGET_LLVM_CPU="${@llvm_cpu(d)}"
TARGET_LLVM_FEATURES = "${@llvm_features(d)}"
# class-native implies TARGET=HOST, and TUNE_FEATURES only describes the real
# (original) target.
TARGET_LLVM_FEATURES:class-native = "${@','.join(llvm_features_from_cc_arch(d))}"
def rust_gen_target(d, thing, wd, features, cpu, arch, abi=""):
import json
sys = sys_for(d, thing)
prefix = prefix_for(d, thing)
if abi:
arch_abi = "{}-{}".format(arch, abi)
else:
arch_abi = arch
features = features or d.getVarFlag('FEATURES', arch_abi) or ""
features = features.strip()
# build tspec
tspec = {}
tspec['llvm-target'] = d.getVarFlag('LLVM_TARGET', arch_abi)
tspec['data-layout'] = d.getVarFlag('DATA_LAYOUT', arch_abi)
tspec['max-atomic-width'] = int(d.getVarFlag('MAX_ATOMIC_WIDTH', arch_abi))
tspec['target-pointer-width'] = d.getVarFlag('TARGET_POINTER_WIDTH', arch_abi)
tspec['target-c-int-width'] = d.getVarFlag('TARGET_C_INT_WIDTH', arch_abi)
tspec['target-endian'] = d.getVarFlag('TARGET_ENDIAN', arch_abi)
tspec['arch'] = arch_to_rust_target_arch(arch)
tspec['os'] = "linux"
if "musl" in tspec['llvm-target']:
tspec['env'] = "musl"
else:
tspec['env'] = "gnu"
if "riscv64" in tspec['llvm-target']:
tspec['llvm-abiname'] = "lp64d"
if "riscv32" in tspec['llvm-target']:
tspec['llvm-abiname'] = "ilp32d"
tspec['vendor'] = "unknown"
tspec['target-family'] = "unix"
tspec['linker'] = "{}{}gcc".format(d.getVar('CCACHE'), prefix)
tspec['cpu'] = cpu
if features != "":
tspec['features'] = features
tspec['dynamic-linking'] = True
tspec['executables'] = True
tspec['linker-is-gnu'] = True
tspec['linker-flavor'] = "gcc"
tspec['has-rpath'] = True
tspec['has-elf-tls'] = True
tspec['position-independent-executables'] = True
tspec['panic-strategy'] = d.getVar("RUST_PANIC_STRATEGY")
# write out the target spec json file
with open(wd + sys + '.json', 'w') as f:
json.dump(tspec, f, indent=4)
python do_rust_gen_targets () {
wd = d.getVar('WORKDIR') + '/targets/'
build_arch = d.getVar('BUILD_ARCH')
rust_gen_target(d, 'BUILD', wd, "", "generic", build_arch)
}
addtask rust_gen_targets after do_patch before do_compile
do_rust_gen_targets[dirs] += "${WORKDIR}/targets"

View File

@@ -0,0 +1,55 @@
RUST_ALTERNATE_EXE_PATH = "${STAGING_LIBDIR_NATIVE}/llvm-rust/bin/llvm-config"
require rust.inc
DEPENDS += "rust-llvm (=${PV})"
inherit cross-canadian
DEPENDS += " \
virtual/${HOST_PREFIX}gcc-crosssdk \
virtual/nativesdk-libc rust-llvm-native \
virtual/${TARGET_PREFIX}compilerlibs \
virtual/nativesdk-${HOST_PREFIX}compilerlibs \
gcc-cross-${TARGET_ARCH} \
"
# The host tools are likely not to be able to do the necessary operation on
# the target architecturea. Alternatively one could check compatibility
# between host/target.
EXCLUDE_FROM_SHLIBS_${RUSTLIB_TARGET_PN} = "1"
DEBUG_PREFIX_MAP = "-fdebug-prefix-map=${WORKDIR}=/usr/src/debug/${PN}/${EXTENDPE}${PV}-${PR} \
-fdebug-prefix-map=${STAGING_DIR_HOST}= \
-fdebug-prefix-map=${STAGING_DIR_NATIVE}= \
"
LLVM_TARGET[x86_64] = "${RUST_HOST_SYS}"
python do_rust_gen_targets () {
wd = d.getVar('WORKDIR') + '/targets/'
rust_gen_target(d, 'TARGET', wd, d.getVar('TARGET_LLVM_FEATURES') or "", d.getVar('TARGET_LLVM_CPU'), d.getVar('TARGET_ARCH'))
rust_gen_target(d, 'HOST', wd, "", "generic", d.getVar('HOST_ARCH'))
rust_gen_target(d, 'BUILD', wd, "", "generic", d.getVar('BUILD_ARCH'))
}
INHIBIT_DEFAULT_RUST_DEPS = "1"
export WRAPPER_TARGET_CC = "${CCACHE}${TARGET_PREFIX}gcc --sysroot=${STAGING_DIR_TARGET} ${TARGET_CC_ARCH} ${SECURITY_NOPIE_CFLAGS}"
export WRAPPER_TARGET_CXX = "${CCACHE}${TARGET_PREFIX}g++ --sysroot=${STAGING_DIR_TARGET} ${TARGET_CC_ARCH} ${SECURITY_NOPIE_CFLAGS}"
export WRAPPER_TARGET_CCLD = "${TARGET_PREFIX}gcc --sysroot=${STAGING_DIR_TARGET} ${TARGET_CC_ARCH} ${SECURITY_NOPIE_CFLAGS}"
export WRAPPER_TARGET_LDFLAGS = "${TARGET_LDFLAGS}"
export WRAPPER_TARGET_AR = "${TARGET_PREFIX}ar"
python do_configure:prepend() {
targets = [d.getVar("TARGET_SYS", True), "{}-unknown-linux-gnu".format(d.getVar("HOST_ARCH", True))]
hosts = ["{}-unknown-linux-gnu".format(d.getVar("HOST_ARCH", True))]
}
INSANE_SKIP:${RUSTLIB_TARGET_PN} = "file-rdeps arch ldflags"
SKIP_FILEDEPS:${RUSTLIB_TARGET_PN} = "1"
INHIBIT_PACKAGE_DEBUG_SPLIT = "1"
INHIBIT_PACKAGE_STRIP = "1"
INHIBIT_SYSROOT_STRIP = "1"

View File

@@ -0,0 +1,78 @@
require rust-cross-canadian-common.inc
RUSTLIB_TARGET_PN = "rust-cross-canadian-rustlib-target-${TRANSLATED_TARGET_ARCH}"
RUSTLIB_HOST_PN = "rust-cross-canadian-rustlib-host-${TRANSLATED_TARGET_ARCH}"
RUSTLIB_SRC_PN = "rust-cross-canadian-src"
RUSTLIB_PKGS = "${RUSTLIB_SRC_PN} ${RUSTLIB_TARGET_PN} ${RUSTLIB_HOST_PN}"
PN = "rust-cross-canadian-${TRANSLATED_TARGET_ARCH}"
PACKAGES = "${RUSTLIB_PKGS} ${PN}"
RDEPENDS:${PN} += "${RUSTLIB_PKGS}"
# The default behaviour of x.py changed in 1.47+ so now we need to
# explicitly ask for the stage 2 compiler to be assembled.
do_compile () {
rust_runx build --stage 2
}
do_install () {
# Rust requires /usr/lib to contain the libs.
# Similar story is with /usr/bin ruquiring `lib` to be at the same level.
# The required structure is retained for simplicity.
SYS_LIBDIR=$(dirname ${D}${libdir})
SYS_BINDIR=$(dirname ${D}${bindir})
RUSTLIB_DIR=${SYS_LIBDIR}/${TARGET_SYS}/rustlib
install -d "${SYS_BINDIR}"
cp build/${SNAPSHOT_BUILD_SYS}/stage2/bin/* ${SYS_BINDIR}
for i in ${SYS_BINDIR}/*; do
chrpath -r "\$ORIGIN/../lib" ${i}
done
install -d "${D}${libdir}"
cp -pRd build/${SNAPSHOT_BUILD_SYS}/stage2/lib/${TARGET_SYS}/*.so ${SYS_LIBDIR}
cp -pRd build/${SNAPSHOT_BUILD_SYS}/stage2/lib/${TARGET_SYS}/rustlib ${RUSTLIB_DIR}
for i in ${SYS_LIBDIR}/*.so; do
chrpath -r "\$ORIGIN/../lib" ${i}
done
for i in ${RUSTLIB_DIR}/*/lib/*.so; do
chrpath -d ${i}
done
install -m 0644 "${WORKDIR}/targets/${TARGET_SYS}.json" "${RUSTLIB_DIR}"
SRC_DIR=${RUSTLIB_DIR}/src/rust
install -d ${SRC_DIR}/src/llvm-project
cp -R --no-dereference build/${SNAPSHOT_BUILD_SYS}/stage2/lib/rustlib/src/rust/src/llvm-project/libunwind ${SRC_DIR}/src/llvm-project
cp -R --no-dereference build/${SNAPSHOT_BUILD_SYS}/stage2/lib/rustlib/src/rust/library ${SRC_DIR}
cp --no-dereference build/${SNAPSHOT_BUILD_SYS}/stage2/lib/rustlib/src/rust/Cargo.lock ${SRC_DIR}
# Remove executable bit from any files so then SDK doesn't try to relocate.
chmod -R -x+X ${SRC_DIR}
ENV_SETUP_DIR=${D}${base_prefix}/environment-setup.d
mkdir "${ENV_SETUP_DIR}"
ENV_SETUP_SH="${ENV_SETUP_DIR}/rust.sh"
cat <<- EOF > "${ENV_SETUP_SH}"
export RUSTFLAGS="--sysroot=\$OECORE_NATIVE_SYSROOT/usr -C link-arg=--sysroot=\$OECORE_TARGET_SYSROOT -L\$OECORE_NATIVE_SYSROOT/usr/lib/${TARGET_SYS}/rustlib/${TARGET_SYS}/lib"
export RUST_TARGET_PATH="\$OECORE_NATIVE_SYSROOT/usr/lib/${TARGET_SYS}/rustlib"
EOF
chown -R root.root ${D}
}
PKG_SYS_LIBDIR = "${SDKPATHNATIVE}/usr/lib"
PKG_SYS_BINDIR = "${SDKPATHNATIVE}/usr/bin"
PKG_RUSTLIB_DIR = "${PKG_SYS_LIBDIR}/${TARGET_SYS}/rustlib"
FILES:${PN} = "${PKG_SYS_LIBDIR}/*.so ${PKG_SYS_BINDIR} ${base_prefix}/environment-setup.d"
FILES:${RUSTLIB_TARGET_PN} = "${PKG_RUSTLIB_DIR}/${TARGET_SYS} ${PKG_RUSTLIB_DIR}/${TARGET_SYS}.json"
FILES:${RUSTLIB_HOST_PN} = "${PKG_RUSTLIB_DIR}/${BUILD_ARCH}-unknown-linux-gnu"
FILES:${RUSTLIB_SRC_PN} = "${PKG_RUSTLIB_DIR}/src"
SUMMARY:${RUSTLIB_TARGET_PN} = "Rust cross canadian libaries for ${TARGET_SYS}"
SUMMARY:${RUSTLIB_HOST_PN} = "Rust cross canadian libaries for ${HOST_SYS}"
SUMMARY:${RUSTLIB_SRC_PN} = "Rust standard library sources for cross canadian toolchain"
SUMMARY:${PN} = "Rust crost canadian compiler"

View File

@@ -0,0 +1,6 @@
require rust-cross-canadian.inc
require rust-source-${PV}.inc
require rust-snapshot-${PV}.inc
FILESEXTRAPATHS:prepend := "${THISDIR}/rust:"

View File

@@ -0,0 +1,6 @@
require rust-cross-canadian.inc
require rust-source-${PV}.inc
require rust-snapshot-${PV}.inc
FILESEXTRAPATHS:prepend := "${THISDIR}/rust:"

View File

@@ -10,10 +10,16 @@ python do_rust_gen_targets () {
bb.debug(1, "rust_gen_target for " + thing)
features = ""
cpu = "generic"
arch = d.getVar('{}_ARCH'.format(thing))
abi = ""
if thing is "TARGET":
abi = d.getVar('ABIEXTENSION')
# arm and armv7 have different targets in llvm
if arch == "arm" and target_is_armv7(d):
arch = 'armv7'
features = d.getVar('TARGET_LLVM_FEATURES') or ""
cpu = d.getVar('TARGET_LLVM_CPU')
rust_gen_target(d, thing, wd, features, cpu)
rust_gen_target(d, thing, wd, features, cpu, arch, abi)
}
# Otherwise we'll depend on what we provide
@@ -28,7 +34,7 @@ DEPENDS += "virtual/${TARGET_PREFIX}gcc virtual/${TARGET_PREFIX}compilerlibs vir
DEPENDS += "rust-native"
PROVIDES = "virtual/${TARGET_PREFIX}rust"
PN = "rust-cross-${TARGET_ARCH}"
PN = "rust-cross-${TUNE_PKGARCH}-${TCLIBC}"
# In the cross compilation case, rustc doesn't seem to get the rpath quite
# right. It manages to include '../../lib/${TARGET_PREFIX}', but doesn't
@@ -41,11 +47,11 @@ PN = "rust-cross-${TARGET_ARCH}"
# FIXME: this should really be fixed in rust itself.
# FIXME: using hard-coded relative paths is wrong, we should ask bitbake for
# the relative path between 2 of it's vars.
HOST_POST_LINK_ARGS_append = " -Wl,-rpath=../../lib"
BUILD_POST_LINK_ARGS_append = " -Wl,-rpath=../../lib"
HOST_POST_LINK_ARGS:append = " -Wl,-rpath=../../lib"
BUILD_POST_LINK_ARGS:append = " -Wl,-rpath=../../lib"
# We need the same thing for the calls to the compiler when building the runtime crap
TARGET_CC_ARCH_append = " --sysroot=${STAGING_DIR_TARGET}"
TARGET_CC_ARCH:append = " --sysroot=${STAGING_DIR_TARGET}"
do_rust_setup_snapshot () {
}

View File

@@ -1,3 +0,0 @@
require rust-cross.inc
require rust-source-${PV}.inc

View File

@@ -1,3 +0,0 @@
require rust-cross.inc
require rust-source-${PV}.inc

View File

@@ -1,3 +0,0 @@
require rust-cross.inc
require rust-source-${PV}.inc

View File

@@ -1,2 +0,0 @@
require rust-cross.inc
require rust-source-${PV}.inc

View File

@@ -1,5 +0,0 @@
LICENSE = "NCSA"
LIC_FILES_CHKSUM = "file://LICENSE.TXT;md5=4c0bc17c954e99fd547528d938832bfa"
require rust-llvm.inc

View File

@@ -1,25 +1,33 @@
SUMMARY = "LLVM compiler framework (packaged with rust)"
LICENSE ?= "Apache-2.0-with-LLVM-exception"
HOMEPAGE = "http://www.rust-lang.org"
SRC_URI += "file://0002-llvm-allow-env-override-of-exe-path.patch"
SRC_URI += "file://0002-llvm-allow-env-override-of-exe-path.patch;striplevel=2 \
file://0001-AsmMatcherEmitter-sort-ClassInfo-lists-by-name-as-we.patch;striplevel=2 \
file://0003-llvm-fix-include-benchmarks.patch;striplevel=2 \
"
S = "${RUSTSRC}/src/llvm-project/llvm"
LIC_FILES_CHKSUM ?= "file://LICENSE.TXT;md5=4c0bc17c954e99fd547528d938832bfa"
LIC_FILES_CHKSUM = "file://LICENSE.TXT;md5=8a15a0759ef07f2682d2ba4b893c9afe"
inherit cmake python3native
DEPENDS += "ninja-native rust-llvm-native"
ARM_INSTRUCTION_SET_armv5 = "arm"
ARM_INSTRUCTION_SET_armv4t = "arm"
ARM_INSTRUCTION_SET:armv5 = "arm"
ARM_INSTRUCTION_SET:armv4t = "arm"
# rustc_llvm with debug info is not recognized as a valid crate that's
# generated by rust-llvm-native.
CFLAGS:remove = "-g"
CXXFLAGS:remove = "-g"
LLVM_RELEASE = "6.0"
LLVM_DIR = "llvm${LLVM_RELEASE}"
EXTRA_OECMAKE = " \
-DCMAKE_BUILD_TYPE=Release \
-DLLVM_TARGETS_TO_BUILD='X86;ARM;AArch64;PowerPC;Mips' \
-DLLVM_TARGETS_TO_BUILD='ARM;AArch64;Mips;PowerPC;RISCV;X86' \
-DLLVM_BUILD_DOCS=OFF \
-DLLVM_ENABLE_TERMINFO=OFF \
-DLLVM_ENABLE_ZLIB=OFF \
@@ -33,7 +41,7 @@ EXTRA_OECMAKE = " \
-DLLVM_TARGET_ARCH=${TARGET_ARCH} \
-DCMAKE_INSTALL_PREFIX:PATH=${libdir}/llvm-rust \
"
EXTRA_OECMAKE_append_class-target = "\
EXTRA_OECMAKE:append:class-target = "\
-DCMAKE_CROSSCOMPILING:BOOL=ON \
-DLLVM_BUILD_TOOLS=OFF \
-DLLVM_TABLEGEN=${STAGING_LIBDIR_NATIVE}/llvm-rust/bin/llvm-tblgen \
@@ -44,19 +52,21 @@ EXTRA_OECMAKE_append_class-target = "\
# provide almost no value. If you really need them then override this
INHIBIT_PACKAGE_DEBUG_SPLIT = "1"
do_install_append_class-target() {
# Disable checks on the native tools, since these should came from the native recipe
sed -i -e 's/\(.*APPEND.*_IMPORT_CHECK_FILES_FOR_.*{_IMPORT_PREFIX}\/bin\/.*\)/#\1/' ${D}/usr/share/llvm/cmake/LLVMExports-noconfig.cmake
export YOCTO_ALTERNATE_EXE_PATH = "${STAGING_LIBDIR}/llvm-rust/bin/llvm-config"
do_install:append () {
# we don't need any of this stuff to build Rust
rm -rf "${D}/usr/lib/cmake"
}
PACKAGES =+ "${PN}-bugpointpasses ${PN}-llvmhello ${PN}-liblto"
# Add the extra locations to avoid the complaints about unpackaged files
FILES_${PN}-bugpointpasses = "${libdir}/llvm-rust/lib/BugpointPasses.so"
FILES_${PN}-llvmhello = "${libdir}/llvm-rust/lib/LLVMHello.so"
FILES_${PN}-liblto = "${libdir}/llvm-rust/lib/libLTO.so.*"
FILES_${PN}-staticdev =+ "${libdir}/llvm-rust/*/*.a"
FILES_${PN} += "${libdir}/libLLVM*.so.* ${libdir}/llvm-rust/lib/*.so.* ${libdir}/llvm-rust/bin"
FILES_${PN}-dev += "${datadir}/llvm ${libdir}/llvm-rust/lib/*.so ${libdir}/llvm-rust/include ${libdir}/llvm-rust/share ${libdir}/llvm-rust/lib/cmake"
FILES:${PN}-bugpointpasses = "${libdir}/llvm-rust/lib/BugpointPasses.so"
FILES:${PN}-llvmhello = "${libdir}/llvm-rust/lib/LLVMHello.so"
FILES:${PN}-liblto = "${libdir}/llvm-rust/lib/libLTO.so.*"
FILES:${PN}-staticdev =+ "${libdir}/llvm-rust/*/*.a"
FILES:${PN} += "${libdir}/libLLVM*.so.* ${libdir}/llvm-rust/lib/*.so.* ${libdir}/llvm-rust/bin"
FILES:${PN}-dev += "${datadir}/llvm ${libdir}/llvm-rust/lib/*.so ${libdir}/llvm-rust/include ${libdir}/llvm-rust/share ${libdir}/llvm-rust/lib/cmake"
BBCLASSEXTEND = "native"

View File

@@ -0,0 +1,31 @@
From 86940d87026432683fb6741cd8a34d3b9b18e40d Mon Sep 17 00:00:00 2001
From: Alexander Kanavin <alex.kanavin@gmail.com>
Date: Fri, 27 Nov 2020 10:11:08 +0000
Subject: [PATCH] AsmMatcherEmitter: sort ClassInfo lists by name as well
Otherwise, there are instances which are identical in
every other field and therefore sort non-reproducibly
(which breaks binary and source reproducibiliy).
Upstream-Status: Submitted [https://reviews.llvm.org/D97477]
Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
---
llvm/utils/TableGen/AsmMatcherEmitter.cpp | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/llvm/utils/TableGen/AsmMatcherEmitter.cpp b/llvm/utils/TableGen/AsmMatcherEmitter.cpp
index ccf0959389b..1f801e83b7d 100644
--- a/llvm/utils/TableGen/AsmMatcherEmitter.cpp
+++ b/llvm/utils/TableGen/AsmMatcherEmitter.cpp
@@ -359,7 +359,10 @@ public:
// name of a class shouldn't be significant. However, some of the backends
// accidentally rely on this behaviour, so it will have to stay like this
// until they are fixed.
- return ValueName < RHS.ValueName;
+ if (ValueName != RHS.ValueName)
+ return ValueName < RHS.ValueName;
+ // All else being equal, we should sort by name, for source and binary reproducibility
+ return Name < RHS.Name;
}
};

View File

@@ -8,14 +8,15 @@ return the libraries, include directories, etc. from inside the sysroot rather
than from the native sysroot. Thus provide an env override for calling
llvm-config from a target sysroot.
Upstream-Status: Inappropriate [oe-core specific]
Signed-off-by: Martin Kelly <mkelly@xevo.com>
Signed-off-by: Khem Raj <raj.khem@gmail.com>
---
tools/llvm-config/llvm-config.cpp | 7 +++++++
llvm/tools/llvm-config/llvm-config.cpp | 7 +++++++
1 file changed, 7 insertions(+)
--- a/tools/llvm-config/llvm-config.cpp
+++ b/tools/llvm-config/llvm-config.cpp
--- a/llvm/tools/llvm-config/llvm-config.cpp
+++ b/llvm/tools/llvm-config/llvm-config.cpp
@@ -226,6 +226,13 @@ Typical components:\n\
/// Compute the path to the main executable.

View File

@@ -0,0 +1,25 @@
Subject: LLVM_INCLUDE_BENCHMARKS with llvm 14.0.1 failing to build
https://github.com/llvm/llvm-project/issues/54941
The LLVM_INCLUDE_BENCHMARKS is turned OFF to fix the build error as
per the discussions in the above link. We will work on the issue and
replace the workaround with actual fix once committed in LLVM.
Please refer the following link for more discussions on the issue:-
https://github.com/rust-lang/rust/issues/96054
Upstream-Status: Pending
Signed-off-by: Pgowda <pgowda.cve@gmail.com>
--- a/llvm/CMakeLists.txt 2022-04-22 00:45:30.543445478 -0700
+++ b/llvm/CMakeLists.txt 2022-04-22 00:45:42.095232974 -0700
@@ -615,7 +615,7 @@ option(LLVM_INCLUDE_GO_TESTS "Include th
option(LLVM_BUILD_BENCHMARKS "Add LLVM benchmark targets to the list of default
targets. If OFF, benchmarks still could be built using Benchmarks target." OFF)
-option(LLVM_INCLUDE_BENCHMARKS "Generate benchmark targets. If OFF, benchmarks can't be built." ON)
+option(LLVM_INCLUDE_BENCHMARKS "Generate benchmark targets. If OFF, benchmarks can't be built." OFF)
option (LLVM_BUILD_DOCS "Build the llvm documentation." OFF)
option (LLVM_INCLUDE_DOCS "Generate build targets for llvm documentation." ON)

View File

@@ -1,16 +0,0 @@
require rust-source-${PV}.inc
require rust-llvm-ncsa.inc
LIC_FILES_CHKSUM = "file://LICENSE.TXT;md5=c6b766a4e85dd28301eeed54a6684648"
do_install_prepend () {
# the install does a sed on this without installing the file
# we don't need it for anything
mkdir -p "${D}/usr/share/llvm/cmake"
touch "${D}/usr/share/llvm/cmake/LLVMExports-noconfig.cmake"
}
do_install_append () {
# we don't need any of this stuff to build Rust
rm -rf "${D}/usr/lib/cmake"
}

View File

@@ -1,16 +0,0 @@
require rust-source-${PV}.inc
require rust-llvm-ncsa.inc
LIC_FILES_CHKSUM = "file://LICENSE.TXT;md5=c6b766a4e85dd28301eeed54a6684648"
do_install_prepend () {
# the install does a sed on this without installing the file
# we don't need it for anything
mkdir -p "${D}/usr/share/llvm/cmake"
touch "${D}/usr/share/llvm/cmake/LLVMExports-noconfig.cmake"
}
do_install_append () {
# we don't need any of this stuff to build Rust
rm -rf "${D}/usr/lib/cmake"
}

View File

@@ -1,16 +0,0 @@
require rust-source-${PV}.inc
require rust-llvm-ncsa.inc
LIC_FILES_CHKSUM = "file://LICENSE.TXT;md5=c6b766a4e85dd28301eeed54a6684648"
do_install_prepend () {
# the install does a sed on this without installing the file
# we don't need it for anything
mkdir -p "${D}/usr/share/llvm/cmake"
touch "${D}/usr/share/llvm/cmake/LLVMExports-noconfig.cmake"
}
do_install_append () {
# we don't need any of this stuff to build Rust
rm -rf "${D}/usr/lib/cmake"
}

View File

@@ -1,16 +0,0 @@
require rust-source-${PV}.inc
require rust-llvm.inc
LIC_FILES_CHKSUM = "file://LICENSE.TXT;md5=8a15a0759ef07f2682d2ba4b893c9afe"
do_install_prepend () {
# the install does a sed on this without installing the file
# we don't need it for anything
mkdir -p "${D}/usr/share/llvm/cmake"
touch "${D}/usr/share/llvm/cmake/LLVMExports-noconfig.cmake"
}
do_install_append () {
# we don't need any of this stuff to build Rust
rm -rf "${D}/usr/lib/cmake"
}

View File

@@ -1,16 +0,0 @@
require rust-source-${PV}.inc
require rust-llvm.inc
LIC_FILES_CHKSUM = "file://LICENSE.TXT;md5=8a15a0759ef07f2682d2ba4b893c9afe"
do_install_prepend () {
# the install does a sed on this without installing the file
# we don't need it for anything
mkdir -p "${D}/usr/share/llvm/cmake"
touch "${D}/usr/share/llvm/cmake/LLVMExports-noconfig.cmake"
}
do_install_append () {
# we don't need any of this stuff to build Rust
rm -rf "${D}/usr/lib/cmake"
}

View File

@@ -1,16 +0,0 @@
require rust-source-${PV}.inc
require rust-llvm.inc
LIC_FILES_CHKSUM = "file://LICENSE.TXT;md5=8a15a0759ef07f2682d2ba4b893c9afe"
do_install_prepend () {
# the install does a sed on this without installing the file
# we don't need it for anything
mkdir -p "${D}/usr/share/llvm/cmake"
touch "${D}/usr/share/llvm/cmake/LLVMExports-noconfig.cmake"
}
do_install_append () {
# we don't need any of this stuff to build Rust
rm -rf "${D}/usr/lib/cmake"
}

View File

@@ -0,0 +1,5 @@
# check src/llvm-project/llvm/CMakeLists.txt for llvm version in use
#
LLVM_RELEASE = "14.0.0"
require rust-source-${PV}.inc
require rust-llvm.inc

View File

@@ -0,0 +1,5 @@
# check src/llvm-project/llvm/CMakeLists.txt for llvm version in use
#
LLVM_RELEASE = "14.0.6"
require rust-source-${PV}.inc
require rust-llvm.inc

View File

@@ -1,24 +0,0 @@
## This is information on the rust-snapshot (binary) used to build our current release.
## snapshot info is taken from rust/src/stage0.txt
## TODO: find a way to add additional SRC_URIs based on the contents of an
## earlier SRC_URI.
RS_VERSION = "1.33.0"
RUST_STD_SNAPSHOT = "rust-std-${RS_VERSION}-${BUILD_ARCH}-unknown-linux-gnu"
RUSTC_SNAPSHOT = "rustc-${RS_VERSION}-${BUILD_ARCH}-unknown-linux-gnu"
CARGO_VERSION = "0.34.0"
CARGO_SNAPSHOT = "cargo-${CARGO_VERSION}-${BUILD_ARCH}-unknown-linux-gnu"
SRC_URI += " \
https://static.rust-lang.org/dist/${RUST_STD_SNAPSHOT}.tar.gz;name=rust-std-snapshot-${BUILD_ARCH};subdir=rust-snapshot-components \
https://static.rust-lang.org/dist/${RUSTC_SNAPSHOT}.tar.gz;name=rustc-snapshot-${BUILD_ARCH};subdir=rust-snapshot-components \
https://static.rust-lang.org/dist/${CARGO_SNAPSHOT}.tar.gz;name=cargo-snapshot-${BUILD_ARCH};subdir=rust-snapshot-components \
"
# TODO: Add hashes for other architecture toolchains as well. Make a script?
SRC_URI[rustc-snapshot-x86_64.md5sum] = "c1ec989c1965dce754dda1e54274a68c"
SRC_URI[rustc-snapshot-x86_64.sha256sum] = "54a342f718b712d8a17fd7878ebd37d22a82ebc70b59c421168cd4153fd04c2b"
SRC_URI[rust-std-snapshot-x86_64.md5sum] = "d573c5bd3a965c973734c1606968a91e"
SRC_URI[rust-std-snapshot-x86_64.sha256sum] = "661c2ba717ae1502f002b4c6e7aeb8941685c7ea8fe7ac26ed9ede26f615b7af"
SRC_URI[cargo-snapshot-x86_64.md5sum] = "de0e635afa9bf495cefecea476bfce36"
SRC_URI[cargo-snapshot-x86_64.sha256sum] = "4795ae5ca3bb8c7c83ca338676bb02b670efa1eb474e346284b629dc872bcce8"

View File

@@ -1,24 +0,0 @@
## This is information on the rust-snapshot (binary) used to build our current release.
## snapshot info is taken from rust/src/stage0.txt
## TODO: find a way to add additional SRC_URIs based on the contents of an
## earlier SRC_URI.
RS_VERSION = "1.35.0"
RUSTC_SNAPSHOT = "rustc-${RS_VERSION}-${BUILD_ARCH}-unknown-linux-gnu"
RUST_STD_SNAPSHOT = "rust-std-${RS_VERSION}-${BUILD_ARCH}-unknown-linux-gnu"
CARGO_VERSION = "0.36.0"
CARGO_SNAPSHOT = "cargo-${CARGO_VERSION}-${BUILD_ARCH}-unknown-linux-gnu"
SRC_URI += " \
https://static.rust-lang.org/dist/${RUSTC_SNAPSHOT}.tar.xz;name=rustc-snapshot-${BUILD_ARCH};subdir=rust-snapshot-components \
https://static.rust-lang.org/dist/${RUST_STD_SNAPSHOT}.tar.xz;name=rust-std-snapshot-${BUILD_ARCH};subdir=rust-snapshot-components \
https://static.rust-lang.org/dist/${CARGO_SNAPSHOT}.tar.xz;name=cargo-snapshot-${BUILD_ARCH};subdir=rust-snapshot-components \
"
# TODO: Add hashes for other architecture toolchains as well. Make a script?
SRC_URI[rustc-snapshot-x86_64.md5sum] = "47ea78f6b3f68e30f24b9c94e465d6bd"
SRC_URI[rustc-snapshot-x86_64.sha256sum] = "5d6dc216ba429ddf3a1657e70f3e5e380549b546fe56de897677a11d72aa4e07"
SRC_URI[rust-std-snapshot-x86_64.md5sum] = "348ec23ca8e47fc65079bc80e63cca5f"
SRC_URI[rust-std-snapshot-x86_64.sha256sum] = "ccff05d0e2d88499505b10f8e33e8b1645df057f918edc81f8acb0fcee9f90b2"
SRC_URI[cargo-snapshot-x86_64.md5sum] = "93a375e771f3d9b3a139e612dd4730ee"
SRC_URI[cargo-snapshot-x86_64.sha256sum] = "ab5a6ff1947463dbd2477ca5dac2012494dae821112098ae0c54add652adfdc3"

View File

@@ -1,24 +0,0 @@
## This is information on the rust-snapshot (binary) used to build our current release.
## snapshot info is taken from rust/src/stage0.txt
## TODO: find a way to add additional SRC_URIs based on the contents of an
## earlier SRC_URI.
RS_VERSION = "1.36.0"
RUSTC_SNAPSHOT = "rustc-${RS_VERSION}-${BUILD_ARCH}-unknown-linux-gnu"
RUST_STD_SNAPSHOT = "rust-std-${RS_VERSION}-${BUILD_ARCH}-unknown-linux-gnu"
CARGO_VERSION = "0.37.0"
CARGO_SNAPSHOT = "cargo-${CARGO_VERSION}-${BUILD_ARCH}-unknown-linux-gnu"
SRC_URI += " \
https://static.rust-lang.org/dist/${RUSTC_SNAPSHOT}.tar.xz;name=rustc-snapshot-${BUILD_ARCH};subdir=rust-snapshot-components \
https://static.rust-lang.org/dist/${RUST_STD_SNAPSHOT}.tar.xz;name=rust-std-snapshot-${BUILD_ARCH};subdir=rust-snapshot-components \
https://static.rust-lang.org/dist/${CARGO_SNAPSHOT}.tar.xz;name=cargo-snapshot-${BUILD_ARCH};subdir=rust-snapshot-components \
"
# TODO: Add hashes for other architecture toolchains as well. Make a script?
SRC_URI[rustc-snapshot-x86_64.md5sum] = "ec27794c94cc1df1a0a69f7244a09176"
SRC_URI[rustc-snapshot-x86_64.sha256sum] = "fff0158da6f5af2a89936dc3e0c361077c06c2983eb310615e02f81ebbde1416"
SRC_URI[rust-std-snapshot-x86_64.md5sum] = "b71a6fd6f44527c3bf09584e89ad8958"
SRC_URI[rust-std-snapshot-x86_64.sha256sum] = "ce8e12684b568a8a4f7d346a743383429849cf3f028f5712ad3d3e31590c8db3"
SRC_URI[cargo-snapshot-x86_64.md5sum] = "8c661276a0da7a1aa48affbe33b347e6"
SRC_URI[cargo-snapshot-x86_64.sha256sum] = "d20fa121951339d5492cf8862f8a7af59efc99d18f3c27b95ab6d4658b6a7d67"

View File

@@ -1,24 +0,0 @@
## This is information on the rust-snapshot (binary) used to build our current release.
## snapshot info is taken from rust/src/stage0.txt
## TODO: find a way to add additional SRC_URIs based on the contents of an
## earlier SRC_URI.
RS_VERSION = "1.38.0"
RUSTC_SNAPSHOT = "rustc-${RS_VERSION}-${BUILD_ARCH}-unknown-linux-gnu"
RUST_STD_SNAPSHOT = "rust-std-${RS_VERSION}-${BUILD_ARCH}-unknown-linux-gnu"
CARGO_VERSION = "0.39.0"
CARGO_SNAPSHOT = "cargo-${CARGO_VERSION}-${BUILD_ARCH}-unknown-linux-gnu"
SRC_URI += " \
https://static.rust-lang.org/dist/${RUSTC_SNAPSHOT}.tar.xz;name=rustc-snapshot-${BUILD_ARCH};subdir=rust-snapshot-components \
https://static.rust-lang.org/dist/${RUST_STD_SNAPSHOT}.tar.xz;name=rust-std-snapshot-${BUILD_ARCH};subdir=rust-snapshot-components \
https://static.rust-lang.org/dist/${CARGO_SNAPSHOT}.tar.xz;name=cargo-snapshot-${BUILD_ARCH};subdir=rust-snapshot-components \
"
# TODO: Add hashes for other architecture toolchains as well. Make a script?
SRC_URI[rustc-snapshot-x86_64.md5sum] = "53278262a3996982cd68730db7cb1efd"
SRC_URI[rustc-snapshot-x86_64.sha256sum] = "0fedde3406cf3367ceb00f493698e6bfc3264bd7f7253c85de7a042b45f873fa"
SRC_URI[rust-std-snapshot-x86_64.md5sum] = "0d32b76359613f73671acd13ea57b7ea"
SRC_URI[rust-std-snapshot-x86_64.sha256sum] = "51b334337804baeff7524e5496d396f254894d7529860d236975e9ed8fcca371"
SRC_URI[cargo-snapshot-x86_64.md5sum] = "7274cfe12905fe8ea6edbe131d3f6637"
SRC_URI[cargo-snapshot-x86_64.sha256sum] = "80bcb1368ce98d13cb371df89cbbed9007fb98843f34d07f2abd2c03b8f2747a"

View File

@@ -1,24 +0,0 @@
## This is information on the rust-snapshot (binary) used to build our current release.
## snapshot info is taken from rust/src/stage0.txt
## TODO: find a way to add additional SRC_URIs based on the contents of an
## earlier SRC_URI.
RS_VERSION = "1.39.0"
RUSTC_SNAPSHOT = "rustc-${RS_VERSION}-${BUILD_ARCH}-unknown-linux-gnu"
RUST_STD_SNAPSHOT = "rust-std-${RS_VERSION}-${BUILD_ARCH}-unknown-linux-gnu"
CARGO_VERSION = "0.40.0"
CARGO_SNAPSHOT = "cargo-${CARGO_VERSION}-${BUILD_ARCH}-unknown-linux-gnu"
SRC_URI += " \
https://static.rust-lang.org/dist/${RUSTC_SNAPSHOT}.tar.xz;name=rustc-snapshot-${BUILD_ARCH};subdir=rust-snapshot-components \
https://static.rust-lang.org/dist/${RUST_STD_SNAPSHOT}.tar.xz;name=rust-std-snapshot-${BUILD_ARCH};subdir=rust-snapshot-components \
https://static.rust-lang.org/dist/${CARGO_SNAPSHOT}.tar.xz;name=cargo-snapshot-${BUILD_ARCH};subdir=rust-snapshot-components \
"
# TODO: Add hashes for other architecture toolchains as well. Make a script?
SRC_URI[rustc-snapshot-x86_64.md5sum] = "aa10585498675e44be219d3644c15853"
SRC_URI[rustc-snapshot-x86_64.sha256sum] = "5b2a435a4c034615d70cfc383abe9924cbd1ffd4669caa55ce6539f22ed979ed"
SRC_URI[rust-std-snapshot-x86_64.md5sum] = "d8b8e6f1a5a255d22b9f86c97a65049f"
SRC_URI[rust-std-snapshot-x86_64.sha256sum] = "b629952ec9e3e750137d7b8a922de145c97c1dc372dd616e86e4e501da13910b"
SRC_URI[cargo-snapshot-x86_64.md5sum] = "a51643b8980bcaefa9043715a8e9a2ba"
SRC_URI[cargo-snapshot-x86_64.sha256sum] = "7b9ba52c252964724f49aab49e42bec62fca929297ef058412c7e727b0794620"

View File

@@ -1,24 +0,0 @@
## This is information on the rust-snapshot (binary) used to build our current release.
## snapshot info is taken from rust/src/stage0.txt
## TODO: find a way to add additional SRC_URIs based on the contents of an
## earlier SRC_URI.
RS_VERSION = "1.40.0"
RUSTC_SNAPSHOT = "rustc-${RS_VERSION}-${BUILD_ARCH}-unknown-linux-gnu"
RUST_STD_SNAPSHOT = "rust-std-${RS_VERSION}-${BUILD_ARCH}-unknown-linux-gnu"
CARGO_VERSION = "0.41.0"
CARGO_SNAPSHOT = "cargo-${CARGO_VERSION}-${BUILD_ARCH}-unknown-linux-gnu"
SRC_URI += " \
https://static.rust-lang.org/dist/${RUSTC_SNAPSHOT}.tar.xz;name=rustc-snapshot-${BUILD_ARCH};subdir=rust-snapshot-components \
https://static.rust-lang.org/dist/${RUST_STD_SNAPSHOT}.tar.xz;name=rust-std-snapshot-${BUILD_ARCH};subdir=rust-snapshot-components \
https://static.rust-lang.org/dist/${CARGO_SNAPSHOT}.tar.xz;name=cargo-snapshot-${BUILD_ARCH};subdir=rust-snapshot-components \
"
# TODO: Add hashes for other architecture toolchains as well. Make a script?
SRC_URI[rustc-snapshot-x86_64.md5sum] = "5c62bca8ce4beb9b15e42fb8b9690935"
SRC_URI[rustc-snapshot-x86_64.sha256sum] = "b1c00618b7a98156e88b14682508a503284f85748eab23de749a20dcc8847111"
SRC_URI[rust-std-snapshot-x86_64.md5sum] = "2f926b4eda6449079665045becff623d"
SRC_URI[rust-std-snapshot-x86_64.sha256sum] = "5a0b14a51f51b0194f70a2023749d9cb49c3b2e11f0d4c8232960b91fad336ac"
SRC_URI[cargo-snapshot-x86_64.md5sum] = "8ea9f8b849d44abf2abf9180f90cc4b6"
SRC_URI[cargo-snapshot-x86_64.sha256sum] = "9b6ae643fa240c5ecbc1dc390f4020b6a683f25bac6f7437ebd4b9d32a8d0b6c"

View File

@@ -0,0 +1,25 @@
## This is information on the rust-snapshot (binary) used to build our current release.
## snapshot info is taken from rust/src/stage0.txt
## TODO: find a way to add additional SRC_URIs based on the contents of an
## earlier SRC_URI.
RS_VERSION = "1.60.0"
CARGO_VERSION = "1.60.0"
# TODO: Add hashes for other architecture toolchains as well. Make a script?
SRC_URI[rust-std-snapshot-x86_64.sha256sum] = "6fb8ee3650beb10836ae48a9aaa535473e64eaca20695b88113267aea3c7557f"
SRC_URI[rustc-snapshot-x86_64.sha256sum] = "fc0b41c15e348ad0eeb7a6c015a922a2ac95e9577e531635558b26d99399f315"
SRC_URI[cargo-snapshot-x86_64.sha256sum] = "48edb2eb51d7c56ef9a3130f0b331e83f139559161f6f93b9588d28cf72610f3"
SRC_URI[rust-std-snapshot-aarch64.sha256sum] = "fbc39c2ba2eee9bad7305d73d02a63ada651961be8fd9e0dae520bda5d715c6e"
SRC_URI[rustc-snapshot-aarch64.sha256sum] = "f5b24f2bc30db4b8efb7eba7db86fd5db0bc283631b4c918794e9217fca32822"
SRC_URI[cargo-snapshot-aarch64.sha256sum] = "36030f5cede7971eaed45284b5243b4103184a663ad934124de8a530e0e6d993"
SRC_URI += " \
https://static.rust-lang.org/dist/${RUST_STD_SNAPSHOT}.tar.xz;name=rust-std-snapshot-${BUILD_ARCH};subdir=rust-snapshot-components \
https://static.rust-lang.org/dist/${RUSTC_SNAPSHOT}.tar.xz;name=rustc-snapshot-${BUILD_ARCH};subdir=rust-snapshot-components \
https://static.rust-lang.org/dist/${CARGO_SNAPSHOT}.tar.xz;name=cargo-snapshot-${BUILD_ARCH};subdir=rust-snapshot-components \
"
RUST_STD_SNAPSHOT = "rust-std-${RS_VERSION}-${BUILD_ARCH}-unknown-linux-gnu"
RUSTC_SNAPSHOT = "rustc-${RS_VERSION}-${BUILD_ARCH}-unknown-linux-gnu"
CARGO_SNAPSHOT = "cargo-${CARGO_VERSION}-${BUILD_ARCH}-unknown-linux-gnu"

View File

@@ -0,0 +1,25 @@
## This is information on the rust-snapshot (binary) used to build our current release.
## snapshot info is taken from rust/src/stage0.json
## TODO: find a way to add additional SRC_URIs based on the contents of an
## earlier SRC_URI.
RS_VERSION = "1.63.0"
CARGO_VERSION = "1.63.0"
# TODO: Add hashes for other architecture toolchains as well. Make a script?
SRC_URI[rust-std-snapshot-x86_64.sha256sum] = "993c2c17bf76ac626bfb5b17bddce65fbdfc14f70d183f33773de0cd12df46d2"
SRC_URI[rustc-snapshot-x86_64.sha256sum] = "bdab9d9afa5c329c40f9ba568364815237fab8426477c12bfabad35ffc484ab5"
SRC_URI[cargo-snapshot-x86_64.sha256sum] = "f370d12e4c11f0c835becb738bcf00d363f29b76f8b424b4dcb005abcf15fc9a"
SRC_URI[rust-std-snapshot-aarch64.sha256sum] = "f1d93b3d48258f701687c63ef9b226c07329fb92c2c5559283258687f958e9d0"
SRC_URI[rustc-snapshot-aarch64.sha256sum] = "d78799bb8f4177877f97b9051c9cba1fd85173f2e9cecab9486388fc6fa66259"
SRC_URI[cargo-snapshot-aarch64.sha256sum] = "4313ab44dccba4faed20db4aacc16def405773d1676e79d3e65ced4b99d710d4"
SRC_URI += " \
https://static.rust-lang.org/dist/${RUST_STD_SNAPSHOT}.tar.xz;name=rust-std-snapshot-${BUILD_ARCH};subdir=rust-snapshot-components \
https://static.rust-lang.org/dist/${RUSTC_SNAPSHOT}.tar.xz;name=rustc-snapshot-${BUILD_ARCH};subdir=rust-snapshot-components \
https://static.rust-lang.org/dist/${CARGO_SNAPSHOT}.tar.xz;name=cargo-snapshot-${BUILD_ARCH};subdir=rust-snapshot-components \
"
RUST_STD_SNAPSHOT = "rust-std-${RS_VERSION}-${BUILD_ARCH}-unknown-linux-gnu"
RUSTC_SNAPSHOT = "rustc-${RS_VERSION}-${BUILD_ARCH}-unknown-linux-gnu"
CARGO_SNAPSHOT = "cargo-${CARGO_VERSION}-${BUILD_ARCH}-unknown-linux-gnu"

View File

@@ -1,11 +0,0 @@
SRC_URI += "https://static.rust-lang.org/dist/rustc-${PV}-src.tar.gz;name=rust"
SRC_URI[rust.md5sum] = "7c85e6a60dda740295f7e004a1fb15e1"
SRC_URI[rust.sha256sum] = "c69a4a85a1c464368597df8878cb9e1121aae93e215616d45ad7d23af3052f56"
# later versions of rust change the directory that they unextract to
RUSTSRC = "${WORKDIR}/rustc-${PV}-src"
# set this as our default
S = "${RUSTSRC}"
LIC_FILES_CHKSUM = "file://COPYRIGHT;md5=93a95682d51b4cb0a633a97046940ef0"

View File

@@ -1,11 +0,0 @@
SRC_URI += "https://static.rust-lang.org/dist/rustc-${PV}-src.tar.xz;name=rust"
SRC_URI[rust.md5sum] = "78ffc0b029aaed216b45c3fe24747d46"
SRC_URI[rust.sha256sum] = "f51645b9f787af4a5d94db17f6af39db0c55980ed24fe366cad55b57900f8f2d"
# later versions of rust change the directory that they unextract to
RUSTSRC = "${WORKDIR}/rustc-${PV}-src"
# set this as our default
S = "${RUSTSRC}"
LIC_FILES_CHKSUM = "file://COPYRIGHT;md5=93a95682d51b4cb0a633a97046940ef0"

View File

@@ -1,11 +0,0 @@
SRC_URI += "https://static.rust-lang.org/dist/rustc-${PV}-src.tar.xz;name=rust"
SRC_URI[rust.md5sum] = "ee6300b1d7e5767115492915c4c0d8ef"
SRC_URI[rust.sha256sum] = "10abffac50a729cf74cef6dd03193a2f4647541bd19ee9281be9e5b12ca8cdfd"
# later versions of rust change the directory that they unextract to
RUSTSRC = "${WORKDIR}/rustc-${PV}-src"
# set this as our default
S = "${RUSTSRC}"
LIC_FILES_CHKSUM = "file://COPYRIGHT;md5=93a95682d51b4cb0a633a97046940ef0"

View File

@@ -1,11 +0,0 @@
SRC_URI += "https://static.rust-lang.org/dist/rustc-${PV}-src.tar.xz;name=rust"
SRC_URI[rust.md5sum] = "ee76b165cd95ef420765bfb568adb450"
SRC_URI[rust.sha256sum] = "4b0dbb356070687a606034f71dc032b783bbf8b5d3f9fff39f2c1fbc4f171c29"
# later versions of rust change the directory that they unextract to
RUSTSRC = "${WORKDIR}/rustc-${PV}-src"
# set this as our default
S = "${RUSTSRC}"
LIC_FILES_CHKSUM = "file://COPYRIGHT;md5=93a95682d51b4cb0a633a97046940ef0"

View File

@@ -1,11 +0,0 @@
SRC_URI += "https://static.rust-lang.org/dist/rustc-${PV}-src.tar.xz;name=rust"
SRC_URI[rust.md5sum] = "1725f67a1d92ab843a71fbbefef06db9"
SRC_URI[rust.sha256sum] = "6e2aa3a91697f4b225c6b394cbae6b97666f061dba491f666a5281698fe2aace"
# later versions of rust change the directory that they unextract to
RUSTSRC = "${WORKDIR}/rustc-${PV}-src"
# set this as our default
S = "${RUSTSRC}"
LIC_FILES_CHKSUM = "file://COPYRIGHT;md5=93a95682d51b4cb0a633a97046940ef0"

View File

@@ -1,11 +0,0 @@
SRC_URI += "https://static.rust-lang.org/dist/rustc-${PV}-src.tar.xz;name=rust"
SRC_URI[rust.md5sum] = "e8c9d1d39ceb0dd43ee0100d0f019da4"
SRC_URI[rust.sha256sum] = "38d6742e5c4c98a835de5d6e12a209e442fb3078a03b2c01bab6ea7afb25be6f"
# later versions of rust change the directory that they unextract to
RUSTSRC = "${WORKDIR}/rustc-${PV}-src"
# set this as our default
S = "${RUSTSRC}"
LIC_FILES_CHKSUM = "file://COPYRIGHT;md5=93a95682d51b4cb0a633a97046940ef0"

View File

@@ -0,0 +1,7 @@
SRC_URI += "https://static.rust-lang.org/dist/rustc-${PV}-src.tar.xz;name=rust"
SRC_URI[rust.sha256sum] = "a63305a3ad734f170746b337a5e3d07ccaa7aa8f253dc52336b44c0a3b549d7b"
RUSTSRC = "${WORKDIR}/rustc-${PV}-src"
UPSTREAM_CHECK_URI = "https://forge.rust-lang.org/infra/other-installation-methods.html"
UPSTREAM_CHECK_REGEX = "rustc-(?P<pver>\d+(\.\d+)+)-src"

View File

@@ -0,0 +1,7 @@
SRC_URI += "https://static.rust-lang.org/dist/rustc-${PV}-src.tar.xz;name=rust"
SRC_URI[rust.sha256sum] = "e8170d318fac9d2fc17d5c3e648e7068f56e8db8d233d864aeffbef7c6542eac"
RUSTSRC = "${WORKDIR}/rustc-${PV}-src"
UPSTREAM_CHECK_URI = "https://forge.rust-lang.org/infra/other-installation-methods.html"
UPSTREAM_CHECK_REGEX = "rustc-(?P<pver>\d+(\.\d+)+)-src"

View File

@@ -1,12 +1,10 @@
require rust.inc
require rust-source-${PV}.inc
require rust-snapshot-${PV}.inc
DEPENDS += "rust-llvm (=${PV})"
# Otherwise we'll depend on what we provide
INHIBIT_DEFAULT_RUST_DEPS_class-native = "1"
INHIBIT_DEFAULT_RUST_DEPS:class-native = "1"
# We don't need to depend on gcc-native because yocto assumes it exists
PROVIDES_class-native = "virtual/${TARGET_PREFIX}rust"
PROVIDES:class-native = "virtual/${TARGET_PREFIX}rust"
BBCLASSEXTEND = "native"

View File

@@ -0,0 +1,38 @@
require rust-cross-canadian-common.inc
RUST_TOOLS_CLIPPY_PN = "rust-tools-clippy-cross-canadian-${TRANSLATED_TARGET_ARCH}"
RUST_TOOLS_RUSTFMT_PN = "rust-tools-rustfmt-cross-canadian-${TRANSLATED_TARGET_ARCH}"
RUST_TOOLS_PKGS = "${RUST_TOOLS_CLIPPY_PN} ${RUST_TOOLS_RUSTFMT_PN}"
PN = "rust-tools-cross-canadian-${TRANSLATED_TARGET_ARCH}"
PACKAGES = "${RUST_TOOLS_CLIPPY_PN} ${RUST_TOOLS_RUSTFMT_PN} ${PN}"
RDEPENDS:${PN} += "${RUST_TOOLS_PKGS}"
do_compile () {
rust_runx build --stage 2 src/tools/clippy
rust_runx build --stage 2 src/tools/rustfmt
}
do_install () {
SYS_BINDIR=$(dirname ${D}${bindir})
install -d "${SYS_BINDIR}"
cp build/${SNAPSHOT_BUILD_SYS}/stage2-tools-bin/* ${SYS_BINDIR}
for i in ${SYS_BINDIR}/*; do
chrpath -r "\$ORIGIN/../lib" ${i}
done
chown -R root.root ${D}
}
ALLOW_EMPTY:${PN} = "1"
PKG_SYS_BINDIR = "${SDKPATHNATIVE}/usr/bin"
FILES:${RUST_TOOLS_CLIPPY_PN} = "${PKG_SYS_BINDIR}/cargo-clippy ${PKG_SYS_BINDIR}/clippy-driver"
FILES:${RUST_TOOLS_RUSTFMT_PN} = "${PKG_SYS_BINDIR}/rustfmt"
SUMMARY:${PN} = "Rust helper tools"
SUMMARY:${RUST_TOOLS_CLIPPY_PN} = "A collection of lints to catch common mistakes and improve your Rust code"
SUMMARY:${RUST_TOOLS_RUSTFMT_PN} = "A tool for formatting Rust code according to style guidelines"

View File

@@ -0,0 +1,6 @@
require rust-tools-cross-canadian.inc
require rust-source-${PV}.inc
require rust-snapshot-${PV}.inc
FILESEXTRAPATHS:prepend := "${THISDIR}/rust:"

View File

@@ -0,0 +1,6 @@
require rust-tools-cross-canadian.inc
require rust-source-${PV}.inc
require rust-snapshot-${PV}.inc
FILESEXTRAPATHS:prepend := "${THISDIR}/rust:"

View File

@@ -2,19 +2,23 @@ SUMMARY = "Rust compiler and runtime libaries"
HOMEPAGE = "http://www.rust-lang.org"
SECTION = "devel"
LICENSE = "MIT | Apache-2.0"
LIC_FILES_CHKSUM = "file://COPYRIGHT;md5=93a95682d51b4cb0a633a97046940ef0"
inherit rust
inherit cargo_common
DEPENDS += "file-native python3-native"
DEPENDS_append_class-native = " rust-llvm-native"
DEPENDS:append:class-native = " rust-llvm-native"
S = "${RUSTSRC}"
# We generate local targets, and need to be able to locate them
export RUST_TARGET_PATH="${WORKDIR}/targets/"
export FORCE_CRATE_HASH="${BB_TASKHASH}"
export YOCTO_ALTERNATE_EXE_PATH = "${STAGING_LIBDIR}/llvm-rust/bin/llvm-config"
RUST_ALTERNATE_EXE_PATH ?= "${STAGING_LIBDIR}/llvm-rust/bin/llvm-config"
export YOCTO_ALTERNATE_EXE_PATH = "${RUST_ALTERNATE_EXE_PATH}"
export YOCTO_ALTERNATE_MULTILIB_NAME = "/${BASELIB}"
# We don't want to use bitbakes vendoring because the rust sources do their
@@ -35,328 +39,7 @@ setup_cargo_environment () {
printf "linker = '%s'\n" "${RUST_BUILD_CCLD}" >> ${CARGO_HOME}/config
}
# Right now this is focused on arm-specific tune features.
# We get away with this for now as one can only use x86-64 as the build host
# (not arm).
# Note that TUNE_FEATURES is _always_ refering to the target, so we really
# don't want to use this for the host/build.
def llvm_features_from_tune(d):
f = []
feat = d.getVar('TUNE_FEATURES')
if not feat:
return []
feat = frozenset(feat.split())
mach_overrides = d.getVar('MACHINEOVERRIDES')
mach_overrides = frozenset(mach_overrides.split(':'))
if 'vfpv4' in feat:
f.append("+vfp4")
if 'vfpv3' in feat:
f.append("+vfp3")
if 'vfpv3d16' in feat:
f.append("+d16")
if 'vfpv2' in feat or 'vfp' in feat:
f.append("+vfp2")
if 'neon' in feat:
f.append("+neon")
if 'aarch64' in feat:
f.append("+v8")
if 'mips32' in feat:
f.append("+mips32")
if 'mips32r2' in feat:
f.append("+mips32r2")
v7=frozenset(['armv7a', 'armv7r', 'armv7m', 'armv7ve'])
if (not mach_overrides.isdisjoint(v7)) or (not feat.isdisjoint(v7)):
f.append("+v7")
if ('armv6' in mach_overrides) or ('armv6' in feat):
f.append("+v6")
if 'dsp' in feat:
f.append("+dsp")
if 'thumb' in feat:
if d.getVar('ARM_THUMB_OPT') is "thumb":
if (not mach_overrides.isdisjoint(v7)) or (not feat.isdisjoint(v7)):
f.append("+thumb2")
f.append("+thumb-mode")
if 'cortexa5' in feat:
f.append("+a5")
if 'cortexa7' in feat:
f.append("+a7")
if 'cortexa9' in feat:
f.append("+a9")
if 'cortexa15' in feat:
f.append("+a15")
if 'cortexa17' in feat:
f.append("+a17")
return f
# TARGET_CC_ARCH changes from build/cross/target so it'll do the right thing
# this should go away when https://github.com/rust-lang/rust/pull/31709 is
# stable (1.9.0?)
def llvm_features_from_cc_arch(d):
f = []
feat = d.getVar('TARGET_CC_ARCH')
if not feat:
return []
feat = frozenset(feat.split())
if '-mmmx' in feat:
f.append("+mmx")
if '-msse' in feat:
f.append("+sse")
if '-msse2' in feat:
f.append("+sse2")
if '-msse3' in feat:
f.append("+sse3")
if '-mssse3' in feat:
f.append("+ssse3")
if '-msse4.1' in feat:
f.append("+sse4.1")
if '-msse4.2' in feat:
f.append("+sse4.2")
if '-msse4a' in feat:
f.append("+sse4a")
if '-mavx' in feat:
f.append("+avx")
if '-mavx2' in feat:
f.append("+avx2")
return f
def llvm_features_from_target_fpu(d):
# TARGET_FPU can be hard or soft. +soft-float tell llvm to use soft float
# ABI. There is no option for hard.
fpu = d.getVar('TARGET_FPU', True)
return ["+soft-float"] if fpu == "soft" else []
def llvm_features(d):
return ','.join(llvm_features_from_tune(d) +
llvm_features_from_cc_arch(d) +
llvm_features_from_target_fpu(d))
## arm-unknown-linux-gnueabihf
DATA_LAYOUT[arm] = "e-m:e-p:32:32-i64:64-v128:64:128-a:0:32-n32-S64"
LLVM_TARGET[arm] = "${RUST_TARGET_SYS}"
TARGET_ENDIAN[arm] = "little"
TARGET_POINTER_WIDTH[arm] = "32"
TARGET_C_INT_WIDTH[arm] = "32"
MAX_ATOMIC_WIDTH[arm] = "64"
FEATURES[arm] = "+v6,+vfp2"
## aarch64-unknown-linux-{gnu, musl}
DATA_LAYOUT[aarch64] = "e-m:e-i8:8:32-i16:16:32-i64:64-i128:128-n32:64-S128"
LLVM_TARGET[aarch64] = "${RUST_TARGET_SYS}"
TARGET_ENDIAN[aarch64] = "little"
TARGET_POINTER_WIDTH[aarch64] = "64"
TARGET_C_INT_WIDTH[aarch64] = "32"
MAX_ATOMIC_WIDTH[aarch64] = "128"
## x86_64-unknown-linux-{gnu, musl}
DATA_LAYOUT[x86_64] = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
LLVM_TARGET[x86_64] = "${RUST_TARGET_SYS}"
TARGET_ENDIAN[x86_64] = "little"
TARGET_POINTER_WIDTH[x86_64] = "64"
TARGET_C_INT_WIDTH[x86_64] = "32"
MAX_ATOMIC_WIDTH[x86_64] = "64"
## i686-unknown-linux-{gnu, musl}
DATA_LAYOUT[i686] = "e-m:e-p:32:32-f64:32:64-f80:32-n8:16:32-S128"
LLVM_TARGET[i686] = "${RUST_TARGET_SYS}"
TARGET_ENDIAN[i686] = "little"
TARGET_POINTER_WIDTH[i686] = "32"
TARGET_C_INT_WIDTH[i686] = "32"
MAX_ATOMIC_WIDTH[i686] = "64"
## XXX: a bit of a hack so qemux86 builds, clone of i686-unknown-linux-{gnu, musl} above
DATA_LAYOUT[i586] = "e-m:e-p:32:32-f64:32:64-f80:32-n8:16:32-S128"
LLVM_TARGET[i586] = "${RUST_TARGET_SYS}"
TARGET_ENDIAN[i586] = "little"
TARGET_POINTER_WIDTH[i586] = "32"
TARGET_C_INT_WIDTH[i586] = "32"
MAX_ATOMIC_WIDTH[i586] = "64"
## mips-unknown-linux-{gnu, musl}
DATA_LAYOUT[mips] = "E-m:m-p:32:32-i8:8:32-i16:16:32-i64:64-n32-S64"
LLVM_TARGET[mips] = "${RUST_TARGET_SYS}"
TARGET_ENDIAN[mips] = "big"
TARGET_POINTER_WIDTH[mips] = "32"
TARGET_C_INT_WIDTH[mips] = "32"
MAX_ATOMIC_WIDTH[mips] = "32"
## mipsel-unknown-linux-{gnu, musl}
DATA_LAYOUT[mipsel] = "e-m:m-p:32:32-i8:8:32-i16:16:32-i64:64-n32-S64"
LLVM_TARGET[mipsel] = "${RUST_TARGET_SYS}"
TARGET_ENDIAN[mipsel] = "little"
TARGET_POINTER_WIDTH[mipsel] = "32"
TARGET_C_INT_WIDTH[mipsel] = "32"
MAX_ATOMIC_WIDTH[mipsel] = "32"
## mips64-unknown-linux-{gnu, musl}
DATA_LAYOUT[mips64] = "E-m:e-i8:8:32-i16:16:32-i64:64-n32:64-S128"
LLVM_TARGET[mips64] = "${RUST_TARGET_SYS}"
TARGET_ENDIAN[mips64] = "big"
TARGET_POINTER_WIDTH[mips64] = "64"
TARGET_C_INT_WIDTH[mips64] = "64"
MAX_ATOMIC_WIDTH[mips64] = "64"
## mips64el-unknown-linux-{gnu, musl}
DATA_LAYOUT[mips64el] = "e-m:e-i8:8:32-i16:16:32-i64:64-n32:64-S128"
LLVM_TARGET[mips64el] = "${RUST_TARGET_SYS}"
TARGET_ENDIAN[mips64el] = "little"
TARGET_POINTER_WIDTH[mips64el] = "64"
TARGET_C_INT_WIDTH[mips64el] = "64"
MAX_ATOMIC_WIDTH[mips64el] = "64"
## powerpc-unknown-linux-{gnu, musl}
DATA_LAYOUT[powerpc] = "E-m:e-p:32:32-i64:64-n32"
LLVM_TARGET[powerpc] = "${RUST_TARGET_SYS}"
TARGET_ENDIAN[powerpc] = "big"
TARGET_POINTER_WIDTH[powerpc] = "32"
TARGET_C_INT_WIDTH[powerpc] = "32"
MAX_ATOMIC_WIDTH[powerpc] = "32"
## riscv32-unknown-linux-{gnu, musl}
DATA_LAYOUT[riscv32] = "e-m:e-p:64:64-i64:64-i128:128-n64-S128"
LLVM_TARGET[riscv32] = "${RUST_TARGET_SYS}"
TARGET_ENDIAN[riscv32] = "little"
TARGET_POINTER_WIDTH[riscv32] = "32"
TARGET_C_INT_WIDTH[riscv32] = "32"
MAX_ATOMIC_WIDTH[riscv32] = "32"
## riscv64-unknown-linux-{gnu, musl}
DATA_LAYOUT[riscv64] = "e-m:e-p:64:64-i64:64-i128:128-n64-S128"
LLVM_TARGET[riscv64] = "${RUST_TARGET_SYS}"
TARGET_ENDIAN[riscv64] = "little"
TARGET_POINTER_WIDTH[riscv64] = "64"
TARGET_C_INT_WIDTH[riscv64] = "64"
MAX_ATOMIC_WIDTH[riscv64] = "64"
def arch_for(d, thing):
return d.getVar('{}_ARCH'.format(thing))
def sys_for(d, thing):
return d.getVar('{}_SYS'.format(thing))
def prefix_for(d, thing):
return d.getVar('{}_PREFIX'.format(thing))
# Convert a normal arch (HOST_ARCH, TARGET_ARCH, BUILD_ARCH, etc) to something
# rust's internals won't choke on.
def arch_to_rust_target_arch(arch):
if arch == "i586" or arch == "i686":
return "x86"
elif arch == "mipsel":
return "mips"
elif arch == "mip64sel":
return "mips64"
else:
return arch
# generates our target CPU value
def llvm_cpu(d):
cpu = d.getVar('PACKAGE_ARCH')
target = d.getVar('TRANSLATED_TARGET_ARCH')
trans = {}
trans['corei7-64'] = "corei7"
trans['core2-32'] = "core2"
trans['x86-64'] = "x86-64"
trans['i686'] = "i686"
trans['i586'] = "i586"
trans['powerpc'] = "powerpc"
trans['mips64'] = "mips64"
trans['mips64el'] = "mips64"
if target in ["mips", "mipsel"]:
feat = frozenset(d.getVar('TUNE_FEATURES').split())
if "mips32r2" in feat:
trans['mipsel'] = "mips32r2"
trans['mips'] = "mips32r2"
elif "mips32" in feat:
trans['mipsel'] = "mips32"
trans['mips'] = "mips32"
try:
return trans[cpu]
except:
return trans.get(target, "generic")
TARGET_LLVM_CPU="${@llvm_cpu(d)}"
TARGET_LLVM_FEATURES = "${@llvm_features(d)}"
# class-native implies TARGET=HOST, and TUNE_FEATURES only describes the real
# (original) target.
TARGET_LLVM_FEATURES_class-native = "${@','.join(llvm_features_from_cc_arch(d))}"
def rust_gen_target(d, thing, wd, features, cpu):
import json
from distutils.version import LooseVersion
arch = arch_for(d, thing)
sys = sys_for(d, thing)
prefix = prefix_for(d, thing)
features = features or d.getVarFlag('FEATURES', arch) or ""
features = features.strip()
# build tspec
tspec = {}
tspec['llvm-target'] = d.getVarFlag('LLVM_TARGET', arch)
tspec['data-layout'] = d.getVarFlag('DATA_LAYOUT', arch)
tspec['max-atomic-width'] = d.getVarFlag('MAX_ATOMIC_WIDTH', arch)
tspec['target-pointer-width'] = d.getVarFlag('TARGET_POINTER_WIDTH', arch)
tspec['target-c-int-width'] = d.getVarFlag('TARGET_C_INT_WIDTH', arch)
tspec['target-endian'] = d.getVarFlag('TARGET_ENDIAN', arch)
tspec['arch'] = arch_to_rust_target_arch(arch)
tspec['os'] = "linux"
if "musl" in tspec['llvm-target']:
tspec['env'] = "musl"
else:
tspec['env'] = "gnu"
tspec['vendor'] = "unknown"
tspec['target-family'] = "unix"
tspec['linker'] = "{}{}gcc".format(d.getVar('CCACHE'), prefix)
tspec['ar'] = "{}ar".format(prefix)
tspec['cpu'] = cpu
if features is not "":
tspec['features'] = features
tspec['dynamic-linking'] = True
tspec['executables'] = True
tspec['linker-is-gnu'] = True
tspec['linker-flavor'] = "gcc"
tspec['has-rpath'] = True
tspec['has-elf-tls'] = True
tspec['position-independent-executables'] = True
tspec['panic-strategy'] = d.getVar("RUST_PANIC_STRATEGY")
# Don't use jemalloc as it doesn't work for many targets.
# https://github.com/rust-lang/rust/pull/37392
# From 1.20.0 and forward, system allocator is the default.
if LooseVersion(d.getVar("PV")) < LooseVersion("1.20.0"):
tspec['exe-allocation-crate'] = "alloc_system"
tspec['lib-allocation-crate'] = "alloc_system"
# write out the target spec json file
with open(wd + sys + '.json', 'w') as f:
json.dump(tspec, f, indent=4)
python do_rust_gen_targets () {
wd = d.getVar('WORKDIR') + '/targets/'
rust_gen_target(d, 'BUILD', wd, "", "generic")
}
addtask rust_gen_targets after do_patch before do_compile
do_rust_gen_targets[dirs] += "${WORKDIR}/targets"
include rust-common.inc
do_rust_setup_snapshot () {
for installer in "${WORKDIR}/rust-snapshot-components/"*"/install.sh"; do
@@ -367,14 +50,21 @@ do_rust_setup_snapshot () {
# and fail without it there.
mkdir -p ${RUSTSRC}/build/${BUILD_SYS}
ln -sf ${WORKDIR}/rust-snapshot/ ${RUSTSRC}/build/${BUILD_SYS}/stage0
# Need to use uninative's loader if enabled/present since the library paths
# are used internally by rust and result in symbol mismatches if we don't
if [ ! -z "${UNINATIVE_LOADER}" -a -e "${UNINATIVE_LOADER}" ]; then
for bin in cargo rustc rustdoc; do
patchelf-uninative ${WORKDIR}/rust-snapshot/bin/$bin --set-interpreter ${UNINATIVE_LOADER}
done
fi
}
addtask rust_setup_snapshot after do_unpack before do_configure
do_rust_setup_snapshot[dirs] += "${WORKDIR}/rust-snapshot"
do_rust_setup_snapshot[vardepsexclude] += "UNINATIVE_LOADER"
python do_configure() {
import json
from distutils.version import LooseVersion
try:
import configparser
except ImportError:
@@ -413,9 +103,6 @@ python do_configure() {
config.set("rust", "rpath", e(True))
config.set("rust", "channel", e("stable"))
if LooseVersion(d.getVar("PV")) < LooseVersion("1.32.0"):
config.set("rust", "use-jemalloc", e(False))
# Whether or not to optimize the compiler and standard library
config.set("rust", "optimize", e(True))
@@ -427,22 +114,39 @@ python do_configure() {
rustc = d.expand("${WORKDIR}/rust-snapshot/bin/rustc")
config.set("build", "rustc", e(rustc))
# Support for the profiler runtime to generate e.g. coverage report,
# PGO etc.
config.set("build", "profiler", e(True))
cargo = d.expand("${WORKDIR}/rust-snapshot/bin/cargo")
config.set("build", "cargo", e(cargo))
config.set("build", "vendor", e(True))
targets = [d.getVar("TARGET_SYS", True)]
if not "targets" in locals():
targets = [d.getVar("TARGET_SYS", True)]
config.set("build", "target", e(targets))
hosts = [d.getVar("HOST_SYS", True)]
config.set("build", "host", e(targets))
if not "hosts" in locals():
hosts = [d.getVar("HOST_SYS", True)]
config.set("build", "host", e(hosts))
# We can't use BUILD_SYS since that is something the rust snapshot knows
# nothing about when trying to build some stage0 tools (like fabricate)
config.set("build", "build", e(d.getVar("SNAPSHOT_BUILD_SYS", True)))
# [install]
config.add_section("install")
# ./x.py install doesn't have any notion of "destdir"
# but we can prepend ${D} to all the directories instead
config.set("install", "prefix", e(d.getVar("D", True) + d.getVar("prefix", True)))
config.set("install", "bindir", e(d.getVar("D", True) + d.getVar("bindir", True)))
config.set("install", "libdir", e(d.getVar("D", True) + d.getVar("libdir", True)))
config.set("install", "datadir", e(d.getVar("D", True) + d.getVar("datadir", True)))
config.set("install", "mandir", e(d.getVar("D", True) + d.getVar("mandir", True)))
with open("config.toml", "w") as f:
f.write('changelog-seen = 2\n\n')
config.write(f)
# set up ${WORKDIR}/cargo_home
@@ -463,39 +167,36 @@ rust_runx () {
oe_cargo_fix_env
python3 src/bootstrap/bootstrap.py "$@" --verbose
python3 src/bootstrap/bootstrap.py ${@oe.utils.parallel_make_argument(d, '-j %d')} "$@" --verbose
}
rust_runx[vardepsexclude] += "PARALLEL_MAKE"
do_compile () {
rust_runx build
rust_runx dist
}
rust_do_install () {
# Only install compiler generated for the HOST_SYS. There will be
# one for SNAPSHOT_BUILD_SYS as well.
local installer=build/tmp/dist/rustc-${PV}-${HOST_SYS}/install.sh
${installer} --destdir="${D}" --prefix="${prefix}" --disable-ldconfig
mkdir -p ${D}${bindir}
cp build/${HOST_SYS}/stage2/bin/* ${D}${bindir}
installer=build/tmp/dist/rust-std-${PV}-${HOST_SYS}/install.sh
${installer} --destdir="${D}" --prefix="${prefix}" --disable-ldconfig
mkdir -p ${D}${libdir}/rustlib
cp -pRd build/${HOST_SYS}/stage2/lib/* ${D}${libdir}
# Remove absolute symlink so bitbake doesn't complain
rm -f ${D}${libdir}/rustlib/src/rust
}
rust_install_targets() {
# Install our custom target.json files
local td="${D}${libdir}/rustlib/"
install -d "$td"
for tgt in "${WORKDIR}/targets/"* ; do
install -m 0644 "$tgt" "$td"
done
# cleanup after rust-installer since we don't need these bits
rm ${D}/${libdir}/rustlib/install.log
rm ${D}/${libdir}/rustlib/rust-installer-version
rm ${D}/${libdir}/rustlib/uninstall.sh
rm ${D}/${libdir}/rustlib/components
}
do_install () {
rust_do_install
rust_install_targets
}
# ex: sts=4 et sw=4 ts=8

View File

@@ -1,12 +0,0 @@
require rust.inc
require rust-source-${PV}.inc
require rust-snapshot-${PV}.inc
DEPENDS += "rust-llvm (=${PV})"
# Otherwise we'll depend on what we provide
INHIBIT_DEFAULT_RUST_DEPS_class-native = "1"
# We don't need to depend on gcc-native because yocto assumes it exists
PROVIDES_class-native = "virtual/${TARGET_PREFIX}rust"
BBCLASSEXTEND = "native"

View File

@@ -1,12 +0,0 @@
require rust.inc
require rust-source-${PV}.inc
require rust-snapshot-${PV}.inc
DEPENDS += "rust-llvm (=${PV})"
# Otherwise we'll depend on what we provide
INHIBIT_DEFAULT_RUST_DEPS_class-native = "1"
# We don't need to depend on gcc-native because yocto assumes it exists
PROVIDES_class-native = "virtual/${TARGET_PREFIX}rust"
BBCLASSEXTEND = "native"

View File

@@ -1,12 +0,0 @@
require rust.inc
require rust-source-${PV}.inc
require rust-snapshot-${PV}.inc
DEPENDS += "rust-llvm (=${PV})"
# Otherwise we'll depend on what we provide
INHIBIT_DEFAULT_RUST_DEPS_class-native = "1"
# We don't need to depend on gcc-native because yocto assumes it exists
PROVIDES_class-native = "virtual/${TARGET_PREFIX}rust"
BBCLASSEXTEND = "native"

View File

@@ -1,12 +0,0 @@
require rust.inc
require rust-source-${PV}.inc
require rust-snapshot-${PV}.inc
DEPENDS += "rust-llvm (=${PV})"
# Otherwise we'll depend on what we provide
INHIBIT_DEFAULT_RUST_DEPS_class-native = "1"
# We don't need to depend on gcc-native because yocto assumes it exists
PROVIDES_class-native = "virtual/${TARGET_PREFIX}rust"
BBCLASSEXTEND = "native"

View File

@@ -1,12 +0,0 @@
require rust.inc
require rust-source-${PV}.inc
require rust-snapshot-${PV}.inc
DEPENDS += "rust-llvm (=${PV})"
# Otherwise we'll depend on what we provide
INHIBIT_DEFAULT_RUST_DEPS_class-native = "1"
# We don't need to depend on gcc-native because yocto assumes it exists
PROVIDES_class-native = "virtual/${TARGET_PREFIX}rust"
BBCLASSEXTEND = "native"

View File

@@ -0,0 +1,21 @@
require rust-target.inc
require rust-source-${PV}.inc
require rust-snapshot-${PV}.inc
INSANE_SKIP:${PN}:class-native = "already-stripped"
do_compile () {
rust_runx build --stage 2
}
rust_do_install() {
rust_runx install
}
python () {
pn = d.getVar('PN')
if not pn.endswith("-native"):
raise bb.parse.SkipRecipe("Rust recipe doesn't work for target builds at this time. Fixes welcome.")
}

View File

@@ -0,0 +1,21 @@
require rust-target.inc
require rust-source-${PV}.inc
require rust-snapshot-${PV}.inc
INSANE_SKIP:${PN}:class-native = "already-stripped"
do_compile () {
rust_runx build --stage 2
}
rust_do_install() {
rust_runx install
}
python () {
pn = d.getVar('PN')
if not pn.endswith("-native"):
raise bb.parse.SkipRecipe("Rust recipe doesn't work for target builds at this time. Fixes welcome.")
}

View File

@@ -0,0 +1,23 @@
From fa40b874f6470ec11a8fd7b0c9909d0cdd2d6feb Mon Sep 17 00:00:00 2001
From: Dan Callaghan <dan.callaghan@opengear.com>
Date: Fri, 5 Feb 2021 08:56:34 +1000
Subject: [PATCH] enable LTO
---
Cargo.toml | 3 +++
1 file changed, 3 insertions(+)
diff --git a/Cargo.toml b/Cargo.toml
index 7a2f6c8..cdb6b5d 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -3,3 +3,6 @@
name = "rust-hello-world"
version = "0.0.1"
authors = ["Cody P Schafer <dev@codyps.com>"]
+
+[profile.release]
+lto = true
--
2.28.0

View File

@@ -1,11 +1,15 @@
inherit cargo
SRC_URI = "git://github.com/jmesmon/rust-hello-world.git;protocol=https"
SRC_URI = "git://github.com/meta-rust/rust-hello-world.git;protocol=https"
SRCREV="e0fa23f1a3cb1eb1407165bd2fc36d2f6e6ad728"
LIC_FILES_CHKSUM="file://COPYRIGHT;md5=e6b2207ac3740d2d01141c49208c2147"
SRC_URI += "\
file://0001-enable-LTO.patch \
"
SUMMARY = "Hello World by Cargo for Rust"
HOMEPAGE = "https://github.com/jmesmon/rust-hello-world"
HOMEPAGE = "https://github.com/meta-rust/rust-hello-world"
LICENSE = "MIT | Apache-2.0"
S = "${WORKDIR}/git"