copied Makefile from hw5
This commit is contained in:
56
project/modules/Makefile
Executable file → Normal file
56
project/modules/Makefile
Executable file → Normal file
@@ -1,29 +1,43 @@
|
|||||||
# Makefile
|
PWD = $(realpath $(shell pwd))
|
||||||
CC=gcc
|
MODULE_NAME ?= $(shell basename "$(PWD)")
|
||||||
CFLAGS = -W -Wall -pedantic -g -std=gnu99 -c
|
|
||||||
LDFLAGS = -static
|
|
||||||
RM = rm -f
|
|
||||||
|
|
||||||
TARGET = motor
|
ifneq ($(KERNELRELEASE),)
|
||||||
OBJECTS = gpio.o
|
# call from kernel build system
|
||||||
HEADERS = $(OBJECTS:.o=.h)
|
obj-m := $(MODULE_NAME).o
|
||||||
SOURCES = $(TARGET).c $(OBJECTS:.o=.c)
|
else
|
||||||
|
ARCH ?= aarch64
|
||||||
|
KERNEL_ARCH ?= arm64
|
||||||
|
CROSS_COMPILE ?= $(ARCH)-linux-gnu-
|
||||||
|
KVER ?= $(shell ls "$(PWD)/../../kernel" | grep 'linux-' | sed 's/linux-//')
|
||||||
|
KERNELDIR ?= $(PWD)/../../kernel/linux-$(KVER)
|
||||||
|
MODDESTDIR ?= /lib/modules/$(KVER)/kernel/drivers/syso
|
||||||
|
|
||||||
|
default:
|
||||||
|
ARCH=$(KERNEL_ARCH) CROSS_COMPILE=$(CROSS_COMPILE) MODULE_NAME=$(MODULE_NAME) $(MAKE) -C $(KERNELDIR) M=$(PWD) modules
|
||||||
|
endif
|
||||||
|
|
||||||
|
test: $(MODULE_NAME).ko.test
|
||||||
|
|
||||||
|
$(MODULE_NAME).ko.test: $(MODULE_NAME).test.o
|
||||||
|
$(CROSS_COMPILE)$(CC) $(LDFLAGS) -pthread $^ -o $@
|
||||||
|
|
||||||
%.o: %.c
|
%.o: %.c
|
||||||
$(CC) $(CFLAGS) $< -o $@
|
$(CROSS_COMPILE)$(CC) $(CPPFLAGS) $(CFLAGS) -c $< -o $@
|
||||||
|
|
||||||
.PHONY: all clean
|
|
||||||
|
|
||||||
all: $(TARGET)
|
|
||||||
|
|
||||||
clean:
|
clean:
|
||||||
$(RM) $(TARGET) $(TARGET).o $(OBJECTS) depend
|
rm -rf *.ko *.o *.mod.c *~ core .depend .*.cmd .tmp_versions *.symvers *.order
|
||||||
|
|
||||||
depend: $(SOURCES) $(HEADERS)
|
depend .depend dep:
|
||||||
$(CC) $(CPPFLAGS) -MM $(SOURCES) > $@
|
$(CROSS_COMPILE)$(CC) $(CFLAGS) -M *.c > .depend
|
||||||
|
|
||||||
$(TARGET): $(TARGET).o $(OBJECTS)
|
install:
|
||||||
$(CC) $(LDFLAGS) $^ -o $@
|
install -p -m 644 $(MODULE_NAME).ko $(MODDESTDIR)
|
||||||
$(RM) depend $(TARGET).o $(OBJECTS)
|
/sbin/depmod -a ${KVER}
|
||||||
|
|
||||||
include depend
|
uninstall:
|
||||||
|
rm -f $(MODDESTDIR)/$(MODULE_NAME).ko
|
||||||
|
/sbin/depmod -a ${KVER}
|
||||||
|
|
||||||
|
ifeq (.depend,$(wildcard .depend))
|
||||||
|
include .depend
|
||||||
|
endif
|
||||||
|
|||||||
Reference in New Issue
Block a user