authorgravatar for alex@alexrp.comAlex Rønne Petersen <alex@alexrp.com> 2024-11-28 17:11:44+01:00
committergravatar for alex@alexrp.comAlex Rønne Petersen <alex@alexrp.com> 2024-11-28 18:49:16+01:00
log9293e040ecfc7f12ca3eac59da80324cf592b3fd
tree1b1be9d56375272a093e54567c51ef1948e79b7f
parent3fb0ab5195f2dff47f2d2c043ad1677a0b3767e5
signaturebadge-check Signed by SSH key SHA256:7B/LJ7bpR1eX8aCXSr4mtd5M45VMPKcx9zY8e95b5QM

process_headers: Use glibcRuntimeTriple() and muslArchName() from std.zig.target.


1 files changed, 55 insertions(+), 52 deletions(-)

tools/process_headers.zig+55-52
...@@ -18,62 +18,61 @@ const assert = std.debug.assert;...@@ -18,62 +18,61 @@ const assert = std.debug.assert;
18const Blake3 = std.crypto.hash.Blake3;18const Blake3 = std.crypto.hash.Blake3;
1919
20const LibCTarget = struct {20const LibCTarget = struct {
21 name: []const u8,
22 arch: Arch,21 arch: Arch,
23 abi: Abi,22 abi: Abi,
24};23};
2524
26const glibc_targets = [_]LibCTarget{25const glibc_targets = [_]LibCTarget{
27 .{ .name = "arc-linux-gnu", .arch = .arc, .abi = .gnu },26 .{ .arch = .arc, .abi = .gnu },
28 .{ .name = "arm-linux-gnueabi", .arch = .arm, .abi = .gnueabi },27 .{ .arch = .arm, .abi = .gnueabi },
29 .{ .name = "arm-linux-gnueabihf", .arch = .arm, .abi = .gnueabihf },28 .{ .arch = .arm, .abi = .gnueabihf },
30 .{ .name = "armeb-linux-gnueabi", .arch = .armeb, .abi = .gnueabi },29 .{ .arch = .armeb, .abi = .gnueabi },
31 .{ .name = "armeb-linux-gnueabihf", .arch = .armeb, .abi = .gnueabihf },30 .{ .arch = .armeb, .abi = .gnueabihf },
32 .{ .name = "aarch64-linux-gnu", .arch = .aarch64, .abi = .gnu },31 .{ .arch = .aarch64, .abi = .gnu },
33 .{ .name = "aarch64_be-linux-gnu", .arch = .aarch64_be, .abi = .gnu },32 .{ .arch = .aarch64_be, .abi = .gnu },
34 .{ .name = "csky-linux-gnuabiv2-soft", .arch = .csky, .abi = .gnueabi },33 .{ .arch = .csky, .abi = .gnueabi },
35 .{ .name = "csky-linux-gnuabiv2", .arch = .csky, .abi = .gnueabihf },34 .{ .arch = .csky, .abi = .gnueabihf },
36 .{ .name = "loongarch64-linux-gnu-lp64d", .arch = .loongarch64, .abi = .gnu },35 .{ .arch = .loongarch64, .abi = .gnu },
37 .{ .name = "loongarch64-linux-gnu-lp64s", .arch = .loongarch64, .abi = .gnusf },36 .{ .arch = .loongarch64, .abi = .gnusf },
38 .{ .name = "m68k-linux-gnu", .arch = .m68k, .abi = .gnu },37 .{ .arch = .m68k, .abi = .gnu },
39 .{ .name = "mips-linux-gnu", .arch = .mips, .abi = .gnueabihf },38 .{ .arch = .mips, .abi = .gnueabi },
40 .{ .name = "mips-linux-gnu-soft", .arch = .mips, .abi = .gnueabi },39 .{ .arch = .mips, .abi = .gnueabihf },
41 .{ .name = "mipsel-linux-gnu-soft", .arch = .mipsel, .abi = .gnueabi },40 .{ .arch = .mipsel, .abi = .gnueabi },
42 .{ .name = "mipsel-linux-gnu", .arch = .mipsel, .abi = .gnueabihf },41 .{ .arch = .mipsel, .abi = .gnueabihf },
43 .{ .name = "mips64-linux-gnu-n64", .arch = .mips64, .abi = .gnuabi64 },42 .{ .arch = .mips64, .abi = .gnuabi64 },
44 .{ .name = "mips64-linux-gnu-n32", .arch = .mips64, .abi = .gnuabin32 },43 .{ .arch = .mips64, .abi = .gnuabin32 },
45 .{ .name = "mips64el-linux-gnu-n64", .arch = .mips64el, .abi = .gnuabi64 },44 .{ .arch = .mips64el, .abi = .gnuabi64 },
46 .{ .name = "mips64el-linux-gnu-n32", .arch = .mips64el, .abi = .gnuabin32 },45 .{ .arch = .mips64el, .abi = .gnuabin32 },
47 .{ .name = "powerpc-linux-gnu-soft", .arch = .powerpc, .abi = .gnueabi },46 .{ .arch = .powerpc, .abi = .gnueabi },
48 .{ .name = "powerpc-linux-gnu", .arch = .powerpc, .abi = .gnueabihf },47 .{ .arch = .powerpc, .abi = .gnueabihf },
49 .{ .name = "powerpc64-linux-gnu", .arch = .powerpc64, .abi = .gnu },48 .{ .arch = .powerpc64, .abi = .gnu },
50 .{ .name = "powerpc64le-linux-gnu", .arch = .powerpc64le, .abi = .gnu },49 .{ .arch = .powerpc64le, .abi = .gnu },
51 .{ .name = "riscv32-linux-gnu-rv32imafdc-ilp32d", .arch = .riscv32, .abi = .gnu },50 .{ .arch = .riscv32, .abi = .gnu },
52 .{ .name = "riscv64-linux-gnu-rv64imafdc-lp64d", .arch = .riscv64, .abi = .gnu },51 .{ .arch = .riscv64, .abi = .gnu },
53 .{ .name = "s390x-linux-gnu", .arch = .s390x, .abi = .gnu },52 .{ .arch = .s390x, .abi = .gnu },
54 .{ .name = "sparcv9-linux-gnu", .arch = .sparc, .abi = .gnu },53 .{ .arch = .sparc, .abi = .gnu },
55 .{ .name = "sparc64-linux-gnu", .arch = .sparc64, .abi = .gnu },54 .{ .arch = .sparc64, .abi = .gnu },
56 .{ .name = "i686-linux-gnu", .arch = .x86, .abi = .gnu },55 .{ .arch = .x86, .abi = .gnu },
57 .{ .name = "x86_64-linux-gnu", .arch = .x86_64, .abi = .gnu },56 .{ .arch = .x86_64, .abi = .gnu },
58 .{ .name = "x86_64-linux-gnu-x32", .arch = .x86_64, .abi = .gnux32 },57 .{ .arch = .x86_64, .abi = .gnux32 },
59};58};
6059
61const musl_targets = [_]LibCTarget{60const musl_targets = [_]LibCTarget{
62 .{ .name = "arm", .arch = .arm, .abi = .musl },61 .{ .arch = .arm, .abi = .musl },
63 .{ .name = "aarch64", .arch = .aarch64, .abi = .musl },62 .{ .arch = .aarch64, .abi = .musl },
64 .{ .name = "loongarch64", .arch = .loongarch64, .abi = .musl },63 .{ .arch = .loongarch64, .abi = .musl },
65 .{ .name = "m68k", .arch = .m68k, .abi = .musl },64 .{ .arch = .m68k, .abi = .musl },
66 .{ .name = "mips", .arch = .mips, .abi = .musl },65 .{ .arch = .mips, .abi = .musl },
67 .{ .name = "mips64", .arch = .mips64, .abi = .musl },66 .{ .arch = .mips64, .abi = .musl },
68 .{ .name = "mipsn32", .arch = .mips64, .abi = .muslabin32 },67 .{ .arch = .mips64, .abi = .muslabin32 },
69 .{ .name = "powerpc", .arch = .powerpc, .abi = .musl },68 .{ .arch = .powerpc, .abi = .musl },
70 .{ .name = "powerpc64", .arch = .powerpc64, .abi = .musl },69 .{ .arch = .powerpc64, .abi = .musl },
71 .{ .name = "riscv32", .arch = .riscv32, .abi = .musl },70 .{ .arch = .riscv32, .abi = .musl },
72 .{ .name = "riscv64", .arch = .riscv64, .abi = .musl },71 .{ .arch = .riscv64, .abi = .musl },
73 .{ .name = "s390x", .arch = .s390x, .abi = .musl },72 .{ .arch = .s390x, .abi = .musl },
74 .{ .name = "i386", .arch = .x86, .abi = .musl },73 .{ .arch = .x86, .abi = .musl },
75 .{ .name = "x86_64", .arch = .x86_64, .abi = .musl },74 .{ .arch = .x86_64, .abi = .musl },
76 .{ .name = "x32", .arch = .x86_64, .abi = .muslx32 },75 .{ .arch = .x86_64, .abi = .muslx32 },
77};76};
7877
79const DestTarget = struct {78const DestTarget = struct {
...@@ -174,6 +173,10 @@ pub fn main() !void {...@@ -174,6 +173,10 @@ pub fn main() !void {
174 var hasher = Blake3.init(.{});173 var hasher = Blake3.init(.{});
175174
176 for (libc_targets) |libc_target| {175 for (libc_targets) |libc_target| {
176 const libc_dir = switch (vendor) {
177 .glibc => try std.zig.target.glibcRuntimeTriple(allocator, libc_target.arch, .linux, libc_target.abi),
178 .musl => std.zig.target.muslArchName(libc_target.arch, libc_target.abi),
179 };
177 const dest_target = DestTarget{180 const dest_target = DestTarget{
178 .arch = libc_target.arch,181 .arch = libc_target.arch,
179 .os = .linux,182 .os = .linux,
...@@ -182,8 +185,8 @@ pub fn main() !void {...@@ -182,8 +185,8 @@ pub fn main() !void {
182185
183 search: for (search_paths.items) |search_path| {186 search: for (search_paths.items) |search_path| {
184 const sub_path = switch (vendor) {187 const sub_path = switch (vendor) {
185 .glibc => &[_][]const u8{ search_path, libc_target.name, "usr", "include" },188 .glibc => &[_][]const u8{ search_path, libc_dir, "usr", "include" },
186 .musl => &[_][]const u8{ search_path, libc_target.name, "usr", "local", "musl", "include" },189 .musl => &[_][]const u8{ search_path, libc_dir, "usr", "local", "musl", "include" },
187 };190 };
188 const target_include_dir = try std.fs.path.join(allocator, sub_path);191 const target_include_dir = try std.fs.path.join(allocator, sub_path);
189 var dir_stack = std.ArrayList([]const u8).init(allocator);192 var dir_stack = std.ArrayList([]const u8).init(allocator);
...@@ -219,7 +222,7 @@ pub fn main() !void {...@@ -219,7 +222,7 @@ pub fn main() !void {
219 max_bytes_saved += raw_bytes.len;222 max_bytes_saved += raw_bytes.len;
220 gop.value_ptr.hit_count += 1;223 gop.value_ptr.hit_count += 1;
221 std.debug.print("duplicate: {s} {s} ({:2})\n", .{224 std.debug.print("duplicate: {s} {s} ({:2})\n", .{
222 libc_target.name,225 libc_dir,
223 rel_path,226 rel_path,
224 std.fmt.fmtIntSizeDec(raw_bytes.len),227 std.fmt.fmtIntSizeDec(raw_bytes.len),
225 });228 });
...@@ -246,7 +249,7 @@ pub fn main() !void {...@@ -246,7 +249,7 @@ pub fn main() !void {
246 }249 }
247 break;250 break;
248 } else {251 } else {
249 std.debug.print("warning: libc target not found: {s}\n", .{libc_target.name});252 std.debug.print("warning: libc target not found: {s}\n", .{libc_dir});
250 }253 }
251 }254 }
252 std.debug.print("summary: {:2} could be reduced to {:2}\n", .{255 std.debug.print("summary: {:2} could be reduced to {:2}\n", .{