# --- ... ---
export PWD := $(shell pwd)
KERNEL_SRC ?= /lib/modules/$(shell uname -r)/build
CONFIG_H := $(PWD)/.autogen_config.h
CUR_VER := $(shell uname -r)

# --- .... ---

all: build

build: $(CONFIG_H)
	@echo "--- Starting Kernel Module Build for $(CUR_VER) ---"
	$(MAKE) -C $(KERNEL_SRC) M=$(PWD) modules

$(CONFIG_H): FORCE
	@if [ ! -f $(CONFIG_H) ] || [ "$$(grep 'Kernel:' $(CONFIG_H) | cut -d: -f2 | tr -d ' */')" != "$(CUR_VER)" ]; then \
		echo "--- [Notice] Environment change detected or config missing. ---"; \
		chmod +x $(PWD)/conftest.sh; \
		echo "/* Kernel: $(CUR_VER) */" > $(CONFIG_H); \
		echo "/* Generated by conftest.sh */" >> $(CONFIG_H); \
		$(PWD)/conftest.sh $(KERNEL_SRC) | while read -r flag; do \
			if [ ! -z "$$flag" ]; then \
				echo "#define $${flag#-D} 1" >> $(CONFIG_H); \
			fi; \
		done; \
		echo "--- Configuration Saved to $(CONFIG_H) ---"; \
	fi

obj-m += xr17v35x.o

ccflags-y += -I$(src) -include $(src)/.autogen_config.h

clean:
	$(MAKE) -C $(KERNEL_SRC) M=$(PWD) clean
	rm -f $(CONFIG_H)

FORCE:

.PHONY: all build clean FORCE
