From 6bd4d91932ea3449b4104e8aaad9b7e7178ed6e2 Mon Sep 17 00:00:00 2001 From: Stephen Gutekanst Date: Wed, 15 Mar 2023 21:20:28 -0700 Subject: [PATCH] all: cache module() returns to avoid duplicate modules Signed-off-by: Stephen Gutekanst --- build.zig | 6 +++++- libs/basisu/build.zig | 6 +++++- libs/core/sdk.zig | 7 ++++++- libs/dusk/build.zig | 10 ++++++++-- libs/earcut/build.zig | 6 +++++- libs/ecs/build.zig | 6 +++++- libs/freetype/build.zig | 12 ++++++++++-- libs/gamemode/build.zig | 6 +++++- libs/glfw/build.zig | 6 +++++- libs/gpu/sdk.zig | 6 +++++- libs/model3d/build.zig | 6 +++++- libs/sysaudio/sdk.zig | 6 +++++- libs/sysjs/build.zig | 6 +++++- shaderexp/main.zig | 3 +-- 14 files changed, 75 insertions(+), 17 deletions(-) diff --git a/build.zig b/build.zig index 2807cdab..c8326bc7 100644 --- a/build.zig +++ b/build.zig @@ -31,8 +31,11 @@ const core = @import("libs/core/sdk.zig").Sdk(.{ .sysjs = sysjs, }); +var _module: ?*std.build.Module = null; + pub fn module(b: *std.Build) *std.build.Module { - return b.createModule(.{ + if (_module) |m| return m; + _module = b.createModule(.{ .source_file = .{ .path = sdkPath("/src/main.zig") }, .dependencies = &.{ .{ .name = "core", .module = core.module(b) }, @@ -41,6 +44,7 @@ pub fn module(b: *std.Build) *std.build.Module { .{ .name = "earcut", .module = earcut.module(b) }, }, }); + return _module.?; } pub const Options = struct { diff --git a/libs/basisu/build.zig b/libs/basisu/build.zig index 0a00c587..295b52bb 100644 --- a/libs/basisu/build.zig +++ b/libs/basisu/build.zig @@ -3,12 +3,16 @@ const Build = std.Build; const basisu_root = sdkPath("/upstream/basisu"); +var _module: ?*std.build.Module = null; + pub fn module(b: *std.Build) *std.build.Module { - return b.createModule(.{ + if (_module) |m| return m; + _module = b.createModule(.{ .source = .{ .path = "src/main.zig", }, }); + return _module.?; } pub const Options = struct { diff --git a/libs/core/sdk.zig b/libs/core/sdk.zig index c10fbc9a..df5acb48 100644 --- a/libs/core/sdk.zig +++ b/libs/core/sdk.zig @@ -13,13 +13,18 @@ pub fn Sdk(comptime deps: anytype) type { } }; + var _module: ?*std.build.Module = null; + pub fn module(b: *std.Build) *std.build.Module { - return b.createModule(.{ + if (_module) |m| return m; + _module = b.createModule(.{ .source_file = .{ .path = sdkPath("/src/main.zig") }, .dependencies = &.{ .{ .name = "gpu", .module = deps.gpu.module(b) }, + .{ .name = "glfw", .module = deps.glfw.module(b) }, }, }); + return _module.?; } pub fn testStep(b: *std.Build, optimize: std.builtin.OptimizeMode, target: std.zig.CrossTarget) !*std.build.RunStep { diff --git a/libs/dusk/build.zig b/libs/dusk/build.zig index e195758a..49c79fbf 100644 --- a/libs/dusk/build.zig +++ b/libs/dusk/build.zig @@ -8,8 +8,14 @@ pub fn build(b: *std.Build) !void { test_step.dependOn(&testStep(b, optimize, target).step); } -pub fn module(b: *std.build.Builder) *std.build.Module { - return b.createModule(.{ .source_file = .{ .path = sdkPath("/src/main.zig") } }); +var _module: ?*std.build.Module = null; + +pub fn module(b: *std.Build) *std.build.Module { + if (_module) |m| return m; + _module = b.createModule(.{ + .source_file = .{ .path = sdkPath("/src/main.zig") }, + }); + return _module.?; } pub fn testStep(b: *std.Build, optimize: std.builtin.OptimizeMode, target: std.zig.CrossTarget) *std.build.RunStep { diff --git a/libs/earcut/build.zig b/libs/earcut/build.zig index e9c9f957..eb5da118 100644 --- a/libs/earcut/build.zig +++ b/libs/earcut/build.zig @@ -25,10 +25,14 @@ pub fn build(b: *std.Build) void { _ = module(b); } +var _module: ?*std.build.Module = null; + pub fn module(b: *std.Build) *std.build.Module { - return b.createModule(.{ + if (_module) |m| return m; + _module = b.createModule(.{ .source_file = .{ .path = sdkPath("/src/main.zig") }, }); + return _module.?; } fn sdkPath(comptime suffix: []const u8) []const u8 { diff --git a/libs/ecs/build.zig b/libs/ecs/build.zig index f4860a88..6772588f 100644 --- a/libs/ecs/build.zig +++ b/libs/ecs/build.zig @@ -1,9 +1,13 @@ const std = @import("std"); +var _module: ?*std.build.Module = null; + pub fn module(b: *std.Build) *std.build.Module { - return b.createModule(.{ + if (_module) |m| return m; + _module = b.createModule(.{ .source_file = .{ .path = sdkPath("/src/main.zig") }, }); + return _module.?; } pub fn build(b: *std.Build) void { diff --git a/libs/freetype/build.zig b/libs/freetype/build.zig index f9cd7982..7df0c7bd 100644 --- a/libs/freetype/build.zig +++ b/libs/freetype/build.zig @@ -7,19 +7,27 @@ const hb_root = sdkPath("/upstream/harfbuzz"); const hb_include_path = hb_root ++ "/src"; const brotli_root = sdkPath("/upstream/brotli"); +var _module: ?*std.build.Module = null; + pub fn module(b: *std.Build) *std.build.Module { - return b.createModule(.{ + if (_module) |m| return m; + _module = b.createModule(.{ .source_file = .{ .path = sdkPath("/src/main.zig") }, }); + return _module.?; } +var _harfbuzz_module: ?*std.build.Module = null; + pub fn harfbuzzModule(b: *std.Build) *std.build.Module { - return b.createModule(.{ + if (_harfbuzz_module) |m| return m; + _harfbuzz_module = b.createModule(.{ .source_file = .{ .path = sdkPath("/src/harfbuzz/main.zig") }, .dependencies = &.{ .{ .name = "freetype", .module = module(b) }, }, }); + return _harfbuzz_module.?; } pub const Options = struct { diff --git a/libs/gamemode/build.zig b/libs/gamemode/build.zig index 756aff56..770300b7 100644 --- a/libs/gamemode/build.zig +++ b/libs/gamemode/build.zig @@ -1,9 +1,13 @@ const std = @import("std"); +var _module: ?*std.build.Module = null; + pub fn module(b: *std.Build) *std.build.Module { - return b.createModule(.{ + if (_module) |m| return m; + _module = b.createModule(.{ .source_file = .{ .path = sdkPath("/src/main.zig") }, }); + return _module.?; } pub fn link(step: *std.build.CompileStep) void { diff --git a/libs/glfw/build.zig b/libs/glfw/build.zig index 4f842bb0..3d07ac30 100644 --- a/libs/glfw/build.zig +++ b/libs/glfw/build.zig @@ -69,10 +69,14 @@ pub const Options = struct { install_libs: bool = false, }; +var _module: ?*std.build.Module = null; + pub fn module(b: *std.Build) *std.build.Module { - return b.createModule(.{ + if (_module) |m| return m; + _module = b.createModule(.{ .source_file = .{ .path = sdkPath("/src/main.zig") }, }); + return _module.?; } pub const LinkError = error{FailedToLinkGPU} || BuildError; diff --git a/libs/gpu/sdk.zig b/libs/gpu/sdk.zig index 5edf5037..d9699067 100644 --- a/libs/gpu/sdk.zig +++ b/libs/gpu/sdk.zig @@ -19,10 +19,14 @@ pub fn Sdk(comptime deps: anytype) type { gpu_dawn_options: deps.gpu_dawn.Options = .{}, }; + var _module: ?*std.build.Module = null; + pub fn module(b: *std.Build) *std.build.Module { - return b.createModule(.{ + if (_module) |m| return m; + _module = b.createModule(.{ .source_file = .{ .path = sdkPath("/src/main.zig") }, }); + return _module.?; } pub fn link(b: *std.Build, step: *std.build.CompileStep, options: Options) !void { diff --git a/libs/model3d/build.zig b/libs/model3d/build.zig index 863a6a73..f42edba3 100644 --- a/libs/model3d/build.zig +++ b/libs/model3d/build.zig @@ -1,9 +1,13 @@ const std = @import("std"); +var _module: ?*std.build.Module = null; + pub fn module(b: *std.Build) *std.build.Module { - return b.createModule(.{ + if (_module) |m| return m; + _module = b.createModule(.{ .source_file = .{ .path = sdkPath("/src/main.zig") }, }); + return _module.?; } pub fn build(b: *std.Build) void { diff --git a/libs/sysaudio/sdk.zig b/libs/sysaudio/sdk.zig index a671ce83..1f61e1aa 100644 --- a/libs/sysaudio/sdk.zig +++ b/libs/sysaudio/sdk.zig @@ -9,13 +9,17 @@ pub fn Sdk(comptime deps: anytype) type { system_sdk: deps.system_sdk.Options = .{}, }; + var _module: ?*std.build.Module = null; + pub fn module(b: *std.Build) *std.build.Module { - return b.createModule(.{ + if (_module) |m| return m; + _module = b.createModule(.{ .source_file = .{ .path = sdkPath("/src/main.zig") }, .dependencies = &.{ .{ .name = "sysjs", .module = deps.sysjs.module(b) }, }, }); + return _module.?; } pub fn testStep(b: *std.Build, optimize: std.builtin.OptimizeMode, target: std.zig.CrossTarget) *std.build.RunStep { diff --git a/libs/sysjs/build.zig b/libs/sysjs/build.zig index 7f2ec8b8..7d622f84 100644 --- a/libs/sysjs/build.zig +++ b/libs/sysjs/build.zig @@ -18,10 +18,14 @@ pub fn testStep(b: *std.Build, optimize: std.builtin.OptimizeMode, target: std.z return main_tests.run(); } +var _module: ?*std.build.Module = null; + pub fn module(b: *std.Build) *std.build.Module { - return b.createModule(.{ + if (_module) |m| return m; + _module = b.createModule(.{ .source_file = .{ .path = sdkPath("/src/main.zig") }, }); + return _module.?; } fn sdkPath(comptime suffix: []const u8) []const u8 { diff --git a/shaderexp/main.zig b/shaderexp/main.zig index 8589def2..cdf75cc0 100755 --- a/shaderexp/main.zig +++ b/shaderexp/main.zig @@ -1,7 +1,6 @@ const std = @import("std"); const mach = @import("mach"); -const gpu = @import("gpu"); -const glfw = @import("glfw"); +const gpu = mach.gpu; pub const App = @This();