diff --git a/pkg/fontconfig/build.zig b/pkg/fontconfig/build.zig index bb1456c1d..6196e32b1 100644 --- a/pkg/fontconfig/build.zig +++ b/pkg/fontconfig/build.zig @@ -90,8 +90,6 @@ pub fn buildFontconfig( defer flags.deinit(); try flags.appendSlice(&.{ - "-DFT2_BUILD_LIBRARY", - "-DHAVE_DIRENT_H", "-DHAVE_FCNTL_H", "-DHAVE_STDLIB_H", @@ -143,6 +141,10 @@ pub fn buildFontconfig( "-DHAVE_STDATOMIC_PRIMITIVES", "-DFC_GPERF_SIZE_T=size_t", + + // https://gitlab.freedesktop.org/fontconfig/fontconfig/-/merge_requests/231 + "-fno-sanitize=undefined", + "-fno-sanitize-trap=undefined", }); const arch = target.cpu_arch orelse builtin.cpu.arch; switch (arch.ptrBitWidth()) { diff --git a/pkg/fontconfig/config.zig b/pkg/fontconfig/config.zig new file mode 100644 index 000000000..5c60bb4fd --- /dev/null +++ b/pkg/fontconfig/config.zig @@ -0,0 +1,8 @@ +const std = @import("std"); +const c = @import("c.zig"); + +pub const Config = opaque { + pub fn destroy(self: *Config) void { + c.FcConfigDestroy(@ptrCast(*c.struct__FcConfig, self)); + } +}; diff --git a/pkg/fontconfig/init.zig b/pkg/fontconfig/init.zig index 7c896f1ee..2dce4afea 100644 --- a/pkg/fontconfig/init.zig +++ b/pkg/fontconfig/init.zig @@ -1,5 +1,22 @@ const std = @import("std"); const c = @import("c.zig"); +const Config = @import("config.zig").Config; + +pub fn init() bool { + return c.FcInit() == c.FcTrue; +} + +pub fn fini() void { + c.FcFini(); +} + +pub fn initLoadConfig() *Config { + return @ptrCast(*Config, c.FcInitLoadConfig()); +} + +pub fn initLoadConfigAndFonts() *Config { + return @ptrCast(*Config, c.FcInitLoadConfigAndFonts()); +} pub fn version() u32 { return @intCast(u32, c.FcGetVersion()); @@ -9,3 +26,18 @@ test "version" { const testing = std.testing; try testing.expect(version() > 0); } + +test "init" { + try std.testing.expect(init()); + defer fini(); +} + +test "initLoadConfig" { + var config = initLoadConfig(); + defer config.destroy(); +} + +test "initLoadConfigAndFonts" { + var config = initLoadConfigAndFonts(); + defer config.destroy(); +} diff --git a/pkg/fontconfig/main.zig b/pkg/fontconfig/main.zig index f5cee0f9d..67ec9f57b 100644 --- a/pkg/fontconfig/main.zig +++ b/pkg/fontconfig/main.zig @@ -1,5 +1,6 @@ pub const c = @import("c.zig"); pub usingnamespace @import("init.zig"); +pub usingnamespace @import("config.zig"); test { @import("std").testing.refAllDecls(@This()); diff --git a/pkg/freetype/build.zig b/pkg/freetype/build.zig index 5c35ae9be..c4cf4690c 100644 --- a/pkg/freetype/build.zig +++ b/pkg/freetype/build.zig @@ -88,6 +88,8 @@ pub fn buildFreetype( "-DHAVE_UNISTD_H", "-DHAVE_FCNTL_H", + + //"-fno-sanitize=undefined", }); if (opt.libpng.enabled) try flags.append("-DFT_CONFIG_OPTION_USE_PNG=1"); if (opt.zlib.enabled) try flags.append("-DFT_CONFIG_OPTION_SYSTEM_ZLIB=1");