Thomas Petazzoni | 487e21c | 2010-04-03 18:46:46 +0200 | [diff] [blame] | 1 | ############################################################################### |
| 2 | # |
Thomas Petazzoni | af52661 | 2011-07-11 22:46:07 +0200 | [diff] [blame] | 3 | # Linux kernel target |
Thomas Petazzoni | 487e21c | 2010-04-03 18:46:46 +0200 | [diff] [blame] | 4 | # |
| 5 | ############################################################################### |
Thomas Petazzoni | af52661 | 2011-07-11 22:46:07 +0200 | [diff] [blame] | 6 | LINUX_VERSION=$(call qstrip,$(BR2_LINUX_KERNEL_VERSION)) |
Thomas Petazzoni | 487e21c | 2010-04-03 18:46:46 +0200 | [diff] [blame] | 7 | |
Thomas Petazzoni | af52661 | 2011-07-11 22:46:07 +0200 | [diff] [blame] | 8 | # Compute LINUX_SOURCE and LINUX_SITE from the configuration |
| 9 | ifeq ($(LINUX_VERSION),custom) |
Thomas Petazzoni | 9af0ee8 | 2011-07-11 22:46:08 +0200 | [diff] [blame] | 10 | LINUX_TARBALL = $(call qstrip,$(BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION)) |
| 11 | LINUX_SITE = $(dir $(LINUX_TARBALL)) |
| 12 | LINUX_SOURCE = $(notdir $(LINUX_TARBALL)) |
Thomas Petazzoni | 205fb19 | 2011-07-11 22:46:11 +0200 | [diff] [blame^] | 13 | else ifeq ($(BR2_LINUX_KERNEL_CUSTOM_GIT),y) |
| 14 | LINUX_SITE = $(call qstrip,$(BR2_LINUX_KERNEL_CUSTOM_GIT_REPO_URL)) |
| 15 | LINUX_SITE_METHOD = git |
Thomas Petazzoni | 487e21c | 2010-04-03 18:46:46 +0200 | [diff] [blame] | 16 | else |
Thomas Petazzoni | 9af0ee8 | 2011-07-11 22:46:08 +0200 | [diff] [blame] | 17 | LINUX_SOURCE = linux-$(LINUX_VERSION).tar.bz2 |
| 18 | LINUX_SITE = $(BR2_KERNEL_MIRROR)/linux/kernel/v2.6/ |
Thomas Petazzoni | 487e21c | 2010-04-03 18:46:46 +0200 | [diff] [blame] | 19 | endif |
| 20 | |
Thomas Petazzoni | 9af0ee8 | 2011-07-11 22:46:08 +0200 | [diff] [blame] | 21 | LINUX_PATCHES = $(call qstrip,$(BR2_LINUX_KERNEL_PATCH)) |
| 22 | |
| 23 | LINUX_INSTALL_IMAGES = YES |
| 24 | LINUX_DEPENDENCIES += host-module-init-tools |
Thomas Petazzoni | 487e21c | 2010-04-03 18:46:46 +0200 | [diff] [blame] | 25 | |
Thomas Petazzoni | af52661 | 2011-07-11 22:46:07 +0200 | [diff] [blame] | 26 | LINUX_MAKE_FLAGS = \ |
Thomas Petazzoni | 487e21c | 2010-04-03 18:46:46 +0200 | [diff] [blame] | 27 | HOSTCC="$(HOSTCC)" \ |
| 28 | HOSTCFLAGS="$(HOSTCFLAGS)" \ |
| 29 | ARCH=$(KERNEL_ARCH) \ |
| 30 | INSTALL_MOD_PATH=$(TARGET_DIR) \ |
Martin Hicks | d10e46f | 2011-02-01 12:13:00 -0500 | [diff] [blame] | 31 | CROSS_COMPILE="$(CCACHE) $(TARGET_CROSS)" \ |
Thomas Petazzoni | 487e21c | 2010-04-03 18:46:46 +0200 | [diff] [blame] | 32 | LZMA="$(LZMA)" |
| 33 | |
| 34 | # Get the real Linux version, which tells us where kernel modules are |
| 35 | # going to be installed in the target filesystem. |
Thomas Petazzoni | af52661 | 2011-07-11 22:46:07 +0200 | [diff] [blame] | 36 | LINUX_VERSION_PROBED = $(shell $(MAKE) $(LINUX_MAKE_FLAGS) -C $(LINUX_DIR) --no-print-directory -s kernelrelease) |
Thomas Petazzoni | 487e21c | 2010-04-03 18:46:46 +0200 | [diff] [blame] | 37 | |
Martin Hicks | e2ed6c8 | 2011-03-21 13:39:43 -0400 | [diff] [blame] | 38 | ifeq ($(BR2_LINUX_KERNEL_IMAGE_TARGET_CUSTOM),y) |
Thomas Petazzoni | af52661 | 2011-07-11 22:46:07 +0200 | [diff] [blame] | 39 | LINUX_IMAGE_NAME=$(call qstrip,$(BR2_LINUX_KERNEL_IMAGE_TARGET_NAME)) |
Martin Hicks | e2ed6c8 | 2011-03-21 13:39:43 -0400 | [diff] [blame] | 40 | else |
Thomas Petazzoni | 487e21c | 2010-04-03 18:46:46 +0200 | [diff] [blame] | 41 | ifeq ($(BR2_LINUX_KERNEL_UIMAGE),y) |
Mike Frysinger | 871db07 | 2011-02-07 00:49:11 -0500 | [diff] [blame] | 42 | ifeq ($(KERNEL_ARCH),blackfin) |
| 43 | # a uImage, but with a different file name |
Thomas Petazzoni | af52661 | 2011-07-11 22:46:07 +0200 | [diff] [blame] | 44 | LINUX_IMAGE_NAME=vmImage |
Mike Frysinger | 871db07 | 2011-02-07 00:49:11 -0500 | [diff] [blame] | 45 | else |
Thomas Petazzoni | af52661 | 2011-07-11 22:46:07 +0200 | [diff] [blame] | 46 | LINUX_IMAGE_NAME=uImage |
Mike Frysinger | 871db07 | 2011-02-07 00:49:11 -0500 | [diff] [blame] | 47 | endif |
Thomas Petazzoni | af52661 | 2011-07-11 22:46:07 +0200 | [diff] [blame] | 48 | LINUX_DEPENDENCIES+=host-uboot-mkimage |
Thomas Petazzoni | 487e21c | 2010-04-03 18:46:46 +0200 | [diff] [blame] | 49 | else ifeq ($(BR2_LINUX_KERNEL_BZIMAGE),y) |
Thomas Petazzoni | af52661 | 2011-07-11 22:46:07 +0200 | [diff] [blame] | 50 | LINUX_IMAGE_NAME=bzImage |
Thomas Petazzoni | 487e21c | 2010-04-03 18:46:46 +0200 | [diff] [blame] | 51 | else ifeq ($(BR2_LINUX_KERNEL_ZIMAGE),y) |
Thomas Petazzoni | af52661 | 2011-07-11 22:46:07 +0200 | [diff] [blame] | 52 | LINUX_IMAGE_NAME=zImage |
Thomas Petazzoni | b626dc0 | 2010-09-01 15:26:24 +0200 | [diff] [blame] | 53 | else ifeq ($(BR2_LINUX_KERNEL_VMLINUX_BIN),y) |
Thomas Petazzoni | af52661 | 2011-07-11 22:46:07 +0200 | [diff] [blame] | 54 | LINUX_IMAGE_NAME=vmlinux.bin |
Thomas Petazzoni | 71c0502 | 2010-12-05 21:53:23 +0100 | [diff] [blame] | 55 | else ifeq ($(BR2_LINUX_KERNEL_VMLINUX),y) |
Thomas Petazzoni | af52661 | 2011-07-11 22:46:07 +0200 | [diff] [blame] | 56 | LINUX_IMAGE_NAME=vmlinux |
Thomas Petazzoni | 487e21c | 2010-04-03 18:46:46 +0200 | [diff] [blame] | 57 | endif |
Martin Hicks | e2ed6c8 | 2011-03-21 13:39:43 -0400 | [diff] [blame] | 58 | endif |
Thomas Petazzoni | 487e21c | 2010-04-03 18:46:46 +0200 | [diff] [blame] | 59 | |
Thomas Petazzoni | 84c4a10 | 2010-12-05 21:53:26 +0100 | [diff] [blame] | 60 | # Compute the arch path, since i386 and x86_64 are in arch/x86 and not |
| 61 | # in arch/$(KERNEL_ARCH). Even if the kernel creates symbolic links |
| 62 | # for bzImage, arch/i386 and arch/x86_64 do not exist when copying the |
| 63 | # defconfig file. |
| 64 | ifeq ($(KERNEL_ARCH),i386) |
Thomas Petazzoni | af52661 | 2011-07-11 22:46:07 +0200 | [diff] [blame] | 65 | KERNEL_ARCH_PATH=$(LINUX_DIR)/arch/x86 |
Thomas Petazzoni | 84c4a10 | 2010-12-05 21:53:26 +0100 | [diff] [blame] | 66 | else ifeq ($(KERNEL_ARCH),x86_64) |
Thomas Petazzoni | af52661 | 2011-07-11 22:46:07 +0200 | [diff] [blame] | 67 | KERNEL_ARCH_PATH=$(LINUX_DIR)/arch/x86 |
Thomas Petazzoni | 84c4a10 | 2010-12-05 21:53:26 +0100 | [diff] [blame] | 68 | else |
Thomas Petazzoni | af52661 | 2011-07-11 22:46:07 +0200 | [diff] [blame] | 69 | KERNEL_ARCH_PATH=$(LINUX_DIR)/arch/$(KERNEL_ARCH) |
Thomas Petazzoni | 84c4a10 | 2010-12-05 21:53:26 +0100 | [diff] [blame] | 70 | endif |
| 71 | |
Thomas Petazzoni | 71c0502 | 2010-12-05 21:53:23 +0100 | [diff] [blame] | 72 | ifeq ($(BR2_LINUX_KERNEL_VMLINUX),y) |
Thomas Petazzoni | af52661 | 2011-07-11 22:46:07 +0200 | [diff] [blame] | 73 | LINUX_IMAGE_PATH=$(LINUX_DIR)/$(LINUX_IMAGE_NAME) |
Thomas Petazzoni | 71c0502 | 2010-12-05 21:53:23 +0100 | [diff] [blame] | 74 | else |
Thomas Petazzoni | 9665263 | 2010-09-07 15:08:07 +0200 | [diff] [blame] | 75 | ifeq ($(KERNEL_ARCH),avr32) |
Thomas Petazzoni | af52661 | 2011-07-11 22:46:07 +0200 | [diff] [blame] | 76 | LINUX_IMAGE_PATH=$(KERNEL_ARCH_PATH)/boot/images/$(LINUX_IMAGE_NAME) |
Thomas Petazzoni | 9665263 | 2010-09-07 15:08:07 +0200 | [diff] [blame] | 77 | else |
Thomas Petazzoni | af52661 | 2011-07-11 22:46:07 +0200 | [diff] [blame] | 78 | LINUX_IMAGE_PATH=$(KERNEL_ARCH_PATH)/boot/$(LINUX_IMAGE_NAME) |
Thomas Petazzoni | 9665263 | 2010-09-07 15:08:07 +0200 | [diff] [blame] | 79 | endif |
Thomas Petazzoni | 71c0502 | 2010-12-05 21:53:23 +0100 | [diff] [blame] | 80 | endif # BR2_LINUX_KERNEL_VMLINUX |
Thomas Petazzoni | 487e21c | 2010-04-03 18:46:46 +0200 | [diff] [blame] | 81 | |
Thomas Petazzoni | 9af0ee8 | 2011-07-11 22:46:08 +0200 | [diff] [blame] | 82 | define LINUX_DOWNLOAD_PATCHES |
| 83 | $(if $(LINUX_PATCHES), |
| 84 | @$(call MESSAGE,"Download additional patches")) |
| 85 | $(foreach patch,$(filter ftp://% http://%,$(LINUX_PATCHES)),\ |
Thomas Petazzoni | 55b0a37 | 2010-12-05 21:53:18 +0100 | [diff] [blame] | 86 | $(call DOWNLOAD,$(dir $(patch)),$(notdir $(patch)))$(sep)) |
Thomas Petazzoni | 9af0ee8 | 2011-07-11 22:46:08 +0200 | [diff] [blame] | 87 | endef |
Thomas Petazzoni | 487e21c | 2010-04-03 18:46:46 +0200 | [diff] [blame] | 88 | |
Thomas Petazzoni | 9af0ee8 | 2011-07-11 22:46:08 +0200 | [diff] [blame] | 89 | LINUX_POST_DOWNLOAD_HOOKS += LINUX_DOWNLOAD_PATCHES |
Thomas Petazzoni | 487e21c | 2010-04-03 18:46:46 +0200 | [diff] [blame] | 90 | |
Thomas Petazzoni | 9af0ee8 | 2011-07-11 22:46:08 +0200 | [diff] [blame] | 91 | define LINUX_APPLY_PATCHES |
| 92 | for p in $(LINUX_PATCHES) ; do \ |
Thomas Petazzoni | 55b0a37 | 2010-12-05 21:53:18 +0100 | [diff] [blame] | 93 | if echo $$p | grep -q -E "^ftp://|^http://" ; then \ |
| 94 | toolchain/patch-kernel.sh $(@D) $(DL_DIR) `basename $$p` ; \ |
| 95 | elif test -d $$p ; then \ |
| 96 | toolchain/patch-kernel.sh $(@D) $$p linux-\*.patch ; \ |
| 97 | else \ |
| 98 | toolchain/patch-kernel.sh $(@D) `dirname $$p` `basename $$p` ; \ |
| 99 | fi \ |
| 100 | done |
Thomas Petazzoni | 9af0ee8 | 2011-07-11 22:46:08 +0200 | [diff] [blame] | 101 | endef |
| 102 | |
| 103 | LINUX_POST_PATCH_HOOKS += LINUX_APPLY_PATCHES |
Thomas Petazzoni | 487e21c | 2010-04-03 18:46:46 +0200 | [diff] [blame] | 104 | |
| 105 | |
Thomas Petazzoni | 487e21c | 2010-04-03 18:46:46 +0200 | [diff] [blame] | 106 | ifeq ($(BR2_LINUX_KERNEL_USE_DEFCONFIG),y) |
Thomas Petazzoni | 9af0ee8 | 2011-07-11 22:46:08 +0200 | [diff] [blame] | 107 | KERNEL_SOURCE_CONFIG = $(KERNEL_ARCH_PATH)/configs/$(call qstrip,$(BR2_LINUX_KERNEL_DEFCONFIG))_defconfig |
Thomas Petazzoni | 487e21c | 2010-04-03 18:46:46 +0200 | [diff] [blame] | 108 | else ifeq ($(BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG),y) |
Thomas Petazzoni | 9af0ee8 | 2011-07-11 22:46:08 +0200 | [diff] [blame] | 109 | KERNEL_SOURCE_CONFIG = $(BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE) |
| 110 | endif |
| 111 | |
| 112 | define LINUX_CONFIGURE_CMDS |
| 113 | cp $(KERNEL_SOURCE_CONFIG) $(KERNEL_ARCH_PATH)/configs/buildroot_defconfig |
Thomas Petazzoni | af52661 | 2011-07-11 22:46:07 +0200 | [diff] [blame] | 114 | $(TARGET_MAKE_ENV) $(MAKE1) $(LINUX_MAKE_FLAGS) -C $(@D) buildroot_defconfig |
Thomas Petazzoni | 84c4a10 | 2010-12-05 21:53:26 +0100 | [diff] [blame] | 115 | rm $(KERNEL_ARCH_PATH)/configs/buildroot_defconfig |
Thomas Petazzoni | 9af0ee8 | 2011-07-11 22:46:08 +0200 | [diff] [blame] | 116 | $(if $(BR2_ARM_EABI), |
| 117 | $(call KCONFIG_ENABLE_OPT,CONFIG_AEABI,$(@D)/.config), |
| 118 | $(call KCONFIG_DISABLE_OPT,CONFIG_AEABI,$(@D)/.config)) |
Thomas Petazzoni | f507921 | 2010-06-13 19:19:38 +0200 | [diff] [blame] | 119 | # As the kernel gets compiled before root filesystems are |
| 120 | # built, we create a fake initramfs file list. It'll be |
| 121 | # replaced later by the real list, and the kernel will be |
| 122 | # rebuilt using the linux26-rebuild-with-initramfs target. |
Thomas Petazzoni | 9af0ee8 | 2011-07-11 22:46:08 +0200 | [diff] [blame] | 123 | $(if $(BR2_TARGET_ROOTFS_INITRAMFS), |
| 124 | touch $(BINARIES_DIR)/rootfs.initramfs |
| 125 | $(call KCONFIG_ENABLE_OPT,CONFIG_BLK_DEV_INITRD,$(@D)/.config) |
| 126 | $(call KCONFIG_SET_OPT,CONFIG_INITRAMFS_SOURCE,\"$(BINARIES_DIR)/rootfs.initramfs\",$(@D)/.config) |
| 127 | $(call KCONFIG_SET_OPT,CONFIG_INITRAMFS_ROOT_UID,0,$(@D)/.config) |
| 128 | $(call KCONFIG_SET_OPT,CONFIG_INITRAMFS_ROOT_GID,0,$(@D)/.config) |
| 129 | $(call KCONFIG_DISABLE_OPT,CONFIG_INITRAMFS_COMPRESSION_NONE,$(@D)/.config) |
| 130 | $(call KCONFIG_ENABLE_OPT,CONFIG_INITRAMFS_COMPRESSION_GZIP,$(@D)/.config)) |
| 131 | $(if $(BR2_ROOTFS_DEVICE_CREATION_STATIC),, |
| 132 | $(call KCONFIG_ENABLE_OPT,CONFIG_DEVTMPFS,$(@D)/.config) |
| 133 | $(call KCONFIG_ENABLE_OPT,CONFIG_DEVTMPFS_MOUNT,$(@D)/.config)) |
| 134 | $(if $(BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_MDEV), |
| 135 | $(call KCONFIG_SET_OPT,CONFIG_UEVENT_HELPER_PATH,\"/sbin/mdev\",$(@D)/.config)) |
| 136 | yes '' | $(TARGET_MAKE_ENV) $(MAKE1) $(LINUX_MAKE_FLAGS) -C $(@D) oldconfig |
| 137 | endef |
Thomas Petazzoni | 487e21c | 2010-04-03 18:46:46 +0200 | [diff] [blame] | 138 | |
Thomas Petazzoni | 4944e8c | 2010-06-13 19:18:34 +0200 | [diff] [blame] | 139 | # Compilation. We make sure the kernel gets rebuilt when the |
| 140 | # configuration has changed. |
Thomas Petazzoni | 9af0ee8 | 2011-07-11 22:46:08 +0200 | [diff] [blame] | 141 | define LINUX_BUILD_CMDS |
Thomas Petazzoni | af52661 | 2011-07-11 22:46:07 +0200 | [diff] [blame] | 142 | $(TARGET_MAKE_ENV) $(MAKE) $(LINUX_MAKE_FLAGS) -C $(@D) $(LINUX_IMAGE_NAME) |
Peter Korsgaard | ce03b89 | 2011-07-07 23:40:09 +0200 | [diff] [blame] | 143 | @if grep -q "CONFIG_MODULES=y" $(@D)/.config; then \ |
Thomas Petazzoni | af52661 | 2011-07-11 22:46:07 +0200 | [diff] [blame] | 144 | $(TARGET_MAKE_ENV) $(MAKE) $(LINUX_MAKE_FLAGS) -C $(@D) modules ; \ |
Thomas Petazzoni | 487e21c | 2010-04-03 18:46:46 +0200 | [diff] [blame] | 145 | fi |
Thomas Petazzoni | 9af0ee8 | 2011-07-11 22:46:08 +0200 | [diff] [blame] | 146 | endef |
Thomas Petazzoni | 487e21c | 2010-04-03 18:46:46 +0200 | [diff] [blame] | 147 | |
Thomas Petazzoni | 9af0ee8 | 2011-07-11 22:46:08 +0200 | [diff] [blame] | 148 | |
Thomas Petazzoni | eff25f4 | 2011-07-05 21:53:54 +0200 | [diff] [blame] | 149 | ifeq ($(BR2_LINUX_KERNEL_INSTALL_TARGET),y) |
Thomas Petazzoni | 9af0ee8 | 2011-07-11 22:46:08 +0200 | [diff] [blame] | 150 | define LINUX_INSTALL_KERNEL_IMAGE_TO_TARGET |
Thomas Petazzoni | af52661 | 2011-07-11 22:46:07 +0200 | [diff] [blame] | 151 | install -m 0644 -D $(LINUX_IMAGE_PATH) $(TARGET_DIR)/boot/$(LINUX_IMAGE_NAME) |
Thomas Petazzoni | 9af0ee8 | 2011-07-11 22:46:08 +0200 | [diff] [blame] | 152 | endef |
Thomas Petazzoni | eff25f4 | 2011-07-05 21:53:54 +0200 | [diff] [blame] | 153 | endif |
Thomas Petazzoni | 9af0ee8 | 2011-07-11 22:46:08 +0200 | [diff] [blame] | 154 | |
| 155 | define LINUX_INSTALL_IMAGES_CMDS |
Thomas Petazzoni | af52661 | 2011-07-11 22:46:07 +0200 | [diff] [blame] | 156 | cp $(LINUX_IMAGE_PATH) $(BINARIES_DIR) |
Thomas Petazzoni | 9af0ee8 | 2011-07-11 22:46:08 +0200 | [diff] [blame] | 157 | endef |
| 158 | |
| 159 | define LINUX_INSTALL_TARGET_CMDS |
| 160 | $(LINUX_INSTALL_KERNEL_IMAGE_TO_TARGET) |
Thomas Petazzoni | 487e21c | 2010-04-03 18:46:46 +0200 | [diff] [blame] | 161 | # Install modules and remove symbolic links pointing to build |
| 162 | # directories, not relevant on the target |
Peter Korsgaard | ce03b89 | 2011-07-07 23:40:09 +0200 | [diff] [blame] | 163 | @if grep -q "CONFIG_MODULES=y" $(@D)/.config; then \ |
Thomas Petazzoni | af52661 | 2011-07-11 22:46:07 +0200 | [diff] [blame] | 164 | $(TARGET_MAKE_ENV) $(MAKE1) $(LINUX_MAKE_FLAGS) -C $(@D) \ |
Mike Frysinger | b7a2358 | 2010-12-08 04:27:06 -0500 | [diff] [blame] | 165 | DEPMOD="$(HOST_DIR)/usr/sbin/depmod" modules_install ; \ |
Thomas Petazzoni | af52661 | 2011-07-11 22:46:07 +0200 | [diff] [blame] | 166 | rm -f $(TARGET_DIR)/lib/modules/$(LINUX_VERSION_PROBED)/build ; \ |
| 167 | rm -f $(TARGET_DIR)/lib/modules/$(LINUX_VERSION_PROBED)/source ; \ |
Thomas Petazzoni | 487e21c | 2010-04-03 18:46:46 +0200 | [diff] [blame] | 168 | fi |
Thomas Petazzoni | 9af0ee8 | 2011-07-11 22:46:08 +0200 | [diff] [blame] | 169 | endef |
Thomas Petazzoni | 487e21c | 2010-04-03 18:46:46 +0200 | [diff] [blame] | 170 | |
Thomas Petazzoni | 9af0ee8 | 2011-07-11 22:46:08 +0200 | [diff] [blame] | 171 | $(eval $(call GENTARGETS,,linux)) |
Thomas Petazzoni | 487e21c | 2010-04-03 18:46:46 +0200 | [diff] [blame] | 172 | |
Thomas Petazzoni | af52661 | 2011-07-11 22:46:07 +0200 | [diff] [blame] | 173 | linux-menuconfig linux-xconfig linux-gconfig linux-nconfig linux26-menuconfig linux26-xconfig linux26-gconfig linux26-nconfig: dirs $(LINUX_DIR)/.stamp_configured |
| 174 | $(MAKE) $(LINUX_MAKE_FLAGS) -C $(LINUX_DIR) \ |
Peter Korsgaard | c1ce30f | 2010-12-27 22:50:18 +0100 | [diff] [blame] | 175 | $(subst linux-,,$(subst linux26-,,$@)) |
Thomas Petazzoni | 9af0ee8 | 2011-07-11 22:46:08 +0200 | [diff] [blame] | 176 | rm -f $(LINUX_DIR)/.stamp_{built,target_installed,images_installed} |
Thomas Petazzoni | 4944e8c | 2010-06-13 19:18:34 +0200 | [diff] [blame] | 177 | |
Thomas Petazzoni | f507921 | 2010-06-13 19:19:38 +0200 | [diff] [blame] | 178 | # Support for rebuilding the kernel after the initramfs file list has |
| 179 | # been generated in $(BINARIES_DIR)/rootfs.initramfs. |
Thomas Petazzoni | 9af0ee8 | 2011-07-11 22:46:08 +0200 | [diff] [blame] | 180 | $(LINUX_DIR)/.stamp_initramfs_rebuilt: $(LINUX_DIR)/.stamp_target_installed $(LINUX_DIR)/.stamp_images_installed $(BINARIES_DIR)/rootfs.initramfs |
Thomas Petazzoni | f507921 | 2010-06-13 19:19:38 +0200 | [diff] [blame] | 181 | @$(call MESSAGE,"Rebuilding kernel with initramfs") |
| 182 | # Remove the previously generated initramfs which was empty, |
| 183 | # to make sure the kernel will actually regenerate it. |
Mike Frysinger | f80fdd2 | 2010-11-16 09:39:10 -0500 | [diff] [blame] | 184 | $(RM) -f $(@D)/usr/initramfs_data.cpio* |
Thomas Petazzoni | f507921 | 2010-06-13 19:19:38 +0200 | [diff] [blame] | 185 | # Build the kernel. |
Thomas Petazzoni | af52661 | 2011-07-11 22:46:07 +0200 | [diff] [blame] | 186 | $(TARGET_MAKE_ENV) $(MAKE) $(LINUX_MAKE_FLAGS) -C $(@D) $(LINUX_IMAGE_NAME) |
Thomas Petazzoni | f507921 | 2010-06-13 19:19:38 +0200 | [diff] [blame] | 187 | # Copy the kernel image to its final destination |
Thomas Petazzoni | af52661 | 2011-07-11 22:46:07 +0200 | [diff] [blame] | 188 | cp $(LINUX_IMAGE_PATH) $(BINARIES_DIR) |
Thomas Petazzoni | f507921 | 2010-06-13 19:19:38 +0200 | [diff] [blame] | 189 | $(Q)touch $@ |
| 190 | |
| 191 | # The initramfs building code must make sure this target gets called |
| 192 | # after it generated the initramfs list of files. |
Thomas Petazzoni | af52661 | 2011-07-11 22:46:07 +0200 | [diff] [blame] | 193 | linux-rebuild-with-initramfs linux26-rebuild-with-initramfs: $(LINUX_DIR)/.stamp_initramfs_rebuilt |
Thomas Petazzoni | f507921 | 2010-06-13 19:19:38 +0200 | [diff] [blame] | 194 | |
Thomas Petazzoni | af5dc83 | 2010-07-29 15:40:28 +0200 | [diff] [blame] | 195 | # Checks to give errors that the user can understand |
Peter Korsgaard | 3e5e39a | 2010-09-28 14:43:25 +0200 | [diff] [blame] | 196 | ifeq ($(filter source,$(MAKECMDGOALS)),) |
Thomas Petazzoni | af5dc83 | 2010-07-29 15:40:28 +0200 | [diff] [blame] | 197 | ifeq ($(BR2_LINUX_KERNEL_USE_DEFCONFIG),y) |
| 198 | ifeq ($(call qstrip,$(BR2_LINUX_KERNEL_DEFCONFIG)),) |
| 199 | $(error No kernel defconfig name specified, check your BR2_LINUX_KERNEL_DEFCONFIG setting) |
| 200 | endif |
| 201 | endif |
| 202 | |
| 203 | ifeq ($(BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG),y) |
| 204 | ifeq ($(call qstrip,$(BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE)),) |
| 205 | $(error No kernel configuration file specified, check your BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE setting) |
| 206 | endif |
Peter Korsgaard | 3e5e39a | 2010-09-28 14:43:25 +0200 | [diff] [blame] | 207 | endif |
| 208 | |
| 209 | endif |