summaryrefslogtreecommitdiff
path: root/pkg/ncurses
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/ncurses
parentcb362b531d79708a259bbf070dee5104fd63df08 (diff)
Rewrite ninja generation scripts in Lua
Diffstat (limited to 'pkg/ncurses')
-rw-r--r--pkg/ncurses/gen.lua166
-rw-r--r--pkg/ncurses/gen.rc128
2 files changed, 166 insertions, 128 deletions
diff --git a/pkg/ncurses/gen.lua b/pkg/ncurses/gen.lua
new file mode 100644
index 00000000..cada34e6
--- /dev/null
+++ b/pkg/ncurses/gen.lua
@@ -0,0 +1,166 @@
+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'}
+
+sub('tools.ninja', function()
+ toolchain 'host'
+ cflags{'$common_cflags', '-D USE_BUILD_CC'}
+ exe('make_keys', {'ncurses/tinfo/make_keys.c'}, {
+ '$outdir/names.c',
+ '$outdir/include/curses.h',
+ '$outdir/include/ncurses_dll.h',
+ })
+ exe('make_hash', {'ncurses/tinfo/make_hash.c'}, {
+ '$outdir/hashsize.h',
+ '$outdir/include/curses.h',
+ })
+end)
+
+build('sed', '$outdir/curses.head', {'$srcdir/include/curses.h.in', '|', '$dir/subst.sed'}, {
+ expr='-f $dir/subst.sed',
+})
+rule('mkkeydefs', '{ cat $outdir/curses.head && sh $srcdir/include/MKkey_defs.sh $in && cat $srcdir/include/curses.wide $srcdir/include/curses.tail; } >$out.tmp && mv $out.tmp $out')
+build('mkkeydefs', '$outdir/include/curses.h', {'$srcdir/include/Caps', '|',
+ '$outdir/curses.head',
+ '$srcdir/include/curses.wide',
+ '$srcdir/include/curses.tail',
+ '$srcdir/include/MKkey_defs.sh',
+})
+
+rule('mkhashsize', 'sh $srcdir/include/MKhashsize.sh $in >$out.tmp && mv $out.tmp $out')
+build('mkhashsize', '$outdir/hashsize.h', {'$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('mkkeyslist', '$outdir/keys.list', {'$srcdir/include/Caps', '|', '$srcdir/ncurses/tinfo/MKkeys_list.sh'})
+
+rule('mkkeys', '$outdir/make_keys $in >$out.tmp && mv $out.tmp $out')
+build('mkkeys', '$outdir/init_keytry.h', {'$outdir/keys.list', '|', '$outdir/make_keys'})
+
+rule('mkdefs', 'sh $srcdir/include/MKncurses_def.sh $in >$out.tmp && mv $out.tmp $out')
+build('mkdefs', '$outdir/ncurses_def.h', {'$srcdir/include/ncurses_defs', '|', '$srcdir/include/MKncurses_def.sh'})
+
+build('sed', '$outdir/include/ncurses_dll.h', '$srcdir/include/ncurses_dll.h.in', {
+ expr='s,@NCURSES_WRAP_PREFIX@,_nc_,',
+})
+
+rule('mkparam', '$srcdir/include/MKparametrized.sh $in >$out.tmp && mv $out.tmp $out')
+build('mkparam', '$outdir/parametrized.h', {'$srcdir/include/Caps', '|', '$srcdir/include/MKparametrized.sh'})
+
+build('sed', '$outdir/MKterm.h.awk', {'$srcdir/include/MKterm.h.awk.in', '|', '$dir/subst.sed'}, {
+ expr='-f $dir/subst.sed',
+})
+
+for _, f in ipairs{'termcap.h', 'unctrl.h'} do
+ build('sed', '$outdir/include/'..f, {'$srcdir/include/'..f..'.in', '|', '$dir/subst.sed'}, {
+ expr='-f $dir/subst.sed',
+ })
+end
+
+rule('mkterm', 'awk -f $outdir/MKterm.h.awk $in >$out.tmp && mv $out.tmp $out')
+build('mkterm', '$outdir/include/term.h', {'$srcdir/include/Caps', '|', '$outdir/MKterm.h.awk'})
+
+build('awk', '$outdir/codes.c', {'$srcdir/include/Caps', '|', '$srcdir/ncurses/tinfo/MKcodes.awk'}, {
+ 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('mkcaptab', '$outdir/comp_captab.c', {'$srcdir/include/Caps', '|',
+ '$outdir/make_hash',
+ '$srcdir/tinfo/MKcaptab.awk',
+ '$srcdir/tinfo/MKcaptab.sh',
+})
+
+rule('mkfallback', 'sh $srcdir/ncurses/tinfo/MKfallback.sh /dev/null /dev/null /dev/null >$out.tmp && mv $out.tmp $out')
+build('mkfallback', '$outdir/fallback.c', {'|', '$srcdir/ncurses/tinfo/MKfallback.sh'})
+
+build('awk', '$outdir/lib_keyname.c', '$outdir/keys.list', {
+ expr='-f $srcdir/ncurses/base/MKkeyname.awk bigstrings=1',
+})
+
+build('awk', '$outdir/names.c', {'$srcdir/include/Caps', '|', '$srcdir/ncurses/tinfo/MKnames.awk'}, {
+ 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('mktermsort', '$outdir/termsort.c', {'$srcdir/include/Caps', '|', '$srcdir/progs/MKtermsort.sh'})
+
+build('awk', '$outdir/unctrl.c', '/dev/null | $srcdir/ncurses/base/MKunctrl.awk', {
+ expr='-f $srcdir/ncurses/base/MKunctrl.awk bigstrings=1',
+})
+
+pkg.hdrs = {
+ '$outdir/include/curses.h',
+ '$outdir/include/ncurses_dll.h',
+ '$outdir/include/term.h',
+ '$outdir/include/termcap.h',
+ '$outdir/include/unctrl.h',
+ install=true,
+}
+pkg.deps = {
+ '$dir/headers',
+ '$outdir/hashsize.h',
+ '$outdir/init_keytry.h',
+ '$outdir/ncurses_def.h',
+ '$outdir/parametrized.h',
+ '$outdir/termsort.c',
+}
+
+lib('libncurses.a', lines('sources.txt'))
+file('lib/libncurses.a', '644', '$outdir/libncurses.a')
+
+exe('tic', [[
+ 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', '755', '$outdir/tic')
+
+exe('tset', {'progs/tset.c', 'progs/transform.c.o', 'libncurses.a'})
+file('bin/tset', '755', '$outdir/tset')
+sym('bin/reset', 'tset')
+
+for _, f in ipairs{'tic.1m', 'tset.1'} do
+ local out = '$outdir/'..f
+ build('sed', out, {'$srcdir/man/'..f, '|', '$dir/subst.sed'}, {
+ expr='-f $dir/subst.sed',
+ })
+ man({out}, '1')
+end
+sym('share/man/man1/reset.1.gz', 'tset.1.gz')
+
+local terms = {'dumb', 'linux', 'tmux', 'tmux-256color', 'xterm', 'xterm-256color'}
+local terminfo = {}
+for _, term in ipairs(terms) do
+ table.insert(terminfo, term:sub(1, 1)..'/'..term)
+end
+build('tic', expand{'$outdir/terminfo/', terminfo}, '$srcdir/misc/terminfo.src', {
+ ticflags={
+ '-o $outdir/terminfo',
+ '-e', table.concat(terms, ','),
+ '-x',
+ },
+})
+for _, f in ipairs(terminfo) do
+ file('share/terminfo/'..f, '644', '$outdir/terminfo/'..f)
+end
+
+fetch 'curl'
diff --git a/pkg/ncurses/gen.rc b/pkg/ncurses/gen.rc
deleted file mode 100644
index aad7b8ee..00000000
--- a/pkg/ncurses/gen.rc
+++ /dev/null
@@ -1,128 +0,0 @@
-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 $srcdir/include/curses.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