subdirectory support

This commit is contained in:
Nishi 2026-05-10 00:22:00 +09:00
commit 96f3fa1f70
Signed by: nishi
GPG key ID: 27EF69B208EB9343
9 changed files with 109 additions and 29 deletions

View file

@ -73,6 +73,10 @@ for(var i = 1; i < ARGV.length; i++) {
main();
(function() {
function makefile(target) {
return target.base + "/" + target.target + ".make";
}
function make(output) {
const targets = pmake.resolveProjects(pmake.projects);
@ -101,21 +105,25 @@ function make(output) {
for(var i = 0; i < targets.length; i++) {
mk.write(targets[i].target + ": " + pmake.resolveProjects(targets[i].libraries).map(target_map).join(" ") + "\n");
mk.write(" @$(MAKE) $(MAKEARGS) -f " + targets[i].target + ".make\n");
mk.write(" @cd " + targets[i].base + " ; $(MAKE) $(MAKEARGS) -f " + makefile(targets[i]) + "\n");
mk.write("\n");
}
mk.write("clean:\n");
for(var i = 0; i < targets.length; i++) {
mk.write(" @$(MAKE) $(MAKEARGS) -f " + targets[i].target + ".make clean\n");
mk.write(" @cd " + targets[i].base + " ; $(MAKE) $(MAKEARGS) -f " + makefile(targets[i]) + " clean\n");
}
mk.write("\n");
mk.write("distclean: clean\n");
mk.write(" $(SILENT)rm -f *.make Makefile\n");
mk.write(" $(SILENT)rm -f Makefile\n");
for(var i = 0; i < targets.length; i++) {
mk.write(" $(SILENT)rm -f " + makefile(targets[i]) + "\n");
}
} else {
function target_filter(x) {
return x.target == output.replace(/\.make$/, "");
const p = output.replace(/\.make$/, "").split("/");
return x.target == p[p.length - 1];
}
const self = targets.filter(target_filter)[0];
@ -150,6 +158,6 @@ function make(output) {
make("Makefile");
const targets = pmake.resolveProjects(pmake.projects);
for(var i = 0; i < targets.length; i++) {
make(targets[i].target + ".make");
make(makefile(targets[i]));
}
})();