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