@@ -18,62 +18,61 @@ const assert = std.debug.assert;
1818const Blake3 = std .crypto .hash .Blake3 ;
1919
2020const LibCTarget = struct {
21- name : []const u8 ,
2221 arch : Arch ,
2322 abi : Abi ,
2423};
2524
2625const glibc_targets = [_ ]LibCTarget {
27- .{ .name = "arc-linux-gnu" , . arch = .arc , .abi = .gnu },
28- .{ .name = "arm-linux-gnueabi" , . arch = .arm , .abi = .gnueabi },
29- .{ .name = "arm-linux-gnueabihf" , . arch = .arm , .abi = .gnueabihf },
30- .{ .name = "armeb-linux-gnueabi" , . arch = .armeb , .abi = .gnueabi },
31- .{ .name = "armeb-linux-gnueabihf" , . arch = .armeb , .abi = .gnueabihf },
32- .{ .name = "aarch64-linux-gnu" , . arch = .aarch64 , .abi = .gnu },
33- .{ .name = "aarch64_be-linux-gnu" , . arch = .aarch64_be , .abi = .gnu },
34- .{ .name = "csky-linux-gnuabiv2-soft" , . arch = .csky , .abi = .gnueabi },
35- .{ .name = "csky-linux-gnuabiv2" , . arch = .csky , .abi = .gnueabihf },
36- .{ .name = "loongarch64-linux-gnu-lp64d" , . arch = .loongarch64 , .abi = .gnu },
37- .{ .name = "loongarch64-linux-gnu-lp64s" , . arch = .loongarch64 , .abi = .gnusf },
38- .{ .name = "m68k-linux-gnu" , . arch = .m68k , .abi = .gnu },
39- .{ .name = "mips-linux-gnu" , . arch = .mips , .abi = .gnueabihf },
40- .{ .name = "mips-linux-gnu-soft" , . arch = .mips , .abi = .gnueabi },
41- .{ .name = "mipsel-linux-gnu-soft" , . arch = .mipsel , .abi = .gnueabi },
42- .{ .name = "mipsel-linux-gnu" , . arch = .mipsel , .abi = .gnueabihf },
43- .{ .name = "mips64-linux-gnu-n64" , . arch = .mips64 , .abi = .gnuabi64 },
44- .{ .name = "mips64-linux-gnu-n32" , . arch = .mips64 , .abi = .gnuabin32 },
45- .{ .name = "mips64el-linux-gnu-n64" , . arch = .mips64el , .abi = .gnuabi64 },
46- .{ .name = "mips64el-linux-gnu-n32" , . arch = .mips64el , .abi = .gnuabin32 },
47- .{ .name = "powerpc-linux-gnu-soft" , . arch = .powerpc , .abi = .gnueabi },
48- .{ .name = "powerpc-linux-gnu" , . arch = .powerpc , .abi = .gnueabihf },
49- .{ .name = "powerpc64-linux-gnu" , . arch = .powerpc64 , .abi = .gnu },
50- .{ .name = "powerpc64le-linux-gnu" , . arch = .powerpc64le , .abi = .gnu },
51- .{ .name = "riscv32-linux-gnu-rv32imafdc-ilp32d" , . arch = .riscv32 , .abi = .gnu },
52- .{ .name = "riscv64-linux-gnu-rv64imafdc-lp64d" , . arch = .riscv64 , .abi = .gnu },
53- .{ .name = "s390x-linux-gnu" , . arch = .s390x , .abi = .gnu },
54- .{ .name = "sparcv9-linux-gnu" , . arch = .sparc , .abi = .gnu },
55- .{ .name = "sparc64-linux-gnu" , . arch = .sparc64 , .abi = .gnu },
56- .{ .name = "i686-linux-gnu" , . arch = .x86 , .abi = .gnu },
57- .{ .name = "x86_64-linux-gnu" , . arch = .x86_64 , .abi = .gnu },
58- .{ .name = "x86_64-linux-gnu-x32" , . arch = .x86_64 , .abi = .gnux32 },
26+ .{ .arch = .arc , .abi = .gnu },
27+ .{ .arch = .arm , .abi = .gnueabi },
28+ .{ .arch = .arm , .abi = .gnueabihf },
29+ .{ .arch = .armeb , .abi = .gnueabi },
30+ .{ .arch = .armeb , .abi = .gnueabihf },
31+ .{ .arch = .aarch64 , .abi = .gnu },
32+ .{ .arch = .aarch64_be , .abi = .gnu },
33+ .{ .arch = .csky , .abi = .gnueabi },
34+ .{ .arch = .csky , .abi = .gnueabihf },
35+ .{ .arch = .loongarch64 , .abi = .gnu },
36+ .{ .arch = .loongarch64 , .abi = .gnusf },
37+ .{ .arch = .m68k , .abi = .gnu },
38+ .{ .arch = .mips , .abi = .gnueabi },
39+ .{ .arch = .mips , .abi = .gnueabihf },
40+ .{ .arch = .mipsel , .abi = .gnueabi },
41+ .{ .arch = .mipsel , .abi = .gnueabihf },
42+ .{ .arch = .mips64 , .abi = .gnuabi64 },
43+ .{ .arch = .mips64 , .abi = .gnuabin32 },
44+ .{ .arch = .mips64el , .abi = .gnuabi64 },
45+ .{ .arch = .mips64el , .abi = .gnuabin32 },
46+ .{ .arch = .powerpc , .abi = .gnueabi },
47+ .{ .arch = .powerpc , .abi = .gnueabihf },
48+ .{ .arch = .powerpc64 , .abi = .gnu },
49+ .{ .arch = .powerpc64le , .abi = .gnu },
50+ .{ .arch = .riscv32 , .abi = .gnu },
51+ .{ .arch = .riscv64 , .abi = .gnu },
52+ .{ .arch = .s390x , .abi = .gnu },
53+ .{ .arch = .sparc , .abi = .gnu },
54+ .{ .arch = .sparc64 , .abi = .gnu },
55+ .{ .arch = .x86 , .abi = .gnu },
56+ .{ .arch = .x86_64 , .abi = .gnu },
57+ .{ .arch = .x86_64 , .abi = .gnux32 },
5958};
6059
6160const musl_targets = [_ ]LibCTarget {
62- .{ .name = "arm" , . arch = .arm , .abi = .musl },
63- .{ .name = "aarch64" , . arch = .aarch64 , .abi = .musl },
64- .{ .name = "loongarch64" , . arch = .loongarch64 , .abi = .musl },
65- .{ .name = "m68k" , . arch = .m68k , .abi = .musl },
66- .{ .name = "mips" , . arch = .mips , .abi = .musl },
67- .{ .name = "mips64" , . arch = .mips64 , .abi = .musl },
68- .{ .name = "mipsn32" , . arch = .mips64 , .abi = .muslabin32 },
69- .{ .name = "powerpc" , . arch = .powerpc , .abi = .musl },
70- .{ .name = "powerpc64" , . arch = .powerpc64 , .abi = .musl },
71- .{ .name = "riscv32" , . arch = .riscv32 , .abi = .musl },
72- .{ .name = "riscv64" , . arch = .riscv64 , .abi = .musl },
73- .{ .name = "s390x" , . arch = .s390x , .abi = .musl },
74- .{ .name = "i386" , . arch = .x86 , .abi = .musl },
75- .{ .name = "x86_64" , . arch = .x86_64 , .abi = .musl },
76- .{ .name = "x32" , . arch = .x86_64 , .abi = .muslx32 },
61+ .{ .arch = .arm , .abi = .musl },
62+ .{ .arch = .aarch64 , .abi = .musl },
63+ .{ .arch = .loongarch64 , .abi = .musl },
64+ .{ .arch = .m68k , .abi = .musl },
65+ .{ .arch = .mips , .abi = .musl },
66+ .{ .arch = .mips64 , .abi = .musl },
67+ .{ .arch = .mips64 , .abi = .muslabin32 },
68+ .{ .arch = .powerpc , .abi = .musl },
69+ .{ .arch = .powerpc64 , .abi = .musl },
70+ .{ .arch = .riscv32 , .abi = .musl },
71+ .{ .arch = .riscv64 , .abi = .musl },
72+ .{ .arch = .s390x , .abi = .musl },
73+ .{ .arch = .x86 , .abi = .musl },
74+ .{ .arch = .x86_64 , .abi = .musl },
75+ .{ .arch = .x86_64 , .abi = .muslx32 },
7776};
7877
7978const DestTarget = struct {
@@ -174,6 +173,10 @@ pub fn main() !void {
174173 var hasher = Blake3 .init (.{});
175174
176175 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+ };
177180 const dest_target = DestTarget {
178181 .arch = libc_target .arch ,
179182 .os = .linux ,
@@ -182,8 +185,8 @@ pub fn main() !void {
182185
183186 search : for (search_paths .items ) | search_path | {
184187 const sub_path = switch (vendor ) {
185- .glibc = > &[_ ][]const u8 { search_path , libc_target . name , "usr" , "include" },
186- .musl = > &[_ ][]const u8 { search_path , libc_target . name , "usr" , "local" , "musl" , "include" },
188+ .glibc = > &[_ ][]const u8 { search_path , libc_dir , "usr" , "include" },
189+ .musl = > &[_ ][]const u8 { search_path , libc_dir , "usr" , "local" , "musl" , "include" },
187190 };
188191 const target_include_dir = try std .fs .path .join (allocator , sub_path );
189192 var dir_stack = std .ArrayList ([]const u8 ).init (allocator );
@@ -219,7 +222,7 @@ pub fn main() !void {
219222 max_bytes_saved += raw_bytes .len ;
220223 gop .value_ptr .hit_count += 1 ;
221224 std .debug .print ("duplicate: {s} {s} ({:2})\n " , .{
222- libc_target . name ,
225+ libc_dir ,
223226 rel_path ,
224227 std .fmt .fmtIntSizeDec (raw_bytes .len ),
225228 });
@@ -246,7 +249,7 @@ pub fn main() !void {
246249 }
247250 break ;
248251 } 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 });
250253 }
251254 }
252255 std .debug .print ("summary: {:2} could be reduced to {:2}\n " , .{
0 commit comments