From ba94a8513d9a0aadb3f2c834c74b64aa644c61e8 Mon Sep 17 00:00:00 2001 From: Michael Forney Date: Sun, 17 Sep 2017 00:03:34 -0700 Subject: Rewrite ninja generation scripts in Lua --- pkg/fribidi/gen.lua | 84 +++++++++++++++++++++++++++++++++++++++++++++++++++++ pkg/fribidi/gen.rc | 63 ---------------------------------------- 2 files changed, 84 insertions(+), 63 deletions(-) create mode 100644 pkg/fribidi/gen.lua delete mode 100644 pkg/fribidi/gen.rc (limited to 'pkg/fribidi') 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 -- cgit v1.2.3