1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
|
const std = @import("std");
const wslay_version = "1.1.1";
pub fn build(b: *std.Build) !void {
const target = b.standardTargetOptions(.{});
const optimize = b.standardOptimizeOption(.{});
const t = target.result;
const wslay_src = b.dependency("wslay", .{
.target = target,
.optimize = optimize,
});
const lib = b.addStaticLibrary(.{
.name = "wslay",
.target = target,
.optimize = optimize,
});
lib.linkLibC();
lib.addIncludePath(wslay_src.path("lib"));
lib.addIncludePath(wslay_src.path("lib/includes"));
var flags = std.ArrayList([]const u8).init(b.allocator);
defer flags.deinit();
try flags.append("-fno-sanitize=all");
try flags.append(b.fmt("-DWSLAY_VERSION=\\\"{s}\\\"", .{wslay_version}));
if (t.os.tag == .windows) {
try flags.append("-DHAVE_WINSOCK2_H=1");
} else {
try flags.append("-DHAVE_ARPA_INET_H=1");
try flags.append("-DHAVE_NETINET_IN_H=1");
}
if (t.cpu.arch.endian() == .big) {
try flags.append("-DWORDS_BIGENDIAN=1");
}
lib.addCSourceFiles(.{
.root = wslay_src.path("lib"),
.files = &.{
"wslay_event.c",
"wslay_frame.c",
"wslay_net.c",
"wslay_queue.c",
"wslay_stack.c",
},
.flags = flags.items,
});
lib.installHeadersDirectory(wslay_src.path("lib/includes"), "", .{
.include_extensions = &.{".h"},
});
b.installArtifact(lib);
}
|