SHELL	:= /bin/sh
OUTPUT_MAKE_DEBUG ?= FALSE

ifeq ($(OUTPUT_MAKE_DEBUG), TRUE)
DIS_BUILD_WARRING 	?= FALSE
EN_MAKE_MSG			?= TRUE
MLOG				:= 
else
DIS_BUILD_WARRING 	?= TRUE
EN_MAKE_MSG			?= FALSE
MLOG				:= @
endif

ifeq ($(EN_MAKE_MSG), TRUE)
MAKE_FLAGS			:=
else
MAKE_FLAGS			:= -s
endif

ifneq ($(OPT), clean)
ifneq ($(OPT), install)
MAKE_FLAGS				+= -j$(shell cat /proc/cpuinfo | grep processor | wc -l)
endif
endif

.PHONY : demo conntrack netlink trace

all: demo conntrack netlink trace

ifeq ($(OPT), install)
#$(shell `find ../release -name "*.zip" -delete`) 
endif

ifeq ($(OPT), clean)
#
endif

$(shell chmod +x ./build_env.sh)
$(shell test -e ./Common/compile.h || ./build_env.sh)
	
demo:
ifeq ($(OPT), clean)
	$(MLOG)make $(MAKE_FLAGS) -C Product/build -f module.demo.Makefile cleanall MLOG=$(MLOG) MAKE_TARGET=demo
	$(MLOG)make $(MAKE_FLAGS) -C Product/build -f user.demo.Makefile cleanall MLOG=$(MLOG) MAKE_TARGET=demo
else ifeq ($(OPT), install)
	$(MLOG)make $(MAKE_FLAGS) -C Product/build -f module.demo.Makefile install DIR=$(DIR) MLOG=$(MLOG) MAKE_TARGET=demo
	$(MLOG)make $(MAKE_FLAGS) -C Product/build -f user.demo.Makefile install DIR=$(DIR) MLOG=$(MLOG) MAKE_TARGET=demo
else
	$(MLOG)make all $(MAKE_FLAGS) -C Product/build -f module.demo.Makefile MLOG=$(MLOG) DISABLE_WARRING=$(DIS_BUILD_WARRING) MAKE_TARGET=demo
	$(MLOG)make all $(MAKE_FLAGS) -C Product/build -f user.demo.Makefile MLOG=$(MLOG) DISABLE_WARRING=$(DIS_BUILD_WARRING) MAKE_TARGET=demo
endif	

conntrack:
ifeq ($(OPT), clean)
	$(MLOG)make $(MAKE_FLAGS) -C Platform/build -f module.conntrack.api.Makefile cleanall MLOG=$(MLOG) MAKE_TARGET=conntrack
	$(MLOG)make $(MAKE_FLAGS) -C Platform/build -f module.conntrack.demoA.Makefile cleanall MLOG=$(MLOG) MAKE_TARGET=demoA
	$(MLOG)make $(MAKE_FLAGS) -C Platform/build -f module.conntrack.test.Makefile cleanall MLOG=$(MLOG) MAKE_TARGET=test
else ifeq ($(OPT), install)
	$(MLOG)make $(MAKE_FLAGS) -C Platform/build -f module.conntrack.api.Makefile install DIR=$(DIR) MLOG=$(MLOG) MAKE_TARGET=conntrack
	$(MLOG)make $(MAKE_FLAGS) -C Platform/build -f module.conntrack.demoA.Makefile install DIR=$(DIR) MLOG=$(MLOG) MAKE_TARGET=demoA
	$(MLOG)make $(MAKE_FLAGS) -C Platform/build -f module.conntrack.test.Makefile install DIR=$(DIR) MLOG=$(MLOG) MAKE_TARGET=conntrack
else
	$(MLOG)make all $(MAKE_FLAGS) -C Platform/build -f module.conntrack.api.Makefile MLOG=$(MLOG) DISABLE_WARRING=$(DIS_BUILD_WARRING) MAKE_TARGET=conntrack
	$(MLOG)make all $(MAKE_FLAGS) -C Platform/build -f module.conntrack.demoA.Makefile MLOG=$(MLOG) DISABLE_WARRING=$(DIS_BUILD_WARRING) MAKE_TARGET=demoA
	$(MLOG)make all $(MAKE_FLAGS) -C Platform/build -f module.conntrack.test.Makefile MLOG=$(MLOG) DISABLE_WARRING=$(DIS_BUILD_WARRING) MAKE_TARGET=test
endif

netlink:
ifeq ($(OPT), clean)
	$(MLOG)make $(MAKE_FLAGS) -C Platform/build -f module.netlink_api.Makefile cleanall MLOG=$(MLOG) MAKE_TARGET=netlink_api
	$(MLOG)make $(MAKE_FLAGS) -C Platform/build -f module.cfgrcv.Makefile cleanall MLOG=$(MLOG) MAKE_TARGET=cfgrcv
	$(MLOG)make $(MAKE_FLAGS) -C Platform/build -f module.pdelivery.Makefile cleanall MLOG=$(MLOG) MAKE_TARGET=pdeliv	
	$(MLOG)make $(MAKE_FLAGS) -C Platform/build -f user.cfg2kernel.Makefile cleanall MLOG=$(MLOG) MAKE_TARGET=cfg2kernel	
	$(MLOG)make $(MAKE_FLAGS) -C Platform/build -f user.pdeliv_u.Makefile cleanall MLOG=$(MLOG) MAKE_TARGET=pdeliv_u
	$(MLOG)make $(MAKE_FLAGS) -C Platform/build -f user.netlink_uapi.Makefile cleanall MLOG=$(MLOG) MAKE_TARGET=netlink_uapi
else ifeq ($(OPT), install)
	$(MLOG)make $(MAKE_FLAGS) -C Platform/build -f module.netlink_api.Makefile install DIR=$(DIR) MLOG=$(MLOG) MAKE_TARGET=netlink_api
	$(MLOG)make $(MAKE_FLAGS) -C Platform/build -f module.cfgrcv.Makefile install DIR=$(DIR) MLOG=$(MLOG) MAKE_TARGET=cfgrcv
	$(MLOG)make $(MAKE_FLAGS) -C Platform/build -f module.pdelivery.Makefile install DIR=$(DIR) MLOG=$(MLOG) MAKE_TARGET=pdeliv
	$(MLOG)make $(MAKE_FLAGS) -C Platform/build -f user.netlink_uapi.Makefile install DIR=$(DIR) MLOG=$(MLOG) MAKE_TARGET=netlink_uapi
	$(MLOG)make $(MAKE_FLAGS) -C Platform/build -f user.cfg2kernel.Makefile install DIR=$(DIR) MLOG=$(MLOG) MAKE_TARGET=cfg2kernel	
	$(MLOG)make $(MAKE_FLAGS) -C Platform/build -f user.pdeliv_u.Makefile install DIR=$(DIR) MLOG=$(MLOG) MAKE_TARGET=pdeliv_u
else
	$(MLOG)make all $(MAKE_FLAGS) -C Platform/build -f module.netlink_api.Makefile MLOG=$(MLOG) DISABLE_WARRING=$(DIS_BUILD_WARRING) MAKE_TARGET=netlink_api
	$(MLOG)make all $(MAKE_FLAGS) -C Platform/build -f module.cfgrcv.Makefile MLOG=$(MLOG) DISABLE_WARRING=$(DIS_BUILD_WARRING) MAKE_TARGET=cfgrcv
	$(MLOG)make all $(MAKE_FLAGS) -C Platform/build -f module.pdelivery.Makefile MLOG=$(MLOG) DISABLE_WARRING=$(DIS_BUILD_WARRING) MAKE_TARGET=pdeliv
	$(MLOG)make all $(MAKE_FLAGS) -C Platform/build -f user.netlink_uapi.Makefile MLOG=$(MLOG) DISABLE_WARRING=$(DIS_BUILD_WARRING) MAKE_TARGET=netlink_uapi	
	$(MLOG)make all $(MAKE_FLAGS) -C Platform/build -f user.cfg2kernel.Makefile MLOG=$(MLOG) DISABLE_WARRING=$(DIS_BUILD_WARRING) MAKE_TARGET=cfg2kernel	
	$(MLOG)make all $(MAKE_FLAGS) -C Platform/build -f user.pdeliv_u.Makefile MLOG=$(MLOG) DISABLE_WARRING=$(DIS_BUILD_WARRING) MAKE_TARGET=pdeliv_u
endif

trace:
ifeq ($(OPT), clean)	
	$(MLOG)make $(MAKE_FLAGS) -C Platform/build -f module.trace_relay.Makefile cleanall MLOG=$(MLOG) MAKE_TARGET=trace-relay
	$(MLOG)make $(MAKE_FLAGS) -C Platform/build -f user.trace.api.Makefile cleanall MLOG=$(MLOG) MAKE_TARGET=trace-api
	$(MLOG)make $(MAKE_FLAGS) -C Platform/build -f user.trace.test.Makefile cleanall MLOG=$(MLOG) MAKE_TARGET=trace-test
else ifeq ($(OPT), install)
	$(MLOG)make $(MAKE_FLAGS) -C Platform/build -f module.trace_relay.Makefile install DIR=$(DIR) MLOG=$(MLOG) MAKE_TARGET=trace-relay
	$(MLOG)make $(MAKE_FLAGS) -C Platform/build -f user.trace.api.Makefile install DIR=$(DIR) MLOG=$(MLOG) MAKE_TARGET=trace-api	
	$(MLOG)make $(MAKE_FLAGS) -C Platform/build -f user.trace.test.Makefile install DIR=$(DIR) MLOG=$(MLOG) MAKE_TARGET=trace-test
else
	$(MLOG)make all $(MAKE_FLAGS) -C Platform/build -f module.trace_relay.Makefile MLOG=$(MLOG) DISABLE_WARRING=$(DIS_BUILD_WARRING) MAKE_TARGET=trace-relay
	$(MLOG)make all $(MAKE_FLAGS) -C Platform/build -f user.trace.api.Makefile MLOG=$(MLOG) DISABLE_WARRING=$(DIS_BUILD_WARRING) MAKE_TARGET=trace-api	
	$(MLOG)make all $(MAKE_FLAGS) -C Platform/build -f user.trace.test.Makefile MLOG=$(MLOG) DISABLE_WARRING=$(DIS_BUILD_WARRING) MAKE_TARGET=trace-test
endif