OpenWrt – Blame information for rev 3
?pathlinks?
Rev | Author | Line No. | Line |
---|---|---|---|
1 | office | 1 | # |
2 | # Copyright (C) 2006-2015 OpenWrt.org |
||
3 | # |
||
4 | # This is free software, licensed under the GNU General Public License v2. |
||
5 | # See /LICENSE for more information. |
||
6 | # |
||
7 | |||
8 | ifneq ($(filter check,$(MAKECMDGOALS)),) |
||
9 | CHECK:=1 |
||
10 | DUMP:=1 |
||
11 | endif |
||
12 | |||
13 | ifneq ($(SOURCE_DATE_EPOCH),) |
||
14 | ifndef DUMP |
||
15 | KBUILD_BUILD_TIMESTAMP:=$(shell perl -e 'print scalar gmtime($(SOURCE_DATE_EPOCH))') |
||
16 | endif |
||
17 | endif |
||
18 | |||
19 | ifeq ($(__target_inc),) |
||
20 | ifndef CHECK |
||
21 | include $(INCLUDE_DIR)/target.mk |
||
22 | endif |
||
23 | endif |
||
24 | |||
25 | ifeq ($(DUMP),1) |
||
26 | KERNEL?=<KERNEL> |
||
27 | BOARD?=<BOARD> |
||
28 | LINUX_VERSION?=<LINUX_VERSION> |
||
29 | LINUX_VERMAGIC?=<LINUX_VERMAGIC> |
||
30 | else |
||
31 | ifeq ($(CONFIG_EXTERNAL_TOOLCHAIN),) |
||
32 | export GCC_HONOUR_COPTS=s |
||
33 | endif |
||
34 | |||
35 | LINUX_KMOD_SUFFIX=ko |
||
36 | |||
37 | ifneq (,$(findstring uml,$(BOARD))) |
||
38 | KERNEL_CC?=$(HOSTCC) |
||
39 | KERNEL_CROSS?= |
||
40 | else |
||
41 | KERNEL_CC?=$(TARGET_CC) |
||
42 | KERNEL_CROSS?=$(TARGET_CROSS) |
||
43 | endif |
||
44 | |||
45 | ifeq ($(TARGET_BUILD),1) |
||
46 | PATCH_DIR ?= $(CURDIR)/patches$(if $(wildcard ./patches-$(KERNEL_PATCHVER)),-$(KERNEL_PATCHVER)) |
||
47 | FILES_DIR ?= $(foreach dir,$(wildcard $(CURDIR)/files $(CURDIR)/files-$(KERNEL_PATCHVER)),"$(dir)") |
||
48 | endif |
||
49 | KERNEL_BUILD_DIR ?= $(BUILD_DIR)/linux-$(BOARD)$(if $(SUBTARGET),_$(SUBTARGET)) |
||
50 | LINUX_DIR ?= $(KERNEL_BUILD_DIR)/linux-$(LINUX_VERSION) |
||
51 | LINUX_UAPI_DIR=uapi/ |
||
52 | LINUX_VERMAGIC:=$(strip $(shell cat $(LINUX_DIR)/.vermagic 2>/dev/null)) |
||
53 | LINUX_VERMAGIC:=$(if $(LINUX_VERMAGIC),$(LINUX_VERMAGIC),unknown) |
||
54 | |||
55 | LINUX_UNAME_VERSION:=$(KERNEL_BASE) |
||
56 | ifneq ($(findstring -rc,$(LINUX_VERSION)),) |
||
57 | LINUX_UNAME_VERSION:=$(LINUX_UNAME_VERSION)-$(strip $(lastword $(subst -, ,$(LINUX_VERSION)))) |
||
58 | endif |
||
59 | |||
60 | LINUX_KERNEL:=$(KERNEL_BUILD_DIR)/vmlinux |
||
61 | |||
3 | office | 62 | LINUX_SOURCE:=linux-$(LINUX_VERSION).tar.xz |
63 | TESTING:=$(if $(findstring -rc,$(LINUX_VERSION)),/testing,) |
||
64 | ifeq ($(call qstrip,$(CONFIG_EXTERNAL_KERNEL_TREE))$(call qstrip,$(CONFIG_KERNEL_GIT_CLONE_URI)),) |
||
65 | LINUX_SITE:=@KERNEL/linux/kernel/v$(word 1,$(subst ., ,$(KERNEL_BASE))).x$(TESTING) |
||
1 | office | 66 | else |
67 | LINUX_UNAME_VERSION:=$(strip $(shell cat $(LINUX_DIR)/include/config/kernel.release 2>/dev/null)) |
||
68 | endif |
||
69 | |||
70 | MODULES_SUBDIR:=lib/modules/$(LINUX_UNAME_VERSION) |
||
71 | TARGET_MODULES_DIR:=$(LINUX_TARGET_DIR)/$(MODULES_SUBDIR) |
||
72 | |||
73 | ifneq ($(TARGET_BUILD),1) |
||
74 | PKG_BUILD_DIR ?= $(KERNEL_BUILD_DIR)/$(PKG_NAME)$(if $(PKG_VERSION),-$(PKG_VERSION)) |
||
75 | endif |
||
76 | endif |
||
77 | |||
78 | ifneq (,$(findstring uml,$(BOARD))) |
||
79 | LINUX_KARCH=um |
||
80 | else ifneq (,$(findstring $(ARCH) , aarch64 aarch64_be )) |
||
81 | LINUX_KARCH := arm64 |
||
82 | else ifneq (,$(findstring $(ARCH) , arceb )) |
||
83 | LINUX_KARCH := arc |
||
84 | else ifneq (,$(findstring $(ARCH) , armeb )) |
||
85 | LINUX_KARCH := arm |
||
86 | else ifneq (,$(findstring $(ARCH) , mipsel mips64 mips64el )) |
||
87 | LINUX_KARCH := mips |
||
88 | else ifneq (,$(findstring $(ARCH) , powerpc64 )) |
||
89 | LINUX_KARCH := powerpc |
||
90 | else ifneq (,$(findstring $(ARCH) , sh2 sh3 sh4 )) |
||
91 | LINUX_KARCH := sh |
||
92 | else ifneq (,$(findstring $(ARCH) , i386 x86_64 )) |
||
93 | LINUX_KARCH := x86 |
||
94 | else |
||
95 | LINUX_KARCH := $(ARCH) |
||
96 | endif |
||
97 | |||
98 | KERNEL_MAKE = $(MAKE) $(KERNEL_MAKEOPTS) |
||
99 | |||
3 | office | 100 | KERNEL_MAKE_FLAGS := \ |
1 | office | 101 | HOSTCFLAGS="$(HOST_CFLAGS) -Wall -Wmissing-prototypes -Wstrict-prototypes" \ |
102 | CROSS_COMPILE="$(KERNEL_CROSS)" \ |
||
103 | ARCH="$(LINUX_KARCH)" \ |
||
104 | KBUILD_HAVE_NLS=no \ |
||
105 | KBUILD_BUILD_USER="$(call qstrip,$(CONFIG_KERNEL_BUILD_USER))" \ |
||
106 | KBUILD_BUILD_HOST="$(call qstrip,$(CONFIG_KERNEL_BUILD_DOMAIN))" \ |
||
107 | KBUILD_BUILD_TIMESTAMP="$(KBUILD_BUILD_TIMESTAMP)" \ |
||
108 | KBUILD_BUILD_VERSION="0" \ |
||
109 | HOST_LOADLIBES="-L$(STAGING_DIR_HOST)/lib" \ |
||
110 | CONFIG_SHELL="$(BASH)" \ |
||
111 | $(if $(findstring c,$(OPENWRT_VERBOSE)),V=1,V='') \ |
||
112 | $(if $(PKG_BUILD_ID),LDFLAGS_MODULE=--build-id=0x$(PKG_BUILD_ID)) \ |
||
113 | cmd_syscalls= |
||
114 | |||
115 | ifeq ($(call qstrip,$(CONFIG_EXTERNAL_KERNEL_TREE))$(call qstrip,$(CONFIG_KERNEL_GIT_CLONE_URI)),) |
||
116 | KERNEL_MAKE_FLAGS += \ |
||
117 | KERNELRELEASE=$(LINUX_VERSION) |
||
118 | endif |
||
119 | |||
120 | KERNEL_MAKEOPTS := -C $(LINUX_DIR) $(KERNEL_MAKE_FLAGS) |
||
121 | |||
122 | ifdef CONFIG_USE_SPARSE |
||
123 | KERNEL_MAKEOPTS += C=1 CHECK=$(STAGING_DIR_HOST)/bin/sparse |
||
124 | endif |
||
125 | |||
126 | PKG_EXTMOD_SUBDIRS ?= . |
||
127 | |||
128 | define populate_module_symvers |
||
129 | @mkdir -p $(PKG_INFO_DIR) |
||
130 | cat /dev/null > $(PKG_INFO_DIR)/$(PKG_NAME).symvers; \ |
||
131 | for subdir in $(PKG_EXTMOD_SUBDIRS); do \ |
||
132 | cat $(PKG_INFO_DIR)/*.symvers 2>/dev/null > $(PKG_BUILD_DIR)/$$$$subdir/Module.symvers; \ |
||
133 | done |
||
134 | endef |
||
135 | |||
136 | define collect_module_symvers |
||
137 | for subdir in $(PKG_EXTMOD_SUBDIRS); do \ |
||
138 | grep -F $$$$(readlink -f $(PKG_BUILD_DIR)) $(PKG_BUILD_DIR)/$$$$subdir/Module.symvers >> $(PKG_BUILD_DIR)/Module.symvers.tmp; \ |
||
139 | done; \ |
||
140 | sort -u $(PKG_BUILD_DIR)/Module.symvers.tmp > $(PKG_BUILD_DIR)/Module.symvers; \ |
||
141 | mv $(PKG_BUILD_DIR)/Module.symvers $(PKG_INFO_DIR)/$(PKG_NAME).symvers |
||
142 | endef |
||
143 | |||
144 | define KernelPackage/hooks |
||
145 | ifneq ($(PKG_NAME),kernel) |
||
146 | Hooks/Compile/Pre += populate_module_symvers |
||
147 | Hooks/Compile/Post += collect_module_symvers |
||
148 | endif |
||
149 | define KernelPackage/hooks |
||
150 | endef |
||
151 | endef |
||
152 | |||
153 | define KernelPackage/Defaults |
||
154 | FILES:= |
||
155 | AUTOLOAD:= |
||
156 | MODPARAMS:= |
||
157 | PKGFLAGS+=nonshared |
||
158 | endef |
||
159 | |||
160 | # 1: name |
||
161 | # 2: install prefix |
||
162 | # 3: module priority prefix |
||
163 | # 4: required for boot |
||
164 | # 5: module list |
||
165 | define ModuleAutoLoad |
||
166 | $(if $(5), \ |
||
167 | mkdir -p $(2)/etc/modules.d; \ |
||
168 | ($(foreach mod,$(5), \ |
||
169 | echo "$(mod)$(if $(MODPARAMS.$(mod)), $(MODPARAMS.$(mod)),$(if $(MODPARAMS), $(MODPARAMS)))"; )) > $(2)/etc/modules.d/$(3)$(1); \ |
||
170 | $(if $(4), \ |
||
171 | mkdir -p $(2)/etc/modules-boot.d; \ |
||
172 | ln -sf ../modules.d/$(3)$(1) $(2)/etc/modules-boot.d/;)) |
||
173 | endef |
||
174 | |||
175 | ifeq ($(DUMP)$(TARGET_BUILD),) |
||
176 | -include $(LINUX_DIR)/.config |
||
177 | endif |
||
178 | |||
179 | define KernelPackage/depends |
||
180 | $(STAMP_BUILT): $(LINUX_DIR)/.config |
||
181 | define KernelPackage/depends |
||
182 | endef |
||
183 | endef |
||
184 | |||
185 | define KernelPackage |
||
186 | NAME:=$(1) |
||
187 | $(eval $(call Package/Default)) |
||
188 | $(eval $(call KernelPackage/Defaults)) |
||
189 | $(eval $(call KernelPackage/$(1))) |
||
190 | $(eval $(call KernelPackage/$(1)/$(BOARD))) |
||
191 | $(eval $(call KernelPackage/$(1)/$(BOARD)/$(if $(SUBTARGET),$(SUBTARGET),generic))) |
||
192 | |||
193 | define Package/kmod-$(1) |
||
194 | TITLE:=$(TITLE) |
||
195 | SECTION:=kernel |
||
196 | CATEGORY:=Kernel modules |
||
197 | DESCRIPTION:=$(DESCRIPTION) |
||
198 | EXTRA_DEPENDS:=kernel (=$(LINUX_VERSION)-$(LINUX_RELEASE)-$(LINUX_VERMAGIC)) |
||
199 | VERSION:=$(LINUX_VERSION)$(if $(PKG_VERSION),+$(PKG_VERSION))-$(if $(PKG_RELEASE),$(PKG_RELEASE),$(LINUX_RELEASE)) |
||
200 | PKGFLAGS:=$(PKGFLAGS) |
||
201 | $(call KernelPackage/$(1)) |
||
202 | $(call KernelPackage/$(1)/$(BOARD)) |
||
203 | $(call KernelPackage/$(1)/$(BOARD)/$(if $(SUBTARGET),$(SUBTARGET),generic)) |
||
204 | endef |
||
205 | |||
206 | ifdef KernelPackage/$(1)/conffiles |
||
207 | define Package/kmod-$(1)/conffiles |
||
208 | $(call KernelPackage/$(1)/conffiles) |
||
209 | endef |
||
210 | endif |
||
211 | |||
212 | ifdef KernelPackage/$(1)/description |
||
213 | define Package/kmod-$(1)/description |
||
214 | $(call KernelPackage/$(1)/description) |
||
215 | endef |
||
216 | endif |
||
217 | |||
218 | ifdef KernelPackage/$(1)/config |
||
219 | define Package/kmod-$(1)/config |
||
220 | $(call KernelPackage/$(1)/config) |
||
221 | endef |
||
222 | endif |
||
223 | |||
224 | $(call KernelPackage/depends) |
||
225 | $(call KernelPackage/hooks) |
||
226 | |||
227 | ifneq ($(if $(filter-out %=y %=n %=m,$(KCONFIG)),$(filter m y,$(foreach c,$(filter-out %=y %=n %=m,$(KCONFIG)),$($(c)))),.),) |
||
228 | define Package/kmod-$(1)/install |
||
229 | @for mod in $$(call version_filter,$$(FILES)); do \ |
||
230 | if grep -q "$$$$$$$${mod##$(LINUX_DIR)/}" "$(LINUX_DIR)/modules.builtin"; then \ |
||
231 | echo "NOTICE: module '$$$$$$$$mod' is built-in."; \ |
||
232 | elif [ -e $$$$$$$$mod ]; then \ |
||
233 | mkdir -p $$(1)/$(MODULES_SUBDIR) ; \ |
||
234 | $(CP) -L $$$$$$$$mod $$(1)/$(MODULES_SUBDIR)/ ; \ |
||
235 | else \ |
||
236 | echo "ERROR: module '$$$$$$$$mod' is missing." >&2; \ |
||
237 | exit 1; \ |
||
238 | fi; \ |
||
239 | done; |
||
3 | office | 240 | $(call ModuleAutoLoad,$(1),$$(1),$(filter-out 0-,$(word 1,$(AUTOLOAD))-),$(filter-out 0,$(word 2,$(AUTOLOAD))),$(wordlist 3,99,$(AUTOLOAD))) |
1 | office | 241 | $(call KernelPackage/$(1)/install,$$(1)) |
242 | endef |
||
243 | $(if $(CONFIG_PACKAGE_kmod-$(1)), |
||
244 | else |
||
245 | compile: $(1)-disabled |
||
246 | $(1)-disabled: |
||
247 | @echo "WARNING: kmod-$(1) is not available in the kernel config - generating empty package" >&2 |
||
248 | |||
249 | define Package/kmod-$(1)/install |
||
250 | true |
||
251 | endef |
||
252 | ) |
||
253 | endif |
||
254 | $$(eval $$(call BuildPackage,kmod-$(1))) |
||
255 | |||
3 | office | 256 | $$(IPKG_kmod-$(1)): $$(wildcard $$(FILES)) |
1 | office | 257 | endef |
258 | |||
259 | version_filter=$(if $(findstring @,$(1)),$(shell $(SCRIPT_DIR)/package-metadata.pl version_filter $(KERNEL_PATCHVER) $(1)),$(1)) |
||
260 | |||
261 | # 1: priority (optional) |
||
262 | # 2: module list |
||
263 | # 3: boot flag |
||
264 | define AutoLoad |
||
265 | $(if $(1),$(1),0) $(if $(3),1,0) $(call version_filter,$(2)) |
||
266 | endef |
||
267 | |||
268 | # 1: module list |
||
269 | # 2: boot flag |
||
270 | define AutoProbe |
||
271 | $(call AutoLoad,,$(1),$(2)) |
||
272 | endef |
||
273 | |||
274 | version_field=$(if $(word $(1),$(2)),$(word $(1),$(2)),0) |
||
275 | kernel_version_merge=$$(( ($(call version_field,1,$(1)) << 24) + ($(call version_field,2,$(1)) << 16) + ($(call version_field,3,$(1)) << 8) + $(call version_field,4,$(1)) )) |
||
276 | |||
277 | ifdef DUMP |
||
278 | kernel_version_cmp= |
||
279 | else |
||
280 | kernel_version_cmp=$(shell [ $(call kernel_version_merge,$(call split_version,$(2))) $(1) $(call kernel_version_merge,$(call split_version,$(3))) ] && echo 1 ) |
||
281 | endif |
||
282 | |||
283 | CompareKernelPatchVer=$(if $(call kernel_version_cmp,-$(2),$(1),$(3)),1,0) |
||
284 | |||
285 | kernel_patchver_gt=$(call kernel_version_cmp,-gt,$(KERNEL_PATCHVER),$(1)) |
||
286 | kernel_patchver_ge=$(call kernel_version_cmp,-ge,$(KERNEL_PATCHVER),$(1)) |
||
287 | kernel_patchver_eq=$(call kernel_version_cmp,-eq,$(KERNEL_PATCHVER),$(1)) |
||
288 | kernel_patchver_le=$(call kernel_version_cmp,-le,$(KERNEL_PATCHVER),$(1)) |
||
289 | kernel_patchver_lt=$(call kernel_version_cmp,-lt,$(KERNEL_PATCHVER),$(1)) |
||
290 |