include ../../Makefile.vars

CXXFLAGS += -fstack-protector-all -fstack-protector-strong
MCBLOCKINC = -I../include
ALLINC = ${JSONCPPINC} ${CRYPTOPPINC} ${DWMINC} ${DWMAUTHINC} ${DWMRDAPINC} ${CFG2JSONINC} ${MCBLOCKINC}
OBJFILES = DwmMcBlockAuthLogParser.o \
	   DwmMcBlockDb.o \
	   DwmMcBlockDbEntry.o \
	   DwmMcBlockLogRegexMatcher.o \
	   DwmMcBlockMailLogParser.o \
	   DwmMcBlockRequestMessage.o \
	   DwmMcBlockResponseMessage.o \
	   DwmMcBlockServerConfig.o
shlib_version = $(shell ../../getvers.sh -s)
SHARED_OBJFILES = $(OBJFILES:%.o=%.lo)
OBJDEPS  = $(OBJFILES:%.o=deps/%_deps)

../lib/libDwmMcBlock.la: ${SHARED_OBJFILES}
	${LIBTOOL} --tag=CXX --mode=link ${CXX} -o $@ $^ -rpath ${INSTALLPREFIX}/lib -version-info ${shlib_version}

../lib/libDwmMcBlock${SHARED_LIB_EXT}: ${OBJFILES}
	${CXX} ${LD_SHARED_FLAGS} -o $@ $^

deps/%_deps: %.cc
	@echo "making dependencies for $<"
	@set -e; \
	${CXX} -MM ${CXXFLAGS} ${BGPINC} ${ALLINC} -c $< | \
	  sed 's/\($*\)\.o[ :]*/\1.o $(@D)\/$(@F) : /g' > $@ ; [ -s $@ ] || \
	  rm -f $@

#  only include dependency makefiles if target is not 'clean' or 'distclean'
ifneq ($(MAKECMDGOALS),clean)
ifneq ($(MAKECMDGOALS),distclean)
-include ${OBJDEPS}
endif
endif

%.o %.lo: %.cc
	${LIBTOOL} --mode=compile --tag=CXX ${CXX} ${CXXFLAGS} ${ALLINC} -c $< -o $@

tarprep: ${TARDIR}/lib/libDwmMcBlock.la

${TARDIR}/lib/libDwmMcBlock.la: ../lib/libDwmMcBlock.la
	${LIBTOOL} --mode=install ../../install-sh -s -c $< $@

clean:: clean-tarprep
	${LIBTOOL} --mode=clean rm -f ../lib/libDwmMcBlock.la ${OBJFILES} ${SHARED_OBJFILES}

clean-tarprep::
	${LIBTOOL} --mode=clean rm -f ${TARDIR}/lib/libDwmMcBlock.la

distclean: clean
	rm -f deps/*_deps
