1# $NetBSD: Makefile,v 1.32 2024/01/04 13:20:22 uwe Exp $
2
3.include <bsd.own.mk>
4
5SRCDIR=		${NETBSDSRCDIR}/external/bsd/tmux/dist
6.PATH:		${SRCDIR}
7.PATH:		${SRCDIR}/compat
8
9BINDIR=		/usr/bin
10PROG=		tmux
11MAN=		tmux.1
12
13WARNS?=	4
14
15SRCS+= \
16alerts.c \
17arguments.c \
18attributes.c \
19cfg.c \
20client.c \
21cmd-attach-session.c \
22cmd-bind-key.c \
23cmd-break-pane.c \
24cmd-capture-pane.c \
25cmd-choose-tree.c \
26cmd-command-prompt.c \
27cmd-confirm-before.c \
28cmd-copy-mode.c \
29cmd-detach-client.c \
30cmd-display-menu.c \
31cmd-display-message.c \
32cmd-display-panes.c \
33cmd-find-window.c \
34cmd-find.c \
35cmd-if-shell.c \
36cmd-join-pane.c \
37cmd-kill-pane.c \
38cmd-kill-server.c \
39cmd-kill-session.c \
40cmd-kill-window.c \
41cmd-list-buffers.c \
42cmd-list-clients.c \
43cmd-list-keys.c \
44cmd-list-panes.c \
45cmd-list-sessions.c \
46cmd-list-windows.c \
47cmd-load-buffer.c \
48cmd-lock-server.c \
49cmd-move-window.c \
50cmd-new-session.c \
51cmd-new-window.c \
52cmd-parse.y \
53cmd-paste-buffer.c \
54cmd-pipe-pane.c \
55cmd-queue.c \
56cmd-refresh-client.c \
57cmd-rename-session.c \
58cmd-rename-window.c \
59cmd-resize-pane.c \
60cmd-resize-window.c \
61cmd-respawn-pane.c \
62cmd-respawn-window.c \
63cmd-rotate-window.c \
64cmd-run-shell.c \
65cmd-save-buffer.c \
66cmd-select-layout.c \
67cmd-select-pane.c \
68cmd-select-window.c \
69cmd-send-keys.c \
70cmd-server-access.c \
71cmd-set-buffer.c \
72cmd-set-environment.c \
73cmd-set-option.c \
74cmd-show-environment.c \
75cmd-show-messages.c \
76cmd-show-options.c \
77cmd-show-prompt-history.c \
78cmd-source-file.c \
79cmd-split-window.c \
80cmd-swap-pane.c \
81cmd-swap-window.c \
82cmd-switch-client.c \
83cmd-unbind-key.c \
84cmd-wait-for.c \
85cmd.c \
86colour.c \
87control-notify.c \
88control.c \
89environ.c \
90file.c \
91format-draw.c \
92format.c \
93grid-reader.c \
94grid-view.c \
95grid.c \
96input-keys.c \
97input.c \
98job.c \
99key-bindings.c \
100key-string.c \
101layout-custom.c \
102layout-set.c \
103layout.c \
104log.c \
105menu.c \
106mode-tree.c \
107names.c \
108notify.c \
109options-table.c \
110options.c \
111osdep-netbsd.c \
112paste.c \
113popup.c \
114proc.c \
115regsub.c \
116resize.c \
117screen-redraw.c \
118screen-write.c \
119screen.c \
120server-acl.c \
121server-client.c \
122server-fn.c \
123server.c \
124session.c \
125spawn.c \
126status.c \
127style.c \
128tmux.c \
129tty-acs.c \
130tty-features.c \
131tty-keys.c \
132tty-term.c \
133tty.c \
134utf8.c \
135window-buffer.c \
136window-client.c \
137window-clock.c \
138window-copy.c \
139window-customize.c \
140window-tree.c \
141window.c \
142xmalloc.c
143
144SRCS+=	utempter.c
145CPPFLAGS+=-DSUPPORT_UTMP -DSUPPORT_UTMPX
146
147# Files in compat/
148SRCS+=		imsg-buffer.c
149SRCS+=		imsg.c
150SRCS+=		fdforkpty.c
151SRCS+=		freezero.c
152SRCS+=		explicit_bzero.c
153SRCS+=		recallocarray.c
154SRCS+=		getdtablecount.c
155#SRCS+=		strtonum.c
156#SRCS+=		unvis.c
157#SRCS+=		vis.c
158
159CPPFLAGS+=	-I${SRCDIR} -I${.CURDIR}
160
161# The following flags have been extracted from the compiler command-line
162# generated by Automake and Autoconf when building tmux under NetBSD.
163# Would be nicer to stick this in a config.h file, but the upstream code
164# does not use one at this moment.
165
166# HAVE_REALLOCARRAY, HAVE_TREE_H, HAVE_VIS added manually; HAVE_BSD_GETOPT_H necessary due to local patches
167CPPFLAGS+=	\
168-DHAVE_ASPRINTF=1 \
169-DHAVE_B64_NTOP=1 \
170-DHAVE_BITSTRING_H=1 \
171-DHAVE_BSD_GETOPT=1 \
172-DHAVE_CFMAKERAW=1 \
173-DHAVE_CLOCK_GETTIME=1 \
174-DHAVE_CLOSEFROM=1 \
175-DHAVE_CURSES_H=1 \
176-DHAVE_DAEMON=1 \
177-DHAVE_DIRENT_H=1 \
178-DHAVE_EVENT2_EVENT_H=1 \
179-DHAVE_FCNTL_CLOSEM=1 \
180-DHAVE_FCNTL_H=1 \
181-DHAVE_FGETLN=1 \
182-DHAVE_FLOCK=1 \
183-DHAVE_FORKPTY=1 \
184-DHAVE_GETDTABLESIZE=1 \
185-DHAVE_GETLINE=1 \
186-DHAVE_GETPEEREID=1 \
187-DHAVE_GETPROGNAME=1 \
188-DHAVE_INTTYPES_H=1 \
189-DHAVE_LIBM=1 \
190-DHAVE_LIBPROC_H=1 \
191-DHAVE_MEMMEM=1 \
192-DHAVE_MEMORY_H=1 \
193-DHAVE_PATHS_H=1 \
194-DHAVE_PROC_PID=1 \
195-DHAVE_QUEUE_H=1 \
196-DHAVE_REALLOCARRAY=1 \
197-DHAVE_SETENV=1 \
198-DHAVE_SETPROCTITLE=1 \
199-DHAVE_STDINT_H=1 \
200-DHAVE_STDLIB_H=1 \
201-DHAVE_STRCASESTR=1 \
202-DHAVE_STRINGS_H=1 \
203-DHAVE_STRING_H=1 \
204-DHAVE_STRLCAT=1 \
205-DHAVE_STRLCPY=1 \
206-DHAVE_STRNDUP=1 \
207-DHAVE_STRSEP=1 \
208-DHAVE_STRTONUM=1 \
209-DHAVE_SYSCONF=1 \
210-DHAVE_SYS_DIR_H=1 \
211-DHAVE_SYS_SIGNAME=1 \
212-DHAVE_SYS_STAT_H=1 \
213-DHAVE_SYS_TREE_H=1 \
214-DHAVE_SYS_TYPES_H=1 \
215-DHAVE_TREE_H=1 \
216-DHAVE_UNISTD_H=1 \
217-DHAVE_UTIL_H=1 \
218-DHAVE_VIS=1 \
219-DHAVE___PROGNAME=1 \
220-DPACKAGE=\"tmux\" \
221-DPACKAGE_BUGREPORT=\"\" \
222-DPACKAGE_NAME=\"tmux\" \
223-DPACKAGE_STRING=\"tmux\ 3.3a\" \
224-DPACKAGE_TARNAME=\"tmux\" \
225-DPACKAGE_URL=\"\" \
226-DPACKAGE_VERSION=\"3.3a\" \
227-DSTDC_HEADERS=1 \
228-DTMUX_CONF='"/etc/tmux.conf:~/.tmux.conf:$XDG_CONFIG_HOME/tmux/tmux.conf:~/.config/tmux/tmux.conf"' \
229-DTMUX_TERM='"tmux-256color"' \
230-DTMUX_VERSION='"3.3a"' \
231-DVERSION=\"3.3a\" \
232-D_ALL_SOURCE=1 \
233-D_FORTIFY_SOURCE=2 \
234-D_GNU_SOURCE=1 \
235-D_OPENBSD_SOURCE \
236-D_POSIX_PTHREAD_SEMANTICS=1 \
237-D_TANDEM_SOURCE=1 \
238-D__EXTENSIONS__=1
239
240LDADD+=		-levent -lterminfo -lutil -lm
241DPADD+=		${LIBEVENT} ${LIBTERMINFO} ${LIBUTIL}
242
243COPTS.format.c += -Wno-format-nonliteral
244COPTS.input.c += -Wno-sign-compare -Wno-pointer-sign
245COPTS.notify.c += -Wno-sign-compare
246COPTS.tty.c += -Wno-pointer-sign
247COPTS.utempter.c+=	${CC_WNO_STRINGOP_TRUNCATION}
248COPTS.window-copy.c+=	${CC_WNO_MAYBE_UNINITIALIZED} -Wno-pointer-sign
249
250# The man page needs substitutions, but the dist file usurps the
251# output file suffix.
252.NOPATH: tmux.1
253tmux.1: $(SRCDIR)/tmux.1
254	sed -e 's|@SYSCONFDIR@|/etc|g' $> > $@
255
256.include <bsd.prog.mk>
257