Blame view

scripts/Makefile.spl 13.3 KB
83d290c56   Tom Rini   SPDX: Convert all...
1
  # SPDX-License-Identifier: GPL-2.0+
6a11cf48a   Daniel Schwierzeck   spl: add initial ...
2
3
4
5
6
7
8
9
10
11
  #
  # (C) Copyright 2000-2011
  # Wolfgang Denk, DENX Software Engineering, wd@denx.de.
  #
  # (C) Copyright 2011
  # Daniel Schwierzeck, daniel.schwierzeck@googlemail.com.
  #
  # (C) Copyright 2011
  # Texas Instruments Incorporated - http://www.ti.com/
  # Aneesh V <aneesh@ti.com>
6a11cf48a   Daniel Schwierzeck   spl: add initial ...
12
13
  # Based on top-level Makefile.
  #
9e4140329   Masahiro Yamada   kbuild: change ou...
14
15
16
17
  src := $(obj)
  
  # Create output directory if not already present
  _dummy := $(shell [ -d $(obj) ] || mkdir -p $(obj))
bf4b3de10   Masahiro Yamada   kbuild: Use Kbuil...
18
  include $(srctree)/scripts/Kbuild.include
e02ee2548   Masahiro Yamada   kconfig: switch t...
19
  -include include/config/auto.conf
51148790f   Masahiro Yamada   kconfig: switch t...
20
  -include $(obj)/include/autoconf.mk
e0d5d9f88   Masahiro Yamada   Makefile: move so...
21

e02ee2548   Masahiro Yamada   kconfig: switch t...
22
23
24
25
  KBUILD_CPPFLAGS += -DCONFIG_SPL_BUILD
  ifeq ($(CONFIG_TPL_BUILD),y)
  KBUILD_CPPFLAGS += -DCONFIG_TPL_BUILD
  endif
3aa29de0b   Ying Zhang   TPL : introduce t...
26
  ifeq ($(CONFIG_TPL_BUILD),y)
3aa29de0b   Ying Zhang   TPL : introduce t...
27
28
29
30
  SPL_BIN := u-boot-tpl
  else
  SPL_BIN := u-boot-spl
  endif
d688bd728   Simon Glass   spl: Makefile: De...
31
32
  ifdef CONFIG_SPL_BUILD
  SPL_ := SPL_
001f3142c   Simon Glass   Makefile: Provide...
33
34
35
36
37
  ifeq ($(CONFIG_TPL_BUILD),y)
  SPL_TPL_ := TPL_
  else
  SPL_TPL_ := SPL_
  endif
d688bd728   Simon Glass   spl: Makefile: De...
38
39
  else
  SPL_ :=
001f3142c   Simon Glass   Makefile: Provide...
40
  SPL_TPL_ :=
d688bd728   Simon Glass   spl: Makefile: De...
41
  endif
2c5eac1e1   Simon Glass   Makefile: Add a w...
42
43
44
45
46
47
  ifeq ($(obj)$(CONFIG_SUPPORT_SPL),spl)
  $(error You cannot build SPL without enabling CONFIG_SUPPORT_SPL)
  endif
  ifeq ($(obj)$(CONFIG_SUPPORT_TPL),tpl)
  $(error You cannot build TPL without enabling CONFIG_SUPPORT_TPL)
  endif
4379ac614   Masahiro Yamada   kbuild: rename TO...
48
  include $(srctree)/config.mk
e19db555b   Daniel Schwierzeck   Kbuild: introduce...
49
  include $(srctree)/arch/$(ARCH)/Makefile
6a11cf48a   Daniel Schwierzeck   spl: add initial ...
50

d693742b2   Simon Goldschmidt   spl: unbreak CONF...
51
  include $(srctree)/scripts/Makefile.lib
026f9cf24   Masahiro Yamada   kbuild: improve K...
52
53
54
  # Enable garbage collection of un-used sections for SPL
  KBUILD_CFLAGS += -ffunction-sections -fdata-sections
  LDFLAGS_FINAL += --gc-sections
5fe6301a6   Masahiro Yamada   kbuild: generate ...
55
  # FIX ME
026f9cf24   Masahiro Yamada   kbuild: improve K...
56
57
  cpp_flags := $(KBUILD_CPPFLAGS) $(PLATFORM_CPPFLAGS) $(UBOOTINCLUDE) \
  							$(NOSTDINC_FLAGS)
dbbe2e640   Simon Glass   dm: Makefile: Bui...
58
  c_flags := $(KBUILD_CFLAGS) $(cpp_flags)
5fe6301a6   Masahiro Yamada   kbuild: generate ...
59

01286329b   Masahiro Yamada   kbuild: rename SR...
60
  HAVE_VENDOR_COMMON_LIB = $(if $(wildcard $(srctree)/board/$(VENDOR)/common/Makefile),y,n)
6a11cf48a   Daniel Schwierzeck   spl: add initial ...
61

bf69d6642   Masahiro Yamada   kbuild: allow nul...
62
  libs-y += $(if $(BOARDDIR),board/$(BOARDDIR)/)
656de6b81   Masahiro Yamada   kbuild: refactor ...
63
64
65
  libs-$(HAVE_VENDOR_COMMON_LIB) += board/$(VENDOR)/common/
  
  libs-$(CONFIG_SPL_FRAMEWORK) += common/spl/
af6bbd4da   Simon Glass   Move board_init_f...
66
  libs-y += common/init/
76f1f3881   Simon Glass   Use separate opti...
67
68
69
  
  # Special handling for a few options which support SPL/TPL
  ifeq ($(CONFIG_TPL_BUILD),y)
0649cd0d4   Simon Glass   Move environment ...
70
  libs-$(CONFIG_TPL_LIBCOMMON_SUPPORT) += common/ cmd/ env/
76f1f3881   Simon Glass   Use separate opti...
71
72
  libs-$(CONFIG_TPL_LIBGENERIC_SUPPORT) += lib/
  else
0649cd0d4   Simon Glass   Move environment ...
73
  libs-$(CONFIG_SPL_LIBCOMMON_SUPPORT) += common/ cmd/ env/
76f1f3881   Simon Glass   Use separate opti...
74
  libs-$(CONFIG_SPL_LIBGENERIC_SUPPORT) += lib/
91ff68656   Tom Rini   blk: Rework guard...
75
76
77
  ifdef CONFIG_SPL_FRAMEWORK
  libs-$(CONFIG_PARTITIONS) += disk/
  endif
76f1f3881   Simon Glass   Use separate opti...
78
  endif
d6c2ac5b7   Masahiro Yamada   spl: move SPL dri...
79
  libs-y += drivers/
f811e9763   Jean-Jacques Hiblot   Kconfig: rename C...
80
  libs-$(CONFIG_SPL_USB_GADGET) += drivers/usb/dwc3/
1cec7be03   Ye Li   MLK-20559-2 spl: ...
81
  libs-$(CONFIG_SPL_USB_GADGET) += drivers/usb/cdns3/
8d7a2b83f   Michal Simek   spl: Add support ...
82
  libs-y += dts/
656de6b81   Masahiro Yamada   kbuild: refactor ...
83
  libs-y += fs/
656de6b81   Masahiro Yamada   kbuild: refactor ...
84
85
  libs-$(CONFIG_SPL_POST_MEM_SUPPORT) += post/drivers/
  libs-$(CONFIG_SPL_NET_SUPPORT) += net/
efcc6096d   Daniel Schwierzeck   spl: Add support ...
86

656de6b81   Masahiro Yamada   kbuild: refactor ...
87
88
89
90
91
  head-y		:= $(addprefix $(obj)/,$(head-y))
  libs-y		:= $(addprefix $(obj)/,$(libs-y))
  u-boot-spl-dirs	:= $(patsubst %/,%,$(filter %/, $(libs-y)))
  
  libs-y := $(patsubst %/, %/built-in.o, $(libs-y))
e2906a594   Masahiro Yamada   Makefile: rename ...
92

660e98f2e   Allen Martin   spl: fix SPL buil...
93
  # Add GCC lib
cd2e46cb3   Masahiro Yamada   kbuild: add CONFI...
94
  ifeq ($(CONFIG_USE_PRIVATE_LIBGCC),y)
a86cf89c7   Masahiro Yamada   kbuild: consolida...
95
  PLATFORM_LIBGCC = arch/$(ARCH)/lib/lib.a
6445262ca   Masahiro Yamada   kbuild: fix SPL l...
96
  PLATFORM_LIBS := $(filter-out %/lib.a, $(filter-out -lgcc, $(PLATFORM_LIBS))) $(PLATFORM_LIBGCC)
660e98f2e   Allen Martin   spl: fix SPL buil...
97
  endif
656de6b81   Masahiro Yamada   kbuild: refactor ...
98
99
  u-boot-spl-init := $(head-y)
  u-boot-spl-main := $(libs-y)
f291ce129   Philipp Tomsich   spl: dm: Kconfig:...
100
  ifdef CONFIG_$(SPL_TPL_)OF_PLATDATA
dbbe2e640   Simon Glass   dm: Makefile: Bui...
101
102
  u-boot-spl-platdata := $(obj)/dts/dt-platdata.o
  endif
6a11cf48a   Daniel Schwierzeck   spl: add initial ...
103
104
  
  # Linker Script
dd6fbcb93   Philipp Tomsich   spl: Kconfig: mig...
105
106
  # First test whether there's a linker-script for the specific stage defined...
  ifneq ($(CONFIG_$(SPL_TPL_)LDSCRIPT),)
6a11cf48a   Daniel Schwierzeck   spl: add initial ...
107
  # need to strip off double quotes
1749858a6   Philipp Tomsich   spl: allow a sepa...
108
  LDSCRIPT := $(addprefix $(srctree)/,$(CONFIG_$(SPL_TPL_)LDSCRIPT:"%"=%))
dd6fbcb93   Philipp Tomsich   spl: Kconfig: mig...
109
110
111
112
113
114
  else
  # ...then fall back to the generic SPL linker-script
  ifneq ($(CONFIG_SPL_LDSCRIPT),)
  # need to strip off double quotes
  LDSCRIPT := $(addprefix $(srctree)/,$(CONFIG_SPL_LDSCRIPT:"%"=%))
  endif
6a11cf48a   Daniel Schwierzeck   spl: add initial ...
115
116
117
  endif
  
  ifeq ($(wildcard $(LDSCRIPT)),)
4379ac614   Masahiro Yamada   kbuild: rename TO...
118
  	LDSCRIPT := $(srctree)/board/$(BOARDDIR)/u-boot-spl.lds
6a11cf48a   Daniel Schwierzeck   spl: add initial ...
119
120
  endif
  ifeq ($(wildcard $(LDSCRIPT)),)
4379ac614   Masahiro Yamada   kbuild: rename TO...
121
  	LDSCRIPT := $(srctree)/$(CPUDIR)/u-boot-spl.lds
6a11cf48a   Daniel Schwierzeck   spl: add initial ...
122
123
  endif
  ifeq ($(wildcard $(LDSCRIPT)),)
4379ac614   Masahiro Yamada   kbuild: rename TO...
124
  	LDSCRIPT := $(srctree)/arch/$(ARCH)/cpu/u-boot-spl.lds
ee60197e6   Simon Glass   Allow arch direct...
125
126
  endif
  ifeq ($(wildcard $(LDSCRIPT)),)
6a11cf48a   Daniel Schwierzeck   spl: add initial ...
127
128
129
130
131
132
133
  $(error could not find linker script)
  endif
  
  # Special flags for CPP when processing the linker script.
  # Pass the version down so we can handle backwards compatibility
  # on the fly.
  LDPPFLAGS += \
4379ac614   Masahiro Yamada   kbuild: rename TO...
134
  	-include $(srctree)/include/u-boot/u-boot.lds.h \
5ee828ca9   Masahiro Yamada   kbuild: rename OB...
135
  	-include $(objtree)/include/config.h \
7e6403a66   Simon Glass   Define CPUDIR for...
136
  	-DCPUDIR=$(CPUDIR) \
6a11cf48a   Daniel Schwierzeck   spl: add initial ...
137
138
  	$(shell $(LD) --version | \
  	  sed -ne 's/GNU ld version \([0-9][0-9]*\)\.\([0-9][0-9]*\).*/-DLD_MAJOR=\1 -DLD_MINOR=\2/p')
2f41ade79   Tom Rini   linker: Modify li...
139
140
141
142
143
144
145
146
  # Turn various CONFIG symbols into IMAGE symbols for easy reuse of
  # the scripts between SPL and TPL.
  ifneq ($(CONFIG_$(SPL_TPL_)MAX_SIZE),)
  LDPPFLAGS += -DIMAGE_MAX_SIZE=$(CONFIG_$(SPL_TPL_)MAX_SIZE)
  endif
  ifneq ($(CONFIG_$(SPL_TPL_)TEXT_BASE),)
  LDPPFLAGS += -DIMAGE_TEXT_BASE=$(CONFIG_$(SPL_TPL_)TEXT_BASE)
  endif
1f6a66480   Sven Ebenfeld   Makefile: preserv...
147
  MKIMAGEOUTPUT ?= /dev/null
b97241b31   Marek Vasut   kbuild: Rename UI...
148
  quiet_cmd_mkimage = MKIMAGE $@
9bf215b03   Masahiro Yamada   kbuild: use short...
149
  cmd_mkimage = $(objtree)/tools/mkimage $(MKIMAGEFLAGS_$(@F)) -d $< $@ \
065876173   Rasmus Villemoes   Makefile: always ...
150
  	>$(MKIMAGEOUTPUT) $(if $(KBUILD_VERBOSE:0=), && cat $(MKIMAGEOUTPUT))
79b9ebb70   Tom Rini   omapimage: Add su...
151

82f29fd51   Lokesh Vutla   armv8: K3: am654:...
152
153
154
  quiet_cmd_mkfitimage = MKIMAGE $@
  cmd_mkfitimage = $(objtree)/tools/mkimage $(MKIMAGEFLAGS_$(@F)) -f $(SPL_ITS) -E $@ \
  	$(if $(KBUILD_VERBOSE:1=), MKIMAGEOUTPUT)
9bf215b03   Masahiro Yamada   kbuild: use short...
155
156
157
  MKIMAGEFLAGS_MLO = -T omapimage -a $(CONFIG_SPL_TEXT_BASE)
  
  MKIMAGEFLAGS_MLO.byteswap = -T omapimage -n byteswap -a $(CONFIG_SPL_TEXT_BASE)
514ec4389   Masahiro Yamada   kbuild: add missi...
158
  MLO MLO.byteswap: $(obj)/u-boot-spl.bin FORCE
9bf215b03   Masahiro Yamada   kbuild: use short...
159
  	$(call if_changed,mkimage)
3decb14ab   John Rigby   mkimage: Add OMAP...
160

08598d6ee   Nathan Rossi   ARM: zynq: Add ta...
161
  ifeq ($(CONFIG_SYS_SOC),"at91")
5c390a5b2   Andreas Bießmann   arm:at91: enable ...
162
163
164
165
166
167
168
  MKIMAGEFLAGS_boot.bin = -T atmelimage
  
  ifeq ($(CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER),y)
  MKIMAGEFLAGS_boot.bin += -n $(shell $(obj)/../tools/atmel_pmecc_params)
  
  boot.bin: $(obj)/../tools/atmel_pmecc_params
  endif
514ec4389   Masahiro Yamada   kbuild: add missi...
169
  boot.bin: $(obj)/u-boot-spl.bin FORCE
5c390a5b2   Andreas Bießmann   arm:at91: enable ...
170
  	$(call if_changed,mkimage)
08598d6ee   Nathan Rossi   ARM: zynq: Add ta...
171
  else
d9b58b303   Michal Simek   tools: zynqmpimag...
172
  ifdef CONFIG_ARCH_ZYNQ
3b6460809   Mike Looijmans   tools: mkimage: A...
173
  MKIMAGEFLAGS_boot.bin = -T zynqimage -R $(srctree)/$(CONFIG_BOOT_INIT_FILE)
d9b58b303   Michal Simek   tools: zynqmpimag...
174
175
  endif
  ifdef CONFIG_ARCH_ZYNQMP
c7df098a7   Luca Ceresoli   arm64: zynqmp: ac...
176
177
178
179
180
181
  ifneq ($(CONFIG_PMUFW_INIT_FILE),"")
  spl/boot.bin: zynqmp-check-pmufw
  zynqmp-check-pmufw: FORCE
  	( cd $(srctree) && test -r $(CONFIG_PMUFW_INIT_FILE) ) \
  		|| ( echo "Cannot read $(CONFIG_PMUFW_INIT_FILE)" && false )
  endif
c85a6b79d   Michal Simek   tools: mkimage: E...
182
  MKIMAGEFLAGS_boot.bin = -T zynqmpimage -R $(srctree)/$(CONFIG_BOOT_INIT_FILE) \
c7df098a7   Luca Ceresoli   arm64: zynqmp: ac...
183
  	-n "$(shell cd $(srctree); readlink -f $(CONFIG_PMUFW_INIT_FILE))"
d9b58b303   Michal Simek   tools: zynqmpimag...
184
  endif
08598d6ee   Nathan Rossi   ARM: zynq: Add ta...
185

a903dcf7d   Michal Simek   arm64: zynqmp: Al...
186
187
188
189
  $(obj)/$(SPL_BIN)-align.bin: $(obj)/$(SPL_BIN).bin
  	@dd if=$< of=$@ conv=block,sync bs=4 2>/dev/null;
  
  spl/boot.bin: $(obj)/$(SPL_BIN)-align.bin FORCE
08598d6ee   Nathan Rossi   ARM: zynq: Add ta...
190
191
  	$(call if_changed,mkimage)
  endif
5c390a5b2   Andreas Bießmann   arm:at91: enable ...
192

e19b0fb48   Masahiro Yamada   kbuild: generate ...
193
  ALL-y	+= $(obj)/$(SPL_BIN).bin
6a11cf48a   Daniel Schwierzeck   spl: add initial ...
194

98a48c5de   Chander Kashyap   ORIGEN: Add MMC S...
195
  ifdef CONFIG_SAMSUNG
9e4140329   Masahiro Yamada   kbuild: change ou...
196
  ALL-y	+= $(obj)/$(BOARD)-spl.bin
98a48c5de   Chander Kashyap   ORIGEN: Add MMC S...
197
  endif
e3ada91e4   Dalon Westergreen   ARM: socfpga: Bui...
198
  ifneq ($(CONFIG_TARGET_SOCFPGA_GEN5)$(CONFIG_TARGET_SOCFPGA_ARRIA10),)
bd7dc3883   Simon Glass   socfpga: Simplify...
199
  ALL-y	+= $(obj)/$(SPL_BIN).sfp
333b7209e   Marek Vasut   Makefile: Add tar...
200
  endif
aec9a0f19   Jagan Teki   sunxi: Rename CON...
201
  ifdef CONFIG_ARCH_SUNXI
50827a599   Ian Campbell   sunxi: non-FEL SP...
202
  ALL-y	+= $(obj)/sunxi-spl.bin
d2fdcc76e   Maxime Ripard   scripts: sunxi: B...
203
204
205
206
  
  ifdef CONFIG_NAND_SUNXI
  ALL-y	+= $(obj)/sunxi-spl-with-ecc.bin
  endif
50827a599   Ian Campbell   sunxi: non-FEL SP...
207
  endif
50827a599   Ian Campbell   sunxi: non-FEL SP...
208

c001486d9   Heiko Schocher   arm, at91: genera...
209
210
211
  ifeq ($(CONFIG_SYS_SOC),"at91")
  ALL-y	+= boot.bin
  endif
84547b4e6   Simon Glass   x86: Add SPL buil...
212
  ALL-$(CONFIG_SPL_X86_16BIT_INIT) += $(obj)/u-boot-x86-16bit-spl.bin
1a6a6e9a1   Michal Simek   ARM64: zynq: Fix ...
213
214
  ALL-$(CONFIG_ARCH_ZYNQ)		+= $(obj)/boot.bin
  ALL-$(CONFIG_ARCH_ZYNQMP)	+= $(obj)/boot.bin
d9b58b303   Michal Simek   tools: zynqmpimag...
215

3b975a147   Ryder Lee   tools: MediaTek: ...
216
  ALL-$(CONFIG_ARCH_MEDIATEK)	+= $(obj)/u-boot-spl-mtk.bin
6a11cf48a   Daniel Schwierzeck   spl: add initial ...
217
  all:	$(ALL-y)
fa78e0a37   Simon Glass   dm: Reduce SPL de...
218
219
  quiet_cmd_cat = CAT     $@
  cmd_cat = cat $(filter-out $(PHONY), $^) > $@
03c25bcd2   Simon Glass   fdt: Build an SPL...
220
221
  quiet_cmd_copy = COPY    $@
        cmd_copy = cp $< $@
2f57c9510   Jean-Jacques Hiblot   spl: dm: Make it ...
222
223
224
225
226
227
228
229
230
  ifneq ($(CONFIG_SPL_MULTI_DTB_FIT),y)
  FINAL_DTB_CONTAINER = $(obj)/$(SPL_BIN).dtb
  else ifeq ($(CONFIG_SPL_MULTI_DTB_FIT_LZO),y)
  FINAL_DTB_CONTAINER = $(obj)/$(SPL_BIN).multidtb.fit.lzo
  else ifeq ($(CONFIG_SPL_MULTI_DTB_FIT_GZIP),y)
  FINAL_DTB_CONTAINER = $(obj)/$(SPL_BIN).multidtb.fit.gz
  else
  FINAL_DTB_CONTAINER = $(obj)/$(SPL_BIN).multidtb.fit
  endif
f291ce129   Philipp Tomsich   spl: dm: Kconfig:...
231
  ifeq ($(CONFIG_$(SPL_TPL_)OF_CONTROL)$(CONFIG_OF_SEPARATE)$(CONFIG_$(SPL_TPL_)OF_PLATDATA),yy)
0ec28e026   Simon Glass   spl: Don't create...
232
233
  $(obj)/$(SPL_BIN)-dtb.bin: $(obj)/$(SPL_BIN)-nodtb.bin \
  		$(if $(CONFIG_SPL_SEPARATE_BSS),,$(obj)/$(SPL_BIN)-pad.bin) \
2f57c9510   Jean-Jacques Hiblot   spl: dm: Make it ...
234
  		$(FINAL_DTB_CONTAINER)  FORCE
fa78e0a37   Simon Glass   dm: Reduce SPL de...
235
  	$(call if_changed,cat)
03c25bcd2   Simon Glass   fdt: Build an SPL...
236
237
238
239
240
241
242
243
  $(obj)/$(SPL_BIN).bin: $(obj)/$(SPL_BIN)-dtb.bin FORCE
  	$(call if_changed,copy)
  else
  $(obj)/$(SPL_BIN).bin: $(obj)/$(SPL_BIN)-nodtb.bin FORCE
  	$(call if_changed,copy)
  endif
  
  # Create a file that pads from the end of u-boot-spl-nodtb.bin to bss_end
fa78e0a37   Simon Glass   dm: Reduce SPL de...
244
245
246
  $(obj)/$(SPL_BIN)-pad.bin: $(obj)/$(SPL_BIN)
  	@bss_size_str=$(shell $(NM) $< | awk 'BEGIN {size = 0} /__bss_size/ {size = $$1} END {print "ibase=16; " toupper(size)}' | bc); \
  	dd if=/dev/zero of=$@ bs=1 count=$${bss_size_str} 2>/dev/null;
9bd76b807   Goldschmidt Simon   spl: make CONFIG_...
247
248
  $(obj)/$(SPL_BIN).dtb: dts/dt-spl.dtb FORCE
  	$(call if_changed,copy)
fa78e0a37   Simon Glass   dm: Reduce SPL de...
249

15b97f5c5   Masahiro Yamada   pylibfdt: move py...
250
  pythonpath = PYTHONPATH=scripts/dtc/pylibfdt
dbbe2e640   Simon Glass   dm: Makefile: Bui...
251
252
253
254
255
256
257
258
259
  
  quiet_cmd_dtocc = DTOC C  $@
  cmd_dtocc = $(pythonpath) $(srctree)/tools/dtoc/dtoc -d $(obj)/$(SPL_BIN).dtb -o $@ platdata
  
  quiet_cmd_dtoch = DTOC H  $@
  cmd_dtoch = $(pythonpath) $(srctree)/tools/dtoc/dtoc -d $(obj)/$(SPL_BIN).dtb -o $@ struct
  
  quiet_cmd_plat = PLAT    $@
  cmd_plat = $(CC) $(c_flags) -c $< -o $@
b145b45b0   Simon Glass   dtoc: Rename the ...
260
261
  $(obj)/dts/dt-platdata.o: $(obj)/dts/dt-platdata.c \
  		include/generated/dt-structs-gen.h
dbbe2e640   Simon Glass   dm: Makefile: Bui...
262
263
264
265
266
  	$(call if_changed,plat)
  
  PHONY += dts_dir
  dts_dir:
  	$(shell [ -d $(obj)/dts ] || mkdir -p $(obj)/dts)
d6a0c78a4   Masahiro Yamada   pylibfdt: compile...
267
  include/generated/dt-structs-gen.h: $(obj)/$(SPL_BIN).dtb dts_dir FORCE
dbbe2e640   Simon Glass   dm: Makefile: Bui...
268
  	$(call if_changed,dtoch)
d6a0c78a4   Masahiro Yamada   pylibfdt: compile...
269
  $(obj)/dts/dt-platdata.c: $(obj)/$(SPL_BIN).dtb dts_dir FORCE
dbbe2e640   Simon Glass   dm: Makefile: Bui...
270
  	$(call if_changed,dtocc)
98a48c5de   Chander Kashyap   ORIGEN: Add MMC S...
271
  ifdef CONFIG_SAMSUNG
0fcac1abd   Rajeshwari Birje   SPL: EXYNOS: Prep...
272
273
274
275
276
  ifdef CONFIG_VAR_SIZE_SPL
  VAR_SIZE_PARAM = --vs
  else
  VAR_SIZE_PARAM =
  endif
9e4140329   Masahiro Yamada   kbuild: change ou...
277
  $(obj)/$(BOARD)-spl.bin: $(obj)/u-boot-spl.bin
5ee828ca9   Masahiro Yamada   kbuild: rename OB...
278
279
280
  	$(if $(wildcard $(objtree)/spl/board/samsung/$(BOARD)/tools/mk$(BOARD)spl),\
  	$(objtree)/spl/board/samsung/$(BOARD)/tools/mk$(BOARD)spl,\
  	$(objtree)/tools/mkexynosspl) $(VAR_SIZE_PARAM) $< $@
98a48c5de   Chander Kashyap   ORIGEN: Add MMC S...
281
  endif
f9c235fd9   Masahiro Yamada   kbuild: use short...
282
283
  quiet_cmd_objcopy = OBJCOPY $@
  cmd_objcopy = $(OBJCOPY) $(OBJCOPYFLAGS) $(OBJCOPYFLAGS_$(@F)) $< $@
84547b4e6   Simon Glass   x86: Add SPL buil...
284
285
  OBJCOPYFLAGS_$(SPL_BIN)-nodtb.bin = $(SPL_OBJCFLAGS) -O binary \
  		$(if $(CONFIG_SPL_X86_16BIT_INIT),-R .start16 -R .resetvec)
f9c235fd9   Masahiro Yamada   kbuild: use short...
286

03c25bcd2   Simon Glass   fdt: Build an SPL...
287
  $(obj)/$(SPL_BIN)-nodtb.bin: $(obj)/$(SPL_BIN) FORCE
f9c235fd9   Masahiro Yamada   kbuild: use short...
288
  	$(call if_changed,objcopy)
6a11cf48a   Daniel Schwierzeck   spl: add initial ...
289

84547b4e6   Simon Glass   x86: Add SPL buil...
290
291
292
  OBJCOPYFLAGS_u-boot-x86-16bit-spl.bin := -O binary -j .start16 -j .resetvec
  $(obj)/u-boot-x86-16bit-spl.bin: $(obj)/u-boot-spl FORCE
  	$(call if_changed,objcopy)
9e4140329   Masahiro Yamada   kbuild: change ou...
293
  LDFLAGS_$(SPL_BIN) += -T u-boot-spl.lds $(LDFLAGS_FINAL)
e391b1e64   Joel Stanley   Makefile: Fix lin...
294
295
296
  
  # Avoid 'Not enough room for program headers' error on binutils 2.28 onwards.
  LDFLAGS_$(SPL_BIN) += $(call ld-option, --no-dynamic-linker)
a6d6812a2   Tom Rini   PowerPC: Stop re-...
297
  # Pick the best-match (i.e. SPL_TEXT_BASE for SPL, TPL_TEXT_BASE for TPL)
1749858a6   Philipp Tomsich   spl: allow a sepa...
298
299
  ifneq ($(CONFIG_$(SPL_TPL_)TEXT_BASE),)
  LDFLAGS_$(SPL_BIN) += -Ttext $(CONFIG_$(SPL_TPL_)TEXT_BASE)
1749858a6   Philipp Tomsich   spl: allow a sepa...
300
  endif
e0d5d9f88   Masahiro Yamada   Makefile: move so...
301

792557d11   Marek Vasut   spl: socfpga: Gen...
302
303
304
  ifdef CONFIG_TARGET_SOCFPGA_ARRIA10
  MKIMAGEFLAGS_$(SPL_BIN).sfp = -T socfpgaimage_v1
  else
bd7dc3883   Simon Glass   socfpga: Simplify...
305
  MKIMAGEFLAGS_$(SPL_BIN).sfp = -T socfpgaimage
792557d11   Marek Vasut   spl: socfpga: Gen...
306
  endif
bd7dc3883   Simon Glass   socfpga: Simplify...
307
  $(obj)/$(SPL_BIN).sfp: $(obj)/$(SPL_BIN).bin FORCE
333b7209e   Marek Vasut   Makefile: Add tar...
308
  	$(call if_changed,mkimage)
333b7209e   Marek Vasut   Makefile: Add tar...
309

50827a599   Ian Campbell   sunxi: non-FEL SP...
310
  quiet_cmd_mksunxiboot = MKSUNXI $@
7f0ef5a94   Siarhei Siamashka   sunxi: Store the ...
311
312
  cmd_mksunxiboot = $(objtree)/tools/mksunxiboot \
  			--default-dt $(CONFIG_DEFAULT_DEVICE_TREE) $< $@
514ec4389   Masahiro Yamada   kbuild: add missi...
313
  $(obj)/sunxi-spl.bin: $(obj)/$(SPL_BIN).bin FORCE
50827a599   Ian Campbell   sunxi: non-FEL SP...
314
  	$(call if_changed,mksunxiboot)
50827a599   Ian Campbell   sunxi: non-FEL SP...
315

d2fdcc76e   Maxime Ripard   scripts: sunxi: B...
316
317
318
319
320
321
322
323
324
325
  quiet_cmd_sunxi_spl_image_builder = SUNXI_SPL_IMAGE_BUILDER $@
  cmd_sunxi_spl_image_builder = $(objtree)/tools/sunxi-spl-image-builder \
  				-c $(CONFIG_NAND_SUNXI_SPL_ECC_STRENGTH)/$(CONFIG_NAND_SUNXI_SPL_ECC_SIZE) \
  				-p $(CONFIG_SYS_NAND_PAGE_SIZE) \
  				-o $(CONFIG_SYS_NAND_OOBSIZE) \
  				-u $(CONFIG_NAND_SUNXI_SPL_USABLE_PAGE_SIZE) \
  				-e $(CONFIG_SYS_NAND_BLOCK_SIZE) \
  				-s -b $< $@
  $(obj)/sunxi-spl-with-ecc.bin: $(obj)/sunxi-spl.bin
  	$(call if_changed,sunxi_spl_image_builder)
3b975a147   Ryder Lee   tools: MediaTek: ...
326
327
328
329
330
331
332
333
  
  # MediaTek's specific SPL build
  MKIMAGEFLAGS_u-boot-spl-mtk.bin = -T mtk_image \
  	-a $(CONFIG_SPL_TEXT_BASE) -e $(CONFIG_SPL_TEXT_BASE) \
  	-n "$(patsubst "%",%,$(CONFIG_MTK_BROM_HEADER_INFO))"
  
  $(obj)/u-boot-spl-mtk.bin: $(obj)/u-boot-spl.bin FORCE
  	$(call if_changed,mkimage)
72a7e0760   Simon Glass   Makefile: Allow t...
334
335
336
337
  # Rule to link u-boot-spl
  # May be overridden by arch/$(ARCH)/config.mk
  quiet_cmd_u-boot-spl ?= LD      $@
        cmd_u-boot-spl ?= (cd $(obj) && $(LD) $(LDFLAGS) $(LDFLAGS_$(@F)) \
656de6b81   Masahiro Yamada   kbuild: refactor ...
338
  		       $(patsubst $(obj)/%,%,$(u-boot-spl-init)) --start-group \
dbbe2e640   Simon Glass   dm: Makefile: Bui...
339
340
341
  		       $(patsubst $(obj)/%,%,$(u-boot-spl-main))  \
  		       $(patsubst $(obj)/%,%,$(u-boot-spl-platdata)) \
  		       --end-group \
9adb6d240   Masahiro Yamada   kbuild: fix a bug...
342
  		       $(PLATFORM_LIBS) -Map $(SPL_BIN).map -o $(SPL_BIN))
6a11cf48a   Daniel Schwierzeck   spl: add initial ...
343

dbbe2e640   Simon Glass   dm: Makefile: Bui...
344
345
  $(obj)/$(SPL_BIN): $(u-boot-spl-platdata) $(u-boot-spl-init) \
  		$(u-boot-spl-main) $(obj)/u-boot-spl.lds FORCE
9adb6d240   Masahiro Yamada   kbuild: fix a bug...
346
  	$(call if_changed,u-boot-spl)
6a11cf48a   Daniel Schwierzeck   spl: add initial ...
347

656de6b81   Masahiro Yamada   kbuild: refactor ...
348
  $(sort $(u-boot-spl-init) $(u-boot-spl-main)): $(u-boot-spl-dirs) ;
6a11cf48a   Daniel Schwierzeck   spl: add initial ...
349

656de6b81   Masahiro Yamada   kbuild: refactor ...
350
  PHONY += $(u-boot-spl-dirs)
dbbe2e640   Simon Glass   dm: Makefile: Bui...
351
  $(u-boot-spl-dirs): $(u-boot-spl-platdata)
656de6b81   Masahiro Yamada   kbuild: refactor ...
352
  	$(Q)$(MAKE) $(build)=$@
6a11cf48a   Daniel Schwierzeck   spl: add initial ...
353

04a34c96b   Masahiro Yamada   kbuild: use short...
354
  quiet_cmd_cpp_lds = LDS     $@
395e60cdc   Masahiro Yamada   kbuild: fix a bug...
355
  cmd_cpp_lds = $(CPP) -Wp,-MD,$(depfile) $(cpp_flags) $(LDPPFLAGS) -ansi \
44093a155   Simon Glass   fdt: Allow C++ co...
356
  		-D__ASSEMBLY__ -x assembler-with-cpp -std=c99 -P -o $@ $<
04a34c96b   Masahiro Yamada   kbuild: use short...
357

6825a95b0   Masahiro Yamada   kbuild: use Linux...
358
  $(obj)/u-boot-spl.lds: $(LDSCRIPT) FORCE
395e60cdc   Masahiro Yamada   kbuild: fix a bug...
359
  	$(call if_changed_dep,cpp_lds)
6a11cf48a   Daniel Schwierzeck   spl: add initial ...
360

f9c235fd9   Masahiro Yamada   kbuild: use short...
361
362
363
364
365
366
367
368
369
  # read all saved command lines
  
  targets := $(wildcard $(sort $(targets)))
  cmd_files := $(wildcard $(obj)/.*.cmd $(foreach f,$(targets),$(dir $(f)).$(notdir $(f)).cmd))
  
  ifneq ($(cmd_files),)
    $(cmd_files): ;	# Do not try to update included dependency files
    include $(cmd_files)
  endif
6825a95b0   Masahiro Yamada   kbuild: use Linux...
370
371
  PHONY += FORCE
  FORCE:
2f57c9510   Jean-Jacques Hiblot   spl: dm: Make it ...
372
373
374
  PHONY += dtbs
  dtbs:
  	$(Q)$(MAKE) $(build)=dts dtbs
6825a95b0   Masahiro Yamada   kbuild: use Linux...
375
376
377
  # Declare the contents of the .PHONY variable as phony.  We keep that
  # information in a variable so we can use it in if_changed and friends.
  .PHONY: $(PHONY)
2f57c9510   Jean-Jacques Hiblot   spl: dm: Make it ...
378
379
380
381
382
383
384
385
386
387
388
389
  
  SHRUNK_ARCH_DTB = $(patsubst %,$(obj)/dts/%.dtb,$(subst ",,$(CONFIG_SPL_OF_LIST)))
  .SECONDEXPANSION:
  $(SHRUNK_ARCH_DTB): $$(patsubst $(obj)/dts/%, arch/$(ARCH)/dts/%, $$@)
  	$(call if_changed,fdtgrep)
  
  MKIMAGEFLAGS_$(SPL_BIN).multidtb.fit = -f auto -A $(ARCH) -T firmware -C none -O u-boot \
  	-n "Multi DTB fit image for $(SPL_BIN)" -E \
  	$(patsubst %,-b %,$(SHRUNK_ARCH_DTB))
  
  $(obj)/$(SPL_BIN).multidtb.fit: /dev/null $(SHRUNK_ARCH_DTB) FORCE
  	$(call if_changed,mkimage)
8664ab7de   Vagrant Cascadian   Set time and umas...
390
391
392
393
  ifneq ($(SOURCE_DATE_EPOCH),)
  	touch -d @$(SOURCE_DATE_EPOCH) $(obj)/$(SPL_BIN).multidtb.fit
  	chmod 0600 $(obj)/$(SPL_BIN).multidtb.fit
  endif
2f57c9510   Jean-Jacques Hiblot   spl: dm: Make it ...
394
395
396
397
398
399
  
  $(obj)/$(SPL_BIN).multidtb.fit.gz: $(obj)/$(SPL_BIN).multidtb.fit
  	@gzip -kf9 $< > $@
  
  $(obj)/$(SPL_BIN).multidtb.fit.lzo: $(obj)/$(SPL_BIN).multidtb.fit
  	@lzop -f9 $< > $@
82f29fd51   Lokesh Vutla   armv8: K3: am654:...
400
401
402
403
404
  
  ifdef CONFIG_ARCH_K3
  tispl.bin: $(obj)/u-boot-spl-nodtb.bin $(SHRUNK_ARCH_DTB) $(SPL_ITS) FORCE
  	$(call if_changed,mkfitimage)
  endif