-
Notifications
You must be signed in to change notification settings - Fork 31
/
Makefile
executable file
·173 lines (133 loc) · 4.61 KB
/
Makefile
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
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
MODNAME = esp8089-spi
# By default, we try to compile the modules for the currently running
# kernel. But it's the first approximation, as we will re-read the
# version from the kernel sources.
KVERS_UNAME ?= $(shell uname -r)
KVERS_ARCH ?= $(shell arch)
# KBUILD is the path to the Linux kernel build tree. It is usually the
# same as the kernel source tree, except when the kernel was compiled in
# a separate directory.
KBUILD ?= $(shell readlink -f /lib/modules/$(KVERS_UNAME)/build)
ifeq (,$(KBUILD))
$(error Kernel build tree not found - please set KBUILD to configured kernel)
endif
KCONFIG := $(KBUILD)/.config
ifeq (,$(wildcard $(KCONFIG)))
$(error No .config found in $(KBUILD), please set KBUILD to configured kernel)
endif
ifneq (,$(wildcard $(KBUILD)/include/linux/version.h))
ifneq (,$(wildcard $(KBUILD)/include/generated/uapi/linux/version.h))
$(error Multiple copies of version.h found, please clean your build tree)
endif
endif
# Kernel Makefile doesn't always know the exact kernel version, so we
# get it from the kernel headers instead and pass it to make.
VERSION_H := $(KBUILD)/include/generated/utsrelease.h
ifeq (,$(wildcard $(VERSION_H)))
VERSION_H := $(KBUILD)/include/linux/utsrelease.h
endif
ifeq (,$(wildcard $(VERSION_H)))
VERSION_H := $(KBUILD)/include/linux/version.h
endif
ifeq (,$(wildcard $(VERSION_H)))
$(error Please run 'make modules_prepare' in $(KBUILD))
endif
KVERS := $(shell sed -ne 's/"//g;s/^\#define UTS_RELEASE //p' $(VERSION_H))
ifeq (,$(KVERS))
$(error Cannot find UTS_RELEASE in $(VERSION_H), please report)
endif
INST_DIR = /lib/modules/$(KVERS)/misc
SRC_DIR=$(shell pwd)
include $(KCONFIG)
#Shouldn't fail when not having dkms.conf in directory
#(usually when installing a built package on other system)
-include dkms.conf
PACKAGE_NAME := $(patsubst "%",%,$(PACKAGE_NAME))
PACKAGE_VERSION := $(patsubst "%",%,$(PACKAGE_VERSION))
DKMS_PATH := /usr/src/$(PACKAGE_NAME)-$(PACKAGE_VERSION)/
#EXTRA_CFLAGS += -DDEBUG -DSIP_DEBUG -DDEBUG_FS
EXTRA_CFLAGS += -DFAST_TX_STATUS -DRX_SENDUP_SYNC
EXTRA_CFLAGS += -DKERNEL_IV_WAR -DSIF_DSR_WAR
EXTRA_CFLAGS += -DHAS_INIT_DATA
EXTRA_CFLAGS += -DP2P_CONCURRENT
EXTRA_CFLAGS += -DHAS_FW
EXTRA_CFLAGS += -DESP_ACK_INTERRUPT
EXTRA_CFLAGS += -DESP_USE_SPI
EXTRA_CFLAGS += -DREGISTER_SPI_BOARD_INFO
ifdef ANDROID
EXTRA_CFLAGS += -DANDROID
endif
ifdef P2P_CONCURRENT
EXTRA_CFLAGS += -DP2P_CONCURRENT
endif
ifdef TEST_MODE
EXTRA_CFLAGS += -DTEST_MODE
endif
OBJS = esp_debug.o sdio_sif_esp.o spi_sif_esp.o esp_io.o \
esp_file.o esp_main.o esp_sip.o esp_ext.o esp_ctrl.o \
esp_mac80211.o esp_debug.o esp_utils.o esp_pm.o testmode.o
all: config_check modules
MODULE := $(MODNAME).ko
obj-m := $(MODNAME).o
$(MODNAME)-objs := $(OBJS)
config_check:
@if [ -z "$(CONFIG_WIRELESS_EXT)$(CONFIG_NET_RADIO)" ]; then \
echo; echo; \
echo "*** WARNING: This kernel lacks wireless extensions."; \
echo "Wireless drivers will not work properly."; \
echo; echo; \
fi
# Taken from here:
# http://www.xkyle.com/building-linux-packages-for-kernel-drivers/
dkms:
$(MAKE) config_check
echo $(DKMS_PATH)
echo "$(KVERS_UNAME)"
mkdir -p $(DKMS_PATH)
cp -r . $(DKMS_PATH)
-rm -rf $(DKMS_PATH)/.git
-rm $(DKMS_PATH)/.gitignore
-rm $(DKMS_PATH)/*deb
dkms add -m $(PACKAGE_NAME) -v $(PACKAGE_VERSION)
dkms build -m $(PACKAGE_NAME) -v $(PACKAGE_VERSION)
dkmsdeb: dkms
dkms mkdsc -m $(PACKAGE_NAME) -v $(PACKAGE_VERSION) --source-only
dkms mkdeb -m $(PACKAGE_NAME) -v $(PACKAGE_VERSION) --source-only
cp /var/lib/dkms/$(PACKAGE_NAME)/$(PACKAGE_VERSION)/deb/*.deb .
cleandkms:
-dkms uninstall $(PACKAGE_NAME)/$(PACKAGE_VERSION)
-dkms remove $(PACKAGE_NAME)/$(PACKAGE_VERSION) --all
-rm -rf /var/lib/dkms/$(PACKAGE_NAME)/$(PACKAGE_VERSION) $(DKMS_PATH)
modules:
$(MAKE) -C $(KBUILD) M=$(SRC_DIR)
$(MODULE):
$(MAKE) modules
clean:
rm -f *.o *.ko .*.cmd *.mod.c *.symvers modules.order
rm -rf .tmp_versions
install: config_check $(MODULE)
@/sbin/modinfo $(MODULE) | grep -q "^vermagic: *$(KVERS) " || \
{ echo "$(MODULE)" is not for Linux $(KVERS); exit 1; }
mkdir -p -m 755 $(DESTDIR)$(INST_DIR)
install -m 0644 $(MODULE) $(DESTDIR)$(INST_DIR)
ifndef DESTDIR
-/sbin/depmod -a $(KVERS)
endif
uninstall:
rm -f $(DESTDIR)$(INST_DIR)/$(MODULE)
ifndef DESTDIR
-/sbin/depmod -a $(KVERS)
endif
reinstall:
rm -f $(DESTDIR)$(INST_DIR)/$(MODULE)
ifndef DESTDIR
-/sbin/depmod -a $(KVERS)
endif
rm -f *.o *.ko .*.cmd *.mod.c *.symvers modules.order
rm -rf .tmp_versions
mkdir -p -m 755 $(DESTDIR)$(INST_DIR); $(MAKE) $(MODULE)
install -m 0644 $(MODULE) $(DESTDIR)$(INST_DIR)
ifndef DESTDIR
-/sbin/depmod -a $(KVERS)
endif
.PHONY: all modules clean install config_check reinstall uninstall