From 1c3a571312f94180884ea4deaf4d64cd2a694158 Mon Sep 17 00:00:00 2001 From: Mitchell Hashimoto Date: Fri, 24 Apr 2026 09:26:12 -0700 Subject: [PATCH] pkg/highway: always linkLibC --- pkg/highway/build.zig | 7 +++---- pkg/simdutf/build.zig | 9 ++++++--- src/build/SharedDeps.zig | 1 - 3 files changed, 9 insertions(+), 8 deletions(-) diff --git a/pkg/highway/build.zig b/pkg/highway/build.zig index 57ed667d7..e23abb399 100644 --- a/pkg/highway/build.zig +++ b/pkg/highway/build.zig @@ -3,7 +3,6 @@ const std = @import("std"); pub fn build(b: *std.Build) !void { const target = b.standardTargetOptions(.{}); const optimize = b.standardOptimizeOption(.{}); - const no_libc = b.option(bool, "no_libc", "Avoid linking libc when embedding Highway into no-libc builds") orelse false; const upstream_ = b.lazyDependency("highway", .{}); @@ -23,9 +22,9 @@ pub fn build(b: *std.Build) !void { .linkage = .static, }); - // Our highway package is free of libc at runtime, so only libc-backed - // consumers should request it explicitly. - if (!no_libc) lib.linkLibC(); + // We don't use libc at runtime but we do need the headers at + // compile time. + lib.linkLibC(); lib.addIncludePath(b.path("src/cpp")); if (upstream_) |upstream| { diff --git a/pkg/simdutf/build.zig b/pkg/simdutf/build.zig index 4078c78ba..72387a06f 100644 --- a/pkg/simdutf/build.zig +++ b/pkg/simdutf/build.zig @@ -29,15 +29,18 @@ pub fn build(b: *std.Build) !void { .linkage = .static, }); lib.addIncludePath(b.path("vendor")); - if (!no_libc) lib.linkLibC(); - libcpp: { + libc: { + // We always link libc because we require the headers even with + // no_libc set. + lib.linkLibC(); + if (target.result.abi == .msvc) { // On MSVC, we must not use linkLibCpp because Zig unconditionally // passes -nostdinc++ and then adds its bundled libc++/libc++abi // include paths, which conflict with MSVC's own C++ runtime headers. // The MSVC SDK include directories (added via linkLibC) contain // both C and C++ headers, so linkLibCpp is not needed. - break :libcpp; + break :libc; } // We link libcpp even with no_libcxx because simdutf requires diff --git a/src/build/SharedDeps.zig b/src/build/SharedDeps.zig index 65c6405a1..2d6dce1c2 100644 --- a/src/build/SharedDeps.zig +++ b/src/build/SharedDeps.zig @@ -802,7 +802,6 @@ pub fn addSimd( } else if (b.lazyDependency("highway", .{ .target = target, .optimize = optimize, - .no_libc = simd_libc == .no_libc, })) |highway_dep| lib: { const lib = highway_dep.artifact("highway"); if (simd_libc == .no_libc) {