1 #############################################################
3 # Linux kernel 2.6 target
5 #############################################################
6 ifneq ($(filter $(TARGETS
),linux26
),)
9 ifeq ($(DOWNLOAD_LINUX26_VERSION
),)
10 # User did not define linux version, try using headers
11 ifeq ($(LINUX_HEADERS_VERSION
),)
12 # We did not have headers (this is for real???)
13 # Version of linuc before patches
14 DOWNLOAD_LINUX26_VERSION
=2.6.22.1
15 # Version of Linux after applying any patches
16 LINUX26_VERSION
=2.6.22.1
18 # OK, we have headers, use them...
19 DOWNLOAD_LINUX26_VERSION
=$(LINUX_HEADERS_VERSION
)
20 LINUX26_VERSION
=$(LINUX_HEADERS_VERSION
)
24 LINUX26_SOURCE
=linux-
$(DOWNLOAD_LINUX26_VERSION
).
tar.bz2
25 LINUX26_BZCAT
:=$(BZCAT
)
26 LINUX26_SITE
=http
://ftp.kernel.org
/pub
/linux
/kernel
/v2.6
29 BOARD_PATH
:=$(strip $(subst ",,$(BR2_BOARD_PATH)))
33 # Linux kernel configuration file
34 # Has to be set by the target/device
35 # If it is not set by the target/device, then pick the one from .config
36 ifndef LINUX26_KCONFIG
37 ifneq ($(strip $(subst ",,$(BR2_PACKAGE_LINUX_KCONFIG))),)
38 LINUX26_KCONFIG=$(strip $(subst ",,$(BR2_PACKAGE_LINUX_KCONFIG
)))
42 # LINUX26_KCONFIG=$(BOARD_PATH)/linux26.config
47 ifneq ($(strip $(subst ",,$(BR2_PACKAGE_LINUX_FORMAT))),)
48 LINUX26_FORMAT=$(strip $(subst ",,$(BR2_PACKAGE_LINUX_FORMAT
)))
56 # Has to be set by the target/device
59 ifeq ($(LINUX26_FORMAT
),vmlinux
)
60 LINUX26_BINLOC
=$(LINUX26_FORMAT
)
62 LINUX26_BINLOC
=arch
/$(KERNEL_ARCH
)/boot
/$(LINUX26_FORMAT
)
66 # File name for the Linux kernel binary
68 LINUX26_KERNEL
=$(BINARIES_DIR
)/linux-kernel-
$(LINUX26_VERSION
)-$(KERNEL_ARCH
)
71 # Version of Linux AFTER patches
72 LINUX26_DIR
=$(PROJECT_BUILD_DIR
)/linux-
$(LINUX26_VERSION
)
74 # for packages that need it
75 LINUX_VERSION
:=$(LINUX26_VERSION
)
76 LINUX_DIR
=$(LINUX26_DIR
)
77 LINUX_KERNEL
=$(LINUX26_KERNEL
)
80 ifeq ($(strip $(LINUX26_PATCH_DIR
)),)
81 ifneq ($(BOARD_PATH
),)
82 LINUX26_PATCH_DIR
:=$(BOARD_PATH
)/kernel-patches
/
86 __LINUX26_NO_PIC
=-fPIC
-fpic
-DPIC
-fwrapv
-ftrapv
87 LINUX26_MAKE_FLAGS
= HOSTCC
="$(HOSTCC)" HOSTCFLAGS
="$(HOSTCFLAGS)" \
89 CFLAGS_KERNEL
="$(filter-out $(__LINUX26_NO_PIC),$(TARGET_CFLAGS))" \
90 INSTALL_MOD_PATH
=$(TARGET_DIR
) \
91 CROSS_COMPILE
=$(KERNEL_CROSS
) \
92 LDFLAGS
="$(TARGET_LDFLAGS)" \
96 @if
[ ! -f
"$(LINUX26_KCONFIG)" ] ; then \
98 echo
"You should create a .config for your kernel"; \
99 echo
"and install it as $(LINUX26_KCONFIG)"; \
104 ifneq ($(strip $(LINUX26_VERSION
)),$(strip $(LINUX_HEADERS_VERSION
)))
105 $(DL_DIR
)/$(LINUX26_SOURCE
):
106 $(WGET
) -P
$(DL_DIR
) $(LINUX26_SITE
)/$(LINUX26_SOURCE
)
107 endif # ($(LINUX26_VERSION),$(LINUX_HEADERS_VERSION))
109 $(LINUX26_DIR
)/.unpacked
: $(DL_DIR
)/$(LINUX26_SOURCE
)
110 rm -rf
$(LINUX26_DIR
)
111 @echo
"*** Unpacking kernel source"
112 $(LINUX26_BZCAT
) $(DL_DIR
)/$(LINUX26_SOURCE
) |
tar -C
$(PROJECT_BUILD_DIR
) $(TAR_OPTIONS
) -
113 ifneq ($(DOWNLOAD_LINUX26_VERSION
),$(LINUX26_VERSION
))
114 # Rename the dir from the downloaded version to the AFTER patch version
115 mv
-f
$(PROJECT_BUILD_DIR
)/linux-
$(DOWNLOAD_LINUX26_VERSION
) $(LINUX26_DIR
)
119 $(LINUX26_DIR
)/.patched
: $(LINUX26_DIR
)/.unpacked
$(LINUX_HEADERS_DEPENDS
)
120 toolchain
/patch-kernel.sh
$(LINUX26_DIR
) toolchain
/kernel-headers \
121 linux-
$(LINUX26_VERSION
)-\
*.patch
{,.gz
,.bz2
}
122 ifeq ($(BR2_KERNEL_HEADERS_IPMI
),y
)
123 toolchain
/patch-kernel.sh
$(LINUX26_DIR
) toolchain
/kernel-headers
/ipmi \
124 linux-
$(LINUX26_VERSION
)-\
*.patch
{,.gz
,.bz2
}
126 ifeq ($(BR2_KERNEL_HEADERS_LZMA
),y
)
127 toolchain
/patch-kernel.sh
$(LINUX26_DIR
) toolchain
/kernel-headers
/lzma \
128 linux-
$(LINUX26_VERSION
)-\
*.patch
{,.gz
,.bz2
}
130 ifeq ($(BR2_KERNEL_HEADERS_RT
),y
)
131 toolchain
/patch-kernel.sh
$(LINUX26_DIR
) $(DL_DIR
) $(LINUX_RT_SOURCE
)
133 ifeq ($(BR2_KERNEL_HEADERS_PATCH_DIR
),y
)
134 toolchain
/patch-kernel.sh
$(LINUX26_DIR
) $(KERNEL_HEADERS_PATCH_DIR
) \
135 linux-
$(LINUX26_VERSION
)-\
*.patch
{,.gz
,.bz2
}
137 ifeq ($(BR2_PACKAGE_OPENSWAN
),y
)
138 toolchain
/patch-kernel.sh
$(LINUX26_DIR
) package
/openswan \
139 linux-
$(LINUX26_VERSION
)-\
*.patch
{,.gz
,.bz2
}
141 ifneq ($(LINUX26_PATCH_DIR
),)
142 if
[ -d
$(LINUX26_PATCH_DIR
) ] ; then \
143 toolchain
/patch-kernel.sh
$(LINUX26_DIR
) $(LINUX26_PATCH_DIR
) linux-
$(LINUX26_VERSION
)\
*.patch
; \
148 $(LINUX26_DIR
)/.configured
: $(LINUX26_DIR
)/.patched
$(LINUX26_KCONFIG
)
149 cp
-dpf
$(LINUX26_KCONFIG
) $(LINUX26_DIR
)/.config
150 $(SED
) '/CONFIG_AEABI=y/d' $(LINUX26_DIR
)/.config
151 ifeq ($(BR2_ARM_EABI
),y
)
152 echo
"CONFIG_AEABI=y" >> $(LINUX26_DIR
)/.config
153 $(SED
) '/CONFIG_OABI_COMPAT/d' $(LINUX26_DIR
)/.config
154 echo
"# CONFIG_OABI_COMPAT is not set" >> $(LINUX26_DIR
)/.config
156 echo
"# CONFIG_AEABI is not set" >> $(LINUX26_DIR
)/.config
158 $(SED
) '/CONFIG_CPU_BIG_ENDIAN/d' \
159 -e
'/CONFIG_CPU_LITTLE_ENDIAN/d' $(LINUX26_DIR
)/.config
161 echo
"CONFIG_CPU_BIG_ENDIAN=y" >> $(LINUX26_DIR
)/.config
163 ifeq ($(BR2_mipsel
),y
)
164 echo
"CONFIG_CPU_LITTLE_ENDIAN=y" >> $(LINUX26_DIR
)/.config
166 $(SED
) '/CONFIG_IPV6=y/d' $(LINUX26_DIR
)/.config
167 ifeq ($(BR2_INET_IPV6
),y
)
168 echo
"CONFIG_IPV6=y" >> $(LINUX26_DIR
)/.config
170 echo
"# CONFIG_IPV6 is not set" >> $(LINUX26_DIR
)/.config
172 $(SED
) '/CONFIG_INITRAMFS_SOURCE/d' $(LINUX26_DIR
)/.config
173 $(SED
) '/INITRAMFS_ROOT_.ID/d' $(LINUX26_DIR
)/.config
174 ifeq ($(BR2_TARGET_ROOTFS_INITRAMFS
),y
)
175 echo
"CONFIG_INITRAMFS_SOURCE=\"$(INITRAMFS_TARGET)\"" >> \
176 $(LINUX26_DIR
)/.config
177 echo
"CONFIG_INITRAMFS_ROOT_UID=0" >> $(LINUX26_DIR
)/.config
178 echo
"CONFIG_INITRAMFS_ROOT_GID=0" >> $(LINUX26_DIR
)/.config
180 echo
"CONFIG_INITRAMFS_SOURCE=\"\"" >> $(LINUX26_DIR
)/.config
182 ifeq ($(BR2_PACKAGE_BUSYBOX_INITRAMFS
),y
)
183 # precedence for a small initramfs
184 $(SED
) '/CONFIG_INITRAMFS_SOURCE/d' $(LINUX26_DIR
)/.config
185 $(SED
) '/INITRAMFS_ROOT_.ID/d' $(LINUX26_DIR
)/.config
186 echo
"CONFIG_INITRAMFS_SOURCE=\"$(BB_INITRAMFS_TARGET)\"" >> \
187 $(LINUX26_DIR
)/.config
188 echo
"CONFIG_INITRAMFS_ROOT_UID=0" >> $(LINUX26_DIR
)/.config
189 echo
"CONFIG_INITRAMFS_ROOT_GID=0" >> $(LINUX26_DIR
)/.config
191 $(MAKE
) $(LINUX26_MAKE_FLAGS
) -C
$(LINUX26_DIR
) oldconfig
194 $(LINUX26_DIR
)/.depend_done
: $(LINUX26_DIR
)/.configured
195 $(MAKE
) $(LINUX26_MAKE_FLAGS
) -C
$(LINUX26_DIR
) prepare
198 $(LINUX26_KERNEL
): $(INITRAMFS_TARGET
) $(BB_INITRAMFS_TARGET
) \
199 $(LINUX26_DIR
)/.depend_done
200 $(MAKE
) $(LINUX26_MAKE_FLAGS
) \
201 -C
$(LINUX26_DIR
) $(LINUX26_FORMAT
)
202 cp
-dpf
$(LINUX26_DIR
)/$(LINUX26_BINLOC
) $(LINUX26_KERNEL
)
205 $(TARGET_DIR
)/lib
/modules
/$(LINUX26_VERSION
)/modules.dep
: $(LINUX26_DIR
)/.configured
206 rm -rf
$(TARGET_DIR
)/lib
/modules
/$(LINUX26_VERSION
)
207 rm -f
$(TARGET_DIR
)/sbin
/cardmgr
208 $(MAKE
) $(LINUX26_MAKE_FLAGS
) -C
$(LINUX26_DIR
) modules
209 $(MAKE
) $(LINUX26_MAKE_FLAGS
) -C
$(LINUX26_DIR
) \
210 DEPMOD
=$(STAGING_DIR
)/bin
/$(GNU_TARGET_NAME
)-depmod26 \
211 INSTALL_MOD_PATH
=$(TARGET_DIR
) modules_install
212 rm -f
$(TARGET_DIR
)/lib
/modules
/$(LINUX26_VERSION
)/build
213 rm -f
$(TARGET_DIR
)/lib
/modules
/$(LINUX26_VERSION
)/source
214 $(STAGING_DIR
)/bin
/$(GNU_TARGET_NAME
)-depmod26
-b
$(TARGET_DIR
) $(LINUX_HEADERS_VERSION
)
217 linux26-menuconfig
: $(LINUX26_DIR
)/.patched host-sed
218 [ -f
$(LINUX26_DIR
)/.config
] || cp
$(LINUX26_KCONFIG
) $(LINUX26_DIR
)/.config
219 $(MAKE
) $(LINUX26_MAKE_FLAGS
) -C
$(LINUX26_DIR
) menuconfig
220 -[ -f
$(LINUX26_DIR
)/.config
] && touch
$(LINUX26_DIR
)/.configured
222 linux26-xconfig
: $(LINUX26_DIR
)/.patched host-sed
223 [ -f
$(LINUX26_DIR
)/.config
] || cp
$(LINUX26_KCONFIG
) $(LINUX26_DIR
)/.config
224 $(MAKE
) $(LINUX26_MAKE_FLAGS
) -C
$(LINUX26_DIR
) xconfig
225 -[ -f
$(LINUX26_DIR
)/.config
] && touch
$(LINUX26_DIR
)/.configured
227 linux26
: $(LINUX26_KERNEL
)
229 $(LINUX26_DIR
)/.modules_installed
: $(TARGET_DIR
)/lib
/modules
/$(LINUX26_VERSION
)/modules.dep
232 linux26-modules
: cross-depmod26
$(LINUX26_DIR
)/.modules_installed
234 linux26-source
: $(DL_DIR
)/$(LINUX26_SOURCE
)
236 linux26-unpacked
: $(LINUX26_DIR
)/.patched
238 linux26-config
: host-sed
$(LINUX26_DIR
)/.configured
241 cp
-dpf
$(LINUX26_DIR
)/.config
$(LINUX26_KCONFIG
)
243 # This has been renamed so we do _NOT_ by default run this on 'make clean'
245 rm -f
$(LINUX26_KERNEL
) $(LINUX26_DIR
)/.configured
246 -$(MAKE
) PATH
=$(TARGET_PATH
) -C
$(LINUX26_DIR
) clean
249 rm -rf
$(LINUX26_DIR
)