1# ========================================================================== 2# Installing firmware 3# 4# We don't include the .config, so all firmware files are in $(fw-shipped-) 5# rather than in $(fw-shipped-y) or $(fw-shipped-m). 6# ========================================================================== 7 8INSTALL := install 9src := $(obj) 10 11# For modules_install installing firmware, we want to see .config 12# But for firmware_install, we don't care, but don't want to require it. 13-include $(objtree)/.config 14 15include scripts/Kbuild.include 16include $(srctree)/$(obj)/Makefile 17 18include scripts/Makefile.host 19 20mod-fw := $(fw-shipped-m) 21# If CONFIG_FIRMWARE_IN_KERNEL isn't set, then install the 22# firmware for in-kernel drivers too. 23ifndef CONFIG_FIRMWARE_IN_KERNEL 24mod-fw += $(fw-shipped-y) 25endif 26 27ifneq ($(KBUILD_SRC),) 28# Create output directory if not already present 29_dummy := $(shell [ -d $(obj) ] || mkdir -p $(obj)) 30 31firmware-dirs := $(sort $(addprefix $(objtree)/$(obj)/,$(dir $(fw-external-y) $(fw-shipped-all)))) 32# Create directories for firmware in subdirectories 33_dummy := $(foreach d,$(firmware-dirs), $(shell [ -d $(d) ] || mkdir -p $(d))) 34endif 35 36installed-mod-fw := $(addprefix $(INSTALL_FW_PATH)/,$(mod-fw)) 37 38installed-fw := $(addprefix $(INSTALL_FW_PATH)/,$(fw-shipped-all)) 39 40quiet_cmd_install = INSTALL $(subst $(srctree)/,,$@) 41 cmd_install = mkdir -p $(@D); $(INSTALL) -m0644 $< $@ 42 43$(installed-fw): $(INSTALL_FW_PATH)/%: $(obj)/% 44 $(call cmd,install) 45 46PHONY += __fw_install __fw_modinst FORCE 47 48.PHONY: $(PHONY) 49 50__fw_install: $(installed-fw) 51 52__fw_modinst: $(installed-mod-fw) 53 @: 54 55__fw_modbuild: $(addprefix $(obj)/,$(mod-fw)) 56 @: 57 58FORCE: 59 60# Read all saved command lines and dependencies for the $(targets) we 61# may be building using $(if_changed{,_dep}). As an optimization, we 62# don't need to read them if the target does not exist; we will rebuild 63# anyway in that case. 64 65targets := $(wildcard $(sort $(targets))) 66cmd_files := $(wildcard $(foreach f,$(targets),$(dir $(f)).$(notdir $(f)).cmd)) 67 68ifneq ($(cmd_files),) 69 include $(cmd_files) 70endif 71