1DESTDIR ?=
2PREFIX ?= /usr/local
3BINDIR = $(PREFIX)/bin
4SHAREDIR = $(PREFIX)/share/imapfilter
5MANDIR = $(PREFIX)/man
6
7SSLCAPATH = /etc/ssl/certs
8SSLCAFILE = /etc/ssl/cert.pem
9
10MYCFLAGS =
11MYLDFLAGS =
12MYLIBS =
13
14INCDIRS =
15LIBDIRS =
16
17LIBLUA = -llua
18LIBPCRE = -lpcre2-8
19LIBSSL = -lssl
20LIBCRYPTO = -lcrypto
21
22CFLAGS = -Wall -Wextra -O \
23	 -DCONFIG_SHAREDIR='"$(SHAREDIR)"' \
24	 -DCONFIG_SSL_CAPATH='"$(SSLCAPATH)"' \
25	 -DCONFIG_SSL_CAFILE='"$(SSLCAFILE)"' \
26	 $(INCDIRS) $(MYCFLAGS)
27LDFLAGS = $(LIBDIRS) $(MYLDFLAGS)
28LIBS = -lm $(LIBLUA) $(LIBPCRE) $(LIBSSL) $(LIBCRYPTO) $(MYLIBS)
29
30MAN1 = imapfilter.1
31MAN5 = imapfilter_config.5
32
33LUA = common.lua set.lua regex.lua account.lua mailbox.lua message.lua \
34      options.lua auxiliary.lua
35
36BIN = imapfilter
37OBJ = auth.o buffer.o cert.o core.o file.o imapfilter.o list.o log.o lua.o \
38      memory.o misc.o namespace.o pcre.o regexp.o request.o response.o \
39      session.o signal.o socket.o system.o
40
41all: $(BIN)
42
43$(BIN): $(OBJ)
44	$(CC) -o $(BIN) $(LDFLAGS) $(OBJ) $(LIBS)
45
46$(OBJ): imapfilter.h
47buffer.o: buffer.h
48cert.o: pathnames.h session.h
49file.o: pathnames.h
50imapfilter.o: buffer.h list.h pathnames.h regexp.h session.h version.h
51list.o: list.h
52log.o: list.h pathnames.h session.h
53lua.o: pathnames.h
54namespace.o: buffer.h
55regexp.o: regexp.h
56request.o: buffer.h session.h
57response.o: buffer.h regexp.h session.h
58session.o: list.h session.h
59socket.o: session.h
60
61install: $(BIN)
62	mkdir -p $(DESTDIR)$(BINDIR) && \
63	cp -f $(BIN) $(DESTDIR)$(BINDIR) && \
64	chmod 0755 $(DESTDIR)$(BINDIR)/$(BIN)
65	mkdir -p $(DESTDIR)$(SHAREDIR) && \
66	cp -f $(LUA) $(DESTDIR)$(SHAREDIR) && \
67	chmod 0644 $(DESTDIR)$(SHAREDIR)/$(LUA)
68	mkdir -p $(DESTDIR)$(MANDIR)/man1 && \
69	cp -f ../doc/$(MAN1) $(DESTDIR)$(MANDIR)/man1 && \
70	chmod 0644 $(DESTDIR)$(MANDIR)/man1/$(MAN1)
71	mkdir -p $(DESTDIR)$(MANDIR)/man5 && \
72	cp -f ../doc/$(MAN5) $(DESTDIR)$(MANDIR)/man5 && \
73	chmod 0644 $(DESTDIR)$(MANDIR)/man5/$(MAN5)
74
75uninstall:
76	rm -f $(DESTDIR)$(BINDIR)/$(BIN)
77	cd $(DESTDIR)$(SHAREDIR) && rm -f $(LUA)
78	rm -f $(DESTDIR)$(MANDIR)/man1/$(MAN1)
79	rm -f $(DESTDIR)$(MANDIR)/man5/$(MAN5)
80
81clean:
82	rm -f $(OBJ) $(BIN) *~
83