summaryrefslogtreecommitdiff
path: root/pkg/fribidi/gen.lua
blob: 4f992d1f4613a6ce468d4ed526cd75d6eb6fd27b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
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'