# SPDX-License-Identifier: GPL-2.0
# ==========================================================================
# Installing dtb files
#
# Installs all dtb files listed in $(dtb-y) either in the
# INSTALL_DTBS_PATH directory or the default location:
#
#   $INSTALL_PATH/dtbs/$KERNELRELEASE
# ==========================================================================

PHONY := __dtbs_install
__dtbs_install:

include include/config/auto.conf
include $(srctree)/scripts/Kbuild.include

dst := $(INSTALL_DTBS_PATH)

quiet_cmd_dtb_install = INSTALL $@
      cmd_dtb_install = install -D $< $@

$(dst)/%: $(obj)/%
	$(call cmd,dtb_install)

dtbs := $(patsubst $(obj)/%,%,$(call read-file, $(obj)/dtbs-list))

ifdef CONFIG_ARCH_WANT_FLAT_DTB_INSTALL

define gen_install_rules
$(dst)/%: $(obj)/$(1)%
	$$(call cmd,dtb_install)
endef

$(foreach d, $(sort $(dir $(dtbs))), $(eval $(call gen_install_rules,$(d))))

dtbs := $(notdir $(dtbs))

endif # CONFIG_ARCH_WANT_FLAT_DTB_INSTALL

__dtbs_install: $(addprefix $(dst)/, $(dtbs))
	@:

.PHONY: $(PHONY)
