aboutsummaryrefslogtreecommitdiff
path: root/driver/Makefile
blob: 8abe2c7e0a36662b68c0e66109e2c195f6614adc (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
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

# 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 $<