authorgravatar for kubkon@jakubkonka.comJakub Konka <kubkon@jakubkonka.com> 2023-08-14 16:23:43+02:00
committergravatar for kubkon@jakubkonka.comJakub Konka <kubkon@jakubkonka.com> 2023-08-18 08:00:40+02:00
log6a9fd55809298ca99fcb62df2b52b120b2d8c4a4
tree7e4e46098968f7f76f82cfb249be828ebec1a56b
parent7ef1eb1c27754cb0349fdc10db1f02ff2dddd99b

cc: disambiguate includes with sysroot in ClangSearchSanitizer

This noninvasive change improves warning messages for mixing up paths between `-iwithsysroot` and `-iframeworkwithsysroot`.

1 files changed, 19 insertions(+), 3 deletions(-)

src/main.zig+19-3
...@@ -1156,12 +1156,16 @@ fn buildOutputType(...@@ -1156,12 +1156,16 @@ fn buildOutputType(
1156 try clang_argv.append(args_iter.nextOrFatal());1156 try clang_argv.append(args_iter.nextOrFatal());
1157 } else if (mem.eql(u8, arg, "-I")) {1157 } else if (mem.eql(u8, arg, "-I")) {
1158 try cssan.addIncludePath(.I, arg, args_iter.nextOrFatal(), false);1158 try cssan.addIncludePath(.I, arg, args_iter.nextOrFatal(), false);
1159 } else if (mem.eql(u8, arg, "-isystem") or mem.eql(u8, arg, "-iwithsysroot")) {1159 } else if (mem.eql(u8, arg, "-isystem")) {
1160 try cssan.addIncludePath(.isystem, arg, args_iter.nextOrFatal(), false);1160 try cssan.addIncludePath(.isystem, arg, args_iter.nextOrFatal(), false);
1161 } else if (mem.eql(u8, arg, "-iwithsysroot")) {
1162 try cssan.addIncludePath(.iwithsysroot, arg, args_iter.nextOrFatal(), false);
1161 } else if (mem.eql(u8, arg, "-idirafter")) {1163 } else if (mem.eql(u8, arg, "-idirafter")) {
1162 try cssan.addIncludePath(.idirafter, arg, args_iter.nextOrFatal(), false);1164 try cssan.addIncludePath(.idirafter, arg, args_iter.nextOrFatal(), false);
1163 } else if (mem.eql(u8, arg, "-iframework") or mem.eql(u8, arg, "-iframeworkwithsysroot")) {1165 } else if (mem.eql(u8, arg, "-iframework")) {
1164 try cssan.addIncludePath(.iframework, arg, args_iter.nextOrFatal(), false);1166 try cssan.addIncludePath(.iframework, arg, args_iter.nextOrFatal(), false);
1167 } else if (mem.eql(u8, arg, "-iframeworkwithsysroot")) {
1168 try cssan.addIncludePath(.iframeworkwithsysroot, arg, args_iter.nextOrFatal(), false);
1165 } else if (mem.eql(u8, arg, "--version")) {1169 } else if (mem.eql(u8, arg, "--version")) {
1166 const next_arg = args_iter.nextOrFatal();1170 const next_arg = args_iter.nextOrFatal();
1167 version = std.SemanticVersion.parse(next_arg) catch |err| {1171 version = std.SemanticVersion.parse(next_arg) catch |err| {
...@@ -6191,6 +6195,11 @@ const ClangSearchSanitizer = struct {...@@ -6191,6 +6195,11 @@ const ClangSearchSanitizer = struct {
6191 if (m.idirafter) std.log.warn(wtxt, .{ dir, "isystem", "idirafter" });6195 if (m.idirafter) std.log.warn(wtxt, .{ dir, "isystem", "idirafter" });
6192 if (m.iframework) std.log.warn(wtxt, .{ dir, "isystem", "iframework" });6196 if (m.iframework) std.log.warn(wtxt, .{ dir, "isystem", "iframework" });
6193 },6197 },
6198 .iwithsysroot => {
6199 if (m.iwithsysroot) return;
6200 m.iwithsysroot = true;
6201 if (m.iframeworkwithsysroot) std.log.warn(wtxt, .{ dir, "iwithsysroot", "iframeworkwithsysroot" });
6202 },
6194 .idirafter => {6203 .idirafter => {
6195 if (m.idirafter) return;6204 if (m.idirafter) return;
6196 m.idirafter = true;6205 m.idirafter = true;
...@@ -6205,18 +6214,25 @@ const ClangSearchSanitizer = struct {...@@ -6205,18 +6214,25 @@ const ClangSearchSanitizer = struct {
6205 if (m.isystem) std.log.warn(wtxt, .{ dir, "iframework", "isystem" });6214 if (m.isystem) std.log.warn(wtxt, .{ dir, "iframework", "isystem" });
6206 if (m.idirafter) std.log.warn(wtxt, .{ dir, "iframework", "idirafter" });6215 if (m.idirafter) std.log.warn(wtxt, .{ dir, "iframework", "idirafter" });
6207 },6216 },
6217 .iframeworkwithsysroot => {
6218 if (m.iframeworkwithsysroot) return;
6219 m.iframeworkwithsysroot = true;
6220 if (m.iwithsysroot) std.log.warn(wtxt, .{ dir, "iframeworkwithsysroot", "iwithsysroot" });
6221 },
6208 }6222 }
6209 try self.argv.append(arg);6223 try self.argv.append(arg);
6210 if (!joined) try self.argv.append(dir);6224 if (!joined) try self.argv.append(dir);
6211 }6225 }
62126226
6213 const Group = enum { I, isystem, idirafter, iframework };6227 const Group = enum { I, isystem, iwithsysroot, idirafter, iframework, iframeworkwithsysroot };
62146228
6215 const Membership = packed struct {6229 const Membership = packed struct {
6216 I: bool = false,6230 I: bool = false,
6217 isystem: bool = false,6231 isystem: bool = false,
6232 iwithsysroot: bool = false,
6218 idirafter: bool = false,6233 idirafter: bool = false,
6219 iframework: bool = false,6234 iframework: bool = false,
6235 iframeworkwithsysroot: bool = false,
6220 };6236 };
6221};6237};
62226238