summaryrefslogtreecommitdiff
path: root/pkg/ncurses/gen.rc
blob: 6ca8c645cd9f1b52f5be883c9011401b7669061f (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
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
set common_cflags\
	-D NDEBUG\
	-I include\
	-I '$dir' \
	-I '$outdir' \
	-I '$outdir'/include\
	-I '$srcdir'/include\
	-I '$srcdir'/ncurses\
	-I '$srcdir'/progs
cflags '$common_cflags'

{
	toolchain host
	cflags '$common_cflags' -D USE_BUILD_CC
	exe make_keys -d '$outdir/names.c $outdir/include/curses.h $outdir/include/ncurses_dll.h' ncurses/tinfo/make_keys.c
	exe make_hash -d '$outdir/hashsize.h $outdir/include/curses.h' ncurses/tinfo/make_hash.c
} >tools.ninja ; subninja tools.ninja

build '$outdir'/curses.head sed '$srcdir'/include/curses.h.in '|' '$dir'/subst.sed ; with\
	expr '-f $dir/subst.sed'
rule mkkeydefs '{ cat $outdir/curses.head && sh $srcdir/include/MKkey_defs.sh $in && cat $srcdir/include/curses.{wide,tail}; } >$out.tmp && mv $out.tmp $out'
build '$outdir'/include/curses.h mkkeydefs '$srcdir'/include/Caps '|' '$outdir'/curses.head '$srcdir'/include/^(curses.^(wide tail) MKkey_defs.sh)

rule mkhashsize 'sh $srcdir/include/MKhashsize.sh $in >$out.tmp && mv $out.tmp $out'
build '$outdir'/hashsize.h mkhashsize '$srcdir'/include/Caps '|' '$srcdir'/include/MKhashsize.sh

rule mkkeyslist 'sh $srcdir/ncurses/tinfo/MKkeys_list.sh $in | sort >$out.tmp && mv $out.tmp $out'
build '$outdir'/keys.list mkkeyslist '$srcdir'/include/Caps '|' '$srcdir'/ncurses/tinfo/MKkeys_list.sh

rule mkkeys '$outdir/make_keys $in >$out.tmp && mv $out.tmp $out'
build '$outdir'/init_keytry.h mkkeys '$outdir'/keys.list '|' '$outdir'/make_keys

rule mkdefs 'sh $srcdir/include/MKncurses_def.sh $in >$out.tmp && mv $out.tmp $out'
build '$outdir'/ncurses_def.h mkdefs '$srcdir'/include/ncurses_defs '|' '$srcdir'/include/MKncurses_def.sh

build '$outdir'/include/ncurses_dll.h sed '$srcdir'/include/ncurses_dll.h.in ; with\
	expr s,@NCURSES_WRAP_PREFIX@,_nc_,

rule mkparam '$srcdir/include/MKparametrized.sh $in >$out.tmp && mv $out.tmp $out'
build '$outdir'/parametrized.h mkparam '$srcdir'/include/Caps '|' '$srcdir'/include/MKparametrized.sh

build '$outdir'/MKterm.h.awk sed '$srcdir'/include/MKterm.h.awk.in '|' '$dir'/subst.sed ; with\
	expr '-f $dir/subst.sed'

for(f in termcap.h unctrl.h) {
	build '$outdir'/include/$f sed '$srcdir'/include/$f.in '|' '$dir'/subst.sed ; with\
		expr '-f $dir/subst.sed'
}

rule mkterm 'awk -f $outdir/MKterm.h.awk $in >$out.tmp && mv $out.tmp $out'
build '$outdir'/include/term.h mkterm '$srcdir'/include/Caps '|' '$outdir'/MKterm.h.awk

build '$outdir'/codes.c awk '$srcdir'/include/Caps '|' '$srcdir'/ncurses/tinfo/MKcodes.awk ; with\
	expr '-f $srcdir/ncurses/tinfo/MKcodes.awk bigstrings=1'

rule mkcaptab '(cd $outdir && $$OLDPWD/$srcdir/ncurses/tinfo/MKcaptab.sh awk 1 $$OLDPWD/$srcdir/ncurses/tinfo/MKcaptab.awk $$OLDPWD/$in) >$out.tmp && mv $out.tmp $out'
build '$outdir'/comp_captab.c mkcaptab '$srcdir'/include/Caps '|' '$outdir'/make_hash '$srcdir'/tinfo/^(MKcaptab.awk MKcaptab.sh)

rule mkfallback 'sh $srcdir/ncurses/tinfo/MKfallback.sh /dev/null /dev/null /dev/null >$out.tmp && mv $out.tmp $out'
build '$outdir'/fallback.c mkfallback '|' '$srcdir'/ncurses/tinfo/MKfallback.sh

build '$outdir'/lib_keyname.c awk '$outdir'/keys.list ; with\
	expr '-f $srcdir/ncurses/base/MKkeyname.awk bigstrings=1'

build '$outdir'/names.c awk '$srcdir'/include/Caps '|' '$srcdir'/ncurses/tinfo/MKnames.awk ; with\
	expr '-f $srcdir/ncurses/tinfo/MKnames.awk bigstrings=1'

rule mktermsort 'sh $srcdir/progs/MKtermsort.sh awk $in >$out.tmp && mv $out.tmp $out'
build '$outdir'/termsort.c mktermsort '$srcdir'/include/Caps '|' '$srcdir'/progs/MKtermsort.sh

build '$outdir'/unctrl.c awk /dev/null '|' '$srcdir'/ncurses/base/MKunctrl.awk ; with\
	expr '-f $srcdir/ncurses/base/MKunctrl.awk bigstrings=1'

hdrs=include/^(curses.h ncurses_dll.h term.h termcap.h unctrl.h)
for(hdr in $hdrs) file $hdr '$outdir'/$hdr 644
phony headers '$outdir'/$hdrs

phony deps '$outdir'/^(\
	hashsize.h init_keytry.h ncurses_def.h parametrized.h termsort.c\
) '$dir'/headers

lib libncurses.a -d '$dir'/deps `{grep -v '^#' sources.txt}
file lib/libncurses.a '$outdir'/libncurses.a 644

exe tic -d '$dir'/deps\
	progs/^(tic.c dump_entry.c tparm_type.c transform.c)\
	ncurses/^(\
		tinfo/^(\
			alloc_entry.c\
			captoinfo.c\
			comp_expand.c\
			comp_parse.c\
			comp_scan.c\
			parse_entry.c\
			write_entry.c\
		)\
		trace/lib_trace.c\
	)\
	libncurses.a
file bin/tic '$outdir'/tic 755

exe tset -d '$dir'/deps progs/^(tset.c transform.c.o) libncurses.a
file bin/tset '$outdir'/tset 755
sym bin/reset tset

for(m in tic.1m tset.1) {
	build '$outdir'/$m sed '$srcdir'/man/$m '|' '$dir'/subst.sed ; with\
		expr '-f $dir/subst.sed'
	man -d '$outdir' 1 $m
}
sym share/man/man1/reset.1.gz tset.1.gz

terms=(dumb linux tmux tmux-256color xterm xterm-256color)
terminfo=`{printf %s\n $terms | awk '{print substr($0, 1, 1) "/" $0}'}
termnames=`{printf ,%s $terms | tail -c +1}
terminfo_outs='$outdir'/terminfo/$terminfo

build $"terminfo_outs tic '$srcdir'/misc/terminfo.src ; ticflags=(\
	-o '$outdir'/terminfo\
	-e $termnames\
	-x\
) with ticflags $"ticflags
for(f in $terminfo)
	file share/terminfo/$f '$outdir'/terminfo/$f 644

gen_inputs='$dir'/sources.txt

fetch curl