2026-06-18 22:25:42 +02:00

53 lines
1.4 KiB
Makefile

# Out-of-tree build for the IEC listener kernel module.
# Build ON the Pi (or cross-compile) against the running kernel's headers:
# sudo apt install raspberrypi-kernel-headers
# make # builds iec_listener.ko
# sudo make load # insmod + show /dev/iec0
# sudo make unload
#
# See docs/kernel-notes.md for headers/pinning details.
MODULE_NAME := iec_listener
obj-m += $(MODULE_NAME).o
# iec_listener.o is built from iec_listener.c; the other headers are includes.
KDIR ?= /lib/modules/$(shell uname -r)/build
PWD := $(shell pwd)
# overlay
DTS := dts/iec-overlay.dts
DTBO := dts/iec-overlay.dtbo
.PHONY: all clean load unload overlay install docker-build docker-clean
all:
$(MAKE) -C $(KDIR) M=$(PWD) modules
# Cross-build in an emulated arm64 container (for compiling off the Pi).
# Override e.g. KERNEL_VERSION=... HEADERS_PKG=... ; see build-in-docker.sh.
docker-build:
./build-in-docker.sh
docker-clean:
./build-in-docker.sh clean
clean:
$(MAKE) -C $(KDIR) M=$(PWD) clean
rm -f $(DTBO)
# Compile the device-tree overlay (pin reservation / pulls).
overlay: $(DTBO)
$(DTBO): $(DTS)
dtc -@ -I dts -O dtb -o $@ $<
load: all
sudo insmod $(MODULE_NAME).ko $(if $(ADDRESS),address=$(ADDRESS),)
@echo "loaded; device:" && ls -l /dev/iec0
unload:
sudo rmmod $(MODULE_NAME)
install: all
$(MAKE) -C $(KDIR) M=$(PWD) modules_install
sudo depmod -a