BASEDIR	=.
OUTDIR	=./build
TMPDIR	=./build_tmp
SRCDIR	=$(BASEDIR)

SRC_LIST	=$(shell find $(SRCDIR) -maxdepth 2 -name "*.cpp")
HDR_LIST	=$(shell find $(SRCDIR) -maxdepth 2 -name "*.h")
OBJ_LIST	=$(addprefix $(TMPDIR)/,$(notdir $(addsuffix .o, $(basename $(SRC_LIST)))))

MAKE = make

CC	= g++
INCLUDES	=$(BASEDIR) $(BASEDIR)/../../../include $(BASEDIR)/.. $(BASEDIR)/../..
CPPFLAGS	= -g -O3 -w $(addprefix -I,$(INCLUDES))

LIBS		= 
LIB_DIR		=

LINK		=ld
LINK_FLAGS	=-pthread
AR = ar
ARFLAGS = cr

ifeq ($(LOGS),1)
CPPFLAGS += -D_RELEASE_LOG -D_DEBUG
endif

ifeq ($(NO_IPV6_NAT),1)
CPPFLAGS += -DNO_IPV6_NAT
endif

ifeq ($(C_API),1)
CPPFLAGS += -D_C_API
endif

OUTNAME	= libnfproxy.a

BUILD_CMD=  if [ -d "$$dir" ]; then \
	    (	cd $$dir && echo "making $$target in $$dir..." && \
		$(MAKE) TOP=.. DIR=$$dir $$target \
	    ) || exit 1; \
	    fi
RECURSIVE_BUILD_CMD=for dir in $(DIRS); do $(BUILD_CMD); done

all: mkdirs $(OUTNAME)

mkdirs:
	if !([ -d "$(OUTDIR)" ]); then \
		(  mkdir $(OUTDIR) ) || exit 1; \
	    fi
	if !([ -d "$(TMPDIR)" ]); then \
		(  mkdir $(TMPDIR) ) || exit 1; \
	    fi
clean: 
	rm -f $(TMPDIR)/*.o
	rm -f $(OUTDIR)/$(OUTNAME)

$(OBJ_LIST): $(SRC_LIST) $(HDR_LIST)
	$(CC) $(CPPFLAGS) -o $@ -c $(filter %/$(notdir $(basename $@)).cpp,$(SRC_LIST)) 
	
$(OUTNAME): $(OBJ_LIST)
	$(AR) $(ARFLAGS) $(OUTDIR)/$@ $(OBJ_LIST) 

