Commit 0c2dde2fda
Changed files (1)
src-self-hosted
src-self-hosted/print_targets.zig
@@ -5,6 +5,101 @@ const mem = std.mem;
const Allocator = mem.Allocator;
const Target = std.Target;
+// TODO this is hard-coded until self-hosted gains this information canonically
+const available_libcs = [_][]const u8{
+ "aarch64_be-linux-gnu",
+ "aarch64_be-linux-musl",
+ "aarch64_be-windows-gnu",
+ "aarch64-linux-gnu",
+ "aarch64-linux-musl",
+ "aarch64-windows-gnu",
+ "armeb-linux-gnueabi",
+ "armeb-linux-gnueabihf",
+ "armeb-linux-musleabi",
+ "armeb-linux-musleabihf",
+ "armeb-windows-gnu",
+ "arm-linux-gnueabi",
+ "arm-linux-gnueabihf",
+ "arm-linux-musleabi",
+ "arm-linux-musleabihf",
+ "arm-windows-gnu",
+ "i386-linux-gnu",
+ "i386-linux-musl",
+ "i386-windows-gnu",
+ "mips64el-linux-gnuabi64",
+ "mips64el-linux-gnuabin32",
+ "mips64el-linux-musl",
+ "mips64-linux-gnuabi64",
+ "mips64-linux-gnuabin32",
+ "mips64-linux-musl",
+ "mipsel-linux-gnu",
+ "mipsel-linux-musl",
+ "mips-linux-gnu",
+ "mips-linux-musl",
+ "powerpc64le-linux-gnu",
+ "powerpc64le-linux-musl",
+ "powerpc64-linux-gnu",
+ "powerpc64-linux-musl",
+ "powerpc-linux-gnu",
+ "powerpc-linux-musl",
+ "riscv64-linux-gnu",
+ "riscv64-linux-musl",
+ "s390x-linux-gnu",
+ "s390x-linux-musl",
+ "sparc-linux-gnu",
+ "sparcv9-linux-gnu",
+ "wasm32-freestanding-musl",
+ "x86_64-linux-gnu (native)",
+ "x86_64-linux-gnux32",
+ "x86_64-linux-musl",
+ "x86_64-windows-gnu",
+};
+
+// TODO this is hard-coded until self-hosted gains this information canonically
+const available_glibcs = [_][]const u8{
+ "2.0",
+ "2.1",
+ "2.1.1",
+ "2.1.2",
+ "2.1.3",
+ "2.2",
+ "2.2.1",
+ "2.2.2",
+ "2.2.3",
+ "2.2.4",
+ "2.2.5",
+ "2.2.6",
+ "2.3",
+ "2.3.2",
+ "2.3.3",
+ "2.3.4",
+ "2.4",
+ "2.5",
+ "2.6",
+ "2.7",
+ "2.8",
+ "2.9",
+ "2.10",
+ "2.11",
+ "2.12",
+ "2.13",
+ "2.14",
+ "2.15",
+ "2.16",
+ "2.17",
+ "2.18",
+ "2.19",
+ "2.22",
+ "2.23",
+ "2.24",
+ "2.25",
+ "2.26",
+ "2.27",
+ "2.28",
+ "2.29",
+ "2.30",
+};
+
pub fn cmdTargets(
allocator: *Allocator,
args: []const []const u8,
@@ -52,25 +147,33 @@ pub fn cmdTargets(
try jws.objectField("os");
try jws.beginArray();
- {
- comptime var i: usize = 0;
- inline while (i < @memberCount(Target.Os)) : (i += 1) {
- const os_tag = @memberName(Target.Os, i);
- try jws.arrayElem();
- try jws.emitString(os_tag);
- }
+ inline for (@typeInfo(Target.Os).Enum.fields) |field| {
+ try jws.arrayElem();
+ try jws.emitString(field.name);
}
try jws.endArray();
try jws.objectField("abi");
try jws.beginArray();
- {
- comptime var i: usize = 0;
- inline while (i < @memberCount(Target.Abi)) : (i += 1) {
- const abi_tag = @memberName(Target.Abi, i);
- try jws.arrayElem();
- try jws.emitString(abi_tag);
- }
+ inline for (@typeInfo(Target.Abi).Enum.fields) |field| {
+ try jws.arrayElem();
+ try jws.emitString(field.name);
+ }
+ try jws.endArray();
+
+ try jws.objectField("libc");
+ try jws.beginArray();
+ for (available_libcs) |libc| {
+ try jws.arrayElem();
+ try jws.emitString(libc);
+ }
+ try jws.endArray();
+
+ try jws.objectField("glibc");
+ try jws.beginArray();
+ for (available_glibcs) |glibc| {
+ try jws.arrayElem();
+ try jws.emitString(glibc);
}
try jws.endArray();
@@ -105,6 +208,7 @@ pub fn cmdTargets(
}
try jws.endArray();
}
+ // TODO implement native glibc version detection in self-hosted
try jws.endObject();
try jws.endObject();