check submodules in build.zig (#904)
This commit is contained in:
parent
a6b7a35367
commit
bbbd54498d
41
build.zig
41
build.zig
@ -111,6 +111,12 @@ pub fn build(b: *std.build.Builder) !void {
|
|||||||
const tres_path = b.option([]const u8, "tres", "Path to tres package (default: " ++ TRES_DEFAULT_PATH ++ ")") orelse TRES_DEFAULT_PATH;
|
const tres_path = b.option([]const u8, "tres", "Path to tres package (default: " ++ TRES_DEFAULT_PATH ++ ")") orelse TRES_DEFAULT_PATH;
|
||||||
exe.addPackage(.{ .name = "tres", .source = .{ .path = tres_path } });
|
exe.addPackage(.{ .name = "tres", .source = .{ .path = tres_path } });
|
||||||
|
|
||||||
|
const check_submodules_step = CheckSubmodulesStep.init(b, &.{
|
||||||
|
known_folders_path,
|
||||||
|
tres_path,
|
||||||
|
});
|
||||||
|
b.getInstallStep().dependOn(&check_submodules_step.step);
|
||||||
|
|
||||||
if (enable_tracy) {
|
if (enable_tracy) {
|
||||||
const client_cpp = "src/tracy/TracyClient.cpp";
|
const client_cpp = "src/tracy/TracyClient.cpp";
|
||||||
|
|
||||||
@ -136,7 +142,7 @@ pub fn build(b: *std.build.Builder) !void {
|
|||||||
exe.install();
|
exe.install();
|
||||||
|
|
||||||
const gen_exe = b.addExecutable("zls_gen", "src/config_gen/config_gen.zig");
|
const gen_exe = b.addExecutable("zls_gen", "src/config_gen/config_gen.zig");
|
||||||
gen_exe.addPackage(.{ .name = "tres", .source = .{ .path = "src/tres/tres.zig" } });
|
gen_exe.addPackage(.{ .name = "tres", .source = .{ .path = tres_path } });
|
||||||
|
|
||||||
const gen_cmd = gen_exe.run();
|
const gen_cmd = gen_exe.run();
|
||||||
gen_cmd.addArgs(&.{
|
gen_cmd.addArgs(&.{
|
||||||
@ -150,6 +156,7 @@ pub fn build(b: *std.build.Builder) !void {
|
|||||||
}
|
}
|
||||||
|
|
||||||
const gen_step = b.step("gen", "Regenerate config files");
|
const gen_step = b.step("gen", "Regenerate config files");
|
||||||
|
gen_step.dependOn(&check_submodules_step.step);
|
||||||
gen_step.dependOn(&gen_cmd.step);
|
gen_step.dependOn(&gen_cmd.step);
|
||||||
|
|
||||||
const test_step = b.step("test", "Run all the tests");
|
const test_step = b.step("test", "Run all the tests");
|
||||||
@ -175,3 +182,35 @@ pub fn build(b: *std.build.Builder) !void {
|
|||||||
tests.setTarget(target);
|
tests.setTarget(target);
|
||||||
test_step.dependOn(&tests.step);
|
test_step.dependOn(&tests.step);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const CheckSubmodulesStep = struct {
|
||||||
|
step: std.build.Step,
|
||||||
|
builder: *std.build.Builder,
|
||||||
|
submodules: []const []const u8,
|
||||||
|
|
||||||
|
pub fn init(builder: *std.build.Builder, submodules: []const []const u8) *CheckSubmodulesStep {
|
||||||
|
var self = builder.allocator.create(CheckSubmodulesStep) catch unreachable;
|
||||||
|
self.* = CheckSubmodulesStep{
|
||||||
|
.builder = builder,
|
||||||
|
.step = std.build.Step.init(.custom, "Check Submodules", builder.allocator, make),
|
||||||
|
.submodules = builder.allocator.dupe([]const u8, submodules) catch unreachable,
|
||||||
|
};
|
||||||
|
return self;
|
||||||
|
}
|
||||||
|
|
||||||
|
fn make(step: *std.build.Step) anyerror!void {
|
||||||
|
const self = @fieldParentPtr(CheckSubmodulesStep, "step", step);
|
||||||
|
for (self.submodules) |path| {
|
||||||
|
const access = std.fs.accessAbsolute(self.builder.pathFromRoot(path), .{});
|
||||||
|
if (access == error.FileNotFound) {
|
||||||
|
std.debug.print(
|
||||||
|
\\Did you clone ZLS with `git clone --recurse-submodules https://github.com/zigtools/zls`?
|
||||||
|
\\If not you can fix this with `git submodule update --init --recursive`.
|
||||||
|
\\
|
||||||
|
\\
|
||||||
|
, .{});
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
Loading…
Reference in New Issue
Block a user