mirror of
https://github.com/zigzap/zap.git
synced 2025-10-20 15:14:08 +00:00
cleaned up build process
This commit is contained in:
parent
68e197cc21
commit
db33bd9b40
4 changed files with 116 additions and 24 deletions
54
build.zig
54
build.zig
|
@ -11,30 +11,41 @@ pub fn build(b: *std.build.Builder) !void {
|
|||
// between Debug, ReleaseSafe, ReleaseFast, and ReleaseSmall.
|
||||
const mode = b.standardReleaseOptions();
|
||||
|
||||
const lib = b.addStaticLibrary("zap", "src/main.zig");
|
||||
lib.setBuildMode(mode);
|
||||
lib.addPackage(facilio);
|
||||
var ensure_step = b.step("deps", "ensure external dependencies");
|
||||
ensure_step.makeFn = ensureDeps;
|
||||
|
||||
const lib_facilio = try addFacilioLib(lib);
|
||||
lib.linkLibrary(lib_facilio);
|
||||
lib.install();
|
||||
const example_run_step = b.step("run-example", "run the example");
|
||||
const example_step = b.step("example", "build the example");
|
||||
|
||||
const main_tests = b.addTest("src/main.zig");
|
||||
main_tests.setBuildMode(mode);
|
||||
var example = b.addExecutable("example", "examples/hello/hello.zig");
|
||||
example.setBuildMode(mode);
|
||||
example.addPackage(facilio);
|
||||
example.addIncludePath("src/deps/facilio/libdump/all");
|
||||
_ = try addFacilio(example);
|
||||
|
||||
const test_step = b.step("test", "Run library tests");
|
||||
test_step.dependOn(&main_tests.step);
|
||||
const example_run = example.run();
|
||||
example_run_step.dependOn(&example_run.step);
|
||||
|
||||
// install the artifact
|
||||
const example_build_step = b.addInstallArtifact(example);
|
||||
// only after the ensure step
|
||||
example_build_step.step.dependOn(ensure_step);
|
||||
// via `zig build example` invoked step depends on the installed exe
|
||||
example_step.dependOn(&example_build_step.step);
|
||||
}
|
||||
|
||||
pub fn addFacilioLib(exe: *std.build.LibExeObjStep) !*std.build.LibExeObjStep {
|
||||
ensureGit(exe.builder.allocator);
|
||||
try ensureSubmodule(exe.builder.allocator, "src/deps/facilio");
|
||||
ensureMake(exe.builder.allocator);
|
||||
try makeFacilioLibdump(exe.builder.allocator);
|
||||
pub fn ensureDeps(step: *std.build.Step) !void {
|
||||
_ = step;
|
||||
const allocator = std.heap.page_allocator;
|
||||
ensureGit(allocator);
|
||||
try ensureSubmodule(allocator, "src/deps/facilio");
|
||||
ensureMake(allocator);
|
||||
try makeFacilioLibdump(allocator);
|
||||
}
|
||||
|
||||
pub fn addFacilio(exe: *std.build.LibExeObjStep) !void {
|
||||
var b = exe.builder;
|
||||
var lib_facilio = b.addStaticLibrary("facilio", null);
|
||||
lib_facilio.linkLibC();
|
||||
exe.linkLibC();
|
||||
|
||||
// Generate flags
|
||||
var flags = std.ArrayList([]const u8).init(std.heap.page_allocator);
|
||||
|
@ -42,13 +53,10 @@ pub fn addFacilioLib(exe: *std.build.LibExeObjStep) !*std.build.LibExeObjStep {
|
|||
try flags.append("-Wno-return-type-c-linkage");
|
||||
try flags.append("-fno-sanitize=undefined");
|
||||
|
||||
lib_facilio.addIncludePath("./src/deps/facilio/libdump/all");
|
||||
|
||||
// legacy for fio_mem
|
||||
lib_facilio.addIncludePath("src/deps/facilio/lib/facil/legacy");
|
||||
exe.addIncludePath("./src/deps/facilio/libdump/all");
|
||||
|
||||
// Add C
|
||||
lib_facilio.addCSourceFiles(&.{
|
||||
exe.addCSourceFiles(&.{
|
||||
"src/deps/facilio/libdump/all/http.c",
|
||||
"src/deps/facilio/libdump/all/fiobj_numbers.c",
|
||||
"src/deps/facilio/libdump/all/fio_siphash.c",
|
||||
|
@ -64,8 +72,6 @@ pub fn addFacilioLib(exe: *std.build.LibExeObjStep) !*std.build.LibExeObjStep {
|
|||
"src/deps/facilio/libdump/all/http_internal.c",
|
||||
"src/deps/facilio/libdump/all/fiobj_mustache.c",
|
||||
}, flags.items);
|
||||
|
||||
return lib_facilio;
|
||||
}
|
||||
|
||||
fn sdkPath(comptime suffix: []const u8) []const u8 {
|
||||
|
|
43
examples/hello/hello.zig
Normal file
43
examples/hello/hello.zig
Normal file
|
@ -0,0 +1,43 @@
|
|||
const std = @import("std");
|
||||
const facilio = @import("facilio").Http;
|
||||
|
||||
fn on_request(request: [*c]facilio.http_s) callconv(.C) void {
|
||||
std.debug.print("REQUEST!\n", .{});
|
||||
var msg: []const u8 = "Hello from ZAP!";
|
||||
_ = facilio.http_send_body(request, @intToPtr(
|
||||
*anyopaque,
|
||||
@ptrToInt(msg.ptr),
|
||||
), msg.len);
|
||||
}
|
||||
|
||||
pub fn main() void {
|
||||
if (facilio.http_listen("3000", null, .{
|
||||
.on_request = on_request,
|
||||
.log = 1,
|
||||
.on_upgrade = null,
|
||||
.on_response = null,
|
||||
.on_finish = null,
|
||||
.udata = null,
|
||||
.public_folder = null,
|
||||
.public_folder_length = 0,
|
||||
.max_header_size = 4096,
|
||||
.max_body_size = 4096,
|
||||
.max_clients = 42,
|
||||
.tls = null,
|
||||
.reserved1 = 0,
|
||||
.reserved2 = 0,
|
||||
.reserved3 = 0,
|
||||
.ws_max_msg_size = 250 * 1024,
|
||||
.timeout = 0,
|
||||
.ws_timeout = 0,
|
||||
.is_client = 0,
|
||||
}) == -1) {
|
||||
// listen failed
|
||||
std.debug.print("Listening failed\n", .{});
|
||||
return;
|
||||
}
|
||||
facilio.fio_start(.{
|
||||
.threads = 4,
|
||||
.workers = 4,
|
||||
});
|
||||
}
|
|
@ -1 +1,6 @@
|
|||
// zig type definitions for facilio lib
|
||||
|
||||
pub const Http = @cImport({
|
||||
@cInclude("http.h");
|
||||
@cInclude("fio.h");
|
||||
});
|
||||
|
|
38
src/main.zig
38
src/main.zig
|
@ -1,10 +1,48 @@
|
|||
const std = @import("std");
|
||||
const testing = std.testing;
|
||||
const facilio = @import("facilio").Http;
|
||||
|
||||
export fn add(a: i32, b: i32) i32 {
|
||||
return a + b;
|
||||
}
|
||||
|
||||
fn on_request(request: [*c]facilio.http_s) callconv(.C) void {
|
||||
std.debug.print("REQUEST!\n", .{});
|
||||
var msg: []const u8 = "Hello from ZAP!";
|
||||
_ = facilio.http_send_body(request, @intToPtr(
|
||||
*anyopaque,
|
||||
@ptrToInt(msg.ptr),
|
||||
), msg.len);
|
||||
}
|
||||
|
||||
test "basic add functionality" {
|
||||
try testing.expect(add(3, 7) == 10);
|
||||
}
|
||||
|
||||
test "http" {
|
||||
_ = facilio.http_listen("3000", null, .{
|
||||
.on_request = on_request,
|
||||
.log = 1,
|
||||
.on_upgrade = null,
|
||||
.on_response = null,
|
||||
.on_finish = null,
|
||||
.udata = null,
|
||||
.public_folder = null,
|
||||
.public_folder_length = 0,
|
||||
.max_header_size = 4096,
|
||||
.max_body_size = 4096,
|
||||
.max_clients = 42,
|
||||
.tls = null,
|
||||
.reserved1 = 0,
|
||||
.reserved2 = 0,
|
||||
.reserved3 = 0,
|
||||
.ws_max_msg_size = 250 * 1024,
|
||||
.timeout = 0,
|
||||
.ws_timeout = 0,
|
||||
.is_client = 0,
|
||||
});
|
||||
_ = facilio.fio_start(.{
|
||||
.threads = 4,
|
||||
.workers = 4,
|
||||
});
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue