MODULEFLAGS = -fPIC -fno-stack-protector MODULEOBJS = dual_control.o logging.o dc_syslog.o HEADERS = logging.h dc_syslog.h MODULELIB = pam_dual_control.so UNAME_S := $(shell uname -s) .PHONY: all all: dual_control.a dual_control.a: $(MODULEOBJS) ar rvs $@ $^ ranlib $@ $(MODULEOBJS): %.o: %.c $(HEADERS) $(CC) -c $(CFLAGS) $(CPPFLAGS) $(MODULEFLAGS) $< -o $@ .PHONY: clean clean: @rm -f *.o *.a @rm -f dual_control_test .PHONY: distclean distclean: clean @rm -f Makefile config.h dual_control_test: dual_control_test.c dual_control.o $(CC) $(CFLAGS) $(CPPFLAGS) -lpam -o $@ $^ logging_test: logging_test.c logging.o $(CC) $(CFLAGS) $(CPPFLAGS) -lpam -o $@ $^ .PHONY: test test: dual_control_test logging_test @./dual_control_test @./logging_test @echo all tests passed .PHONY: install install: $(MODULEOBJS) ifeq ($(UNAME_S), Linux) ld $(LDFLAGS) -x --shared -lpam -o $(DESTDIR)@PAM_MODULE_DIRECTORY@/$(MODULELIB) $(MODULEOBJS) else @echo installation recipe not known for $(UNAME_S) endif