freetype: fix and re-enable harfbuzz

This wasn't actually broken due to a Zig bug, but rather due to some
pragmas in Harfbuzz which forcibly enable this -Werror. Luckily, there's
a macro you can define to disable them.
This commit is contained in:
mlugg 2023-06-12 19:49:46 +01:00 committed by Stephen Gutekanst
parent 39959dd615
commit 867d111f6d

View file

@ -96,32 +96,29 @@ pub fn testStep(b: *Build, optimize: std.builtin.OptimizeMode, target: std.zig.C
.freetype = .{
.brotli = true,
},
// TODO: harfbuzz is broken
// .harfbuzz = .{},
.harfbuzz = .{},
});
main_tests.main_pkg_path = sdkPath("/");
b.installArtifact(main_tests);
// TODO: harfbuzz is broken
// const harfbuzz_tests = b.addTest(.{
// .name = "harfbuzz-tests",
// .root_source_file = .{ .path = sdkPath("/src/harfbuzz/main.zig") },
// .target = target,
// .optimize = optimize,
// });
// harfbuzz_tests.addModule("freetype", module(b));
// link(b, harfbuzz_tests, .{
// .freetype = .{
// .brotli = true,
// },
// .harfbuzz = .{},
// });
// harfbuzz_tests.main_pkg_path = sdkPath("/");
// b.installArtifact(harfbuzz_tests);
const harfbuzz_tests = b.addTest(.{
.name = "harfbuzz-tests",
.root_source_file = .{ .path = sdkPath("/src/harfbuzz/main.zig") },
.target = target,
.optimize = optimize,
});
harfbuzz_tests.addModule("freetype", module(b));
link(b, harfbuzz_tests, .{
.freetype = .{
.brotli = true,
},
.harfbuzz = .{},
});
harfbuzz_tests.main_pkg_path = sdkPath("/");
b.installArtifact(harfbuzz_tests);
const main_tests_run = b.addRunArtifact(main_tests);
// TODO: harfbuzz is broken
// main_tests_run.step.dependOn(&b.addRunArtifact(harfbuzz_tests).step);
main_tests_run.step.dependOn(&b.addRunArtifact(harfbuzz_tests).step);
return main_tests_run;
}
@ -200,12 +197,12 @@ pub fn buildHarfbuzz(b: *Build, optimize: std.builtin.OptimizeMode, target: std.
.target = target,
.optimize = optimize,
});
// TODO: `-Wno-error` is not respected for some reason; as a result harfbuzz builds are broken.
lib.addCSourceFile(hb_root ++ "/src/harfbuzz.cc", &.{"-Wno-error=cast-function-type-strict"});
lib.addCSourceFile(hb_root ++ "/src/harfbuzz.cc", &.{});
lib.linkLibCpp();
lib.addIncludePath(hb_include_path);
lib.addIncludePath(ft_include_path);
lib.defineCMacro("HAVE_FREETYPE", "1");
lib.defineCMacro("HB_NO_PRAGMA_GCC_DIAGNOSTIC_ERROR", "1");
if (options.install_libs)
b.installArtifact(lib);