ack/tests/plat/build.lua

97 lines
2.1 KiB
Lua
Raw Normal View History

include("plat/build.lua")
definerule("plat_testsuite",
{
plat = { type="string" },
method = { type="string" },
-- added bugs/bug-203-ego-sr_c-O3.c
sets = { type="table", default={"core", "b", "bugs", "m2", "floats", "long-long"}},
skipsets = { type="table", default={}},
tests = { type="targets", default={} },
},
function(e)
-- Remember this is executed from the caller's directory; local
-- target names will resolve there.
local testfiles = filenamesof(e.tests)
local skipsets = {}
for _, set in ipairs(e.skipsets) do
skipsets[set] = true
end
for _, set in ipairs(e.sets) do
if not skipsets[set] then
local fs = filenamesof("tests/plat/"..set.."/*")
for _, f in ipairs(fs) do
testfiles[#testfiles+1] = f
end
end
end
acklibrary {
name = "lib",
srcs = {
"tests/plat/lib/test.c",
"tests/plat/lib/test_b.c",
},
hdrs = {
"tests/plat/lib/test.h",
"tests/plat/lib/Test.def"
},
vars = { plat = e.plat },
}
local tests = {}
for _, f in ipairs(testfiles) do
local fs = replace(basename(f), "%.[^.]+$", "")
2016-12-06 21:07:22 +00:00
local _, _, lang = fs:find("_([^_]+)$")
if not lang then
lang = "e"
end
-- If lang is "c-O3", then build with -O3.
local _, _, optimize = lang:find("(-O[^-]*)$")
if optimize then
lang = lang:sub(1, -1 - #optimize)
else
optimize = "-O0"
end
local bin = ackprogram {
name = fs.."_bin",
srcs = { f },
deps = { "+lib" },
vars = {
plat = e.plat,
lang = lang,
ackcflags = optimize.." -Bmain"
}
}
local methoddep = nil
local methodpath = e.method
if e.method:find("%+") then
methoddep = e.method
methodpath = "%{ins[4]}"
end
tests[#tests+1] = normalrule {
name = fs,
outleaves = { e.plat.."-"..fs.."-testlog.txt" },
ins = {
bin,
"tests/plat/testdriver.sh",
"util/build+testrunner",
methoddep,
},
commands = {
"%{ins[2]} "..methodpath.." %{ins[1]} 15 %{ins[3]} > %{outs}; true",
}
}
end
return bundle {
name = e.name,
srcs = tests,
}
end
)