CXXFLAGS += -fPIC -fno-stack-protector -std=c++11 CFLAGS += -fPIC -fno-stack-protector LDFLAGS_COMMON = -lpam ifeq ($(UNAME_S), Linux) LDFLAGS = $(LDFLAGS_COMMON) -l:libssl.a -l:libcrypto.a -ldl -lz else LDFLAGS = $(LDFLAGS_COMMON) @LIBS@ endif INTEGRATION_OBJS = sys_syslog.o sys_fstream.o sys_unistd.o sys_pwd.o sys_pam.o \ sys_stdlib.o sys_time.o OBJS = dual_control.o request.o validator.o conversation.o user.o token.o logger.o session.o installer.o system.o generator.o base32.o random_source.o TEST_SOURCES := $(wildcard *_test.cc) TESTS := $(patsubst %.cc,%.out,$(TEST_SOURCES)) TESTRUNS := $(patsubst %.out,RUN_%,$(TESTS)) MODULELIB = pam_dual_control.so UNAME_S := $(shell uname -s) .PHONY: all all: .depend dual_control.a dual_control .PHONY: version version: @echo COMPILER VERSION -------------------------------- $(CXX) --version dual_control.a: dual_control.o dual_control_integrate.o $(OBJS) $(INTEGRATION_OBJS) ar rvs $@ $^ ranlib $@ dual_control: dual_control_tool.o $(OBJS) $(INTEGRATION_OBJS) $(CXX) $(CXXFLAGS) $(CPPFLAGS) -o $@ $^ $(LDFLAGS) .PHONY: clean clean: @rm -f *.o *.a @rm -f *.out @rm ./.depend .PHONY: distclean distclean: clean @git clean -xdf .depend: $(OBJS:.o=.cc) $(TEST_SOURCES) rm -f ./.depend $(CXX) -std=c++11 -MM $^ > ./.depend; -include .depend %_test.out: %_test.o $(OBJS) $(CXX) $(CXXFLAGS) $(CPPFLAGS) -o $@ $^ $(LDFLAGS) RUN_%: %.out @echo running $< @./$< .PHONY: test test: $(TESTRUNS) @echo Tests Passing .PHONY: install install: $(OBJS) $(INTEGRATION_OBJS) ifeq ($(UNAME_S), Linux) $(CXX) -lpam -shared -o $(DESTDIR)@PAM_MODULE_DIRECTORY@/$(MODULELIB) dual_control_integrate.o $(OBJS) $(INTEGRATION_OBJS) -l:libssl.a -l:libcrypto.a -ldl -lz else @echo installation recipe not known for $(UNAME_S) endif mkdir -p $(DESTDIR)/@bindir@ cp dual_control $(DESTDIR)/@bindir@/ cp setup_user_account.sh $(DESTDIR)/@bindir@/ chmod a+x $(DESTDIR)/@bindir@/dual_control .PHONY: format format: @./format.sh *.cc *.h