authorgravatar for alex@alexrp.comAlex Rønne Petersen <alex@alexrp.com> 2024-10-06 16:26:24+02:00
committergravatar for noreply@github.comGitHub <noreply@github.com> 2024-10-06 16:26:24+02:00
logece265b1c23202adedfdfdbbcb537ba4e81801d1
tree34d239993ade8eb3a1d41a45ce3dfb08d29ab123
parentbe5378b03805fa95b3cf36b6727d2c364c155e64
parent19924280446ca02bb680357ad976857a087e91d2
signaturebadge-check Signed by PGP key B5690EEEBB952194

Merge pull request #21605 from alexrp/ohos-stuff

`std.Target`: Introduce `Abi.ohoseabi` to distinguish the soft float case.

6 files changed, 35 insertions(+), 7 deletions(-)

lib/compiler/aro/aro/target.zig+2-1
......@@ -699,7 +699,8 @@ pub fn toLLVMTriple(target: std.Target, buf: []u8) []const u8 {
699699 .cygnus => "cygnus",
700700 .simulator => "simulator",
701701 .macabi => "macabi",
702 .ohos => "openhos",
702 .ohos => "ohos",
703 .ohoseabi => "ohoseabi",
703704 };
704705 writer.writeAll(llvm_abi) catch unreachable;
705706 return stream.getWritten();
lib/std/Target.zig+14-3
......@@ -677,6 +677,7 @@ pub const Abi = enum {
677677 simulator,
678678 macabi,
679679 ohos,
680 ohoseabi,
680681
681682 // LLVM tags deliberately omitted:
682683 // - amplification
......@@ -766,8 +767,18 @@ pub const Abi = enum {
766767
767768 pub inline fn isMusl(abi: Abi) bool {
768769 return switch (abi) {
769 .musl, .musleabi, .musleabihf, .muslx32 => true,
770 .ohos => true,
770 .musl,
771 .musleabi,
772 .musleabihf,
773 .muslx32,
774 => true,
775 else => abi.isOpenHarmony(),
776 };
777 }
778
779 pub inline fn isOpenHarmony(abi: Abi) bool {
780 return switch (abi) {
781 .ohos, .ohoseabi => true,
771782 else => false,
772783 };
773784 }
......@@ -786,7 +797,7 @@ pub const Abi = enum {
786797 .gnueabi,
787798 .musleabi,
788799 .gnusf,
789 .ohos,
800 .ohoseabi,
790801 => .soft,
791802 else => .hard,
792803 };
lib/std/zig/LibCDirs.zig+1
......@@ -242,6 +242,7 @@ fn libCGenericName(target: std.Target) [:0]const u8 {
242242 .muslx32,
243243 .none,
244244 .ohos,
245 .ohoseabi,
245246 => return "musl",
246247 .code16,
247248 .eabi,
src/codegen/llvm.zig+1
......@@ -255,6 +255,7 @@ pub fn targetTriple(allocator: Allocator, target: std.Target) ![]const u8 {
255255 .simulator => "simulator",
256256 .macabi => "macabi",
257257 .ohos => "ohos",
258 .ohoseabi => "ohoseabi",
258259 };
259260 try llvm_triple.appendSlice(llvm_abi);
260261
src/target.zig+2-3
......@@ -45,8 +45,7 @@ pub fn requiresPIC(target: std.Target, linking_libc: bool) bool {
4545 return target.isAndroid() or
4646 target.os.tag == .windows or target.os.tag == .uefi or
4747 osRequiresLibC(target) or
48 (linking_libc and target.isGnuLibC()) or
49 (target.abi == .ohos and target.cpu.arch == .aarch64);
48 (linking_libc and target.isGnuLibC());
5049}
5150
5251pub fn picLevel(target: std.Target) u32 {
......@@ -306,7 +305,7 @@ pub fn libcFullLinkFlags(target: std.Target) []const []const u8 {
306305 "-lc",
307306 "-lnetwork",
308307 },
309 else => if (target.isAndroid()) &[_][]const u8{
308 else => if (target.isAndroid() or target.abi.isOpenHarmony()) &[_][]const u8{
310309 "-lm",
311310 "-lc",
312311 "-ldl",
test/llvm_targets.zig+15
......@@ -13,9 +13,11 @@ const targets = [_]std.Target.Query{
1313 .{ .cpu_arch = .aarch64, .os_tag = .ios, .abi = .macabi },
1414 .{ .cpu_arch = .aarch64, .os_tag = .ios, .abi = .none },
1515 .{ .cpu_arch = .aarch64, .os_tag = .ios, .abi = .simulator },
16 .{ .cpu_arch = .aarch64, .os_tag = .linux, .abi = .android },
1617 .{ .cpu_arch = .aarch64, .os_tag = .linux, .abi = .gnu },
1718 .{ .cpu_arch = .aarch64, .os_tag = .linux, .abi = .gnuilp32 },
1819 .{ .cpu_arch = .aarch64, .os_tag = .linux, .abi = .none },
20 .{ .cpu_arch = .aarch64, .os_tag = .linux, .abi = .ohos },
1921 .{ .cpu_arch = .aarch64, .os_tag = .macos, .abi = .none },
2022 .{ .cpu_arch = .aarch64, .os_tag = .netbsd, .abi = .none },
2123 .{ .cpu_arch = .aarch64, .os_tag = .openbsd, .abi = .none },
......@@ -54,12 +56,14 @@ const targets = [_]std.Target.Query{
5456 .{ .cpu_arch = .arm, .os_tag = .freestanding, .abi = .eabihf },
5557 .{ .cpu_arch = .arm, .os_tag = .haiku, .abi = .eabi },
5658 .{ .cpu_arch = .arm, .os_tag = .haiku, .abi = .eabihf },
59 .{ .cpu_arch = .arm, .os_tag = .linux, .abi = .androideabi },
5760 .{ .cpu_arch = .arm, .os_tag = .linux, .abi = .eabi },
5861 .{ .cpu_arch = .arm, .os_tag = .linux, .abi = .eabihf },
5962 .{ .cpu_arch = .arm, .os_tag = .linux, .abi = .gnueabi },
6063 .{ .cpu_arch = .arm, .os_tag = .linux, .abi = .gnueabihf },
6164 .{ .cpu_arch = .arm, .os_tag = .linux, .abi = .musleabi },
6265 .{ .cpu_arch = .arm, .os_tag = .linux, .abi = .musleabihf },
66 .{ .cpu_arch = .arm, .os_tag = .linux, .abi = .ohoseabi },
6367 .{ .cpu_arch = .arm, .os_tag = .netbsd, .abi = .eabi },
6468 .{ .cpu_arch = .arm, .os_tag = .netbsd, .abi = .eabihf },
6569 .{ .cpu_arch = .arm, .os_tag = .openbsd, .abi = .eabi },
......@@ -223,6 +227,7 @@ const targets = [_]std.Target.Query{
223227 .{ .cpu_arch = .riscv32, .os_tag = .linux, .abi = .gnu },
224228 .{ .cpu_arch = .riscv32, .os_tag = .linux, .abi = .musl },
225229 .{ .cpu_arch = .riscv32, .os_tag = .linux, .abi = .none },
230 .{ .cpu_arch = .riscv32, .os_tag = .linux, .abi = .ohos },
226231 .{ .cpu_arch = .riscv32, .os_tag = .rtems, .abi = .none },
227232 .{ .cpu_arch = .riscv32, .os_tag = .uefi, .abi = .none },
228233
......@@ -231,9 +236,11 @@ const targets = [_]std.Target.Query{
231236 .{ .cpu_arch = .riscv64, .os_tag = .fuchsia, .abi = .none },
232237 .{ .cpu_arch = .riscv64, .os_tag = .haiku, .abi = .none },
233238 .{ .cpu_arch = .riscv64, .os_tag = .hermit, .abi = .none },
239 .{ .cpu_arch = .riscv64, .os_tag = .linux, .abi = .android },
234240 .{ .cpu_arch = .riscv64, .os_tag = .linux, .abi = .gnu },
235241 .{ .cpu_arch = .riscv64, .os_tag = .linux, .abi = .musl },
236242 .{ .cpu_arch = .riscv64, .os_tag = .linux, .abi = .none },
243 .{ .cpu_arch = .riscv64, .os_tag = .linux, .abi = .ohos },
237244 .{ .cpu_arch = .riscv64, .os_tag = .netbsd, .abi = .none },
238245 .{ .cpu_arch = .riscv64, .os_tag = .openbsd, .abi = .none },
239246 .{ .cpu_arch = .riscv64, .os_tag = .rtems, .abi = .none },
......@@ -311,9 +318,11 @@ const targets = [_]std.Target.Query{
311318 .{ .cpu_arch = .x86, .os_tag = .freestanding, .abi = .none },
312319 .{ .cpu_arch = .x86, .os_tag = .haiku, .abi = .none },
313320 .{ .cpu_arch = .x86, .os_tag = .hurd, .abi = .gnu },
321 .{ .cpu_arch = .x86, .os_tag = .linux, .abi = .android },
314322 .{ .cpu_arch = .x86, .os_tag = .linux, .abi = .gnu },
315323 .{ .cpu_arch = .x86, .os_tag = .linux, .abi = .musl },
316324 .{ .cpu_arch = .x86, .os_tag = .linux, .abi = .none },
325 .{ .cpu_arch = .x86, .os_tag = .linux, .abi = .ohos },
317326 .{ .cpu_arch = .x86, .os_tag = .netbsd, .abi = .none },
318327 .{ .cpu_arch = .x86, .os_tag = .openbsd, .abi = .none },
319328 .{ .cpu_arch = .x86, .os_tag = .rtems, .abi = .none },
......@@ -340,7 +349,13 @@ const targets = [_]std.Target.Query{
340349 .{ .cpu_arch = .x86_64, .os_tag = .illumos, .abi = .none },
341350 .{ .cpu_arch = .x86_64, .os_tag = .ios, .abi = .macabi },
342351 .{ .cpu_arch = .x86_64, .os_tag = .ios, .abi = .simulator },
352 .{ .cpu_arch = .x86_64, .os_tag = .linux, .abi = .android },
353 .{ .cpu_arch = .x86_64, .os_tag = .linux, .abi = .gnu },
354 .{ .cpu_arch = .x86_64, .os_tag = .linux, .abi = .gnux32 },
355 .{ .cpu_arch = .x86_64, .os_tag = .linux, .abi = .musl },
356 .{ .cpu_arch = .x86_64, .os_tag = .linux, .abi = .muslx32 },
343357 .{ .cpu_arch = .x86_64, .os_tag = .linux, .abi = .none },
358 .{ .cpu_arch = .x86_64, .os_tag = .linux, .abi = .ohos },
344359 .{ .cpu_arch = .x86_64, .os_tag = .macos, .abi = .none },
345360 .{ .cpu_arch = .x86_64, .os_tag = .netbsd, .abi = .none },
346361 .{ .cpu_arch = .x86_64, .os_tag = .openbsd, .abi = .none },