aboutsummaryrefslogtreecommitdiff
path: root/lib/std/Target
diff options
context:
space:
mode:
authorAlex Rønne Petersen <alex@alexrp.com>2025-02-18 00:51:59 +0100
committerGitHub <noreply@github.com>2025-02-18 00:51:59 +0100
commitb732070fd36267fb055347e3aa8a1851e4054d50 (patch)
tree9851eb03564eff472bbb4a605e13e4058baed4c6 /lib/std/Target
parent55c46870b23ac16670beaa3ff1c082b703738307 (diff)
parentfaccd79ca5debbe22fe168193b8de54393257604 (diff)
downloadzig-b732070fd36267fb055347e3aa8a1851e4054d50.tar.gz
zig-b732070fd36267fb055347e3aa8a1851e4054d50.zip
Merge pull request #22589 from alexrp/target-changes
Some miscellaneous target and calling convention changes
Diffstat (limited to 'lib/std/Target')
-rw-r--r--lib/std/Target/Query.zig5
-rw-r--r--lib/std/Target/propeller.zig34
2 files changed, 32 insertions, 7 deletions
diff --git a/lib/std/Target/Query.zig b/lib/std/Target/Query.zig
index 56387c27b3..2d5c734108 100644
--- a/lib/std/Target/Query.zig
+++ b/lib/std/Target/Query.zig
@@ -26,7 +26,7 @@ os_version_min: ?OsVersion = null,
os_version_max: ?OsVersion = null,
/// `null` means default when cross compiling, or native when `os_tag` is native.
-/// If `isGnuLibC()` is `false`, this must be `null` and is ignored.
+/// If `isGnu()` is `false`, this must be `null` and is ignored.
glibc_version: ?SemanticVersion = null,
/// `null` means default when cross compiling, or native when `os_tag` is native.
@@ -235,8 +235,7 @@ pub fn parse(args: ParseOptions) !Query {
const abi_ver_text = abi_it.rest();
if (abi_it.next() != null) {
- const tag = result.os_tag orelse builtin.os.tag;
- if (tag.isGnuLibC(abi)) {
+ if (abi.isGnu()) {
result.glibc_version = parseVersion(abi_ver_text) catch |err| switch (err) {
error.Overflow => return error.InvalidAbiVersion,
error.InvalidVersion => return error.InvalidAbiVersion,
diff --git a/lib/std/Target/propeller.zig b/lib/std/Target/propeller.zig
index 929e3ff74c..b05b98bc47 100644
--- a/lib/std/Target/propeller.zig
+++ b/lib/std/Target/propeller.zig
@@ -1,20 +1,46 @@
+//! This file is auto-generated by tools/update_cpu_features.zig.
+
const std = @import("../std.zig");
const CpuFeature = std.Target.Cpu.Feature;
const CpuModel = std.Target.Cpu.Model;
-pub const Feature = enum {};
+pub const Feature = enum {
+ p2,
+};
pub const featureSet = CpuFeature.FeatureSetFns(Feature).featureSet;
pub const featureSetHas = CpuFeature.FeatureSetFns(Feature).featureSetHas;
pub const featureSetHasAny = CpuFeature.FeatureSetFns(Feature).featureSetHasAny;
pub const featureSetHasAll = CpuFeature.FeatureSetFns(Feature).featureSetHasAll;
-pub const all_features: [0]CpuFeature = .{};
+pub const all_features = blk: {
+ const len = @typeInfo(Feature).@"enum".fields.len;
+ std.debug.assert(len <= CpuFeature.Set.needed_bit_count);
+ var result: [len]CpuFeature = undefined;
+ result[@intFromEnum(Feature.p2)] = .{
+ .llvm_name = null,
+ .description = "Enable Propeller 2",
+ .dependencies = featureSet(&[_]Feature{}),
+ };
+ const ti = @typeInfo(Feature);
+ for (&result, 0..) |*elem, i| {
+ elem.index = i;
+ elem.name = ti.@"enum".fields[i].name;
+ }
+ break :blk result;
+};
pub const cpu = struct {
- pub const generic = CpuModel{
- .name = "generic",
+ pub const p1: CpuModel = .{
+ .name = "p1",
.llvm_name = null,
.features = featureSet(&[_]Feature{}),
};
+ pub const p2: CpuModel = .{
+ .name = "p2",
+ .llvm_name = null,
+ .features = featureSet(&[_]Feature{
+ .p2,
+ }),
+ };
};