summaryrefslogtreecommitdiff
path: root/vere/pkg/noun/build.zig
diff options
context:
space:
mode:
Diffstat (limited to 'vere/pkg/noun/build.zig')
-rw-r--r--vere/pkg/noun/build.zig439
1 files changed, 439 insertions, 0 deletions
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",
+};