From 1c449ccd8c24d38e567f08ee20a350a1eea056dd Mon Sep 17 00:00:00 2001 From: dec05eba Date: Thu, 25 Jan 2024 23:23:54 +0100 Subject: Fix build for latest zig --- build.zig | 72 ++++++++++++++++++++++++--------------------------------------- 1 file changed, 27 insertions(+), 45 deletions(-) (limited to 'build.zig') diff --git a/build.zig b/build.zig index d0e4092..ba6f638 100644 --- a/build.zig +++ b/build.zig @@ -1,29 +1,17 @@ const std = @import("std"); -pub fn build(b: *std.Build) void { +pub fn build(b: *std.Build) !void { const target = b.standardTargetOptions(.{}); const optimize = b.standardOptimizeOption(.{}); + const single_threaded = true; // TODO: remove, inherit from parent - const lib = b.addStaticLibrary(.{ - .name = "xcb-zig", - .target = target, - .optimize = optimize, - }); + var libxcb = try buildXcb(b, &target, optimize, single_threaded); - const single_threaded = true; - const libXcb = buildXcb(b, &target, optimize, single_threaded); + libxcb.addIncludePath(.{ .path = "depends/libxcb/include" }); + libxcb.installHeadersDirectory("depends/libxcb/include", "."); - lib.linkLibrary(libXcb); - lib.linkLibC(); - lib.strip = optimize != std.builtin.OptimizeMode.Debug; - lib.want_lto = optimize != std.builtin.OptimizeMode.Debug; - lib.single_threaded = single_threaded; - - lib.addIncludePath(.{ .path = "depends/libxcb/include" }); - lib.installHeadersDirectory("depends/libxcb/include", "."); - - lib.addIncludePath(.{ .path = "depends/libxcb/depends/xorgproto/include" }); - lib.installHeadersDirectory("depends/libxcb/depends/xorgproto/include", "."); + libxcb.addIncludePath(.{ .path = "depends/libxcb/depends/xorgproto/include" }); + libxcb.installHeadersDirectory("depends/libxcb/depends/xorgproto/include", "."); const util_deps = [_][]const u8 { "depends/libxcb-keysyms", @@ -36,8 +24,8 @@ pub fn build(b: *std.Build) void { }; for(&util_deps) |dep| { - lib.addIncludePath(.{ .path = dep }); - lib.installHeadersDirectoryOptions(.{ + libxcb.addIncludePath(.{ .path = dep }); + libxcb.installHeadersDirectoryOptions(.{ .source_dir = .{ .path = dep }, .install_dir = .header, .install_subdir = ".", @@ -45,14 +33,17 @@ pub fn build(b: *std.Build) void { }); } - b.installArtifact(lib); + b.installArtifact(libxcb); } -fn buildXau(b: *std.Build, target: *const std.zig.CrossTarget, optimize: std.builtin.OptimizeMode, single_threaded: bool) *std.Build.Step.Compile { +fn buildXau(b: *std.Build, target: *const std.Build.ResolvedTarget, optimize: std.builtin.OptimizeMode, single_threaded: bool) *std.Build.Step.Compile { const lib = b.addStaticLibrary(.{ .name = "libxau", .target = target.*, .optimize = optimize, + .strip = optimize != std.builtin.OptimizeMode.Debug, + .single_threaded = single_threaded, + .link_libc = true, }); lib.addCSourceFiles(.{ @@ -75,26 +66,26 @@ fn buildXau(b: *std.Build, target: *const std.zig.CrossTarget, optimize: std.bui lib.addIncludePath(.{ .path = "depends/libxcb/depends/libxau/include" }); lib.addIncludePath(.{ .path = "depends/libxcb/depends/libxdmcp/include" }); lib.addIncludePath(.{ .path = "depends/libxcb/depends/xorgproto/include" }); - lib.linkLibC(); - lib.strip = optimize != std.builtin.OptimizeMode.Debug; lib.want_lto = optimize != std.builtin.OptimizeMode.Debug; - lib.single_threaded = single_threaded; return lib; } -fn buildXdmcp(b: *std.Build, target: *const std.zig.CrossTarget, optimize: std.builtin.OptimizeMode, single_threaded: bool) *std.Build.Step.Compile { +fn buildXdmcp(b: *std.Build, target: *const std.Build.ResolvedTarget, optimize: std.builtin.OptimizeMode, single_threaded: bool) !*std.Build.Step.Compile { const lib = b.addStaticLibrary(.{ .name = "libxdmcp", .target = target.*, .optimize = optimize, + .strip = optimize != std.builtin.OptimizeMode.Debug, + .single_threaded = single_threaded, + .link_libc = true, }); var flags = std.ArrayList([]const u8).init(b.allocator); - flags.append("-DHAVE_CONFIG_H") catch @panic("OOM"); - if (target.abi) |abi| { + try flags.append("-DHAVE_CONFIG_H"); + if (target.query.abi) |abi| { if (abi.isMusl()) { - flags.append("-D__MUSL__") catch @panic("OOM"); + try flags.append("-D__MUSL__"); } } @@ -116,22 +107,22 @@ fn buildXdmcp(b: *std.Build, target: *const std.zig.CrossTarget, optimize: std.b lib.addIncludePath(.{ .path = "depends/libxcb/depends/libxdmcp" }); lib.addIncludePath(.{ .path = "depends/libxcb/depends/libxdmcp/include" }); lib.addIncludePath(.{ .path = "depends/libxcb/depends/xorgproto/include" }); - lib.linkLibC(); - lib.strip = optimize != std.builtin.OptimizeMode.Debug; lib.want_lto = optimize != std.builtin.OptimizeMode.Debug; - lib.single_threaded = single_threaded; return lib; } -fn buildXcb(b: *std.Build, target: *const std.zig.CrossTarget, optimize: std.builtin.OptimizeMode, single_threaded: bool) *std.Build.Step.Compile { +fn buildXcb(b: *std.Build, target: *const std.Build.ResolvedTarget, optimize: std.builtin.OptimizeMode, single_threaded: bool) !*std.Build.Step.Compile { const libXau = buildXau(b, target, optimize, single_threaded); - const libXdmcp = buildXdmcp(b, target, optimize, single_threaded); + const libXdmcp = try buildXdmcp(b, target, optimize, single_threaded); const libXcb = b.addStaticLibrary(.{ - .name = "libxcb", + .name = "xcb-zig", .target = target.*, .optimize = optimize, + .strip = optimize != std.builtin.OptimizeMode.Debug, + .single_threaded = single_threaded, + .link_libc = true, }); libXcb.linkLibrary(libXau); @@ -214,18 +205,9 @@ fn buildXcb(b: *std.Build, target: *const std.zig.CrossTarget, optimize: std.bui libXcb.addIncludePath(.{ .path = "depends/libxcb/depends/libxau/include" }); libXcb.addIncludePath(.{ .path = "depends/libxcb/depends/libxdmcp/include" }); libXcb.addIncludePath(.{ .path = "depends/libxcb/depends/xorgproto/include" }); - libXcb.addIncludePath(.{ .path = "depends/libxcb-render-util" }); - libXcb.addIncludePath(.{ .path = "depends/libxcb-image" }); - libXcb.addIncludePath(.{ .path = "depends/libxcb-util" }); - libXcb.addIncludePath(.{ .path = "depends/libxcb-keysyms" }); - libXcb.addIncludePath(.{ .path = "depends/libxcb-errors" }); - libXcb.addIncludePath(.{ .path = "depends/libxcb-wm" }); libXcb.addIncludePath(.{ .path = "depends/libxcb/include/xcb" }); libXcb.addIncludePath(.{ .path = "depends/libxcb/include" }); - libXcb.linkLibC(); - libXcb.strip = optimize != std.builtin.OptimizeMode.Debug; libXcb.want_lto = optimize != std.builtin.OptimizeMode.Debug; - libXcb.single_threaded = single_threaded; return libXcb; } -- cgit v1.2.3