From c6e187865af5383758c2aa46cf3d61005c24ebbf Mon Sep 17 00:00:00 2001 From: Mitchell Hashimoto Date: Mon, 2 Sep 2024 20:27:39 -0700 Subject: [PATCH] pkg/wuffs: define build defines separately, not in defs.zig --- pkg/wuffs/build.zig | 26 ++++++++++++-------------- pkg/wuffs/src/c.zig | 18 +++++++++++++++--- pkg/wuffs/src/defs.zig | 21 --------------------- 3 files changed, 27 insertions(+), 38 deletions(-) delete mode 100644 pkg/wuffs/src/defs.zig diff --git a/pkg/wuffs/build.zig b/pkg/wuffs/build.zig index 967acf75c..ac8bc90eb 100644 --- a/pkg/wuffs/build.zig +++ b/pkg/wuffs/build.zig @@ -1,6 +1,6 @@ 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(.{}); @@ -13,18 +13,16 @@ pub fn build(b: *std.Build) void { .link_libc = true, }); + var flags = std.ArrayList([]const u8).init(b.allocator); + defer flags.deinit(); + try flags.append("-DWUFFS_IMPLEMENTATION"); + inline for (@import("src/c.zig").defines) |key| { + try flags.append("-D" ++ key); + } + module.addIncludePath(wuffs.path("release/c")); - module.addCSourceFile( - .{ - .file = wuffs.path("release/c/wuffs-v0.4.c"), - .flags = f: { - const flags = @import("src/defs.zig").build; - var a: [flags.len][]const u8 = undefined; - inline for (flags, 0..) |flag, i| { - a[i] = "-D" ++ flag ++ "=1"; - } - break :f &a; - }, - }, - ); + module.addCSourceFile(.{ + .file = wuffs.path("release/c/wuffs-v0.4.c"), + .flags = flags.items, + }); } diff --git a/pkg/wuffs/src/c.zig b/pkg/wuffs/src/c.zig index ab86dadcb..d94247df3 100644 --- a/pkg/wuffs/src/c.zig +++ b/pkg/wuffs/src/c.zig @@ -1,6 +1,18 @@ pub const c = @cImport({ - for (@import("defs.zig").cimport) |d| { - @cDefine(d, "1"); - } + for (defines) |d| @cDefine(d, "1"); @cInclude("wuffs-v0.4.c"); }); + +/// All the C macros defined so that the header matches the build. +pub const defines: []const []const u8 = &[_][]const u8{ + "WUFFS_CONFIG__MODULES", + "WUFFS_CONFIG__MODULE__AUX__BASE", + "WUFFS_CONFIG__MODULE__AUX__IMAGE", + "WUFFS_CONFIG__MODULE__BASE", + "WUFFS_CONFIG__MODULE__ADLER32", + "WUFFS_CONFIG__MODULE__CRC32", + "WUFFS_CONFIG__MODULE__DEFLATE", + "WUFFS_CONFIG__MODULE__JPEG", + "WUFFS_CONFIG__MODULE__PNG", + "WUFFS_CONFIG__MODULE__ZLIB", +}; diff --git a/pkg/wuffs/src/defs.zig b/pkg/wuffs/src/defs.zig deleted file mode 100644 index dacaa914d..000000000 --- a/pkg/wuffs/src/defs.zig +++ /dev/null @@ -1,21 +0,0 @@ -//! Define all of the C macros that WUFFS uses to configure itself here so -//! that the settings used to import the C "header" file stay in sync with the -//! settings used build the C "source" file. - -pub const cimport = [_][]const u8{ - "WUFFS_CONFIG__MODULES", - "WUFFS_CONFIG__MODULE__AUX__BASE", - "WUFFS_CONFIG__MODULE__AUX__IMAGE", - "WUFFS_CONFIG__MODULE__BASE", - "WUFFS_CONFIG__MODULE__ADLER32", - "WUFFS_CONFIG__MODULE__CRC32", - "WUFFS_CONFIG__MODULE__DEFLATE", - "WUFFS_CONFIG__MODULE__JPEG", - "WUFFS_CONFIG__MODULE__PNG", - "WUFFS_CONFIG__MODULE__ZLIB", -}; - -// The only difference should be that the "build" defines WUFFS_IMPLEMENTATION -pub const build = [_][]const u8{ - "WUFFS_IMPLEMENTATION", -} ++ cimport;