zig/test/standalone/coff_dwarf/build.zig
Andrew Kelley 0403f9647b std: different mechanism for disabling network dependency
On Windows, it is sometimes problematic to depend on ws2_32.dll. Before,
users of std.Io.Threaded would have to call ioBasic() rather than io()
in order to avoid unnecessary dependencies on ws2_32.dll. Now, the
application can disable networking with std.Options.

This change is necessary due to moving networking functionality to
be based on Io.Operation, which is a tagged union.
2026-03-05 22:36:33 -08:00

57 lines
1.5 KiB
Zig

const std = @import("std");
/// This tests the path where DWARF information is embedded in a COFF binary
pub fn build(b: *std.Build) void {
const host = b.graph.host;
// https://github.com/ziglang/zig/issues/25471
if (host.result.os.tag == .freebsd) return;
switch (host.result.cpu.arch) {
.aarch64,
.x86,
.x86_64,
=> {},
else => return,
}
const test_step = b.step("test", "Test it");
b.default_step = test_step;
const optimize: std.builtin.OptimizeMode = .Debug;
const target = switch (host.result.os.tag) {
.windows => host,
else => b.resolveTargetQuery(.{ .os_tag = .windows }),
};
const exe = b.addExecutable(.{
.name = "main",
.root_module = b.createModule(.{
.root_source_file = b.path("main.zig"),
.optimize = optimize,
.target = target,
}),
});
const lib = b.addLibrary(.{
.linkage = .dynamic,
.name = "shared_lib",
.root_module = b.createModule(.{
.root_source_file = null,
.optimize = optimize,
.target = target,
.link_libc = true,
}),
});
lib.root_module.addCSourceFile(.{ .file = b.path("shared_lib.c"), .flags = &.{"-gdwarf"} });
exe.root_module.linkLibrary(lib);
if (target.result.os.tag == .windows)
exe.root_module.linkSystemLibrary("ws2_32", .{});
const run = b.addRunArtifact(exe);
run.expectExitCode(0);
run.skip_foreign_checks = true;
test_step.dependOn(&run.step);
}