build: update for zig-0.12.0-dev.2208+4debd4338

Incorporate various build API changes. Hopefully there won't be any
other major API changes before the 0.12.0 release.
This commit is contained in:
torque 2024-01-15 15:35:38 -08:00
parent c673c25fc9
commit 9679f074d2
Signed by: torque
SSH Key Fingerprint: SHA256:nCrXefBNo6EbjNSQhv0nXmEg/VuNq3sMF5b8zETw3Tk

View File

@ -5,11 +5,12 @@ const LibreSslBuildOptions = struct {
libcrypto_name: []const u8 = "crypto", libcrypto_name: []const u8 = "crypto",
libssl_name: []const u8 = "ssl", libssl_name: []const u8 = "ssl",
libtls_name: []const u8 = "tls", libtls_name: []const u8 = "tls",
target: std.zig.CrossTarget, target: std.Build.ResolvedTarget,
optimize: std.builtin.OptimizeMode, optimize: std.builtin.OptimizeMode,
}; };
const LibreSslLibs = struct { const LibreSslLibs = struct {
target: std.Build.ResolvedTarget,
libcrypto: *std.Build.Step.Compile, libcrypto: *std.Build.Step.Compile,
libssl: *std.Build.Step.Compile, libssl: *std.Build.Step.Compile,
libtls: *std.Build.Step.Compile, libtls: *std.Build.Step.Compile,
@ -44,7 +45,7 @@ const LibreSslLibs = struct {
base: []const u8, base: []const u8,
skiplist: []const SkipSpec, skiplist: []const SkipSpec,
) !void { ) !void {
const dir = try b.build_root.handle.openIterableDir(base, .{}); const dir = try b.build_root.handle.openDir(base, .{ .iterate = true });
var walker = try dir.walk(b.allocator); var walker = try dir.walk(b.allocator);
defer walker.deinit(); defer walker.deinit();
@ -73,6 +74,7 @@ pub fn libresslBuild(
options: LibreSslBuildOptions, options: LibreSslBuildOptions,
) !LibreSslLibs { ) !LibreSslLibs {
const libressl_libs: LibreSslLibs = .{ const libressl_libs: LibreSslLibs = .{
.target = options.target,
.libcrypto = b.addStaticLibrary(.{ .libcrypto = b.addStaticLibrary(.{
.name = options.libcrypto_name, .name = options.libcrypto_name,
.target = options.target, .target = options.target,
@ -94,7 +96,7 @@ pub fn libresslBuild(
libressl_libs.linkLibC(); libressl_libs.linkLibC();
const tinfo = libressl_libs.libcrypto.target_info.target; const tinfo = libressl_libs.target.result;
const common_cflags = [_][]const u8{ const common_cflags = [_][]const u8{
"-fno-sanitize=undefined", "-fno-sanitize=undefined",
@ -106,13 +108,13 @@ pub fn libresslBuild(
else => &common_cflags, else => &common_cflags,
}; };
libressl_libs.libcrypto.addCSourceFiles(&libcrypto_sources, cflags); libressl_libs.libcrypto.addCSourceFiles(.{ .files = &libcrypto_sources, .flags = cflags });
libressl_libs.libcrypto.addCSourceFiles(&libcrypto_nonasm, cflags); libressl_libs.libcrypto.addCSourceFiles(.{ .files = &libcrypto_nonasm, .flags = cflags });
libressl_libs.libcrypto.addCSourceFiles(&libcrypto_nonasm_or_armv4, cflags); libressl_libs.libcrypto.addCSourceFiles(.{ .files = &libcrypto_nonasm_or_armv4, .flags = cflags });
libressl_libs.libssl.addCSourceFiles(&libssl_sources, cflags); libressl_libs.libssl.addCSourceFiles(.{ .files = &libssl_sources, .flags = cflags });
libressl_libs.libtls.addCSourceFiles(&libtls_sources, cflags); libressl_libs.libtls.addCSourceFiles(.{ .files = &libtls_sources, .flags = cflags });
libressl_libs.defineCMacro("LIBRESSL_INTERNAL", null); libressl_libs.defineCMacro("LIBRESSL_INTERNAL", null);
libressl_libs.defineCMacro("OPENSSL_NO_HW_PADLOCK", null); libressl_libs.defineCMacro("OPENSSL_NO_HW_PADLOCK", null);
@ -123,8 +125,8 @@ pub fn libresslBuild(
switch (tinfo.os.tag) { switch (tinfo.os.tag) {
.macos => { .macos => {
libressl_libs.libcrypto.addCSourceFiles(&libcrypto_unix_sources, cflags); libressl_libs.libcrypto.addCSourceFiles(.{ .files = &libcrypto_unix_sources, .flags = cflags });
libressl_libs.libcrypto.addCSourceFiles(&libcrypto_macos_compat, cflags); libressl_libs.libcrypto.addCSourceFiles(.{ .files = &libcrypto_macos_compat, .flags = cflags });
libressl_libs.defineCMacro("HAVE_CLOCK_GETTIME", null); libressl_libs.defineCMacro("HAVE_CLOCK_GETTIME", null);
libressl_libs.defineCMacro("HAVE_ASPRINTF", null); libressl_libs.defineCMacro("HAVE_ASPRINTF", null);
@ -147,8 +149,8 @@ pub fn libresslBuild(
libressl_libs.defineCMacro("HAVE_NETINET_IP_H", null); libressl_libs.defineCMacro("HAVE_NETINET_IP_H", null);
}, },
.linux => { .linux => {
libressl_libs.libcrypto.addCSourceFiles(&libcrypto_unix_sources, cflags); libressl_libs.libcrypto.addCSourceFiles(.{ .files = &libcrypto_unix_sources, .flags = cflags });
libressl_libs.libcrypto.addCSourceFiles(&libcrypto_linux_compat, cflags); libressl_libs.libcrypto.addCSourceFiles(.{ .files = &libcrypto_linux_compat, .flags = cflags });
libressl_libs.defineCMacro("_DEFAULT_SOURCE", null); libressl_libs.defineCMacro("_DEFAULT_SOURCE", null);
libressl_libs.defineCMacro("_BSD_SOURCE", null); libressl_libs.defineCMacro("_BSD_SOURCE", null);
@ -176,9 +178,9 @@ pub fn libresslBuild(
libressl_libs.defineCMacro("HAVE_NETINET_IP_H", null); libressl_libs.defineCMacro("HAVE_NETINET_IP_H", null);
if (tinfo.abi.isGnu()) { if (tinfo.abi.isGnu()) {
libressl_libs.libcrypto.addCSourceFiles(&libcrypto_linux_glibc_compat, cflags); libressl_libs.libcrypto.addCSourceFiles(.{ .files = &libcrypto_linux_glibc_compat, .flags = cflags });
} else if (tinfo.abi.isMusl()) { } else if (tinfo.abi.isMusl()) {
libressl_libs.libcrypto.addCSourceFiles(&libcrypto_linux_musl_compat, cflags); libressl_libs.libcrypto.addCSourceFiles(.{ .files = &libcrypto_linux_musl_compat, .flags = cflags });
libressl_libs.defineCMacro("HAVE_STRLCAT", null); libressl_libs.defineCMacro("HAVE_STRLCAT", null);
libressl_libs.defineCMacro("HAVE_STRLCPY", null); libressl_libs.defineCMacro("HAVE_STRLCPY", null);
@ -188,9 +190,9 @@ pub fn libresslBuild(
libressl_libs.linkSystemLibrary("pthread"); libressl_libs.linkSystemLibrary("pthread");
}, },
.windows => { .windows => {
libressl_libs.libcrypto.addCSourceFiles(&libcrypto_windows_sources, cflags); libressl_libs.libcrypto.addCSourceFiles(.{ .files = &libcrypto_windows_sources, .flags = cflags });
libressl_libs.libcrypto.addCSourceFiles(&libcrypto_windows_compat, cflags); libressl_libs.libcrypto.addCSourceFiles(.{ .files = &libcrypto_windows_compat, .flags = cflags });
libressl_libs.libtls.addCSourceFiles(&libtls_windows_sources, cflags); libressl_libs.libtls.addCSourceFiles(.{ .files = &libtls_windows_sources, .flags = cflags });
if (tinfo.abi != .msvc) { if (tinfo.abi != .msvc) {
libressl_libs.defineCMacro("_GNU_SOURCE", null); libressl_libs.defineCMacro("_GNU_SOURCE", null);