Skip to content

Commit b565900

Browse files
committed
scm: Use webui's build.zig for building C lib
1 parent c45c326 commit b565900

File tree

2 files changed

+14
-93
lines changed

2 files changed

+14
-93
lines changed

build.zig

Lines changed: 12 additions & 91 deletions
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,13 @@ pub const V0_12 = struct {
5959
// create a new module for flags options
6060
const flags_module = flags_options.createModule();
6161

62-
const webui = try webui_c(b, optimize, target, isStatic, enableTLS);
62+
const webui = b.dependency("webui", .{
63+
.target = target,
64+
.optimize = optimize,
65+
.dynamic = !isStatic,
66+
.@"enable-tls" = enableTLS,
67+
.verbose = false,
68+
});
6369

6470
const webui_module = b.addModule("webui", .{
6571
.root_source_file = b.path(b.pathJoin(&.{ "src", "webui.zig" })),
@@ -70,106 +76,21 @@ pub const V0_12 = struct {
7076
},
7177
},
7278
});
73-
74-
webui_module.linkLibrary(webui);
75-
76-
// install webui c lib
77-
install_webui_c(b, webui);
79+
webui_module.linkLibrary(webui.artifact("webui"));
80+
if (!isStatic) {
81+
b.installArtifact(webui.artifact("webui"));
82+
}
7883

7984
// generate docs
8085
generate_docs(b, optimize, target, flags_module);
8186

8287
// build examples
83-
build_examples_12(b, optimize, target, webui_module, webui) catch |err| {
88+
build_examples_12(b, optimize, target, webui_module, webui.artifact("webui")) catch |err| {
8489
log.err("failed to build examples: {}", .{err});
8590
std.process.exit(1);
8691
};
8792
}
8893

89-
/// this function to build webui from c code
90-
pub fn webui_c(b: *Build, optimize: OptimizeMode, target: Build.ResolvedTarget, is_static: bool, enable_tls: bool) !*Compile {
91-
const webui_dep = b.dependency("webui", .{});
92-
93-
const name = "webui";
94-
const webui = if (is_static) b.addStaticLibrary(.{
95-
.name = name,
96-
.target = target,
97-
.optimize = optimize,
98-
}) else b.addSharedLibrary(.{
99-
.name = name,
100-
.target = target,
101-
.optimize = optimize,
102-
});
103-
104-
// basical flags for civetweb
105-
const basic_flags = [_][]const u8{ "-DNDEBUG", "-DNO_CACHING", "-DNO_CGI", "-DUSE_WEBSOCKET", "-Wno-error=date-time" };
106-
107-
// when enable tls
108-
const tls_flags = [_][]const u8{ "-DWEBUI_TLS", "-DNO_SSL_DL", "-DOPENSSL_API_1_1" };
109-
// when disable tls
110-
const no_tls_flags = [_][]const u8{"-DNO_SSL"};
111-
112-
// solve UBSAN
113-
const ubsan_flags = [_][]const u8{"-fno-sanitize=undefined"};
114-
115-
var civetweb_flags = std.ArrayList([]const u8).init(b.allocator);
116-
defer civetweb_flags.deinit();
117-
try civetweb_flags.appendSlice(&ubsan_flags);
118-
try civetweb_flags.appendSlice(&basic_flags);
119-
try civetweb_flags.appendSlice(if (enable_tls) &tls_flags else &no_tls_flags);
120-
121-
var webui_flags = std.ArrayList([]const u8).init(b.allocator);
122-
defer webui_flags.deinit();
123-
try webui_flags.appendSlice(&ubsan_flags);
124-
try webui_flags.appendSlice(if (enable_tls) &tls_flags else &no_tls_flags);
125-
126-
webui.addCSourceFile(.{
127-
.file = webui_dep.path(b.pathJoin(&.{ "src", "webui.c" })),
128-
.flags = webui_flags.items,
129-
});
130-
131-
webui.addCSourceFile(.{
132-
.file = webui_dep.path(b.pathJoin(&.{ "src", "civetweb", "civetweb.c" })),
133-
.flags = civetweb_flags.items,
134-
});
135-
136-
webui.linkLibC();
137-
webui.addIncludePath(webui_dep.path("include"));
138-
139-
// for windows build
140-
if (target.result.os.tag == .windows) {
141-
webui.linkSystemLibrary("ws2_32");
142-
webui.linkSystemLibrary("ole32");
143-
if (target.result.abi == .msvc) {
144-
webui.linkSystemLibrary("Advapi32");
145-
webui.linkSystemLibrary("Shell32");
146-
webui.linkSystemLibrary("user32");
147-
}
148-
if (enable_tls) {
149-
webui.linkSystemLibrary("bcrypt");
150-
}
151-
} else if (target.result.os.tag == .macos) {
152-
webui.addCSourceFile(.{
153-
.file = webui_dep.path(b.pathJoin(&.{ "src", "webview", "wkwebview.m" })),
154-
.flags = &.{},
155-
});
156-
webui.linkFramework("Cocoa");
157-
webui.linkFramework("WebKit");
158-
}
159-
160-
if (enable_tls) {
161-
webui.linkSystemLibrary("ssl");
162-
webui.linkSystemLibrary("crypto");
163-
}
164-
165-
return webui;
166-
}
167-
168-
fn install_webui_c(b: *Build, lib: *Compile) void {
169-
const step = b.step("lib", "Install lib");
170-
step.dependOn(&b.addInstallArtifact(lib, .{}).step);
171-
}
172-
17394
fn generate_docs(b: *Build, optimize: OptimizeMode, target: Build.ResolvedTarget, flags_module: *Module) void {
17495
const webui_lib = b.addObject(.{
17596
.name = "webui_lib",

build.zig.zon

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,8 @@
44
.minimum_zig_version = "0.11.0",
55
.dependencies = .{
66
.webui = .{
7-
.url = "https://github.com/webui-dev/webui/archive/cf0c54e.tar.gz",
8-
.hash = "1220aacf86c4580492e1ce126a611e034f2c8b402b2b4eff46b227b994548db2c2d7",
7+
.url = "https://github.com/webui-dev/webui/archive/3b0736f.tar.gz",
8+
.hash = "12203142a86e0751a1b4ebb7d40ec61c3d7fb79ead7f5441cf42efa897050f8304ab",
99
},
1010
},
1111
.paths = .{

0 commit comments

Comments
 (0)