# SPDX-License-Identifier: GPL-2.0-only
#
# Makefile for KLINUX Unit Test Framework

obj-$(CONFIG_KLINUX_UNIT_TEST) += klinux_unit_test.o

ifneq ($(CONFIG_KLINUX_UNIT_TEST),)
ifeq ($(CONFIG_KLINUX_UNIT_TEST),m)
$(error CONFIG_KLINUX_UNIT_TEST cannot be built as a module. Please set it to 'y' instead.)
endif

# Rust test runner (avoid symbol conflicts)
# Save old binary hash before rebuild, restore timestamp if unchanged to avoid
# unnecessary vmlinux re-link.
ifdef CONFIG_RUST
RUST_TEST_RUNNER := rust_test_runner.o
$(obj)/$(RUST_TEST_RUNNER): $(obj)/rust_test_runner.rs FORCE
	$(Q)old_hash=""; \
	if [ -f $@ ]; then old_hash=$$(md5sum $@ | cut -d' ' -f1); fi; \
	cd $(obj) && SRCARCH=$(SRCARCH) OBJTREE=$(objtree) ./build_rust_runner.sh; \
	if [ -n "$$old_hash" ] && [ -f $@ ]; then \
		new_hash=$$(md5sum $@ | cut -d' ' -f1); \
		if [ "$$old_hash" = "$$new_hash" ]; then touch -r $(obj)/rust_test_runner.rs $@; fi; \
	fi

obj-$(CONFIG_KLINUX_UNIT_TEST) += $(RUST_TEST_RUNNER)
endif
endif
