1# $NetBSD: Makefile,v 1.36 2024/06/23 06:27:38 wiz 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 \
96hyperlinks.c \
97image.c \
98image-sixel.c \
99input-keys.c \
100input.c \
101job.c \
102key-bindings.c \
103key-string.c \
104layout-custom.c \
105layout-set.c \
106layout.c \
107log.c \
108menu.c \
109mode-tree.c \
110names.c \
111notify.c \
112options-table.c \
113options.c \
114osdep-netbsd.c \
115paste.c \
116popup.c \
117proc.c \
118regsub.c \
119resize.c \
120screen-redraw.c \
121screen-write.c \
122screen.c \
123server-acl.c \
124server-client.c \
125server-fn.c \
126server.c \
127session.c \
128spawn.c \
129status.c \
130style.c \
131tmux.c \
132tty-acs.c \
133tty-features.c \
134tty-keys.c \
135tty-term.c \
136tty.c \
137utf8.c \
138utf8-combined.c \
139window-buffer.c \
140window-client.c \
141window-clock.c \
142window-copy.c \
143window-customize.c \
144window-tree.c \
145window.c \
146xmalloc.c
147
148SRCS+=	utempter.c
149CPPFLAGS+=-DSUPPORT_UTMP -DSUPPORT_UTMPX
150
151# Files in compat/
152SRCS+=		imsg-buffer.c
153SRCS+=		imsg.c
154SRCS+=		fdforkpty.c
155SRCS+=		freezero.c
156SRCS+=		explicit_bzero.c
157SRCS+=		htonll.c
158SRCS+=		ntohll.c
159SRCS+=		recallocarray.c
160SRCS+=		getdtablecount.c
161#SRCS+=		strtonum.c
162#SRCS+=		unvis.c
163#SRCS+=		vis.c
164
165CPPFLAGS+=	-I${SRCDIR} -I${.CURDIR}
166
167# The following flags have been extracted from the compiler command-line
168# generated by Automake and Autoconf when building tmux under NetBSD.
169# Would be nicer to stick this in a config.h file, but the upstream code
170# does not use one at this moment.
171
172# HAVE_REALLOCARRAY, HAVE_TREE_H, HAVE_VIS added manually
173#
174# HAVE_BSD_GETOPT:
175# Use the NetBSD libc getopt functions instead of the compat functions
176# provided by tmux (done using a local patch).
177#
178# HAVE_VIS:
179# tmux assumes the OpenBSD variant of strnvis which has arguments
180# swapped compared to FreeBSD & NetBSD, see
181# https://github.com/tmux/tmux/pull/4015
182# We have a local patch that adapts the call to the NetBSD version,
183# so we don't need to use the compat code provided by tmux.
184CPPFLAGS+=	\
185-DHAVE_ASPRINTF=1 \
186-DHAVE_B64_NTOP=1 \
187-DHAVE_BITSTRING_H=1 \
188-DHAVE_BSD_GETOPT=1 \
189-DHAVE_CFMAKERAW=1 \
190-DHAVE_CLOCK_GETTIME=1 \
191-DHAVE_CLOSEFROM=1 \
192-DHAVE_CURSES_H=1 \
193-DHAVE_DAEMON=1 \
194-DHAVE_DIRENT_H=1 \
195-DENABLE_SIXEL=1 \
196-DHAVE_EVENT2_EVENT_H=1 \
197-DHAVE_FCNTL_CLOSEM=1 \
198-DHAVE_FCNTL_H=1 \
199-DHAVE_FGETLN=1 \
200-DHAVE_FLOCK=1 \
201-DHAVE_FORKPTY=1 \
202-DHAVE_GETDTABLESIZE=1 \
203-DHAVE_GETLINE=1 \
204-DHAVE_GETPEEREID=1 \
205-DHAVE_GETPROGNAME=1 \
206-DHAVE_INTTYPES_H=1 \
207-DHAVE_LIBM=1 \
208-DHAVE_LIBPROC_H=1 \
209-DHAVE_MEMMEM=1 \
210-DHAVE_MEMORY_H=1 \
211-DHAVE_PATHS_H=1 \
212-DHAVE_PROC_PID=1 \
213-DHAVE_QUEUE_H=1 \
214-DHAVE_REALLOCARRAY=1 \
215-DHAVE_SETENV=1 \
216-DHAVE_SETPROCTITLE=1 \
217-DHAVE_STDINT_H=1 \
218-DHAVE_STDLIB_H=1 \
219-DHAVE_STRCASESTR=1 \
220-DHAVE_STRINGS_H=1 \
221-DHAVE_STRING_H=1 \
222-DHAVE_STRLCAT=1 \
223-DHAVE_STRLCPY=1 \
224-DHAVE_STRNDUP=1 \
225-DHAVE_STRSEP=1 \
226-DHAVE_STRTONUM=1 \
227-DHAVE_SYSCONF=1 \
228-DHAVE_SYS_DIR_H=1 \
229-DHAVE_SYS_SIGNAME=1 \
230-DHAVE_SYS_STAT_H=1 \
231-DHAVE_SYS_TREE_H=1 \
232-DHAVE_SYS_TYPES_H=1 \
233-DHAVE_TIPARM=1 \
234-DHAVE_TREE_H=1 \
235-DHAVE_UNISTD_H=1 \
236-DHAVE_UTIL_H=1 \
237-DHAVE_VIS=1 \
238-DHAVE___PROGNAME=1 \
239-DPACKAGE=\"tmux\" \
240-DPACKAGE_BUGREPORT=\"\" \
241-DPACKAGE_NAME=\"tmux\" \
242-DPACKAGE_STRING=\"tmux\ 3.4\" \
243-DPACKAGE_TARNAME=\"tmux\" \
244-DPACKAGE_URL=\"\" \
245-DPACKAGE_VERSION=\"3.4\" \
246-DSTDC_HEADERS=1 \
247-DTMUX_CONF='"/etc/tmux.conf:~/.tmux.conf:$XDG_CONFIG_HOME/tmux/tmux.conf:~/.config/tmux/tmux.conf"' \
248-DTMUX_LOCK_CMD='"lock -np"' \
249-DTMUX_TERM='"tmux-256color"' \
250-DTMUX_VERSION='"3.4"' \
251-DVERSION=\"3.4\" \
252-D_ALL_SOURCE=1 \
253-D_GNU_SOURCE=1 \
254-D_OPENBSD_SOURCE \
255-D_POSIX_PTHREAD_SEMANTICS=1 \
256-D_TANDEM_SOURCE=1 \
257-D__EXTENSIONS__=1
258
259LDADD+=		-levent -lterminfo -lutil -lm
260DPADD+=		${LIBEVENT} ${LIBTERMINFO} ${LIBUTIL}
261
262COPTS.format.c += -Wno-format-nonliteral
263COPTS.input.c += -Wno-sign-compare -Wno-pointer-sign
264COPTS.tty.c += -Wno-pointer-sign
265COPTS.utempter.c+=	${CC_WNO_STRINGOP_TRUNCATION}
266COPTS.window-copy.c+=	${CC_WNO_MAYBE_UNINITIALIZED} -Wno-pointer-sign
267
268# The man page needs substitutions, but the dist file usurps the
269# output file suffix.
270.NOPATH: tmux.1
271tmux.1: $(SRCDIR)/tmux.1
272	sed -e 's|@SYSCONFDIR@|/etc|g' $> > $@
273
274CLEANDIRFILES+=	tmux.1
275
276.include <bsd.prog.mk>
277