kumquat-buildroot/arch/arch.mk.xtensa

42 lines
1.8 KiB
Plaintext
Raw Normal View History

BR_ARCH_XTENSA_OVERLAY_FILE = $(call qstrip,$(BR2_XTENSA_OVERLAY_FILE))
arch/arch.mk.xtensa: relax check on overlay file to apply only to internal toolchains Commit 4cbf7336914f25478aea943456ba7dc3c892c21a ("arch/xtensa: custom configuration requires an overlay") added a check in arch/arch.mk.xtensa to bail out if a custom Xtensa core is selected but not overlay file is provided. While this is indeed a perfectly valid check to make when building an internal toolchain, with an external toolchain it's entirely possible to build with no overlay file: the toolchain already exists, and there's no overlay to be applied in the context of the Buildroot build. And indeed commit 4cbf7336914f25478aea943456ba7dc3c892c21a broke some of the runtime test cases that use a custom Xtensa core configuration, with no overlay, to test the toolchains.bootlin.com Xtensa external toolchain. By relaxing the check to only apply to internal toolchain configurations, we fix those test cases. It is to be noted that this still allows a configuration where gdb gets built for a custom core, but with no overlay, so basically that means the fsf variant, which can lead to build or run failures that 4cbf7336914f attempted to fix to begin with. This still covers the most common cases. Finally, it also means being able to build a kernel with no overlay, but this is offset by the fact that the kernel may be already patched with an overlay (as it is possible to specify a custom kernel), which is most probably what people using a custom core would have. Fixes: https://gitlab.com/buildroot.org/buildroot/-/jobs/3282261966 https://gitlab.com/buildroot.org/buildroot/-/jobs/3282261963 Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com> [yann.morin.1998@free.fr: extend commit log with last two paragraphs] Signed-off-by: Yann E. MORIN <yann.morin.1998@free.fr>
2022-11-11 22:57:58 +01:00
ifeq ($(BR_BUILDING)$(BR2_XTENSA_CUSTOM)$(BR2_TOOLCHAIN_BUILDROOT):$(BR_ARCH_XTENSA_OVERLAY_FILE),yyy:)
$(error No xtensa overlay file provided. Check your BR2_XTENSA_OVERLAY_FILE setting)
endif
################################################################################
# This variable can be used by packages that need to extract the overlay.
#
# ARCH_XTENSA_OVERLAY_FILE is the path to the overlay tarball; empty if not
# using any overlay
#
# Example:
# ifneq ($(ARCH_XTENSA_OVERLAY_FILE),)
# tar xf $(ARCH_XTENSA_OVERLAY_FILE) -C $(@D) --strip-components=1 gcc
# endif
################################################################################
ifneq ($(filter http://% https://% ftp://% scp://%,$(BR_ARCH_XTENSA_OVERLAY_FILE)),)
ARCH_XTENSA_OVERLAY_URL = $(BR_ARCH_XTENSA_OVERLAY_FILE)
ARCH_XTENSA_OVERLAY_FILE = $($(PKG)_DL_DIR)/$(notdir $(BR_ARCH_XTENSA_OVERLAY_FILE))
# Do not check that file, we can't know its hash
BR_NO_CHECK_HASH_FOR += $(notdir $(ARCH_XTENSA_OVERLAY_URL))
else
ARCH_XTENSA_OVERLAY_FILE = $(BR_ARCH_XTENSA_OVERLAY_FILE)
endif
################################################################################
# arch-xtensa-overlay-extract -- extract an extensa overlay
#
# argument 1 is the path in which to extract
# argument 2 is the component to extract, one of: gcc, binutils, gdb, linux,
# u-boot
#
# Example:
# $(call arch-xtensa-overlay-extract,/path/to/overlay.tar,$(@D),gcc)
################################################################################
define arch-xtensa-overlay-extract
$(call suitable-extractor,$(ARCH_XTENSA_OVERLAY_FILE)) \
$(ARCH_XTENSA_OVERLAY_FILE) | \
$(TAR) --strip-components=1 -C $(1) $(TAR_OPTIONS) - $(2)
endef