# 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
# ==========================================================================

src := $(obj)

PHONY := __dtbs_install
__dtbs_install:

include include/config/auto.conf
include scripts/Kbuild.include
include $(src)/Makefile

dtbs    := $(addprefix $(dst)/, $(dtb-y) $(if $(CONFIG_OF_ALL_DTBS),$(dtb-)))
subdirs := $(addprefix $(obj)/, $(subdir-y) $(subdir-m))

__dtbs_install: $(dtbs) $(subdirs)
	@:

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

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

PHONY += $(subdirs)
$(subdirs):
	$(Q)$(MAKE) $(dtbinst)=$@ dst=$(patsubst $(obj)/%,$(dst)/%,$@)

.PHONY: $(PHONY)
