pkg/fontconfig: disable ubsan (reported upstream)

This commit is contained in:
Mitchell Hashimoto
2022-09-14 09:23:02 -07:00
parent 4ca71eef7c
commit b4d571e018
5 changed files with 47 additions and 2 deletions

View File

@ -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()) {

View File

@ -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));
}
};

View File

@ -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();
}

View File

@ -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());

View File

@ -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");