# ------------------------------------------------------------------------------------------------------------
# Copyright (c) 2026 Huawei Technologies Co., Ltd.
# This program is free software, you can redistribute it and/or modify it under the terms and conditions of
# CANN Open Software License Agreement Version 2.0 (the "License").
# Please refer to the License for details. You may not use this file except in compliance with the License.
# THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR IMPLIED,
# INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, MERCHANTABILITY, OR FITNESS FOR A PARTICULAR PURPOSE.
# See LICENSE in the root of the software repository for the full text of the License.
# ------------------------------------------------------------------------------------------------------------
obj-m   += drv_dvpp_cmdlist.o

drv_dvpp_cmdlist-objs := dvpp_cmdlist_init.o \
                         decoder/dvpp_decoder.o \
                         decoder/tlv/dvpp_tlv_decoder.o \
                         decoder/vpu/dvpp_vpu_decoder.o \
                         cmdlist/dvpp_cmdlist.o \
                         cmdlist/vpc/init/init_mod.o \
                         cmdlist/vpc/register/vpc_cmdlist.o \
                         cmdlist/vpc/architecture/arch_v1xx/drv_arch_comm.o \
                         reg/vpc/arch_v1xx/vpc_reg.o \
                         cmdlist/jpegd/drv/milan/drv_jpegd_comm.o \
                         cmdlist/jpegd/jpegd_cmdlist.o \
                         cmdlist/jpegd/drv/drv_jpegd.o \
                         proc/dvpp_cmdlist_proc.o \
                         context/dvpp_cmdlist_context.o \
                         base/dvpp_cmdlist_util.o \
                         cmdlist/jpegd/drv/drv_jpegd.o \
                         cmdlist/jpege/drv/drv_jpege_comm.o \
                         cmdlist/jpege/jpege_cmdlist.o \
                         cmdlist/jpege/drv/milan/drv_jpege.o \
                         main/comm/dvpp_sqe_update_comm.o \
                         main/comm/dvpp_sqe_para_check.o \
                         memory/args_mem_pool.o \
                         memory/mem_allocater.o \
                         memory/dvpp_mem_allocater_comm.o \
                         memory/dvpp_mem_allocater_args.o \
                         fops/dvpp_cmdlist_ioctl.o \
                         cmdlist/vpc/init/init.o

drv_dvpp_cmdlist-objs += main/host/dvpp_sqe_update_host.o
drv_dvpp_cmdlist-objs += main/host/dvpp_sqe_update_phy.o
drv_dvpp_cmdlist-objs += main/host/mem_ctrl/dvpp_dma_mem_ctrl.o
drv_dvpp_cmdlist-objs += main/host/mem_ctrl/dvpp_svm_mem_ctrl.o
drv_dvpp_cmdlist-objs += main/host/mem_ctrl/dvpp_share_mem_ctrl.o
drv_dvpp_cmdlist-objs += dvpp_pcie_init.o
drv_dvpp_cmdlist-objs += memory/dvpp_mem_allocater_comm_host.o
drv_dvpp_cmdlist-objs += memory/dvpp_mem_allocater_dma.o
drv_dvpp_cmdlist-objs += memory/dma_mem_pool.o


EXTRA_CFLAGS += -DRUN_MODE_ONLINE

EXTRA_CFLAGS += -I$(HIAI_DKMS_DIR)/kernel_adapt/include
EXTRA_CFLAGS += -I$(HIAI_DKMS_DIR)/dev_inc_open/inc
EXTRA_CFLAGS += -I$(HIAI_DKMS_DIR)/svmdrv/common
EXTRA_CFLAGS += -I$(HIAI_DKMS_DIR)/svm/v2/command
EXTRA_CFLAGS += -I$(HIAI_DKMS_DIR)/dev_inc/inc
EXTRA_CFLAGS += -I$(HIAI_DKMS_DIR)/vmng/phy/vascend_drv_stub
EXTRA_CFLAGS += -I$(HIAI_DKMS_DIR)/vmng/phy/host
EXTRA_CFLAGS += -I$(HIAI_DKMS_DIR)/kernel_adapt/include

EXTRA_CFLAGS += -Wno-error=incompatible-pointer-types
EXTRA_CFLAGS += -Wno-unused-parameter
EXTRA_CFLAGS += -fstack-protector-all
EXTRA_CFLAGS += -fno-common
EXTRA_CFLAGS += -fstrong-eval-order
EXTRA_CFLAGS += -fsigned-char
EXTRA_CFLAGS += -pipe
EXTRA_CFLAGS += -O2
EXTRA_CFLAGS += -Wtrampolines
EXTRA_CFLAGS += -Wswitch-default
EXTRA_CFLAGS += -Wvla
EXTRA_CFLAGS += -Wextra
EXTRA_CFLAGS += -Wformat=2
EXTRA_CFLAGS += -Wfloat-equal
EXTRA_CFLAGS += -Wdate-time
EXTRA_CFLAGS += -Wshadow
EXTRA_CFLAGS += -Wunused
EXTRA_CFLAGS += -Wstrict-prototypes
EXTRA_CFLAGS += -isystem $(shell $(CC) -print-file-name=include)

EXTRA_CFLAGS += -I$(HIAI_DKMS_DIR)/libc_sec/include \
                -I$(HIAI_DKMS_DIR)/ts_agent/inc \
                -I$(HIAI_DKMS_DIR)/inc/driver

EXTRA_CFLAGS += -I$(LOCAL_PATH)/main/host
EXTRA_CFLAGS += -I$(LOCAL_PATH)/main/host/mem_ctrl

EXTRA_CFLAGS += -I$(LOCAL_PATH)/reg/vpc/arch_v1xx \
                -I$(LOCAL_PATH)/reg/jpegd/milan \
                -I$(LOCAL_PATH)/reg/jpege/milan \
                -I$(LOCAL_PATH)/cmdlist/vpc/init \
                -I$(LOCAL_PATH)/main/comm \
                -I$(LOCAL_PATH)/main/inc \
                -I$(LOCAL_PATH)/decoder \
                -I$(LOCAL_PATH)/decoder/tlv \
                -I$(LOCAL_PATH)/decoder/vpu \
                -I$(LOCAL_PATH)/decoder/type \
                -I$(LOCAL_PATH)/base \
                -I$(LOCAL_PATH)/cmdlist \
                -I$(LOCAL_PATH)/cmdlist/vpc/register \
                -I$(LOCAL_PATH)/cmdlist/vpc/architecture/arch_v1xx \
                -I$(LOCAL_PATH)/cmdlist/jpegd \
                -I$(LOCAL_PATH)/cmdlist/jpegd/drv \
                -I$(LOCAL_PATH)/cmdlist/jpegd/drv/milan \
                -I$(LOCAL_PATH)/cmdlist/jpege \
                -I$(LOCAL_PATH)/cmdlist/jpege/drv \
                -I$(LOCAL_PATH)/cmdlist/jpege/drv/milan \
                -I$(LOCAL_PATH)/fops \
                -I$(LOCAL_PATH)/proc \
                -I$(LOCAL_PATH)/context \
                -I$(LOCAL_PATH)/memory \
                -I$(LOCAL_PATH)/vmng \
                -I$(HIAI_DKMS_DIR)/dvpp_cmdlist \
                -I$(HIAI_DKMS_DIR)/dvpp_cmdlist/include

ifeq ($(TARGET_CHIP_ID), hi1980b)
drv_dvpp_cmdlist-objs += vmng/dvpp_vcm_host.o
drv_dvpp_cmdlist-objs += vmng/dvpp_vmng.o
drv_dvpp_cmdlist-objs += main/host/dvpp_sqe_update_vir.o
drv_dvpp_cmdlist-objs += main/host/mem_ctrl/dvpp_share_mem_ctrl.o
drv_dvpp_cmdlist-objs += cmdlist/vpc/architecture/arch_v1xx/v100/drv_vpc_mlv1r1.o
EXTRA_CFLAGS += -I$(LOCAL_PATH)/cmdlist/vpc/architecture/arch_v1xx/v100
EXTRA_CFLAGS += -DSUPPORT_VIR_MACH
endif

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