Commit 535d419590
Changed files (3)
src-self-hosted
src-self-hosted/clang.zig
@@ -959,3 +959,11 @@ pub const Stage2ErrorMsg = extern struct {
offset: c_uint,
};
pub extern fn ZigClangErrorMsg_delete(ptr: [*c]Stage2ErrorMsg, len: usize) void;
+
+pub extern fn ZigClangLoadFromCommandLine(
+ args_begin: [*]?[*]const u8,
+ args_end: [*]?[*]const u8,
+ errors_ptr: *[*]Stage2ErrorMsg,
+ errors_len: *usize,
+ resources_path: [*c]const u8,
+) ?*ZigClangASTUnit;
src-self-hosted/stage1.zig
@@ -88,10 +88,15 @@ export fn stage2_translate_c(
out_ast.* = translate_c.translate(args_begin, args_end, switch (mode) {
.import => translate_c.Mode.import,
.translate => translate_c.Mode.translate,
- }, &errors) catch |err| switch (err) {
+ }, &errors, resources_path) catch |err| switch (err) {
error.Unimplemented => return Error.Unimplemented,
+ error.SemanticAnalyzeFail => {
+ out_errors_ptr.* = errors.ptr;
+ out_errors_len.* = errors.len;
+ return Error.CCompileErrors;
+ },
+ error.OutOfMemory => return Error.OutOfMemory,
};
-
return Error.None;
}
src-self-hosted/translate_c.zig
@@ -17,7 +17,19 @@ pub fn translate(
args_end: [*]?[*]const u8,
mode: Mode,
errors: *[]ClangErrMsg,
+ resources_path: [*]const u8,
) !*ast.Tree {
+ const ast_unit = ZigClangLoadFromCommandLine(
+ args_begin,
+ args_end,
+ &errors.ptr,
+ &errors.len,
+ resources_path,
+ ) orelse {
+ if (errors.len == 0) return error.OutOfMemory;
+ return error.SemanticAnalyzeFail;
+ };
+
return error.Unimplemented;
}