96387d43e6
Commit ec98c7cd3d
fixed the default value to match the description,
however this resulted in the docs failing to build since the files are
needed in the default build case.
Update the default and description to true.
132 lines
4.9 KiB
Zig
132 lines
4.9 KiB
Zig
const std = @import("std");
|
|
|
|
pub fn build(b: *std.Build) void {
|
|
const include_libxev = b.option(bool, "libxev", "Enable support for libxev library (default: true)") orelse true;
|
|
const include_images = b.option(bool, "images", "Enable support for images (default: true)") orelse true;
|
|
const include_nvim = b.option(bool, "nvim", "Enable support for the neovim widget (default: true)") orelse true;
|
|
const include_text_input = b.option(bool, "text_input", "Enable support for the TextInput widget (default: true)") orelse true;
|
|
|
|
const options = b.addOptions();
|
|
options.addOption(bool, "libxev", include_libxev);
|
|
options.addOption(bool, "images", include_images);
|
|
options.addOption(bool, "nvim", include_nvim);
|
|
options.addOption(bool, "text_input", include_text_input);
|
|
|
|
const options_mod = options.createModule();
|
|
|
|
const target = b.standardTargetOptions(.{});
|
|
const optimize = b.standardOptimizeOption(.{});
|
|
const root_source_file = b.path("src/main.zig");
|
|
|
|
// Dependencies
|
|
const zg_dep = b.dependency("zg", .{
|
|
.optimize = optimize,
|
|
.target = target,
|
|
});
|
|
const zigimg_dep = if (include_images) b.lazyDependency("zigimg", .{
|
|
.optimize = optimize,
|
|
.target = target,
|
|
}) else null;
|
|
const gap_buffer_dep = if (include_text_input) b.lazyDependency("gap_buffer", .{
|
|
.optimize = optimize,
|
|
.target = target,
|
|
}) else null;
|
|
const znvim_dep = if (include_nvim) b.lazyDependency("znvim", .{
|
|
.optimize = optimize,
|
|
.target = target,
|
|
}) else null;
|
|
const xev_dep = if (include_libxev) b.lazyDependency("libxev", .{
|
|
.optimize = optimize,
|
|
.target = target,
|
|
}) else null;
|
|
|
|
// Module
|
|
const vaxis_mod = b.addModule("vaxis", .{
|
|
.root_source_file = root_source_file,
|
|
.target = target,
|
|
.optimize = optimize,
|
|
});
|
|
vaxis_mod.addImport("code_point", zg_dep.module("code_point"));
|
|
vaxis_mod.addImport("grapheme", zg_dep.module("grapheme"));
|
|
vaxis_mod.addImport("DisplayWidth", zg_dep.module("DisplayWidth"));
|
|
if (zigimg_dep) |dep| vaxis_mod.addImport("zigimg", dep.module("zigimg"));
|
|
if (gap_buffer_dep) |dep| vaxis_mod.addImport("gap_buffer", dep.module("gap_buffer"));
|
|
if (znvim_dep) |dep| vaxis_mod.addImport("znvim", dep.module("znvim"));
|
|
if (xev_dep) |dep| vaxis_mod.addImport("xev", dep.module("xev"));
|
|
vaxis_mod.addImport("build_options", options_mod);
|
|
|
|
// Examples
|
|
const Example = enum {
|
|
cli,
|
|
image,
|
|
main,
|
|
nvim,
|
|
table,
|
|
text_input,
|
|
vaxis,
|
|
vt,
|
|
xev,
|
|
};
|
|
const example_option = b.option(Example, "example", "Example to run (default: text_input)") orelse .text_input;
|
|
const example_step = b.step("example", "Run example");
|
|
const example = b.addExecutable(.{
|
|
.name = "example",
|
|
// future versions should use b.path, see zig PR #19597
|
|
.root_source_file = b.path(
|
|
b.fmt("examples/{s}.zig", .{@tagName(example_option)}),
|
|
),
|
|
.target = target,
|
|
.optimize = optimize,
|
|
});
|
|
example.root_module.addImport("vaxis", vaxis_mod);
|
|
if (xev_dep) |dep| example.root_module.addImport("xev", dep.module("xev"));
|
|
|
|
const example_run = b.addRunArtifact(example);
|
|
example_step.dependOn(&example_run.step);
|
|
|
|
// Tests
|
|
const tests_step = b.step("test", "Run tests");
|
|
|
|
const tests = b.addTest(.{
|
|
.root_source_file = b.path("src/main.zig"),
|
|
.target = target,
|
|
.optimize = optimize,
|
|
});
|
|
tests.root_module.addImport("code_point", zg_dep.module("code_point"));
|
|
tests.root_module.addImport("grapheme", zg_dep.module("grapheme"));
|
|
tests.root_module.addImport("DisplayWidth", zg_dep.module("DisplayWidth"));
|
|
if (zigimg_dep) |dep| tests.root_module.addImport("zigimg", dep.module("zigimg"));
|
|
if (gap_buffer_dep) |dep| tests.root_module.addImport("gap_buffer", dep.module("gap_buffer"));
|
|
if (znvim_dep) |dep| tests.root_module.addImport("znvim", dep.module("znvim"));
|
|
tests.root_module.addImport("build_options", options_mod);
|
|
|
|
const tests_run = b.addRunArtifact(tests);
|
|
b.installArtifact(tests);
|
|
tests_step.dependOn(&tests_run.step);
|
|
|
|
// Lints
|
|
const lints_step = b.step("lint", "Run lints");
|
|
|
|
const lints = b.addFmt(.{
|
|
.paths = &.{ "src", "build.zig" },
|
|
.check = true,
|
|
});
|
|
|
|
lints_step.dependOn(&lints.step);
|
|
b.default_step.dependOn(lints_step);
|
|
|
|
// Docs
|
|
const docs_step = b.step("docs", "Build the vaxis library docs");
|
|
const docs_obj = b.addObject(.{
|
|
.name = "vaxis",
|
|
.root_source_file = root_source_file,
|
|
.target = target,
|
|
.optimize = optimize,
|
|
});
|
|
const docs = docs_obj.getEmittedDocs();
|
|
docs_step.dependOn(&b.addInstallDirectory(.{
|
|
.source_dir = docs,
|
|
.install_dir = .prefix,
|
|
.install_subdir = "docs",
|
|
}).step);
|
|
}
|