# SPDX-License-Identifier: GPL-2.0
# SPDX-FileCopyrightText: Copyright (C) 2025 Advanced Micro Devices, Inc.
include $(CURDIR)/linux_ver.mk

KSRC ?= /lib/modules/$(shell uname -r)/build
KCFLAGS = "-I$(CURDIR)/include"

ALL = pds_core pds_fwctl pds-vfio-pci

export KSRC
ifneq (,$(wildcard $(CURDIR)/kernel-gcc.sh))
	MAKE := . $(CURDIR)/kernel-gcc.sh && $(MAKE)
endif

define KBUILD_RULE
	$(MAKE) -C $(KSRC) KCFLAGS=$(KCFLAGS) LLVM=$(LLVM)
endef

all:	$(ALL)
-include dist.mk

pds_core:
	$(KBUILD_RULE) M=$(CURDIR)/core "CONFIG_PDS_CORE=m"

pds-vfio-pci: pds_core
	$(KBUILD_RULE) M=$(CURDIR)/vfio "CONFIG_PDS_VFIO_PCI=m" KBUILD_EXTRA_SYMBOLS=$(CURDIR)/core/Module.symvers

pds_vdpa: pds_core
	$(KBUILD_RULE) M=$(CURDIR)/vdpa "CONFIG_PDS_VDPA=m" KBUILD_EXTRA_SYMBOLS=$(CURDIR)/core/Module.symvers

pds_fwctl: pds_core
	$(KBUILD_RULE) M=$(CURDIR)/fwctl "CONFIG_FWCTL_PDS=m" KBUILD_EXTRA_SYMBOLS=$(CURDIR)/core/Module.symvers

clean_core:
	$(MAKE) -C $(KSRC) M=$(CURDIR)/core clean

clean_vdpa:
	$(MAKE) -C $(KSRC) M=$(CURDIR)/vdpa clean

clean_fwctl:
	$(MAKE) -C $(KSRC) M=$(CURDIR)/fwctl clean

clean_vfio:
	$(MAKE) -C $(KSRC) M=$(CURDIR)/vfio clean

clean: clean_core clean_vdpa clean_vfio

.PHONY: all pds_core pds-vfio-pci pds_vdpa pds_fwctl \
	clean clean_core clean_vdpa clean_vfio clean_fwctl
