Blame view

scripts/Makefile.spl 11.6 KB
6a11cf48a   Daniel Schwierzeck   spl: add initial ...
1
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>
  #
1a4596601   Wolfgang Denk   Add GPL-2.0+ SPDX...
12
  # SPDX-License-Identifier:	GPL-2.0+
6a11cf48a   Daniel Schwierzeck   spl: add initial ...
13
14
15
  #
  # Based on top-level Makefile.
  #
9e4140329   Masahiro Yamada   kbuild: change ou...
16
17
18
19
  src := $(obj)
  
  # Create output directory if not already present
  _dummy := $(shell [ -d $(obj) ] || mkdir -p $(obj))
bf4b3de10   Masahiro Yamada   kbuild: Use Kbuil...
20
  include $(srctree)/scripts/Kbuild.include
e02ee2548   Masahiro Yamada   kconfig: switch t...
21
  -include include/config/auto.conf
51148790f   Masahiro Yamada   kconfig: switch t...
22
  -include $(obj)/include/autoconf.mk
e0d5d9f88   Masahiro Yamada   Makefile: move so...
23

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

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

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

bf69d6642   Masahiro Yamada   kbuild: allow nul...
58
  libs-y += $(if $(BOARDDIR),board/$(BOARDDIR)/)
656de6b81   Masahiro Yamada   kbuild: refactor ...
59
60
61
  libs-$(HAVE_VENDOR_COMMON_LIB) += board/$(VENDOR)/common/
  
  libs-$(CONFIG_SPL_FRAMEWORK) += common/spl/
af6bbd4da   Simon Glass   Move board_init_f...
62
  libs-y += common/init/
76f1f3881   Simon Glass   Use separate opti...
63
64
65
  
  # Special handling for a few options which support SPL/TPL
  ifeq ($(CONFIG_TPL_BUILD),y)
0649cd0d4   Simon Glass   Move environment ...
66
  libs-$(CONFIG_TPL_LIBCOMMON_SUPPORT) += common/ cmd/ env/
76f1f3881   Simon Glass   Use separate opti...
67
68
  libs-$(CONFIG_TPL_LIBGENERIC_SUPPORT) += lib/
  else
0649cd0d4   Simon Glass   Move environment ...
69
  libs-$(CONFIG_SPL_LIBCOMMON_SUPPORT) += common/ cmd/ env/
76f1f3881   Simon Glass   Use separate opti...
70
71
  libs-$(CONFIG_SPL_LIBGENERIC_SUPPORT) += lib/
  endif
656de6b81   Masahiro Yamada   kbuild: refactor ...
72
  libs-$(CONFIG_SPL_LIBDISK_SUPPORT) += disk/
d6c2ac5b7   Masahiro Yamada   spl: move SPL dri...
73
  libs-y += drivers/
e94793c84   Stefan Agner   spl: add USB Gadg...
74
  libs-$(CONFIG_SPL_USB_GADGET_SUPPORT) += drivers/usb/dwc3/
18cbba9e3   Ye Li   MLK-20559-2 spl: ...
75
  libs-$(CONFIG_SPL_USB_GADGET_SUPPORT) += drivers/usb/cdns3/
8d7a2b83f   Michal Simek   spl: Add support ...
76
  libs-y += dts/
656de6b81   Masahiro Yamada   kbuild: refactor ...
77
  libs-y += fs/
656de6b81   Masahiro Yamada   kbuild: refactor ...
78
79
  libs-$(CONFIG_SPL_POST_MEM_SUPPORT) += post/drivers/
  libs-$(CONFIG_SPL_NET_SUPPORT) += net/
efcc6096d   Daniel Schwierzeck   spl: Add support ...
80

656de6b81   Masahiro Yamada   kbuild: refactor ...
81
82
83
84
85
  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 ...
86

660e98f2e   Allen Martin   spl: fix SPL buil...
87
  # Add GCC lib
cd2e46cb3   Masahiro Yamada   kbuild: add CONFI...
88
  ifeq ($(CONFIG_USE_PRIVATE_LIBGCC),y)
a86cf89c7   Masahiro Yamada   kbuild: consolida...
89
  PLATFORM_LIBGCC = arch/$(ARCH)/lib/lib.a
6445262ca   Masahiro Yamada   kbuild: fix SPL l...
90
  PLATFORM_LIBS := $(filter-out %/lib.a, $(filter-out -lgcc, $(PLATFORM_LIBS))) $(PLATFORM_LIBGCC)
660e98f2e   Allen Martin   spl: fix SPL buil...
91
  endif
656de6b81   Masahiro Yamada   kbuild: refactor ...
92
93
  u-boot-spl-init := $(head-y)
  u-boot-spl-main := $(libs-y)
f291ce129   Philipp Tomsich   spl: dm: Kconfig:...
94
  ifdef CONFIG_$(SPL_TPL_)OF_PLATDATA
dbbe2e640   Simon Glass   dm: Makefile: Bui...
95
96
  u-boot-spl-platdata := $(obj)/dts/dt-platdata.o
  endif
6a11cf48a   Daniel Schwierzeck   spl: add initial ...
97
98
  
  # Linker Script
dd6fbcb93   Philipp Tomsich   spl: Kconfig: mig...
99
100
  # First test whether there's a linker-script for the specific stage defined...
  ifneq ($(CONFIG_$(SPL_TPL_)LDSCRIPT),)
6a11cf48a   Daniel Schwierzeck   spl: add initial ...
101
  # need to strip off double quotes
1749858a6   Philipp Tomsich   spl: allow a sepa...
102
  LDSCRIPT := $(addprefix $(srctree)/,$(CONFIG_$(SPL_TPL_)LDSCRIPT:"%"=%))
dd6fbcb93   Philipp Tomsich   spl: Kconfig: mig...
103
104
105
106
107
108
  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 ...
109
110
111
  endif
  
  ifeq ($(wildcard $(LDSCRIPT)),)
4379ac614   Masahiro Yamada   kbuild: rename TO...
112
  	LDSCRIPT := $(srctree)/board/$(BOARDDIR)/u-boot-spl.lds
6a11cf48a   Daniel Schwierzeck   spl: add initial ...
113
114
  endif
  ifeq ($(wildcard $(LDSCRIPT)),)
4379ac614   Masahiro Yamada   kbuild: rename TO...
115
  	LDSCRIPT := $(srctree)/$(CPUDIR)/u-boot-spl.lds
6a11cf48a   Daniel Schwierzeck   spl: add initial ...
116
117
  endif
  ifeq ($(wildcard $(LDSCRIPT)),)
4379ac614   Masahiro Yamada   kbuild: rename TO...
118
  	LDSCRIPT := $(srctree)/arch/$(ARCH)/cpu/u-boot-spl.lds
ee60197e6   Simon Glass   Allow arch direct...
119
120
  endif
  ifeq ($(wildcard $(LDSCRIPT)),)
6a11cf48a   Daniel Schwierzeck   spl: add initial ...
121
122
123
124
125
126
127
  $(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...
128
  	-include $(srctree)/include/u-boot/u-boot.lds.h \
5ee828ca9   Masahiro Yamada   kbuild: rename OB...
129
  	-include $(objtree)/include/config.h \
7e6403a66   Simon Glass   Define CPUDIR for...
130
  	-DCPUDIR=$(CPUDIR) \
6a11cf48a   Daniel Schwierzeck   spl: add initial ...
131
132
  	$(shell $(LD) --version | \
  	  sed -ne 's/GNU ld version \([0-9][0-9]*\)\.\([0-9][0-9]*\).*/-DLD_MAJOR=\1 -DLD_MINOR=\2/p')
1f6a66480   Sven Ebenfeld   Makefile: preserv...
133
  MKIMAGEOUTPUT ?= /dev/null
b97241b31   Marek Vasut   kbuild: Rename UI...
134
  quiet_cmd_mkimage = MKIMAGE $@
9bf215b03   Masahiro Yamada   kbuild: use short...
135
  cmd_mkimage = $(objtree)/tools/mkimage $(MKIMAGEFLAGS_$(@F)) -d $< $@ \
1f6a66480   Sven Ebenfeld   Makefile: preserv...
136
  	$(if $(KBUILD_VERBOSE:1=), >$(MKIMAGEOUTPUT))
79b9ebb70   Tom Rini   omapimage: Add su...
137

9bf215b03   Masahiro Yamada   kbuild: use short...
138
139
140
  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...
141
  MLO MLO.byteswap: $(obj)/u-boot-spl.bin FORCE
9bf215b03   Masahiro Yamada   kbuild: use short...
142
  	$(call if_changed,mkimage)
3decb14ab   John Rigby   mkimage: Add OMAP...
143

08598d6ee   Nathan Rossi   ARM: zynq: Add ta...
144
  ifeq ($(CONFIG_SYS_SOC),"at91")
5c390a5b2   Andreas Bießmann   arm:at91: enable ...
145
146
147
148
149
150
151
  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...
152
  boot.bin: $(obj)/u-boot-spl.bin FORCE
5c390a5b2   Andreas Bießmann   arm:at91: enable ...
153
  	$(call if_changed,mkimage)
08598d6ee   Nathan Rossi   ARM: zynq: Add ta...
154
  else
d9b58b303   Michal Simek   tools: zynqmpimag...
155
  ifdef CONFIG_ARCH_ZYNQ
3b6460809   Mike Looijmans   tools: mkimage: A...
156
  MKIMAGEFLAGS_boot.bin = -T zynqimage -R $(srctree)/$(CONFIG_BOOT_INIT_FILE)
d9b58b303   Michal Simek   tools: zynqmpimag...
157
158
  endif
  ifdef CONFIG_ARCH_ZYNQMP
c85a6b79d   Michal Simek   tools: mkimage: E...
159
160
  MKIMAGEFLAGS_boot.bin = -T zynqmpimage -R $(srctree)/$(CONFIG_BOOT_INIT_FILE) \
  	-n $(srctree)/$(CONFIG_PMUFW_INIT_FILE)
d9b58b303   Michal Simek   tools: zynqmpimag...
161
  endif
08598d6ee   Nathan Rossi   ARM: zynq: Add ta...
162

514ec4389   Masahiro Yamada   kbuild: add missi...
163
  spl/boot.bin: $(obj)/u-boot-spl.bin FORCE
08598d6ee   Nathan Rossi   ARM: zynq: Add ta...
164
165
  	$(call if_changed,mkimage)
  endif
5c390a5b2   Andreas Bießmann   arm:at91: enable ...
166

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

98a48c5de   Chander Kashyap   ORIGEN: Add MMC S...
169
  ifdef CONFIG_SAMSUNG
9e4140329   Masahiro Yamada   kbuild: change ou...
170
  ALL-y	+= $(obj)/$(BOARD)-spl.bin
98a48c5de   Chander Kashyap   ORIGEN: Add MMC S...
171
  endif
333b7209e   Marek Vasut   Makefile: Add tar...
172
  ifdef CONFIG_ARCH_SOCFPGA
bd7dc3883   Simon Glass   socfpga: Simplify...
173
  ALL-y	+= $(obj)/$(SPL_BIN).sfp
333b7209e   Marek Vasut   Makefile: Add tar...
174
  endif
aec9a0f19   Jagan Teki   sunxi: Rename CON...
175
  ifdef CONFIG_ARCH_SUNXI
50827a599   Ian Campbell   sunxi: non-FEL SP...
176
  ALL-y	+= $(obj)/sunxi-spl.bin
d2fdcc76e   Maxime Ripard   scripts: sunxi: B...
177
178
179
180
  
  ifdef CONFIG_NAND_SUNXI
  ALL-y	+= $(obj)/sunxi-spl-with-ecc.bin
  endif
50827a599   Ian Campbell   sunxi: non-FEL SP...
181
  endif
50827a599   Ian Campbell   sunxi: non-FEL SP...
182

c001486d9   Heiko Schocher   arm, at91: genera...
183
184
185
  ifeq ($(CONFIG_SYS_SOC),"at91")
  ALL-y	+= boot.bin
  endif
84547b4e6   Simon Glass   x86: Add SPL buil...
186
  ALL-$(CONFIG_SPL_X86_16BIT_INIT) += $(obj)/u-boot-x86-16bit-spl.bin
1a6a6e9a1   Michal Simek   ARM64: zynq: Fix ...
187
188
  ALL-$(CONFIG_ARCH_ZYNQ)		+= $(obj)/boot.bin
  ALL-$(CONFIG_ARCH_ZYNQMP)	+= $(obj)/boot.bin
d9b58b303   Michal Simek   tools: zynqmpimag...
189

6a11cf48a   Daniel Schwierzeck   spl: add initial ...
190
  all:	$(ALL-y)
fa78e0a37   Simon Glass   dm: Reduce SPL de...
191
192
  quiet_cmd_cat = CAT     $@
  cmd_cat = cat $(filter-out $(PHONY), $^) > $@
03c25bcd2   Simon Glass   fdt: Build an SPL...
193
194
  quiet_cmd_copy = COPY    $@
        cmd_copy = cp $< $@
2f57c9510   Jean-Jacques Hiblot   spl: dm: Make it ...
195
196
197
198
199
200
201
202
203
  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:...
204
  ifeq ($(CONFIG_$(SPL_TPL_)OF_CONTROL)$(CONFIG_OF_SEPARATE)$(CONFIG_$(SPL_TPL_)OF_PLATDATA),yy)
0ec28e026   Simon Glass   spl: Don't create...
205
206
  $(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 ...
207
  		$(FINAL_DTB_CONTAINER)  FORCE
fa78e0a37   Simon Glass   dm: Reduce SPL de...
208
  	$(call if_changed,cat)
03c25bcd2   Simon Glass   fdt: Build an SPL...
209
210
211
212
213
214
215
216
  $(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...
217
218
219
  $(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_...
220
221
  $(obj)/$(SPL_BIN).dtb: dts/dt-spl.dtb FORCE
  	$(call if_changed,copy)
fa78e0a37   Simon Glass   dm: Reduce SPL de...
222

15b97f5c5   Masahiro Yamada   pylibfdt: move py...
223
  pythonpath = PYTHONPATH=scripts/dtc/pylibfdt
dbbe2e640   Simon Glass   dm: Makefile: Bui...
224
225
226
227
228
229
230
231
232
  
  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 ...
233
234
  $(obj)/dts/dt-platdata.o: $(obj)/dts/dt-platdata.c \
  		include/generated/dt-structs-gen.h
dbbe2e640   Simon Glass   dm: Makefile: Bui...
235
236
237
238
239
  	$(call if_changed,plat)
  
  PHONY += dts_dir
  dts_dir:
  	$(shell [ -d $(obj)/dts ] || mkdir -p $(obj)/dts)
d6a0c78a4   Masahiro Yamada   pylibfdt: compile...
240
  include/generated/dt-structs-gen.h: $(obj)/$(SPL_BIN).dtb dts_dir FORCE
dbbe2e640   Simon Glass   dm: Makefile: Bui...
241
  	$(call if_changed,dtoch)
d6a0c78a4   Masahiro Yamada   pylibfdt: compile...
242
  $(obj)/dts/dt-platdata.c: $(obj)/$(SPL_BIN).dtb dts_dir FORCE
dbbe2e640   Simon Glass   dm: Makefile: Bui...
243
  	$(call if_changed,dtocc)
98a48c5de   Chander Kashyap   ORIGEN: Add MMC S...
244
  ifdef CONFIG_SAMSUNG
0fcac1abd   Rajeshwari Birje   SPL: EXYNOS: Prep...
245
246
247
248
249
  ifdef CONFIG_VAR_SIZE_SPL
  VAR_SIZE_PARAM = --vs
  else
  VAR_SIZE_PARAM =
  endif
9e4140329   Masahiro Yamada   kbuild: change ou...
250
  $(obj)/$(BOARD)-spl.bin: $(obj)/u-boot-spl.bin
5ee828ca9   Masahiro Yamada   kbuild: rename OB...
251
252
253
  	$(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...
254
  endif
f9c235fd9   Masahiro Yamada   kbuild: use short...
255
256
  quiet_cmd_objcopy = OBJCOPY $@
  cmd_objcopy = $(OBJCOPY) $(OBJCOPYFLAGS) $(OBJCOPYFLAGS_$(@F)) $< $@
84547b4e6   Simon Glass   x86: Add SPL buil...
257
258
  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...
259

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

84547b4e6   Simon Glass   x86: Add SPL buil...
263
264
265
  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...
266
  LDFLAGS_$(SPL_BIN) += -T u-boot-spl.lds $(LDFLAGS_FINAL)
e391b1e64   Joel Stanley   Makefile: Fix lin...
267
268
269
  
  # Avoid 'Not enough room for program headers' error on binutils 2.28 onwards.
  LDFLAGS_$(SPL_BIN) += $(call ld-option, --no-dynamic-linker)
1749858a6   Philipp Tomsich   spl: allow a sepa...
270
271
272
273
274
  # First try the best-match (i.e. SPL_TEXT_BASE for SPL, TPL_TEXT_BASE for TPL)
  ifneq ($(CONFIG_$(SPL_TPL_)TEXT_BASE),)
  LDFLAGS_$(SPL_BIN) += -Ttext $(CONFIG_$(SPL_TPL_)TEXT_BASE)
  else
  # And then fall back to just testing for SPL_TEXT_BASE, even if in TPL mode
e0d5d9f88   Masahiro Yamada   Makefile: move so...
275
276
277
  ifneq ($(CONFIG_SPL_TEXT_BASE),)
  LDFLAGS_$(SPL_BIN) += -Ttext $(CONFIG_SPL_TEXT_BASE)
  endif
1749858a6   Philipp Tomsich   spl: allow a sepa...
278
  endif
e0d5d9f88   Masahiro Yamada   Makefile: move so...
279

bd7dc3883   Simon Glass   socfpga: Simplify...
280
281
  MKIMAGEFLAGS_$(SPL_BIN).sfp = -T socfpgaimage
  $(obj)/$(SPL_BIN).sfp: $(obj)/$(SPL_BIN).bin FORCE
333b7209e   Marek Vasut   Makefile: Add tar...
282
  	$(call if_changed,mkimage)
333b7209e   Marek Vasut   Makefile: Add tar...
283

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

d2fdcc76e   Maxime Ripard   scripts: sunxi: B...
290
291
292
293
294
295
296
297
298
299
  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)
72a7e0760   Simon Glass   Makefile: Allow t...
300
301
302
303
  # 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 ...
304
  		       $(patsubst $(obj)/%,%,$(u-boot-spl-init)) --start-group \
dbbe2e640   Simon Glass   dm: Makefile: Bui...
305
306
307
  		       $(patsubst $(obj)/%,%,$(u-boot-spl-main))  \
  		       $(patsubst $(obj)/%,%,$(u-boot-spl-platdata)) \
  		       --end-group \
9adb6d240   Masahiro Yamada   kbuild: fix a bug...
308
  		       $(PLATFORM_LIBS) -Map $(SPL_BIN).map -o $(SPL_BIN))
6a11cf48a   Daniel Schwierzeck   spl: add initial ...
309

dbbe2e640   Simon Glass   dm: Makefile: Bui...
310
311
  $(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...
312
  	$(call if_changed,u-boot-spl)
6a11cf48a   Daniel Schwierzeck   spl: add initial ...
313

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

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

04a34c96b   Masahiro Yamada   kbuild: use short...
320
  quiet_cmd_cpp_lds = LDS     $@
395e60cdc   Masahiro Yamada   kbuild: fix a bug...
321
322
  cmd_cpp_lds = $(CPP) -Wp,-MD,$(depfile) $(cpp_flags) $(LDPPFLAGS) -ansi \
  		-D__ASSEMBLY__ -x assembler-with-cpp -P -o $@ $<
04a34c96b   Masahiro Yamada   kbuild: use short...
323

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

f9c235fd9   Masahiro Yamada   kbuild: use short...
327
328
329
330
331
332
333
334
335
  # 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...
336
337
  PHONY += FORCE
  FORCE:
2f57c9510   Jean-Jacques Hiblot   spl: dm: Make it ...
338
339
340
  PHONY += dtbs
  dtbs:
  	$(Q)$(MAKE) $(build)=dts dtbs
6825a95b0   Masahiro Yamada   kbuild: use Linux...
341
342
343
  # 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 ...
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
  
  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)
  
  $(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 $< > $@