mirror of
https://github.com/neovim/neovim.git
synced 2026-07-17 22:51:20 +00:00
feat(build.zig): update to zig 0.16
This commit is contained in:
6
.github/workflows/test.yml
vendored
6
.github/workflows/test.yml
vendored
@@ -255,7 +255,7 @@ jobs:
|
||||
|
||||
- uses: mlugg/setup-zig@d1434d08867e3ee9daa34448df10607b98908d29 # v2.2.1
|
||||
with:
|
||||
version: 0.15.2
|
||||
version: 0.16.0-dev.1912+0cbaaa5eb
|
||||
- run: sudo apt-get install -y inotify-tools
|
||||
|
||||
- run: zig build $OPTS test_nlua0
|
||||
@@ -278,7 +278,7 @@ jobs:
|
||||
|
||||
- uses: mlugg/setup-zig@d1434d08867e3ee9daa34448df10607b98908d29 # v2.2.1
|
||||
with:
|
||||
version: 0.15.2
|
||||
version: 0.16.0-dev.1912+0cbaaa5eb
|
||||
|
||||
- run: zig build test_nlua0 -Dluajit=false
|
||||
- run: zig build nvim_bin -Dluajit=false && ./zig-out/bin/nvim --version
|
||||
@@ -295,7 +295,7 @@ jobs:
|
||||
|
||||
- uses: mlugg/setup-zig@d1434d08867e3ee9daa34448df10607b98908d29 # v2.2.1
|
||||
with:
|
||||
version: 0.15.2
|
||||
version: 0.16.0-dev.1912+0cbaaa5eb
|
||||
|
||||
- run: zig build test_nlua0
|
||||
- run: zig build nvim_bin
|
||||
|
||||
116
build.zig
116
build.zig
@@ -42,6 +42,9 @@ pub fn lazyArtifact(d: *std.Build.Dependency, name: []const u8) ?*std.Build.Step
|
||||
pub fn build(b: *std.Build) !void {
|
||||
const target = b.standardTargetOptions(.{});
|
||||
const optimize = b.standardOptimizeOption(.{});
|
||||
var threaded: std.Io.Threaded = .init_single_threaded;
|
||||
defer threaded.deinit();
|
||||
const io = threaded.io();
|
||||
|
||||
const t = target.result;
|
||||
const os_tag = t.os.tag;
|
||||
@@ -152,6 +155,7 @@ pub fn build(b: *std.Build) !void {
|
||||
|
||||
const nlua0 = try build_lua.build_nlua0(
|
||||
b,
|
||||
io,
|
||||
target_host,
|
||||
optimize_host,
|
||||
host_use_luajit,
|
||||
@@ -201,12 +205,12 @@ pub fn build(b: *std.Build) !void {
|
||||
|
||||
const src_dir = b.build_root.handle;
|
||||
for (subdirs) |s| {
|
||||
var dir = try src_dir.openDir(b.fmt("src/nvim/{s}", .{s}), .{ .iterate = true });
|
||||
defer dir.close();
|
||||
var dir = try src_dir.openDir(io, b.fmt("src/nvim/{s}", .{s}), .{ .iterate = true });
|
||||
defer dir.close(io);
|
||||
var it = dir.iterateAssumeFirstIteration();
|
||||
const api_export = std.mem.eql(u8, s, "api/");
|
||||
const os_check = std.mem.eql(u8, s, "os/");
|
||||
entries: while (try it.next()) |entry| {
|
||||
entries: while (try it.next(io)) |entry| {
|
||||
if (entry.name.len < 3) continue;
|
||||
if (entry.name[0] < 'a' or entry.name[0] > 'z') continue;
|
||||
if (os_check) {
|
||||
@@ -257,7 +261,7 @@ pub fn build(b: *std.Build) !void {
|
||||
.VERSION_STRING = "TODO", // TODO(bfredl): not sure what to put here. summary already in "config_str"
|
||||
.CONFIG = config_str,
|
||||
});
|
||||
_ = gen_config.addCopyFile(versiondef_step.getOutput(), "auto/versiondef.h"); // run_preprocessor() workaronnd
|
||||
_ = gen_config.addCopyFile(versiondef_step.getOutputFile(), "auto/versiondef.h"); // run_preprocessor() workaronnd
|
||||
|
||||
const ptrwidth = t.ptrBitWidth() / 8;
|
||||
const sysconfig_step = b.addConfigHeader(.{
|
||||
@@ -310,7 +314,7 @@ pub fn build(b: *std.Build) !void {
|
||||
const system_install_path = b.option([]const u8, "install-path", "Install path (for packagers)");
|
||||
const install_path = system_install_path orelse b.install_path;
|
||||
const lib_dir = if (system_install_path) |path| b.fmt("{s}/lib", .{path}) else b.lib_dir;
|
||||
_ = gen_config.addCopyFile(sysconfig_step.getOutput(), "auto/config.h"); // run_preprocessor() workaronnd
|
||||
_ = gen_config.addCopyFile(sysconfig_step.getOutputFile(), "auto/config.h"); // run_preprocessor() workaronnd
|
||||
|
||||
_ = gen_config.add("auto/pathdef.h", b.fmt(
|
||||
\\char *default_vim_dir = "{s}/share/nvim";
|
||||
@@ -410,6 +414,7 @@ pub fn build(b: *std.Build) !void {
|
||||
|
||||
const gen_headers, const funcs_data = try gen.nvim_gen_sources(
|
||||
b,
|
||||
io,
|
||||
nlua0,
|
||||
&nvim_sources,
|
||||
&nvim_headers,
|
||||
@@ -419,7 +424,7 @@ pub fn build(b: *std.Build) !void {
|
||||
);
|
||||
|
||||
const test_config_step = b.addWriteFiles();
|
||||
_ = test_config_step.add("test/cmakeconfig/paths.lua", try test_config(b));
|
||||
_ = test_config_step.add("test/cmakeconfig/paths.lua", try test_config(b, io));
|
||||
|
||||
const test_gen_step = b.step("gen_headers", "debug: output generated headers");
|
||||
const config_install = b.addInstallDirectory(.{
|
||||
@@ -434,56 +439,58 @@ pub fn build(b: *std.Build) !void {
|
||||
.install_subdir = "headers/",
|
||||
}).step);
|
||||
|
||||
var nvim_exe_module = b.createModule(.{
|
||||
.target = target,
|
||||
.optimize = optimize,
|
||||
.link_libc = true,
|
||||
});
|
||||
const nvim_exe = b.addExecutable(.{
|
||||
.name = "nvim",
|
||||
.root_module = b.createModule(.{
|
||||
.target = target,
|
||||
.optimize = optimize,
|
||||
.link_libc = true,
|
||||
}),
|
||||
.root_module = nvim_exe_module,
|
||||
});
|
||||
nvim_exe.rdynamic = true; // -E
|
||||
|
||||
if (system_integration_options.lua) {
|
||||
nvim_exe.root_module.linkSystemLibrary(lualib_name, .{});
|
||||
} else if (lua) |compile| {
|
||||
nvim_exe.root_module.linkLibrary(compile);
|
||||
nvim_exe_module.linkLibrary(compile);
|
||||
}
|
||||
if (system_integration_options.uv) {
|
||||
nvim_exe.root_module.linkSystemLibrary("libuv", .{});
|
||||
nvim_exe.root_module.linkSystemLibrary("libluv", .{});
|
||||
nvim_exe_module.linkSystemLibrary("libuv", .{});
|
||||
nvim_exe_module.linkSystemLibrary("libluv", .{});
|
||||
} else {
|
||||
if (libuv) |compile| nvim_exe.root_module.linkLibrary(compile);
|
||||
if (libluv) |compile| nvim_exe.root_module.linkLibrary(compile);
|
||||
}
|
||||
if (iconv) |dep| nvim_exe.linkLibrary(dep.artifact("iconv"));
|
||||
if (iconv) |dep| nvim_exe_module.linkLibrary(dep.artifact("iconv"));
|
||||
if (system_integration_options.utf8proc) {
|
||||
nvim_exe.root_module.linkSystemLibrary("utf8proc", .{});
|
||||
nvim_exe_module.linkSystemLibrary("utf8proc", .{});
|
||||
} else if (utf8proc) |dep| {
|
||||
nvim_exe.root_module.linkLibrary(dep.artifact("utf8proc"));
|
||||
nvim_exe_module.linkLibrary(dep.artifact("utf8proc"));
|
||||
}
|
||||
if (use_unibilium) {
|
||||
if (system_integration_options.unibilium) {
|
||||
nvim_exe.root_module.linkSystemLibrary("unibilium", .{});
|
||||
nvim_exe_module.linkSystemLibrary("unibilium", .{});
|
||||
} else if (unibilium) |dep| {
|
||||
nvim_exe.root_module.linkLibrary(dep.artifact("unibilium"));
|
||||
nvim_exe_module.linkLibrary(dep.artifact("unibilium"));
|
||||
}
|
||||
}
|
||||
if (system_integration_options.tree_sitter) {
|
||||
nvim_exe.root_module.linkSystemLibrary("tree-sitter", .{});
|
||||
nvim_exe_module.linkSystemLibrary("tree-sitter", .{});
|
||||
} else if (treesitter) |dep| {
|
||||
nvim_exe.root_module.linkLibrary(dep.artifact("tree-sitter"));
|
||||
nvim_exe_module.linkLibrary(dep.artifact("tree-sitter"));
|
||||
}
|
||||
if (is_windows) {
|
||||
nvim_exe.linkSystemLibrary("netapi32");
|
||||
nvim_exe_module.linkSystemLibrary("netapi32", .{});
|
||||
}
|
||||
nvim_exe.addIncludePath(b.path("src"));
|
||||
nvim_exe.addIncludePath(gen_config.getDirectory());
|
||||
nvim_exe.addIncludePath(gen_headers.getDirectory());
|
||||
nvim_exe_module.addIncludePath(b.path("src"));
|
||||
nvim_exe_module.addIncludePath(gen_config.getDirectory());
|
||||
nvim_exe_module.addIncludePath(gen_headers.getDirectory());
|
||||
try build_lua.add_lua_modules(
|
||||
b,
|
||||
io,
|
||||
t,
|
||||
nvim_exe.root_module,
|
||||
nvim_exe_module,
|
||||
lpeg,
|
||||
use_luajit,
|
||||
false,
|
||||
@@ -492,10 +499,10 @@ pub fn build(b: *std.Build) !void {
|
||||
|
||||
var unit_test_sources = try std.ArrayList([]u8).initCapacity(b.allocator, 10);
|
||||
if (support_unittests) {
|
||||
var unit_test_fixtures = try src_dir.openDir("test/unit/fixtures/", .{ .iterate = true });
|
||||
defer unit_test_fixtures.close();
|
||||
var unit_test_fixtures = try src_dir.openDir(io, "test/unit/fixtures/", .{ .iterate = true });
|
||||
defer unit_test_fixtures.close(io);
|
||||
var it = unit_test_fixtures.iterateAssumeFirstIteration();
|
||||
while (try it.next()) |entry| {
|
||||
while (try it.next(io)) |entry| {
|
||||
if (entry.name.len < 3) continue;
|
||||
if (std.mem.eql(u8, ".c", entry.name[entry.name.len - 2 ..])) {
|
||||
try unit_test_sources.append(b.allocator, b.fmt("test/unit/fixtures/{s}", .{entry.name}));
|
||||
@@ -520,9 +527,9 @@ pub fn build(b: *std.Build) !void {
|
||||
if (is_windows) "-DUTF8PROC_STATIC" else "",
|
||||
if (use_unibilium) "-DHAVE_UNIBILIUM" else "",
|
||||
};
|
||||
nvim_exe.addCSourceFiles(.{ .files = src_paths, .flags = &flags });
|
||||
nvim_exe_module.addCSourceFiles(.{ .files = src_paths, .flags = &flags });
|
||||
|
||||
nvim_exe.addCSourceFiles(.{ .files = &.{
|
||||
nvim_exe_module.addCSourceFiles(.{ .files = &.{
|
||||
"src/xdiff/xdiffi.c",
|
||||
"src/xdiff/xemit.c",
|
||||
"src/xdiff/xhistogram.c",
|
||||
@@ -535,7 +542,7 @@ pub fn build(b: *std.Build) !void {
|
||||
}, .flags = &flags });
|
||||
|
||||
if (is_windows) {
|
||||
nvim_exe.addWin32ResourceFile(.{ .file = b.path("src/nvim/os/nvim.rc") });
|
||||
nvim_exe_module.addWin32ResourceFile(.{ .file = b.path("src/nvim/os/nvim.rc") });
|
||||
}
|
||||
|
||||
const nvim_exe_step = b.step("nvim_bin", "only the binary (not a fully working install!)");
|
||||
@@ -630,10 +637,10 @@ pub fn build(b: *std.Build) !void {
|
||||
.root_module = b.createModule(.{
|
||||
.target = target,
|
||||
.optimize = optimize,
|
||||
.link_libc = true,
|
||||
}),
|
||||
});
|
||||
xxd_exe.addCSourceFile(.{ .file = b.path("src/xxd/xxd.c") });
|
||||
xxd_exe.linkLibC();
|
||||
xxd_exe.root_module.addCSourceFile(.{ .file = b.path("src/xxd/xxd.c") });
|
||||
test_deps.dependOn(&b.addInstallArtifact(xxd_exe, .{}).step);
|
||||
|
||||
const parser_c = b.dependency("treesitter_c", .{ .target = target, .optimize = optimize_ts });
|
||||
@@ -686,28 +693,29 @@ pub fn test_fixture(
|
||||
optimize: std.builtin.OptimizeMode,
|
||||
flags: []const []const u8,
|
||||
) *std.Build.Step {
|
||||
var root_module = b.createModule(.{
|
||||
.target = target,
|
||||
.optimize = optimize,
|
||||
.link_libc = true,
|
||||
});
|
||||
const fixture = b.addExecutable(.{
|
||||
.name = name,
|
||||
.root_module = b.createModule(.{
|
||||
.target = target,
|
||||
.optimize = optimize,
|
||||
}),
|
||||
.root_module = root_module,
|
||||
});
|
||||
const source = if (std.mem.eql(u8, name, "pwsh-test")) "shell-test" else name;
|
||||
if (std.mem.eql(u8, name, "printenv-test")) {
|
||||
fixture.mingw_unicode_entry_point = true; // uses UNICODE on WINDOWS :scream:
|
||||
}
|
||||
|
||||
fixture.addCSourceFile(.{
|
||||
root_module.addCSourceFile(.{
|
||||
.file = b.path(b.fmt("./test/functional/fixtures/{s}.c", .{source})),
|
||||
.flags = flags,
|
||||
});
|
||||
fixture.linkLibC();
|
||||
if (use_libuv) {
|
||||
if (use_system_libuv) {
|
||||
fixture.root_module.linkSystemLibrary("libuv", .{});
|
||||
root_module.linkSystemLibrary("libuv", .{});
|
||||
} else if (libuv) |uv| {
|
||||
fixture.linkLibrary(uv);
|
||||
root_module.linkLibrary(uv);
|
||||
}
|
||||
}
|
||||
return &b.addInstallArtifact(fixture, .{}).step;
|
||||
@@ -722,18 +730,19 @@ pub fn add_ts_parser(
|
||||
optimize: std.builtin.OptimizeMode,
|
||||
path: enum { test_, install },
|
||||
) *std.Build.Step {
|
||||
var root_module = b.createModule(.{
|
||||
.target = target,
|
||||
.optimize = optimize,
|
||||
.link_libc = true,
|
||||
});
|
||||
const parser = b.addLibrary(.{
|
||||
.name = name,
|
||||
.root_module = b.createModule(.{
|
||||
.target = target,
|
||||
.optimize = optimize,
|
||||
}),
|
||||
.linkage = .dynamic,
|
||||
.root_module = root_module,
|
||||
});
|
||||
parser.addCSourceFile(.{ .file = parser_dir.path(b, "src/parser.c") });
|
||||
if (scanner) parser.addCSourceFile(.{ .file = parser_dir.path(b, "src/scanner.c") });
|
||||
parser.addIncludePath(parser_dir.path(b, "src"));
|
||||
parser.linkLibC();
|
||||
root_module.addCSourceFile(.{ .file = parser_dir.path(b, "src/parser.c") });
|
||||
if (scanner) root_module.addCSourceFile(.{ .file = parser_dir.path(b, "src/scanner.c") });
|
||||
root_module.addIncludePath(parser_dir.path(b, "src"));
|
||||
|
||||
switch (path) {
|
||||
.install => {
|
||||
@@ -784,9 +793,10 @@ fn replace_backslashes(b: *std.Build, input: []const u8) ![]const u8 {
|
||||
input;
|
||||
}
|
||||
|
||||
pub fn test_config(b: *std.Build) ![]u8 {
|
||||
var buf: [std.fs.max_path_bytes]u8 = undefined;
|
||||
const src_path = try b.build_root.handle.realpath(".", &buf);
|
||||
pub fn test_config(b: *std.Build, io: std.Io) ![]u8 {
|
||||
var buf: [std.fs.max_path_bytes]u8 = std.mem.zeroes([std.fs.max_path_bytes]u8);
|
||||
_ = try b.build_root.handle.realPath(io, &buf);
|
||||
const src_path = std.mem.span(@as([*:0]u8, @ptrCast(&buf)));
|
||||
|
||||
// we don't use test/cmakeconfig/paths.lua.in because it contains cmake specific logic
|
||||
return b.fmt(
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
.name = .neovim,
|
||||
.fingerprint = 0x66eb090879307a38,
|
||||
.version = "0.13.0",
|
||||
.minimum_zig_version = "0.15.2",
|
||||
.minimum_zig_version = "0.16.0",
|
||||
|
||||
.dependencies = .{
|
||||
.zlua = .{
|
||||
|
||||
7
deps/unibilium/build.zig
vendored
7
deps/unibilium/build.zig
vendored
@@ -14,13 +14,14 @@ pub fn build(b: *std.Build) !void {
|
||||
});
|
||||
|
||||
if (b.lazyDependency("unibilium", .{})) |upstream| {
|
||||
lib.addIncludePath(upstream.path(""));
|
||||
var root_module = lib.root_module;
|
||||
root_module.addIncludePath(upstream.path(""));
|
||||
|
||||
lib.installHeader(upstream.path("unibilium.h"), "unibilium.h");
|
||||
|
||||
lib.linkLibC();
|
||||
root_module.link_libc = true;
|
||||
|
||||
lib.addCSourceFiles(.{ .root = upstream.path(""), .files = &.{
|
||||
root_module.addCSourceFiles(.{ .root = upstream.path(""), .files = &.{
|
||||
"unibilium.c",
|
||||
"uninames.c",
|
||||
"uniutil.c",
|
||||
|
||||
7
deps/utf8proc/build.zig
vendored
7
deps/utf8proc/build.zig
vendored
@@ -14,12 +14,13 @@ pub fn build(b: *std.Build) !void {
|
||||
});
|
||||
|
||||
if (b.lazyDependency("utf8proc", .{})) |upstream| {
|
||||
lib.addIncludePath(upstream.path(""));
|
||||
var root_module = lib.root_module;
|
||||
root_module.addIncludePath(upstream.path(""));
|
||||
lib.installHeader(upstream.path("utf8proc.h"), "utf8proc.h");
|
||||
|
||||
lib.linkLibC();
|
||||
root_module.link_libc = true;
|
||||
|
||||
lib.addCSourceFiles(.{ .root = upstream.path(""), .files = &.{
|
||||
root_module.addCSourceFiles(.{ .root = upstream.path(""), .files = &.{
|
||||
"utf8proc.c",
|
||||
}, .flags = &.{"-DUTF8PROC_STATIC"} });
|
||||
}
|
||||
|
||||
@@ -4,6 +4,7 @@ const LazyPath = std.Build.LazyPath;
|
||||
|
||||
pub fn build_nlua0(
|
||||
b: *std.Build,
|
||||
io: std.Io,
|
||||
target: std.Build.ResolvedTarget,
|
||||
optimize: std.builtin.OptimizeMode,
|
||||
use_luajit: bool,
|
||||
@@ -59,7 +60,7 @@ pub fn build_nlua0(
|
||||
|
||||
mod.addIncludePath(b.path("src"));
|
||||
mod.addIncludePath(b.path("src/includes_fixmelater"));
|
||||
try add_lua_modules(b, target.result, mod, lpeg, use_luajit, true, system_integration_options);
|
||||
try add_lua_modules(b, io, target.result, mod, lpeg, use_luajit, true, system_integration_options);
|
||||
}
|
||||
|
||||
// for debugging the nlua0 environment
|
||||
@@ -83,6 +84,7 @@ pub fn build_nlua0(
|
||||
|
||||
pub fn add_lua_modules(
|
||||
b: *std.Build,
|
||||
io: std.Io,
|
||||
target: std.Target,
|
||||
mod: *std.Build.Module,
|
||||
lpeg_dep: ?*std.Build.Dependency,
|
||||
@@ -110,7 +112,7 @@ pub fn add_lua_modules(
|
||||
.flags = &flags,
|
||||
});
|
||||
if (system_integration_options.lpeg) {
|
||||
if (try findLpeg(b, target)) |lpeg_lib| {
|
||||
if (try findLpeg(b, io, target)) |lpeg_lib| {
|
||||
mod.addLibraryPath(.{ .cwd_relative = std.fs.path.dirname(lpeg_lib).? });
|
||||
mod.addObjectFile(.{ .cwd_relative = lpeg_lib });
|
||||
}
|
||||
@@ -149,33 +151,34 @@ pub fn build_libluv(
|
||||
) !*std.Build.Step.Compile {
|
||||
const upstream = b.lazyDependency("luv", .{});
|
||||
const compat53 = b.lazyDependency("lua_compat53", .{});
|
||||
var root_module = b.createModule(.{
|
||||
.target = target,
|
||||
.optimize = optimize,
|
||||
});
|
||||
const lib = b.addLibrary(.{
|
||||
.name = "luv",
|
||||
.linkage = .static,
|
||||
.root_module = b.createModule(.{
|
||||
.target = target,
|
||||
.optimize = optimize,
|
||||
}),
|
||||
.root_module = root_module,
|
||||
});
|
||||
|
||||
if (lua) |lua_lib| {
|
||||
lib.root_module.linkLibrary(lua_lib);
|
||||
root_module.linkLibrary(lua_lib);
|
||||
} else {
|
||||
const system_lua_lib = if (use_luajit) "luajit" else "lua5.1";
|
||||
lib.root_module.linkSystemLibrary(system_lua_lib, .{});
|
||||
root_module.linkSystemLibrary(system_lua_lib, .{});
|
||||
}
|
||||
lib.linkLibrary(libuv);
|
||||
root_module.linkLibrary(libuv);
|
||||
|
||||
if (upstream) |dep| {
|
||||
lib.addIncludePath(dep.path("src"));
|
||||
root_module.addIncludePath(dep.path("src"));
|
||||
lib.installHeader(dep.path("src/luv.h"), "luv/luv.h");
|
||||
lib.addCSourceFiles(.{ .root = dep.path("src/"), .files = &.{
|
||||
root_module.addCSourceFiles(.{ .root = dep.path("src/"), .files = &.{
|
||||
"luv.c",
|
||||
} });
|
||||
}
|
||||
if (compat53) |dep| {
|
||||
lib.addIncludePath(dep.path("c-api"));
|
||||
lib.addCSourceFiles(.{ .root = dep.path("c-api"), .files = &.{
|
||||
root_module.addIncludePath(dep.path("c-api"));
|
||||
root_module.addCSourceFiles(.{ .root = dep.path("c-api"), .files = &.{
|
||||
"compat-5.3.c",
|
||||
} });
|
||||
}
|
||||
@@ -183,7 +186,7 @@ pub fn build_libluv(
|
||||
return lib;
|
||||
}
|
||||
|
||||
fn findLpeg(b: *std.Build, target: std.Target) !?[]const u8 {
|
||||
fn findLpeg(b: *std.Build, io: std.Io, target: std.Target) !?[]const u8 {
|
||||
const filenames = [_][]const u8{
|
||||
"lpeg_a",
|
||||
"lpeg",
|
||||
@@ -205,10 +208,10 @@ fn findLpeg(b: *std.Build, target: std.Target) !?[]const u8 {
|
||||
try paths.append(b.allocator, b.fmt("{s}/lua/5.1", .{dir}));
|
||||
}
|
||||
for (paths.items) |path| {
|
||||
var dir = std.fs.openDirAbsolute(path, .{}) catch continue;
|
||||
defer dir.close();
|
||||
var dir = std.Io.Dir.openDirAbsolute(io, path, .{}) catch continue;
|
||||
defer dir.close(io);
|
||||
for (filenames) |filename| {
|
||||
dir.access(filename, .{}) catch continue;
|
||||
dir.access(io, filename, .{}) catch continue;
|
||||
return b.fmt("{s}/{s}", .{ path, filename });
|
||||
}
|
||||
}
|
||||
|
||||
@@ -5,6 +5,7 @@ pub const SourceItem = struct { name: []u8, api_export: bool };
|
||||
|
||||
pub fn nvim_gen_sources(
|
||||
b: *std.Build,
|
||||
io: std.Io,
|
||||
nlua0: *std.Build.Step.Compile,
|
||||
nvim_sources: *std.ArrayList(SourceItem),
|
||||
nvim_headers: *std.ArrayList([]u8),
|
||||
@@ -85,15 +86,15 @@ pub fn nvim_gen_sources(
|
||||
}
|
||||
|
||||
// Dynamically add all Lua _core/ modules (like CMakeLists.txt does)
|
||||
if (b.build_root.handle.openDir("runtime/lua/vim/_core", .{ .iterate = true })) |core_dir_handle| {
|
||||
if (b.build_root.handle.openDir(io, "runtime/lua/vim/_core", .{ .iterate = true })) |core_dir_handle| {
|
||||
var core_dir = core_dir_handle;
|
||||
defer core_dir.close();
|
||||
defer core_dir.close(io);
|
||||
|
||||
var iter = core_dir.iterate();
|
||||
var core_files = try std.ArrayList([]const u8).initCapacity(b.allocator, 0);
|
||||
defer core_files.deinit(b.allocator);
|
||||
|
||||
while (try iter.next()) |entry| {
|
||||
while (try iter.next(io)) |entry| {
|
||||
if (entry.kind == .file and std.mem.endsWith(u8, entry.name, ".lua")) {
|
||||
const module_name = try b.allocator.dupe(u8, entry.name[0 .. entry.name.len - 4]);
|
||||
try core_files.append(b.allocator, module_name);
|
||||
|
||||
Reference in New Issue
Block a user