git.fiddlerwoaroof.com
Raw Blame History
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