Skip to content

Commit ece265b

Browse files
authored
Merge pull request #21605 from alexrp/ohos-stuff
`std.Target`: Introduce `Abi.ohoseabi` to distinguish the soft float case.
2 parents be5378b + 1992428 commit ece265b

File tree

6 files changed

+35
-7
lines changed

6 files changed

+35
-7
lines changed

lib/compiler/aro/aro/target.zig

+2-1
Original file line numberDiff line numberDiff line change
@@ -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
Original file line numberDiff line numberDiff line change
@@ -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
Original file line numberDiff line numberDiff line change
@@ -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
Original file line numberDiff line numberDiff line change
@@ -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
Original file line numberDiff line numberDiff line change
@@ -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

5251
pub 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
Original file line numberDiff line numberDiff line change
@@ -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 },

0 commit comments

Comments
 (0)