zig

fork of https://codeberg.org/ziglang/zig
Log | Files | Refs | README | LICENSE

commit ffb989169594cbfcfefbbcc00dd7c3d07f1a9949 (tree)
parent 62a6d83da11553daadb7d463330571f361c771d8
Author: Andrew Gutekanst <andrew.gutekanst@gmail.com>
Date:   Sun, 12 Sep 2021 19:35:03 -0400

Fix same issue with dir/sysroot dir concatenation with includes on Windows

Diffstat:
Mlib/std/build.zig | 17++++++++++++++++-
1 file changed, 16 insertions(+), 1 deletion(-)

diff --git a/lib/std/build.zig b/lib/std/build.zig @@ -2549,7 +2549,22 @@ pub const LibExeObjStep = struct { } else { try zig_args.append("-isystem"); } - try zig_args.append(self.builder.pathFromRoot(include_path)); + + const resolved_include_path = self.builder.pathFromRoot(include_path); + + const common_include_path = if (std.Target.current.os.tag == .windows and builder.sysroot != null and fs.path.isAbsolute(resolved_include_path)) blk: { + // We need to check for disk designator and strip it out from dir path so + // that zig/clang can concat resolved_include_path with sysroot. + const disk_designator = fs.path.diskDesignatorWindows(resolved_include_path); + + if (mem.indexOf(u8, resolved_include_path, disk_designator)) |where| { + break :blk resolved_include_path[where + disk_designator.len ..]; + } + + break :blk resolved_include_path; + } else resolved_include_path; + + try zig_args.append(common_include_path); }, .other_step => |other| if (other.emit_h) { const h_path = other.getOutputHSource().getPath(self.builder);