obj-m	:= best.o
best-objs := 	source/BEST_PCIe.o 		\
		source/BEST_dma_device.o 	\
		source/BEST_mailbox_device.o 	\
		source/BEST_direct_tetramm.o  	\
		source/BEST_direct_predac.o  	\
		source/BEST_flash.o		\
		source/system_id/system_id.o

ccflags-y += -I$(src)
ccflags-y += -fcompare-debug-second -Wno-format

KERNELVER ?= $(shell uname -r)
KERNELDIR ?= /lib/modules/$(KERNELVER)/build
PWD := $(shell pwd)
# Lazy (= not :=) so they are read when a recipe runs, i.e. after the
# version-files prerequisite has regenerated them. .version and .buildnumber are
# generated by get_version.py and are not kept in git.
VERSION = $(shell cat .version 2>/dev/null)
BUILDNR = $(shell cat .buildnumber 2>/dev/null)
DOXYGEN ?= doxygen
DOXYDIR := docs

all: default

default:
	$(MAKE) -C ${KERNELDIR} M=$(PWD) modules 

doxy: version-files
	$(DOXYGEN) Doxyfile
	$(MAKE) -C $(DOXYDIR)/latex
	@echo "Documentation: $(DOXYDIR)/html/index.html"
	@echo "PDF:           $(DOXYDIR)/latex/refman.pdf"
	cp $(DOXYDIR)/latex/refman.pdf bestdriver-dkms_Manual_$(VERSION).$(BUILDNR).pdf

version-files:
	@if [ -f get_version.py ]; then \
		python3 get_version.py > /dev/null; \
	elif [ ! -f .version ] || [ ! -f .buildnumber ]; then \
		echo "Error: no get_version.py and no .version/.buildnumber" >&2; exit 1; \
	fi

clean:
	rm -f *.o *.ko *.mod *.mod.* *.order *.symvers Module.symvers \
	      .*.cmd .module-common.o
	rm -rf .tmp_versions
	rm -f source/*.o source/.*.cmd
	rm -f source/system_id/*.o source/system_id/.*.cmd
	rm -rf $(DOXYDIR)/latex
	rm -rf $(DOXYDIR)/html
	rm -rf bestdriver-dkms_Manual_*.pdf

.PHONY: all default doxy clean version-files
