Skip to content

Commit

Permalink
search for include directories in imported modules (#1702)
Browse files Browse the repository at this point in the history
A Module inherited the include directories of other modules
that it has imported.
  • Loading branch information
Techatrix authored Jan 13, 2024
1 parent f726e9e commit abe83cf
Showing 1 changed file with 11 additions and 8 deletions.
19 changes: 11 additions & 8 deletions src/build_runner/master.zig
Original file line number Diff line number Diff line change
Expand Up @@ -250,22 +250,25 @@ fn processStep(
return;
};

try processPkgConfig(builder.allocator, include_dirs, exe);

if (exe.root_module.root_source_file) |src| {
if (copied_from_zig.getPath(src, builder)) |path| {
_ = try packages.addPackage("root", path);
}
}
try processIncludeDirs(builder, include_dirs, exe.root_module.include_dirs.items);
try processPkgConfig(builder.allocator, include_dirs, exe);
try processModules(builder, packages, exe.root_module.import_table);
try processModule(builder, packages, include_dirs, exe.root_module);
}

fn processModules(
fn processModule(
builder: *Build,
packages: *Packages,
modules: std.StringArrayHashMapUnmanaged(*Build.Module),
) !void {
for (modules.keys(), modules.values()) |name, mod| {
include_dirs: *std.StringArrayHashMapUnmanaged(void),
module: Build.Module,
) anyerror!void {
try processIncludeDirs(builder, include_dirs, module.include_dirs.items);

for (module.import_table.keys(), module.import_table.values()) |name, mod| {
const path = copied_from_zig.getPath(
mod.root_source_file orelse continue,
mod.owner,
Expand All @@ -275,7 +278,7 @@ fn processModules(
// if the package has already been added short circuit here or recursive modules will ruin us
if (already_added) continue;

try processModules(builder, packages, mod.import_table);
try processModule(builder, packages, include_dirs, mod.*);
}
}

Expand Down

0 comments on commit abe83cf

Please sign in to comment.