summaryrefslogtreecommitdiff
path: root/pkg/mc/gen.lua
diff options
context:
space:
mode:
authorMichael Forney <mforney@mforney.org>2017-09-17 00:03:34 -0700
committerMichael Forney <mforney@mforney.org>2017-09-25 19:23:06 -0700
commitba94a8513d9a0aadb3f2c834c74b64aa644c61e8 (patch)
tree48ac6c85baa7b9d960b9e1e726a906e61ca60967 /pkg/mc/gen.lua
parentcb362b531d79708a259bbf070dee5104fd63df08 (diff)
Rewrite ninja generation scripts in Lua
Diffstat (limited to 'pkg/mc/gen.lua')
-rw-r--r--pkg/mc/gen.lua78
1 files changed, 78 insertions, 0 deletions
diff --git a/pkg/mc/gen.lua b/pkg/mc/gen.lua
new file mode 100644
index 00000000..ca7479ce
--- /dev/null
+++ b/pkg/mc/gen.lua
@@ -0,0 +1,78 @@
+cflags{
+ '-I $outdir',
+ '-I $srcdir',
+ '-I $srcdir/mi',
+ '-I $srcdir/parse',
+ '-I $srcdir/util',
+}
+
+yacc('gram', '$srcdir/parse/gram.y')
+build('copy', '$outdir/gram.h', '$outdir/gram.tab.h')
+
+lib('libparse.a', [[
+ $outdir/gram.tab.c
+ parse/(
+ dump.c
+ err.c
+ export.c
+ fold.c
+ infer.c
+ names.c
+ node.c
+ specialize.c
+ stab.c
+ tok.c
+ type.c
+ use.c
+ )
+]], {'$outdir/gram.h'})
+lib('libmi.a', 'mi/(cfg.c flatten.c dfcheck.c match.c reaching.c)')
+lib('libutil.a', 'util/(alloc.c bitset.c htab.c pack.c util.c)')
+
+exe('bin/6m', [[
+ 6/(
+ blob.c
+ gen.c
+ gengas.c
+ genp9.c
+ isel.c
+ locs.c
+ main.c
+ ra.c
+ peep.c
+ simp.c
+ typeinfo.c
+ )
+ libmi.a libparse.a libutil.a
+]])
+file('bin/6m', '755', '$outdir/bin/6m')
+
+exe('bin/muse', {'muse/muse.c', 'libparse.a', 'libutil.a'})
+file('bin/muse', '755', '$outdir/bin/muse')
+
+build('cat', '$outdir/_myrrt.s', {
+ '$srcdir/rt/start-linux.s',
+ '$srcdir/rt/common.s',
+ '$srcdir/rt/abort-linux.s',
+})
+build('as', '$outdir/_myrrt.o', '$outdir/_myrrt.s')
+file('lib/myr/_myrrt.o', '644', '$outdir/_myrrt.o')
+
+set('mcflags', {
+ '-I $outdir/lib/sys',
+ '-I $outdir/lib/std',
+ '-I $outdir/lib/bio',
+ '-I $outdir/lib/regex',
+ '-I $outdir/lib/thread',
+})
+
+include '$dir/myr.ninja'
+for lib in iterpaths('bio crypto date escfmt fileutil inifile json regex std sys testr thread') do
+ file('lib/myr/lib'..lib..'.use', '644', '$outdir/lib/'..lib..'/lib'..lib..'.use')
+ file('lib/myr/lib'..lib..'.a', '644', '$outdir/lib/'..lib..'/lib'..lib..'.a')
+end
+file('bin/mbld', '755', '$outdir/mbld/mbld')
+
+man{'doc/6m.1', 'doc/muse.1', 'mbld/mbld.1'}
+
+fetch 'git'