xref: /openbsd/lib/libcurses/Makefile (revision d89ec533)
1#	$OpenBSD: Makefile,v 1.74 2019/02/13 15:10:40 nicm Exp $
2
3# Uncomment this to enable tracing in libcurses
4#CURSESTRACE=-DTRACE
5
6# This is used to compile terminal info directly into the library
7FALLBACK_LIST=
8
9# XXX - should be defined elsewhere
10AWK?=	/usr/bin/awk
11
12# Search in subdirs
13.PATH:	${.CURDIR}/base ${.CURDIR}/tinfo ${.CURDIR}/trace ${.CURDIR}/tty \
14	${.CURDIR}/widechar
15
16LIB=    curses
17SRCS=	codes.c comp_captab.c expanded.c fallback.c lib_gen.c lib_keyname.c \
18	names.c unctrl.c
19# base
20SRCS+=	define_key.c key_defined.c keybound.c keyok.c legacy_coding.c \
21	lib_addch.c lib_addstr.c lib_beep.c lib_bkgd.c lib_box.c lib_chgat.c \
22	lib_clear.c lib_clearok.c lib_clrbot.c lib_clreol.c lib_color.c \
23	lib_colorset.c lib_delch.c lib_delwin.c lib_dft_fgbg.c lib_echo.c \
24	lib_endwin.c lib_erase.c lib_flash.c lib_freeall.c lib_getch.c \
25	lib_getstr.c lib_hline.c lib_immedok.c lib_inchstr.c lib_initscr.c \
26	lib_insnstr.c lib_insch.c lib_insdel.c lib_instr.c \
27	lib_isendwin.c lib_leaveok.c lib_mouse.c lib_move.c lib_mvwin.c \
28	lib_newterm.c lib_newwin.c lib_nl.c lib_overlay.c lib_pad.c \
29	lib_printw.c lib_redrawln.c lib_refresh.c lib_restart.c \
30	lib_scanw.c lib_screen.c lib_scroll.c lib_scrollok.c \
31	lib_scrreg.c lib_set_term.c lib_slk.c lib_slkatr_set.c \
32	lib_slkatrof.c lib_slkatron.c lib_slkatrset.c lib_slkattr.c \
33	lib_slkclear.c lib_slkcolor.c lib_slkinit.c lib_slklab.c \
34	lib_slkrefr.c lib_slkset.c lib_slktouch.c lib_touch.c \
35	lib_ungetch.c lib_vline.c lib_wattroff.c lib_wattron.c \
36	lib_winch.c lib_window.c nc_panel.c resizeterm.c safe_sprintf.c \
37	tries.c use_window.c version.c vsscanf.c wresize.c
38# tinfo
39SRCS+=	access.c add_tries.c alloc_entry.c alloc_ttype.c captoinfo.c \
40	comp_error.c comp_expand.c comp_hash.c comp_parse.c comp_scan.c \
41	db_iterator.c doalloc.c entries.c free_ttype.c getenv_num.c \
42	hashed_db.c home_terminfo.c init_keytry.c lib_acs.c lib_baudrate.c \
43	lib_cur_term.c lib_data.c lib_has_cap.c lib_kernel.c lib_longname.c \
44	lib_napms.c lib_options.c lib_print.c lib_raw.c lib_setup.c \
45	lib_termcap.c lib_termname.c lib_tgoto.c lib_ti.c lib_tparm.c \
46	lib_tputs.c lib_ttyflags.c name_match.c parse_entry.c \
47	read_entry.c read_termcap.c setbuf.c strings.c \
48	trim_sgr0.c use_screen.c write_entry.c
49# trace
50SRCS+=	lib_trace.c lib_traceatr.c lib_tracebits.c lib_tracechr.c \
51	lib_tracedmp.c lib_tracemse.c trace_buf.c trace_tries.c trace_xnames.c \
52	varargs.c visbuf.c
53# tty
54SRCS+=	hardscroll.c hashmap.c lib_mvcur.c lib_tstp.c lib_twait.c \
55	lib_vidattr.c tty_update.c
56# widechar
57SRCS+=  charable.c lib_add_wch.c lib_box_set.c lib_cchar.c lib_erasewchar.c \
58	lib_get_wch.c lib_get_wstr.c lib_hline_set.c lib_in_wch.c \
59	lib_in_wchnstr.c lib_ins_wch.c lib_inwstr.c lib_key_name.c \
60	lib_pecho_wchar.c lib_slk_wset.c lib_unget_wch.c lib_vid_attr.c \
61	lib_vline_set.c lib_wacs.c lib_wunctrl.c
62
63HOSTCFLAGS?=	${CFLAGS}
64HOSTLDFLAGS?=	${LDFLAGS}
65HOSTCFLAGS+=	-I. -I${.CURDIR} ${CURSESTRACE}
66CFLAGS+=	-I. -I${.CURDIR} ${CURSESTRACE}
67
68MAN=	curs_addch.3 curs_addchstr.3 curs_addstr.3 curs_attr.3 \
69	curs_beep.3 curs_bkgd.3 curs_bkgrnd.3 curs_border.3 curs_border_set.3 \
70	curs_clear.3 curs_color.3 \
71	curs_delch.3 curs_deleteln.3 \
72	curs_extend.3 \
73	curs_getch.3 curs_getstr.3 curs_getyx.3 \
74	curs_inch.3 curs_inchstr.3 curs_initscr.3 curs_inopts.3 \
75	curs_insch.3 curs_insstr.3 curs_instr.3 \
76	curs_kernel.3 \
77	curs_legacy.3 \
78	curs_mouse.3 curs_move.3 \
79	curs_opaque.3 curs_outopts.3 curs_overlay.3 \
80	curs_pad.3 curs_print.3 curs_printw.3 \
81	curs_refresh.3 \
82	curs_scanw.3 curs_scr_dump.3 curs_scroll.3 curs_slk.3 \
83	curs_termattrs.3 curs_touch.3 \
84	curs_util.3 \
85	curs_window.3 \
86	curs_add_wch.3 curs_add_wchstr.3 curs_addwstr.3 curs_get_wch.3 \
87	curs_get_wstr.3 curs_in_wch.3 curs_in_wchstr.3 curs_ins_wch.3 \
88	curs_ins_wstr.3 curs_inwstr.3 \
89	default_colors.3 define_key.3 \
90	key_defined.3 keybound.3 keyok.3 legacy_coding.3 \
91	curses.3 \
92	resizeterm.3 \
93	term.5 term.7 termcap.3 terminfo.3 terminfo.5 \
94	wresize.3
95
96GENERATED= init_keytry.h codes.c comp_captab.c expanded.c fallback.c \
97	keys.list lib_gen.c lib_keyname.c names.c unctrl.c make_hash make_keys
98CLEANFILES+= ${GENERATED}
99
100BUILDFIRST = ${GENERATED}
101
102includes:
103	@cmp -s ${DESTDIR}/usr/include/ncurses.h ${.CURDIR}/curses.h || \
104	  ${INSTALL} ${INSTALL_COPY} -m 444 -o $(BINOWN) -g $(BINGRP) \
105	  ${.CURDIR}/curses.h ${DESTDIR}/usr/include/ncurses.h
106	@cd ${.CURDIR}; for i in unctrl.h term.h termcap.h; do \
107	  cmp -s $$i ${DESTDIR}/usr/include/$$i || \
108	  ${INSTALL} ${INSTALL_COPY} -m 444 -o $(BINOWN) -g $(BINGRP) $$i \
109	  ${DESTDIR}/usr/include; done
110
111keys.list: ${.CURDIR}/tinfo/MKkeys_list.sh
112	sh ${.CURDIR}/tinfo/MKkeys_list.sh ${.CURDIR}/Caps | sort > ${.TARGET}
113
114fallback.c: ${.CURDIR}/tinfo/MKfallback.sh
115	sh ${.CURDIR}/tinfo/MKfallback.sh $(FALLBACK_LIST) > ${.TARGET}
116
117lib_gen.c: ${.CURDIR}/base/MKlib_gen.sh
118	sh ${.CURDIR}/base/MKlib_gen.sh "${CC} -E -P -I${.CURDIR}" \
119		"${AWK}" generated < ${.CURDIR}/curses.h > lib_gen.c
120
121init_keytry.h: make_keys keys.list
122	./make_keys keys.list > ${.TARGET}
123
124make_keys: ${.CURDIR}/tinfo/make_keys.c ${.CURDIR}/curses.priv.h names.c
125	${HOSTCC} ${LDSTATIC} ${HOSTCFLAGS} ${HOSTLDFLAGS} \
126		-o ${.TARGET} ${.CURDIR}/tinfo/make_keys.c ${LDADD}
127
128make_hash: ${.CURDIR}/tinfo/comp_hash.c ${.CURDIR}/curses.priv.h \
129		${.CURDIR}/hashsize.h
130	${HOSTCC} ${LDSTATIC} ${HOSTCFLAGS} -DMAIN_PROGRAM ${HOSTLDFLAGS} \
131		-o ${.TARGET} ${.CURDIR}/tinfo/comp_hash.c ${LDADD}
132
133expanded.c: ${.CURDIR}/term.h ${.CURDIR}/curses.priv.h \
134		${.CURDIR}/ncurses_cfg.h ${.CURDIR}/tty/MKexpanded.sh
135	sh ${.CURDIR}/tty/MKexpanded.sh "${CC} -E -P" ${CPPFLAGS} > ${.TARGET}
136
137comp_captab.c: make_hash
138	sh ${.CURDIR}/tinfo/MKcaptab.sh ${AWK} 1 \
139		${.CURDIR}/tinfo/MKcaptab.awk ${.CURDIR}/Caps > ${.TARGET}
140
141lib_keyname.c: keys.list ${.CURDIR}/base/MKkeyname.awk
142	${AWK} -f ${.CURDIR}/base/MKkeyname.awk bigstrings=1 \
143		keys.list > ${.TARGET}
144
145names.c: ${.CURDIR}/tinfo/MKnames.awk
146	${AWK} -f ${.CURDIR}/tinfo/MKnames.awk \
147		${.CURDIR}/Caps > names.c
148codes.c: ${.CURDIR}/tinfo/MKcodes.awk
149	${AWK} -f ${.CURDIR}/tinfo/MKcodes.awk \
150		bigstrings=1 ${.CURDIR}/Caps > codes.c
151
152unctrl.c: ${.CURDIR}/base/MKunctrl.awk
153	echo | ${AWK} -f ${.CURDIR}/base/MKunctrl.awk bigstrings=1 > ${.TARGET}
154
155.include <bsd.own.mk>
156
157# Link libtermlib, libtermcap to libcurses so we don't break people's Makefiles
158afterinstall:
159	-cd ${DESTDIR}${LIBDIR}; \
160	for i in ${_LIBS}; do \
161	    ln -f $$i `echo $$i | sed 's/curses/termlib/'`; \
162	    ln -f $$i `echo $$i | sed 's/curses/termcap/'`; \
163	    ln -f $$i `echo $$i | sed 's/curses/ncurses/'`; \
164	    ln -f $$i `echo $$i | sed 's/curses/ncursesw/'`; \
165	done
166
167.include <bsd.lib.mk>
168