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