| ... | @@ -1471,6 +1471,8 @@ pub const ClangPreprocessorMode = enum { | ... | @@ -1471,6 +1471,8 @@ pub const ClangPreprocessorMode = enum { |
| 1471 | stdout, | 1471 | stdout, |
| 1472 | /// precompiled C header | 1472 | /// precompiled C header |
| 1473 | pch, | 1473 | pch, |
| | 1474 | /// `--version` |
| | 1475 | version, |
| 1474 | }; | 1476 | }; |
| 1475 | | 1477 | |
| 1476 | pub const Framework = link.File.MachO.Framework; | 1478 | pub const Framework = link.File.MachO.Framework; |
| ... | @@ -2936,16 +2938,16 @@ pub fn update(comp: *Compilation, main_progress_node: std.Progress.Node) UpdateE | ... | @@ -2936,16 +2938,16 @@ pub fn update(comp: *Compilation, main_progress_node: std.Progress.Node) UpdateE |
| 2936 | .none => unreachable, | 2938 | .none => unreachable, |
| 2937 | .manifest_create, .manifest_read, .manifest_lock => |e| return comp.setMiscFailure( | 2939 | .manifest_create, .manifest_read, .manifest_lock => |e| return comp.setMiscFailure( |
| 2938 | .check_whole_cache, | 2940 | .check_whole_cache, |
| 2939 | "failed to check cache: {s} {s}", | 2941 | "failed to check cache: {t} {t}", |
| 2940 | .{ @tagName(man.diagnostic), @errorName(e) }, | 2942 | .{ man.diagnostic, e }, |
| 2941 | ), | 2943 | ), |
| 2942 | .file_open, .file_stat, .file_read, .file_hash => |op| { | 2944 | .file_open, .file_stat, .file_read, .file_hash => |op| { |
| 2943 | const pp = man.files.keys()[op.file_index].prefixed_path; | 2945 | const pp = man.files.keys()[op.file_index].prefixed_path; |
| 2944 | const prefix = man.cache.prefixes()[pp.prefix]; | 2946 | const prefix = man.cache.prefixes()[pp.prefix]; |
| 2945 | return comp.setMiscFailure( | 2947 | return comp.setMiscFailure( |
| 2946 | .check_whole_cache, | 2948 | .check_whole_cache, |
| 2947 | "failed to check cache: '{f}{s}' {s} {s}", | 2949 | "failed to check cache: '{f}{s}' {t} {t}", |
| 2948 | .{ prefix, pp.sub_path, @tagName(man.diagnostic), @errorName(op.err) }, | 2950 | .{ prefix, pp.sub_path, man.diagnostic, op.err }, |
| 2949 | ); | 2951 | ); |
| 2950 | }, | 2952 | }, |
| 2951 | }, | 2953 | }, |
| ... | @@ -5739,6 +5741,7 @@ fn updateCObject(comp: *Compilation, c_object: *CObject, c_obj_prog_node: std.Pr | ... | @@ -5739,6 +5741,7 @@ fn updateCObject(comp: *Compilation, c_object: *CObject, c_obj_prog_node: std.Pr |
| 5739 | .yes => argv.appendSliceAssumeCapacity(&.{ "-E", "-o", out_obj_path }), | 5741 | .yes => argv.appendSliceAssumeCapacity(&.{ "-E", "-o", out_obj_path }), |
| 5740 | .pch => argv.appendSliceAssumeCapacity(&.{ "-Xclang", "-emit-pch", "-o", out_obj_path }), | 5742 | .pch => argv.appendSliceAssumeCapacity(&.{ "-Xclang", "-emit-pch", "-o", out_obj_path }), |
| 5741 | .stdout => argv.appendAssumeCapacity("-E"), | 5743 | .stdout => argv.appendAssumeCapacity("-E"), |
| | 5744 | .version => argv.appendAssumeCapacity("--version"), |
| 5742 | } | 5745 | } |
| 5743 | | 5746 | |
| 5744 | if (comp.emit_asm != null) { | 5747 | if (comp.emit_asm != null) { |
| ... | @@ -5782,6 +5785,7 @@ fn updateCObject(comp: *Compilation, c_object: *CObject, c_obj_prog_node: std.Pr | ... | @@ -5782,6 +5785,7 @@ fn updateCObject(comp: *Compilation, c_object: *CObject, c_obj_prog_node: std.Pr |
| 5782 | .yes => argv.appendSliceAssumeCapacity(&.{ "-E", "-o", out_obj_path }), | 5785 | .yes => argv.appendSliceAssumeCapacity(&.{ "-E", "-o", out_obj_path }), |
| 5783 | .pch => argv.appendSliceAssumeCapacity(&.{ "-Xclang", "-emit-pch", "-o", out_obj_path }), | 5786 | .pch => argv.appendSliceAssumeCapacity(&.{ "-Xclang", "-emit-pch", "-o", out_obj_path }), |
| 5784 | .stdout => argv.appendAssumeCapacity("-E"), | 5787 | .stdout => argv.appendAssumeCapacity("-E"), |
| | 5788 | .version => argv.appendAssumeCapacity("--version"), |
| 5785 | } | 5789 | } |
| 5786 | if (out_diag_path) |diag_file_path| { | 5790 | if (out_diag_path) |diag_file_path| { |
| 5787 | argv.appendSliceAssumeCapacity(&.{ "--serialize-diagnostics", diag_file_path }); | 5791 | argv.appendSliceAssumeCapacity(&.{ "--serialize-diagnostics", diag_file_path }); |
| ... | @@ -5830,8 +5834,10 @@ fn updateCObject(comp: *Compilation, c_object: *CObject, c_obj_prog_node: std.Pr | ... | @@ -5830,8 +5834,10 @@ fn updateCObject(comp: *Compilation, c_object: *CObject, c_obj_prog_node: std.Pr |
| 5830 | if (code != 0) { | 5834 | if (code != 0) { |
| 5831 | std.process.exit(code); | 5835 | std.process.exit(code); |
| 5832 | } | 5836 | } |
| 5833 | if (comp.clang_preprocessor_mode == .stdout) | 5837 | switch (comp.clang_preprocessor_mode) { |
| 5834 | std.process.exit(0); | 5838 | .stdout, .version => std.process.exit(0), |
| | 5839 | else => {}, |
| | 5840 | } |
| 5835 | }, | 5841 | }, |
| 5836 | else => std.process.abort(), | 5842 | else => std.process.abort(), |
| 5837 | } | 5843 | } |
| ... | @@ -5879,11 +5885,10 @@ fn updateCObject(comp: *Compilation, c_object: *CObject, c_obj_prog_node: std.Pr | ... | @@ -5879,11 +5885,10 @@ fn updateCObject(comp: *Compilation, c_object: *CObject, c_obj_prog_node: std.Pr |
| 5879 | return comp.failCObj(c_object, "clang exited with code {d}", .{exit_code}); | 5885 | return comp.failCObj(c_object, "clang exited with code {d}", .{exit_code}); |
| 5880 | } | 5886 | } |
| 5881 | } | 5887 | } |
| 5882 | if (comp.clang_passthrough_mode and | 5888 | if (comp.clang_passthrough_mode) switch (comp.clang_preprocessor_mode) { |
| 5883 | comp.clang_preprocessor_mode == .stdout) | 5889 | .stdout, .version => std.process.exit(0), |
| 5884 | { | 5890 | else => {}, |
| 5885 | std.process.exit(0); | 5891 | }; |
| 5886 | } | | |
| 5887 | } | 5892 | } |
| 5888 | | 5893 | |
| 5889 | if (out_dep_path) |dep_file_path| { | 5894 | if (out_dep_path) |dep_file_path| { |