#LINT_OBJS = $(subst .cpp,.lob,$(SRCS))
LINT_OBJS = $(patsubst ../../%,$(INTERMEDIATEDIR)/%.lob,$(SRCS))

ifeq ($(CROSS), )
	LINT_PLAT = $(LINT_NAME)
else
	LINT_PLAT = $(CROSS)
endif

LINT_ROOT_PATH=../flint
LINT_INCLUDE_MACROS=$(LINT_ROOT_PATH)/Include_Macros.lnt
LINT_TEMP_FILE=$(LINT_ROOT_PATH)/temp

LINT_OPT=-i$(LINT_ROOT_PATH) -i$(LINT_ROOT_PATH)/LintConfigs -i$(LINT_ROOT_PATH)/LintConfigs/$(LINT_PLAT) -i$(LINT_ROOT_PATH)/LintShareConfigs
LINT_STD=std.lnt
LINT_OUT_FILE=$(LINT_ROOT_PATH)/lint.txt

flint_help:
	@echo "    flint            : lint all files"
	@echo "    flint_clean       : clean all flexelint objects"
	@echo "    flint_[DIR]_clean : clean flexelint objects in [DIR]"
	@echo "                       such as flint_gui_clean,will clean objects in GUI/"
	@echo "                       now support GUI/ NetClient/ Functions/"
.PHONY : flint_help

flint : flint_init result_clear $(LINT_OBJS)

$(LINT_OBJS) : $(INTERMEDIATEDIR)/%.lob: ../../%
	@mkdir -p $(dir $@)
	@flexelint -u $(LINT_OPT) $(LINT_STD) $<  -oo[$@] >> $(LINT_OUT_FILE)
	
result_clear:
	rm $(LINT_OUT_FILE) -f
	touch $(LINT_OUT_FILE)

flint_init:
#生成头文件包含路径、宏定义
	@echo $(patsubst -I`pwd`/%,-I%,$(strip $(filter -D% -I%, $(CFLAGS))) ) > $(LINT_TEMP_FILE)
	@cat $(LINT_TEMP_FILE) | tr -s "\040" '\n' > $(LINT_INCLUDE_MACROS)
	@rm -f $(LINT_TEMP_FILE)
	@echo ---------------------------
	@echo LINT_OPT=$(LINT_OPT)
	@echo LINT_STD=$(LINT_STD)
	@echo LINT_OUT_FILE=$(LINT_OUT_FILE)
	@echo ---------------------------
flint_clean :
	find $(INTERMEDIATEDIR)/ -type f -name '*.lob' -print | xargs rm -f
flint_gui_clean :
	find $(INTERMEDIATEDIR)/GUI -type f -name '*.lob' -print | xargs rm -f
flint_netclient_clean :
	find $(INTERMEDIATEDIR)/NetClient -type f -name '*.lob' -print | xargs rm -f
flint_functions_clean :
	find $(INTERMEDIATEDIR)/Functions -type f -name '*.lob' -print | xargs rm -f
.PHONY :flint_init flint_clean flint_gui_clean flint_netclient_clean flint_function_clean