blob: 4d908d16c035c4e6c582e254e531998e7f6156ae [file] [log] [blame]
David Woodhouse88ecf812008-05-29 11:01:51 +03001# ==========================================================================
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-n).
6# ==========================================================================
7
8INSTALL := install
David Woodhouse8bd6b222008-05-31 15:07:18 +03009src := $(obj)
David Woodhouse88ecf812008-05-29 11:01:51 +030010
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
David Woodhouse44463f72008-07-25 14:17:19 -040020mod-fw := $(fw-shipped-m)
David Woodhouse88ecf812008-05-29 11:01:51 +030021# If CONFIG_FIRMWARE_IN_KERNEL isn't set, then install the
22# firmware for in-kernel drivers too.
23ifndef CONFIG_FIRMWARE_IN_KERNEL
David Woodhouse44463f72008-07-25 14:17:19 -040024mod-fw += $(fw-shipped-y)
David Woodhouse88ecf812008-05-29 11:01:51 +030025endif
26
David Woodhouse44463f72008-07-25 14:17:19 -040027installed-mod-fw := $(addprefix $(INSTALL_FW_PATH)/,$(mod-fw))
28
David Woodhouse88ecf812008-05-29 11:01:51 +030029installed-fw := $(addprefix $(INSTALL_FW_PATH)/,$(fw-shipped-all))
Mark Asselstinec1c1a592012-09-19 16:30:44 -040030installed-fw-dirs := $(sort $(dir $(installed-fw))) $(INSTALL_FW_PATH)/./
David Woodhouse88ecf812008-05-29 11:01:51 +030031
David Woodhouse7259d932008-07-16 23:44:32 -070032# Workaround for make < 3.81, where .SECONDEXPANSION doesn't work.
33PHONY += $(INSTALL_FW_PATH)/$$(%) install-all-dirs
34$(INSTALL_FW_PATH)/$$(%): install-all-dirs
35 @true
36install-all-dirs: $(installed-fw-dirs)
37 @true
38
David Woodhouse88ecf812008-05-29 11:01:51 +030039quiet_cmd_install = INSTALL $(subst $(srctree)/,,$@)
40 cmd_install = $(INSTALL) -m0644 $< $@
41
42$(installed-fw-dirs):
43 $(call cmd,mkdir)
44
Mark Asselstinec1c1a592012-09-19 16:30:44 -040045$(installed-fw): $(INSTALL_FW_PATH)/%: $(obj)/% | $(INSTALL_FW_PATH)/$$(dir %)
David Woodhouse88ecf812008-05-29 11:01:51 +030046 $(call cmd,install)
47
David Woodhouse7259d932008-07-16 23:44:32 -070048PHONY += __fw_install __fw_modinst FORCE
49
50.PHONY: $(PHONY)
David Woodhouse88ecf812008-05-29 11:01:51 +030051
52__fw_install: $(installed-fw)
David Woodhouse759da922008-08-01 23:58:36 +010053
David Woodhouse44463f72008-07-25 14:17:19 -040054__fw_modinst: $(installed-mod-fw)
David Woodhouse759da922008-08-01 23:58:36 +010055 @:
56
David Woodhouse44463f72008-07-25 14:17:19 -040057__fw_modbuild: $(addprefix $(obj)/,$(mod-fw))
David Woodhouse759da922008-08-01 23:58:36 +010058 @:
David Woodhouse88ecf812008-05-29 11:01:51 +030059
David Woodhouse88ecf812008-05-29 11:01:51 +030060FORCE:
David Woodhouse7259d932008-07-16 23:44:32 -070061
62# Read all saved command lines and dependencies for the $(targets) we
63# may be building using $(if_changed{,_dep}). As an optimization, we
64# don't need to read them if the target does not exist; we will rebuild
65# anyway in that case.
66
67targets := $(wildcard $(sort $(targets)))
68cmd_files := $(wildcard $(foreach f,$(targets),$(dir $(f)).$(notdir $(f)).cmd))
69
70ifneq ($(cmd_files),)
71 include $(cmd_files)
72endif