ifneq ($(filter xtensa%,$(ARCH)),)
#############################################################
#
#  Xtensa processor architecture (including Diamond Standard cores)
#
#############################################################

#  The following defines a function to be used like this:
#	$(call XTENSA_PATCH, <module>, <patchdir>, <relative dir list...>)
#  which returns the first overlay patch file for <module> found
#  in the list of directories <relative dir list...> which are
#  relative to <patchdir> (itself either absolute or relative to the
#  current directory).  The returned filename is relative to <patchdir>.
#  For example:
#	$(call XTENSA_PATCH, binutils, some/dir/path, . ..)
#  (no commas between directory paths in the list).
#
#  A selected overlay patch must exist ("fsf" means no specific
#  overlay is selected).  So the function emits a Makefile error
#  if a selected patch file is not found.

XTENSA_CORENAME:=$(call qstrip,$(BR2_xtensa_core_name))
ifeq ($(XTENSA_CORENAME),fsf)
XTENSA_PATCH =
else
XTENSA_PATCH_SUFFIX = $(1)-xtensa_$(XTENSA_CORENAME).tgz
XTENSA_PATCH_FILE = $(firstword $(wildcard $(patsubst %,$(2)/%/*$(XTENSA_PATCH_SUFFIX),$(3))))
# FULLPATH = $(if $(filter /%,$(1)),$(1),$(PWD)/$(1))
XTENSA_PATCH = $(if $(XTENSA_PATCH_FILE),$(patsubst $(2)/%,%,$(XTENSA_PATCH_FILE)),\
	$(error Missing $(1) patch for Xtensa $(XTENSA_CORENAME) processor (*$(XTENSA_PATCH_SUFFIX) in $(addprefix $(2)/,$(3)))))
endif

endif
