summaryrefslogtreecommitdiff
path: root/Makefile
diff options
context:
space:
mode:
Diffstat (limited to 'Makefile')
-rw-r--r--Makefile83
1 files changed, 83 insertions, 0 deletions
diff --git a/Makefile b/Makefile
new file mode 100644
index 0000000..35fe1e1
--- /dev/null
+++ b/Makefile
@@ -0,0 +1,83 @@
+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
+
+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)
+
+$(PAM_TARGET): $(PAM_OBJS)
+ $(CC) $(LDFLAGS) -shared -o $@ $(PAM_OBJS) $(PAM_LDLIBS)
+
+$(CREATE_TARGET): $(CREATE_OBJS)
+ $(CC) $(LDFLAGS) -o $@ $(CREATE_OBJS) $(CREATE_LDLIBS)
+
+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"
+
+uninstall:
+ rm -f "$(DESTDIR)$(BINDIR)/$(CREATE_TARGET)"
+ rm -f "$(DESTDIR)$(PAMDIR)/$(PAM_TARGET)"
+ rm -f "$(DESTDIR)$(PAM_CONFIG_DIR)/pam_bloom"
+
+clean:
+ rm -f $(PAM_TARGET) $(CREATE_TARGET) \
+ $(PAM_OBJS) pam_bloom_create.o