gpu: add gpu.link to make using library elsewhere easier
Helps hexops/mach#189 Signed-off-by: Stephen Gutekanst <stephen@hexops.com>
This commit is contained in:
parent
73c145819a
commit
cd88057edd
1 changed files with 30 additions and 6 deletions
|
|
@ -14,14 +14,12 @@ pub fn build(b: *std.build.Builder) void {
|
||||||
lib.setTarget(target);
|
lib.setTarget(target);
|
||||||
lib.setBuildMode(mode);
|
lib.setBuildMode(mode);
|
||||||
lib.install();
|
lib.install();
|
||||||
glfw.link(b, lib, .{});
|
link(b, lib, .{.gpu_dawn_options = gpu_dawn_options});
|
||||||
gpu_dawn.link(b, lib, gpu_dawn_options);
|
|
||||||
|
|
||||||
const main_tests = b.addTest("src/main.zig");
|
const main_tests = b.addTest("src/main.zig");
|
||||||
main_tests.setTarget(target);
|
main_tests.setTarget(target);
|
||||||
main_tests.setBuildMode(mode);
|
main_tests.setBuildMode(mode);
|
||||||
glfw.link(b, main_tests, .{});
|
link(b, main_tests, .{.gpu_dawn_options = gpu_dawn_options});
|
||||||
gpu_dawn.link(b, main_tests, gpu_dawn_options);
|
|
||||||
|
|
||||||
const test_step = b.step("test", "Run library tests");
|
const test_step = b.step("test", "Run library tests");
|
||||||
test_step.dependOn(&main_tests.step);
|
test_step.dependOn(&main_tests.step);
|
||||||
|
|
@ -33,11 +31,37 @@ pub fn build(b: *std.build.Builder) void {
|
||||||
example.linkLibC();
|
example.linkLibC();
|
||||||
example.addPackagePath("gpu", "src/main.zig");
|
example.addPackagePath("gpu", "src/main.zig");
|
||||||
example.addPackagePath("glfw", "libs/mach-glfw/src/main.zig");
|
example.addPackagePath("glfw", "libs/mach-glfw/src/main.zig");
|
||||||
glfw.link(b, example, .{});
|
link(b, example, .{.gpu_dawn_options = gpu_dawn_options});
|
||||||
gpu_dawn.link(b, example, gpu_dawn_options);
|
|
||||||
|
|
||||||
const example_run_cmd = example.run();
|
const example_run_cmd = example.run();
|
||||||
example_run_cmd.step.dependOn(b.getInstallStep());
|
example_run_cmd.step.dependOn(b.getInstallStep());
|
||||||
const example_run_step = b.step("run-example", "Run the example");
|
const example_run_step = b.step("run-example", "Run the example");
|
||||||
example_run_step.dependOn(&example_run_cmd.step);
|
example_run_step.dependOn(&example_run_cmd.step);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const Options = struct {
|
||||||
|
glfw_options: glfw.Options = .{},
|
||||||
|
gpu_dawn_options: gpu_dawn.Options = .{},
|
||||||
|
};
|
||||||
|
|
||||||
|
pub fn link(b: *std.build.Builder, step: *std.build.LibExeObjStep, options: Options) void {
|
||||||
|
const main_abs = std.fs.path.join(b.allocator, &.{ thisDir(), "src/main.zig" }) catch unreachable;
|
||||||
|
const lib = b.addStaticLibrary("gpu", main_abs);
|
||||||
|
lib.setBuildMode(step.build_mode);
|
||||||
|
lib.setTarget(step.target);
|
||||||
|
|
||||||
|
const glfw_main_abs = std.fs.path.join(b.allocator, &.{ thisDir(), "libs/mach-glfw/src/main.zig" }) catch unreachable;
|
||||||
|
lib.addPackagePath("glfw", glfw_main_abs);
|
||||||
|
|
||||||
|
glfw.link(b, lib, options.glfw_options);
|
||||||
|
gpu_dawn.link(b, lib, options.gpu_dawn_options);
|
||||||
|
lib.install();
|
||||||
|
|
||||||
|
step.linkLibrary(lib);
|
||||||
|
glfw.link(b, step, options.glfw_options);
|
||||||
|
gpu_dawn.link(b, step, options.gpu_dawn_options);
|
||||||
|
}
|
||||||
|
|
||||||
|
fn thisDir() []const u8 {
|
||||||
|
return std.fs.path.dirname(@src().file) orelse ".";
|
||||||
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue