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