ifneq ($(KERNELRELEASE),)
    OFA_SYMVERS_DIR := $(shell sh $(HIAI_DKMS_DIR)/ndr/find_ofed_symvers.sh $(shell uname -r) $(shell uname -m))
    OFA_SYMVERS_FILE := $(OFA_SYMVERS_DIR)/Module.symvers
    export OFA_SYMVERS_DIR
    export OFA_SYMVERS_FILE

    ifneq ($(OFA_SYMVERS_DIR),)
        ifneq ($(wildcard $(OFA_SYMVERS_FILE)),)
            KBUILD_EXTRA_SYMBOLS += $(OFA_SYMVERS_FILE)
        endif
    endif

    # start
    subdir-ccflags-y := $(call cc-disable-warning, int-conversion)
    ifeq ($(Driver_Install_Mode),vnpu_guest)
        obj-m := pcie_host/
        obj-m += hdc_host/
        obj-m += pcievnic_host/
        obj-m += dms/dtm/
        obj-m += dms/smf/
        obj-m += dms/
        obj-m += rms/trs_drv/chan/
        obj-m += rms/trs_drv/trs_core/
        obj-m += rms/trs_drv/id_allocator/
        obj-m += rms/trs_drv/lba/near/sriov_sec_enhanced/adapt/
        #obj-m += rms/trs_drv/cdqm/host/
        obj-m += svmdrv/pmaster/
        obj-m += drv_davinci_intf_host/
        obj-m += soft_fault/
        obj-m += event_sched/host/
        obj-m += queue/host/
        obj-m += vmng_host_stub/
        obj-m += ts_agent/src/
        obj-m += dvpp_cmdlist/vdrv/
        obj-m += dbl/soc_platform/near/
        obj-m += dbl/soc_resmng/
        obj-m += vmng_vpc_drv/
        obj-m += libc_sec/
        obj-m += vascend_drv_stub/
        obj-m += dbl/dev_urd/
        obj-m += dbl/runenv_config/
        obj-m += dp_proc_mng/pmaster/
        obj-m += dms/udis/
    else
        obj-m := pcie_host/
        obj-m += hdc_host/
        obj-m += pcievnic_host/
        obj-m += dms/dtm/
        obj-m += dms/smf/
        obj-m += dms/
        obj-m += libc_sec/
        obj-m += rms/trs_drv/chan/
        obj-m += rms/trs_drv/trs_core/
        obj-m += rms/trs_drv/id_allocator/
        obj-m += rms/trs_drv/lba/near/sia/adapt/
        obj-m += rms/trs_drv/lba/near/sriov_sec_enhanced/agent/
        #obj-m += rms/trs_drv/cdqm/host/
        obj-m += rms/trs_drv/shr_id/
        obj-m += rms/trs_drv/trs_stars/stars_v1/near/
        obj-m += svmdrv/pmaster/
        obj-m += drv_davinci_intf_host/
        obj-m += soft_fault/
        obj-m += event_sched/host/
        obj-m += queue/host/
        obj-m += vmng_host/
        obj-m += vascend_drv_stub/
        obj-m += ts_agent/
        obj-m += vascend_drv/
        obj-m += dbl/comm_algorithm/
        obj-m += dbl/dev_identity/
        obj-m += dbl/runenv_config/
        obj-m += dvpp_cmdlist/
        obj-m += dp_proc_mng/pmaster/
        obj-m += dbl/soc_platform/near/
        obj-m += dbl/soc_resmng/
        obj-m += vmng_vpc_drv/
        obj-m += xsmem/dc/xsmem_host/
        obj-m += dbl/dev_urd/
        obj-m += dms/udis/
        obj-m += ndr/
        obj-m += debug/
        obj-m += alarm_mng_drv/kernel/
    endif
    obj-m += logdrv/host/
    obj-m += dbl/uda/
    obj-m += dbl/kernel_adapt/
    obj-m += kernel_adapt/
    # end
else
    KERNEL_UNAME := $(shell uname -r)
    PWD := $(shell pwd)

    DAVINCI_HIAI_DKMS := y
    HIAI_DKMS_DIR := $(shell pwd)

    export DAVINCI_HIAI_DKMS
    export HIAI_DKMS_DIR

    DKMS_JOBS := $(shell grep -c ^processor /proc/cpuinfo 2>/dev/null)
    ifeq ($(strip $(DKMS_JOBS)),$(filter $(DKMS_JOBS), 0))
        DKMS_JOBS := 1
    else
        DKMS_JOBS := $(shell expr $(DKMS_JOBS) / 2)
        ifeq ($(DKMS_JOBS),0) # if logic cpu-nums is 0 or 1.
            DKMS_JOBS := 1
        endif
    endif

    # Adaptive kernel
    DKMS_EXTRA_CFLAGS := "-isystem $(shell $(CC) -print-file-name=include)"

all:
	$(MAKE) --jobs=$(DKMS_JOBS) -C /lib/modules/$(KERNEL_UNAME)/build M=$(PWD) CFLAGS_MODULE=${DKMS_EXTRA_CFLAGS} KBUILD_MODPOST_WARN=1 modules

clean:
	$(MAKE) --jobs=$(DKMS_JOBS) -C /lib/modules/$(KERNEL_UNAME)/build M=$(PWD) clean

endif
