Im trying to migrate my project to the new build system. Is there a way to say “rerun this step if a directory and its content changes”?
This is my code rn, java-sources.zig just walks the first arg dir and writes the abs path of it into the second arg.
const java_sources = b.addRunArtifact(b.addExecutable(.{
.name = "java-sources",
.root_module = b.createModule(.{
.root_source_file = b.path("src/build-tools/java-sources.zig"),
.target = target,
.optimize = .debug,
}),
}));
java_sources.addDirectoryArg2(b.path("src/runtime-java/"), .{});
const java_sources_file = java_sources.addOutputFileArg2("java-sources.txt", .{});
const javac = b.addSystemCommand(&.{
"javac",
"-cp",
"asset/jar-libs/*",
"-d"
});
javac.step.dependOn(&java_sources.step);
const class_dir = javac.addOutputDirectoryArg2("class", .{});
javac.addPrefixedFileArg("@", java_sources_file);
const jar = b.addSystemCommand(&.{ // jar cvf myapp.jar -C bin .
"jar",
"cvf"
});
jar.step.dependOn(&javac.step);
const jar_file = jar.addOutputFileArg("runtime.jar");
jar.addArg("-C");
jar.addDirectoryArg(class_dir);
jar.addArg(".");
b.getInstallStep().dependOn(&jar.step);
b.getInstallStep().dependOn(&b.addInstallBinFile(jar_file, "runtime.jar").step);
b.getInstallStep().dependOn(&b.addInstallBinFile(java_sources_file, "java-source.txt").step);
i thought it was enough to just reference the dir with b.path but its not apparently