diff options
author | polwex <polwex@sortug.com> | 2025-10-05 21:56:51 +0700 |
---|---|---|
committer | polwex <polwex@sortug.com> | 2025-10-05 21:56:51 +0700 |
commit | fcedfddf00b3f994e4f4e40332ac7fc192c63244 (patch) | |
tree | 51d38e62c7bdfcc5f9a5e9435fe820c93cfc9a3d /vere/ext/tracy/build.zig |
claude is gud
Diffstat (limited to 'vere/ext/tracy/build.zig')
-rw-r--r-- | vere/ext/tracy/build.zig | 52 |
1 files changed, 52 insertions, 0 deletions
diff --git a/vere/ext/tracy/build.zig b/vere/ext/tracy/build.zig new file mode 100644 index 0000000..c672126 --- /dev/null +++ b/vere/ext/tracy/build.zig @@ -0,0 +1,52 @@ +const std = @import("std"); + +pub fn build(b: *std.Build) void { + const target = b.standardTargetOptions(.{}); + const optimize = b.standardOptimizeOption(.{}); + + const tracy_src = b.dependency("tracy", .{ + .target = target, + .optimize = optimize, + }); + + const tracy = b.addStaticLibrary(.{ + .name = "tracy", + .target = target, + .optimize = optimize, + }); + + tracy.linkLibC(); + tracy.linkLibCpp(); + + // Add Tracy include path + tracy.addIncludePath(tracy_src.path("public")); + + // Add Tracy C++ client source + tracy.addCSourceFiles(.{ + .root = tracy_src.path("public"), + .files = &.{"TracyClient.cpp"}, + .flags = &.{ + "-DTRACY_ENABLE", + "-fno-sanitize=undefined", + "-D_WIN32_WINNT=0x601", // Windows compatibility + "-std=c++11", + }, + }); + + // Platform-specific libraries + const t = target.result; + if (t.os.tag == .linux) { + tracy.linkSystemLibrary("pthread"); + tracy.linkSystemLibrary("dl"); + } else if (t.os.tag.isDarwin()) { + // macOS might need additional frameworks + } else if (t.os.tag == .windows) { + tracy.linkSystemLibrary("ws2_32"); + tracy.linkSystemLibrary("dbghelp"); + } + + // Install Tracy headers for C API - install the entire public directory structure + tracy.installHeadersDirectory(tracy_src.path("public"), "", .{}); + + b.installArtifact(tracy); +}
\ No newline at end of file |