blob: f9cb3594807ecfd445b8d08df63f96f82f4e9598 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
|
RELEASE := $(shell uname -r)
KERNEL := /lib/modules/$(RELEASE)/build
# PWD doesn't have to be defined as it's inherited from the current environment
# MAKE shouldn't be defined as it's special in GNU make
# the names of these variables are required by the kernel's (imo weird) build
# system, see [kbuild-obj-var] and [kbuild-module-makefile] in ../readme.md
obj-m += lork.o
lork-y += main.o
lork-y += platform.o
# utility
ifneq ($(shell id -u),0)
AS_ROOT := sudo -n
endif
.PHONY: FORCE
lork.ko: FORCE
$(MAKE) -C $(KERNEL) M=$(PWD) modules
all: lork.ko FORCE
# the generated compile_commands.json needs to be edited to point to the kernel
# folder as working directory because the include paths are relative
compile_commands.json:
compiledb -o $@.tmp make -Bn
jq --arg dir $(KERNEL) '.[].directory = $$dir' $@.tmp > $@
$(RM) $@.tmp
poke: lork.ko FORCE
$(AS_ROOT) insmod $<
$(AS_ROOT) rmmod $<
|