TESTMODS_DIR := $(realpath $(dir $(abspath $(lastword $(MAKEFILE_LIST)))))

# Build the modules against the kernel tree these tests are part of, or
# its O= build directory, when that tree is configured and built; fall
# back to the running kernel's build tree.
KSRC_TREE := $(abspath $(TESTMODS_DIR)/../../../../..)
KOUT := $(or $(O),$(KBUILD_OUTPUT))
ifeq ($(KOUT),)
KDIR_TREE := $(KSRC_TREE)
else ifneq (,$(filter /%,$(KOUT)))
KDIR_TREE := $(abspath $(KOUT))
else
KDIR_TREE := $(abspath $(KSRC_TREE)/$(KOUT))
endif
ifneq (,$(wildcard $(KDIR_TREE)/include/config/auto.conf))
ifneq (,$(wildcard $(KDIR_TREE)/Module.symvers))
KDIR ?= $(KDIR_TREE)
endif
endif
KDIR ?= /lib/modules/$(shell uname -r)/build

obj-m += test_klp_atomic_replace.o \
	test_klp_callbacks_busy.o \
	test_klp_callbacks_demo.o \
	test_klp_callbacks_demo2.o \
	test_klp_callbacks_mod.o \
	test_klp_kprobe.o \
	test_klp_livepatch.o \
	test_klp_shadow_vars.o \
	test_klp_state.o \
	test_klp_state2.o \
	test_klp_state3.o \
	test_klp_syscall.o

modules:
	$(Q)$(MAKE) -C $(KDIR) modules KBUILD_EXTMOD=$(TESTMODS_DIR)

clean:
	$(Q)$(MAKE) -C $(KDIR) clean KBUILD_EXTMOD=$(TESTMODS_DIR)
