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 {...@@ -699,7 +699,8 @@ pub fn toLLVMTriple(target: std.Target, buf: []u8) []const u8 {
699 .cygnus => "cygnus",699 .cygnus => "cygnus",
700 .simulator => "simulator",700 .simulator => "simulator",
701 .macabi => "macabi",701 .macabi => "macabi",
702 .ohos => "openhos",702 .ohos => "ohos",
703 .ohoseabi => "ohoseabi",
703 };704 };
704 writer.writeAll(llvm_abi) catch unreachable;705 writer.writeAll(llvm_abi) catch unreachable;
705 return stream.getWritten();706 return stream.getWritten();
lib/std/Target.zig+14-3
...@@ -677,6 +677,7 @@ pub const Abi = enum {...@@ -677,6 +677,7 @@ pub const Abi = enum {
677 simulator,677 simulator,
678 macabi,678 macabi,
679 ohos,679 ohos,
680 ohoseabi,
680681
681 // LLVM tags deliberately omitted:682 // LLVM tags deliberately omitted:
682 // - amplification683 // - amplification
...@@ -766,8 +767,18 @@ pub const Abi = enum {...@@ -766,8 +767,18 @@ pub const Abi = enum {
766767
767 pub inline fn isMusl(abi: Abi) bool {768 pub inline fn isMusl(abi: Abi) bool {
768 return switch (abi) {769 return switch (abi) {
769 .musl, .musleabi, .musleabihf, .muslx32 => true,770 .musl,
770 .ohos => true,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,
771 else => false,782 else => false,
772 };783 };
773 }784 }
...@@ -786,7 +797,7 @@ pub const Abi = enum {...@@ -786,7 +797,7 @@ pub const Abi = enum {
786 .gnueabi,797 .gnueabi,
787 .musleabi,798 .musleabi,
788 .gnusf,799 .gnusf,
789 .ohos,800 .ohoseabi,
790 => .soft,801 => .soft,
791 else => .hard,802 else => .hard,
792 };803 };
lib/std/zig/LibCDirs.zig+1
...@@ -242,6 +242,7 @@ fn libCGenericName(target: std.Target) [:0]const u8 {...@@ -242,6 +242,7 @@ fn libCGenericName(target: std.Target) [:0]const u8 {
242 .muslx32,242 .muslx32,
243 .none,243 .none,
244 .ohos,244 .ohos,
245 .ohoseabi,
245 => return "musl",246 => return "musl",
246 .code16,247 .code16,
247 .eabi,248 .eabi,
src/codegen/llvm.zig+1
...@@ -255,6 +255,7 @@ pub fn targetTriple(allocator: Allocator, target: std.Target) ![]const u8 {...@@ -255,6 +255,7 @@ pub fn targetTriple(allocator: Allocator, target: std.Target) ![]const u8 {
255 .simulator => "simulator",255 .simulator => "simulator",
256 .macabi => "macabi",256 .macabi => "macabi",
257 .ohos => "ohos",257 .ohos => "ohos",
258 .ohoseabi => "ohoseabi",
258 };259 };
259 try llvm_triple.appendSlice(llvm_abi);260 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 {...@@ -45,8 +45,7 @@ pub fn requiresPIC(target: std.Target, linking_libc: bool) bool {
45 return target.isAndroid() or45 return target.isAndroid() or
46 target.os.tag == .windows or target.os.tag == .uefi or46 target.os.tag == .windows or target.os.tag == .uefi or
47 osRequiresLibC(target) or47 osRequiresLibC(target) or
48 (linking_libc and target.isGnuLibC()) or48 (linking_libc and target.isGnuLibC());
49 (target.abi == .ohos and target.cpu.arch == .aarch64);
50}49}
5150
52pub fn picLevel(target: std.Target) u32 {51pub fn picLevel(target: std.Target) u32 {
...@@ -306,7 +305,7 @@ pub fn libcFullLinkFlags(target: std.Target) []const []const u8 {...@@ -306,7 +305,7 @@ pub fn libcFullLinkFlags(target: std.Target) []const []const u8 {
306 "-lc",305 "-lc",
307 "-lnetwork",306 "-lnetwork",
308 },307 },
309 else => if (target.isAndroid()) &[_][]const u8{308 else => if (target.isAndroid() or target.abi.isOpenHarmony()) &[_][]const u8{
310 "-lm",309 "-lm",
311 "-lc",310 "-lc",
312 "-ldl",311 "-ldl",
test/llvm_targets.zig+15
...@@ -13,9 +13,11 @@ const targets = [_]std.Target.Query{...@@ -13,9 +13,11 @@ const targets = [_]std.Target.Query{
13 .{ .cpu_arch = .aarch64, .os_tag = .ios, .abi = .macabi },13 .{ .cpu_arch = .aarch64, .os_tag = .ios, .abi = .macabi },
14 .{ .cpu_arch = .aarch64, .os_tag = .ios, .abi = .none },14 .{ .cpu_arch = .aarch64, .os_tag = .ios, .abi = .none },
15 .{ .cpu_arch = .aarch64, .os_tag = .ios, .abi = .simulator },15 .{ .cpu_arch = .aarch64, .os_tag = .ios, .abi = .simulator },
16 .{ .cpu_arch = .aarch64, .os_tag = .linux, .abi = .android },
16 .{ .cpu_arch = .aarch64, .os_tag = .linux, .abi = .gnu },17 .{ .cpu_arch = .aarch64, .os_tag = .linux, .abi = .gnu },
17 .{ .cpu_arch = .aarch64, .os_tag = .linux, .abi = .gnuilp32 },18 .{ .cpu_arch = .aarch64, .os_tag = .linux, .abi = .gnuilp32 },
18 .{ .cpu_arch = .aarch64, .os_tag = .linux, .abi = .none },19 .{ .cpu_arch = .aarch64, .os_tag = .linux, .abi = .none },
20 .{ .cpu_arch = .aarch64, .os_tag = .linux, .abi = .ohos },
19 .{ .cpu_arch = .aarch64, .os_tag = .macos, .abi = .none },21 .{ .cpu_arch = .aarch64, .os_tag = .macos, .abi = .none },
20 .{ .cpu_arch = .aarch64, .os_tag = .netbsd, .abi = .none },22 .{ .cpu_arch = .aarch64, .os_tag = .netbsd, .abi = .none },
21 .{ .cpu_arch = .aarch64, .os_tag = .openbsd, .abi = .none },23 .{ .cpu_arch = .aarch64, .os_tag = .openbsd, .abi = .none },
...@@ -54,12 +56,14 @@ const targets = [_]std.Target.Query{...@@ -54,12 +56,14 @@ const targets = [_]std.Target.Query{
54 .{ .cpu_arch = .arm, .os_tag = .freestanding, .abi = .eabihf },56 .{ .cpu_arch = .arm, .os_tag = .freestanding, .abi = .eabihf },
55 .{ .cpu_arch = .arm, .os_tag = .haiku, .abi = .eabi },57 .{ .cpu_arch = .arm, .os_tag = .haiku, .abi = .eabi },
56 .{ .cpu_arch = .arm, .os_tag = .haiku, .abi = .eabihf },58 .{ .cpu_arch = .arm, .os_tag = .haiku, .abi = .eabihf },
59 .{ .cpu_arch = .arm, .os_tag = .linux, .abi = .androideabi },
57 .{ .cpu_arch = .arm, .os_tag = .linux, .abi = .eabi },60 .{ .cpu_arch = .arm, .os_tag = .linux, .abi = .eabi },
58 .{ .cpu_arch = .arm, .os_tag = .linux, .abi = .eabihf },61 .{ .cpu_arch = .arm, .os_tag = .linux, .abi = .eabihf },
59 .{ .cpu_arch = .arm, .os_tag = .linux, .abi = .gnueabi },62 .{ .cpu_arch = .arm, .os_tag = .linux, .abi = .gnueabi },
60 .{ .cpu_arch = .arm, .os_tag = .linux, .abi = .gnueabihf },63 .{ .cpu_arch = .arm, .os_tag = .linux, .abi = .gnueabihf },
61 .{ .cpu_arch = .arm, .os_tag = .linux, .abi = .musleabi },64 .{ .cpu_arch = .arm, .os_tag = .linux, .abi = .musleabi },
62 .{ .cpu_arch = .arm, .os_tag = .linux, .abi = .musleabihf },65 .{ .cpu_arch = .arm, .os_tag = .linux, .abi = .musleabihf },
66 .{ .cpu_arch = .arm, .os_tag = .linux, .abi = .ohoseabi },
63 .{ .cpu_arch = .arm, .os_tag = .netbsd, .abi = .eabi },67 .{ .cpu_arch = .arm, .os_tag = .netbsd, .abi = .eabi },
64 .{ .cpu_arch = .arm, .os_tag = .netbsd, .abi = .eabihf },68 .{ .cpu_arch = .arm, .os_tag = .netbsd, .abi = .eabihf },
65 .{ .cpu_arch = .arm, .os_tag = .openbsd, .abi = .eabi },69 .{ .cpu_arch = .arm, .os_tag = .openbsd, .abi = .eabi },
...@@ -223,6 +227,7 @@ const targets = [_]std.Target.Query{...@@ -223,6 +227,7 @@ const targets = [_]std.Target.Query{
223 .{ .cpu_arch = .riscv32, .os_tag = .linux, .abi = .gnu },227 .{ .cpu_arch = .riscv32, .os_tag = .linux, .abi = .gnu },
224 .{ .cpu_arch = .riscv32, .os_tag = .linux, .abi = .musl },228 .{ .cpu_arch = .riscv32, .os_tag = .linux, .abi = .musl },
225 .{ .cpu_arch = .riscv32, .os_tag = .linux, .abi = .none },229 .{ .cpu_arch = .riscv32, .os_tag = .linux, .abi = .none },
230 .{ .cpu_arch = .riscv32, .os_tag = .linux, .abi = .ohos },
226 .{ .cpu_arch = .riscv32, .os_tag = .rtems, .abi = .none },231 .{ .cpu_arch = .riscv32, .os_tag = .rtems, .abi = .none },
227 .{ .cpu_arch = .riscv32, .os_tag = .uefi, .abi = .none },232 .{ .cpu_arch = .riscv32, .os_tag = .uefi, .abi = .none },
228233
...@@ -231,9 +236,11 @@ const targets = [_]std.Target.Query{...@@ -231,9 +236,11 @@ const targets = [_]std.Target.Query{
231 .{ .cpu_arch = .riscv64, .os_tag = .fuchsia, .abi = .none },236 .{ .cpu_arch = .riscv64, .os_tag = .fuchsia, .abi = .none },
232 .{ .cpu_arch = .riscv64, .os_tag = .haiku, .abi = .none },237 .{ .cpu_arch = .riscv64, .os_tag = .haiku, .abi = .none },
233 .{ .cpu_arch = .riscv64, .os_tag = .hermit, .abi = .none },238 .{ .cpu_arch = .riscv64, .os_tag = .hermit, .abi = .none },
239 .{ .cpu_arch = .riscv64, .os_tag = .linux, .abi = .android },
234 .{ .cpu_arch = .riscv64, .os_tag = .linux, .abi = .gnu },240 .{ .cpu_arch = .riscv64, .os_tag = .linux, .abi = .gnu },
235 .{ .cpu_arch = .riscv64, .os_tag = .linux, .abi = .musl },241 .{ .cpu_arch = .riscv64, .os_tag = .linux, .abi = .musl },
236 .{ .cpu_arch = .riscv64, .os_tag = .linux, .abi = .none },242 .{ .cpu_arch = .riscv64, .os_tag = .linux, .abi = .none },
243 .{ .cpu_arch = .riscv64, .os_tag = .linux, .abi = .ohos },
237 .{ .cpu_arch = .riscv64, .os_tag = .netbsd, .abi = .none },244 .{ .cpu_arch = .riscv64, .os_tag = .netbsd, .abi = .none },
238 .{ .cpu_arch = .riscv64, .os_tag = .openbsd, .abi = .none },245 .{ .cpu_arch = .riscv64, .os_tag = .openbsd, .abi = .none },
239 .{ .cpu_arch = .riscv64, .os_tag = .rtems, .abi = .none },246 .{ .cpu_arch = .riscv64, .os_tag = .rtems, .abi = .none },
...@@ -311,9 +318,11 @@ const targets = [_]std.Target.Query{...@@ -311,9 +318,11 @@ const targets = [_]std.Target.Query{
311 .{ .cpu_arch = .x86, .os_tag = .freestanding, .abi = .none },318 .{ .cpu_arch = .x86, .os_tag = .freestanding, .abi = .none },
312 .{ .cpu_arch = .x86, .os_tag = .haiku, .abi = .none },319 .{ .cpu_arch = .x86, .os_tag = .haiku, .abi = .none },
313 .{ .cpu_arch = .x86, .os_tag = .hurd, .abi = .gnu },320 .{ .cpu_arch = .x86, .os_tag = .hurd, .abi = .gnu },
321 .{ .cpu_arch = .x86, .os_tag = .linux, .abi = .android },
314 .{ .cpu_arch = .x86, .os_tag = .linux, .abi = .gnu },322 .{ .cpu_arch = .x86, .os_tag = .linux, .abi = .gnu },
315 .{ .cpu_arch = .x86, .os_tag = .linux, .abi = .musl },323 .{ .cpu_arch = .x86, .os_tag = .linux, .abi = .musl },
316 .{ .cpu_arch = .x86, .os_tag = .linux, .abi = .none },324 .{ .cpu_arch = .x86, .os_tag = .linux, .abi = .none },
325 .{ .cpu_arch = .x86, .os_tag = .linux, .abi = .ohos },
317 .{ .cpu_arch = .x86, .os_tag = .netbsd, .abi = .none },326 .{ .cpu_arch = .x86, .os_tag = .netbsd, .abi = .none },
318 .{ .cpu_arch = .x86, .os_tag = .openbsd, .abi = .none },327 .{ .cpu_arch = .x86, .os_tag = .openbsd, .abi = .none },
319 .{ .cpu_arch = .x86, .os_tag = .rtems, .abi = .none },328 .{ .cpu_arch = .x86, .os_tag = .rtems, .abi = .none },
...@@ -340,7 +349,13 @@ const targets = [_]std.Target.Query{...@@ -340,7 +349,13 @@ const targets = [_]std.Target.Query{
340 .{ .cpu_arch = .x86_64, .os_tag = .illumos, .abi = .none },349 .{ .cpu_arch = .x86_64, .os_tag = .illumos, .abi = .none },
341 .{ .cpu_arch = .x86_64, .os_tag = .ios, .abi = .macabi },350 .{ .cpu_arch = .x86_64, .os_tag = .ios, .abi = .macabi },
342 .{ .cpu_arch = .x86_64, .os_tag = .ios, .abi = .simulator },351 .{ .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 },
343 .{ .cpu_arch = .x86_64, .os_tag = .linux, .abi = .none },357 .{ .cpu_arch = .x86_64, .os_tag = .linux, .abi = .none },
358 .{ .cpu_arch = .x86_64, .os_tag = .linux, .abi = .ohos },
344 .{ .cpu_arch = .x86_64, .os_tag = .macos, .abi = .none },359 .{ .cpu_arch = .x86_64, .os_tag = .macos, .abi = .none },
345 .{ .cpu_arch = .x86_64, .os_tag = .netbsd, .abi = .none },360 .{ .cpu_arch = .x86_64, .os_tag = .netbsd, .abi = .none },
346 .{ .cpu_arch = .x86_64, .os_tag = .openbsd, .abi = .none },361 .{ .cpu_arch = .x86_64, .os_tag = .openbsd, .abi = .none },