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 4bbf9ad43f
commit 9f74aeb1d2
Signed by: torque
SSH Key Fingerprint: SHA256:nCrXefBNo6EbjNSQhv0nXmEg/VuNq3sMF5b8zETw3Tk

View File

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