source: trunk/openwrt/include/kernel-defaults.mk @ 2296

Last change on this file since 2296 was 2296, checked in by matthijs, 6 years ago

build-system: Fix building with TARGET_ROOTFS_INITRAMFS=y.

This allows a booting the image through TFTP instead of having to flash
the image onto the Fonera. This needs serial access to tell the
bootloader to boot from TFTP instead of internal flash, though.

This patch was tested only on 2.0n.

File size: 3.4 KB
Line 
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
8KERNELNAME=
9ifneq (,$(findstring x86,$(BOARD)))
10  KERNELNAME="bzImage"
11endif
12ifneq (,$(findstring rdc,$(BOARD)))
13  KERNELNAME="bzImage"
14endif
15ifneq (,$(findstring ppc,$(BOARD)))
16  KERNELNAME="uImage"
17endif
18ifneq (,$(findstring avr32,$(BOARD)))
19  KERNELNAME="uImage"
20endif
21
22KERNEL_MAKEOPTS := -C $(LINUX_DIR) \
23        CROSS_COMPILE="$(KERNEL_CROSS)" \
24        ARCH="$(LINUX_KARCH)" \
25        KBUILD_HAVE_NLS=no \
26        CONFIG_SHELL="$(BASH)"
27
28INITRAMFS_EXTRA_FILES ?= $(GENERIC_PLATFORM_DIR)/image/initramfs-base-files.txt
29
30ifneq (,$(KERNEL_CC))
31  KERNEL_MAKEOPTS += CC="$(KERNEL_CC)"
32endif
33
34# defined in quilt.mk
35Kernel/Patch:=$(Kernel/Patch/Default)
36ifeq ($(strip $(CONFIG_EXTERNAL_KERNEL_TREE)),"")
37define Kernel/Prepare/Default
38        bzcat $(DL_DIR)/$(LINUX_SOURCE) | $(TAR) -C $(KERNEL_BUILD_DIR) $(TAR_OPTIONS)
39        $(Kernel/Patch)
40        touch $(LINUX_DIR)/.quilt_used
41endef
42else
43define Kernel/Prepare/Default
44        mkdir -p $(KERNEL_BUILD_DIR)
45        if [ -d $(LINUX_DIR) ]; then \
46                rmdir $(LINUX_DIR); \
47        fi
48        ln -s $(CONFIG_EXTERNAL_KERNEL_TREE) $(LINUX_DIR)
49endef
50endif
51
52ifeq ($(KERNEL),2.6)
53  ifeq ($(CONFIG_TARGET_ROOTFS_INITRAMFS),y)
54    define Kernel/SetInitramfs
55                mv $(LINUX_DIR)/.config $(LINUX_DIR)/.config.old
56                grep -v -e INITRAMFS -e CONFIG_BLK_DEV_INITRD $(LINUX_DIR)/.config.old > $(LINUX_DIR)/.config
57                echo 'CONFIG_BLK_DEV_INITRD=y' >> $(LINUX_DIR)/.config
58                echo 'CONFIG_INITRAMFS_SOURCE="$(strip $(TARGET_DIR) $(INITRAMFS_EXTRA_FILES))"' >> $(LINUX_DIR)/.config
59                echo 'CONFIG_INITRAMFS_ROOT_UID=$(shell id -u)' >> $(LINUX_DIR)/.config
60                echo 'CONFIG_INITRAMFS_ROOT_GID=$(shell id -g)' >> $(LINUX_DIR)/.config
61                $(call Kernel/SetInitramfs/Extra)
62    endef
63  else
64    define Kernel/SetInitramfs
65                mv $(LINUX_DIR)/.config $(LINUX_DIR)/.config.old
66                grep -v INITRAMFS $(LINUX_DIR)/.config.old > $(LINUX_DIR)/.config
67                echo 'CONFIG_INITRAMFS_SOURCE=""' >> $(LINUX_DIR)/.config
68                $(call Kernel/SetInitramfs/Extra)
69    endef
70  endif
71endif
72
73define Kernel/Configure/2.4
74        $(SED) "s,\-mcpu=,\-mtune=,g;" $(LINUX_DIR)/arch/mips/Makefile
75        $(_SINGLE)$(MAKE) $(KERNEL_MAKEOPTS) oldconfig include/linux/compile.h include/linux/version.h
76        $(_SINGLE)$(MAKE) $(KERNEL_MAKEOPTS) dep
77endef
78define Kernel/Configure/2.6
79        -$(_SINGLE)$(MAKE) $(KERNEL_MAKEOPTS) oldconfig prepare scripts
80endef
81define Kernel/Configure/Default
82        $(LINUX_CONFCMD) > $(LINUX_DIR)/.config.target
83        $(SCRIPT_DIR)/metadata.pl kconfig $(TMP_DIR)/.packageinfo $(TOPDIR)/.config > $(LINUX_DIR)/.config.override
84        $(SCRIPT_DIR)/kconfig.pl 'm+' $(LINUX_DIR)/.config.target $(LINUX_DIR)/.config.override > $(LINUX_DIR)/.config
85        $(call Kernel/SetInitramfs)
86        $(call Kernel/Configure/$(KERNEL))
87        rm -rf $(KERNEL_BUILD_DIR)/modules
88endef
89
90define Kernel/CompileModules/Default
91        rm -f $(LINUX_DIR)/vmlinux $(LINUX_DIR)/System.map
92        +$(MAKE) $(KERNEL_MAKEOPTS) modules
93endef
94
95define Kernel/CompileImage/Default
96        $(if $(CONFIG_TARGET_ROOTFS_INITRAMFS),,rm -f $(TARGET_DIR)/init)
97        +$(MAKE) $(KERNEL_MAKEOPTS) $(KERNELNAME)
98        $(KERNEL_CROSS)objcopy -O binary -R .reginfo -R .note -R .comment -R .mdebug -S $(LINUX_DIR)/vmlinux $(LINUX_KERNEL)
99        $(KERNEL_CROSS)objcopy -R .reginfo -R .note -R .comment -R .mdebug -S $(LINUX_DIR)/vmlinux $(KERNEL_BUILD_DIR)/vmlinux.elf
100endef
101
102define Kernel/Clean/Default
103        rm -f $(KERNEL_BUILD_DIR)/linux-$(LINUX_VERSION)/.configured
104        rm -f $(LINUX_KERNEL)
105        $(_SINGLE)$(MAKE) -C $(KERNEL_BUILD_DIR)/linux-$(LINUX_VERSION) clean
106endef
107
108
Note: See TracBrowser for help on using the repository browser.