include $(LIBNFCONNTRACK_APPS_DIR)/common.mk

APPL_SUB_BLDDIR := $(LIBNFCONNTRACK_APPS_BLDDIR)/src

LIBS := $(APPL_SUB_BLDDIR)/conntrack/libnfconntrack_conntrack.so \
		$(APPL_SUB_BLDDIR)/expect/libnfconntrack_expect.so

LSRCS := main.c callback.c 
		
LOBJS := $(addsuffix .o, $(basename ${LSRCS}))
BOBJS := $(addprefix ${APPL_SUB_BLDDIR}/,${LOBJS})

SO_LIB := $(APPL_SUB_BLDDIR)/libnfconntrack.so
STATIC_LIB := $(foreach T,$(SO_LIB),$(basename $(T))_pic.a)

all: $(SO_LIB) $(STATIC_LIB)

$(STATIC_LIB): $(BOBJS)
	@$(AR) rcs $@ $^
	@$(RANLIB) $@

$(APPL_SUB_BLDDIR)/conntrack/libnfconntrack_conntrack.so $(APPL_SUB_BLDDIR)/conntrack/libnfconntrack_conntrack_pic.a:
	@$(MAKE) -C conntrack
	@cp -f $(APPL_SUB_BLDDIR)/conntrack/libnfconntrack_conntrack.so $(LIBNFCONNTRACK_APPS_BLDDIR)
	@cp -f $(APPL_SUB_BLDDIR)/conntrack/libnfconntrack_conntrack_pic.a $(LIBNFCONNTRACK_APPS_BLDDIR)

$(APPL_SUB_BLDDIR)/expect/libnfconntrack_expect.so $(APPL_SUB_BLDDIR)/expect/libnfconntrack_expect_pic.a:
	@$(MAKE) -C expect
	@cp -f $(APPL_SUB_BLDDIR)/expect/libnfconntrack_expect.so $(LIBNFCONNTRACK_APPS_BLDDIR)
	@cp -f $(APPL_SUB_BLDDIR)/expect/libnfconntrack_expect_pic.a $(LIBNFCONNTRACK_APPS_BLDDIR)
	
$(SO_LIB): $(LIBS) $(BOBJS)
	@$(CC) -shared -Wl,-soname,$(notdir $@) $(CFLAGS) -o $@ $^

$(APPL_SUB_BLDDIR)/%.o: %.c
	@echo "Compiling $<"
	@$(CC) $(CFLAGS) -c $< -o $@
	
clean: $(SUB_DIRS)
	@$(MAKE) -C conntrack clean
	@$(MAKE) -C expect clean
	@rm -f $(BOBJS:.o=.d)
	@rm -f $(BOBJS)
	@rm -f $(APPL_SUB_BLDDIR)/libnfconntrack_*.a
	@rm -f $(APPL_SUB_BLDDIR)/libnfconntrack_*.so
	@rm -f $(APPL_SUB_BLDDIR)/libnfconntrack.so
	
ifeq (,$(findstring clean,$(MAKECMDGOALS)))
-include $(addprefix ${APPL_SUB_BLDDIR}/,$(addsuffix .d,$(basename $(LSRCS))))
$(APPL_SUB_BLDDIR)/%.d: %.c
	-@if [ ! -d $(APPL_SUB_BLDDIR)  ]; then mkdir -p $(APPL_SUB_BLDDIR); fi
	@$(CC) -M $(CFLAGS) $< >$@.tmp; \
	echo "$@ \\" > $@; \
	sed 's,\($*\)\.o[ :]*,$$(APPL_SUB_BLDDIR)\/\1.o: ,g' < $@.tmp >> $@; \
	rm -f $@.tmp
endif

.PHONY: all clean