ifeq ($(TARGET_BUILD_TYPE),debug)
    EXTRA_CFLAGS += -DCFG_BUILD_DEBUG
endif

ifeq ($(ENABLE_ASAN),true)
    EXTRA_CFLAGS += -DCFG_FEATURE_ENABLE_ASAN
endif

ifeq ($(SLT),true)
    EXTRA_CFLAGS += -DCFG_PLATFORM_SLT
endif

ifeq ($(ENABLE_EQUIP),true)
    EXTRA_CFLAGS += -DCFG_PLATFORM_EQUIP
endif

ifeq ($(ENABLE_RC),true)
    EXTRA_CFLAGS += -DCFG_PLATFORM_RC
endif

ifneq ($(NOT_SUPPORT_SP), y)
    EXTRA_CFLAGS += -fstack-protector-all
endif

ccflags-y += -Wall -Werror -Wtrampolines $(WDATE_TIME) -Wfloat-equal -Wvla -Wundef -funsigned-char -Wformat=2 -Wstack-usage=2048 -Wcast-align -Wextra
ccflags-y += -Wno-unused-parameter -Wno-missing-field-initializers -Wno-sign-compare -Wno-format-nonliteral

EXTRA_CFLAGS += -isystem $(shell $(CC) -print-file-name=include)
EXTRA_CFLAGS += -Iinclude/linux

EXTRA_CFLAGS += -DCFG_FEATURE_KA_ALLOC_INTERFACE
ifeq ($(TOP_DIR),)
    #for dkms
    SVM_KERNEL_DIR := $(HIAI_DKMS_DIR)/svm/kern/master
    SVM_USER_DIR := $(HIAI_DKMS_DIR)/svm/user

    EXTRA_CFLAGS += -I$(HIAI_DKMS_DIR)/dev_inc_open/inc
    EXTRA_CFLAGS += -I$(HIAI_DKMS_DIR)/dev_inc/inc
    EXTRA_CFLAGS += -I$(HIAI_DKMS_DIR)/dev_inc/inc/comm
    EXTRA_CFLAGS += -I$(HIAI_DKMS_DIR)/dev_inc/inc/pbl
    EXTRA_CFLAGS += -I$(HIAI_DKMS_DIR)/libc_sec/include
    EXTRA_CFLAGS += -I$(HIAI_DKMS_DIR)/inc/driver
    EXTRA_CFLAGS += -I$(HIAI_DKMS_DIR)/kernel_adapt/include/
    EXTRA_CFLAGS += -I$(HIAI_DKMS_DIR)/ubdevshm

    ifneq ($(filter $(TARGET_CHIP_ID), hi1980d),)
        SUPPORT_PMA_UB := true
    endif
else
    SVM_KERNEL_DIR := $(DRIVER_KERNEL_DIR)/src/svm/v3
    SVM_USER_DIR := $(DRIVER_USER_DIR)/src/svm/v3

    EXTRA_CFLAGS += -I$(DRIVER_KERNEL_DIR)/inc
    EXTRA_CFLAGS += -I$(DRIVER_KERNEL_DIR)/inc/comm
    EXTRA_CFLAGS += -I$(DRIVER_KERNEL_DIR)/inc/pbl
    EXTRA_CFLAGS += -I$(DRIVER_KERNEL_DIR)/src/kernel_adapt/include
    EXTRA_CFLAGS += -I$(TOP_DIR)/abl/libc_sec/include
    EXTRA_CFLAGS += -I$(TOP_DIR)/inc/driver
    EXTRA_CFLAGS += -I$(TOP_DIR)/ubengine/ssapi/kernelspace/include/ubdevshm

    ifneq ($(filter $(PRODUCT), ascend950),)
        SUPPORT_PMA_UB := true
    endif
endif

EXTRA_CFLAGS += -DDRV_HOST
ifeq ($(ENABLE_UBE), true)
    EXTRA_CFLAGS += -DCFG_FEATURE_UB
endif

EXTRA_CFLAGS += -I${SVM_USER_DIR}/inc/def/
EXTRA_CFLAGS += -I${SVM_USER_DIR}/command/msg/
EXTRA_CFLAGS += -I${SVM_USER_DIR}/urma_adapt/inc/

EXTRA_CFLAGS += -I${SVM_KERNEL_DIR}/command/msg
EXTRA_CFLAGS += -I${SVM_KERNEL_DIR}/command/ioctl

EXTRA_CFLAGS += -I${SVM_KERNEL_DIR}/inc/
EXTRA_CFLAGS += -I${SVM_KERNEL_DIR}/inc/framework/
EXTRA_CFLAGS += -I${SVM_KERNEL_DIR}/inc/kern_lib/
EXTRA_CFLAGS += -I${SVM_KERNEL_DIR}/inc/share/

SVM_KERNEL_MASTER_SRCS := $(subst $(SVM_KERNEL_DIR)/,,$(wildcard $(SVM_KERNEL_DIR)/framework/*.c))
SVM_KERNEL_MASTER_SRCS += $(subst $(SVM_KERNEL_DIR)/,,$(wildcard $(SVM_KERNEL_DIR)/host_dev/*.c))
SVM_KERNEL_MASTER_SRCS += $(subst $(SVM_KERNEL_DIR)/,,$(wildcard $(SVM_KERNEL_DIR)/dbi/core/*.c))
SVM_KERNEL_MASTER_SRCS += $(subst $(SVM_KERNEL_DIR)/,,$(wildcard $(SVM_KERNEL_DIR)/um_handle/*.c))
SVM_KERNEL_MASTER_SRCS += $(subst $(SVM_KERNEL_DIR)/,,$(wildcard $(SVM_KERNEL_DIR)/um_handle_adapt/host/*.c))
SVM_KERNEL_MASTER_SRCS += $(subst $(SVM_KERNEL_DIR)/,,$(wildcard $(SVM_KERNEL_DIR)/cmd_handle/*.c))
SVM_KERNEL_MASTER_SRCS += $(subst $(SVM_KERNEL_DIR)/,,$(wildcard $(SVM_KERNEL_DIR)/kern_lib/*.c))
SVM_KERNEL_MASTER_SRCS += $(subst $(SVM_KERNEL_DIR)/,,$(wildcard $(SVM_KERNEL_DIR)/kern_lib/normal_page/*.c))
SVM_KERNEL_MASTER_SRCS += $(subst $(SVM_KERNEL_DIR)/,,$(wildcard $(SVM_KERNEL_DIR)/kern_lib/compound_large_page/*.c))
SVM_KERNEL_MASTER_SRCS += $(subst $(SVM_KERNEL_DIR)/,,$(wildcard $(SVM_KERNEL_DIR)/kmc/*.c))
SVM_KERNEL_MASTER_SRCS += $(subst $(SVM_KERNEL_DIR)/,,$(wildcard $(SVM_KERNEL_DIR)/kmc/h2d/*.c))
SVM_KERNEL_MASTER_SRCS += $(subst $(SVM_KERNEL_DIR)/,,$(wildcard $(SVM_KERNEL_DIR)/mpl/*.c))
SVM_KERNEL_MASTER_SRCS += $(subst $(SVM_KERNEL_DIR)/,,$(wildcard $(SVM_KERNEL_DIR)/share/*.c))
SVM_KERNEL_MASTER_SRCS += $(subst $(SVM_KERNEL_DIR)/,,$(wildcard $(SVM_KERNEL_DIR)/share/smm/*.c))
SVM_KERNEL_MASTER_SRCS += $(subst $(SVM_KERNEL_DIR)/,,$(wildcard $(SVM_KERNEL_DIR)/pmm/*.c))
SVM_KERNEL_MASTER_SRCS += $(subst $(SVM_KERNEL_DIR)/,,$(wildcard $(SVM_KERNEL_DIR)/pmq/*.c))
SVM_KERNEL_MASTER_SRCS += $(subst $(SVM_KERNEL_DIR)/,,$(wildcard $(SVM_KERNEL_DIR)/pmq_adapt/*.c))
SVM_KERNEL_MASTER_SRCS += $(subst $(SVM_KERNEL_DIR)/,,$(wildcard $(SVM_KERNEL_DIR)/pmq_adapt/agent/*.c))
SVM_KERNEL_MASTER_SRCS += $(subst $(SVM_KERNEL_DIR)/,,$(wildcard $(SVM_KERNEL_DIR)/pmq_adapt/agent/host/*.c))
SVM_KERNEL_MASTER_SRCS += $(subst $(SVM_KERNEL_DIR)/,,$(wildcard $(SVM_KERNEL_DIR)/pmq_adapt/client/*.c))
SVM_KERNEL_MASTER_SRCS += $(subst $(SVM_KERNEL_DIR)/,,$(wildcard $(SVM_KERNEL_DIR)/pmq_adapt/client/host/*.c))
SVM_KERNEL_MASTER_SRCS += $(subst $(SVM_KERNEL_DIR)/,,$(wildcard $(SVM_KERNEL_DIR)/memcpy/*.c))
SVM_KERNEL_MASTER_SRCS += $(subst $(SVM_KERNEL_DIR)/,,$(wildcard $(SVM_KERNEL_DIR)/memcpy/async/*.c))
SVM_KERNEL_MASTER_SRCS += $(subst $(SVM_KERNEL_DIR)/,,$(wildcard $(SVM_KERNEL_DIR)/memcpy/copy_ctrl/*.c))
SVM_KERNEL_MASTER_SRCS += $(subst $(SVM_KERNEL_DIR)/,,$(wildcard $(SVM_KERNEL_DIR)/memcpy/dma_desc_ops/*.c))
SVM_KERNEL_MASTER_SRCS += $(subst $(SVM_KERNEL_DIR)/,,$(wildcard $(SVM_KERNEL_DIR)/dma_map/*.c))
SVM_KERNEL_MASTER_SRCS += $(subst $(SVM_KERNEL_DIR)/,,$(wildcard $(SVM_KERNEL_DIR)/pcie_th_adapt/agent/*.c))
SVM_KERNEL_MASTER_SRCS += $(subst $(SVM_KERNEL_DIR)/,,$(wildcard $(SVM_KERNEL_DIR)/smp/*.c))
SVM_KERNEL_MASTER_SRCS += $(subst $(SVM_KERNEL_DIR)/,,$(wildcard $(SVM_KERNEL_DIR)/mwl/*.c))
SVM_KERNEL_MASTER_SRCS += $(subst $(SVM_KERNEL_DIR)/,,$(wildcard $(SVM_KERNEL_DIR)/casm/*.c))
SVM_KERNEL_MASTER_SRCS += $(subst $(SVM_KERNEL_DIR)/,,$(wildcard $(SVM_KERNEL_DIR)/mms/*.c))
ifeq ($(ENABLE_UBE), true)
    SVM_KERNEL_MASTER_SRCS += $(subst $(SVM_KERNEL_DIR)/,,$(wildcard $(SVM_KERNEL_DIR)/ubmm/*.c))
endif
SVM_KERNEL_MASTER_SRCS += $(subst $(SVM_KERNEL_DIR)/,,$(wildcard $(SVM_KERNEL_DIR)/user_mem_show/*.c))
SVM_KERNEL_MASTER_SRCS += $(subst $(SVM_KERNEL_DIR)/,,$(wildcard $(SVM_KERNEL_DIR)/casm_adapt/cross_server/*.c))
SVM_KERNEL_MASTER_SRCS += $(subst $(SVM_KERNEL_DIR)/,,$(wildcard $(SVM_KERNEL_DIR)/casm_adapt/ubmem/*.c))
SVM_KERNEL_MASTER_SRCS += $(subst $(SVM_KERNEL_DIR)/,,$(wildcard $(SVM_KERNEL_DIR)/ubmem_adapt/client/*.c))
SVM_KERNEL_MASTER_SRCS += $(subst $(SVM_KERNEL_DIR)/,,$(wildcard $(SVM_KERNEL_DIR)/share_log/*.c))
SVM_KERNEL_MASTER_SRCS += $(subst $(SVM_KERNEL_DIR)/,,$(wildcard $(SVM_KERNEL_DIR)/ksvmm/*.c))
SVM_KERNEL_MASTER_SRCS += $(subst $(SVM_KERNEL_DIR)/,,$(wildcard $(SVM_KERNEL_DIR)/pma/*.c))

ifeq ($(SUPPORT_PMA_UB), true)
    SVM_KERNEL_MASTER_SRCS += $(subst $(SVM_KERNEL_DIR)/,,$(wildcard $(SVM_KERNEL_DIR)/pma_ub/*.c))
endif

EXTRA_CFLAGS += -I$(SVM_KERNEL_DIR)/framework/
EXTRA_CFLAGS += -I$(SVM_KERNEL_DIR)/host_dev/
EXTRA_CFLAGS += -I$(SVM_KERNEL_DIR)/dbi/
EXTRA_CFLAGS += -I$(SVM_KERNEL_DIR)/dbi/core/
EXTRA_CFLAGS += -I$(SVM_KERNEL_DIR)/um_hanlde/
EXTRA_CFLAGS += -I$(SVM_KERNEL_DIR)/um_hanlde_adapt/host/
EXTRA_CFLAGS += -I$(SVM_KERNEL_DIR)/cmd_hanlde/
EXTRA_CFLAGS += -I$(SVM_KERNEL_DIR)/kern_lib/
EXTRA_CFLAGS += -I$(SVM_KERNEL_DIR)/kern_lib/normal_page/
EXTRA_CFLAGS += -I$(SVM_KERNEL_DIR)/kern_lib/compound_large_page/
EXTRA_CFLAGS += -I$(SVM_KERNEL_DIR)/kmc/
EXTRA_CFLAGS += -I$(SVM_KERNEL_DIR)/kmc/h2d/
EXTRA_CFLAGS += -I$(SVM_KERNEL_DIR)/mpl/
EXTRA_CFLAGS += -I$(SVM_KERNEL_DIR)/share/
EXTRA_CFLAGS += -I$(SVM_KERNEL_DIR)/share/smm/
EXTRA_CFLAGS += -I$(SVM_KERNEL_DIR)/pmm/
EXTRA_CFLAGS += -I$(SVM_KERNEL_DIR)/pmq/
EXTRA_CFLAGS += -I$(SVM_KERNEL_DIR)/pmq_adapt/
EXTRA_CFLAGS += -I$(SVM_KERNEL_DIR)/pmq_adapt/agent/
EXTRA_CFLAGS += -I$(SVM_KERNEL_DIR)/pmq_adapt/agent/host/
EXTRA_CFLAGS += -I$(SVM_KERNEL_DIR)/pmq_adapt/client/
EXTRA_CFLAGS += -I$(SVM_KERNEL_DIR)/pmq_adapt/client/host/
EXTRA_CFLAGS += -I$(SVM_KERNEL_DIR)/memcpy/
EXTRA_CFLAGS += -I$(SVM_KERNEL_DIR)/memcpy/async/
EXTRA_CFLAGS += -I$(SVM_KERNEL_DIR)/memcpy/copy_ctrl/
EXTRA_CFLAGS += -I$(SVM_KERNEL_DIR)/memcpy/dma_desc_ops/
EXTRA_CFLAGS += -I$(SVM_KERNEL_DIR)/dma_map/
EXTRA_CFLAGS += -I$(SVM_KERNEL_DIR)/pcie_th_adapt/
EXTRA_CFLAGS += -I$(SVM_KERNEL_DIR)/pcie_th_adapt/agent/
EXTRA_CFLAGS += -I$(SVM_KERNEL_DIR)/smp/
EXTRA_CFLAGS += -I$(SVM_KERNEL_DIR)/mwl/
EXTRA_CFLAGS += -I$(SVM_KERNEL_DIR)/casm/
EXTRA_CFLAGS += -I$(SVM_KERNEL_DIR)/mms/
ifeq ($(ENABLE_UBE), true)
    EXTRA_CFLAGS += -I$(SVM_KERNEL_DIR)/ubmm/
endif
EXTRA_CFLAGS += -I$(SVM_KERNEL_DIR)/user_mem_show/
EXTRA_CFLAGS += -I$(SVM_KERNEL_DIR)/casm_adapt/cross_server/
EXTRA_CFLAGS += -I$(SVM_KERNEL_DIR)/casm_adapt/ubmem/
EXTRA_CFLAGS += -I$(SVM_KERNEL_DIR)/ubmem_adapt/
EXTRA_CFLAGS += -I$(SVM_KERNEL_DIR)/ubmem_adapt/client/
EXTRA_CFLAGS += -I$(SVM_KERNEL_DIR)/share_log/
EXTRA_CFLAGS += -I$(SVM_KERNEL_DIR)/ksvmm/
EXTRA_CFLAGS += -I$(SVM_KERNEL_DIR)/pma/
EXTRA_CFLAGS += -I$(SVM_KERNEL_DIR)/pma_ub/

EXTRA_CFLAGS += -DCFG_FEATURE_SHARE_LOG
#Print info and warning logs to memory, not to printk
EXTRA_CFLAGS += -DCFG_FEATURE_HOST_LOG

asdrv_svm-objs := $(patsubst %.c,%.o,$(SVM_KERNEL_MASTER_SRCS))

obj-m := asdrv_svm.o

ifeq ($(SUPPORT_PMA_UB), true)
    DEPENDS += ubdevshm
endif

