From fcedfddf00b3f994e4f4e40332ac7fc192c63244 Mon Sep 17 00:00:00 2001 From: polwex Date: Sun, 5 Oct 2025 21:56:51 +0700 Subject: claude is gud --- vere/pkg/noun/build.zig | 439 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 439 insertions(+) create mode 100644 vere/pkg/noun/build.zig (limited to 'vere/pkg/noun/build.zig') diff --git a/vere/pkg/noun/build.zig b/vere/pkg/noun/build.zig new file mode 100644 index 0000000..2a3550f --- /dev/null +++ b/vere/pkg/noun/build.zig @@ -0,0 +1,439 @@ +const std = @import("std"); + +pub fn build(b: *std.Build) !void { + const target = b.standardTargetOptions(.{}); + const optimize = b.standardOptimizeOption(.{}); + const t = target.result; + + const copts: []const []const u8 = + b.option([]const []const u8, "copt", "") orelse &.{}; + + // Parse Tracy-related compiler options from copts to determine if Tracy is enabled + var tracy_enabled = false; + var tracy_callstack = false; + var tracy_no_exit = false; + + for (copts) |opt| { + if (std.mem.eql(u8, opt, "-DTRACY_ENABLE")) { + tracy_enabled = true; + } else if (std.mem.eql(u8, opt, "-DTRACY_CALLSTACK")) { + tracy_callstack = true; + } else if (std.mem.eql(u8, opt, "-DTRACY_NO_EXIT")) { + tracy_no_exit = true; + } + } + + const pkg_noun = b.addStaticLibrary(.{ + .name = "noun", + .target = target, + .optimize = optimize, + }); + + if (target.result.os.tag.isDarwin() and !target.query.isNative()) { + const macos_sdk = b.lazyDependency("macos_sdk", .{ + .target = target, + .optimize = optimize, + }); + if (macos_sdk != null) { + pkg_noun.addSystemIncludePath(macos_sdk.?.path("usr/include")); + pkg_noun.addLibraryPath(macos_sdk.?.path("usr/lib")); + pkg_noun.addFrameworkPath(macos_sdk.?.path("System/Library/Frameworks")); + } + } + + const pkg_c3 = b.dependency("pkg_c3", .{ + .target = target, + .optimize = optimize, + .copt = copts, + }); + + const pkg_ent = b.dependency("pkg_ent", .{ + .target = target, + .optimize = optimize, + .copt = copts, + }); + + const pkg_ur = b.dependency("pkg_ur", .{ + .target = target, + .optimize = optimize, + .copt = copts, + }); + + const backtrace = b.dependency("backtrace", .{ + .target = target, + .optimize = optimize, + }); + + const gmp = b.dependency("gmp", .{ + .target = target, + .optimize = optimize, + }); + + const murmur3 = b.dependency("murmur3", .{ + .target = target, + .optimize = optimize, + }); + + const openssl = b.dependency("openssl", .{ + .target = target, + .optimize = optimize, + }); + + const pdjson = b.dependency("pdjson", .{ + .target = target, + .optimize = optimize, + }); + + const sigsegv = b.dependency("sigsegv", .{ + .target = target, + .optimize = optimize, + }); + + const softblas = b.dependency("softblas", .{ + .target = target, + .optimize = optimize, + }); + + const softfloat = b.dependency("softfloat", .{ + .target = target, + .optimize = optimize, + }); + + const unwind = b.dependency("unwind", .{ + .target = target, + .optimize = optimize, + }); + + const urcrypt = b.dependency("urcrypt", .{ + .target = target, + .optimize = optimize, + }); + + const whereami = b.dependency("whereami", .{ + .target = target, + .optimize = optimize, + }); + + const zlib = b.dependency("zlib", .{ + .target = target, + .optimize = optimize, + }); + + const wasm3 = b.dependency("wasm3", .{ + .target = target, + .optimize = optimize, + }); + + const tracy = if (tracy_enabled) b.dependency("tracy", .{ + .target = target, + .optimize = optimize, + }) else null; + + pkg_noun.linkLibC(); + + pkg_noun.linkLibrary(pkg_c3.artifact("c3")); + pkg_noun.linkLibrary(pkg_ent.artifact("ent")); + pkg_noun.linkLibrary(pkg_ur.artifact("ur")); + + pkg_noun.linkLibrary(backtrace.artifact("backtrace")); + pkg_noun.linkLibrary(gmp.artifact("gmp")); + + + + pkg_noun.linkLibrary(murmur3.artifact("murmur3")); + pkg_noun.linkLibrary(openssl.artifact("ssl")); + pkg_noun.linkLibrary(pdjson.artifact("pdjson")); + if (t.os.tag != .windows) { + pkg_noun.linkLibrary(sigsegv.artifact("sigsegv")); + } + pkg_noun.linkLibrary(softblas.artifact("softblas")); + pkg_noun.linkLibrary(softfloat.artifact("softfloat")); + if (t.os.tag == .linux) + pkg_noun.linkLibrary(unwind.artifact("unwind")); + pkg_noun.linkLibrary(urcrypt.artifact("urcrypt")); + pkg_noun.linkLibrary(whereami.artifact("whereami")); + pkg_noun.linkLibrary(zlib.artifact("z")); + pkg_noun.linkLibrary(wasm3.artifact("wasm3")); + + if (tracy_enabled) { + pkg_noun.linkLibrary(tracy.?.artifact("tracy")); + pkg_noun.addIncludePath(tracy.?.path("")); + } + + pkg_noun.addIncludePath(b.path("")); + if (t.os.tag.isDarwin()) + pkg_noun.addIncludePath(b.path("platform/darwin")); + if (t.os.tag == .linux) + pkg_noun.addIncludePath(b.path("platform/linux")); + if (t.os.tag == .windows) + pkg_noun.addIncludePath(b.path("platform/windows")); + + var flags = std.ArrayList([]const u8).init(b.allocator); + defer flags.deinit(); + try flags.appendSlice(&.{ + // "-pedantic", + "-std=gnu23", + }); + try flags.appendSlice(copts); + + pkg_noun.addCSourceFiles(.{ + .root = b.path(""), + .files = &c_source_files, + .flags = flags.items, + }); + + if (t.os.tag == .windows) { + pkg_noun.addCSourceFiles(.{ + .root = b.path("platform/windows"), + .files = &.{"veh_handler.c", "rsignal.c"}, + .flags = flags.items, + }); + } + + for (install_headers) |h| pkg_noun.installHeader(b.path(h), h); + + pkg_noun.installHeader(b.path(switch (t.os.tag) { + .macos => "platform/darwin/rsignal.h", + .linux => "platform/linux/rsignal.h", + .windows => "platform/windows/rsignal.h", + else => "", + }), "platform/rsignal.h"); + + b.installArtifact(pkg_noun); +} + +const c_source_files = [_][]const u8{ + "allocate.c", + "events.c", + "hashtable.c", + "imprison.c", + "jets.c", + "jets/a/add.c", + "jets/a/dec.c", + "jets/a/div.c", + "jets/a/gte.c", + "jets/a/gth.c", + "jets/a/lte.c", + "jets/a/lth.c", + "jets/a/max.c", + "jets/a/min.c", + "jets/a/mod.c", + "jets/a/mul.c", + "jets/a/sub.c", + "jets/b/bind.c", + "jets/b/clap.c", + "jets/b/find.c", + "jets/b/flop.c", + "jets/b/lent.c", + "jets/b/levy.c", + "jets/b/lien.c", + "jets/b/mate.c", + "jets/b/murn.c", + "jets/b/need.c", + "jets/b/reap.c", + "jets/b/reel.c", + "jets/b/roll.c", + "jets/b/scag.c", + "jets/b/skid.c", + "jets/b/skim.c", + "jets/b/skip.c", + "jets/b/slag.c", + "jets/b/snag.c", + "jets/b/sort.c", + "jets/b/turn.c", + "jets/b/weld.c", + "jets/b/zing.c", + "jets/c/aor.c", + "jets/c/bex.c", + "jets/c/c0n.c", + "jets/c/can.c", + "jets/c/cap.c", + "jets/c/cat.c", + "jets/c/clz.c", + "jets/c/ctz.c", + "jets/c/cut.c", + "jets/c/dis.c", + "jets/c/dor.c", + "jets/c/dvr.c", + "jets/c/end.c", + "jets/c/gor.c", + "jets/c/ham.c", + "jets/c/hew.c", + "jets/c/lsh.c", + "jets/c/mas.c", + "jets/c/met.c", + "jets/c/mix.c", + "jets/c/mor.c", + "jets/c/mug.c", + "jets/c/muk.c", + "jets/c/peg.c", + "jets/c/po.c", + "jets/c/pow.c", + "jets/c/rap.c", + "jets/c/rep.c", + "jets/c/rev.c", + "jets/c/rig.c", + "jets/c/rip.c", + "jets/c/rsh.c", + "jets/c/sew.c", + "jets/c/sqt.c", + "jets/c/swp.c", + "jets/c/xeb.c", + "jets/d/by_all.c", + "jets/d/by_any.c", + "jets/d/by_apt.c", + "jets/d/by_bif.c", + "jets/d/by_del.c", + "jets/d/by_dif.c", + "jets/d/by_gas.c", + "jets/d/by_get.c", + "jets/d/by_has.c", + "jets/d/by_int.c", + "jets/d/by_jab.c", + "jets/d/by_key.c", + "jets/d/by_put.c", + "jets/d/by_run.c", + "jets/d/by_uni.c", + "jets/d/by_urn.c", + "jets/d/in_apt.c", + "jets/d/in_bif.c", + "jets/d/in_del.c", + "jets/d/in_dif.c", + "jets/d/in_gas.c", + "jets/d/in_has.c", + "jets/d/in_int.c", + "jets/d/in_put.c", + "jets/d/in_rep.c", + "jets/d/in_run.c", + "jets/d/in_tap.c", + "jets/d/in_uni.c", + "jets/d/in_wyt.c", + "jets/e/adler.c", + "jets/e/aes_cbc.c", + "jets/e/aes_ecb.c", + "jets/e/aes_siv.c", + "jets/e/argon2.c", + "jets/e/base.c", + "jets/e/blake.c", + "jets/e/bytestream.c", + "jets/e/chacha.c", + "jets/e/crc.c", + "jets/e/cue.c", + "jets/e/ed_add_double_scalarmult.c", + "jets/e/ed_add_scalarmult_scalarmult_base.c", + "jets/e/ed_point_add.c", + "jets/e/ed_point_neg.c", + "jets/e/ed_scad.c", + "jets/e/ed_recs.c", + "jets/e/ed_smac.c", + "jets/e/ed_puck.c", + "jets/e/ed_luck.c", + "jets/e/ed_scalarmult.c", + "jets/e/ed_scalarmult_base.c", + "jets/e/ed_shar.c", + "jets/e/ed_sign.c", + "jets/e/ed_veri.c", + "jets/e/fein_ob.c", + "jets/e/fl.c", + "jets/e/fynd_ob.c", + "jets/e/hmac.c", + "jets/e/jam.c", + "jets/e/json_de.c", + "jets/e/json_en.c", + "jets/e/keccak.c", + "jets/e/leer.c", + "jets/e/loss.c", + "jets/e/lune.c", + "jets/e/mat.c", + "jets/e/mice.c", + "jets/e/mink.c", + "jets/e/mole.c", + "jets/e/mule.c", + "jets/e/parse.c", + "jets/e/rd.c", + "jets/e/rh.c", + "jets/e/ripe.c", + "jets/e/rq.c", + "jets/e/rs.c", + "jets/e/rub.c", + "jets/e/scot.c", + "jets/e/scow.c", + "jets/e/scr.c", + "jets/e/secp.c", + "jets/e/sha1.c", + "jets/e/shax.c", + "jets/e/slaw.c", + "jets/e/tape.c", + "jets/e/trip.c", + "jets/e/urwasm.c", + "jets/e/zlib.c", + "jets/f/cell.c", + "jets/f/comb.c", + "jets/f/cons.c", + "jets/f/core.c", + "jets/f/face.c", + "jets/f/fine.c", + "jets/f/fitz.c", + "jets/f/flan.c", + "jets/f/flip.c", + "jets/f/flor.c", + "jets/f/fork.c", + "jets/f/help.c", + "jets/f/hint.c", + "jets/f/look.c", + "jets/f/loot.c", + "jets/f/ut_crop.c", + "jets/f/ut_fish.c", + "jets/f/ut_fuse.c", + "jets/f/ut_redo.c", + "jets/f/ut_mint.c", + "jets/f/ut_mull.c", + "jets/f/ut_nest.c", + "jets/f/ut_rest.c", + "jets/g/plot.c", + "jets/i/lagoon.c", + "jets/tree.c", + "jets/137/tree.c", + "jets/136/tree.c", + "log.c", + "manage.c", + "palloc.c", + "nock.c", + "options.c", + "retrieve.c", + "ship.c", + "serial.c", + "trace.c", + "urth.c", + "vortex.c", + "xtract.c", + "zave.c", +}; + +const install_headers = [_][]const u8{ + "allocate.h", + "error.h", + "events.h", + "hashtable.h", + "imprison.h", + "jets.h", + "jets/k.h", + "jets/q.h", + "jets/w.h", + "log.h", + "manage.h", + "nock.h", + "noun.h", + "options.h", + "retrieve.h", + "serial.h", + "ship.h", + "trace.h", + "types.h", + "urth.h", + "version.h", + "vortex.h", + "xtract.h", + "zave.h", + "verstable.h", +}; -- cgit v1.2.3