Biggish refactor to break cycles; my build rules were full of them. cpm builds,
which requires top and topgen.
This commit is contained in:
43
util/topgen/build.lua
Normal file
43
util/topgen/build.lua
Normal 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
|
||||
)
|
||||
|
||||
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user