We can build our first C file.
This commit is contained in:
@@ -19,10 +19,27 @@ cprogram {
|
||||
}
|
||||
}
|
||||
|
||||
cprogram {
|
||||
name = "decode",
|
||||
srcs = { "./convert.c" },
|
||||
deps = {
|
||||
"h+emheaders",
|
||||
"modules+headers",
|
||||
"modules/src/alloc+lib",
|
||||
"modules/src/em_code+lib_k",
|
||||
"modules/src/print+lib",
|
||||
"modules/src/read_em+lib_kv",
|
||||
"modules/src/string+lib",
|
||||
"modules/src/system+lib",
|
||||
"util/data+em_data",
|
||||
}
|
||||
}
|
||||
|
||||
installable {
|
||||
name = "pkg",
|
||||
map = {
|
||||
["$(PLATDEP)/em_encode"] = "+encode",
|
||||
["$(PLATDEP)/em_decode"] = "+decode",
|
||||
["$(INSDIR)/bin/esize"] = "+esize",
|
||||
["$(PLATIND)/man/man1/esize.1"] = "./esize.1",
|
||||
["$(PLATIND)/man/man6/em_decode.6"] = "./em_decode.6"
|
||||
|
||||
85
util/opt/build.lua
Normal file
85
util/opt/build.lua
Normal file
@@ -0,0 +1,85 @@
|
||||
include("first/yacc.lua")
|
||||
|
||||
yacc {
|
||||
name = "yacc",
|
||||
srcs = { "./mktab.y" }
|
||||
}
|
||||
|
||||
flex {
|
||||
name = "flex",
|
||||
srcs = { "./scan.l" }
|
||||
}
|
||||
|
||||
cprogram {
|
||||
name = "mktab",
|
||||
srcs = {
|
||||
matching(filenamesof("+yacc"), "%.c$"),
|
||||
matching(filenamesof("+flex"), "%.c$"),
|
||||
},
|
||||
deps = {
|
||||
"+flex",
|
||||
"+yacc",
|
||||
"util/data+em_data",
|
||||
}
|
||||
}
|
||||
|
||||
normalrule {
|
||||
name = "pattern_c",
|
||||
ins = {
|
||||
"+mktab",
|
||||
"./patterns",
|
||||
"lang/cem/cpp.ansi+cpp"
|
||||
},
|
||||
outleaves = { "pattern.c" },
|
||||
commands = {
|
||||
"%{ins[3]} < %{ins[2]} | %{ins[1]} > %{outs}"
|
||||
}
|
||||
}
|
||||
|
||||
normalrule {
|
||||
name = "pop_push_c",
|
||||
ins = {
|
||||
"./pop_push.awk",
|
||||
"h/em_table"
|
||||
},
|
||||
outleaves = { "pop_push.c" },
|
||||
commands = {
|
||||
"awk -f %{ins[1]} < %{ins[2]} > %{outs}"
|
||||
}
|
||||
}
|
||||
|
||||
local function variant(name, cflags)
|
||||
cprogram {
|
||||
name = name,
|
||||
srcs = {
|
||||
"+pattern_c",
|
||||
"+pop_push_c",
|
||||
"./*.c",
|
||||
},
|
||||
deps = {
|
||||
"./*.h",
|
||||
"h+emheaders",
|
||||
"modules/src/alloc+lib",
|
||||
"modules/src/print+lib",
|
||||
"modules/src/string+lib",
|
||||
"modules/src/system+lib",
|
||||
"util/data+em_data",
|
||||
},
|
||||
vars = {
|
||||
["+cflags"] = cflags
|
||||
}
|
||||
}
|
||||
end
|
||||
|
||||
variant("em_opt", {})
|
||||
variant("em_opt2", {"-DGLOBAL_OPT"})
|
||||
|
||||
installable {
|
||||
name = "pkg",
|
||||
map = {
|
||||
["$(PLATDEP)/em_opt"] = "+em_opt",
|
||||
["$(PLATDEP)/em_opt2"] = "+em_opt2",
|
||||
["$(INSDIR)/share/man/man6/em_opt.6"] = "./em_opt.6",
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user