aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMason Remaley <MasonRemaley@users.noreply.github.com>2025-02-21 18:40:57 -0800
committerGitHub <noreply@github.com>2025-02-21 21:40:57 -0500
commit339b628d4c8a850c6d819e88fb3b84b86e8b5927 (patch)
treecb31173da17ada279298a0a37224fefed9024f02 /src
parent65e7ede4994237f160e8db558e74da113f886f98 (diff)
downloadzig-339b628d4c8a850c6d819e88fb3b84b86e8b5927.tar.gz
zig-339b628d4c8a850c6d819e88fb3b84b86e8b5927.zip
Output `zig targets` as ZON instead of JSON (#22939)
* Adds startTupleField/startStructField, makes pattern in print targets less verbose * Makes some enums into strings * Start/finish renamed to begin/end I feel bad changing this, but I don't know why I named them this way in the first place. Begin/end is consistent with the json API, and with other APIs in the wild that follow this pattern. Better to change now than later.
Diffstat (limited to 'src')
-rw-r--r--src/print_targets.zig182
1 files changed, 81 insertions, 101 deletions
diff --git a/src/print_targets.zig b/src/print_targets.zig
index 470f37c84f..a00683255d 100644
--- a/src/print_targets.zig
+++ b/src/print_targets.zig
@@ -40,121 +40,101 @@ pub fn cmdTargets(
var bw = io.bufferedWriter(stdout);
const w = bw.writer();
- var jws = std.json.writeStream(w, .{ .whitespace = .indent_1 });
+ var sz = std.zon.stringify.serializer(w, .{});
- try jws.beginObject();
-
- try jws.objectField("arch");
- try jws.beginArray();
- for (meta.fieldNames(Target.Cpu.Arch)) |field| {
- try jws.write(field);
- }
- try jws.endArray();
+ {
+ var root_obj = try sz.beginStruct(.{});
- try jws.objectField("os");
- try jws.beginArray();
- for (meta.fieldNames(Target.Os.Tag)) |field| {
- try jws.write(field);
- }
- try jws.endArray();
+ try root_obj.field("arch", meta.fieldNames(Target.Cpu.Arch), .{});
+ try root_obj.field("os", meta.fieldNames(Target.Os.Tag), .{});
+ try root_obj.field("abi", meta.fieldNames(Target.Abi), .{});
- try jws.objectField("abi");
- try jws.beginArray();
- for (meta.fieldNames(Target.Abi)) |field| {
- try jws.write(field);
- }
- try jws.endArray();
-
- try jws.objectField("libc");
- try jws.beginArray();
- for (std.zig.target.available_libcs) |libc| {
- const tmp = try std.fmt.allocPrint(allocator, "{s}-{s}-{s}", .{
- @tagName(libc.arch), @tagName(libc.os), @tagName(libc.abi),
- });
- defer allocator.free(tmp);
- try jws.write(tmp);
- }
- try jws.endArray();
-
- try jws.objectField("glibc");
- try jws.beginArray();
- for (glibc_abi.all_versions) |ver| {
- const tmp = try std.fmt.allocPrint(allocator, "{}", .{ver});
- defer allocator.free(tmp);
- try jws.write(tmp);
- }
- try jws.endArray();
-
- try jws.objectField("cpus");
- try jws.beginObject();
- for (meta.tags(Target.Cpu.Arch)) |arch| {
- try jws.objectField(@tagName(arch));
- try jws.beginObject();
- for (arch.allCpuModels()) |model| {
- try jws.objectField(model.name);
- try jws.beginArray();
- for (arch.allFeaturesList(), 0..) |feature, i_usize| {
- const index = @as(Target.Cpu.Feature.Set.Index, @intCast(i_usize));
- if (model.features.isEnabled(index)) {
- try jws.write(feature.name);
- }
+ {
+ var libc_obj = try root_obj.beginTupleField("libc", .{});
+ for (std.zig.target.available_libcs) |libc| {
+ const tmp = try std.fmt.allocPrint(allocator, "{s}-{s}-{s}", .{
+ @tagName(libc.arch), @tagName(libc.os), @tagName(libc.abi),
+ });
+ defer allocator.free(tmp);
+ try libc_obj.field(tmp, .{});
}
- try jws.endArray();
+ try libc_obj.end();
}
- try jws.endObject();
- }
- try jws.endObject();
-
- try jws.objectField("cpuFeatures");
- try jws.beginObject();
- for (meta.tags(Target.Cpu.Arch)) |arch| {
- try jws.objectField(@tagName(arch));
- try jws.beginArray();
- for (arch.allFeaturesList()) |feature| {
- try jws.write(feature.name);
+
+ {
+ var glibc_obj = try root_obj.beginTupleField("glibc", .{});
+ for (glibc_abi.all_versions) |ver| {
+ const tmp = try std.fmt.allocPrint(allocator, "{}", .{ver});
+ defer allocator.free(tmp);
+ try glibc_obj.field(tmp, .{});
+ }
+ try glibc_obj.end();
}
- try jws.endArray();
- }
- try jws.endObject();
- try jws.objectField("native");
- try jws.beginObject();
- {
- const triple = try native_target.zigTriple(allocator);
- defer allocator.free(triple);
- try jws.objectField("triple");
- try jws.write(triple);
- }
- {
- try jws.objectField("cpu");
- try jws.beginObject();
- try jws.objectField("arch");
- try jws.write(@tagName(native_target.cpu.arch));
+ {
+ var cpus_obj = try root_obj.beginStructField("cpus", .{});
+ for (meta.tags(Target.Cpu.Arch)) |arch| {
+ var arch_obj = try cpus_obj.beginStructField(@tagName(arch), .{});
+ for (arch.allCpuModels()) |model| {
+ var features = try arch_obj.beginTupleField(model.name, .{});
+ for (arch.allFeaturesList(), 0..) |feature, i_usize| {
+ const index = @as(Target.Cpu.Feature.Set.Index, @intCast(i_usize));
+ if (model.features.isEnabled(index)) {
+ try features.field(feature.name, .{});
+ }
+ }
+ try features.end();
+ }
+ try arch_obj.end();
+ }
+ try cpus_obj.end();
+ }
- try jws.objectField("name");
- const cpu = native_target.cpu;
- try jws.write(cpu.model.name);
+ {
+ var cpu_features_obj = try root_obj.beginStructField("cpu_features", .{});
+ for (meta.tags(Target.Cpu.Arch)) |arch| {
+ var arch_features = try cpu_features_obj.beginTupleField(@tagName(arch), .{});
+ for (arch.allFeaturesList()) |feature| {
+ try arch_features.field(feature.name, .{});
+ }
+ try arch_features.end();
+ }
+ try cpu_features_obj.end();
+ }
{
- try jws.objectField("features");
- try jws.beginArray();
- for (native_target.cpu.arch.allFeaturesList(), 0..) |feature, i_usize| {
- const index = @as(Target.Cpu.Feature.Set.Index, @intCast(i_usize));
- if (cpu.features.isEnabled(index)) {
- try jws.write(feature.name);
+ var native_obj = try root_obj.beginStructField("native", .{});
+ {
+ const triple = try native_target.zigTriple(allocator);
+ defer allocator.free(triple);
+ try native_obj.field("triple", triple, .{});
+ }
+ {
+ var cpu_obj = try native_obj.beginStructField("cpu", .{});
+ try cpu_obj.field("arch", @tagName(native_target.cpu.arch), .{});
+
+ try cpu_obj.field("name", native_target.cpu.model.name, .{});
+
+ {
+ var features = try native_obj.beginTupleField("features", .{});
+ for (native_target.cpu.arch.allFeaturesList(), 0..) |feature, i_usize| {
+ const index = @as(Target.Cpu.Feature.Set.Index, @intCast(i_usize));
+ if (native_target.cpu.features.isEnabled(index)) {
+ try features.field(feature.name, .{});
+ }
+ }
+ try features.end();
}
+ try cpu_obj.end();
}
- try jws.endArray();
+
+ try native_obj.field("os", @tagName(native_target.os.tag), .{});
+ try native_obj.field("abi", @tagName(native_target.abi), .{});
+ try native_obj.end();
}
- try jws.endObject();
- }
- try jws.objectField("os");
- try jws.write(@tagName(native_target.os.tag));
- try jws.objectField("abi");
- try jws.write(@tagName(native_target.abi));
- try jws.endObject();
- try jws.endObject();
+ try root_obj.end();
+ }
try w.writeByte('\n');
return bw.flush();