CXXFLAGS += -fPIC -fno-stack-protector -std=c++14 CFLAGS += -fPIC -fno-stack-protector OBJS = dual_control.o request.o dual_control_integrate.o validator.o conversation.o TESTS = dual_control_test validator_test conversation_test request_test TESTOBJS = $(patsubst %,%.o,$TESTS) 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 @git clean -xdf # # -include $(DEPS) # # %.o: %.cc # $(CXX) $(CXXFLAGS) -MM -MF $(patsubst %.o,%.d,$@) -o $@ $< $(TESTS): %: %.o $(OBJS) $(CXX) $(CXXFLAGS) $(CPPFLAGS) -o $@ $^ dual_control.o: dual_control.h # dual_control_test: dual_control_test.o dual_control.o # $(CXX) $(CXXFLAGS) $(CPPFLAGS) -o $@ $^ # # request_test: request_test.o request.o # $(CXX) $(CXXFLAGS) $(CPPFLAGS) -o $@ $^ # # validator_test: validator_test.o validator.o # $(CXX) $(CXXFLAGS) $(CPPFLAGS) -o $@ $^ # # conversation_test: conversation_test.o conversation.o # $(CXX) $(CXXFLAGS) $(CPPFLAGS) -o $@ $^ .PHONY: test test: validator_test request_test dual_control_test conversation_test @./validator_test @./request_test @./dual_control_test @./conversation_test @echo Tests Passing .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 .PHONY: format format: @./format.sh *.cc *.h