| 1 | const builtin = @import("builtin"); |
| 2 | |
| 3 | const std = @import("std"); |
| 4 | const intmax_t = std.c.intmax_t; |
| 5 | const imaxdiv_t = std.c.imaxdiv_t; |
| 6 | |
| 7 | const symbol = @import("../c.zig").symbol; |
| 8 | |
| 9 | comptime { |
| 10 | if (builtin.target.isMuslLibC() or builtin.target.isWasiLibC()) { |
| 11 | // Functions specific to musl and wasi-libc. |
| 12 | symbol(&imaxabs, "imaxabs"); |
| 13 | symbol(&imaxdiv, "imaxdiv"); |
| 14 | } |
| 15 | } |
| 16 | |
| 17 | fn imaxabs(a: intmax_t) callconv(.c) intmax_t { |
| 18 | return @intCast(@abs(a)); |
| 19 | } |
| 20 | |
| 21 | fn imaxdiv(a: intmax_t, b: intmax_t) callconv(.c) imaxdiv_t { |
| 22 | return .{ |
| 23 | .quot = @divTrunc(a, b), |
| 24 | .rem = @rem(a, b), |
| 25 | }; |
| 26 | } |