Init
This commit is contained in:
commit
184645ba63
73 changed files with 4983 additions and 0 deletions
31
libs/evdev/capture_out.zig
Normal file
31
libs/evdev/capture_out.zig
Normal file
|
@ -0,0 +1,31 @@
|
|||
//! Capture stdout and write it into the <file>.
|
||||
//! Usage: capture_out <file> <command> [args...]
|
||||
|
||||
const std = @import("std");
|
||||
|
||||
pub fn main() !void {
|
||||
const allocator = std.heap.page_allocator;
|
||||
|
||||
var arg_iter = std.process.args();
|
||||
defer arg_iter.deinit();
|
||||
|
||||
_ = arg_iter.next();
|
||||
const outpath = arg_iter.next() orelse unreachable;
|
||||
|
||||
var args = std.ArrayList([]const u8).init(allocator);
|
||||
defer args.deinit();
|
||||
while (arg_iter.next()) |arg| try args.append(arg);
|
||||
|
||||
const res = try std.process.Child.run(.{
|
||||
.allocator = allocator,
|
||||
.argv = args.items,
|
||||
.max_output_bytes = std.math.maxInt(usize),
|
||||
});
|
||||
|
||||
var out = try std.fs.cwd().createFile(outpath, .{});
|
||||
defer out.close();
|
||||
try out.writeAll(res.stdout);
|
||||
try std.io.getStdErr().writer().writeAll(res.stderr);
|
||||
|
||||
std.process.exit(res.term.Exited);
|
||||
}
|
74
libs/evdev/root.zig
Normal file
74
libs/evdev/root.zig
Normal file
|
@ -0,0 +1,74 @@
|
|||
const std = @import("std");
|
||||
|
||||
pub fn create(b: *std.Build, target: std.Build.ResolvedTarget, optimize: std.builtin.OptimizeMode) *std.Build.Step.Compile {
|
||||
const lib = b.addStaticLibrary(.{
|
||||
.name = "evdev",
|
||||
.target = target,
|
||||
.optimize = optimize,
|
||||
});
|
||||
|
||||
lib.linkLibC();
|
||||
lib.linkSystemLibrary("rt");
|
||||
|
||||
const evdev_dep = b.dependency("libevdev", .{
|
||||
.target = target,
|
||||
.optimize = optimize,
|
||||
});
|
||||
|
||||
lib.addConfigHeader(b.addConfigHeader(.{ .include_path = "config.h" }, .{
|
||||
._GNU_SOURCE = 1,
|
||||
}));
|
||||
|
||||
const event_names_h = b: {
|
||||
const run = b.addRunArtifact(b.addExecutable(.{
|
||||
.name = "capture_out",
|
||||
.root_source_file = b.path("libs/evdev/capture_out.zig"),
|
||||
.target = b.graph.host,
|
||||
}));
|
||||
const out = run.addOutputFileArg("libevdev/event-names.h");
|
||||
run.addFileArg(evdev_dep.path("libevdev/make-event-names.py"));
|
||||
run.addFileInput(evdev_dep.path("libevdev/libevdev.h"));
|
||||
const os = switch (target.result.os.tag) {
|
||||
.linux => "linux",
|
||||
.freebsd => "freebsd",
|
||||
else => @panic("Unsupported OS"),
|
||||
};
|
||||
run.addFileArg(evdev_dep.path(b.fmt("include/linux/{s}/input.h", .{os})));
|
||||
run.addFileArg(evdev_dep.path(b.fmt("include/linux/{s}/input-event-codes.h", .{os})));
|
||||
break :b out;
|
||||
};
|
||||
|
||||
lib.addIncludePath(event_names_h.dirname());
|
||||
lib.addIncludePath(evdev_dep.path("."));
|
||||
lib.addIncludePath(evdev_dep.path("include"));
|
||||
|
||||
const flags = &[_][]const u8{
|
||||
// c_std=gnu99
|
||||
"-std=gnu99",
|
||||
// warning_level=2
|
||||
"-Wall",
|
||||
"-Wextra",
|
||||
// cflags
|
||||
"-Wno-unused-parameter",
|
||||
"-fvisibility=hidden",
|
||||
"-Wmissing-prototypes",
|
||||
"-Wstrict-prototypes",
|
||||
// disable UB sanitizer, which is enabled by default by Zig
|
||||
"-fno-sanitize=undefined",
|
||||
"-D_FORTIFY_SOURCE=0", // really really bad (!!!) but too lazy to backport __poll_chk (sys/poll.h) to kindle glibc
|
||||
};
|
||||
lib.addCSourceFiles(.{
|
||||
.root = evdev_dep.path("."),
|
||||
.flags = flags,
|
||||
.files = &.{
|
||||
"libevdev/libevdev-uinput.c",
|
||||
"libevdev/libevdev.c",
|
||||
"libevdev/libevdev-names.c",
|
||||
},
|
||||
});
|
||||
|
||||
lib.installHeader(evdev_dep.path("libevdev/libevdev.h"), "libevdev/libevdev.h");
|
||||
lib.installHeader(evdev_dep.path("libevdev/libevdev-uinput.h"), "libevdev/libevdev-uinput.h");
|
||||
|
||||
return lib;
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue