commit 5974f95cb75921d973caa38e049deaebc7a7b628 (tree)
parent 0c2dde2fda29e84be25296d0b65bcb92dc9d4946
Author: Andrew Kelley <andrew@ziglang.org>
Date: Tue, 21 Jan 2020 01:48:25 -0500
add cpus and cpu features to zig targets
Diffstat:
2 files changed, 35 insertions(+), 5 deletions(-)
diff --git a/BRANCH_TODO b/BRANCH_TODO
@@ -1,5 +0,0 @@
-Finish these thigns before merging teh branch
-
- * zig targets
- - use non-reflection based cpu detection?
-
diff --git a/src-self-hosted/print_targets.zig b/src-self-hosted/print_targets.zig
@@ -177,6 +177,41 @@ pub fn cmdTargets(
}
try jws.endArray();
+ try jws.objectField("cpus");
+ try jws.beginObject();
+ inline for (@typeInfo(Target.Arch).Union.fields) |field| {
+ try jws.objectField(field.name);
+ try jws.beginObject();
+ const arch = @unionInit(Target.Arch, field.name, undefined);
+ for (arch.allCpus()) |cpu| {
+ try jws.objectField(cpu.name);
+ try jws.beginArray();
+ for (arch.allFeaturesList()) |feature, i| {
+ if (cpu.features.isEnabled(@intCast(u8, i))) {
+ try jws.arrayElem();
+ try jws.emitString(feature.name);
+ }
+ }
+ try jws.endArray();
+ }
+ try jws.endObject();
+ }
+ try jws.endObject();
+
+ try jws.objectField("cpuFeatures");
+ try jws.beginObject();
+ inline for (@typeInfo(Target.Arch).Union.fields) |field| {
+ try jws.objectField(field.name);
+ try jws.beginArray();
+ const arch = @unionInit(Target.Arch, field.name, undefined);
+ for (arch.allFeaturesList()) |feature| {
+ try jws.arrayElem();
+ try jws.emitString(feature.name);
+ }
+ try jws.endArray();
+ }
+ try jws.endObject();
+
try jws.objectField("native");
try jws.beginObject();
{