srctree

Andrew Kelley parent e432dfc3 0ea76022
share some code between client and server

build.zig added: 46, removed: 34, total 12
@@ -7,6 +7,29 @@ pub fn build(b: *std.Build) void {
.Debug, .ReleaseSafe => .ReleaseFast,
else => optimize,
};
const wasm_target = b.resolveTargetQuery(.{
.cpu_arch = .wasm32,
.os_tag = .freestanding,
.cpu_features_add = std.Target.wasm.featureSet(&.{
.atomics,
.bulk_memory,
// .extended_const, not supported by Safari
.multivalue,
.mutable_globals,
.nontrapping_fptoint,
.reference_types,
//.relaxed_simd, not supported by Firefox or Safari
.sign_ext,
// observed to cause Error occured during wast conversion :
// Unknown operator: 0xfd058 in Firefox 117
//.simd128,
// .tail_call, not supported by Safari
}),
});
const wasm_optimize = switch (optimize) {
.Debug => optimize,
else => .ReleaseSmall,
};
 
const ffmpeg_dep = b.dependency("ffmpeg", .{
.target = target,
@@ -25,11 +48,23 @@ pub fn build(b: *std.Build) void {
const libsoundio = soundio_dep.artifact("soundio");
 
const player = b.addModule("player", .{
.root_source_file = b.path("src/root.zig"),
.root_source_file = b.path("player/root.zig"),
.target = target,
.optimize = optimize,
});
 
const shared_server = b.addModule("shared", .{
.root_source_file = b.path("shared/root.zig"),
.target = target,
.optimize = optimize,
});
 
const shared_wasm = b.addModule("shared", .{
.root_source_file = b.path("shared/root.zig"),
.target = wasm_target,
.optimize = wasm_optimize,
});
 
player.addImport("av", ffmpeg_dep.module("av"));
player.addImport("SoundIo", soundio_dep.module("SoundIo"));
player.linkLibrary(libsoundio);
@@ -68,6 +103,7 @@ pub fn build(b: *std.Build) void {
.optimize = optimize,
});
groovebasin.root_module.addImport("player", player);
groovebasin.root_module.addImport("shared", shared_server);
groovebasin.root_module.addImport("StaticHttpFileServer", b.dependency("StaticHttpFileServer", .{
.optimize = optimize,
.target = target,
@@ -93,30 +129,10 @@ pub fn build(b: *std.Build) void {
const wasm = b.addExecutable(.{
.name = "main",
.root_source_file = .{ .path = "client/main.zig" },
.target = b.resolveTargetQuery(.{
.cpu_arch = .wasm32,
.os_tag = .freestanding,
.cpu_features_add = std.Target.wasm.featureSet(&.{
.atomics,
.bulk_memory,
// .extended_const, not supported by Safari
.multivalue,
.mutable_globals,
.nontrapping_fptoint,
.reference_types,
//.relaxed_simd, not supported by Firefox or Safari
.sign_ext,
// observed to cause Error occured during wast conversion :
// Unknown operator: 0xfd058 in Firefox 117
//.simd128,
// .tail_call, not supported by Safari
}),
}),
.optimize = switch (optimize) {
.Debug => .Debug,
else => .ReleaseSmall,
},
.target = wasm_target,
.optimize = wasm_optimize,
});
wasm.root_module.addImport("shared", shared_wasm);
wasm.rdynamic = true; // expose exported functions to wasm
wasm.entry = .disabled;
b.getInstallStep().dependOn(&b.addInstallFile(wasm.getEmittedBin(), "www/main.wasm").step);
 
client/main.zig added: 46, removed: 34, total 12
@@ -36,11 +36,6 @@ fn logFn(
js.log(line.ptr, line.len);
}
 
export fn alloc(n: usize) [*]u8 {
const slice = gpa.alloc(u8, n) catch @panic("OOM");
return slice.ptr;
}
 
var message_buffer: std.ArrayListUnmanaged(u8) = .{};
 
/// Resizes the message buffer to be the correct length; returns the pointer to
 
filename was Deleted added: 46, removed: 34, total 12
 
filename was Deleted added: 46, removed: 34, total 12
 
filename was Deleted added: 46, removed: 34, total 12
 
filename was Deleted added: 46, removed: 34, total 12
 
filename was Deleted added: 46, removed: 34, total 12
 
server/main.zig added: 46, removed: 34, total 12
@@ -5,7 +5,7 @@ const fatal = std.zig.fatal;
const Config = @import("Config.zig");
const Allocator = std.mem.Allocator;
const assert = std.debug.assert;
const Db = @import("Db.zig");
const Db = @import("shared").Db;
const WebSocket = @import("WebSocket.zig");
const StaticHttpFileServer = @import("StaticHttpFileServer");
 
 
filename was Deleted added: 46, removed: 34, total 12
 
filename was Deleted added: 46, removed: 34, total 12
@@ -0,0 +1 @@
pub const Db = @import("Db.zig");