diff --git a/src/codegen/c.zig b/src/codegen/c.zig index 425663ad9cf0554f76f6ac84a2dd3177aaa6a883..589e2f17e0f379a354b2ed044f3077ec15d0dc88 100644 --- a/src/codegen/c.zig +++ b/src/codegen/c.zig @@ -26,15 +26,19 @@ fn renderType(ctx: *Context, header: *C.Header, writer: std.ArrayList(u8).Writer try writer.writeAll("zig_noreturn void"); }, .Void => try writer.writeAll("void"), + .Bool => try writer.writeAll("bool"), .Int => { if (T.tag() == .u8) { header.need_stdint = true; try writer.writeAll("uint8_t"); + } else if (T.tag() == .u32) { + header.need_stdint = true; + try writer.writeAll("uint32_t"); } else if (T.tag() == .usize) { header.need_stddef = true; try writer.writeAll("size_t"); } else { - return ctx.fail(ctx.decl.src(), "TODO implement int types", .{}); + return ctx.fail(ctx.decl.src(), "TODO implement int type {}", .{T}); } }, else => |e| return ctx.fail(ctx.decl.src(), "TODO implement type {}", .{e}), diff --git a/src/link/cbe.h b/src/link/cbe.h index 854032227d1aed97b78f359c282efecb0f5f5e8b..f35c6b8ffffb1f71678e961a2d7eeeb2b12894b1 100644 --- a/src/link/cbe.h +++ b/src/link/cbe.h @@ -1,3 +1,12 @@ +#if __STDC_VERSION__ >= 199901L +// C99 or newer +#include +#else +#define bool unsigned char +#define true 1 +#define false 0 +#endif + #if __STDC_VERSION__ >= 201112L #define zig_noreturn _Noreturn #elif __GNUC__