authorgravatar for thatlemon@gmail.comLemonBoy <thatlemon@gmail.com> 2021-05-06 19:03:42+02:00
committergravatar for mail@isaacfreund.comIsaac Freund <mail@isaacfreund.com> 2021-05-11 12:27:24+02:00
logac546f56eb2b9fd50a69f1d0bda3d0d070b76f52
treeb102f9dbd11b9aba60840f9c983fc6044b4218b5
parentb288f8c9a657b1c5a97e3e543d8598a9e749a390

stage2: Allow building musl/glibc in thumb mode


2 files changed, 16 insertions(+), 2 deletions(-)

src/Compilation.zig+11-1
......@@ -2903,7 +2903,17 @@ fn detectLibCIncludeDirs(
29032903 if (target_util.canBuildLibC(target)) {
29042904 const generic_name = target_util.libCGenericName(target);
29052905 // Some architectures are handled by the same set of headers.
2906 const arch_name = if (target.abi.isMusl()) target_util.archMuslName(target.cpu.arch) else @tagName(target.cpu.arch);
2906 const arch_name = if (target.abi.isMusl())
2907 target_util.archMuslName(target.cpu.arch)
2908 else if (target.cpu.arch.isThumb())
2909 // ARM headers are valid for Thumb too.
2910 switch (target.cpu.arch) {
2911 .thumb => "arm",
2912 .thumbeb => "armeb",
2913 else => unreachable,
2914 }
2915 else
2916 @tagName(target.cpu.arch);
29072917 const os_name = @tagName(target.os.tag);
29082918 // Musl's headers are ABI-agnostic and so they all have the "musl" ABI name.
29092919 const abi_name = if (target.abi.isMusl()) "musl" else @tagName(target.abi);
src/target.zig+5-1
......@@ -24,6 +24,10 @@ pub const available_libcs = [_]ArchOsAbi{
2424 .{ .arch = .arm, .os = .linux, .abi = .gnueabihf },
2525 .{ .arch = .arm, .os = .linux, .abi = .musleabi },
2626 .{ .arch = .arm, .os = .linux, .abi = .musleabihf },
27 .{ .arch = .thumb, .os = .linux, .abi = .gnueabi },
28 .{ .arch = .thumb, .os = .linux, .abi = .gnueabihf },
29 .{ .arch = .thumb, .os = .linux, .abi = .musleabi },
30 .{ .arch = .thumb, .os = .linux, .abi = .musleabihf },
2731 .{ .arch = .arm, .os = .windows, .abi = .gnu },
2832 .{ .arch = .csky, .os = .linux, .abi = .gnueabi },
2933 .{ .arch = .csky, .os = .linux, .abi = .gnueabihf },
......@@ -97,7 +101,7 @@ pub fn libCGenericName(target: std.Target) [:0]const u8 {
97101pub fn archMuslName(arch: std.Target.Cpu.Arch) [:0]const u8 {
98102 switch (arch) {
99103 .aarch64, .aarch64_be => return "aarch64",
100 .arm, .armeb => return "arm",
104 .arm, .armeb, .thumb, .thumbeb => return "arm",
101105 .mips, .mipsel => return "mips",
102106 .mips64el, .mips64 => return "mips64",
103107 .powerpc => return "powerpc",