From a49e59d020d47fa2dd849d3571972a64eee39d0f Mon Sep 17 00:00:00 2001 From: Nick Spinale Date: Wed, 18 Sep 2024 23:03:24 -0700 Subject: [PATCH] Remove metadata from target specs This metadata was leftover from the builtin targets they are based on. Signed-off-by: Nick Spinale --- Cargo.lock | 1 + crates/sel4-generate-target-specs/Cargo.nix | 3 ++ crates/sel4-generate-target-specs/Cargo.toml | 3 ++ crates/sel4-generate-target-specs/build.rs | 31 +++++++++++++++++++ crates/sel4-generate-target-specs/src/main.rs | 7 ++++- .../aarch64-sel4-microkit-minimal.json | 8 ++--- ...ch64-sel4-microkit-resettable-minimal.json | 8 ++--- .../aarch64-sel4-microkit-resettable.json | 8 ++--- support/targets/aarch64-sel4-microkit.json | 8 ++--- support/targets/aarch64-sel4-minimal.json | 8 ++--- support/targets/aarch64-sel4.json | 8 ++--- support/targets/armv7a-sel4-minimal.json | 8 ++--- support/targets/armv7a-sel4.json | 8 ++--- support/targets/riscv32imac-sel4-minimal.json | 8 ++--- support/targets/riscv32imac-sel4.json | 8 ++--- .../targets/riscv32imafc-sel4-minimal.json | 8 ++--- support/targets/riscv32imafc-sel4.json | 8 ++--- .../riscv64gc-sel4-microkit-minimal.json | 8 ++--- ...64gc-sel4-microkit-resettable-minimal.json | 8 ++--- .../riscv64gc-sel4-microkit-resettable.json | 8 ++--- support/targets/riscv64gc-sel4-microkit.json | 8 ++--- support/targets/riscv64gc-sel4-minimal.json | 8 ++--- support/targets/riscv64gc-sel4.json | 8 ++--- .../riscv64imac-sel4-microkit-minimal.json | 8 ++--- ...imac-sel4-microkit-resettable-minimal.json | 8 ++--- .../riscv64imac-sel4-microkit-resettable.json | 8 ++--- .../targets/riscv64imac-sel4-microkit.json | 8 ++--- support/targets/riscv64imac-sel4-minimal.json | 8 ++--- support/targets/riscv64imac-sel4.json | 8 ++--- support/targets/x86_64-sel4-minimal.json | 8 ++--- support/targets/x86_64-sel4.json | 8 ++--- 31 files changed, 148 insertions(+), 105 deletions(-) create mode 100644 crates/sel4-generate-target-specs/build.rs diff --git a/Cargo.lock b/Cargo.lock index 3a84d7181..e84da0f07 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2276,6 +2276,7 @@ name = "sel4-generate-target-specs" version = "0.1.0" dependencies = [ "clap", + "rustc_version", "serde_json", ] diff --git a/crates/sel4-generate-target-specs/Cargo.nix b/crates/sel4-generate-target-specs/Cargo.nix index 719085715..8e4e5132f 100644 --- a/crates/sel4-generate-target-specs/Cargo.nix +++ b/crates/sel4-generate-target-specs/Cargo.nix @@ -11,4 +11,7 @@ mk { dependencies = { inherit (versions) serde_json clap; }; + build-dependencies = { + inherit (versions) rustc_version; + }; } diff --git a/crates/sel4-generate-target-specs/Cargo.toml b/crates/sel4-generate-target-specs/Cargo.toml index 22334de19..81dcf0e30 100644 --- a/crates/sel4-generate-target-specs/Cargo.toml +++ b/crates/sel4-generate-target-specs/Cargo.toml @@ -19,3 +19,6 @@ license = "BSD-2-Clause" [dependencies] clap = "4.4.6" serde_json = "1.0.87" + +[build-dependencies] +rustc_version = "0.4.0" diff --git a/crates/sel4-generate-target-specs/build.rs b/crates/sel4-generate-target-specs/build.rs new file mode 100644 index 000000000..98c870d56 --- /dev/null +++ b/crates/sel4-generate-target-specs/build.rs @@ -0,0 +1,31 @@ +// +// Copyright 2024, Colias Group, LLC +// +// SPDX-License-Identifier: BSD-2-Clause +// + +use core::cmp::Reverse; + +// Determine whether rustc includes https://github.com/rust-lang/rust/pull/122305 + +fn main() { + let key = { + let version_meta = rustc_version::version_meta().unwrap(); + let semver = version_meta.semver; + let commit_date = order_date(version_meta.commit_date); + (semver.major, semver.minor, semver.patch, commit_date) + }; + let check_cfg_required = (1, 80, 0, order_date(Some("2024-05-05".to_owned()))); + let target_spec_has_metadata = (1, 78, 0, order_date(Some("2024-03-15".to_owned()))); + if key >= check_cfg_required { + println!("cargo:rustc-check-cfg=cfg(target_spec_has_metadata)"); + } + if key >= target_spec_has_metadata { + println!("cargo:rustc-cfg=target_spec_has_metadata"); + } +} + +// no build date means more recent +fn order_date(date: Option) -> Reverse>> { + Reverse(date.map(Reverse)) +} diff --git a/crates/sel4-generate-target-specs/src/main.rs b/crates/sel4-generate-target-specs/src/main.rs index 787e17cc4..5acb05f85 100644 --- a/crates/sel4-generate-target-specs/src/main.rs +++ b/crates/sel4-generate-target-specs/src/main.rs @@ -223,7 +223,12 @@ impl Context { } fn builtin(triple: &str) -> Target { - Target::expect_builtin(&TargetTriple::from_triple(triple)) + let mut target = Target::expect_builtin(&TargetTriple::from_triple(triple)); + #[cfg(target_spec_has_metadata)] + { + target.metadata = Default::default(); + } + target } fn all_target_specs() -> BTreeMap { diff --git a/support/targets/aarch64-sel4-microkit-minimal.json b/support/targets/aarch64-sel4-microkit-minimal.json index 47630c13b..80a73e2ef 100644 --- a/support/targets/aarch64-sel4-microkit-minimal.json +++ b/support/targets/aarch64-sel4-microkit-minimal.json @@ -13,10 +13,10 @@ "llvm-target": "aarch64-unknown-none", "max-atomic-width": 128, "metadata": { - "description": "Bare ARM64, hardfloat", - "host_tools": false, - "std": false, - "tier": 2 + "description": null, + "host_tools": null, + "std": null, + "tier": null }, "panic-strategy": "abort", "pre-link-args": { diff --git a/support/targets/aarch64-sel4-microkit-resettable-minimal.json b/support/targets/aarch64-sel4-microkit-resettable-minimal.json index 19dc9e75c..38fc99f2c 100644 --- a/support/targets/aarch64-sel4-microkit-resettable-minimal.json +++ b/support/targets/aarch64-sel4-microkit-resettable-minimal.json @@ -13,10 +13,10 @@ "llvm-target": "aarch64-unknown-none", "max-atomic-width": 128, "metadata": { - "description": "Bare ARM64, hardfloat", - "host_tools": false, - "std": false, - "tier": 2 + "description": null, + "host_tools": null, + "std": null, + "tier": null }, "panic-strategy": "abort", "pre-link-args": { diff --git a/support/targets/aarch64-sel4-microkit-resettable.json b/support/targets/aarch64-sel4-microkit-resettable.json index 693a4d77a..5aec2a8ce 100644 --- a/support/targets/aarch64-sel4-microkit-resettable.json +++ b/support/targets/aarch64-sel4-microkit-resettable.json @@ -13,10 +13,10 @@ "llvm-target": "aarch64-unknown-none", "max-atomic-width": 128, "metadata": { - "description": "Bare ARM64, hardfloat", - "host_tools": false, - "std": false, - "tier": 2 + "description": null, + "host_tools": null, + "std": null, + "tier": null }, "pre-link-args": { "gnu-lld": [ diff --git a/support/targets/aarch64-sel4-microkit.json b/support/targets/aarch64-sel4-microkit.json index b151b793f..2d02213cf 100644 --- a/support/targets/aarch64-sel4-microkit.json +++ b/support/targets/aarch64-sel4-microkit.json @@ -13,10 +13,10 @@ "llvm-target": "aarch64-unknown-none", "max-atomic-width": 128, "metadata": { - "description": "Bare ARM64, hardfloat", - "host_tools": false, - "std": false, - "tier": 2 + "description": null, + "host_tools": null, + "std": null, + "tier": null }, "pre-link-args": { "gnu-lld": [ diff --git a/support/targets/aarch64-sel4-minimal.json b/support/targets/aarch64-sel4-minimal.json index 495696505..a20c11462 100644 --- a/support/targets/aarch64-sel4-minimal.json +++ b/support/targets/aarch64-sel4-minimal.json @@ -12,10 +12,10 @@ "llvm-target": "aarch64-unknown-none", "max-atomic-width": 128, "metadata": { - "description": "Bare ARM64, hardfloat", - "host_tools": false, - "std": false, - "tier": 2 + "description": null, + "host_tools": null, + "std": null, + "tier": null }, "panic-strategy": "abort", "pre-link-args": { diff --git a/support/targets/aarch64-sel4.json b/support/targets/aarch64-sel4.json index dd3dcf500..333fb6cac 100644 --- a/support/targets/aarch64-sel4.json +++ b/support/targets/aarch64-sel4.json @@ -12,10 +12,10 @@ "llvm-target": "aarch64-unknown-none", "max-atomic-width": 128, "metadata": { - "description": "Bare ARM64, hardfloat", - "host_tools": false, - "std": false, - "tier": 2 + "description": null, + "host_tools": null, + "std": null, + "tier": null }, "pre-link-args": { "gnu-lld": [ diff --git a/support/targets/armv7a-sel4-minimal.json b/support/targets/armv7a-sel4-minimal.json index 6c4f5a3a6..d1deba6a7 100644 --- a/support/targets/armv7a-sel4-minimal.json +++ b/support/targets/armv7a-sel4-minimal.json @@ -15,10 +15,10 @@ "llvm-target": "armv7a-none-eabi", "max-atomic-width": 64, "metadata": { - "description": "Bare Armv7-A", - "host_tools": false, - "std": false, - "tier": 2 + "description": null, + "host_tools": null, + "std": null, + "tier": null }, "panic-strategy": "abort", "relocation-model": "static", diff --git a/support/targets/armv7a-sel4.json b/support/targets/armv7a-sel4.json index bb21bcf10..f2bfdaf38 100644 --- a/support/targets/armv7a-sel4.json +++ b/support/targets/armv7a-sel4.json @@ -15,10 +15,10 @@ "llvm-target": "armv7a-none-eabi", "max-atomic-width": 64, "metadata": { - "description": "Bare Armv7-A", - "host_tools": false, - "std": false, - "tier": 2 + "description": null, + "host_tools": null, + "std": null, + "tier": null }, "panic-strategy": "abort", "relocation-model": "static", diff --git a/support/targets/riscv32imac-sel4-minimal.json b/support/targets/riscv32imac-sel4-minimal.json index b10bdeaad..67d19abe0 100644 --- a/support/targets/riscv32imac-sel4-minimal.json +++ b/support/targets/riscv32imac-sel4-minimal.json @@ -13,10 +13,10 @@ "llvm-target": "riscv32", "max-atomic-width": 32, "metadata": { - "description": "Bare RISC-V (RV32IMAC ISA)", - "host_tools": false, - "std": false, - "tier": 2 + "description": null, + "host_tools": null, + "std": null, + "tier": null }, "panic-strategy": "abort", "relocation-model": "static", diff --git a/support/targets/riscv32imac-sel4.json b/support/targets/riscv32imac-sel4.json index 7d0175059..7d8c0aa29 100644 --- a/support/targets/riscv32imac-sel4.json +++ b/support/targets/riscv32imac-sel4.json @@ -13,10 +13,10 @@ "llvm-target": "riscv32", "max-atomic-width": 32, "metadata": { - "description": "Bare RISC-V (RV32IMAC ISA)", - "host_tools": false, - "std": false, - "tier": 2 + "description": null, + "host_tools": null, + "std": null, + "tier": null }, "relocation-model": "static", "target-pointer-width": "32" diff --git a/support/targets/riscv32imafc-sel4-minimal.json b/support/targets/riscv32imafc-sel4-minimal.json index b3721a1be..62ffee573 100644 --- a/support/targets/riscv32imafc-sel4-minimal.json +++ b/support/targets/riscv32imafc-sel4-minimal.json @@ -14,10 +14,10 @@ "llvm-target": "riscv32", "max-atomic-width": 32, "metadata": { - "description": "Bare RISC-V (RV32IMAFC ISA)", - "host_tools": false, - "std": false, - "tier": 2 + "description": null, + "host_tools": null, + "std": null, + "tier": null }, "panic-strategy": "abort", "relocation-model": "static", diff --git a/support/targets/riscv32imafc-sel4.json b/support/targets/riscv32imafc-sel4.json index 3ec282683..4f24dd24c 100644 --- a/support/targets/riscv32imafc-sel4.json +++ b/support/targets/riscv32imafc-sel4.json @@ -14,10 +14,10 @@ "llvm-target": "riscv32", "max-atomic-width": 32, "metadata": { - "description": "Bare RISC-V (RV32IMAFC ISA)", - "host_tools": false, - "std": false, - "tier": 2 + "description": null, + "host_tools": null, + "std": null, + "tier": null }, "relocation-model": "static", "target-pointer-width": "32" diff --git a/support/targets/riscv64gc-sel4-microkit-minimal.json b/support/targets/riscv64gc-sel4-microkit-minimal.json index 8e7cdb454..d2429ccc8 100644 --- a/support/targets/riscv64gc-sel4-microkit-minimal.json +++ b/support/targets/riscv64gc-sel4-microkit-minimal.json @@ -16,10 +16,10 @@ "llvm-target": "riscv64", "max-atomic-width": 64, "metadata": { - "description": "Bare RISC-V (RV64IMAFDC ISA)", - "host_tools": false, - "std": false, - "tier": 2 + "description": null, + "host_tools": null, + "std": null, + "tier": null }, "panic-strategy": "abort", "relocation-model": "static", diff --git a/support/targets/riscv64gc-sel4-microkit-resettable-minimal.json b/support/targets/riscv64gc-sel4-microkit-resettable-minimal.json index e971dfe1f..081f3a93f 100644 --- a/support/targets/riscv64gc-sel4-microkit-resettable-minimal.json +++ b/support/targets/riscv64gc-sel4-microkit-resettable-minimal.json @@ -16,10 +16,10 @@ "llvm-target": "riscv64", "max-atomic-width": 64, "metadata": { - "description": "Bare RISC-V (RV64IMAFDC ISA)", - "host_tools": false, - "std": false, - "tier": 2 + "description": null, + "host_tools": null, + "std": null, + "tier": null }, "panic-strategy": "abort", "relocation-model": "static", diff --git a/support/targets/riscv64gc-sel4-microkit-resettable.json b/support/targets/riscv64gc-sel4-microkit-resettable.json index b1b8c49e7..e1c1b3b1e 100644 --- a/support/targets/riscv64gc-sel4-microkit-resettable.json +++ b/support/targets/riscv64gc-sel4-microkit-resettable.json @@ -16,10 +16,10 @@ "llvm-target": "riscv64", "max-atomic-width": 64, "metadata": { - "description": "Bare RISC-V (RV64IMAFDC ISA)", - "host_tools": false, - "std": false, - "tier": 2 + "description": null, + "host_tools": null, + "std": null, + "tier": null }, "relocation-model": "static", "supported-sanitizers": [ diff --git a/support/targets/riscv64gc-sel4-microkit.json b/support/targets/riscv64gc-sel4-microkit.json index 82101fc79..e00472f25 100644 --- a/support/targets/riscv64gc-sel4-microkit.json +++ b/support/targets/riscv64gc-sel4-microkit.json @@ -16,10 +16,10 @@ "llvm-target": "riscv64", "max-atomic-width": 64, "metadata": { - "description": "Bare RISC-V (RV64IMAFDC ISA)", - "host_tools": false, - "std": false, - "tier": 2 + "description": null, + "host_tools": null, + "std": null, + "tier": null }, "relocation-model": "static", "supported-sanitizers": [ diff --git a/support/targets/riscv64gc-sel4-minimal.json b/support/targets/riscv64gc-sel4-minimal.json index 014201eb0..d43985464 100644 --- a/support/targets/riscv64gc-sel4-minimal.json +++ b/support/targets/riscv64gc-sel4-minimal.json @@ -15,10 +15,10 @@ "llvm-target": "riscv64", "max-atomic-width": 64, "metadata": { - "description": "Bare RISC-V (RV64IMAFDC ISA)", - "host_tools": false, - "std": false, - "tier": 2 + "description": null, + "host_tools": null, + "std": null, + "tier": null }, "panic-strategy": "abort", "relocation-model": "static", diff --git a/support/targets/riscv64gc-sel4.json b/support/targets/riscv64gc-sel4.json index 8b6bd0f78..e25cf2bd6 100644 --- a/support/targets/riscv64gc-sel4.json +++ b/support/targets/riscv64gc-sel4.json @@ -15,10 +15,10 @@ "llvm-target": "riscv64", "max-atomic-width": 64, "metadata": { - "description": "Bare RISC-V (RV64IMAFDC ISA)", - "host_tools": false, - "std": false, - "tier": 2 + "description": null, + "host_tools": null, + "std": null, + "tier": null }, "relocation-model": "static", "supported-sanitizers": [ diff --git a/support/targets/riscv64imac-sel4-microkit-minimal.json b/support/targets/riscv64imac-sel4-microkit-minimal.json index 7a4733fac..2af8e7df4 100644 --- a/support/targets/riscv64imac-sel4-microkit-minimal.json +++ b/support/targets/riscv64imac-sel4-microkit-minimal.json @@ -15,10 +15,10 @@ "llvm-target": "riscv64", "max-atomic-width": 64, "metadata": { - "description": "Bare RISC-V (RV64IMAC ISA)", - "host_tools": false, - "std": false, - "tier": 2 + "description": null, + "host_tools": null, + "std": null, + "tier": null }, "panic-strategy": "abort", "relocation-model": "static", diff --git a/support/targets/riscv64imac-sel4-microkit-resettable-minimal.json b/support/targets/riscv64imac-sel4-microkit-resettable-minimal.json index 8deaef87e..6b023ee56 100644 --- a/support/targets/riscv64imac-sel4-microkit-resettable-minimal.json +++ b/support/targets/riscv64imac-sel4-microkit-resettable-minimal.json @@ -15,10 +15,10 @@ "llvm-target": "riscv64", "max-atomic-width": 64, "metadata": { - "description": "Bare RISC-V (RV64IMAC ISA)", - "host_tools": false, - "std": false, - "tier": 2 + "description": null, + "host_tools": null, + "std": null, + "tier": null }, "panic-strategy": "abort", "relocation-model": "static", diff --git a/support/targets/riscv64imac-sel4-microkit-resettable.json b/support/targets/riscv64imac-sel4-microkit-resettable.json index e8c2dd3d8..5ba6e3e41 100644 --- a/support/targets/riscv64imac-sel4-microkit-resettable.json +++ b/support/targets/riscv64imac-sel4-microkit-resettable.json @@ -15,10 +15,10 @@ "llvm-target": "riscv64", "max-atomic-width": 64, "metadata": { - "description": "Bare RISC-V (RV64IMAC ISA)", - "host_tools": false, - "std": false, - "tier": 2 + "description": null, + "host_tools": null, + "std": null, + "tier": null }, "relocation-model": "static", "supported-sanitizers": [ diff --git a/support/targets/riscv64imac-sel4-microkit.json b/support/targets/riscv64imac-sel4-microkit.json index 47b0211a4..732999150 100644 --- a/support/targets/riscv64imac-sel4-microkit.json +++ b/support/targets/riscv64imac-sel4-microkit.json @@ -15,10 +15,10 @@ "llvm-target": "riscv64", "max-atomic-width": 64, "metadata": { - "description": "Bare RISC-V (RV64IMAC ISA)", - "host_tools": false, - "std": false, - "tier": 2 + "description": null, + "host_tools": null, + "std": null, + "tier": null }, "relocation-model": "static", "supported-sanitizers": [ diff --git a/support/targets/riscv64imac-sel4-minimal.json b/support/targets/riscv64imac-sel4-minimal.json index ad39b2158..91553bac5 100644 --- a/support/targets/riscv64imac-sel4-minimal.json +++ b/support/targets/riscv64imac-sel4-minimal.json @@ -14,10 +14,10 @@ "llvm-target": "riscv64", "max-atomic-width": 64, "metadata": { - "description": "Bare RISC-V (RV64IMAC ISA)", - "host_tools": false, - "std": false, - "tier": 2 + "description": null, + "host_tools": null, + "std": null, + "tier": null }, "panic-strategy": "abort", "relocation-model": "static", diff --git a/support/targets/riscv64imac-sel4.json b/support/targets/riscv64imac-sel4.json index a8c081458..3f6de33b7 100644 --- a/support/targets/riscv64imac-sel4.json +++ b/support/targets/riscv64imac-sel4.json @@ -14,10 +14,10 @@ "llvm-target": "riscv64", "max-atomic-width": 64, "metadata": { - "description": "Bare RISC-V (RV64IMAC ISA)", - "host_tools": false, - "std": false, - "tier": 2 + "description": null, + "host_tools": null, + "std": null, + "tier": null }, "relocation-model": "static", "supported-sanitizers": [ diff --git a/support/targets/x86_64-sel4-minimal.json b/support/targets/x86_64-sel4-minimal.json index 318f61aa6..112f621ce 100644 --- a/support/targets/x86_64-sel4-minimal.json +++ b/support/targets/x86_64-sel4-minimal.json @@ -14,10 +14,10 @@ "llvm-target": "x86_64-unknown-none-elf", "max-atomic-width": 64, "metadata": { - "description": "Freestanding/bare-metal x86_64 softfloat", - "host_tools": false, - "std": false, - "tier": 2 + "description": null, + "host_tools": null, + "std": null, + "tier": null }, "panic-strategy": "abort", "plt-by-default": false, diff --git a/support/targets/x86_64-sel4.json b/support/targets/x86_64-sel4.json index c3d8699b6..42e11150a 100644 --- a/support/targets/x86_64-sel4.json +++ b/support/targets/x86_64-sel4.json @@ -14,10 +14,10 @@ "llvm-target": "x86_64-unknown-none-elf", "max-atomic-width": 64, "metadata": { - "description": "Freestanding/bare-metal x86_64 softfloat", - "host_tools": false, - "std": false, - "tier": 2 + "description": null, + "host_tools": null, + "std": null, + "tier": null }, "plt-by-default": false, "relro-level": "full",