cargo/libstd-rs: Forward port musl/riscv support
Signed-off-by: Khem Raj <raj.khem@gmail.com>
This commit is contained in:
73
recipes-devtools/cargo/cargo-1.51.0/riscv-march.patch
Normal file
73
recipes-devtools/cargo/cargo-1.51.0/riscv-march.patch
Normal file
@@ -0,0 +1,73 @@
|
||||
Add suppor for riscv64 and riscv32 musl targets
|
||||
|
||||
Upstream-Status: Pending
|
||||
Signed-off-by: Khem Raj <raj.khem@gmail.com>
|
||||
|
||||
--- a/vendor/cc/src/lib.rs
|
||||
+++ b/vendor/cc/src/lib.rs
|
||||
@@ -2361,6 +2361,7 @@ impl Build {
|
||||
"riscv-none-embed",
|
||||
]),
|
||||
"riscv64gc-unknown-linux-gnu" => Some("riscv64-linux-gnu"),
|
||||
+ "riscv64gc-unknown-linux-musl" => Some("riscv64-linux-musl"),
|
||||
"s390x-unknown-linux-gnu" => Some("s390x-linux-gnu"),
|
||||
"sparc-unknown-linux-gnu" => Some("sparc-linux-gnu"),
|
||||
"sparc64-unknown-linux-gnu" => Some("sparc64-linux-gnu"),
|
||||
--- a/compiler/rustc_target/src/spec/mod.rs
|
||||
+++ b/compiler/rustc_target/src/spec/mod.rs
|
||||
@@ -641,9 +641,11 @@ supported_targets! {
|
||||
("riscv32imc-unknown-none-elf", riscv32imc_unknown_none_elf),
|
||||
("riscv32imac-unknown-none-elf", riscv32imac_unknown_none_elf),
|
||||
("riscv32gc-unknown-linux-gnu", riscv32gc_unknown_linux_gnu),
|
||||
+ ("riscv32gc-unknown-linux-musl", riscv32gc_unknown_linux_musl),
|
||||
("riscv64imac-unknown-none-elf", riscv64imac_unknown_none_elf),
|
||||
("riscv64gc-unknown-none-elf", riscv64gc_unknown_none_elf),
|
||||
("riscv64gc-unknown-linux-gnu", riscv64gc_unknown_linux_gnu),
|
||||
+ ("riscv64gc-unknown-linux-musl", riscv64gc_unknown_linux_musl),
|
||||
|
||||
("aarch64-unknown-none", aarch64_unknown_none),
|
||||
("aarch64-unknown-none-softfloat", aarch64_unknown_none_softfloat),
|
||||
--- /dev/null
|
||||
+++ b/compiler/rustc_target/src/spec/riscv32gc_unknown_linux_musl.rs
|
||||
@@ -0,0 +1,19 @@
|
||||
+use crate::spec::{CodeModel, Target, TargetOptions};
|
||||
+
|
||||
+pub fn target() -> Target {
|
||||
+ Target {
|
||||
+ llvm_target: "riscv32-unknown-linux-musl".to_string(),
|
||||
+ pointer_width: 32,
|
||||
+ data_layout: "e-m:e-p:32:32-i64:64-n32-S128".to_string(),
|
||||
+ arch: "riscv32".to_string(),
|
||||
+ options: TargetOptions {
|
||||
+ unsupported_abis: super::riscv_base::unsupported_abis(),
|
||||
+ code_model: Some(CodeModel::Medium),
|
||||
+ cpu: "generic-rv32".to_string(),
|
||||
+ features: "+m,+a,+f,+d,+c".to_string(),
|
||||
+ llvm_abiname: "ilp32d".to_string(),
|
||||
+ max_atomic_width: Some(32),
|
||||
+ ..super::linux_musl_base::opts()
|
||||
+ },
|
||||
+ }
|
||||
+}
|
||||
--- /dev/null
|
||||
+++ b/compiler/rustc_target/src/spec/riscv64gc_unknown_linux_musl.rs
|
||||
@@ -0,0 +1,19 @@
|
||||
+use crate::spec::{CodeModel, Target, TargetOptions};
|
||||
+
|
||||
+pub fn target() -> Target {
|
||||
+ Target {
|
||||
+ llvm_target: "riscv64-unknown-linux-musl".to_string(),
|
||||
+ pointer_width: 64,
|
||||
+ data_layout: "e-m:e-p:64:64-i64:64-i128:128-n64-S128".to_string(),
|
||||
+ arch: "riscv64".to_string(),
|
||||
+ options: TargetOptions {
|
||||
+ unsupported_abis: super::riscv_base::unsupported_abis(),
|
||||
+ code_model: Some(CodeModel::Medium),
|
||||
+ cpu: "generic-rv64".to_string(),
|
||||
+ features: "+m,+a,+f,+d,+c".to_string(),
|
||||
+ llvm_abiname: "lp64d".to_string(),
|
||||
+ max_atomic_width: Some(64),
|
||||
+ ..super::linux_musl_base::opts()
|
||||
+ },
|
||||
+ }
|
||||
+}
|
||||
37
recipes-devtools/cargo/cargo-1.51.0/rv64gc.patch
Normal file
37
recipes-devtools/cargo/cargo-1.51.0/rv64gc.patch
Normal file
@@ -0,0 +1,37 @@
|
||||
--- a/vendor/cc-1.0.60/.cargo-checksum.json
|
||||
+++ b/vendor/cc-1.0.60/.cargo-checksum.json
|
||||
@@ -1 +1 @@
|
||||
-{"files":{"Cargo.lock":"30b9e23f97015aea3eed3e17c6d76d565c2924efec8bdae64c899080847afe89","Cargo.toml":"f6f22b69df3df57c58373cdee72b22218ffa030bc375b36632660037dd72c866","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"378f5840b258e2779c39418f3f2d7b2ba96f1c7917dd6be0713f88305dbda397","README.md":"51405d284d2e0620db62c655c652fc0ec84f20c1cb30529227355c9575a9e6dd","src/bin/gcc-shim.rs":"b77907875029494b6288841c3aed2e4939ed40708c7f597fca5c9e2570490ca6","src/com.rs":"bcdaf1c28b71e6ef889c6b08d1ce9d7c0761344a677f523bc4c3cd297957f804","src/lib.rs":"903c5f2f5dd0cc7d04f99f605a95e6abde8b38156fd4e73eefc58493f55a4e5a","src/registry.rs":"3cc1b5a50879fa751572878ae1d0afbfc960c11665258492754b2c8bccb0ff5d","src/setup_config.rs":"7014103587d3382eac599cb76f016e2609b8140970861b2237982d1db24af265","src/winapi.rs":"ea8b7edbb9ff87957254f465c2334e714c5d6b3b19a8d757c48ea7ca0881c50c","src/windows_registry.rs":"52afe8554f577c87841c48ddee3ba7ffe70a00129e1d6eeb2ec0efb3d2b9aa11","tests/cc_env.rs":"e02b3b0824ad039b47e4462c5ef6dbe6c824c28e7953af94a0f28f7b5158042e","tests/cflags.rs":"57f06eb5ce1557e5b4a032d0c4673e18fbe6f8d26c1deb153126e368b96b41b3","tests/cxxflags.rs":"c2c6c6d8a0d7146616fa1caed26876ee7bc9fcfffd525eb4743593cade5f3371","tests/support/mod.rs":"16274867f23871e9b07614eda4c7344da13d1751fed63d4f633857e40be86394","tests/test.rs":"65c073e0e2cf4aa0433066102788e9f57442719e6f32f5ad5248aa7132bb4597"},"package":"ef611cc68ff783f18535d77ddd080185275713d852c4f5cbb6122c462a7a825c"}
|
||||
\ No newline at end of file
|
||||
+{"files":{"Cargo.lock":"30b9e23f97015aea3eed3e17c6d76d565c2924efec8bdae64c899080847afe89","Cargo.toml":"f6f22b69df3df57c58373cdee72b22218ffa030bc375b36632660037dd72c866","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"378f5840b258e2779c39418f3f2d7b2ba96f1c7917dd6be0713f88305dbda397","README.md":"51405d284d2e0620db62c655c652fc0ec84f20c1cb30529227355c9575a9e6dd","src/bin/gcc-shim.rs":"b77907875029494b6288841c3aed2e4939ed40708c7f597fca5c9e2570490ca6","src/com.rs":"bcdaf1c28b71e6ef889c6b08d1ce9d7c0761344a677f523bc4c3cd297957f804","src/lib.rs":"2788af2bdf425f267b33bc524f3e627851b52422e38f480a7e39eb834264fd73","src/registry.rs":"3cc1b5a50879fa751572878ae1d0afbfc960c11665258492754b2c8bccb0ff5d","src/setup_config.rs":"7014103587d3382eac599cb76f016e2609b8140970861b2237982d1db24af265","src/winapi.rs":"ea8b7edbb9ff87957254f465c2334e714c5d6b3b19a8d757c48ea7ca0881c50c","src/windows_registry.rs":"52afe8554f577c87841c48ddee3ba7ffe70a00129e1d6eeb2ec0efb3d2b9aa11","tests/cc_env.rs":"e02b3b0824ad039b47e4462c5ef6dbe6c824c28e7953af94a0f28f7b5158042e","tests/cflags.rs":"57f06eb5ce1557e5b4a032d0c4673e18fbe6f8d26c1deb153126e368b96b41b3","tests/cxxflags.rs":"c2c6c6d8a0d7146616fa1caed26876ee7bc9fcfffd525eb4743593cade5f3371","tests/support/mod.rs":"16274867f23871e9b07614eda4c7344da13d1751fed63d4f633857e40be86394","tests/test.rs":"65c073e0e2cf4aa0433066102788e9f57442719e6f32f5ad5248aa7132bb4597"},"package":"ef611cc68ff783f18535d77ddd080185275713d852c4f5cbb6122c462a7a825c"}
|
||||
--- a/vendor/cc-1.0.60/src/lib.rs
|
||||
+++ b/vendor/cc-1.0.60/src/lib.rs
|
||||
@@ -1639,14 +1639,17 @@ impl Build {
|
||||
let mut parts = target.split('-');
|
||||
if let Some(arch) = parts.next() {
|
||||
let arch = &arch[5..];
|
||||
- cmd.args.push(("-march=rv".to_owned() + arch).into());
|
||||
if target.contains("linux") && arch.starts_with("64") {
|
||||
+ cmd.args.push(("-march=rv64gc").into());
|
||||
cmd.args.push("-mabi=lp64d".into());
|
||||
} else if target.contains("linux") && arch.starts_with("32") {
|
||||
+ cmd.args.push(("-march=rv32gc").into());
|
||||
cmd.args.push("-mabi=ilp32d".into());
|
||||
} else if arch.starts_with("64") {
|
||||
+ cmd.args.push(("-march=rv".to_owned() + arch).into());
|
||||
cmd.args.push("-mabi=lp64".into());
|
||||
} else {
|
||||
+ cmd.args.push(("-march=rv".to_owned() + arch).into());
|
||||
cmd.args.push("-mabi=ilp32".into());
|
||||
}
|
||||
cmd.args.push("-mcmodel=medany".into());
|
||||
@@ -2332,6 +2335,9 @@ impl Build {
|
||||
"riscv-none-embed",
|
||||
]),
|
||||
"riscv64gc-unknown-linux-gnu" => Some("riscv64-linux-gnu"),
|
||||
+ "riscv32gc-unknown-linux-gnu" => Some("riscv32-linux-gnu"),
|
||||
+ "riscv64gc-unknown-linux-musl" => Some("riscv64-linux-musl"),
|
||||
+ "riscv32gc-unknown-linux-musl" => Some("riscv32-linux-musl"),
|
||||
"s390x-unknown-linux-gnu" => Some("s390x-linux-gnu"),
|
||||
"sparc-unknown-linux-gnu" => Some("sparc-linux-gnu"),
|
||||
"sparc64-unknown-linux-gnu" => Some("sparc64-linux-gnu"),
|
||||
@@ -1,3 +1,6 @@
|
||||
require recipes-devtools/rust/rust-source-${PV}.inc
|
||||
require recipes-devtools/rust/rust-snapshot-${PV}.inc
|
||||
require cargo.inc
|
||||
|
||||
SRC_URI += "file://riscv-march.patch;patchdir=../../.."
|
||||
SRC_URI += "file://rv64gc.patch;patchdir=../../.."
|
||||
|
||||
File diff suppressed because one or more lines are too long
@@ -1,5 +1,12 @@
|
||||
require rust-source-${PV}.inc
|
||||
require libstd-rs.inc
|
||||
|
||||
SRC_URI += "file://riscv-march.patch;patchdir=../../ \
|
||||
file://rv64gc.patch;patchdir=../../ \
|
||||
file://0001-Add-base-definitions-for-riscv64-musl.patch;patchdir=../../ \
|
||||
file://0002-FIXUP-linux-musl-mod.rs-add-riscv64-to-b64-set.patch;patchdir=../../ \
|
||||
file://0003-FIXUP-Correct-definitions-to-match-musl.patch;patchdir=../../ \
|
||||
file://0004-Update-1.51.0-checksums-for-modified-files.patch;patchdir=../../ \
|
||||
"
|
||||
# libstd moved from src/libstd to library/std in 1.47+
|
||||
S = "${RUSTSRC}/library/std"
|
||||
|
||||
Reference in New Issue
Block a user