Biggish refactor to break cycles; my build rules were full of them. cpm builds,
which requires top and topgen.
This commit is contained in:
parent
10746f8b97
commit
262c5fedcf
|
@ -5,7 +5,8 @@ vars.ackcflags = {
|
|||
"-O"
|
||||
}
|
||||
vars.plats = {
|
||||
"pc86"
|
||||
"pc86",
|
||||
"cpm",
|
||||
}
|
||||
|
||||
installable {
|
||||
|
@ -15,6 +16,7 @@ installable {
|
|||
"lang/cem/cemcom.ansi+pkg",
|
||||
"lang/m2/comp+pkg",
|
||||
"lang/pc/comp+pkg",
|
||||
"plat/cpm+pkg",
|
||||
"plat/pc86+pkg",
|
||||
"util/ack+pkg",
|
||||
"util/amisc+pkg",
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
include("util/cmisc/build.lua")
|
||||
include("util/LLgen/build.lua")
|
||||
|
||||
local allocd_header = definerule(nil,
|
||||
{
|
||||
|
|
8
mach/i80/libem/build.lua
Normal file
8
mach/i80/libem/build.lua
Normal file
|
@ -0,0 +1,8 @@
|
|||
for _, plat in ipairs(vars.plats) do
|
||||
acklibrary {
|
||||
name = "lib_"..plat,
|
||||
srcs = { "./*.s" },
|
||||
vars = { plat = plat },
|
||||
}
|
||||
end
|
||||
|
8
mach/i80/libend/build.lua
Normal file
8
mach/i80/libend/build.lua
Normal file
|
@ -0,0 +1,8 @@
|
|||
for _, plat in ipairs(vars.plats) do
|
||||
acklibrary {
|
||||
name = "lib_"..plat,
|
||||
srcs = { "./*.s" },
|
||||
vars = { plat = plat },
|
||||
}
|
||||
end
|
||||
|
19
mach/proto/top/build.lua
Normal file
19
mach/proto/top/build.lua
Normal file
|
@ -0,0 +1,19 @@
|
|||
include("util/topgen/build.lua")
|
||||
|
||||
definerule("build_top",
|
||||
{
|
||||
arch = { type="string" },
|
||||
},
|
||||
function(e)
|
||||
local t = topgen {
|
||||
name = e.name.."_topgen",
|
||||
srcs = { "mach/"..e.arch.."/top/table" }
|
||||
}
|
||||
|
||||
return cprogram {
|
||||
name = e.name,
|
||||
srcs = { "mach/proto/top/*.c", },
|
||||
deps = { t },
|
||||
}
|
||||
end
|
||||
)
|
|
@ -1,5 +1,6 @@
|
|||
include("mach/proto/as/build.lua")
|
||||
include("mach/proto/ncg/build.lua")
|
||||
include("mach/proto/top/build.lua")
|
||||
|
||||
definerule("ackfile",
|
||||
{
|
||||
|
@ -53,36 +54,6 @@ definerule("acklibrary",
|
|||
end
|
||||
)
|
||||
|
||||
definerule("build_plat_tools",
|
||||
{
|
||||
arch = { type="string" },
|
||||
plat = { type="string" },
|
||||
},
|
||||
function(e)
|
||||
local descr = "plat/"..e.plat.."/descr"
|
||||
|
||||
local as = build_as {
|
||||
name = "as",
|
||||
arch = e.arch
|
||||
}
|
||||
|
||||
local ncg = build_ncg {
|
||||
name = "ncg",
|
||||
arch = e.arch,
|
||||
}
|
||||
|
||||
return installable {
|
||||
name = e.name,
|
||||
map = {
|
||||
["$(PLATDEP)/"..e.plat.."/as"] = as,
|
||||
["$(PLATDEP)/"..e.plat.."/ncg"] = ncg,
|
||||
["$(PLATIND)/descr/"..e.plat] = descr,
|
||||
"util/opt+pkg",
|
||||
}
|
||||
}
|
||||
end
|
||||
)
|
||||
|
||||
definerule("build_plat_libs",
|
||||
{
|
||||
arch = { type="string" },
|
||||
|
@ -93,15 +64,13 @@ definerule("build_plat_libs",
|
|||
name = e.name,
|
||||
map = {
|
||||
"lang/basic/lib+pkg_"..e.plat,
|
||||
"lang/cem/libcc.ansi+pkg_"..e.plat,
|
||||
"lang/m2/libm2+pkg_"..e.plat,
|
||||
"lang/pc/libpc+pkg_"..e.plat,
|
||||
--"lang/cem/libcc.ansi+pkg_"..e.plat,
|
||||
--"lang/m2/libm2+pkg_"..e.plat,
|
||||
--"lang/pc/libpc+pkg_"..e.plat,
|
||||
["$(PLATIND)/"..e.plat.."/libem.a"] = "mach/"..e.arch.."/libem+lib_"..e.plat,
|
||||
["$(PLATIND)/"..e.plat.."/libend.a"] = "mach/"..e.arch.."/libend+lib_"..e.plat,
|
||||
["$(PLATIND)/"..e.plat.."/libsys.a"] = "mach/"..e.arch.."/libsys+lib_"..e.plat,
|
||||
}
|
||||
}
|
||||
end
|
||||
)
|
||||
|
||||
|
||||
|
|
11
plat/cpm/build-headers.lua
Normal file
11
plat/cpm/build-headers.lua
Normal file
|
@ -0,0 +1,11 @@
|
|||
include("plat/build.lua")
|
||||
|
||||
acklibrary {
|
||||
name = "headers",
|
||||
hdrs = {
|
||||
["ack/config.h"] = "./include/ack/config.h",
|
||||
["unistd.h"] = "./include/unistd.h",
|
||||
["cpm.h"] = "./include/cpm.h",
|
||||
}
|
||||
}
|
||||
|
24
plat/cpm/build-pkg.lua
Normal file
24
plat/cpm/build-pkg.lua
Normal file
|
@ -0,0 +1,24 @@
|
|||
include("plat/build.lua")
|
||||
include("lang/build.lua")
|
||||
|
||||
ackfile {
|
||||
name = "boot",
|
||||
srcs = { "./boot.s" },
|
||||
vars = { plat = "cpm" }
|
||||
}
|
||||
|
||||
build_plat_libs {
|
||||
name = "libs",
|
||||
arch = "i80",
|
||||
plat = "cpm",
|
||||
}
|
||||
|
||||
installable {
|
||||
name = "pkg",
|
||||
map = {
|
||||
"+tools",
|
||||
"+libs",
|
||||
["$(PLATIND)/cpm/boot.o"] = "+boot"
|
||||
}
|
||||
}
|
||||
|
27
plat/cpm/build-tools.lua
Normal file
27
plat/cpm/build-tools.lua
Normal file
|
@ -0,0 +1,27 @@
|
|||
include("plat/build.lua")
|
||||
|
||||
build_as {
|
||||
name = "as",
|
||||
arch = "i80",
|
||||
}
|
||||
|
||||
build_ncg {
|
||||
name = "ncg",
|
||||
arch = "i80",
|
||||
}
|
||||
|
||||
build_top {
|
||||
name = "top",
|
||||
arch = "i80",
|
||||
}
|
||||
|
||||
return installable {
|
||||
name = "tools",
|
||||
map = {
|
||||
["$(PLATDEP)/cpm/as"] = "+as",
|
||||
["$(PLATDEP)/cpm/ncg"] = "+ncg",
|
||||
["$(PLATDEP)/cpm/top"] = "+top",
|
||||
["$(PLATIND)/descr/cpm"] = "./descr",
|
||||
"util/opt+pkg",
|
||||
}
|
||||
}
|
10
plat/pc86/build-headers.lua
Normal file
10
plat/pc86/build-headers.lua
Normal file
|
@ -0,0 +1,10 @@
|
|||
include("plat/build.lua")
|
||||
|
||||
acklibrary {
|
||||
name = "headers",
|
||||
hdrs = {
|
||||
["ack/config.h"] = "./include/ack/config.h",
|
||||
["unistd.h"] = "./include/unistd.h",
|
||||
}
|
||||
}
|
||||
|
|
@ -1,11 +1,4 @@
|
|||
include("plat/build.lua")
|
||||
include("lang/build.lua")
|
||||
|
||||
build_plat_tools {
|
||||
name = "tools",
|
||||
arch = "i86",
|
||||
plat = "pc86",
|
||||
}
|
||||
|
||||
ackfile {
|
||||
name = "boot",
|
||||
|
@ -13,14 +6,6 @@ ackfile {
|
|||
vars = { plat = "pc86" }
|
||||
}
|
||||
|
||||
acklibrary {
|
||||
name = "headers",
|
||||
hdrs = {
|
||||
["ack/config.h"] = "./include/ack/config.h",
|
||||
["unistd.h"] = "./include/unistd.h",
|
||||
}
|
||||
}
|
||||
|
||||
build_plat_libs {
|
||||
name = "libs",
|
||||
arch = "i86",
|
21
plat/pc86/build-tools.lua
Normal file
21
plat/pc86/build-tools.lua
Normal file
|
@ -0,0 +1,21 @@
|
|||
include("plat/build.lua")
|
||||
|
||||
build_as {
|
||||
name = "as",
|
||||
arch = "i86",
|
||||
}
|
||||
|
||||
build_ncg {
|
||||
name = "ncg",
|
||||
arch = "i86",
|
||||
}
|
||||
|
||||
return installable {
|
||||
name = "tools",
|
||||
map = {
|
||||
["$(PLATDEP)/pc86/as"] = "+as",
|
||||
["$(PLATDEP)/pc86/ncg"] = "+ncg",
|
||||
["$(PLATIND)/descr/pc86"] = "./descr",
|
||||
"util/opt+pkg",
|
||||
}
|
||||
}
|
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);
|
||||
|
|
Loading…
Reference in a new issue