##########function for get files###############################################
define tsch-get-all-c-files
$(filter-out $(addsuffix %,$(3)), \
  $(filter-out $(addprefix %,$(2)), \
    $(filter %.c,$(shell find $(1) |sort ))))
endef


###############################################################################
# local variables
###############################################################################
$(warning CONFIG_SOCT_CHIP_REVERSION = $(CONFIG_SOCT_CHIP_REVERSION))
$(warning CONFIG_SOCT_CHIP_TYPE = $(CONFIG_SOCT_CHIP_TYPE))

ifneq ($(filter $(CONFIG_SOCT_CHIP_TYPE), "wudangstick" "shaolingun"),)
    ifeq ($(CONFIG_SOCT_CHIP_REVERSION),)
        CHIP_NAME := wudangstickes
        EXTRA_CFLAGS += -DNPU_PLATFORM_VENDOR_ES
    else
        ifneq ($(filter $(CONFIG_SOCT_CHIP_REVERSION), "wudangstick_c" "wudangstick_d" "shaolingun_c" "shaolingun_d"),)
            CHIP_NAME := wudangstickcs
        else
            EXTRA_CFLAGS += -DNPU_PLATFORM_VENDOR_ES
            CHIP_NAME := wudangstickes
        endif
    endif
else
    CHIP_NAME := CJ109V100
endif
$(warning CHIP_NAME = $(CHIP_NAME))
DRV_DIR := $(srctree)/drivers/drv
CHIP_PLATFORM := stb
TSFW_DIR := $(DRV_DIR)/npu/src/tsfw
#TSCH_KO_DEPEND_LIBA_NAME := #libsec.a

EXCL_MODE ?= bs
$(info "TSFW_DIR = $(TSFW_DIR)") 
$(info "DRV_DIR = $(DRV_DIR)") 

## header search path
EXTRA_CFLAGS += -I$(DRV_DIR)/ioctl_inc/npu \
                -I$(DRV_DIR)/ioctl_inc/generic \
                -I$(DRV_DIR)/ioctl_inc/common \
                -Idrivers/drv/ext_inc/i2c \
                -Idrivers/drv/ioctl_inc/i2c \
                -I$(DRV_DIR)/ext_inc/osal \
                -I$(DRV_DIR)/ext_inc/common \
                -Idrivers/drv/ext_inc/mailbox \
                -I$(DRV_DIR)/npu/src/include \
                -I$(DRV_DIR)/npu/src/include/tsch \
                -I$(TSFW_DIR)/komodule \
                -I$(TSFW_DIR)/komodule/firmware/inc \
                -I$(TSFW_DIR)/komodule/firmware/inc/hwts \
                -I$(TSFW_DIR)/komodule/firmware/feature/inc \
                -I$(TSFW_DIR)/komodule/firmware/utils/inc  \
                -I$(TSFW_DIR)/soc_interface \
                -I$(TSFW_DIR)/product/include\
                -I$(TSFW_DIR)/product/$(CHIP_PLATFORM)/comm/include \
                -I$(TSFW_DIR)/product/$(CHIP_PLATFORM)/arch/$(CHIP_NAME)/include \
                -I$(TSFW_DIR)/product/$(CHIP_PLATFORM)/arch/include \
                -Idrivers/drv/ext_inc/dftevent

LOCAL_CFLAGS += -DAICPU_ON_OS -D__ARM__ -D__linux__ko__ -DTIMEOUT_TEST
EXTRA_CFLAGS += $(CONFIG_SOCT_KMOD_CFLAGS) $(LOCAL_CFLAGS)
stackp-flag := -fstack-protector-all
EXTRA_CFLAGS += $(stackp-flag)

ifeq ($(CONFIG_SOCT_TEE_SUPPORT),y)
EXTRA_CFLAGS += -DNPU_POWER_ON_DOWN_SUPPORT
#$(MODNAME)-y +=   drv_npu_tee.o
endif

ifeq ($(CONFIG_SOCT_TEE_SUPPORT),y)
EXTRA_CFLAGS += -DNPU_POWER_ON_DOWN_SUPPORT
endif

MODNAME     := soc_npu_tsfw
ifeq ($(CONFIG_SOCT_DRV_BUILDIN),y)
obj-y += $(MODNAME).o
else
obj-m += $(MODNAME).o
endif

## src files
SRC_FILES    :=

##################### tsch_feature files ######################################
SRC_DIRS     := $(TSFW_DIR)/komodule/firmware/feature/src
IGNORE_FILES :=
IGNORE_DIRS  := $(TSFW_DIR)/komodule/firmware/feature/src/$(EXCL_MODE)
SRC_FILES    += $(call tsch-get-all-c-files,$(SRC_DIRS),$(IGNORE_FILES),$(IGNORE_DIRS))

##################### tsch_driver files ########################################
SRC_DIRS     := $(TSFW_DIR)/komodule/firmware/driver/core
IGNORE_FILES :=
IGNORE_DIRS  := $(TSFW_DIR)/komodule/firmware/driver/core/$(EXCL_MODE)
SRC_FILES    += $(call tsch-get-all-c-files,$(SRC_DIRS),$(IGNORE_FILES),$(IGNORE_DIRS))

##################### tsch_utils files and include #############################
SRC_DIRS     := $(TSFW_DIR)/komodule/firmware/utils/src
IGNORE_FILES :=
IGNORE_DIRS  :=
SRC_FILES    += $(call tsch-get-all-c-files,$(SRC_DIRS),$(IGNORE_FILES),$(IGNORE_DIRS))

##################### product files and include #############################
SRC_DIRS     := $(TSFW_DIR)/product/$(CHIP_PLATFORM)/comm/src \
				$(TSFW_DIR)/product/$(CHIP_PLATFORM)/arch/$(CHIP_NAME)/hal
IGNORE_FILES :=
IGNORE_DIRS  :=
SRC_FILES    += $(call tsch-get-all-c-files,$(SRC_DIRS),$(IGNORE_FILES),$(IGNORE_DIRS))

SRC_FILES    += $(TSFW_DIR)/komodule/ko_entry.c



# filter .C files
TSCH_C_SRC_FILES := $(filter %.c,$(SRC_FILES))
TSCH_C_OBJECTS   := $(patsubst $(TSFW_DIR)/%.c,%.o,$(TSCH_C_SRC_FILES))


# filter .S files
TSCH_S_SRC_FILES := $(filter %.S,$(SRC_FILES))
TSCH_S_OBJECTS   := $(patsubst $(TSFW_DIR)/%.S,%.o,$(TSCH_S_SRC_FILES))

$(MODNAME)-objs-y := $(TSCH_C_OBJECTS) $(TSCH_S_OBJECTS)
$(MODNAME)-objs := $($(MODNAME)-objs-y)
###############################################################################
