1# Obvious program stuff.
2bin_PROGRAMS = tmux
3CLEANFILES = tmux.1.mdoc tmux.1.man cmd-parse.c
4
5# Distribution tarball options.
6EXTRA_DIST = \
7	CHANGES README README.ja COPYING example_tmux.conf \
8	osdep-*.c mdoc2man.awk tmux.1
9dist_EXTRA_tmux_SOURCES = compat/*.[ch]
10
11# Preprocessor flags.
12AM_CPPFLAGS += @XOPEN_DEFINES@ \
13	-DTMUX_VERSION='"@VERSION@"' \
14	-DTMUX_CONF='"$(sysconfdir)/tmux.conf:~/.tmux.conf:$$XDG_CONFIG_HOME/tmux/tmux.conf:~/.config/tmux/tmux.conf"' \
15	-DTMUX_LOCK_CMD='"@DEFAULT_LOCK_CMD@"' \
16	-DTMUX_TERM='"@DEFAULT_TERM@"'
17
18# Additional object files.
19LDADD = $(LIBOBJS)
20
21# Set flags for gcc.
22if IS_GCC
23AM_CFLAGS += -std=gnu99 -O2
24if IS_DEBUG
25AM_CFLAGS += -g
26AM_CFLAGS += -Wno-long-long -Wall -W -Wformat=2
27AM_CFLAGS += -Wmissing-prototypes -Wstrict-prototypes -Wmissing-declarations
28AM_CFLAGS += -Wwrite-strings -Wshadow -Wpointer-arith -Wsign-compare
29AM_CFLAGS += -Wundef -Wbad-function-cast -Winline -Wcast-align
30AM_CFLAGS += -Wdeclaration-after-statement -Wno-pointer-sign -Wno-attributes
31AM_CFLAGS += -Wno-unused-result -Wno-format-y2k
32if IS_DARWIN
33AM_CFLAGS += -Wno-deprecated-declarations -Wno-cast-align
34endif
35AM_CPPFLAGS += -DDEBUG
36endif
37AM_CPPFLAGS += -iquote.
38endif
39
40# Set flags for Solaris.
41if IS_SUNOS
42if IS_GCC
43AM_CPPFLAGS += -D_XPG6
44else
45AM_CPPFLAGS += -D_XPG4_2
46endif
47endif
48
49# Set flags for Sun CC.
50if IS_SUNCC
51AM_CFLAGS += -erroff=E_EMPTY_DECLARATION
52endif
53
54# Set _LINUX_SOURCE_COMPAT for AIX for malloc(0).
55if IS_AIX
56AM_CPPFLAGS += -D_LINUX_SOURCE_COMPAT=1
57endif
58
59# Set flags for NetBSD.
60if IS_NETBSD
61AM_CPPFLAGS += -D_OPENBSD_SOURCE
62endif
63
64# Set flags for Haiku.
65if IS_HAIKU
66AM_CPPFLAGS += -D_BSD_SOURCE
67endif
68
69# List of sources.
70dist_tmux_SOURCES = \
71	alerts.c \
72	arguments.c \
73	attributes.c \
74	cfg.c \
75	client.c \
76	cmd-attach-session.c \
77	cmd-bind-key.c \
78	cmd-break-pane.c \
79	cmd-capture-pane.c \
80	cmd-choose-tree.c \
81	cmd-command-prompt.c \
82	cmd-confirm-before.c \
83	cmd-copy-mode.c \
84	cmd-detach-client.c \
85	cmd-display-menu.c \
86	cmd-display-message.c \
87	cmd-display-panes.c \
88	cmd-find-window.c \
89	cmd-find.c \
90	cmd-if-shell.c \
91	cmd-join-pane.c \
92	cmd-kill-pane.c \
93	cmd-kill-server.c \
94	cmd-kill-session.c \
95	cmd-kill-window.c \
96	cmd-list-buffers.c \
97	cmd-list-clients.c \
98	cmd-list-keys.c \
99	cmd-list-panes.c \
100	cmd-list-sessions.c \
101	cmd-list-windows.c \
102	cmd-load-buffer.c \
103	cmd-lock-server.c \
104	cmd-move-window.c \
105	cmd-new-session.c \
106	cmd-new-window.c \
107	cmd-parse.y \
108	cmd-paste-buffer.c \
109	cmd-pipe-pane.c \
110	cmd-queue.c \
111	cmd-refresh-client.c \
112	cmd-rename-session.c \
113	cmd-rename-window.c \
114	cmd-resize-pane.c \
115	cmd-resize-window.c \
116	cmd-respawn-pane.c \
117	cmd-respawn-window.c \
118	cmd-rotate-window.c \
119	cmd-run-shell.c \
120	cmd-save-buffer.c \
121	cmd-select-layout.c \
122	cmd-select-pane.c \
123	cmd-select-window.c \
124	cmd-send-keys.c \
125	cmd-server-access.c \
126	cmd-set-buffer.c \
127	cmd-set-environment.c \
128	cmd-set-option.c \
129	cmd-show-environment.c \
130	cmd-show-messages.c \
131	cmd-show-options.c \
132	cmd-show-prompt-history.c \
133	cmd-source-file.c \
134	cmd-split-window.c \
135	cmd-swap-pane.c \
136	cmd-swap-window.c \
137	cmd-switch-client.c \
138	cmd-unbind-key.c \
139	cmd-wait-for.c \
140	cmd.c \
141	colour.c \
142	compat.h \
143	control-notify.c \
144	control.c \
145	environ.c \
146	file.c \
147	format.c \
148	format-draw.c \
149	grid-reader.c \
150	grid-view.c \
151	grid.c \
152	hyperlinks.c \
153	input-keys.c \
154	input.c \
155	job.c \
156	key-bindings.c \
157	key-string.c \
158	layout-custom.c \
159	layout-set.c \
160	layout.c \
161	log.c \
162	menu.c \
163	mode-tree.c \
164	names.c \
165	notify.c \
166	options-table.c \
167	options.c \
168	paste.c \
169	popup.c \
170	proc.c \
171	regsub.c \
172	resize.c \
173	screen-redraw.c \
174	screen-write.c \
175	screen.c \
176	server-acl.c \
177	server-client.c \
178	server-fn.c \
179	server.c \
180	session.c \
181	spawn.c \
182	status.c \
183	style.c \
184	tmux.c \
185	tmux.h \
186	tmux-protocol.h \
187	tty-acs.c \
188	tty-features.c \
189	tty-keys.c \
190	tty-term.c \
191	tty.c \
192	utf8-combined.c \
193	utf8.c \
194	window-buffer.c \
195	window-client.c \
196	window-clock.c \
197	window-copy.c \
198	window-customize.c \
199	window-tree.c \
200	window.c \
201	xmalloc.c \
202	xmalloc.h
203nodist_tmux_SOURCES = osdep-@PLATFORM@.c
204
205# Add compat file for forkpty.
206if NEED_FORKPTY
207nodist_tmux_SOURCES += compat/forkpty-@PLATFORM@.c
208endif
209
210# Add compat file for systemd.
211if HAVE_SYSTEMD
212nodist_tmux_SOURCES += compat/systemd.c
213endif
214
215# Add compat file for utf8proc.
216if HAVE_UTF8PROC
217nodist_tmux_SOURCES += compat/utf8proc.c
218endif
219
220# Enable sixel support.
221if ENABLE_SIXEL
222dist_tmux_SOURCES += image.c image-sixel.c
223endif
224
225if NEED_FUZZING
226check_PROGRAMS = fuzz/input-fuzzer
227fuzz_input_fuzzer_LDFLAGS = $(FUZZING_LIBS)
228fuzz_input_fuzzer_LDADD = $(LDADD) $(tmux_OBJECTS)
229endif
230
231# Install tmux.1 in the right format.
232install-exec-hook:
233	if test x@MANFORMAT@ = xmdoc; then \
234		sed -e "s|@SYSCONFDIR@|$(sysconfdir)|g" $(srcdir)/tmux.1 \
235			>$(srcdir)/tmux.1.mdoc; \
236	else \
237		sed -e "s|@SYSCONFDIR@|$(sysconfdir)|g" $(srcdir)/tmux.1| \
238			$(AWK) -f $(srcdir)/mdoc2man.awk >$(srcdir)/tmux.1.man; \
239	fi
240	$(mkdir_p) $(DESTDIR)$(mandir)/man1
241	$(INSTALL_DATA) $(srcdir)/tmux.1.@MANFORMAT@ \
242		$(DESTDIR)$(mandir)/man1/tmux.1
243