Massive ackbuilder refactor --- cleaner and more expressive. Lists

are automatically flattened (leading to better build files), and the
list and filename functions are vastly more orthogonal.
This commit is contained in:
David Given
2016-08-04 23:51:19 +02:00
parent b2bb4ce3b2
commit 5e84be70fd
11 changed files with 198 additions and 149 deletions

View File

@@ -21,7 +21,7 @@ definerule("llgen",
function(e)
-- Remember this is executed from the caller's directory; local
-- target names will resolve there
local fs = replace(basename(e.srcs), "%.g$", "")
local fs = replace(basename(filenamesof(e.srcs)), "%.g$", "")
return normalrule {
name = e.name,
@@ -29,11 +29,11 @@ definerule("llgen",
outleaves = {
"Lpars.c",
"Lpars.h",
unpack(replace(fs, "$", ".c"))
replace(fs, "$", ".c")
},
ins = {
"util/LLgen+llgen",
unpack(e.srcs),
e.srcs,
},
commands = {
"cd %{dir} && %{abspath(ins)}"

View File

@@ -8,13 +8,13 @@ definerule("tabgen",
srcs = { type="targets" },
},
function(e)
local symname = replace(basename(e.srcs[1]), "%.tab$", "")
local symname = basename(filenamesof(e.srcs)[1]):gsub("%.tab$", "")
return normalrule {
name = e.name,
ins = {
"util/cmisc+tabgen",
unpack(e.srcs)
e.srcs
},
outleaves = { symname..".c" },
commands = {

View File

@@ -24,7 +24,7 @@ clibrary {
name = "em_data",
srcs = concat(
"./em_ptyp.c",
filenamesof(generated, "%.c$")
matching(filenamesof(generated), "%.c$")
),
hdrs = {
"+generated" -- so we export the H files

View File

@@ -12,11 +12,11 @@ local cgglexer = flex {
normalrule {
name = "keywords",
ins = concat(
ins = {
"./cvtkeywords",
"./keywords",
filenamesof({cggparser}, "%.h$")
),
matching(filenamesof(cggparser), "%.h$")
},
outleaves = { "enterkeyw.c" },
commands = {
"%{ins[1]} %{ins[2]} %{ins[3]} %{outs[1]}"
@@ -27,8 +27,8 @@ cprogram {
name = "ncgg",
srcs = concat(
"./*.c",
filenamesof({cggparser}, "%.c$"),
filenamesof({cgglexer}, "%.c$"),
matching(filenamesof(cggparser), "%.c$"),
matching(filenamesof(cgglexer), "%.c$"),
"+keywords"
),
deps = {