1 da58dec8STom Rini# SPDX-License-Identifier: GPL-2.0+ 2 da58dec8STom Rini 3 d452f27bSTom RiniVERSION = 2019 4 97276a91STom RiniPATCHLEVEL = 04 5 211e4754SWolfgang DenkSUBLEVEL = 6 *3c991664STom RiniEXTRAVERSION = 7 5f30f3beSMasahiro YamadaNAME = 8 ae6d1056SWolfgang Denk 9 6825a95bSMasahiro Yamada# *DOCUMENTATION* 10 6825a95bSMasahiro Yamada# To see a list of typical targets execute "make help" 11 6825a95bSMasahiro Yamada# More info can be located in ./README 12 6825a95bSMasahiro Yamada# Comments in this file are targeted only to the developer, do not 13 6825a95bSMasahiro Yamada# expect to learn how to build the kernel reading this file. 14 6825a95bSMasahiro Yamada 15 4d713be1SMasahiro Yamada# o Do not use make's built-in rules and variables 16 6825a95bSMasahiro Yamada# (this increases performance and avoids hard-to-debug behaviour); 17 4d713be1SMasahiro Yamada# o Look for make include files relative to root of kernel src 18 4d713be1SMasahiro YamadaMAKEFLAGS += -rR --include-dir=$(CURDIR) 19 6825a95bSMasahiro Yamada 20 6825a95bSMasahiro Yamada# Avoid funny character set dependencies 21 6825a95bSMasahiro Yamadaunexport LC_ALL 22 6825a95bSMasahiro YamadaLC_COLLATE=C 23 6825a95bSMasahiro YamadaLC_NUMERIC=C 24 6825a95bSMasahiro Yamadaexport LC_COLLATE LC_NUMERIC 25 6825a95bSMasahiro Yamada 26 ffe29ebcSMasahiro Yamada# Avoid interference with shell env settings 27 ffe29ebcSMasahiro Yamadaunexport GREP_OPTIONS 28 ffe29ebcSMasahiro Yamada 29 6825a95bSMasahiro Yamada# We are using a recursive build, so we need to do a little thinking 30 6825a95bSMasahiro Yamada# to get the ordering right. 31 6825a95bSMasahiro Yamada# 32 6825a95bSMasahiro Yamada# Most importantly: sub-Makefiles should only ever modify files in 33 6825a95bSMasahiro Yamada# their own directory. If in some directory we have a dependency on 34 6825a95bSMasahiro Yamada# a file in another dir (which doesn't happen often, but it's often 35 6825a95bSMasahiro Yamada# unavoidable when linking the built-in.o targets which finally 36 6825a95bSMasahiro Yamada# turn into vmlinux), we will call a sub make in that other dir, and 37 6825a95bSMasahiro Yamada# after that we are sure that everything which is in that other dir 38 6825a95bSMasahiro Yamada# is now up to date. 39 6825a95bSMasahiro Yamada# 40 6825a95bSMasahiro Yamada# The only cases where we need to modify files which have global 41 6825a95bSMasahiro Yamada# effects are thus separated out and done before the recursive 42 6825a95bSMasahiro Yamada# descending is started. They are now explicitly listed as the 43 6825a95bSMasahiro Yamada# prepare rule. 44 6825a95bSMasahiro Yamada 45 ffe29ebcSMasahiro Yamada# Beautify output 46 ffe29ebcSMasahiro Yamada# --------------------------------------------------------------------------- 47 ffe29ebcSMasahiro Yamada# 48 ffe29ebcSMasahiro Yamada# Normally, we echo the whole command before executing it. By making 49 ffe29ebcSMasahiro Yamada# that echo $($(quiet)$(cmd)), we now have the possibility to set 50 ffe29ebcSMasahiro Yamada# $(quiet) to choose other forms of output instead, e.g. 51 ffe29ebcSMasahiro Yamada# 52 ffe29ebcSMasahiro Yamada# quiet_cmd_cc_o_c = Compiling $(RELDIR)/$@ 53 ffe29ebcSMasahiro Yamada# cmd_cc_o_c = $(CC) $(c_flags) -c -o $@ $< 54 ffe29ebcSMasahiro Yamada# 55 ffe29ebcSMasahiro Yamada# If $(quiet) is empty, the whole command will be printed. 56 ffe29ebcSMasahiro Yamada# If it is set to "quiet_", only the short version will be printed. 57 ffe29ebcSMasahiro Yamada# If it is set to "silent_", nothing will be printed at all, since 58 ffe29ebcSMasahiro Yamada# the variable $(silent_cmd_cc_o_c) doesn't exist. 59 ffe29ebcSMasahiro Yamada# 60 ffe29ebcSMasahiro Yamada# A simple variant is to prefix commands with $(Q) - that's useful 61 ffe29ebcSMasahiro Yamada# for commands that shall be hidden in non-verbose mode. 62 ffe29ebcSMasahiro Yamada# 63 ffe29ebcSMasahiro Yamada# $(Q)ln $@ :< 64 ffe29ebcSMasahiro Yamada# 65 ffe29ebcSMasahiro Yamada# If KBUILD_VERBOSE equals 0 then the above command will be hidden. 66 ffe29ebcSMasahiro Yamada# If KBUILD_VERBOSE equals 1 then the above command is displayed. 67 ffe29ebcSMasahiro Yamada# 68 6825a95bSMasahiro Yamada# To put more focus on warnings, be less verbose as default 69 6825a95bSMasahiro Yamada# Use 'make V=1' to see the full commands 70 6825a95bSMasahiro Yamada 71 6825a95bSMasahiro Yamadaifeq ("$(origin V)", "command line") 72 6825a95bSMasahiro Yamada KBUILD_VERBOSE = $(V) 73 7ebf7443Swdenkendif 74 6825a95bSMasahiro Yamadaifndef KBUILD_VERBOSE 75 6825a95bSMasahiro Yamada KBUILD_VERBOSE = 0 76 6825a95bSMasahiro Yamadaendif 77 6825a95bSMasahiro Yamada 78 ffe29ebcSMasahiro Yamadaifeq ($(KBUILD_VERBOSE),1) 79 ffe29ebcSMasahiro Yamada quiet = 80 ffe29ebcSMasahiro Yamada Q = 81 ffe29ebcSMasahiro Yamadaelse 82 ffe29ebcSMasahiro Yamada quiet=quiet_ 83 ffe29ebcSMasahiro Yamada Q = @ 84 6825a95bSMasahiro Yamadaendif 85 6825a95bSMasahiro Yamada 86 ffe29ebcSMasahiro Yamada# If the user is running make -s (silent mode), suppress echoing of 87 ffe29ebcSMasahiro Yamada# commands 88 ffe29ebcSMasahiro Yamada 89 ffe29ebcSMasahiro Yamadaifneq ($(filter 4.%,$(MAKE_VERSION)),) # make-4 90 ffe29ebcSMasahiro Yamadaifneq ($(filter %s ,$(firstword x$(MAKEFLAGS))),) 91 ffe29ebcSMasahiro Yamada quiet=silent_ 92 ffe29ebcSMasahiro Yamadaendif 93 ffe29ebcSMasahiro Yamadaelse # make-3.8x 94 ffe29ebcSMasahiro Yamadaifneq ($(filter s% -s%,$(MAKEFLAGS)),) 95 ffe29ebcSMasahiro Yamada quiet=silent_ 96 ffe29ebcSMasahiro Yamadaendif 97 6825a95bSMasahiro Yamadaendif 98 6825a95bSMasahiro Yamada 99 ffe29ebcSMasahiro Yamadaexport quiet Q KBUILD_VERBOSE 100 6825a95bSMasahiro Yamada 101 9e414032SMasahiro Yamada# kbuild supports saving output files in a separate directory. 102 9e414032SMasahiro Yamada# To locate output files in a separate directory two syntaxes are supported. 103 9e414032SMasahiro Yamada# In both cases the working directory must be the root of the kernel src. 104 9e414032SMasahiro Yamada# 1) O= 105 9e414032SMasahiro Yamada# Use "make O=dir/to/store/output/files/" 106 f9328639SMarian Balakowicz# 107 9e414032SMasahiro Yamada# 2) Set KBUILD_OUTPUT 108 9e414032SMasahiro Yamada# Set the environment variable KBUILD_OUTPUT to point to the directory 109 9e414032SMasahiro Yamada# where the output files shall be placed. 110 9e414032SMasahiro Yamada# export KBUILD_OUTPUT=dir/to/store/output/files/ 111 9e414032SMasahiro Yamada# make 112 f9328639SMarian Balakowicz# 113 9e414032SMasahiro Yamada# The O= assignment takes precedence over the KBUILD_OUTPUT environment 114 9e414032SMasahiro Yamada# variable. 115 7ebf7443Swdenk 116 9e414032SMasahiro Yamada# KBUILD_SRC is set on invocation of make in OBJ directory 117 9e414032SMasahiro Yamada# KBUILD_SRC is not intended to be used by the regular user (for now) 118 9e414032SMasahiro Yamadaifeq ($(KBUILD_SRC),) 119 9e414032SMasahiro Yamada 120 9e414032SMasahiro Yamada# OK, Make called in directory where kernel src resides 121 9e414032SMasahiro Yamada# Do we want to locate output files in a separate directory? 122 f9328639SMarian Balakowiczifeq ("$(origin O)", "command line") 123 9e414032SMasahiro Yamada KBUILD_OUTPUT := $(O) 124 f9328639SMarian Balakowiczendif 125 7ebf7443Swdenk 126 9e414032SMasahiro Yamada# That's our default target when none is given on the command line 127 9e414032SMasahiro YamadaPHONY := _all 128 9e414032SMasahiro Yamada_all: 129 9e414032SMasahiro Yamada 130 9e414032SMasahiro Yamada# Cancel implicit rules on top Makefile 131 9e414032SMasahiro Yamada$(CURDIR)/Makefile Makefile: ; 132 9e414032SMasahiro Yamada 133 9e414032SMasahiro Yamadaifneq ($(KBUILD_OUTPUT),) 134 9e414032SMasahiro Yamada# Invoke a second make in the output directory, passing relevant variables 135 9e414032SMasahiro Yamada# check that the output directory actually exists 136 9e414032SMasahiro Yamadasaved-output := $(KBUILD_OUTPUT) 137 5a449d75SMasahiro YamadaKBUILD_OUTPUT := $(shell mkdir -p $(KBUILD_OUTPUT) && cd $(KBUILD_OUTPUT) \ 138 5a449d75SMasahiro Yamada && /bin/pwd) 139 9e414032SMasahiro Yamada$(if $(KBUILD_OUTPUT),, \ 140 598e2d33SMasahiro Yamada $(error failed to create output directory "$(saved-output)")) 141 9e414032SMasahiro Yamada 142 9e414032SMasahiro YamadaPHONY += $(MAKECMDGOALS) sub-make 143 9e414032SMasahiro Yamada 144 9e414032SMasahiro Yamada$(filter-out _all sub-make $(CURDIR)/Makefile, $(MAKECMDGOALS)) _all: sub-make 145 9e414032SMasahiro Yamada @: 146 9e414032SMasahiro Yamada 147 9e414032SMasahiro Yamadasub-make: FORCE 148 ffe29ebcSMasahiro Yamada $(Q)$(MAKE) -C $(KBUILD_OUTPUT) KBUILD_SRC=$(CURDIR) \ 149 ffe29ebcSMasahiro Yamada -f $(CURDIR)/Makefile $(filter-out _all sub-make,$(MAKECMDGOALS)) 150 9e414032SMasahiro Yamada 151 9e414032SMasahiro Yamada# Leave processing to above invocation of make 152 9e414032SMasahiro Yamadaskip-makefile := 1 153 9e414032SMasahiro Yamadaendif # ifneq ($(KBUILD_OUTPUT),) 154 9e414032SMasahiro Yamadaendif # ifeq ($(KBUILD_SRC),) 155 9e414032SMasahiro Yamada 156 9e414032SMasahiro Yamada# We process the rest of the Makefile if this is the final invocation of make 157 9e414032SMasahiro Yamadaifeq ($(skip-makefile),) 158 9e414032SMasahiro Yamada 159 ffe29ebcSMasahiro Yamada# Do not print "Entering directory ...", 160 ffe29ebcSMasahiro Yamada# but we want to display it when entering to the output directory 161 ffe29ebcSMasahiro Yamada# so that IDEs/editors are able to understand relative filenames. 162 ffe29ebcSMasahiro YamadaMAKEFLAGS += --no-print-directory 163 ffe29ebcSMasahiro Yamada 164 ffe29ebcSMasahiro Yamada# Call a source code checker (by default, "sparse") as part of the 165 ffe29ebcSMasahiro Yamada# C compilation. 166 ffe29ebcSMasahiro Yamada# 167 ffe29ebcSMasahiro Yamada# Use 'make C=1' to enable checking of only re-compiled files. 168 ffe29ebcSMasahiro Yamada# Use 'make C=2' to enable checking of *all* source files, regardless 169 ffe29ebcSMasahiro Yamada# of whether they are re-compiled or not. 170 ffe29ebcSMasahiro Yamada# 171 ffe29ebcSMasahiro Yamada# See the file "Documentation/sparse.txt" for more details, including 172 ffe29ebcSMasahiro Yamada# where to get the "sparse" utility. 173 ffe29ebcSMasahiro Yamada 174 ffe29ebcSMasahiro Yamadaifeq ("$(origin C)", "command line") 175 ffe29ebcSMasahiro Yamada KBUILD_CHECKSRC = $(C) 176 ffe29ebcSMasahiro Yamadaendif 177 ffe29ebcSMasahiro Yamadaifndef KBUILD_CHECKSRC 178 ffe29ebcSMasahiro Yamada KBUILD_CHECKSRC = 0 179 ffe29ebcSMasahiro Yamadaendif 180 ffe29ebcSMasahiro Yamada 181 ffe29ebcSMasahiro Yamada# Use make M=dir to specify directory of external module to build 182 ffe29ebcSMasahiro Yamada# Old syntax make ... SUBDIRS=$PWD is still supported 183 ffe29ebcSMasahiro Yamada# Setting the environment variable KBUILD_EXTMOD take precedence 184 ffe29ebcSMasahiro Yamadaifdef SUBDIRS 185 ffe29ebcSMasahiro Yamada KBUILD_EXTMOD ?= $(SUBDIRS) 186 ffe29ebcSMasahiro Yamadaendif 187 ffe29ebcSMasahiro Yamada 188 ffe29ebcSMasahiro Yamadaifeq ("$(origin M)", "command line") 189 ffe29ebcSMasahiro Yamada KBUILD_EXTMOD := $(M) 190 ffe29ebcSMasahiro Yamadaendif 191 ffe29ebcSMasahiro Yamada 192 6825a95bSMasahiro Yamada# If building an external module we do not care about the all: rule 193 6825a95bSMasahiro Yamada# but instead _all depend on modules 194 9e414032SMasahiro YamadaPHONY += all 195 6825a95bSMasahiro Yamadaifeq ($(KBUILD_EXTMOD),) 196 9e414032SMasahiro Yamada_all: all 197 6825a95bSMasahiro Yamadaelse 198 6825a95bSMasahiro Yamada_all: modules 199 6825a95bSMasahiro Yamadaendif 200 9e414032SMasahiro Yamada 201 ffe29ebcSMasahiro Yamadaifeq ($(KBUILD_SRC),) 202 ffe29ebcSMasahiro Yamada # building in the source tree 203 ffe29ebcSMasahiro Yamada srctree := . 204 ffe29ebcSMasahiro Yamadaelse 205 ffe29ebcSMasahiro Yamada ifeq ($(KBUILD_SRC)/,$(dir $(CURDIR))) 206 ffe29ebcSMasahiro Yamada # building in a subdirectory of the source tree 207 ffe29ebcSMasahiro Yamada srctree := .. 208 ffe29ebcSMasahiro Yamada else 209 ffe29ebcSMasahiro Yamada srctree := $(KBUILD_SRC) 210 ffe29ebcSMasahiro Yamada endif 211 ffe29ebcSMasahiro Yamadaendif 212 ffe29ebcSMasahiro Yamadaobjtree := . 213 9e414032SMasahiro Yamadasrc := $(srctree) 214 9e414032SMasahiro Yamadaobj := $(objtree) 215 9e414032SMasahiro Yamada 216 9e414032SMasahiro YamadaVPATH := $(srctree)$(if $(KBUILD_EXTMOD),:$(KBUILD_EXTMOD)) 217 9e414032SMasahiro Yamada 218 9e414032SMasahiro Yamadaexport srctree objtree VPATH 219 9e414032SMasahiro Yamada 220 5013c09fSWolfgang Denk# Make sure CDPATH settings don't interfere 221 5013c09fSWolfgang Denkunexport CDPATH 222 5013c09fSWolfgang Denk 223 f9328639SMarian Balakowicz######################################################################### 224 f9328639SMarian Balakowicz 225 7ebf7443SwdenkHOSTARCH := $(shell uname -m | \ 226 7ebf7443Swdenk sed -e s/i.86/x86/ \ 227 7ebf7443Swdenk -e s/sun4u/sparc64/ \ 228 7ebf7443Swdenk -e s/arm.*/arm/ \ 229 7ebf7443Swdenk -e s/sa110/arm/ \ 230 7ebf7443Swdenk -e s/ppc64/powerpc/ \ 231 7ebf7443Swdenk -e s/ppc/powerpc/ \ 232 7ebf7443Swdenk -e s/macppc/powerpc/\ 233 7ebf7443Swdenk -e s/sh.*/sh/) 234 7ebf7443Swdenk 235 7ebf7443SwdenkHOSTOS := $(shell uname -s | tr '[:upper:]' '[:lower:]' | \ 236 7ebf7443Swdenk sed -e 's/\(cygwin\).*/cygwin/') 237 7ebf7443Swdenk 238 7ebf7443Swdenkexport HOSTARCH HOSTOS 239 7ebf7443Swdenk 240 7ebf7443Swdenk######################################################################### 241 f9328639SMarian Balakowicz 242 1ea6bcd8SMike Frysinger# set default to nothing for native builds 243 a5284efdSWolfgang Denkifeq ($(HOSTARCH),$(ARCH)) 244 1ea6bcd8SMike FrysingerCROSS_COMPILE ?= 245 7ebf7443Swdenkendif 246 7ebf7443Swdenk 247 51148790SMasahiro YamadaKCONFIG_CONFIG ?= .config 248 51148790SMasahiro Yamadaexport KCONFIG_CONFIG 249 51148790SMasahiro Yamada 250 f6322eb7SMasahiro Yamada# SHELL used by kbuild 251 f6322eb7SMasahiro YamadaCONFIG_SHELL := $(shell if [ -x "$$BASH" ]; then echo $$BASH; \ 252 f6322eb7SMasahiro Yamada else if [ -x /bin/bash ]; then echo /bin/bash; \ 253 f6322eb7SMasahiro Yamada else echo sh; fi ; fi) 254 f6322eb7SMasahiro Yamada 255 b477fe44SJeroen HofsteeHOSTCC = cc 256 b477fe44SJeroen HofsteeHOSTCXX = c++ 257 022885cbSSimon GlassHOSTCFLAGS = -Wall -Wstrict-prototypes -O2 -fomit-frame-pointer \ 258 022885cbSSimon Glass $(if $(CONFIG_TOOLS_DEBUG),-g) 259 598e2d33SMasahiro YamadaHOSTCXXFLAGS = -O2 260 598e2d33SMasahiro Yamada 261 9de4f959SPhilipp Tomsich# With the move to GCC 6, we have implicitly upgraded our language 262 9de4f959SPhilipp Tomsich# standard to GNU11 (see https://gcc.gnu.org/gcc-5/porting_to.html). 263 9de4f959SPhilipp Tomsich# Some Linux distributions (including RHEL7, SLES13, Debian 8) still 264 9de4f959SPhilipp Tomsich# have older compilers as their default, so we make it explicit for 265 9de4f959SPhilipp Tomsich# these that our host tools are GNU11 (i.e. C11 w/ GNU extensions). 266 fa893990STom RiniCSTD_FLAG := -std=gnu11 267 9de4f959SPhilipp Tomsichifeq ($(HOSTOS),linux) 268 fa893990STom RiniHOSTCFLAGS += $(CSTD_FLAG) 269 9de4f959SPhilipp Tomsichendif 270 9de4f959SPhilipp Tomsich 271 f6322eb7SMasahiro Yamadaifeq ($(HOSTOS),cygwin) 272 f6322eb7SMasahiro YamadaHOSTCFLAGS += -ansi 273 f6322eb7SMasahiro Yamadaendif 274 f6322eb7SMasahiro Yamada 275 f6322eb7SMasahiro Yamada# Mac OS X / Darwin's C preprocessor is Apple specific. It 276 f6322eb7SMasahiro Yamada# generates numerous errors and warnings. We want to bypass it 277 f6322eb7SMasahiro Yamada# and use GNU C's cpp. To do this we pass the -traditional-cpp 278 f6322eb7SMasahiro Yamada# option to the compiler. Note that the -traditional-cpp flag 279 f6322eb7SMasahiro Yamada# DOES NOT have the same semantics as GNU C's flag, all it does 280 f6322eb7SMasahiro Yamada# is invoke the GNU preprocessor in stock ANSI/ISO C fashion. 281 f6322eb7SMasahiro Yamada# 282 f6322eb7SMasahiro Yamada# Apple's linker is similar, thanks to the new 2 stage linking 283 f6322eb7SMasahiro Yamada# multiple symbol definitions are treated as errors, hence the 284 f6322eb7SMasahiro Yamada# -multiply_defined suppress option to turn off this error. 285 f6322eb7SMasahiro Yamada# 286 f6322eb7SMasahiro Yamadaifeq ($(HOSTOS),darwin) 287 f6322eb7SMasahiro Yamada# get major and minor product version (e.g. '10' and '6' for Snow Leopard) 288 f6322eb7SMasahiro YamadaDARWIN_MAJOR_VERSION = $(shell sw_vers -productVersion | cut -f 1 -d '.') 289 f6322eb7SMasahiro YamadaDARWIN_MINOR_VERSION = $(shell sw_vers -productVersion | cut -f 2 -d '.') 290 f6322eb7SMasahiro Yamada 291 f6322eb7SMasahiro Yamadaos_x_before = $(shell if [ $(DARWIN_MAJOR_VERSION) -le $(1) -a \ 292 f6322eb7SMasahiro Yamada $(DARWIN_MINOR_VERSION) -le $(2) ] ; then echo "$(3)"; else echo "$(4)"; fi ;) 293 f6322eb7SMasahiro Yamada 294 ab8fc413S默默os_x_after = $(shell if [ $(DARWIN_MAJOR_VERSION) -ge $(1) -a \ 295 ab8fc413S默默 $(DARWIN_MINOR_VERSION) -ge $(2) ] ; then echo "$(3)"; else echo "$(4)"; fi ;) 296 ab8fc413S默默 297 f6322eb7SMasahiro Yamada# Snow Leopards build environment has no longer restrictions as described above 298 f6322eb7SMasahiro YamadaHOSTCC = $(call os_x_before, 10, 5, "cc", "gcc") 299 f6322eb7SMasahiro YamadaHOSTCFLAGS += $(call os_x_before, 10, 4, "-traditional-cpp") 300 f6322eb7SMasahiro YamadaHOSTLDFLAGS += $(call os_x_before, 10, 5, "-multiply_defined suppress") 301 1fddd7b6SAndreas Bießmann 302 1fddd7b6SAndreas Bießmann# since Lion (10.7) ASLR is on by default, but we use linker generated lists 303 1fddd7b6SAndreas Bießmann# in some host tools which is a problem then ... so disable ASLR for these 304 1fddd7b6SAndreas Bießmann# tools 305 1fddd7b6SAndreas BießmannHOSTLDFLAGS += $(call os_x_before, 10, 7, "", "-Xlinker -no_pie") 306 ab8fc413S默默 307 ab8fc413S默默# macOS Mojave (10.14.X) 308 ab8fc413S默默# Undefined symbols for architecture x86_64: "_PyArg_ParseTuple" 309 ab8fc413S默默HOSTLDFLAGS += $(call os_x_after, 10, 14, "-lpython -dynamclib", "") 310 f6322eb7SMasahiro Yamadaendif 311 f6322eb7SMasahiro Yamada 312 6825a95bSMasahiro Yamada# Decide whether to build built-in, modular, or both. 313 6825a95bSMasahiro Yamada# Normally, just do built-in. 314 6825a95bSMasahiro Yamada 315 6825a95bSMasahiro YamadaKBUILD_MODULES := 316 6825a95bSMasahiro YamadaKBUILD_BUILTIN := 1 317 6825a95bSMasahiro Yamada 318 6825a95bSMasahiro Yamada# If we have only "make modules", don't compile built-in objects. 319 6825a95bSMasahiro Yamada# When we're building modules with modversions, we need to consider 320 6825a95bSMasahiro Yamada# the built-in objects during the descend as well, in order to 321 6825a95bSMasahiro Yamada# make sure the checksums are up to date before we record them. 322 6825a95bSMasahiro Yamada 323 6825a95bSMasahiro Yamadaifeq ($(MAKECMDGOALS),modules) 324 6825a95bSMasahiro Yamada KBUILD_BUILTIN := $(if $(CONFIG_MODVERSIONS),1) 325 6825a95bSMasahiro Yamadaendif 326 6825a95bSMasahiro Yamada 327 6825a95bSMasahiro Yamada# If we have "make <whatever> modules", compile modules 328 6825a95bSMasahiro Yamada# in addition to whatever we do anyway. 329 6825a95bSMasahiro Yamada# Just "make" or "make all" shall build modules as well 330 6825a95bSMasahiro Yamada 331 6825a95bSMasahiro Yamada# U-Boot does not need modules 332 6825a95bSMasahiro Yamada#ifneq ($(filter all _all modules,$(MAKECMDGOALS)),) 333 6825a95bSMasahiro Yamada# KBUILD_MODULES := 1 334 6825a95bSMasahiro Yamada#endif 335 6825a95bSMasahiro Yamada 336 6825a95bSMasahiro Yamada#ifeq ($(MAKECMDGOALS),) 337 6825a95bSMasahiro Yamada# KBUILD_MODULES := 1 338 6825a95bSMasahiro Yamada#endif 339 6825a95bSMasahiro Yamada 340 6825a95bSMasahiro Yamadaexport KBUILD_MODULES KBUILD_BUILTIN 341 6825a95bSMasahiro Yamadaexport KBUILD_CHECKSRC KBUILD_SRC KBUILD_EXTMOD 342 6825a95bSMasahiro Yamada 343 bf4b3de1SMasahiro Yamada# We need some generic definitions (do not try to remake the file). 344 4d713be1SMasahiro Yamadascripts/Kbuild.include: ; 345 4d713be1SMasahiro Yamadainclude scripts/Kbuild.include 346 bf4b3de1SMasahiro Yamada 347 f6322eb7SMasahiro Yamada# Make variables (CC, etc...) 348 f6322eb7SMasahiro Yamada 349 f6322eb7SMasahiro YamadaAS = $(CROSS_COMPILE)as 350 f6322eb7SMasahiro Yamada# Always use GNU ld 351 f6322eb7SMasahiro Yamadaifneq ($(shell $(CROSS_COMPILE)ld.bfd -v 2> /dev/null),) 352 f6322eb7SMasahiro YamadaLD = $(CROSS_COMPILE)ld.bfd 353 f6322eb7SMasahiro Yamadaelse 354 f6322eb7SMasahiro YamadaLD = $(CROSS_COMPILE)ld 355 f6322eb7SMasahiro Yamadaendif 356 f6322eb7SMasahiro YamadaCC = $(CROSS_COMPILE)gcc 357 f6322eb7SMasahiro YamadaCPP = $(CC) -E 358 f6322eb7SMasahiro YamadaAR = $(CROSS_COMPILE)ar 359 f6322eb7SMasahiro YamadaNM = $(CROSS_COMPILE)nm 360 f6322eb7SMasahiro YamadaLDR = $(CROSS_COMPILE)ldr 361 f6322eb7SMasahiro YamadaSTRIP = $(CROSS_COMPILE)strip 362 f6322eb7SMasahiro YamadaOBJCOPY = $(CROSS_COMPILE)objcopy 363 f6322eb7SMasahiro YamadaOBJDUMP = $(CROSS_COMPILE)objdump 364 e91610daSEugeniu RoscaLEX = flex 365 e91610daSEugeniu RoscaYACC = bison 366 f6322eb7SMasahiro YamadaAWK = awk 367 f77d7096SMasahiro YamadaPERL = perl 368 b48bfc74SStefano BabicPYTHON ?= python 369 e91610daSEugeniu RoscaPYTHON2 = python2 370 e91610daSEugeniu RoscaPYTHON3 = python3 371 36dd5f1bSTom RiniDTC ?= $(objtree)/scripts/dtc/dtc 372 f6322eb7SMasahiro YamadaCHECK = sparse 373 f6322eb7SMasahiro Yamada 374 f6322eb7SMasahiro YamadaCHECKFLAGS := -D__linux__ -Dlinux -D__STDC__ -Dunix -D__unix__ \ 375 f6322eb7SMasahiro Yamada -Wbitwise -Wno-return-void -D__CHECK_ENDIAN__ $(CF) 376 f6322eb7SMasahiro Yamada 377 3b612970SMasahiro YamadaKBUILD_CPPFLAGS := -D__KERNEL__ -D__UBOOT__ 378 2b3c9d3dSMasahiro Yamada 379 2b3c9d3dSMasahiro YamadaKBUILD_CFLAGS := -Wall -Wstrict-prototypes \ 380 2b3c9d3dSMasahiro Yamada -Wno-format-security \ 381 fa893990STom Rini -fno-builtin -ffreestanding $(CSTD_FLAG) 382 5bc11922SBin MengKBUILD_CFLAGS += -fshort-wchar -fno-strict-aliasing 383 2b3c9d3dSMasahiro YamadaKBUILD_AFLAGS := -D__ASSEMBLY__ 384 2b3c9d3dSMasahiro Yamada 385 6ace36e1SAndy Shevchenko# Don't generate position independent code 386 6ace36e1SAndy ShevchenkoKBUILD_CFLAGS += $(call cc-option,-fno-PIE) 387 6ace36e1SAndy ShevchenkoKBUILD_AFLAGS += $(call cc-option,-fno-PIE) 388 6ace36e1SAndy Shevchenko 389 7424145fSMasahiro Yamada# Read UBOOTRELEASE from include/config/uboot.release (if it exists) 390 7424145fSMasahiro YamadaUBOOTRELEASE = $(shell cat include/config/uboot.release 2> /dev/null) 391 7424145fSMasahiro YamadaUBOOTVERSION = $(VERSION)$(if $(PATCHLEVEL),.$(PATCHLEVEL)$(if $(SUBLEVEL),.$(SUBLEVEL)))$(EXTRAVERSION) 392 5f30f3beSMasahiro Yamada 393 7424145fSMasahiro Yamadaexport VERSION PATCHLEVEL SUBLEVEL UBOOTRELEASE UBOOTVERSION 394 026f9cf2SMasahiro Yamadaexport ARCH CPU BOARD VENDOR SOC CPUDIR BOARDDIR 395 f6322eb7SMasahiro Yamadaexport CONFIG_SHELL HOSTCC HOSTCFLAGS HOSTLDFLAGS CROSS_COMPILE AS LD CC 396 f6322eb7SMasahiro Yamadaexport CPP AR NM LDR STRIP OBJCOPY OBJDUMP 397 e91610daSEugeniu Roscaexport MAKE LEX YACC AWK PERL PYTHON PYTHON2 PYTHON3 398 4b83f0d9SMasahiro Yamadaexport HOSTCXX HOSTCXXFLAGS CHECK CHECKFLAGS DTC DTC_FLAGS 399 f6322eb7SMasahiro Yamada 400 026f9cf2SMasahiro Yamadaexport KBUILD_CPPFLAGS NOSTDINC_FLAGS UBOOTINCLUDE OBJCOPYFLAGS LDFLAGS 401 2b3c9d3dSMasahiro Yamadaexport KBUILD_CFLAGS KBUILD_AFLAGS 402 2b3c9d3dSMasahiro Yamada 403 6825a95bSMasahiro Yamada# When compiling out-of-tree modules, put MODVERDIR in the module 404 6825a95bSMasahiro Yamada# tree rather than in the kernel tree. The kernel tree might 405 6825a95bSMasahiro Yamada# even be read-only. 406 6825a95bSMasahiro Yamadaexport MODVERDIR := $(if $(KBUILD_EXTMOD),$(firstword $(KBUILD_EXTMOD))/).tmp_versions 407 6825a95bSMasahiro Yamada 408 6825a95bSMasahiro Yamada# Files to ignore in find ... statements 409 6825a95bSMasahiro Yamada 410 598e2d33SMasahiro Yamadaexport RCS_FIND_IGNORE := \( -name SCCS -o -name BitKeeper -o -name .svn -o \ 411 598e2d33SMasahiro Yamada -name CVS -o -name .pc -o -name .hg -o -name .git \) \ 412 598e2d33SMasahiro Yamada -prune -o 413 6825a95bSMasahiro Yamadaexport RCS_TAR_IGNORE := --exclude SCCS --exclude BitKeeper --exclude .svn \ 414 6825a95bSMasahiro Yamada --exclude CVS --exclude .pc --exclude .hg --exclude .git 415 6825a95bSMasahiro Yamada 416 6825a95bSMasahiro Yamada# =========================================================================== 417 6825a95bSMasahiro Yamada# Rules shared between *config targets and build targets 418 6825a95bSMasahiro Yamada 419 6825a95bSMasahiro Yamada# Basic helpers built in scripts/ 420 6825a95bSMasahiro YamadaPHONY += scripts_basic 421 6825a95bSMasahiro Yamadascripts_basic: 422 6825a95bSMasahiro Yamada $(Q)$(MAKE) $(build)=scripts/basic 423 6825a95bSMasahiro Yamada $(Q)rm -f .tmp_quiet_recordmcount 424 6825a95bSMasahiro Yamada 425 6825a95bSMasahiro Yamada# To avoid any implicit rule to kick in, define an empty command. 426 6825a95bSMasahiro Yamadascripts/basic/%: scripts_basic ; 427 6825a95bSMasahiro Yamada 428 3341bfecSMasahiro YamadaPHONY += outputmakefile 429 3341bfecSMasahiro Yamada# outputmakefile generates a Makefile in the output directory, if using a 430 3341bfecSMasahiro Yamada# separate output directory. This allows convenient use of make in the 431 3341bfecSMasahiro Yamada# output directory. 432 3341bfecSMasahiro Yamadaoutputmakefile: 433 3341bfecSMasahiro Yamadaifneq ($(KBUILD_SRC),) 434 3341bfecSMasahiro Yamada $(Q)ln -fsn $(srctree) source 435 3341bfecSMasahiro Yamada $(Q)$(CONFIG_SHELL) $(srctree)/scripts/mkmakefile \ 436 3341bfecSMasahiro Yamada $(srctree) $(objtree) $(VERSION) $(PATCHLEVEL) 437 3341bfecSMasahiro Yamadaendif 438 3341bfecSMasahiro Yamada 439 433b2f1eSMasahiro Yamada# To make sure we do not include .config for any of the *config targets 440 433b2f1eSMasahiro Yamada# catch them early, and hand them over to scripts/kconfig/Makefile 441 433b2f1eSMasahiro Yamada# It is allowed to specify more targets when calling make, including 442 433b2f1eSMasahiro Yamada# mixing *config targets and build targets. 443 433b2f1eSMasahiro Yamada# For example 'make oldconfig all'. 444 433b2f1eSMasahiro Yamada# Detect when mixed targets is specified, and make a second invocation 445 433b2f1eSMasahiro Yamada# of make so .config is not included in this case either (for *config). 446 6825a95bSMasahiro Yamada 447 7424145fSMasahiro Yamadaversion_h := include/generated/version_autogenerated.h 448 7424145fSMasahiro Yamadatimestamp_h := include/generated/timestamp_autogenerated.h 449 f3d8f7ddSRasmus Villemoesdefaultenv_h := include/generated/defaultenv_autogenerated.h 450 7424145fSMasahiro Yamada 451 433b2f1eSMasahiro Yamadano-dot-config-targets := clean clobber mrproper distclean \ 452 27651187SMasahiro Yamada help %docs check% coccicheck \ 453 499fde5cSSimon Glass ubootversion backup tests check qcheck 454 2b3c9d3dSMasahiro Yamada 455 433b2f1eSMasahiro Yamadaconfig-targets := 0 456 433b2f1eSMasahiro Yamadamixed-targets := 0 457 433b2f1eSMasahiro Yamadadot-config := 1 458 2b3c9d3dSMasahiro Yamada 459 433b2f1eSMasahiro Yamadaifneq ($(filter $(no-dot-config-targets), $(MAKECMDGOALS)),) 460 433b2f1eSMasahiro Yamada ifeq ($(filter-out $(no-dot-config-targets), $(MAKECMDGOALS)),) 461 433b2f1eSMasahiro Yamada dot-config := 0 462 2b3c9d3dSMasahiro Yamada endif 463 2b3c9d3dSMasahiro Yamadaendif 464 2b3c9d3dSMasahiro Yamada 465 433b2f1eSMasahiro Yamadaifeq ($(KBUILD_EXTMOD),) 466 433b2f1eSMasahiro Yamada ifneq ($(filter config %config,$(MAKECMDGOALS)),) 467 433b2f1eSMasahiro Yamada config-targets := 1 468 98bd0e0dSMasahiro Yamada ifneq ($(words $(MAKECMDGOALS)),1) 469 433b2f1eSMasahiro Yamada mixed-targets := 1 470 433b2f1eSMasahiro Yamada endif 471 433b2f1eSMasahiro Yamada endif 472 433b2f1eSMasahiro Yamadaendif 473 433b2f1eSMasahiro Yamada 474 433b2f1eSMasahiro Yamadaifeq ($(mixed-targets),1) 475 433b2f1eSMasahiro Yamada# =========================================================================== 476 433b2f1eSMasahiro Yamada# We're called with mixed targets (*config and build targets). 477 433b2f1eSMasahiro Yamada# Handle them one by one. 478 433b2f1eSMasahiro Yamada 479 e7734404SMasahiro YamadaPHONY += $(MAKECMDGOALS) __build_one_by_one 480 53bca5abSMasahiro Yamada 481 e7734404SMasahiro Yamada$(filter-out __build_one_by_one, $(MAKECMDGOALS)): __build_one_by_one 482 53bca5abSMasahiro Yamada @: 483 53bca5abSMasahiro Yamada 484 e7734404SMasahiro Yamada__build_one_by_one: 485 53bca5abSMasahiro Yamada $(Q)set -e; \ 486 53bca5abSMasahiro Yamada for i in $(MAKECMDGOALS); do \ 487 53bca5abSMasahiro Yamada $(MAKE) -f $(srctree)/Makefile $$i; \ 488 53bca5abSMasahiro Yamada done 489 433b2f1eSMasahiro Yamada 490 433b2f1eSMasahiro Yamadaelse 491 433b2f1eSMasahiro Yamadaifeq ($(config-targets),1) 492 433b2f1eSMasahiro Yamada# =========================================================================== 493 433b2f1eSMasahiro Yamada# *config targets only - make sure prerequisites are updated, and descend 494 433b2f1eSMasahiro Yamada# in scripts/kconfig to make the *config target 495 433b2f1eSMasahiro Yamada 496 51148790SMasahiro YamadaKBUILD_DEFCONFIG := sandbox_defconfig 497 51148790SMasahiro Yamadaexport KBUILD_DEFCONFIG KBUILD_KCONFIG 498 433b2f1eSMasahiro Yamada 499 51148790SMasahiro Yamadaconfig: scripts_basic outputmakefile FORCE 500 5f9eb220SMasahiro Yamada $(Q)$(MAKE) $(build)=scripts/kconfig $@ 501 51148790SMasahiro Yamada 502 51148790SMasahiro Yamada%config: scripts_basic outputmakefile FORCE 503 5f9eb220SMasahiro Yamada $(Q)$(MAKE) $(build)=scripts/kconfig $@ 504 433b2f1eSMasahiro Yamada 505 433b2f1eSMasahiro Yamadaelse 506 433b2f1eSMasahiro Yamada# =========================================================================== 507 433b2f1eSMasahiro Yamada# Build targets only - this includes vmlinux, arch specific targets, clean 508 433b2f1eSMasahiro Yamada# targets and others. In general all targets except *config targets. 509 433b2f1eSMasahiro Yamada 510 61304dbeSMasahiro Yamada# Additional helpers built in scripts/ 511 61304dbeSMasahiro Yamada# Carefully list dependencies so we do not try to build scripts twice 512 61304dbeSMasahiro Yamada# in parallel 513 61304dbeSMasahiro YamadaPHONY += scripts 514 61304dbeSMasahiro Yamadascripts: scripts_basic include/config/auto.conf 515 61304dbeSMasahiro Yamada $(Q)$(MAKE) $(build)=$(@) 516 61304dbeSMasahiro Yamada 517 433b2f1eSMasahiro Yamadaifeq ($(dot-config),1) 518 433b2f1eSMasahiro Yamada# Read in config 519 51148790SMasahiro Yamada-include include/config/auto.conf 520 51148790SMasahiro Yamada 521 51148790SMasahiro Yamada# Read in dependencies to all Kconfig* files, make sure to run 522 51148790SMasahiro Yamada# oldconfig if changes are detected. 523 51148790SMasahiro Yamada-include include/config/auto.conf.cmd 524 51148790SMasahiro Yamada 525 51148790SMasahiro Yamada# To avoid any implicit rule to kick in, define an empty command 526 51148790SMasahiro Yamada$(KCONFIG_CONFIG) include/config/auto.conf.cmd: ; 527 51148790SMasahiro Yamada 528 51148790SMasahiro Yamada# If .config is newer than include/config/auto.conf, someone tinkered 529 51148790SMasahiro Yamada# with it and forgot to run make oldconfig. 530 51148790SMasahiro Yamada# if auto.conf.cmd is missing then we are probably in a cleaned tree so 531 51148790SMasahiro Yamada# we execute the config step to be sure to catch updated Kconfig files 532 51148790SMasahiro Yamadainclude/config/%.conf: $(KCONFIG_CONFIG) include/config/auto.conf.cmd 533 e91610daSEugeniu Rosca $(Q)$(MAKE) -f $(srctree)/Makefile syncconfig 534 5f9eb220SMasahiro Yamada @# If the following part fails, include/config/auto.conf should be 535 5f9eb220SMasahiro Yamada @# deleted so "make silentoldconfig" will be re-run on the next build. 536 5f9eb220SMasahiro Yamada $(Q)$(MAKE) -f $(srctree)/scripts/Makefile.autoconf || \ 537 5f9eb220SMasahiro Yamada { rm -f include/config/auto.conf; false; } 538 5f9eb220SMasahiro Yamada @# include/config.h has been updated after "make silentoldconfig". 539 5f9eb220SMasahiro Yamada @# We need to touch include/config/auto.conf so it gets newer 540 5f9eb220SMasahiro Yamada @# than include/config.h. 541 5f9eb220SMasahiro Yamada @# Otherwise, 'make silentoldconfig' would be invoked twice. 542 5f9eb220SMasahiro Yamada $(Q)touch include/config/auto.conf 543 51148790SMasahiro Yamada 544 0b588defSMasahiro Yamadau-boot.cfg spl/u-boot.cfg tpl/u-boot.cfg: 545 0d982c58SPhilipp Tomsich $(Q)$(MAKE) -f $(srctree)/scripts/Makefile.autoconf $(@) 546 0d982c58SPhilipp Tomsich 547 433b2f1eSMasahiro Yamada-include include/autoconf.mk 548 433b2f1eSMasahiro Yamada-include include/autoconf.mk.dep 549 433b2f1eSMasahiro Yamada 550 51148790SMasahiro Yamada# We want to include arch/$(ARCH)/config.mk only when include/config/auto.conf 551 51148790SMasahiro Yamada# is up-to-date. When we switch to a different board configuration, old CONFIG 552 51148790SMasahiro Yamada# macros are still remaining in include/config/auto.conf. Without the following 553 51148790SMasahiro Yamada# gimmick, wrong config.mk would be included leading nasty warnings/errors. 554 cffcd286SMasahiro Yamadaifneq ($(wildcard $(KCONFIG_CONFIG)),) 555 cffcd286SMasahiro Yamadaifneq ($(wildcard include/config/auto.conf),) 556 cffcd286SMasahiro Yamadaautoconf_is_old := $(shell find . -path ./$(KCONFIG_CONFIG) -newer \ 557 cffcd286SMasahiro Yamada include/config/auto.conf) 558 cffcd286SMasahiro Yamadaifeq ($(autoconf_is_old),) 559 4d713be1SMasahiro Yamadainclude config.mk 560 4d713be1SMasahiro Yamadainclude arch/$(ARCH)/Makefile 561 ced0715dSMasahiro Yamadaendif 562 cffcd286SMasahiro Yamadaendif 563 cffcd286SMasahiro Yamadaendif 564 fada9e20SSimon Glass 565 bb1ae559SSimon Glass# These are set by the arch-specific config.mk. Make sure they are exported 566 bb1ae559SSimon Glass# so they can be used when building an EFI application. 567 bb1ae559SSimon Glassexport EFI_LDS # Filename of EFI link script in arch/$(ARCH)/lib 568 bb1ae559SSimon Glassexport EFI_CRT0 # Filename of EFI CRT0 in arch/$(ARCH)/lib 569 bb1ae559SSimon Glassexport EFI_RELOC # Filename of EFU relocation code in arch/$(ARCH)/lib 570 bb1ae559SSimon Glassexport CFLAGS_EFI # Compiler flags to add when building EFI app 571 bb1ae559SSimon Glassexport CFLAGS_NON_EFI # Compiler flags to remove when building EFI app 572 bb1ae559SSimon Glassexport EFI_TARGET # binutils target if EFI is natively supported 573 bb1ae559SSimon Glass 574 d51dfff7SIlya Yanok# If board code explicitly specified LDSCRIPT or CONFIG_SYS_LDSCRIPT, use 575 d51dfff7SIlya Yanok# that (or fail if absent). Otherwise, search for a linker script in a 576 d51dfff7SIlya Yanok# standard location. 577 d51dfff7SIlya Yanok 578 d51dfff7SIlya Yanokifndef LDSCRIPT 579 4379ac61SMasahiro Yamada #LDSCRIPT := $(srctree)/board/$(BOARDDIR)/u-boot.lds.debug 580 d51dfff7SIlya Yanok ifdef CONFIG_SYS_LDSCRIPT 581 d51dfff7SIlya Yanok # need to strip off double quotes 582 4a377552SMasahiro Yamada LDSCRIPT := $(srctree)/$(CONFIG_SYS_LDSCRIPT:"%"=%) 583 d51dfff7SIlya Yanok endif 584 d51dfff7SIlya Yanokendif 585 d51dfff7SIlya Yanok 586 ee60197eSSimon Glass# If there is no specified link script, we look in a number of places for it 587 d51dfff7SIlya Yanokifndef LDSCRIPT 588 d51dfff7SIlya Yanok ifeq ($(wildcard $(LDSCRIPT)),) 589 4379ac61SMasahiro Yamada LDSCRIPT := $(srctree)/board/$(BOARDDIR)/u-boot.lds 590 d51dfff7SIlya Yanok endif 591 d51dfff7SIlya Yanok ifeq ($(wildcard $(LDSCRIPT)),) 592 4379ac61SMasahiro Yamada LDSCRIPT := $(srctree)/$(CPUDIR)/u-boot.lds 593 d51dfff7SIlya Yanok endif 594 d51dfff7SIlya Yanok ifeq ($(wildcard $(LDSCRIPT)),) 595 4379ac61SMasahiro Yamada LDSCRIPT := $(srctree)/arch/$(ARCH)/cpu/u-boot.lds 596 ee60197eSSimon Glass endif 597 d51dfff7SIlya Yanokendif 598 d51dfff7SIlya Yanok 599 433b2f1eSMasahiro Yamadaelse 600 51148790SMasahiro Yamada# Dummy target needed, because used as prerequisite 601 51148790SMasahiro Yamadainclude/config/auto.conf: ; 602 433b2f1eSMasahiro Yamadaendif # $(dot-config) 603 433b2f1eSMasahiro Yamada 604 de5e5ceaSChris Zankel# 605 de5e5ceaSChris Zankel# Xtensa linker script cannot be preprocessed with -ansi because of 606 de5e5ceaSChris Zankel# preprocessor operations on strings that don't make C identifiers. 607 de5e5ceaSChris Zankel# 608 de5e5ceaSChris Zankelifeq ($(CONFIG_XTENSA),) 609 de5e5ceaSChris ZankelLDPPFLAGS += -ansi 610 de5e5ceaSChris Zankelendif 611 de5e5ceaSChris Zankel 612 4a8ed8e2SMasahiro Yamadaifdef CONFIG_CC_OPTIMIZE_FOR_SIZE 613 4a8ed8e2SMasahiro YamadaKBUILD_CFLAGS += -Os 614 4a8ed8e2SMasahiro Yamadaelse 615 4a8ed8e2SMasahiro YamadaKBUILD_CFLAGS += -O2 616 4a8ed8e2SMasahiro Yamadaendif 617 433b2f1eSMasahiro Yamada 618 433b2f1eSMasahiro YamadaKBUILD_CFLAGS += $(call cc-option,-fno-stack-protector) 619 687a7518SPrabhakar KushwahaKBUILD_CFLAGS += $(call cc-option,-fno-delete-null-pointer-checks) 620 433b2f1eSMasahiro Yamada 621 1eb2e71eSMasahiro Yamada# change __FILE__ to the relative path from the srctree 622 1eb2e71eSMasahiro YamadaKBUILD_CFLAGS += $(call cc-option,-fmacro-prefix-map=$(srctree)/=) 623 1eb2e71eSMasahiro Yamada 624 433b2f1eSMasahiro YamadaKBUILD_CFLAGS += -g 625 433b2f1eSMasahiro Yamada# $(KBUILD_AFLAGS) sets -g, which causes gcc to pass a suitable -g<format> 626 433b2f1eSMasahiro Yamada# option to the assembler. 627 433b2f1eSMasahiro YamadaKBUILD_AFLAGS += -g 628 433b2f1eSMasahiro Yamada 629 433b2f1eSMasahiro Yamada# Report stack usage if supported 630 948071baSAlexey Brodkin# ARC tools based on GCC 7.1 has an issue with stack usage 631 948071baSAlexey Brodkin# with naked functions, see commit message for more details 632 948071baSAlexey Brodkinifndef CONFIG_ARC 633 5b1f1f4aSMasahiro Yamadaifeq ($(shell $(CONFIG_SHELL) $(srctree)/scripts/gcc-stack-usage.sh $(CC)),y) 634 5b1f1f4aSMasahiro Yamada KBUILD_CFLAGS += -fstack-usage 635 5b1f1f4aSMasahiro Yamadaendif 636 948071baSAlexey Brodkinendif 637 433b2f1eSMasahiro Yamada 638 433b2f1eSMasahiro YamadaKBUILD_CFLAGS += $(call cc-option,-Wno-format-nonliteral) 639 4760fe26STom Riniifeq ($(cc-name),clang) 640 4760fe26STom RiniKBUILD_CPPFLAGS += $(call cc-option,-Qunused-arguments,) 641 4760fe26STom RiniKBUILD_CFLAGS += $(call cc-disable-warning, format-invalid-specifier) 642 4760fe26STom RiniKBUILD_CFLAGS += $(call cc-disable-warning, gnu) 643 4760fe26STom RiniKBUILD_CFLAGS += $(call cc-disable-warning, address-of-packed-member) 644 4760fe26STom RiniKBUILD_CFLAGS += $(call cc-option, -fcatch-undefined-behavior) 645 4760fe26STom Riniendif 646 433b2f1eSMasahiro Yamada 647 433b2f1eSMasahiro Yamada# turn jbsr into jsr for m68k 648 433b2f1eSMasahiro Yamadaifeq ($(ARCH),m68k) 649 433b2f1eSMasahiro Yamadaifeq ($(findstring 3.4,$(shell $(CC) --version)),3.4) 650 433b2f1eSMasahiro YamadaKBUILD_AFLAGS += -Wa,-gstabs,-S 651 433b2f1eSMasahiro Yamadaendif 652 433b2f1eSMasahiro Yamadaendif 653 433b2f1eSMasahiro Yamada 654 65bb6d8dSMasahiro Yamada# Prohibit date/time macros, which would make the build non-deterministic 655 65bb6d8dSMasahiro YamadaKBUILD_CFLAGS += $(call cc-option,-Werror=date-time) 656 65bb6d8dSMasahiro Yamada 657 4d713be1SMasahiro Yamadainclude scripts/Makefile.extrawarn 658 6419e144SMasahiro Yamada 659 0e6256d0SMasahiro Yamada# Add user supplied CPPFLAGS, AFLAGS and CFLAGS as the last assignments 660 0e6256d0SMasahiro YamadaKBUILD_CPPFLAGS += $(KCPPFLAGS) 661 0e6256d0SMasahiro YamadaKBUILD_AFLAGS += $(KAFLAGS) 662 0e6256d0SMasahiro YamadaKBUILD_CFLAGS += $(KCFLAGS) 663 0e6256d0SMasahiro Yamada 664 433b2f1eSMasahiro Yamada# Use UBOOTINCLUDE when you must reference the include/ directory. 665 433b2f1eSMasahiro Yamada# Needed to be compatible with the O= option 666 f5c66bdbSMasahiro YamadaUBOOTINCLUDE := \ 667 f5c66bdbSMasahiro Yamada -Iinclude \ 668 f5c66bdbSMasahiro Yamada $(if $(KBUILD_SRC), -I$(srctree)/include) \ 669 3a649407STom Rini $(if $(CONFIG_$(SPL_)SYS_THUMB_BUILD), \ 670 3a649407STom Rini $(if $(CONFIG_HAS_THUMB2),, \ 671 62e92077SAlbert ARIBAUD -I$(srctree)/arch/$(ARCH)/thumb1/include),) \ 672 51148790SMasahiro Yamada -I$(srctree)/arch/$(ARCH)/include \ 673 51148790SMasahiro Yamada -include $(srctree)/include/linux/kconfig.h 674 433b2f1eSMasahiro Yamada 675 433b2f1eSMasahiro YamadaNOSTDINC_FLAGS += -nostdinc -isystem $(shell $(CC) -print-file-name=include) 676 433b2f1eSMasahiro YamadaCHECKFLAGS += $(NOSTDINC_FLAGS) 677 433b2f1eSMasahiro Yamada 678 433b2f1eSMasahiro Yamada# FIX ME 679 026f9cf2SMasahiro Yamadacpp_flags := $(KBUILD_CPPFLAGS) $(PLATFORM_CPPFLAGS) $(UBOOTINCLUDE) \ 680 026f9cf2SMasahiro Yamada $(NOSTDINC_FLAGS) 681 433b2f1eSMasahiro Yamadac_flags := $(KBUILD_CFLAGS) $(cpp_flags) 682 433b2f1eSMasahiro Yamada 683 7ebf7443Swdenk######################################################################### 684 7ebf7443Swdenk# U-Boot objects....order is important (i.e. start must be first) 685 7ebf7443Swdenk 686 9e414032SMasahiro YamadaHAVE_VENDOR_COMMON_LIB = $(if $(wildcard $(srctree)/board/$(VENDOR)/common/Makefile),y,n) 687 f9328639SMarian Balakowicz 688 656de6b8SMasahiro Yamadalibs-y += lib/ 689 656de6b8SMasahiro Yamadalibs-$(HAVE_VENDOR_COMMON_LIB) += board/$(VENDOR)/common/ 690 656de6b8SMasahiro Yamadalibs-$(CONFIG_OF_EMBED) += dts/ 691 656de6b8SMasahiro Yamadalibs-y += fs/ 692 656de6b8SMasahiro Yamadalibs-y += net/ 693 656de6b8SMasahiro Yamadalibs-y += disk/ 694 656de6b8SMasahiro Yamadalibs-y += drivers/ 695 656de6b8SMasahiro Yamadalibs-y += drivers/dma/ 696 656de6b8SMasahiro Yamadalibs-y += drivers/gpio/ 697 656de6b8SMasahiro Yamadalibs-y += drivers/i2c/ 698 656de6b8SMasahiro Yamadalibs-y += drivers/mtd/ 699 a430fa06SMiquel Raynallibs-$(CONFIG_CMD_NAND) += drivers/mtd/nand/raw/ 700 656de6b8SMasahiro Yamadalibs-y += drivers/mtd/onenand/ 701 656de6b8SMasahiro Yamadalibs-$(CONFIG_CMD_UBI) += drivers/mtd/ubi/ 702 656de6b8SMasahiro Yamadalibs-y += drivers/mtd/spi/ 703 656de6b8SMasahiro Yamadalibs-y += drivers/net/ 704 656de6b8SMasahiro Yamadalibs-y += drivers/net/phy/ 705 656de6b8SMasahiro Yamadalibs-y += drivers/power/ \ 706 61f5ddcbSStephen Warren drivers/power/domain/ \ 707 e2906a59SMasahiro Yamada drivers/power/fuel_gauge/ \ 708 e2906a59SMasahiro Yamada drivers/power/mfd/ \ 709 e2906a59SMasahiro Yamada drivers/power/pmic/ \ 710 af41e8dbSPrzemyslaw Marczak drivers/power/battery/ \ 711 af41e8dbSPrzemyslaw Marczak drivers/power/regulator/ 712 656de6b8SMasahiro Yamadalibs-y += drivers/spi/ 713 656de6b8SMasahiro Yamadalibs-$(CONFIG_FMAN_ENET) += drivers/net/fm/ 714 656de6b8SMasahiro Yamadalibs-$(CONFIG_SYS_FSL_DDR) += drivers/ddr/fsl/ 715 b9e745bbSShengzhou Liulibs-$(CONFIG_SYS_FSL_MMDC) += drivers/ddr/fsl/ 716 9bbd2132SDinh Nguyenlibs-$(CONFIG_ALTERA_SDRAM) += drivers/ddr/altera/ 717 656de6b8SMasahiro Yamadalibs-y += drivers/serial/ 718 5b9ce0e2SKishon Vijay Abraham Ilibs-y += drivers/usb/dwc3/ 719 93eb8f39SSriram Dashlibs-y += drivers/usb/common/ 720 019808f9SSimon Glasslibs-y += drivers/usb/emul/ 721 656de6b8SMasahiro Yamadalibs-y += drivers/usb/eth/ 722 db17a92dSJean-Jacques Hiblotlibs-$(CONFIG_USB_GADGET) += drivers/usb/gadget/ 723 db17a92dSJean-Jacques Hiblotlibs-$(CONFIG_USB_GADGET) += drivers/usb/gadget/udc/ 724 656de6b8SMasahiro Yamadalibs-y += drivers/usb/host/ 725 656de6b8SMasahiro Yamadalibs-y += drivers/usb/musb/ 726 656de6b8SMasahiro Yamadalibs-y += drivers/usb/musb-new/ 727 656de6b8SMasahiro Yamadalibs-y += drivers/usb/phy/ 728 656de6b8SMasahiro Yamadalibs-y += drivers/usb/ulpi/ 729 72a8cf8dSSimon Glasslibs-y += cmd/ 730 656de6b8SMasahiro Yamadalibs-y += common/ 731 0649cd0dSSimon Glasslibs-y += env/ 732 656de6b8SMasahiro Yamadalibs-$(CONFIG_API) += api/ 733 656de6b8SMasahiro Yamadalibs-$(CONFIG_HAS_POST) += post/ 734 79ffe8c6STom Rinilibs-$(CONFIG_UNIT_TEST) += test/ test/dm/ 735 421f86f3SJoe Hershbergerlibs-$(CONFIG_UT_ENV) += test/env/ 736 f2a9942fSMaxime Ripardlibs-$(CONFIG_UT_OVERLAY) += test/overlay/ 737 f9328639SMarian Balakowicz 738 33a02da0SMasahiro Yamadalibs-y += $(if $(BOARDDIR),board/$(BOARDDIR)/) 739 08e39a84SMasahiro Yamada 740 656de6b8SMasahiro Yamadalibs-y := $(sort $(libs-y)) 741 656de6b8SMasahiro Yamada 742 656de6b8SMasahiro Yamadau-boot-dirs := $(patsubst %/,%,$(filter %/, $(libs-y))) tools examples 743 656de6b8SMasahiro Yamada 744 656de6b8SMasahiro Yamadau-boot-alldirs := $(sort $(u-boot-dirs) $(patsubst %/,%,$(filter %/, $(libs-)))) 745 656de6b8SMasahiro Yamada 746 656de6b8SMasahiro Yamadalibs-y := $(patsubst %/, %/built-in.o, $(libs-y)) 747 656de6b8SMasahiro Yamada 748 656de6b8SMasahiro Yamadau-boot-init := $(head-y) 749 656de6b8SMasahiro Yamadau-boot-main := $(libs-y) 750 656de6b8SMasahiro Yamada 751 a8c7c708Swdenk 752 4f7cb08eSwdenk# Add GCC lib 753 cd2e46cbSMasahiro Yamadaifeq ($(CONFIG_USE_PRIVATE_LIBGCC),y) 754 a86cf89cSMasahiro YamadaPLATFORM_LIBGCC = arch/$(ARCH)/lib/lib.a 755 52b1bf2cSWolfgang Denkelse 756 6825a95bSMasahiro YamadaPLATFORM_LIBGCC := -L $(shell dirname `$(CC) $(c_flags) -print-libgcc-file-name`) -lgcc 757 52b1bf2cSWolfgang Denkendif 758 52b1bf2cSWolfgang DenkPLATFORM_LIBS += $(PLATFORM_LIBGCC) 759 52ff8020SChristian Gmeiner 760 52ff8020SChristian Gmeinerifdef CONFIG_CC_COVERAGE 761 52ff8020SChristian GmeinerKBUILD_CFLAGS += --coverage 762 52ff8020SChristian GmeinerPLATFORM_LIBGCC += -lgcov 763 52ff8020SChristian Gmeinerendif 764 52ff8020SChristian Gmeiner 765 52b1bf2cSWolfgang Denkexport PLATFORM_LIBS 766 e75e73ddSAlexey Brodkinexport PLATFORM_LIBGCC 767 3d3befa7Swdenk 768 6ac9f479SMike Frysinger# Special flags for CPP when processing the linker script. 769 6ac9f479SMike Frysinger# Pass the version down so we can handle backwards compatibility 770 6ac9f479SMike Frysinger# on the fly. 771 6ac9f479SMike FrysingerLDPPFLAGS += \ 772 4379ac61SMasahiro Yamada -include $(srctree)/include/u-boot/u-boot.lds.h \ 773 7e6403a6SSimon Glass -DCPUDIR=$(CPUDIR) \ 774 6ac9f479SMike Frysinger $(shell $(LD) --version | \ 775 6ac9f479SMike Frysinger sed -ne 's/GNU ld version \([0-9][0-9]*\)\.\([0-9][0-9]*\).*/-DLD_MAJOR=\1 -DLD_MINOR=\2/p') 776 6ac9f479SMike Frysinger 777 7ebf7443Swdenk######################################################################### 778 bdccc4feSwdenk######################################################################### 779 7ebf7443Swdenk 780 f3a14d37SMike Frysingerifneq ($(CONFIG_BOARD_SIZE_LIMIT),) 781 f3a14d37SMike FrysingerBOARD_SIZE_CHECK = \ 782 f3a14d37SMike Frysinger @actual=`wc -c $@ | awk '{print $$1}'`; \ 783 d060e6f4SJoe Hershberger limit=`printf "%d" $(CONFIG_BOARD_SIZE_LIMIT)`; \ 784 f3a14d37SMike Frysinger if test $$actual -gt $$limit; then \ 785 d060e6f4SJoe Hershberger echo "$@ exceeds file size limit:" >&2 ; \ 786 d060e6f4SJoe Hershberger echo " limit: $$limit bytes" >&2 ; \ 787 d060e6f4SJoe Hershberger echo " actual: $$actual bytes" >&2 ; \ 788 d060e6f4SJoe Hershberger echo " excess: $$((actual - limit)) bytes" >&2; \ 789 f3a14d37SMike Frysinger exit 1; \ 790 f3a14d37SMike Frysinger fi 791 f3a14d37SMike Frysingerelse 792 f3a14d37SMike FrysingerBOARD_SIZE_CHECK = 793 f3a14d37SMike Frysingerendif 794 f3a14d37SMike Frysinger 795 8137af19SScott Wood# Statically apply RELA-style relocations (currently arm64 only) 796 d57259b9SÁlvaro Fernández Rojas# This is useful for arm64 where static relocation needs to be performed on 797 d57259b9SÁlvaro Fernández Rojas# the raw binary, but certain simulators only accept an ELF file (but don't 798 d57259b9SÁlvaro Fernández Rojas# do the relocation). 799 8137af19SScott Woodifneq ($(CONFIG_STATIC_RELA),) 800 8137af19SScott Wood# $(1) is u-boot ELF, $(2) is u-boot bin, $(3) is text base 801 8137af19SScott WoodDO_STATIC_RELA = \ 802 8137af19SScott Wood start=$$($(NM) $(1) | grep __rel_dyn_start | cut -f 1 -d ' '); \ 803 8137af19SScott Wood end=$$($(NM) $(1) | grep __rel_dyn_end | cut -f 1 -d ' '); \ 804 9e414032SMasahiro Yamada tools/relocate-rela $(2) $(3) $$start $$end 805 8137af19SScott Woodelse 806 8137af19SScott WoodDO_STATIC_RELA = 807 8137af19SScott Woodendif 808 8137af19SScott Wood 809 3e88337bSMike Frysinger# Always append ALL so that arch config.mk's can add custom ones 810 e19b0fb4SMasahiro YamadaALL-y += u-boot.srec u-boot.bin u-boot.sym System.map binary_size_check 811 e935a374SHaiying Wang 812 9e414032SMasahiro YamadaALL-$(CONFIG_ONENAND_U_BOOT) += u-boot-onenand.bin 813 89ad7be8SPrabhakar Kushwahaifeq ($(CONFIG_SPL_FSL_PBL),y) 814 89ad7be8SPrabhakar KushwahaALL-$(CONFIG_RAMBOOT_PBL) += u-boot-with-spl-pbl.bin 815 89ad7be8SPrabhakar Kushwahaelse 816 467a40dfSAneesh Bansalifneq ($(CONFIG_SECURE_BOOT), y) 817 467a40dfSAneesh Bansal# For Secure Boot The Image needs to be signed and Header must also 818 467a40dfSAneesh Bansal# be included. So The image has to be built explicitly 819 9e414032SMasahiro YamadaALL-$(CONFIG_RAMBOOT_PBL) += u-boot.pbl 820 89ad7be8SPrabhakar Kushwahaendif 821 467a40dfSAneesh Bansalendif 822 9e414032SMasahiro YamadaALL-$(CONFIG_SPL) += spl/u-boot-spl.bin 823 d21bd69bSSven Ebenfeldifeq ($(CONFIG_MX6)$(CONFIG_SECURE_BOOT), yy) 824 d21bd69bSSven EbenfeldALL-$(CONFIG_SPL_FRAMEWORK) += u-boot-ivt.img 825 d21bd69bSSven Ebenfeldelse 826 0004b7aaSEran Matityahuifeq ($(CONFIG_MX7)$(CONFIG_SECURE_BOOT), yy) 827 0004b7aaSEran MatityahuALL-$(CONFIG_SPL_FRAMEWORK) += u-boot-ivt.img 828 0004b7aaSEran Matityahuelse 829 9e414032SMasahiro YamadaALL-$(CONFIG_SPL_FRAMEWORK) += u-boot.img 830 d21bd69bSSven Ebenfeldendif 831 0004b7aaSEran Matityahuendif 832 9e414032SMasahiro YamadaALL-$(CONFIG_TPL) += tpl/u-boot-tpl.bin 833 ad1ecd20SSimon GlassALL-$(CONFIG_OF_SEPARATE) += u-boot.dtb 834 2405d09cSMasahiro Yamadaifeq ($(CONFIG_SPL_FRAMEWORK),y) 835 2405d09cSMasahiro YamadaALL-$(CONFIG_OF_SEPARATE) += u-boot-dtb.img 836 2405d09cSMasahiro Yamadaendif 837 714a5621SSimon GlassALL-$(CONFIG_OF_HOSTFILE) += u-boot.dtb 838 b343bbb5SVadim Bendeburyifneq ($(CONFIG_SPL_TARGET),) 839 9e414032SMasahiro YamadaALL-$(CONFIG_SPL) += $(CONFIG_SPL_TARGET:"%"=%) 840 b343bbb5SVadim Bendeburyendif 841 9e414032SMasahiro YamadaALL-$(CONFIG_REMAKE_ELF) += u-boot.elf 842 08aeb8b5SSimon GlassALL-$(CONFIG_EFI_APP) += u-boot-app.efi 843 476476e7SSimon GlassALL-$(CONFIG_EFI_STUB) += u-boot-payload.efi 844 7ebf7443Swdenk 845 871aa41dSHeinrich Schuchardtifneq ($(BUILD_ROM)$(CONFIG_BUILD_ROM),) 846 eea0f112SSimon GlassALL-$(CONFIG_X86_RESET_VECTOR) += u-boot.rom 847 eea0f112SSimon Glassendif 848 fce7b276SSimon Glass 849 155b1169STuomas Tynkkynen# Build a combined spl + u-boot image for sunxi 850 155b1169STuomas Tynkkynenifeq ($(CONFIG_ARCH_SUNXI)$(CONFIG_SPL),yy) 851 155b1169STuomas TynkkynenALL-y += u-boot-sunxi-with-spl.bin 852 155b1169STuomas Tynkkynenendif 853 155b1169STuomas Tynkkynen 854 12b7b70cSAllen Martin# enable combined SPL/u-boot/dtb rules for tegra 855 580cc033SSimon Glassifeq ($(CONFIG_TEGRA)$(CONFIG_SPL),yy) 856 a9d78260SSimon GlassALL-y += u-boot-tegra.bin u-boot-nodtb-tegra.bin 857 580cc033SSimon GlassALL-$(CONFIG_OF_SEPARATE) += u-boot-dtb-tegra.bin 858 7dcd3a21SVidya Sagarendif 859 12b7b70cSAllen Martin 860 3b975a14SRyder LeeALL-$(CONFIG_ARCH_MEDIATEK) += u-boot-mtk.bin 861 3b975a14SRyder Lee 862 b2b8a696SStefan Roese# Add optional build target if defined in board/cpu/soc headers 863 b2b8a696SStefan Roeseifneq ($(CONFIG_BUILD_TARGET),) 864 b2b8a696SStefan RoeseALL-y += $(CONFIG_BUILD_TARGET:"%"=%) 865 b2b8a696SStefan Roeseendif 866 b2b8a696SStefan Roese 867 5fed97afSStephen Warrenifneq ($(CONFIG_SYS_INIT_SP_BSS_OFFSET),) 868 5fed97afSStephen WarrenALL-y += init_sp_bss_offset_check 869 5fed97afSStephen Warrenendif 870 5fed97afSStephen Warren 871 96699f09SJagdish Gediyaifeq ($(CONFIG_MPC85xx)$(CONFIG_OF_SEPARATE),yy) 872 96699f09SJagdish GediyaALL-y += u-boot-with-dtb.bin 873 96699f09SJagdish Gediyaendif 874 96699f09SJagdish Gediya 875 ad0fed46SMasahiro YamadaLDFLAGS_u-boot += $(LDFLAGS_FINAL) 876 e391b1e6SJoel Stanley 877 e391b1e6SJoel Stanley# Avoid 'Not enough room for program headers' error on binutils 2.28 onwards. 878 e391b1e6SJoel StanleyLDFLAGS_u-boot += $(call ld-option, --no-dynamic-linker) 879 e391b1e6SJoel Stanley 880 1022807cSAlexey Brodkinifeq ($(CONFIG_ARC)$(CONFIG_NIOS2)$(CONFIG_X86)$(CONFIG_XTENSA),) 881 433b2f1eSMasahiro YamadaLDFLAGS_u-boot += -Ttext $(CONFIG_SYS_TEXT_BASE) 882 433b2f1eSMasahiro Yamadaendif 883 71f84ef0SMasahiro Yamada 884 e020c88aSSimon Glass# Normally we fill empty space with 0xff 885 f9c235fdSMasahiro Yamadaquiet_cmd_objcopy = OBJCOPY $@ 886 e020c88aSSimon Glasscmd_objcopy = $(OBJCOPY) --gap-fill=0xff $(OBJCOPYFLAGS) \ 887 e020c88aSSimon Glass $(OBJCOPYFLAGS_$(@F)) $< $@ 888 e020c88aSSimon Glass 889 e020c88aSSimon Glass# Provide a version which does not do this, for use by EFI 890 e020c88aSSimon Glassquiet_cmd_zobjcopy = OBJCOPY $@ 891 e020c88aSSimon Glasscmd_zobjcopy = $(OBJCOPY) $(OBJCOPYFLAGS) $(OBJCOPYFLAGS_$(@F)) $< $@ 892 f9c235fdSMasahiro Yamada 893 476476e7SSimon Glassquiet_cmd_efipayload = OBJCOPY $@ 894 476476e7SSimon Glasscmd_efipayload = $(OBJCOPY) -I binary -O $(EFIPAYLOAD_BFDTARGET) -B $(EFIPAYLOAD_BFDARCH) $< $@ 895 476476e7SSimon Glass 896 1f6a6648SSven EbenfeldMKIMAGEOUTPUT ?= /dev/null 897 1f6a6648SSven Ebenfeld 898 b97241b3SMarek Vasutquiet_cmd_mkimage = MKIMAGE $@ 899 9bf215b0SMasahiro Yamadacmd_mkimage = $(objtree)/tools/mkimage $(MKIMAGEFLAGS_$(@F)) -d $< $@ \ 900 06587617SRasmus Villemoes >$(MKIMAGEOUTPUT) $(if $(KBUILD_VERBOSE:0=), && cat $(MKIMAGEOUTPUT)) 901 9bf215b0SMasahiro Yamada 902 1a12fdc4SAndre Przywaraquiet_cmd_mkfitimage = MKIMAGE $@ 903 7a778369SMarek Vasutcmd_mkfitimage = $(objtree)/tools/mkimage $(MKIMAGEFLAGS_$(@F)) -f $(U_BOOT_ITS) -p $(CONFIG_FIT_EXTERNAL_OFFSET) $@\ 904 06587617SRasmus Villemoes >$(MKIMAGEOUTPUT) $(if $(KBUILD_VERBOSE:0=), && cat $(MKIMAGEOUTPUT)) 905 1a12fdc4SAndre Przywara 906 ee0acfa2SMasahiro Yamadaquiet_cmd_cat = CAT $@ 907 ee0acfa2SMasahiro Yamadacmd_cat = cat $(filter-out $(PHONY), $^) > $@ 908 ee0acfa2SMasahiro Yamada 909 982a1199SMasahiro Yamadaappend = cat $(filter-out $< $(PHONY), $^) >> $@ 910 982a1199SMasahiro Yamada 911 982a1199SMasahiro Yamadaquiet_cmd_pad_cat = CAT $@ 912 982a1199SMasahiro Yamadacmd_pad_cat = $(cmd_objcopy) && $(append) || rm -f $@ 913 982a1199SMasahiro Yamada 914 1bd87630SSimon Glasscfg: u-boot.cfg 915 1bd87630SSimon Glass 916 1bdd942bSMasahiro Yamadaquiet_cmd_cfgcheck = CFGCHK $2 917 1bdd942bSMasahiro Yamadacmd_cfgcheck = $(srctree)/scripts/check-config.sh $2 \ 918 1bdd942bSMasahiro Yamada $(srctree)/scripts/config_whitelist.txt $(srctree) 919 1bdd942bSMasahiro Yamada 920 0b588defSMasahiro Yamadaall: $(ALL-y) 921 7fcdac0eSSimon Glassifeq ($(CONFIG_DM_I2C_COMPAT)$(CONFIG_SANDBOX),y) 922 a267699bSChris Packham @echo >&2 "===================== WARNING ======================" 923 a267699bSChris Packham @echo >&2 "This board uses CONFIG_DM_I2C_COMPAT. Please remove" 924 a267699bSChris Packham @echo >&2 "(possibly in a subsequent patch in your series)" 925 a267699bSChris Packham @echo >&2 "before sending patches to the mailing list." 926 a267699bSChris Packham @echo >&2 "====================================================" 927 73845350SSimon Glassendif 928 1cb5d5dfSTom Riniifeq ($(CONFIG_MMC),y) 929 1cb5d5dfSTom Riniifneq ($(CONFIG_DM_MMC)$(CONFIG_OF_CONTROL)$(CONFIG_BLK),yyy) 930 a267699bSChris Packham @echo >&2 "===================== WARNING ======================" 931 a267699bSChris Packham @echo >&2 "This board does not use CONFIG_DM_MMC. Please update" 932 a267699bSChris Packham @echo >&2 "the board to use CONFIG_DM_MMC before the v2019.04 release." 933 a267699bSChris Packham @echo >&2 "Failure to update by the deadline may result in board removal." 934 a267699bSChris Packham @echo >&2 "See doc/driver-model/MIGRATION.txt for more info." 935 a267699bSChris Packham @echo >&2 "====================================================" 936 1cb5d5dfSTom Riniendif 937 1cb5d5dfSTom Riniendif 938 109d8bf3STom Riniifeq ($(CONFIG_USB),y) 939 109d8bf3STom Riniifneq ($(CONFIG_DM_USB)$(CONFIG_OF_CONTROL)$(CONFIG_BLK),yyy) 940 a267699bSChris Packham @echo >&2 "===================== WARNING ======================" 941 a267699bSChris Packham @echo >&2 "This board does not use CONFIG_DM_USB. Please update" 942 a267699bSChris Packham @echo >&2 "the board to use CONFIG_DM_USB before the v2019.07 release." 943 a267699bSChris Packham @echo >&2 "Failure to update by the deadline may result in board removal." 944 a267699bSChris Packham @echo >&2 "See doc/driver-model/MIGRATION.txt for more info." 945 a267699bSChris Packham @echo >&2 "====================================================" 946 109d8bf3STom Riniendif 947 109d8bf3STom Riniendif 948 ddfe346fSTom Riniifeq ($(CONFIG_LIBATA)$(CONFIG_MVSATA_IDE),y) 949 ddfe346fSTom Riniifneq ($(CONFIG_DM_SCSI),y) 950 a267699bSChris Packham @echo >&2 "===================== WARNING ======================" 951 a267699bSChris Packham @echo >&2 "This board does not use CONFIG_DM_SCSI. Please update" 952 a267699bSChris Packham @echo >&2 "the storage controller to use CONFIG_DM_SCSI before the v2019.07 release." 953 a267699bSChris Packham @echo >&2 "Failure to update by the deadline may result in board removal." 954 a267699bSChris Packham @echo >&2 "See doc/driver-model/MIGRATION.txt for more info." 955 a267699bSChris Packham @echo >&2 "====================================================" 956 ea9d7c17STom Riniendif 957 ddfe346fSTom Riniendif 958 1ce689d9SSimon Glassifeq ($(CONFIG_PCI),y) 959 1ce689d9SSimon Glassifneq ($(CONFIG_DM_PCI),y) 960 1ce689d9SSimon Glass @echo >&2 "===================== WARNING ======================" 961 1ce689d9SSimon Glass @echo >&2 "This board does not use CONFIG_DM_PCI Please update" 962 1ce689d9SSimon Glass @echo >&2 "the board to use CONFIG_DM_PCI before the v2019.07 release." 963 1ce689d9SSimon Glass @echo >&2 "Failure to update by the deadline may result in board removal." 964 1ce689d9SSimon Glass @echo >&2 "See doc/driver-model/MIGRATION.txt for more info." 965 1ce689d9SSimon Glass @echo >&2 "====================================================" 966 1ce689d9SSimon Glassendif 967 1ce689d9SSimon Glassendif 968 3e87ffcfSSimon Glassifneq ($(CONFIG_LCD)$(CONFIG_VIDEO),) 969 3e87ffcfSSimon Glassifneq ($(CONFIG_DM_VIDEO),y) 970 3e87ffcfSSimon Glass @echo >&2 "===================== WARNING ======================" 971 3e87ffcfSSimon Glass @echo >&2 "This board does not use CONFIG_DM_VIDEO Please update" 972 3e87ffcfSSimon Glass @echo >&2 "the board to use CONFIG_DM_VIDEO before the v2019.07 release." 973 3e87ffcfSSimon Glass @echo >&2 "Failure to update by the deadline may result in board removal." 974 3e87ffcfSSimon Glass @echo >&2 "See doc/driver-model/MIGRATION.txt for more info." 975 3e87ffcfSSimon Glass @echo >&2 "====================================================" 976 3e87ffcfSSimon Glassendif 977 3e87ffcfSSimon Glassendif 978 841d5fbaSSimon Glassifeq ($(CONFIG_OF_EMBED),y) 979 a267699bSChris Packham @echo >&2 "===================== WARNING ======================" 980 a267699bSChris Packham @echo >&2 "CONFIG_OF_EMBED is enabled. This option should only" 981 a267699bSChris Packham @echo >&2 "be used for debugging purposes. Please use" 982 a267699bSChris Packham @echo >&2 "CONFIG_OF_SEPARATE for boards in mainline." 983 a267699bSChris Packham @echo >&2 "See doc/README.fdt-control for more info." 984 a267699bSChris Packham @echo >&2 "====================================================" 985 841d5fbaSSimon Glassendif 986 99a17dd5SJagan Tekiifeq ($(CONFIG_SPI),y) 987 99a17dd5SJagan Tekiifneq ($(CONFIG_DM_SPI)$(CONFIG_OF_CONTROL),yy) 988 99a17dd5SJagan Teki @echo >&2 "===================== WARNING ======================" 989 99a17dd5SJagan Teki @echo >&2 "This board does not use CONFIG_DM_SPI. Please update" 990 99a17dd5SJagan Teki @echo >&2 "the board before v2019.04 for no dm conversion" 991 99a17dd5SJagan Teki @echo >&2 "and v2019.07 for partially dm converted drivers." 992 99a17dd5SJagan Teki @echo >&2 "Failure to update can lead to driver/board removal" 993 99a17dd5SJagan Teki @echo >&2 "See doc/driver-model/MIGRATION.txt for more info." 994 99a17dd5SJagan Teki @echo >&2 "====================================================" 995 99a17dd5SJagan Tekiendif 996 99a17dd5SJagan Tekiendif 997 68979524SJagan Tekiifeq ($(CONFIG_SPI_FLASH),y) 998 68979524SJagan Tekiifneq ($(CONFIG_DM_SPI_FLASH)$(CONFIG_OF_CONTROL),yy) 999 68979524SJagan Teki @echo >&2 "===================== WARNING ======================" 1000 68979524SJagan Teki @echo >&2 "This board does not use CONFIG_DM_SPI_FLASH. Please update" 1001 68979524SJagan Teki @echo >&2 "the board to use CONFIG_SPI_FLASH before the v2019.07 release." 1002 68979524SJagan Teki @echo >&2 "Failure to update by the deadline may result in board removal." 1003 68979524SJagan Teki @echo >&2 "See doc/driver-model/MIGRATION.txt for more info." 1004 68979524SJagan Teki @echo >&2 "====================================================" 1005 68979524SJagan Tekiendif 1006 68979524SJagan Tekiendif 1007 4bf06d11SMasahiro Yamada @# Check that this build does not use CONFIG options that we do not 1008 4bf06d11SMasahiro Yamada @# know about unless they are in Kconfig. All the existing CONFIG 1009 4bf06d11SMasahiro Yamada @# options are whitelisted, so new ones should not be added. 1010 1bdd942bSMasahiro Yamada $(call cmd,cfgcheck,u-boot.cfg) 1011 7ebf7443Swdenk 1012 6ab6b2afSMasahiro YamadaPHONY += dtbs 1013 4141e85bSMasahiro Yamadadtbs: dts/dt.dtb 1014 4141e85bSMasahiro Yamada @: 1015 36dd5f1bSTom Rinidts/dt.dtb: u-boot 1016 6ab6b2afSMasahiro Yamada $(Q)$(MAKE) $(build)=dts dtbs 1017 2c0f79e4SSimon Glass 1018 ad1ecd20SSimon Glassquiet_cmd_copy = COPY $@ 1019 ad1ecd20SSimon Glass cmd_copy = cp $< $@ 1020 ad1ecd20SSimon Glass 1021 11955590SJean-Jacques Hiblotifeq ($(CONFIG_MULTI_DTB_FIT),y) 1022 6f59fb07SCooper Jr., Franklin 1023 6f59fb07SCooper Jr., Franklinfit-dtb.blob: dts/dt.dtb FORCE 1024 6f59fb07SCooper Jr., Franklin $(call if_changed,mkimage) 1025 6f59fb07SCooper Jr., Franklin 1026 6f59fb07SCooper Jr., FranklinMKIMAGEFLAGS_fit-dtb.blob = -f auto -A $(ARCH) -T firmware -C none -O u-boot \ 1027 6f59fb07SCooper Jr., Franklin -a 0 -e 0 -E \ 1028 6f59fb07SCooper Jr., Franklin $(patsubst %,-b arch/$(ARCH)/dts/%.dtb,$(subst ",,$(CONFIG_OF_LIST))) -d /dev/null 1029 6f59fb07SCooper Jr., Franklin 1030 6f59fb07SCooper Jr., Franklinu-boot-fit-dtb.bin: u-boot-nodtb.bin fit-dtb.blob 1031 6f59fb07SCooper Jr., Franklin $(call if_changed,cat) 1032 6f59fb07SCooper Jr., Franklin 1033 6f59fb07SCooper Jr., Franklinu-boot.bin: u-boot-fit-dtb.bin FORCE 1034 6f59fb07SCooper Jr., Franklin $(call if_changed,copy) 1035 6f59fb07SCooper Jr., Franklinelse ifeq ($(CONFIG_OF_SEPARATE),y) 1036 ad1ecd20SSimon Glassu-boot-dtb.bin: u-boot-nodtb.bin dts/dt.dtb FORCE 1037 ee0acfa2SMasahiro Yamada $(call if_changed,cat) 1038 2c0f79e4SSimon Glass 1039 ad1ecd20SSimon Glassu-boot.bin: u-boot-dtb.bin FORCE 1040 ad1ecd20SSimon Glass $(call if_changed,copy) 1041 ad1ecd20SSimon Glasselse 1042 ad1ecd20SSimon Glassu-boot.bin: u-boot-nodtb.bin FORCE 1043 ad1ecd20SSimon Glass $(call if_changed,copy) 1044 ad1ecd20SSimon Glassendif 1045 ad1ecd20SSimon Glass 1046 e64348f5SStefano Babic%.imx: %.bin 1047 552a848eSStefano Babic $(Q)$(MAKE) $(build)=arch/arm/mach-imx $@ 1048 e64348f5SStefano Babic 1049 ed0c2c0aSAlbert ARIBAUD \(3ADEV\)%.vyb: %.imx 1050 ed0c2c0aSAlbert ARIBAUD \(3ADEV\) $(Q)$(MAKE) $(build)=arch/arm/cpu/armv7/vf610 $@ 1051 ed0c2c0aSAlbert ARIBAUD \(3ADEV\) 1052 ed0c2c0aSAlbert ARIBAUD \(3ADEV\)quiet_cmd_copy = COPY $@ 1053 ed0c2c0aSAlbert ARIBAUD \(3ADEV\) cmd_copy = cp $< $@ 1054 ed0c2c0aSAlbert ARIBAUD \(3ADEV\) 1055 0d1e8aacSMasahiro Yamadau-boot.dtb: dts/dt.dtb 1056 0d1e8aacSMasahiro Yamada $(call cmd,copy) 1057 0d1e8aacSMasahiro Yamada 1058 f9c235fdSMasahiro YamadaOBJCOPYFLAGS_u-boot.hex := -O ihex 1059 6310eb9dSwdenk 1060 f9c235fdSMasahiro YamadaOBJCOPYFLAGS_u-boot.srec := -O srec 1061 7ebf7443Swdenk 1062 f9c235fdSMasahiro Yamadau-boot.hex u-boot.srec: u-boot FORCE 1063 f9c235fdSMasahiro Yamada $(call if_changed,objcopy) 1064 f9c235fdSMasahiro Yamada 1065 341ca905SMasaru NagaiOBJCOPYFLAGS_u-boot-elf.srec := $(OBJCOPYFLAGS_u-boot.srec) 1066 341ca905SMasaru Nagai 1067 341ca905SMasaru Nagaiu-boot-elf.srec: u-boot.elf FORCE 1068 341ca905SMasaru Nagai $(call if_changed,objcopy) 1069 341ca905SMasaru Nagai 1070 3ee58ea4SMarek VasutOBJCOPYFLAGS_u-boot-spl.srec = $(OBJCOPYFLAGS_u-boot.srec) 1071 3ee58ea4SMarek Vasut 1072 3ee58ea4SMarek Vasutspl/u-boot-spl.srec: spl/u-boot-spl FORCE 1073 3ee58ea4SMarek Vasut $(call if_changed,objcopy) 1074 3ee58ea4SMarek Vasut 1075 ad1ecd20SSimon GlassOBJCOPYFLAGS_u-boot-nodtb.bin := -O binary \ 1076 96699f09SJagdish Gediya $(if $(CONFIG_X86_16BIT_INIT),-R .start16 -R .resetvec) \ 1077 96699f09SJagdish Gediya $(if $(CONFIG_MPC85XX_HAVE_RESET_VECTOR),-R .bootpg -R .resetvec) 1078 f9c235fdSMasahiro Yamada 1079 2ff60af6SDalon WestergreenOBJCOPYFLAGS_u-boot-spl.hex = $(OBJCOPYFLAGS_u-boot.hex) 1080 2ff60af6SDalon Westergreen 1081 2ff60af6SDalon Westergreenspl/u-boot-spl.hex: spl/u-boot-spl FORCE 1082 2ff60af6SDalon Westergreen $(call if_changed,objcopy) 1083 2ff60af6SDalon Westergreen 1084 ad1ecd20SSimon Glassbinary_size_check: u-boot-nodtb.bin FORCE 1085 ad1ecd20SSimon Glass @file_size=$(shell wc -c u-boot-nodtb.bin | awk '{print $$1}') ; \ 1086 3ce7a4feSChris Packham map_size=$(shell cat u-boot.map | \ 1087 0b308f14SSimon Glass awk '/_image_copy_start/ {start = $$1} /_image_binary_end/ {end = $$1} END {if (start != "" && end != "") print "ibase=16; " toupper(end) " - " toupper(start)}' \ 1088 3ce7a4feSChris Packham | sed 's/0X//g' \ 1089 0b308f14SSimon Glass | bc); \ 1090 89742924SSimon Glass if [ "" != "$$map_size" ]; then \ 1091 89742924SSimon Glass if test $$map_size -ne $$file_size; then \ 1092 3ce7a4feSChris Packham echo "u-boot.map shows a binary size of $$map_size" >&2 ; \ 1093 ad1ecd20SSimon Glass echo " but u-boot-nodtb.bin shows $$file_size" >&2 ; \ 1094 89742924SSimon Glass exit 1; \ 1095 89742924SSimon Glass fi \ 1096 89742924SSimon Glass fi 1097 89742924SSimon Glass 1098 5fed97afSStephen Warrenifneq ($(CONFIG_SYS_INIT_SP_BSS_OFFSET),) 1099 5fed97afSStephen Warrenifneq ($(CONFIG_SYS_MALLOC_F_LEN),) 1100 5fed97afSStephen Warrensubtract_sys_malloc_f_len = space=$$(($${space} - $(CONFIG_SYS_MALLOC_F_LEN))) 1101 5fed97afSStephen Warrenelse 1102 5fed97afSStephen Warrensubtract_sys_malloc_f_len = true 1103 5fed97afSStephen Warrenendif 1104 5fed97afSStephen Warren# The 1/4 margin below is somewhat arbitrary. The likely initial SP usage is 1105 5fed97afSStephen Warren# so low that the DTB could probably use 90%+ of the available space, for 1106 5fed97afSStephen Warren# current values of CONFIG_SYS_INIT_SP_BSS_OFFSET at least. However, let's be 1107 5fed97afSStephen Warren# safe for now and tweak this later if space becomes tight. 1108 5fed97afSStephen Warren# A rejected alternative would be to check that some absolute minimum stack 1109 5fed97afSStephen Warren# space was available. However, since CONFIG_SYS_INIT_SP_BSS_OFFSET is 1110 5fed97afSStephen Warren# deliberately build-specific, to take account of build-to-build stack usage 1111 5fed97afSStephen Warren# differences due to different feature sets, there is no common absolute value 1112 5fed97afSStephen Warren# to check against. 1113 5fed97afSStephen Warreninit_sp_bss_offset_check: u-boot.dtb FORCE 1114 5fed97afSStephen Warren @dtb_size=$(shell wc -c u-boot.dtb | awk '{print $$1}') ; \ 1115 5fed97afSStephen Warren space=$(CONFIG_SYS_INIT_SP_BSS_OFFSET) ; \ 1116 5fed97afSStephen Warren $(subtract_sys_malloc_f_len) ; \ 1117 5fed97afSStephen Warren quarter_space=$$(($${space} / 4)) ; \ 1118 5fed97afSStephen Warren if [ $${dtb_size} -gt $${quarter_space} ]; then \ 1119 5fed97afSStephen Warren echo "u-boot.dtb is larger than 1 quarter of " >&2 ; \ 1120 5fed97afSStephen Warren echo "(CONFIG_SYS_INIT_SP_BSS_OFFSET - CONFIG_SYS_MALLOC_F_LEN)" >&2 ; \ 1121 5fed97afSStephen Warren exit 1 ; \ 1122 5fed97afSStephen Warren fi 1123 5fed97afSStephen Warrenendif 1124 5fed97afSStephen Warren 1125 ad1ecd20SSimon Glassu-boot-nodtb.bin: u-boot FORCE 1126 f9c235fdSMasahiro Yamada $(call if_changed,objcopy) 1127 8137af19SScott Wood $(call DO_STATIC_RELA,$<,$@,$(CONFIG_SYS_TEXT_BASE)) 1128 f3a14d37SMike Frysinger $(BOARD_SIZE_CHECK) 1129 7ebf7443Swdenk 1130 9e414032SMasahiro Yamadau-boot.ldr: u-boot 1131 76d82187SMike Frysinger $(CREATE_LDR_ENV) 1132 240182d5SSonic Zhang $(LDR) -T $(CONFIG_CPU) -c $@ $< $(LDR_FLAGS) 1133 f3a14d37SMike Frysinger $(BOARD_SIZE_CHECK) 1134 94a91e24SMike Frysinger 1135 17a944b6SSimon Glass# binman 1136 17a944b6SSimon Glass# --------------------------------------------------------------------------- 1137 a3c00550SSimon Glass# Use 'make BINMAN_DEBUG=1' to enable debugging 1138 17a944b6SSimon Glassquiet_cmd_binman = BINMAN $@ 1139 a3c00550SSimon Glasscmd_binman = $(srctree)/tools/binman/binman -u -d u-boot.dtb -O . -m \ 1140 a3c00550SSimon Glass -I . -I $(srctree) -I $(srctree)/board/$(BOARDDIR) \ 1141 a3c00550SSimon Glass $(if $(BINMAN_DEBUG),-D) $(BINMAN_$(@F)) $< 1142 17a944b6SSimon Glass 1143 f9c235fdSMasahiro YamadaOBJCOPYFLAGS_u-boot.ldr.hex := -I binary -O ihex 1144 94a91e24SMike Frysinger 1145 f9c235fdSMasahiro YamadaOBJCOPYFLAGS_u-boot.ldr.srec := -I binary -O srec 1146 f9c235fdSMasahiro Yamada 1147 f9c235fdSMasahiro Yamadau-boot.ldr.hex u-boot.ldr.srec: u-boot.ldr FORCE 1148 f9c235fdSMasahiro Yamada $(call if_changed,objcopy) 1149 94a91e24SMike Frysinger 1150 b40bda6bSStefan Roese# 1151 b40bda6bSStefan Roese# U-Boot entry point, needed for booting of full-blown U-Boot 1152 b40bda6bSStefan Roese# from the SPL U-Boot version. 1153 b40bda6bSStefan Roese# 1154 b40bda6bSStefan Roeseifndef CONFIG_SYS_UBOOT_START 1155 b40bda6bSStefan RoeseCONFIG_SYS_UBOOT_START := 0 1156 b40bda6bSStefan Roeseendif 1157 b40bda6bSStefan Roese 1158 1a12fdc4SAndre Przywara# Boards with more complex image requirments can provide an .its source file 1159 1a12fdc4SAndre Przywara# or a generator script 1160 1a12fdc4SAndre Przywaraifneq ($(CONFIG_SPL_FIT_SOURCE),"") 1161 1a12fdc4SAndre PrzywaraU_BOOT_ITS = $(subst ",,$(CONFIG_SPL_FIT_SOURCE)) 1162 1a12fdc4SAndre Przywaraelse 1163 1a12fdc4SAndre Przywaraifneq ($(CONFIG_SPL_FIT_GENERATOR),"") 1164 1a12fdc4SAndre PrzywaraU_BOOT_ITS := u-boot.its 1165 e3bc7c66SChris Spencerifeq ($(CONFIG_SPL_FIT_GENERATOR),"arch/arm/mach-imx/mkimage_fit_atf.sh") 1166 e3bc7c66SChris SpencerU_BOOT_ITS_DEPS += u-boot-nodtb.bin 1167 e3bc7c66SChris Spencerendif 1168 c29c1e61SAndreas Färberifeq ($(CONFIG_SPL_FIT_GENERATOR),"arch/arm/mach-rockchip/make_fit_atf.py") 1169 c29c1e61SAndreas FärberU_BOOT_ITS_DEPS += u-boot 1170 c29c1e61SAndreas Färberendif 1171 c29c1e61SAndreas Färber$(U_BOOT_ITS): $(U_BOOT_ITS_DEPS) FORCE 1172 1a12fdc4SAndre Przywara $(srctree)/$(CONFIG_SPL_FIT_GENERATOR) \ 1173 1a12fdc4SAndre Przywara $(patsubst %,arch/$(ARCH)/dts/%.dtb,$(subst ",,$(CONFIG_OF_LIST))) > $@ 1174 1a12fdc4SAndre Przywaraendif 1175 1a12fdc4SAndre Przywaraendif 1176 1a12fdc4SAndre Przywara 1177 cdf17246SSimon Glassifdef CONFIG_SPL_LOAD_FIT 1178 cdf17246SSimon GlassMKIMAGEFLAGS_u-boot.img = -f auto -A $(ARCH) -T firmware -C none -O u-boot \ 1179 cdf17246SSimon Glass -a $(CONFIG_SYS_TEXT_BASE) -e $(CONFIG_SYS_UBOOT_START) \ 1180 cdf17246SSimon Glass -n "U-Boot $(UBOOTRELEASE) for $(BOARD) board" -E \ 1181 7a439cadSAndreas Bießmann $(patsubst %,-b arch/$(ARCH)/dts/%.dtb,$(subst ",,$(CONFIG_OF_LIST))) 1182 cdf17246SSimon Glasselse 1183 9bf215b0SMasahiro YamadaMKIMAGEFLAGS_u-boot.img = -A $(ARCH) -T firmware -C none -O u-boot \ 1184 9bf215b0SMasahiro Yamada -a $(CONFIG_SYS_TEXT_BASE) -e $(CONFIG_SYS_UBOOT_START) \ 1185 9bf215b0SMasahiro Yamada -n "U-Boot $(UBOOTRELEASE) for $(BOARD) board" 1186 d21bd69bSSven EbenfeldMKIMAGEFLAGS_u-boot-ivt.img = -A $(ARCH) -T firmware_ivt -C none -O u-boot \ 1187 d21bd69bSSven Ebenfeld -a $(CONFIG_SYS_TEXT_BASE) -e $(CONFIG_SYS_UBOOT_START) \ 1188 d21bd69bSSven Ebenfeld -n "U-Boot $(UBOOTRELEASE) for $(BOARD) board" 1189 1f6a6648SSven Ebenfeldu-boot-ivt.img: MKIMAGEOUTPUT = u-boot-ivt.img.log 1190 1f6a6648SSven EbenfeldCLEAN_FILES += u-boot-ivt.img.log u-boot-dtb.imx.log SPL.log u-boot.imx.log 1191 cdf17246SSimon Glassendif 1192 9bf215b0SMasahiro Yamada 1193 dae6e7bfSSimon GlassMKIMAGEFLAGS_u-boot-dtb.img = $(MKIMAGEFLAGS_u-boot.img) 1194 dae6e7bfSSimon Glass 1195 4ab3fc5eSMasahiro YamadaMKIMAGEFLAGS_u-boot.kwb = -n $(srctree)/$(CONFIG_SYS_KWD_CONFIG:"%"=%) \ 1196 4ab3fc5eSMasahiro Yamada -T kwbimage -a $(CONFIG_SYS_TEXT_BASE) -e $(CONFIG_SYS_TEXT_BASE) 1197 9bf215b0SMasahiro Yamada 1198 a90ffb56SStefan RoeseMKIMAGEFLAGS_u-boot-spl.kwb = -n $(srctree)/$(CONFIG_SYS_KWD_CONFIG:"%"=%) \ 1199 a1b6b0a9SMario Six -T kwbimage -a $(CONFIG_SYS_TEXT_BASE) -e $(CONFIG_SYS_TEXT_BASE) \ 1200 a1b6b0a9SMario Six $(if $(KEYDIR),-k $(KEYDIR)) 1201 a90ffb56SStefan Roese 1202 e4536f8eSMasahiro YamadaMKIMAGEFLAGS_u-boot.pbl = -n $(srctree)/$(CONFIG_SYS_FSL_PBL_RCW:"%"=%) \ 1203 e4536f8eSMasahiro Yamada -R $(srctree)/$(CONFIG_SYS_FSL_PBL_PBI:"%"=%) -T pblimage 1204 9bf215b0SMasahiro Yamada 1205 d21bd69bSSven Ebenfeldu-boot-dtb.img u-boot.img u-boot.kwb u-boot.pbl u-boot-ivt.img: \ 1206 cdf17246SSimon Glass $(if $(CONFIG_SPL_LOAD_FIT),u-boot-nodtb.bin dts/dt.dtb,u-boot.bin) FORCE 1207 9bf215b0SMasahiro Yamada $(call if_changed,mkimage) 1208 45297e2aSSimon Goldschmidt $(BOARD_SIZE_CHECK) 1209 bdccc4feSwdenk 1210 7a778369SMarek Vasutifeq ($(CONFIG_SPL_LOAD_FIT_FULL),y) 1211 7a778369SMarek VasutMKIMAGEFLAGS_u-boot.itb = 1212 7a778369SMarek Vasutelse 1213 7a778369SMarek VasutMKIMAGEFLAGS_u-boot.itb = -E 1214 7a778369SMarek Vasutendif 1215 7a778369SMarek Vasut 1216 1a12fdc4SAndre Przywarau-boot.itb: u-boot-nodtb.bin dts/dt.dtb $(U_BOOT_ITS) FORCE 1217 1a12fdc4SAndre Przywara $(call if_changed,mkfitimage) 1218 e89f5591SMaxime Ripard $(BOARD_SIZE_CHECK) 1219 1a12fdc4SAndre Przywara 1220 73c5c399SSimon Glassu-boot-spl.kwb: u-boot.img spl/u-boot-spl.bin FORCE 1221 a90ffb56SStefan Roese $(call if_changed,mkimage) 1222 a90ffb56SStefan Roese 1223 9e414032SMasahiro Yamadau-boot.sha1: u-boot.bin 1224 9e414032SMasahiro Yamada tools/ubsha1 u-boot.bin 1225 566a494fSHeiko Schocher 1226 9e414032SMasahiro Yamadau-boot.dis: u-boot 1227 7ebf7443Swdenk $(OBJDUMP) -d $< > $@ 1228 7ebf7443Swdenk 1229 7550dbe3SYork Sunifneq ($(CONFIG_SPL_PAYLOAD),) 1230 7550dbe3SYork SunSPL_PAYLOAD := $(CONFIG_SPL_PAYLOAD:"%"=%) 1231 3aa29de0SYing Zhangelse 1232 9e414032SMasahiro YamadaSPL_PAYLOAD := u-boot.bin 1233 3aa29de0SYing Zhangendif 1234 74752baaSScott Wood 1235 982a1199SMasahiro YamadaOBJCOPYFLAGS_u-boot-with-spl.bin = -I binary -O binary \ 1236 982a1199SMasahiro Yamada --pad-to=$(CONFIG_SPL_PAD_TO) 1237 982a1199SMasahiro Yamadau-boot-with-spl.bin: spl/u-boot-spl.bin $(SPL_PAYLOAD) FORCE 1238 982a1199SMasahiro Yamada $(call if_changed,pad_cat) 1239 3aa29de0SYing Zhang 1240 e3e0819cSVladimir Zapolskiyifeq ($(CONFIG_ARCH_LPC32XX)$(CONFIG_SPL),yy) 1241 412ae53aSAlbert ARIBAUD \(3ADEV\)MKIMAGEFLAGS_lpc32xx-spl.img = -T lpc32xximage -a $(CONFIG_SPL_TEXT_BASE) 1242 412ae53aSAlbert ARIBAUD \(3ADEV\) 1243 412ae53aSAlbert ARIBAUD \(3ADEV\)lpc32xx-spl.img: spl/u-boot-spl.bin FORCE 1244 412ae53aSAlbert ARIBAUD \(3ADEV\) $(call if_changed,mkimage) 1245 412ae53aSAlbert ARIBAUD \(3ADEV\) 1246 412ae53aSAlbert ARIBAUD \(3ADEV\)OBJCOPYFLAGS_lpc32xx-boot-0.bin = -I binary -O binary --pad-to=$(CONFIG_SPL_PAD_TO) 1247 412ae53aSAlbert ARIBAUD \(3ADEV\) 1248 514ec438SMasahiro Yamadalpc32xx-boot-0.bin: lpc32xx-spl.img FORCE 1249 412ae53aSAlbert ARIBAUD \(3ADEV\) $(call if_changed,objcopy) 1250 412ae53aSAlbert ARIBAUD \(3ADEV\) 1251 412ae53aSAlbert ARIBAUD \(3ADEV\)OBJCOPYFLAGS_lpc32xx-boot-1.bin = -I binary -O binary --pad-to=$(CONFIG_SPL_PAD_TO) 1252 412ae53aSAlbert ARIBAUD \(3ADEV\) 1253 514ec438SMasahiro Yamadalpc32xx-boot-1.bin: lpc32xx-spl.img FORCE 1254 412ae53aSAlbert ARIBAUD \(3ADEV\) $(call if_changed,objcopy) 1255 412ae53aSAlbert ARIBAUD \(3ADEV\) 1256 514ec438SMasahiro Yamadalpc32xx-full.bin: lpc32xx-boot-0.bin lpc32xx-boot-1.bin u-boot.img FORCE 1257 412ae53aSAlbert ARIBAUD \(3ADEV\) $(call if_changed,cat) 1258 412ae53aSAlbert ARIBAUD \(3ADEV\) 1259 412ae53aSAlbert ARIBAUD \(3ADEV\)CLEAN_FILES += lpc32xx-* 1260 e3e0819cSVladimir Zapolskiyendif 1261 412ae53aSAlbert ARIBAUD \(3ADEV\) 1262 982a1199SMasahiro YamadaOBJCOPYFLAGS_u-boot-with-tpl.bin = -I binary -O binary \ 1263 982a1199SMasahiro Yamada --pad-to=$(CONFIG_TPL_PAD_TO) 1264 982a1199SMasahiro Yamadatpl/u-boot-with-tpl.bin: tpl/u-boot-tpl.bin u-boot.bin FORCE 1265 982a1199SMasahiro Yamada $(call if_changed,pad_cat) 1266 7816f2cfSHeiko Schocher 1267 630d2345SMasahiro YamadaSPL: spl/u-boot-spl.bin FORCE 1268 552a848eSStefano Babic $(Q)$(MAKE) $(build)=arch/arm/mach-imx $@ 1269 630d2345SMasahiro Yamada 1270 caceb739SPeng Fanifeq ($(CONFIG_ARCH_IMX8M)$(CONFIG_ARCH_IMX8), y) 1271 94df9885SPeng Fanflash.bin: spl/u-boot-spl.bin u-boot.itb FORCE 1272 94df9885SPeng Fan $(Q)$(MAKE) $(build)=arch/arm/mach-imx $@ 1273 94df9885SPeng Fanendif 1274 94df9885SPeng Fan 1275 630d2345SMasahiro Yamadau-boot-with-spl.imx u-boot-with-nand-spl.imx: SPL u-boot.bin FORCE 1276 552a848eSStefano Babic $(Q)$(MAKE) $(build)=arch/arm/mach-imx $@ 1277 7d5a5c79SBenoît Thébaudeau 1278 9bf215b0SMasahiro YamadaMKIMAGEFLAGS_u-boot.ubl = -n $(UBL_CONFIG) -T ublimage -e $(CONFIG_SYS_TEXT_BASE) 1279 9bf215b0SMasahiro Yamada 1280 9bf215b0SMasahiro Yamadau-boot.ubl: u-boot-with-spl.bin FORCE 1281 9bf215b0SMasahiro Yamada $(call if_changed,mkimage) 1282 277f00f5SJosé Miguel Gonçalves 1283 982a1199SMasahiro YamadaMKIMAGEFLAGS_u-boot-spl.ais = -s -n $(if $(CONFIG_AIS_CONFIG_FILE), \ 1284 982a1199SMasahiro Yamada $(srctree)/$(CONFIG_AIS_CONFIG_FILE:"%"=%),"/dev/null") \ 1285 982a1199SMasahiro Yamada -T aisimage -e $(CONFIG_SPL_TEXT_BASE) 1286 982a1199SMasahiro Yamadaspl/u-boot-spl.ais: spl/u-boot-spl.bin FORCE 1287 982a1199SMasahiro Yamada $(call if_changed,mkimage) 1288 d36d8859SChristian Riesch 1289 532d5318SChristian RieschOBJCOPYFLAGS_u-boot.ais = -I binary -O binary --pad-to=$(CONFIG_SPL_PAD_TO) 1290 982a1199SMasahiro Yamadau-boot.ais: spl/u-boot-spl.ais u-boot.img FORCE 1291 982a1199SMasahiro Yamada $(call if_changed,pad_cat) 1292 a5453555SOtavio Salvador 1293 1a9df13dSMarek Vasutu-boot-signed.sb: u-boot.bin spl/u-boot-spl.bin 1294 1a9df13dSMarek Vasut $(Q)$(MAKE) $(build)=arch/arm/cpu/arm926ejs/mxs u-boot-signed.sb 1295 9e414032SMasahiro Yamadau-boot.sb: u-boot.bin spl/u-boot-spl.bin 1296 07e27ce0SMasahiro Yamada $(Q)$(MAKE) $(build)=arch/arm/cpu/arm926ejs/mxs u-boot.sb 1297 30b9b932SMarek Vasut 1298 94aebe6cSStefan Roese# On x600 (SPEAr600) U-Boot is appended to U-Boot SPL. 1299 94aebe6cSStefan Roese# Both images are created using mkimage (crc etc), so that the ROM 1300 94aebe6cSStefan Roese# bootloader can check its integrity. Padding needs to be done to the 1301 94aebe6cSStefan Roese# SPL image (with mkimage header) and not the binary. Otherwise the resulting image 1302 94aebe6cSStefan Roese# which is loaded/copied by the ROM bootloader to SRAM doesn't fit. 1303 94aebe6cSStefan Roese# The resulting image containing both U-Boot images is called u-boot.spr 1304 982a1199SMasahiro YamadaMKIMAGEFLAGS_u-boot-spl.img = -A $(ARCH) -T firmware -C none \ 1305 982a1199SMasahiro Yamada -a $(CONFIG_SPL_TEXT_BASE) -e $(CONFIG_SPL_TEXT_BASE) -n XLOADER 1306 982a1199SMasahiro Yamadaspl/u-boot-spl.img: spl/u-boot-spl.bin FORCE 1307 982a1199SMasahiro Yamada $(call if_changed,mkimage) 1308 982a1199SMasahiro Yamada 1309 982a1199SMasahiro YamadaOBJCOPYFLAGS_u-boot.spr = -I binary -O binary --pad-to=$(CONFIG_SPL_PAD_TO) \ 1310 982a1199SMasahiro Yamada --gap-fill=0xff 1311 982a1199SMasahiro Yamadau-boot.spr: spl/u-boot-spl.img u-boot.img FORCE 1312 982a1199SMasahiro Yamada $(call if_changed,pad_cat) 1313 94aebe6cSStefan Roese 1314 333b7209SMarek Vasutifneq ($(CONFIG_ARCH_SOCFPGA),) 1315 333b7209SMarek Vasutquiet_cmd_socboot = SOCBOOT $@ 1316 bd7dc388SSimon Glasscmd_socboot = cat spl/u-boot-spl.sfp spl/u-boot-spl.sfp \ 1317 bd7dc388SSimon Glass spl/u-boot-spl.sfp spl/u-boot-spl.sfp \ 1318 bd7dc388SSimon Glass u-boot.img > $@ || rm -f $@ 1319 bd7dc388SSimon Glassu-boot-with-spl.sfp: spl/u-boot-spl.sfp u-boot.img FORCE 1320 333b7209SMarek Vasut $(call if_changed,socboot) 1321 333b7209SMarek Vasutendif 1322 333b7209SMarek Vasut 1323 96699f09SJagdish Gediyaifeq ($(CONFIG_MPC85xx)$(CONFIG_OF_SEPARATE),yy) 1324 96699f09SJagdish Gediyau-boot-with-dtb.bin: u-boot.bin u-boot.dtb \ 1325 96699f09SJagdish Gediya $(if $(CONFIG_MPC85XX_HAVE_RESET_VECTOR), u-boot-br.bin) FORCE 1326 96699f09SJagdish Gediya $(call if_changed,binman) 1327 96699f09SJagdish Gediya 1328 96699f09SJagdish Gediyaifeq ($(CONFIG_MPC85XX_HAVE_RESET_VECTOR),y) 1329 96699f09SJagdish GediyaOBJCOPYFLAGS_u-boot-br.bin := -O binary -j .bootpg -j .resetvec 1330 96699f09SJagdish Gediyau-boot-br.bin: u-boot FORCE 1331 96699f09SJagdish Gediya $(call if_changed,objcopy) 1332 96699f09SJagdish Gediyaendif 1333 96699f09SJagdish Gediyaendif 1334 96699f09SJagdish Gediya 1335 fce7b276SSimon Glass# x86 uses a large ROM. We fill it with 0xff, put the 16-bit stuff (including 1336 fce7b276SSimon Glass# reset vector) at the top, Intel ME descriptor at the bottom, and U-Boot in 1337 b215fbd8SSimon Glass# the middle. This is handled by binman based on an image description in the 1338 b215fbd8SSimon Glass# board's device tree. 1339 fce7b276SSimon Glassifneq ($(CONFIG_X86_RESET_VECTOR),) 1340 fce7b276SSimon Glassrom: u-boot.rom FORCE 1341 fce7b276SSimon Glass 1342 0adf8d35SSimon Glassrefcode.bin: $(srctree)/board/$(BOARDDIR)/refcode.bin FORCE 1343 0adf8d35SSimon Glass $(call if_changed,copy) 1344 0adf8d35SSimon Glass 1345 0adf8d35SSimon Glassquiet_cmd_ldr = LD $@ 1346 0adf8d35SSimon Glasscmd_ldr = $(LD) $(LDFLAGS_$(@F)) \ 1347 0adf8d35SSimon Glass $(filter-out FORCE,$^) -o $@ 1348 0adf8d35SSimon Glass 1349 972188b3SSimon Glassu-boot.rom: u-boot-x86-16bit.bin u-boot.bin \ 1350 972188b3SSimon Glass $(if $(CONFIG_SPL_X86_16BIT_INIT),spl/u-boot-spl.bin) \ 1351 d6a0c78aSMasahiro Yamada $(if $(CONFIG_HAVE_REFCODE),refcode.bin) FORCE 1352 b215fbd8SSimon Glass $(call if_changed,binman) 1353 fce7b276SSimon Glass 1354 fce7b276SSimon GlassOBJCOPYFLAGS_u-boot-x86-16bit.bin := -O binary -j .start16 -j .resetvec 1355 fce7b276SSimon Glassu-boot-x86-16bit.bin: u-boot FORCE 1356 fce7b276SSimon Glass $(call if_changed,objcopy) 1357 fce7b276SSimon Glassendif 1358 fce7b276SSimon Glass 1359 aec9a0f1SJagan Tekiifneq ($(CONFIG_ARCH_SUNXI),) 1360 b0b0d22fSTuomas Tynkkynenifeq ($(CONFIG_ARM64),) 1361 d6a0c78aSMasahiro Yamadau-boot-sunxi-with-spl.bin: spl/sunxi-spl.bin u-boot.img u-boot.dtb FORCE 1362 61b994a3SSimon Glass $(call if_changed,binman) 1363 b0b0d22fSTuomas Tynkkynenelse 1364 b0b0d22fSTuomas Tynkkynenu-boot-sunxi-with-spl.bin: spl/sunxi-spl.bin u-boot.itb FORCE 1365 b0b0d22fSTuomas Tynkkynen $(call if_changed,cat) 1366 b0b0d22fSTuomas Tynkkynenendif 1367 50827a59SIan Campbellendif 1368 50827a59SIan Campbell 1369 6d6c0baeSTom Warrenifneq ($(CONFIG_TEGRA),) 1370 f2faffecSSimon Glassifneq ($(CONFIG_BINMAN),) 1371 2547e91dSSimon Glass# Makes u-boot-dtb-tegra.bin u-boot-tegra.bin u-boot-nodtb-tegra.bin 1372 2547e91dSSimon Glass%-dtb-tegra.bin %-tegra.bin %-nodtb-tegra.bin: \ 1373 2547e91dSSimon Glass spl/%-spl %.bin FORCE 1374 f2faffecSSimon Glass $(call if_changed,binman) 1375 f2faffecSSimon Glasselse 1376 982a1199SMasahiro YamadaOBJCOPYFLAGS_u-boot-nodtb-tegra.bin = -O binary --pad-to=$(CONFIG_SYS_TEXT_BASE) 1377 ad1ecd20SSimon Glassu-boot-nodtb-tegra.bin: spl/u-boot-spl u-boot-nodtb.bin FORCE 1378 982a1199SMasahiro Yamada $(call if_changed,pad_cat) 1379 9972db5cSStephen Warren 1380 a9d78260SSimon GlassOBJCOPYFLAGS_u-boot-tegra.bin = -O binary --pad-to=$(CONFIG_SYS_TEXT_BASE) 1381 73c5c399SSimon Glassu-boot-tegra.bin: spl/u-boot-spl u-boot.bin FORCE 1382 580cc033SSimon Glass $(call if_changed,pad_cat) 1383 a9d78260SSimon Glass 1384 a9d78260SSimon Glassu-boot-dtb-tegra.bin: u-boot-tegra.bin FORCE 1385 a9d78260SSimon Glass $(call if_changed,copy) 1386 f2faffecSSimon Glassendif # binman 1387 984df4ecSAllen Martinendif 1388 984df4ecSAllen Martin 1389 08aeb8b5SSimon GlassOBJCOPYFLAGS_u-boot-app.efi := $(OBJCOPYFLAGS_EFI) 1390 08aeb8b5SSimon Glassu-boot-app.efi: u-boot FORCE 1391 08aeb8b5SSimon Glass $(call if_changed,zobjcopy) 1392 08aeb8b5SSimon Glass 1393 73c5c399SSimon Glassu-boot.bin.o: u-boot.bin FORCE 1394 476476e7SSimon Glass $(call if_changed,efipayload) 1395 476476e7SSimon Glass 1396 476476e7SSimon Glassu-boot-payload.lds: $(LDSCRIPT_EFI) FORCE 1397 476476e7SSimon Glass $(call if_changed_dep,cpp_lds) 1398 476476e7SSimon Glass 1399 476476e7SSimon Glass# Rule to link the EFI payload which contains a stub and a U-Boot binary 1400 476476e7SSimon Glassquiet_cmd_u-boot_payload ?= LD $@ 1401 476476e7SSimon Glass cmd_u-boot_payload ?= $(LD) $(LDFLAGS_EFI_PAYLOAD) -o $@ \ 1402 96a8d409SSimon Glass -T u-boot-payload.lds arch/x86/cpu/call32.o \ 1403 73c5c399SSimon Glass lib/efi/efi.o lib/efi/efi_stub.o u-boot.bin.o \ 1404 2dcd4e9eSSimon Glass $(addprefix arch/$(ARCH)/lib/,$(EFISTUB)) 1405 476476e7SSimon Glass 1406 73c5c399SSimon Glassu-boot-payload: u-boot.bin.o u-boot-payload.lds FORCE 1407 476476e7SSimon Glass $(call if_changed,u-boot_payload) 1408 476476e7SSimon Glass 1409 476476e7SSimon GlassOBJCOPYFLAGS_u-boot-payload.efi := $(OBJCOPYFLAGS_EFI) 1410 476476e7SSimon Glassu-boot-payload.efi: u-boot-payload FORCE 1411 476476e7SSimon Glass $(call if_changed,zobjcopy) 1412 476476e7SSimon Glass 1413 ee0acfa2SMasahiro Yamadau-boot-img.bin: spl/u-boot-spl.bin u-boot.img FORCE 1414 ee0acfa2SMasahiro Yamada $(call if_changed,cat) 1415 fb3d2b8aSStefan Roese 1416 89ad7be8SPrabhakar Kushwaha#Add a target to create boot binary having SPL binary in PBI format 1417 89ad7be8SPrabhakar Kushwaha#concatenated with u-boot binary. It is need by PowerPC SoC having 1418 89ad7be8SPrabhakar Kushwaha#internal SRAM <= 512KB. 1419 89ad7be8SPrabhakar KushwahaMKIMAGEFLAGS_u-boot-spl.pbl = -n $(srctree)/$(CONFIG_SYS_FSL_PBL_RCW:"%"=%) \ 1420 94cb17d0SAlison Wang -R $(srctree)/$(CONFIG_SYS_FSL_PBL_PBI:"%"=%) -T pblimage \ 1421 94cb17d0SAlison Wang -A $(ARCH) -a $(CONFIG_SPL_TEXT_BASE) 1422 89ad7be8SPrabhakar Kushwaha 1423 89ad7be8SPrabhakar Kushwahaspl/u-boot-spl.pbl: spl/u-boot-spl.bin FORCE 1424 89ad7be8SPrabhakar Kushwaha $(call if_changed,mkimage) 1425 89ad7be8SPrabhakar Kushwaha 1426 45c2e480SAlison Wangifeq ($(ARCH),arm) 1427 45c2e480SAlison WangUBOOT_BINLOAD := u-boot.img 1428 45c2e480SAlison Wangelse 1429 96699f09SJagdish Gediyaifeq ($(CONFIG_MPC85xx)$(CONFIG_OF_SEPARATE),yy) 1430 96699f09SJagdish GediyaUBOOT_BINLOAD := u-boot-with-dtb.bin 1431 96699f09SJagdish Gediyaelse 1432 45c2e480SAlison WangUBOOT_BINLOAD := u-boot.bin 1433 45c2e480SAlison Wangendif 1434 96699f09SJagdish Gediyaendif 1435 45c2e480SAlison Wang 1436 89ad7be8SPrabhakar KushwahaOBJCOPYFLAGS_u-boot-with-spl-pbl.bin = -I binary -O binary --pad-to=$(CONFIG_SPL_PAD_TO) \ 1437 89ad7be8SPrabhakar Kushwaha --gap-fill=0xff 1438 89ad7be8SPrabhakar Kushwaha 1439 45c2e480SAlison Wangu-boot-with-spl-pbl.bin: spl/u-boot-spl.pbl $(UBOOT_BINLOAD) FORCE 1440 89ad7be8SPrabhakar Kushwaha $(call if_changed,pad_cat) 1441 89ad7be8SPrabhakar Kushwaha 1442 ecddccd0SStefan Roese# PPC4xx needs the SPL at the end of the image, since the reset vector 1443 ecddccd0SStefan Roese# is located at 0xfffffffc. So we can't use the "u-boot-img.bin" target 1444 ecddccd0SStefan Roese# and need to introduce a new build target with the full blown U-Boot 1445 ecddccd0SStefan Roese# at the start padded up to the start of the SPL image. And then concat 1446 ecddccd0SStefan Roese# the SPL image to the end. 1447 982a1199SMasahiro Yamada 1448 982a1199SMasahiro YamadaOBJCOPYFLAGS_u-boot-img-spl-at-end.bin := -I binary -O binary \ 1449 982a1199SMasahiro Yamada --pad-to=$(CONFIG_UBOOT_PAD_TO) --gap-fill=0xff 1450 982a1199SMasahiro Yamadau-boot-img-spl-at-end.bin: u-boot.img spl/u-boot-spl.bin FORCE 1451 982a1199SMasahiro Yamada $(call if_changed,pad_cat) 1452 ecddccd0SStefan Roese 1453 d57259b9SÁlvaro Fernández Rojas# Create a new ELF from a raw binary file. 1454 96ee1adaSÁlvaro Fernández Rojasifndef PLATFORM_ELFENTRY 1455 96ee1adaSÁlvaro Fernández Rojas PLATFORM_ELFENTRY = "_start" 1456 96ee1adaSÁlvaro Fernández Rojasendif 1457 e69945eeSÁlvaro Fernández Rojasquiet_cmd_u-boot-elf ?= LD $@ 1458 e69945eeSÁlvaro Fernández Rojas cmd_u-boot-elf ?= $(LD) u-boot-elf.o -o $@ \ 1459 96ee1adaSÁlvaro Fernández Rojas --defsym=$(PLATFORM_ELFENTRY)=$(CONFIG_SYS_TEXT_BASE) \ 1460 f4dc714aSScott Wood -Ttext=$(CONFIG_SYS_TEXT_BASE) 1461 e69945eeSÁlvaro Fernández Rojasu-boot.elf: u-boot.bin 1462 e69945eeSÁlvaro Fernández Rojas $(Q)$(OBJCOPY) -I binary $(PLATFORM_ELFFLAGS) $< u-boot-elf.o 1463 e69945eeSÁlvaro Fernández Rojas $(call if_changed,u-boot-elf) 1464 f4dc714aSScott Wood 1465 3b975a14SRyder Lee# MediaTek's ARM-based u-boot needs a header to contains its load address 1466 3b975a14SRyder Lee# which is parsed by the BootROM. 1467 3b975a14SRyder Lee# If the SPL build is enabled, the header will be added to the spl binary, 1468 3b975a14SRyder Lee# and the spl binary and the u-boot.img will be combined into one file. 1469 3b975a14SRyder Lee# Otherwise the header will be added to the u-boot.bin directly. 1470 3b975a14SRyder Lee 1471 3b975a14SRyder Leeifeq ($(CONFIG_SPL),y) 1472 3b975a14SRyder Leespl/u-boot-spl-mtk.bin: spl/u-boot-spl 1473 3b975a14SRyder Lee 1474 3b975a14SRyder Leeu-boot-mtk.bin: u-boot.dtb u-boot.img spl/u-boot-spl-mtk.bin FORCE 1475 3b975a14SRyder Lee $(call if_changed,binman) 1476 3b975a14SRyder Leeelse 1477 3b975a14SRyder LeeMKIMAGEFLAGS_u-boot-mtk.bin = -T mtk_image \ 1478 3b975a14SRyder Lee -a $(CONFIG_SYS_TEXT_BASE) -e $(CONFIG_SYS_TEXT_BASE) \ 1479 3b975a14SRyder Lee -n "$(patsubst "%",%,$(CONFIG_MTK_BROM_HEADER_INFO))" 1480 3b975a14SRyder Lee 1481 3b975a14SRyder Leeu-boot-mtk.bin: u-boot.bin FORCE 1482 3b975a14SRyder Lee $(call if_changed,mkimage) 1483 3b975a14SRyder Leeendif 1484 3b975a14SRyder Lee 1485 09bebb83SPaul BurtonARCH_POSTLINK := $(wildcard $(srctree)/arch/$(ARCH)/Makefile.postlink) 1486 09bebb83SPaul Burton 1487 ad0fed46SMasahiro Yamada# Rule to link u-boot 1488 ad0fed46SMasahiro Yamada# May be overridden by arch/$(ARCH)/config.mk 1489 ad0fed46SMasahiro Yamadaquiet_cmd_u-boot__ ?= LD $@ 1490 ad0fed46SMasahiro Yamada cmd_u-boot__ ?= $(LD) $(LDFLAGS) $(LDFLAGS_u-boot) -o $@ \ 1491 ad0fed46SMasahiro Yamada -T u-boot.lds $(u-boot-init) \ 1492 ad0fed46SMasahiro Yamada --start-group $(u-boot-main) --end-group \ 1493 09bebb83SPaul Burton $(PLATFORM_LIBS) -Map u-boot.map; \ 1494 09bebb83SPaul Burton $(if $(ARCH_POSTLINK), $(MAKE) -f $(ARCH_POSTLINK) $@, true) 1495 86eb49b3SSimon Glass 1496 cac8f38aSVasili Galkaquiet_cmd_smap = GEN common/system_map.o 1497 cac8f38aSVasili Galkacmd_smap = \ 1498 9e414032SMasahiro Yamada smap=`$(call SYSTEM_MAP,u-boot) | \ 1499 1aada9cdSWolfgang Denk awk '$$2 ~ /[tTwW]/ {printf $$1 $$3 "\\\\000"}'` ; \ 1500 6825a95bSMasahiro Yamada $(CC) $(c_flags) -DSYSTEM_MAP="\"$${smap}\"" \ 1501 9e414032SMasahiro Yamada -c $(srctree)/common/system_map.c -o common/system_map.o 1502 cac8f38aSVasili Galka 1503 514ec438SMasahiro Yamadau-boot: $(u-boot-init) $(u-boot-main) u-boot.lds FORCE 1504 09bebb83SPaul Burton +$(call if_changed,u-boot__) 1505 cac8f38aSVasili Galkaifeq ($(CONFIG_KALLSYMS),y) 1506 cac8f38aSVasili Galka $(call cmd,smap) 1507 ad0fed46SMasahiro Yamada $(call cmd,u-boot__) common/system_map.o 1508 ecb1dc89SMike Frysingerendif 1509 7ebf7443Swdenk 1510 42ac26f2SRick Chenifeq ($(CONFIG_RISCV),y) 1511 42ac26f2SRick Chen @tools/prelink-riscv $@ 0 1512 42ac26f2SRick Chenendif 1513 42ac26f2SRick Chen 1514 7ed4848bSStephen Warrenquiet_cmd_sym ?= SYM $@ 1515 7ed4848bSStephen Warren cmd_sym ?= $(OBJDUMP) -t $< > $@ 1516 7ed4848bSStephen Warrenu-boot.sym: u-boot FORCE 1517 7ed4848bSStephen Warren $(call if_changed,sym) 1518 7ed4848bSStephen Warren 1519 656de6b8SMasahiro Yamada# The actual objects are generated when descending, 1520 656de6b8SMasahiro Yamada# make sure no implicit rule kicks in 1521 656de6b8SMasahiro Yamada$(sort $(u-boot-init) $(u-boot-main)): $(u-boot-dirs) ; 1522 f9328639SMarian Balakowicz 1523 656de6b8SMasahiro Yamada# Handle descending into subdirectories listed in $(vmlinux-dirs) 1524 656de6b8SMasahiro Yamada# Preset locale variables to speed up the build process. Limit locale 1525 656de6b8SMasahiro Yamada# tweaks to this spot to avoid wrong language settings when running 1526 656de6b8SMasahiro Yamada# make menuconfig etc. 1527 656de6b8SMasahiro Yamada# Error messages still appears in the original language 1528 a8c7c708Swdenk 1529 656de6b8SMasahiro YamadaPHONY += $(u-boot-dirs) 1530 6378008aSMasahiro Yamada$(u-boot-dirs): prepare scripts 1531 6825a95bSMasahiro Yamada $(Q)$(MAKE) $(build)=$@ 1532 940db16dSMasahiro Yamada 1533 7424145fSMasahiro Yamadatools: prepare 1534 656de6b8SMasahiro Yamada# The "tools" are needed early 1535 656de6b8SMasahiro Yamada$(filter-out tools, $(u-boot-dirs)): tools 1536 656de6b8SMasahiro Yamada# The "examples" conditionally depend on U-Boot (say, when USE_PRIVATE_LIBGCC 1537 656de6b8SMasahiro Yamada# is "yes"), so compile examples after U-Boot is compiled. 1538 656de6b8SMasahiro Yamadaexamples: $(filter-out examples, $(u-boot-dirs)) 1539 656de6b8SMasahiro Yamada 1540 7424145fSMasahiro Yamadadefine filechk_uboot.release 1541 7424145fSMasahiro Yamada echo "$(UBOOTVERSION)$$($(CONFIG_SHELL) $(srctree)/scripts/setlocalversion $(srctree))" 1542 7424145fSMasahiro Yamadaendef 1543 7424145fSMasahiro Yamada 1544 7424145fSMasahiro Yamada# Store (new) UBOOTRELEASE string in include/config/uboot.release 1545 51148790SMasahiro Yamadainclude/config/uboot.release: include/config/auto.conf FORCE 1546 7424145fSMasahiro Yamada $(call filechk,uboot.release) 1547 7424145fSMasahiro Yamada 1548 7424145fSMasahiro Yamada 1549 3341bfecSMasahiro Yamada# Things we need to do before we recursively start building the kernel 1550 3341bfecSMasahiro Yamada# or the modules are listed in "prepare". 1551 3341bfecSMasahiro Yamada# A multi level approach is used. prepareN is processed before prepareN-1. 1552 3341bfecSMasahiro Yamada# archprepare is used in arch Makefiles and when processed asm symlink, 1553 3341bfecSMasahiro Yamada# version.h and scripts_basic is processed / created. 1554 3341bfecSMasahiro Yamada 1555 3341bfecSMasahiro Yamada# Listed in dependency order 1556 3341bfecSMasahiro YamadaPHONY += prepare archprepare prepare0 prepare1 prepare2 prepare3 1557 3341bfecSMasahiro Yamada 1558 3341bfecSMasahiro Yamada# prepare3 is used to check if we are building in a separate output directory, 1559 3341bfecSMasahiro Yamada# and if so do: 1560 3341bfecSMasahiro Yamada# 1) Check that make has not been executed in the kernel src $(srctree) 1561 7424145fSMasahiro Yamadaprepare3: include/config/uboot.release 1562 3341bfecSMasahiro Yamadaifneq ($(KBUILD_SRC),) 1563 51148790SMasahiro Yamada @$(kecho) ' Using $(srctree) as source for U-Boot' 1564 51148790SMasahiro Yamada $(Q)if [ -f $(srctree)/.config -o -d $(srctree)/include/config ]; then \ 1565 3341bfecSMasahiro Yamada echo >&2 " $(srctree) is not clean, please run 'make mrproper'"; \ 1566 3341bfecSMasahiro Yamada echo >&2 " in the '$(srctree)' directory.";\ 1567 3341bfecSMasahiro Yamada /bin/false; \ 1568 3341bfecSMasahiro Yamada fi; 1569 3341bfecSMasahiro Yamadaendif 1570 3341bfecSMasahiro Yamada 1571 3341bfecSMasahiro Yamada# prepare2 creates a makefile if using a separate output directory 1572 0b588defSMasahiro Yamadaprepare2: prepare3 outputmakefile cfg 1573 3341bfecSMasahiro Yamada 1574 51148790SMasahiro Yamadaprepare1: prepare2 $(version_h) $(timestamp_h) \ 1575 51148790SMasahiro Yamada include/config/auto.conf 1576 4a377552SMasahiro Yamadaifeq ($(wildcard $(LDSCRIPT)),) 1577 4a377552SMasahiro Yamada @echo >&2 " Could not find linker script." 1578 4a377552SMasahiro Yamada @/bin/false 1579 4a377552SMasahiro Yamadaendif 1580 7ebf7443Swdenk 1581 f3d8f7ddSRasmus Villemoesifeq ($(CONFIG_USE_DEFAULT_ENV_FILE),y) 1582 f3d8f7ddSRasmus Villemoesprepare1: $(defaultenv_h) 1583 f3d8f7ddSRasmus Villemoesendif 1584 f3d8f7ddSRasmus Villemoes 1585 3341bfecSMasahiro Yamadaarchprepare: prepare1 scripts_basic 1586 a8c7c708Swdenk 1587 6a44d806SMasahiro Yamadaprepare0: archprepare FORCE 1588 6a44d806SMasahiro Yamada $(Q)$(MAKE) $(build)=. 1589 7ebf7443Swdenk 1590 3341bfecSMasahiro Yamada# All the preparing.. 1591 3341bfecSMasahiro Yamadaprepare: prepare0 1592 349e83f0SChe-liang Chiou 1593 7424145fSMasahiro Yamada# Generate some files 1594 7424145fSMasahiro Yamada# --------------------------------------------------------------------------- 1595 7424145fSMasahiro Yamada 1596 7424145fSMasahiro Yamadadefine filechk_version.h 1597 7424145fSMasahiro Yamada (echo \#define PLAIN_VERSION \"$(UBOOTRELEASE)\"; \ 1598 7424145fSMasahiro Yamada echo \#define U_BOOT_VERSION \"U-Boot \" PLAIN_VERSION; \ 1599 42ffa51fSVagrant Cascadian echo \#define CC_VERSION_STRING \"$$(LC_ALL=C $(CC) --version | head -n 1)\"; \ 1600 42ffa51fSVagrant Cascadian echo \#define LD_VERSION_STRING \"$$(LC_ALL=C $(LD) --version | head -n 1)\"; ) 1601 7424145fSMasahiro Yamadaendef 1602 7424145fSMasahiro Yamada 1603 2d9efa12SAndreas Bießmann# The SOURCE_DATE_EPOCH mechanism requires a date that behaves like GNU date. 1604 2d9efa12SAndreas Bießmann# The BSD date on the other hand behaves different and would produce errors 1605 2d9efa12SAndreas Bießmann# with the misused '-d' switch. Respect that and search a working date with 1606 2d9efa12SAndreas Bießmann# well known pre- and suffixes for the GNU variant of date. 1607 7424145fSMasahiro Yamadadefine filechk_timestamp.h 1608 70d39f57SChris Packham (if test -n "$${SOURCE_DATE_EPOCH}"; then \ 1609 70d39f57SChris Packham SOURCE_DATE="@$${SOURCE_DATE_EPOCH}"; \ 1610 2d9efa12SAndreas Bießmann DATE=""; \ 1611 2d9efa12SAndreas Bießmann for date in gdate date.gnu date; do \ 1612 2d9efa12SAndreas Bießmann $${date} -u -d "$${SOURCE_DATE}" >/dev/null 2>&1 && DATE="$${date}"; \ 1613 2d9efa12SAndreas Bießmann done; \ 1614 2d9efa12SAndreas Bießmann if test -n "$${DATE}"; then \ 1615 2d9efa12SAndreas Bießmann LC_ALL=C $${DATE} -u -d "$${SOURCE_DATE}" +'#define U_BOOT_DATE "%b %d %C%y"'; \ 1616 2d9efa12SAndreas Bießmann LC_ALL=C $${DATE} -u -d "$${SOURCE_DATE}" +'#define U_BOOT_TIME "%T"'; \ 1617 2d9efa12SAndreas Bießmann LC_ALL=C $${DATE} -u -d "$${SOURCE_DATE}" +'#define U_BOOT_TZ "%z"'; \ 1618 a34b4676SBin Meng LC_ALL=C $${DATE} -u -d "$${SOURCE_DATE}" +'#define U_BOOT_DMI_DATE "%m/%d/%Y"'; \ 1619 e7aa9c29SAndy Shevchenko LC_ALL=C $${DATE} -u -d "$${SOURCE_DATE}" +'#define U_BOOT_BUILD_DATE 0x%Y%m%d'; \ 1620 2d9efa12SAndreas Bießmann else \ 1621 2d9efa12SAndreas Bießmann return 42; \ 1622 2d9efa12SAndreas Bießmann fi; \ 1623 70d39f57SChris Packham else \ 1624 70d39f57SChris Packham LC_ALL=C date +'#define U_BOOT_DATE "%b %d %C%y"'; \ 1625 70d39f57SChris Packham LC_ALL=C date +'#define U_BOOT_TIME "%T"'; \ 1626 70d39f57SChris Packham LC_ALL=C date +'#define U_BOOT_TZ "%z"'; \ 1627 a34b4676SBin Meng LC_ALL=C date +'#define U_BOOT_DMI_DATE "%m/%d/%Y"'; \ 1628 e7aa9c29SAndy Shevchenko LC_ALL=C date +'#define U_BOOT_BUILD_DATE 0x%Y%m%d'; \ 1629 70d39f57SChris Packham fi) 1630 7424145fSMasahiro Yamadaendef 1631 7424145fSMasahiro Yamada 1632 f3d8f7ddSRasmus Villemoesdefine filechk_defaultenv.h 1633 f3d8f7ddSRasmus Villemoes (grep -v '^#' | \ 1634 f3d8f7ddSRasmus Villemoes grep -v '^$$' | \ 1635 f3d8f7ddSRasmus Villemoes tr '\n' '\0' | \ 1636 f3d8f7ddSRasmus Villemoes sed -e 's/\\\x0/\n/' | \ 1637 f3d8f7ddSRasmus Villemoes xxd -i ; echo ", 0x00" ; ) 1638 f3d8f7ddSRasmus Villemoesendef 1639 f3d8f7ddSRasmus Villemoes 1640 2e6b2f6aSMasahiro Yamada$(version_h): include/config/uboot.release FORCE 1641 7424145fSMasahiro Yamada $(call filechk,version.h) 1642 7424145fSMasahiro Yamada 1643 7424145fSMasahiro Yamada$(timestamp_h): $(srctree)/Makefile FORCE 1644 7424145fSMasahiro Yamada $(call filechk,timestamp.h) 1645 7424145fSMasahiro Yamada 1646 f3d8f7ddSRasmus Villemoes$(defaultenv_h): $(CONFIG_DEFAULT_ENV_FILE:"%"=%) FORCE 1647 f3d8f7ddSRasmus Villemoes $(call filechk,defaultenv.h) 1648 f3d8f7ddSRasmus Villemoes 1649 6378008aSMasahiro Yamada# --------------------------------------------------------------------------- 1650 04a34c96SMasahiro Yamadaquiet_cmd_cpp_lds = LDS $@ 1651 de5e5ceaSChris Zankelcmd_cpp_lds = $(CPP) -Wp,-MD,$(depfile) $(cpp_flags) $(LDPPFLAGS) \ 1652 44093a15SSimon Glass -D__ASSEMBLY__ -x assembler-with-cpp -std=c99 -P -o $@ $< 1653 6378008aSMasahiro Yamada 1654 04a34c96SMasahiro Yamadau-boot.lds: $(LDSCRIPT) prepare FORCE 1655 395e60cdSMasahiro Yamada $(call if_changed_dep,cpp_lds) 1656 1aada9cdSWolfgang Denk 1657 982a1199SMasahiro Yamadaspl/u-boot-spl.bin: spl/u-boot-spl 1658 982a1199SMasahiro Yamada @: 1659 054b3a1eSSimon Glassspl/u-boot-spl: tools prepare \ 1660 dd2081a8SM. Vefa Bicakci $(if $(CONFIG_OF_SEPARATE)$(CONFIG_OF_EMBED)$(CONFIG_SPL_OF_PLATDATA),dts/dt.dtb) \ 1661 dd2081a8SM. Vefa Bicakci $(if $(CONFIG_OF_SEPARATE)$(CONFIG_OF_EMBED)$(CONFIG_TPL_OF_PLATDATA),dts/dt.dtb) 1662 c7163083SMasahiro Yamada $(Q)$(MAKE) obj=spl -f $(srctree)/scripts/Makefile.spl all 1663 5df2ee27SDaniel Schwierzeck 1664 50827a59SIan Campbellspl/sunxi-spl.bin: spl/u-boot-spl 1665 50827a59SIan Campbell @: 1666 50827a59SIan Campbell 1667 d2fdcc76SMaxime Ripardspl/sunxi-spl-with-ecc.bin: spl/sunxi-spl.bin 1668 d2fdcc76SMaxime Ripard @: 1669 d2fdcc76SMaxime Ripard 1670 bd7dc388SSimon Glassspl/u-boot-spl.sfp: spl/u-boot-spl 1671 333b7209SMarek Vasut @: 1672 333b7209SMarek Vasut 1673 08598d6eSNathan Rossispl/boot.bin: spl/u-boot-spl 1674 08598d6eSNathan Rossi @: 1675 08598d6eSNathan Rossi 1676 3c00a2c8SSimon Glasstpl/u-boot-tpl.bin: tools prepare \ 1677 dd2081a8SM. Vefa Bicakci $(if $(CONFIG_OF_SEPARATE)$(CONFIG_OF_EMBED)$(CONFIG_SPL_OF_PLATDATA),dts/dt.dtb) 1678 51148790SMasahiro Yamada $(Q)$(MAKE) obj=tpl -f $(srctree)/scripts/Makefile.spl all 1679 3aa29de0SYing Zhang 1680 8d819ab5SIgor GrinbergTAG_SUBDIRS := $(patsubst %,$(srctree)/%,$(u-boot-dirs) include) 1681 a340c325SJean-Christophe PLAGNIOL-VILLARD 1682 857d9ea6SHorst KronstorferFIND := find 1683 857d9ea6SHorst KronstorferFINDFLAGS := -L 1684 857d9ea6SHorst Kronstorfer 1685 f9328639SMarian Balakowicztags ctags: 1686 9e414032SMasahiro Yamada ctags -w -o ctags `$(FIND) $(FINDFLAGS) $(TAG_SUBDIRS) \ 1687 e5e4e705SLi Yang -name '*.[chS]' -print` 1688 74d339beSDu Huanpeng ln -s ctags tags 1689 7ebf7443Swdenk 1690 7ebf7443Swdenketags: 1691 8d819ab5SIgor Grinberg etags -a -o etags `$(FIND) $(FINDFLAGS) $(TAG_SUBDIRS) \ 1692 e5e4e705SLi Yang -name '*.[chS]' -print` 1693 ffda586fSLi Yangcscope: 1694 857d9ea6SHorst Kronstorfer $(FIND) $(FINDFLAGS) $(TAG_SUBDIRS) -name '*.[chS]' -print > \ 1695 857d9ea6SHorst Kronstorfer cscope.files 1696 ffda586fSLi Yang cscope -b -q -k 1697 7ebf7443Swdenk 1698 ecb1dc89SMike FrysingerSYSTEM_MAP = \ 1699 ecb1dc89SMike Frysinger $(NM) $1 | \ 1700 7ebf7443Swdenk grep -v '\(compiled\)\|\(\.o$$\)\|\( [aUw] \)\|\(\.\.ng$$\)\|\(LASH[RL]DI\)' | \ 1701 ecb1dc89SMike Frysinger LC_ALL=C sort 1702 9e414032SMasahiro YamadaSystem.map: u-boot 1703 bc8bb6ecSMasahiro Yamada @$(call SYSTEM_MAP,$<) > $@ 1704 7ebf7443Swdenk 1705 7ebf7443Swdenk######################################################################### 1706 7ebf7443Swdenk 1707 54799e45SScott Wood# ARM relocations should all be R_ARM_RELATIVE (32-bit) or 1708 54799e45SScott Wood# R_AARCH64_RELATIVE (64-bit). 1709 9e414032SMasahiro Yamadacheckarmreloc: u-boot 1710 54799e45SScott Wood @RELOC="`$(CROSS_COMPILE)readelf -r -W $< | cut -d ' ' -f 4 | \ 1711 54799e45SScott Wood grep R_A | sort -u`"; \ 1712 54799e45SScott Wood if test "$$RELOC" != "R_ARM_RELATIVE" -a \ 1713 54799e45SScott Wood "$$RELOC" != "R_AARCH64_RELATIVE"; then \ 1714 54799e45SScott Wood echo "$< contains unexpected relocations: $$RELOC"; \ 1715 54799e45SScott Wood false; \ 1716 54799e45SScott Wood fi 1717 c37980c3SAlbert ARIBAUD 1718 ded84f90SStefan Agnerenvtools: scripts_basic $(version_h) $(timestamp_h) 1719 2d3229beSTom Rini $(Q)$(MAKE) $(build)=tools/env 1720 0358df42SMike Frysinger 1721 4642e002SMasahiro Yamadatools-only: scripts_basic $(version_h) $(timestamp_h) 1722 4642e002SMasahiro Yamada $(Q)$(MAKE) $(build)=tools 1723 4642e002SMasahiro Yamada 1724 1ec8b4efSMasahiro Yamadatools-all: export HOST_TOOLS_ALL=y 1725 57332957SSimon Glasstools-all: envtools tools ; 1726 0358df42SMike Frysinger 1727 db5b339cSMasahiro Yamadacross_tools: export CROSS_BUILD_TOOLS=y 1728 db5b339cSMasahiro Yamadacross_tools: tools ; 1729 db5b339cSMasahiro Yamada 1730 4e53a258SWolfgang Denk.PHONY : CHANGELOG 1731 4e53a258SWolfgang DenkCHANGELOG: 1732 b985b5d6SBen Warren git log --no-merges U-Boot-1_1_5.. | \ 1733 b985b5d6SBen Warren unexpand -a | sed -e 's/\s\s*$$//' > $@ 1734 4e53a258SWolfgang Denk 1735 7ebf7443Swdenk######################################################################### 1736 7ebf7443Swdenk 1737 efcf8619SMasahiro Yamada### 1738 efcf8619SMasahiro Yamada# Cleaning is done on three levels. 1739 efcf8619SMasahiro Yamada# make clean Delete most generated files 1740 efcf8619SMasahiro Yamada# Leave enough to build external modules 1741 efcf8619SMasahiro Yamada# make mrproper Delete the current configuration, and all generated files 1742 efcf8619SMasahiro Yamada# make distclean Remove editor backup files, patch leftover files and the like 1743 7ebf7443Swdenk 1744 efcf8619SMasahiro Yamada# Directories & files removed with 'make clean' 1745 48aa812dSMasahiro YamadaCLEAN_DIRS += $(MODVERDIR) \ 1746 48aa812dSMasahiro Yamada $(foreach d, spl tpl, $(patsubst %,$d/%, \ 1747 51148790SMasahiro Yamada $(filter-out include, $(shell ls -1 $d 2>/dev/null)))) 1748 48aa812dSMasahiro Yamada 1749 d726f225SMasahiro YamadaCLEAN_FILES += include/bmp_logo.h include/bmp_logo_data.h \ 1750 6f59fb07SCooper Jr., Franklin boot* u-boot* MLO* SPL System.map fit-dtb.blob 1751 9f4a4206SMike Frysinger 1752 efcf8619SMasahiro Yamada# Directories & files removed with 'make mrproper' 1753 51148790SMasahiro YamadaMRPROPER_DIRS += include/config include/generated spl tpl \ 1754 598e2d33SMasahiro Yamada .tmp_objdiff 1755 51148790SMasahiro YamadaMRPROPER_FILES += .config .config.old include/autoconf.mk* include/config.h \ 1756 1249fa8fSHeinrich Schuchardt ctags etags tags TAGS cscope* GPATH GTAGS GRTAGS GSYMS \ 1757 1249fa8fSHeinrich Schuchardt drivers/video/fonts/*.S 1758 7ebf7443Swdenk 1759 efcf8619SMasahiro Yamada# clean - Delete most, but leave enough to build external modules 1760 efcf8619SMasahiro Yamada# 1761 efcf8619SMasahiro Yamadaclean: rm-dirs := $(CLEAN_DIRS) 1762 efcf8619SMasahiro Yamadaclean: rm-files := $(CLEAN_FILES) 1763 7ebf7443Swdenk 1764 6bd04bb4SMasahiro Yamadaclean-dirs := $(foreach f,$(u-boot-alldirs),$(if $(wildcard $(srctree)/$f/Makefile),$f)) 1765 734329f9SAndy Fleming 1766 08fcdd33STom Riniclean-dirs := $(addprefix _clean_, $(clean-dirs)) 1767 7ebf7443Swdenk 1768 efcf8619SMasahiro YamadaPHONY += $(clean-dirs) clean archclean 1769 efcf8619SMasahiro Yamada$(clean-dirs): 1770 efcf8619SMasahiro Yamada $(Q)$(MAKE) $(clean)=$(patsubst _clean_%,%,$@) 1771 efcf8619SMasahiro Yamada 1772 efcf8619SMasahiro Yamadaclean: $(clean-dirs) 1773 efcf8619SMasahiro Yamada $(call cmd,rmdirs) 1774 efcf8619SMasahiro Yamada $(call cmd,rmfiles) 1775 efcf8619SMasahiro Yamada @find $(if $(KBUILD_EXTMOD), $(KBUILD_EXTMOD), .) $(RCS_FIND_IGNORE) \ 1776 efcf8619SMasahiro Yamada \( -name '*.[oas]' -o -name '*.ko' -o -name '.*.cmd' \ 1777 421be6fcSBaruch Siach -o -name '*.ko.*' -o -name '*.su' \ 1778 efcf8619SMasahiro Yamada -o -name '.*.d' -o -name '.*.tmp' -o -name '*.mod.c' \ 1779 e91610daSEugeniu Rosca -o -name '*.lex.c' -o -name '*.tab.[ch]' \ 1780 efcf8619SMasahiro Yamada -o -name '*.symtypes' -o -name 'modules.order' \ 1781 efcf8619SMasahiro Yamada -o -name modules.builtin -o -name '.tmp_*.o.*' \ 1782 0fbdaa0eSBin Meng -o -name 'dsdt.aml' -o -name 'dsdt.asl.tmp' -o -name 'dsdt.c' \ 1783 7f474ef6SHeinrich Schuchardt -o -name '*.efi' -o -name '*.gcno' -o -name '*.so' \) \ 1784 c2d9097aSHeinrich Schuchardt -type f -print | xargs rm -f 1785 efcf8619SMasahiro Yamada 1786 efcf8619SMasahiro Yamada# mrproper - Delete all generated files, including .config 1787 efcf8619SMasahiro Yamada# 1788 efcf8619SMasahiro Yamadamrproper: rm-dirs := $(wildcard $(MRPROPER_DIRS)) 1789 efcf8619SMasahiro Yamadamrproper: rm-files := $(wildcard $(MRPROPER_FILES)) 1790 efcf8619SMasahiro Yamadamrproper-dirs := $(addprefix _mrproper_,scripts) 1791 efcf8619SMasahiro Yamada 1792 efcf8619SMasahiro YamadaPHONY += $(mrproper-dirs) mrproper archmrproper 1793 efcf8619SMasahiro Yamada$(mrproper-dirs): 1794 efcf8619SMasahiro Yamada $(Q)$(MAKE) $(clean)=$(patsubst _mrproper_%,%,$@) 1795 efcf8619SMasahiro Yamada 1796 48aa812dSMasahiro Yamadamrproper: clean $(mrproper-dirs) 1797 efcf8619SMasahiro Yamada $(call cmd,rmdirs) 1798 efcf8619SMasahiro Yamada $(call cmd,rmfiles) 1799 e9c16a80SMasahiro Yamada @rm -f arch/*/include/asm/arch 1800 efcf8619SMasahiro Yamada 1801 efcf8619SMasahiro Yamada# distclean 1802 efcf8619SMasahiro Yamada# 1803 efcf8619SMasahiro YamadaPHONY += distclean 1804 efcf8619SMasahiro Yamada 1805 433b2f1eSMasahiro Yamadadistclean: mrproper 1806 efcf8619SMasahiro Yamada @find $(srctree) $(RCS_FIND_IGNORE) \ 1807 efcf8619SMasahiro Yamada \( -name '*.orig' -o -name '*.rej' -o -name '*~' \ 1808 efcf8619SMasahiro Yamada -o -name '*.bak' -o -name '#*#' -o -name '.*.orig' \ 1809 598e2d33SMasahiro Yamada -o -name '.*.rej' -o -name '*%' -o -name 'core' \ 1810 598e2d33SMasahiro Yamada -o -name '*.pyc' \) \ 1811 efcf8619SMasahiro Yamada -type f -print | xargs rm -f 1812 c1180aa2SRobert P. J. Day @rm -f boards.cfg CHANGELOG 1813 7ebf7443Swdenk 1814 7ebf7443Swdenkbackup: 1815 4379ac61SMasahiro Yamada F=`basename $(srctree)` ; cd .. ; \ 1816 d6b93714SIlya Yanok gtar --force-local -zcvf `LC_ALL=C date "+$$F-%Y-%m-%d-%T.tar.gz"` $$F 1817 7ebf7443Swdenk 1818 ed1ca528SMasahiro Yamadahelp: 1819 ed1ca528SMasahiro Yamada @echo 'Cleaning targets:' 1820 48aa812dSMasahiro Yamada @echo ' clean - Remove most generated files but keep the config' 1821 ed1ca528SMasahiro Yamada @echo ' mrproper - Remove all generated files + config + various backup files' 1822 ed1ca528SMasahiro Yamada @echo ' distclean - mrproper + remove editor backup and patch files' 1823 ed1ca528SMasahiro Yamada @echo '' 1824 51148790SMasahiro Yamada @echo 'Configuration targets:' 1825 51148790SMasahiro Yamada @$(MAKE) -f $(srctree)/scripts/kconfig/Makefile help 1826 51148790SMasahiro Yamada @echo '' 1827 a3a3f5d5SSimon Glass @echo 'Test targets:' 1828 a3a3f5d5SSimon Glass @echo '' 1829 a3a3f5d5SSimon Glass @echo ' check - Run all automated tests that use sandbox' 1830 499fde5cSSimon Glass @echo ' qcheck - Run quick automated tests that use sandbox' 1831 a3a3f5d5SSimon Glass @echo '' 1832 ed1ca528SMasahiro Yamada @echo 'Other generic targets:' 1833 ed1ca528SMasahiro Yamada @echo ' all - Build all necessary images depending on configuration' 1834 633cc7aeSSimon Glass @echo ' tests - Build U-Boot for sandbox and run tests' 1835 ffe29ebcSMasahiro Yamada @echo '* u-boot - Build the bare u-boot' 1836 ed1ca528SMasahiro Yamada @echo ' dir/ - Build all files in dir and below' 1837 ed1ca528SMasahiro Yamada @echo ' dir/file.[oisS] - Build specified target only' 1838 ed1ca528SMasahiro Yamada @echo ' dir/file.lst - Build specified mixed source/assembly target only' 1839 ed1ca528SMasahiro Yamada @echo ' (requires a recent binutils and recent build (System.map))' 1840 5fc2f924SIgor Grinberg @echo ' tags/ctags - Generate ctags file for editors' 1841 5fc2f924SIgor Grinberg @echo ' etags - Generate etags file for editors' 1842 ed1ca528SMasahiro Yamada @echo ' cscope - Generate cscope index' 1843 ffe29ebcSMasahiro Yamada @echo ' ubootrelease - Output the release version string (use with make -s)' 1844 ffe29ebcSMasahiro Yamada @echo ' ubootversion - Output the version stored in Makefile (use with make -s)' 1845 1bd87630SSimon Glass @echo " cfg - Don't build, just create the .cfg files" 1846 84a42069SSimon Glass @echo " envtools - Build only the target-side environment tools" 1847 ed1ca528SMasahiro Yamada @echo '' 1848 ed1ca528SMasahiro Yamada @echo 'Static analysers' 1849 ed1ca528SMasahiro Yamada @echo ' checkstack - Generate a list of stack hogs' 1850 8a28caf0SHeinrich Schuchardt @echo ' coccicheck - Execute static code analysis with Coccinelle' 1851 ed1ca528SMasahiro Yamada @echo '' 1852 ed1ca528SMasahiro Yamada @echo 'Documentation targets:' 1853 08fcdd33STom Rini @$(MAKE) -f $(srctree)/Documentation/Makefile dochelp 1854 ed1ca528SMasahiro Yamada @echo '' 1855 ed1ca528SMasahiro Yamada @echo ' make V=0|1 [targets] 0 => quiet build (default), 1 => verbose build' 1856 ed1ca528SMasahiro Yamada @echo ' make V=2 [targets] 2 => give reason for rebuild of target' 1857 ed1ca528SMasahiro Yamada @echo ' make O=dir [targets] Locate all output files in "dir", including .config' 1858 ed1ca528SMasahiro Yamada @echo ' make C=1 [targets] Check all c source with $$CHECK (sparse by default)' 1859 ed1ca528SMasahiro Yamada @echo ' make C=2 [targets] Force check of all c source with $$CHECK' 1860 ed1ca528SMasahiro Yamada @echo ' make RECORDMCOUNT_WARN=1 [targets] Warn about ignored mcount sections' 1861 ed1ca528SMasahiro Yamada @echo ' make W=n [targets] Enable extra gcc checks, n=1,2,3 where' 1862 ed1ca528SMasahiro Yamada @echo ' 1: warnings which may be relevant and do not occur too often' 1863 ed1ca528SMasahiro Yamada @echo ' 2: warnings which occur quite often but may still be relevant' 1864 ed1ca528SMasahiro Yamada @echo ' 3: more obscure warnings, can most likely be ignored' 1865 ed1ca528SMasahiro Yamada @echo ' Multiple levels can be combined with W=12 or W=123' 1866 ed1ca528SMasahiro Yamada @echo '' 1867 ed1ca528SMasahiro Yamada @echo 'Execute "make" or "make all" to build all targets marked with [*] ' 1868 ed1ca528SMasahiro Yamada @echo 'For further info see the ./README file' 1869 ed1ca528SMasahiro Yamada 1870 a3a3f5d5SSimon Glasstests check: 1871 633cc7aeSSimon Glass $(srctree)/test/run 1872 8fac9c7bSMasahiro Yamada 1873 499fde5cSSimon Glassqcheck: 1874 499fde5cSSimon Glass $(srctree)/test/run quick 1875 499fde5cSSimon Glass 1876 8fac9c7bSMasahiro Yamada# Documentation targets 1877 8fac9c7bSMasahiro Yamada# --------------------------------------------------------------------------- 1878 78a88f79SMario SixDOC_TARGETS := xmldocs latexdocs pdfdocs htmldocs epubdocs cleandocs \ 1879 78a88f79SMario Six linkcheckdocs dochelp refcheckdocs 1880 78a88f79SMario SixPHONY += $(DOC_TARGETS) 1881 78a88f79SMario Six$(DOC_TARGETS): scripts_basic FORCE 1882 78a88f79SMario Six $(Q)$(MAKE) $(build)=Documentation $@ 1883 8fac9c7bSMasahiro Yamada 1884 433b2f1eSMasahiro Yamadaendif #ifeq ($(config-targets),1) 1885 433b2f1eSMasahiro Yamadaendif #ifeq ($(mixed-targets),1) 1886 433b2f1eSMasahiro Yamada 1887 ed1ca528SMasahiro YamadaPHONY += checkstack ubootrelease ubootversion 1888 ed1ca528SMasahiro Yamada 1889 ed1ca528SMasahiro Yamadacheckstack: 1890 ed1ca528SMasahiro Yamada $(OBJDUMP) -d u-boot $$(find . -name u-boot-spl) | \ 1891 ed1ca528SMasahiro Yamada $(PERL) $(src)/scripts/checkstack.pl $(ARCH) 1892 ed1ca528SMasahiro Yamada 1893 ed1ca528SMasahiro Yamadaubootrelease: 1894 ed1ca528SMasahiro Yamada @echo "$(UBOOTVERSION)$$($(CONFIG_SHELL) $(srctree)/scripts/setlocalversion $(srctree))" 1895 ed1ca528SMasahiro Yamada 1896 ed1ca528SMasahiro Yamadaubootversion: 1897 ed1ca528SMasahiro Yamada @echo $(UBOOTVERSION) 1898 ed1ca528SMasahiro Yamada 1899 886d86e8SMasahiro Yamada# Single targets 1900 886d86e8SMasahiro Yamada# --------------------------------------------------------------------------- 1901 886d86e8SMasahiro Yamada# Single targets are compatible with: 1902 886d86e8SMasahiro Yamada# - build with mixed source and output 1903 886d86e8SMasahiro Yamada# - build with separate output dir 'make O=...' 1904 886d86e8SMasahiro Yamada# - external modules 1905 886d86e8SMasahiro Yamada# 1906 886d86e8SMasahiro Yamada# target-dir => where to store outputfile 1907 886d86e8SMasahiro Yamada# build-dir => directory in kernel source tree to use 1908 886d86e8SMasahiro Yamada 1909 886d86e8SMasahiro Yamadaifeq ($(KBUILD_EXTMOD),) 1910 886d86e8SMasahiro Yamada build-dir = $(patsubst %/,%,$(dir $@)) 1911 886d86e8SMasahiro Yamada target-dir = $(dir $@) 1912 886d86e8SMasahiro Yamadaelse 1913 886d86e8SMasahiro Yamada zap-slash=$(filter-out .,$(patsubst %/,%,$(dir $@))) 1914 886d86e8SMasahiro Yamada build-dir = $(KBUILD_EXTMOD)$(if $(zap-slash),/$(zap-slash)) 1915 886d86e8SMasahiro Yamada target-dir = $(if $(KBUILD_EXTMOD),$(dir $<),$(dir $@)) 1916 886d86e8SMasahiro Yamadaendif 1917 886d86e8SMasahiro Yamada 1918 886d86e8SMasahiro Yamada%.s: %.c prepare scripts FORCE 1919 886d86e8SMasahiro Yamada $(Q)$(MAKE) $(build)=$(build-dir) $(target-dir)$(notdir $@) 1920 886d86e8SMasahiro Yamada%.i: %.c prepare scripts FORCE 1921 886d86e8SMasahiro Yamada $(Q)$(MAKE) $(build)=$(build-dir) $(target-dir)$(notdir $@) 1922 886d86e8SMasahiro Yamada%.o: %.c prepare scripts FORCE 1923 886d86e8SMasahiro Yamada $(Q)$(MAKE) $(build)=$(build-dir) $(target-dir)$(notdir $@) 1924 886d86e8SMasahiro Yamada%.lst: %.c prepare scripts FORCE 1925 886d86e8SMasahiro Yamada $(Q)$(MAKE) $(build)=$(build-dir) $(target-dir)$(notdir $@) 1926 886d86e8SMasahiro Yamada%.s: %.S prepare scripts FORCE 1927 886d86e8SMasahiro Yamada $(Q)$(MAKE) $(build)=$(build-dir) $(target-dir)$(notdir $@) 1928 886d86e8SMasahiro Yamada%.o: %.S prepare scripts FORCE 1929 886d86e8SMasahiro Yamada $(Q)$(MAKE) $(build)=$(build-dir) $(target-dir)$(notdir $@) 1930 886d86e8SMasahiro Yamada%.symtypes: %.c prepare scripts FORCE 1931 886d86e8SMasahiro Yamada $(Q)$(MAKE) $(build)=$(build-dir) $(target-dir)$(notdir $@) 1932 886d86e8SMasahiro Yamada 1933 886d86e8SMasahiro Yamada# Modules 1934 886d86e8SMasahiro Yamada/: prepare scripts FORCE 1935 886d86e8SMasahiro Yamada $(cmd_crmodverdir) 1936 886d86e8SMasahiro Yamada $(Q)$(MAKE) KBUILD_MODULES=$(if $(CONFIG_MODULES),1) \ 1937 886d86e8SMasahiro Yamada $(build)=$(build-dir) 1938 886d86e8SMasahiro Yamada%/: prepare scripts FORCE 1939 886d86e8SMasahiro Yamada $(cmd_crmodverdir) 1940 886d86e8SMasahiro Yamada $(Q)$(MAKE) KBUILD_MODULES=$(if $(CONFIG_MODULES),1) \ 1941 886d86e8SMasahiro Yamada $(build)=$(build-dir) 1942 886d86e8SMasahiro Yamada%.ko: prepare scripts FORCE 1943 886d86e8SMasahiro Yamada $(cmd_crmodverdir) 1944 886d86e8SMasahiro Yamada $(Q)$(MAKE) KBUILD_MODULES=$(if $(CONFIG_MODULES),1) \ 1945 886d86e8SMasahiro Yamada $(build)=$(build-dir) $(@:.ko=.o) 1946 886d86e8SMasahiro Yamada $(Q)$(MAKE) -f $(srctree)/scripts/Makefile.modpost 1947 886d86e8SMasahiro Yamada 1948 8a28caf0SHeinrich Schuchardt# Consistency checks 1949 8a28caf0SHeinrich Schuchardt# --------------------------------------------------------------------------- 1950 8a28caf0SHeinrich Schuchardt 1951 8a28caf0SHeinrich SchuchardtPHONY += coccicheck 1952 8a28caf0SHeinrich Schuchardt 1953 8a28caf0SHeinrich Schuchardtcoccicheck: 1954 8a28caf0SHeinrich Schuchardt $(Q)$(CONFIG_SHELL) $(srctree)/scripts/$@ 1955 8a28caf0SHeinrich Schuchardt 1956 886d86e8SMasahiro Yamada# FIXME Should go into a make.lib or something 1957 886d86e8SMasahiro Yamada# =========================================================================== 1958 886d86e8SMasahiro Yamada 1959 efcf8619SMasahiro Yamadaquiet_cmd_rmdirs = $(if $(wildcard $(rm-dirs)),CLEAN $(wildcard $(rm-dirs))) 1960 efcf8619SMasahiro Yamada cmd_rmdirs = rm -rf $(rm-dirs) 1961 efcf8619SMasahiro Yamada 1962 efcf8619SMasahiro Yamadaquiet_cmd_rmfiles = $(if $(wildcard $(rm-files)),CLEAN $(wildcard $(rm-files))) 1963 efcf8619SMasahiro Yamada cmd_rmfiles = rm -f $(rm-files) 1964 efcf8619SMasahiro Yamada 1965 f9c235fdSMasahiro Yamada# read all saved command lines 1966 f9c235fdSMasahiro Yamada 1967 f9c235fdSMasahiro Yamadatargets := $(wildcard $(sort $(targets))) 1968 f9c235fdSMasahiro Yamadacmd_files := $(wildcard .*.cmd $(foreach f,$(targets),$(dir $(f)).$(notdir $(f)).cmd)) 1969 f9c235fdSMasahiro Yamada 1970 f9c235fdSMasahiro Yamadaifneq ($(cmd_files),) 1971 f9c235fdSMasahiro Yamada $(cmd_files): ; # Do not try to update included dependency files 1972 f9c235fdSMasahiro Yamada include $(cmd_files) 1973 f9c235fdSMasahiro Yamadaendif 1974 f9c235fdSMasahiro Yamada 1975 9e414032SMasahiro Yamadaendif # skip-makefile 1976 9e414032SMasahiro Yamada 1977 9e414032SMasahiro YamadaPHONY += FORCE 1978 9e414032SMasahiro YamadaFORCE: 1979 9e414032SMasahiro Yamada 1980 9e414032SMasahiro Yamada# Declare the contents of the .PHONY variable as phony. We keep that 1981 9e414032SMasahiro Yamada# information in a variable so we can use it in if_changed and friends. 1982 9e414032SMasahiro Yamada.PHONY: $(PHONY) 1983