summaryrefslogtreecommitdiff
path: root/Makefile
blob: 84f895df10509c4963aaa61748fb297ff03f592b (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
CC      ?= cc

CFLAGS  ?= -O2
CFLAGS  += -Wall -Wextra -Wpedantic
CFLAGS  += -fPIC
CFLAGS  += -fstack-protector-strong
CFLAGS  += -D_FORTIFY_SOURCE=2

LDFLAGS += -Wl,-z,relro,-z,now

PAM_LDLIBS    = -lpam -lm
CREATE_LDLIBS = -lm

PAM_TARGET    = pam_bloom.so
CREATE_TARGET = pam_bloom_create

CHECK_TARGET  = pam_bloom_check
CHECK_OBJS    = pam_bloom_check.o $(COMMON_OBJS)
CHECK_LDLIBS  = -lm

PREFIX       ?= /usr
BINDIR       ?= $(PREFIX)/bin

MULTIARCH    := $(shell dpkg-architecture -qDEB_HOST_MULTIARCH 2>/dev/null)

ifeq ($(MULTIARCH),)
PAMDIR       ?= $(PREFIX)/lib/security
else
PAMDIR       ?= $(PREFIX)/lib/$(MULTIARCH)/security
endif

FILTERDIR    ?= /etc/security/pam_bloom/filters.d
DESTDIR      ?=

COMMON_OBJS   = bloom.o mmh3.o
PAM_OBJS      = pam_bloom.o $(COMMON_OBJS)
CREATE_OBJS   = pam_bloom_create.o $(COMMON_OBJS)

FILTERS = rockyou.txt.bloom

PAM_CONFIG_DIR ?= /usr/share/pam-configs
PAM_CONFIG      = pam-configs/pam_bloom

.PHONY: all clean install uninstall

all: $(PAM_TARGET) $(CREATE_TARGET) $(CHECK_TARGET)

$(PAM_TARGET): $(PAM_OBJS)
	$(CC) $(LDFLAGS) -shared -o $@ $(PAM_OBJS) $(PAM_LDLIBS)

$(CREATE_TARGET): $(CREATE_OBJS)
	$(CC) $(LDFLAGS) -o $@ $(CREATE_OBJS) $(CREATE_LDLIBS)

$(CHECK_TARGET): $(CHECK_OBJS)
	$(CC) $(LDFLAGS) -o $@ $(CHECK_OBJS) $(CHECK_LDLIBS)

pam_bloom_check.o: pam_bloom_check.c bloom.h
	$(CC) $(CFLAGS) -c -o $@ $<

pam_bloom.o: pam_bloom.c bloom.h
	$(CC) $(CFLAGS) -c -o $@ $<

pam_bloom_create.o: pam_bloom_create.c bloom.h
	$(CC) $(CFLAGS) -c -o $@ $<

bloom.o: bloom.c bloom.h mmh3.h
	$(CC) $(CFLAGS) -c -o $@ $<

mmh3.o: mmh3.c mmh3.h
	$(CC) $(CFLAGS) -c -o $@ $<

install: all
	install -d "$(DESTDIR)$(BINDIR)"
	install -m 0755 $(CREATE_TARGET) "$(DESTDIR)$(BINDIR)/$(CREATE_TARGET)"

	install -d "$(DESTDIR)$(PAMDIR)"
	install -m 0755 $(PAM_TARGET) "$(DESTDIR)$(PAMDIR)/$(PAM_TARGET)"

	install -d -m 0755 "$(DESTDIR)$(FILTERDIR)"
	install -m 0644 $(FILTERS) "$(DESTDIR)$(FILTERDIR)/"

	install -d "$(DESTDIR)$(PAM_CONFIG_DIR)"
	install -m 0644 $(PAM_CONFIG) "$(DESTDIR)$(PAM_CONFIG_DIR)/pam_bloom"

	install -m 0755 $(CHECK_TARGET) "$(DESTDIR)$(BINDIR)/$(CHECK_TARGET)"

uninstall:
	rm -f "$(DESTDIR)$(BINDIR)/$(CREATE_TARGET)"
	rm -f "$(DESTDIR)$(BINDIR)/$(CHECK_TARGET)"
	rm -f "$(DESTDIR)$(PAMDIR)/$(PAM_TARGET)"
	rm -f "$(DESTDIR)$(PAM_CONFIG_DIR)/pam_bloom"

clean:
	rm -f $(PAM_TARGET) $(CREATE_TARGET) $(CHECK_TARGET) \
	      $(PAM_OBJS) $(CREATE_OBJS) $(CHECK_OBJS)