]> git.lizzy.rs Git - rust.git/commitdiff
[mips64-openwrt-musl] Tier 3 tuple for Mips64 OpenWrt
authorDonald Hoskins <grommish@gmail.com>
Mon, 31 Jan 2022 08:03:06 +0000 (03:03 -0500)
committerDonald Hoskins <grommish@gmail.com>
Mon, 31 Jan 2022 08:03:06 +0000 (03:03 -0500)
This incorporates rust-lang into the OpenWrt build system for
Mips64 targets.

Signed-off-by: Donald Hoskins <grommish@gmail.com>
compiler/rustc_target/src/spec/mips64_openwrt_linux_musl.rs [new file with mode: 0644]
compiler/rustc_target/src/spec/mod.rs
src/doc/rustc/src/platform-support.md
src/doc/rustc/src/platform-support/mips64-openwrt-linux-musl.md [new file with mode: 0644]

diff --git a/compiler/rustc_target/src/spec/mips64_openwrt_linux_musl.rs b/compiler/rustc_target/src/spec/mips64_openwrt_linux_musl.rs
new file mode 100644 (file)
index 0000000..1199ed4
--- /dev/null
@@ -0,0 +1,26 @@
+/// A target tuple for OpenWrt MIPS64 targets
+///
+use crate::abi::Endian;
+use crate::spec::{Target, TargetOptions};
+
+pub fn target() -> Target {
+    let mut base = super::linux_musl_base::opts();
+    base.cpu = "mips64r2".to_string();
+    base.features = "+mips64r2".to_string();
+    base.max_atomic_width = Some(64);
+    base.crt_static_default = false;
+
+    Target {
+        // LLVM doesn't recognize "muslabi64" yet.
+        llvm_target: "mips64-unknown-linux-musl".to_string(),
+        pointer_width: 64,
+        data_layout: "E-m:e-i8:8:32-i16:16:32-i64:64-n32:64-S128".to_string(),
+        arch: "mips64".to_string(),
+        options: TargetOptions {
+            abi: "abi64".to_string(),
+            endian: Endian::Big,
+            mcount: "_mcount".to_string(),
+            ..base
+        },
+    }
+}
index 4effb8bacf6d6cfc01e57aa22e48b5330506da98..f17c0ec248d12eb10d384c0b2bf9dbe757629ed2 100644 (file)
@@ -1016,6 +1016,8 @@ fn $module() {
     ("armv7-unknown-linux-uclibceabihf", armv7_unknown_linux_uclibceabihf),
 
     ("x86_64-unknown-none", x86_64_unknown_none),
+
+    ("mips64-openwrt-linux-musl", mips64_openwrt_linux_musl),
 }
 
 /// Warnings encountered when parsing the target `json`.
index a31e08f0d12a6f8c225010004fd2b4a77b9c544e..bbcd6fb0998eab0745367fa023caa960f0b6ddc2 100644 (file)
@@ -244,6 +244,7 @@ target | std | host | notes
 `i686-wrs-vxworks` | ? |  |
 `m68k-unknown-linux-gnu` | ? |  | Motorola 680x0 Linux
 `mips-unknown-linux-uclibc` | ✓ |  | MIPS Linux with uClibc
+`mips64-openwrt-linux-musl` | ? |  | MIPS64 for OpenWrt Linux MUSL
 `mipsel-sony-psp` | * |  | MIPS (LE) Sony PlayStation Portable (PSP)
 `mipsel-unknown-linux-uclibc` | ✓ |  | MIPS (LE) Linux with uClibc
 `mipsel-unknown-none` | * |  | Bare MIPS (LE) softfloat
diff --git a/src/doc/rustc/src/platform-support/mips64-openwrt-linux-musl.md b/src/doc/rustc/src/platform-support/mips64-openwrt-linux-musl.md
new file mode 100644 (file)
index 0000000..07470ee
--- /dev/null
@@ -0,0 +1,28 @@
+# `mips64-openwrt-linux-musl`
+**Tier: 3**
+
+## Target maintainers
+- Donald Hoskins `grommish@gmail.com`, https://github.com/Itus-Shield
+
+## Requirements
+This target is cross-compiled. There is no support for `std`. There is no
+default allocator, but it's possible to use `alloc` by supplying an allocator.
+
+By default, Rust code generated for this target uses `-msoft-float` and is
+dynamically linked.
+
+This target generated binaries in the ELF format.
+
+## Building the target
+This target is built exclusively within the `OpenWrt` build system via
+the `rust-lang` HOST package
+
+## Building Rust programs
+Rust does not yet ship pre-compiled artifacts for this target. To compile for
+this target, you will either need to build Rust with the target enabled (see
+"Building the target" above).
+
+## Testing
+As `mips64-openwrt-linux-musl` supports a variety of different environments and does
+not support `std`, this target does not support running the Rust testsuite at this
+time.