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;
|
||||
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) {
|
||||
const client_cpp = "src/tracy/TracyClient.cpp";
|
||||
|
||||
@ -136,7 +142,7 @@ pub fn build(b: *std.build.Builder) !void {
|
||||
exe.install();
|
||||
|
||||
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();
|
||||
gen_cmd.addArgs(&.{
|
||||
@ -150,6 +156,7 @@ pub fn build(b: *std.build.Builder) !void {
|
||||
}
|
||||
|
||||
const gen_step = b.step("gen", "Regenerate config files");
|
||||
gen_step.dependOn(&check_submodules_step.step);
|
||||
gen_step.dependOn(&gen_cmd.step);
|
||||
|
||||
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);
|
||||
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