all: cache module() returns to avoid duplicate modules
Signed-off-by: Stephen Gutekanst <stephen@hexops.com>
This commit is contained in:
parent
033ebb8551
commit
6bd4d91932
14 changed files with 75 additions and 17 deletions
|
|
@ -31,8 +31,11 @@ const core = @import("libs/core/sdk.zig").Sdk(.{
|
||||||
.sysjs = sysjs,
|
.sysjs = sysjs,
|
||||||
});
|
});
|
||||||
|
|
||||||
|
var _module: ?*std.build.Module = null;
|
||||||
|
|
||||||
pub fn module(b: *std.Build) *std.build.Module {
|
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") },
|
.source_file = .{ .path = sdkPath("/src/main.zig") },
|
||||||
.dependencies = &.{
|
.dependencies = &.{
|
||||||
.{ .name = "core", .module = core.module(b) },
|
.{ .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) },
|
.{ .name = "earcut", .module = earcut.module(b) },
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
return _module.?;
|
||||||
}
|
}
|
||||||
|
|
||||||
pub const Options = struct {
|
pub const Options = struct {
|
||||||
|
|
|
||||||
|
|
@ -3,12 +3,16 @@ const Build = std.Build;
|
||||||
|
|
||||||
const basisu_root = sdkPath("/upstream/basisu");
|
const basisu_root = sdkPath("/upstream/basisu");
|
||||||
|
|
||||||
|
var _module: ?*std.build.Module = null;
|
||||||
|
|
||||||
pub fn module(b: *std.Build) *std.build.Module {
|
pub fn module(b: *std.Build) *std.build.Module {
|
||||||
return b.createModule(.{
|
if (_module) |m| return m;
|
||||||
|
_module = b.createModule(.{
|
||||||
.source = .{
|
.source = .{
|
||||||
.path = "src/main.zig",
|
.path = "src/main.zig",
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
return _module.?;
|
||||||
}
|
}
|
||||||
|
|
||||||
pub const Options = struct {
|
pub const Options = struct {
|
||||||
|
|
|
||||||
|
|
@ -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 {
|
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") },
|
.source_file = .{ .path = sdkPath("/src/main.zig") },
|
||||||
.dependencies = &.{
|
.dependencies = &.{
|
||||||
.{ .name = "gpu", .module = deps.gpu.module(b) },
|
.{ .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 {
|
pub fn testStep(b: *std.Build, optimize: std.builtin.OptimizeMode, target: std.zig.CrossTarget) !*std.build.RunStep {
|
||||||
|
|
|
||||||
|
|
@ -8,8 +8,14 @@ pub fn build(b: *std.Build) !void {
|
||||||
test_step.dependOn(&testStep(b, optimize, target).step);
|
test_step.dependOn(&testStep(b, optimize, target).step);
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn module(b: *std.build.Builder) *std.build.Module {
|
var _module: ?*std.build.Module = null;
|
||||||
return b.createModule(.{ .source_file = .{ .path = sdkPath("/src/main.zig") } });
|
|
||||||
|
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 {
|
pub fn testStep(b: *std.Build, optimize: std.builtin.OptimizeMode, target: std.zig.CrossTarget) *std.build.RunStep {
|
||||||
|
|
|
||||||
|
|
@ -25,10 +25,14 @@ pub fn build(b: *std.Build) void {
|
||||||
_ = module(b);
|
_ = module(b);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var _module: ?*std.build.Module = null;
|
||||||
|
|
||||||
pub fn module(b: *std.Build) *std.build.Module {
|
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") },
|
.source_file = .{ .path = sdkPath("/src/main.zig") },
|
||||||
});
|
});
|
||||||
|
return _module.?;
|
||||||
}
|
}
|
||||||
|
|
||||||
fn sdkPath(comptime suffix: []const u8) []const u8 {
|
fn sdkPath(comptime suffix: []const u8) []const u8 {
|
||||||
|
|
|
||||||
|
|
@ -1,9 +1,13 @@
|
||||||
const std = @import("std");
|
const std = @import("std");
|
||||||
|
|
||||||
|
var _module: ?*std.build.Module = null;
|
||||||
|
|
||||||
pub fn module(b: *std.Build) *std.build.Module {
|
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") },
|
.source_file = .{ .path = sdkPath("/src/main.zig") },
|
||||||
});
|
});
|
||||||
|
return _module.?;
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn build(b: *std.Build) void {
|
pub fn build(b: *std.Build) void {
|
||||||
|
|
|
||||||
|
|
@ -7,19 +7,27 @@ const hb_root = sdkPath("/upstream/harfbuzz");
|
||||||
const hb_include_path = hb_root ++ "/src";
|
const hb_include_path = hb_root ++ "/src";
|
||||||
const brotli_root = sdkPath("/upstream/brotli");
|
const brotli_root = sdkPath("/upstream/brotli");
|
||||||
|
|
||||||
|
var _module: ?*std.build.Module = null;
|
||||||
|
|
||||||
pub fn module(b: *std.Build) *std.build.Module {
|
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") },
|
.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 {
|
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") },
|
.source_file = .{ .path = sdkPath("/src/harfbuzz/main.zig") },
|
||||||
.dependencies = &.{
|
.dependencies = &.{
|
||||||
.{ .name = "freetype", .module = module(b) },
|
.{ .name = "freetype", .module = module(b) },
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
return _harfbuzz_module.?;
|
||||||
}
|
}
|
||||||
|
|
||||||
pub const Options = struct {
|
pub const Options = struct {
|
||||||
|
|
|
||||||
|
|
@ -1,9 +1,13 @@
|
||||||
const std = @import("std");
|
const std = @import("std");
|
||||||
|
|
||||||
|
var _module: ?*std.build.Module = null;
|
||||||
|
|
||||||
pub fn module(b: *std.Build) *std.build.Module {
|
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") },
|
.source_file = .{ .path = sdkPath("/src/main.zig") },
|
||||||
});
|
});
|
||||||
|
return _module.?;
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn link(step: *std.build.CompileStep) void {
|
pub fn link(step: *std.build.CompileStep) void {
|
||||||
|
|
|
||||||
|
|
@ -69,10 +69,14 @@ pub const Options = struct {
|
||||||
install_libs: bool = false,
|
install_libs: bool = false,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
var _module: ?*std.build.Module = null;
|
||||||
|
|
||||||
pub fn module(b: *std.Build) *std.build.Module {
|
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") },
|
.source_file = .{ .path = sdkPath("/src/main.zig") },
|
||||||
});
|
});
|
||||||
|
return _module.?;
|
||||||
}
|
}
|
||||||
|
|
||||||
pub const LinkError = error{FailedToLinkGPU} || BuildError;
|
pub const LinkError = error{FailedToLinkGPU} || BuildError;
|
||||||
|
|
|
||||||
|
|
@ -19,10 +19,14 @@ pub fn Sdk(comptime deps: anytype) type {
|
||||||
gpu_dawn_options: deps.gpu_dawn.Options = .{},
|
gpu_dawn_options: deps.gpu_dawn.Options = .{},
|
||||||
};
|
};
|
||||||
|
|
||||||
|
var _module: ?*std.build.Module = null;
|
||||||
|
|
||||||
pub fn module(b: *std.Build) *std.build.Module {
|
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") },
|
.source_file = .{ .path = sdkPath("/src/main.zig") },
|
||||||
});
|
});
|
||||||
|
return _module.?;
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn link(b: *std.Build, step: *std.build.CompileStep, options: Options) !void {
|
pub fn link(b: *std.Build, step: *std.build.CompileStep, options: Options) !void {
|
||||||
|
|
|
||||||
|
|
@ -1,9 +1,13 @@
|
||||||
const std = @import("std");
|
const std = @import("std");
|
||||||
|
|
||||||
|
var _module: ?*std.build.Module = null;
|
||||||
|
|
||||||
pub fn module(b: *std.Build) *std.build.Module {
|
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") },
|
.source_file = .{ .path = sdkPath("/src/main.zig") },
|
||||||
});
|
});
|
||||||
|
return _module.?;
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn build(b: *std.Build) void {
|
pub fn build(b: *std.Build) void {
|
||||||
|
|
|
||||||
|
|
@ -9,13 +9,17 @@ pub fn Sdk(comptime deps: anytype) type {
|
||||||
system_sdk: deps.system_sdk.Options = .{},
|
system_sdk: deps.system_sdk.Options = .{},
|
||||||
};
|
};
|
||||||
|
|
||||||
|
var _module: ?*std.build.Module = null;
|
||||||
|
|
||||||
pub fn module(b: *std.Build) *std.build.Module {
|
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") },
|
.source_file = .{ .path = sdkPath("/src/main.zig") },
|
||||||
.dependencies = &.{
|
.dependencies = &.{
|
||||||
.{ .name = "sysjs", .module = deps.sysjs.module(b) },
|
.{ .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 {
|
pub fn testStep(b: *std.Build, optimize: std.builtin.OptimizeMode, target: std.zig.CrossTarget) *std.build.RunStep {
|
||||||
|
|
|
||||||
|
|
@ -18,10 +18,14 @@ pub fn testStep(b: *std.Build, optimize: std.builtin.OptimizeMode, target: std.z
|
||||||
return main_tests.run();
|
return main_tests.run();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var _module: ?*std.build.Module = null;
|
||||||
|
|
||||||
pub fn module(b: *std.Build) *std.build.Module {
|
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") },
|
.source_file = .{ .path = sdkPath("/src/main.zig") },
|
||||||
});
|
});
|
||||||
|
return _module.?;
|
||||||
}
|
}
|
||||||
|
|
||||||
fn sdkPath(comptime suffix: []const u8) []const u8 {
|
fn sdkPath(comptime suffix: []const u8) []const u8 {
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,6 @@
|
||||||
const std = @import("std");
|
const std = @import("std");
|
||||||
const mach = @import("mach");
|
const mach = @import("mach");
|
||||||
const gpu = @import("gpu");
|
const gpu = mach.gpu;
|
||||||
const glfw = @import("glfw");
|
|
||||||
|
|
||||||
pub const App = @This();
|
pub const App = @This();
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue