add build.zig
parent
e325e65eb8
commit
d6a9539e0c
|
@ -0,0 +1,83 @@
|
||||||
|
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 lib = b.addStaticLibrary(.{
|
||||||
|
.name = "xkbcommon",
|
||||||
|
.target = target,
|
||||||
|
.optimize = optimize,
|
||||||
|
});
|
||||||
|
lib.root_module.c_std = .C11;
|
||||||
|
lib.addConfigHeader(config_header);
|
||||||
|
lib.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",
|
||||||
|
},
|
||||||
|
});
|
||||||
|
lib.installHeadersDirectoryOptions(.{
|
||||||
|
.source_dir = .{ .path = "include/xkbcommon" },
|
||||||
|
.install_dir = .header,
|
||||||
|
.install_subdir = "xkbcommon",
|
||||||
|
});
|
||||||
|
lib.addIncludePath(.{ .path = "src" });
|
||||||
|
lib.addIncludePath(.{ .path = "include/" });
|
||||||
|
lib.linkLibC();
|
||||||
|
b.installArtifact(lib);
|
||||||
|
}
|
|
@ -0,0 +1,60 @@
|
||||||
|
.{
|
||||||
|
.name = "libxkbcommon",
|
||||||
|
.version = "1.6.0",
|
||||||
|
|
||||||
|
// This field is optional.
|
||||||
|
// This is currently advisory only; Zig does not yet do anything
|
||||||
|
// with this value.
|
||||||
|
//.minimum_zig_version = "0.11.0",
|
||||||
|
|
||||||
|
// This field is optional.
|
||||||
|
// Each dependency must either provide a `url` and `hash`, or a `path`.
|
||||||
|
// `zig build --fetch` can be used to fetch all dependencies of a package, recursively.
|
||||||
|
// Once all dependencies are fetched, `zig build` no longer requires
|
||||||
|
// internet connectivity.
|
||||||
|
.dependencies = .{
|
||||||
|
// See `zig fetch --save <url>` for a command-line interface for adding dependencies.
|
||||||
|
//.example = .{
|
||||||
|
// // When updating this field to a new URL, be sure to delete the corresponding
|
||||||
|
// // `hash`, otherwise you are communicating that you expect to find the old hash at
|
||||||
|
// // the new URL.
|
||||||
|
// .url = "https://example.com/foo.tar.gz",
|
||||||
|
//
|
||||||
|
// // This is computed from the file contents of the directory of files that is
|
||||||
|
// // obtained after fetching `url` and applying the inclusion rules given by
|
||||||
|
// // `paths`.
|
||||||
|
// //
|
||||||
|
// // This field is the source of truth; packages do not come from a `url`; they
|
||||||
|
// // come from a `hash`. `url` is just one of many possible mirrors for how to
|
||||||
|
// // obtain a package matching this `hash`.
|
||||||
|
// //
|
||||||
|
// // Uses the [multihash](https://multiformats.io/multihash/) format.
|
||||||
|
// .hash = "...",
|
||||||
|
//
|
||||||
|
// // When this is provided, the package is found in a directory relative to the
|
||||||
|
// // build root. In this case the package's hash is irrelevant and therefore not
|
||||||
|
// // computed. This field and `url` are mutually exclusive.
|
||||||
|
// .path = "foo",
|
||||||
|
//},
|
||||||
|
},
|
||||||
|
|
||||||
|
// Specifies the set of files and directories that are included in this package.
|
||||||
|
// Only files and directories listed here are included in the `hash` that
|
||||||
|
// is computed for this package.
|
||||||
|
// Paths are relative to the build root. Use the empty string (`""`) to refer to
|
||||||
|
// the build root itself.
|
||||||
|
// A directory listed here means that all files within, recursively, are included.
|
||||||
|
.paths = .{
|
||||||
|
// This makes *all* files, recursively, included in this package. It is generally
|
||||||
|
// better to explicitly list the files and directories instead, to insure that
|
||||||
|
// fetching from tarballs, file system paths, and version control all result
|
||||||
|
// in the same contents hash.
|
||||||
|
"",
|
||||||
|
// For example...
|
||||||
|
//"build.zig",
|
||||||
|
//"build.zig.zon",
|
||||||
|
//"src",
|
||||||
|
//"LICENSE",
|
||||||
|
//"README.md",
|
||||||
|
},
|
||||||
|
}
|
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,171 @@
|
||||||
|
/* A Bison parser, made by GNU Bison 3.8.2. */
|
||||||
|
|
||||||
|
/* Bison interface for Yacc-like parsers in C
|
||||||
|
|
||||||
|
Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2021 Free Software Foundation,
|
||||||
|
Inc.
|
||||||
|
|
||||||
|
This program is free software: you can redistribute it and/or modify
|
||||||
|
it under the terms of the GNU General Public License as published by
|
||||||
|
the Free Software Foundation, either version 3 of the License, or
|
||||||
|
(at your option) any later version.
|
||||||
|
|
||||||
|
This program is distributed in the hope that it will be useful,
|
||||||
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
GNU General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with this program. If not, see <https://www.gnu.org/licenses/>. */
|
||||||
|
|
||||||
|
/* As a special exception, you may create a larger work that contains
|
||||||
|
part or all of the Bison parser skeleton and distribute that work
|
||||||
|
under terms of your choice, so long as that work isn't itself a
|
||||||
|
parser generator using the skeleton or a modified version thereof
|
||||||
|
as a parser skeleton. Alternatively, if you modify or redistribute
|
||||||
|
the parser skeleton itself, you may (at your option) remove this
|
||||||
|
special exception, which will cause the skeleton and the resulting
|
||||||
|
Bison output files to be licensed under the GNU General Public
|
||||||
|
License without this special exception.
|
||||||
|
|
||||||
|
This special exception was added by the Free Software Foundation in
|
||||||
|
version 2.2 of Bison. */
|
||||||
|
|
||||||
|
/* DO NOT RELY ON FEATURES THAT ARE NOT DOCUMENTED in the manual,
|
||||||
|
especially those whose name start with YY_ or yy_. They are
|
||||||
|
private implementation details that can be changed or removed. */
|
||||||
|
|
||||||
|
#ifndef YY__XKBCOMMON_SRC_XKBCOMP_PARSER_H_INCLUDED
|
||||||
|
# define YY__XKBCOMMON_SRC_XKBCOMP_PARSER_H_INCLUDED
|
||||||
|
/* Debug traces. */
|
||||||
|
#ifndef YYDEBUG
|
||||||
|
# define YYDEBUG 0
|
||||||
|
#endif
|
||||||
|
#if YYDEBUG
|
||||||
|
extern int _xkbcommon_debug;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* Token kinds. */
|
||||||
|
#ifndef YYTOKENTYPE
|
||||||
|
# define YYTOKENTYPE
|
||||||
|
enum yytokentype
|
||||||
|
{
|
||||||
|
YYEMPTY = -2,
|
||||||
|
END_OF_FILE = 0, /* END_OF_FILE */
|
||||||
|
YYerror = 256, /* error */
|
||||||
|
YYUNDEF = 257, /* "invalid token" */
|
||||||
|
ERROR_TOK = 255, /* ERROR_TOK */
|
||||||
|
XKB_KEYMAP = 1, /* XKB_KEYMAP */
|
||||||
|
XKB_KEYCODES = 2, /* XKB_KEYCODES */
|
||||||
|
XKB_TYPES = 3, /* XKB_TYPES */
|
||||||
|
XKB_SYMBOLS = 4, /* XKB_SYMBOLS */
|
||||||
|
XKB_COMPATMAP = 5, /* XKB_COMPATMAP */
|
||||||
|
XKB_GEOMETRY = 6, /* XKB_GEOMETRY */
|
||||||
|
XKB_SEMANTICS = 7, /* XKB_SEMANTICS */
|
||||||
|
XKB_LAYOUT = 8, /* XKB_LAYOUT */
|
||||||
|
INCLUDE = 10, /* INCLUDE */
|
||||||
|
OVERRIDE = 11, /* OVERRIDE */
|
||||||
|
AUGMENT = 12, /* AUGMENT */
|
||||||
|
REPLACE = 13, /* REPLACE */
|
||||||
|
ALTERNATE = 14, /* ALTERNATE */
|
||||||
|
VIRTUAL_MODS = 20, /* VIRTUAL_MODS */
|
||||||
|
TYPE = 21, /* TYPE */
|
||||||
|
INTERPRET = 22, /* INTERPRET */
|
||||||
|
ACTION_TOK = 23, /* ACTION_TOK */
|
||||||
|
KEY = 24, /* KEY */
|
||||||
|
ALIAS = 25, /* ALIAS */
|
||||||
|
GROUP = 26, /* GROUP */
|
||||||
|
MODIFIER_MAP = 27, /* MODIFIER_MAP */
|
||||||
|
INDICATOR = 28, /* INDICATOR */
|
||||||
|
SHAPE = 29, /* SHAPE */
|
||||||
|
KEYS = 30, /* KEYS */
|
||||||
|
ROW = 31, /* ROW */
|
||||||
|
SECTION = 32, /* SECTION */
|
||||||
|
OVERLAY = 33, /* OVERLAY */
|
||||||
|
TEXT = 34, /* TEXT */
|
||||||
|
OUTLINE = 35, /* OUTLINE */
|
||||||
|
SOLID = 36, /* SOLID */
|
||||||
|
LOGO = 37, /* LOGO */
|
||||||
|
VIRTUAL = 38, /* VIRTUAL */
|
||||||
|
EQUALS = 40, /* EQUALS */
|
||||||
|
PLUS = 41, /* PLUS */
|
||||||
|
MINUS = 42, /* MINUS */
|
||||||
|
DIVIDE = 43, /* DIVIDE */
|
||||||
|
TIMES = 44, /* TIMES */
|
||||||
|
OBRACE = 45, /* OBRACE */
|
||||||
|
CBRACE = 46, /* CBRACE */
|
||||||
|
OPAREN = 47, /* OPAREN */
|
||||||
|
CPAREN = 48, /* CPAREN */
|
||||||
|
OBRACKET = 49, /* OBRACKET */
|
||||||
|
CBRACKET = 50, /* CBRACKET */
|
||||||
|
DOT = 51, /* DOT */
|
||||||
|
COMMA = 52, /* COMMA */
|
||||||
|
SEMI = 53, /* SEMI */
|
||||||
|
EXCLAM = 54, /* EXCLAM */
|
||||||
|
INVERT = 55, /* INVERT */
|
||||||
|
STRING = 60, /* STRING */
|
||||||
|
INTEGER = 61, /* INTEGER */
|
||||||
|
FLOAT = 62, /* FLOAT */
|
||||||
|
IDENT = 63, /* IDENT */
|
||||||
|
KEYNAME = 64, /* KEYNAME */
|
||||||
|
PARTIAL = 70, /* PARTIAL */
|
||||||
|
DEFAULT = 71, /* DEFAULT */
|
||||||
|
HIDDEN = 72, /* HIDDEN */
|
||||||
|
ALPHANUMERIC_KEYS = 73, /* ALPHANUMERIC_KEYS */
|
||||||
|
MODIFIER_KEYS = 74, /* MODIFIER_KEYS */
|
||||||
|
KEYPAD_KEYS = 75, /* KEYPAD_KEYS */
|
||||||
|
FUNCTION_KEYS = 76, /* FUNCTION_KEYS */
|
||||||
|
ALTERNATE_GROUP = 77 /* ALTERNATE_GROUP */
|
||||||
|
};
|
||||||
|
typedef enum yytokentype yytoken_kind_t;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* Value type. */
|
||||||
|
#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
|
||||||
|
union YYSTYPE
|
||||||
|
{
|
||||||
|
#line 165 "src/xkbcomp/parser.y"
|
||||||
|
|
||||||
|
int64_t num;
|
||||||
|
enum xkb_file_type file_type;
|
||||||
|
char *str;
|
||||||
|
xkb_atom_t atom;
|
||||||
|
enum merge_mode merge;
|
||||||
|
enum xkb_map_flags mapFlags;
|
||||||
|
xkb_keysym_t keysym;
|
||||||
|
ParseCommon *any;
|
||||||
|
struct { ParseCommon *head; ParseCommon *last; } anyList;
|
||||||
|
ExprDef *expr;
|
||||||
|
struct { ExprDef *head; ExprDef *last; } exprList;
|
||||||
|
VarDef *var;
|
||||||
|
struct { VarDef *head; VarDef *last; } varList;
|
||||||
|
VModDef *vmod;
|
||||||
|
struct { VModDef *head; VModDef *last; } vmodList;
|
||||||
|
InterpDef *interp;
|
||||||
|
KeyTypeDef *keyType;
|
||||||
|
SymbolsDef *syms;
|
||||||
|
ModMapDef *modMask;
|
||||||
|
GroupCompatDef *groupCompat;
|
||||||
|
LedMapDef *ledMap;
|
||||||
|
LedNameDef *ledName;
|
||||||
|
KeycodeDef *keyCode;
|
||||||
|
KeyAliasDef *keyAlias;
|
||||||
|
void *geom;
|
||||||
|
XkbFile *file;
|
||||||
|
struct { XkbFile *head; XkbFile *last; } fileList;
|
||||||
|
|
||||||
|
#line 158 "src/xkbcomp/parser.h"
|
||||||
|
|
||||||
|
};
|
||||||
|
typedef union YYSTYPE YYSTYPE;
|
||||||
|
# define YYSTYPE_IS_TRIVIAL 1
|
||||||
|
# define YYSTYPE_IS_DECLARED 1
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
int _xkbcommon_parse (struct parser_param *param);
|
||||||
|
|
||||||
|
|
||||||
|
#endif /* !YY__XKBCOMMON_SRC_XKBCOMP_PARSER_H_INCLUDED */
|
Loading…
Reference in New Issue