Biggish refactor to break cycles; my build rules were full of them. cpm builds,

which requires top and topgen.
This commit is contained in:
David Given
2016-08-14 01:39:40 +02:00
parent 10746f8b97
commit 262c5fedcf
14 changed files with 185 additions and 53 deletions

43
util/topgen/build.lua Normal file
View File

@@ -0,0 +1,43 @@
include("util/LLgen/build.lua")
llgen {
name = "llgen",
srcs = { "./*.g" }
}
cprogram {
name = "topgen",
srcs = {
"./*.c",
matching(filenamesof("+llgen"), "%.c$"),
},
deps = {
"+llgen",
}
}
definerule("topgen",
{
srcs = { type="targets" },
},
function(e)
-- Remember this is executed from the caller's directory; local
-- target names will resolve there
return normalrule {
name = e.name,
outleaves = {
"gen.c",
"gen.h",
},
ins = {
"util/topgen+topgen",
e.srcs,
},
commands = {
"%{ins[1]} %{ins[2]} %{dir}"
}
}
end
)

View File

@@ -22,13 +22,17 @@ char *inpfile;
main(argc,argv) char *argv[]; {
newline = 1;
if (argc != 2) {
fprintf(stderr,"Usage : %s targetoptimizerdescription\n",argv[0]);
if (argc != 3) {
fprintf(stderr,"Usage : %s targetoptimizerdescription outputdir\n",argv[0]);
exit(1);
}
if ((input = fopen(argv[1],"r")) == NULL) {
fprintf(stderr,"Fatal error : couldn't open %s\n",argv[1]);
exit(1);
}
if (chdir(argv[2]) != 0) {
fprintf(stderr,"Fatal error : couldn't chdir to %s\n",argv[2]);
exit(1);
}
if ((genc = fopen("gen.c","w")) == NULL) {
fputs("Fatal error : couldn't open gen.c\n",stderr);