mirror of
https://git.busybox.net/buildroot.git
synced 2025-01-11 15:03:25 +08:00
00daf37c4f
When Buildroot is configured to append the root filesystem to the Linux kernel as initramfs, Buildroot sets the path to the initramfs source dynamically in the Linux configuration file. As this path is specified as an absolute path, typically being different for different users of the same project (e.g. containing a username), saving the configuration to a version control system (for example using 'make linux-update-defconfig') would result in a difference for this path at every invocation by a different user. Although this is technically not an issue, it is confusing that this generates a difference. Address this issue by using a not-yet-expanded make variable to specify the path to the initramfs source. That variable will be expanded by the Linux build system, which uses it both as a Makefile variable and a shell variable; thus, it needs to be specified in LINUX_MAKE_ENV (so it is exported and available in sub-processes of make). Any saved configuration file would simply contain the reference to the not-yet-expanded variable. As in the Linux build system, the config variables are both read from make as from a shell script, we cannot use $() syntax as this would be interpreted as a command invocation by the shell. Instead, use ${} syntax which is interpreted as variable reference both by the shell as by make. [Thomas: - Really make the patch work by using $(LINUX_MAKE_ENV) instead of $(TARGET_MAKE_ENV). Otherwise, the new BR2_BINARIES_DIR variable is not passed at all stages of the build process, which makes the build fail when an initramfs is used.] Signed-off-by: Thomas De Schampheleire <thomas.de.schampheleire@gmail.com> Signed-off-by: "Yann E. Morin" <yann.morin.1998@free.fr> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
360 lines
13 KiB
Makefile
360 lines
13 KiB
Makefile
################################################################################
|
|
#
|
|
# Linux kernel target
|
|
#
|
|
################################################################################
|
|
|
|
LINUX_VERSION = $(call qstrip,$(BR2_LINUX_KERNEL_VERSION))
|
|
LINUX_LICENSE = GPLv2
|
|
LINUX_LICENSE_FILES = COPYING
|
|
|
|
# Compute LINUX_SOURCE and LINUX_SITE from the configuration
|
|
ifeq ($(BR2_LINUX_KERNEL_CUSTOM_TARBALL),y)
|
|
LINUX_TARBALL = $(call qstrip,$(BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION))
|
|
LINUX_SITE = $(patsubst %/,%,$(dir $(LINUX_TARBALL)))
|
|
LINUX_SOURCE = $(notdir $(LINUX_TARBALL))
|
|
else ifeq ($(BR2_LINUX_KERNEL_CUSTOM_LOCAL),y)
|
|
LINUX_SITE = $(call qstrip,$(BR2_LINUX_KERNEL_CUSTOM_LOCAL_PATH))
|
|
LINUX_SITE_METHOD = local
|
|
else ifeq ($(BR2_LINUX_KERNEL_CUSTOM_GIT),y)
|
|
LINUX_SITE = $(call qstrip,$(BR2_LINUX_KERNEL_CUSTOM_REPO_URL))
|
|
LINUX_SITE_METHOD = git
|
|
else ifeq ($(BR2_LINUX_KERNEL_CUSTOM_HG),y)
|
|
LINUX_SITE = $(call qstrip,$(BR2_LINUX_KERNEL_CUSTOM_REPO_URL))
|
|
LINUX_SITE_METHOD = hg
|
|
else
|
|
LINUX_SOURCE = linux-$(LINUX_VERSION).tar.xz
|
|
# In X.Y.Z, get X and Y. We replace dots and dashes by spaces in order
|
|
# to use the $(word) function. We support versions such as 3.1,
|
|
# 2.6.32, 2.6.32-rc1, 3.0-rc6, etc.
|
|
ifeq ($(findstring x2.6.,x$(LINUX_VERSION)),x2.6.)
|
|
LINUX_SITE = $(BR2_KERNEL_MIRROR)/linux/kernel/v2.6
|
|
else
|
|
LINUX_SITE = $(BR2_KERNEL_MIRROR)/linux/kernel/v3.x
|
|
endif
|
|
# release candidates are in testing/ subdir
|
|
ifneq ($(findstring -rc,$(LINUX_VERSION)),)
|
|
LINUX_SITE := $(LINUX_SITE)/testing/
|
|
endif # -rc
|
|
endif
|
|
|
|
LINUX_PATCHES = $(call qstrip,$(BR2_LINUX_KERNEL_PATCH))
|
|
|
|
LINUX_INSTALL_IMAGES = YES
|
|
LINUX_DEPENDENCIES += host-kmod host-lzop
|
|
|
|
ifeq ($(BR2_LINUX_KERNEL_UBOOT_IMAGE),y)
|
|
LINUX_DEPENDENCIES += host-uboot-tools
|
|
endif
|
|
|
|
LINUX_MAKE_FLAGS = \
|
|
HOSTCC="$(HOSTCC)" \
|
|
HOSTCFLAGS="$(HOSTCFLAGS)" \
|
|
ARCH=$(KERNEL_ARCH) \
|
|
INSTALL_MOD_PATH=$(TARGET_DIR) \
|
|
CROSS_COMPILE="$(CCACHE) $(TARGET_CROSS)" \
|
|
DEPMOD=$(HOST_DIR)/sbin/depmod
|
|
|
|
LINUX_MAKE_ENV = \
|
|
$(TARGET_MAKE_ENV) \
|
|
BR_BINARIES_DIR=$(BINARIES_DIR)
|
|
|
|
# Get the real Linux version, which tells us where kernel modules are
|
|
# going to be installed in the target filesystem.
|
|
LINUX_VERSION_PROBED = $(shell $(MAKE) $(LINUX_MAKE_FLAGS) -C $(LINUX_DIR) --no-print-directory -s kernelrelease)
|
|
|
|
ifeq ($(BR2_LINUX_KERNEL_USE_INTREE_DTS),y)
|
|
KERNEL_DTS_NAME = $(call qstrip,$(BR2_LINUX_KERNEL_INTREE_DTS_NAME))
|
|
else ifeq ($(BR2_LINUX_KERNEL_USE_CUSTOM_DTS),y)
|
|
KERNEL_DTS_NAME = $(basename $(notdir $(call qstrip,$(BR2_LINUX_KERNEL_CUSTOM_DTS_PATH))))
|
|
endif
|
|
|
|
ifeq ($(BR2_LINUX_KERNEL_DTS_SUPPORT)$(KERNEL_DTS_NAME),y)
|
|
$(error No kernel device tree source specified, check your \
|
|
BR2_LINUX_KERNEL_USE_INTREE_DTS / BR2_LINUX_KERNEL_USE_CUSTOM_DTS settings)
|
|
endif
|
|
|
|
ifeq ($(BR2_LINUX_KERNEL_APPENDED_DTB),y)
|
|
ifneq ($(words $(KERNEL_DTS_NAME)),1)
|
|
$(error Kernel with appended device tree needs exactly one DTS source. \
|
|
Check BR2_LINUX_KERNEL_INTREE_DTS_NAME or BR2_LINUX_KERNEL_CUSTOM_DTS_PATH.)
|
|
endif
|
|
endif
|
|
|
|
KERNEL_DTBS = $(addsuffix .dtb,$(KERNEL_DTS_NAME))
|
|
|
|
ifeq ($(BR2_LINUX_KERNEL_IMAGE_TARGET_CUSTOM),y)
|
|
LINUX_IMAGE_NAME = $(call qstrip,$(BR2_LINUX_KERNEL_IMAGE_NAME))
|
|
LINUX_TARGET_NAME = $(call qstrip,$(BR2_LINUX_KERNEL_IMAGE_TARGET_NAME))
|
|
ifeq ($(LINUX_IMAGE_NAME),)
|
|
LINUX_IMAGE_NAME = $(LINUX_TARGET_NAME)
|
|
endif
|
|
else
|
|
ifeq ($(BR2_LINUX_KERNEL_UIMAGE),y)
|
|
LINUX_IMAGE_NAME = uImage
|
|
else ifeq ($(BR2_LINUX_KERNEL_APPENDED_UIMAGE),y)
|
|
LINUX_IMAGE_NAME = uImage
|
|
else ifeq ($(BR2_LINUX_KERNEL_BZIMAGE),y)
|
|
LINUX_IMAGE_NAME = bzImage
|
|
else ifeq ($(BR2_LINUX_KERNEL_ZIMAGE),y)
|
|
LINUX_IMAGE_NAME = zImage
|
|
else ifeq ($(BR2_LINUX_KERNEL_APPENDED_ZIMAGE),y)
|
|
LINUX_IMAGE_NAME = zImage
|
|
else ifeq ($(BR2_LINUX_KERNEL_CUIMAGE),y)
|
|
LINUX_IMAGE_NAME = cuImage.$(KERNEL_DTS_NAME)
|
|
else ifeq ($(BR2_LINUX_KERNEL_SIMPLEIMAGE),y)
|
|
LINUX_IMAGE_NAME = simpleImage.$(KERNEL_DTS_NAME)
|
|
else ifeq ($(BR2_LINUX_KERNEL_LINUX_BIN),y)
|
|
LINUX_IMAGE_NAME = linux.bin
|
|
else ifeq ($(BR2_LINUX_KERNEL_VMLINUX_BIN),y)
|
|
LINUX_IMAGE_NAME = vmlinux.bin
|
|
else ifeq ($(BR2_LINUX_KERNEL_VMLINUX),y)
|
|
LINUX_IMAGE_NAME = vmlinux
|
|
else ifeq ($(BR2_LINUX_KERNEL_VMLINUZ),y)
|
|
LINUX_IMAGE_NAME = vmlinuz
|
|
endif
|
|
# The if-else blocks above are all the image types we know of, and all
|
|
# come from a Kconfig choice, so we know we have LINUX_IMAGE_NAME set
|
|
# to something
|
|
LINUX_TARGET_NAME = $(LINUX_IMAGE_NAME)
|
|
endif
|
|
|
|
LINUX_KERNEL_UIMAGE_LOADADDR = $(call qstrip,$(BR2_LINUX_KERNEL_UIMAGE_LOADADDR))
|
|
ifneq ($(LINUX_KERNEL_UIMAGE_LOADADDR),)
|
|
LINUX_MAKE_FLAGS += LOADADDR="$(LINUX_KERNEL_UIMAGE_LOADADDR)"
|
|
endif
|
|
|
|
# Compute the arch path, since i386 and x86_64 are in arch/x86 and not
|
|
# in arch/$(KERNEL_ARCH). Even if the kernel creates symbolic links
|
|
# for bzImage, arch/i386 and arch/x86_64 do not exist when copying the
|
|
# defconfig file.
|
|
ifeq ($(KERNEL_ARCH),i386)
|
|
KERNEL_ARCH_PATH = $(LINUX_DIR)/arch/x86
|
|
else ifeq ($(KERNEL_ARCH),x86_64)
|
|
KERNEL_ARCH_PATH = $(LINUX_DIR)/arch/x86
|
|
else
|
|
KERNEL_ARCH_PATH = $(LINUX_DIR)/arch/$(KERNEL_ARCH)
|
|
endif
|
|
|
|
ifeq ($(BR2_LINUX_KERNEL_VMLINUX),y)
|
|
LINUX_IMAGE_PATH = $(LINUX_DIR)/$(LINUX_IMAGE_NAME)
|
|
else ifeq ($(BR2_LINUX_KERNEL_VMLINUZ),y)
|
|
LINUX_IMAGE_PATH = $(LINUX_DIR)/$(LINUX_IMAGE_NAME)
|
|
else
|
|
ifeq ($(KERNEL_ARCH),avr32)
|
|
LINUX_IMAGE_PATH = $(KERNEL_ARCH_PATH)/boot/images/$(LINUX_IMAGE_NAME)
|
|
else
|
|
LINUX_IMAGE_PATH = $(KERNEL_ARCH_PATH)/boot/$(LINUX_IMAGE_NAME)
|
|
endif
|
|
endif # BR2_LINUX_KERNEL_VMLINUX
|
|
|
|
define LINUX_DOWNLOAD_PATCHES
|
|
$(if $(LINUX_PATCHES),
|
|
@$(call MESSAGE,"Download additional patches"))
|
|
$(foreach patch,$(filter ftp://% http://% https://%,$(LINUX_PATCHES)),\
|
|
$(call DOWNLOAD_WGET,$(patch),$(notdir $(patch)))$(sep))
|
|
endef
|
|
|
|
LINUX_POST_DOWNLOAD_HOOKS += LINUX_DOWNLOAD_PATCHES
|
|
|
|
define LINUX_APPLY_PATCHES
|
|
for p in $(LINUX_PATCHES) ; do \
|
|
if echo $$p | grep -q -E "^ftp://|^http://|^https://" ; then \
|
|
$(APPLY_PATCHES) $(@D) $(DL_DIR) `basename $$p` ; \
|
|
elif test -d $$p ; then \
|
|
$(APPLY_PATCHES) $(@D) $$p linux-\*.patch ; \
|
|
else \
|
|
$(APPLY_PATCHES) $(@D) `dirname $$p` `basename $$p` ; \
|
|
fi \
|
|
done
|
|
endef
|
|
|
|
LINUX_POST_PATCH_HOOKS += LINUX_APPLY_PATCHES
|
|
|
|
|
|
ifeq ($(BR2_LINUX_KERNEL_USE_DEFCONFIG),y)
|
|
KERNEL_SOURCE_CONFIG = $(KERNEL_ARCH_PATH)/configs/$(call qstrip,$(BR2_LINUX_KERNEL_DEFCONFIG))_defconfig
|
|
else ifeq ($(BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG),y)
|
|
KERNEL_SOURCE_CONFIG = $(call qstrip,$(BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE))
|
|
endif
|
|
|
|
LINUX_KCONFIG_FILE = $(KERNEL_SOURCE_CONFIG)
|
|
LINUX_KCONFIG_EDITORS = menuconfig xconfig gconfig nconfig
|
|
LINUX_KCONFIG_OPTS = $(LINUX_MAKE_FLAGS)
|
|
|
|
define LINUX_KCONFIG_FIXUP_CMDS
|
|
$(if $(BR2_arm)$(BR2_armeb),
|
|
$(call KCONFIG_ENABLE_OPT,CONFIG_AEABI,$(@D)/.config))
|
|
$(if $(BR2_TARGET_ROOTFS_CPIO),
|
|
$(call KCONFIG_ENABLE_OPT,CONFIG_BLK_DEV_INITRD,$(@D)/.config))
|
|
# As the kernel gets compiled before root filesystems are
|
|
# built, we create a fake cpio file. It'll be
|
|
# replaced later by the real cpio archive, and the kernel will be
|
|
# rebuilt using the linux-rebuild-with-initramfs target.
|
|
$(if $(BR2_TARGET_ROOTFS_INITRAMFS),
|
|
touch $(BINARIES_DIR)/rootfs.cpio
|
|
$(call KCONFIG_SET_OPT,CONFIG_INITRAMFS_SOURCE,"$${BR_BINARIES_DIR}/rootfs.cpio",$(@D)/.config)
|
|
$(call KCONFIG_SET_OPT,CONFIG_INITRAMFS_ROOT_UID,0,$(@D)/.config)
|
|
$(call KCONFIG_SET_OPT,CONFIG_INITRAMFS_ROOT_GID,0,$(@D)/.config))
|
|
$(if $(BR2_ROOTFS_DEVICE_CREATION_STATIC),,
|
|
$(call KCONFIG_ENABLE_OPT,CONFIG_DEVTMPFS,$(@D)/.config)
|
|
$(call KCONFIG_ENABLE_OPT,CONFIG_DEVTMPFS_MOUNT,$(@D)/.config))
|
|
$(if $(BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_EUDEV),
|
|
$(call KCONFIG_ENABLE_OPT,CONFIG_INOTIFY_USER,$(@D)/.config))
|
|
$(if $(BR2_PACKAGE_KTAP),
|
|
$(call KCONFIG_ENABLE_OPT,CONFIG_DEBUG_FS,$(@D)/.config)
|
|
$(call KCONFIG_ENABLE_OPT,CONFIG_EVENT_TRACING,$(@D)/.config)
|
|
$(call KCONFIG_ENABLE_OPT,CONFIG_PERF_EVENTS,$(@D)/.config)
|
|
$(call KCONFIG_ENABLE_OPT,CONFIG_FUNCTION_TRACER,$(@D)/.config))
|
|
$(if $(BR2_PACKAGE_SYSTEMD),
|
|
$(call KCONFIG_ENABLE_OPT,CONFIG_CGROUPS,$(@D)/.config)
|
|
$(call KCONFIG_ENABLE_OPT,CONFIG_INOTIFY_USER,$(@D)/.config)
|
|
$(call KCONFIG_ENABLE_OPT,CONFIG_FHANDLE,$(@D)/.config)
|
|
$(call KCONFIG_ENABLE_OPT,CONFIG_AUTOFS4_FS,$(@D)/.config)
|
|
$(call KCONFIG_ENABLE_OPT,CONFIG_TMPFS_POSIX_ACL,$(@D)/.config)
|
|
$(call KCONFIG_ENABLE_OPT,CONFIG_TMPFS_POSIX_XATTR,$(@D)/.config))
|
|
$(if $(BR2_PACKAGE_SMACK),
|
|
$(call KCONFIG_ENABLE_OPT,CONFIG_SECURITY,$(@D)/.config)
|
|
$(call KCONFIG_ENABLE_OPT,CONFIG_SECURITY_SMACK,$(@D)/.config)
|
|
$(call KCONFIG_ENABLE_OPT,CONFIG_SECURITY_NETWORK,$(@D)/.config))
|
|
$(if $(BR2_PACKAGE_IPTABLES),
|
|
$(call KCONFIG_ENABLE_OPT,CONFIG_IP_NF_IPTABLES,$(@D)/.config)
|
|
$(call KCONFIG_ENABLE_OPT,CONFIG_IP_NF_FILTER,$(@D)/.config)
|
|
$(call KCONFIG_ENABLE_OPT,CONFIG_NETFILTER,$(@D)/.config)
|
|
$(call KCONFIG_ENABLE_OPT,CONFIG_NETFILTER_XTABLES,$(@D)/.config))
|
|
$(if $(BR2_PACKAGE_XTABLES_ADDONS),
|
|
$(call KCONFIG_ENABLE_OPT,CONFIG_NF_CONNTRACK,$(@D)/.config)
|
|
$(call KCONFIG_ENABLE_OPT,CONFIG_NF_CONNTRACK_MARK,$(@D)/.config))
|
|
$(if $(BR2_LINUX_KERNEL_APPENDED_DTB),
|
|
$(call KCONFIG_ENABLE_OPT,CONFIG_ARM_APPENDED_DTB,$(@D)/.config))
|
|
endef
|
|
|
|
ifeq ($(BR2_LINUX_KERNEL_DTS_SUPPORT),y)
|
|
ifeq ($(BR2_LINUX_KERNEL_DTB_IS_SELF_BUILT),)
|
|
define LINUX_BUILD_DTB
|
|
$(LINUX_MAKE_ENV) $(MAKE) $(LINUX_MAKE_FLAGS) -C $(@D) $(KERNEL_DTBS)
|
|
endef
|
|
define LINUX_INSTALL_DTB
|
|
# dtbs moved from arch/<ARCH>/boot to arch/<ARCH>/boot/dts since 3.8-rc1
|
|
cp $(addprefix \
|
|
$(KERNEL_ARCH_PATH)/boot/$(if $(wildcard \
|
|
$(addprefix $(KERNEL_ARCH_PATH)/boot/dts/,$(KERNEL_DTBS))),dts/),$(KERNEL_DTBS)) \
|
|
$(BINARIES_DIR)/
|
|
endef
|
|
define LINUX_INSTALL_DTB_TARGET
|
|
# dtbs moved from arch/<ARCH>/boot to arch/<ARCH>/boot/dts since 3.8-rc1
|
|
cp $(addprefix \
|
|
$(KERNEL_ARCH_PATH)/boot/$(if $(wildcard \
|
|
$(addprefix $(KERNEL_ARCH_PATH)/boot/dts/,$(KERNEL_DTBS))),dts/),$(KERNEL_DTBS)) \
|
|
$(TARGET_DIR)/boot/
|
|
endef
|
|
endif
|
|
endif
|
|
|
|
ifeq ($(BR2_LINUX_KERNEL_APPENDED_DTB),y)
|
|
# dtbs moved from arch/$ARCH/boot to arch/$ARCH/boot/dts since 3.8-rc1
|
|
define LINUX_APPEND_DTB
|
|
if [ -e $(KERNEL_ARCH_PATH)/boot/$(KERNEL_DTS_NAME).dtb ]; then \
|
|
cat $(KERNEL_ARCH_PATH)/boot/$(KERNEL_DTS_NAME).dtb; \
|
|
else \
|
|
cat $(KERNEL_ARCH_PATH)/boot/dts/$(KERNEL_DTS_NAME).dtb; \
|
|
fi >> $(KERNEL_ARCH_PATH)/boot/zImage
|
|
endef
|
|
ifeq ($(BR2_LINUX_KERNEL_APPENDED_UIMAGE),y)
|
|
# We need to generate a new u-boot image that takes into
|
|
# account the extra-size added by the device tree at the end
|
|
# of the image. To do so, we first need to retrieve both load
|
|
# address and entry point for the kernel from the already
|
|
# generate uboot image before using mkimage -l.
|
|
LINUX_APPEND_DTB += $(sep) MKIMAGE_ARGS=`$(MKIMAGE) -l $(LINUX_IMAGE_PATH) |\
|
|
sed -n -e 's/Image Name:[ ]*\(.*\)/-n \1/p' -e 's/Load Address:/-a/p' -e 's/Entry Point:/-e/p'`; \
|
|
$(MKIMAGE) -A $(MKIMAGE_ARCH) -O linux \
|
|
-T kernel -C none $${MKIMAGE_ARGS} \
|
|
-d $(KERNEL_ARCH_PATH)/boot/zImage $(LINUX_IMAGE_PATH);
|
|
endif
|
|
endif
|
|
|
|
# Compilation. We make sure the kernel gets rebuilt when the
|
|
# configuration has changed.
|
|
define LINUX_BUILD_CMDS
|
|
$(if $(BR2_LINUX_KERNEL_USE_CUSTOM_DTS),
|
|
cp $(call qstrip,$(BR2_LINUX_KERNEL_CUSTOM_DTS_PATH)) $(KERNEL_ARCH_PATH)/boot/dts/)
|
|
$(LINUX_MAKE_ENV) $(MAKE) $(LINUX_MAKE_FLAGS) -C $(@D) $(LINUX_TARGET_NAME)
|
|
@if grep -q "CONFIG_MODULES=y" $(@D)/.config; then \
|
|
$(LINUX_MAKE_ENV) $(MAKE) $(LINUX_MAKE_FLAGS) -C $(@D) modules ; \
|
|
fi
|
|
$(LINUX_BUILD_DTB)
|
|
$(LINUX_APPEND_DTB)
|
|
endef
|
|
|
|
|
|
ifeq ($(BR2_LINUX_KERNEL_INSTALL_TARGET),y)
|
|
define LINUX_INSTALL_KERNEL_IMAGE_TO_TARGET
|
|
install -m 0644 -D $(LINUX_IMAGE_PATH) $(TARGET_DIR)/boot/$(LINUX_IMAGE_NAME)
|
|
$(LINUX_INSTALL_DTB_TARGET)
|
|
endef
|
|
endif
|
|
|
|
|
|
define LINUX_INSTALL_HOST_TOOLS
|
|
# Installing dtc (device tree compiler) as host tool, if selected
|
|
if grep -q "CONFIG_DTC=y" $(@D)/.config; then \
|
|
$(INSTALL) -D -m 0755 $(@D)/scripts/dtc/dtc $(HOST_DIR)/usr/bin/dtc ; \
|
|
fi
|
|
endef
|
|
|
|
|
|
define LINUX_INSTALL_IMAGES_CMDS
|
|
cp $(LINUX_IMAGE_PATH) $(BINARIES_DIR)
|
|
$(LINUX_INSTALL_DTB)
|
|
endef
|
|
|
|
define LINUX_INSTALL_TARGET_CMDS
|
|
$(LINUX_INSTALL_KERNEL_IMAGE_TO_TARGET)
|
|
# Install modules and remove symbolic links pointing to build
|
|
# directories, not relevant on the target
|
|
@if grep -q "CONFIG_MODULES=y" $(@D)/.config; then \
|
|
$(LINUX_MAKE_ENV) $(MAKE1) $(LINUX_MAKE_FLAGS) -C $(@D) modules_install; \
|
|
rm -f $(TARGET_DIR)/lib/modules/$(LINUX_VERSION_PROBED)/build ; \
|
|
rm -f $(TARGET_DIR)/lib/modules/$(LINUX_VERSION_PROBED)/source ; \
|
|
fi
|
|
$(LINUX_INSTALL_HOST_TOOLS)
|
|
endef
|
|
|
|
include $(sort $(wildcard linux/linux-ext-*.mk))
|
|
|
|
$(eval $(kconfig-package))
|
|
|
|
# Support for rebuilding the kernel after the cpio archive has
|
|
# been generated in $(BINARIES_DIR)/rootfs.cpio.
|
|
$(LINUX_DIR)/.stamp_initramfs_rebuilt: $(LINUX_DIR)/.stamp_target_installed $(LINUX_DIR)/.stamp_images_installed $(BINARIES_DIR)/rootfs.cpio
|
|
@$(call MESSAGE,"Rebuilding kernel with initramfs")
|
|
# Build the kernel.
|
|
$(LINUX_MAKE_ENV) $(MAKE) $(LINUX_MAKE_FLAGS) -C $(@D) $(LINUX_TARGET_NAME)
|
|
$(LINUX_APPEND_DTB)
|
|
# Copy the kernel image to its final destination
|
|
cp $(LINUX_IMAGE_PATH) $(BINARIES_DIR)
|
|
# If there is a .ub file copy it to the final destination
|
|
test ! -f $(LINUX_IMAGE_PATH).ub || cp $(LINUX_IMAGE_PATH).ub $(BINARIES_DIR)
|
|
$(Q)touch $@
|
|
|
|
# The initramfs building code must make sure this target gets called
|
|
# after it generated the initramfs list of files.
|
|
linux-rebuild-with-initramfs: $(LINUX_DIR)/.stamp_initramfs_rebuilt
|
|
|
|
# Checks to give errors that the user can understand
|
|
ifeq ($(filter source,$(MAKECMDGOALS)),)
|
|
ifeq ($(BR2_LINUX_KERNEL_USE_DEFCONFIG),y)
|
|
ifeq ($(call qstrip,$(BR2_LINUX_KERNEL_DEFCONFIG)),)
|
|
$(error No kernel defconfig name specified, check your BR2_LINUX_KERNEL_DEFCONFIG setting)
|
|
endif
|
|
endif
|
|
|
|
ifeq ($(BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG),y)
|
|
ifeq ($(call qstrip,$(BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE)),)
|
|
$(error No kernel configuration file specified, check your BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE setting)
|
|
endif
|
|
endif
|
|
|
|
endif
|