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"
|
"-O"
|
||||||
}
|
}
|
||||||
vars.plats = {
|
vars.plats = {
|
||||||
"pc86"
|
"pc86",
|
||||||
|
"cpm",
|
||||||
}
|
}
|
||||||
|
|
||||||
installable {
|
installable {
|
||||||
|
@ -15,6 +16,7 @@ installable {
|
||||||
"lang/cem/cemcom.ansi+pkg",
|
"lang/cem/cemcom.ansi+pkg",
|
||||||
"lang/m2/comp+pkg",
|
"lang/m2/comp+pkg",
|
||||||
"lang/pc/comp+pkg",
|
"lang/pc/comp+pkg",
|
||||||
|
"plat/cpm+pkg",
|
||||||
"plat/pc86+pkg",
|
"plat/pc86+pkg",
|
||||||
"util/ack+pkg",
|
"util/ack+pkg",
|
||||||
"util/amisc+pkg",
|
"util/amisc+pkg",
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
include("util/cmisc/build.lua")
|
include("util/cmisc/build.lua")
|
||||||
|
include("util/LLgen/build.lua")
|
||||||
|
|
||||||
local allocd_header = definerule(nil,
|
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/as/build.lua")
|
||||||
include("mach/proto/ncg/build.lua")
|
include("mach/proto/ncg/build.lua")
|
||||||
|
include("mach/proto/top/build.lua")
|
||||||
|
|
||||||
definerule("ackfile",
|
definerule("ackfile",
|
||||||
{
|
{
|
||||||
|
@ -53,36 +54,6 @@ definerule("acklibrary",
|
||||||
end
|
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",
|
definerule("build_plat_libs",
|
||||||
{
|
{
|
||||||
arch = { type="string" },
|
arch = { type="string" },
|
||||||
|
@ -93,15 +64,13 @@ definerule("build_plat_libs",
|
||||||
name = e.name,
|
name = e.name,
|
||||||
map = {
|
map = {
|
||||||
"lang/basic/lib+pkg_"..e.plat,
|
"lang/basic/lib+pkg_"..e.plat,
|
||||||
"lang/cem/libcc.ansi+pkg_"..e.plat,
|
--"lang/cem/libcc.ansi+pkg_"..e.plat,
|
||||||
"lang/m2/libm2+pkg_"..e.plat,
|
--"lang/m2/libm2+pkg_"..e.plat,
|
||||||
"lang/pc/libpc+pkg_"..e.plat,
|
--"lang/pc/libpc+pkg_"..e.plat,
|
||||||
["$(PLATIND)/"..e.plat.."/libem.a"] = "mach/"..e.arch.."/libem+lib_"..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.."/libend.a"] = "mach/"..e.arch.."/libend+lib_"..e.plat,
|
||||||
["$(PLATIND)/"..e.plat.."/libsys.a"] = "mach/"..e.arch.."/libsys+lib_"..e.plat,
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
end
|
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("plat/build.lua")
|
||||||
include("lang/build.lua")
|
|
||||||
|
|
||||||
build_plat_tools {
|
|
||||||
name = "tools",
|
|
||||||
arch = "i86",
|
|
||||||
plat = "pc86",
|
|
||||||
}
|
|
||||||
|
|
||||||
ackfile {
|
ackfile {
|
||||||
name = "boot",
|
name = "boot",
|
||||||
|
@ -13,14 +6,6 @@ ackfile {
|
||||||
vars = { plat = "pc86" }
|
vars = { plat = "pc86" }
|
||||||
}
|
}
|
||||||
|
|
||||||
acklibrary {
|
|
||||||
name = "headers",
|
|
||||||
hdrs = {
|
|
||||||
["ack/config.h"] = "./include/ack/config.h",
|
|
||||||
["unistd.h"] = "./include/unistd.h",
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
build_plat_libs {
|
build_plat_libs {
|
||||||
name = "libs",
|
name = "libs",
|
||||||
arch = "i86",
|
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[]; {
|
main(argc,argv) char *argv[]; {
|
||||||
|
|
||||||
newline = 1;
|
newline = 1;
|
||||||
if (argc != 2) {
|
if (argc != 3) {
|
||||||
fprintf(stderr,"Usage : %s targetoptimizerdescription\n",argv[0]);
|
fprintf(stderr,"Usage : %s targetoptimizerdescription outputdir\n",argv[0]);
|
||||||
exit(1);
|
exit(1);
|
||||||
}
|
}
|
||||||
if ((input = fopen(argv[1],"r")) == NULL) {
|
if ((input = fopen(argv[1],"r")) == NULL) {
|
||||||
fprintf(stderr,"Fatal error : couldn't open %s\n",argv[1]);
|
fprintf(stderr,"Fatal error : couldn't open %s\n",argv[1]);
|
||||||
exit(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) {
|
if ((genc = fopen("gen.c","w")) == NULL) {
|
||||||
fputs("Fatal error : couldn't open gen.c\n",stderr);
|
fputs("Fatal error : couldn't open gen.c\n",stderr);
|
||||||
|
|
Loading…
Reference in a new issue