summaryrefslogtreecommitdiff
path: root/pkg/fribidi/gen.lua
diff options
context:
space:
mode:
Diffstat (limited to 'pkg/fribidi/gen.lua')
-rw-r--r--pkg/fribidi/gen.lua84
1 files changed, 84 insertions, 0 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'