|
@@ -58,6 +58,13 @@ else ifeq ($(BR2_LINUX_KERNEL_USE_CUSTOM_DTS),y)
|
|
|
KERNEL_DTS_NAME = $(basename $(notdir $(BR2_LINUX_KERNEL_CUSTOM_DTS_PATH)))
|
|
|
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
|
|
|
+
|
|
|
ifeq ($(BR2_LINUX_KERNEL_IMAGE_TARGET_CUSTOM),y)
|
|
|
LINUX_IMAGE_NAME=$(call qstrip,$(BR2_LINUX_KERNEL_IMAGE_TARGET_NAME))
|
|
|
else
|
|
@@ -68,10 +75,14 @@ LINUX_IMAGE_NAME=vmImage
|
|
|
else
|
|
|
LINUX_IMAGE_NAME=uImage
|
|
|
endif
|
|
|
+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_VMLINUX_BIN),y)
|
|
|
LINUX_IMAGE_NAME=vmlinux.bin
|
|
|
else ifeq ($(BR2_LINUX_KERNEL_VMLINUX),y)
|
|
@@ -81,6 +92,12 @@ LINUX_IMAGE_NAME=vmlinuz
|
|
|
endif
|
|
|
endif
|
|
|
|
|
|
+ifeq ($(BR2_LINUX_KERNEL_APPENDED_DTB),y)
|
|
|
+LINUX_IMAGE_TARGET=zImage
|
|
|
+else
|
|
|
+LINUX_IMAGE_TARGET=$(LINUX_IMAGE_NAME)
|
|
|
+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
|
|
@@ -161,10 +178,13 @@ define LINUX_CONFIGURE_CMDS
|
|
|
$(call KCONFIG_SET_OPT,CONFIG_UEVENT_HELPER_PATH,\"/sbin/mdev\",$(@D)/.config))
|
|
|
$(if $(BR2_PACKAGE_SYSTEMD),
|
|
|
$(call KCONFIG_ENABLE_OPT,CONFIG_CGROUPS,$(@D)/.config))
|
|
|
+ $(if $(BR2_LINUX_KERNEL_APPENDED_DTB),
|
|
|
+ $(call KCONFIG_ENABLE_OPT,CONFIG_ARM_APPENDED_DTB,$(@D)/.config))
|
|
|
yes '' | $(TARGET_MAKE_ENV) $(MAKE1) $(LINUX_MAKE_FLAGS) -C $(@D) oldconfig
|
|
|
endef
|
|
|
|
|
|
ifeq ($(BR2_LINUX_KERNEL_DTS_SUPPORT),y)
|
|
|
+ifeq ($(BR2_LINUX_KERNEL_DTB_IS_SELF_BUILT),)
|
|
|
define LINUX_BUILD_DTB
|
|
|
$(TARGET_MAKE_ENV) $(MAKE) $(LINUX_MAKE_FLAGS) -C $(@D) $(KERNEL_DTS_NAME).dtb
|
|
|
endef
|
|
@@ -172,17 +192,32 @@ define LINUX_INSTALL_DTB
|
|
|
cp $(KERNEL_ARCH_PATH)/boot/$(KERNEL_DTS_NAME).dtb $(BINARIES_DIR)/
|
|
|
endef
|
|
|
endif
|
|
|
+endif
|
|
|
+
|
|
|
+ifeq ($(BR2_LINUX_KERNEL_APPENDED_UIMAGE),y)
|
|
|
+define LINUX_APPEND_DTB
|
|
|
+ cat $(KERNEL_ARCH_PATH)/boot/$(KERNEL_DTS_NAME).dtb >> $(KERNEL_ARCH_PATH)/boot/zImage
|
|
|
+ # We need to generate the uImage here after that so that the uImage is
|
|
|
+ # generated with the right image size.
|
|
|
+ $(TARGET_MAKE_ENV) $(MAKE) $(LINUX_MAKE_FLAGS) -C $(@D) uImage
|
|
|
+endef
|
|
|
+else ifeq ($(BR2_LINUX_KERNEL_APPENDED_ZIMAGE),y)
|
|
|
+define LINUX_APPEND_DTB
|
|
|
+ cat $(KERNEL_ARCH_PATH)/boot/$(KERNEL_DTS_NAME).dtb >> $(KERNEL_ARCH_PATH)/boot/zImage
|
|
|
+endef
|
|
|
+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 $(BR2_LINUX_KERNEL_CUSTOM_DTS_PATH) $(KERNEL_ARCH_PATH)/boot/dts/)
|
|
|
- $(TARGET_MAKE_ENV) $(MAKE) $(LINUX_MAKE_FLAGS) -C $(@D) $(LINUX_IMAGE_NAME)
|
|
|
+ $(TARGET_MAKE_ENV) $(MAKE) $(LINUX_MAKE_FLAGS) -C $(@D) $(LINUX_IMAGE_TARGET)
|
|
|
@if grep -q "CONFIG_MODULES=y" $(@D)/.config; then \
|
|
|
$(TARGET_MAKE_ENV) $(MAKE) $(LINUX_MAKE_FLAGS) -C $(@D) modules ; \
|
|
|
fi
|
|
|
$(LINUX_BUILD_DTB)
|
|
|
+ $(LINUX_APPEND_DTB)
|
|
|
endef
|
|
|
|
|
|
|