summaryrefslogtreecommitdiff
path: root/pkg/fribidi
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/fribidi
parentcb362b531d79708a259bbf070dee5104fd63df08 (diff)
Rewrite ninja generation scripts in Lua
Diffstat (limited to 'pkg/fribidi')
-rw-r--r--pkg/fribidi/gen.lua84
-rw-r--r--pkg/fribidi/gen.rc63
2 files changed, 84 insertions, 63 deletions
diff --git a/pkg/fribidi/gen.lua b/pkg/fribidi/gen.lua
new file mode 100644
index 00000000..4f992d1f
--- /dev/null
+++ b/pkg/fribidi/gen.lua
@@ -0,0 +1,84 @@
+cflags{
+ '-D HAVE_CONFIG_H',
+ '-I include',
+ '-I $dir',
+ '-I $outdir',
+ '-I $outdir/include',
+ '-I $srcdir/lib',
+}
+
+sub('tools.ninja', function()
+ cc('gen.tab/packtab.c')
+ exe('gen-unicode-version', {'gen.tab/gen-unicode-version.c'})
+ for _, t in ipairs{'bidi-type', 'joining-type', 'arabic-shaping', 'mirroring'} do
+ exe('gen-'..t..'-tab', expand{'gen.tab/', {
+ 'gen-'..t..'-tab.c',
+ 'packtab.c.o',
+ }}, {'$dir/headers'})
+ end
+end)
+
+set('compression', '2')
+
+rule('gentool', '$outdir/$tool $args $in >$out.tmp && mv $out.tmp $out')
+local function gentool(tool, out, srcs, args)
+ build('gentool', '$outdir/'..out, {expand{'$srcdir/gen.tab/unidata/', srcs}, '|', '$outdir/gen-'..tool}, {
+ tool='gen-'..tool,
+ args=args,
+ })
+end
+
+gentool('unicode-version', 'include/fribidi-unicode-version.h', {'BidiMirroring.txt'})
+gentool('bidi-type-tab', 'bidi-type.tab.i', {'UnicodeData.txt'}, '$compression')
+gentool('joining-type-tab', 'joining-type.tab.i', {'UnicodeData.txt', 'ArabicShaping.txt'}, '$compression')
+gentool('arabic-shaping-tab', 'arabic-shaping.tab.i', {'UnicodeData.txt'}, '$compression')
+gentool('mirroring-tab', 'mirroring.tab.i', {'BidiMirroring.txt'}, '$compression')
+
+pkg.hdrs = {
+ copy('$outdir/include', '$srcdir/lib', {
+ 'fribidi.h',
+ 'fribidi-arabic.h',
+ 'fribidi-begindecls.h',
+ 'fribidi-bidi.h',
+ 'fribidi-bidi-types.h',
+ 'fribidi-bidi-types-list.h',
+ 'fribidi-common.h',
+ 'fribidi-deprecated.h',
+ 'fribidi-enddecls.h',
+ 'fribidi-flags.h',
+ 'fribidi-joining.h',
+ 'fribidi-joining-types.h',
+ 'fribidi-joining-types-list.h',
+ 'fribidi-mirroring.h',
+ 'fribidi-shape.h',
+ 'fribidi-types.h',
+ 'fribidi-unicode.h',
+ }),
+ copy('$outdir/include', '$dir', {'fribidi-config.h'}),
+ '$outdir/include/fribidi-unicode-version.h',
+}
+pkg.deps = {
+ '$outdir/bidi-type.tab.i',
+ '$outdir/joining-type.tab.i',
+ '$outdir/arabic-shaping.tab.i',
+ '$outdir/mirroring.tab.i',
+ '$dir/headers',
+}
+
+lib('libfribidi.a', [[
+ lib/(
+ fribidi.c
+ fribidi-arabic.c
+ fribidi-bidi.c
+ fribidi-bidi-types.c
+ fribidi-deprecated.c
+ fribidi-joining.c
+ fribidi-joining-types.c
+ fribidi-mem.c
+ fribidi-mirroring.c
+ fribidi-run.c
+ fribidi-shape.c
+ )
+]])
+
+fetch 'git'
diff --git a/pkg/fribidi/gen.rc b/pkg/fribidi/gen.rc
deleted file mode 100644
index 18d55075..00000000
--- a/pkg/fribidi/gen.rc
+++ /dev/null
@@ -1,63 +0,0 @@
-cflags\
- -D HAVE_CONFIG_H\
- -I include\
- -I '$dir' \
- -I '$outdir' \
- -I '$outdir'/include\
- -I '$srcdir'/lib
-
-{
- cc gen.tab/packtab.c
- exe gen-unicode-version gen.tab/gen-unicode-version.c
- for(t in bidi-type joining-type arabic-shaping mirroring)
- exe gen-$t-tab -d '$dir'/headers gen.tab/^(gen-$t-tab.c packtab.c.o)
-} >tools.ninja ; subninja tools.ninja
-
-set compression 2
-
-rule gentool '$outdir/$tool $args $in >$out.tmp && mv $out.tmp $out'
-fn gentool {
- tool=$1
- out=$2
- shift 2
- build '$outdir'/$out gentool '$srcdir'/gen.tab/unidata/$* '|' '$outdir'/gen-$tool
- with tool gen-$tool
-}
-
-gentool unicode-version include/fribidi-unicode-version.h BidiMirroring.txt
-gentool bidi-type-tab bidi-type.tab.i UnicodeData.txt ; with args '$compression'
-gentool joining-type-tab joining-type.tab.i UnicodeData.txt ArabicShaping.txt ; with args '$compression'
-gentool arabic-shaping-tab arabic-shaping.tab.i UnicodeData.txt ; with args '$compression'
-gentool mirroring-tab mirroring.tab.i BidiMirroring.txt ; with args '$compression'
-
-hdrs=(\
- fribidi.h fribidi-arabic.h fribidi-begindecls.h\
- fribidi-bidi.h fribidi-bidi-types.h fribidi-bidi-types-list.h\
- fribidi-common.h fribidi-deprecated.h fribidi-enddecls.h fribidi-flags.h\
- fribidi-joining.h fribidi-joining-types.h fribidi-joining-types-list.h\
- fribidi-mirroring.h fribidi-shape.h fribidi-types.h fribidi-unicode.h\
-)
-for(hdr in $hdrs)
- build '$outdir'/include/$hdr copy '$srcdir'/lib/$hdr
-build '$outdir'/include/fribidi-config.h copy '$dir'/fribidi-config.h
-phony headers '$outdir'/include/^($hdrs fribidi-config.h fribidi-unicode-version.h)
-
-phony deps\
- '$outdir'/^(bidi-type joining-type arabic-shaping mirroring)^.tab.i\
- '$dir'/headers
-
-lib libfribidi.a -d '$dir'/deps lib/^(\
- fribidi.c\
- fribidi-arabic.c\
- fribidi-bidi.c\
- fribidi-bidi-types.c\
- fribidi-deprecated.c\
- fribidi-joining.c\
- fribidi-joining-types.c\
- fribidi-mem.c\
- fribidi-mirroring.c\
- fribidi-run.c\
- fribidi-shape.c\
-)
-
-fetch git