aboutsummaryrefslogtreecommitdiff
path: root/ninja.m4
diff options
context:
space:
mode:
Diffstat (limited to 'ninja.m4')
-rw-r--r--ninja.m429
1 files changed, 27 insertions, 2 deletions
diff --git a/ninja.m4 b/ninja.m4
index 62f3aa2..7a22ba0 100644
--- a/ninja.m4
+++ b/ninja.m4
@@ -1,5 +1,12 @@
divert(-1)
changequote([,])
+
+define([map], [ifelse([$2],,, [dnl
+$1($2)[]map([$1], shift(shift($@)))dnl
+])])
+
+define([first], [$1 ])
+
divert(0)
# rules
@@ -16,6 +23,14 @@ rule shared
command = gcc -MD -MF $out.d $cflags -shared -fPIC $in -o $out
rule m4
command = m4 $m4flags $in > $out
+rule leak
+ command = $leak $in
+
+define([sbuild], [
+build $bin/$1: cc $2
+ cflags = $cflags $3
+build $1: leak $bin/$1
+])
build $bin/generate-parser: cc demos/generate-parser.c
cflags = $cflags -rdynamic
@@ -55,18 +70,28 @@ rule lbp_parse
command = $leak $bin/lbp-parser < $in
build lbp_test: lbp_parse demos/sample-files/lbp-code.lbp | lbp
-gbuild(from-gram, calc, demos/sample-files, lalr-table) # skeleton doesn't work
+gbuild(from-gram, calc, demos/sample-files, lalr-table)
rule calc_parse
command = $leak $bin/calc-parser 5+3
build calc_test: calc_parse | calc
+define([standalone_table], [
+[util-tables, util-tables.c, -D_UTIL_TABLES_STANDALONE],
+[slr-table, slr-table.c, -D_SLR_TABLE_STANDALONE],
+[clr-table, clr-table.c, -D_CLR_TABLE_STANDALONE],
+[lalr-table, clr-table.c, -D_CLR_TABLE_STANDALONE -D_LAZY_LALR],
+[lr-parser, lr-parser.c, -D_LR_PARSER_STANDALONE]])
+
+map([sbuild], standalone_table)
+
# targets
rule ninja_clean
command = ninja -t clean
build clean: ninja_clean
-default lbp_test
+# default map([first], standalone_table)
+default calc_test
# regeneration