@@ -18,62 +18,61 @@ const assert = std.debug.assert;
18
18
const Blake3 = std .crypto .hash .Blake3 ;
19
19
20
20
const LibCTarget = struct {
21
- name : []const u8 ,
22
21
arch : Arch ,
23
22
abi : Abi ,
24
23
};
25
24
26
25
const 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 },
59
58
};
60
59
61
60
const 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 },
77
76
};
78
77
79
78
const DestTarget = struct {
@@ -174,6 +173,10 @@ pub fn main() !void {
174
173
var hasher = Blake3 .init (.{});
175
174
176
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
180
const dest_target = DestTarget {
178
181
.arch = libc_target .arch ,
179
182
.os = .linux ,
@@ -182,8 +185,8 @@ pub fn main() !void {
182
185
183
186
search : for (search_paths .items ) | search_path | {
184
187
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" },
187
190
};
188
191
const target_include_dir = try std .fs .path .join (allocator , sub_path );
189
192
var dir_stack = std .ArrayList ([]const u8 ).init (allocator );
@@ -219,7 +222,7 @@ pub fn main() !void {
219
222
max_bytes_saved += raw_bytes .len ;
220
223
gop .value_ptr .hit_count += 1 ;
221
224
std .debug .print ("duplicate: {s} {s} ({:2})\n " , .{
222
- libc_target . name ,
225
+ libc_dir ,
223
226
rel_path ,
224
227
std .fmt .fmtIntSizeDec (raw_bytes .len ),
225
228
});
@@ -246,7 +249,7 @@ pub fn main() !void {
246
249
}
247
250
break ;
248
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
255
std .debug .print ("summary: {:2} could be reduced to {:2}\n " , .{
0 commit comments