]> Pileus Git - ~andy/lamechat/blob - makefile
Support pre-formatted text.
[~andy/lamechat] / makefile
1 # lamechat - curses chat program
2 # See COPYING file for license details.
3
4 -include config.mk
5
6 # Settings
7 VERSION   ?= 0.1-rc1
8 PREFIX    ?= /usr/local
9 MANPREFIX ?= $(PREFIX)/share/man
10
11 # Features
12 CRYPTO    ?= GNUTLS
13
14 # Compiler
15 GCC       ?= gcc
16 CFLAGS    ?= -Wall --std=c99
17 LDFLAGS   ?= -lncursesw -lexpat
18
19 # Sources
20 PROG      ?= lamechat
21 SOURCES   ?= main util args conf view chat net irc xmpp 
22
23 # OpenSSL
24 ifeq ($(CRYPTO),OPENSSL)
25 net.o: \
26 CFLAGS    += -DUSE_OPENSSL
27 LDFLAGS   += -lcrypto -lssl
28 endif
29
30 # GnuTLS
31 ifeq ($(CRYPTO),GNUTLS)
32 net.o: \
33 CFLAGS    += -DUSE_GNUTLS
34 LDFLAGS   += -lgnutls
35 endif
36
37 # Targets
38 all: $(PROG)
39
40 clean:
41         rm -f *.o $(PROG)
42
43 dist:
44         tar -czf $(PROG)-$(VERSION).tar.gz --transform s::$(PROG)-$(VERSION)/: \
45                 README COPYING config.mk.example makefile */*.txt */*.1 */*.c */*.h
46
47 install: all
48         install -m 755 -D $(PROG) $(DESTDIR)$(PREFIX)/bin/$(PROG)
49         install -m 644 -D doc/$(PROG).1 $(DESTDIR)$(MANPREFIX)/man1/$(PROG).1
50
51 uninstall:
52         rm -f $(DESTDIR)$(PREFIX)/bin/$(PROG)
53         rm -f $(DESTDIR)$(MANPREFIX)/man1/$(PROG).1
54
55 memcheck: $(PROG)
56         valgrind --log-file=valgrind.out \
57                  --track-origins=yes     \
58                  --leak-check=full       \
59                  --leak-resolution=high  \
60                  ./$(PROG)
61
62 # Rules
63 $(PROG): $(SOURCES:%=%.o)
64         $(GCC) -o $@ $+ $(LDFLAGS)
65
66 %.o: %.c $(wildcard *.h makefile config.mk)
67         $(GCC) $(CFLAGS) -c -o $@ $<
68
69 .PHONY: all clean dist install uninstall