CXXFLAGS += -fPIC -fno-stack-protector CFLAGS += -fPIC -fno-stack-protector OBJS = logging.o conversation.o token.o dual_control.o HEADERS = logging.h test_support.h token.h MODULELIB = pam_dual_control.so UNAME_S := $(shell uname -s) .PHONY: all all: dual_control.a dual_control.a: $(OBJS) ar rvs $@ $^ ranlib $@ .PHONY: clean clean: @rm -f *.o *.a @rm -f dual_control_test .PHONY: distclean distclean: clean @rm -f Makefile config.h t_%.o: %.cc $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -D UNIT_TEST -o $@ $< #dual_control_test: dual_control_test.o t_dual_control.o # $(CXX) $(CXXFLAGS) $(CPPLAGS) -lpam -o $@ $^ # #logging_test: logging_test.o t_logging.o # $(CXX) $(CXXFLAGS) $(CPPFLAGS) -lpam -o $@ $^ # #token_test: token_test.o t_token.o # $(CXX) $(CXXFLAGS) $(CPPFLAGS) -lpam -o $@ $^ user_test: user_test.o t_user.o $(CXX) $(CXXFLAGS) $(CPPFLAGS) -o $@ $^ validator_test: validator_test.o t_validator.o $(CXX) $(CXXFLAGS) $(CPPFLAGS) -o $@ $^ conversation_test: conversation_test.o t_conversation.o $(CXX) $(CXXFLAGS) $(CPPFLAGS) -o $@ $^ .PHONY: test test: validator_test conversation_test @./validator_test @./conversation_test # @./dual_control_test # @./logging_test # @./token_test # @echo all tests passed .PHONY: install install: $(OBJS) ifeq ($(UNAME_S), Linux) ld $(LDFLAGS) -x --shared -lpam -o $(DESTDIR)@PAM_MODULE_DIRECTORY@/$(MODULELIB) $(OBJS) else @echo installation recipe not known for $(UNAME_S) endif