53 lines
1.4 KiB
Makefile
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
|