#
# Makefile for Mediatek device drivers.
#

# general options# include kernel config
include $(O)/.config

ifeq ($(CONFIG_ARM),y)
    CHECKSTACK_ARCH = arm
endif
ifeq ($(CONFIG_ARM64),y)
    CHECKSTACK_ARCH = aarch64
endif

IOMMUDBG_KO_STACKUSAGE_FILE=iommudbg_stackUsage.txt

.PHONY: all $PWD clean bsp checkstack

clean:
	@find -L \
		\( -name '*.[oas]' -o -name '*.ko' -o -name '.*.cmd' \
		-o -name '*.ko.*' \
		-o -name '.*.d' -o -name '.*.tmp' -o -name '*.mod.c' -o -name '*.mod'\
		-o -name '*.symtypes' -o -name 'modules.order' \
		-o -name modules.builtin -o -name '.tmp_*.o.*' \
		-o -name '*.gcno' -o -name 'Module.symvers' \) -type f -print | xargs rm -f
	@find -L \( -name '.tmp_versions' -o -name 'bsp' \) -print | xargs rm -rf {}

iommudbgkover:
	@echo "LIBCODE:Kernel IOMMU DBG KO" > lib_version.txt
	@echo "LIBVER:2.$(shell date +%s)" >> lib_version.txt
	@echo "BUILDHASH:$(shell perl scripts/get_last_commit.pl $(shell dirname $(shell pwd)))" >> lib_version.txt
	@echo "BUILDDATE:$(shell date +%Y%m%d%H)" >> lib_version.txt
	@find ./bsp -name '*.ko' -type f | xargs -i $(CROSS_COMPILE)objcopy --remove-section .mmodule_version {}
	@find ./bsp -name '*.ko' -type f | xargs -i $(CROSS_COMPILE)objcopy --add-section .mmodule_version=./lib_version.txt {}

	@rm lib_version.txt

bsp:
	@rm -rf bsp
	@mkdir -p bsp
	@mkdir -p bsp/include
	@cp ../include/common/*.h bsp/include
	@find . -name "*.ko" | xargs -i bash -c "cp -rf {} bsp"
	@make iommudbgkover

checkstack:
	@find ./drv -name '*.ko' -type f | xargs -i $(CROSS_COMPILE)objdump -D {} | scripts/checkstack.pl $(CHECKSTACK_ARCH) > $(IOMMUDBG_KO_STACKUSAGE_FILE)
	@scripts/checkstack.sh $(IOMMUDBG_KO_STACKUSAGE_FILE)
