commit: 241c6fb3da996cd75beb663ca71efa2c6c106211
parent f9608a055faac289b3ef4107aecf7fceb63e84a2
Author: Michael Forney <mforney@mforney.org>
Date: Sun, 18 Feb 2018 11:34:55 -0800
ncurses: Build ticlib, generated structured source list
Diffstat:
5 files changed, 234 insertions(+), 179 deletions(-)
diff --git a/ninja.lua b/ninja.lua
@@ -151,6 +151,11 @@ function lines(file, raw)
return collect(iterlines(file, raw))
end
+function load(file)
+ table.insert(pkg.inputs.gen, '$dir/'..file)
+ return dofile(string.format('%s/%s', pkg.dir, file))
+end
+
--
-- base constructs
--
diff --git a/pkg/ncurses/gen.lua b/pkg/ncurses/gen.lua
@@ -112,25 +112,24 @@ pkg.deps = {
'$outdir/termsort.c',
}
-lib('libncurses.a', lines('sources.txt'))
+srcs = load('sources.lua')
+
+lib('libncurses.a', {
+ srcs.base,
+ srcs.widechar,
+ srcs.termlib,
+ srcs.ext_funcs,
+ srcs.ext_tinfo,
+})
file('lib/libncurses.a', '644', '$outdir/libncurses.a')
+lib('libtic.a', srcs.ticlib)
+
cc('progs/transform.c')
exe('tic', [[
progs/(tic.c dump_entry.c tparm_type.c transform.c.o)
- 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
- )
+ libtic.a
libncurses.a
]])
file('bin/tic', '755', '$outdir/tic')
diff --git a/pkg/ncurses/gensources.awk b/pkg/ncurses/gensources.awk
@@ -4,26 +4,35 @@ BEGIN {
dirs["$(trace)"] = "ncurses/trace"
dirs["$(tinfo)"] = "ncurses/tinfo"
dirs["$(wide)"] = "ncurses/widechar"
+ dirs["$(win32con)"] = "ncurses/win32con"
dirs["."] = "$outdir"
skip["expanded"] = 1
skip["lib_gen"] = 1
skip["link_test"] = 1
- split(subsets, a, "+")
- for (k in a)
- sets[a[k]] = 1
+ print "return {"
}
/^(#|$)/ { next }
/^@/ {
- set = $2
+ if (open)
+ print "\t},"
+ else
+ open = 1
+ print "\t" $2 "={"
next
}
-set in sets {
- if ($1 ~ /trace/ || $1 in skip)
+{
+ if ($1 in skip)
next
- print dirs[$3] "/" $1 ".c"
+ print "\t\t'" dirs[$3] "/" $1 ".c',"
+}
+
+END {
+ if (open)
+ print "\t},"
+ print "}"
}
diff --git a/pkg/ncurses/sources.lua b/pkg/ncurses/sources.lua
@@ -0,0 +1,201 @@
+-- 2,$<awk -f gensources.awk src/ncurses/modules
+return {
+ base={
+ 'ncurses/tty/hardscroll.c',
+ 'ncurses/tty/hashmap.c',
+ 'ncurses/base/lib_addch.c',
+ 'ncurses/base/lib_addstr.c',
+ 'ncurses/base/lib_beep.c',
+ 'ncurses/base/lib_bkgd.c',
+ 'ncurses/base/lib_box.c',
+ 'ncurses/base/lib_chgat.c',
+ 'ncurses/base/lib_clear.c',
+ 'ncurses/base/lib_clearok.c',
+ 'ncurses/base/lib_clrbot.c',
+ 'ncurses/base/lib_clreol.c',
+ 'ncurses/base/lib_color.c',
+ 'ncurses/base/lib_colorset.c',
+ 'ncurses/base/lib_delch.c',
+ 'ncurses/base/lib_delwin.c',
+ 'ncurses/base/lib_echo.c',
+ 'ncurses/base/lib_endwin.c',
+ 'ncurses/base/lib_erase.c',
+ 'ncurses/base/lib_flash.c',
+ 'ncurses/base/lib_getch.c',
+ 'ncurses/base/lib_getstr.c',
+ 'ncurses/base/lib_hline.c',
+ 'ncurses/base/lib_immedok.c',
+ 'ncurses/base/lib_inchstr.c',
+ 'ncurses/base/lib_initscr.c',
+ 'ncurses/base/lib_insch.c',
+ 'ncurses/base/lib_insdel.c',
+ 'ncurses/base/lib_insnstr.c',
+ 'ncurses/base/lib_instr.c',
+ 'ncurses/base/lib_isendwin.c',
+ 'ncurses/base/lib_leaveok.c',
+ 'ncurses/base/lib_mouse.c',
+ 'ncurses/base/lib_move.c',
+ 'ncurses/tty/lib_mvcur.c',
+ 'ncurses/base/lib_mvwin.c',
+ 'ncurses/base/lib_newterm.c',
+ 'ncurses/base/lib_newwin.c',
+ 'ncurses/base/lib_nl.c',
+ 'ncurses/base/lib_overlay.c',
+ 'ncurses/base/lib_pad.c',
+ 'ncurses/base/lib_printw.c',
+ 'ncurses/base/lib_redrawln.c',
+ 'ncurses/base/lib_refresh.c',
+ 'ncurses/base/lib_restart.c',
+ 'ncurses/base/lib_scanw.c',
+ 'ncurses/base/lib_screen.c',
+ 'ncurses/base/lib_scroll.c',
+ 'ncurses/base/lib_scrollok.c',
+ 'ncurses/base/lib_scrreg.c',
+ 'ncurses/base/lib_set_term.c',
+ 'ncurses/base/lib_slk.c',
+ 'ncurses/base/lib_slkatr_set.c',
+ 'ncurses/base/lib_slkatrof.c',
+ 'ncurses/base/lib_slkatron.c',
+ 'ncurses/base/lib_slkatrset.c',
+ 'ncurses/base/lib_slkattr.c',
+ 'ncurses/base/lib_slkclear.c',
+ 'ncurses/base/lib_slkcolor.c',
+ 'ncurses/base/lib_slkinit.c',
+ 'ncurses/base/lib_slklab.c',
+ 'ncurses/base/lib_slkrefr.c',
+ 'ncurses/base/lib_slkset.c',
+ 'ncurses/base/lib_slktouch.c',
+ 'ncurses/base/lib_touch.c',
+ 'ncurses/trace/lib_tracedmp.c',
+ 'ncurses/trace/lib_tracemse.c',
+ 'ncurses/tty/lib_tstp.c',
+ 'ncurses/base/lib_ungetch.c',
+ 'ncurses/tty/lib_vidattr.c',
+ 'ncurses/base/lib_vline.c',
+ 'ncurses/base/lib_wattroff.c',
+ 'ncurses/base/lib_wattron.c',
+ 'ncurses/base/lib_winch.c',
+ 'ncurses/base/lib_window.c',
+ 'ncurses/base/nc_panel.c',
+ 'ncurses/base/safe_sprintf.c',
+ 'ncurses/tty/tty_update.c',
+ 'ncurses/trace/varargs.c',
+ 'ncurses/base/vsscanf.c',
+ 'ncurses/base/lib_freeall.c',
+ },
+ widechar={
+ 'ncurses/widechar/charable.c',
+ 'ncurses/widechar/lib_add_wch.c',
+ 'ncurses/widechar/lib_box_set.c',
+ 'ncurses/widechar/lib_cchar.c',
+ 'ncurses/widechar/lib_erasewchar.c',
+ 'ncurses/widechar/lib_get_wch.c',
+ 'ncurses/widechar/lib_get_wstr.c',
+ 'ncurses/widechar/lib_hline_set.c',
+ 'ncurses/widechar/lib_in_wch.c',
+ 'ncurses/widechar/lib_in_wchnstr.c',
+ 'ncurses/widechar/lib_ins_wch.c',
+ 'ncurses/widechar/lib_inwstr.c',
+ 'ncurses/widechar/lib_key_name.c',
+ 'ncurses/widechar/lib_pecho_wchar.c',
+ 'ncurses/widechar/lib_slk_wset.c',
+ 'ncurses/widechar/lib_unget_wch.c',
+ 'ncurses/widechar/lib_vid_attr.c',
+ 'ncurses/widechar/lib_vline_set.c',
+ 'ncurses/widechar/lib_wacs.c',
+ 'ncurses/widechar/lib_wunctrl.c',
+ },
+ ext_funcs={
+ 'ncurses/base/legacy_coding.c',
+ 'ncurses/base/lib_dft_fgbg.c',
+ 'ncurses/tinfo/lib_print.c',
+ 'ncurses/base/new_pair.c',
+ 'ncurses/base/resizeterm.c',
+ 'ncurses/trace/trace_xnames.c',
+ 'ncurses/tinfo/use_screen.c',
+ 'ncurses/base/use_window.c',
+ 'ncurses/base/wresize.c',
+ },
+ termlib={
+ 'ncurses/tinfo/access.c',
+ 'ncurses/tinfo/add_tries.c',
+ 'ncurses/tinfo/alloc_ttype.c',
+ '$outdir/codes.c',
+ '$outdir/comp_captab.c',
+ 'ncurses/tinfo/comp_error.c',
+ 'ncurses/tinfo/comp_hash.c',
+ 'ncurses/tinfo/db_iterator.c',
+ 'ncurses/tinfo/doalloc.c',
+ 'ncurses/tinfo/entries.c',
+ '$outdir/fallback.c',
+ 'ncurses/tinfo/free_ttype.c',
+ 'ncurses/tinfo/getenv_num.c',
+ 'ncurses/tinfo/home_terminfo.c',
+ 'ncurses/tinfo/init_keytry.c',
+ 'ncurses/tinfo/lib_acs.c',
+ 'ncurses/tinfo/lib_baudrate.c',
+ 'ncurses/tinfo/lib_cur_term.c',
+ 'ncurses/tinfo/lib_data.c',
+ 'ncurses/tinfo/lib_has_cap.c',
+ 'ncurses/tinfo/lib_kernel.c',
+ '$outdir/lib_keyname.c',
+ 'ncurses/tinfo/lib_longname.c',
+ 'ncurses/tinfo/lib_napms.c',
+ 'ncurses/tinfo/lib_options.c',
+ 'ncurses/tinfo/lib_raw.c',
+ 'ncurses/tinfo/lib_setup.c',
+ 'ncurses/tinfo/lib_termcap.c',
+ 'ncurses/tinfo/lib_termname.c',
+ 'ncurses/tinfo/lib_tgoto.c',
+ 'ncurses/tinfo/lib_ti.c',
+ 'ncurses/tinfo/lib_tparm.c',
+ 'ncurses/tinfo/lib_tputs.c',
+ 'ncurses/trace/lib_trace.c',
+ 'ncurses/trace/lib_traceatr.c',
+ 'ncurses/trace/lib_tracebits.c',
+ 'ncurses/trace/lib_tracechr.c',
+ 'ncurses/tinfo/lib_ttyflags.c',
+ 'ncurses/tty/lib_twait.c',
+ 'ncurses/tinfo/name_match.c',
+ '$outdir/names.c',
+ 'ncurses/tinfo/obsolete.c',
+ 'ncurses/tinfo/read_entry.c',
+ 'ncurses/tinfo/read_termcap.c',
+ 'ncurses/tinfo/strings.c',
+ 'ncurses/trace/trace_buf.c',
+ 'ncurses/trace/trace_tries.c',
+ 'ncurses/base/tries.c',
+ 'ncurses/tinfo/trim_sgr0.c',
+ '$outdir/unctrl.c',
+ 'ncurses/trace/visbuf.c',
+ },
+ ticlib={
+ 'ncurses/tinfo/alloc_entry.c',
+ 'ncurses/tinfo/captoinfo.c',
+ 'ncurses/tinfo/comp_expand.c',
+ 'ncurses/tinfo/comp_parse.c',
+ 'ncurses/tinfo/comp_scan.c',
+ 'ncurses/tinfo/parse_entry.c',
+ 'ncurses/tinfo/write_entry.c',
+ },
+ ext_tinfo={
+ 'ncurses/base/define_key.c',
+ 'ncurses/tinfo/hashed_db.c',
+ 'ncurses/base/key_defined.c',
+ 'ncurses/base/keybound.c',
+ 'ncurses/base/keyok.c',
+ 'ncurses/base/version.c',
+ },
+ port_drivers={
+ 'ncurses/base/lib_driver.c',
+ },
+ port_win32con={
+ 'ncurses/win32con/gettimeofday.c',
+ 'ncurses/win32con/wcwidth.c',
+ 'ncurses/widechar/widechars.c',
+ 'ncurses/win32con/win_driver.c',
+ },
+ port_tinfo={
+ 'ncurses/tinfo/tinfo_driver.c',
+ },
+}
diff --git a/pkg/ncurses/sources.txt b/pkg/ncurses/sources.txt
@@ -1,159 +0,0 @@
-# 2,$<awk -f gensources.awk -v subsets=base+widechar+termlib+ext_funcs+ext_tinfo src/ncurses/modules
-ncurses/tty/hardscroll.c
-ncurses/tty/hashmap.c
-ncurses/base/lib_addch.c
-ncurses/base/lib_addstr.c
-ncurses/base/lib_beep.c
-ncurses/base/lib_bkgd.c
-ncurses/base/lib_box.c
-ncurses/base/lib_chgat.c
-ncurses/base/lib_clear.c
-ncurses/base/lib_clearok.c
-ncurses/base/lib_clrbot.c
-ncurses/base/lib_clreol.c
-ncurses/base/lib_color.c
-ncurses/base/lib_colorset.c
-ncurses/base/lib_delch.c
-ncurses/base/lib_delwin.c
-ncurses/base/lib_echo.c
-ncurses/base/lib_endwin.c
-ncurses/base/lib_erase.c
-ncurses/base/lib_flash.c
-ncurses/base/lib_getch.c
-ncurses/base/lib_getstr.c
-ncurses/base/lib_hline.c
-ncurses/base/lib_immedok.c
-ncurses/base/lib_inchstr.c
-ncurses/base/lib_initscr.c
-ncurses/base/lib_insch.c
-ncurses/base/lib_insdel.c
-ncurses/base/lib_insnstr.c
-ncurses/base/lib_instr.c
-ncurses/base/lib_isendwin.c
-ncurses/base/lib_leaveok.c
-ncurses/base/lib_mouse.c
-ncurses/base/lib_move.c
-ncurses/tty/lib_mvcur.c
-ncurses/base/lib_mvwin.c
-ncurses/base/lib_newterm.c
-ncurses/base/lib_newwin.c
-ncurses/base/lib_nl.c
-ncurses/base/lib_overlay.c
-ncurses/base/lib_pad.c
-ncurses/base/lib_printw.c
-ncurses/base/lib_redrawln.c
-ncurses/base/lib_refresh.c
-ncurses/base/lib_restart.c
-ncurses/base/lib_scanw.c
-ncurses/base/lib_screen.c
-ncurses/base/lib_scroll.c
-ncurses/base/lib_scrollok.c
-ncurses/base/lib_scrreg.c
-ncurses/base/lib_set_term.c
-ncurses/base/lib_slk.c
-ncurses/base/lib_slkatr_set.c
-ncurses/base/lib_slkatrof.c
-ncurses/base/lib_slkatron.c
-ncurses/base/lib_slkatrset.c
-ncurses/base/lib_slkattr.c
-ncurses/base/lib_slkclear.c
-ncurses/base/lib_slkcolor.c
-ncurses/base/lib_slkinit.c
-ncurses/base/lib_slklab.c
-ncurses/base/lib_slkrefr.c
-ncurses/base/lib_slkset.c
-ncurses/base/lib_slktouch.c
-ncurses/base/lib_touch.c
-ncurses/tty/lib_tstp.c
-ncurses/base/lib_ungetch.c
-ncurses/tty/lib_vidattr.c
-ncurses/base/lib_vline.c
-ncurses/base/lib_wattroff.c
-ncurses/base/lib_wattron.c
-ncurses/base/lib_winch.c
-ncurses/base/lib_window.c
-ncurses/base/nc_panel.c
-ncurses/base/safe_sprintf.c
-ncurses/tty/tty_update.c
-ncurses/trace/varargs.c
-ncurses/base/vsscanf.c
-ncurses/base/lib_freeall.c
-ncurses/widechar/charable.c
-ncurses/widechar/lib_add_wch.c
-ncurses/widechar/lib_box_set.c
-ncurses/widechar/lib_cchar.c
-ncurses/widechar/lib_erasewchar.c
-ncurses/widechar/lib_get_wch.c
-ncurses/widechar/lib_get_wstr.c
-ncurses/widechar/lib_hline_set.c
-ncurses/widechar/lib_in_wch.c
-ncurses/widechar/lib_in_wchnstr.c
-ncurses/widechar/lib_ins_wch.c
-ncurses/widechar/lib_inwstr.c
-ncurses/widechar/lib_key_name.c
-ncurses/widechar/lib_pecho_wchar.c
-ncurses/widechar/lib_slk_wset.c
-ncurses/widechar/lib_unget_wch.c
-ncurses/widechar/lib_vid_attr.c
-ncurses/widechar/lib_vline_set.c
-ncurses/widechar/lib_wacs.c
-ncurses/widechar/lib_wunctrl.c
-ncurses/base/legacy_coding.c
-ncurses/base/lib_dft_fgbg.c
-ncurses/tinfo/lib_print.c
-ncurses/base/new_pair.c
-ncurses/base/resizeterm.c
-ncurses/tinfo/use_screen.c
-ncurses/base/use_window.c
-ncurses/base/wresize.c
-ncurses/tinfo/access.c
-ncurses/tinfo/add_tries.c
-ncurses/tinfo/alloc_ttype.c
-$outdir/codes.c
-$outdir/comp_captab.c
-ncurses/tinfo/comp_error.c
-ncurses/tinfo/comp_hash.c
-ncurses/tinfo/db_iterator.c
-ncurses/tinfo/doalloc.c
-ncurses/tinfo/entries.c
-$outdir/fallback.c
-ncurses/tinfo/free_ttype.c
-ncurses/tinfo/getenv_num.c
-ncurses/tinfo/home_terminfo.c
-ncurses/tinfo/init_keytry.c
-ncurses/tinfo/lib_acs.c
-ncurses/tinfo/lib_baudrate.c
-ncurses/tinfo/lib_cur_term.c
-ncurses/tinfo/lib_data.c
-ncurses/tinfo/lib_has_cap.c
-ncurses/tinfo/lib_kernel.c
-$outdir/lib_keyname.c
-ncurses/tinfo/lib_longname.c
-ncurses/tinfo/lib_napms.c
-ncurses/tinfo/lib_options.c
-ncurses/tinfo/lib_raw.c
-ncurses/tinfo/lib_setup.c
-ncurses/tinfo/lib_termcap.c
-ncurses/tinfo/lib_termname.c
-ncurses/tinfo/lib_tgoto.c
-ncurses/tinfo/lib_ti.c
-ncurses/tinfo/lib_tparm.c
-ncurses/tinfo/lib_tputs.c
-ncurses/tinfo/lib_ttyflags.c
-ncurses/tty/lib_twait.c
-ncurses/tinfo/name_match.c
-$outdir/names.c
-ncurses/tinfo/obsolete.c
-ncurses/tinfo/read_entry.c
-ncurses/tinfo/read_termcap.c
-ncurses/tinfo/strings.c
-ncurses/base/tries.c
-ncurses/tinfo/trim_sgr0.c
-$outdir/unctrl.c
-ncurses/trace/visbuf.c
-ncurses/base/define_key.c
-ncurses/tinfo/hashed_db.c
-ncurses/base/key_defined.c
-ncurses/base/keybound.c
-ncurses/base/keyok.c
-ncurses/base/version.c