CXXFLAGS += -fPIC -fno-stack-protector -std=c++11 CFLAGS += -fPIC -fno-stack-protector LDFLAGS = -lpam INTEGRATION_OBJS = sys_syslog.o sys_fstream.o sys_unistd.o sys_pwd.o sys_pam.o dual_control_integrate.o OBJS = dual_control.o request.o validator.o conversation.o user.o token.o logger.o session.o TESTS = dual_control_test validator_test conversation_test request_test user_test token_test \ logger_test session_test TESTOBJS = $(patsubst %,%.o,$(TESTS)) SRCS := $(OBJS:.o=.cc) $(TESTOBJS:.o=.cc) MODULELIB = pam_dual_control.so UNAME_S := $(shell uname -s) .PHONY: all all: dual_control.a .depend .PHONY: version version: @echo COMPILER VERSION -------------------------------- $(CXX) --version dual_control.a: $(OBJS) ar rvs $@ $^ ranlib $@ .PHONY: clean clean: @rm -f *.o *.a @rm -f *_test @rm ./.depend .PHONY: distclean distclean: clean @git clean -xdf .depend: $(SRCS) rm -f ./.depend $(CXX) -MM $^ > ./.depend; -include .depend $(TESTS): %: %.o $(OBJS) @$(CXX) $(CXXFLAGS) $(CPPFLAGS) -o $@ $^ @./$@ .PHONY: test test: $(TESTS) @echo Tests Passing .PHONY: install install: $(OBJS) $(INTEGRATION_OBJS) ifeq ($(UNAME_S), Linux) $(CXX) -lpam -shared -Wl,-x -o $(DESTDIR)@PAM_MODULE_DIRECTORY@/$(MODULELIB) $(OBJS) $(INTEGRATION_OBJS) else @echo installation recipe not known for $(UNAME_S) endif .PHONY: format format: @./format.sh *.cc *.h