mirror of
https://github.com/lightpanda-io/browser.git
synced 2026-03-22 04:34:44 +00:00
Enable tsan for c libs
This commit is contained in:
23
build.zig
23
build.zig
@@ -53,7 +53,7 @@ pub fn build(b: *Build) !void {
|
|||||||
mod.addImport("build_config", opts.createModule());
|
mod.addImport("build_config", opts.createModule());
|
||||||
|
|
||||||
try linkV8(b, mod, enable_asan, enable_tsan, prebuilt_v8_path);
|
try linkV8(b, mod, enable_asan, enable_tsan, prebuilt_v8_path);
|
||||||
try linkCurl(b, mod);
|
try linkCurl(b, mod, enable_tsan);
|
||||||
try linkHtml5Ever(b, mod);
|
try linkHtml5Ever(b, mod);
|
||||||
|
|
||||||
break :blk mod;
|
break :blk mod;
|
||||||
@@ -189,19 +189,19 @@ fn linkHtml5Ever(b: *Build, mod: *Build.Module) !void {
|
|||||||
mod.addObjectFile(obj);
|
mod.addObjectFile(obj);
|
||||||
}
|
}
|
||||||
|
|
||||||
fn linkCurl(b: *Build, mod: *Build.Module) !void {
|
fn linkCurl(b: *Build, mod: *Build.Module, is_tsan: bool) !void {
|
||||||
const target = mod.resolved_target.?;
|
const target = mod.resolved_target.?;
|
||||||
|
|
||||||
const curl = buildCurl(b, target, mod.optimize.?);
|
const curl = buildCurl(b, target, mod.optimize.?, is_tsan);
|
||||||
mod.linkLibrary(curl);
|
mod.linkLibrary(curl);
|
||||||
|
|
||||||
const zlib = buildZlib(b, target, mod.optimize.?);
|
const zlib = buildZlib(b, target, mod.optimize.?, is_tsan);
|
||||||
curl.root_module.linkLibrary(zlib);
|
curl.root_module.linkLibrary(zlib);
|
||||||
|
|
||||||
const brotli = buildBrotli(b, target, mod.optimize.?);
|
const brotli = buildBrotli(b, target, mod.optimize.?, is_tsan);
|
||||||
for (brotli) |lib| curl.root_module.linkLibrary(lib);
|
for (brotli) |lib| curl.root_module.linkLibrary(lib);
|
||||||
|
|
||||||
const nghttp2 = buildNghttp2(b, target, mod.optimize.?);
|
const nghttp2 = buildNghttp2(b, target, mod.optimize.?, is_tsan);
|
||||||
curl.root_module.linkLibrary(nghttp2);
|
curl.root_module.linkLibrary(nghttp2);
|
||||||
|
|
||||||
const boringssl = buildBoringSsl(b, target, mod.optimize.?);
|
const boringssl = buildBoringSsl(b, target, mod.optimize.?);
|
||||||
@@ -218,13 +218,14 @@ fn linkCurl(b: *Build, mod: *Build.Module) !void {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fn buildZlib(b: *Build, target: Build.ResolvedTarget, optimize: std.builtin.OptimizeMode) *Build.Step.Compile {
|
fn buildZlib(b: *Build, target: Build.ResolvedTarget, optimize: std.builtin.OptimizeMode, is_tsan: bool) *Build.Step.Compile {
|
||||||
const dep = b.dependency("zlib", .{});
|
const dep = b.dependency("zlib", .{});
|
||||||
|
|
||||||
const mod = b.createModule(.{
|
const mod = b.createModule(.{
|
||||||
.target = target,
|
.target = target,
|
||||||
.optimize = optimize,
|
.optimize = optimize,
|
||||||
.link_libc = true,
|
.link_libc = true,
|
||||||
|
.sanitize_thread = is_tsan,
|
||||||
});
|
});
|
||||||
|
|
||||||
const lib = b.addLibrary(.{ .name = "z", .root_module = mod });
|
const lib = b.addLibrary(.{ .name = "z", .root_module = mod });
|
||||||
@@ -249,13 +250,14 @@ fn buildZlib(b: *Build, target: Build.ResolvedTarget, optimize: std.builtin.Opti
|
|||||||
return lib;
|
return lib;
|
||||||
}
|
}
|
||||||
|
|
||||||
fn buildBrotli(b: *Build, target: Build.ResolvedTarget, optimize: std.builtin.OptimizeMode) [3]*Build.Step.Compile {
|
fn buildBrotli(b: *Build, target: Build.ResolvedTarget, optimize: std.builtin.OptimizeMode, is_tsan: bool) [3]*Build.Step.Compile {
|
||||||
const dep = b.dependency("brotli", .{});
|
const dep = b.dependency("brotli", .{});
|
||||||
|
|
||||||
const mod = b.createModule(.{
|
const mod = b.createModule(.{
|
||||||
.target = target,
|
.target = target,
|
||||||
.optimize = optimize,
|
.optimize = optimize,
|
||||||
.link_libc = true,
|
.link_libc = true,
|
||||||
|
.sanitize_thread = is_tsan,
|
||||||
});
|
});
|
||||||
mod.addIncludePath(dep.path("c/include"));
|
mod.addIncludePath(dep.path("c/include"));
|
||||||
|
|
||||||
@@ -311,13 +313,14 @@ fn buildBoringSsl(b: *Build, target: Build.ResolvedTarget, optimize: std.builtin
|
|||||||
return .{ ssl, crypto };
|
return .{ ssl, crypto };
|
||||||
}
|
}
|
||||||
|
|
||||||
fn buildNghttp2(b: *Build, target: Build.ResolvedTarget, optimize: std.builtin.OptimizeMode) *Build.Step.Compile {
|
fn buildNghttp2(b: *Build, target: Build.ResolvedTarget, optimize: std.builtin.OptimizeMode, is_tsan: bool) *Build.Step.Compile {
|
||||||
const dep = b.dependency("nghttp2", .{});
|
const dep = b.dependency("nghttp2", .{});
|
||||||
|
|
||||||
const mod = b.createModule(.{
|
const mod = b.createModule(.{
|
||||||
.target = target,
|
.target = target,
|
||||||
.optimize = optimize,
|
.optimize = optimize,
|
||||||
.link_libc = true,
|
.link_libc = true,
|
||||||
|
.sanitize_thread = is_tsan,
|
||||||
});
|
});
|
||||||
mod.addIncludePath(dep.path("lib/includes"));
|
mod.addIncludePath(dep.path("lib/includes"));
|
||||||
|
|
||||||
@@ -362,6 +365,7 @@ fn buildCurl(
|
|||||||
b: *Build,
|
b: *Build,
|
||||||
target: Build.ResolvedTarget,
|
target: Build.ResolvedTarget,
|
||||||
optimize: std.builtin.OptimizeMode,
|
optimize: std.builtin.OptimizeMode,
|
||||||
|
is_tsan: bool,
|
||||||
) *Build.Step.Compile {
|
) *Build.Step.Compile {
|
||||||
const dep = b.dependency("curl", .{});
|
const dep = b.dependency("curl", .{});
|
||||||
|
|
||||||
@@ -369,6 +373,7 @@ fn buildCurl(
|
|||||||
.target = target,
|
.target = target,
|
||||||
.optimize = optimize,
|
.optimize = optimize,
|
||||||
.link_libc = true,
|
.link_libc = true,
|
||||||
|
.sanitize_thread = is_tsan,
|
||||||
});
|
});
|
||||||
mod.addIncludePath(dep.path("lib"));
|
mod.addIncludePath(dep.path("lib"));
|
||||||
mod.addIncludePath(dep.path("include"));
|
mod.addIncludePath(dep.path("include"));
|
||||||
|
|||||||
Reference in New Issue
Block a user