57 lines
2.0 KiB
Zig
57 lines
2.0 KiB
Zig
// build.zig
|
|
// zig build run
|
|
//
|
|
// Expects wgpu-native pre-built in libs/wgpu-native/:
|
|
// include/wgpu.h
|
|
// lib/libwgpu_native.a (or .so / .dylib / .dll)
|
|
//
|
|
// Download release: https://github.com/gfx-rs/wgpu-native/releases
|
|
// Pick the archive matching your OS/arch, e.g.:
|
|
// wgpu-linux-x86_64-release.zip → libwgpu_native.a + wgpu.h
|
|
// wgpu-macos-aarch64-release.zip
|
|
// wgpu-windows-x86_64-msvc-release.zip
|
|
|
|
const std = @import("std");
|
|
|
|
pub fn build(b: *std.Build) void {
|
|
const target = b.standardTargetOptions(.{});
|
|
const optimize = b.standardOptimizeOption(.{});
|
|
|
|
const exe = b.addExecutable(.{
|
|
.root_module = b.createModule(.{
|
|
.root_source_file = b.path("src/main.zig"),
|
|
.link_libc = true,
|
|
.target = target,
|
|
.optimize = optimize,
|
|
}),
|
|
.name = "gpu_matrix_add",
|
|
});
|
|
|
|
// wgpu-native headers + pre-built static library
|
|
exe.root_module.addIncludePath(b.path("libs/wgpu-native/include"));
|
|
exe.root_module.addLibraryPath(b.path("libs/wgpu-native/lib"));
|
|
exe.root_module.addObjectFile(b.path("libs/wgpu-native/lib/libwgpu_native.a"));
|
|
|
|
// Platform-specific system frameworks needed by wgpu-native
|
|
const t = target.result;
|
|
if (t.os.tag == .macos) {
|
|
exe.root_module.linkFramework("Metal", .{});
|
|
exe.root_module.linkFramework("QuartzCore", .{});
|
|
exe.root_module.linkFramework("Foundation", .{});
|
|
exe.root_module.linkFramework("CoreGraphics", .{});
|
|
} else if (t.os.tag == .windows) {
|
|
exe.root_module.linkSystemLibrary("d3d12", .{});
|
|
exe.root_module.linkSystemLibrary("dxgi", .{});
|
|
exe.root_module.linkSystemLibrary("user32", .{});
|
|
} else {
|
|
exe.root_module.linkSystemLibrary("vulkan", .{});
|
|
exe.root_module.linkSystemLibrary("gcc_s", .{});
|
|
}
|
|
|
|
b.installArtifact(exe);
|
|
|
|
const run = b.addRunArtifact(exe);
|
|
run.step.dependOn(b.getInstallStep());
|
|
b.step("run", "Build and run").dependOn(&run.step);
|
|
}
|