OBJ_DIR := $(PWD)
KERNELVER := $(uname -r)
KERNELDIR := /lib/modules/$(shell uname -r)/build

include $(KERNELDIR)/.config

obj-m += mtgpu.o

mtgpu-objs := src/allocmem.o                    \
	src/event.o                             \
	src/fwload.o                            \
	src/handle_idr.o                        \
	src/interrupt_support.o                 \
	src/km_apphint.o                        \
	src/module_common.o                     \
	src/osconnection_server.o               \
	src/osfunc.o                            \
	src/osmmap_stub.o                       \
	src/pci_support.o                       \
	src/physmem_dmabuf.o                    \
	src/physmem_osmem_linux.o               \
	src/physmem_test.o                      \
	src/pmr_os.o                            \
	src/pvr_bridge_k.o                      \
	src/pvr_buffer_sync.o                   \
	src/pvr_counting_timeline.o             \
	src/pvr_debug.o                         \
	src/pvr_debugfs.o                       \
	src/pvr_drm.o                           \
	src/pvr_fence.o                         \
	src/pvr_gputrace.o                      \
	src/pvr_platform_drv.o                  \
	src/pvr_sw_fence.o                      \
	src/pvr_sync_file.o                     \
	src/pvr_sync_ioctl_common.o             \
	src/pvr_sync_ioctl_drm.o                \
	src/trace_events.o                      \
	objs/$(ARCH)/mtgpu_core.o

mtgpu-objs-$(CONFIG_RISCV) += src/osfunc_riscv.o
mtgpu-objs-$(CONFIG_ARM) += src/osfunc_arm.o
mtgpu-objs-$(CONFIG_ARM64) += src/osfunc_arm64.o
mtgpu-objs-$(CONFIG_LOONGARCH) += src/osfunc_loongarch.o
mtgpu-objs-$(CONFIG_X86) += src/osfunc_x86.o

mtgpu-objs += $(mtgpu-objs-y)

ccflags-y := -D__linux__ -include config_kernel.h
ccflags-y += -I$(OBJ_DIR)/inc
ccflags-y += -I$(OBJ_DIR)/inc/hwdefs_volcanic
ccflags-y += -I$(OBJ_DIR)/inc/hwdefs_volcanic/km

all: core
	make  -C $(KERNELDIR)   M=$(OBJ_DIR) modules
	@echo "make all end"

core:
	@cp $(OBJ_DIR)/objs/$(ARCH)/mtgpu_core.o_binary $(OBJ_DIR)/objs/$(ARCH)/mtgpu_core.o

clean:
	make  -C $(KERNELDIR)   M=$(OBJ_DIR) clean
	@echo "make clean end"
