# ==========================================================================
# Installing firmware
#
# We don't include the .config, so all firmware files are in $(fw-shipped-)
# rather than in $(fw-shipped-y) or $(fw-shipped-n).
# ==========================================================================

INSTALL := install
src := $(obj)

# For modules_install installing firmware, we want to see .config
# But for firmware_install, we don't care, but don't want to require it.
-include $(objtree)/.config

include scripts/Kbuild.include
include $(srctree)/$(obj)/Makefile

include scripts/Makefile.host

mod-fw := $(fw-shipped-m)
# If CONFIG_FIRMWARE_IN_KERNEL isn't set, then install the 
# firmware for in-kernel drivers too.
ifndef CONFIG_FIRMWARE_IN_KERNEL
mod-fw += $(fw-shipped-y)
endif

installed-mod-fw := $(addprefix $(INSTALL_FW_PATH)/,$(mod-fw))

installed-fw := $(addprefix $(INSTALL_FW_PATH)/,$(fw-shipped-all))
installed-fw-dirs := $(sort $(dir $(installed-fw))) $(INSTALL_FW_PATH)/./

# Workaround for make < 3.81, where .SECONDEXPANSION doesn't work.
PHONY += $(INSTALL_FW_PATH)/$$(%) install-all-dirs
$(INSTALL_FW_PATH)/$$(%): install-all-dirs
	@true
install-all-dirs: $(installed-fw-dirs)
	@true

quiet_cmd_install = INSTALL $(subst $(srctree)/,,$@)
      cmd_install = $(INSTALL) -m0644 $< $@

$(installed-fw-dirs):
	$(call cmd,mkdir)

$(installed-fw): $(INSTALL_FW_PATH)/%: $(obj)/% | $(INSTALL_FW_PATH)/$$(dir %)
	$(call cmd,install)

PHONY +=  __fw_install __fw_modinst FORCE

.PHONY: $(PHONY)

__fw_install: $(installed-fw)

__fw_modinst: $(installed-mod-fw)
	@:

__fw_modbuild: $(addprefix $(obj)/,$(mod-fw))
	@:

FORCE:

# Read all saved command lines and dependencies for the $(targets) we
# may be building using $(if_changed{,_dep}). As an optimization, we
# don't need to read them if the target does not exist; we will rebuild
# anyway in that case.

targets := $(wildcard $(sort $(targets)))
cmd_files := $(wildcard $(foreach f,$(targets),$(dir $(f)).$(notdir $(f)).cmd))

ifneq ($(cmd_files),)
  include $(cmd_files)
endif
