mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2025-01-11 23:50:25 +00:00
c1c1a59e37
Since make 3.80 doesn't support secondary expansion it uses a fallback rule to create firmware directories which is matched after primary expansion of the $(installed-fw) rule's prerequisite. Commit 6c7080a61fc7 [firmware: fix directory creation rule matching with make 3.82] changed the expression generated after primary expansion such that the fallback was not matched. Updating the fallback rule to match the new look primary expansion is not an option for various reasons. The trailing slash added here to $(INSTALL_FW_PATH)/. while defining installed-fw-dirs fixes builds with make 3.82 since this will provide a matching rule for $(INSTALL_FW_PATH)/$$(dir %) when % is in the base firmware directory (ie. $(dir %) gives './'). Versions of make prior to 3.82 will strip this trailing slash along with the one generated by $(dir %) when % is in the base firmware directory and as such continue to function as before. Signed-off-by: Mark Asselstine <mark.asselstine@windriver.com> Tested-by: Jan Beulich <jbeulich@suse.com> Signed-off-by: Michal Marek <mmarek@suse.cz>
73 lines
2.0 KiB
Makefile
73 lines
2.0 KiB
Makefile
# ==========================================================================
|
|
# 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
|