libxkbcommon/build.zig

89 lines
3.1 KiB
Zig

const std = @import("std");
const VERSION = std.SemanticVersion{ .major = 1, .minor = 6, .patch = 0 };
pub fn build(b: *std.Build) void {
const target = b.standardTargetOptions(.{});
const optimize = b.standardOptimizeOption(.{});
// const enable_x11 = b.option(bool, "enable-x11", "Whether to enable x11 compatibility");
const xkb_config_root = b.option([]const u8, "xkb-config-root", "Root directory for xkb config") orelse "/usr/share/X11/xkb";
const x_locale_root = b.option([]const u8, "x-locale-root", "x locale root") orelse "/usr/share/X11/locale";
const config_header = b.addConfigHeader(.{}, .{
.EXIT_INVALID_USAGE = @as(i64, 2),
.LIBXKBCOMMON_VERSION = b.fmt("\"{}\"", .{VERSION}),
.DFLT_XKB_CONFIG_ROOT = xkb_config_root,
.DFLT_XKB_CONFIG_EXTRA_PATH = b.fmt("\"{s}\"", .{"/usr/share/xkb"}),
.XLOCALEDIR = b.fmt("\"{s}\"", .{x_locale_root}),
.DEFAULT_XKB_RULES = "\"evdev\"",
.DEFAULT_XKB_MODEL = "\"pc105\"",
.DEFAULT_XKB_LAYOUT = "\"us\"",
.DEFAULT_XKB_VARIANT = "NULL",
.DEFAULT_XKB_OPTIONS = "NULL",
.HAVE_STRNDUP = @as(i64, 1),
.HAVE_MMAP = @as(i64, 1),
});
// _ = b.run(&.{ "bison", "--defines=src/xkbcomp/parser.h", "-o", "src/xkbcomp/parser.c", "-p", "_xkbcommon_", "src/xkbcomp/parser.y" });
const xkbcommon = b.addStaticLibrary(.{
.name = "xkbcommon",
.target = target,
.optimize = optimize,
});
xkbcommon.root_module.c_std = .C11;
xkbcommon.addConfigHeader(config_header);
xkbcommon.addCSourceFiles(.{
.files = &.{
"src/compose/parser.c",
"src/compose/paths.c",
"src/compose/state.c",
"src/compose/table.c",
"src/xkbcomp/action.c",
"src/xkbcomp/ast-build.c",
"src/xkbcomp/compat.c",
"src/xkbcomp/expr.c",
"src/xkbcomp/include.c",
"src/xkbcomp/keycodes.c",
"src/xkbcomp/keymap.c",
"src/xkbcomp/keymap-dump.c",
"src/xkbcomp/keywords.c",
"src/xkbcomp/parser.c",
"src/xkbcomp/rules.c",
"src/xkbcomp/scanner.c",
"src/xkbcomp/symbols.c",
"src/xkbcomp/types.c",
"src/xkbcomp/vmod.c",
"src/xkbcomp/xkbcomp.c",
"src/atom.c",
"src/context.c",
"src/context-priv.c",
"src/keysym.c",
"src/keysym-utf.c",
"src/keymap.c",
"src/keymap-priv.c",
"src/state.c",
"src/text.c",
"src/utf8.c",
"src/utils.c",
},
});
xkbcommon.installHeadersDirectoryOptions(.{
.source_dir = .{ .path = "include/xkbcommon" },
.install_dir = .header,
.install_subdir = "xkbcommon",
});
xkbcommon.addIncludePath(.{ .path = "src" });
xkbcommon.addIncludePath(.{ .path = "include/" });
xkbcommon.linkLibC();
b.installArtifact(xkbcommon);
const zig_bindings = b.addModule("xkbcommon", .{
.root_source_file = .{ .path = "zig/xkbcommon.zig" },
});
zig_bindings.linkLibrary(xkbcommon);
}