1 | # |
2 | # Copyright (C) 2006-2007 OpenWrt.org |
3 | # |
4 | # This is free software, licensed under the GNU General Public License v2. |
5 | # See /LICENSE for more information. |
6 | # |
7 | include $(INCLUDE_DIR)/host.mk |
8 | include $(INCLUDE_DIR)/prereq.mk |
9 | |
10 | ifneq ($(DUMP),1) |
11 | all: compile |
12 | endif |
13 | |
14 | export QUILT=1 |
15 | STAMP_PREPARED:=$(LINUX_DIR)/.prepared |
16 | STAMP_CONFIGURED:=$(LINUX_DIR)/.configured |
17 | include $(INCLUDE_DIR)/download.mk |
18 | include $(INCLUDE_DIR)/quilt.mk |
19 | include $(INCLUDE_DIR)/kernel-defaults.mk |
20 | |
21 | define Kernel/Prepare |
22 | $(call Kernel/Prepare/Default) |
23 | endef |
24 | |
25 | define Kernel/Configure |
26 | $(call Kernel/Configure/Default) |
27 | endef |
28 | |
29 | define Kernel/CompileModules |
30 | $(call Kernel/CompileModules/Default) |
31 | endef |
32 | |
33 | define Kernel/CompileImage |
34 | $(call Kernel/CompileImage/Default) |
35 | endef |
36 | |
37 | define Kernel/Clean |
38 | $(call Kernel/Clean/Default) |
39 | endef |
40 | |
41 | define Download/kernel |
42 | URL:=$(LINUX_SITE) |
43 | FILE:=$(LINUX_SOURCE) |
44 | MD5SUM:=$(LINUX_KERNEL_MD5SUM) |
45 | endef |
46 | |
47 | ifdef CONFIG_COLLECT_KERNEL_DEBUG |
48 | define Kernel/CollectDebug |
49 | rm -rf $(KERNEL_BUILD_DIR)/debug |
50 | mkdir -p $(KERNEL_BUILD_DIR)/debug/modules |
51 | $(CP) $(LINUX_DIR)/vmlinux $(KERNEL_BUILD_DIR)/debug/ |
52 | -$(CP) \ |
53 | $(STAGING_DIR_ROOT)/lib/modules/$(LINUX_VERSION)/* \ |
54 | $(KERNEL_BUILD_DIR)/debug/modules/ |
55 | $(FIND) $(KERNEL_BUILD_DIR)/debug -type f | $(XARGS) $(KERNEL_CROSS)strip --only-keep-debug |
56 | $(TAR) c -C $(KERNEL_BUILD_DIR) debug | bzip2 -c -9 > $(BIN_DIR)/kernel-debug.tar.bz2 |
57 | endef |
58 | endif |
59 | |
60 | define BuildKernel |
61 | $(if $(QUILT),$(Build/Quilt)) |
62 | $(if $(LINUX_SITE),$(call Download,kernel)) |
63 | |
64 | $(STAMP_PREPARED): $(if $(LINUX_SITE),$(DL_DIR)/$(LINUX_SOURCE)) |
65 | -rm -rf $(KERNEL_BUILD_DIR) |
66 | -mkdir -p $(KERNEL_BUILD_DIR) |
67 | $(Kernel/Prepare) |
68 | touch $$@ |
69 | |
70 | $(KERNEL_BUILD_DIR)/symtab.txt: FORCE |
71 | find $(LINUX_DIR) $(STAGING_DIR_ROOT)/lib/modules -name \*.ko | \ |
72 | xargs $(TARGET_CROSS)nm | \ |
73 | awk '$$$$1 == "U" { print $$$$2 } ' | \ |
74 | sort -u > $$@ |
75 | |
76 | $(KERNEL_BUILD_DIR)/symtab.h: $(KERNEL_BUILD_DIR)/symtab.txt |
77 | ( \ |
78 | echo '#define SYMTAB_KEEP \'; \ |
79 | cat $(KERNEL_BUILD_DIR)/symtab.txt | \ |
80 | awk '{print "*(__ksymtab." $$$$1 ") \\" }'; \ |
81 | echo; \ |
82 | echo '#define SYMTAB_KEEP_GPL \'; \ |
83 | cat $(KERNEL_BUILD_DIR)/symtab.txt | \ |
84 | awk '{print "*(__ksymtab_gpl." $$$$1 ") \\" }'; \ |
85 | echo; \ |
86 | echo '#define SYMTAB_KEEP_STR \'; \ |
87 | cat $(KERNEL_BUILD_DIR)/symtab.txt | \ |
88 | awk '{print "*(__ksymtab_strings." $$$$1 ") \\" }'; \ |
89 | echo; \ |
90 | ) > $$@ |
91 | |
92 | $(STAMP_CONFIGURED): $(STAMP_PREPARED) $(LINUX_KCONFIG_LIST) $(TOPDIR)/.config |
93 | $(Kernel/Configure) |
94 | touch $$@ |
95 | |
96 | $(LINUX_DIR)/.modules: $(STAMP_CONFIGURED) $(LINUX_DIR)/.config FORCE |
97 | $(Kernel/CompileModules) |
98 | touch $$@ |
99 | |
100 | $(LINUX_DIR)/.image: $(STAMP_CONFIGURED) $(if $(CONFIG_STRIP_KERNEL_EXPORTS),$(KERNEL_BUILD_DIR)/symtab.h) FORCE |
101 | $(Kernel/CompileImage) |
102 | $(Kernel/CollectDebug) |
103 | touch $$@ |
104 | |
105 | mostlyclean: FORCE |
106 | $(Kernel/Clean) |
107 | |
108 | define BuildKernel |
109 | endef |
110 | |
111 | download: $(DL_DIR)/$(LINUX_SOURCE) |
112 | prepare: $(STAMP_CONFIGURED) |
113 | compile: $(LINUX_DIR)/.modules |
114 | $(MAKE) -C image compile TARGET_BUILD= |
115 | |
116 | oldconfig menuconfig nconfig: $(STAMP_PREPARED) $(STAMP_CHECKED) FORCE |
117 | rm -f $(STAMP_CONFIGURED) |
118 | $(LINUX_RECONF_CMD) > $(LINUX_DIR)/.config |
119 | $(_SINGLE)$(MAKE) -C $(LINUX_DIR) $(KERNEL_MAKEOPTS) $$@ |
120 | $(LINUX_RECONF_DIFF) $(LINUX_DIR)/.config > $(LINUX_RECONFIG_TARGET) |
121 | |
122 | install: $(LINUX_DIR)/.image |
123 | +$(MAKE) -C image compile install TARGET_BUILD= |
124 | |
125 | clean: FORCE |
126 | rm -rf $(KERNEL_BUILD_DIR) |
127 | |
128 | image-prereq: |
129 | @+$(NO_TRACE_MAKE) -s -C image prereq TARGET_BUILD= |
130 | |
131 | prereq: image-prereq |
132 | |
133 | endef |
134 | |