add link() build helper API

Signed-off-by: Stephen Gutekanst <stephen@hexops.com>
This commit is contained in:
Stephen Gutekanst 2023-08-04 12:35:30 -07:00
parent 66f89380ca
commit 4d59b4d4e2

View file

@ -38,23 +38,25 @@ pub fn build(b: *Build) !void {
}); });
main_tests.linkLibrary(lib); main_tests.linkLibrary(lib);
// TODO(build-system): linking the library above doesn't seem to transitively carry over the try link(b, main_tests);
// headers for dependencies already linked to `lib`, so we have to add them ourselves:
{
main_tests.linkLibrary(b.dependency("glfw", .{
.target = main_tests.target,
.optimize = main_tests.optimize,
}).artifact("glfw"));
main_tests.linkLibrary(b.dependency("vulkan_headers", .{
.target = main_tests.target,
.optimize = main_tests.optimize,
}).artifact("vulkan-headers"));
if (main_tests.target_info.target.os.tag == .macos) {
@import("xcode_frameworks").addPaths(b, main_tests);
}
}
b.installArtifact(main_tests); b.installArtifact(main_tests);
test_step.dependOn(&b.addRunArtifact(main_tests).step); test_step.dependOn(&b.addRunArtifact(main_tests).step);
} }
pub fn link(b: *std.Build, step: *std.build.CompileStep) !void {
@import("glfw").addPaths(step);
if (step.target.toTarget().isDarwin()) @import("xcode_frameworks").addPaths(b, step);
step.linkLibrary(b.dependency("vulkan_headers", .{
.target = step.target,
.optimize = step.optimize,
}).artifact("vulkan-headers"));
step.linkLibrary(b.dependency("x11_headers", .{
.target = step.target,
.optimize = step.optimize,
}).artifact("x11-headers"));
step.linkLibrary(b.dependency("wayland_headers", .{
.target = step.target,
.optimize = step.optimize,
}).artifact("wayland-headers"));
}