1 # $NetBSD: Makefile,v 1.46 2026/05/29 15:11:48 christos Exp $ 2 3 .include <bsd.own.mk> 4 5 SRCDIR= ${NETBSDSRCDIR}/external/bsd/tmux/dist 6 .PATH: ${SRCDIR} 7 .PATH: ${SRCDIR}/compat 8 9 BINDIR= /usr/bin 10 PROG= tmux 11 MAN= tmux.1 12 13 WARNS?= 4 14 15 SRCS+= \ 16 alerts.c \ 17 arguments.c \ 18 attributes.c \ 19 cfg.c \ 20 client.c \ 21 cmd-attach-session.c \ 22 cmd-bind-key.c \ 23 cmd-break-pane.c \ 24 cmd-capture-pane.c \ 25 cmd-choose-tree.c \ 26 cmd-command-prompt.c \ 27 cmd-confirm-before.c \ 28 cmd-copy-mode.c \ 29 cmd-detach-client.c \ 30 cmd-display-menu.c \ 31 cmd-display-message.c \ 32 cmd-display-panes.c \ 33 cmd-find-window.c \ 34 cmd-find.c \ 35 cmd-if-shell.c \ 36 cmd-join-pane.c \ 37 cmd-kill-pane.c \ 38 cmd-kill-server.c \ 39 cmd-kill-session.c \ 40 cmd-kill-window.c \ 41 cmd-list-buffers.c \ 42 cmd-list-clients.c \ 43 cmd-list-keys.c \ 44 cmd-list-panes.c \ 45 cmd-list-sessions.c \ 46 cmd-list-windows.c \ 47 cmd-load-buffer.c \ 48 cmd-lock-server.c \ 49 cmd-move-window.c \ 50 cmd-new-session.c \ 51 cmd-new-window.c \ 52 cmd-parse.y \ 53 cmd-paste-buffer.c \ 54 cmd-pipe-pane.c \ 55 cmd-queue.c \ 56 cmd-refresh-client.c \ 57 cmd-rename-session.c \ 58 cmd-rename-window.c \ 59 cmd-resize-pane.c \ 60 cmd-resize-window.c \ 61 cmd-respawn-pane.c \ 62 cmd-respawn-window.c \ 63 cmd-rotate-window.c \ 64 cmd-run-shell.c \ 65 cmd-save-buffer.c \ 66 cmd-select-layout.c \ 67 cmd-select-pane.c \ 68 cmd-select-window.c \ 69 cmd-send-keys.c \ 70 cmd-server-access.c \ 71 cmd-set-buffer.c \ 72 cmd-set-environment.c \ 73 cmd-set-option.c \ 74 cmd-show-environment.c \ 75 cmd-show-messages.c \ 76 cmd-show-options.c \ 77 cmd-show-prompt-history.c \ 78 cmd-source-file.c \ 79 cmd-split-window.c \ 80 cmd-swap-pane.c \ 81 cmd-swap-window.c \ 82 cmd-switch-client.c \ 83 cmd-unbind-key.c \ 84 cmd-wait-for.c \ 85 cmd.c \ 86 colour.c \ 87 control-notify.c \ 88 control.c \ 89 environ.c \ 90 file.c \ 91 format-draw.c \ 92 format.c \ 93 grid-reader.c \ 94 grid-view.c \ 95 grid.c \ 96 hyperlinks.c \ 97 image.c \ 98 image-sixel.c \ 99 input-keys.c \ 100 input.c \ 101 job.c \ 102 key-bindings.c \ 103 key-string.c \ 104 layout-custom.c \ 105 layout-set.c \ 106 layout.c \ 107 log.c \ 108 menu.c \ 109 mode-tree.c \ 110 names.c \ 111 notify.c \ 112 options-table.c \ 113 options.c \ 114 osdep-netbsd.c \ 115 paste.c \ 116 popup.c \ 117 proc.c \ 118 regsub.c \ 119 resize.c \ 120 screen-redraw.c \ 121 screen-write.c \ 122 screen.c \ 123 server-acl.c \ 124 server-client.c \ 125 server-fn.c \ 126 server.c \ 127 session.c \ 128 spawn.c \ 129 status.c \ 130 style.c \ 131 tmux.c \ 132 tty-acs.c \ 133 tty-features.c \ 134 tty-keys.c \ 135 tty-term.c \ 136 tty.c \ 137 utf8.c \ 138 utf8-combined.c \ 139 window-buffer.c \ 140 window-client.c \ 141 window-clock.c \ 142 window-copy.c \ 143 window-customize.c \ 144 window-tree.c \ 145 window.c \ 146 xmalloc.c 147 148 SRCS+= utempter.c 149 CPPFLAGS+=-DSUPPORT_UTMP -DSUPPORT_UTMPX 150 151 # Files in compat/ 152 SRCS+= imsg-buffer.c 153 SRCS+= imsg.c 154 SRCS+= fdforkpty.c 155 SRCS+= freezero.c 156 SRCS+= explicit_bzero.c 157 SRCS+= htonll.c 158 SRCS+= ntohll.c 159 SRCS+= recallocarray.c 160 SRCS+= getdtablecount.c 161 #SRCS+= strtonum.c 162 #SRCS+= unvis.c 163 #SRCS+= vis.c 164 165 CPPFLAGS+= -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 # ENABLE_SIXEL, HAVE_REALLOCARRAY, HAVE_TREE_H, HAVE_UTEMPTER, 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. 184 CPPFLAGS+= \ 185 -DENABLE_SIXEL=1 \ 186 -DHAVE_ASPRINTF=1 \ 187 -DHAVE_B64_NTOP=1 \ 188 -DHAVE_BITSTRING_H=1 \ 189 -DHAVE_BSD_GETOPT=1 \ 190 -DHAVE_CFMAKERAW=1 \ 191 -DHAVE_CLOCK_GETTIME=1 \ 192 -DHAVE_CLOSEFROM=1 \ 193 -DHAVE_CURSES_H=1 \ 194 -DHAVE_DAEMON=1 \ 195 -DHAVE_DIRENT_H=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_MEMMEM=1 \ 209 -DHAVE_MEMORY_H=1 \ 210 -DHAVE_PATHS_H=1 \ 211 -DHAVE_PROC_PID=1 \ 212 -DHAVE_QUEUE_H=1 \ 213 -DHAVE_REALLOCARRAY=1 \ 214 -DHAVE_SETENV=1 \ 215 -DHAVE_SETPROCTITLE=1 \ 216 -DHAVE_STDINT_H=1 \ 217 -DHAVE_STDLIB_H=1 \ 218 -DHAVE_STRCASESTR=1 \ 219 -DHAVE_STRINGS_H=1 \ 220 -DHAVE_STRING_H=1 \ 221 -DHAVE_STRLCAT=1 \ 222 -DHAVE_STRLCPY=1 \ 223 -DHAVE_STRNDUP=1 \ 224 -DHAVE_STRSEP=1 \ 225 -DHAVE_STRTONUM=1 \ 226 -DHAVE_SYSCONF=1 \ 227 -DHAVE_SYS_DIR_H=1 \ 228 -DHAVE_SYS_SIGNAME=1 \ 229 -DHAVE_SYS_STAT_H=1 \ 230 -DHAVE_SYS_TREE_H=1 \ 231 -DHAVE_SYS_TYPES_H=1 \ 232 -DHAVE_TIPARM=1 \ 233 -DHAVE_TREE_H=1 \ 234 -DHAVE_UNISTD_H=1 \ 235 -DHAVE_UTEMPTER=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.6b\" \ 243 -DPACKAGE_TARNAME=\"tmux\" \ 244 -DPACKAGE_URL=\"\" \ 245 -DPACKAGE_VERSION=\"3.6b\" \ 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.6b"' \ 251 -DVERSION=\"3.6b\" \ 252 -D_ALL_SOURCE=1 \ 253 -D_GNU_SOURCE=1 \ 254 -D_NETBSD_SOURCE \ 255 -D_OPENBSD_SOURCE \ 256 -D_POSIX_PTHREAD_SEMANTICS=1 \ 257 -D_TANDEM_SOURCE=1 \ 258 -D__EXTENSIONS__=1 259 260 LDADD+= -levent -lterminfo -lutil -lm 261 DPADD+= ${LIBEVENT} ${LIBTERMINFO} ${LIBUTIL} 262 263 COPTS.format.c+= -Wno-format-nonliteral 264 COPTS.input.c+= -Wno-sign-compare -Wno-pointer-sign 265 COPTS.mode-tree.c+= -Wno-error=stack-protector 266 COPTS.tty.c+= -Wno-pointer-sign 267 COPTS.utempter.c+= ${CC_WNO_STRINGOP_TRUNCATION} 268 COPTS.window-copy.c+= ${CC_WNO_MAYBE_UNINITIALIZED} -Wno-pointer-sign 269 COPTS.cmd-run-shell.c += ${CC_WNO_MAYBE_UNINITIALIZED} 270 271 # The man page needs substitutions, but the dist file usurps the 272 # output file suffix. 273 .NOPATH: tmux.1 274 tmux.1: $(SRCDIR)/tmux.1 275 sed -e 's|@SYSCONFDIR@|/etc|g' $> > $@ 276 277 CLEANDIRFILES+= tmux.1 278 279 .include <bsd.prog.mk> 280