Blame view

firmware/Makefile 11.7 KB
4d2acfbfd   David Woodhouse   firmware: Add CON...
1
2
3
4
5
6
7
8
9
10
  #
  # kbuild file for firmware/
  #
  
  # Create $(fwabs) from $(CONFIG_EXTRA_FIRMWARE_DIR) -- if it doesn't have a
  # leading /, it's relative to $(srctree).
  fwdir := $(subst ",,$(CONFIG_EXTRA_FIRMWARE_DIR))
  fwabs := $(addprefix $(srctree)/,$(filter-out /%,$(fwdir)))$(filter /%,$(fwdir))
  
  fw-external-y := $(subst ",,$(CONFIG_EXTRA_FIRMWARE))
88ecf814c   David Woodhouse   firmware: Add fir...
11
12
13
14
15
16
  # There are three cases to care about:
  # 1. Building kernel with CONFIG_FIRMWARE_IN_KERNEL=y -- $(fw-shipped-y) should
  #    include the firmware files to include, according to .config
  # 2. 'make modules_install', which will install firmware for modules, and 
  #    _also_ for the in-kernel drivers when CONFIG_FIRMWARE_IN_KERNEL=n
  # 3. 'make firmware_install', which installs all firmware, unconditionally.
d172e7f5c   David Woodhouse   firmware: Add CON...
17

88ecf814c   David Woodhouse   firmware: Add fir...
18
19
20
  # For the former two cases we want $(fw-shipped-y) and $(fw-shipped-m) to be
  # accurate. In the latter case it doesn't matter -- it'll use $(fw-shipped-all).
  # But be aware that the config file might not be included at all.
949b42544   Jaswinder Singh   firmware: convert...
21
22
23
24
25
26
  ifdef CONFIG_ACENIC_OMIT_TIGON_I
  acenic-objs := acenic/tg2.bin
  fw-shipped- += acenic/tg1.bin
  else
  acenic-objs := acenic/tg1.bin acenic/tg2.bin
  endif
4b6ece97e   Jaswinder Singh Rajput   3C359: use reques...
27
  fw-shipped-$(CONFIG_3C359) += 3com/3C359.bin
949b42544   Jaswinder Singh   firmware: convert...
28
  fw-shipped-$(CONFIG_ACENIC) += $(acenic-objs)
cfc3a44c3   Jaswinder Singh Rajput   starfire: use req...
29
30
  fw-shipped-$(CONFIG_ADAPTEC_STARFIRE) += adaptec/starfire_rx.bin \
  					 adaptec/starfire_tx.bin
7f127d5ed   Jaswinder Singh   dsp56k: use reque...
31
  fw-shipped-$(CONFIG_ATARI_DSP56K) += dsp56k/bootstrap.bin
27d202fff   David Woodhouse   firmware: convert...
32
  fw-shipped-$(CONFIG_ATM_AMBASSADOR) += atmsar11.fw
3359fced7   Vladislav Zolotarov   bnx2x: Use firmwa...
33
  fw-shipped-$(CONFIG_BNX2X) += bnx2x-e1-5.2.13.0.fw bnx2x-e1h-5.2.13.0.fw
a931d2940   Michael Chan   bnx2: Update 5709...
34
  fw-shipped-$(CONFIG_BNX2) += bnx2/bnx2-mips-09-5.0.0.j15.fw \
bec92044b   Michael Chan   bnx2: Update firm...
35
36
37
  			     bnx2/bnx2-rv2p-09-5.0.0.j10.fw \
  			     bnx2/bnx2-rv2p-09ax-5.0.0.j10.fw \
  			     bnx2/bnx2-mips-06-5.0.0.j6.fw \
078b07358   Michael Chan   bnx2: Update firm...
38
  			     bnx2/bnx2-rv2p-06-5.0.0.j3.fw
fcaa40669   Jaswinder Singh   cassini: use requ...
39
  fw-shipped-$(CONFIG_CASSINI) += sun/cassini.bin
547d8bb7d   David Woodhouse   ip2: use request_...
40
  fw-shipped-$(CONFIG_COMPUTONE) += intelliport2.bin
ad58633c8   Divy Le Ray   cxgb3: integrate ...
41
42
  fw-shipped-$(CONFIG_CHELSIO_T3) += cxgb3/t3b_psram-1.1.0.bin \
  				   cxgb3/t3c_psram-1.1.0.bin \
17acad30b   Divy Le Ray   cxgb3: update FW ...
43
  				   cxgb3/t3fw-7.10.0.bin \
2e8c07c35   Divy Le Ray   cxgb3: use reques...
44
45
46
  				   cxgb3/ael2005_opt_edc.bin \
  				   cxgb3/ael2005_twx_edc.bin \
  				   cxgb3/ael2020_twx_edc.bin
ece2be799   Ben Hutchings   drm/mga: Use requ...
47
  fw-shipped-$(CONFIG_DRM_MGA) += matrox/g200_warp.fw matrox/g400_warp.fw
52f97df5d   Ben Hutchings   drm/r128: Use req...
48
  fw-shipped-$(CONFIG_DRM_R128) += r128/r128_cce.bin
70967ab9c   Ben Hutchings   radeon: Use reque...
49
50
51
52
53
54
55
56
57
58
59
60
61
62
  fw-shipped-$(CONFIG_DRM_RADEON) += radeon/R100_cp.bin radeon/R200_cp.bin \
  				   radeon/R300_cp.bin radeon/R420_cp.bin \
  				   radeon/RS690_cp.bin radeon/RS600_cp.bin \
  				   radeon/R520_cp.bin \
  				   radeon/R600_pfp.bin radeon/R600_me.bin \
  				   radeon/RV610_pfp.bin radeon/RV610_me.bin \
  				   radeon/RV630_pfp.bin radeon/RV630_me.bin \
  				   radeon/RV620_pfp.bin radeon/RV620_me.bin \
  				   radeon/RV635_pfp.bin radeon/RV635_me.bin \
  				   radeon/RV670_pfp.bin radeon/RV670_me.bin \
  				   radeon/RS780_pfp.bin radeon/RS780_me.bin \
  				   radeon/RV770_pfp.bin radeon/RV770_me.bin \
  				   radeon/RV730_pfp.bin radeon/RV730_me.bin \
  				   radeon/RV710_pfp.bin radeon/RV710_me.bin
9137f05f7   Jaswinder Singh   firmware: convert...
63
  fw-shipped-$(CONFIG_DVB_AV7110) += av7110/bootcode.bin
0a2a736af   David Woodhouse   ttusb-budget: use...
64
  fw-shipped-$(CONFIG_DVB_TTUSB_BUDGET) += ttusb-budget/dspbootcode.bin
9ac32e1bc   Jaswinder Singh Rajput   firmware: convert...
65
66
  fw-shipped-$(CONFIG_E100) += e100/d101m_ucode.bin e100/d101s_ucode.bin \
  			     e100/d102e_ucode.bin
cd36e9efa   Jaswinder Singh Rajput   myri_sbus: use re...
67
  fw-shipped-$(CONFIG_MYRI_SBUS) += myricom/lanai.bin
bf6fda63c   Ken Kawasaki   pcnet_cs: add cis...
68
69
  fw-shipped-$(CONFIG_PCMCIA_PCNET) += cis/LA-PCM.cis cis/PCMLM28.cis \
  				     cis/DP83903.cis cis/NE2K.cis \
abe880690   Ken Kawasaki   pcnet_cs: add cis...
70
71
  				     cis/tamarack.cis cis/PE-200.cis \
  				     cis/PE520.cis
f0a3a1538   Ken Kawasaki   3c589_cs: add cis...
72
73
  fw-shipped-$(CONFIG_PCMCIA_3C589) += cis/3CXEM556.cis
  fw-shipped-$(CONFIG_PCMCIA_3C574) += cis/3CCFEM556.cis
bf6fda63c   Ken Kawasaki   pcnet_cs: add cis...
74
  fw-shipped-$(CONFIG_SERIAL_8250_CS) += cis/MT5634ZLX.cis cis/RS-COM-2P.cis \
63ca2d74e   Ken Kawasaki   pcnet_cs: add cis...
75
76
77
  				       cis/COMpad2.cis cis/COMpad4.cis \
  				       cis/SW_555_SER.cis cis/SW_7xx_SER.cis \
  				       cis/SW_8xx_SER.cis
75bf758f9   Jaswinder Singh Rajput   smc91c92_cs: use ...
78
  fw-shipped-$(CONFIG_PCMCIA_SMC91C92) += ositech/Xilinx7OD.bin
989bb5f58   Jaswinder Singh Rajput   [SCSI] advansys: ...
79
80
  fw-shipped-$(CONFIG_SCSI_ADVANSYS) += advansys/mcode.bin advansys/38C1600.bin \
  				      advansys/3550.bin advansys/38C0800.bin
1bfa11db7   Jaswinder Singh Rajput   [SCSI] qla1280: u...
81
82
  fw-shipped-$(CONFIG_SCSI_QLOGIC_1280) += qlogic/1040.bin qlogic/1280.bin \
  					 qlogic/12160.bin
f894e74dc   Jaswinder Singh Rajput   [SCSI] qlogicpti:...
83
  fw-shipped-$(CONFIG_SCSI_QLOGICPTI) += qlogic/isp1000.bin
ecd4b48a1   Ben Hutchings   IB/qib: Use reque...
84
  fw-shipped-$(CONFIG_INFINIBAND_QIB) += qlogic/sd7220.fw
0f805b86c   David Woodhouse   smctr: use reques...
85
  fw-shipped-$(CONFIG_SMCTR) += tr_smctr.bin
76770664d   David Woodhouse   firmware: convert...
86
  fw-shipped-$(CONFIG_SND_KORG1212) += korg/k1212.dsp
a292f404f   David Woodhouse   firmware: convert...
87
88
  fw-shipped-$(CONFIG_SND_MAESTRO3) += ess/maestro3_assp_kernel.fw \
  				     ess/maestro3_assp_minisrc.fw
d71792ac3   Jaswinder Singh   firmware: convert...
89
90
91
92
  fw-shipped-$(CONFIG_SND_SB16_CSP) += sb16/mulaw_main.csp sb16/alaw_main.csp \
  				     sb16/ima_adpcm_init.csp \
  				     sb16/ima_adpcm_playback.csp \
  				     sb16/ima_adpcm_capture.csp
18ee6dfae   David Woodhouse   firmware: convert...
93
94
  fw-shipped-$(CONFIG_SND_YMFPCI) += yamaha/ds1_ctrl.fw yamaha/ds1_dsp.fw \
  				   yamaha/ds1e_ctrl.fw
7c7cae17e   Takashi Iwai   ALSA: wavefront -...
95
  fw-shipped-$(CONFIG_SND_WAVEFRONT) += yamaha/yss225_registers.bin
06e1f9ffa   Ben Hutchings   tehuti: Use reque...
96
  fw-shipped-$(CONFIG_TEHUTI) += tehuti/bdx.bin
077f849de   Jaswinder Singh Rajput   firmware: convert...
97
98
  fw-shipped-$(CONFIG_TIGON3) += tigon/tg3.bin tigon/tg3_tso.bin \
  			       tigon/tg3_tso5.bin
b775a750c   Ben Hutchings   typhoon: Use requ...
99
  fw-shipped-$(CONFIG_TYPHOON) += 3com/typhoon.bin
c46677463   David Woodhouse   dabusb: use reque...
100
  fw-shipped-$(CONFIG_USB_DABUSB) += dabusb/firmware.fw dabusb/bitstream.bin
ae93a55bf   David Woodhouse   emi26: use reques...
101
102
  fw-shipped-$(CONFIG_USB_EMI26) += emi26/loader.fw emi26/firmware.fw \
  				  emi26/bitstream.fw
b8e24bfab   David Woodhouse   emi62: use reques...
103
104
  fw-shipped-$(CONFIG_USB_EMI62) += emi62/loader.fw emi62/bitstream.fw \
  				  emi62/spdif.fw emi62/midi.fw
79682499d   David Woodhouse   kaweth: use reque...
105
106
107
  fw-shipped-$(CONFIG_USB_KAWETH) += kaweth/new_code.bin kaweth/trigger_code.bin \
  				   kaweth/new_code_fix.bin \
  				   kaweth/trigger_code_fix.bin
2971c579f   David Woodhouse   keyspan: use requ...
108
109
110
111
112
113
114
115
116
117
118
119
120
121
  ifdef CONFIG_FIRMWARE_IN_KERNEL
  fw-shipped-$(CONFIG_USB_SERIAL_KEYSPAN_MPR) += keyspan/mpr.fw
  fw-shipped-$(CONFIG_USB_SERIAL_KEYSPAN_USA18X) += keyspan/usa18x.fw
  fw-shipped-$(CONFIG_USB_SERIAL_KEYSPAN_USA19) += keyspan/usa19.fw
  fw-shipped-$(CONFIG_USB_SERIAL_KEYSPAN_USA19QI) += keyspan/usa19qi.fw
  fw-shipped-$(CONFIG_USB_SERIAL_KEYSPAN_USA19QW) += keyspan/usa19qw.fw
  fw-shipped-$(CONFIG_USB_SERIAL_KEYSPAN_USA19W) += keyspan/usa19w.fw
  fw-shipped-$(CONFIG_USB_SERIAL_KEYSPAN_USA28) += keyspan/usa28.fw
  fw-shipped-$(CONFIG_USB_SERIAL_KEYSPAN_USA28XA) += keyspan/usa28xa.fw
  fw-shipped-$(CONFIG_USB_SERIAL_KEYSPAN_USA28XB) += keyspan/usa28xb.fw
  fw-shipped-$(CONFIG_USB_SERIAL_KEYSPAN_USA28X) += keyspan/usa28x.fw
  fw-shipped-$(CONFIG_USB_SERIAL_KEYSPAN_USA49W) += keyspan/usa49w.fw
  fw-shipped-$(CONFIG_USB_SERIAL_KEYSPAN_USA49WLC) += keyspan/usa49wlc.fw
  else
d25dc7fd4   David Woodhouse   Fix 'make clean' ...
122
  fw-shipped- += keyspan/mpr.fw keyspan/usa18x.fw keyspan/usa19.fw	\
2971c579f   David Woodhouse   keyspan: use requ...
123
124
125
126
  	keyspan/usa19qi.fw keyspan/usa19qw.fw keyspan/usa19w.fw		\
  	keyspan/usa28.fw keyspan/usa28xa.fw keyspan/usa28xb.fw		\
  	keyspan/usa28x.fw keyspan/usa49w.fw keyspan/usa49wlc.fw
  endif
7df523166   Chris Adams   ti_usb_3410_5052:...
127
128
  fw-shipped-$(CONFIG_USB_SERIAL_TI) += ti_3410.fw ti_5052.fw \
  				      mts_cdma.fw mts_gsm.fw mts_edge.fw
5b9ea9322   Jaswinder Singh   edgeport: use req...
129
130
  fw-shipped-$(CONFIG_USB_SERIAL_EDGEPORT) += edgeport/boot.fw edgeport/boot2.fw \
  					    edgeport/down.fw edgeport/down2.fw
d12b219a2   Jaswinder Singh   edgeport-ti: use ...
131
  fw-shipped-$(CONFIG_USB_SERIAL_EDGEPORT_TI) += edgeport/down3.bin
ec6752f5a   David Woodhouse   whiteheat: use re...
132
133
  fw-shipped-$(CONFIG_USB_SERIAL_WHITEHEAT) += whiteheat_loader.fw whiteheat.fw \
  					   # whiteheat_loader_debug.fw
3edbf98b8   David Woodhouse   keyspan_pda: use ...
134
135
  fw-shipped-$(CONFIG_USB_SERIAL_KEYSPAN_PDA) += keyspan_pda/keyspan_pda.fw
  fw-shipped-$(CONFIG_USB_SERIAL_XIRCOM) += keyspan_pda/xircom_pgs.fw
fb54be875   Jaswinder Singh   vicam: use reques...
136
  fw-shipped-$(CONFIG_USB_VICAM) += vicam/firmware.fw
04a33e406   David Woodhouse   cpia2: use reques...
137
  fw-shipped-$(CONFIG_VIDEO_CPIA2) += cpia2/stv0672_vp4.bin
a7a5eb9d4   Jaswinder Singh Rajput   yam: use request_...
138
  fw-shipped-$(CONFIG_YAM) += yam/1200.bin yam/9600.bin
88ecf814c   David Woodhouse   firmware: Add fir...
139
140
141
142
  
  fw-shipped-all := $(fw-shipped-y) $(fw-shipped-m) $(fw-shipped-)
  
  # Directories which we _might_ need to create, so we have a rule for them.
3c955b407   Jan Beulich   fixes for using m...
143
  firmware-dirs := $(sort $(addprefix $(objtree)/$(obj)/,$(dir $(fw-external-y) $(fw-shipped-all))))
4d2acfbfd   David Woodhouse   firmware: Add CON...
144
145
146
147
148
149
  
  quiet_cmd_mkdir = MKDIR   $(patsubst $(objtree)/%,%,$@)
        cmd_mkdir = mkdir -p $@
  
  quiet_cmd_ihex  = IHEX    $@
        cmd_ihex  = $(OBJCOPY) -Iihex -Obinary $< $@
8bd6b2229   David Woodhouse   ihex: add ihex2fw...
150
  quiet_cmd_ihex2fw  = IHEX2FW $@
556b0f58b   David Woodhouse   Revert "fix modul...
151
        cmd_ihex2fw  = $(objtree)/$(obj)/ihex2fw $< $@
8bd6b2229   David Woodhouse   ihex: add ihex2fw...
152

59890f74e   David Woodhouse   ihex: Add support...
153
  quiet_cmd_h16tofw  = H16TOFW $@
556b0f58b   David Woodhouse   Revert "fix modul...
154
        cmd_h16tofw  = $(objtree)/$(obj)/ihex2fw -w $< $@
59890f74e   David Woodhouse   ihex: Add support...
155

4d2acfbfd   David Woodhouse   firmware: Add CON...
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
  quiet_cmd_fwbin = MK_FW   $@
        cmd_fwbin = FWNAME="$(patsubst firmware/%.gen.S,%,$@)";		     \
  		  FWSTR="$(subst /,_,$(subst .,_,$(subst -,_,$(patsubst	     \
  				firmware/%.gen.S,%,$@))))";		     \
  		  ASM_WORD=$(if $(CONFIG_64BIT),.quad,.long);		     \
  		  ASM_ALIGN=$(if $(CONFIG_64BIT),3,2);			     \
  		  PROGBITS=$(if $(CONFIG_ARM),%,@)progbits;		     \
  		  echo "/* Generated by firmware/Makefile */"		> $@;\
  		  echo "    .section .rodata"				>>$@;\
  		  echo "    .p2align $${ASM_ALIGN}"			>>$@;\
  		  echo "_fw_$${FWSTR}_bin:"				>>$@;\
  		  echo "    .incbin \"$(2)\""				>>$@;\
  		  echo "_fw_end:"					>>$@;\
  		  echo "   .section .rodata.str,\"aMS\",$${PROGBITS},1"	>>$@;\
  		  echo "    .p2align $${ASM_ALIGN}"			>>$@;\
  		  echo "_fw_$${FWSTR}_name:"				>>$@;\
  		  echo "    .string \"$$FWNAME\""			>>$@;\
  		  echo "    .section .builtin_fw,\"a\",$${PROGBITS}"	>>$@;\
  		  echo "    .p2align $${ASM_ALIGN}"			>>$@;\
  		  echo "    $${ASM_WORD} _fw_$${FWSTR}_name"		>>$@;\
  		  echo "    $${ASM_WORD} _fw_$${FWSTR}_bin"		>>$@;\
  		  echo "    $${ASM_WORD} _fw_end - _fw_$${FWSTR}_bin"	>>$@;
  
  # One of these files will change, or come into existence, whenever
  # the configuration changes between 32-bit and 64-bit. The .S files
  # need to change when that happens.
  wordsize_deps := $(wildcard include/config/64bit.h include/config/32bit.h \
  		include/config/ppc32.h include/config/ppc64.h \
  		include/config/superh32.h include/config/superh64.h \
  		include/config/x86_32.h include/config/x86_64.h)
  
  # Workaround for make < 3.81, where .SECONDEXPANSION doesn't work.
  # It'll end up depending on these targets, so make them a PHONY rule which
  # depends on _all_ the directories in $(firmware-dirs), and it'll work out OK.
  PHONY += $(objtree)/$$(%) $(objtree)/$(obj)/$$(%)
  $(objtree)/$$(%) $(objtree)/$(obj)/$$(%): $(firmware-dirs)
  	@true
  
  # For the $$(dir %) trick, where we need % to be expanded first.
  .SECONDEXPANSION:
  
  $(patsubst %,$(obj)/%.gen.S, $(fw-shipped-y)): %: $(wordsize_deps) \
  		| $(objtree)/$$(dir %)
  	$(call cmd,fwbin,$(patsubst %.gen.S,%,$@))
  $(patsubst %,$(obj)/%.gen.S, $(fw-external-y)): %: $(wordsize_deps) \
50515af20   David Woodhouse   firmware: Correct...
201
  		include/config/extra/firmware/dir.h | $(objtree)/$$(dir %)
4d2acfbfd   David Woodhouse   firmware: Add CON...
202
203
204
205
206
  	$(call cmd,fwbin,$(fwabs)/$(patsubst $(obj)/%.gen.S,%,$@))
  
  # The .o files depend on the binaries directly; the .S files don't.
  $(patsubst %,$(obj)/%.gen.o, $(fw-shipped-y)): %.gen.o: %
  $(patsubst %,$(obj)/%.gen.o, $(fw-external-y)): $(obj)/%.gen.o: $(fwdir)/%
8bd6b2229   David Woodhouse   ihex: add ihex2fw...
207
208
  # .ihex is used just as a simple way to hold binary files in a source tree
  # where binaries are frowned upon. They are directly converted with objcopy.
4d2acfbfd   David Woodhouse   firmware: Add CON...
209
210
  $(obj)/%: $(obj)/%.ihex | $(objtree)/$(obj)/$$(dir %)
  	$(call cmd,ihex)
4528e4290   David Woodhouse   Partially revert ...
211
212
213
214
215
216
217
218
219
220
221
  # Don't depend on ihex2fw if we're installing and it already exists.
  # Putting it after | in the dependencies doesn't seem sufficient when
  # we're installing after a cross-compile, because ihex2fw has dependencies
  # on stuff like /usr/lib/gcc/ppc64-redhat-linux/4.3.0/include/stddef.h and 
  # thus wants to be rebuilt. Which it can't be, if the prebuilt kernel tree
  # is exported read-only for someone to run 'make install'.
  ifeq ($(INSTALL):$(wildcard $(obj)/ihex2fw),install:$(obj)/ihex2fw)
  ihex2fw_dep :=
  else
  ihex2fw_dep := $(obj)/ihex2fw
  endif
8bd6b2229   David Woodhouse   ihex: add ihex2fw...
222
223
224
225
  # .HEX is also Intel HEX, but where the offset and length in each record
  # is actually meaningful, because the firmware has to be loaded in a certain
  # order rather than as a single binary blob. Thus, we convert them into our
  # more compact binary representation of ihex records (<linux/ihex.h>)
4528e4290   David Woodhouse   Partially revert ...
226
  $(obj)/%.fw: $(obj)/%.HEX $(ihex2fw_dep) | $(objtree)/$(obj)/$$(dir %)
8bd6b2229   David Woodhouse   ihex: add ihex2fw...
227
  	$(call cmd,ihex2fw)
59890f74e   David Woodhouse   ihex: Add support...
228
  # .H16 is our own modified form of Intel HEX, with 16-bit length for records.
4528e4290   David Woodhouse   Partially revert ...
229
  $(obj)/%.fw: $(obj)/%.H16 $(ihex2fw_dep) | $(objtree)/$(obj)/$$(dir %)
59890f74e   David Woodhouse   ihex: Add support...
230
  	$(call cmd,h16tofw)
4d2acfbfd   David Woodhouse   firmware: Add CON...
231
232
  $(firmware-dirs):
  	$(call cmd,mkdir)
88ecf814c   David Woodhouse   firmware: Add fir...
233
234
  obj-y				 += $(patsubst %,%.gen.o, $(fw-external-y))
  obj-$(CONFIG_FIRMWARE_IN_KERNEL) += $(patsubst %,%.gen.o, $(fw-shipped-y))
4d2acfbfd   David Woodhouse   firmware: Add CON...
235
236
237
238
239
240
241
242
243
  
  # Remove .S files and binaries created from ihex
  # (during 'make clean' .config isn't included so they're all in $(fw-shipped-))
  targets := $(fw-shipped-) $(patsubst $(obj)/%,%, \
  				$(shell find $(obj) -name \*.gen.S 2>/dev/null))
  
  # Without this, built-in.o won't be created when it's empty, and the
  # final vmlinux link will fail.
  obj-n := dummy
556b0f58b   David Woodhouse   Revert "fix modul...
244
245
  
  hostprogs-y := ihex2fw