bump version
[buildroot.git] / target / linux / Makefile.in
blob03251324165bc7a4ff7ccda60fc31b68d9b310ac
1 #############################################################
3 # Linux kernel 2.6 target
5 #############################################################
7 # XXX This crap should be in project!
8 ifeq ($(BOARD_PATH),)
9 BOARD_PATH:=$(strip $(subst ",,$(BR2_BOARD_PATH)))
10 #"))
11 endif
13 # Linux kernel configuration file
14 # Has to be set by the target/device
15 # If it is not set by the target/device, then pick the one from .config
16 ifndef LINUX26_KCONFIG
17 ifneq ($(strip $(subst ",,$(BR2_PACKAGE_LINUX_KCONFIG))),)
18 LINUX26_KCONFIG:=$(strip $(subst ",,$(BR2_PACKAGE_LINUX_KCONFIG)))
19 #"))
20 #"))
21 else
22 # LINUX26_KCONFIG=$(BOARD_PATH)/linux26.config
23 endif
24 endif
26 ifndef LINUX26_FORMAT
27 ifneq ($(strip $(subst ",,$(BR2_PACKAGE_LINUX_FORMAT))),)
28 LINUX26_FORMAT:=$(strip $(subst ",,$(BR2_PACKAGE_LINUX_FORMAT)))
29 #"))
30 #"))
31 else
32 LINUX26_FORMAT:=zImage
33 endif
34 endif
37 ifneq ($(filter $(TARGETS),linux26),)
39 ifeq ($(DOWNLOAD_LINUX26_VERSION),)
40 # User did not define linux version, try using headers
41 ifeq ($(LINUX_HEADERS_VERSION),)
42 # We did not have headers (this is for real???)
43 # Version of linuc before patches
44 DOWNLOAD_LINUX26_VERSION=2.6.22.1
45 # Version of Linux after applying any patches
46 LINUX26_VERSION=2.6.22.1
47 else
48 # OK, we have headers, use them...
49 DOWNLOAD_LINUX26_VERSION=$(LINUX_HEADERS_VERSION)
50 LINUX26_VERSION=$(LINUX_HEADERS_VERSION)
51 endif
52 endif
54 LINUX26_SOURCE=linux-$(DOWNLOAD_LINUX26_VERSION).tar.bz2
55 LINUX26_BZCAT:=$(BZCAT)
56 LINUX26_SITE=$(BR2_KERNEL_MIRROR)/linux/kernel/v2.6
59 # Has to be set by the target/device
60 ifndef LINUX26_BINLOC
61 # default:
62 ifeq ($(LINUX26_FORMAT),vmlinux)
63 LINUX26_BINLOC=$(LINUX26_FORMAT)
64 else
65 LINUX26_BINLOC=arch/$(KERNEL_ARCH)/boot/$(LINUX26_FORMAT)
66 endif
67 endif
69 # File name for the Linux kernel binary
70 ifndef LINUX26_KERNEL
71 LINUX26_KERNEL=$(BINARIES_DIR)/linux-kernel-$(LINUX26_VERSION)-$(KERNEL_ARCH)
72 endif
74 # Version of Linux AFTER patches
75 LINUX26_DIR=$(PROJECT_BUILD_DIR)/linux-$(LINUX26_VERSION)
77 # for packages that need it
78 LINUX_VERSION:=$(LINUX26_VERSION)
79 LINUX_DIR=$(LINUX26_DIR)
80 LINUX_KERNEL=$(LINUX26_KERNEL)
82 # kernel patches
83 ifeq ($(strip $(LINUX26_PATCH_DIR)),)
84 ifneq ($(BOARD_PATH),)
85 LINUX26_PATCH_DIR:=$(BOARD_PATH)/kernel-patches/
86 #"))
87 endif
88 endif
89 # XXX FIXME: using -fstack-protector-all -mcmodel=kernel
90 # should be perfectly fine but perhaps needs a config symbol set in
91 # the kernel.config
92 __LINUX26_NO_PIC=-fPIC -fpic -DPIC -fwrapv -ftrapv \
93 -fstack-protector -fstack-protector-all
94 LINUX26_MAKE_FLAGS = HOSTCC="$(HOSTCC)" HOSTCFLAGS="$(HOSTCFLAGS)" \
95 ARCH=$(KERNEL_ARCH) \
96 CFLAGS_KERNEL="$(filter-out $(__LINUX26_NO_PIC),$(TARGET_CFLAGS))" \
97 INSTALL_MOD_PATH=$(TARGET_DIR) \
98 CROSS_COMPILE=$(KERNEL_CROSS) \
99 LDFLAGS="$(TARGET_LDFLAGS)" \
100 LZMA="$(LZMA)"
102 $(LINUX26_KCONFIG):
103 @if [ ! -f "$(LINUX26_KCONFIG)" ] ; then \
104 echo ""; \
105 echo "You should create a .config for your kernel"; \
106 echo "and install it as $(LINUX26_KCONFIG)"; \
107 echo ""; \
108 sleep 5; \
111 # Doesn't make sense to warn about a missing kernel config
112 # when we are about to configure.
113 ifeq (=$(BR2_KERNEL_LINUX)$(BR2_PACKAGE_LINUX_KCONFIG)=,=y=)
114 ifeq ($(filter -menuconfig linux26-source linux26-unpacked,$(MAKECMDGOALS)),)
115 ifeq ($(BR2_KERNEL_LINUX)$(realpath $(LINUX26_KCONFIG)),y)
116 $(error you do not have a linux kernel configuration file)
117 endif
118 endif
119 endif
122 ifneq ($(strip $(LINUX26_VERSION)),$(strip $(LINUX_HEADERS_VERSION)))
123 $(DL_DIR)/$(LINUX26_SOURCE):
124 $(WGET) -P $(DL_DIR) $(LINUX26_SITE)/$(LINUX26_SOURCE)
125 endif # ($(LINUX26_VERSION),$(LINUX_HEADERS_VERSION))
127 $(LINUX26_DIR)/.unpacked: $(DL_DIR)/$(LINUX26_SOURCE)
128 rm -rf $(LINUX26_DIR)
129 @echo "*** Unpacking kernel source"
130 $(LINUX26_BZCAT) $(DL_DIR)/$(LINUX26_SOURCE) | tar -C $(PROJECT_BUILD_DIR) $(TAR_OPTIONS) -
131 ifneq ($(DOWNLOAD_LINUX26_VERSION),$(LINUX26_VERSION))
132 # Rename the dir from the downloaded version to the AFTER patch version
133 mv -f $(PROJECT_BUILD_DIR)/linux-$(DOWNLOAD_LINUX26_VERSION) $(LINUX26_DIR)
134 endif
135 touch $@
137 $(LINUX26_DIR)/.patched: $(LINUX26_DIR)/.unpacked $(LINUX_HEADERS_DEPENDS)
138 toolchain/patch-kernel.sh $(LINUX26_DIR) toolchain/kernel-headers \
139 linux-$(LINUX26_VERSION)-\*.patch{,.gz,.bz2}
140 ifeq ($(BR2_KERNEL_HEADERS_IPMI),y)
141 toolchain/patch-kernel.sh $(LINUX26_DIR) toolchain/kernel-headers/ipmi \
142 linux-$(LINUX26_VERSION)-\*.patch{,.gz,.bz2}
143 endif
144 ifeq ($(BR2_KERNEL_HEADERS_LZMA),y)
145 toolchain/patch-kernel.sh $(LINUX26_DIR) toolchain/kernel-headers/lzma \
146 linux-$(LINUX26_VERSION)-\*.patch{,.gz,.bz2}
147 endif
148 ifeq ($(BR2_KERNEL_HEADERS_RT),y)
149 toolchain/patch-kernel.sh $(LINUX26_DIR) $(DL_DIR) $(LINUX_RT_SOURCE)
150 endif
151 ifeq ($(BR2_KERNEL_HEADERS_PATCH_DIR),y)
152 toolchain/patch-kernel.sh $(LINUX26_DIR) $(KERNEL_HEADERS_PATCH_DIR) \
153 linux-$(LINUX26_VERSION)-\*.patch{,.gz,.bz2}
154 endif
155 ifeq ($(BR2_PACKAGE_OPENSWAN),y)
156 toolchain/patch-kernel.sh $(LINUX26_DIR) package/openswan \
157 linux-$(LINUX26_VERSION)-\*.patch{,.gz,.bz2}
158 endif
159 ifneq ($(LINUX26_PATCH_DIR),)
160 if [ -d $(LINUX26_PATCH_DIR) ] ; then \
161 toolchain/patch-kernel.sh $(LINUX26_DIR) $(LINUX26_PATCH_DIR) linux-$(LINUX26_VERSION)\*.patch ; \
163 endif
164 touch $@
166 $(LINUX26_DIR)/.configured: $(LINUX26_DIR)/.patched $(LINUX26_KCONFIG)
167 cp -dpf $(LINUX26_KCONFIG) $(LINUX26_DIR)/.config
168 $(SED) '/CONFIG_AEABI=y/d' $(LINUX26_DIR)/.config
169 ifeq ($(BR2_ARM_EABI),y)
170 echo "CONFIG_AEABI=y" >> $(LINUX26_DIR)/.config
171 $(SED) '/CONFIG_OABI_COMPAT/d' $(LINUX26_DIR)/.config
172 echo "# CONFIG_OABI_COMPAT is not set" >> $(LINUX26_DIR)/.config
173 else
174 echo "# CONFIG_AEABI is not set" >> $(LINUX26_DIR)/.config
175 endif
176 $(SED) '/CONFIG_CPU_BIG_ENDIAN/d' \
177 -e '/CONFIG_CPU_LITTLE_ENDIAN/d' $(LINUX26_DIR)/.config
178 ifeq ($(BR2_mips),y)
179 echo "CONFIG_CPU_BIG_ENDIAN=y" >> $(LINUX26_DIR)/.config
180 endif
181 ifeq ($(BR2_mipsel),y)
182 echo "CONFIG_CPU_LITTLE_ENDIAN=y" >> $(LINUX26_DIR)/.config
183 endif
184 $(SED) '/CONFIG_IPV6=y/d' $(LINUX26_DIR)/.config
185 ifeq ($(BR2_INET_IPV6),y)
186 echo "CONFIG_IPV6=y" >> $(LINUX26_DIR)/.config
187 else
188 echo "# CONFIG_IPV6 is not set" >> $(LINUX26_DIR)/.config
189 endif
190 $(SED) '/CONFIG_INITRAMFS_SOURCE/d' $(LINUX26_DIR)/.config
191 $(SED) '/INITRAMFS_ROOT_.ID/d' $(LINUX26_DIR)/.config
192 ifeq ($(BR2_TARGET_ROOTFS_INITRAMFS),y)
193 echo "CONFIG_INITRAMFS_SOURCE=\"$(INITRAMFS_TARGET)\"" >> \
194 $(LINUX26_DIR)/.config
195 echo "CONFIG_INITRAMFS_ROOT_UID=0" >> $(LINUX26_DIR)/.config
196 echo "CONFIG_INITRAMFS_ROOT_GID=0" >> $(LINUX26_DIR)/.config
197 else
198 echo "CONFIG_INITRAMFS_SOURCE=\"\"" >> $(LINUX26_DIR)/.config
199 endif
200 ifeq ($(BR2_PACKAGE_BUSYBOX_INITRAMFS),y)
201 # precedence for a small initramfs
202 $(SED) '/CONFIG_INITRAMFS_SOURCE/d' $(LINUX26_DIR)/.config
203 $(SED) '/INITRAMFS_ROOT_.ID/d' $(LINUX26_DIR)/.config
204 echo "CONFIG_INITRAMFS_SOURCE=\"$(BB_INITRAMFS_TARGET)\"" >> \
205 $(LINUX26_DIR)/.config
206 echo "CONFIG_INITRAMFS_ROOT_UID=0" >> $(LINUX26_DIR)/.config
207 echo "CONFIG_INITRAMFS_ROOT_GID=0" >> $(LINUX26_DIR)/.config
208 endif
209 $(MAKE) $(LINUX26_MAKE_FLAGS) -C $(LINUX26_DIR) oldconfig
210 touch $@
212 $(LINUX26_DIR)/.depend_done: $(LINUX26_DIR)/.configured
213 $(MAKE) $(LINUX26_MAKE_FLAGS) -C $(LINUX26_DIR) prepare
214 touch $@
216 $(LINUX26_KERNEL): $(INITRAMFS_TARGET) $(BB_INITRAMFS_TARGET) \
217 $(LINUX26_DIR)/.depend_done
218 $(MAKE) $(LINUX26_MAKE_FLAGS) \
219 -C $(LINUX26_DIR) $(LINUX26_FORMAT)
220 cat $(LINUX26_DIR)/$(LINUX26_BINLOC) > $(LINUX26_KERNEL)
221 touch -c $@
223 $(TARGET_DIR)/lib/modules/$(LINUX26_VERSION)/modules.dep: $(LINUX26_DIR)/.configured
224 rm -rf $(TARGET_DIR)/lib/modules/$(LINUX26_VERSION)
225 rm -f $(TARGET_DIR)/sbin/cardmgr
226 $(MAKE) $(LINUX26_MAKE_FLAGS) -C $(LINUX26_DIR) modules
227 $(MAKE) $(LINUX26_MAKE_FLAGS) -C $(LINUX26_DIR) \
228 DEPMOD=$(STAGING_DIR)/bin/$(GNU_TARGET_NAME)-depmod26 \
229 INSTALL_MOD_PATH=$(TARGET_DIR) modules_install
230 rm -f $(TARGET_DIR)/lib/modules/$(LINUX26_VERSION)/build
231 rm -f $(TARGET_DIR)/lib/modules/$(LINUX26_VERSION)/source
232 $(STAGING_DIR)/bin/$(GNU_TARGET_NAME)-depmod26 -b $(TARGET_DIR) $(LINUX_HEADERS_VERSION)
233 touch -c $@
235 linux26-menuconfig: host-sed dirs $(LINUX26_DIR)/.patched
236 -[ -f $(LINUX26_DIR)/.config ] || cp $(LINUX26_KCONFIG) $(LINUX26_DIR)/.config
237 $(MAKE) $(LINUX26_MAKE_FLAGS) -C $(LINUX26_DIR) menuconfig
238 -[ -f $(LINUX26_DIR)/.config ] && touch $(LINUX26_DIR)/.configured
240 linux26-xconfig: host-sed dirs $(LINUX26_DIR)/.patched
241 -[ -f $(LINUX26_DIR)/.config ] || cp $(LINUX26_KCONFIG) $(LINUX26_DIR)/.config
242 $(MAKE) $(LINUX26_MAKE_FLAGS) -C $(LINUX26_DIR) xconfig
243 -[ -f $(LINUX26_DIR)/.config ] && touch $(LINUX26_DIR)/.configured
245 linux26: $(LINUX26_KERNEL)
247 $(LINUX26_DIR)/.modules_installed: $(TARGET_DIR)/lib/modules/$(LINUX26_VERSION)/modules.dep
248 touch $@
250 linux26-modules: cross-depmod26 $(LINUX26_DIR)/.modules_installed
252 linux26-source: $(DL_DIR)/$(LINUX26_SOURCE)
254 linux26-unpacked: $(LINUX26_DIR)/.patched
256 linux26-config: host-sed dirs $(LINUX26_DIR)/.configured
258 linux26-update:
259 cp -dpf $(LINUX26_DIR)/.config $(LINUX26_KCONFIG)
261 # force rebuild
262 linux26-force:
263 touch $(LINUX26_DIR)/.configured
265 # This has been renamed so we do _NOT_ by default run this on 'make clean'
266 linux26clean:
267 rm -f $(LINUX26_KERNEL) $(LINUX26_DIR)/.configured
268 -$(MAKE) PATH=$(TARGET_PATH) -C $(LINUX26_DIR) clean
270 linux26-dirclean:
271 rm -rf $(LINUX26_DIR)
273 endif