whole and is one step further towards a proper test suite.
"rpi",
}
+local plat_packages = {}
+for _, p in ipairs(vars.plats) do
+ plat_packages[#plat_packages+1] = "plat/"..p.."+pkg"
+end
+
installable {
name = "ack",
map = {
"lang/cem/cemcom.ansi+pkg",
"lang/m2/comp+pkg",
"lang/pc/comp+pkg",
- "plat/cpm+pkg",
- "plat/linux386+pkg",
- "plat/linux68k+pkg",
- "plat/rpi+pkg",
- "plat/pc86+pkg",
"util/ack+pkg",
"util/amisc+pkg",
"util/arch+pkg",
"util/led+pkg",
"util/misc+pkg",
"util/opt+pkg",
+ "examples+pkg",
+ plat_packages
}
}
--- /dev/null
+include("plat/build.lua")
+
+local conly = {
+ rpi = true
+}
+
+local sourcefiles = filenamesof(
+ "./hilo.b",
+ "./hilo.c",
+ "./hilo.mod",
+ "./hilo.p",
+ "./mandelbrot.c",
+ "./paranoia.c",
+ "./startrek.c"
+)
+
+local installmap = {}
+for _, file in ipairs(sourcefiles) do
+ local b = basename(file)
+ local be = replace(b, "%.", "_")
+ local _, _, e = b:find("%.(%w*)$")
+
+ for _, plat in ipairs(vars.plats) do
+ if (e == "c") or not conly[plat] then
+ local exe = ackprogram {
+ name = be.."_"..plat,
+ srcs = { file },
+ vars = {
+ plat = plat,
+ lang = e,
+ }
+ }
+
+ installmap["$(PLATIND)/examples/"..be.."."..plat] = exe
+ end
+ end
+ installmap["$(PLATIND)/examples/"..b] = file
+end
+
+installable {
+ name = "pkg",
+ map = installmap
+}
+
{
srcs = { type="targets", default={} },
deps = { type="targets", default={} },
+ _clibrary = { type="object", default=clibrary },
commands = {
type="strings",
default={
for _, f in pairs(
matching(
filenamesof(
- clibrary {
+ e._clibrary {
name = e.name .. "/main",
cwd = e.cwd,
srcs = e.srcs,
end
)
+definerule("ackprogram",
+ {
+ srcs = { type="targets", default={} },
+ deps = { type="targets", default={} },
+ },
+ function (e)
+ return cprogram {
+ name = e.name,
+ srcs = e.srcs,
+ deps = {
+ "plat/"..e.vars.plat.."+pkg",
+ "util/ack+pkg",
+ "util/led+pkg",
+ "util/amisc+pkg",
+ e.deps
+ },
+ _clibrary = acklibrary,
+ commands = {
+ "ACKDIR=$(INSDIR) $(INSDIR)/bin/ack -m%{plat} -.%{lang} -o %{outs} %{ins}"
+ }
+ }
+ end
+)
+
definerule("build_plat_libs",
{
arch = { type="string" },