2 # Copyright (C) 2006-2007 OpenWrt.org
4 # This is free software, licensed under the GNU General Public License v2.
5 # See /LICENSE for more information.
7 include $(INCLUDE_DIR
)/host.mk
8 include $(INCLUDE_DIR
)/prereq.mk
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
22 $(call Kernel
/Prepare
/Default
)
25 define Kernel
/Configure
26 $(call Kernel
/Configure
/Default
)
29 define Kernel
/CompileModules
30 $(call Kernel
/CompileModules
/Default
)
33 define Kernel
/CompileImage
34 $(call Kernel
/CompileImage
/Default
)
35 $(call Kernel
/CompileImage
/Initramfs
)
39 $(call Kernel
/Clean
/Default
)
42 define Download
/kernel
45 MD5SUM
:=$(LINUX_KERNEL_MD5SUM
)
48 ifdef CONFIG_COLLECT_KERNEL_DEBUG
49 define Kernel
/CollectDebug
50 rm -rf
$(KERNEL_BUILD_DIR
)/debug
51 mkdir
-p
$(KERNEL_BUILD_DIR
)/debug
/modules
52 $(CP
) $(LINUX_DIR
)/vmlinux
$(KERNEL_BUILD_DIR
)/debug
/
54 $(STAGING_DIR_ROOT
)/lib
/modules
/$(LINUX_VERSION
)/* \
55 $(KERNEL_BUILD_DIR
)/debug
/modules
/
56 $(FIND
) $(KERNEL_BUILD_DIR
)/debug
-type f |
$(XARGS
) $(KERNEL_CROSS
)strip --only-keep-debug
57 $(TAR
) c
-C
$(KERNEL_BUILD_DIR
) debug | bzip2
-c
-9 > $(BIN_DIR
)/kernel-debug.
tar.bz2
62 $(if
$(QUILT
),$(Build
/Quilt
))
63 $(if
$(LINUX_SITE
),$(call Download
,kernel
))
67 $(STAMP_PREPARED
): $(if
$(LINUX_SITE
),$(DL_DIR
)/$(LINUX_SOURCE
))
68 -rm -rf
$(KERNEL_BUILD_DIR
)
69 -mkdir
-p
$(KERNEL_BUILD_DIR
)
73 $(KERNEL_BUILD_DIR
)/symtab.h
: FORCE
74 rm -f
$(KERNEL_BUILD_DIR
)/symtab.h
75 touch
$(KERNEL_BUILD_DIR
)/symtab.h
76 +$(MAKE
) $(KERNEL_MAKEOPTS
) vmlinux
77 find
$(LINUX_DIR
) $(STAGING_DIR_ROOT
)/lib
/modules
-name \
*.ko | \
78 xargs
$(TARGET_CROSS
)nm | \
79 awk
'$$$$1 == "U" { print $$$$2 } ' | \
80 sort -u
> $(KERNEL_BUILD_DIR
)/mod_symtab.txt
81 $(TARGET_CROSS
)nm
-n
$(LINUX_DIR
)/vmlinux.o | grep
' [rR] __ksymtab' | sed
-e
's,........ [rR] __ksymtab_,,' > $(KERNEL_BUILD_DIR
)/kernel_symtab.txt
82 grep
-Ff
$(KERNEL_BUILD_DIR
)/mod_symtab.txt
$(KERNEL_BUILD_DIR
)/kernel_symtab.txt
> $(KERNEL_BUILD_DIR
)/sym_include.txt
83 grep
-Fvf
$(KERNEL_BUILD_DIR
)/mod_symtab.txt
$(KERNEL_BUILD_DIR
)/kernel_symtab.txt
> $(KERNEL_BUILD_DIR
)/sym_exclude.txt
85 echo
'#define SYMTAB_KEEP \'; \
86 cat $(KERNEL_BUILD_DIR)/sym_include.txt | \
87 awk '{print "KEEP(*(___ksymtab+" $$$$1 ")) \\" }'; \
89 echo '#define SYMTAB_KEEP_GPL \'; \
90 cat
$(KERNEL_BUILD_DIR
)/sym_include.txt | \
91 awk
'{print "KEEP(*(___ksymtab_gpl+" $$$$1 ")) \\" }'; \
93 echo
'#define SYMTAB_DISCARD \'; \
94 cat $(KERNEL_BUILD_DIR)/sym_exclude.txt | \
95 awk '{print "*(___ksymtab+" $$$$1 ") \\" }'; \
97 echo '#define SYMTAB_DISCARD_GPL \'; \
98 cat
$(KERNEL_BUILD_DIR
)/sym_exclude.txt | \
99 awk
'{print "*(___ksymtab_gpl+" $$$$1 ") \\" }'; \
103 $(STAMP_CONFIGURED
): $(STAMP_PREPARED
) $(LINUX_KCONFIG_LIST
) $(TOPDIR
)/.config
107 $(LINUX_DIR
)/.modules
: $(STAMP_CONFIGURED
) $(LINUX_DIR
)/.config FORCE
108 $(Kernel
/CompileModules
)
111 $(LINUX_DIR
)/.image
: $(STAMP_CONFIGURED
) $(if
$(CONFIG_STRIP_KERNEL_EXPORTS
),$(KERNEL_BUILD_DIR
)/symtab.h
) FORCE
112 $(Kernel
/CompileImage
)
113 $(Kernel
/CollectDebug
)
122 download
: $(if
$(LINUX_SITE
),$(DL_DIR
)/$(LINUX_SOURCE
))
123 prepare
: $(STAMP_CONFIGURED
)
124 compile
: $(LINUX_DIR
)/.modules
125 $(MAKE
) -C image compile TARGET_BUILD
=
127 oldconfig menuconfig nconfig
: $(STAMP_PREPARED
) $(STAMP_CHECKED
) FORCE
128 rm -f
$(LINUX_DIR
)/.config.prev
129 rm -f
$(STAMP_CONFIGURED
)
130 $(LINUX_RECONF_CMD
) > $(LINUX_DIR
)/.config
131 $(_SINGLE
)$(MAKE
) -C
$(LINUX_DIR
) $(KERNEL_MAKEOPTS
) $$@
132 $(LINUX_RECONF_DIFF
) $(LINUX_DIR
)/.config
> $(LINUX_RECONFIG_TARGET
)
134 install: $(LINUX_DIR
)/.image
135 +$(MAKE
) -C image compile
install TARGET_BUILD
=
138 rm -rf
$(KERNEL_BUILD_DIR
)
141 @
+$(NO_TRACE_MAKE
) -s
-C image prereq TARGET_BUILD
=