summaryrefslogtreecommitdiffstats
path: root/GNUmakefile
blob: 531562ff915565eeab4da908d073592dd1c1de5f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
# $Id: GNUmakefile,v 1.70 2009-02-07 08:36:34 nicm Exp $

.PHONY: clean

PROG= tmux
VERSION= 0.7

DATE= $(shell date +%Y%m%d-%H%M)

#FDEBUG= 1

META?= \002

SRCS= tmux.c server.c server-msg.c server-fn.c buffer.c buffer-poll.c status.c \
      xmalloc.c xmalloc-debug.c input.c input-keys.c \
      screen.c screen-write.c screen-redraw.c \
      grid.c grid-view.c \
      window.c session.c log.c client.c client-msg.c client-fn.c cfg.c \
      key-string.c key-bindings.c resize.c arg.c mode-key.c \
      cmd.c cmd-generic.c cmd-string.c cmd-list.c \
      cmd-detach-client.c cmd-list-sessions.c cmd-new-window.c cmd-bind-key.c \
      cmd-unbind-key.c cmd-previous-window.c cmd-last-window.c cmd-list-keys.c \
      cmd-set-option.c cmd-rename-window.c cmd-select-window.c \
      cmd-list-windows.c cmd-attach-session.c cmd-send-prefix.c \
      cmd-refresh-client.c cmd-kill-window.c cmd-list-clients.c \
      cmd-link-window.c cmd-unlink-window.c cmd-next-window.c cmd-send-keys.c \
      cmd-swap-window.c cmd-rename-session.c cmd-kill-session.c \
      cmd-switch-client.c cmd-has-session.c cmd-scroll-mode.c cmd-copy-mode.c \
      cmd-paste-buffer.c cmd-new-session.c cmd-start-server.c \
      cmd-kill-server.c cmd-set-window-option.c cmd-show-options.c \
      cmd-show-window-options.c cmd-command-prompt.c cmd-set-buffer.c \
      cmd-show-buffer.c cmd-list-buffers.c cmd-delete-buffer.c \
      cmd-list-commands.c cmd-move-window.c cmd-select-prompt.c \
      cmd-respawn-window.c cmd-source-file.c cmd-server-info.c \
      cmd-clock-mode.c cmd-lock-server.c cmd-set-password.c \
      cmd-save-buffer.c cmd-select-pane.c cmd-split-window.c \
      cmd-resize-pane-up.c cmd-resize-pane-down.c cmd-kill-pane.c \
      cmd-up-pane.c cmd-down-pane.c cmd-choose-window.c cmd-choose-session.c \
      cmd-suspend-client.c cmd-find-window.c cmd-load-buffer.c \
      cmd-copy-buffer.c \
      window-clock.c window-scroll.c window-more.c window-copy.c \
      window-choose.c \
      options.c options-cmd.c paste.c colour.c utf8.c clock.c \
      tty.c tty-term.c tty-keys.c tty-write.c util.c names.c \
      osdep-unknown.c osdep-openbsd.c osdep-freebsd.c osdep-linux.c \
      osdep-darwin.c attributes.c

CC?= gcc
INCDIRS+= -I. -I-
CFLAGS+= -DBUILD="\"$(VERSION) ($(DATE))\"" -DMETA="'${META}'"
ifdef FDEBUG
CFLAGS+= -g -ggdb -DDEBUG
LDFLAGS+= -rdynamic
LIBS+= -ldl
endif
CFLAGS+= -Wno-long-long -Wall -W -Wnested-externs -Wformat=2
CFLAGS+= -Wmissing-prototypes -Wstrict-prototypes -Wmissing-declarations
CFLAGS+= -Wwrite-strings -Wshadow -Wpointer-arith -Wcast-qual -Wsign-compare
CFLAGS+= -Wundef -Wbad-function-cast -Winline -Wcast-align

LDFLAGS+=
LIBS+= -lncurses

PREFIX?= /usr/local
MANDIR?= $(PREFIX)/man/man1
INSTALLDIR= install -d
INSTALLBIN= install -g bin -o root -m 555
INSTALLMAN= install -g bin -o root -m 444

ifeq ($(shell uname),IRIX64)
INCDIRS+= -Icompat -I/usr/local/include/ncurses
SRCS+= compat/strlcpy.c compat/strtonum.c compat/daemon.c \
	compat/asprintf.c compat/fgetln.c compat/forkpty-irix.c
CFLAGS+= -DNO_STRLCPY -DNO_STRTONUM -DNO_TREE_H -DNO_SETPROCTITLE \
	-DNO_DAEMON -DNO_FORKPTY -DNO_PROGNAME -DNO_ASPRINTF -DNO_FGETLN \
	-DBROKEN_VSNPRINTF -D_SGI_SOURCE -std=c99
LDFLAGS+= -L/usr/local/lib
LIBS+= -lgen
endif

ifeq ($(shell uname),SunOS)
INCDIRS+= -Icompat -I/usr/local/include/ncurses
SRCS+= compat/strtonum.c compat/daemon.c compat/forkpty-sunos.c \
	compat/asprintf.c compat/fgetln.c compat/vis.c
CFLAGS+= -DNO_STRTONUM -DNO_TREE_H -DNO_PATHS_H -DNO_SETPROCTITLE \
	-DNO_DAEMON -DNO_FORKPTY -DNO_PROGNAME -DNO_ASPRINTF -DNO_FGETLN
LDFLAGS+= -L/usr/local/lib
LIBS+= -lsocket -lnsl
endif

ifeq ($(shell uname),Darwin)
INCDIRS+= -Icompat
SRCS+= compat/strtonum.c compat/bsd-poll.c compat/vis.c
CFLAGS+= -DNO_STRTONUM -DNO_SETRESUID -DNO_SETRESGID -DNO_SETPROCTITLE \
         -DNO_QUEUE_H -DNO_TREE_H -DBROKEN_POLL
endif

ifeq ($(shell uname),Linux)
INCDIRS+= -Icompat
SRCS+= compat/strlcpy.c compat/strlcat.c compat/strtonum.c \
       compat/fgetln.c compat/getopt_long.c compat/vis.c
CFLAGS+= $(shell getconf LFS_CFLAGS) -D_GNU_SOURCE \
         -DNO_STRLCPY -DNO_STRLCAT -DNO_STRTONUM -DNO_SETPROCTITLE \
         -DNO_QUEUE_H -DNO_TREE_H -DUSE_PTY_H -DNO_FGETLN \
	 -DBROKEN_GETOPT -std=c99
LIBS+= -lcrypt -lutil
endif

OBJS= $(patsubst %.c,%.o,$(SRCS))

CLEANFILES= ${PROG} *.o .depend *~ ${PROG}.core *.log compat/*.o index.html

CPPFLAGS+= $(INCDIRS)

all: $(PROG)

$(PROG): $(OBJS)
	$(CC) $(LDFLAGS) -o $@ $+ $(LIBS)

depend: $(SRCS)
	$(CC) $(CFLAGS) $(INCDIRS) -MM $(SRCS) > .depend

install:
	$(INSTALLDIR) $(DESTDIR)$(PREFIX)/bin
	$(INSTALLBIN) $(PROG) $(DESTDIR)$(PREFIX)/bin/$(PROG)
	$(INSTALLDIR) $(DESTDIR)$(MANDIR)
	$(INSTALLMAN) $(PROG).1 $(DESTDIR)$(MANDIR)

clean:
	rm -f $(CLEANFILES)